aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
index 895312c30f..5ec92b80be 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
@@ -35,13 +35,17 @@ import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
import com.google.devtools.build.lib.analysis.actions.ParameterFileWriteAction;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
+import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.packages.AspectDefinition;
import com.google.devtools.build.lib.packages.AspectParameters;
+import com.google.devtools.build.lib.packages.Attribute.LateBoundLabel;
+import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.NativeAspectClass;
+import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
import com.google.devtools.build.lib.rules.apple.AppleToolchain;
import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
@@ -72,11 +76,26 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
}
private static final Iterable<Attribute> DEPENDENT_ATTRIBUTES = ImmutableList.of(
- new Attribute("$jre_emul_lib", Mode.TARGET),
+ new Attribute(":jre_lib", Mode.TARGET),
new Attribute("deps", Mode.TARGET),
new Attribute("exports", Mode.TARGET),
new Attribute("runtime_deps", Mode.TARGET));
+ private static final Label JRE_CORE_LIB =
+ Label.parseAbsoluteUnchecked("//third_party/java/j2objc:jre_core_lib");
+
+ private static final Label JRE_EMUL_LIB =
+ Label.parseAbsoluteUnchecked("//third_party/java/j2objc:jre_emul_lib");
+
+ private static final LateBoundLabel<BuildConfiguration> JRE_LIB =
+ new LateBoundLabel<BuildConfiguration>(JRE_CORE_LIB, J2ObjcConfiguration.class) {
+ @Override
+ public Label resolve(Rule rule, AttributeMap attributes, BuildConfiguration configuration) {
+ return configuration.getFragment(J2ObjcConfiguration.class).explicitJreDeps()
+ ? JRE_CORE_LIB : JRE_EMUL_LIB;
+ }
+ };
+
/**
* Adds additional attribute aspects and attributes to the given AspectDefinition.Builder.
*/
@@ -110,8 +129,7 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
.add(attr("$jre_emul_jar", LABEL).cfg(HOST)
.value(Label.parseAbsoluteUnchecked(
toolsRepository + "//third_party/java/j2objc:jre_emul.jar")))
- .add(attr("$jre_emul_lib", LABEL)
- .value(Label.parseAbsoluteUnchecked("//third_party/java/j2objc:jre_emul_lib")))
+ .add(attr(":jre_lib", LABEL).value(JRE_LIB))
.add(attr("$xcrunwrapper", LABEL).cfg(HOST).exec()
.value(Label.parseAbsoluteUnchecked(
toolsRepository + "//tools/objc:xcrunwrapper")))