1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

bug 378589: [sd90] Scanner Discovery doesn't run on certain toolchains

This commit is contained in:
Andrew Gvozdev 2012-05-07 01:04:30 -04:00
parent fac58cefa1
commit 77442617cc
4 changed files with 45 additions and 40 deletions

View file

@ -1842,25 +1842,25 @@ public class InputType extends BuildObject implements IInputType {
}
/**
* Check if legacy scanner discovery method should be used.
* Check if legacy scanner discovery profiles should be used.
*/
private boolean isLegacyScannerDiscovery() {
boolean isLanguageSettingsProvidersEnabled = false;
private boolean useLegacyScannerDiscoveryProfiles() {
boolean useLegacy = true;
ITool tool = getParent();
if (tool!=null) {
IBuildObject bo = tool.getParent();
if (bo instanceof IToolChain) {
IConfiguration cfg = ((IToolChain) bo).getParent();
if (cfg!=null) {
if (tool != null) {
IBuildObject toolchain = tool.getParent();
if (toolchain instanceof IToolChain && ((IToolChain) toolchain).getDefaultLanguageSettingsProviderIds() != null) {
IConfiguration cfg = ((IToolChain) toolchain).getParent();
if (cfg != null && cfg.getDefaultLanguageSettingsProviderIds() != null) {
IResource rc = cfg.getOwner();
if (rc!=null) {
if (rc != null) {
IProject project = rc.getProject();
isLanguageSettingsProvidersEnabled = ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(project);
useLegacy = !ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(project);
}
}
}
}
return !isLanguageSettingsProvidersEnabled;
return useLegacy;
}
/**
@ -1879,11 +1879,12 @@ public class InputType extends BuildObject implements IInputType {
}
public String getDiscoveryProfileIdAttribute() {
if (isLegacyScannerDiscovery()) {
return getLegacyDiscoveryProfileIdAttribute();
String discoveryProfileAttribute = getDiscoveryProfileIdAttributeInternal();
if (discoveryProfileAttribute == null && useLegacyScannerDiscoveryProfiles()) {
discoveryProfileAttribute = getLegacyDiscoveryProfileIdAttribute();
}
return getDiscoveryProfileIdAttributeInternal();
return discoveryProfileAttribute;
}
/**

View file

@ -89,7 +89,7 @@ public class ToolChain extends HoldsOptions implements IToolChain, IMatchKeyProv
private String secondaryOutputIds;
private Boolean isAbstract;
private String defaultLanguageSettingsProviderIds;
private String scannerConfigDiscoveryProfileId;
private String scannerConfigDiscoveryProfileId;
private String versionsSupported;
private String convertToId;
private IConfigurationElement managedIsToolChainSupportedElement = null;
@ -1545,19 +1545,21 @@ public class ToolChain extends HoldsOptions implements IToolChain, IMatchKeyProv
}
/**
* Check if legacy scanner discovery method should be used.
* Check if legacy scanner discovery profiles should be used.
*/
private boolean isLegacyScannerDiscovery() {
boolean isLanguageSettingsProvidersEnabled = false;
IConfiguration cfg = getParent();
if (cfg != null) {
IResource rc = cfg.getOwner();
if (rc != null) {
IProject project = rc.getProject();
isLanguageSettingsProvidersEnabled = ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(project);
private boolean useLegacyScannerDiscoveryProfiles() {
boolean useLegacy = true;
if (getDefaultLanguageSettingsProviderIds() != null) {
IConfiguration cfg = getParent();
if (cfg != null && cfg.getDefaultLanguageSettingsProviderIds() != null) {
IResource rc = cfg.getOwner();
if (rc != null) {
IProject project = rc.getProject();
useLegacy = !ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(project);
}
}
}
return !isLanguageSettingsProvidersEnabled;
return useLegacy;
}
/**
@ -1582,11 +1584,12 @@ public class ToolChain extends HoldsOptions implements IToolChain, IMatchKeyProv
@Override
public String getScannerConfigDiscoveryProfileId() {
if (isLegacyScannerDiscovery()) {
return getLegacyScannerConfigDiscoveryProfileId();
String discoveryProfileId = getScannerConfigDiscoveryProfileIdInternal();
if (discoveryProfileId == null && useLegacyScannerDiscoveryProfiles()) {
discoveryProfileId = getLegacyScannerConfigDiscoveryProfileId();
}
return getScannerConfigDiscoveryProfileIdInternal();
return discoveryProfileId;
}
/**

View file

@ -533,9 +533,7 @@ public class ConfigurationDataProvider extends CConfigurationDataProvider implem
}
providers.add(provider);
}
}
if (providers.isEmpty()) {
} else {
providers = ScannerDiscoveryLegacySupport.getDefaultProvidersLegacy();
}

View file

@ -1923,10 +1923,11 @@
<toolChain
archList="all"
osList="macosx"
id="cdt.managedbuild.toolchain.gnu.macosx.base"
languageSettingsProviders="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser;org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector"
name="%ToolChainName.Macosx"
targetTool="cdt.managedbuild.tool.macosx.c.linker.macosx.base;cdt.managedbuild.tool.macosx.cpp.linker.macosx.base;cdt.managedbuild.tool.gnu.archiver"
id="cdt.managedbuild.toolchain.gnu.macosx.base">
osList="macosx"
targetTool="cdt.managedbuild.tool.macosx.c.linker.macosx.base;cdt.managedbuild.tool.macosx.cpp.linker.macosx.base;cdt.managedbuild.tool.gnu.archiver">
<targetPlatform
id="cdt.managedbuild.target.gnu.platform.macosx.base"
name="%PlatformName.Dbg"
@ -2053,9 +2054,10 @@
<toolChain
archList="all"
osList="solaris"
id="cdt.managedbuild.toolchain.gnu.solaris.base"
languageSettingsProviders="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser;org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector"
name="%ToolChainName.Solaris"
osList="solaris"
superClass="cdt.managedbuild.toolchain.gnu.base">
<targetPlatform
id="cdt.managedbuild.target.gnu.solaris.base"
@ -3256,9 +3258,9 @@
</projectType>
<configuration
id="cdt.managedbuild.config.gnu.macosx.base"
cleanCommand="rm -rf"
>
cleanCommand="rm -rf"
id="cdt.managedbuild.config.gnu.macosx.base"
languageSettingsProviders="org.eclipse.cdt.ui.UserLanguageSettingsProvider;org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider;${Toolchain};-org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser">
<enablement type="CONTAINER_ATTRIBUTE"
attribute="artifactExtension"
value="dylib"
@ -3669,8 +3671,9 @@
</projectType>
<configuration
id="cdt.managedbuild.config.gnu.solaris.base"
cleanCommand="rm -rf">
cleanCommand="rm -rf"
id="cdt.managedbuild.config.gnu.solaris.base"
languageSettingsProviders="org.eclipse.cdt.ui.UserLanguageSettingsProvider;org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider;${Toolchain};-org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser">
<enablement type="CONTAINER_ATTRIBUTE"
attribute="artifactExtension"
value="so"