summaryrefslogtreecommitdiff
path: root/java/java.go
diff options
context:
space:
mode:
author Przemyslaw Szczepaniak <pszczepaniak@google.com> 2018-03-21 10:16:19 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2018-03-21 10:16:19 +0000
commit170ab730ecd6c53b49e9bb9e98a0c1663ceca6ef (patch)
treedef42306fea2fd469d0248bc7da3a67ee00657a6 /java/java.go
parent28c68b9a760f437cae88709c382be2ca475a02e9 (diff)
parent66c0c4067f8a70847eaa37273671aa8fe4203f1d (diff)
Merge "Add support for renamed kotlin stdlib."
Diffstat (limited to 'java/java.go')
-rw-r--r--java/java.go24
1 files changed, 23 insertions, 1 deletions
diff --git a/java/java.go b/java/java.go
index 5f5225c4d..125fde1ec 100644
--- a/java/java.go
+++ b/java/java.go
@@ -83,6 +83,10 @@ type CompilerProperties struct {
// ext, and framework for device targets)
No_framework_libs *bool
+ // Use renamed kotlin stdlib (com.android.kotlin.*). This allows kotlin usage without colliding
+ // with app-provided kotlin stdlib.
+ Renamed_kotlin_stdlib *bool
+
// list of module-specific flags that will be used for javac compiles
Javacflags []string `android:"arch_variant"`
@@ -810,6 +814,7 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path
// won't emit any classes for them.
flags.kotlincFlags = "-no-stdlib"
+
if ctx.Device() {
flags.kotlincFlags += " -no-jdk"
}
@@ -830,9 +835,15 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path
// Make javac rule depend on the kotlinc rule
flags.classpath = append(flags.classpath, kotlinJar)
+
// Jar kotlin classes into the final jar after javac
jars = append(jars, kotlinJar)
- jars = append(jars, deps.kotlinStdlib...)
+
+ // Don't add kotlin-stdlib if using (on-device) renamed stdlib
+ // (it's expected to be on device bootclasspath)
+ if !proptools.Bool(j.properties.Renamed_kotlin_stdlib) {
+ jars = append(jars, deps.kotlinStdlib...)
+ }
}
// Store the list of .java files that was passed to javac
@@ -952,6 +963,17 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path
outputFile = combinedJar
}
+ // Use renamed kotlin standard library?
+ if srcFiles.HasExt(".kt") && proptools.Bool(j.properties.Renamed_kotlin_stdlib) {
+ jarjarFile := android.PathForModuleOut(ctx, "kotlin-renamed", jarName)
+ TransformJarJar(ctx, jarjarFile, outputFile,
+ android.PathForSource(ctx, "external/kotlinc/jarjar-rules.txt"))
+ outputFile = jarjarFile
+ if ctx.Failed() {
+ return
+ }
+ }
+
if j.properties.Jarjar_rules != nil {
jarjar_rules := android.PathForModuleSrc(ctx, *j.properties.Jarjar_rules)
// Transform classes.jar into classes-jarjar.jar