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++/JavaScript/Java source files from mojom files. The output files | 7 # Generate C++/JavaScript/Java 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 # |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 template("mojom") { | 49 template("mojom") { |
50 assert( | 50 assert( |
51 defined(invoker.sources) || defined(invoker.deps) || | 51 defined(invoker.sources) || defined(invoker.deps) || |
52 defined(invoker.public_deps) || defined(invoker.mojo_sdk_deps) || | 52 defined(invoker.public_deps) || defined(invoker.mojo_sdk_deps) || |
53 defined(invoker.mojo_sdk_public_deps), | 53 defined(invoker.mojo_sdk_public_deps), |
54 "\"sources\" or \"deps\" must be defined for the $target_name template.") | 54 "\"sources\" or \"deps\" must be defined for the $target_name template.") |
55 | 55 |
56 cpp_sources_suffix = "cpp_sources" | 56 cpp_sources_suffix = "cpp_sources" |
57 cpp_sources_target_name = "${target_name}_${cpp_sources_suffix}" | 57 cpp_sources_target_name = "${target_name}_${cpp_sources_suffix}" |
58 if (defined(invoker.sources)) { | 58 if (defined(invoker.sources)) { |
59 generator_root = rebase_path("mojo/public/tools/bindings", ".", mojo_root) | 59 generator_root = "//mojo/public/tools/bindings" |
60 generator_script = "$generator_root/mojom_bindings_generator.py" | 60 generator_script = "$generator_root/mojom_bindings_generator.py" |
61 generator_sources = [ | 61 generator_sources = [ |
62 generator_script, | 62 generator_script, |
63 "$generator_root/generators/cpp_templates/enum_macros.tmpl", | 63 "$generator_root/generators/cpp_templates/enum_macros.tmpl", |
64 "$generator_root/generators/cpp_templates/interface_declaration.tmpl", | 64 "$generator_root/generators/cpp_templates/interface_declaration.tmpl", |
65 "$generator_root/generators/cpp_templates/interface_definition.tmpl", | 65 "$generator_root/generators/cpp_templates/interface_definition.tmpl", |
66 "$generator_root/generators/cpp_templates/interface_macros.tmpl", | 66 "$generator_root/generators/cpp_templates/interface_macros.tmpl", |
67 "$generator_root/generators/cpp_templates/interface_proxy_declaration.tmpl
", | 67 "$generator_root/generators/cpp_templates/interface_proxy_declaration.tmpl
", |
68 "$generator_root/generators/cpp_templates/interface_request_validator_decl
aration.tmpl", | 68 "$generator_root/generators/cpp_templates/interface_request_validator_decl
aration.tmpl", |
69 "$generator_root/generators/cpp_templates/interface_response_validator_dec
laration.tmpl", | 69 "$generator_root/generators/cpp_templates/interface_response_validator_dec
laration.tmpl", |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
130 [ "{{source_gen_dir}}/{{source_name_part}}.mojom.js" ] | 130 [ "{{source_gen_dir}}/{{source_name_part}}.mojom.js" ] |
131 generator_java_outputs = | 131 generator_java_outputs = |
132 [ "{{source_gen_dir}}/{{source_name_part}}.mojom.srcjar" ] | 132 [ "{{source_gen_dir}}/{{source_name_part}}.mojom.srcjar" ] |
133 } | 133 } |
134 | 134 |
135 rebased_mojo_sdk_public_deps = [] | 135 rebased_mojo_sdk_public_deps = [] |
136 if (defined(invoker.mojo_sdk_public_deps)) { | 136 if (defined(invoker.mojo_sdk_public_deps)) { |
137 foreach(sdk_dep, invoker.mojo_sdk_public_deps) { | 137 foreach(sdk_dep, invoker.mojo_sdk_public_deps) { |
138 # Check that the SDK dep was not mistakenly given as an absolute path. | 138 # Check that the SDK dep was not mistakenly given as an absolute path. |
139 assert(get_path_info(sdk_dep, "abspath") != sdk_dep) | 139 assert(get_path_info(sdk_dep, "abspath") != sdk_dep) |
140 rebased_mojo_sdk_public_deps += [ rebase_path(sdk_dep, ".", mojo_root) ] | 140 rebased_mojo_sdk_public_deps += [ rebase_path(sdk_dep, ".", "//") ] |
141 } | 141 } |
142 } | 142 } |
143 | 143 |
144 rebased_mojo_sdk_deps = [] | 144 rebased_mojo_sdk_deps = [] |
145 if (defined(invoker.mojo_sdk_deps)) { | 145 if (defined(invoker.mojo_sdk_deps)) { |
146 foreach(sdk_dep, invoker.mojo_sdk_deps) { | 146 foreach(sdk_dep, invoker.mojo_sdk_deps) { |
147 # Check that the SDK dep was not mistakenly given as an absolute path. | 147 # Check that the SDK dep was not mistakenly given as an absolute path. |
148 assert(get_path_info(sdk_dep, "abspath") != sdk_dep) | 148 assert(get_path_info(sdk_dep, "abspath") != sdk_dep) |
149 rebased_mojo_sdk_deps += [ rebase_path(sdk_dep, ".", mojo_root) ] | 149 rebased_mojo_sdk_deps += [ rebase_path(sdk_dep, ".", "//") ] |
150 } | 150 } |
151 } | 151 } |
152 | 152 |
153 if (defined(invoker.sources)) { | 153 if (defined(invoker.sources)) { |
154 generator_target_name = target_name + "__generator" | 154 generator_target_name = target_name + "__generator" |
155 action_foreach(generator_target_name) { | 155 action_foreach(generator_target_name) { |
156 script = generator_script | 156 script = generator_script |
157 inputs = generator_sources | 157 inputs = generator_sources |
158 sources = invoker.sources | 158 sources = invoker.sources |
159 outputs = | 159 outputs = |
160 generator_cpp_outputs + generator_java_outputs + generator_js_outputs | 160 generator_cpp_outputs + generator_java_outputs + generator_js_outputs |
161 args = [ | 161 args = [ |
162 "{{source}}", | 162 "{{source}}", |
163 "--use_bundled_pylibs", | 163 "--use_bundled_pylibs", |
164 "-d", | 164 "-d", |
165 rebase_path("//", root_build_dir), | 165 rebase_path("//", root_build_dir), |
166 "-I", | 166 "-I", |
167 rebase_path("//", root_build_dir), | 167 rebase_path("//", root_build_dir), |
168 "-I", | |
169 rebase_path(mojo_root, root_build_dir), | |
170 "-o", | 168 "-o", |
171 rebase_path(root_gen_dir), | 169 rebase_path(root_gen_dir), |
172 ] | 170 ] |
173 | 171 |
174 if (defined(invoker.import_dirs)) { | 172 if (defined(invoker.import_dirs)) { |
175 foreach(import_dir, invoker.import_dirs) { | 173 foreach(import_dir, invoker.import_dirs) { |
176 args += [ | 174 args += [ |
177 "-I", | 175 "-I", |
178 rebase_path(import_dir, root_build_dir), | 176 rebase_path(import_dir, root_build_dir), |
179 ] | 177 ] |
180 } | 178 } |
181 } | 179 } |
182 } | 180 } |
183 } | 181 } |
184 | 182 |
185 source_set(target_name) { | 183 source_set(target_name) { |
186 if (defined(invoker.visibility)) { | 184 if (defined(invoker.visibility)) { |
187 visibility = invoker.visibility | 185 visibility = invoker.visibility |
188 } | 186 } |
189 if (defined(invoker.testonly)) { | 187 if (defined(invoker.testonly)) { |
190 testonly = invoker.testonly | 188 testonly = invoker.testonly |
191 } | 189 } |
192 if (defined(invoker.sources)) { | 190 if (defined(invoker.sources)) { |
193 data = process_file_template(invoker.sources, generator_js_outputs) | 191 data = process_file_template(invoker.sources, generator_js_outputs) |
194 } | 192 } |
195 | 193 |
196 public_deps = rebase_path([ "mojo/public/cpp/bindings" ], ".", mojo_root) | 194 public_deps = [ |
| 195 "//mojo/public/cpp/bindings", |
| 196 ] |
197 if (defined(invoker.sources)) { | 197 if (defined(invoker.sources)) { |
198 public_deps += [ ":${cpp_sources_target_name}" ] | 198 public_deps += [ ":${cpp_sources_target_name}" ] |
199 } | 199 } |
200 public_deps += rebased_mojo_sdk_public_deps | 200 public_deps += rebased_mojo_sdk_public_deps |
201 if (defined(invoker.public_deps)) { | 201 if (defined(invoker.public_deps)) { |
202 public_deps += invoker.public_deps | 202 public_deps += invoker.public_deps |
203 } | 203 } |
204 | 204 |
205 deps = [] | 205 deps = [] |
206 if (defined(invoker.sources)) { | 206 if (defined(invoker.sources)) { |
207 public_deps += [ ":$generator_target_name" ] | 207 public_deps += [ ":$generator_target_name" ] |
208 } | 208 } |
209 deps += rebased_mojo_sdk_deps | 209 deps += rebased_mojo_sdk_deps |
210 if (defined(invoker.deps)) { | 210 if (defined(invoker.deps)) { |
211 deps += invoker.deps | 211 deps += invoker.deps |
212 } | 212 } |
213 if (defined(invoker.mojo_sdk_deps)) { | 213 if (defined(invoker.mojo_sdk_deps)) { |
214 foreach(sdk_dep, invoker.mojo_sdk_deps) { | 214 foreach(sdk_dep, invoker.mojo_sdk_deps) { |
215 # Check that the SDK dep was not mistakenly given as an absolute path. | 215 # Check that the SDK dep was not mistakenly given as an absolute path. |
216 assert(get_path_info(sdk_dep, "abspath") != sdk_dep) | 216 assert(get_path_info(sdk_dep, "abspath") != sdk_dep) |
217 deps += [ rebase_path(sdk_dep, ".", mojo_root) ] | 217 deps += [ rebase_path(sdk_dep, ".", "//") ] |
218 } | 218 } |
219 } | 219 } |
220 } | 220 } |
221 | 221 |
222 all_deps = rebased_mojo_sdk_deps + rebased_mojo_sdk_public_deps | 222 all_deps = rebased_mojo_sdk_deps + rebased_mojo_sdk_public_deps |
223 if (defined(invoker.deps)) { | 223 if (defined(invoker.deps)) { |
224 all_deps += invoker.deps | 224 all_deps += invoker.deps |
225 } | 225 } |
226 if (defined(invoker.public_deps)) { | 226 if (defined(invoker.public_deps)) { |
227 all_deps += invoker.public_deps | 227 all_deps += invoker.public_deps |
(...skipping 21 matching lines...) Expand all Loading... |
249 # this target *except* mojo/public/cpp/bindings and other *_cpp_sources | 249 # this target *except* mojo/public/cpp/bindings and other *_cpp_sources |
250 # targets. | 250 # targets. |
251 source_set(cpp_sources_target_name) { | 251 source_set(cpp_sources_target_name) { |
252 if (defined(invoker.testonly)) { | 252 if (defined(invoker.testonly)) { |
253 testonly = invoker.testonly | 253 testonly = invoker.testonly |
254 } | 254 } |
255 sources = process_file_template(invoker.sources, generator_cpp_outputs) | 255 sources = process_file_template(invoker.sources, generator_cpp_outputs) |
256 deps = [ | 256 deps = [ |
257 ":$generator_target_name", | 257 ":$generator_target_name", |
258 "//base", | 258 "//base", |
259 rebase_path("mojo/public/interfaces/bindings:bindings__generator", | 259 "//mojo/public/interfaces/bindings:bindings__generator", |
260 ".", | |
261 mojo_root), | |
262 ] | 260 ] |
263 foreach(d, all_deps) { | 261 foreach(d, all_deps) { |
264 # Resolve the name, so that a target //mojo/something becomes | 262 # Resolve the name, so that a target //mojo/something becomes |
265 # //mojo/something:something and we can append cpp_sources_suffix to | 263 # //mojo/something:something and we can append cpp_sources_suffix to |
266 # get the cpp dependency name. | 264 # get the cpp dependency name. |
267 full_name = get_label_info(d, "label_no_toolchain") | 265 full_name = get_label_info(d, "label_no_toolchain") |
268 deps += [ "${full_name}_${cpp_sources_suffix}" ] | 266 deps += [ "${full_name}_${cpp_sources_suffix}" ] |
269 } | 267 } |
270 if (!defined(invoker.with_environment) || invoker.with_environment) { | 268 if (!defined(invoker.with_environment) || invoker.with_environment) { |
271 deps += [ "//mojo/environment:chromium" ] | 269 deps += [ "//mojo/environment:chromium" ] |
272 } | 270 } |
273 } | 271 } |
274 } | 272 } |
275 | 273 |
276 if (is_android) { | 274 if (is_android) { |
277 import("//build/config/android/rules.gni") | 275 import("//build/config/android/rules.gni") |
278 | 276 |
279 java_srcjar_target_name = target_name + "_java_sources" | 277 java_srcjar_target_name = target_name + "_java_sources" |
280 action(java_srcjar_target_name) { | 278 action(java_srcjar_target_name) { |
281 script = rebase_path("mojo/public/tools/gn/zip.py", ".", mojo_root) | 279 script = "//mojo/public/tools/gn/zip.py" |
282 inputs = process_file_template(invoker.sources, generator_java_outputs) | 280 inputs = process_file_template(invoker.sources, generator_java_outputs) |
283 output = "$target_gen_dir/$target_name.srcjar" | 281 output = "$target_gen_dir/$target_name.srcjar" |
284 outputs = [ | 282 outputs = [ |
285 output, | 283 output, |
286 ] | 284 ] |
287 rebase_inputs = rebase_path(inputs, root_build_dir) | 285 rebase_inputs = rebase_path(inputs, root_build_dir) |
288 rebase_output = rebase_path(output, root_build_dir) | 286 rebase_output = rebase_path(output, root_build_dir) |
289 args = [ | 287 args = [ |
290 "--zip-inputs=$rebase_inputs", | 288 "--zip-inputs=$rebase_inputs", |
291 "--output=$rebase_output", | 289 "--output=$rebase_output", |
292 ] | 290 ] |
293 deps = [ | 291 deps = [ |
294 ":$generator_target_name", | 292 ":$generator_target_name", |
295 ] | 293 ] |
296 } | 294 } |
297 | 295 |
298 java_target_name = target_name + "_java" | 296 java_target_name = target_name + "_java" |
299 android_library(java_target_name) { | 297 android_library(java_target_name) { |
300 deps = rebase_path([ | 298 deps = [ |
301 "mojo/public/java:bindings", | 299 "//mojo/public/java:bindings", |
302 "mojo/public/java:system", | 300 "//mojo/public/java:system", |
303 ], | 301 ] |
304 ".", | |
305 mojo_root) | |
306 | 302 |
307 foreach(d, all_deps) { | 303 foreach(d, all_deps) { |
308 # Resolve the name, so that a target //mojo/something becomes | 304 # Resolve the name, so that a target //mojo/something becomes |
309 # //mojo/something:something and we can append "_java" to get the java | 305 # //mojo/something:something and we can append "_java" to get the java |
310 # dependency name. | 306 # dependency name. |
311 full_name = get_label_info(d, "label_no_toolchain") | 307 full_name = get_label_info(d, "label_no_toolchain") |
312 deps += [ "${full_name}_java" ] | 308 deps += [ "${full_name}_java" ] |
313 } | 309 } |
314 | 310 |
315 srcjar_deps = [ ":$java_srcjar_target_name" ] | 311 srcjar_deps = [ ":$java_srcjar_target_name" ] |
316 } | 312 } |
317 } | 313 } |
318 } | 314 } |
OLD | NEW |