diff options
Diffstat (limited to 'src/main')
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)); } } |