Skip to content

Commit 0bcc12c

Browse files
committed
Bug 571722: Add ALL_FLAGS for scanner discovery
This change adds the ALL_FLAGS that does not limit tool options to those declared as IOption::isForScannerDiscovery when launching the compiler to discover compiler built-ins. This is needed as many other flags, either entered manually in "Other flags" or some of the existing flags with checkboxes such as "-ansi", "-fPIC", and "-fstack-protector-all" which all affect scanner discovery as they can all change what macros are built-in to the compiler. The current solution has as a drawback that some settings, like -I and -D then appear twice. For example in the "Includes" node in the "Project Explorer" My only reservation about this change is if there is an option that can be specified successfully at build time, but when used at scanner discovery time causes the compiler to fail, or return incorrect results. Therefore I have added a new field, excludeFromScannerDiscovery to tool options (buildDefinitions extension point) that allows tool integrators to always exclude a command line option from ALL_FLAGS. I have also added a new "Other flags (excluded from discovery)" to the "Miscellaneous" tab to allow compiler options to be entered by the user. TODO: - [ ] N&N entry - [ ] Provide PR to embed-cdt
1 parent 7587224 commit 0bcc12c

File tree

21 files changed

+194
-48
lines changed

21 files changed

+194
-48
lines changed

NewAndNoteworthy/CDT-11.0.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,27 @@ Please see the corresponding issue for more details.
2525
- `org.eclipse.cdt.lsp.cquery`
2626
- `org.eclipse.cdt.lsp.ui`
2727

28+
# Build
29+
30+
## Scanner Discovery considering all flags
31+
32+
The default for the scanner has changed to include _all_ command line options when querying the compiler for built-in includes and defines.
33+
This is because many more compiler options affect the includes and defines than those that were traditionally included when running the scanner, such as `-ansi`, `-fPIC`, `-fstack-protector-all`.
34+
35+
To address this a new variable called `${ALL_FLAGS}` is included by default when performing scanner discovery.
36+
This variable collects all options to pass to the compiler.
37+
The prior variable, `${FLAGS}` is still available for users wanting pre-CDT 11 behaviour in this area.
38+
39+
Existing projects that have the settings stored locally will need to make the change in _Project Properties_ -\> _C/C++ General_ -\> _Preprocessor Include Paths, Macros etc._ -\> _Providers_ tab -\> _CDT GCC Built-in Compiler Settings_ -\> _Command to get compiler specs:_.
40+
41+
<p align="center"><img src="images/CDT-11.0-all-flags.png" width="50%"></p>
42+
43+
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.
44+
45+
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.
46+
47+
See https://github.com/eclipse-cdt/cdt/pull/158.
48+
2849
# Debug
2950

3051
## C/C++ Dynamic Printf Breakpoints
@@ -67,6 +88,13 @@ This should allow ISV's to create MBS based project with a vendor-specific build
6788
The binary parser classes which open binary files now implement AutoCloseable so they can (and should) be used in a try-with-resources block.
6889
See https://github.com/eclipse-cdt/cdt/pull/132
6990

91+
## Exclude from scanner discovery flag for options
92+
93+
`IOption` has a new flag called `isExcludedFromScannerDiscovery`.
94+
This flag can be set on options to exclude them from scanner discovery when using the new `${ALL_FLAGS}` variable.
95+
96+
See https://github.com/eclipse-cdt/cdt/pull/158.
97+
7098
# Bugs Fixed in this Release
7199

72100
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).
107 KB
Loading

build/org.eclipse.cdt.managedbuilder.core.tests/plugin.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9601,6 +9601,21 @@
96019601
resourceFilter="all"
96029602
valueType="string">
96039603
</option>
9604+
<option
9605+
command="-not-excluded-from-scanner-discovery"
9606+
id="cdt.managedbuilder.lsp.tests.option.not-excluded-sd"
9607+
isAbstract="false"
9608+
resourceFilter="all"
9609+
valueType="string">
9610+
</option>
9611+
<option
9612+
command="-is-excluded-from-scanner-discovery"
9613+
id="cdt.managedbuilder.lsp.tests.option.is-excluded-sd"
9614+
isAbstract="false"
9615+
resourceFilter="all"
9616+
excludeFromScannerDiscovery="true"
9617+
valueType="string">
9618+
</option>
96049619
<option
96059620
command="-bool-option"
96069621
defaultValue="true"

