aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandroid-build-prod (mdb) <android-build-team-robot@google.com>2018-05-01 01:07:24 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2018-05-01 01:07:24 +0000
commit1873f392233c483e281016ab8c2a1ceeb5f3498e (patch)
treed43a3276dd9f7bb52011f6508ef23acdd4ef29f4
parentdf13054c2aa476ffde5dc3c489054c2f5212017f (diff)
parent89c31581a52e4534e1a726f49d700250d676e1a2 (diff)
downloadbuild_soong-1873f392233c483e281016ab8c2a1ceeb5f3498e.tar.gz
build_soong-1873f392233c483e281016ab8c2a1ceeb5f3498e.tar.bz2
build_soong-1873f392233c483e281016ab8c2a1ceeb5f3498e.zip
Merge "Use and export proguard flags from static dependencies"
-rw-r--r--java/aar.go19
-rw-r--r--java/androidmk.go3
-rw-r--r--java/app.go17
3 files changed, 36 insertions, 3 deletions
diff --git a/java/aar.go b/java/aar.go
index 16d82af4..47676fd9 100644
--- a/java/aar.go
+++ b/java/aar.go
@@ -25,6 +25,7 @@ import (
type AndroidLibraryDependency interface {
Dependency
ExportPackage() android.Path
+ ExportedProguardFlagFiles() android.Paths
}
func init() {
@@ -247,6 +248,12 @@ type AndroidLibrary struct {
androidLibraryProperties androidLibraryProperties
aarFile android.WritablePath
+
+ exportedProguardFlagFiles android.Paths
+}
+
+func (a *AndroidLibrary) ExportedProguardFlagFiles() android.Paths {
+ return a.exportedProguardFlagFiles
}
var _ AndroidLibraryDependency = (*AndroidLibrary)(nil)
@@ -279,6 +286,14 @@ func (a *AndroidLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext)
BuildAAR(ctx, a.aarFile, a.outputFile, a.manifestPath, a.rTxt, res)
ctx.CheckbuildFile(a.aarFile)
}
+
+ ctx.VisitDirectDeps(func(m android.Module) {
+ if lib, ok := m.(AndroidLibraryDependency); ok && ctx.OtherModuleDependencyTag(m) == staticLibTag {
+ a.exportedProguardFlagFiles = append(a.exportedProguardFlagFiles, lib.ExportedProguardFlagFiles()...)
+ }
+ })
+
+ a.exportedProguardFlagFiles = android.FirstUniquePaths(a.exportedProguardFlagFiles)
}
func AndroidLibraryFactory() android.Module {
@@ -327,6 +342,10 @@ func (a *AARImport) ExportPackage() android.Path {
return a.exportPackage
}
+func (a *AARImport) ExportedProguardFlagFiles() android.Paths {
+ return android.Paths{a.proguardFlags}
+}
+
func (a *AARImport) Prebuilt() *android.Prebuilt {
return &a.prebuilt
}
diff --git a/java/androidmk.go b/java/androidmk.go
index fc93cfb5..1e77d05f 100644
--- a/java/androidmk.go
+++ b/java/androidmk.go
@@ -244,7 +244,8 @@ func (a *AndroidLibrary) AndroidMk() android.AndroidMkData {
fmt.Fprintln(w, "LOCAL_SOONG_RESOURCE_EXPORT_PACKAGE :=", a.exportPackage.String())
fmt.Fprintln(w, "LOCAL_FULL_MANIFEST_FILE :=", a.manifestPath.String())
- fmt.Fprintln(w, "LOCAL_SOONG_EXPORT_PROGUARD_FLAGS :=", a.proguardOptionsFile.String())
+ fmt.Fprintln(w, "LOCAL_SOONG_EXPORT_PROGUARD_FLAGS :=",
+ strings.Join(a.exportedProguardFlagFiles.Strings(), " "))
fmt.Fprintln(w, "LOCAL_UNINSTALLABLE_MODULE := true")
fmt.Fprintln(w, "LOCAL_DEX_PREOPT := false")
})
diff --git a/java/app.go b/java/app.go
index dd83a0a7..1fdce129 100644
--- a/java/app.go
+++ b/java/app.go
@@ -63,6 +63,10 @@ type AndroidApp struct {
appProperties appProperties
}
+func (a *AndroidApp) ExportedProguardFlagFiles() android.Paths {
+ return nil
+}
+
var _ AndroidLibraryDependency = (*AndroidApp)(nil)
type certificate struct {
@@ -116,8 +120,17 @@ func (a *AndroidApp) GenerateAndroidBuildActions(ctx android.ModuleContext) {
// apps manifests are handled by aapt, don't let Module see them
a.properties.Manifest = nil
- a.Module.extraProguardFlagFiles = append(a.Module.extraProguardFlagFiles,
- a.proguardOptionsFile)
+ var staticLibProguardFlagFiles android.Paths
+ ctx.VisitDirectDeps(func(m android.Module) {
+ if lib, ok := m.(AndroidLibraryDependency); ok && ctx.OtherModuleDependencyTag(m) == staticLibTag {
+ staticLibProguardFlagFiles = append(staticLibProguardFlagFiles, lib.ExportedProguardFlagFiles()...)
+ }
+ })
+
+ staticLibProguardFlagFiles = android.FirstUniquePaths(staticLibProguardFlagFiles)
+
+ a.Module.extraProguardFlagFiles = append(a.Module.extraProguardFlagFiles, staticLibProguardFlagFiles...)
+ a.Module.extraProguardFlagFiles = append(a.Module.extraProguardFlagFiles, a.proguardOptionsFile)
if ctx.ModuleName() != "framework-res" {
a.Module.compile(ctx, a.aaptSrcJar)