Support mechanism to select a specific version of module sdk prebuilt

This CL is scoped to cc_* module types. With trunk stable, we will have
multiple prebuilts of the cc modules in
prebuilts/module_sdk/art/<v>/host-exports/, and this CL introduces a
mechanism to use apex_contributions to select a specific versioned
prebuilt when building.

If a soong module is selected using apex_contributions, all rdeps will
get that soong module, which includes
- rdep soong modules which might be depending on it via Android.bp
- Soong's rule builder HostToolPath API

Implementation details: Create a new source_module_name property to
identify the root module. rdeps referring to the root module will get
redirected if necessary. This property also
becomes the stem, if `stem` is not set explicitly.

Bug: 322175508

Test: Added a unit test

Change-Id: Ic8725602c81999621fcb33ce2a57fe4b9751baa8
This commit is contained in:
Spandan Das
2024-01-19 00:22:22 +00:00
parent 1f4475cee1
commit 2b6dfb554d
4 changed files with 135 additions and 4 deletions

View File

@@ -1744,7 +1744,7 @@ func (ctx *moduleContextImpl) useClangLld(actx ModuleContext) bool {
}
func (ctx *moduleContextImpl) baseModuleName() string {
return ctx.mod.ModuleBase.BaseModuleName()
return ctx.mod.BaseModuleName()
}
func (ctx *moduleContextImpl) getVndkExtendsModuleName() string {
@@ -4173,6 +4173,18 @@ func (c *Module) Partition() string {
return ""
}
type sourceModuleName interface {
sourceModuleName() string
}
func (c *Module) BaseModuleName() string {
if smn, ok := c.linker.(sourceModuleName); ok && smn.sourceModuleName() != "" {
// if the prebuilt module sets a source_module_name in Android.bp, use that
return smn.sourceModuleName()
}
return c.ModuleBase.BaseModuleName()
}
var Bool = proptools.Bool
var BoolDefault = proptools.BoolDefault
var BoolPtr = proptools.BoolPtr