aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/cpp
diff options
context:
space:
mode:
authorGravatar hlopko <hlopko@google.com>2018-05-03 09:43:25 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-05-03 09:44:32 -0700
commiteec0317f53bcf11c5554472ac7811351a9150561 (patch)
treebcae28c52d74c91417a7c3042eab17c439301365 /src/main/java/com/google/devtools/build/lib/rules/cpp
parentac91a767cb77d332a7b5074b52e2cf0b8e9adaf8 (diff)
Do not pass compilation context to compile build variables
Since we want to expose creation of compile build variables to Skylark, it's better if we don't pass provider into the construction, but plain data. RELNOTES: None. PiperOrigin-RevId: 195265117
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/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));
}
}