diff options
| author | 2017-11-02 13:28:15 -0700 | |
|---|---|---|
| committer | 2017-11-06 14:23:59 -0800 | |
| commit | 61eaedbddf6e5d3ac5afa85118d8f082e7f592d6 (patch) | |
| tree | fd17f539600801915e8b42f5d6ede1d75dfaf38f /java/builder.go | |
| parent | 9c7dcfd72c644d7ed41fba79accf13d8e6c8be2a (diff) | |
Support Javac sharding in Soong.
Test: m clean && m -j java and java_test.go
Change-Id: I110a0ff029448d3319aed2788d25d90a6c1a7fa0
Diffstat (limited to 'java/builder.go')
| -rw-r--r-- | java/builder.go | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/java/builder.go b/java/builder.go index 8b6eb9fa1..45e59a426 100644 --- a/java/builder.go +++ b/java/builder.go @@ -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) { + + // Compile java sources into .class files + desc := "javac" + if shardIdx >= 0 { + desc += strconv.Itoa(shardIdx) + } - transformJavaToClasses(ctx, outputFile, srcFiles, srcJars, flags, deps, - "javac", "javac", javac) + 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, }, }) |