| # Copyright 2018 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//build/config/android/rules.gni") |
| import("//third_party/angle/gni/angle.gni") |
| |
| vulkan_validation_layers = [ |
| "VkLayer_core_validation", |
| "VkLayer_object_lifetimes", |
| "VkLayer_stateless_validation", |
| "VkLayer_thread_safety", |
| "VkLayer_unique_objects", |
| ] |
| |
| angle_libraries = [ |
| "EGL", |
| "GLESv1_CM", |
| "GLESv2", |
| "feature_support", |
| ] |
| |
| 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}" ] |
| } |
| |
| 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" |
| 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 |
| |
| 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}:lib${_library}${angle_libs_suffix}" + |
| "($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/lib${_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 (symbol_level == 0) { |
| shared_libraries = [] |
| foreach(_library, angle_libraries) { |
| shared_libraries += |
| [ "${angle_root}:lib${_library}${angle_libs_suffix}" ] |
| } |
| 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/lib${_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" ] |
| } |
| } |
| } |
| } |
| } |