diff options
author | 2017-04-26 21:30:50 +0200 | |
---|---|---|
committer | 2017-04-27 11:17:55 +0200 | |
commit | ce33ab7a49126a513d7d5a6bc16f86154d9a85b6 (patch) | |
tree | fac0eff07298229cc7547122e92e80fd3715427e /src/main/java/com/google/devtools/build/lib/rules/MakeVariableProvider.java | |
parent | 46da1fca1b3b0b4cd4eb28c4ec4f3cb1b5a22dd4 (diff) |
Give RuleContext the ability to add Make Variables
This CL also makes CcToolchain responsible for adding the sysroot to CC_FLAGS.
PiperOrigin-RevId: 154329746
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/MakeVariableProvider.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/MakeVariableProvider.java | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/MakeVariableProvider.java b/src/main/java/com/google/devtools/build/lib/rules/MakeVariableProvider.java index 1c56c20bfb..15d4998c7f 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/MakeVariableProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/MakeVariableProvider.java @@ -15,34 +15,37 @@ package com.google.devtools.build.lib.rules; import com.google.common.collect.ImmutableMap; -import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; -import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; -import java.util.TreeMap; +import com.google.devtools.build.lib.packages.ClassObjectConstructor; +import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; +import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; /** Provides access to make variables from the current fragments. */ +@SkylarkModule(name = "MakeVariables", doc = "Make variables exposed by the current target.") @Immutable -public final class MakeVariableProvider implements TransitiveInfoProvider { +public final class MakeVariableProvider extends SkylarkClassObject + implements TransitiveInfoProvider { + public static final String SKYLARK_NAME = "MakeVariableInfo"; + + public static final ClassObjectConstructor SKYLARK_CONSTRUCTOR = + new NativeClassObjectConstructor(SKYLARK_NAME) {}; + private final ImmutableMap<String, String> makeVariables; public MakeVariableProvider(ImmutableMap<String, String> makeVariables) { + super(SKYLARK_CONSTRUCTOR, ImmutableMap.<String, Object>of()); this.makeVariables = makeVariables; } + @SkylarkCallable( + name = "make_variables", + doc = "Returns the make variables defined by this target.", + structField = true + ) public ImmutableMap<String, String> getMakeVariables() { return makeVariables; } - - public static ImmutableMap<String, String> getToolchainMakeVariables( - RuleContext ruleContext, String attributeName) { - // Cannot be an ImmutableMap.Builder because we want to support duplicate keys - TreeMap<String, String> result = new TreeMap<>(); - for (MakeVariableProvider provider : - ruleContext.getPrerequisites(attributeName, Mode.TARGET, MakeVariableProvider.class)) { - result.putAll(provider.getMakeVariables()); - } - - return ImmutableMap.copyOf(result); - } } |