From 772e21ba27c082bd8f66a80a3b1f8cc2f3f0ab07 Mon Sep 17 00:00:00 2001 From: LaMont Jones Date: Wed, 11 Oct 2023 17:58:14 +0000 Subject: [PATCH] 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 --- ui/build/config.go | 6 ++++++ ui/build/dumpvars.go | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/ui/build/config.go b/ui/build/config.go index e581e8fbb..84568f802 100644 --- a/ui/build/config.go +++ b/ui/build/config.go @@ -120,6 +120,9 @@ type configImpl struct { includeTags []string sourceRootDirs []string + productReleaseConfigMaps string + productReleaseConfigMapsLoaded bool + // Data source to write ninja weight list ninjaWeightListSource NinjaWeightListSource } @@ -950,6 +953,9 @@ func (c *configImpl) configureLocale(ctx Context) { } 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 efe747819..360d0daf8 100644 --- a/ui/build/dumpvars.go +++ b/ui/build/dumpvars.go @@ -92,6 +92,20 @@ func dumpMakeVars(ctx Context, config Config, goals, vars []string, write_soong_ } 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 @@ func runMakeProductConfig(ctx Context, config Config) { "TARGET_BUILD_APPS", "TARGET_BUILD_UNBUNDLED", + // Additional release config maps + "PRODUCT_RELEASE_CONFIG_MAPS", + // compiler wrappers set up by make "CC_WRAPPER", "CXX_WRAPPER",