diff options
author | gregce <gregce@google.com> | 2017-07-06 18:44:38 -0400 |
---|---|---|
committer | John Cater <jcater@google.com> | 2017-07-07 07:08:19 -0400 |
commit | 490b0956e6cc8449072f3010c5197d9d6c621d09 (patch) | |
tree | 93e46e560d7ba8cb974e2a87124282056a9e5ff5 /src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java | |
parent | 5ba65a5c00f18a5ebd677ce10693b453736915f9 (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.java | 22 |
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. + ); } |