From 53bdf50187fe3f840117b36c3f899bdcea72cda5 Mon Sep 17 00:00:00 2001 From: Googler Date: Thu, 26 Jan 2017 23:26:33 +0000 Subject: 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 --- .../devtools/build/lib/rules/cpp/CppCompileActionBuilder.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java') 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 -- cgit v1.2.3