Merge "transitive r8 flags for installable {android,java}_libraries" into main am: d9569528bd am: 0b74fbb608

Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2812555

Change-Id: I1456be6b3d86fa9e55787112c5fa239a21b025cf
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Sam Delmerico
2023-11-01 16:32:34 +00:00
committed by Automerger Merge Worker
4 changed files with 96 additions and 56 deletions

View File

@@ -811,8 +811,11 @@ func (a *AndroidLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext)
a.linter.manifest = a.aapt.manifestPath
a.linter.resources = a.aapt.resourceFiles
a.Module.extraProguardFlagFiles = append(a.Module.extraProguardFlagFiles,
a.proguardOptionsFile)
proguardSpecInfo := a.collectProguardSpecInfo(ctx)
ctx.SetProvider(ProguardSpecInfoProvider, proguardSpecInfo)
a.exportedProguardFlagFiles = proguardSpecInfo.ProguardFlagsFiles.ToList()
a.extraProguardFlagFiles = append(a.extraProguardFlagFiles, a.exportedProguardFlagFiles...)
a.extraProguardFlagFiles = append(a.extraProguardFlagFiles, a.proguardOptionsFile)
var extraSrcJars android.Paths
var extraCombinedJars android.Paths
@@ -838,10 +841,6 @@ func (a *AndroidLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext)
ctx.CheckbuildFile(a.aarFile)
}
proguardSpecInfo := a.collectProguardSpecInfo(ctx)
ctx.SetProvider(ProguardSpecInfoProvider, proguardSpecInfo)
a.exportedProguardFlagFiles = proguardSpecInfo.ProguardFlagsFiles.ToList()
prebuiltJniPackages := android.Paths{}
ctx.VisitDirectDeps(func(module android.Module) {
if info, ok := ctx.OtherModuleProvider(module, JniPackageProvider).(JniPackageInfo); ok {

View File

@@ -300,6 +300,8 @@ func (d *dexer) r8Flags(ctx android.ModuleContext, flags javaBuilderFlags) (r8Fl
flagFiles = append(flagFiles, android.PathsForModuleSrc(ctx, opt.Proguard_flags_files)...)
flagFiles = android.FirstUniquePaths(flagFiles)
r8Flags = append(r8Flags, android.JoinWithPrefix(flagFiles.Strings(), "-include "))
r8Deps = append(r8Deps, flagFiles...)

View File

@@ -385,13 +385,53 @@ func TestProguardFlagsInheritanceStatic(t *testing.T) {
func TestProguardFlagsInheritance(t *testing.T) {
directDepFlagsFileName := "direct_dep.flags"
transitiveDepFlagsFileName := "transitive_dep.flags"
bp := `
topLevelModules := []struct {
name string
definition string
}{
{
name: "android_app",
definition: `
android_app {
name: "app",
static_libs: ["androidlib"], // this must be static_libs to initate dexing
platform_apis: true,
}
`,
},
{
name: "android_library",
definition: `
android_library {
name: "app",
static_libs: ["androidlib"], // this must be static_libs to initate dexing
installable: true,
optimize: {
enabled: true,
shrink: true,
},
}
`,
},
{
name: "java_library",
definition: `
java_library {
name: "app",
static_libs: ["androidlib"], // this must be static_libs to initate dexing
srcs: ["Foo.java"],
installable: true,
optimize: {
enabled: true,
shrink: true,
},
}
`,
},
}
bp := `
android_library {
name: "androidlib",
static_libs: ["app_dep"],
@@ -558,8 +598,9 @@ func TestProguardFlagsInheritance(t *testing.T) {
},
}
for _, topLevelModuleDef := range topLevelModules {
for _, tc := range testcases {
t.Run(tc.name, func(t *testing.T) {
t.Run(topLevelModuleDef.name+"-"+tc.name, func(t *testing.T) {
result := android.GroupFixturePreparers(
PrepareForTestWithJavaDefaultModules,
android.FixtureMergeMockFs(android.MockFS{
@@ -567,6 +608,7 @@ func TestProguardFlagsInheritance(t *testing.T) {
transitiveDepFlagsFileName: nil,
}),
).RunTestWithBp(t,
topLevelModuleDef.definition+
fmt.Sprintf(
bp,
tc.depType,
@@ -597,6 +639,7 @@ func TestProguardFlagsInheritance(t *testing.T) {
})
}
}
}
func TestProguardFlagsInheritanceAppImport(t *testing.T) {
bp := `
@@ -606,11 +649,6 @@ func TestProguardFlagsInheritanceAppImport(t *testing.T) {
platform_apis: true,
}
android_library {
name: "androidlib",
static_libs: ["aarimport"],
}
android_library_import {
name: "aarimport",
aars: ["import.aar"],

View File

@@ -697,6 +697,11 @@ func (j *Library) GenerateAndroidBuildActions(ctx android.ModuleContext) {
j.stem = proptools.StringDefault(j.overridableDeviceProperties.Stem, ctx.ModuleName())
proguardSpecInfo := j.collectProguardSpecInfo(ctx)
ctx.SetProvider(ProguardSpecInfoProvider, proguardSpecInfo)
j.exportedProguardFlagFiles = proguardSpecInfo.ProguardFlagsFiles.ToList()
j.extraProguardFlagFiles = append(j.extraProguardFlagFiles, j.exportedProguardFlagFiles...)
apexInfo := ctx.Provider(android.ApexInfoProvider).(android.ApexInfo)
if !apexInfo.IsForPlatform() {
j.hideApexVariantFromMake = true
@@ -741,10 +746,6 @@ func (j *Library) GenerateAndroidBuildActions(ctx android.ModuleContext) {
}
j.installFile = ctx.InstallFile(installDir, j.Stem()+".jar", j.outputFile, extraInstallDeps...)
}
proguardSpecInfo := j.collectProguardSpecInfo(ctx)
ctx.SetProvider(ProguardSpecInfoProvider, proguardSpecInfo)
j.exportedProguardFlagFiles = proguardSpecInfo.ProguardFlagsFiles.ToList()
}
func (j *Library) DepsMutator(ctx android.BottomUpMutatorContext) {