aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2017-01-26 23:26:33 +0000
committerGravatar Laszlo Csomor <laszlocsomor@google.com>2017-01-27 10:12:51 +0000
commit53bdf50187fe3f840117b36c3f899bdcea72cda5 (patch)
tree1f5e782bcf6b94e8927fe1f502fb5ed52da0762e /src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
parent3632f30b8fd24ad67510deaebddd64e973349157 (diff)
Add a flag that alters the behavior of the parse_headers feature. With the
flag, the headers of a target are compiled into a C++ module instead of being parsed as their own translation unit. The module otherwise remains unused. This way, parse_headers can be used to get a codebase ready for C++ modules. parse_headers currently already gets close, but there are still ways in which a header can be modules-incompatible although it parses fine. -- PiperOrigin-RevId: 145729231 MOS_MIGRATED_REVID=145729231
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
index 60ed762d1b..5d513a516d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java
@@ -212,9 +212,11 @@ public class CppCompileActionBuilder {
return CppCompileAction.CPP_MODULE_COMPILE;
} else if (CppFileTypes.CPP_HEADER.matches(sourcePath)) {
// TODO(bazel-team): Handle C headers that probably don't work in C++ mode.
- if (featureConfiguration.isEnabled(CppRuleClasses.PARSE_HEADERS)) {
+ if (!cppConfiguration.getParseHeadersVerifiesModules()
+ && featureConfiguration.isEnabled(CppRuleClasses.PARSE_HEADERS)) {
return CppCompileAction.CPP_HEADER_PARSING;
- } else if (featureConfiguration.isEnabled(CppRuleClasses.PREPROCESS_HEADERS)) {
+ } else if (!cppConfiguration.getParseHeadersVerifiesModules()
+ && featureConfiguration.isEnabled(CppRuleClasses.PREPROCESS_HEADERS)) {
return CppCompileAction.CPP_HEADER_PREPROCESSING;
} else {
// CcCommon.collectCAndCppSources() ensures we do not add headers to