diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java index 544a03df21..d4cb75844f 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java +++ b/src/main/java/com/google/devtools/build/lib/rules/genrule/GenRuleBaseRule.java @@ -37,6 +37,9 @@ import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType; import com.google.devtools.build.lib.rules.MakeVariableProvider; import com.google.devtools.build.lib.rules.cpp.CppConfiguration; import com.google.devtools.build.lib.rules.cpp.CppRuleClasses; +import com.google.devtools.build.lib.rules.java.JavaImplicitAttributes; +import com.google.devtools.build.lib.rules.java.JavaSemantics; +import com.google.devtools.build.lib.rules.java.Jvm; import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.util.FileTypeSet; @@ -63,6 +66,22 @@ public class GenRuleBaseRule implements RuleDefinition { } }; + /** + * Late-bound dependency on the host JDK <i>iff</i> the genrule has make variables that need + * that rule. + */ + public static final Attribute.LateBoundLabel<BuildConfiguration> HOST_JDK = + new Attribute.LateBoundLabel<BuildConfiguration>( + JavaImplicitAttributes.JDK_LABEL, Jvm.class) { + @Override + public Label resolve(Rule rule, AttributeMap attributes, BuildConfiguration configuration) { + return attributes != null + && GenRuleBase.requiresJdk(attributes.get("cmd", Type.STRING)) + ? JavaSemantics.HOST_JDK.resolve(rule, attributes, configuration) + : null; + } + }; + @Override public RuleClass build( RuleClass.Builder builder, RuleDefinitionEnvironment env) { |