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 import("//build/config/mac/base_rules.gni") | 5 import("//build/config/mac/base_rules.gni") |
6 | 6 |
7 # Generates Info.plist files for Mac apps and frameworks. | 7 # Generates Info.plist files for Mac apps and frameworks. |
8 # | 8 # |
9 # Arguments | 9 # Arguments |
10 # | 10 # |
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
393 } | 393 } |
394 | 394 |
395 set_defaults("mac_framework_bundle") { | 395 set_defaults("mac_framework_bundle") { |
396 configs = default_shared_library_configs | 396 configs = default_shared_library_configs |
397 } | 397 } |
398 | 398 |
399 # Template to create a Mac executable application bundle. | 399 # Template to create a Mac executable application bundle. |
400 # | 400 # |
401 # Arguments | 401 # Arguments |
402 # | 402 # |
| 403 # package_type: |
| 404 # (optional) string, the product package type to create. Options are: |
| 405 # "app" to create a .app bundle (default) |
| 406 # "xpc" to create an .xpc service bundle |
| 407 # |
403 # info_plist: | 408 # info_plist: |
404 # (optional) string, path to the Info.plist file that will be used for | 409 # (optional) string, path to the Info.plist file that will be used for |
405 # the bundle. | 410 # the bundle. |
406 # | 411 # |
407 # info_plist_target: | 412 # info_plist_target: |
408 # (optional) string, if the info_plist is generated from an action, | 413 # (optional) string, if the info_plist is generated from an action, |
409 # rather than a regular source file, specify the target name in lieu | 414 # rather than a regular source file, specify the target name in lieu |
410 # of info_plist. The two arguments are mutually exclusive. | 415 # of info_plist. The two arguments are mutually exclusive. |
411 # | 416 # |
412 # output_name: | 417 # output_name: |
(...skipping 10 matching lines...) Expand all Loading... |
423 # extra_substitutions: | 428 # extra_substitutions: |
424 # (optional) string array, 'key=value' pairs for extra fields which are | 429 # (optional) string array, 'key=value' pairs for extra fields which are |
425 # specified in a source Info.plist template. | 430 # specified in a source Info.plist template. |
426 template("mac_app_bundle") { | 431 template("mac_app_bundle") { |
427 _target_name = target_name | 432 _target_name = target_name |
428 _output_name = target_name | 433 _output_name = target_name |
429 if (defined(invoker.output_name)) { | 434 if (defined(invoker.output_name)) { |
430 _output_name = invoker.output_name | 435 _output_name = invoker.output_name |
431 } | 436 } |
432 | 437 |
| 438 _package_type = "app" |
| 439 if (defined(invoker.package_type)) { |
| 440 _package_type = invoker.package_type |
| 441 } |
| 442 |
| 443 if (_package_type == "app") { |
| 444 _output_extension = "app" |
| 445 _product_type = "com.apple.product-type.application" |
| 446 _write_pkg_info = true |
| 447 } else if (_package_type == "xpc") { |
| 448 _output_extension = "xpc" |
| 449 _product_type = "com.apple.product-type.xpc-service" |
| 450 _write_pkg_info = false |
| 451 } else { |
| 452 assert(false, "Unsupported packge_type: " + packge_type) |
| 453 } |
| 454 |
433 _executable_target = target_name + "_executable" | 455 _executable_target = target_name + "_executable" |
434 _executable_bundle_data = _executable_target + "_bundle_data" | 456 _executable_bundle_data = _executable_target + "_bundle_data" |
435 | 457 |
436 _info_plist_target = target_name + "_info_plist" | 458 _info_plist_target = target_name + "_info_plist" |
437 | 459 |
438 mac_info_plist(_info_plist_target) { | 460 mac_info_plist(_info_plist_target) { |
439 executable_name = _output_name | 461 executable_name = _output_name |
440 forward_variables_from(invoker, | 462 forward_variables_from(invoker, |
441 [ | 463 [ |
442 "extra_substitutions", | 464 "extra_substitutions", |
443 "info_plist", | 465 "info_plist", |
444 "info_plist_target", | 466 "info_plist_target", |
445 "testonly", | 467 "testonly", |
446 ]) | 468 ]) |
447 } | 469 } |
448 | 470 |
449 _pkg_info_target = target_name + "_pkg_info" | 471 if (_write_pkg_info) { |
| 472 _pkg_info_target = target_name + "_pkg_info" |
450 | 473 |
451 action(_pkg_info_target) { | 474 action(_pkg_info_target) { |
452 forward_variables_from(invoker, [ "testonly" ]) | 475 forward_variables_from(invoker, [ "testonly" ]) |
453 script = "//build/config/mac/write_pkg_info.py" | 476 script = "//build/config/mac/write_pkg_info.py" |
454 sources = get_target_outputs(":$_info_plist_target") | 477 sources = get_target_outputs(":$_info_plist_target") |
455 outputs = [ | 478 outputs = [ |
456 "$target_gen_dir/$_pkg_info_target", | 479 "$target_gen_dir/$_pkg_info_target", |
457 ] | 480 ] |
458 args = [ "--plist" ] + rebase_path(sources, root_build_dir) + | 481 args = [ "--plist" ] + rebase_path(sources, root_build_dir) + |
459 [ "--output" ] + rebase_path(outputs, root_build_dir) | 482 [ "--output" ] + rebase_path(outputs, root_build_dir) |
460 deps = [ | 483 deps = [ |
461 ":$_info_plist_target", | 484 ":$_info_plist_target", |
462 ] | 485 ] |
| 486 } |
463 } | 487 } |
464 | 488 |
465 executable(_executable_target) { | 489 executable(_executable_target) { |
466 visibility = [ ":$_executable_bundle_data" ] | 490 visibility = [ ":$_executable_bundle_data" ] |
467 forward_variables_from(invoker, | 491 forward_variables_from(invoker, |
468 "*", | 492 "*", |
469 [ | 493 [ |
470 "assert_no_deps", | 494 "assert_no_deps", |
471 "data_deps", | 495 "data_deps", |
472 "info_plist", | 496 "info_plist", |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
504 visibility = [ ":$_target_name" ] | 528 visibility = [ ":$_target_name" ] |
505 sources = get_target_outputs(":$_info_plist_target") | 529 sources = get_target_outputs(":$_info_plist_target") |
506 outputs = [ | 530 outputs = [ |
507 "{{bundle_root_dir}}/Info.plist", | 531 "{{bundle_root_dir}}/Info.plist", |
508 ] | 532 ] |
509 public_deps = [ | 533 public_deps = [ |
510 ":$_info_plist_target", | 534 ":$_info_plist_target", |
511 ] | 535 ] |
512 } | 536 } |
513 | 537 |
514 _pkg_info_bundle_data = _pkg_info_target + "_bundle_data" | 538 if (_write_pkg_info) { |
| 539 _pkg_info_bundle_data = _pkg_info_target + "_bundle_data" |
515 | 540 |
516 bundle_data(_pkg_info_bundle_data) { | 541 bundle_data(_pkg_info_bundle_data) { |
517 forward_variables_from(invoker, [ "testonly" ]) | 542 forward_variables_from(invoker, [ "testonly" ]) |
518 visibility = [ ":$_target_name" ] | 543 visibility = [ ":$_target_name" ] |
519 sources = get_target_outputs(":$_pkg_info_target") | 544 sources = get_target_outputs(":$_pkg_info_target") |
520 outputs = [ | 545 outputs = [ |
521 "{{bundle_root_dir}}/PkgInfo", | 546 "{{bundle_root_dir}}/PkgInfo", |
522 ] | 547 ] |
523 public_deps = [ | 548 public_deps = [ |
524 ":$_pkg_info_target", | 549 ":$_pkg_info_target", |
525 ] | 550 ] |
| 551 } |
526 } | 552 } |
527 | 553 |
528 create_bundle(_target_name) { | 554 create_bundle(_target_name) { |
529 forward_variables_from(invoker, | 555 forward_variables_from(invoker, |
530 [ | 556 [ |
531 "data_deps", | 557 "data_deps", |
532 "deps", | 558 "deps", |
533 "public_deps", | 559 "public_deps", |
534 "testonly", | 560 "testonly", |
535 ]) | 561 ]) |
536 if (!defined(deps)) { | 562 if (!defined(deps)) { |
537 deps = [] | 563 deps = [] |
538 } | 564 } |
539 deps += [ | 565 deps += [ |
540 ":$_executable_bundle_data", | 566 ":$_executable_bundle_data", |
541 ":$_info_plist_bundle_data", | 567 ":$_info_plist_bundle_data", |
542 ":$_pkg_info_bundle_data", | |
543 ] | 568 ] |
544 product_type = "com.apple.product-type.application" | 569 if (_write_pkg_info) { |
545 bundle_root_dir = "$root_out_dir/${_output_name}.app/Contents" | 570 deps += [ ":$_pkg_info_bundle_data" ] |
| 571 } |
| 572 product_type = _product_type |
| 573 bundle_root_dir = |
| 574 "$root_out_dir/${_output_name}.${_output_extension}/Contents" |
546 bundle_resources_dir = "$bundle_root_dir/Resources" | 575 bundle_resources_dir = "$bundle_root_dir/Resources" |
547 bundle_executable_dir = "$bundle_root_dir/MacOS" | 576 bundle_executable_dir = "$bundle_root_dir/MacOS" |
548 } | 577 } |
549 } | 578 } |
550 | 579 |
551 # Template to package a loadable_module into a .plugin bundle. | 580 # Template to package a loadable_module into a .plugin bundle. |
552 # | 581 # |
553 # This takes no extra arguments that differ from a loadable_module. | 582 # This takes no extra arguments that differ from a loadable_module. |
554 template("mac_plugin_bundle") { | 583 template("mac_plugin_bundle") { |
555 assert(defined(invoker.deps), | 584 assert(defined(invoker.deps), |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
603 ]) | 632 ]) |
604 if (!defined(deps)) { | 633 if (!defined(deps)) { |
605 deps = [] | 634 deps = [] |
606 } | 635 } |
607 deps += [ ":$_loadable_module_bundle_data" ] | 636 deps += [ ":$_loadable_module_bundle_data" ] |
608 | 637 |
609 bundle_root_dir = "$root_out_dir/$_output_name.plugin/Contents" | 638 bundle_root_dir = "$root_out_dir/$_output_name.plugin/Contents" |
610 bundle_executable_dir = "$bundle_root_dir/MacOS" | 639 bundle_executable_dir = "$bundle_root_dir/MacOS" |
611 } | 640 } |
612 } | 641 } |
OLD | NEW |