aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CompileBuildVariables.java53
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkstampCompileHelper.java26
3 files changed, 52 insertions, 35 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
index b38e0df9c7..c45002281e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java
@@ -1528,7 +1528,6 @@ public final class CcCompilationHelper {
gcnoFile,
dwoFile,
ltoIndexingFile,
- ccCompilationContextInfo,
ImmutableList.of(),
userCompileFlags.build(),
cppModuleMap,
@@ -1537,7 +1536,12 @@ public final class CcCompilationHelper {
CppHelper.getFdoBuildStamp(ruleContext, fdoSupport.getFdoSupport()),
dotdFileExecPath,
ImmutableList.copyOf(variablesExtensions),
- allAdditionalBuildVariables.build());
+ allAdditionalBuildVariables.build(),
+ ccCompilationContextInfo.getDirectModuleMaps(),
+ ccCompilationContextInfo.getIncludeDirs(),
+ ccCompilationContextInfo.getQuoteIncludeDirs(),
+ ccCompilationContextInfo.getSystemIncludeDirs(),
+ ccCompilationContextInfo.getDefines());
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CompileBuildVariables.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CompileBuildVariables.java
index c1066cfd35..7c6aa8459f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CompileBuildVariables.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CompileBuildVariables.java
@@ -13,6 +13,7 @@
// limitations under the License.
package com.google.devtools.build.lib.rules.cpp;
+import com.google.common.base.Preconditions;
import com.google.common.base.Supplier;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
@@ -113,7 +114,6 @@ public enum CompileBuildVariables {
Artifact gcnoFile,
Artifact dwoFile,
Artifact ltoIndexingFile,
- CcCompilationContextInfo ccCompilationContextInfo,
ImmutableList<String> includes,
ImmutableList<String> userCompileFlags,
CppModuleMap cppModuleMap,
@@ -122,7 +122,12 @@ public enum CompileBuildVariables {
String fdoStamp,
String dotdFileExecPath,
ImmutableList<VariablesExtension> variablesExtensions,
- ImmutableMap<String, String> additionalBuildVariables) {
+ ImmutableMap<String, String> additionalBuildVariables,
+ Iterable<Artifact> directModuleMaps,
+ Collection<PathFragment> includeDirs,
+ Collection<PathFragment> quoteIncludeDirs,
+ Collection<PathFragment> systemIncludeDirs,
+ Iterable<String> defines) {
try {
return setupVariablesOrThrowEvalException(
featureConfiguration,
@@ -132,7 +137,6 @@ public enum CompileBuildVariables {
gcnoFile,
dwoFile,
ltoIndexingFile,
- ccCompilationContextInfo,
includes,
userCompileFlags,
cppModuleMap,
@@ -141,7 +145,12 @@ public enum CompileBuildVariables {
fdoStamp,
dotdFileExecPath,
variablesExtensions,
- additionalBuildVariables);
+ additionalBuildVariables,
+ directModuleMaps,
+ includeDirs,
+ quoteIncludeDirs,
+ systemIncludeDirs,
+ defines);
} catch (EvalException e) {
ruleContext.ruleError(e.getMessage());
return Variables.EMPTY;
@@ -156,7 +165,6 @@ public enum CompileBuildVariables {
Artifact gcnoFile,
Artifact dwoFile,
Artifact ltoIndexingFile,
- CcCompilationContextInfo ccCompilationContextInfo,
ImmutableList<String> includes,
ImmutableList<String> userCompileFlags,
CppModuleMap cppModuleMap,
@@ -165,8 +173,18 @@ public enum CompileBuildVariables {
String fdoStamp,
String dotdFileExecPath,
ImmutableList<VariablesExtension> variablesExtensions,
- ImmutableMap<String, String> additionalBuildVariables)
+ ImmutableMap<String, String> additionalBuildVariables,
+ Iterable<Artifact> directModuleMaps,
+ Iterable<PathFragment> includeDirs,
+ Iterable<PathFragment> quoteIncludeDirs,
+ Iterable<PathFragment> systemIncludeDirs,
+ Iterable<String> defines)
throws EvalException {
+ Preconditions.checkNotNull(directModuleMaps);
+ Preconditions.checkNotNull(includeDirs);
+ Preconditions.checkNotNull(quoteIncludeDirs);
+ Preconditions.checkNotNull(systemIncludeDirs);
+ Preconditions.checkNotNull(defines);
Variables.Builder buildVariables =
new Variables.Builder(ccToolchainProvider.getBuildVariables());
@@ -214,7 +232,7 @@ public enum CompileBuildVariables {
buildVariables.addStringVariable(
MODULE_MAP_FILE.getVariableName(), cppModuleMap.getArtifact().getExecPathString());
StringSequenceBuilder sequence = new StringSequenceBuilder();
- for (Artifact artifact : ccCompilationContextInfo.getDirectModuleMaps()) {
+ for (Artifact artifact : directModuleMaps) {
sequence.addValue(artifact.getExecPathString());
}
buildVariables.addCustomBuiltVariable(DEPENDENT_MODULE_MAP_FILES.getVariableName(), sequence);
@@ -225,14 +243,11 @@ public enum CompileBuildVariables {
}
if (featureConfiguration.isEnabled(CppRuleClasses.INCLUDE_PATHS)) {
buildVariables.addStringSequenceVariable(
- INCLUDE_PATHS.getVariableName(),
- getSafePathStrings(ccCompilationContextInfo.getIncludeDirs()));
+ INCLUDE_PATHS.getVariableName(), getSafePathStrings(includeDirs));
buildVariables.addStringSequenceVariable(
- QUOTE_INCLUDE_PATHS.getVariableName(),
- getSafePathStrings(ccCompilationContextInfo.getQuoteIncludeDirs()));
+ QUOTE_INCLUDE_PATHS.getVariableName(), getSafePathStrings(quoteIncludeDirs));
buildVariables.addStringSequenceVariable(
- SYSTEM_INCLUDE_PATHS.getVariableName(),
- getSafePathStrings(ccCompilationContextInfo.getSystemIncludeDirs()));
+ SYSTEM_INCLUDE_PATHS.getVariableName(), getSafePathStrings(systemIncludeDirs));
}
if (!includes.isEmpty()) {
@@ -240,19 +255,19 @@ public enum CompileBuildVariables {
}
if (featureConfiguration.isEnabled(CppRuleClasses.PREPROCESSOR_DEFINES)) {
- ImmutableList<String> defines;
+ Iterable<String> allDefines;
if (fdoStamp != null) {
// Stamp FDO builds with FDO subtype string
- defines =
+ allDefines =
ImmutableList.<String>builder()
- .addAll(ccCompilationContextInfo.getDefines())
+ .addAll(defines)
.add(CppConfiguration.FDO_STAMP_MACRO + "=\"" + fdoStamp + "\"")
.build();
} else {
- defines = ccCompilationContextInfo.getDefines();
+ allDefines = defines;
}
- buildVariables.addStringSequenceVariable(PREPROCESSOR_DEFINES.getVariableName(), defines);
+ buildVariables.addStringSequenceVariable(PREPROCESSOR_DEFINES.getVariableName(), allDefines);
}
if (usePic) {
@@ -286,7 +301,7 @@ public enum CompileBuildVariables {
}
/** Get the safe path strings for a list of paths to use in the build variables. */
- private static ImmutableSet<String> getSafePathStrings(Collection<PathFragment> paths) {
+ private static ImmutableSet<String> getSafePathStrings(Iterable<PathFragment> paths) {
ImmutableSet.Builder<String> result = ImmutableSet.builder();
for (PathFragment path : paths) {
result.add(path.getSafePathString());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkstampCompileHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkstampCompileHelper.java
index 3ffee15d45..83fa13d355 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkstampCompileHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkstampCompileHelper.java
@@ -142,18 +142,6 @@ public class CppLinkstampCompileHelper {
// TODO(b/34761650): Remove all this hardcoding by separating a full blown compile action.
Preconditions.checkArgument(
featureConfiguration.actionIsConfigured(CppCompileAction.LINKSTAMP_COMPILE));
- CcCompilationContextInfo ccCompilationContextInfo =
- new CcCompilationContextInfo.Builder(ruleContext)
- .addIncludeDir(PathFragment.create("."))
- .addDefines(
- computeAllLinkstampDefines(
- labelReplacement,
- outputReplacement,
- additionalLinkstampDefines,
- cppConfiguration,
- fdoBuildStamp,
- codeCoverageEnabled))
- .build();
return CompileBuildVariables.setupVariablesOrReportRuleError(
ruleContext,
@@ -164,7 +152,6 @@ public class CppLinkstampCompileHelper {
/* gcnoFile= */ null,
/* dwoFile= */ null,
/* ltoIndexingFile= */ null,
- ccCompilationContextInfo,
buildInfoHeaderArtifacts
.stream()
.map(Artifact::getExecPathString)
@@ -176,6 +163,17 @@ public class CppLinkstampCompileHelper {
fdoBuildStamp,
/* dotdFileExecPath= */ null,
/* variablesExtensions= */ ImmutableList.of(),
- /* additionalBuildVariables= */ ImmutableMap.of());
+ /* additionalBuildVariables= */ ImmutableMap.of(),
+ /* directModuleMaps= */ ImmutableList.of(),
+ /* includeDirs= */ ImmutableList.of(PathFragment.create(".")),
+ /* quoteIncludeDirs= */ ImmutableList.of(),
+ /* systemIncludeDirs= */ ImmutableList.of(),
+ computeAllLinkstampDefines(
+ labelReplacement,
+ outputReplacement,
+ additionalLinkstampDefines,
+ cppConfiguration,
+ fdoBuildStamp,
+ codeCoverageEnabled));
}
}