aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/cpp
diff options
context:
space:
mode:
authorGravatar hlopko <hlopko@google.com>2018-08-01 11:24:47 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-08-01 11:27:36 -0700
commitc3a08780f72727025c37a56c593a6eb379b07f99 (patch)
tree5eaf427a6b936377b8502a14bd5fbf9b7f756251 /src/main/java/com/google/devtools/build/lib/rules/cpp
parenta0ca5acbbd6c86d91b5891215591a51fd6b0d83a (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')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/FakeCppCompileAction.java4
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);
}