1# Copyright 2018 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5import("//build/config/android/rules.gni") 6import("../gni/angle.gni") 7 8vulkan_validation_layers = [ "VkLayer_khronos_validation" ] 9 10angle_libraries = [ 11 "libEGL", 12 "libGLESv1_CM", 13 "libGLESv2", 14 "libfeature_support", 15] 16 17if (enable_java_templates) { 18 template("angle_apk") { 19 manifest_target_name = "${target_name}__manifest" 20 manifest_path = 21 "${target_gen_dir}/${target_name}/android/AndroidManifest.xml" 22 23 jinja_template(manifest_target_name) { 24 input = "//third_party/angle/android/AndroidManifest.xml.jinja2" 25 output = manifest_path 26 variables = [ 27 "manifest_package=${invoker.package_name}", 28 "extract_native_libs=${angle_extract_native_libs}", 29 ] 30 } 31 32 android_assets("${invoker.package_name}_assets") { 33 disable_compression = true 34 sources = [ "src/feature_support_util/a4a_rules.json" ] 35 } 36 37 android_apk(target_name) { 38 forward_variables_from(invoker, "*") 39 android_manifest = manifest_path 40 android_manifest_dep = ":$manifest_target_name" 41 min_sdk_version = 26 42 target_sdk_version = 28 43 deps = [ ":${invoker.package_name}_assets" ] 44 if (symbol_level != 0) { 45 deps += [ ":compressed_symbols" ] 46 if (android_64bit_target_cpu) { 47 deps += [ ":compressed_symbols($android_secondary_abi_toolchain)" ] 48 } 49 } 50 51 uncompress_shared_libraries = true 52 53 if (android_64bit_target_cpu) { 54 if (symbol_level == 0) { 55 secondary_abi_shared_libraries = [] 56 foreach(_library, angle_libraries) { 57 secondary_abi_shared_libraries += 58 [ "$angle_root:${_library}($android_secondary_abi_toolchain)" ] 59 } 60 if (angle_enable_vulkan_validation_layers) { 61 foreach(_layer, vulkan_validation_layers) { 62 secondary_abi_shared_libraries += [ 63 "$angle_root/third_party/vulkan-validation-layers:${_layer}" + 64 "($android_secondary_abi_toolchain)", 65 ] 66 } 67 } 68 } else { 69 _secondary_out_dir = get_label_info( 70 ":compressed_symbols($android_secondary_abi_toolchain)", 71 "root_out_dir") 72 secondary_abi_loadable_modules = [] 73 foreach(_library, angle_libraries) { 74 secondary_abi_loadable_modules += [ "$_secondary_out_dir/lib.compressed/${_library}${angle_libs_suffix}.so" ] 75 } 76 if (angle_enable_vulkan_validation_layers) { 77 foreach(_layer, vulkan_validation_layers) { 78 secondary_abi_loadable_modules += 79 [ "${_secondary_out_dir}/lib.compressed/lib${_layer}.so" ] 80 } 81 } 82 } 83 } 84 85 if (symbol_level == 0) { 86 shared_libraries = [] 87 foreach(_library, angle_libraries) { 88 shared_libraries += [ "$angle_root:$_library" ] 89 } 90 if (angle_enable_vulkan_validation_layers) { 91 foreach(_layer, vulkan_validation_layers) { 92 shared_libraries += 93 [ "$angle_root/third_party/vulkan-validation-layers:${_layer}" ] 94 } 95 } 96 } else { 97 loadable_modules = [] 98 foreach(_library, angle_libraries) { 99 loadable_modules += [ 100 "$root_out_dir/lib.compressed/${_library}${angle_libs_suffix}.so", 101 ] 102 } 103 if (angle_enable_vulkan_validation_layers) { 104 foreach(_layer, vulkan_validation_layers) { 105 loadable_modules += 106 [ "$root_out_dir/lib.compressed/lib${_layer}.so" ] 107 } 108 } 109 } 110 } 111 } 112} 113