aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-09-27 21:20:50 +0000
committerGravatar Yun Peng <pcloudy@google.com>2016-09-28 08:28:12 +0000
commit93fdac06d436a2e6088a307bf896dbb39fb5cc22 (patch)
treeeca940d96e739d9605dd89e14ab2ba822b795eb6 /src/main
parentae3b6a93cd342d900e93a47efb9bbf0f1cd227f2 (diff)
patch bootclasspath to allow javac to compile lambdas and method references in android_* targets (behind existing flag).
-- MOS_MIGRATED_REVID=134453743
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java17
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java2
2 files changed, 17 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
index 11d64c95a8..82885b6915 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java
@@ -23,6 +23,7 @@ import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.ResourceSet;
import com.google.devtools.build.lib.analysis.AnalysisUtils;
+import com.google.devtools.build.lib.analysis.FileProvider;
import com.google.devtools.build.lib.analysis.FilesToRunProvider;
import com.google.devtools.build.lib.analysis.OutputGroupProvider;
import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode;
@@ -521,13 +522,25 @@ public class AndroidCommon {
classJar = ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_LIBRARY_CLASS_JAR);
idlHelper = new AndroidIdlHelper(ruleContext, classJar);
+
+ ImmutableList<Artifact> bootclasspath;
+ if (getAndroidConfig(ruleContext).desugarJava8()) {
+ bootclasspath = ImmutableList.<Artifact>builder()
+ .addAll(ruleContext.getPrerequisite("$desugar_java8_extra_bootclasspath", Mode.HOST)
+ .getProvider(FileProvider.class)
+ .getFilesToBuild())
+ .add(AndroidSdkProvider.fromRuleContext(ruleContext).getAndroidJar())
+ .build();
+ } else {
+ bootclasspath =
+ ImmutableList.of(AndroidSdkProvider.fromRuleContext(ruleContext).getAndroidJar());
+ }
JavaTargetAttributes.Builder attributes =
javaCommon
.initCommon(
idlHelper.getIdlGeneratedJavaSources(),
androidSemantics.getJavacArguments(ruleContext))
- .setBootClassPath(
- ImmutableList.of(AndroidSdkProvider.fromRuleContext(ruleContext).getAndroidJar()));
+ .setBootClassPath(bootclasspath);
JavaCompilationArtifacts.Builder artifactsBuilder = new JavaCompilationArtifacts.Builder();
ImmutableList.Builder<Artifact> jarsProducedForRuntime = ImmutableList.builder();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
index e4b98f7d18..7a1d515b60 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
@@ -542,6 +542,8 @@ public final class AndroidRuleClasses {
.value(env.getToolsLabel("//third_party/java/jarjar:jarjar_bin")))
.add(attr("$idlclass", LABEL).cfg(HOST).exec()
.value(env.getToolsLabel("//tools/android:IdlClass")))
+ .add(attr("$desugar_java8_extra_bootclasspath", LABEL).cfg(HOST)
+ .value(env.getToolsLabel("//tools/android:desugar_java8_extra_bootclasspath")))
.build();
}