Introduce vintf_fragment module type

Introduce a new vintf_fragment module type which handles vintf_fragment
files within Soong. This will help process to move vintf_fragment
handling logic from KATI to Soong. This change also introduces
vintf_fragment_modules property to mark dependency with vintf_fragment
modules.

Bug: 322089980
Test: m nothing --no-skip-soong-tests passed
Change-Id: I49607f42aeee3ded0ba7b078b903dc35f5d61637
This commit is contained in:
Kiyoung Kim
2024-08-12 11:15:19 +09:00
parent d0338d3565
commit faf6af31cd
6 changed files with 147 additions and 0 deletions

View File

@@ -111,6 +111,7 @@ type Module interface {
RequiredModuleNames(ctx ConfigAndErrorContext) []string
HostRequiredModuleNames() []string
TargetRequiredModuleNames() []string
VintfFragmentModuleNames(ctx ConfigAndErrorContext) []string
FilesToInstall() InstallPaths
PackagingSpecs() []PackagingSpec
@@ -497,6 +498,9 @@ type commonProperties struct {
// The team (defined by the owner/vendor) who owns the property.
Team *string `android:"path"`
// vintf_fragment Modules required from this module.
Vintf_fragment_modules proptools.Configurable[[]string] `android:"path"`
}
type distProperties struct {
@@ -1028,6 +1032,7 @@ func (m *ModuleBase) baseDepsMutator(ctx BottomUpMutatorContext) {
fullManifest := pv.DeviceArch != nil && pv.DeviceName != nil
if fullManifest {
addRequiredDeps(ctx)
addVintfFragmentDeps(ctx)
}
}
@@ -1105,6 +1110,16 @@ func addRequiredDeps(ctx BottomUpMutatorContext) {
}
}
var vintfDepTag = struct {
blueprint.BaseDependencyTag
InstallAlwaysNeededDependencyTag
}{}
func addVintfFragmentDeps(ctx BottomUpMutatorContext) {
mod := ctx.Module()
ctx.AddDependency(mod, vintfDepTag, mod.VintfFragmentModuleNames(ctx)...)
}
// AddProperties "registers" the provided props
// each value in props MUST be a pointer to a struct
func (m *ModuleBase) AddProperties(props ...interface{}) {
@@ -1597,6 +1612,10 @@ func (m *ModuleBase) TargetRequiredModuleNames() []string {
return m.base().commonProperties.Target_required
}
func (m *ModuleBase) VintfFragmentModuleNames(ctx ConfigAndErrorContext) []string {
return m.base().commonProperties.Vintf_fragment_modules.GetOrDefault(m.ConfigurableEvaluator(ctx), nil)
}
func (m *ModuleBase) InitRc() Paths {
return append(Paths{}, m.initRcPaths...)
}