From ce71ad9d6eddd3dcde4f8a46e022021c08a853e6 Mon Sep 17 00:00:00 2001 From: Amber Dixon Date: Wed, 8 Dec 2021 13:20:41 -0800 Subject: [PATCH] Disable header include validation via feature flag. Fixes #14346. --- .../devtools/build/lib/rules/cpp/CppCompileAction.java | 2 +- .../devtools/build/lib/rules/cpp/CppConfiguration.java | 4 ++++ .../devtools/build/lib/rules/cpp/CppOptions.java | 10 ++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java index f723e20833c5dd..c1a2e399a18f02 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java @@ -292,7 +292,7 @@ public class CppCompileAction extends AbstractAction implements IncludeScannable this.executionInfo = executionInfo; this.actionName = actionName; this.featureConfiguration = featureConfiguration; - this.needsIncludeValidation = cppSemantics.needsIncludeValidation(); + this.needsIncludeValidation = cppSemantics.needsIncludeValidation() && !cppConfiguration.disableCppIncludeValidation(); this.actionClassId = actionClassId; this.builtInIncludeDirectories = builtInIncludeDirectories; this.additionalInputs = null; diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java index c140a7b963c6c2..0bec15e8b49e27 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java @@ -817,6 +817,10 @@ public boolean validateTopLevelHeaderInclusions() { return cppOptions.validateTopLevelHeaderInclusions; } + public boolean disableCppIncludeValidation() { + return cppOptions.disableCppIncludeValidation; + } + public boolean appleGenerateDsym() { return appleGenerateDsym; } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java index 21aa69afe230f0..9901ee62b08cba 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java @@ -256,6 +256,16 @@ public String getTypeDescription() { + " position-independent executables (\"-pie\").") public boolean forcePic; + @Option( + name = "disable_cpp_include_validation", + defaultValue = "false", + documentationCategory = OptionDocumentationCategory.INPUT_STRICTNESS, + effectTags = {OptionEffectTag.LOADING_AND_ANALYSIS}, + metadataTags = {OptionMetadataTag.INCOMPATIBLE_CHANGE}, + help = + "If true, Bazel will not validate inclusions.") + public boolean disableCppIncludeValidation; + @Option( name = "process_headers_in_dependencies", defaultValue = "false",