From e5b14ff94b1cd0f858c74995a0e13607551ef7c9 Mon Sep 17 00:00:00 2001 From: Ulf Adams Date: Tue, 16 Feb 2016 09:08:10 +0000 Subject: Store IncludeResolver results, and legalize the files in .d file checking. This fixes a corner case that can only happen internally - in Bazel, this is always a no-op. -- MOS_MIGRATED_REVID=114730311 --- .../google/devtools/build/lib/rules/cpp/CppCompileAction.java | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java') 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 cb740b5279..868332c972 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 @@ -179,6 +179,8 @@ public class CppCompileAction extends AbstractAction implements IncludeScannable */ private Collection additionalInputs = null; + private ImmutableList resolvedInputs = ImmutableList.of(); + /** * Creates a new action to compile C/C++ source files. * @@ -368,6 +370,11 @@ public class CppCompileAction extends AbstractAction implements IncludeScannable return result; } + @VisibleForTesting + public void setResolvedInputsForTesting(ImmutableList resolvedInputs) { + this.resolvedInputs = resolvedInputs; + } + @Override public boolean discoversInputs() { return true; @@ -404,6 +411,9 @@ public class CppCompileAction extends AbstractAction implements IncludeScannable for (Artifact artifact : getInputs()) { result.addAll(includeResolver.getInputsForIncludedFile(artifact, artifactResolver)); } + // TODO(ulfjack): This only works if include scanning is enabled; the cleanup is in progress, + // and this needs to be fixed before we can even consider disabling it. + resolvedInputs = ImmutableList.copyOf(result); if (result.isEmpty()) { result = initialResult; } else { @@ -699,6 +709,7 @@ public class CppCompileAction extends AbstractAction implements IncludeScannable } allowedIncludes.add(input); } + allowedIncludes.addAll(resolvedInputs); if (optionalSourceFile != null) { allowedIncludes.add(optionalSourceFile); -- cgit v1.2.3