Miscellaneous fixes for java compiling

Remove java out directory before compiling to avoid incremental compile
issues.  Move the rspfile out of the out directory so it doesn't get
deleted.  cc->javac in the javac rule.  Don't call javac if there
are no source files.

Change-Id: I0bb06c214da54a587bd9e7c9d17caaf0ed1e595e
This commit is contained in:
Colin Cross 2015-04-10 15:41:49 -07:00
parent 9679302dfa
commit 8cf1334116
2 changed files with 15 additions and 11 deletions

View File

@ -37,10 +37,11 @@ var (
// this, all java rules write into separate directories and then a post-processing step lists
// the files in the the directory into a list file that later rules depend on (and sometimes
// read from directly using @<listfile>)
cc = pctx.StaticRule("javac",
javac = pctx.StaticRule("javac",
blueprint.RuleParams{
Command: `$javacCmd -encoding UTF-8 $javacFlags $bootClasspath $classpath ` +
`-extdirs "" -d $outDir @$out.rsp || ( rm -rf $outDir; exit 41 ) && ` +
Command: `rm -rf "$outDir" && mkdir -p "$outDir" && ` +
`$javacCmd -encoding UTF-8 $javacFlags $bootClasspath $classpath ` +
`-extdirs "" -d $outDir @$out.rsp || ( rm -rf "$outDir"; exit 41 ) && ` +
`find $outDir -name "*.class" > $out`,
Rspfile: "$out.rsp",
RspfileContent: "$in",
@ -112,10 +113,10 @@ func TransformJavaToClasses(ctx common.AndroidModuleContext, srcFiles []string,
flags javaBuilderFlags, deps []string) jarSpec {
classDir := filepath.Join(common.ModuleOutDir(ctx), "classes")
classFileList := filepath.Join(classDir, "classes.list")
classFileList := filepath.Join(common.ModuleOutDir(ctx), "classes.list")
ctx.Build(pctx, blueprint.BuildParams{
Rule: cc,
Rule: javac,
Outputs: []string{classFileList},
Inputs: srcFiles,
Implicits: deps,

View File

@ -257,14 +257,17 @@ func (j *javaBase) GenerateJavaBuildActions(ctx common.AndroidModuleContext) {
srcFiles = genSources(ctx, srcFiles, flags)
// Compile java sources into .class files
classes := TransformJavaToClasses(ctx, srcFiles, flags, javacDeps)
if ctx.Failed() {
return
if len(srcFiles) > 0 {
// Compile java sources into .class files
classes := TransformJavaToClasses(ctx, srcFiles, flags, javacDeps)
if ctx.Failed() {
return
}
classJarSpecs = append([]jarSpec{classes}, classJarSpecs...)
}
resourceJarSpecs = append(ResourceDirsToJarSpecs(ctx, j.properties.Resource_dirs), resourceJarSpecs...)
classJarSpecs = append([]jarSpec{classes}, classJarSpecs...)
manifest := j.properties.Manifest
if manifest != "" {
@ -294,7 +297,7 @@ func (j *javaBase) GenerateJavaBuildActions(ctx common.AndroidModuleContext) {
j.classpathFile = outputFile
if j.properties.Dex {
if j.properties.Dex && len(srcFiles) > 0 {
dxFlags := j.properties.Dxflags
if false /* emma enabled */ {
// If you instrument class files that have local variable debug information in