diff options
author | 2017-11-29 14:39:14 -0800 | |
---|---|---|
committer | 2017-11-29 14:41:27 -0800 | |
commit | 59317a350ce54d8f883c359b620d6b9505c2b3b4 (patch) | |
tree | 8a418974f6d5065c31709f7674c06cdb3288038b /src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java | |
parent | 485c32b71bac0e049f7f5735541c27b67112a92c (diff) |
Add C++ Make variables to cc_binary, cc_library, and cc_test automatically when
Make variables are derived from toolchain.
This will allow c++ targets to use c++ Make variables once platforms are
activated without declaring an explicit dependency on the c++ toolchain.
PiperOrigin-RevId: 177365568
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java index 627428cb30..5ad409bd86 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java @@ -25,6 +25,7 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ExecutionRequirements; import com.google.devtools.build.lib.actions.ParameterFile.ParameterFileType; import com.google.devtools.build.lib.analysis.ConfiguredTarget; +import com.google.devtools.build.lib.analysis.MakeVariableSupplier.MapBackedMakeVariableSupplier; import com.google.devtools.build.lib.analysis.OutputGroupProvider; import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder; import com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory; @@ -168,10 +169,20 @@ public abstract class CcBinary implements RuleConfiguredTargetFactory { public static ConfiguredTarget init(CppSemantics semantics, RuleContext ruleContext, boolean fake) throws InterruptedException, RuleErrorException { ruleContext.checkSrcsSamePackage(true); - ruleContext.initConfigurationMakeVariableContext(new CcFlagsSupplier(ruleContext)); CcCommon common = new CcCommon(ruleContext); CcToolchainProvider ccToolchain = common.getToolchain(); + + if (CppHelper.shouldUseToolchainForMakeVariables(ruleContext)) { + ImmutableMap.Builder<String, String> toolchainMakeVariables = ImmutableMap.builder(); + ccToolchain.addGlobalMakeVariables(toolchainMakeVariables); + ruleContext.initConfigurationMakeVariableContext( + new MapBackedMakeVariableSupplier(toolchainMakeVariables.build()), + new CcFlagsSupplier(ruleContext)); + } else { + ruleContext.initConfigurationMakeVariableContext(new CcFlagsSupplier(ruleContext)); + } + FdoSupportProvider fdoSupport = common.getFdoSupport(); FeatureConfiguration featureConfiguration = CcCommon.configureFeatures(ruleContext, ccToolchain); |