diff options
author | hlopko <hlopko@google.com> | 2018-08-01 11:24:47 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-08-01 11:27:36 -0700 |
commit | c3a08780f72727025c37a56c593a6eb379b07f99 (patch) | |
tree | 5eaf427a6b936377b8502a14bd5fbf9b7f756251 /src/main/java/com/google/devtools/build/lib/rules/cpp | |
parent | a0ca5acbbd6c86d91b5891215591a51fd6b0d83a (diff) |
Add builtin include directories to action key for CppCompileAction
Since builtin include directories affect validation, they have to be part of the
action key.
RELNOTES: None.
PiperOrigin-RevId: 206960988
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp')
3 files changed, 18 insertions, 8 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 a73edf0697..fd9ac8e36b 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 @@ -195,7 +195,7 @@ public class CppCompileAction extends AbstractAction * @param actionName a string giving the name of this action for the purpose of toolchain * evaluation * @param cppSemantics C++ compilation semantics - * @param cppProvider - CcToolchainProvider with configuration-dependent information. + * @param builtInIncludeDirectories - list of toolchain-defined builtin include directories. */ CppCompileAction( ActionOwner owner, @@ -225,7 +225,7 @@ public class CppCompileAction extends AbstractAction ImmutableMap<String, String> executionInfo, String actionName, CppSemantics cppSemantics, - CcToolchainProvider cppProvider, + ImmutableList<PathFragment> builtInIncludeDirectories, @Nullable Artifact grepIncludes) { super( owner, @@ -270,8 +270,7 @@ public class CppCompileAction extends AbstractAction this.needsIncludeValidation = cppSemantics.needsIncludeValidation(); this.includeProcessing = cppSemantics.getIncludeProcessing(); this.actionClassId = actionClassId; - this.builtInIncludeDirectories = - ImmutableList.copyOf(cppProvider.getBuiltInIncludeDirectories()); + this.builtInIncludeDirectories = builtInIncludeDirectories; this.additionalInputs = null; this.usedModules = null; this.topLevelModules = null; @@ -984,6 +983,7 @@ public class CppCompileAction extends AbstractAction * warning have changed, otherwise we might miss some errors. */ fp.addPaths(ccCompilationContext.getDeclaredIncludeDirs()); + fp.addPaths(builtInIncludeDirectories); } @Override 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 f5d4c270b3..6c079747ab 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 @@ -80,6 +80,7 @@ public class CppCompileActionBuilder { private ImmutableList<Artifact> builtinIncludeFiles; private Iterable<Artifact> inputsForInvalidation = ImmutableList.of(); private Iterable<Artifact> additionalPrunableHeaders = ImmutableList.of(); + private ImmutableList<PathFragment> builtinIncludeDirectories; // New fields need to be added to the copy constructor. /** @@ -118,6 +119,7 @@ public class CppCompileActionBuilder { this.env = configuration.getActionEnvironment(); this.codeCoverageEnabled = configuration.isCodeCoverageEnabled(); this.ccToolchain = ccToolchain; + this.builtinIncludeDirectories = ccToolchain.getBuiltInIncludeDirectories(); this.grepIncludes = grepIncludes; } @@ -155,6 +157,7 @@ public class CppCompileActionBuilder { this.ccToolchain = other.ccToolchain; this.actionName = other.actionName; this.grepIncludes = other.grepIncludes; + this.builtinIncludeDirectories = other.builtinIncludeDirectories; } public PathFragment getTempOutputFile() { @@ -313,7 +316,7 @@ public class CppCompileActionBuilder { ccCompilationContext, coptsFilter, cppSemantics, - ccToolchain, + builtinIncludeDirectories, ImmutableMap.copyOf(executionInfo), grepIncludes); } else { @@ -346,7 +349,7 @@ public class CppCompileActionBuilder { ImmutableMap.copyOf(executionInfo), getActionName(), cppSemantics, - ccToolchain, + builtinIncludeDirectories, grepIncludes); } @@ -644,6 +647,13 @@ public class CppCompileActionBuilder { return this; } + @VisibleForTesting + public CppCompileActionBuilder setBuiltinIncludeDirectories( + ImmutableList<PathFragment> builtinIncludeDirectories) { + this.builtinIncludeDirectories = builtinIncludeDirectories; + return this; + } + public boolean shouldCompileHeaders() { Preconditions.checkNotNull(featureConfiguration); return ccToolchain.shouldProcessHeaders(featureConfiguration); diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java index 161083a209..f281e1bf7e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java @@ -78,7 +78,7 @@ public class FakeCppCompileAction extends CppCompileAction { CcCompilationContext ccCompilationContext, CoptsFilter nocopts, CppSemantics cppSemantics, - CcToolchainProvider cppProvider, + ImmutableList<PathFragment> builtInIncludeDirectories, ImmutableMap<String, String> executionInfo, Artifact grepIncludes) { super( @@ -116,7 +116,7 @@ public class FakeCppCompileAction extends CppCompileAction { executionInfo, CppActionNames.CPP_COMPILE, cppSemantics, - cppProvider, + builtInIncludeDirectories, grepIncludes); this.tempOutputFile = Preconditions.checkNotNull(tempOutputFile); } |