| 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 = [] |
| 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 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 593 # ":foo_resources" | 597 # ":foo_resources" |
| 594 # ] | 598 # ] |
| 595 # srcjar_deps = [ | 599 # srcjar_deps = [ |
| 596 # ":foo_generated_enum" | 600 # ":foo_generated_enum" |
| 597 # ] | 601 # ] |
| 598 # native_libs = [ | 602 # native_libs = [ |
| 599 # native_lib_path | 603 # native_lib_path |
| 600 # ] | 604 # ] |
| 601 # } | 605 # } |
| 602 template("android_apk") { | 606 template("android_apk") { |
| 607 assert(defined(invoker.final_apk_path) || defined(invoker.apk_name)) |
| 603 gen_dir = "$target_gen_dir/$target_name" | 608 gen_dir = "$target_gen_dir/$target_name" |
| 604 base_path = "$gen_dir/$target_name" | 609 base_path = "$gen_dir/$target_name" |
| 605 build_config = "$base_path.build_config" | 610 build_config = "$base_path.build_config" |
| 606 resources_zip_path = "$base_path.resources.zip" | 611 resources_zip_path = "$base_path.resources.zip" |
| 607 all_resources_zip_path = "$base_path.resources.all.zip" | 612 all_resources_zip_path = "$base_path.resources.all.zip" |
| 608 resource_srcjar_path = "$base_path.resources.srcjar" | 613 resource_srcjar_path = "$base_path.resources.srcjar" |
| 609 jar_path = "$base_path.jar" | 614 jar_path = "$base_path.jar" |
| 610 final_dex_path = "$gen_dir/classes.dex" | 615 final_dex_path = "$gen_dir/classes.dex" |
| 611 _template_name = target_name | 616 _template_name = target_name |
| 617 _final_apk_path = "" |
| 618 if (defined(invoker.final_apk_path)) { |
| 619 _final_apk_path = invoker.final_apk_path |
| 620 } else if (defined(invoker.apk_name)) { |
| 621 _final_apk_path = "$root_build_dir/apks/" + invoker.apk_name + ".apk" |
| 622 } |
| 612 | 623 |
| 613 _native_lib_version_name = "" | |
| 614 | |
| 615 _use_chromium_linker = false | |
| 616 _enable_chromium_linker_tests = false | |
| 617 _load_library_from_apk = false | |
| 618 | |
| 619 _native_libs_dir = base_path + "/libs" | |
| 620 _native_libs = [] | 624 _native_libs = [] |
| 621 if (defined(invoker.native_libs)) { | 625 if (defined(invoker.native_libs)) { |
| 622 _native_libs = invoker.native_libs | 626 _native_libs = invoker.native_libs |
| 627 _native_libs_dir = base_path + "/libs" |
| 623 } | 628 } |
| 624 | 629 |
| 625 _keystore_path = android_default_keystore_path | 630 _keystore_path = android_default_keystore_path |
| 626 _keystore_name = android_default_keystore_name | 631 _keystore_name = android_default_keystore_name |
| 627 _keystore_password = android_default_keystore_password | 632 _keystore_password = android_default_keystore_password |
| 628 | 633 |
| 629 if (defined(invoker.keystore_path)) { | 634 if (defined(invoker.keystore_path)) { |
| 630 _keystore_path = invoker.keystore_path | 635 _keystore_path = invoker.keystore_path |
| 631 _keystore_name = invoker.keystore_name | 636 _keystore_name = invoker.keystore_name |
| 632 _keystore_password = invoker.keystore_password | 637 _keystore_password = invoker.keystore_password |
| 633 } | 638 } |
| 634 | 639 |
| 635 _srcjar_deps = [] | 640 _srcjar_deps = [] |
| 636 if (defined(invoker.srcjar_deps)) { | 641 if (defined(invoker.srcjar_deps)) { |
| 637 _srcjar_deps += invoker.srcjar_deps | 642 _srcjar_deps += invoker.srcjar_deps |
| 638 } | 643 } |
| 639 | 644 |
| 640 _rebased_build_config = rebase_path(build_config, root_build_dir) | 645 _rebased_build_config = rebase_path(build_config, root_build_dir) |
| 641 | 646 |
| 642 write_build_config("${target_name}__build_config") { | 647 write_build_config("${_template_name}__build_config") { |
| 643 type = "android_apk" | 648 type = "android_apk" |
| 644 srcjar = resource_srcjar_path | 649 srcjar = resource_srcjar_path |
| 645 dex_path = final_dex_path | 650 dex_path = final_dex_path |
| 646 resources_zip = resources_zip_path | 651 resources_zip = resources_zip_path |
| 647 | 652 |
| 648 if (defined(invoker.deps)) { | 653 if (defined(invoker.deps)) { |
| 649 deps = invoker.deps | 654 deps = invoker.deps |
| 650 } | 655 } |
| 651 if (defined(invoker.testonly)) { | 656 if (defined(invoker.testonly)) { |
| 652 testonly = invoker.testonly | 657 testonly = invoker.testonly |
| 653 } | 658 } |
| 654 | 659 |
| 655 native_libs = _native_libs | 660 native_libs = _native_libs |
| 656 } | 661 } |
| 657 | 662 |
| 658 final_deps = [] | 663 final_deps = [] |
| 659 | 664 |
| 660 final_deps += [":${target_name}__process_resources"] | 665 final_deps += [":${_template_name}__process_resources"] |
| 661 process_resources("${target_name}__process_resources") { | 666 process_resources("${_template_name}__process_resources") { |
| 662 android_manifest = invoker.android_manifest | 667 android_manifest = invoker.android_manifest |
| 663 | 668 |
| 664 resource_dirs = ["//build/android/ant/empty/res"] | 669 resource_dirs = ["//build/android/ant/empty/res"] |
| 665 zip_path = resources_zip_path | 670 zip_path = resources_zip_path |
| 666 srcjar_path = resource_srcjar_path | 671 srcjar_path = resource_srcjar_path |
| 667 | 672 |
| 668 generate_constant_ids = true | 673 generate_constant_ids = true |
| 669 } | 674 } |
| 670 | 675 |
| 671 java_cpp_template("${target_name}__native_libraries_java") { | 676 if (_native_libs != []) { |
| 672 package_name = "org/chromium/base/library_loader" | 677 _use_chromium_linker = false |
| 673 sources = [ | 678 _enable_chromium_linker_tests = false |
| 674 "//base/android/java/templates/NativeLibraries.template", | 679 _load_library_from_apk = false |
| 675 ] | 680 _native_lib_version_name = "" |
| 676 inputs = [ | |
| 677 build_config, | |
| 678 ] | |
| 679 | 681 |
| 680 defines = [ | 682 |
| 681 "NATIVE_LIBRARIES_LIST=" + | 683 java_cpp_template("${_template_name}__native_libraries_java") { |
| 682 "@FileArg($_rebased_build_config:native:java_libraries_list)", | 684 package_name = "org/chromium/base/library_loader" |
| 683 "NATIVE_LIBRARIES_VERSION_NUMBER=\"$_native_lib_version_name\"", | 685 sources = [ |
| 684 ] | 686 "//base/android/java/templates/NativeLibraries.template", |
| 685 if (_use_chromium_linker) { | 687 ] |
| 686 defines += ["ENABLED_CHROMIUM_LINKER"] | 688 inputs = [ |
| 689 build_config, |
| 690 ] |
| 691 |
| 692 defines = [ |
| 693 "NATIVE_LIBRARIES_LIST=" + |
| 694 "@FileArg($_rebased_build_config:native:java_libraries_list)", |
| 695 "NATIVE_LIBRARIES_VERSION_NUMBER=\"$_native_lib_version_name\"", |
| 696 ] |
| 697 if (_use_chromium_linker) { |
| 698 defines += ["ENABLED_CHROMIUM_LINKER"] |
| 699 } |
| 700 if (_load_library_from_apk) { |
| 701 defines += ["ENABLE_CHROMIUM_LINKER_LIBRARY_IN_ZIP_FILE"] |
| 702 } |
| 703 if (_enable_chromium_linker_tests) { |
| 704 defines += ["ENABLE_CHROMIUM_LINKER_TESTS"] |
| 705 } |
| 687 } | 706 } |
| 688 if (_load_library_from_apk) { | 707 _srcjar_deps += [ ":${_template_name}__native_libraries_java" ] |
| 689 defines += ["ENABLE_CHROMIUM_LINKER_LIBRARY_IN_ZIP_FILE"] | |
| 690 } | |
| 691 if (_enable_chromium_linker_tests) { | |
| 692 defines += ["ENABLE_CHROMIUM_LINKER_TESTS"] | |
| 693 } | |
| 694 } | 708 } |
| 695 _srcjar_deps += [ ":${target_name}__native_libraries_java" ] | |
| 696 | 709 |
| 697 rebased_build_config = rebase_path(build_config, root_build_dir) | 710 final_deps += [":${_template_name}__java"] |
| 698 | 711 android_java_library("${_template_name}__java") { |
| 699 final_deps += [":${target_name}__java"] | |
| 700 android_java_library("${target_name}__java") { | |
| 701 android_manifest = invoker.android_manifest | 712 android_manifest = invoker.android_manifest |
| 702 if (defined(invoker.java_files)) { | 713 if (defined(invoker.java_files)) { |
| 703 java_files = invoker.java_files | 714 java_files = invoker.java_files |
| 704 } else { | 715 } else { |
| 705 DEPRECATED_java_in_dir = invoker.DEPRECATED_java_in_dir | 716 DEPRECATED_java_in_dir = invoker.DEPRECATED_java_in_dir |
| 706 } | 717 } |
| 707 srcjar_deps = _srcjar_deps | 718 srcjar_deps = _srcjar_deps |
| 708 dex_path = base_path + ".dex.jar" | 719 dex_path = base_path + ".dex.jar" |
| 709 } | 720 } |
| 710 | 721 |
| 711 final_deps += [":${target_name}__final_dex"] | 722 final_deps += [":${_template_name}__final_dex"] |
| 712 dex("${target_name}__final_dex") { | 723 dex("${_template_name}__final_dex") { |
| 713 sources = [jar_path] | 724 sources = [jar_path] |
| 714 inputs = [build_config] | 725 inputs = [build_config] |
| 715 output = final_dex_path | 726 output = final_dex_path |
| 716 dex_arg_key = "${rebased_build_config}:apk_dex:dependency_dex_files" | 727 dex_arg_key = "${_rebased_build_config}:apk_dex:dependency_dex_files" |
| 717 args = ["--inputs=@FileArg($dex_arg_key)"] | 728 args = ["--inputs=@FileArg($dex_arg_key)"] |
| 718 } | 729 } |
| 719 | 730 |
| 720 if (_native_libs != []) { | 731 if (_native_libs != []) { |
| 721 copy_ex("${target_name}__prepare_native") { | 732 copy_ex("${_template_name}__prepare_native") { |
| 722 clear_dir = true | 733 clear_dir = true |
| 723 inputs = [build_config] | 734 inputs = [ |
| 735 build_config |
| 736 ] |
| 724 dest = "$_native_libs_dir/$android_app_abi" | 737 dest = "$_native_libs_dir/$android_app_abi" |
| 725 args = [ | 738 args = [ |
| 726 "--files=@FileArg(${rebased_build_config}:native:libraries)", | 739 "--files=@FileArg(${_rebased_build_config}:native:libraries)", |
| 727 ] | 740 ] |
| 728 if (is_debug) { | 741 if (is_debug) { |
| 729 rebased_gdbserver = rebase_path(android_gdbserver, root_build_dir) | 742 rebased_gdbserver = rebase_path(android_gdbserver, root_build_dir) |
| 730 args += [ | 743 args += [ |
| 731 "--files=[\"$rebased_gdbserver\"]" | 744 "--files=[\"$rebased_gdbserver\"]" |
| 732 ] | 745 ] |
| 733 } | 746 } |
| 734 } | 747 } |
| 735 } | 748 } |
| 736 | 749 |
| 737 final_deps += [":${target_name}__create"] | 750 final_deps += [":${_template_name}__create"] |
| 738 create_apk("${target_name}__create") { | 751 create_apk("${_template_name}__create") { |
| 739 apk_path = invoker.final_apk_path | 752 apk_path = _final_apk_path |
| 740 android_manifest = invoker.android_manifest | 753 android_manifest = invoker.android_manifest |
| 741 resources_zip = all_resources_zip_path | 754 resources_zip = all_resources_zip_path |
| 742 dex_path = final_dex_path | 755 dex_path = final_dex_path |
| 743 | 756 |
| 757 if (defined(invoker.asset_location)) { |
| 758 asset_location = invoker.asset_location |
| 759 } |
| 760 |
| 744 keystore_name = _keystore_name | 761 keystore_name = _keystore_name |
| 745 keystore_path = _keystore_path | 762 keystore_path = _keystore_path |
| 746 keystore_password = _keystore_password | 763 keystore_password = _keystore_password |
| 747 | 764 |
| 748 if (_native_libs != []) { | 765 if (_native_libs != []) { |
| 749 native_libs_dir = _native_libs_dir | 766 native_libs_dir = _native_libs_dir |
| 750 deps = [":${_template_name}__prepare_native"] | 767 deps = [":${_template_name}__prepare_native"] |
| 751 } | 768 } |
| 752 } | 769 } |
| 753 | 770 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 787 | 804 |
| 788 test_suite_name = get_label_info(invoker.unittests_dep, "name") | 805 test_suite_name = get_label_info(invoker.unittests_dep, "name") |
| 789 | 806 |
| 790 if (defined(invoker.unittests_binary)) { | 807 if (defined(invoker.unittests_binary)) { |
| 791 unittests_binary = root_out_dir + "/" + invoker.unittests_binary | 808 unittests_binary = root_out_dir + "/" + invoker.unittests_binary |
| 792 } else { | 809 } else { |
| 793 unittests_binary = root_out_dir + "/" + test_suite_name | 810 unittests_binary = root_out_dir + "/" + test_suite_name |
| 794 } | 811 } |
| 795 | 812 |
| 796 android_apk(target_name) { | 813 android_apk(target_name) { |
| 797 apk_name = test_suite_name | 814 _apk_name = test_suite_name |
| 798 final_apk_path = "$root_build_dir/${apk_name}_apk/${apk_name}-debug.apk" | 815 final_apk_path = "$root_build_dir/${_apk_name}_apk/${_apk_name}-debug.apk" |
| 799 java_files = [ | 816 java_files = [ |
| 800 "//testing/android/java/src/org/chromium/native_test/ChromeNativeTestActiv
ity.java" | 817 "//testing/android/java/src/org/chromium/native_test/ChromeNativeTestActiv
ity.java" |
| 801 ] | 818 ] |
| 802 android_manifest = "//testing/android/java/AndroidManifest.xml" | 819 android_manifest = "//testing/android/java/AndroidManifest.xml" |
| 803 unittests_outputs = [ unittests_binary ] | 820 unittests_outputs = [ unittests_binary ] |
| 804 native_libs = [unittests_outputs[0]] | 821 native_libs = [unittests_outputs[0]] |
| 805 if (defined(invoker.deps)) { | 822 if (defined(invoker.deps)) { |
| 806 deps = invoker.deps | 823 deps = invoker.deps |
| 807 } | 824 } |
| 808 testonly = true | 825 testonly = true |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 871 "//build/android/gyp/find.py", | 888 "//build/android/gyp/find.py", |
| 872 rebase_path([invoker.import_include], root_build_dir), | 889 rebase_path([invoker.import_include], root_build_dir), |
| 873 "list lines" | 890 "list lines" |
| 874 ) | 891 ) |
| 875 _java_files = rebase_path(_java_files_build_rel, ".", root_build_dir) | 892 _java_files = rebase_path(_java_files_build_rel, ".", root_build_dir) |
| 876 inputs += _java_files | 893 inputs += _java_files |
| 877 } | 894 } |
| 878 args += rebase_path(sources, root_build_dir) | 895 args += rebase_path(sources, root_build_dir) |
| 879 } | 896 } |
| 880 } | 897 } |
| OLD | NEW |