diff options
author | 2018-05-03 09:43:25 -0700 | |
---|---|---|
committer | 2018-05-03 09:44:32 -0700 | |
commit | eec0317f53bcf11c5554472ac7811351a9150561 (patch) | |
tree | bcae28c52d74c91417a7c3042eab17c439301365 /src/main/java/com/google/devtools/build/lib/rules/cpp | |
parent | ac91a767cb77d332a7b5074b52e2cf0b8e9adaf8 (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')
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)); } } |