diff options
author | 2017-01-26 23:26:33 +0000 | |
---|---|---|
committer | 2017-01-27 10:12:51 +0000 | |
commit | 53bdf50187fe3f840117b36c3f899bdcea72cda5 (patch) | |
tree | 1f5e782bcf6b94e8927fe1f502fb5ed52da0762e /src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java | |
parent | 3632f30b8fd24ad67510deaebddd64e973349157 (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.java | 6 |
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 |