summaryrefslogtreecommitdiff
path: root/java/builder.go
diff options
context:
space:
mode:
Diffstat (limited to 'java/builder.go')
-rw-r--r--java/builder.go46
1 files changed, 32 insertions, 14 deletions
diff --git a/java/builder.go b/java/builder.go
index 5d84d0b43..6a5772583 100644
--- a/java/builder.go
+++ b/java/builder.go
@@ -19,6 +19,7 @@ package java
// functions.
import (
+ "fmt"
"path/filepath"
"strconv"
"strings"
@@ -68,6 +69,8 @@ var (
}, map[string]*remoteexec.REParams{
"$javaTemplate": &remoteexec.REParams{
Labels: map[string]string{"type": "compile", "lang": "java", "compiler": "javac"},
+ Inputs: []string{"${config.JavacCmd}"},
+ RSPFiles: []string{"${out}.rsp", "${javacREClasspathDeps}"},
ExecStrategy: "${config.REJavacExecStrategy}",
Platform: map[string]string{remoteexec.PoolKey: "${config.REJavaPool}"},
},
@@ -86,7 +89,7 @@ var (
Platform: map[string]string{remoteexec.PoolKey: "${config.REJavaPool}"},
},
}, []string{"javacFlags", "bootClasspath", "classpath", "processorpath", "processor", "srcJars", "srcJarDir",
- "outDir", "annoDir", "annoSrcJar", "javaVersion"}, nil)
+ "outDir", "annoDir", "annoSrcJar", "javaVersion"}, []string{"javacREClasspathDeps"})
_ = pctx.VariableFunc("kytheCorpus",
func(ctx android.PackageVarContext) string { return ctx.Config().XrefCorpusName() })
@@ -601,8 +604,35 @@ func transformJavaToClasses(ctx android.ModuleContext, outputFile android.Writab
annoDir = filepath.Join(shardDir, annoDir)
}
rule := javac
+ args := map[string]string{
+ "javacFlags": flags.javacFlags,
+ "bootClasspath": bootClasspath,
+ "classpath": classpathArg,
+ "processorpath": flags.processorPath.FormJavaClassPath("-processorpath"),
+ "processor": processor,
+ "srcJars": strings.Join(srcJars.Strings(), " "),
+ "srcJarDir": android.PathForModuleOut(ctx, intermediatesDir, srcJarDir).String(),
+ "outDir": android.PathForModuleOut(ctx, intermediatesDir, outDir).String(),
+ "annoDir": android.PathForModuleOut(ctx, intermediatesDir, annoDir).String(),
+ "annoSrcJar": annoSrcJar.String(),
+ "javaVersion": flags.javaVersion.String(),
+ }
+
if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_JAVAC") {
rule = javacRE
+
+ // Write the classpath deps to a file that can be passed as an input to javacRE.
+ // Skip the shardIdx if the java library is unsharded
+ shardIdxSuffix := strconv.Itoa(shardIdx)
+ if shardIdx == -1 {
+ shardIdxSuffix = ""
+ }
+ javacREClasspathDepsFile := outputFile.ReplaceExtension(ctx, fmt.Sprintf("javacre.classpathdeps%v", shardIdxSuffix))
+ android.WriteFileRule(ctx, javacREClasspathDepsFile, strings.Join(javacClasspath.Strings(), ",")) // The classpath jars are an implicit dep of javacRE
+ args["javacREClasspathDeps"] = javacREClasspathDepsFile.String()
+
+ // Add the deps file to the implicit inputs
+ deps = append(deps, javacREClasspathDepsFile)
}
ctx.Build(pctx, android.BuildParams{
Rule: rule,
@@ -611,19 +641,7 @@ func transformJavaToClasses(ctx android.ModuleContext, outputFile android.Writab
ImplicitOutput: annoSrcJar,
Inputs: srcFiles,
Implicits: deps,
- Args: map[string]string{
- "javacFlags": flags.javacFlags,
- "bootClasspath": bootClasspath,
- "classpath": classpathArg,
- "processorpath": flags.processorPath.FormJavaClassPath("-processorpath"),
- "processor": processor,
- "srcJars": strings.Join(srcJars.Strings(), " "),
- "srcJarDir": android.PathForModuleOut(ctx, intermediatesDir, srcJarDir).String(),
- "outDir": android.PathForModuleOut(ctx, intermediatesDir, outDir).String(),
- "annoDir": android.PathForModuleOut(ctx, intermediatesDir, annoDir).String(),
- "annoSrcJar": annoSrcJar.String(),
- "javaVersion": flags.javaVersion.String(),
- },
+ Args: args,
})
}