| 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 declare_args() { | 5 declare_args() { |
| 6 # Indicates whether typemapping should be supported in this build | 6 # Indicates whether typemapping should be supported in this build |
| 7 # configuration. This may be disabled when building external projects which | 7 # configuration. This may be disabled when building external projects which |
| 8 # depend on //mojo but which do not need/want all of the Chromium tree | 8 # depend on //mojo but which do not need/want all of the Chromium tree |
| 9 # dependencies that come with typemapping. | 9 # dependencies that come with typemapping. |
| 10 # | 10 # |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 } | 94 } |
| 95 | 95 |
| 96 # Generates targets for building C++, JavaScript and Java bindings from mojom | 96 # Generates targets for building C++, JavaScript and Java bindings from mojom |
| 97 # files. The output files will go under the generated file directory tree with | 97 # files. The output files will go under the generated file directory tree with |
| 98 # the same path as each input file. | 98 # the same path as each input file. |
| 99 # | 99 # |
| 100 # Other targets should depend on one of these generated targets (where "foo" | 100 # Other targets should depend on one of these generated targets (where "foo" |
| 101 # is the target name): | 101 # is the target name): |
| 102 # | 102 # |
| 103 # foo | 103 # foo |
| 104 # C++ and Javascript bindings. Other mojom targets should also depend on | 104 # C++ bindings. |
| 105 # this target. | |
| 106 # | 105 # |
| 107 # foo_blink | 106 # foo_blink |
| 108 # C++ bindings using Blink standard types. | 107 # C++ bindings using Blink standard types. |
| 109 # | 108 # |
| 110 # foo_java | 109 # foo_java |
| 111 # Java bindings. | 110 # Java bindings. |
| 112 # | 111 # |
| 112 # foo_js |
| 113 # JavaScript bindings; used as compile-time dependency. |
| 114 # |
| 115 # foo_js_data_deps |
| 116 # JavaScript bindings; used as run-time dependency. |
| 117 # |
| 113 # Parameters: | 118 # Parameters: |
| 114 # | 119 # |
| 115 # sources (optional if one of the deps sets listed below is present) | 120 # sources (optional if one of the deps sets listed below is present) |
| 116 # List of source .mojom files to compile. | 121 # List of source .mojom files to compile. |
| 117 # | 122 # |
| 118 # deps (optional) | 123 # deps (optional) |
| 119 # Note: this can contain only other mojom targets. | 124 # Note: this can contain only other mojom targets. |
| 120 # | 125 # |
| 121 # DEPRECATED: This is synonymous with public_deps because all mojom | 126 # DEPRECATED: This is synonymous with public_deps because all mojom |
| 122 # dependencies must be public by design. Please use public_deps. | 127 # dependencies must be public by design. Please use public_deps. |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 226 assert(defined(invoker.overridden_deps)) | 231 assert(defined(invoker.overridden_deps)) |
| 227 assert(defined(invoker.component_deps)) | 232 assert(defined(invoker.component_deps)) |
| 228 } | 233 } |
| 229 | 234 |
| 230 if (defined(invoker.overridden_deps_blink) || | 235 if (defined(invoker.overridden_deps_blink) || |
| 231 defined(invoker.component_deps_blink)) { | 236 defined(invoker.component_deps_blink)) { |
| 232 assert(defined(invoker.overridden_deps_blink)) | 237 assert(defined(invoker.overridden_deps_blink)) |
| 233 assert(defined(invoker.component_deps_blink)) | 238 assert(defined(invoker.component_deps_blink)) |
| 234 } | 239 } |
| 235 | 240 |
| 241 if (defined(invoker.use_new_js_bindings)) { |
| 242 assert(invoker.use_new_js_bindings || !invoker.use_new_js_bindings, |
| 243 "Surpress unused variable error when JS bindings are not needed.") |
| 244 } |
| 245 |
| 236 all_deps = [] | 246 all_deps = [] |
| 237 if (defined(invoker.deps)) { | 247 if (defined(invoker.deps)) { |
| 238 all_deps += invoker.deps | 248 all_deps += invoker.deps |
| 239 } | 249 } |
| 240 if (defined(invoker.public_deps)) { | 250 if (defined(invoker.public_deps)) { |
| 241 all_deps += invoker.public_deps | 251 all_deps += invoker.public_deps |
| 242 } | 252 } |
| 243 | 253 |
| 244 if (defined(invoker.component_macro_prefix)) { | 254 if (defined(invoker.component_macro_prefix)) { |
| 245 assert(defined(invoker.component_output_prefix)) | 255 assert(defined(invoker.component_output_prefix)) |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 variant_suffix = "_${variant}" | 459 variant_suffix = "_${variant}" |
| 450 cpp_only = true | 460 cpp_only = true |
| 451 } | 461 } |
| 452 type_mappings_target_name = "${target_name}${variant_suffix}__type_mappings" | 462 type_mappings_target_name = "${target_name}${variant_suffix}__type_mappings" |
| 453 type_mappings_path = | 463 type_mappings_path = |
| 454 "$target_gen_dir/${target_name}${variant_suffix}__type_mappings" | 464 "$target_gen_dir/${target_name}${variant_suffix}__type_mappings" |
| 455 active_typemaps = [] | 465 active_typemaps = [] |
| 456 enabled_sources = [] | 466 enabled_sources = [] |
| 457 if (defined(invoker.sources)) { | 467 if (defined(invoker.sources)) { |
| 458 generator_cpp_outputs = [] | 468 generator_cpp_outputs = [] |
| 459 generator_js_outputs = [] | |
| 460 generator_java_outputs = [] | 469 generator_java_outputs = [] |
| 461 variant_dash_suffix = "" | 470 variant_dash_suffix = "" |
| 462 if (defined(variant)) { | 471 if (defined(variant)) { |
| 463 variant_dash_suffix = "-${variant}" | 472 variant_dash_suffix = "-${variant}" |
| 464 } | 473 } |
| 465 generator_cpp_outputs += [ | 474 generator_cpp_outputs += [ |
| 466 "{{source_gen_dir}}/{{source_name_part}}.mojom${variant_dash_suffix}.cc"
, | 475 "{{source_gen_dir}}/{{source_name_part}}.mojom${variant_dash_suffix}.cc"
, |
| 467 "{{source_gen_dir}}/{{source_name_part}}.mojom${variant_dash_suffix}.h", | 476 "{{source_gen_dir}}/{{source_name_part}}.mojom${variant_dash_suffix}.h", |
| 468 ] | 477 ] |
| 469 enabled_sources = [] | 478 enabled_sources = [] |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 533 "${invoker.component_macro_prefix}${bindings_configuration.component
_macro_suffix}_IMPL", | 542 "${invoker.component_macro_prefix}${bindings_configuration.component
_macro_suffix}_IMPL", |
| 534 "--output_file", | 543 "--output_file", |
| 535 rebase_path(generated_export_header, root_build_dir), | 544 rebase_path(generated_export_header, root_build_dir), |
| 536 "--relative_path", | 545 "--relative_path", |
| 537 rebase_path(generated_export_header, root_gen_dir), | 546 rebase_path(generated_export_header, root_gen_dir), |
| 538 ] | 547 ] |
| 539 } | 548 } |
| 540 } | 549 } |
| 541 | 550 |
| 542 if (!cpp_only) { | 551 if (!cpp_only) { |
| 543 generator_js_outputs = | |
| 544 [ "{{source_gen_dir}}/{{source_name_part}}.mojom.js" ] | |
| 545 generator_java_outputs = | 552 generator_java_outputs = |
| 546 [ "{{source_gen_dir}}/{{source_name_part}}.mojom.srcjar" ] | 553 [ "{{source_gen_dir}}/{{source_name_part}}.mojom.srcjar" ] |
| 547 } | 554 } |
| 548 generator_target_name = "${target_name}${variant_suffix}__generator" | 555 generator_target_name = "${target_name}${variant_suffix}__generator" |
| 549 action_foreach(generator_target_name) { | 556 action_foreach(generator_target_name) { |
| 550 script = mojom_generator_script | 557 script = mojom_generator_script |
| 551 inputs = mojom_generator_sources | 558 inputs = mojom_generator_sources |
| 552 sources = invoker.sources | 559 sources = invoker.sources |
| 553 deps = [ | 560 deps = [ |
| 554 ":$type_mappings_target_name", | 561 ":$type_mappings_target_name", |
| 555 "//mojo/public/tools/bindings:precompile_templates", | 562 "//mojo/public/tools/bindings:precompile_templates", |
| 556 ] | 563 ] |
| 557 outputs = generator_cpp_outputs + generator_java_outputs + | 564 outputs = generator_cpp_outputs + generator_java_outputs |
| 558 generator_js_outputs | |
| 559 args = common_generator_args | 565 args = common_generator_args |
| 560 | 566 |
| 561 if (cpp_only) { | 567 if (cpp_only) { |
| 562 args += [ | 568 args += [ |
| 563 "-g", | 569 "-g", |
| 564 "c++", | 570 "c++", |
| 565 ] | 571 ] |
| 566 } else { | 572 } else { |
| 567 args += [ | 573 args += [ |
| 568 "-g", | 574 "-g", |
| 569 "c++,javascript,java", | 575 "c++,java", |
| 570 ] | 576 ] |
| 571 } | 577 } |
| 572 | 578 |
| 573 if (defined(bindings_configuration.variant)) { | 579 if (defined(bindings_configuration.variant)) { |
| 574 args += [ | 580 args += [ |
| 575 "--variant", | 581 "--variant", |
| 576 bindings_configuration.variant, | 582 bindings_configuration.variant, |
| 577 ] | 583 ] |
| 578 } | 584 } |
| 579 depfile = | 585 depfile = |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 617 invoker.export_class_attribute, | 623 invoker.export_class_attribute, |
| 618 "--export_header", | 624 "--export_header", |
| 619 invoker.export_header, | 625 invoker.export_header, |
| 620 ] | 626 ] |
| 621 } | 627 } |
| 622 } | 628 } |
| 623 | 629 |
| 624 if (!defined(invoker.use_once_callback) || invoker.use_once_callback) { | 630 if (!defined(invoker.use_once_callback) || invoker.use_once_callback) { |
| 625 args += [ "--use_once_callback" ] | 631 args += [ "--use_once_callback" ] |
| 626 } | 632 } |
| 627 | |
| 628 if (!defined(invoker.use_new_js_bindings) || | |
| 629 invoker.use_new_js_bindings) { | |
| 630 args += [ "--use_new_js_bindings" ] | |
| 631 } | |
| 632 } | 633 } |
| 633 } | 634 } |
| 634 | 635 |
| 635 action(type_mappings_target_name) { | 636 action(type_mappings_target_name) { |
| 636 inputs = _bindings_configuration_files | 637 inputs = _bindings_configuration_files |
| 637 outputs = [ | 638 outputs = [ |
| 638 type_mappings_path, | 639 type_mappings_path, |
| 639 ] | 640 ] |
| 640 script = "$mojom_generator_root/generate_type_mappings.py" | 641 script = "$mojom_generator_root/generate_type_mappings.py" |
| 641 deps = [] | 642 deps = [] |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 704 if (defined(bindings_configuration.for_blink) && | 705 if (defined(bindings_configuration.for_blink) && |
| 705 bindings_configuration.for_blink && | 706 bindings_configuration.for_blink && |
| 706 defined(invoker.visibility_blink)) { | 707 defined(invoker.visibility_blink)) { |
| 707 visibility = invoker.visibility_blink | 708 visibility = invoker.visibility_blink |
| 708 } else if (defined(invoker.visibility)) { | 709 } else if (defined(invoker.visibility)) { |
| 709 visibility = invoker.visibility | 710 visibility = invoker.visibility |
| 710 } | 711 } |
| 711 if (defined(invoker.testonly)) { | 712 if (defined(invoker.testonly)) { |
| 712 testonly = invoker.testonly | 713 testonly = invoker.testonly |
| 713 } | 714 } |
| 714 if (defined(invoker.sources) && !defined(bindings_configuration.variant))
{ | |
| 715 data = process_file_template(enabled_sources, generator_js_outputs) | |
| 716 } | |
| 717 defines = [] | 715 defines = [] |
| 718 if (defined(invoker.testonly)) { | 716 if (defined(invoker.testonly)) { |
| 719 testonly = invoker.testonly | 717 testonly = invoker.testonly |
| 720 } | 718 } |
| 721 if (defined(invoker.export_define)) { | 719 if (defined(invoker.export_define)) { |
| 722 defines += [ invoker.export_define ] | 720 defines += [ invoker.export_define ] |
| 723 } | 721 } |
| 724 if (defined(invoker.export_define_blink)) { | 722 if (defined(invoker.export_define_blink)) { |
| 725 defines += [ invoker.export_define_blink ] | 723 defines += [ invoker.export_define_blink ] |
| 726 } | 724 } |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 849 # dependency name. | 847 # dependency name. |
| 850 full_name = get_label_info(d, "label_no_toolchain") | 848 full_name = get_label_info(d, "label_no_toolchain") |
| 851 deps += [ "${full_name}_java" ] | 849 deps += [ "${full_name}_java" ] |
| 852 } | 850 } |
| 853 | 851 |
| 854 srcjar_deps = [ ":$java_srcjar_target_name" ] | 852 srcjar_deps = [ ":$java_srcjar_target_name" ] |
| 855 run_findbugs_override = false | 853 run_findbugs_override = false |
| 856 } | 854 } |
| 857 } | 855 } |
| 858 } | 856 } |
| 857 |
| 858 if (!defined(invoker.cpp_only) || !invoker.cpp_only) { |
| 859 if (defined(invoker.sources)) { |
| 860 generator_js_target_name = "${target_name}_js__generator" |
| 861 generator_js_outputs = |
| 862 [ "{{source_gen_dir}}/{{source_name_part}}.mojom.js" ] |
| 863 action_foreach(generator_js_target_name) { |
| 864 script = mojom_generator_script |
| 865 inputs = mojom_generator_sources |
| 866 sources = [] |
| 867 if (defined(invoker.sources)) { |
| 868 sources += invoker.sources |
| 869 } |
| 870 deps = [ |
| 871 "//mojo/public/tools/bindings:precompile_templates", |
| 872 ] |
| 873 outputs = generator_js_outputs |
| 874 args = common_generator_args |
| 875 args += [ |
| 876 "-g", |
| 877 "javascript", |
| 878 ] |
| 879 |
| 880 if (!defined(invoker.use_new_js_bindings) || |
| 881 invoker.use_new_js_bindings) { |
| 882 args += [ "--use_new_js_bindings" ] |
| 883 } |
| 884 } |
| 885 } |
| 886 |
| 887 js_target_name = target_name + "_js" |
| 888 group(js_target_name) { |
| 889 public_deps = [] |
| 890 if (defined(invoker.sources)) { |
| 891 public_deps += [ ":$generator_js_target_name" ] |
| 892 } |
| 893 |
| 894 foreach(d, all_deps) { |
| 895 full_name = get_label_info(d, "label_no_toolchain") |
| 896 public_deps += [ "${full_name}_js" ] |
| 897 } |
| 898 } |
| 899 |
| 900 js_data_deps_target_name = target_name + "_js_data_deps" |
| 901 group(js_data_deps_target_name) { |
| 902 deps = [] |
| 903 if (defined(invoker.sources)) { |
| 904 data = process_file_template(invoker.sources, generator_js_outputs) |
| 905 deps += [ ":$generator_js_target_name" ] |
| 906 } |
| 907 |
| 908 data_deps = [] |
| 909 foreach(d, all_deps) { |
| 910 full_name = get_label_info(d, "label_no_toolchain") |
| 911 data_deps += [ "${full_name}_js_data_deps" ] |
| 912 } |
| 913 } |
| 914 } |
| 859 } | 915 } |
| 860 | 916 |
| 861 # A helper for the mojom() template above when component libraries are desired | 917 # A helper for the mojom() template above when component libraries are desired |
| 862 # for generated C++ bindings units. Supports all the same arguments as mojom() | 918 # for generated C++ bindings units. Supports all the same arguments as mojom() |
| 863 # except for the optional |component_output_prefix| and |component_macro_prefix| | 919 # except for the optional |component_output_prefix| and |component_macro_prefix| |
| 864 # arguments. These are instead shortened to |output_prefix| and |macro_prefix| | 920 # arguments. These are instead shortened to |output_prefix| and |macro_prefix| |
| 865 # and are *required*. | 921 # and are *required*. |
| 866 template("mojom_component") { | 922 template("mojom_component") { |
| 867 assert(defined(invoker.output_prefix) && defined(invoker.macro_prefix)) | 923 assert(defined(invoker.output_prefix) && defined(invoker.macro_prefix)) |
| 868 | 924 |
| 869 mojom(target_name) { | 925 mojom(target_name) { |
| 870 forward_variables_from(invoker, | 926 forward_variables_from(invoker, |
| 871 "*", | 927 "*", |
| 872 [ | 928 [ |
| 873 "output_prefix", | 929 "output_prefix", |
| 874 "macro_prefix", | 930 "macro_prefix", |
| 875 ]) | 931 ]) |
| 876 component_output_prefix = invoker.output_prefix | 932 component_output_prefix = invoker.output_prefix |
| 877 component_macro_prefix = invoker.macro_prefix | 933 component_macro_prefix = invoker.macro_prefix |
| 878 } | 934 } |
| 879 } | 935 } |
| OLD | NEW |