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

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

Issue 2319273002: Make secondary abi work for component build (Closed)
Patch Set: Created 4 years, 3 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("//build/config/dcheck_always_on.gni") 7 import("//build/config/dcheck_always_on.gni")
8 import("//build/toolchain/toolchain.gni") 8 import("//build/toolchain/toolchain.gni")
9 9
10 assert(is_android) 10 assert(is_android)
(...skipping 1410 matching lines...) Expand 10 before | Expand all | Expand 10 after
1421 # * dependencies of this .so are not automatically included 1421 # * dependencies of this .so are not automatically included
1422 # * ".cr.so" is never added 1422 # * ".cr.so" is never added
1423 # * they are not side-loaded for _incremental targets. 1423 # * they are not side-loaded for _incremental targets.
1424 # * load_library_from_apk, use_chromium_linker, 1424 # * load_library_from_apk, use_chromium_linker,
1425 # and enable_relocation_packing do not apply 1425 # and enable_relocation_packing do not apply
1426 # Use this instead of shared_libraries when you are going to load the libr ary 1426 # Use this instead of shared_libraries when you are going to load the libr ary
1427 # conditionally, and only when shared_libraries doesn't work for you. 1427 # conditionally, and only when shared_libraries doesn't work for you.
1428 # shared_libraries: List shared_library targets to bundle. If these 1428 # shared_libraries: List shared_library targets to bundle. If these
1429 # libraries depend on other shared_library targets, those dependencies wil l 1429 # libraries depend on other shared_library targets, those dependencies wil l
1430 # also be included in the apk (e.g. for is_component_build). 1430 # also be included in the apk (e.g. for is_component_build).
1431 # secondary_abi_shared_libraries: secondary abi shared_library targets to
1432 # bundle. If these libraries depend on other shared_library targets, those
1433 # dependencies will also be included in the apk (e.g. for is_component_bui ld).
1431 # native_lib_placeholders: List of placeholder filenames to add to the apk 1434 # native_lib_placeholders: List of placeholder filenames to add to the apk
1432 # (optional). 1435 # (optional).
1433 # apk_under_test: For an instrumentation test apk, this is the target of the 1436 # apk_under_test: For an instrumentation test apk, this is the target of the
1434 # tested apk. 1437 # tested apk.
1435 # include_all_resources - If true include all resource IDs in all generated 1438 # include_all_resources - If true include all resource IDs in all generated
1436 # R.java files. 1439 # R.java files.
1437 # testonly: Marks this target as "test-only". 1440 # testonly: Marks this target as "test-only".
1438 # write_asset_list: Adds an extra file to the assets, which contains a list of 1441 # write_asset_list: Adds an extra file to the assets, which contains a list of
1439 # all other asset files. 1442 # all other asset files.
1440 # alternative_locale_resource_dep: The locale resource target which override s 1443 # alternative_locale_resource_dep: The locale resource target which override s
1441 # any exsting locale resources in dep graph. 1444 # any exsting locale resources in dep graph.
1442 # requires_sdk_api_level_23: If defined and true, the apk is intended for 1445 # requires_sdk_api_level_23: If defined and true, the apk is intended for
1443 # installation only on Android M or later. In these releases the system 1446 # installation only on Android M or later. In these releases the system
1444 # linker does relocation unpacking, so we can enable it unconditionally. 1447 # linker does relocation unpacking, so we can enable it unconditionally.
1445 # secondary_native_libs: The path of native libraries for secondary app abi. 1448 # secondary_native_libs (deprecated): The path of native libraries for secon dary
1449 # app abi.
1446 # run_findbugs_override: Forces run_findbugs on or off. If undefined, the 1450 # run_findbugs_override: Forces run_findbugs on or off. If undefined, the
1447 # default will use the build arg run_findbugs. 1451 # default will use the build arg run_findbugs.
1448 # proguard_jar_path: The path to proguard.jar you wish to use. If undefined, 1452 # proguard_jar_path: The path to proguard.jar you wish to use. If undefined,
1449 # the proguard used will be the checked in one in //third_party/proguard. 1453 # the proguard used will be the checked in one in //third_party/proguard.
1450 # 1454 #
1451 # Example 1455 # Example
1452 # android_apk("foo_apk") { 1456 # android_apk("foo_apk") {
1453 # android_manifest = "AndroidManifest.xml" 1457 # android_manifest = "AndroidManifest.xml"
1454 # java_files = [ 1458 # java_files = [
1455 # "android/org/chromium/foo/FooApplication.java", 1459 # "android/org/chromium/foo/FooApplication.java",
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1551 "or requires_sdk_api_level_23") 1555 "or requires_sdk_api_level_23")
1552 } 1556 }
1553 if (_load_library_from_apk) { 1557 if (_load_library_from_apk) {
1554 assert(_use_chromium_linker || _requires_sdk_api_level_23, 1558 assert(_use_chromium_linker || _requires_sdk_api_level_23,
1555 "load_library_from_apk requires use_chromium_linker " + 1559 "load_library_from_apk requires use_chromium_linker " +
1556 "or requires_sdk_api_level_23") 1560 "or requires_sdk_api_level_23")
1557 } 1561 }
1558 1562
1559 # The dependency that makes the chromium linker, if any is needed. 1563 # The dependency that makes the chromium linker, if any is needed.
1560 _native_libs_deps = [] 1564 _native_libs_deps = []
1565 _shared_libraries_is_valid =
1566 defined(invoker.shared_libraries) && invoker.shared_libraries != []
1567 _secondary_abi_native_libs_deps = []
1568 assert(_secondary_abi_native_libs_deps == []) # mark as used.
1569 _secondary_abi_shared_libraries_is_valid =
1570 defined(invoker.secondary_abi_shared_libraries) &&
1571 invoker.secondary_abi_shared_libraries != []
1561 1572
1562 if (defined(invoker.shared_libraries) && invoker.shared_libraries != []) { 1573 if (is_component_build || is_asan) {
1563 _native_libs_deps += invoker.shared_libraries 1574 if (_shared_libraries_is_valid) {
1564
1565 if (is_component_build || is_asan) {
1566 _native_libs_deps += [ "//build/android:cpplib_stripped" ] 1575 _native_libs_deps += [ "//build/android:cpplib_stripped" ]
1567 } 1576 }
1577 if (_secondary_abi_shared_libraries_is_valid) {
1578 _secondary_abi_native_libs_deps += [ "//build/android:cpplib_stripped($a ndroid_secondary_abi_toolchain)" ]
1579 }
1580 }
1581
1582 if (_shared_libraries_is_valid) {
1583 _native_libs_deps += invoker.shared_libraries
1568 1584
1569 # To determine the filenames of all dependent shared libraries, write the 1585 # To determine the filenames of all dependent shared libraries, write the
1570 # runtime deps of |shared_libraries| to a file during "gn gen". 1586 # runtime deps of |shared_libraries| to a file during "gn gen".
1571 # write_build_config.py will then grep this file for *.so to obtain the 1587 # write_build_config.py will then grep this file for *.so to obtain the
1572 # complete list. 1588 # complete list.
1573 _runtime_deps_file = 1589 _runtime_deps_file =
1574 "$target_gen_dir/${_template_name}.native.runtimedeps" 1590 "$target_gen_dir/${_template_name}.native.runtimedeps"
1575 group("${_template_name}__runtime_deps") { 1591 group("${_template_name}__runtime_deps") {
1576 deps = _native_libs_deps 1592 deps = _native_libs_deps
1577 write_runtime_deps = _runtime_deps_file 1593 write_runtime_deps = _runtime_deps_file
1578 } 1594 }
1579 1595
1580 _native_lib_version_rule = "" 1596 _native_lib_version_rule = ""
1581 if (defined(invoker.native_lib_version_rule)) { 1597 if (defined(invoker.native_lib_version_rule)) {
1582 _native_lib_version_rule = invoker.native_lib_version_rule 1598 _native_lib_version_rule = invoker.native_lib_version_rule
1583 } 1599 }
1584 _native_lib_version_arg = "\"\"" 1600 _native_lib_version_arg = "\"\""
1585 if (defined(invoker.native_lib_version_arg)) { 1601 if (defined(invoker.native_lib_version_arg)) {
1586 _native_lib_version_arg = invoker.native_lib_version_arg 1602 _native_lib_version_arg = invoker.native_lib_version_arg
1587 } 1603 }
1588 } 1604 }
1589 1605
1606 if (_secondary_abi_shared_libraries_is_valid) {
1607 _secondary_abi_native_libs_deps += invoker.secondary_abi_shared_libraries
1608
1609 # To determine the filenames of all dependent shared libraries, write the
1610 # runtime deps of |shared_libraries| to a file during "gn gen".
1611 # write_build_config.py will then grep this file for *.so to obtain the
1612 # complete list.
1613 _secondary_abi_runtime_deps_file =
1614 "$target_gen_dir/${_template_name}.secondary.abi.native.runtimedeps"
1615 group("${_template_name}_secondary_abi__runtime_deps") {
1616 deps = _secondary_abi_native_libs_deps
1617 write_runtime_deps = _secondary_abi_runtime_deps_file
1618 }
1619 }
1620
1590 if (defined(invoker.deps)) { 1621 if (defined(invoker.deps)) {
1591 set_sources_assignment_filter([ "*manifest*" ]) 1622 set_sources_assignment_filter([ "*manifest*" ])
1592 sources = invoker.deps 1623 sources = invoker.deps
1593 set_sources_assignment_filter([]) 1624 set_sources_assignment_filter([])
1594 if (sources != invoker.deps) { 1625 if (sources != invoker.deps) {
1595 _bad_deps = invoker.deps - sources 1626 _bad_deps = invoker.deps - sources
1596 assert( 1627 assert(
1597 false, 1628 false,
1598 "Possible manifest-generating dep found in deps. Use android_manifes t_dep for this instead. Found: $_bad_deps") 1629 "Possible manifest-generating dep found in deps. Use android_manifes t_dep for this instead. Found: $_bad_deps")
1599 } 1630 }
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1658 proguard_info = "$_proguard_output_jar_path.info" 1689 proguard_info = "$_proguard_output_jar_path.info"
1659 } 1690 }
1660 1691
1661 # Don't depend on the runtime_deps target in order to avoid having to 1692 # Don't depend on the runtime_deps target in order to avoid having to
1662 # build the native libraries just to create the .build_config file. 1693 # build the native libraries just to create the .build_config file.
1663 # The dep is unnecessary since the runtime_deps file is created by gn gen 1694 # The dep is unnecessary since the runtime_deps file is created by gn gen
1664 # and the runtime_deps file is added to write_build_config.py's depfile. 1695 # and the runtime_deps file is added to write_build_config.py's depfile.
1665 if (_native_libs_deps != []) { 1696 if (_native_libs_deps != []) {
1666 shared_libraries_runtime_deps_file = _runtime_deps_file 1697 shared_libraries_runtime_deps_file = _runtime_deps_file
1667 } 1698 }
1699 if (_secondary_abi_native_libs_deps != []) {
1700 secondary_abi_shared_libraries_runtime_deps_file =
1701 _secondary_abi_runtime_deps_file
1702 }
1668 } 1703 }
1669 1704
1670 _final_deps = [] 1705 _final_deps = []
1671 1706
1672 _generated_proguard_config = "$base_path.resources.proguard.txt" 1707 _generated_proguard_config = "$base_path.resources.proguard.txt"
1673 process_resources_target = "${_template_name}__process_resources" 1708 process_resources_target = "${_template_name}__process_resources"
1674 process_resources(process_resources_target) { 1709 process_resources(process_resources_target) {
1675 forward_variables_from(invoker, 1710 forward_variables_from(invoker,
1676 [ 1711 [
1677 "alternative_android_sdk_jar", 1712 "alternative_android_sdk_jar",
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
1926 } else { 1961 } else {
1927 _dex_arg_key = 1962 _dex_arg_key =
1928 "${_rebased_build_config}:final_dex:dependency_dex_files" 1963 "${_rebased_build_config}:final_dex:dependency_dex_files"
1929 } 1964 }
1930 args = [ "--inputs=@FileArg($_dex_arg_key)" ] 1965 args = [ "--inputs=@FileArg($_dex_arg_key)" ]
1931 } 1966 }
1932 } 1967 }
1933 1968
1934 _native_libs_file_arg_dep = ":$build_config_target" 1969 _native_libs_file_arg_dep = ":$build_config_target"
1935 _native_libs_file_arg = "@FileArg($_rebased_build_config:native:libraries)" 1970 _native_libs_file_arg = "@FileArg($_rebased_build_config:native:libraries)"
1971 _secondary_abi_native_libs_file_arg_dep = ":$build_config_target"
1972 _secondary_abi_native_libs_file_arg =
1973 "@FileArg($_rebased_build_config:native:secondary_abi_libraries)"
1974 assert(_secondary_abi_native_libs_file_arg != "" &&
1975 _secondary_abi_native_libs_file_arg_dep != "") # Mark as used.
1936 1976
1937 if (_native_libs_deps != [] && _enable_relocation_packing) { 1977 if (_native_libs_deps != [] && _enable_relocation_packing) {
1938 _prepare_native_target_name = "${_template_name}__prepare_native" 1978 _prepare_native_target_name = "${_template_name}__prepare_native"
1939 _native_libs_dir = "$gen_dir/packed-libs"
1940 _native_libs_json = "$gen_dir/packed-libs/filelist.json" 1979 _native_libs_json = "$gen_dir/packed-libs/filelist.json"
1941 _rebased_native_libs_json = rebase_path(_native_libs_json, root_build_dir) 1980 _rebased_native_libs_json = rebase_path(_native_libs_json, root_build_dir)
1942
1943 _native_libs_file_arg_dep = ":$_prepare_native_target_name" 1981 _native_libs_file_arg_dep = ":$_prepare_native_target_name"
1944 _native_libs_file_arg = "@FileArg($_rebased_native_libs_json:files)" 1982 _native_libs_file_arg = "@FileArg($_rebased_native_libs_json:files)"
1945 1983
1946 action(_prepare_native_target_name) { 1984 pack_relocation_section(_prepare_native_target_name) {
1947 forward_variables_from(invoker, 1985 forward_variables_from(invoker,
1948 [ 1986 [
1949 "deps", 1987 "deps",
1950 "public_deps", 1988 "public_deps",
1951 ]) 1989 ])
1952 script = "//build/android/gyp/pack_relocations.py" 1990 file_list_json = _native_libs_json
1953 depfile = "$target_gen_dir/$target_name.d" 1991 libraries_filearg =
1954 outputs = [ 1992 "@FileArg(${_rebased_build_config}:native:libraries)"
1955 depfile,
1956 _native_libs_json,
1957 ]
1958
1959 inputs = [ 1993 inputs = [
1960 _build_config, 1994 _build_config,
1961 ] 1995 ]
1962 1996
1963 deps += _native_libs_deps 1997 deps += _native_libs_deps
1964 deps += [ 1998 deps += [ ":$build_config_target" ]
1965 ":$build_config_target", 1999 }
1966 relocation_packer_target, 2000 if (_secondary_abi_native_libs_deps != []) {
1967 ] 2001 _prepare_native_target_name =
2002 "${_template_name}_secondary_abi__prepare_native"
2003 _native_libs_json =
2004 "$gen_dir/packed-libs/$android_secondary_abi_cpu/filelist.json"
2005 _rebased_native_libs_json =
2006 rebase_path(_native_libs_json, root_build_dir)
2007 _secondary_abi_native_libs_file_arg_dep =
2008 ":$_prepare_native_target_name"
2009 _secondary_abi_native_libs_file_arg =
2010 "@FileArg($_rebased_native_libs_json:files)"
1968 2011
1969 args = [ 2012 pack_relocation_section(_prepare_native_target_name) {
1970 "--depfile", 2013 forward_variables_from(invoker,
1971 rebase_path(depfile, root_build_dir), 2014 [
1972 "--enable-packing=1", 2015 "deps",
1973 "--android-pack-relocations", 2016 "public_deps",
1974 rebase_path(relocation_packer_exe, root_build_dir), 2017 ])
1975 "--stripped-libraries-dir", 2018 file_list_json = _native_libs_json
1976 rebase_path(root_build_dir, root_build_dir), 2019 libraries_filearg = "@FileArg(${_rebased_build_config}:native:secondar y_abi_libraries)"
1977 "--packed-libraries-dir", 2020 inputs = [
1978 rebase_path(_native_libs_dir, root_build_dir), 2021 _build_config,
1979 "--libraries=@FileArg(${_rebased_build_config}:native:libraries)", 2022 ]
1980 "--filelistjson=$_rebased_native_libs_json", 2023
1981 ] 2024 deps += _secondary_abi_native_libs_deps
2025 deps += [ ":$build_config_target" ]
2026 }
1982 } 2027 }
1983 } 2028 }
1984 2029
1985 _extra_native_libs = [] 2030 _extra_native_libs = []
1986 _extra_native_libs_deps = [] 2031 _extra_native_libs_deps = []
1987 _extra_native_libs_even_when_incremental = [] 2032 _extra_native_libs_even_when_incremental = []
1988 _extra_native_libs_even_when_incremental_deps = [] 2033 _extra_native_libs_even_when_incremental_deps = []
1989 assert(_extra_native_libs_even_when_incremental_deps == []) # Mark as used. 2034 assert(_extra_native_libs_even_when_incremental_deps == []) # Mark as used.
1990 if (_native_libs_deps != []) { 2035 if (_native_libs_deps != []) {
1991 # zipalign can't align gdb_server, don't pack gdbserver temporarily. 2036 # zipalign can't align gdb_server, don't pack gdbserver temporarily.
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
2066 !_create_abi_split) { 2111 !_create_abi_split) {
2067 deps += _native_libs_deps + _extra_native_libs_deps + 2112 deps += _native_libs_deps + _extra_native_libs_deps +
2068 _extra_native_libs_even_when_incremental_deps + 2113 _extra_native_libs_even_when_incremental_deps +
2069 [ _native_libs_file_arg_dep ] 2114 [ _native_libs_file_arg_dep ]
2070 native_libs_filearg = _native_libs_file_arg 2115 native_libs_filearg = _native_libs_file_arg
2071 native_libs = _extra_native_libs 2116 native_libs = _extra_native_libs
2072 native_libs_even_when_incremental = 2117 native_libs_even_when_incremental =
2073 _extra_native_libs_even_when_incremental 2118 _extra_native_libs_even_when_incremental
2074 } 2119 }
2075 2120
2121 if (_secondary_abi_native_libs_deps != [] && !_create_abi_split) {
2122 deps += [ _secondary_abi_native_libs_file_arg_dep ]
2123 secondary_abi_native_libs_filearg = _secondary_abi_native_libs_file_arg
2124 }
2125
2076 # Placeholders necessary for some older devices. 2126 # Placeholders necessary for some older devices.
2077 # http://crbug.com/395038 2127 # http://crbug.com/395038
2078 forward_variables_from(invoker, [ "native_lib_placeholders" ]) 2128 forward_variables_from(invoker, [ "native_lib_placeholders" ])
2079 } 2129 }
2080 2130
2081 if ((_native_libs_deps != [] || 2131 if ((_native_libs_deps != [] ||
2082 _extra_native_libs_even_when_incremental != []) && _create_abi_split) { 2132 _extra_native_libs_even_when_incremental != []) && _create_abi_split) {
2083 _manifest_rule = 2133 _manifest_rule =
2084 "${_template_name}__split_manifest_abi_${android_app_abi}" 2134 "${_template_name}__split_manifest_abi_${android_app_abi}"
2085 generate_split_manifest(_manifest_rule) { 2135 generate_split_manifest(_manifest_rule) {
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after
2706 supports_android = true 2756 supports_android = true
2707 jar_path = "${_output_path}/$jar" 2757 jar_path = "${_output_path}/$jar"
2708 } 2758 }
2709 } 2759 }
2710 2760
2711 java_group(target_name) { 2761 java_group(target_name) {
2712 deps = _resource_targets + _jar_targets 2762 deps = _resource_targets + _jar_targets
2713 } 2763 }
2714 } 2764 }
2715 } 2765 }
OLDNEW
« build/config/android/internal_rules.gni ('K') | « build/config/android/internal_rules.gni ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698