Add HINT_FROM_SOONG option for ninja weight list
If this option is set, Soong generates ninja weight list including
modules in HugeModulesList in allowlists.go
Test: m --ninja_weight_source=soong
Bug: 273282046
Change-Id: Id92b7f9f9e8152c1c46ae071c5821a479cf47bce
diff --git a/ui/build/config.go b/ui/build/config.go
index 3fb38d7..9664548 100644
--- a/ui/build/config.go
+++ b/ui/build/config.go
@@ -134,6 +134,8 @@
EVENLY_DISTRIBUTED
// ninja uses an external custom weight list
EXTERNAL_FILE
+ // ninja uses a prioritized module list from Soong
+ HINT_FROM_SOONG
)
const srcDirFileCheck = "build/soong/root.bp"
@@ -319,6 +321,10 @@
ret.totalRAM = detectTotalRAM(ctx)
ret.parseArgs(ctx, args)
+
+ if ret.ninjaWeightListSource == HINT_FROM_SOONG {
+ ret.environ.Set("SOONG_GENERATES_NINJA_HINT", "true")
+ }
// Make sure OUT_DIR is set appropriately
if outDir, ok := ret.environ.Get("OUT_DIR"); ok {
ret.environ.Set("OUT_DIR", filepath.Clean(outDir))
@@ -551,6 +557,8 @@
return smpb.BuildConfig_EVENLY_DISTRIBUTED.Enum()
case EXTERNAL_FILE:
return smpb.BuildConfig_EXTERNAL_FILE.Enum()
+ case HINT_FROM_SOONG:
+ return smpb.BuildConfig_HINT_FROM_SOONG.Enum()
default:
return smpb.BuildConfig_NOT_USED.Enum()
}
@@ -834,6 +842,8 @@
c.ninjaWeightListSource = EVENLY_DISTRIBUTED
} else if source == "not_used" {
c.ninjaWeightListSource = NOT_USED
+ } else if source == "soong" {
+ c.ninjaWeightListSource = HINT_FROM_SOONG
} else if strings.HasPrefix(source, "file,") {
c.ninjaWeightListSource = EXTERNAL_FILE
filePath := strings.TrimPrefix(source, "file,")