build/org.eclipse.cdt.managedbuilder.core.tests/tests/org/eclipse/cdt/managedbuilder/core/tests/ManagedBuildCoreTests.java

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,6 @@
3434
import org.eclipse.core.runtime.IConfigurationElement;
3535
import org.junit.Assert;
3636

37-
import junit.framework.Test;
38-
import junit.framework.TestSuite;
39-
4037
public class ManagedBuildCoreTests extends BaseTestCase {
4138
private static IProjectType exeType;
4239
private static IProjectType libType;
@@ -46,14 +43,6 @@ public ManagedBuildCoreTests(String name) {
4643
super(name);
4744
}
4845

49-
public static Test suite() {
50-
TestSuite suite = new TestSuite(ManagedBuildCoreTests.class.getName());
51-
suite.addTest(new ManagedBuildCoreTests("testLoadManifest"));
52-
suite.addTest(new ManagedBuildCoreTests("testTreeOptions"));
53-
suite.addTest(new ManagedBuildCoreTests("testOptionsAttributeUseByScannerDiscovery"));
54-
return suite;
55-
}
56-
5746
/**
5847
* Navigates through a CDT 2.1 manifest file and verifies that the
5948
* definitions are loaded correctly.
@@ -673,4 +662,19 @@ public void testOptionsAttributeUseByScannerDiscovery() throws Exception {
673662
assertNotNull(option);
674663
assertEquals(true, option.isForScannerDiscovery());
675664
}
665+
666+
/**
667+
* Tests attribute excludedFromScannerDiscovery.
668+
* @throws Exception
669+
*/
670+
public void testExcludedFromScannerDiscovery() throws Exception {
671+
IOption optionNotExcludedFromSD = ManagedBuildManager
672+
.getExtensionOption("cdt.managedbuilder.lsp.tests.option.not-excluded-sd");
673+
assertNotNull(optionNotExcludedFromSD);
674+
assertEquals(false, optionNotExcludedFromSD.isExcludedFromScannerDiscovery());
675+
676+
IOption option = ManagedBuildManager.getExtensionOption("cdt.managedbuilder.lsp.tests.option.is-excluded-sd");
677+
assertNotNull(option);
678+
assertEquals(true, option.isExcludedFromScannerDiscovery());
679+
}
676680
} // end class

build/org.eclipse.cdt.managedbuilder.core/plugin.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -602,7 +602,7 @@
602602
class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector"
603603
id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector"
604604
name="%GCCBuiltinCompilerSettings.name"
605-
parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;"
605+
parameter="${COMMAND} ${ALL_FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;"
606606
prefer-non-shared="true">
607607
<language-scope id="org.eclipse.cdt.core.gcc"/>
608608
<language-scope id="org.eclipse.cdt.core.g++"/>
@@ -611,7 +611,7 @@
611611
class="org.eclipse.cdt.managedbuilder.internal.language.settings.providers.GCCBuiltinSpecsDetectorCygwin"
612612
id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetectorCygwin"
613613
name="%GCCBuiltinCompilerSettingsCygwin.name"
614-
parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;"
614+
parameter="${COMMAND} ${ALL_FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;"
615615
prefer-non-shared="true">
616616
<language-scope id="org.eclipse.cdt.core.gcc"/>
617617
<language-scope id="org.eclipse.cdt.core.g++"/>
@@ -620,7 +620,7 @@
620620
class="org.eclipse.cdt.managedbuilder.internal.language.settings.providers.GCCBuiltinSpecsDetectorMinGW"
621621
id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetectorMinGW"
622622
name="%GCCBuiltinCompilerSettingsMinGW.name"
623-
parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;"
623+
parameter="${COMMAND} ${ALL_FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;"
624624
prefer-non-shared="true">
625625
<language-scope id="org.eclipse.cdt.core.gcc"/>
626626
<language-scope id="org.eclipse.cdt.core.g++"/>

