Merge "Bp2build support for app R8-related fields" into main am: 765beb237a am: 2e5deb49d6 am: f9f4265fd0 am: bd2606d1db am: b9f72f37fd

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

Change-Id: I09c883709cb01ffb6f3bf5d184eee089ec99f562
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Romain Jobredeaux
2023-09-01 00:45:18 +00:00
committed by Automerger Merge Worker
3 changed files with 121 additions and 27 deletions

View File

@@ -29,6 +29,7 @@ import (
"android/soong/bazel"
"android/soong/cc"
"android/soong/dexpreopt"
"android/soong/genrule"
"android/soong/tradefed"
)
@@ -1614,6 +1615,8 @@ type bazelAndroidAppAttributes struct {
Certificate bazel.LabelAttribute
Certificate_name bazel.StringAttribute
Manifest_values *manifestValueAttribute
Optimize *bool
Proguard_specs bazel.LabelListAttribute
}
// ConvertWithBp2build is used to convert android_app to Bazel.
@@ -1665,6 +1668,41 @@ func (a *AndroidApp) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
Manifest_values: manifestValues,
}
if !BoolDefault(a.dexProperties.Optimize.Enabled, true) {
appAttrs.Optimize = proptools.BoolPtr(false)
} else {
handCraftedFlags := ""
if Bool(a.dexProperties.Optimize.Ignore_warnings) {
handCraftedFlags += "-ignorewarning "
}
if !Bool(a.dexProperties.Optimize.Shrink) {
handCraftedFlags += "-dontshrink "
}
if !Bool(a.dexProperties.Optimize.Optimize) {
handCraftedFlags += "-dontoptimize "
}
if !Bool(a.dexProperties.Optimize.Obfuscate) {
handCraftedFlags += "-dontobfuscate "
}
appAttrs.Proguard_specs = bazel.MakeLabelListAttribute(android.BazelLabelForModuleSrc(ctx, a.dexProperties.Optimize.Proguard_flags_files))
if handCraftedFlags != "" {
generatedFlagFileRuleName := a.Name() + "_proguard_flags"
ctx.CreateBazelTargetModule(bazel.BazelTargetModuleProperties{
Rule_class: "genrule",
}, android.CommonAttributes{
Name: generatedFlagFileRuleName,
SkipData: proptools.BoolPtr(true),
}, &genrule.BazelGenruleAttributes{
Outs: []string{a.Name() + "_proguard.flags"},
Cmd: bazel.StringAttribute{
Value: proptools.StringPtr("echo " + handCraftedFlags + "> $(OUTS)"),
},
})
appAttrs.Proguard_specs.Add(bazel.MakeLabelAttribute(":" + generatedFlagFileRuleName))
}
}
props := bazel.BazelTargetModuleProperties{
Rule_class: "android_binary",
Bzl_load_location: "//build/bazel/rules/android:android_binary.bzl",