aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/java
diff options
context:
space:
mode:
authorGravatar Alex Humesky <ahumesky@google.com>2016-07-27 22:44:16 +0000
committerGravatar Adam Michael <ajmichael@google.com>2016-07-28 18:36:30 -0400
commit94c86135d05a1844263c59f3ce6b1c1917e0f4c8 (patch)
tree61a459484b9b9d3ac5395a09c2f160cdf135d80c /src/main/java/com/google/devtools/build/lib/rules/java
parent8643954b818547339e8055d0aa4867c1286ebca1 (diff)
*** Reason for rollback *** Causes a dependency cycle for java targets: [] *** Original change description *** Enable the Java launcher by default -- MOS_MIGRATED_REVID=128638289
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java17
2 files changed, 23 insertions, 9 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java
index 65049fef5f..0c787bc713 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaOptions.java
@@ -282,15 +282,12 @@ public class JavaOptions extends FragmentOptions {
)
public Label hostJavaLauncher;
- @Option(
- name = "java_launcher",
- defaultValue = "null",
- converter = LabelConverter.class,
- category = "semantics",
- help =
- "The Java launcher to use when building Java binaries. "
- + "The \"launcher\" attribute overrides this flag. "
- )
+ @Option(name = "java_launcher",
+ defaultValue = "null",
+ converter = LabelConverter.class,
+ category = "semantics",
+ help = "If enabled, a specific Java launcher is used. "
+ + "The \"launcher\" attribute overrides this flag. ")
public Label javaLauncher;
@Option(name = "proguard_top",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
index c2b5875f49..2e1435e0a1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
@@ -14,6 +14,7 @@
package com.google.devtools.build.lib.rules.java;
+import static com.google.devtools.build.lib.packages.BuildType.LABEL;
import static com.google.devtools.build.lib.packages.ImplicitOutputsFunction.fromTemplates;
import com.google.common.collect.ImmutableList;
@@ -142,6 +143,22 @@ public interface JavaSemantics {
}
};
+ /**
+ * Implementation for the :java_launcher attribute. Note that the Java launcher is disabled by
+ * default, so it returns null for the configuration-independent default value.
+ */
+ LateBoundLabel<BuildConfiguration> JAVA_LAUNCHER =
+ new LateBoundLabel<BuildConfiguration>(JavaConfiguration.class) {
+ @Override
+ public Label resolve(Rule rule, AttributeMap attributes, BuildConfiguration configuration) {
+ // don't read --java_launcher if this target overrides via a launcher attribute
+ if (attributes != null && attributes.isAttributeValueExplicitlySpecified("launcher")) {
+ return attributes.get("launcher", LABEL);
+ }
+ return configuration.getFragment(JavaConfiguration.class).getJavaLauncherLabel();
+ }
+ };
+
LateBoundLabelList<BuildConfiguration> JAVA_PLUGINS =
new LateBoundLabelList<BuildConfiguration>() {
@Override