diff options
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java | 10 |
1 files changed, 10 insertions, 0 deletions
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 2b6912e24c..373574fe24 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 @@ -291,6 +291,9 @@ public class CppCompileAction extends AbstractAction ruleContext, mandatoryInputs, context.getTransitiveCompilationPrerequisites(), + featureConfiguration.isEnabled(CppRuleClasses.USE_HEADER_MODULES) + ? context.getTransitiveModules(usePic) + : null, optionalSourceFile, lipoScannables), CollectionUtils.asListWithoutNulls( @@ -371,6 +374,7 @@ public class CppCompileAction extends AbstractAction RuleContext ruleContext, NestedSet<Artifact> mandatoryInputs, Set<Artifact> prerequisites, + NestedSet<Artifact> transitiveModules, Artifact optionalSourceFile, Iterable<IncludeScannable> lipoScannables) { NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder(); @@ -380,6 +384,12 @@ public class CppCompileAction extends AbstractAction builder.addAll(prerequisites); builder.addAll(CppHelper.getToolchain(ruleContext).getBuiltinIncludeFiles()); builder.addTransitive(mandatoryInputs); + if (transitiveModules != null) { + // In theory, it is enough to add the actually used modules after input discovery. In + // practice, this interacts badly with orphan detection, which needs to run before input + // discovery. + builder.addTransitive(transitiveModules); + } if (lipoScannables != null && lipoScannables.iterator().hasNext()) { // We need to add "legal generated scanner files" coming through LIPO scannables here. These // usually contain pre-grepped source files, i.e. files just containing the #include lines |