Support Javac sharding in Soong.
Test: m clean && m -j java and java_test.go Change-Id: I110a0ff029448d3319aed2788d25d90a6c1a7fa0
This commit is contained in:
@@ -19,6 +19,8 @@ package java
|
||||
// functions.
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/google/blueprint"
|
||||
@@ -211,12 +213,16 @@ func TransformKotlinToClasses(ctx android.ModuleContext, outputFile android.Writ
|
||||
})
|
||||
}
|
||||
|
||||
func TransformJavaToClasses(ctx android.ModuleContext, outputFile android.WritablePath,
|
||||
srcFiles, srcJars android.Paths,
|
||||
flags javaBuilderFlags, deps android.Paths) {
|
||||
func TransformJavaToClasses(ctx android.ModuleContext, outputFile android.WritablePath, shardIdx int,
|
||||
srcFiles, srcJars android.Paths, flags javaBuilderFlags, deps android.Paths) {
|
||||
|
||||
transformJavaToClasses(ctx, outputFile, srcFiles, srcJars, flags, deps,
|
||||
"javac", "javac", javac)
|
||||
// Compile java sources into .class files
|
||||
desc := "javac"
|
||||
if shardIdx >= 0 {
|
||||
desc += strconv.Itoa(shardIdx)
|
||||
}
|
||||
|
||||
transformJavaToClasses(ctx, outputFile, shardIdx, srcFiles, srcJars, flags, deps, "javac", desc, javac)
|
||||
}
|
||||
|
||||
func RunErrorProne(ctx android.ModuleContext, outputFile android.WritablePath,
|
||||
@@ -226,7 +232,7 @@ func RunErrorProne(ctx android.ModuleContext, outputFile android.WritablePath,
|
||||
ctx.ModuleErrorf("cannot build with Error Prone, missing external/error_prone?")
|
||||
}
|
||||
|
||||
transformJavaToClasses(ctx, outputFile, srcFiles, srcJars, flags, nil,
|
||||
transformJavaToClasses(ctx, outputFile, -1, srcFiles, srcJars, flags, nil,
|
||||
"errorprone", "errorprone", errorprone)
|
||||
}
|
||||
|
||||
@@ -275,7 +281,7 @@ func TransformJavaToHeaderClasses(ctx android.ModuleContext, outputFile android.
|
||||
// suffix will be appended to various intermediate files and directories to avoid collisions when
|
||||
// this function is called twice in the same module directory.
|
||||
func transformJavaToClasses(ctx android.ModuleContext, outputFile android.WritablePath,
|
||||
srcFiles, srcJars android.Paths,
|
||||
shardIdx int, srcFiles, srcJars android.Paths,
|
||||
flags javaBuilderFlags, deps android.Paths,
|
||||
intermediatesDir, desc string, rule blueprint.Rule) {
|
||||
|
||||
@@ -298,6 +304,15 @@ func transformJavaToClasses(ctx android.ModuleContext, outputFile android.Writab
|
||||
|
||||
deps = append(deps, flags.classpath...)
|
||||
|
||||
srcJarDir := "srcjars"
|
||||
outDir := "classes"
|
||||
annoDir := "anno"
|
||||
if shardIdx >= 0 {
|
||||
shardDir := "shard" + strconv.Itoa(shardIdx)
|
||||
srcJarDir = filepath.Join(shardDir, srcJarDir)
|
||||
outDir = filepath.Join(shardDir, outDir)
|
||||
annoDir = filepath.Join(shardDir, annoDir)
|
||||
}
|
||||
ctx.Build(pctx, android.BuildParams{
|
||||
Rule: rule,
|
||||
Description: desc,
|
||||
@@ -309,9 +324,9 @@ func transformJavaToClasses(ctx android.ModuleContext, outputFile android.Writab
|
||||
"bootClasspath": bootClasspath,
|
||||
"classpath": flags.classpath.FormJavaClassPath("-classpath"),
|
||||
"srcJars": strings.Join(srcJars.Strings(), " "),
|
||||
"srcJarDir": android.PathForModuleOut(ctx, intermediatesDir, "srcjars").String(),
|
||||
"outDir": android.PathForModuleOut(ctx, intermediatesDir, "classes").String(),
|
||||
"annoDir": android.PathForModuleOut(ctx, intermediatesDir, "anno").String(),
|
||||
"srcJarDir": android.PathForModuleOut(ctx, intermediatesDir, srcJarDir).String(),
|
||||
"outDir": android.PathForModuleOut(ctx, intermediatesDir, outDir).String(),
|
||||
"annoDir": android.PathForModuleOut(ctx, intermediatesDir, annoDir).String(),
|
||||
"javaVersion": flags.javaVersion,
|
||||
},
|
||||
})
|
||||
|
Reference in New Issue
Block a user