blob: 9de0197fe6a2df88c9f733b473e3710477672ae2 [file] [log] [blame]
Colin Cross3f40fa42015-01-30 17:27:36 -08001package main
2
3import (
4 "android/soong/androidmk/parser"
5)
6
7const (
Colin Cross139b8152015-03-31 13:58:33 -07008 clear_vars = "__android_mk_clear_vars"
Colin Cross3f40fa42015-01-30 17:27:36 -08009)
10
11var stringProperties = map[string]string{
Dan Albertbe961682015-03-18 23:38:50 -070012 "LOCAL_MODULE": "name",
13 "LOCAL_MODULE_STEM": "stem",
14 "LOCAL_MODULE_CLASS": "class",
15 "LOCAL_CXX_STL": "stl",
16 "LOCAL_STRIP_MODULE": "strip",
17 "LOCAL_MULTILIB": "compile_multilib",
18 "LOCAL_ARM_MODE_HACK": "instruction_set",
19 "LOCAL_SDK_VERSION": "sdk_version",
20 "LOCAL_NDK_STL_VARIANT": "stl",
Colin Cross2fe66872015-03-30 17:20:39 -070021 "LOCAL_JAR_MANIFEST": "manifest",
Colin Cross3f40fa42015-01-30 17:27:36 -080022}
23
24var listProperties = map[string]string{
25 "LOCAL_SRC_FILES": "srcs",
26 "LOCAL_SHARED_LIBRARIES": "shared_libs",
27 "LOCAL_STATIC_LIBRARIES": "static_libs",
28 "LOCAL_WHOLE_STATIC_LIBRARIES": "whole_static_libs",
29 "LOCAL_SYSTEM_SHARED_LIBRARIES": "system_shared_libs",
30 "LOCAL_C_INCLUDES": "include_dirs",
31 "LOCAL_EXPORT_C_INCLUDE_DIRS": "export_include_dirs",
32 "LOCAL_ASFLAGS": "asflags",
33 "LOCAL_CLANG_ASFLAGS": "clang_asflags",
34 "LOCAL_CFLAGS": "cflags",
35 "LOCAL_CONLYFLAGS": "conlyflags",
36 "LOCAL_CPPFLAGS": "cppflags",
37 "LOCAL_LDFLAGS": "ldflags",
38 "LOCAL_REQUIRED_MODULES": "required",
39 "LOCAL_MODULE_TAGS": "tags",
40 "LOCAL_LDLIBS": "host_ldlibs",
41 "LOCAL_CLANG_CFLAGS": "clang_cflags",
Colin Cross2fe66872015-03-30 17:20:39 -070042
43 "LOCAL_JAVA_RESOURCE_DIRS": "resource_dirs",
44 "LOCAL_JAVACFLAGS": "javacflags",
45 "LOCAL_DX_FLAGS": "dxflags",
46 "LOCAL_JAVA_LIBRARIES": "java_libs",
47 "LOCAL_STATIC_JAVA_LIBRARIES": "java_static_libs",
Colin Cross3f40fa42015-01-30 17:27:36 -080048}
49
50var boolProperties = map[string]string{
51 "LOCAL_IS_HOST_MODULE": "host",
52 "LOCAL_CLANG": "clang",
53 "LOCAL_FORCE_STATIC_EXECUTABLE": "static",
54 "LOCAL_ADDRESS_SANITIZER": "asan",
55 "LOCAL_NATIVE_COVERAGE": "native_coverage",
56 "LOCAL_NO_CRT": "nocrt",
57 "LOCAL_ALLOW_UNDEFINED_SYMBOLS": "allow_undefined_symbols",
58 "LOCAL_RTTI_FLAG": "rtti",
Colin Cross2fe66872015-03-30 17:20:39 -070059
60 "LOCAL_NO_STANDARD_LIBRARIES": "no_standard_libraries",
Colin Cross3f40fa42015-01-30 17:27:36 -080061}
62
Colin Cross70a255f2015-03-18 12:08:31 -070063var deleteProperties = map[string]struct{}{
64 "LOCAL_CPP_EXTENSION": struct{}{},
65}
66
Colin Cross3f40fa42015-01-30 17:27:36 -080067var propertySuffixes = []struct {
68 suffix string
69 class string
70}{
71 {"arm", "arch"},
72 {"arm64", "arch"},
73 {"mips", "arch"},
74 {"mips64", "arch"},
75 {"x86", "arch"},
76 {"x86_64", "arch"},
77 {"32", "multilib"},
78 {"64", "multilib"},
79}
80
81var propertySuffixTranslations = map[string]string{
82 "32": "lib32",
83 "64": "lib64",
84}
85
86var conditionalTranslations = map[string]struct {
87 class string
88 suffix string
89}{
Colin Crossbbcb4962015-03-26 16:15:58 -070090 "($(HOST_OS),darwin)": {"target", "darwin"},
91 "($(HOST_OS), darwin)": {"target", "darwin"},
92 "($(HOST_OS),windows)": {"target", "windows"},
93 "($(HOST_OS), windows)": {"target", "windows"},
94 "($(HOST_OS),linux)": {"target", "linux"},
95 "($(HOST_OS), linux)": {"target", "linux"},
Colin Crossdf6f7ae2015-03-27 10:46:01 -070096 "($(BUILD_OS),darwin)": {"target", "darwin"},
97 "($(BUILD_OS), darwin)": {"target", "darwin"},
98 "($(BUILD_OS),linux)": {"target", "linux"},
99 "($(BUILD_OS), linux)": {"target", "linux"},
Colin Cross3f40fa42015-01-30 17:27:36 -0800100}
101
102func mydir(args []string) string {
103 return "."
104}
105
Colin Cross139b8152015-03-31 13:58:33 -0700106var moduleTypes = map[string]string{
107 "BUILD_SHARED_LIBRARY": "cc_library_shared",
108 "BUILD_STATIC_LIBRARY": "cc_library_static",
109 "BUILD_HOST_SHARED_LIBRARY": "cc_library_host_shared",
110 "BUILD_HOST_STATIC_LIBRARY": "cc_library_host_static",
111 "BUILD_EXECUTABLE": "cc_binary",
112 "BUILD_HOST_EXECUTABLE": "cc_binary_host",
113 "BUILD_NATIVE_TEST": "cc_test",
114 "BUILD_HOST_NATIVE_TEST": "cc_test_host",
Colin Cross2fe66872015-03-30 17:20:39 -0700115
116 "BUILD_JAVA_LIBRARY": "java_library",
117 "BUILD_STATIC_JAVA_LIBRARY": "java_library_static",
118 "BUILD_HOST_JAVA_LIBRARY": "java_library_host",
119 "BUILD_HOST_DALVIK_JAVA_LIBRARY": "java_library_host_dalvik",
120
121 "BUILD_PREBUILT": "prebuilt",
Colin Cross139b8152015-03-31 13:58:33 -0700122}
123
124var soongModuleTypes = map[string]bool{}
125
Colin Cross3f40fa42015-01-30 17:27:36 -0800126func androidScope() parser.Scope {
127 globalScope := parser.NewScope(nil)
128 globalScope.Set("CLEAR_VARS", clear_vars)
Colin Cross3f40fa42015-01-30 17:27:36 -0800129 globalScope.SetFunc("my-dir", mydir)
130
Colin Cross139b8152015-03-31 13:58:33 -0700131 for k, v := range moduleTypes {
132 globalScope.Set(k, v)
133 soongModuleTypes[v] = true
134 }
Colin Cross3f40fa42015-01-30 17:27:36 -0800135
136 return globalScope
137}