Merge "Remove saveToBazelConfigFile" into main
diff --git a/aconfig/codegen/aconfig_declarations_group.go b/aconfig/codegen/aconfig_declarations_group.go
index 33c20cd..13daf47 100644
--- a/aconfig/codegen/aconfig_declarations_group.go
+++ b/aconfig/codegen/aconfig_declarations_group.go
@@ -39,11 +39,6 @@
android.DefaultableModuleBase
properties AconfigDeclarationsGroupProperties
-
- aconfigDeclarationNames []string
- intermediateCacheOutputPaths android.Paths
- javaSrcjars android.Paths
- modeInfos map[string]android.ModeInfo
}
type AconfigDeclarationsGroupProperties struct {
@@ -76,53 +71,45 @@
ctx.AddDependency(ctx.Module(), rustAconfigLibraryTag, adg.properties.Rust_aconfig_libraries...)
}
-func (adg *AconfigDeclarationsGroup) VisitDeps(ctx android.ModuleContext) {
- adg.modeInfos = make(map[string]android.ModeInfo)
+func (adg *AconfigDeclarationsGroup) GenerateAndroidBuildActions(ctx android.ModuleContext) {
+ modeInfos := make(map[string]android.ModeInfo)
+ var aconfigDeclarationNames []string
+ var intermediateCacheOutputPaths android.Paths
+ var javaSrcjars android.Paths
ctx.VisitDirectDeps(func(dep android.Module) {
tag := ctx.OtherModuleDependencyTag(dep)
if provider, ok := android.OtherModuleProvider(ctx, dep, android.CodegenInfoProvider); ok {
// aconfig declaration names and cache files are collected for all aconfig library dependencies
- adg.aconfigDeclarationNames = append(adg.aconfigDeclarationNames, provider.AconfigDeclarations...)
- adg.intermediateCacheOutputPaths = append(adg.intermediateCacheOutputPaths, provider.IntermediateCacheOutputPaths...)
+ aconfigDeclarationNames = append(aconfigDeclarationNames, provider.AconfigDeclarations...)
+ intermediateCacheOutputPaths = append(intermediateCacheOutputPaths, provider.IntermediateCacheOutputPaths...)
switch tag {
case aconfigDeclarationsGroupTag:
// Will retrieve outputs from another language codegen modules when support is added
- adg.javaSrcjars = append(adg.javaSrcjars, provider.Srcjars...)
- maps.Copy(adg.modeInfos, provider.ModeInfos)
+ javaSrcjars = append(javaSrcjars, provider.Srcjars...)
+ maps.Copy(modeInfos, provider.ModeInfos)
case javaAconfigLibraryTag:
- adg.javaSrcjars = append(adg.javaSrcjars, provider.Srcjars...)
- maps.Copy(adg.modeInfos, provider.ModeInfos)
+ javaSrcjars = append(javaSrcjars, provider.Srcjars...)
+ maps.Copy(modeInfos, provider.ModeInfos)
case ccAconfigLibraryTag:
- maps.Copy(adg.modeInfos, provider.ModeInfos)
+ maps.Copy(modeInfos, provider.ModeInfos)
case rustAconfigLibraryTag:
- maps.Copy(adg.modeInfos, provider.ModeInfos)
+ maps.Copy(modeInfos, provider.ModeInfos)
}
}
})
-}
-func (adg *AconfigDeclarationsGroup) GenerateAndroidBuildActions(ctx android.ModuleContext) {
- adg.VisitDeps(ctx)
- adg.aconfigDeclarationNames = android.FirstUniqueStrings(adg.aconfigDeclarationNames)
- adg.intermediateCacheOutputPaths = android.FirstUniquePaths(adg.intermediateCacheOutputPaths)
+ aconfigDeclarationNames = android.FirstUniqueStrings(aconfigDeclarationNames)
+ intermediateCacheOutputPaths = android.FirstUniquePaths(intermediateCacheOutputPaths)
android.SetProvider(ctx, android.CodegenInfoProvider, android.CodegenInfo{
- AconfigDeclarations: adg.aconfigDeclarationNames,
- IntermediateCacheOutputPaths: adg.intermediateCacheOutputPaths,
- Srcjars: adg.javaSrcjars,
- ModeInfos: adg.modeInfos,
+ AconfigDeclarations: aconfigDeclarationNames,
+ IntermediateCacheOutputPaths: intermediateCacheOutputPaths,
+ Srcjars: javaSrcjars,
+ ModeInfos: modeInfos,
})
- ctx.SetOutputFiles(adg.intermediateCacheOutputPaths, "")
- ctx.SetOutputFiles(adg.javaSrcjars, ".srcjars")
-}
-
-func (adg *AconfigDeclarationsGroup) Srcjars() android.Paths {
- return adg.javaSrcjars
-}
-
-func (adg *AconfigDeclarationsGroup) AconfigDeclarations() []string {
- return adg.aconfigDeclarationNames
+ ctx.SetOutputFiles(intermediateCacheOutputPaths, "")
+ ctx.SetOutputFiles(javaSrcjars, ".srcjars")
}
diff --git a/aconfig/codegen/java_aconfig_library.go b/aconfig/codegen/java_aconfig_library.go
index 9f42e21..673ac2a 100644
--- a/aconfig/codegen/java_aconfig_library.go
+++ b/aconfig/codegen/java_aconfig_library.go
@@ -15,8 +15,6 @@
package codegen
import (
- "fmt"
-
"android/soong/android"
"android/soong/java"
@@ -80,7 +78,7 @@
// Get the values that came from the global RELEASE_ACONFIG_VALUE_SETS flag
declarationsModules := ctx.GetDirectDepsWithTag(declarationsTag)
if len(declarationsModules) != 1 {
- panic(fmt.Errorf("Exactly one aconfig_declarations property required"))
+ panic("Exactly one aconfig_declarations property required")
}
declarations, _ := android.OtherModuleProvider(ctx, declarationsModules[0], android.AconfigDeclarationsProviderKey)
@@ -133,10 +131,6 @@
return srcJarPath, declarations.IntermediateCacheOutputPath
}
-func (callbacks *JavaAconfigDeclarationsLibraryCallbacks) AconfigDeclarations() *string {
- return proptools.StringPtr(callbacks.properties.Aconfig_declarations)
-}
-
func isModeSupported(mode string) bool {
return android.InList(mode, aconfigSupportedModes)
}
diff --git a/android/selects_test.go b/android/selects_test.go
index 6f980ce..3093deb 100644
--- a/android/selects_test.go
+++ b/android/selects_test.go
@@ -778,6 +778,27 @@
my_string_list: &[]string{"a.cpp", "b.cpp", "c.cpp"},
},
},
+ {
+ name: "Test AppendSimpleValue",
+ bp: `
+ my_module_type {
+ name: "foo",
+ my_string_list: ["a.cpp"] + select(soong_config_variable("my_namespace", "my_variable"), {
+ "a": ["a.cpp"],
+ "b": ["b.cpp"],
+ default: ["c.cpp"],
+ }),
+ }
+ `,
+ vendorVars: map[string]map[string]string{
+ "selects_test": {
+ "append_to_string_list": "foo.cpp",
+ },
+ },
+ provider: selectsTestProvider{
+ my_string_list: &[]string{"a.cpp", "c.cpp", "foo.cpp"},
+ },
+ },
}
for _, tc := range testCases {
@@ -892,6 +913,10 @@
}
func (p *selectsMockModule) GenerateAndroidBuildActions(ctx ModuleContext) {
+ toAppend := ctx.Config().VendorConfig("selects_test").String("append_to_string_list")
+ if toAppend != "" {
+ p.properties.My_string_list.AppendSimpleValue([]string{toAppend})
+ }
SetProvider(ctx, selectsTestProviderKey, selectsTestProvider{
my_bool: optionalToPtr(p.properties.My_bool.Get(ctx)),
my_string: optionalToPtr(p.properties.My_string.Get(ctx)),
diff --git a/android/testing.go b/android/testing.go
index 6518f4a..6fb2997 100644
--- a/android/testing.go
+++ b/android/testing.go
@@ -1014,10 +1014,18 @@
return normalizeStringMapRelativeToTop(m.config, m.module.VariablesForTests())
}
-// OutputFiles calls OutputFileProducer.OutputFiles on the encapsulated module, exits the test
-// immediately if there is an error and otherwise returns the result of calling Paths.RelativeToTop
+// OutputFiles first checks if module base outputFiles property has any output
+// files can be used to return.
+// If not, it calls OutputFileProducer.OutputFiles on the
+// encapsulated module, exits the test immediately if there is an error and
+// otherwise returns the result of calling Paths.RelativeToTop
// on the returned Paths.
func (m TestingModule) OutputFiles(t *testing.T, tag string) Paths {
+ // TODO: add non-empty-string tag case and remove OutputFileProducer part
+ if tag == "" && m.module.base().outputFiles.DefaultOutputFiles != nil {
+ return m.module.base().outputFiles.DefaultOutputFiles.RelativeToTop()
+ }
+
producer, ok := m.module.(OutputFileProducer)
if !ok {
t.Fatalf("%q must implement OutputFileProducer\n", m.module.Name())
diff --git a/cc/compiler.go b/cc/compiler.go
index 6916394..d8446fb 100644
--- a/cc/compiler.go
+++ b/cc/compiler.go
@@ -172,12 +172,6 @@
Target_api *string
}
- Debug, Release struct {
- // list of module-specific flags that will be used for C and C++ compiles in debug or
- // release builds
- Cflags []string `android:"arch_variant"`
- } `android:"arch_variant"`
-
Target struct {
Vendor, Product struct {
// list of source files that should only be used in vendor or
@@ -479,11 +473,6 @@
ctx.ModuleErrorf("%s", err)
}
- CheckBadCompilerFlags(ctx, "release.cflags", compiler.Properties.Release.Cflags)
-
- // TODO: debug
- flags.Local.CFlags = append(flags.Local.CFlags, esc(compiler.Properties.Release.Cflags)...)
-
if !ctx.DeviceConfig().BuildBrokenClangCFlags() && len(compiler.Properties.Clang_cflags) != 0 {
ctx.PropertyErrorf("clang_cflags", "property is deprecated, see Changes.md file")
} else {
diff --git a/cc/lto.go b/cc/lto.go
index 60eb4d6..4444152 100644
--- a/cc/lto.go
+++ b/cc/lto.go
@@ -54,6 +54,9 @@
// Use -fwhole-program-vtables cflag.
Whole_program_vtables *bool
+
+ // Use --lto-O0 flag.
+ Lto_O0 *bool
}
type lto struct {
@@ -106,12 +109,8 @@
ltoCFlags := []string{"-flto=thin", "-fsplit-lto-unit"}
var ltoLdFlags []string
- // The module did not explicitly turn on LTO. Only leverage LTO's
- // better dead code elimination and CFG simplification, but do
- // not perform costly optimizations for a balance between compile
- // time, binary size and performance.
- // Apply the same for Eng builds as well.
- if !lto.ThinLTO() || ctx.Config().Eng() {
+ // Do not perform costly LTO optimizations for Eng builds.
+ if Bool(lto.Properties.Lto_O0) || ctx.Config().Eng() {
ltoLdFlags = append(ltoLdFlags, "-Wl,--lto-O0")
}