OLD | NEW |
1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 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 # This file has rules for making Dart packages and Dart-based Mojo applications. | 5 # This file has rules for making Dart packages and Dart-based Mojo applications. |
6 # The entrypoint is the dart_pkg rule. | 6 # The entrypoint is the dart_pkg rule. |
7 | 7 |
8 import("../mojo.gni") | 8 import("../mojo.gni") |
9 import("//build/module_args/mojo.gni") | 9 import("//build/module_args/mojo.gni") |
10 import("//build/module_args/dart.gni") | 10 import("//build/module_args/dart.gni") |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 | 191 |
192 sdk_ext_mappings = [] | 192 sdk_ext_mappings = [] |
193 if (defined(invoker.sdk_ext_mappings)) { | 193 if (defined(invoker.sdk_ext_mappings)) { |
194 sdk_ext_mappings += invoker.sdk_ext_mappings | 194 sdk_ext_mappings += invoker.sdk_ext_mappings |
195 } | 195 } |
196 | 196 |
197 script = rebase_path("mojo/public/tools/dart_pkg.py", ".", mojo_sdk_root) | 197 script = rebase_path("mojo/public/tools/dart_pkg.py", ".", mojo_sdk_root) |
198 | 198 |
199 entrypoints = [] | 199 entrypoints = [] |
200 if (defined(invoker.apps)) { | 200 if (defined(invoker.apps)) { |
201 entrypoints += invoker.apps | 201 foreach(app, invoker.apps) { |
| 202 entrypoints += [ app[1] ] |
| 203 } |
202 } | 204 } |
203 if (defined(invoker.libs)) { | 205 if (defined(invoker.libs)) { |
204 entrypoints += invoker.libs | 206 entrypoints += invoker.libs |
205 } | 207 } |
206 | 208 |
207 sources = entrypoints | 209 sources = entrypoints |
208 pkg_sources = entrypoints | 210 pkg_sources = entrypoints |
209 if (defined(invoker.sources)) { | 211 if (defined(invoker.sources)) { |
210 sources += invoker.sources | 212 sources += invoker.sources |
211 pkg_sources += invoker.sources | 213 pkg_sources += invoker.sources |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 rebase_path(entrypoints) + [ "--mojom-sources" ] + | 255 rebase_path(entrypoints) + [ "--mojom-sources" ] + |
254 rebase_path(mojom_sources, "", mojo_sdk_root) + | 256 rebase_path(mojom_sources, "", mojo_sdk_root) + |
255 [ "--sdk-ext-directories" ] + rebase_path(sdk_ext_directory) + | 257 [ "--sdk-ext-directories" ] + rebase_path(sdk_ext_directory) + |
256 [ "--sdk-ext-files" ] + rebase_path(sdk_ext_files) + | 258 [ "--sdk-ext-files" ] + rebase_path(sdk_ext_files) + |
257 [ "--sdk-ext-mappings" ] + sdk_ext_mappings | 259 [ "--sdk-ext-mappings" ] + sdk_ext_mappings |
258 } | 260 } |
259 } | 261 } |
260 | 262 |
261 # This is the entrypoint for organizing Dart code for Mojo. | 263 # This is the entrypoint for organizing Dart code for Mojo. |
262 # | 264 # |
263 # For each file in |apps|, it makes a .mojo Mojo application using the dartx | 265 # There should be a one to one mapping between dart_pkg rules and pubspec.yamls. |
264 # format as well as an assemblage of the app under $root_gen_dir/part-pkg for | 266 # |
| 267 # This build rule will result in a package under $root_gen_dir/dart-pkg/ |
| 268 # |
| 269 # The name of the package is taken from the 'pubspec.yaml' file. |
| 270 # |
| 271 # For each app in |apps|, it makes a .mojo Mojo application using the dartx |
| 272 # format as well as an assemblage of the app under $root_gen_dir/dart-pkg for |
265 # use in local development. | 273 # use in local development. |
266 # | 274 # |
267 # For each file in |libs|, it invokes the Dart analyzer. All other sources go in | 275 # For each library in |libs|, it invokes the Dart analyzer on that library. The |
268 # |sources|. This should at least contain a 'pubspec.yaml' file. If no |apps| | 276 # build will fail if the library is not analyzer clean. |
269 # are defined, this rule makes the library package available to applications. | 277 # |
270 # The name of the package is taken from the 'pubspec.yaml' file. Even if a | 278 # All other sources go in |sources|. This should at least contain the |
271 # package will not be uploaded to pub, an attempt should be made not to conflict | 279 # 'pubspec.yaml' file. |
272 # with the names of existing pub packages, for example by using the prefix | 280 # |
273 # 'mojo_dart_'. | 281 # Even if a package will not be uploaded to pub, an attempt should be made not |
| 282 # to conflict with the names of existing pub packages, for example by using the |
| 283 # prefix 'mojo_dart_'. |
274 # | 284 # |
275 # sources | 285 # sources |
276 # List of non-app and non-lib sources to include in the package. This | 286 # List of sources to include in the package. This should at least contain |
277 # should at least contain the pubspec.yaml for the package. | 287 # the pubspec.yaml for the package. |
278 # | 288 # |
279 # apps (optional) | 289 # apps (optional) |
280 # List of Mojo application entrypoints containing a main() function. | 290 # List of pairs. [mojo_app_name, entrypoint.dart]. Each entrypoint |
281 # Each of these entrypoints will result in a .mojo Mojo application. | 291 # script must contain a main() function. A .mojo Mojo application will be |
282 # See |output_name| for how this application is named. | 292 # generated for each application. |
283 # | 293 # |
284 # libs (optional) | 294 # libs (optional) |
285 # List of package entrypoints to pass to the analyzer. If none are | 295 # List of library entrypoints to pass to the analyzer. If none are |
286 # defined, the analyzer is not run. | 296 # defined, the analyzer is not run. |
287 # | 297 # |
288 # strict (optional) | 298 # strict (optional) |
289 # If |apps| are specified, |strict| can be set to true to | 299 # If |apps| are specified, |strict| can be set to true to |
290 # instruct the content handler to run the apps in Dart VM's strict | 300 # instruct the content handler to run the apps in Dart VM's strict |
291 # compilation mode (with assertions and type-checks, etc.). | 301 # compilation mode (with assertions and type-checks, etc.). |
292 # | 302 # |
293 # app_name_override (optional) | |
294 # When |apps| are specified, this is the prefix to use for the | |
295 # name of the assembled .mojo file. The target name is used by default. | |
296 # For each entrypoint, the result is |output_name|_|entrypoint|.mojo. If | |
297 # the entrypoint is main.dart, the result is simply |output_name|.mojo. | |
298 # | |
299 # deps (optional) | 303 # deps (optional) |
300 # List of other dart_pkg targets for Dart packages imported by this | 304 # List of other dart_pkg targets for Dart packages imported by this |
301 # dart_pkg, as well as the mojom targets needed by this dart_pkg. | 305 # dart_pkg, as well as the mojom targets needed by this dart_pkg. |
302 # | 306 # |
303 # pkg_dir (optional) | 307 # pkg_dir (optional) |
304 # Directory containing the package sources. This overrides sources and | 308 # Directory containing the package sources. This overrides sources and |
305 # entrypoints. The analyzer will not be run. | 309 # entrypoints. The analyzer will not be run. |
306 # | 310 # |
307 # datadeps (optional) | 311 # datadeps (optional) |
308 # | 312 # |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
356 } | 360 } |
357 if (defined(invoker.sdk_ext_files)) { | 361 if (defined(invoker.sdk_ext_files)) { |
358 sdk_ext_files = invoker.sdk_ext_files | 362 sdk_ext_files = invoker.sdk_ext_files |
359 } | 363 } |
360 if (defined(invoker.sdk_ext_mappings)) { | 364 if (defined(invoker.sdk_ext_mappings)) { |
361 sdk_ext_mappings = invoker.sdk_ext_mappings | 365 sdk_ext_mappings = invoker.sdk_ext_mappings |
362 } | 366 } |
363 } | 367 } |
364 | 368 |
365 if (defined(invoker.apps)) { | 369 if (defined(invoker.apps)) { |
366 pkg_name = target_name | |
367 if (defined(invoker.app_name_override)) { | |
368 pkg_name = invoker.app_name_override | |
369 } | |
370 pkg_helper_output_dir = "$root_gen_dir/dart-pkg/${dart_package_name}" | 370 pkg_helper_output_dir = "$root_gen_dir/dart-pkg/${dart_package_name}" |
371 foreach(entrypoint, invoker.apps) { | 371 foreach(app, invoker.apps) { |
372 entrypoint_name = get_path_info(entrypoint, "name") | 372 app_name = app[0] |
373 dartx_target_name = "${pkg_name}_${entrypoint_name}" | 373 app_entrypoint = app[1] |
374 dartx_output_name = dartx_target_name | 374 dartx_output_name = app_name |
375 if (entrypoint_name == "main") { | 375 dartx_application("${app_name}_dart_app") { |
376 dartx_output_name = pkg_name | |
377 } | |
378 dartx_application(dartx_target_name) { | |
379 output_name = dartx_output_name | 376 output_name = dartx_output_name |
380 main_dart = rebase_path(entrypoint, "", pkg_helper_output_dir) | 377 main_dart = rebase_path(app_entrypoint, "", pkg_helper_output_dir) |
381 sources = rebase_path(invoker.sources, "", pkg_helper_output_dir) | 378 sources = rebase_path(invoker.sources, "", pkg_helper_output_dir) |
382 deps = [ | 379 deps = [ |
383 ":$dart_pkg_target_name", | 380 ":$dart_pkg_target_name", |
384 ] | 381 ] |
385 deps += invoker.deps | 382 deps += invoker.deps |
386 if (defined(invoker.strict)) { | 383 if (defined(invoker.strict)) { |
387 strict = invoker.strict | 384 strict = invoker.strict |
388 } | 385 } |
389 } | 386 } |
390 } | 387 } |
391 } | 388 } |
392 | 389 |
393 group(target_name) { | 390 group(target_name) { |
394 deps = [ | 391 deps = [ |
395 ":$dart_pkg_target_name", | 392 ":$dart_pkg_target_name", |
396 ] | 393 ] |
397 if (defined(invoker.apps)) { | 394 if (defined(invoker.apps)) { |
398 pkg_name = target_name | 395 foreach(app, invoker.apps) { |
399 if (defined(invoker.app_name_override)) { | 396 app_name = app[0] |
400 pkg_name = invoker.app_name_override | 397 dartx_target_name = "${app_name}_dart_app" |
401 } | |
402 foreach(entrypoint, invoker.apps) { | |
403 entrypoint_name = get_path_info(entrypoint, "name") | |
404 dartx_target_name = "${pkg_name}_${entrypoint_name}" | |
405 deps += [ ":$dartx_target_name" ] | 398 deps += [ ":$dartx_target_name" ] |
406 } | 399 } |
407 } | 400 } |
408 } | 401 } |
409 } | 402 } |
OLD | NEW |