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 # Generate C++ and JavaScript source files from mojom files. The output files | 5 # Generate C++ and JavaScript source files from mojom files. The output files |
6 # will go under the generated file directory tree with the same path as each | 6 # will go under the generated file directory tree with the same path as each |
7 # input file. | 7 # input file. |
8 # | 8 # |
9 # Parameters: | 9 # Parameters: |
10 # | 10 # |
11 # sources (required) | 11 # sources (required) |
12 # List of source .mojom files to compile. | 12 # List of source .mojom files to compile. |
13 # | 13 # |
14 # deps (optional) | 14 # deps (optional) |
| 15 # |
15 # visibility (optional) | 16 # visibility (optional) |
16 # Normal meaning. | 17 # Normal meaning. However, this must be a list (normal visibility |
| 18 # allows a single string). |
17 template("mojom") { | 19 template("mojom") { |
18 assert(defined(invoker.sources), | 20 assert(defined(invoker.sources), |
19 "\"sources\" must be defined for the $target_name template.") | 21 "\"sources\" must be defined for the $target_name template.") |
20 | 22 |
21 generator_root = "//mojo/public/tools/bindings" | 23 generator_root = "//mojo/public/tools/bindings" |
22 generator_script = "$generator_root/mojom_bindings_generator.py" | 24 generator_script = "$generator_root/mojom_bindings_generator.py" |
23 generator_sources = [ | 25 generator_sources = [ |
24 generator_script, | 26 generator_script, |
25 "$generator_root/generators/cpp_templates/enum_declaration.tmpl", | 27 "$generator_root/generators/cpp_templates/enum_declaration.tmpl", |
26 "$generator_root/generators/cpp_templates/interface_declaration.tmpl", | 28 "$generator_root/generators/cpp_templates/interface_declaration.tmpl", |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 "{{source_gen_dir}}/{{source_name_part}}.mojom.h", | 70 "{{source_gen_dir}}/{{source_name_part}}.mojom.h", |
69 "{{source_gen_dir}}/{{source_name_part}}.mojom-internal.h", | 71 "{{source_gen_dir}}/{{source_name_part}}.mojom-internal.h", |
70 ] | 72 ] |
71 generator_js_outputs = [ | 73 generator_js_outputs = [ |
72 "{{source_gen_dir}}/{{source_name_part}}.mojom.js", | 74 "{{source_gen_dir}}/{{source_name_part}}.mojom.js", |
73 ] | 75 ] |
74 generator_python_outputs = [ | 76 generator_python_outputs = [ |
75 "{{source_gen_dir}}/{{source_name_part}}_mojom.py", | 77 "{{source_gen_dir}}/{{source_name_part}}_mojom.py", |
76 ] | 78 ] |
77 | 79 |
78 target_visibility = ":$target_name" | 80 if (defined(invoker.visibility)) { |
| 81 # Need to save this because the the target_name is overwritten inside the |
| 82 # action to be that of the action itself. Only define this in the case the |
| 83 # var is used to avoid unused var error. |
| 84 target_visibility = ":$target_name" |
| 85 } |
79 | 86 |
80 generator_target_name = target_name + "_generator" | 87 generator_target_name = target_name + "_generator" |
81 action_foreach(generator_target_name) { | 88 action_foreach(generator_target_name) { |
82 visibility = target_visibility | 89 if (defined(invoker.visibility)) { |
| 90 visibility = [ target_visibility ] + invoker.visibility # If you get an e
rror here, make your visibility be a list. |
| 91 } |
83 script = generator_script | 92 script = generator_script |
84 inputs = generator_sources | 93 inputs = generator_sources |
85 sources = invoker.sources | 94 sources = invoker.sources |
86 outputs = generator_cpp_outputs + | 95 outputs = generator_cpp_outputs + |
87 generator_js_outputs + | 96 generator_js_outputs + |
88 generator_python_outputs | 97 generator_python_outputs |
89 args = [ | 98 args = [ |
90 "{{source}}", | 99 "{{source}}", |
91 "--use_chromium_bundled_pylibs", | 100 "--use_chromium_bundled_pylibs", |
92 "-d", rebase_path("//", root_build_dir), | 101 "-d", rebase_path("//", root_build_dir), |
(...skipping 10 matching lines...) Expand all Loading... |
103 data = process_file_template(invoker.sources, generator_js_outputs) | 112 data = process_file_template(invoker.sources, generator_js_outputs) |
104 deps = [ | 113 deps = [ |
105 ":$generator_target_name", | 114 ":$generator_target_name", |
106 "//mojo/public/cpp/bindings", | 115 "//mojo/public/cpp/bindings", |
107 ] | 116 ] |
108 if (defined(invoker.deps)) { | 117 if (defined(invoker.deps)) { |
109 deps += invoker.deps | 118 deps += invoker.deps |
110 } | 119 } |
111 } | 120 } |
112 } | 121 } |
OLD | NEW |