aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar jcater <jcater@google.com>2018-04-24 08:07:43 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-24 08:11:10 -0700
commita392ebafb8aedf85ace36e3a0565874d44139b5e (patch)
tree8765a18b9a1b203d46370d7aab5f2d0c44902b45 /src/main/java/com
parent0e86686e3b1769213f70fef08047946d3d29db29 (diff)
Ensure make variables from the CcToolchainProvider end up in the
TemplateVariableInfo. PiperOrigin-RevId: 194088329
Diffstat (limited to 'src/main/java/com')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfigurationMakeVariableContext.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java13
2 files changed, 18 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationMakeVariableContext.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationMakeVariableContext.java
index 24ce6aa211..0e2cee9dff 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationMakeVariableContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationMakeVariableContext.java
@@ -76,10 +76,16 @@ public class ConfigurationMakeVariableContext implements TemplateContext {
Iterable<? extends MakeVariableSupplier> extraMakeVariableSuppliers) {
this.allMakeVariableSuppliers =
ImmutableList.<MakeVariableSupplier>builder()
+ // These should be in priority order:
+ // 1) extra suppliers passed in (assume the caller knows what they are doing)
+ // 2) variables from the command-line
+ // 3) package-level overrides (ie, vardef)
+ // 4) variables from the rule (and thus the toolchains)
+ // 5) variables from the global configuration
.addAll(Preconditions.checkNotNull(extraMakeVariableSuppliers))
- .add(new MapBackedMakeVariableSupplier(ruleMakeVariables))
.add(new MapBackedMakeVariableSupplier(configuration.getCommandLineBuildVariables()))
.add(new MapBackedMakeVariableSupplier(pkg.getMakeEnvironment()))
+ .add(new MapBackedMakeVariableSupplier(ruleMakeVariables))
.add(new MapBackedMakeVariableSupplier(configuration.getGlobalMakeEnvironment()))
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java
index 5475261c1e..cfd703b2c5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java
@@ -575,7 +575,8 @@ public class CcToolchain implements RuleConfiguredTargetFactory {
configuration.isHostConfiguration());
TemplateVariableInfo templateVariableInfo =
- createMakeVariableProvider(cppConfiguration, sysroot, ruleContext.getRule().getLocation());
+ createMakeVariableProvider(
+ cppConfiguration, ccProvider, sysroot, ruleContext.getRule().getLocation());
RuleConfiguredTargetBuilder builder =
new RuleConfiguredTargetBuilder(ruleContext)
@@ -821,11 +822,19 @@ public class CcToolchain implements RuleConfiguredTargetFactory {
}
private TemplateVariableInfo createMakeVariableProvider(
- CppConfiguration cppConfiguration, PathFragment sysroot, Location location) {
+ CppConfiguration cppConfiguration,
+ CcToolchainProvider toolchainProvider,
+ PathFragment sysroot,
+ Location location) {
HashMap<String, String> makeVariables =
new HashMap<>(cppConfiguration.getAdditionalMakeVariables());
+ // Add make variables from the toolchainProvider, also.
+ ImmutableMap.Builder<String, String> ccProviderMakeVariables = new ImmutableMap.Builder<>();
+ toolchainProvider.addGlobalMakeVariables(ccProviderMakeVariables);
+ makeVariables.putAll(ccProviderMakeVariables.build());
+
// Overwrite the CC_FLAGS variable to include sysroot, if it's available.
if (sysroot != null) {
String sysrootFlag = "--sysroot=" + sysroot;