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 # |
| 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, |
| 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 |
| 15 # |deps|. |
| 16 # |
11 # Parameters: | 17 # Parameters: |
12 # | 18 # |
13 # sources (required) | 19 # sources (required) |
14 # List of source .mojom files to compile. | 20 # List of source .mojom files to compile. |
15 # | 21 # |
16 # deps (optional) | 22 # deps (optional) |
17 # Note: this can contain only other mojom targets. | 23 # Note: this can contain only other mojom targets. |
18 # | 24 # |
| 25 # mojo_sdk_deps (optional) |
| 26 # List of deps specified relative to the parent directory of the Mojo |
| 27 # public SDK. These deps will be added as ordinary deps rebased to the |
| 28 # current directory. |
| 29 # |
19 # public_deps (optional) | 30 # public_deps (optional) |
20 # Note: this can contain only other mojom targets. | 31 # Note: this can contain only other mojom targets. |
21 # | 32 # |
| 33 # mojo_sdk_public_deps (optional) |
| 34 # List of public deps specified relative to the parent directory of the |
| 35 # Mojo public SDK. These deps will be added as ordinary public deps |
| 36 # rebased to the current directory. |
| 37 # |
22 # testonly (optional) | 38 # testonly (optional) |
23 # | 39 # |
24 # visibility (optional) | 40 # visibility (optional) |
25 template("mojom") { | 41 template("mojom") { |
26 assert(defined(invoker.sources), | 42 assert(defined(invoker.sources), |
27 "\"sources\" must be defined for the $target_name template.") | 43 "\"sources\" must be defined for the $target_name template.") |
28 | 44 |
29 generator_root = rebase_path("mojo/public/tools/bindings", ".", mojo_root) | 45 generator_root = rebase_path("mojo/public/tools/bindings", ".", mojo_root) |
30 generator_script = "$generator_root/mojom_bindings_generator.py" | 46 generator_script = "$generator_root/mojom_bindings_generator.py" |
31 generator_sources = [ | 47 generator_sources = [ |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 "{{source_gen_dir}}/{{source_name_part}}.mojom-internal.h", | 113 "{{source_gen_dir}}/{{source_name_part}}.mojom-internal.h", |
98 ] | 114 ] |
99 generator_dart_outputs = | 115 generator_dart_outputs = |
100 [ "{{source_gen_dir}}/{{source_name_part}}.mojom.dart" ] | 116 [ "{{source_gen_dir}}/{{source_name_part}}.mojom.dart" ] |
101 generator_java_outputs = | 117 generator_java_outputs = |
102 [ "{{source_gen_dir}}/{{source_name_part}}.mojom.srcjar" ] | 118 [ "{{source_gen_dir}}/{{source_name_part}}.mojom.srcjar" ] |
103 generator_js_outputs = [ "{{source_gen_dir}}/{{source_name_part}}.mojom.js" ] | 119 generator_js_outputs = [ "{{source_gen_dir}}/{{source_name_part}}.mojom.js" ] |
104 generator_python_outputs = | 120 generator_python_outputs = |
105 [ "{{source_gen_dir}}/{{source_name_part}}_mojom.py" ] | 121 [ "{{source_gen_dir}}/{{source_name_part}}_mojom.py" ] |
106 | 122 |
| 123 rebased_mojo_sdk_public_deps = [] |
| 124 if (defined(invoker.mojo_sdk_public_deps)) { |
| 125 foreach(sdk_dep, invoker.mojo_sdk_public_deps) { |
| 126 # Check that the SDK dep was not mistakenly given as an absolute path. |
| 127 assert(get_path_info(sdk_dep, "abspath") != sdk_dep) |
| 128 rebased_mojo_sdk_public_deps += [ rebase_path(sdk_dep, ".", mojo_root) ] |
| 129 } |
| 130 } |
| 131 |
| 132 rebased_mojo_sdk_deps = [] |
| 133 if (defined(invoker.mojo_sdk_deps)) { |
| 134 foreach(sdk_dep, invoker.mojo_sdk_deps) { |
| 135 # Check that the SDK dep was not mistakenly given as an absolute path. |
| 136 assert(get_path_info(sdk_dep, "abspath") != sdk_dep) |
| 137 rebased_mojo_sdk_deps += [ rebase_path(sdk_dep, ".", mojo_root) ] |
| 138 } |
| 139 } |
| 140 |
107 if (defined(invoker.visibility)) { | 141 if (defined(invoker.visibility)) { |
108 # Need to save this because the the target_name is overwritten inside the | 142 # Need to save this because the the target_name is overwritten inside the |
109 # action to be that of the action itself. Only define this in the case the | 143 # action to be that of the action itself. Only define this in the case the |
110 # var is used to avoid unused var error. | 144 # var is used to avoid unused var error. |
111 target_visibility = [ ":$target_name" ] | 145 target_visibility = [ ":$target_name" ] |
112 } | 146 } |
113 | 147 |
114 generator_target_name = target_name + "__generator" | 148 generator_target_name = target_name + "__generator" |
115 action_foreach(generator_target_name) { | 149 action_foreach(generator_target_name) { |
116 if (defined(invoker.visibility)) { | 150 if (defined(invoker.visibility)) { |
(...skipping 26 matching lines...) Expand all Loading... |
143 if (defined(invoker.testonly)) { | 177 if (defined(invoker.testonly)) { |
144 testonly = invoker.testonly | 178 testonly = invoker.testonly |
145 } | 179 } |
146 sources = process_file_template(invoker.sources, generator_cpp_outputs) | 180 sources = process_file_template(invoker.sources, generator_cpp_outputs) |
147 data = process_file_template(invoker.sources, generator_js_outputs) | 181 data = process_file_template(invoker.sources, generator_js_outputs) |
148 | 182 |
149 public_configs = | 183 public_configs = |
150 rebase_path([ "mojo/public/build/config:mojo_sdk" ], ".", mojo_root) | 184 rebase_path([ "mojo/public/build/config:mojo_sdk" ], ".", mojo_root) |
151 | 185 |
152 public_deps = rebase_path([ "mojo/public/cpp/bindings" ], ".", mojo_root) | 186 public_deps = rebase_path([ "mojo/public/cpp/bindings" ], ".", mojo_root) |
| 187 public_deps += rebased_mojo_sdk_public_deps |
153 if (defined(invoker.public_deps)) { | 188 if (defined(invoker.public_deps)) { |
154 public_deps += invoker.public_deps | 189 public_deps += invoker.public_deps |
155 } | 190 } |
156 | 191 |
157 deps = [ | 192 deps = [ |
158 ":$generator_target_name", | 193 ":$generator_target_name", |
159 ] | 194 ] |
| 195 deps += rebased_mojo_sdk_deps |
160 if (defined(invoker.deps)) { | 196 if (defined(invoker.deps)) { |
161 deps += invoker.deps | 197 deps += invoker.deps |
162 } | 198 } |
163 } | 199 } |
164 | 200 |
165 all_deps = [] | 201 all_deps = rebased_mojo_sdk_deps + rebased_mojo_sdk_public_deps |
166 if (defined(invoker.deps)) { | 202 if (defined(invoker.deps)) { |
167 all_deps += invoker.deps | 203 all_deps += invoker.deps |
168 } | 204 } |
169 if (defined(invoker.public_deps)) { | 205 if (defined(invoker.public_deps)) { |
170 all_deps += invoker.public_deps | 206 all_deps += invoker.public_deps |
171 } | 207 } |
172 | 208 |
173 group("${target_name}__is_mojom") { | 209 group("${target_name}__is_mojom") { |
174 } | 210 } |
175 | 211 |
(...skipping 25 matching lines...) Expand all Loading... |
201 # //mojo/something:something and we can append "_java" to get the java | 237 # //mojo/something:something and we can append "_java" to get the java |
202 # dependency name. | 238 # dependency name. |
203 full_name = get_label_info(d, "label_no_toolchain") | 239 full_name = get_label_info(d, "label_no_toolchain") |
204 deps += [ "${full_name}_java" ] | 240 deps += [ "${full_name}_java" ] |
205 } | 241 } |
206 | 242 |
207 srcjars = process_file_template(invoker.sources, generator_java_outputs) | 243 srcjars = process_file_template(invoker.sources, generator_java_outputs) |
208 } | 244 } |
209 } | 245 } |
210 } | 246 } |
OLD | NEW |