aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java10
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