diff options
author | Jaewoong Jung <jungjw@google.com> | 2019-05-13 09:23:20 -0700 |
---|---|---|
committer | Jaewoong Jung <jungjw@google.com> | 2019-05-15 15:46:26 -0700 |
commit | a24af3ba207d0b5e965aad8a65689bf9a29db393 (patch) | |
tree | 939456f90e51915eea8f041a8b5cca5ce99666f5 | |
parent | bc975e8b897eaff7e5729fc362c31d35e838526a (diff) | |
download | build_soong-a24af3ba207d0b5e965aad8a65689bf9a29db393.tar.gz build_soong-a24af3ba207d0b5e965aad8a65689bf9a29db393.tar.bz2 build_soong-a24af3ba207d0b5e965aad8a65689bf9a29db393.zip |
Turn off dex actions for sourceless modules.
Test: dexpreopt_test.go
Fixes: 129370564
Change-Id: Ic292f37c4f782b14fce625b85817b58c31d3f276
-rw-r--r-- | java/dexpreopt_test.go | 20 | ||||
-rw-r--r-- | java/java.go | 21 |
2 files changed, 31 insertions, 10 deletions
diff --git a/java/dexpreopt_test.go b/java/dexpreopt_test.go index 4af2f5c3..7d0109fd 100644 --- a/java/dexpreopt_test.go +++ b/java/dexpreopt_test.go @@ -52,14 +52,26 @@ func TestDexpreoptEnabled(t *testing.T) { }`, enabled: true, }, - { name: "app without sources", bp: ` android_app { name: "foo", }`, - // TODO(ccross): this should probably be false + enabled: false, + }, + { + name: "app with libraries", + bp: ` + android_app { + name: "foo", + static_libs: ["lib"], + } + + java_library { + name: "lib", + srcs: ["a.java"], + }`, enabled: true, }, { @@ -69,10 +81,8 @@ func TestDexpreoptEnabled(t *testing.T) { name: "foo", installable: true, }`, - // TODO(ccross): this should probably be false - enabled: true, + enabled: false, }, - { name: "static java library", bp: ` diff --git a/java/java.go b/java/java.go index 866b33c0..69195c80 100644 --- a/java/java.go +++ b/java/java.go @@ -962,7 +962,9 @@ func (j *Module) collectBuilderFlags(ctx android.ModuleContext, deps deps) javaB return flags } -func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path) { +func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) { + + hasSrcs := false j.exportAidlIncludeDirs = android.PathsForModuleSrc(ctx, j.deviceProperties.Aidl.Export_include_dirs) @@ -978,10 +980,15 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path } srcFiles = j.genSources(ctx, srcFiles, flags) + if len(srcFiles) > 0 { + hasSrcs = true + } srcJars := srcFiles.FilterByExt(".srcjar") srcJars = append(srcJars, deps.srcJars...) - srcJars = append(srcJars, extraSrcJars...) + if aaptSrcJar != nil { + srcJars = append(srcJars, aaptSrcJar) + } // Collect source files from compiledJavaSrcs, compiledSrcJars and filter out Exclude_srcs // that IDEInfo struct will use @@ -1170,7 +1177,10 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path j.resourceJar = resourceJars[0] } - jars = append(jars, deps.staticJars...) + if len(deps.staticJars) > 0 { + jars = append(jars, deps.staticJars...) + hasSrcs = true + } manifest := j.overrideManifest if !manifest.Valid() && j.properties.Manifest != nil { @@ -1281,7 +1291,8 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path j.implementationAndResourcesJar = implementationAndResourcesJar - if ctx.Device() && (Bool(j.properties.Installable) || Bool(j.deviceProperties.Compile_dex)) { + if ctx.Device() && hasSrcs && + (Bool(j.properties.Installable) || Bool(j.deviceProperties.Compile_dex)) { // Dex compilation var dexOutputFile android.ModuleOutPath dexOutputFile = j.compileDex(ctx, flags, outputFile, jarName) @@ -1514,7 +1525,7 @@ func (j *Library) GenerateAndroidBuildActions(ctx android.ModuleContext) { j.dexpreopter.isInstallable = Bool(j.properties.Installable) j.dexpreopter.uncompressedDex = shouldUncompressDex(ctx, &j.dexpreopter) j.deviceProperties.UncompressDex = j.dexpreopter.uncompressedDex - j.compile(ctx) + j.compile(ctx, nil) if (Bool(j.properties.Installable) || ctx.Host()) && !android.DirectlyInAnyApex(ctx, ctx.ModuleName()) { j.installFile = ctx.InstallFile(android.PathForModuleInstall(ctx, "framework"), |