Refactor errorprone support to reduce duplication
Use a helper function to set up errorprone and javac compiles. Test: m -j checkbuild Test: m -j RUN_ERROR_PRONE=true Change-Id: Icef3a5e1b359487eea3c3306d3d5763dab912b38
This commit is contained in:
@@ -137,36 +137,8 @@ type javaBuilderFlags struct {
|
|||||||
func TransformJavaToClasses(ctx android.ModuleContext, srcFiles, srcFileLists android.Paths,
|
func TransformJavaToClasses(ctx android.ModuleContext, srcFiles, srcFileLists android.Paths,
|
||||||
flags javaBuilderFlags, deps android.Paths) android.ModuleOutPath {
|
flags javaBuilderFlags, deps android.Paths) android.ModuleOutPath {
|
||||||
|
|
||||||
classDir := android.PathForModuleOut(ctx, "classes")
|
return transformJavaToClasses(ctx, srcFiles, srcFileLists, flags, deps,
|
||||||
annoDir := android.PathForModuleOut(ctx, "anno")
|
"classes-compiled.jar", "", "javac", javac)
|
||||||
classJar := android.PathForModuleOut(ctx, "classes-compiled.jar")
|
|
||||||
|
|
||||||
javacFlags := flags.javacFlags
|
|
||||||
if len(srcFileLists) > 0 {
|
|
||||||
javacFlags += " " + android.JoinWithPrefix(srcFileLists.Strings(), "@")
|
|
||||||
}
|
|
||||||
|
|
||||||
deps = append(deps, srcFileLists...)
|
|
||||||
deps = append(deps, flags.bootClasspath...)
|
|
||||||
deps = append(deps, flags.classpath...)
|
|
||||||
|
|
||||||
ctx.ModuleBuild(pctx, android.ModuleBuildParams{
|
|
||||||
Rule: javac,
|
|
||||||
Description: "javac",
|
|
||||||
Output: classJar,
|
|
||||||
Inputs: srcFiles,
|
|
||||||
Implicits: deps,
|
|
||||||
Args: map[string]string{
|
|
||||||
"javacFlags": javacFlags,
|
|
||||||
"bootClasspath": flags.bootClasspath.JavaBootClasspath(ctx.Device()),
|
|
||||||
"classpath": flags.classpath.JavaClasspath(),
|
|
||||||
"outDir": classDir.String(),
|
|
||||||
"annoDir": annoDir.String(),
|
|
||||||
"javaVersion": flags.javaVersion,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
return classJar
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunErrorProne(ctx android.ModuleContext, srcFiles, srcFileLists android.Paths,
|
func RunErrorProne(ctx android.ModuleContext, srcFiles, srcFileLists android.Paths,
|
||||||
@@ -177,38 +149,54 @@ func RunErrorProne(ctx android.ModuleContext, srcFiles, srcFileLists android.Pat
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
classDir := android.PathForModuleOut(ctx, "classes-errorprone")
|
return transformJavaToClasses(ctx, srcFiles, srcFileLists, flags, nil,
|
||||||
annoDir := android.PathForModuleOut(ctx, "anno-errorprone")
|
"classes-errorprone.list", "-errorprone", "errorprone", errorprone)
|
||||||
classFileList := android.PathForModuleOut(ctx, "classes-errorprone.list")
|
}
|
||||||
|
|
||||||
|
// transformJavaToClasses takes source files and converts them to a jar containing .class files.
|
||||||
|
// srcFiles is a list of paths to sources, srcFileLists is a list of paths to files that contain
|
||||||
|
// paths to sources. There is no dependency on the sources passed through srcFileLists, those
|
||||||
|
// must be added through the deps argument, which contains a list of paths that should be added
|
||||||
|
// as implicit dependencies. flags contains various command line flags to be passed to the
|
||||||
|
// compiler.
|
||||||
|
//
|
||||||
|
// This method may be used for different compilers, including javac and Error Prone. The rule
|
||||||
|
// argument specifies which command line to use and desc sets the description of the rule that will
|
||||||
|
// be printed at build time. The stem argument provides the file name of the output jar, and
|
||||||
|
// 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, srcFiles, srcFileLists android.Paths,
|
||||||
|
flags javaBuilderFlags, deps android.Paths, stem, suffix, desc string,
|
||||||
|
rule blueprint.Rule) android.ModuleOutPath {
|
||||||
|
|
||||||
|
outputFile := android.PathForModuleOut(ctx, stem)
|
||||||
|
|
||||||
javacFlags := flags.javacFlags
|
javacFlags := flags.javacFlags
|
||||||
if len(srcFileLists) > 0 {
|
if len(srcFileLists) > 0 {
|
||||||
javacFlags += " " + android.JoinWithPrefix(srcFileLists.Strings(), "@")
|
javacFlags += " " + android.JoinWithPrefix(srcFileLists.Strings(), "@")
|
||||||
}
|
}
|
||||||
|
|
||||||
var deps android.Paths
|
|
||||||
|
|
||||||
deps = append(deps, srcFileLists...)
|
deps = append(deps, srcFileLists...)
|
||||||
deps = append(deps, flags.bootClasspath...)
|
deps = append(deps, flags.bootClasspath...)
|
||||||
deps = append(deps, flags.classpath...)
|
deps = append(deps, flags.classpath...)
|
||||||
|
|
||||||
ctx.ModuleBuild(pctx, android.ModuleBuildParams{
|
ctx.ModuleBuild(pctx, android.ModuleBuildParams{
|
||||||
Rule: errorprone,
|
Rule: rule,
|
||||||
Description: "errorprone",
|
Description: desc,
|
||||||
Output: classFileList,
|
Output: outputFile,
|
||||||
Inputs: srcFiles,
|
Inputs: srcFiles,
|
||||||
Implicits: deps,
|
Implicits: deps,
|
||||||
Args: map[string]string{
|
Args: map[string]string{
|
||||||
"javacFlags": javacFlags,
|
"javacFlags": javacFlags,
|
||||||
"bootClasspath": flags.bootClasspath.JavaBootClasspath(ctx.Device()),
|
"bootClasspath": flags.bootClasspath.JavaBootClasspath(ctx.Device()),
|
||||||
"classpath": flags.classpath.JavaClasspath(),
|
"classpath": flags.classpath.JavaClasspath(),
|
||||||
"outDir": classDir.String(),
|
"outDir": android.PathForModuleOut(ctx, "classes"+suffix).String(),
|
||||||
"annoDir": annoDir.String(),
|
"annoDir": android.PathForModuleOut(ctx, "anno"+suffix).String(),
|
||||||
"javaVersion": flags.javaVersion,
|
"javaVersion": flags.javaVersion,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
return classFileList
|
return outputFile
|
||||||
}
|
}
|
||||||
|
|
||||||
func TransformResourcesToJar(ctx android.ModuleContext, jarArgs []string,
|
func TransformResourcesToJar(ctx android.ModuleContext, jarArgs []string,
|
||||||
|
Reference in New Issue
Block a user