diff options
author | Colin Cross <ccross@android.com> | 2015-04-13 14:02:52 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2015-04-20 13:55:27 -0700 |
commit | e7a9f3f7ed0718692a239f4c232dc1fe1346798a (patch) | |
tree | db6d42c78f8e495d77adfb6787f5651c47171344 /java | |
parent | 276284f577ea7ec29f7e78f8b23955a0b3b69032 (diff) | |
download | build_soong-e7a9f3f7ed0718692a239f4c232dc1fe1346798a.tar.gz build_soong-e7a9f3f7ed0718692a239f4c232dc1fe1346798a.tar.bz2 build_soong-e7a9f3f7ed0718692a239f4c232dc1fe1346798a.zip |
java: add one-off build logic for frameworks/base
framework.jar needs to compile against R.java and Manifest.java from
framework-res.apk. Rather than complicating the Blueprints properties
with values that will only be used once, add one-off logic to
collectDeps to extract the rJarSpec out of the framework-res module.
Change-Id: I1195b1b5e07badc583703479382ceba35300b8fd
Diffstat (limited to 'java')
-rw-r--r-- | java/builder.go | 8 | ||||
-rw-r--r-- | java/java.go | 14 |
2 files changed, 15 insertions, 7 deletions
diff --git a/java/builder.go b/java/builder.go index 94f67ebc..301613b3 100644 --- a/java/builder.go +++ b/java/builder.go @@ -111,19 +111,23 @@ func (j jarSpec) soongJarArgs() string { return "-C " + j.dir + " -l " + j.fileList } -func TransformJavaToClasses(ctx common.AndroidModuleContext, srcFiles []string, +func TransformJavaToClasses(ctx common.AndroidModuleContext, srcFiles []string, srcFileLists []string, flags javaBuilderFlags, deps []string) jarSpec { classDir := filepath.Join(common.ModuleOutDir(ctx), "classes") classFileList := filepath.Join(common.ModuleOutDir(ctx), "classes.list") + javacFlags := flags.javacFlags + common.JoinWithPrefix(srcFileLists, "@") + + deps = append(deps, srcFileLists...) + ctx.Build(pctx, blueprint.BuildParams{ Rule: javac, Outputs: []string{classFileList}, Inputs: srcFiles, Implicits: deps, Args: map[string]string{ - "javacFlags": flags.javacFlags, + "javacFlags": javacFlags, "bootClasspath": flags.bootClasspath, "classpath": flags.classpath, "outDir": classDir, diff --git a/java/java.go b/java/java.go index 215924bb..2a04f701 100644 --- a/java/java.go +++ b/java/java.go @@ -31,7 +31,6 @@ import ( // TODO: // Autogenerated files: -// AIDL // Proto // Renderscript // Post-jar passes: @@ -192,7 +191,7 @@ func (j *javaBase) aidlFlags(ctx common.AndroidModuleContext, aidlPreprocess str func (j *javaBase) collectDeps(ctx common.AndroidModuleContext) (classpath []string, bootClasspath string, classJarSpecs, resourceJarSpecs []jarSpec, aidlPreprocess string, - aidlIncludeDirs []string) { + aidlIncludeDirs []string, srcFileLists []string) { ctx.VisitDirectDeps(func(module blueprint.Module) { otherName := ctx.OtherModuleName(module) @@ -205,6 +204,10 @@ func (j *javaBase) collectDeps(ctx common.AndroidModuleContext) (classpath []str classpath = append(classpath, javaDep.ClasspathFile()) classJarSpecs = append(classJarSpecs, javaDep.ClassJarSpecs()...) resourceJarSpecs = append(resourceJarSpecs, javaDep.ResourceJarSpecs()...) + } else if ctx.ModuleName() == "framework" && otherName == "framework-res" { + // framework.jar has a one-off dependency on the R.java and Manifest.java files + // generated by framework-res.apk + srcFileLists = append(srcFileLists, module.(*javaBase).module.(*AndroidApp).rJarSpec.fileList) } else { panic(fmt.Errorf("unknown dependency %q for %q", otherName, ctx.ModuleName())) } @@ -224,7 +227,8 @@ func (j *javaBase) collectDeps(ctx common.AndroidModuleContext) (classpath []str } }) - return classpath, bootClasspath, classJarSpecs, resourceJarSpecs, aidlPreprocess, aidlIncludeDirs + return classpath, bootClasspath, classJarSpecs, resourceJarSpecs, aidlPreprocess, + aidlIncludeDirs, srcFileLists } func (j *javaBase) GenerateAndroidBuildActions(ctx common.AndroidModuleContext) { @@ -237,7 +241,7 @@ func (j *javaBase) GenerateJavaBuildActions(ctx common.AndroidModuleContext) { common.ModuleSrcDir(ctx)) classpath, bootClasspath, classJarSpecs, resourceJarSpecs, aidlPreprocess, - aidlIncludeDirs := j.collectDeps(ctx) + aidlIncludeDirs, srcFileLists := j.collectDeps(ctx) var flags javaBuilderFlags @@ -271,7 +275,7 @@ func (j *javaBase) GenerateJavaBuildActions(ctx common.AndroidModuleContext) { if len(srcFiles) > 0 { // Compile java sources into .class files - classes := TransformJavaToClasses(ctx, srcFiles, flags, javacDeps) + classes := TransformJavaToClasses(ctx, srcFiles, srcFileLists, flags, javacDeps) if ctx.Failed() { return } |