Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(127)

Side by Side Diff: build/config/android/rules.gni

Issue 650933003: GN: make relocation packing work (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@gn-parse-error
Patch Set: Extract some relocation packer config to //tools/relocation_packer/config.gni Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 import("//tools/relocation_packer/config.gni")
8 9
9 assert(is_android) 10 assert(is_android)
10 11
11
12 # Declare a jni target 12 # Declare a jni target
13 # 13 #
14 # This target generates the native jni bindings for a set of .java files. 14 # This target generates the native jni bindings for a set of .java files.
15 # 15 #
16 # See base/android/jni_generator/jni_generator.py for more info about the 16 # See base/android/jni_generator/jni_generator.py for more info about the
17 # format of generating JNI bindings. 17 # format of generating JNI bindings.
18 # 18 #
19 # Variables 19 # Variables
20 # sources: list of .java files to generate jni for 20 # sources: list of .java files to generate jni for
21 # jni_package: subdirectory path for generated bindings 21 # jni_package: subdirectory path for generated bindings
(...skipping 808 matching lines...) Expand 10 before | Expand all | Expand 10 after
830 _dist_jar_path = _dist_jar_path_list[0] 830 _dist_jar_path = _dist_jar_path_list[0]
831 831
832 _native_libs = [] 832 _native_libs = []
833 833
834 _use_chromium_linker = false 834 _use_chromium_linker = false
835 if (defined(invoker.use_chromium_linker)) { 835 if (defined(invoker.use_chromium_linker)) {
836 _use_chromium_linker = invoker.use_chromium_linker 836 _use_chromium_linker = invoker.use_chromium_linker
837 } 837 }
838 assert(_use_chromium_linker || true) 838 assert(_use_chromium_linker || true)
839 839
840 _enable_relocation_packing = false
841 if (defined(invoker.enable_relocation_packing)) {
842 _enable_relocation_packing = invoker.enable_relocation_packing
843 }
844 assert(_enable_relocation_packing || true)
simonb (inactive) 2014/10/20 13:06:09 Does this do anything? (Also for _use_chromium_li
845
846 if (_enable_relocation_packing) {
847 assert(_use_chromium_linker, "Relocation packing requires use of the" +
848 "Chromium linker.")
849 }
850
840 _load_library_from_apk = false 851 _load_library_from_apk = false
841 if (defined(invoker.load_library_from_apk)) { 852 if (defined(invoker.load_library_from_apk)) {
842 _load_library_from_apk = invoker.load_library_from_apk 853 _load_library_from_apk = invoker.load_library_from_apk
843 } 854 }
844 855
845 _keystore_path = android_default_keystore_path 856 _keystore_path = android_default_keystore_path
846 _keystore_name = android_default_keystore_name 857 _keystore_name = android_default_keystore_name
847 _keystore_password = android_default_keystore_password 858 _keystore_password = android_default_keystore_password
848 859
849 if (defined(invoker.keystore_path)) { 860 if (defined(invoker.keystore_path)) {
850 _keystore_path = invoker.keystore_path 861 _keystore_path = invoker.keystore_path
851 _keystore_name = invoker.keystore_name 862 _keystore_name = invoker.keystore_name
852 _keystore_password = invoker.keystore_password 863 _keystore_password = invoker.keystore_password
853 } 864 }
854 865
855 _srcjar_deps = [] 866 _srcjar_deps = []
856 if (defined(invoker.srcjar_deps)) { 867 if (defined(invoker.srcjar_deps)) {
857 _srcjar_deps += invoker.srcjar_deps 868 _srcjar_deps += invoker.srcjar_deps
858 } 869 }
859 870
860 if (defined(invoker.native_libs)) { 871 if (defined(invoker.native_libs)) {
861 # TODO(GYP) add "|| profiling_full_stack_frames 872 # TODO(GYP) add "|| profiling_full_stack_frames
862 # Only enable the chromium linker on regular builds, since the 873 # Only enable the chromium linker on regular builds, since the
863 # component build crashes on Android 4.4. See b/11379966 874 # component build crashes on Android 4.4. See b/11379966
864 if (is_component_build || cpu_arch == "arm64" || cpu_arch == "x64") { 875 if (is_component_build || cpu_arch == "arm64" || cpu_arch == "x64") {
865 _use_chromium_linker = false 876 _use_chromium_linker = false
866 } 877 }
867 878
879 if (!_use_chromium_linker || !relocation_packing_supported) {
880 _enable_relocation_packing = false
881 }
882
868 _native_libs = invoker.native_libs 883 _native_libs = invoker.native_libs
869 _native_libs_dir = base_path + "/libs" 884 _native_libs_dir = base_path + "/libs"
870 885
871 if (_use_chromium_linker) { 886 if (_use_chromium_linker) {
872 _native_libs += [ 887 _native_libs += [
873 "$root_build_dir/lib.stripped/libchromium_android_linker.so" 888 "$root_build_dir/lib.stripped/libchromium_android_linker.so"
874 ] 889 ]
875 } 890 }
876 } 891 }
877 892
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
979 dex("${_template_name}__final_dex") { 994 dex("${_template_name}__final_dex") {
980 deps = [ ":${_template_name}__java" ] 995 deps = [ ":${_template_name}__java" ]
981 sources = [ jar_path ] 996 sources = [ jar_path ]
982 inputs = [ build_config ] 997 inputs = [ build_config ]
983 output = final_dex_path 998 output = final_dex_path
984 dex_arg_key = "${_rebased_build_config}:apk_dex:dependency_dex_files" 999 dex_arg_key = "${_rebased_build_config}:apk_dex:dependency_dex_files"
985 args = [ "--inputs=@FileArg($dex_arg_key)" ] 1000 args = [ "--inputs=@FileArg($dex_arg_key)" ]
986 } 1001 }
987 1002
988 if (_native_libs != []) { 1003 if (_native_libs != []) {
989 copy_ex("${_template_name}__prepare_native") { 1004 action("${_template_name}__prepare_native") {
990 clear_dir = true 1005 script = "//build/android/gyp/pack_arm_relocations.py"
1006 packed_libraries_dir = "$_native_libs_dir/$android_app_abi"
1007 depfile = "$target_gen_dir/$target_name.d"
1008 outputs = [
1009 depfile
1010 ]
991 inputs = [ 1011 inputs = [
992 build_config 1012 build_config
993 ] 1013 ]
994 dest = "$_native_libs_dir/$android_app_abi" 1014 deps = []
1015 skip_packing_list = [
1016 "gdbserver",
1017 "libchromium_android_linker.so",
1018 ]
1019
1020 enable_packing_arg = 0
1021 if (_enable_relocation_packing) {
1022 enable_packing_arg = 1
1023 deps += [
1024 relocation_packer_target
1025 ]
1026 }
1027
995 args = [ 1028 args = [
996 "--files=@FileArg(${_rebased_build_config}:native:libraries)", 1029 "--depfile", rebase_path(depfile, root_build_dir),
1030 "--enable-packing=$enable_packing_arg",
1031 "--has-relocations-with-addends=$relocations_have_addends",
1032 "--exclude-packing-list=$skip_packing_list",
1033 "--android-pack-relocations", rebase_path(relocation_packer_exe, root_bu ild_dir),
1034 "--android-objcopy", rebase_path(android_objcopy, root_build_dir),
1035 "--stripped-libraries-dir", rebase_path(root_build_dir, root_build_dir),
1036 "--packed-libraries-dir", rebase_path(packed_libraries_dir, root_build_d ir),
1037 "--libraries=@FileArg(${_rebased_build_config}:native:libraries)",
1038 "--clear-dir"
997 ] 1039 ]
1040
998 if (is_debug) { 1041 if (is_debug) {
999 rebased_gdbserver = rebase_path(android_gdbserver, root_build_dir) 1042 rebased_gdbserver = rebase_path([ android_gdbserver ], root_build_dir)
1043 inputs += [ android_gdbserver ]
1000 args += [ 1044 args += [
1001 "--files=[\"$rebased_gdbserver\"]" 1045 "--libraries=$rebased_gdbserver"
1002 ] 1046 ]
1003 } 1047 }
1004 } 1048 }
1005 } 1049 }
1006 1050
1007 final_deps += [":${_template_name}__create"] 1051 final_deps += [":${_template_name}__create"]
1008 create_apk("${_template_name}__create") { 1052 create_apk("${_template_name}__create") {
1009 apk_path = _final_apk_path 1053 apk_path = _final_apk_path
1010 android_manifest = invoker.android_manifest 1054 android_manifest = invoker.android_manifest
1011 resources_zip = all_resources_zip_path 1055 resources_zip = all_resources_zip_path
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
1294 } 1338 }
1295 1339
1296 # TODO(GYP): implement this. 1340 # TODO(GYP): implement this.
1297 template("uiautomator_test") { 1341 template("uiautomator_test") {
1298 if (defined(invoker.testonly)) { testonly = invoker.testonly } 1342 if (defined(invoker.testonly)) { testonly = invoker.testonly }
1299 assert(target_name != "") 1343 assert(target_name != "")
1300 assert(invoker.deps != [] || true) 1344 assert(invoker.deps != [] || true)
1301 group(target_name) { 1345 group(target_name) {
1302 } 1346 }
1303 } 1347 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698