diff options
author | Googler <noreply@google.com> | 2016-09-27 21:20:50 +0000 |
---|---|---|
committer | Yun Peng <pcloudy@google.com> | 2016-09-28 08:28:12 +0000 |
commit | 93fdac06d436a2e6088a307bf896dbb39fb5cc22 (patch) | |
tree | eca940d96e739d9605dd89e14ab2ba822b795eb6 /src/main | |
parent | ae3b6a93cd342d900e93a47efb9bbf0f1cd227f2 (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.java | 17 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java | 2 |
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(); } |