build/org.eclipse.cdt.managedbuilder.core/schema/buildDefinitions.exsd

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -707,7 +707,7 @@ The pathConverter of a toolchain applies for all tools of the toolchain except i
707707
<attribute name="commandLinePattern" type="string">
708708
<annotation>
709709
<documentation>
710-
Specifies the command &quot;pattern&quot; that indicates how the parts of the command line are used to create the entire command line. The pattern consists of the replaceable variables COMMAND, FLAGS, OUTPUT_FLAG, OUTPUT_PREFIX, OUTPUT and INPUTS. The default command line pattern is ${COMMAND} ${FLAGS} ${OUTPUT_FLAG}${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}, except when customBuildStep is true, where the default is $(COMMAND). White space and other characters are significant and are copied to the generated command. This attribute supports MBS file context macros.
710+
Specifies the command &quot;pattern&quot; that indicates how the parts of the command line are used to create the entire command line. The pattern consists of the replaceable variables COMMAND, FLAGS, OUTPUT_FLAG, OUTPUT_PREFIX, OUTPUT and INPUTS. The default command line pattern is ${COMMAND} ${ALL_FLAGS} ${OUTPUT_FLAG}${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}, except when customBuildStep is true, where the default is $(COMMAND). White space and other characters are significant and are copied to the generated command. This attribute supports MBS file context macros.
711711
</documentation>
712712
</annotation>
713713
</attribute>
@@ -1410,7 +1410,14 @@ Additional special types exist to flag options of special relevance to the build
14101410
<attribute name="useByScannerDiscovery" type="boolean">
14111411
<annotation>
14121412
<documentation>
1413-
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.
1413+
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.
1414+
</documentation>
1415+
</annotation>
1416+
</attribute>
1417+
<attribute name="excludeFromScannerDiscovery" type="boolean">
1418+
<annotation>
1419+
<documentation>
1420+
An optional field to allow the option to be excluded from scanner discovery's ${ALL_FLAGS} variable. The default is false.
14141421
</documentation>
14151422
</annotation>
14161423
</attribute>

