OLD | NEW |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import("../../mojo_sdk.gni") | 5 import("../../mojo_sdk.gni") |
6 | 6 |
7 # Generate C++ and JavaScript source files from mojom files. The output files | 7 # Generate C++ and JavaScript source files from mojom files. The output files |
8 # will go under the generated file directory tree with the same path as each | 8 # will go under the generated file directory tree with the same path as each |
9 # input file. | 9 # input file. |
10 # | 10 # |
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 "{{source_gen_dir}}/{{source_name_part}}.mojom.h", | 115 "{{source_gen_dir}}/{{source_name_part}}.mojom.h", |
116 "{{source_gen_dir}}/{{source_name_part}}.mojom-internal.h", | 116 "{{source_gen_dir}}/{{source_name_part}}.mojom-internal.h", |
117 ] | 117 ] |
118 generator_dart_outputs = | 118 generator_dart_outputs = |
119 [ "{{source_gen_dir}}/{{source_name_part}}.mojom.dart" ] | 119 [ "{{source_gen_dir}}/{{source_name_part}}.mojom.dart" ] |
120 generator_java_outputs = | 120 generator_java_outputs = |
121 [ "{{source_gen_dir}}/{{source_name_part}}.mojom.srcjar" ] | 121 [ "{{source_gen_dir}}/{{source_name_part}}.mojom.srcjar" ] |
122 generator_js_outputs = [ "{{source_gen_dir}}/{{source_name_part}}.mojom.js" ] | 122 generator_js_outputs = [ "{{source_gen_dir}}/{{source_name_part}}.mojom.js" ] |
123 generator_python_outputs = | 123 generator_python_outputs = |
124 [ "{{source_gen_dir}}/{{source_name_part}}_mojom.py" ] | 124 [ "{{source_gen_dir}}/{{source_name_part}}_mojom.py" ] |
125 generator_python_zip_output = "$target_out_dir/$target_name.pyzip" | |
126 | 125 |
127 rebased_mojo_sdk_public_deps = [] | 126 rebased_mojo_sdk_public_deps = [] |
128 if (defined(invoker.mojo_sdk_public_deps)) { | 127 if (defined(invoker.mojo_sdk_public_deps)) { |
129 foreach(sdk_dep, invoker.mojo_sdk_public_deps) { | 128 foreach(sdk_dep, invoker.mojo_sdk_public_deps) { |
130 # Check that the SDK dep was not mistakenly given as an absolute path. | 129 # Check that the SDK dep was not mistakenly given as an absolute path. |
131 assert(get_path_info(sdk_dep, "abspath") != sdk_dep) | 130 assert(get_path_info(sdk_dep, "abspath") != sdk_dep) |
132 rebased_mojo_sdk_public_deps += [ rebase_path(sdk_dep, ".", mojo_root) ] | 131 rebased_mojo_sdk_public_deps += [ rebase_path(sdk_dep, ".", mojo_root) ] |
133 } | 132 } |
134 } | 133 } |
135 | 134 |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
202 public_deps += invoker.public_deps | 201 public_deps += invoker.public_deps |
203 } | 202 } |
204 | 203 |
205 deps = [ | 204 deps = [ |
206 ":$generator_target_name", | 205 ":$generator_target_name", |
207 ] | 206 ] |
208 deps += rebased_mojo_sdk_deps | 207 deps += rebased_mojo_sdk_deps |
209 if (defined(invoker.deps)) { | 208 if (defined(invoker.deps)) { |
210 deps += invoker.deps | 209 deps += invoker.deps |
211 } | 210 } |
212 data_deps = [ ":${target_name}_python" ] | |
213 if (defined(invoker.mojo_sdk_deps)) { | |
214 foreach(sdk_dep, invoker.mojo_sdk_deps) { | |
215 # Check that the SDK dep was not mistakenly given as an absolute path. | |
216 assert(get_path_info(sdk_dep, "abspath") != sdk_dep) | |
217 deps += [ rebase_path(sdk_dep, ".", mojo_root) ] | |
218 } | |
219 } | |
220 } | 211 } |
221 | 212 |
222 all_deps = rebased_mojo_sdk_deps + rebased_mojo_sdk_public_deps | 213 all_deps = rebased_mojo_sdk_deps + rebased_mojo_sdk_public_deps |
223 if (defined(invoker.deps)) { | 214 if (defined(invoker.deps)) { |
224 all_deps += invoker.deps | 215 all_deps += invoker.deps |
225 } | 216 } |
226 if (defined(invoker.public_deps)) { | 217 if (defined(invoker.public_deps)) { |
227 all_deps += invoker.public_deps | 218 all_deps += invoker.public_deps |
228 } | 219 } |
229 | 220 |
230 group("${target_name}__is_mojom") { | 221 group("${target_name}__is_mojom") { |
231 } | 222 } |
232 | 223 |
233 # Explicitly ensure that all dependencies (invoker.deps and | 224 # Explicitly ensure that all dependencies (invoker.deps and |
234 # invoker.public_deps) are mojom targets themselves. | 225 # invoker.public_deps) are mojom targets themselves. |
235 group("${target_name}__check_deps_are_all_mojom") { | 226 group("${target_name}__check_deps_are_all_mojom") { |
236 deps = [] | 227 deps = [] |
237 foreach(d, all_deps) { | 228 foreach(d, all_deps) { |
238 name = get_label_info(d, "label_no_toolchain") | 229 name = get_label_info(d, "label_no_toolchain") |
239 toolchain = get_label_info(d, "toolchain") | 230 toolchain = get_label_info(d, "toolchain") |
240 deps += [ "${name}__is_mojom(${toolchain})" ] | 231 deps += [ "${name}__is_mojom(${toolchain})" ] |
241 } | 232 } |
242 } | 233 } |
243 | 234 |
244 action("${target_name}_python") { | |
245 script = rebase_path("mojo/public/tools/gn/zip.py", ".", mojo_root) | |
246 | |
247 inputs = process_file_template(invoker.sources, generator_python_outputs) | |
248 | |
249 deps = [] | |
250 zip_inputs = [] | |
251 | |
252 foreach(d, all_deps) { | |
253 # Resolve the name, so that a target //mojo/something becomes | |
254 # //mojo/something:something and we can append "_python" to get the python | |
255 # dependency name. | |
256 full_name = get_label_info(d, "label_no_toolchain") | |
257 dep_name = get_label_info(d, "name") | |
258 dep_target_out_dir = get_label_info(d, "target_out_dir") | |
259 deps += [ "${full_name}_python" ] | |
260 zip_inputs += [ "$dep_target_out_dir/$dep_name.pyzip" ] | |
261 } | |
262 | |
263 output = generator_python_zip_output | |
264 outputs = [ | |
265 output, | |
266 ] | |
267 | |
268 rebase_base_dir = rebase_path(target_gen_dir, root_build_dir) | |
269 rebase_inputs = rebase_path(inputs, root_build_dir) | |
270 rebase_zip_inputs = rebase_path(zip_inputs, root_build_dir) | |
271 rebase_output = rebase_path(output, root_build_dir) | |
272 args = [ | |
273 "--base-dir=$rebase_base_dir", | |
274 "--inputs=$rebase_inputs", | |
275 "--zip-inputs=$rebase_zip_inputs", | |
276 "--output=$rebase_output", | |
277 ] | |
278 } | |
279 | |
280 if (is_android) { | 235 if (is_android) { |
281 import("//build/config/android/rules.gni") | 236 import("//build/config/android/rules.gni") |
282 | 237 |
283 java_target_name = target_name + "_java" | 238 java_target_name = target_name + "_java" |
284 android_library(java_target_name) { | 239 android_library(java_target_name) { |
285 deps = rebase_path([ | 240 deps = rebase_path([ |
286 "mojo/public/java:bindings", | 241 "mojo/public/java:bindings", |
287 "mojo/public/java:system", | 242 "mojo/public/java:system", |
288 ], | 243 ], |
289 ".", | 244 ".", |
290 mojo_root) | 245 mojo_root) |
291 | 246 |
292 foreach(d, all_deps) { | 247 foreach(d, all_deps) { |
293 # Resolve the name, so that a target //mojo/something becomes | 248 # Resolve the name, so that a target //mojo/something becomes |
294 # //mojo/something:something and we can append "_java" to get the java | 249 # //mojo/something:something and we can append "_java" to get the java |
295 # dependency name. | 250 # dependency name. |
296 full_name = get_label_info(d, "label_no_toolchain") | 251 full_name = get_label_info(d, "label_no_toolchain") |
297 deps += [ "${full_name}_java" ] | 252 deps += [ "${full_name}_java" ] |
298 } | 253 } |
299 | 254 |
300 srcjars = process_file_template(invoker.sources, generator_java_outputs) | 255 srcjars = process_file_template(invoker.sources, generator_java_outputs) |
301 } | 256 } |
302 } | 257 } |
303 } | 258 } |
OLD | NEW |