Commit b93b4b5c authored by Peter Collingbourne's avatar Peter Collingbourne Committed by Commit Bot

build: Create trichrome_library_64_32_apk and trichrome_webview_64_32_apk targets.

These will be required in order to use Trichrome in the 64/32
configuration.

Bug: 1010749
Change-Id: I9ba165b13a5ad8034496b5795a53de35847e3786
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1834847Reviewed-by: default avatarAndrew Grieve <agrieve@chromium.org>
Reviewed-by: default avatarRichard Coles <torne@chromium.org>
Commit-Queue: Peter Collingbourne <pcc@chromium.org>
Auto-Submit: Peter Collingbourne <pcc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#709348}
parent e978371d
...@@ -98,11 +98,23 @@ jinja_template("trichrome_webview_manifest") { ...@@ -98,11 +98,23 @@ jinja_template("trichrome_webview_manifest") {
input = "apk/java/AndroidManifest.xml" input = "apk/java/AndroidManifest.xml"
output = trichrome_webview_android_manifest output = trichrome_webview_android_manifest
variables = trichrome_jinja_variables + [ variables = trichrome_jinja_variables + [
"trichrome_version=$trichrome_version_code",
"manifest_package=$system_webview_package_name", "manifest_package=$system_webview_package_name",
"library=libmonochrome.so", "library=libmonochrome.so",
] ]
} }
jinja_template("trichrome_webview_64_32_manifest") {
input = "apk/java/AndroidManifest.xml"
output = trichrome_webview_64_32_android_manifest
variables = trichrome_jinja_variables + [
"use32bitAbi=",
"trichrome_version=$trichrome_64_32_version_code",
"manifest_package=$system_webview_package_name",
"library=libmonochrome_64.so",
]
}
webview_repack_locales("repack_locales") { webview_repack_locales("repack_locales") {
input_locales = locales input_locales = locales
output_locales = locales output_locales = locales
...@@ -409,17 +421,17 @@ if (android_64bit_target_cpu) { ...@@ -409,17 +421,17 @@ if (android_64bit_target_cpu) {
} }
} }
if (defined(android_secondary_abi_toolchain)) { template("webview_library") {
template("webview_library") { chrome_common_shared_library(target_name) {
chrome_common_shared_library(target_name) { forward_variables_from(invoker, "*")
forward_variables_from(invoker, "*") deps = [
deps = [ ":webview_entry_point",
":webview_entry_point", ]
] is_webview = true
is_webview = true
}
} }
}
if (defined(android_secondary_abi_toolchain)) {
# Note here that on a given system, the webview-only library needs the same # Note here that on a given system, the webview-only library needs the same
# library name as the browser library, since the system webview factory will # library name as the browser library, since the system webview factory will
# differentiate only by ABI. # differentiate only by ABI.
...@@ -434,6 +446,10 @@ if (defined(android_secondary_abi_toolchain)) { ...@@ -434,6 +446,10 @@ if (defined(android_secondary_abi_toolchain)) {
webview_library("monochrome") { webview_library("monochrome") {
} }
} }
} else {
# 32-bit WebView library used in 32-bit only builds of 64/32 targets.
webview_library("monochrome_64") {
}
} }
if (enable_resource_whitelist_generation) { if (enable_resource_whitelist_generation) {
...@@ -834,6 +850,23 @@ if (public_android_sdk) { ...@@ -834,6 +850,23 @@ if (public_android_sdk) {
} }
} }
system_webview_apk_tmpl("trichrome_webview_64_32_apk") {
android_manifest = trichrome_webview_64_32_android_manifest
android_manifest_dep = ":trichrome_webview_64_32_manifest"
is_64_bit_browser = true
# TODO(torne): make minsdk=Q once we no longer build hacky P version
min_sdk_version = android_sdk_version
deps = upstream_only_webview_deps
apk_name = "TrichromeWebView6432"
use_trichrome_library = true
uncompress_dex = use_uncompressed_dex
if (trichrome_synchronized_proguard) {
static_library_provider = "//chrome/android:trichrome_library_apk"
}
}
# This target should be removed once Trichrome only supports Chrome bundle # This target should be removed once Trichrome only supports Chrome bundle
# builds. # builds.
system_webview_apk_tmpl("trichrome_webview_for_bundle_apk") { system_webview_apk_tmpl("trichrome_webview_for_bundle_apk") {
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
android:icon="@{{manifest_package|default('com.android.webview')}}:drawable/icon_webview" android:icon="@{{manifest_package|default('com.android.webview')}}:drawable/icon_webview"
android:name="{{ application_name|default('com.android.webview.chromium.WebViewApkApplication') }}" android:name="{{ application_name|default('com.android.webview.chromium.WebViewApkApplication') }}"
android:multiArch="true" android:multiArch="true"
android:use32bitAbi="true" {{ use32bitAbi|default('android:use32bitAbi="true"') }}
android:extractNativeLibs="{{ trichrome_library is not defined }}"> android:extractNativeLibs="{{ trichrome_library is not defined }}">
{# This part is shared between stand-alone WebView and Monochrome #} {# This part is shared between stand-alone WebView and Monochrome #}
{% macro common(manifest_package, webview_lib) %} {% macro common(manifest_package, webview_lib) %}
......
...@@ -74,20 +74,38 @@ template("system_webview_apk_tmpl") { ...@@ -74,20 +74,38 @@ template("system_webview_apk_tmpl") {
# Include placeholder libraries to ensure we are treated as the desired # Include placeholder libraries to ensure we are treated as the desired
# architecture. # architecture.
if (android_64bit_target_cpu) { if (android_64bit_target_cpu) {
shared_libraries = [ "//android_webview:monochrome" ] if (defined(is_64_bit_browser) && is_64_bit_browser) {
native_lib_placeholders = [ "libdummy.so" ]
if (build_apk_secondary_abi) {
secondary_abi_shared_libraries = [ "//android_webview:monochrome_64($android_secondary_abi_toolchain)" ]
_trampoline = "//third_party/crashpad/crashpad/handler:crashpad_handler_trampoline($android_secondary_abi_toolchain)"
deps += [ _trampoline ]
_secondary_out_dir = get_label_info(_trampoline, "root_out_dir")
secondary_abi_loadable_modules =
[ "$_secondary_out_dir/libcrashpad_handler_trampoline.so" ]
deps += [ "//android_webview:v8_snapshot_secondary_abi_assets" ]
}
} else {
shared_libraries = [ "//android_webview:monochrome" ]
deps += [
"//third_party/crashpad/crashpad/handler:crashpad_handler_trampoline",
]
loadable_modules = [ "$root_out_dir/libcrashpad_handler_trampoline.so" ]
if (build_apk_secondary_abi) {
secondary_native_lib_placeholders = [ "libdummy.so" ]
if (use_v8_context_snapshot) {
deps += [ "//tools/v8_context_snapshot:v8_context_snapshot_assets" ]
} else {
deps += [ "//v8:v8_external_startup_data_assets" ]
}
}
}
} else if (defined(is_64_bit_browser) && is_64_bit_browser) {
shared_libraries = [ "//android_webview:monochrome_64" ]
deps += [ deps += [
"//third_party/crashpad/crashpad/handler:crashpad_handler_trampoline", "//third_party/crashpad/crashpad/handler:crashpad_handler_trampoline",
] ]
loadable_modules = [ "$root_out_dir/libcrashpad_handler_trampoline.so" ] loadable_modules = [ "$root_out_dir/libcrashpad_handler_trampoline.so" ]
if (build_apk_secondary_abi) {
secondary_native_lib_placeholders = [ "libdummy.so" ]
if (use_v8_context_snapshot) {
deps += [ "//tools/v8_context_snapshot:v8_context_snapshot_assets" ]
} else {
deps += [ "//v8:v8_external_startup_data_assets" ]
}
}
} else { } else {
native_lib_placeholders = [ "libdummy.so" ] native_lib_placeholders = [ "libdummy.so" ]
} }
...@@ -139,7 +157,11 @@ template("system_webview_apk_tmpl") { ...@@ -139,7 +157,11 @@ template("system_webview_apk_tmpl") {
if (!defined(version_code)) { if (!defined(version_code)) {
if (_use_trichrome_library) { if (_use_trichrome_library) {
version_code = trichrome_version_code if (defined(is_64_bit_browser) && is_64_bit_browser) {
version_code = trichrome_64_32_version_code
} else {
version_code = trichrome_version_code
}
} else if (android_channel == "dev") { } else if (android_channel == "dev") {
version_code = webview_dev_version_code version_code = webview_dev_version_code
} else if (android_channel == "beta") { } else if (android_channel == "beta") {
......
...@@ -6,6 +6,8 @@ system_webview_android_manifest = ...@@ -6,6 +6,8 @@ system_webview_android_manifest =
"$root_gen_dir/android_webview/system_webview_apk/AndroidManifest.xml" "$root_gen_dir/android_webview/system_webview_apk/AndroidManifest.xml"
trichrome_webview_android_manifest = trichrome_webview_android_manifest =
"$root_gen_dir/android_webview/trichrome_webview_apk/AndroidManifest.xml" "$root_gen_dir/android_webview/trichrome_webview_apk/AndroidManifest.xml"
trichrome_webview_64_32_android_manifest =
"$root_gen_dir/android_webview/trichrome_webview_64_32_apk/AndroidManifest.xml"
upstream_only_webview_deps = [ upstream_only_webview_deps = [
"//android_webview:platform_service_bridge_upstream_implementation_java", "//android_webview:platform_service_bridge_upstream_implementation_java",
......
...@@ -2648,6 +2648,13 @@ if (enable_java_templates) { ...@@ -2648,6 +2648,13 @@ if (enable_java_templates) {
use_final_fields = true use_final_fields = true
} }
_srcjar_deps += [ ":${_template_name}__native_libraries" ] _srcjar_deps += [ ":${_template_name}__native_libraries" ]
} else {
if (defined(invoker.native_lib_version_arg)) {
not_needed(invoker, [ "native_lib_version_arg" ])
}
if (defined(invoker.native_lib_version_rule)) {
not_needed(invoker, [ "native_lib_version_rule" ])
}
} }
_extra_native_libs = [] _extra_native_libs = []
......
...@@ -156,12 +156,11 @@ def GenerateVersionCodes(version_values, arch, is_next_build): ...@@ -156,12 +156,11 @@ def GenerateVersionCodes(version_values, arch, is_next_build):
version_code_val = new_version_code + diff version_code_val = new_version_code + diff
version_codes[version_code_name] = str(version_code_val) version_codes[version_code_name] = str(version_code_val)
if arch == 'arm64' or arch == 'x64': for variant, config in ARCH64_APK_VARIANTS.iteritems():
for variant, config in ARCH64_APK_VARIANTS.iteritems(): if apk in config['PACKAGES']:
if apk in config['PACKAGES']: variant_name = apk + '_' + variant + '_VERSION_CODE'
variant_name = apk + '_' + variant + '_VERSION_CODE' variant_val = version_code_val + config['MODIFIER']
variant_val = version_code_val + config['MODIFIER'] version_codes[variant_name] = str(variant_val)
version_codes[variant_name] = str(variant_val)
return version_codes return version_codes
...@@ -43,6 +43,7 @@ if (is_mac) { ...@@ -43,6 +43,7 @@ if (is_mac) {
"chrome_modern_version_code = \"@CHROME_MODERN_VERSION_CODE@\" " + "chrome_modern_version_code = \"@CHROME_MODERN_VERSION_CODE@\" " +
"monochrome_version_code = \"@MONOCHROME_VERSION_CODE@\" " + "monochrome_version_code = \"@MONOCHROME_VERSION_CODE@\" " +
"trichrome_version_code = \"@TRICHROME_VERSION_CODE@\" " + "trichrome_version_code = \"@TRICHROME_VERSION_CODE@\" " +
"trichrome_64_32_version_code = \"@TRICHROME_64_32_VERSION_CODE@\" " +
"notouch_chrome_version_code = \"@NOTOUCH_CHROME_VERSION_CODE@\" " + "notouch_chrome_version_code = \"@NOTOUCH_CHROME_VERSION_CODE@\" " +
"webview_stable_version_code = \"@WEBVIEW_STABLE_VERSION_CODE@\" " + "webview_stable_version_code = \"@WEBVIEW_STABLE_VERSION_CODE@\" " +
"webview_beta_version_code = \"@WEBVIEW_BETA_VERSION_CODE@\" " + "webview_beta_version_code = \"@WEBVIEW_BETA_VERSION_CODE@\" " +
...@@ -52,7 +53,6 @@ if (is_mac) { ...@@ -52,7 +53,6 @@ if (is_mac) {
_version_dictionary_template += _version_dictionary_template +=
"monochrome_64_32_version_code = \"@MONOCHROME_64_32_VERSION_CODE@\" " + "monochrome_64_32_version_code = \"@MONOCHROME_64_32_VERSION_CODE@\" " +
"monochrome_64_version_code = \"@MONOCHROME_64_VERSION_CODE@\" " + "monochrome_64_version_code = \"@MONOCHROME_64_VERSION_CODE@\" " +
"trichrome_64_32_version_code = \"@TRICHROME_64_32_VERSION_CODE@\" " +
"trichrome_64_version_code = \"@TRICHROME_64_VERSION_CODE@\" " "trichrome_64_version_code = \"@TRICHROME_64_VERSION_CODE@\" "
} }
......
...@@ -46,6 +46,8 @@ chrome_modern_public_android_manifest = ...@@ -46,6 +46,8 @@ chrome_modern_public_android_manifest =
"$target_gen_dir/chrome_modern_public_apk/AndroidManifest.xml" "$target_gen_dir/chrome_modern_public_apk/AndroidManifest.xml"
trichrome_library_android_manifest = trichrome_library_android_manifest =
"$target_gen_dir/trichrome_library_apk/AndroidManifest.xml" "$target_gen_dir/trichrome_library_apk/AndroidManifest.xml"
trichrome_library_64_32_android_manifest =
"$target_gen_dir/trichrome_library_64_32_apk/AndroidManifest.xml"
app_hooks_impl = "java/src/org/chromium/chrome/browser/AppHooksImpl.java" app_hooks_impl = "java/src/org/chromium/chrome/browser/AppHooksImpl.java"
_chrome_version_java_file = "$target_gen_dir/templates/org/chromium/chrome/browser/ChromeVersionConstants.java" _chrome_version_java_file = "$target_gen_dir/templates/org/chromium/chrome/browser/ChromeVersionConstants.java"
...@@ -82,8 +84,19 @@ jinja_template("chrome_modern_public_android_manifest") { ...@@ -82,8 +84,19 @@ jinja_template("chrome_modern_public_android_manifest") {
jinja_template("trichrome_library_android_manifest") { jinja_template("trichrome_library_android_manifest") {
input = "java/AndroidManifest_trichrome_library.xml" input = "java/AndroidManifest_trichrome_library.xml"
output = trichrome_library_android_manifest output = trichrome_library_android_manifest
variables = trichrome_jinja_variables + variables = trichrome_jinja_variables + [
[ "manifest_package=$trichrome_library_package" ] "trichrome_version=$trichrome_version_code",
"manifest_package=$trichrome_library_package",
]
}
jinja_template("trichrome_library_64_32_android_manifest") {
input = "java/AndroidManifest_trichrome_library.xml"
output = trichrome_library_64_32_android_manifest
variables = trichrome_jinja_variables + [
"trichrome_version=$trichrome_64_32_version_code",
"manifest_package=$trichrome_library_package",
]
} }
generate_ui_locale_resources("ui_locale_string_resources") { generate_ui_locale_resources("ui_locale_string_resources") {
...@@ -1706,6 +1719,11 @@ template("monochrome_public_apk_or_module_tmpl") { ...@@ -1706,6 +1719,11 @@ template("monochrome_public_apk_or_module_tmpl") {
if (_is_trichrome) { if (_is_trichrome) {
input = "java/AndroidManifest_trichrome_chrome.xml" input = "java/AndroidManifest_trichrome_chrome.xml"
variables += trichrome_jinja_variables variables += trichrome_jinja_variables
if (defined(invoker.is_64_bit_browser) && invoker.is_64_bit_browser) {
variables += [ "trichrome_version=$trichrome_64_32_version_code" ]
} else {
variables += [ "trichrome_version=$trichrome_version_code" ]
}
} else { } else {
_arch = "" _arch = ""
if (defined(invoker.is_64_bit_browser) && invoker.is_64_bit_browser) { if (defined(invoker.is_64_bit_browser) && invoker.is_64_bit_browser) {
...@@ -1802,6 +1820,28 @@ if (public_android_sdk) { ...@@ -1802,6 +1820,28 @@ if (public_android_sdk) {
} }
} }
trichrome_library_apk_tmpl("trichrome_library_64_32_apk") {
apk_name = "TrichromeLibrary6432"
android_manifest = trichrome_library_64_32_android_manifest
android_manifest_dep = ":trichrome_library_64_32_android_manifest"
is_64_bit_browser = true
if (trichrome_synchronized_proguard) {
shared_resources_whitelist_target = "//android_webview:system_webview_apk"
shared_resources_whitelist_locales = locales
static_library_dependent_targets = [
{
name = "//android_webview:trichrome_webview_64_32_apk"
is_resource_ids_provider = true
},
{
name = ":trichrome_chrome_64_32_bundle"
is_resource_ids_provider = false
},
]
}
}
# This target should be removed once Trichrome only supports Chrome bundle # This target should be removed once Trichrome only supports Chrome bundle
# builds. # builds.
trichrome_library_apk_tmpl("trichrome_library_for_bundle_apk") { trichrome_library_apk_tmpl("trichrome_library_for_bundle_apk") {
......
...@@ -32,7 +32,6 @@ trichrome_jinja_variables = [ ...@@ -32,7 +32,6 @@ trichrome_jinja_variables = [
"min_sdk_version=$android_sdk_version", "min_sdk_version=$android_sdk_version",
"target_sdk_version=$android_sdk_version", "target_sdk_version=$android_sdk_version",
"trichrome_library=$trichrome_library_package", "trichrome_library=$trichrome_library_package",
"trichrome_version=$trichrome_version_code",
"trichrome_certdigest=$trichrome_certdigest", "trichrome_certdigest=$trichrome_certdigest",
"use32bitAbi=android:use32bitAbi=\"true\"", "use32bitAbi=android:use32bitAbi=\"true\"",
"include_arcore_manifest_flag=true", "include_arcore_manifest_flag=true",
...@@ -98,51 +97,65 @@ template("trichrome_library_apk_tmpl") { ...@@ -98,51 +97,65 @@ template("trichrome_library_apk_tmpl") {
deps += [ "//third_party/icu:icu_assets" ] deps += [ "//third_party/icu:icu_assets" ]
} }
# Only try to generate the native library version in configurations that _native_lib_file =
# include a native library. rebase_path("$root_gen_dir/CHROME_VERSION.json", root_out_dir)
if (!android_64bit_target_cpu || build_apk_secondary_abi) { native_lib_version_arg = "@FileArg($_native_lib_file:full-quoted)"
_native_lib_file = native_lib_version_rule = "//build/util:chrome_version_json"
rebase_path("$root_gen_dir/CHROME_VERSION.json", root_out_dir)
native_lib_version_arg = "@FileArg($_native_lib_file:full-quoted)"
native_lib_version_rule = "//build/util:chrome_version_json"
}
if (android_64bit_target_cpu) { if (android_64bit_target_cpu) {
# Include the actual browser-bitness libmonochrome library, dependencies # Include the actual browser-bitness libmonochrome library, dependencies
# (crashpad and linker), and an opposite-bitness placeholder library to # (crashpad and linker), and an opposite-bitness placeholder library to
# ensure that the library is treated as multiarch and gets its Java code # ensure that the library is treated as multiarch and gets its Java code
# precompiled for both architectures. # precompiled for both architectures.
native_lib_placeholders = [ "libdummy.so" ] if (defined(invoker.is_64_bit_browser) && invoker.is_64_bit_browser) {
if (build_apk_secondary_abi) { shared_libraries = [ "//chrome/android:libmonochrome_64" ]
secondary_abi_shared_libraries = deps += [
[ "//chrome/android:monochrome_secondary_abi_lib" ] "//third_party/crashpad/crashpad/handler:crashpad_handler_trampoline",
]
_trampoline = "//third_party/crashpad/crashpad/handler:crashpad_handler_trampoline($android_secondary_abi_toolchain)" if (trichrome_shared_assets) {
deps += [ "//chrome/android:chrome_public_v8_assets" ]
deps += [ _trampoline ] }
_secondary_out_dir = get_label_info(_trampoline, "root_out_dir") loadable_modules = [ "$root_out_dir/libcrashpad_handler_trampoline.so" ]
secondary_abi_loadable_modules = if (build_apk_secondary_abi) {
[ "$_secondary_out_dir/libcrashpad_handler_trampoline.so" ] secondary_native_lib_placeholders = [ "libdummy.so" ]
}
if (use_chromium_linker) { } else {
deps += [ "//base/android/linker:chromium_android_linker($android_secondary_abi_toolchain)" ] native_lib_placeholders = [ "libdummy.so" ]
secondary_abi_loadable_modules += if (build_apk_secondary_abi) {
[ "$_secondary_out_dir/libchromium_android_linker.so" ] secondary_abi_shared_libraries =
[ "//chrome/android:monochrome_secondary_abi_lib" ]
_trampoline = "//third_party/crashpad/crashpad/handler:crashpad_handler_trampoline($android_secondary_abi_toolchain)"
deps += [ _trampoline ]
_secondary_out_dir = get_label_info(_trampoline, "root_out_dir")
secondary_abi_loadable_modules =
[ "$_secondary_out_dir/libcrashpad_handler_trampoline.so" ]
if (use_chromium_linker) {
deps += [ "//base/android/linker:chromium_android_linker($android_secondary_abi_toolchain)" ]
secondary_abi_loadable_modules +=
[ "$_secondary_out_dir/libchromium_android_linker.so" ]
}
} }
}
if (trichrome_shared_assets) { if (trichrome_shared_assets) {
deps += [ "//android_webview:v8_snapshot_secondary_abi_assets" ] deps += [ "//android_webview:v8_snapshot_secondary_abi_assets" ]
}
} }
} else { } else {
shared_libraries = [ "//chrome/android:libmonochrome" ] if (defined(invoker.is_64_bit_browser) && invoker.is_64_bit_browser) {
deps += [ native_lib_placeholders = [ "libdummy.so" ]
"//third_party/crashpad/crashpad/handler:crashpad_handler_trampoline", } else {
] shared_libraries = [ "//chrome/android:libmonochrome" ]
if (trichrome_shared_assets) { deps += [
deps += [ "//chrome/android:chrome_public_v8_assets" ] "//third_party/crashpad/crashpad/handler:crashpad_handler_trampoline",
]
if (trichrome_shared_assets) {
deps += [ "//chrome/android:chrome_public_v8_assets" ]
}
loadable_modules = [ "$root_out_dir/libcrashpad_handler_trampoline.so" ]
} }
loadable_modules = [ "$root_out_dir/libcrashpad_handler_trampoline.so" ]
} }
if (!is_java_debug) { if (!is_java_debug) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment