Commit 6e687af2 by Geoff Lang Committed by Commit Bot

Support standalone Android builds in ANGLE.

By disabling apk generation, we can build all of our targets in a standalone ANGLE checkout on Linux. This allows tools like gn desc to give us useful information about Android builds. BUG=angleproject:4026,angleproject:2344 Change-Id: Ic46348fd06c5174ce5e5a4d89ceb391246c6ac6b Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1866080Reviewed-by: 's avatarCourtney Goeltzenleuchter <courtneygo@google.com> Reviewed-by: 's avatarYuly Novikov <ynovikov@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>
parent 515f9beb
......@@ -1280,7 +1280,7 @@ if (!is_component_build && is_android && symbol_level != 0) {
}
}
if (!is_component_build && is_android &&
if (build_with_chromium && !is_component_build && is_android &&
current_toolchain == default_toolchain) {
# Package ANGLE libraries
angle_apk("angle_chromium_apk") {
......
......@@ -61,6 +61,11 @@ vars = {
# Current revision of Khronos Vulkan-ValidationLayers.
'vulkan_validation_revision': 'f8ea20adee82d262134fc3fa1a417a6e86fdff23',
# Three lines of non-changing comments so that
# the commit queue can handle CLs rolling catapult
# and whatever else without interference from each other.
'catapult_revision': '1b3fb455bf1849f1e6187e1eaeaef32b9f30d3c5',
}
deps = {
......@@ -223,6 +228,16 @@ deps = {
'url': '{chromium_git}/chromium/src/tools/memory@89552acb6e60f528fe3c98eac7b445d4c34183ee',
'condition': 'not build_with_chromium',
},
'third_party/catapult': {
'url': '{chromium_git}/catapult.git@{catapult_revision}',
'condition': 'not build_with_chromium',
},
'third_party/android_ndk': {
'url': '{chromium_git}/android_ndk.git@89e8db0cdf323af8bc24de875d7d2a43a66bf10e',
'condition': 'not build_with_chromium',
},
}
hooks = [
......
......@@ -3,7 +3,7 @@
# found in the LICENSE file.
import("//build/config/android/rules.gni")
import("//third_party/angle/gni/angle.gni")
import("../gni/angle.gni")
vulkan_validation_layers = [ "VkLayer_khronos_validation" ]
......@@ -14,95 +14,100 @@ angle_libraries = [
"libfeature_support",
]
template("angle_apk") {
manifest_target_name = "${target_name}__manifest"
manifest_path = "${target_gen_dir}/${target_name}/android/AndroidManifest.xml"
if (enable_java_templates) {
template("angle_apk") {
manifest_target_name = "${target_name}__manifest"
manifest_path =
"${target_gen_dir}/${target_name}/android/AndroidManifest.xml"
jinja_template(manifest_target_name) {
input = "//third_party/angle/android/AndroidManifest.xml.jinja2"
output = manifest_path
variables = [ "manifest_package=${invoker.package_name}" ]
}
jinja_template(manifest_target_name) {
input = "//third_party/angle/android/AndroidManifest.xml.jinja2"
output = manifest_path
variables = [ "manifest_package=${invoker.package_name}" ]
}
android_assets("${invoker.package_name}_assets") {
disable_compression = true
sources = [
"src/feature_support_util/a4a_rules.json",
]
}
android_assets("${invoker.package_name}_assets") {
disable_compression = true
sources = [
"src/feature_support_util/a4a_rules.json",
]
}
android_apk(target_name) {
forward_variables_from(invoker, "*")
android_manifest = manifest_path
android_manifest_dep = ":$manifest_target_name"
min_sdk_version = 26
target_sdk_version = 28
deps = [
":${invoker.package_name}_assets",
]
if (symbol_level != 0) {
deps += [ ":compressed_symbols" ]
if (build_apk_secondary_abi && android_64bit_target_cpu) {
deps += [ ":compressed_symbols($android_secondary_abi_toolchain)" ]
android_apk(target_name) {
forward_variables_from(invoker, "*")
android_manifest = manifest_path
android_manifest_dep = ":$manifest_target_name"
min_sdk_version = 26
target_sdk_version = 28
deps = [
":${invoker.package_name}_assets",
]
if (symbol_level != 0) {
deps += [ ":compressed_symbols" ]
if (build_apk_secondary_abi && android_64bit_target_cpu) {
deps += [ ":compressed_symbols($android_secondary_abi_toolchain)" ]
}
}
}
uncompress_shared_libraries = true
uncompress_shared_libraries = true
if (build_apk_secondary_abi && android_64bit_target_cpu) {
if (symbol_level == 0) {
secondary_abi_shared_libraries = []
foreach(_library, angle_libraries) {
secondary_abi_shared_libraries +=
[ "$angle_root:${_library}($android_secondary_abi_toolchain)" ]
}
if (angle_enable_vulkan_validation_layers) {
foreach(_layer, vulkan_validation_layers) {
secondary_abi_shared_libraries += [
"$angle_root/third_party/vulkan-validation-layers:${_layer}" +
"($android_secondary_abi_toolchain)",
]
}
}
} else {
_secondary_out_dir = get_label_info(
":compressed_symbols($android_secondary_abi_toolchain)",
"root_out_dir")
secondary_abi_loadable_modules = []
foreach(_library, angle_libraries) {
secondary_abi_loadable_modules += [ "$_secondary_out_dir/lib.compressed/${_library}${angle_libs_suffix}.so" ]
}
if (angle_enable_vulkan_validation_layers) {
foreach(_layer, vulkan_validation_layers) {
secondary_abi_loadable_modules +=
[ "${_secondary_out_dir}/lib.compressed/lib${_layer}.so" ]
}
}
}
}
if (build_apk_secondary_abi && android_64bit_target_cpu) {
if (symbol_level == 0) {
secondary_abi_shared_libraries = []
shared_libraries = []
foreach(_library, angle_libraries) {
secondary_abi_shared_libraries +=
[ "$angle_root:${_library}($android_secondary_abi_toolchain)" ]
shared_libraries += [ "$angle_root:$_library" ]
}
if (angle_enable_vulkan_validation_layers) {
foreach(_layer, vulkan_validation_layers) {
secondary_abi_shared_libraries +=
[ "$angle_root/third_party/vulkan-validation-layers:${_layer}" +
"($android_secondary_abi_toolchain)" ]
shared_libraries +=
[ "$angle_root/third_party/vulkan-validation-layers:${_layer}" ]
}
}
} else {
_secondary_out_dir = get_label_info(
":compressed_symbols($android_secondary_abi_toolchain)",
"root_out_dir")
secondary_abi_loadable_modules = []
loadable_modules = []
foreach(_library, angle_libraries) {
secondary_abi_loadable_modules += [ "$_secondary_out_dir/lib.compressed/${_library}${angle_libs_suffix}.so" ]
loadable_modules += [
"$root_out_dir/lib.compressed/${_library}${angle_libs_suffix}.so",
]
}
if (angle_enable_vulkan_validation_layers) {
foreach(_layer, vulkan_validation_layers) {
secondary_abi_loadable_modules +=
[ "${_secondary_out_dir}/lib.compressed/lib${_layer}.so" ]
loadable_modules +=
[ "$root_out_dir/lib.compressed/lib${_layer}.so" ]
}
}
}
}
if (symbol_level == 0) {
shared_libraries = []
foreach(_library, angle_libraries) {
shared_libraries += [ "$angle_root:$_library" ]
}
if (angle_enable_vulkan_validation_layers) {
foreach(_layer, vulkan_validation_layers) {
shared_libraries +=
[ "$angle_root/third_party/vulkan-validation-layers:${_layer}" ]
}
}
} else {
loadable_modules = []
foreach(_library, angle_libraries) {
loadable_modules += [
"$root_out_dir/lib.compressed/${_library}${angle_libs_suffix}.so",
]
}
if (angle_enable_vulkan_validation_layers) {
foreach(_layer, vulkan_validation_layers) {
loadable_modules += [ "$root_out_dir/lib.compressed/lib${_layer}.so" ]
}
}
}
}
}
......@@ -24,3 +24,6 @@ if (host_os == "mac" && use_system_xcode == "") {
use_system_xcode = _result != 1
}
# ANGLE standalone builds don't currently support java templates or APK generation
enable_java_templates = build_with_chromium
......@@ -178,6 +178,14 @@ set_defaults("angle_test") {
if (build_with_chromium) {
suppressed_configs -= [ "//build/config/compiler:default_include_dirs" ]
}
if (is_android) {
if (build_with_chromium) {
use_native_activity = true
} else {
use_raw_android_executable = true
}
}
}
template("angle_executable") {
......@@ -296,7 +304,9 @@ template("angle_test") {
if (is_android) {
configs += [ angle_root + ":build_id_config" ]
configs -= [ "//build/config/android:hide_all_but_jni" ]
if (build_with_chromium) {
configs -= [ "//build/config/android:hide_all_but_jni" ]
}
}
deps += _googletest_deps + [
......
......@@ -157,9 +157,6 @@ if (is_win || is_linux || is_mac || is_android || is_fuchsia) {
"${angle_root}:libGLESv2",
]
if (is_android) {
use_native_activity = true
}
if (angle_enable_vulkan) {
deps += [ "${angle_root}/src/libANGLE/renderer/vulkan:angle_vulkan" ]
}
......@@ -195,10 +192,6 @@ if (is_win || is_linux || is_mac || is_android) {
"${angle_root}:preprocessor",
"${angle_root}:translator",
]
if (is_android) {
use_native_activity = true
}
}
}
......@@ -233,10 +226,6 @@ if (is_win || is_linux || is_android || is_mac) {
"${angle_root}:libANGLE_config",
"${angle_root}:library_name_config",
]
if (is_android) {
use_native_activity = true
}
}
}
......@@ -270,10 +259,6 @@ if (is_win || is_linux || is_android || is_mac || is_fuchsia) {
"${angle_root}:library_name_config",
]
if (is_android) {
use_native_activity = true
}
if (is_win || is_linux) {
data_deps += [ "${angle_root}/third_party/glmark2:glmark2_angle" ]
}
......@@ -510,10 +495,6 @@ if (build_angle_gles1_conform_tests) {
"${angle_root}:library_name_config",
"${angle_root}:angle_backend_config",
]
if (is_android) {
use_native_activity = true
}
}
}
......@@ -873,10 +854,6 @@ if (build_angle_deqp_tests && !is_fuchsia) {
"deqp_support/deqp_${_api}_test_expectations.txt",
"${invoker.mustpass_dir}/${invoker.mustpass_name}",
]
if (is_android) {
use_native_activity = true
}
}
}
......
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