Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(203)

Side by Side Diff: mojo/public/tools/bindings/mojom.gni

Issue 2944153002: Mojo JS bindings: introduce new targets "foo_js"/"foo_js_data_deps" for mojom("foo"). (Closed)
Patch Set: . Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/public/js/BUILD.gn ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « mojo/public/js/BUILD.gn ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698