diff options
| author | 2018-03-21 10:16:19 +0000 | |
|---|---|---|
| committer | 2018-03-21 10:16:19 +0000 | |
| commit | 170ab730ecd6c53b49e9bb9e98a0c1663ceca6ef (patch) | |
| tree | def42306fea2fd469d0248bc7da3a67ee00657a6 /java/java.go | |
| parent | 28c68b9a760f437cae88709c382be2ca475a02e9 (diff) | |
| parent | 66c0c4067f8a70847eaa37273671aa8fe4203f1d (diff) | |
Merge "Add support for renamed kotlin stdlib."
Diffstat (limited to 'java/java.go')
| -rw-r--r-- | java/java.go | 24 |
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 |