diff options
Diffstat (limited to 'android/hooks.go')
-rw-r--r-- | android/hooks.go | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/android/hooks.go b/android/hooks.go index 5e3a4a7e7..2ad3b5fa5 100644 --- a/android/hooks.go +++ b/android/hooks.go @@ -89,8 +89,17 @@ func (l *loadHookContext) PrependProperties(props ...interface{}) { l.appendPrependHelper(props, proptools.PrependMatchingProperties) } -func (l *loadHookContext) CreateModule(factory ModuleFactory, props ...interface{}) Module { - inherited := []interface{}{&l.Module().base().commonProperties} +func (l *loadHookContext) createModule(factory blueprint.ModuleFactory, name string, props ...interface{}) blueprint.Module { + return l.bp.CreateModule(factory, name, props...) +} + +type createModuleContext interface { + Module() Module + createModule(blueprint.ModuleFactory, string, ...interface{}) blueprint.Module +} + +func createModule(ctx createModuleContext, factory ModuleFactory, ext string, props ...interface{}) Module { + inherited := []interface{}{&ctx.Module().base().commonProperties} var typeName string if typeNameLookup, ok := ModuleTypeByFactory()[reflect.ValueOf(factory)]; ok { @@ -101,12 +110,12 @@ func (l *loadHookContext) CreateModule(factory ModuleFactory, props ...interface filePath, _ := factoryFunc.FileLine(factoryPtr) typeName = fmt.Sprintf("%s_%s", path.Base(filePath), factoryFunc.Name()) } - typeName = typeName + "_loadHookModule" + typeName = typeName + "_" + ext - module := l.bp.CreateModule(ModuleFactoryAdaptor(factory), typeName, append(inherited, props...)...).(Module) + module := ctx.createModule(ModuleFactoryAdaptor(factory), typeName, append(inherited, props...)...).(Module) - if l.Module().base().variableProperties != nil && module.base().variableProperties != nil { - src := l.Module().base().variableProperties + if ctx.Module().base().variableProperties != nil && module.base().variableProperties != nil { + src := ctx.Module().base().variableProperties dst := []interface{}{ module.base().variableProperties, // Put an empty copy of the src properties into dst so that properties in src that are not in dst @@ -122,6 +131,10 @@ func (l *loadHookContext) CreateModule(factory ModuleFactory, props ...interface return module } +func (l *loadHookContext) CreateModule(factory ModuleFactory, props ...interface{}) Module { + return createModule(l, factory, "_loadHookModule", props...) +} + func (l *loadHookContext) registerScopedModuleType(name string, factory blueprint.ModuleFactory) { l.bp.RegisterScopedModuleType(name, factory) } |