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("//base/android/linker/config.gni") | 5 import("//base/android/linker/config.gni") |
6 import("//build/config/android/config.gni") | 6 import("//build/config/android/config.gni") |
7 import("//build/config/android/internal_rules.gni") | 7 import("//build/config/android/internal_rules.gni") |
8 import("//third_party/android_platform/config.gni") | 8 import("//third_party/android_platform/config.gni") |
9 import("//tools/grit/grit_rule.gni") | 9 import("//tools/grit/grit_rule.gni") |
10 | 10 |
(...skipping 1334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1345 # native_lib_path | 1345 # native_lib_path |
1346 # ] | 1346 # ] |
1347 # } | 1347 # } |
1348 template("android_apk") { | 1348 template("android_apk") { |
1349 set_sources_assignment_filter([]) | 1349 set_sources_assignment_filter([]) |
1350 if (defined(invoker.testonly)) { | 1350 if (defined(invoker.testonly)) { |
1351 testonly = invoker.testonly | 1351 testonly = invoker.testonly |
1352 } | 1352 } |
1353 | 1353 |
1354 assert(defined(invoker.final_apk_path) || defined(invoker.apk_name)) | 1354 assert(defined(invoker.final_apk_path) || defined(invoker.apk_name)) |
1355 assert(defined(invoker.android_manifest)) | 1355 assert(defined(invoker.android_manifest) || |
1356 defined(invoker.android_manifest_dep)) | |
1356 gen_dir = "$target_gen_dir/$target_name" | 1357 gen_dir = "$target_gen_dir/$target_name" |
1357 base_path = "$gen_dir/$target_name" | 1358 base_path = "$gen_dir/$target_name" |
1358 _build_config = "$target_gen_dir/$target_name.build_config" | 1359 _build_config = "$target_gen_dir/$target_name.build_config" |
1359 resources_zip_path = "$base_path.resources.zip" | 1360 resources_zip_path = "$base_path.resources.zip" |
1360 _all_resources_zip_path = "$base_path.resources.all.zip" | 1361 _all_resources_zip_path = "$base_path.resources.all.zip" |
1361 jar_path = "$base_path.jar" | 1362 jar_path = "$base_path.jar" |
1362 _template_name = target_name | 1363 _template_name = target_name |
1363 | 1364 |
1364 final_dex_path = "$gen_dir/classes.dex" | 1365 final_dex_path = "$gen_dir/classes.dex" |
1365 final_dex_target_name = "${_template_name}__final_dex" | 1366 final_dex_target_name = "${_template_name}__final_dex" |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1447 invoker.enable_relocation_packing) { | 1448 invoker.enable_relocation_packing) { |
1448 _enable_relocation_packing = true | 1449 _enable_relocation_packing = true |
1449 } | 1450 } |
1450 | 1451 |
1451 _native_lib_version_name = "" | 1452 _native_lib_version_name = "" |
1452 if (defined(invoker.native_lib_version_name)) { | 1453 if (defined(invoker.native_lib_version_name)) { |
1453 _native_lib_version_name = invoker.native_lib_version_name | 1454 _native_lib_version_name = invoker.native_lib_version_name |
1454 } | 1455 } |
1455 } | 1456 } |
1456 | 1457 |
1457 _android_manifest = invoker.android_manifest | 1458 # The manifest can be passed as a file (through android_manifest), or as a |
1459 # rule that generates a manifest (through android_manifest_dep). | |
1460 # When it is a rule, we need to make sure to include the rule as a dep to each | |
1461 # target that uses the manifest as an input. | |
1462 _android_manifest_deps = [] | |
1463 if (defined(invoker.android_manifest_dep)) { | |
1464 _android_manifest_deps = [ invoker.android_manifest_dep ] | |
1465 } | |
1466 if (defined(invoker.android_manifest)) { | |
1467 _android_manifest = invoker.android_manifest | |
1468 } else { | |
1469 _manifest_out_files = get_target_outputs(_android_manifest_deps[0]) | |
1470 | |
1471 # Use the last output, since depfile outputs always need to come first. | |
cjhopman
2015/06/26 22:38:48
This is strange and makes hard to find assumptions
| |
1472 foreach(_file, _manifest_out_files) { | |
1473 _android_manifest = _file | |
1474 } | |
1475 } | |
1476 | |
1458 _rebased_build_config = rebase_path(_build_config, root_build_dir) | 1477 _rebased_build_config = rebase_path(_build_config, root_build_dir) |
1459 _create_abi_split = | 1478 _create_abi_split = |
1460 defined(invoker.create_abi_split) && invoker.create_abi_split | 1479 defined(invoker.create_abi_split) && invoker.create_abi_split |
1461 _create_density_splits = | 1480 _create_density_splits = |
1462 defined(invoker.create_density_splits) && invoker.create_density_splits | 1481 defined(invoker.create_density_splits) && invoker.create_density_splits |
1463 | 1482 |
1464 # Help GN understand that _create_abi_split is not unused (bug in GN). | 1483 # Help GN understand that _create_abi_split is not unused (bug in GN). |
1465 assert(_create_abi_split || true) | 1484 assert(_create_abi_split || true) |
1466 | 1485 |
1467 build_config_target = "${_template_name}__build_config" | 1486 build_config_target = "${_template_name}__build_config" |
1468 write_build_config(build_config_target) { | 1487 write_build_config(build_config_target) { |
1469 type = "android_apk" | 1488 type = "android_apk" |
1470 dex_path = final_dex_path | 1489 dex_path = final_dex_path |
1471 resources_zip = resources_zip_path | 1490 resources_zip = resources_zip_path |
1472 build_config = _build_config | 1491 build_config = _build_config |
1473 android_manifest = _android_manifest | 1492 android_manifest = _android_manifest |
1474 | 1493 |
1475 deps = _chromium_linker_dep | 1494 deps = _chromium_linker_dep + _android_manifest_deps |
1476 if (defined(invoker.deps)) { | 1495 if (defined(invoker.deps)) { |
1477 deps += invoker.deps | 1496 deps += invoker.deps |
1478 } | 1497 } |
1479 | 1498 |
1480 if (defined(invoker.apk_under_test)) { | 1499 if (defined(invoker.apk_under_test)) { |
1481 apk_under_test = invoker.apk_under_test | 1500 apk_under_test = invoker.apk_under_test |
1482 } | 1501 } |
1483 | 1502 |
1484 native_libs = _native_libs | 1503 native_libs = _native_libs |
1485 } | 1504 } |
1486 | 1505 |
1487 final_deps = [] | 1506 final_deps = [] |
1488 | 1507 |
1489 process_resources_target = "${_template_name}__process_resources" | 1508 process_resources_target = "${_template_name}__process_resources" |
1490 final_deps += [ ":$process_resources_target" ] | 1509 final_deps += [ ":$process_resources_target" ] |
1491 process_resources(process_resources_target) { | 1510 process_resources(process_resources_target) { |
1492 srcjar_path = "${target_gen_dir}/${target_name}.srcjar" | 1511 srcjar_path = "${target_gen_dir}/${target_name}.srcjar" |
1493 r_text_path = "${target_gen_dir}/${target_name}_R.txt" | 1512 r_text_path = "${target_gen_dir}/${target_name}_R.txt" |
1494 android_manifest = _android_manifest | 1513 android_manifest = _android_manifest |
1495 resource_dirs = [ "//build/android/ant/empty/res" ] | 1514 resource_dirs = [ "//build/android/ant/empty/res" ] |
1496 zip_path = resources_zip_path | 1515 zip_path = resources_zip_path |
1497 all_resources_zip_path = _all_resources_zip_path | 1516 all_resources_zip_path = _all_resources_zip_path |
1498 generate_constant_ids = true | 1517 generate_constant_ids = true |
1499 | 1518 |
1500 if (defined(invoker.include_all_resources)) { | 1519 if (defined(invoker.include_all_resources)) { |
1501 include_all_resources = invoker.include_all_resources | 1520 include_all_resources = invoker.include_all_resources |
1502 } | 1521 } |
1503 | 1522 |
1504 build_config = _build_config | 1523 build_config = _build_config |
1505 deps = [ | 1524 deps = _android_manifest_deps + [ ":$build_config_target" ] |
1506 ":$build_config_target", | |
1507 ] | |
1508 if (defined(invoker.deps)) { | 1525 if (defined(invoker.deps)) { |
1509 deps += invoker.deps | 1526 deps += invoker.deps |
1510 } | 1527 } |
1511 } | 1528 } |
1512 _srcjar_deps += [ ":$process_resources_target" ] | 1529 _srcjar_deps += [ ":$process_resources_target" ] |
1513 | 1530 |
1514 if (_native_libs != []) { | 1531 if (_native_libs != []) { |
1515 _enable_chromium_linker_tests = false | 1532 _enable_chromium_linker_tests = false |
1516 if (defined(invoker.enable_chromium_linker_tests)) { | 1533 if (defined(invoker.enable_chromium_linker_tests)) { |
1517 _enable_chromium_linker_tests = invoker.enable_chromium_linker_tests | 1534 _enable_chromium_linker_tests = invoker.enable_chromium_linker_tests |
(...skipping 28 matching lines...) Expand all Loading... | |
1546 } | 1563 } |
1547 _srcjar_deps += [ ":${_template_name}__native_libraries_java" ] | 1564 _srcjar_deps += [ ":${_template_name}__native_libraries_java" ] |
1548 } | 1565 } |
1549 | 1566 |
1550 java_target = "${_template_name}__java" | 1567 java_target = "${_template_name}__java" |
1551 final_deps += [ ":$java_target" ] | 1568 final_deps += [ ":$java_target" ] |
1552 java_library_impl(java_target) { | 1569 java_library_impl(java_target) { |
1553 supports_android = true | 1570 supports_android = true |
1554 requires_android = true | 1571 requires_android = true |
1555 override_build_config = _build_config | 1572 override_build_config = _build_config |
1556 deps = [ | 1573 deps = _android_manifest_deps + [ ":$build_config_target" ] |
1557 ":$build_config_target", | |
1558 ] | |
1559 | 1574 |
1560 android_manifest = _android_manifest | 1575 android_manifest = _android_manifest |
1561 chromium_code = true | 1576 chromium_code = true |
1562 if (defined(invoker.java_files)) { | 1577 if (defined(invoker.java_files)) { |
1563 java_files = invoker.java_files | 1578 java_files = invoker.java_files |
1564 } else if (defined(invoker.DEPRECATED_java_in_dir)) { | 1579 } else if (defined(invoker.DEPRECATED_java_in_dir)) { |
1565 DEPRECATED_java_in_dir = invoker.DEPRECATED_java_in_dir | 1580 DEPRECATED_java_in_dir = invoker.DEPRECATED_java_in_dir |
1566 } else { | 1581 } else { |
1567 java_files = [] | 1582 java_files = [] |
1568 } | 1583 } |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1705 } | 1720 } |
1706 | 1721 |
1707 version_code = _version_code | 1722 version_code = _version_code |
1708 version_name = _version_name | 1723 version_name = _version_name |
1709 | 1724 |
1710 keystore_name = _keystore_name | 1725 keystore_name = _keystore_name |
1711 keystore_path = _keystore_path | 1726 keystore_path = _keystore_path |
1712 keystore_password = _keystore_password | 1727 keystore_password = _keystore_password |
1713 | 1728 |
1714 # This target generates the input file _all_resources_zip_path. | 1729 # This target generates the input file _all_resources_zip_path. |
1715 deps = [ | 1730 deps = _android_manifest_deps + [ |
1716 ":$process_resources_target", | 1731 ":$process_resources_target", |
1717 ":$final_dex_target_name", | 1732 ":$final_dex_target_name", |
1718 ] | 1733 ] |
1719 if (defined(invoker.deps)) { | 1734 if (defined(invoker.deps)) { |
1720 deps += invoker.deps | 1735 deps += invoker.deps |
1721 } | 1736 } |
1722 | 1737 |
1723 if (defined(invoker.asset_location)) { | 1738 if (defined(invoker.asset_location)) { |
1724 asset_location = invoker.asset_location | 1739 asset_location = invoker.asset_location |
1725 | 1740 |
1726 # We don't know the exact dependencies that create the assets in | 1741 # We don't know the exact dependencies that create the assets in |
1727 # |asset_location|; we depend on all caller deps until a better solution | 1742 # |asset_location|; we depend on all caller deps until a better solution |
1728 # is figured out (http://crbug.com/433330). | 1743 # is figured out (http://crbug.com/433330). |
1729 if (defined(invoker.deps)) { | 1744 if (defined(invoker.deps)) { |
1730 deps += invoker.deps | 1745 deps += invoker.deps |
1731 } | 1746 } |
1732 } | 1747 } |
1733 | 1748 |
1734 if (_native_libs != [] && !_create_abi_split) { | 1749 if (_native_libs != [] && !_create_abi_split) { |
1735 native_libs_dir = _native_libs_dir | 1750 native_libs_dir = _native_libs_dir |
1736 deps += [ ":${_template_name}__prepare_native" ] | 1751 deps += [ ":${_template_name}__prepare_native" ] |
1737 } | 1752 } |
1738 } | 1753 } |
1739 | 1754 |
1740 if (_native_libs != [] && _create_abi_split) { | 1755 if (_native_libs != [] && _create_abi_split) { |
1741 _manifest_rule = "${_template_name}__split_manifest_abi_${android_app_abi}" | 1756 _manifest_rule = "${_template_name}__split_manifest_abi_${android_app_abi}" |
1742 generate_split_manifest(_manifest_rule) { | 1757 generate_split_manifest(_manifest_rule) { |
1743 main_manifest = _android_manifest | 1758 main_manifest = _android_manifest |
1744 out_manifest = | 1759 out_manifest = |
1745 "$gen_dir/split-manifests/${android_app_abi}/AndroidManifest.xml" | 1760 "$gen_dir/split-manifests/${android_app_abi}/AndroidManifest.xml" |
1746 split_name = "abi_${android_app_abi}" | 1761 split_name = "abi_${android_app_abi}" |
1762 deps = _android_manifest_deps | |
1747 } | 1763 } |
1748 | 1764 |
1749 _apk_rule = "${_template_name}__split_apk_abi_${android_app_abi}" | 1765 _apk_rule = "${_template_name}__split_apk_abi_${android_app_abi}" |
1750 final_deps += [ ":$_apk_rule" ] | 1766 final_deps += [ ":$_apk_rule" ] |
1751 create_apk(_apk_rule) { | 1767 create_apk(_apk_rule) { |
1752 _split_paths = process_file_template( | 1768 _split_paths = process_file_template( |
1753 [ _final_apk_path ], | 1769 [ _final_apk_path ], |
1754 "{{source_dir}}/{{source_name_part}}-abi-${android_app_abi}.apk") | 1770 "{{source_dir}}/{{source_name_part}}-abi-${android_app_abi}.apk") |
1755 apk_path = _split_paths[0] | 1771 apk_path = _split_paths[0] |
1756 base_path = "$gen_dir/$_apk_rule" | 1772 base_path = "$gen_dir/$_apk_rule" |
1757 | 1773 |
1758 manifest_outputs = get_target_outputs(":${_manifest_rule}") | 1774 manifest_outputs = get_target_outputs(":${_manifest_rule}") |
1759 android_manifest = manifest_outputs[1] | 1775 android_manifest = manifest_outputs[1] |
1760 load_library_from_apk = _load_library_from_apk | 1776 load_library_from_apk = _load_library_from_apk |
1761 | 1777 |
1762 version_code = _version_code | 1778 version_code = _version_code |
1763 version_name = _version_name | 1779 version_name = _version_name |
1764 | 1780 |
1765 keystore_name = _keystore_name | 1781 keystore_name = _keystore_name |
1766 keystore_path = _keystore_path | 1782 keystore_path = _keystore_path |
1767 keystore_password = _keystore_password | 1783 keystore_password = _keystore_password |
1768 | 1784 |
1769 native_libs_dir = _native_libs_dir | 1785 native_libs_dir = _native_libs_dir |
1770 deps = [ | 1786 deps = [ |
1771 ":${_template_name}__prepare_native", | 1787 ":${_template_name}__prepare_native", |
1788 ":${_manifest_rule}", | |
1772 ] | 1789 ] |
1773 } | 1790 } |
1774 } | 1791 } |
1775 | 1792 |
1776 group(target_name) { | 1793 group(target_name) { |
1777 deps = final_deps | 1794 deps = final_deps |
1778 if (defined(invoker.data_deps)) { | 1795 if (defined(invoker.data_deps)) { |
1779 data_deps = invoker.data_deps | 1796 data_deps = invoker.data_deps |
1780 } | 1797 } |
1781 } | 1798 } |
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2207 template("uiautomator_test") { | 2224 template("uiautomator_test") { |
2208 set_sources_assignment_filter([]) | 2225 set_sources_assignment_filter([]) |
2209 if (defined(invoker.testonly)) { | 2226 if (defined(invoker.testonly)) { |
2210 testonly = invoker.testonly | 2227 testonly = invoker.testonly |
2211 } | 2228 } |
2212 assert(target_name != "") | 2229 assert(target_name != "") |
2213 assert(invoker.deps != [] || true) | 2230 assert(invoker.deps != [] || true) |
2214 group(target_name) { | 2231 group(target_name) { |
2215 } | 2232 } |
2216 } | 2233 } |
OLD | NEW |