Chromium Code Reviews| 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("//build/config/android/config.gni") | 5 import("//build/config/android/config.gni") |
| 6 import("//build/config/android/internal_rules.gni") | 6 import("//build/config/android/internal_rules.gni") |
| 7 import("//tools/grit/grit_rule.gni") | 7 import("//tools/grit/grit_rule.gni") |
| 8 | 8 |
| 9 assert(is_android) | 9 assert(is_android) |
| 10 | 10 |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 111 if (defined(invoker.jar_file)) { | 111 if (defined(invoker.jar_file)) { |
| 112 jar_file = invoker.jar_file | 112 jar_file = invoker.jar_file |
| 113 } else { | 113 } else { |
| 114 jar_file = android_sdk_jar | 114 jar_file = android_sdk_jar |
| 115 } | 115 } |
| 116 | 116 |
| 117 jni_package = invoker.jni_package | 117 jni_package = invoker.jni_package |
| 118 base_output_dir = "${root_gen_dir}/${target_name}/${jni_package}" | 118 base_output_dir = "${root_gen_dir}/${target_name}/${jni_package}" |
| 119 jni_output_dir = "${base_output_dir}/jni" | 119 jni_output_dir = "${base_output_dir}/jni" |
| 120 | 120 |
| 121 jni_generator_include = | 121 jni_generator_include = "//base/android/jni_generator/jni_generator_helper.h" |
| 122 rebase_path("//base/android/jni_generator/jni_generator_helper.h", | |
| 123 root_build_dir) | |
| 124 | 122 |
| 125 # TODO(cjhopman): make jni_generator.py support generating jni for multiple | 123 # TODO(cjhopman): make jni_generator.py support generating jni for multiple |
| 126 # .class files from a .jar. | 124 # .class files from a .jar. |
| 127 jni_actions = [] | 125 jni_actions = [] |
| 128 foreach(class, invoker.classes) { | 126 foreach(class, invoker.classes) { |
| 129 classname_list = process_file_template( | 127 _classname_list = [] |
|
newt (away)
2014/09/02 23:41:30
odd... but OK
| |
| 128 _classname_list = process_file_template( | |
| 130 [class], "{{source_name_part}}") | 129 [class], "{{source_name_part}}") |
| 131 classname = classname_list[0] | 130 classname = _classname_list[0] |
| 132 jni_target_name = "${target_name}__jni_${classname}" | 131 jni_target_name = "${target_name}__jni_${classname}" |
| 133 jni_actions += [ ":$jni_target_name" ] | 132 jni_actions += [ ":$jni_target_name" ] |
| 134 action(jni_target_name) { | 133 action(jni_target_name) { |
| 135 depfile = "$target_gen_dir/$target_name.d" | 134 depfile = "$target_gen_dir/$target_name.d" |
| 136 script = "//base/android/jni_generator/jni_generator.py" | 135 script = "//base/android/jni_generator/jni_generator.py" |
| 137 sources = [ | 136 sources = [ |
| 138 jni_generator_include, | 137 jni_generator_include, |
| 139 jar_file, | 138 jar_file, |
| 140 ] | 139 ] |
| 141 outputs = [ | 140 outputs = [ |
| 142 depfile, | 141 depfile, |
| 143 "${jni_output_dir}/${classname}_jni.h" | 142 "${jni_output_dir}/${classname}_jni.h" |
| 144 ] | 143 ] |
| 145 | 144 |
| 146 args = [ | 145 args = [ |
| 147 "--depfile", rebase_path(depfile, root_build_dir), | 146 "--depfile", rebase_path(depfile, root_build_dir), |
| 148 "--jar_file", rebase_path(jar_file, root_build_dir), | 147 "--jar_file", rebase_path(jar_file, root_build_dir), |
| 149 "--input_file", class, | 148 "--input_file", class, |
| 150 "--optimize_generation=1", | 149 "--optimize_generation=1", |
| 151 "--ptr_type=long", | 150 "--ptr_type=long", |
| 152 "--output_dir", rebase_path(jni_output_dir, root_build_dir), | 151 "--output_dir", rebase_path(jni_output_dir, root_build_dir), |
| 153 "--includes", rebase_path(jni_generator_include, "//"), | 152 "--includes", rebase_path(jni_generator_include, root_build_dir), |
| 154 ] | 153 ] |
| 155 } | 154 } |
| 156 } | 155 } |
| 157 | 156 |
| 158 config("jni_includes_${target_name}") { | 157 config("jni_includes_${target_name}") { |
| 159 include_dirs = [ base_output_dir ] | 158 include_dirs = [ base_output_dir ] |
| 160 } | 159 } |
| 161 | 160 |
| 162 group(target_name) { | 161 group(target_name) { |
| 163 deps = jni_actions | 162 deps = jni_actions |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 286 # false. | 285 # false. |
| 287 # | 286 # |
| 288 # Example | 287 # Example |
| 289 # android_resources("foo_resources") { | 288 # android_resources("foo_resources") { |
| 290 # deps = [":foo_strings_grd"] | 289 # deps = [":foo_strings_grd"] |
| 291 # resource_dirs = ["res"] | 290 # resource_dirs = ["res"] |
| 292 # custom_package = "org.chromium.foo" | 291 # custom_package = "org.chromium.foo" |
| 293 # } | 292 # } |
| 294 template("android_resources") { | 293 template("android_resources") { |
| 295 assert(defined(invoker.resource_dirs)) | 294 assert(defined(invoker.resource_dirs)) |
| 295 assert(defined(invoker.android_manifest) || defined(invoker.custom_package)) | |
| 296 | 296 |
| 297 base_path = "$target_gen_dir/$target_name" | 297 base_path = "$target_gen_dir/$target_name" |
| 298 zip_path = base_path + ".resources.zip" | 298 zip_path = base_path + ".resources.zip" |
| 299 srcjar_path = base_path + ".srcjar" | 299 srcjar_path = base_path + ".srcjar" |
| 300 build_config = base_path + ".build_config" | 300 build_config = base_path + ".build_config" |
| 301 | 301 |
| 302 write_build_config("${target_name}__build_config") { | 302 write_build_config("${target_name}__build_config") { |
| 303 type = "android_resources" | 303 type = "android_resources" |
| 304 resources_zip = zip_path | 304 resources_zip = zip_path |
| 305 srcjar = srcjar_path | 305 srcjar = srcjar_path |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 467 } | 467 } |
| 468 build_config = _build_config | 468 build_config = _build_config |
| 469 jar_path = _jar_path | 469 jar_path = _jar_path |
| 470 dex_path = _dex_path | 470 dex_path = _dex_path |
| 471 | 471 |
| 472 if (defined(invoker.proguard_preprocess) && invoker.proguard_preprocess) { | 472 if (defined(invoker.proguard_preprocess) && invoker.proguard_preprocess) { |
| 473 proguard_preprocess = true | 473 proguard_preprocess = true |
| 474 proguard_config = invoker.proguard_config | 474 proguard_config = invoker.proguard_config |
| 475 } | 475 } |
| 476 | 476 |
| 477 jar_excluded_patterns = [ | |
| 478 "*/R.class", "*/R##*.class", | |
| 479 "*/Manifest.class", "*/Manifest##*.class", | |
| 480 ] | |
| 477 if (defined(invoker.jar_excluded_patterns)) { | 481 if (defined(invoker.jar_excluded_patterns)) { |
| 478 jar_excluded_patterns = invoker.jar_excluded_patterns | 482 jar_excluded_patterns += invoker.jar_excluded_patterns |
| 479 } | 483 } |
| 480 | 484 |
| 481 if (defined(invoker.srcjar_deps)) { | 485 if (defined(invoker.srcjar_deps)) { |
| 482 srcjar_deps = invoker.srcjar_deps | 486 srcjar_deps = invoker.srcjar_deps |
| 483 } | 487 } |
| 484 } | 488 } |
| 485 } | 489 } |
| 486 | 490 |
| 487 | 491 |
| 488 # Declare an Android library target for a prebuilt jar | 492 # Declare an Android library target for a prebuilt jar |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 592 # ":foo_resources" | 596 # ":foo_resources" |
| 593 # ] | 597 # ] |
| 594 # srcjar_deps = [ | 598 # srcjar_deps = [ |
| 595 # ":foo_generated_enum" | 599 # ":foo_generated_enum" |
| 596 # ] | 600 # ] |
| 597 # native_libs = [ | 601 # native_libs = [ |
| 598 # native_lib_path | 602 # native_lib_path |
| 599 # ] | 603 # ] |
| 600 # } | 604 # } |
| 601 template("android_apk") { | 605 template("android_apk") { |
| 606 assert(defined(invoker.final_apk_path) || defined(invoker.apk_name)) | |
| 602 gen_dir = "$target_gen_dir/$target_name" | 607 gen_dir = "$target_gen_dir/$target_name" |
| 603 base_path = "$gen_dir/$target_name" | 608 base_path = "$gen_dir/$target_name" |
| 604 build_config = "$base_path.build_config" | 609 build_config = "$base_path.build_config" |
| 605 resources_zip_path = "$base_path.resources.zip" | 610 resources_zip_path = "$base_path.resources.zip" |
| 606 all_resources_zip_path = "$base_path.resources.all.zip" | 611 all_resources_zip_path = "$base_path.resources.all.zip" |
| 607 resource_srcjar_path = "$base_path.resources.srcjar" | 612 resource_srcjar_path = "$base_path.resources.srcjar" |
| 608 jar_path = "$base_path.jar" | 613 jar_path = "$base_path.jar" |
| 609 final_dex_path = "$gen_dir/classes.dex" | 614 final_dex_path = "$gen_dir/classes.dex" |
| 610 _template_name = target_name | 615 _template_name = target_name |
| 616 _final_apk_path = "" | |
| 617 if (defined(invoker.final_apk_path)) { | |
| 618 _final_apk_path = invoker.final_apk_path | |
| 619 } else if (defined(invoker.apk_name)) { | |
| 620 _final_apk_path = "$root_build_dir/apks/" + invoker.apk_name + ".apk" | |
| 621 } | |
| 611 | 622 |
| 612 _native_lib_version_name = "" | |
| 613 | |
| 614 _use_chromium_linker = false | |
| 615 _enable_chromium_linker_tests = false | |
| 616 _load_library_from_apk = false | |
| 617 | |
| 618 _native_libs_dir = base_path + "/libs" | |
| 619 _native_libs = [] | 623 _native_libs = [] |
| 620 if (defined(invoker.native_libs)) { | 624 if (defined(invoker.native_libs)) { |
| 621 _native_libs = invoker.native_libs | 625 _native_libs = invoker.native_libs |
| 626 _native_libs_dir = base_path + "/libs" | |
| 622 } | 627 } |
| 623 | 628 |
| 624 _keystore_path = android_default_keystore_path | 629 _keystore_path = android_default_keystore_path |
| 625 _keystore_name = android_default_keystore_name | 630 _keystore_name = android_default_keystore_name |
| 626 _keystore_password = android_default_keystore_password | 631 _keystore_password = android_default_keystore_password |
| 627 | 632 |
| 628 if (defined(invoker.keystore_path)) { | 633 if (defined(invoker.keystore_path)) { |
| 629 _keystore_path = invoker.keystore_path | 634 _keystore_path = invoker.keystore_path |
| 630 _keystore_name = invoker.keystore_name | 635 _keystore_name = invoker.keystore_name |
| 631 _keystore_password = invoker.keystore_password | 636 _keystore_password = invoker.keystore_password |
| 632 } | 637 } |
| 633 | 638 |
| 634 _srcjar_deps = [] | 639 _srcjar_deps = [] |
| 635 if (defined(invoker.srcjar_deps)) { | 640 if (defined(invoker.srcjar_deps)) { |
| 636 _srcjar_deps += invoker.srcjar_deps | 641 _srcjar_deps += invoker.srcjar_deps |
| 637 } | 642 } |
| 638 | 643 |
| 639 _rebased_build_config = rebase_path(build_config, root_build_dir) | 644 _rebased_build_config = rebase_path(build_config, root_build_dir) |
| 640 | 645 |
| 641 write_build_config("${target_name}__build_config") { | 646 write_build_config("${_template_name}__build_config") { |
| 642 type = "android_apk" | 647 type = "android_apk" |
| 643 srcjar = resource_srcjar_path | 648 srcjar = resource_srcjar_path |
| 644 dex_path = final_dex_path | 649 dex_path = final_dex_path |
| 645 resources_zip = resources_zip_path | 650 resources_zip = resources_zip_path |
| 646 | 651 |
| 647 if (defined(invoker.deps)) { | 652 if (defined(invoker.deps)) { |
| 648 deps = invoker.deps | 653 deps = invoker.deps |
| 649 } | 654 } |
| 650 | 655 |
| 651 native_libs = _native_libs | 656 native_libs = _native_libs |
| 652 } | 657 } |
| 653 | 658 |
| 654 final_deps = [] | 659 final_deps = [] |
| 655 | 660 |
| 656 final_deps += [":${target_name}__process_resources"] | 661 final_deps += [":${_template_name}__process_resources"] |
| 657 process_resources("${target_name}__process_resources") { | 662 process_resources("${_template_name}__process_resources") { |
| 658 android_manifest = invoker.android_manifest | 663 android_manifest = invoker.android_manifest |
| 659 | 664 |
| 660 resource_dirs = ["//build/android/ant/empty/res"] | 665 resource_dirs = ["//build/android/ant/empty/res"] |
| 661 zip_path = resources_zip_path | 666 zip_path = resources_zip_path |
| 662 srcjar_path = resource_srcjar_path | 667 srcjar_path = resource_srcjar_path |
| 663 | 668 |
| 664 generate_constant_ids = true | 669 generate_constant_ids = true |
| 665 } | 670 } |
| 666 | 671 |
| 667 java_cpp_template("${target_name}__native_libraries_java") { | 672 if (_native_libs != []) { |
| 668 package_name = "org/chromium/base/library_loader" | 673 _use_chromium_linker = false |
| 669 sources = [ | 674 _enable_chromium_linker_tests = false |
| 670 "//base/android/java/templates/NativeLibraries.template", | 675 _load_library_from_apk = false |
| 671 ] | 676 _native_lib_version_name = "" |
| 672 inputs = [ | |
| 673 build_config, | |
| 674 ] | |
| 675 | 677 |
| 676 defines = [ | 678 |
| 677 "NATIVE_LIBRARIES_LIST=" + | 679 java_cpp_template("${_template_name}__native_libraries_java") { |
| 678 "@FileArg($_rebased_build_config:native:java_libraries_list)", | 680 package_name = "org/chromium/base/library_loader" |
| 679 "NATIVE_LIBRARIES_VERSION_NUMBER=\"$_native_lib_version_name\"", | 681 sources = [ |
| 680 ] | 682 "//base/android/java/templates/NativeLibraries.template", |
| 681 if (_use_chromium_linker) { | 683 ] |
| 682 defines += ["ENABLED_CHROMIUM_LINKER"] | 684 inputs = [ |
| 685 build_config, | |
| 686 ] | |
| 687 | |
| 688 defines = [ | |
| 689 "NATIVE_LIBRARIES_LIST=" + | |
| 690 "@FileArg($_rebased_build_config:native:java_libraries_list)", | |
| 691 "NATIVE_LIBRARIES_VERSION_NUMBER=\"$_native_lib_version_name\"", | |
| 692 ] | |
| 693 if (_use_chromium_linker) { | |
| 694 defines += ["ENABLED_CHROMIUM_LINKER"] | |
| 695 } | |
| 696 if (_load_library_from_apk) { | |
| 697 defines += ["ENABLE_CHROMIUM_LINKER_LIBRARY_IN_ZIP_FILE"] | |
| 698 } | |
| 699 if (_enable_chromium_linker_tests) { | |
| 700 defines += ["ENABLE_CHROMIUM_LINKER_TESTS"] | |
| 701 } | |
| 683 } | 702 } |
| 684 if (_load_library_from_apk) { | 703 _srcjar_deps += [ ":${_template_name}__native_libraries_java" ] |
| 685 defines += ["ENABLE_CHROMIUM_LINKER_LIBRARY_IN_ZIP_FILE"] | |
| 686 } | |
| 687 if (_enable_chromium_linker_tests) { | |
| 688 defines += ["ENABLE_CHROMIUM_LINKER_TESTS"] | |
| 689 } | |
| 690 } | 704 } |
| 691 _srcjar_deps += [ ":${target_name}__native_libraries_java" ] | |
| 692 | 705 |
| 693 rebased_build_config = rebase_path(build_config, root_build_dir) | 706 final_deps += [":${_template_name}__java"] |
| 694 | 707 android_java_library("${_template_name}__java") { |
| 695 final_deps += [":${target_name}__java"] | |
| 696 android_java_library("${target_name}__java") { | |
| 697 android_manifest = invoker.android_manifest | 708 android_manifest = invoker.android_manifest |
| 698 if (defined(invoker.java_files)) { | 709 if (defined(invoker.java_files)) { |
| 699 java_files = invoker.java_files | 710 java_files = invoker.java_files |
| 700 } else { | 711 } else { |
| 701 DEPRECATED_java_in_dir = invoker.DEPRECATED_java_in_dir | 712 DEPRECATED_java_in_dir = invoker.DEPRECATED_java_in_dir |
| 702 } | 713 } |
| 703 srcjar_deps = _srcjar_deps | 714 srcjar_deps = _srcjar_deps |
| 704 dex_path = base_path + ".dex.jar" | 715 dex_path = base_path + ".dex.jar" |
| 705 } | 716 } |
| 706 | 717 |
| 707 final_deps += [":${target_name}__final_dex"] | 718 final_deps += [":${_template_name}__final_dex"] |
| 708 dex("${target_name}__final_dex") { | 719 dex("${_template_name}__final_dex") { |
| 709 sources = [jar_path] | 720 sources = [jar_path] |
| 710 inputs = [build_config] | 721 inputs = [build_config] |
| 711 output = final_dex_path | 722 output = final_dex_path |
| 712 dex_arg_key = "${rebased_build_config}:apk_dex:dependency_dex_files" | 723 dex_arg_key = "${_rebased_build_config}:apk_dex:dependency_dex_files" |
| 713 args = ["--inputs=@FileArg($dex_arg_key)"] | 724 args = ["--inputs=@FileArg($dex_arg_key)"] |
| 714 } | 725 } |
| 715 | 726 |
| 716 if (_native_libs != []) { | 727 if (_native_libs != []) { |
| 717 copy_ex("${target_name}__prepare_native") { | 728 copy_ex("${_template_name}__prepare_native") { |
| 718 clear_dir = true | 729 clear_dir = true |
| 719 inputs = [build_config] | 730 inputs = [ |
| 731 build_config | |
| 732 ] | |
| 720 dest = "$_native_libs_dir/$android_app_abi" | 733 dest = "$_native_libs_dir/$android_app_abi" |
| 721 args = [ | 734 args = [ |
| 722 "--files=@FileArg(${rebased_build_config}:native:libraries)", | 735 "--files=@FileArg(${_rebased_build_config}:native:libraries)", |
| 723 ] | 736 ] |
| 724 if (is_debug) { | 737 if (is_debug) { |
| 725 rebased_gdbserver = rebase_path(android_gdbserver, root_build_dir) | 738 rebased_gdbserver = rebase_path(android_gdbserver, root_build_dir) |
| 726 args += [ | 739 args += [ |
| 727 "--files=[\"$rebased_gdbserver\"]" | 740 "--files=[\"$rebased_gdbserver\"]" |
| 728 ] | 741 ] |
| 729 } | 742 } |
| 730 } | 743 } |
| 731 } | 744 } |
| 732 | 745 |
| 733 final_deps += [":${target_name}__create"] | 746 final_deps += [":${_template_name}__create"] |
| 734 create_apk("${target_name}__create") { | 747 create_apk("${_template_name}__create") { |
| 735 apk_path = invoker.final_apk_path | 748 apk_path = _final_apk_path |
| 736 android_manifest = invoker.android_manifest | 749 android_manifest = invoker.android_manifest |
| 737 resources_zip = all_resources_zip_path | 750 resources_zip = all_resources_zip_path |
| 738 dex_path = final_dex_path | 751 dex_path = final_dex_path |
| 739 | 752 |
| 753 if (defined(invoker.asset_location)) { | |
| 754 asset_location = invoker.asset_location | |
| 755 } | |
| 756 | |
| 740 keystore_name = _keystore_name | 757 keystore_name = _keystore_name |
| 741 keystore_path = _keystore_path | 758 keystore_path = _keystore_path |
| 742 keystore_password = _keystore_password | 759 keystore_password = _keystore_password |
| 743 | 760 |
| 744 if (_native_libs != []) { | 761 if (_native_libs != []) { |
| 745 native_libs_dir = _native_libs_dir | 762 native_libs_dir = _native_libs_dir |
| 746 deps = [":${_template_name}__prepare_native"] | 763 deps = [":${_template_name}__prepare_native"] |
| 747 } | 764 } |
| 748 } | 765 } |
| 749 | 766 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 783 | 800 |
| 784 test_suite_name = get_label_info(invoker.unittests_dep, "name") | 801 test_suite_name = get_label_info(invoker.unittests_dep, "name") |
| 785 | 802 |
| 786 if (defined(invoker.unittests_binary)) { | 803 if (defined(invoker.unittests_binary)) { |
| 787 unittests_binary = root_out_dir + "/" + invoker.unittests_binary | 804 unittests_binary = root_out_dir + "/" + invoker.unittests_binary |
| 788 } else { | 805 } else { |
| 789 unittests_binary = root_out_dir + "/" + test_suite_name | 806 unittests_binary = root_out_dir + "/" + test_suite_name |
| 790 } | 807 } |
| 791 | 808 |
| 792 android_apk(target_name) { | 809 android_apk(target_name) { |
| 793 apk_name = test_suite_name | 810 _apk_name = test_suite_name |
| 794 final_apk_path = "$root_build_dir/${apk_name}_apk/${apk_name}-debug.apk" | 811 final_apk_path = "$root_build_dir/${_apk_name}_apk/${_apk_name}-debug.apk" |
| 795 java_files = [ | 812 java_files = [ |
| 796 "//testing/android/java/src/org/chromium/native_test/ChromeNativeTestActiv ity.java" | 813 "//testing/android/java/src/org/chromium/native_test/ChromeNativeTestActiv ity.java" |
| 797 ] | 814 ] |
| 798 android_manifest = "//testing/android/java/AndroidManifest.xml" | 815 android_manifest = "//testing/android/java/AndroidManifest.xml" |
| 799 unittests_outputs = [ unittests_binary ] | 816 unittests_outputs = [ unittests_binary ] |
| 800 native_libs = [unittests_outputs[0]] | 817 native_libs = [unittests_outputs[0]] |
| 801 if (defined(invoker.deps)) { | 818 if (defined(invoker.deps)) { |
| 802 deps = invoker.deps | 819 deps = invoker.deps |
| 803 } | 820 } |
| 804 } | 821 } |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 866 "//build/android/gyp/find.py", | 883 "//build/android/gyp/find.py", |
| 867 rebase_path([invoker.import_include], root_build_dir), | 884 rebase_path([invoker.import_include], root_build_dir), |
| 868 "list lines" | 885 "list lines" |
| 869 ) | 886 ) |
| 870 _java_files = rebase_path(_java_files_build_rel, ".", root_build_dir) | 887 _java_files = rebase_path(_java_files_build_rel, ".", root_build_dir) |
| 871 inputs += _java_files | 888 inputs += _java_files |
| 872 } | 889 } |
| 873 args += rebase_path(sources, root_build_dir) | 890 args += rebase_path(sources, root_build_dir) |
| 874 } | 891 } |
| 875 } | 892 } |
| OLD | NEW |