diff options
author | 2018-04-24 08:07:43 -0700 | |
---|---|---|
committer | 2018-04-24 08:11:10 -0700 | |
commit | a392ebafb8aedf85ace36e3a0565874d44139b5e (patch) | |
tree | 8765a18b9a1b203d46370d7aab5f2d0c44902b45 /src/main/java/com | |
parent | 0e86686e3b1769213f70fef08047946d3d29db29 (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.java | 8 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java | 13 |
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; |