aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/MakeVariableProvider.java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2017-04-26 21:30:50 +0200
committerGravatar Vladimir Moskva <vladmos@google.com>2017-04-27 11:17:55 +0200
commitce33ab7a49126a513d7d5a6bc16f86154d9a85b6 (patch)
treefac0eff07298229cc7547122e92e80fd3715427e /src/main/java/com/google/devtools/build/lib/rules/MakeVariableProvider.java
parent46da1fca1b3b0b4cd4eb28c4ec4f3cb1b5a22dd4 (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.java35
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);
- }
}