build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/core/IOption.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,8 @@ public interface IOption extends IBuildObject {
106106
public static final String COMMAND_FALSE = "commandFalse"; //$NON-NLS-1$
107107
/** @since 8.3 */
108108
public static final String USE_BY_SCANNER_DISCOVERY = "useByScannerDiscovery"; //$NON-NLS-1$
109+
/** @since 9.5 */
110+
public static final String EXCLUDE_FROM_SCANNER_DISCOVERY = "excludeFromScannerDiscovery"; //$NON-NLS-1$
109111
/** @since 8.0 */
110112
public static final String COMMAND_GENERATOR = "commandGenerator"; //$NON-NLS-1$
111113
public static final String TOOL_TIP = "tip"; //$NON-NLS-1$
@@ -630,6 +632,15 @@ public interface IOption extends IBuildObject {
630632
*/
631633
public boolean isForScannerDiscovery();
632634

635+
/**
636+
* Flag to indicate whether the option should be excluded from scanner discovery.
637+
* @return {@code true} if the option should never be passed to scanner discovery command
638+
* or {@code false} otherwise.
639+
*
640+
* @since 9.5
641+
*/
642+
public boolean isExcludedFromScannerDiscovery();
643+
633644
/**
634645
* Returns the tree root of this option if it is of type {@link #TREE}
635646
* @return tree root of this option or <code>null</code> if not found.

build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/Option.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ public class Option extends BuildObject implements IOption, IBuildPropertiesRest
8181
private IOptionCommandGenerator commandGenerator;
8282
private String commandFalse;
8383
private Boolean isForScannerDiscovery;
84+
private Boolean isExcludedFromScannerDiscovery;
8485
private String tip;
8586
private String contextId;
8687
private List<String> applicableValuesList;
@@ -224,6 +225,9 @@ public Option(IHoldsOptions parent, String Id, String name, Option option) {
224225
if (option.isForScannerDiscovery != null) {
225226
isForScannerDiscovery = option.isForScannerDiscovery;
226227
}
228+
if (option.isExcludedFromScannerDiscovery != null) {
229+
isExcludedFromScannerDiscovery = option.isExcludedFromScannerDiscovery;
230+
}
227231
if (option.tip != null) {
228232
tip = option.tip;
229233
}
@@ -405,6 +409,12 @@ protected void loadFromManifest(IManagedConfigElement element) {
405409
isForScannerDiscovery = Boolean.parseBoolean(isForSD);
406410
}
407411

412+
// isNotForScannerDiscovery
413+
String isExcludeFromSD = element.getAttribute(EXCLUDE_FROM_SCANNER_DISCOVERY);
414+
if (isExcludeFromSD != null) {
415+
isExcludedFromScannerDiscovery = Boolean.parseBoolean(isExcludeFromSD);
416+
}
417+
408418
// Get the tooltip for the option
409419
tip = SafeStringInterner.safeIntern(element.getAttribute(TOOL_TIP));
410420

@@ -578,6 +588,14 @@ protected void loadFromProject(ICStorageElement element) {
578588
}
579589
}
580590

591+
// isNotForScannerDiscovery
592+
if (element.getAttribute(EXCLUDE_FROM_SCANNER_DISCOVERY) != null) {
593+
String isExcludeFromSD = element.getAttribute(EXCLUDE_FROM_SCANNER_DISCOVERY);
594+
if (isExcludeFromSD != null) {
595+
isForScannerDiscovery = Boolean.parseBoolean(isExcludeFromSD);
596+
}
597+
}
598+
581599
// Get the tooltip for the option
582600
if (element.getAttribute(TOOL_TIP) != null) {
583601
tip = SafeStringInterner.safeIntern(element.getAttribute(TOOL_TIP));
@@ -887,6 +905,10 @@ public void serialize(ICStorageElement element) throws BuildException {
887905
element.setAttribute(USE_BY_SCANNER_DISCOVERY, isForScannerDiscovery.toString());
888906
}
889907

908+
if (isExcludedFromScannerDiscovery != null) {
909+
element.setAttribute(EXCLUDE_FROM_SCANNER_DISCOVERY, isExcludedFromScannerDiscovery.toString());
910+
}
911+
890912
if (tip != null) {
891913
element.setAttribute(TOOL_TIP, tip);
892914
}
@@ -1381,6 +1403,14 @@ public boolean isForScannerDiscovery() {
13811403
return isForScannerDiscovery;
13821404
}
13831405

1406+
@Override
1407+
public boolean isExcludedFromScannerDiscovery() {
1408+
if (isExcludedFromScannerDiscovery == null) {
1409+
isExcludedFromScannerDiscovery = superClass != null && superClass.isExcludedFromScannerDiscovery();
1410+
}
1411+
return isExcludedFromScannerDiscovery;
1412+
}
1413+
13841414
@Override
13851415
public String getToolTip() {
13861416
if (tip == null) {

build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/OptionReference.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -926,6 +926,11 @@ public boolean isForScannerDiscovery() {
926926
return option.isForScannerDiscovery();
927927
}
928928

929+
@Override
930+
public boolean isExcludedFromScannerDiscovery() {
931+
return option.isExcludedFromScannerDiscovery();
932+
}
933+
929934
@Override
930935
public ITreeRoot getTreeRoot() {
931936
if (!resolved) {

build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/AbstractBuiltinSpecsDetector.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
import org.eclipse.cdt.internal.core.BuildRunnerHelper;
5454
import org.eclipse.cdt.internal.core.XmlUtil;
5555
import org.eclipse.cdt.internal.core.envvar.EnvironmentVariableManager;
56+
import org.eclipse.cdt.managedbuilder.core.IOption;
5657
import org.eclipse.cdt.managedbuilder.core.ManagedBuilderCorePlugin;
5758
import org.eclipse.cdt.managedbuilder.internal.core.ManagedMakeMessages;
5859
import org.eclipse.cdt.utils.CommandLineUtil;
@@ -101,6 +102,8 @@ public abstract class AbstractBuiltinSpecsDetector extends AbstractLanguageSetti
101102
protected static final String COMPILER_MACRO = "${COMMAND}"; //$NON-NLS-1$
102103
/** @since 8.3 */
103104
protected static final String FLAGS_MACRO = "${FLAGS}"; //$NON-NLS-1$
105+
/** @since 9.5*/
106+
protected static final String ALL_FLAGS_MACRO = "${ALL_FLAGS}"; //$NON-NLS-1$
104107
protected static final String SPEC_FILE_MACRO = "${INPUTS}"; //$NON-NLS-1$
105108
protected static final String SPEC_EXT_MACRO = "${EXT}"; //$NON-NLS-1$
106109
protected static final String SPEC_FILE_BASE = "spec"; //$NON-NLS-1$
@@ -279,6 +282,7 @@ public void shutdown() {
279282
* Normally would come from the tool-chain.<br>
280283
* <b>${INPUTS}</b> - path to spec file which will be placed in workspace area.<br>
281284
* <b>${EXT}</b> - file extension calculated from language ID.
285+
* <b>${ALL_FLAGS}</b> - all the command line flags.
282286
* </ul>
283287
* The parameter could be taken from the extension
284288
* in {@code plugin.xml} or from property file.
@@ -334,6 +338,11 @@ protected String resolveCommand(String languageId) throws CoreException {
334338
if (flags != null)
335339
cmd = cmd.replace(FLAGS_MACRO, flags);
336340
}
341+
if (cmd.contains(ALL_FLAGS_MACRO)) {
342+
String flags = getAllToolOptions(languageId);
343+
if (flags != null)
344+
cmd = cmd.replace(ALL_FLAGS_MACRO, flags);
345+
}
337346
if (cmd.contains(SPEC_FILE_MACRO)) {
338347
String specFileName = getSpecFile(languageId);
339348
if (specFileName != null)
@@ -933,6 +942,9 @@ protected Optional<String> selectBestSpecFileExtension(List<String> extensions)
933942
* Determine additional options to pass to scanner discovery command.
934943
* These options are intended to come from the tool-chain.
935944
*
945+
* Unlike {@link #getAllToolOptions(String)} this method filters to only
946+
* return a subset of all options. See {@link IOption#isForScannerDiscovery()}
947+
*
936948
* @param languageId - language ID.
937949
* @return additional options to pass to scanner discovery command.
938950
*
@@ -942,6 +954,23 @@ protected String getToolOptions(String languageId) {
942954
return ""; //$NON-NLS-1$
943955
}
944956

957+
/**
958+
* Determine additional options to pass to scanner discovery command.
959+
* These options are intended to come from the tool-chain.
960+
*
961+
* Unlike {@link #getToolOptions(String)} this returns all options,
962+
* except for those specifically excluded from scanner discovery
963+
* with {@link IOption#isExcludedFromScannerDiscovery()}
964+
*
965+
* @param languageId - language ID.
966+
* @return additional options to pass to scanner discovery command.
967+
*
968+
* @since 9.5
969+
*/
970+
protected String getAllToolOptions(String languageId) {
971+
return ""; //$NON-NLS-1$
972+
}
973+
945974
@Override
946975
public Element serializeAttributes(Element parentElement) {
947976
Element elementProvider = super.serializeAttributes(parentElement);

build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/language/settings/providers/ToolchainBuiltinSpecsDetector.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.List;
2222
import java.util.Map;
2323
import java.util.Optional;
24+
import java.util.function.Predicate;
2425

2526
import org.eclipse.cdt.core.envvar.IEnvironmentVariable;
2627
import org.eclipse.cdt.managedbuilder.core.BuildException;
@@ -153,16 +154,18 @@ protected String getSpecFileExtension(String languageId) {
153154
return extension.get();
154155
}
155156

156-
@Override
157-
protected String getToolOptions(String languageId) {
157+
/**
158+
* @since 9.5
159+
*/
160+
protected String getToolOptions(String languageId, Predicate<IOption> predicate) {
158161
Optional<IOption[]> found = languageTool(languageId).flatMap(t -> Optional.of(t.getOptions()));
159162
if (!found.isPresent()) {
160163
return ""; //$NON-NLS-1$
161164
}
162165
StringBuilder flags = new StringBuilder();
163166
IOption[] options = found.get();
164167
for (IOption option : options) {
165-
if (option.isForScannerDiscovery()) {
168+
if (predicate.test(option)) {
166169
try {
167170
String optionValue = null;
168171
switch (option.getBasicValueType()) {
@@ -207,6 +210,16 @@ protected String getToolOptions(String languageId) {
207210
return flags.toString().trim();
208211
}
209212

213+
@Override
214+
protected String getToolOptions(String languageId) {
215+
return getToolOptions(languageId, IOption::isForScannerDiscovery);
216+
}
217+
218+
@Override
219+
protected String getAllToolOptions(String languageId) {
220+
return getToolOptions(languageId, Predicate.not(IOption::isExcludedFromScannerDiscovery));
221+
}
222+
210223
@Override
211224
protected List<IEnvironmentVariable> getEnvironmentVariables() {
212225
if (envMngr == null && currentCfgDescription == null) {

build/org.eclipse.cdt.managedbuilder.gnu.ui/plugin.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,8 @@ Option.Posix.Warn.wwritestring=Treat strings always as const (-Wwrite-strings)
188188

189189
Option.Posix.Verbose=Verbose (-v)
190190
Option.OtherFlags=Other flags
191+
Option.OtherFlagsExcludedFromScannerDiscovery=Other flags (excluded from discovery)
192+
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.
191193
Option.Posix.Ansi=Support ANSI programs (-ansi)
192194
Option.PIC=Position Independent Code (-fPIC)
193195
Option.codecov=Generate gcov information (-ftest-coverage -fprofile-arcs)

0 commit comments

Comments
 (0)