Use ContainsProperty to support default values

Instead of setting a string property to magic default value and then
checking for it later, call ctx.ContainsProperty to determine if it
was set.  Use the same method on the clang bool property, which
couldn't be set to a magic value.

blueprint's ModuleContext.ContainsProperty only works on a single
property, not on all arch variant properties -
ModuleContext.ContainsProperty("clang") will return false if
clang was not set but arch.arm.clang was set - so track which
properties were extended inside extendProperties, and override
ModuleContext.ContainsProperty in AndroidModuleContext to also
check the extended properties.

Change-Id: I03cbe71dc69344972e23d6c794da9be05e720c45
This commit is contained in:
Colin Cross
2015-03-26 16:14:04 -07:00
parent c940435029
commit 28d76590f1
3 changed files with 38 additions and 27 deletions

View File

@@ -113,6 +113,7 @@ func InitAndroidModule(m AndroidModule,
base := m.base()
base.module = m
base.extendedProperties = make(map[string]struct{})
propertyStructs = append(propertyStructs, &base.commonProperties)
@@ -186,6 +187,7 @@ type AndroidModuleBase struct {
hostAndDeviceProperties hostAndDeviceProperties
generalProperties []interface{}
archProperties []*archProperties
extendedProperties map[string]struct{}
noAddressSanitizer bool
installFiles []string
@@ -313,8 +315,9 @@ func (a *AndroidModuleBase) GenerateBuildActions(ctx blueprint.ModuleContext) {
androidBaseContextImpl: androidBaseContextImpl{
arch: a.commonProperties.CompileArch,
},
installDeps: a.computeInstallDeps(ctx),
installFiles: a.installFiles,
installDeps: a.computeInstallDeps(ctx),
installFiles: a.installFiles,
extendedProperties: a.extendedProperties,
}
if a.commonProperties.Disabled {
@@ -343,9 +346,10 @@ type androidBaseContextImpl struct {
type androidModuleContext struct {
blueprint.ModuleContext
androidBaseContextImpl
installDeps []string
installFiles []string
checkbuildFiles []string
installDeps []string
installFiles []string
checkbuildFiles []string
extendedProperties map[string]struct{}
}
func (a *androidModuleContext) Build(pctx *blueprint.PackageContext, params blueprint.BuildParams) {
@@ -353,6 +357,14 @@ func (a *androidModuleContext) Build(pctx *blueprint.PackageContext, params blue
a.ModuleContext.Build(pctx, params)
}
func (a *androidModuleContext) ContainsProperty(property string) bool {
if a.ModuleContext.ContainsProperty(property) {
return true
}
_, ok := a.extendedProperties[property]
return ok
}
func (a *androidBaseContextImpl) Arch() Arch {
return a.arch
}