Support 'cc_library' in androidbp

Change-Id: I0a0ee48aac786a422e68e14ba14fc6186296214d
This commit is contained in:
Dan Willemsen
2015-06-24 14:56:00 -07:00
parent ead184adaf
commit 49f50454c1
2 changed files with 54 additions and 11 deletions

View File

@@ -241,22 +241,54 @@ func (w *androidMkWriter) parsePropsAndWriteModule(moduleRule string, isHostRule
return
}
func (w *androidMkWriter) handleModule(module *bpparser.Module) {
moduleRule := fmt.Sprintf(module.Type.Name)
if translation, ok := moduleTypeToRule[module.Type.Name]; ok {
moduleRule = translation
func (w *androidMkWriter) mutateModule(module *bpparser.Module) (modules []*bpparser.Module) {
if module.Type.Name == "cc_library" {
modules = append(modules, &bpparser.Module{
Type: bpparser.Ident{
Name: "cc_library_shared",
Pos: module.Type.Pos,
},
Properties: module.Properties,
LbracePos: module.LbracePos,
RbracePos: module.RbracePos,
})
modules = append(modules, &bpparser.Module{
Type: bpparser.Ident{
Name: "cc_library_static",
Pos: module.Type.Pos,
},
Properties: module.Properties,
LbracePos: module.LbracePos,
RbracePos: module.RbracePos,
})
} else {
modules = []*bpparser.Module{module}
}
isHostRule := strings.Contains(moduleRule, "HOST")
hostSupported := w.parsePropsAndWriteModule(moduleRule, isHostRule, module)
return
}
if !isHostRule && hostSupported {
hostModuleRule := "NO CORRESPONDING HOST RULE" + moduleRule
if trans, ok := targetToHostModuleRule[moduleRule]; ok {
hostModuleRule = trans
func (w *androidMkWriter) handleModule(inputModule *bpparser.Module) {
modules := w.mutateModule(inputModule)
for _, module := range modules {
moduleRule := fmt.Sprintf(module.Type.Name)
if translation, ok := moduleTypeToRule[module.Type.Name]; ok {
moduleRule = translation
}
w.parsePropsAndWriteModule(hostModuleRule, true, module)
isHostRule := strings.Contains(moduleRule, "HOST")
hostSupported := w.parsePropsAndWriteModule(moduleRule, isHostRule, module)
if !isHostRule && hostSupported {
hostModuleRule := "NO CORRESPONDING HOST RULE" + moduleRule
if trans, ok := targetToHostModuleRule[moduleRule]; ok {
hostModuleRule = trans
}
w.parsePropsAndWriteModule(hostModuleRule, true, module)
}
}
}