OLD | NEW |
| 1 import("config.gni") |
| 2 |
| 3 template("write_build_config") { |
| 4 assert(defined(invoker.type)) |
| 5 assert(defined(invoker.base_path)) |
| 6 |
| 7 base_path = invoker.base_path |
| 8 type = invoker.type |
| 9 build_config = base_path + ".build_config" |
| 10 |
| 11 assert(type == "android_library" || type == "android_binary") |
| 12 |
| 13 action(target_name) { |
| 14 script = "//build/android/gyp/write_build_config.py" |
| 15 depfile = "$target_gen_dir/$target_name.d" |
| 16 |
| 17 deps = [] |
| 18 if (defined(invoker.deps)) { |
| 19 deps += invoker.deps |
| 20 } |
| 21 |
| 22 outputs = [depfile, build_config] |
| 23 |
| 24 possible_deps_configs = [] |
| 25 foreach(d, deps) { |
| 26 possible_deps_configs += [get_label_info(d, "target_gen_dir") + "/" + get_
label_info(d, "name") + ".build_config"] |
| 27 } |
| 28 rebase_possible_deps_configs = rebase_path(possible_deps_configs) |
| 29 args = [ |
| 30 "--type", type, |
| 31 "--depfile", rebase_path(depfile, root_build_dir), |
| 32 "--possible-deps-configs=$rebase_possible_deps_configs", |
| 33 "--build-config", rebase_path(build_config, root_build_dir), |
| 34 ] |
| 35 |
| 36 if (type == "android_library") { |
| 37 jar_path = base_path + ".jar" |
| 38 args += [ |
| 39 "--jar-path", rebase_path(jar_path, root_build_dir), |
| 40 ] |
| 41 } |
| 42 } |
| 43 } |
1 | 44 |
2 # Creates a zip archive of the inputs. | 45 # Creates a zip archive of the inputs. |
3 # If base_dir is provided, the archive paths will be relative to it. | 46 # If base_dir is provided, the archive paths will be relative to it. |
4 template("zip") { | 47 template("zip") { |
5 assert(defined(invoker.inputs)) | 48 assert(defined(invoker.inputs)) |
6 assert(defined(invoker.output)) | 49 assert(defined(invoker.output)) |
7 | 50 |
8 rebase_inputs = rebase_path(invoker.inputs) | 51 rebase_inputs = rebase_path(invoker.inputs, root_build_dir) |
9 rebase_output = rebase_path(invoker.output) | 52 rebase_output = rebase_path(invoker.output, root_build_dir) |
10 action(target_name) { | 53 action(target_name) { |
11 script = "//build/android/gn/zip.py" | 54 script = "//build/android/gn/zip.py" |
12 depfile = "$target_gen_dir/$target_name.d" | 55 depfile = "$target_gen_dir/$target_name.d" |
13 source_prereqs = invoker.inputs | 56 source_prereqs = invoker.inputs |
14 outputs = [depfile, invoker.output] | 57 outputs = [depfile, invoker.output] |
15 args = [ | 58 args = [ |
16 "--depfile", rebase_path(depfile, root_build_dir), | 59 "--depfile", rebase_path(depfile, root_build_dir), |
17 "--inputs=$rebase_inputs", | 60 "--inputs=$rebase_inputs", |
18 "--output=$rebase_output", | 61 "--output=$rebase_output", |
19 ] | 62 ] |
20 if (defined(invoker.base_dir)) { | 63 if (defined(invoker.base_dir)) { |
21 args += [ | 64 args += [ |
22 "--base-dir", rebase_path(invoker.base_dir) | 65 "--base-dir", rebase_path(invoker.base_dir, root_build_dir) |
23 ] | 66 ] |
24 } | 67 } |
25 } | 68 } |
26 } | 69 } |
27 | 70 |
| 71 # Compiles and jars a set of java_files. |
| 72 # |
| 73 # Outputs: |
| 74 # $jar_path.jar |
| 75 # $jar_path.jar.TOC |
| 76 # |
| 77 # Variables |
| 78 # java_files: List of .java files to compile. |
| 79 # java_deps: List of java dependencies. These should all have a .jar output |
| 80 # at "${target_gen_dir}/${target_name}.jar. |
| 81 # chromium_code: If 1, enable extra warnings. |
| 82 # srcjar_deps: List of srcjar dependencies. The .java files contained in the |
| 83 # dependencies srcjar outputs will be compiled and added to the output jar. |
| 84 # jar_path: Use this to explicitly set the output jar path. Defaults to |
| 85 # "${target_gen_dir}/${target_name}.jar. |
| 86 template("java_library") { |
| 87 assert(defined(invoker.java_files)) |
| 88 assert(defined(invoker.build_config)) |
| 89 assert(defined(invoker.jar_path)) |
| 90 |
| 91 java_files = invoker.java_files |
| 92 jar_path = invoker.jar_path |
| 93 jar_toc_path = jar_path + ".TOC" |
| 94 |
| 95 build_config = invoker.build_config |
| 96 |
| 97 jar_excluded_patterns = [] |
| 98 if (defined(invoker.jar_excluded_patterns)) { |
| 99 jar_excluded_patterns += invoker.jar_excluded_patterns |
| 100 } |
| 101 |
| 102 chromium_code = false |
| 103 if (defined(invoker.chromium_code)) { |
| 104 chromium_code = chromium_code || invoker.chromium_code |
| 105 } |
| 106 |
| 107 srcjar_deps = [] |
| 108 if (defined(invoker.srcjar_deps)) { |
| 109 srcjar_deps += invoker.srcjar_deps |
| 110 } |
| 111 |
| 112 java_srcjars = [] |
| 113 foreach(dep, srcjar_deps) { |
| 114 java_srcjars += [get_label_info(dep, "target_gen_dir") + "/" + get_label_inf
o(dep, "name") + ".srcjar"] |
| 115 } |
| 116 |
| 117 # Mark srcjar_deps as used. |
| 118 assert(srcjar_deps == [] || srcjar_deps != []) |
| 119 |
| 120 |
| 121 rebase_jar_path = rebase_path(jar_path, root_build_dir) |
| 122 |
| 123 system_jars = ["${android_sdk}/android.jar"] |
| 124 action("${target_name}__javac") { |
| 125 script = "//build/android/gyp/javac.py" |
| 126 depfile = "$target_gen_dir/$target_name.d" |
| 127 outputs = [ |
| 128 depfile, |
| 129 jar_path, |
| 130 jar_path + ".md5.stamp" |
| 131 ] |
| 132 sources = java_files + java_srcjars |
| 133 source_prereqs = system_jars + [build_config] |
| 134 |
| 135 rebase_system_jars = rebase_path(system_jars, root_build_dir) |
| 136 rebase_java_srcjars = rebase_path(java_srcjars, root_build_dir) |
| 137 rebase_build_config = rebase_path(build_config, root_build_dir) |
| 138 rebase_depfile = rebase_path(depfile, root_build_dir) |
| 139 args = [ |
| 140 "--depfile=$rebase_depfile", |
| 141 "--classpath=$rebase_system_jars", |
| 142 "--classpath=@($rebase_build_config:javac:classpath)", |
| 143 "--jar-path=$rebase_jar_path", |
| 144 "--java-srcjars=$rebase_java_srcjars", |
| 145 "--jar-excluded-classes=$jar_excluded_patterns", |
| 146 ] |
| 147 if (chromium_code) { |
| 148 args += ["--chromium-code"] |
| 149 } |
| 150 |
| 151 args += rebase_path(java_files, root_build_dir) |
| 152 } |
| 153 |
| 154 # TODO(cjhopman): proguard |
| 155 |
| 156 rebase_jar_toc_path = rebase_path(jar_toc_path, root_build_dir) |
| 157 action("${target_name}__jar_toc") { |
| 158 script = "//build/android/gyp/jar_toc.py" |
| 159 depfile = "$target_gen_dir/$target_name.d" |
| 160 outputs = [depfile, jar_toc_path, jar_toc_path + ".md5.stamp"] |
| 161 source_prereqs = [jar_path] |
| 162 args = [ |
| 163 "--depfile", rebase_path(depfile, root_build_dir), |
| 164 "--jar-path=${rebase_jar_path}", |
| 165 "--toc-path=${rebase_jar_toc_path}", |
| 166 ] |
| 167 } |
| 168 |
| 169 group(target_name) { |
| 170 deps = [ |
| 171 ":${target_name}__javac", |
| 172 ":${target_name}__jar_toc", |
| 173 ] |
| 174 } |
| 175 } |
| 176 |
| 177 # This adds Android-specific parts to the java_library template. |
| 178 # |
| 179 # Runs Android lint against the compiled java files. |
| 180 # Dexes the output jar for inclusion in an APK. |
| 181 template("android_java_library") { |
| 182 assert(defined(invoker.java_files)) |
| 183 |
| 184 assert(defined(invoker.build_config)) |
| 185 assert(defined(invoker.jar_path)) |
| 186 |
| 187 java_library("${target_name}__java_library") { |
| 188 if (defined(invoker.jar_excluded_patterns)) { |
| 189 jar_excluded_patterns = invoker.jar_excluded_patterns |
| 190 } |
| 191 build_config = invoker.build_config |
| 192 java_files = invoker.java_files |
| 193 jar_path = invoker.jar_path |
| 194 |
| 195 if (defined(invoker.srcjar_deps)) { |
| 196 srcjar_deps = invoker.srcjar_deps |
| 197 } |
| 198 } |
| 199 |
| 200 # TODO(cjhopman): lint |
| 201 # TODO(cjhopman): dex |
| 202 |
| 203 group(target_name) { |
| 204 deps = [ |
| 205 ":${target_name}__java_library" |
| 206 ] |
| 207 } |
| 208 } |
OLD | NEW |