Make the enabled property configurable
This allows using select statements with it. Ignore-AOSP-First: This needs to be in a topic with changes in interal-only repositories, I'll cherrypick to aosp after. Bug: 323382414 Test: m nothing --no-skip-soong-tests Change-Id: I6f3efaaa3d82505e38a91ee4ba0e18e404360191
This commit is contained in:
@@ -60,7 +60,7 @@ type Module interface {
|
||||
|
||||
base() *ModuleBase
|
||||
Disable()
|
||||
Enabled() bool
|
||||
Enabled(ctx ConfigAndErrorContext) bool
|
||||
Target() Target
|
||||
MultiTargets() []Target
|
||||
|
||||
@@ -287,7 +287,7 @@ type commonProperties struct {
|
||||
// but are not usually required (e.g. superceded by a prebuilt) should not be
|
||||
// disabled as that will prevent them from being built by the checkbuild target
|
||||
// and so prevent early detection of changes that have broken those modules.
|
||||
Enabled *bool `android:"arch_variant"`
|
||||
Enabled proptools.Configurable[bool] `android:"arch_variant,replace_instead_of_append"`
|
||||
|
||||
// Controls the visibility of this module to other modules. Allowable values are one or more of
|
||||
// these formats:
|
||||
@@ -1392,14 +1392,11 @@ func (m *ModuleBase) PartitionTag(config DeviceConfig) string {
|
||||
return partition
|
||||
}
|
||||
|
||||
func (m *ModuleBase) Enabled() bool {
|
||||
func (m *ModuleBase) Enabled(ctx ConfigAndErrorContext) bool {
|
||||
if m.commonProperties.ForcedDisabled {
|
||||
return false
|
||||
}
|
||||
if m.commonProperties.Enabled == nil {
|
||||
return !m.Os().DefaultDisabled
|
||||
}
|
||||
return *m.commonProperties.Enabled
|
||||
return m.commonProperties.Enabled.GetOrDefault(m.ConfigurableEvaluator(ctx), !m.Os().DefaultDisabled)
|
||||
}
|
||||
|
||||
func (m *ModuleBase) Disable() {
|
||||
@@ -1643,7 +1640,7 @@ func (m *ModuleBase) generateModuleTarget(ctx ModuleContext) {
|
||||
// not be created if the module is not exported to make.
|
||||
// Those could depend on the build target and fail to compile
|
||||
// for the current build target.
|
||||
if !ctx.Config().KatiEnabled() || !shouldSkipAndroidMkProcessing(a) {
|
||||
if !ctx.Config().KatiEnabled() || !shouldSkipAndroidMkProcessing(ctx, a) {
|
||||
allCheckbuildFiles = append(allCheckbuildFiles, a.checkbuildFiles...)
|
||||
}
|
||||
})
|
||||
@@ -1835,7 +1832,7 @@ func (m *ModuleBase) GenerateBuildActions(blueprintCtx blueprint.ModuleContext)
|
||||
checkDistProperties(ctx, fmt.Sprintf("dists[%d]", i), &m.distProperties.Dists[i])
|
||||
}
|
||||
|
||||
if m.Enabled() {
|
||||
if m.Enabled(ctx) {
|
||||
// ensure all direct android.Module deps are enabled
|
||||
ctx.VisitDirectDepsBlueprint(func(bm blueprint.Module) {
|
||||
if m, ok := bm.(Module); ok {
|
||||
@@ -2136,7 +2133,7 @@ func (m *ModuleBase) ConfigurableEvaluator(ctx ConfigAndErrorContext) proptools.
|
||||
}
|
||||
|
||||
func (e configurationEvalutor) PropertyErrorf(property string, fmt string, args ...interface{}) {
|
||||
e.ctx.OtherModulePropertyErrorf(e.m, property, fmt, args)
|
||||
e.ctx.OtherModulePropertyErrorf(e.m, property, fmt, args...)
|
||||
}
|
||||
|
||||
func (e configurationEvalutor) EvaluateConfiguration(condition proptools.ConfigurableCondition, property string) proptools.ConfigurableValue {
|
||||
@@ -2535,7 +2532,7 @@ func (c *buildTargetSingleton) GenerateBuildActions(ctx SingletonContext) {
|
||||
}
|
||||
osDeps := map[osAndCross]Paths{}
|
||||
ctx.VisitAllModules(func(module Module) {
|
||||
if module.Enabled() {
|
||||
if module.Enabled(ctx) {
|
||||
key := osAndCross{os: module.Target().Os, hostCross: module.Target().HostCross}
|
||||
osDeps[key] = append(osDeps[key], module.base().checkbuildFiles...)
|
||||
}
|
||||
|
Reference in New Issue
Block a user