blob: 4d928b129d4849cbb1b8670c57a20fa7d20eeafd [file] [log] [blame]
Colin Cross3f40fa42015-01-30 17:27:36 -08001package main
2
3import (
4 "android/soong/androidmk/parser"
Colin Cross16daa922015-04-03 16:51:45 -07005 "fmt"
6 "strings"
Colin Cross3f40fa42015-01-30 17:27:36 -08007)
8
9const (
Colin Cross139b8152015-03-31 13:58:33 -070010 clear_vars = "__android_mk_clear_vars"
Colin Cross3f40fa42015-01-30 17:27:36 -080011)
12
13var stringProperties = map[string]string{
Colin Cross41c187b2015-04-21 17:37:37 -070014 "LOCAL_MODULE": "name",
15 "LOCAL_MODULE_STEM": "stem",
16 "LOCAL_MODULE_CLASS": "class",
17 "LOCAL_CXX_STL": "stl",
18 "LOCAL_STRIP_MODULE": "strip",
19 "LOCAL_MULTILIB": "compile_multilib",
20 "LOCAL_ARM_MODE_HACK": "instruction_set",
21 "LOCAL_SDK_VERSION": "sdk_version",
22 "LOCAL_NDK_STL_VARIANT": "stl",
23 "LOCAL_JAR_MANIFEST": "manifest",
24 "LOCAL_JARJAR_RULES": "jarjar_rules",
25 "LOCAL_CERTIFICATE": "certificate",
26 "LOCAL_PACKAGE_NAME": "name",
27 "LOCAL_MODULE_RELATIVE_PATH": "relative_install_path",
Colin Cross3f40fa42015-01-30 17:27:36 -080028}
29
30var listProperties = map[string]string{
31 "LOCAL_SRC_FILES": "srcs",
32 "LOCAL_SHARED_LIBRARIES": "shared_libs",
33 "LOCAL_STATIC_LIBRARIES": "static_libs",
34 "LOCAL_WHOLE_STATIC_LIBRARIES": "whole_static_libs",
35 "LOCAL_SYSTEM_SHARED_LIBRARIES": "system_shared_libs",
36 "LOCAL_C_INCLUDES": "include_dirs",
37 "LOCAL_EXPORT_C_INCLUDE_DIRS": "export_include_dirs",
38 "LOCAL_ASFLAGS": "asflags",
39 "LOCAL_CLANG_ASFLAGS": "clang_asflags",
40 "LOCAL_CFLAGS": "cflags",
41 "LOCAL_CONLYFLAGS": "conlyflags",
42 "LOCAL_CPPFLAGS": "cppflags",
43 "LOCAL_LDFLAGS": "ldflags",
44 "LOCAL_REQUIRED_MODULES": "required",
45 "LOCAL_MODULE_TAGS": "tags",
46 "LOCAL_LDLIBS": "host_ldlibs",
47 "LOCAL_CLANG_CFLAGS": "clang_cflags",
Colin Cross581c1892015-04-07 16:50:10 -070048 "LOCAL_YACCFLAGS": "yaccflags",
Colin Cross2fe66872015-03-30 17:20:39 -070049
Colin Cross276284f2015-04-20 13:51:48 -070050 "LOCAL_JAVA_RESOURCE_DIRS": "java_resource_dirs",
Colin Cross2fe66872015-03-30 17:20:39 -070051 "LOCAL_JAVACFLAGS": "javacflags",
52 "LOCAL_DX_FLAGS": "dxflags",
53 "LOCAL_JAVA_LIBRARIES": "java_libs",
54 "LOCAL_STATIC_JAVA_LIBRARIES": "java_static_libs",
Colin Crossc0b06f12015-04-08 13:03:43 -070055 "LOCAL_AIDL_INCLUDES": "aidl_includes",
Colin Cross30e076a2015-04-13 13:58:27 -070056 "LOCAL_AAPT_FLAGS": "aaptflags",
57 "LOCAL_PACKAGE_SPLITS": "package_splits",
Colin Cross3f40fa42015-01-30 17:27:36 -080058}
59
60var boolProperties = map[string]string{
61 "LOCAL_IS_HOST_MODULE": "host",
62 "LOCAL_CLANG": "clang",
63 "LOCAL_FORCE_STATIC_EXECUTABLE": "static",
64 "LOCAL_ADDRESS_SANITIZER": "asan",
65 "LOCAL_NATIVE_COVERAGE": "native_coverage",
66 "LOCAL_NO_CRT": "nocrt",
67 "LOCAL_ALLOW_UNDEFINED_SYMBOLS": "allow_undefined_symbols",
68 "LOCAL_RTTI_FLAG": "rtti",
Colin Cross2fe66872015-03-30 17:20:39 -070069
70 "LOCAL_NO_STANDARD_LIBRARIES": "no_standard_libraries",
Colin Cross30e076a2015-04-13 13:58:27 -070071
72 "LOCAL_EXPORT_PACKAGE_RESOURCES": "export_package_resources",
Colin Cross3f40fa42015-01-30 17:27:36 -080073}
74
Colin Cross70a255f2015-03-18 12:08:31 -070075var deleteProperties = map[string]struct{}{
76 "LOCAL_CPP_EXTENSION": struct{}{},
77}
78
Colin Cross3f40fa42015-01-30 17:27:36 -080079var propertySuffixes = []struct {
80 suffix string
81 class string
82}{
83 {"arm", "arch"},
84 {"arm64", "arch"},
85 {"mips", "arch"},
86 {"mips64", "arch"},
87 {"x86", "arch"},
88 {"x86_64", "arch"},
89 {"32", "multilib"},
90 {"64", "multilib"},
91}
92
93var propertySuffixTranslations = map[string]string{
94 "32": "lib32",
95 "64": "lib64",
96}
97
98var conditionalTranslations = map[string]struct {
99 class string
100 suffix string
101}{
Colin Crossbbcb4962015-03-26 16:15:58 -0700102 "($(HOST_OS),darwin)": {"target", "darwin"},
103 "($(HOST_OS), darwin)": {"target", "darwin"},
104 "($(HOST_OS),windows)": {"target", "windows"},
105 "($(HOST_OS), windows)": {"target", "windows"},
106 "($(HOST_OS),linux)": {"target", "linux"},
107 "($(HOST_OS), linux)": {"target", "linux"},
Colin Crossdf6f7ae2015-03-27 10:46:01 -0700108 "($(BUILD_OS),darwin)": {"target", "darwin"},
109 "($(BUILD_OS), darwin)": {"target", "darwin"},
110 "($(BUILD_OS),linux)": {"target", "linux"},
111 "($(BUILD_OS), linux)": {"target", "linux"},
Colin Crossd560a9e2015-04-16 13:33:59 -0700112 "USE_MINGW": {"target", "windows"},
Colin Cross3f40fa42015-01-30 17:27:36 -0800113}
114
115func mydir(args []string) string {
116 return "."
117}
118
Colin Cross16daa922015-04-03 16:51:45 -0700119func allJavaFilesUnder(args []string) string {
120 dir := ""
121 if len(args) > 0 {
122 dir = strings.TrimSpace(args[0])
123 }
124
125 return fmt.Sprintf("%s/**/*.java", dir)
126}
127
Colin Crossd0a3da22015-04-15 12:29:45 -0700128func allSubdirJavaFiles(args []string) string {
129 return "**/*.java"
130}
131
Colin Cross139b8152015-03-31 13:58:33 -0700132var moduleTypes = map[string]string{
133 "BUILD_SHARED_LIBRARY": "cc_library_shared",
134 "BUILD_STATIC_LIBRARY": "cc_library_static",
135 "BUILD_HOST_SHARED_LIBRARY": "cc_library_host_shared",
136 "BUILD_HOST_STATIC_LIBRARY": "cc_library_host_static",
137 "BUILD_EXECUTABLE": "cc_binary",
138 "BUILD_HOST_EXECUTABLE": "cc_binary_host",
139 "BUILD_NATIVE_TEST": "cc_test",
140 "BUILD_HOST_NATIVE_TEST": "cc_test_host",
Colin Cross2ba19d92015-05-07 15:44:20 -0700141 "BUILD_NATIVE_BENCHMARK": "cc_benchmark",
142 "BUILD_HOST_NATIVE_BENCHMARK": "cc_benchmark_host",
Colin Cross2fe66872015-03-30 17:20:39 -0700143
144 "BUILD_JAVA_LIBRARY": "java_library",
145 "BUILD_STATIC_JAVA_LIBRARY": "java_library_static",
146 "BUILD_HOST_JAVA_LIBRARY": "java_library_host",
147 "BUILD_HOST_DALVIK_JAVA_LIBRARY": "java_library_host_dalvik",
Colin Cross30e076a2015-04-13 13:58:27 -0700148 "BUILD_PACKAGE": "android_app",
Colin Cross2fe66872015-03-30 17:20:39 -0700149
150 "BUILD_PREBUILT": "prebuilt",
Colin Cross139b8152015-03-31 13:58:33 -0700151}
152
153var soongModuleTypes = map[string]bool{}
154
Colin Cross3f40fa42015-01-30 17:27:36 -0800155func androidScope() parser.Scope {
156 globalScope := parser.NewScope(nil)
157 globalScope.Set("CLEAR_VARS", clear_vars)
Colin Cross3f40fa42015-01-30 17:27:36 -0800158 globalScope.SetFunc("my-dir", mydir)
Colin Cross16daa922015-04-03 16:51:45 -0700159 globalScope.SetFunc("all-java-files-under", allJavaFilesUnder)
Colin Crossd0a3da22015-04-15 12:29:45 -0700160 globalScope.SetFunc("all-subdir-java-files", allSubdirJavaFiles)
Colin Cross3f40fa42015-01-30 17:27:36 -0800161
Colin Cross139b8152015-03-31 13:58:33 -0700162 for k, v := range moduleTypes {
163 globalScope.Set(k, v)
164 soongModuleTypes[v] = true
165 }
Colin Cross3f40fa42015-01-30 17:27:36 -0800166
167 return globalScope
168}