diff options
Diffstat (limited to 'java/kotlin.go')
-rw-r--r-- | java/kotlin.go | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/java/kotlin.go b/java/kotlin.go index 3e5cec04c..ce79bae16 100644 --- a/java/kotlin.go +++ b/java/kotlin.go @@ -118,7 +118,7 @@ func kotlinCompile(ctx android.ModuleContext, outputFile android.WritablePath, }) } -var kapt = pctx.AndroidRemoteStaticRule("kapt", android.RemoteRuleSupports{Goma: true}, +var kaptStubs = pctx.AndroidRemoteStaticRule("kaptStubs", android.RemoteRuleSupports{Goma: true}, blueprint.RuleParams{ Command: `rm -rf "$srcJarDir" "$kotlinBuildFile" "$kaptDir" && ` + `mkdir -p "$srcJarDir" "$kaptDir/sources" "$kaptDir/classes" && ` + @@ -133,13 +133,12 @@ var kapt = pctx.AndroidRemoteStaticRule("kapt", android.RemoteRuleSupports{Goma: `-P plugin:org.jetbrains.kotlin.kapt3:classes=$kaptDir/classes ` + `-P plugin:org.jetbrains.kotlin.kapt3:stubs=$kaptDir/stubs ` + `-P plugin:org.jetbrains.kotlin.kapt3:correctErrorTypes=true ` + - `-P plugin:org.jetbrains.kotlin.kapt3:aptMode=stubsAndApt ` + + `-P plugin:org.jetbrains.kotlin.kapt3:aptMode=stubs ` + `-P plugin:org.jetbrains.kotlin.kapt3:javacArguments=$encodedJavacFlags ` + `$kaptProcessorPath ` + `$kaptProcessor ` + `-Xbuild-file=$kotlinBuildFile && ` + - `${config.SoongZipCmd} -jar -o $out -C $kaptDir/sources -D $kaptDir/sources && ` + - `${config.SoongZipCmd} -jar -o $classesJarOut -C $kaptDir/classes -D $kaptDir/classes && ` + + `${config.SoongZipCmd} -jar -o $out -C $kaptDir/stubs -D $kaptDir/stubs && ` + `rm -rf "$srcJarDir"`, CommandDeps: []string{ "${config.KotlincCmd}", @@ -197,13 +196,14 @@ func kotlinKapt(ctx android.ModuleContext, srcJarOutputFile, resJarOutputFile an kotlinName := filepath.Join(ctx.ModuleDir(), ctx.ModuleSubDir(), ctx.ModuleName()) kotlinName = strings.ReplaceAll(kotlinName, "/", "__") + // First run kapt to generate .java stubs from .kt files + kaptStubsJar := android.PathForModuleOut(ctx, "kapt", "stubs.jar") ctx.Build(pctx, android.BuildParams{ - Rule: kapt, - Description: "kapt", - Output: srcJarOutputFile, - ImplicitOutput: resJarOutputFile, - Inputs: srcFiles, - Implicits: deps, + Rule: kaptStubs, + Description: "kapt stubs", + Output: kaptStubsJar, + Inputs: srcFiles, + Implicits: deps, Args: map[string]string{ "classpath": flags.kotlincClasspath.FormJavaClassPath(""), "kotlincFlags": flags.kotlincFlags, @@ -219,6 +219,11 @@ func kotlinKapt(ctx android.ModuleContext, srcJarOutputFile, resJarOutputFile an "classesJarOut": resJarOutputFile.String(), }, }) + + // Then run turbine to perform annotation processing on the stubs and any .java srcFiles. + javaSrcFiles := srcFiles.FilterByExt(".java") + turbineSrcJars := append(android.Paths{kaptStubsJar}, srcJars...) + TurbineApt(ctx, srcJarOutputFile, resJarOutputFile, javaSrcFiles, turbineSrcJars, flags) } // kapt converts a list of key, value pairs into a base64 encoded Java serialization, which is what kapt expects. |