androidmk: use map to hold module types

Reduces the number of places that need to be edited when adding
new module types.

Change-Id: Id35d16f005e377e1e3bb955348ed92a4a2c392bb
This commit is contained in:
Colin Cross 2015-03-31 13:58:33 -07:00
parent 7d21c4430d
commit 139b815875
2 changed files with 22 additions and 35 deletions

View file

@ -6,15 +6,6 @@ import (
const (
clear_vars = "__android_mk_clear_vars"
build_shared_library = "cc_library_shared"
build_static_library = "cc_library_static"
build_host_static_library = "cc_library_host_static"
build_host_shared_library = "cc_library_host_shared"
build_executable = "cc_binary"
build_host_executable = "cc_binary_host"
build_native_test = "cc_test"
build_host_native_test = "cc_test_host"
build_prebuilt = "prebuilt"
)
var stringProperties = map[string]string{
@ -103,28 +94,29 @@ func mydir(args []string) string {
return "."
}
var moduleTypes = map[string]string{
"BUILD_SHARED_LIBRARY": "cc_library_shared",
"BUILD_STATIC_LIBRARY": "cc_library_static",
"BUILD_HOST_SHARED_LIBRARY": "cc_library_host_shared",
"BUILD_HOST_STATIC_LIBRARY": "cc_library_host_static",
"BUILD_EXECUTABLE": "cc_binary",
"BUILD_HOST_EXECUTABLE": "cc_binary_host",
"BUILD_NATIVE_TEST": "cc_test",
"BUILD_HOST_NATIVE_TEST": "cc_test_host",
"BUILD_PREBUILT": "prebuilt",
}
var soongModuleTypes = map[string]bool{}
func androidScope() parser.Scope {
globalScope := parser.NewScope(nil)
globalScope.Set("CLEAR_VARS", clear_vars)
globalScope.Set("BUILD_HOST_EXECUTABLE", build_host_executable)
globalScope.Set("BUILD_SHARED_LIBRARY", build_shared_library)
globalScope.Set("BUILD_STATIC_LIBRARY", build_static_library)
globalScope.Set("BUILD_HOST_STATIC_LIBRARY", build_host_static_library)
globalScope.Set("BUILD_HOST_SHARED_LIBRARY", build_host_shared_library)
globalScope.Set("BUILD_NATIVE_TEST", build_native_test)
globalScope.Set("BUILD_HOST_NATIVE_TEST", build_host_native_test)
globalScope.Set("BUILD_EXECUTABLE", build_executable)
globalScope.Set("BUILD_PREBUILT", build_prebuilt)
globalScope.SetFunc("my-dir", mydir)
globalScope.Set("lib32", "lib32")
globalScope.Set("lib64", "lib64")
globalScope.Set("arm", "arm")
globalScope.Set("arm64", "arm64")
globalScope.Set("mips", "mips")
globalScope.Set("mips64", "mips64")
globalScope.Set("x86", "x86")
globalScope.Set("x86_64", "x86_64")
for k, v := range moduleTypes {
globalScope.Set(k, v)
soongModuleTypes[v] = true
}
return globalScope
}

View file

@ -107,16 +107,11 @@ func main() {
switch directive.Name {
case "include":
val := directive.Args.Value(file.scope)
switch val {
case build_shared_library, build_static_library,
build_executable, build_host_executable,
build_prebuilt, build_host_static_library,
build_host_shared_library, build_native_test,
build_host_native_test:
switch {
case soongModuleTypes[val]:
handleModuleConditionals(file, directive, cond)
makeModule(file, val)
case clear_vars:
case val == clear_vars:
resetModule(file)
default:
file.errorf(directive, "unsupported include")