summaryrefslogtreecommitdiff
path: root/java/builder.go
diff options
context:
space:
mode:
author Colin Cross <ccross@android.com> 2022-03-28 18:27:17 -0700
committer Colin Cross <ccross@android.com> 2022-04-04 16:42:46 -0700
commitc6ef4853704080b1340170c5c30046cc4dacd418 (patch)
tree22ad500fca98be74c1fe5c0de89ffa7bcb4a41b5 /java/builder.go
parentb5db4015997c61328a31793b0a621acdfeecbf84 (diff)
Use kapt stubs for kotlin header jar for javac
When compling kotlin code with annotation processors we are generating java stubs for the kotlin sources using kapt, and parsing them in turbine when running the annotation processors. Passing --output to turbine will also compile the stubs into a header jar that can be used as a dependency to javac, allowing the javac and kotlinc rules to run in parallel. The turbine-apt header jar can't be used as the header jar for downstream modules as it doesn't contain the kotlin metadata needed by kotlinc rules, so the kotlinc gen-jvm-abi plugin output is still used for the module's final header jar. Test: TestKapt Bug: 222095735 Change-Id: I82d0900f3dc30f3e3ebd7cab0693dfe741d9b955
Diffstat (limited to 'java/builder.go')
-rw-r--r--java/builder.go11
1 files changed, 7 insertions, 4 deletions
diff --git a/java/builder.go b/java/builder.go
index c0fadd42c..0f6876ecd 100644
--- a/java/builder.go
+++ b/java/builder.go
@@ -415,7 +415,7 @@ func TransformJavaToHeaderClasses(ctx android.ModuleContext, outputFile android.
}
// TurbineApt produces a rule to run annotation processors using turbine.
-func TurbineApt(ctx android.ModuleContext, outputSrcJar, outputResJar android.WritablePath,
+func TurbineApt(ctx android.ModuleContext, outputJar, outputSrcJar, outputResJar android.WritablePath,
srcFiles, srcJars android.Paths, flags javaBuilderFlags) {
turbineFlags, deps := turbineFlags(ctx, flags)
@@ -426,8 +426,9 @@ func TurbineApt(ctx android.ModuleContext, outputSrcJar, outputResJar android.Wr
turbineFlags += " " + flags.processorPath.FormTurbineClassPath("--processorpath ")
turbineFlags += " --processors " + strings.Join(flags.processors, " ")
- outputs := android.WritablePaths{outputSrcJar, outputResJar}
- outputFlags := "--gensrc_output " + outputSrcJar.String() + ".tmp " +
+ outputs := android.WritablePaths{outputJar, outputSrcJar, outputResJar}
+ outputFlags := "--output " + outputJar.String() + ".tmp " +
+ "--gensrc_output " + outputSrcJar.String() + ".tmp " +
"--resource_output " + outputResJar.String() + ".tmp"
rule := turbine
@@ -442,7 +443,9 @@ func TurbineApt(ctx android.ModuleContext, outputSrcJar, outputResJar android.Wr
if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_TURBINE") {
rule = turbineRE
args["implicits"] = strings.Join(deps.Strings(), ",")
- args["rbeOutputs"] = outputSrcJar.String() + ".tmp," + outputResJar.String() + ".tmp"
+ args["rbeOutputs"] = outputJar.String() + ".tmp," +
+ outputSrcJar.String() + ".tmp," +
+ outputResJar.String() + ".tmp"
}
ctx.Build(pctx, android.BuildParams{
Rule: rule,