diff --git a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/ScannerConfigBuilder.java b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/ScannerConfigBuilder.java index 01fb664cf54..9a256489cdd 100644 --- a/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/ScannerConfigBuilder.java +++ b/build/org.eclipse.cdt.make.core/src/org/eclipse/cdt/make/core/scannerconfig/ScannerConfigBuilder.java @@ -62,6 +62,11 @@ public class ScannerConfigBuilder extends ACBuilder { // boolean autodiscoveryEnabled; if(buildNewStyle(getProject(), monitor)) return getProject().getReferencedProjects(); + + if (!ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(getProject())) { + return getProject().getReferencedProjects(); + } + boolean autodiscoveryEnabled2; IScannerConfigBuilderInfo2 buildInfo2 = null; try { @@ -77,11 +82,6 @@ public class ScannerConfigBuilder extends ACBuilder { buildInfo2 = ScannerConfigProfileManager.createScannerConfigBuildInfo2(getProject()); autodiscoveryEnabled2 = buildInfo2.isAutoDiscoveryEnabled(); - if (autodiscoveryEnabled2) { - ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(getProject()); - ICConfigurationDescription cfgDescription = prjDescription.getActiveConfiguration(); - autodiscoveryEnabled2 = ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(cfgDescription); - } if (autodiscoveryEnabled2) { monitor.beginTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder"), 100); //$NON-NLS-1$ @@ -135,26 +135,22 @@ public class ScannerConfigBuilder extends ACBuilder { } protected boolean build(IProject project, InfoContext context, IScannerConfigBuilderInfo2 buildInfo2, IProgressMonitor monitor){ - boolean autodiscoveryEnabled2 = buildInfo2.isAutoDiscoveryEnabled(); + if (ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(getProject())) { + boolean autodiscoveryEnabled2 = buildInfo2.isAutoDiscoveryEnabled(); if (autodiscoveryEnabled2) { - ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(getProject()); - ICConfigurationDescription cfgDescription = prjDescription.getActiveConfiguration(); - autodiscoveryEnabled2 = ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(cfgDescription); + monitor.beginTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder"), 100); //$NON-NLS-1$ + monitor.subTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder") + //$NON-NLS-1$ + getProject().getName()); + + // get scanner info from all external providers + SCJobsUtil.getProviderScannerInfo(getProject(), context, buildInfo2, new SubProgressMonitor(monitor, 70)); + + // update and persist scanner configuration + SCJobsUtil.updateScannerConfiguration(getProject(), context, buildInfo2, new SubProgressMonitor(monitor, 30)); + return true; } - - if (autodiscoveryEnabled2) { - monitor.beginTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder"), 100); //$NON-NLS-1$ - monitor.subTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder") + //$NON-NLS-1$ - getProject().getName()); - - // get scanner info from all external providers - SCJobsUtil.getProviderScannerInfo(getProject(), context, buildInfo2, new SubProgressMonitor(monitor, 70)); - - // update and persist scanner configuration - SCJobsUtil.updateScannerConfiguration(getProject(), context, buildInfo2, new SubProgressMonitor(monitor, 30)); - return true; - } - return false; + } + return false; } diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/DiscoveryOptionsBlock.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/DiscoveryOptionsBlock.java index 5651648c1bb..aaf7cafbf57 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/DiscoveryOptionsBlock.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/DiscoveryOptionsBlock.java @@ -183,12 +183,8 @@ public class DiscoveryOptionsBlock extends AbstractDiscoveryOptionsBlock { ((GridData)scEnabledButton.getLayoutData()).horizontalSpan = numColumns; ((GridData)scEnabledButton.getLayoutData()).grabExcessHorizontalSpace = true; // VMIR* old projects will have discovery disabled by default - boolean autodiscoveryEnabled2 = getBuildInfo().isAutoDiscoveryEnabled(); - if (autodiscoveryEnabled2) { - ICProjectDescription projDesc = CoreModel.getDefault().getProjectDescription(getProject()); - ICConfigurationDescription cfgDescription = projDesc.getActiveConfiguration(); - autodiscoveryEnabled2 = ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(cfgDescription); - } + boolean autodiscoveryEnabled2 = getBuildInfo().isAutoDiscoveryEnabled() && + ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(getProject()); scEnabledButton.setSelection(needsSCNature ? false : (autodiscoveryEnabled2 && !getBuildInfo().getSelectedProfileId().equals(ScannerConfigProfileManager.NULL_PROFILE_ID))); diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/core/scannerconfig/ScannerConfigBuilder.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/core/scannerconfig/ScannerConfigBuilder.java index a205790a02f..10b4880a985 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/core/scannerconfig/ScannerConfigBuilder.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/core/scannerconfig/ScannerConfigBuilder.java @@ -180,39 +180,40 @@ public class ScannerConfigBuilder extends ACBuilder { public static SCProfileInstance build(CfgInfoContext context, IScannerConfigBuilderInfo2 buildInfo2, int flags, Properties env, IProgressMonitor monitor) throws CoreException{ IConfiguration cfg = context.getConfiguration(); - IProject project = cfg.getOwner().getProject(); - boolean autodiscoveryEnabled2 = buildInfo2.isAutoDiscoveryEnabled() && - ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(ManagedBuildManager.getDescriptionForConfiguration(cfg)); + if (ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(ManagedBuildManager.getDescriptionForConfiguration(cfg))) { + IProject project = cfg.getOwner().getProject(); + boolean autodiscoveryEnabled2 = buildInfo2.isAutoDiscoveryEnabled(); - if (autodiscoveryEnabled2 || ((flags & FORCE_DISCOVERY) != 0)) { - monitor.beginTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder"), 100); //$NON-NLS-1$ - monitor.subTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder") + //$NON-NLS-1$ - project.getName()); + if (autodiscoveryEnabled2 || ((flags & FORCE_DISCOVERY) != 0)) { + monitor.beginTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder"), 100); //$NON-NLS-1$ + monitor.subTask(MakeMessages.getString("ScannerConfigBuilder.Invoking_Builder") + //$NON-NLS-1$ + project.getName()); - if(env == null) - env = calcEnvironment(cfg); + if(env == null) + env = calcEnvironment(cfg); - // get scanner info from all external providers - SCProfileInstance instance = ScannerConfigProfileManager.getInstance(). - getSCProfileInstance(project, context.toInfoContext(), buildInfo2.getSelectedProfileId()); - // if there are any providers call job to pull scanner info - if ((flags & SKIP_SI_DISCOVERY) == 0) { - if ((instance == null) || !buildInfo2.getProviderIdList().isEmpty()) - instance = CfgSCJobsUtil.getProviderScannerInfo(project, context, instance, buildInfo2, env, new SubProgressMonitor(monitor, 70)); - } + // get scanner info from all external providers + SCProfileInstance instance = ScannerConfigProfileManager.getInstance(). + getSCProfileInstance(project, context.toInfoContext(), buildInfo2.getSelectedProfileId()); + // if there are any providers call job to pull scanner info + if ((flags & SKIP_SI_DISCOVERY) == 0) { + if ((instance == null) || !buildInfo2.getProviderIdList().isEmpty()) + instance = CfgSCJobsUtil.getProviderScannerInfo(project, context, instance, buildInfo2, env, new SubProgressMonitor(monitor, 70)); + } - // update and persist scanner configuration - CfgSCJobsUtil.updateScannerConfiguration(project, context, instance, buildInfo2, new SubProgressMonitor(monitor, 30)); + // update and persist scanner configuration + CfgSCJobsUtil.updateScannerConfiguration(project, context, instance, buildInfo2, new SubProgressMonitor(monitor, 30)); - // Remove the previous discovered path info to ensure it get's regenerated. - // TODO we should really only do this if the information has changed - CfgDiscoveredPathManager.getInstance().removeDiscoveredInfo(project, context, false); + // Remove the previous discovered path info to ensure it get's regenerated. + // TODO we should really only do this if the information has changed + CfgDiscoveredPathManager.getInstance().removeDiscoveredInfo(project, context, false); - if((flags & PERFORM_CORE_UPDATE) != 0) - CfgDiscoveredPathManager.getInstance().updateCoreSettings(project, new IConfiguration[]{cfg}); + if((flags & PERFORM_CORE_UPDATE) != 0) + CfgDiscoveredPathManager.getInstance().updateCoreSettings(project, new IConfiguration[]{cfg}); - return instance; - } + return instance; + } + } return null; } diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/internal/core/scannerconfig2/CfgScannerConfigInfoFactory2.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/internal/core/scannerconfig2/CfgScannerConfigInfoFactory2.java index 11b95300b08..a98370b3dab 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/internal/core/scannerconfig2/CfgScannerConfigInfoFactory2.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/build/internal/core/scannerconfig2/CfgScannerConfigInfoFactory2.java @@ -217,8 +217,8 @@ public class CfgScannerConfigInfoFactory2 { if (id == null) { // Language Settings Providers are meant to replace legacy scanner discovery // so do not try to find default profile - IProject project = cfg.getOwner().getProject(); - if (!ScannerDiscoveryLegacySupport.isLanguageSettingsProvidersFunctionalityEnabled(project)) { + ICConfigurationDescription cfgDescription = ManagedBuildManager.getDescriptionForConfiguration(cfg); + if (ScannerDiscoveryLegacySupport.isLegacyScannerDiscoveryOn(cfgDescription)) { id = CfgScannerConfigUtil.getDefaultProfileId(context, true); } } diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractBuildCommandParser.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractBuildCommandParser.java index 4c4f52c1729..ff860dc1ae2 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractBuildCommandParser.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractBuildCommandParser.java @@ -165,6 +165,7 @@ public abstract class AbstractBuildCommandParser extends AbstractLanguageSetting break; } + setSettingEntries(currentCfgDescription, rc, currentLanguageId, entries); // AG FIXME - temporary log to remove before CDT Juno release diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractBuiltinSpecsDetector.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractBuiltinSpecsDetector.java index 03f6783b087..1a88534c671 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractBuiltinSpecsDetector.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractBuiltinSpecsDetector.java @@ -381,21 +381,14 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti } }; - IProject ownerProject = null; + IProject project = null; if (currentCfgDescription != null) { ICProjectDescription prjDescription = currentCfgDescription.getProjectDescription(); if (prjDescription != null) { - ownerProject = prjDescription.getProject(); + project = prjDescription.getProject(); } } - ISchedulingRule rule = null; - if (ownerProject != null) { - rule = ownerProject.getFile(".settings/language.settings.xml"); - } - if (rule == null) { - rule = ResourcesPlugin.getWorkspace().getRoot(); - } - job.setRule(rule); + job.setRule(project); job.schedule(); // AG FIXME - temporary log to remove before CDT Juno release diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/ScannerDiscoveryLegacySupport.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/ScannerDiscoveryLegacySupport.java index cdb6dba9df2..f8ae1bd427d 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/ScannerDiscoveryLegacySupport.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/language/settings/providers/ScannerDiscoveryLegacySupport.java @@ -17,6 +17,7 @@ import java.util.List; import java.util.Map; import org.eclipse.cdt.core.CCorePlugin; +import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; import org.eclipse.cdt.core.settings.model.ICProjectDescription; import org.eclipse.cdt.internal.core.LocalProjectScope; @@ -119,6 +120,19 @@ public class ScannerDiscoveryLegacySupport { return isLanguageSettingsProvidersFunctionalityEnabled(project) || isMbsLanguageSettingsProviderOn(cfgDescription); } + /** + * @noreference This is internal helper method to support compatibility with previous versions + * which is not intended to be referenced by clients. + */ + public static boolean isLegacyScannerDiscoveryOn(IProject project) { + ICConfigurationDescription cfgDescription = null; + ICProjectDescription prjDescription = CoreModel.getDefault().getProjectDescription(project); + if (prjDescription != null) { + cfgDescription = prjDescription.getActiveConfiguration(); + } + return isLanguageSettingsProvidersFunctionalityEnabled(project) || isMbsLanguageSettingsProviderOn(cfgDescription); + } + /** * Return list containing MBS and User provider. Used to initialize for unaware tool-chains (backward compatibility). */ diff --git a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/src/org/eclipse/cdt/managedbuilder/xlc/core/XlcBuiltinSpecsDetector.java b/xlc/org.eclipse.cdt.managedbuilder.xlc.core/src/org/eclipse/cdt/managedbuilder/xlc/core/XlcBuiltinSpecsDetector.java index 630686325ae..fe92bbb5839 100644 --- a/xlc/org.eclipse.cdt.managedbuilder.xlc.core/src/org/eclipse/cdt/managedbuilder/xlc/core/XlcBuiltinSpecsDetector.java +++ b/xlc/org.eclipse.cdt.managedbuilder.xlc.core/src/org/eclipse/cdt/managedbuilder/xlc/core/XlcBuiltinSpecsDetector.java @@ -20,8 +20,6 @@ import org.eclipse.cdt.core.language.settings.providers.ILanguageSettingsEditabl import org.eclipse.cdt.core.settings.model.ICSettingEntry; import org.eclipse.cdt.managedbuilder.language.settings.providers.ToolchainBuiltinSpecsDetector; - - /** * Language settings provider to detect built-in compiler settings for IBM XLC compiler. */