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++/JavaScript/Java/Python/Dart/Go source files from mojom files. The |
8 # will go under the generated file directory tree with the same path as each | 8 # output files will go under the generated file directory tree with the same |
9 # input file. | 9 # path as each input file. |
10 # | 10 # |
11 # If a mojom target is intended for use in a client repo where the location of | 11 # If a mojom target is intended for use in a client repo where the location of |
12 # the Mojo SDK will be different than its location in the Mojo repo, | 12 # the Mojo SDK will be different than its location in the Mojo repo, |
13 # dependencies on the SDK should be specified relative to the parent directory | 13 # dependencies on the SDK should be specified relative to the parent directory |
14 # of the Mojo public SDK in |mojo_sdk_deps| rather than via absolute paths in | 14 # of the Mojo public SDK in |mojo_sdk_deps| rather than via absolute paths in |
15 # |deps|. | 15 # |deps|. |
16 # | 16 # |
17 # Parameters: | 17 # Parameters: |
18 # | 18 # |
19 # sources (optional if one of the deps sets listed below is present) | 19 # sources (optional if one of the deps sets listed below is present) |
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 } | 205 } |
206 | 206 |
207 source_set(target_name) { | 207 source_set(target_name) { |
208 if (defined(invoker.visibility)) { | 208 if (defined(invoker.visibility)) { |
209 visibility = invoker.visibility | 209 visibility = invoker.visibility |
210 } | 210 } |
211 if (defined(invoker.testonly)) { | 211 if (defined(invoker.testonly)) { |
212 testonly = invoker.testonly | 212 testonly = invoker.testonly |
213 } | 213 } |
214 if (defined(invoker.sources)) { | 214 if (defined(invoker.sources)) { |
215 sources = process_file_template(invoker.sources, generator_cpp_outputs) | |
216 data = process_file_template(invoker.sources, generator_js_outputs) | 215 data = process_file_template(invoker.sources, generator_js_outputs) |
217 } | 216 } |
218 | 217 |
219 public_configs = | 218 public_configs = |
220 rebase_path([ "mojo/public/build/config:mojo_sdk" ], ".", mojo_root) | 219 rebase_path([ "mojo/public/build/config:mojo_sdk" ], ".", mojo_root) |
221 | 220 |
222 public_deps = rebase_path([ "mojo/public/cpp/bindings" ], ".", mojo_root) | 221 public_deps = rebase_path([ "mojo/public/cpp/bindings" ], ".", mojo_root) |
| 222 if (defined(invoker.sources)) { |
| 223 public_deps += [ ":${target_name}_cpp_sources" ] |
| 224 } |
223 public_deps += rebased_mojo_sdk_public_deps | 225 public_deps += rebased_mojo_sdk_public_deps |
224 if (defined(invoker.public_deps)) { | 226 if (defined(invoker.public_deps)) { |
225 public_deps += invoker.public_deps | 227 public_deps += invoker.public_deps |
226 } | 228 } |
227 | 229 |
228 deps = [] | 230 deps = [] |
229 if (defined(invoker.sources)) { | 231 if (defined(invoker.sources)) { |
230 deps += [ ":$generator_target_name" ] | 232 deps += [ ":$generator_target_name" ] |
231 } | 233 } |
232 deps += rebased_mojo_sdk_deps | 234 deps += rebased_mojo_sdk_deps |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
346 args = [ | 348 args = [ |
347 "--base-dir=$rebase_import_from", | 349 "--base-dir=$rebase_import_from", |
348 "--zip-inputs=$rebase_zip_inputs", | 350 "--zip-inputs=$rebase_zip_inputs", |
349 "--output=$rebase_output", | 351 "--output=$rebase_output", |
350 ] | 352 ] |
351 if (defined(invoker.sources)) { | 353 if (defined(invoker.sources)) { |
352 args += [ "--link-inputs=$rebase_inputs" ] | 354 args += [ "--link-inputs=$rebase_inputs" ] |
353 } | 355 } |
354 } | 356 } |
355 | 357 |
| 358 if (defined(invoker.sources)) { |
| 359 # The generated C++ source files. The main reason to introduce this target |
| 360 # is so that mojo/public/cpp/bindings can depend on mojom interfaces without |
| 361 # circular dependencies. |
| 362 source_set("${target_name}_cpp_sources") { |
| 363 if (defined(invoker.visibility)) { |
| 364 visibility = target_visibility + invoker.visibility |
| 365 } |
| 366 if (defined(invoker.testonly)) { |
| 367 testonly = invoker.testonly |
| 368 } |
| 369 sources = process_file_template(invoker.sources, generator_cpp_outputs) |
| 370 public_configs = |
| 371 rebase_path([ "mojo/public/build/config:mojo_sdk" ], ".", mojo_root) |
| 372 deps = [ ":$generator_target_name" ] |
| 373 } |
| 374 } |
| 375 |
356 if (is_android) { | 376 if (is_android) { |
357 import("//build/config/android/rules.gni") | 377 import("//build/config/android/rules.gni") |
358 | 378 |
359 java_target_name = target_name + "_java" | 379 java_target_name = target_name + "_java" |
360 android_library(java_target_name) { | 380 android_library(java_target_name) { |
361 deps = rebase_path([ | 381 deps = rebase_path([ |
362 "mojo/public/java:bindings", | 382 "mojo/public/java:bindings", |
363 "mojo/public/java:system", | 383 "mojo/public/java:system", |
364 ], | 384 ], |
365 ".", | 385 ".", |
366 mojo_root) | 386 mojo_root) |
367 | 387 |
368 foreach(d, all_deps) { | 388 foreach(d, all_deps) { |
369 # Resolve the name, so that a target //mojo/something becomes | 389 # Resolve the name, so that a target //mojo/something becomes |
370 # //mojo/something:something and we can append "_java" to get the java | 390 # //mojo/something:something and we can append "_java" to get the java |
371 # dependency name. | 391 # dependency name. |
372 full_name = get_label_info(d, "label_no_toolchain") | 392 full_name = get_label_info(d, "label_no_toolchain") |
373 deps += [ "${full_name}_java" ] | 393 deps += [ "${full_name}_java" ] |
374 } | 394 } |
375 | 395 |
376 if (defined(invoker.sources)) { | 396 if (defined(invoker.sources)) { |
377 srcjars = process_file_template(invoker.sources, generator_java_outputs) | 397 srcjars = process_file_template(invoker.sources, generator_java_outputs) |
378 } | 398 } |
379 } | 399 } |
380 } | 400 } |
381 } | 401 } |
OLD | NEW |