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 |