From 4fcfb53f7b35388c4455d7b0c6cbf53fd95f808b Mon Sep 17 00:00:00 2001 From: Yi-Yo Chiang Date: Fri, 18 Jun 2021 19:35:39 +0800 Subject: [PATCH 1/2] android/androidmk.go: Calls *RequiredModuleNames() to get required modules Instead of writing commonProperties.*Required as LOCAL_*REQUIRED_MODULES, call android.Module.*RequiredModuleNames() to retrieve list of required, so that the required modules can be modified by overriding the interface method. Bug: 191369319 Test: Presubmit Change-Id: I61fcb82496dcc06831fb42f5af1b53f01999a8d1 --- android/androidmk.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/android/androidmk.go b/android/androidmk.go index 557e7bac8..f032f1bd4 100644 --- a/android/androidmk.go +++ b/android/androidmk.go @@ -486,9 +486,9 @@ func (a *AndroidMkEntries) fillInEntries(ctx fillInEntriesContext, mod blueprint if a.Include == "" { a.Include = "$(BUILD_PREBUILT)" } - a.Required = append(a.Required, amod.commonProperties.Required...) - a.Host_required = append(a.Host_required, amod.commonProperties.Host_required...) - a.Target_required = append(a.Target_required, amod.commonProperties.Target_required...) + a.Required = append(a.Required, mod.(Module).RequiredModuleNames()...) + a.Host_required = append(a.Host_required, mod.(Module).HostRequiredModuleNames()...) + a.Target_required = append(a.Target_required, mod.(Module).TargetRequiredModuleNames()...) for _, distString := range a.GetDistForGoals(mod) { fmt.Fprintf(&a.header, distString) From c7e044f53100ac5d5eeecebb662a37d789b7c7e8 Mon Sep 17 00:00:00 2001 From: Yi-Yo Chiang Date: Fri, 18 Jun 2021 19:44:24 +0800 Subject: [PATCH 2/2] cc/cc.go: Support per-image-variation "required" Support "core" and "recovery" variants for now. Might add more image types if needed. Bug: 191369319 Test: Presubmit Test: Inspect out/soong/Android-*.mk Change-Id: Iebab29ed5d6d8fe9c66b6d6e56e00246d10c36b3 --- cc/cc.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/cc/cc.go b/cc/cc.go index 7aec7f21a..1ee113765 100644 --- a/cc/cc.go +++ b/cc/cc.go @@ -354,6 +354,24 @@ type BaseProperties struct { // can depend on libraries that are not exported by the APEXes and use private symbols // from the exported libraries. Test_for []string `android:"arch_variant"` + + Target struct { + Platform struct { + // List of modules required by the core variant. + Required []string `android:"arch_variant"` + + // List of modules not required by the core variant. + Exclude_required []string `android:"arch_variant"` + } `android:"arch_variant"` + + Recovery struct { + // List of modules required by the recovery variant. + Required []string `android:"arch_variant"` + + // List of modules not required by the recovery variant. + Exclude_required []string `android:"arch_variant"` + } `android:"arch_variant"` + } `android:"arch_variant"` } type VendorProperties struct { @@ -865,6 +883,18 @@ func (c *Module) HiddenFromMake() bool { return c.Properties.HideFromMake } +func (c *Module) RequiredModuleNames() []string { + required := android.CopyOf(c.ModuleBase.RequiredModuleNames()) + if c.ImageVariation().Variation == android.CoreVariation { + required = append(required, c.Properties.Target.Platform.Required...) + required = removeListFromList(required, c.Properties.Target.Platform.Exclude_required) + } else if c.InRecovery() { + required = append(required, c.Properties.Target.Recovery.Required...) + required = removeListFromList(required, c.Properties.Target.Recovery.Exclude_required) + } + return android.FirstUniqueStrings(required) +} + func (c *Module) Toc() android.OptionalPath { if c.linker != nil { if library, ok := c.linker.(libraryInterface); ok {