Add support for PRODUCT_RELEASE_CONFIG_MAPS
This allows product config to determine what build flags are present in
a product's build, as well as their value.
As product config moves to a declarative specification, this can be
handled with less unnecessary work.
Bug: b/302593603
Test: manual
Change-Id: If6ae19e3da8471eaba8d6e048769f8ac6b244155
diff --git a/ui/build/config.go b/ui/build/config.go
index e581e8f..84568f8 100644
--- a/ui/build/config.go
+++ b/ui/build/config.go
@@ -120,6 +120,9 @@
includeTags []string
sourceRootDirs []string
+ productReleaseConfigMaps string
+ productReleaseConfigMapsLoaded bool
+
// Data source to write ninja weight list
ninjaWeightListSource NinjaWeightListSource
}
@@ -950,6 +953,9 @@
}
func (c *configImpl) Environment() *Environment {
+ if c.productReleaseConfigMapsLoaded {
+ c.environ.Set("PRODUCT_RELEASE_CONFIG_MAPS", c.productReleaseConfigMaps)
+ }
return c.environ
}
diff --git a/ui/build/dumpvars.go b/ui/build/dumpvars.go
index efe7478..360d0da 100644
--- a/ui/build/dumpvars.go
+++ b/ui/build/dumpvars.go
@@ -92,6 +92,20 @@
}
defer tool.Finish()
+ releaseConfigVars := []string{
+ "PRODUCT_RELEASE_CONFIG_MAPS",
+ }
+
+ if !config.productReleaseConfigMapsLoaded {
+ // Get the PRODUCT_RELEASE_CONFIG_MAPS for this product, to avoid polluting the environment
+ // when we run product config to get the rest of the make vars.
+ config.productReleaseConfigMapsLoaded = true
+ releaseMapVars, err := dumpMakeVars(ctx, config, goals, releaseConfigVars, false, "")
+ if err != nil {
+ ctx.Fatalln("Error getting PRODUCT_RELEASE_CONFIG_MAPS:", err)
+ }
+ config.productReleaseConfigMaps = releaseMapVars["PRODUCT_RELEASE_CONFIG_MAPS"]
+ }
cmd := Command(ctx, config, "dumpvars",
config.PrebuiltBuildTool("ckati"),
"-f", "build/make/core/config.mk",
@@ -191,6 +205,9 @@
"TARGET_BUILD_APPS",
"TARGET_BUILD_UNBUNDLED",
+ // Additional release config maps
+ "PRODUCT_RELEASE_CONFIG_MAPS",
+
// compiler wrappers set up by make
"CC_WRAPPER",
"CXX_WRAPPER",