aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
diff options
context:
space:
mode:
authorGravatar gregce <gregce@google.com>2017-07-06 18:44:38 -0400
committerGravatar John Cater <jcater@google.com>2017-07-07 07:08:19 -0400
commit490b0956e6cc8449072f3010c5197d9d6c621d09 (patch)
tree93e46e560d7ba8cb974e2a87124282056a9e5ff5 /src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
parent5ba65a5c00f18a5ebd677ce10693b453736915f9 (diff)
Factor out BuildConfigurationCollection.Transitions.getDynamicTransition.
This is a legacy dependency on the configuration transition table, which is only needed for static configurations. Dynamic configurations didn't actually use anything in that table: this was just a convenience interface that could have equally been defined somewhere else. So this cl defines it somewhere else. There's still one last dependency: Transitions.configurationHook. We'll tackle that in a followup cl. PiperOrigin-RevId: 161141650
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
index 8739918377..2396c3edbb 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
@@ -29,14 +29,19 @@ import static com.google.devtools.build.lib.syntax.Type.STRING_LIST;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.analysis.config.DynamicTransitionMapper;
+import com.google.devtools.build.lib.analysis.config.HostTransition;
+import com.google.devtools.build.lib.analysis.config.PatchTransition;
import com.google.devtools.build.lib.analysis.config.RunUnder;
import com.google.devtools.build.lib.analysis.constraints.EnvironmentRule;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.Attribute.LateBoundLabel;
import com.google.devtools.build.lib.packages.Attribute.LateBoundLabelList;
+import com.google.devtools.build.lib.packages.Attribute.Transition;
import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.RuleClass;
@@ -327,4 +332,21 @@ public class BaseRuleClasses {
.build();
}
}
+
+ /**
+ * Declares the implementations for {@link Attribute.ConfigurationTransition} enums.
+ *
+ * <p>We can't put this in {@link Attribute} because that's in the {@code lib.packages} package,
+ * which has no access to configuration classes.
+ *
+ * <p>New transitions should extend {@link PatchTransition}, which avoids the need for this map.
+ */
+ public static final ImmutableMap<Transition, Transition> DYNAMIC_TRANSITIONS_MAP =
+ ImmutableMap.of(
+ Attribute.ConfigurationTransition.NONE, DynamicTransitionMapper.SELF,
+ Attribute.ConfigurationTransition.NULL, DynamicTransitionMapper.SELF,
+ Attribute.ConfigurationTransition.HOST, HostTransition.INSTANCE
+ // Attribute.ConfigurationTransition.DATA is skipped because it's C++-specific.
+ // The C++ rule definitions handle its mapping.
+ );
}