diff --git a/NewAndNoteworthy/CDT-11.0.md b/NewAndNoteworthy/CDT-11.0.md
index 97a297a227f..80f7df252f7 100644
--- a/NewAndNoteworthy/CDT-11.0.md
+++ b/NewAndNoteworthy/CDT-11.0.md
@@ -34,6 +34,28 @@ Please see the corresponding issue for more details.
- `org.eclipse.cdt.lsp.cquery`
- `org.eclipse.cdt.lsp.ui`
+# Build
+
+## Scanner Discovery able to consider all flags
+
+By default CDT only considers some other compile flags when computing the compiler built-in includes and macros.
+To have CDT consider all compiler flags when computing the compiler built-in includes and macros the `${ALL_FLAGS}` can be specified in _Command to get compiler specs:_.
+
+For example, when `-ansi` is passed to GCC, the `__STRICT_ANSI__` macros is defined.
+For CDT to know that, the `-ansi` needs to be passed to GCC when collecting the compiler built-ins, sometimes in CDT called "scanning" or "compiler specs".
+If you code with, for example, `#ifdef __STRICT_ANSI__` it will be highlighted correctly only if CDT knows about it.
+Therefore in this situation it may be best to use this new feature.
+
+To enable using all flags when calculating built-ins, change the default `${FLAGS}` to `${ALL_FLAGS}` in _Project Properties_ -\> _C/C++ General_ -\> _Preprocessor Include Paths, Macros etc._ -\> _Providers_ tab -\> _CDT GCC Built-in Compiler Settings_ -\> _Command to get compiler specs:_.
+
+
+
+If your compiler has a command line option that interferes with scanner discovery, it can be declared as such in the `plugin.xml` (see below) or entered into the _Other flags (excluded from discovery)_ option in the _Miscellaneous_ of build settings.
+
+See the online help sections on [scanner discovery](https://help.eclipse.org/latest/topic/org.eclipse.cdt.doc.user/concepts/cdt_c_scanner_discovery.htm) and [scanner discovery preferences](https://help.eclipse.org/latest/topic/org.eclipse.cdt.doc.user/reference/cdt_u_pref_build_scanner_discovery.htm) for more information on scanner discovery.
+
+See https://github.com/eclipse-cdt/cdt/pull/158.
+
# Debug
## C/C++ Dynamic Printf Breakpoints
@@ -82,6 +104,13 @@ The `ICBuildConfiguration` and `IToolChain` interfaces now have a method, `getBi
See https://github.com/eclipse-cdt/cdt/pull/75
+## Exclude from scanner discovery flag for options
+
+`IOption` has a new flag called `isExcludedFromScannerDiscovery`.
+This flag can be set on options to exclude them from scanner discovery when using the new `${ALL_FLAGS}` variable.
+
+See https://github.com/eclipse-cdt/cdt/pull/158.
+
# Bugs Fixed in this Release
See [GitHub milestones](https://github.com/eclipse-cdt/cdt/milestone/2?closed=1) and for bugs that haven't been transitioned to GitHub please see Bugzilla report [Bugs Fixed in CDT 11.0](https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&classification=Tools&product=CDT&query_format=advanced&resolution=FIXED&target_milestone=11.0.0).
diff --git a/NewAndNoteworthy/images/CDT-11.0-all-flags.png b/NewAndNoteworthy/images/CDT-11.0-all-flags.png
new file mode 100644
index 00000000000..59a76c51c79
Binary files /dev/null and b/NewAndNoteworthy/images/CDT-11.0-all-flags.png differ
diff --git a/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml b/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml
index 4611ce2a8d0..2110f4ad174 100644
--- a/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml
+++ b/build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml
@@ -9601,6 +9601,21 @@
resourceFilter="all"
valueType="string">
+
+
+
+
- An optional field to allow the option additionally to be passed to scanner discovery of built-in compiler macros and paths. The default is false.
+ An optional field to allow the option additionally to be passed to scanner discovery of built-in compiler macros and paths in the ${FLAGS} variable. The default is false.
+
+
+
+
+
+
+ An optional field to allow the option to be excluded from scanner discovery's ${ALL_FLAGS} variable. The default is false.
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOption.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOption.java
index d296ff09c0d..f77a5f73bc1 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOption.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOption.java
@@ -106,6 +106,8 @@ public interface IOption extends IBuildObject {
public static final String COMMAND_FALSE = "commandFalse"; //$NON-NLS-1$
/** @since 8.3 */
public static final String USE_BY_SCANNER_DISCOVERY = "useByScannerDiscovery"; //$NON-NLS-1$
+ /** @since 9.5 */
+ public static final String EXCLUDE_FROM_SCANNER_DISCOVERY = "excludeFromScannerDiscovery"; //$NON-NLS-1$
/** @since 8.0 */
public static final String COMMAND_GENERATOR = "commandGenerator"; //$NON-NLS-1$
public static final String TOOL_TIP = "tip"; //$NON-NLS-1$
@@ -630,6 +632,15 @@ public interface IOption extends IBuildObject {
*/
public boolean isForScannerDiscovery();
+ /**
+ * Flag to indicate whether the option should be excluded from scanner discovery.
+ * @return {@code true} if the option should never be passed to scanner discovery command
+ * or {@code false} otherwise.
+ *
+ * @since 9.5
+ */
+ public boolean isExcludedFromScannerDiscovery();
+
/**
* Returns the tree root of this option if it is of type {@link #TREE}
* @return tree root of this option or null
if not found.
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java
index 393df9fe958..8671c29c25e 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java
@@ -81,6 +81,7 @@ public class Option extends BuildObject implements IOption, IBuildPropertiesRest
private IOptionCommandGenerator commandGenerator;
private String commandFalse;
private Boolean isForScannerDiscovery;
+ private Boolean isExcludedFromScannerDiscovery;
private String tip;
private String contextId;
private List applicableValuesList;
@@ -224,6 +225,9 @@ public class Option extends BuildObject implements IOption, IBuildPropertiesRest
if (option.isForScannerDiscovery != null) {
isForScannerDiscovery = option.isForScannerDiscovery;
}
+ if (option.isExcludedFromScannerDiscovery != null) {
+ isExcludedFromScannerDiscovery = option.isExcludedFromScannerDiscovery;
+ }
if (option.tip != null) {
tip = option.tip;
}
@@ -405,6 +409,12 @@ public class Option extends BuildObject implements IOption, IBuildPropertiesRest
isForScannerDiscovery = Boolean.parseBoolean(isForSD);
}
+ // isNotForScannerDiscovery
+ String isExcludeFromSD = element.getAttribute(EXCLUDE_FROM_SCANNER_DISCOVERY);
+ if (isExcludeFromSD != null) {
+ isExcludedFromScannerDiscovery = Boolean.parseBoolean(isExcludeFromSD);
+ }
+
// Get the tooltip for the option
tip = SafeStringInterner.safeIntern(element.getAttribute(TOOL_TIP));
@@ -578,6 +588,14 @@ public class Option extends BuildObject implements IOption, IBuildPropertiesRest
}
}
+ // isNotForScannerDiscovery
+ if (element.getAttribute(EXCLUDE_FROM_SCANNER_DISCOVERY) != null) {
+ String isExcludeFromSD = element.getAttribute(EXCLUDE_FROM_SCANNER_DISCOVERY);
+ if (isExcludeFromSD != null) {
+ isForScannerDiscovery = Boolean.parseBoolean(isExcludeFromSD);
+ }
+ }
+
// Get the tooltip for the option
if (element.getAttribute(TOOL_TIP) != null) {
tip = SafeStringInterner.safeIntern(element.getAttribute(TOOL_TIP));
@@ -887,6 +905,10 @@ public class Option extends BuildObject implements IOption, IBuildPropertiesRest
element.setAttribute(USE_BY_SCANNER_DISCOVERY, isForScannerDiscovery.toString());
}
+ if (isExcludedFromScannerDiscovery != null) {
+ element.setAttribute(EXCLUDE_FROM_SCANNER_DISCOVERY, isExcludedFromScannerDiscovery.toString());
+ }
+
if (tip != null) {
element.setAttribute(TOOL_TIP, tip);
}
@@ -1381,6 +1403,14 @@ public class Option extends BuildObject implements IOption, IBuildPropertiesRest
return isForScannerDiscovery;
}
+ @Override
+ public boolean isExcludedFromScannerDiscovery() {
+ if (isExcludedFromScannerDiscovery == null) {
+ isExcludedFromScannerDiscovery = superClass != null && superClass.isExcludedFromScannerDiscovery();
+ }
+ return isExcludedFromScannerDiscovery;
+ }
+
@Override
public String getToolTip() {
if (tip == null) {
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java
index f1bdb6a3732..5769d596956 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java
@@ -926,6 +926,11 @@ public class OptionReference implements IOption {
return option.isForScannerDiscovery();
}
+ @Override
+ public boolean isExcludedFromScannerDiscovery() {
+ return option.isExcludedFromScannerDiscovery();
+ }
+
@Override
public ITreeRoot getTreeRoot() {
if (!resolved) {
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 507f5c6cce7..cdac186a773 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
@@ -53,6 +53,7 @@ import org.eclipse.cdt.core.settings.model.ICProjectDescription;
import org.eclipse.cdt.internal.core.BuildRunnerHelper;
import org.eclipse.cdt.internal.core.XmlUtil;
import org.eclipse.cdt.internal.core.envvar.EnvironmentVariableManager;
+import org.eclipse.cdt.managedbuilder.core.IOption;
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
import org.eclipse.cdt.managedbuilder.internal.core.ManagedMakeMessages;
import org.eclipse.cdt.utils.CommandLineUtil;
@@ -101,6 +102,8 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
protected static final String COMPILER_MACRO = "${COMMAND}"; //$NON-NLS-1$
/** @since 8.3 */
protected static final String FLAGS_MACRO = "${FLAGS}"; //$NON-NLS-1$
+ /** @since 9.5*/
+ protected static final String ALL_FLAGS_MACRO = "${ALL_FLAGS}"; //$NON-NLS-1$
protected static final String SPEC_FILE_MACRO = "${INPUTS}"; //$NON-NLS-1$
protected static final String SPEC_EXT_MACRO = "${EXT}"; //$NON-NLS-1$
protected static final String SPEC_FILE_BASE = "spec"; //$NON-NLS-1$
@@ -279,6 +282,7 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
* Normally would come from the tool-chain.
* ${INPUTS} - path to spec file which will be placed in workspace area.
* ${EXT} - file extension calculated from language ID.
+ * ${ALL_FLAGS} - all the command line flags.
*
* The parameter could be taken from the extension
* in {@code plugin.xml} or from property file.
@@ -334,6 +338,11 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
if (flags != null)
cmd = cmd.replace(FLAGS_MACRO, flags);
}
+ if (cmd.contains(ALL_FLAGS_MACRO)) {
+ String flags = getAllToolOptions(languageId);
+ if (flags != null)
+ cmd = cmd.replace(ALL_FLAGS_MACRO, flags);
+ }
if (cmd.contains(SPEC_FILE_MACRO)) {
String specFileName = getSpecFile(languageId);
if (specFileName != null)
@@ -933,6 +942,9 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
* Determine additional options to pass to scanner discovery command.
* These options are intended to come from the tool-chain.
*
+ * Unlike {@link #getAllToolOptions(String)} this method filters to only
+ * return a subset of all options. See {@link IOption#isForScannerDiscovery()}
+ *
* @param languageId - language ID.
* @return additional options to pass to scanner discovery command.
*
@@ -942,6 +954,23 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
return ""; //$NON-NLS-1$
}
+ /**
+ * Determine additional options to pass to scanner discovery command.
+ * These options are intended to come from the tool-chain.
+ *
+ * Unlike {@link #getToolOptions(String)} this returns all options,
+ * except for those specifically excluded from scanner discovery
+ * with {@link IOption#isExcludedFromScannerDiscovery()}
+ *
+ * @param languageId - language ID.
+ * @return additional options to pass to scanner discovery command.
+ *
+ * @since 9.5
+ */
+ protected String getAllToolOptions(String languageId) {
+ return ""; //$NON-NLS-1$
+ }
+
@Override
public Element serializeAttributes(Element parentElement) {
Element elementProvider = super.serializeAttributes(parentElement);
diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/ToolchainBuiltinSpecsDetector.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/ToolchainBuiltinSpecsDetector.java
index 59312318f0a..7faf3910c32 100644
--- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/ToolchainBuiltinSpecsDetector.java
+++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/ToolchainBuiltinSpecsDetector.java
@@ -21,6 +21,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
+import java.util.function.Predicate;
import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
import org.eclipse.cdt.managedbuilder.core.BuildException;
@@ -153,8 +154,10 @@ public abstract class ToolchainBuiltinSpecsDetector extends AbstractBuiltinSpecs
return extension.get();
}
- @Override
- protected String getToolOptions(String languageId) {
+ /**
+ * @since 9.5
+ */
+ protected String getToolOptions(String languageId, Predicate predicate) {
Optional found = languageTool(languageId).flatMap(t -> Optional.of(t.getOptions()));
if (!found.isPresent()) {
return ""; //$NON-NLS-1$
@@ -162,7 +165,7 @@ public abstract class ToolchainBuiltinSpecsDetector extends AbstractBuiltinSpecs
StringBuilder flags = new StringBuilder();
IOption[] options = found.get();
for (IOption option : options) {
- if (option.isForScannerDiscovery()) {
+ if (predicate.test(option)) {
try {
String optionValue = null;
switch (option.getBasicValueType()) {
@@ -207,6 +210,16 @@ public abstract class ToolchainBuiltinSpecsDetector extends AbstractBuiltinSpecs
return flags.toString().trim();
}
+ @Override
+ protected String getToolOptions(String languageId) {
+ return getToolOptions(languageId, IOption::isForScannerDiscovery);
+ }
+
+ @Override
+ protected String getAllToolOptions(String languageId) {
+ return getToolOptions(languageId, Predicate.not(IOption::isExcludedFromScannerDiscovery));
+ }
+
@Override
protected List getEnvironmentVariables() {
if (envMngr == null && currentCfgDescription == null) {
diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.properties b/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.properties
index 95a5857e601..38fc09bf213 100644
--- a/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.properties
+++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.properties
@@ -188,6 +188,8 @@ Option.Posix.Warn.wwritestring=Treat strings always as const (-Wwrite-strings)
Option.Posix.Verbose=Verbose (-v)
Option.OtherFlags=Other flags
+Option.OtherFlagsExcludedFromScannerDiscovery=Other flags (excluded from discovery)
+Option.OtherFlagsExcludedFromScannerDiscoveryTip=Flags that will not be passed to the compiler when discovering compiler built-in macros and include paths. Include compiler flags here that may interfere with the correct operation of scanner discovery.
Option.Posix.Ansi=Support ANSI programs (-ansi)
Option.PIC=Position Independent Code (-fPIC)
Option.codecov=Generate gcov information (-ftest-coverage -fprofile-arcs)
diff --git a/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml b/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml
index e35e6ee04c0..345b44f4a0c 100644
--- a/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml
+++ b/build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.xml
@@ -1440,6 +1440,15 @@
id="gnu.c.compiler.option.misc.other"
valueType="string">
+
+
+
+
) op1.getValue()).toArray(new String[0]);
ManagedBuildManager.setOption(res, dst, op2, data);
@@ -793,28 +791,7 @@ public class ToolSettingsTab extends AbstractCBuildPropertyTab implements IPrefe
IOption op1[] = t.getOptions();
for (IOption op : op1) {
if (((Option) op).isDirty()) {
- if (op.isForScannerDiscovery())
- isIndexerAffected = true;
- else {
- try {
- switch (op.getValueType()) {
- case IOption.INCLUDE_PATH:
- case IOption.PREPROCESSOR_SYMBOLS:
- case IOption.INCLUDE_FILES:
- case IOption.MACRO_FILES:
- case IOption.UNDEF_INCLUDE_PATH:
- case IOption.UNDEF_PREPROCESSOR_SYMBOLS:
- case IOption.UNDEF_INCLUDE_FILES:
- case IOption.UNDEF_LIBRARY_PATHS:
- case IOption.UNDEF_LIBRARY_FILES:
- case IOption.UNDEF_MACRO_FILES:
- isIndexerAffected = true;
- break;
- }
- } catch (BuildException e) {
- // Do nothing
- }
- }
+ isIndexerAffected = true;
}
}
}
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/newui/Messages.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/newui/Messages.java
index df64bb6c6e3..d1ead212835 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/newui/Messages.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/newui/Messages.java
@@ -54,6 +54,7 @@ public class Messages extends NLS {
public static String AbstractPage_7;
public static String AbstractPage_8;
public static String AbstractPage_9;
+ public static String AbstractPage_Rebuild_Index;
public static String AbstractPage_rebuildIndex_question;
public static String BinaryParsTab_0;
public static String BrowseEntryDialog_dir_title_add;
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/newui/Messages.properties b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/newui/Messages.properties
index 3c6bb620d97..1c126d1be7a 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/newui/Messages.properties
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/newui/Messages.properties
@@ -101,7 +101,8 @@ AbstractPage_6=Configuration:\u0020
AbstractPage_7=Exclude resource from build
AbstractPage_8=Cannot apply
AbstractPage_9=Internal error
-AbstractPage_rebuildIndex_question=Changes made will not be reflected in the index until it is rebuilt. Do you wish to rebuild it now?
+AbstractPage_Rebuild_Index=Rebuild Index
+AbstractPage_rebuildIndex_question=Some build settings changes may affect the index. These changes won't take effect until the index until it is rebuilt. Do you wish to rebuild it now?
AbstractLangsListTab_ShowBuiltin=Show built-in values
AbstractLangsListTab_Languages=Languages
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java
index a1a74109872..7e8ed167dcd 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/newui/AbstractPage.java
@@ -751,7 +751,8 @@ public abstract class AbstractPage extends PropertyPage implements IPreferencePa
final String title = getTitle();
final String msg = Messages.AbstractPage_rebuildIndex_question;
int result = OptionalMessageDialog.open(PREF_ASK_REINDEX, shell, title, null /* default image */, msg,
- MessageDialog.QUESTION, new String[] { IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL }, 0);
+ MessageDialog.QUESTION, new String[] { Messages.AbstractPage_Rebuild_Index, IDialogConstants.NO_LABEL },
+ 0);
if (result == OptionalMessageDialog.NOT_SHOWN) {
result = OptionalMessageDialog.getDialogDetail(PREF_ASK_REINDEX);
} else if (result != SWT.DEFAULT) {
diff --git a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_pref_build_scanner_discovery.htm b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_pref_build_scanner_discovery.htm
index 33baf04b006..076214d57f7 100644
--- a/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_pref_build_scanner_discovery.htm
+++ b/debug/org.eclipse.cdt.debug.application.doc/reference/cdt_u_pref_build_scanner_discovery.htm
@@ -183,6 +183,8 @@ Language settings providers can have options that affect the behavior of a provi
${COMMAND} - compiler command from the tool-chain, such as "gcc".
${FLAGS} - applicable compiler flags from the tool-chain, such as language dialect flag "-std=c++0x".
+ ${ALL_FLAGS} - all compiler flags from the tool-chain, except those explicity excluded,
+ either by tool provider or by being entered in the "Other flags (excluded from discovery)" in the "Miscellaneous" tool page.
${INPUTS} - indicates normally an empty specs file required by the compiler.
If no such file exists the file gets created temporarily in Eclipse workspace plugin area.
diff --git a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_pref_build_scanner_discovery.htm b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_pref_build_scanner_discovery.htm
index 33baf04b006..076214d57f7 100644
--- a/doc/org.eclipse.cdt.doc.user/reference/cdt_u_pref_build_scanner_discovery.htm
+++ b/doc/org.eclipse.cdt.doc.user/reference/cdt_u_pref_build_scanner_discovery.htm
@@ -183,6 +183,8 @@ Language settings providers can have options that affect the behavior of a provi
${COMMAND} - compiler command from the tool-chain, such as "gcc".
${FLAGS} - applicable compiler flags from the tool-chain, such as language dialect flag "-std=c++0x".
+ ${ALL_FLAGS} - all compiler flags from the tool-chain, except those explicity excluded,
+ either by tool provider or by being entered in the "Other flags (excluded from discovery)" in the "Miscellaneous" tool page.
${INPUTS} - indicates normally an empty specs file required by the compiler.
If no such file exists the file gets created temporarily in Eclipse workspace plugin area.