1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-20 07:25:23 +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() { private boolean useLegacyScannerDiscoveryProfiles() {
boolean isLanguageSettingsProvidersEnabled = false; boolean useLegacy = true;
ITool tool = getParent(); ITool tool = getParent();
if (tool!=null) { if (tool != null) {
IBuildObject bo = tool.getParent(); IBuildObject toolchain = tool.getParent();
if (bo instanceof IToolChain) { if (toolchain instanceof IToolChain && ((IToolChain) toolchain).getDefaultLanguageSettingsProviderIds() != null) {
IConfiguration cfg = ((IToolChain) bo).getParent(); IConfiguration cfg = ((IToolChain) toolchain).getParent();
if (cfg!=null) { if (cfg != null && cfg.getDefaultLanguageSettingsProviderIds() != null) {
IResource rc = cfg.getOwner(); IResource rc = cfg.getOwner();
if (rc!=null) { if (rc != null) {
IProject project = rc.getProject(); 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() { public String getDiscoveryProfileIdAttribute() {
if (isLegacyScannerDiscovery()) { String discoveryProfileAttribute = getDiscoveryProfileIdAttributeInternal();
return getLegacyDiscoveryProfileIdAttribute(); 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 String secondaryOutputIds;
private Boolean isAbstract; private Boolean isAbstract;
private String defaultLanguageSettingsProviderIds; private String defaultLanguageSettingsProviderIds;
private String scannerConfigDiscoveryProfileId; private String scannerConfigDiscoveryProfileId;
private String versionsSupported; private String versionsSupported;
private String convertToId; private String convertToId;
private IConfigurationElement managedIsToolChainSupportedElement = null; 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() { private boolean useLegacyScannerDiscoveryProfiles() {
boolean isLanguageSettingsProvidersEnabled = false; boolean useLegacy = true;
IConfiguration cfg = getParent(); if (getDefaultLanguageSettingsProviderIds() != null) {
if (cfg != null) { IConfiguration cfg = getParent();
IResource rc = cfg.getOwner(); if (cfg != null && cfg.getDefaultLanguageSettingsProviderIds() != null) {
if (rc != null) { IResource rc = cfg.getOwner();
IProject project = rc.getProject(); if (rc != null) {
isLanguageSettingsProvidersEnabled = ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(project); 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 @Override
public String getScannerConfigDiscoveryProfileId() { public String getScannerConfigDiscoveryProfileId() {
if (isLegacyScannerDiscovery()) { String discoveryProfileId = getScannerConfigDiscoveryProfileIdInternal();
return getLegacyScannerConfigDiscoveryProfileId(); 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); providers.add(provider);
} }
} } else {
if (providers.isEmpty()) {
providers = ScannerDiscoveryLegacySupport.getDefaultProvidersLegacy(); providers = ScannerDiscoveryLegacySupport.getDefaultProvidersLegacy();
} }

View file

@ -1923,10 +1923,11 @@
<toolChain <toolChain
archList="all" 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" 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" osList="macosx"
id="cdt.managedbuild.toolchain.gnu.macosx.base"> targetTool="cdt.managedbuild.tool.macosx.c.linker.macosx.base;cdt.managedbuild.tool.macosx.cpp.linker.macosx.base;cdt.managedbuild.tool.gnu.archiver">
<targetPlatform <targetPlatform
id="cdt.managedbuild.target.gnu.platform.macosx.base" id="cdt.managedbuild.target.gnu.platform.macosx.base"
name="%PlatformName.Dbg" name="%PlatformName.Dbg"
@ -2053,9 +2054,10 @@
<toolChain <toolChain
archList="all" archList="all"
osList="solaris"
id="cdt.managedbuild.toolchain.gnu.solaris.base" id="cdt.managedbuild.toolchain.gnu.solaris.base"
languageSettingsProviders="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser;org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector"
name="%ToolChainName.Solaris" name="%ToolChainName.Solaris"
osList="solaris"
superClass="cdt.managedbuild.toolchain.gnu.base"> superClass="cdt.managedbuild.toolchain.gnu.base">
<targetPlatform <targetPlatform
id="cdt.managedbuild.target.gnu.solaris.base" id="cdt.managedbuild.target.gnu.solaris.base"
@ -3256,9 +3258,9 @@
</projectType> </projectType>
<configuration <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" <enablement type="CONTAINER_ATTRIBUTE"
attribute="artifactExtension" attribute="artifactExtension"
value="dylib" value="dylib"
@ -3669,8 +3671,9 @@
</projectType> </projectType>
<configuration <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" <enablement type="CONTAINER_ATTRIBUTE"
attribute="artifactExtension" attribute="artifactExtension"
value="so" value="so"