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) { ...@@ -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) { current_toolchain == default_toolchain) {
# Package ANGLE libraries # Package ANGLE libraries
angle_apk("angle_chromium_apk") { angle_apk("angle_chromium_apk") {
......
...@@ -61,6 +61,11 @@ vars = { ...@@ -61,6 +61,11 @@ vars = {
# Current revision of Khronos Vulkan-ValidationLayers. # Current revision of Khronos Vulkan-ValidationLayers.
'vulkan_validation_revision': 'f8ea20adee82d262134fc3fa1a417a6e86fdff23', '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 = { deps = {
...@@ -223,6 +228,16 @@ deps = { ...@@ -223,6 +228,16 @@ deps = {
'url': '{chromium_git}/chromium/src/tools/memory@89552acb6e60f528fe3c98eac7b445d4c34183ee', 'url': '{chromium_git}/chromium/src/tools/memory@89552acb6e60f528fe3c98eac7b445d4c34183ee',
'condition': 'not build_with_chromium', '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 = [ hooks = [
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# found in the LICENSE file. # found in the LICENSE file.
import("//build/config/android/rules.gni") import("//build/config/android/rules.gni")
import("//third_party/angle/gni/angle.gni") import("../gni/angle.gni")
vulkan_validation_layers = [ "VkLayer_khronos_validation" ] vulkan_validation_layers = [ "VkLayer_khronos_validation" ]
...@@ -14,95 +14,100 @@ angle_libraries = [ ...@@ -14,95 +14,100 @@ angle_libraries = [
"libfeature_support", "libfeature_support",
] ]
template("angle_apk") { if (enable_java_templates) {
manifest_target_name = "${target_name}__manifest" template("angle_apk") {
manifest_path = "${target_gen_dir}/${target_name}/android/AndroidManifest.xml" manifest_target_name = "${target_name}__manifest"
manifest_path =
"${target_gen_dir}/${target_name}/android/AndroidManifest.xml"
jinja_template(manifest_target_name) { jinja_template(manifest_target_name) {
input = "//third_party/angle/android/AndroidManifest.xml.jinja2" input = "//third_party/angle/android/AndroidManifest.xml.jinja2"
output = manifest_path output = manifest_path
variables = [ "manifest_package=${invoker.package_name}" ] variables = [ "manifest_package=${invoker.package_name}" ]
} }
android_assets("${invoker.package_name}_assets") { android_assets("${invoker.package_name}_assets") {
disable_compression = true disable_compression = true
sources = [ sources = [
"src/feature_support_util/a4a_rules.json", "src/feature_support_util/a4a_rules.json",
] ]
} }
android_apk(target_name) { android_apk(target_name) {
forward_variables_from(invoker, "*") forward_variables_from(invoker, "*")
android_manifest = manifest_path android_manifest = manifest_path
android_manifest_dep = ":$manifest_target_name" android_manifest_dep = ":$manifest_target_name"
min_sdk_version = 26 min_sdk_version = 26
target_sdk_version = 28 target_sdk_version = 28
deps = [ deps = [
":${invoker.package_name}_assets", ":${invoker.package_name}_assets",
] ]
if (symbol_level != 0) { if (symbol_level != 0) {
deps += [ ":compressed_symbols" ] deps += [ ":compressed_symbols" ]
if (build_apk_secondary_abi && android_64bit_target_cpu) { if (build_apk_secondary_abi && android_64bit_target_cpu) {
deps += [ ":compressed_symbols($android_secondary_abi_toolchain)" ] 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) { if (symbol_level == 0) {
secondary_abi_shared_libraries = [] shared_libraries = []
foreach(_library, angle_libraries) { foreach(_library, angle_libraries) {
secondary_abi_shared_libraries += shared_libraries += [ "$angle_root:$_library" ]
[ "$angle_root:${_library}($android_secondary_abi_toolchain)" ]
} }
if (angle_enable_vulkan_validation_layers) { if (angle_enable_vulkan_validation_layers) {
foreach(_layer, vulkan_validation_layers) { foreach(_layer, vulkan_validation_layers) {
secondary_abi_shared_libraries += shared_libraries +=
[ "$angle_root/third_party/vulkan-validation-layers:${_layer}" + [ "$angle_root/third_party/vulkan-validation-layers:${_layer}" ]
"($android_secondary_abi_toolchain)" ]
} }
} }
} else { } else {
_secondary_out_dir = get_label_info( loadable_modules = []
":compressed_symbols($android_secondary_abi_toolchain)",
"root_out_dir")
secondary_abi_loadable_modules = []
foreach(_library, angle_libraries) { 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) { if (angle_enable_vulkan_validation_layers) {
foreach(_layer, vulkan_validation_layers) { foreach(_layer, vulkan_validation_layers) {
secondary_abi_loadable_modules += loadable_modules +=
[ "${_secondary_out_dir}/lib.compressed/lib${_layer}.so" ] [ "$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 == "") { ...@@ -24,3 +24,6 @@ if (host_os == "mac" && use_system_xcode == "") {
use_system_xcode = _result != 1 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") { ...@@ -178,6 +178,14 @@ set_defaults("angle_test") {
if (build_with_chromium) { if (build_with_chromium) {
suppressed_configs -= [ "//build/config/compiler:default_include_dirs" ] 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") { template("angle_executable") {
...@@ -296,7 +304,9 @@ template("angle_test") { ...@@ -296,7 +304,9 @@ template("angle_test") {
if (is_android) { if (is_android) {
configs += [ angle_root + ":build_id_config" ] 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 + [ deps += _googletest_deps + [
......
...@@ -157,9 +157,6 @@ if (is_win || is_linux || is_mac || is_android || is_fuchsia) { ...@@ -157,9 +157,6 @@ if (is_win || is_linux || is_mac || is_android || is_fuchsia) {
"${angle_root}:libGLESv2", "${angle_root}:libGLESv2",
] ]
if (is_android) {
use_native_activity = true
}
if (angle_enable_vulkan) { if (angle_enable_vulkan) {
deps += [ "${angle_root}/src/libANGLE/renderer/vulkan:angle_vulkan" ] deps += [ "${angle_root}/src/libANGLE/renderer/vulkan:angle_vulkan" ]
} }
...@@ -195,10 +192,6 @@ if (is_win || is_linux || is_mac || is_android) { ...@@ -195,10 +192,6 @@ if (is_win || is_linux || is_mac || is_android) {
"${angle_root}:preprocessor", "${angle_root}:preprocessor",
"${angle_root}:translator", "${angle_root}:translator",
] ]
if (is_android) {
use_native_activity = true
}
} }
} }
...@@ -233,10 +226,6 @@ if (is_win || is_linux || is_android || is_mac) { ...@@ -233,10 +226,6 @@ if (is_win || is_linux || is_android || is_mac) {
"${angle_root}:libANGLE_config", "${angle_root}:libANGLE_config",
"${angle_root}:library_name_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) { ...@@ -270,10 +259,6 @@ if (is_win || is_linux || is_android || is_mac || is_fuchsia) {
"${angle_root}:library_name_config", "${angle_root}:library_name_config",
] ]
if (is_android) {
use_native_activity = true
}
if (is_win || is_linux) { if (is_win || is_linux) {
data_deps += [ "${angle_root}/third_party/glmark2:glmark2_angle" ] data_deps += [ "${angle_root}/third_party/glmark2:glmark2_angle" ]
} }
...@@ -510,10 +495,6 @@ if (build_angle_gles1_conform_tests) { ...@@ -510,10 +495,6 @@ if (build_angle_gles1_conform_tests) {
"${angle_root}:library_name_config", "${angle_root}:library_name_config",
"${angle_root}:angle_backend_config", "${angle_root}:angle_backend_config",
] ]
if (is_android) {
use_native_activity = true
}
} }
} }
...@@ -873,10 +854,6 @@ if (build_angle_deqp_tests && !is_fuchsia) { ...@@ -873,10 +854,6 @@ if (build_angle_deqp_tests && !is_fuchsia) {
"deqp_support/deqp_${_api}_test_expectations.txt", "deqp_support/deqp_${_api}_test_expectations.txt",
"${invoker.mustpass_dir}/${invoker.mustpass_name}", "${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