xref: /aosp_15_r20/external/angle/android/angle_apk.gni (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
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 = "${angle_root}/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      version_code = invoker.version_code
42      version_name = invoker.version_name
43      min_sdk_version = 26
44      target_sdk_version = 28
45      deps = [ ":${invoker.package_name}_assets" ]
46      if (symbol_level != 0) {
47        deps += [ ":compressed_symbols" ]
48        if (android_64bit_target_cpu &&
49            defined(android_secondary_abi_toolchain)) {
50          deps += [ ":compressed_symbols($android_secondary_abi_toolchain)" ]
51        }
52      }
53
54      if (android_64bit_target_cpu &&
55          defined(android_secondary_abi_toolchain)) {
56        if (symbol_level == 0) {
57          secondary_abi_shared_libraries = []
58          foreach(_library, angle_libraries) {
59            secondary_abi_shared_libraries +=
60                [ "$angle_root:${_library}($android_secondary_abi_toolchain)" ]
61          }
62          if (angle_enable_vulkan_validation_layers) {
63            foreach(_layer, vulkan_validation_layers) {
64              secondary_abi_shared_libraries +=
65                  [ "$angle_vulkan_validation_layers_dir:${_layer}" +
66                    "($android_secondary_abi_toolchain)" ]
67            }
68          }
69        } else {
70          _secondary_out_dir = get_label_info(
71                  ":compressed_symbols($android_secondary_abi_toolchain)",
72                  "root_out_dir")
73          secondary_abi_loadable_modules = []
74          foreach(_library, angle_libraries) {
75            secondary_abi_loadable_modules += [ "$_secondary_out_dir/lib.compressed/${_library}${angle_libs_suffix}${shlib_extension}" ]
76          }
77          if (angle_enable_vulkan_validation_layers) {
78            foreach(_layer, vulkan_validation_layers) {
79              secondary_abi_loadable_modules += [ "${_secondary_out_dir}/lib.compressed/lib${_layer}${shlib_extension}" ]
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_vulkan_validation_layers_dir:${_layer}" ]
94          }
95        }
96        if (angle_enable_vulkan_api_dump_layer) {
97          shared_libraries +=
98              [ "$angle_lunarg_vulkantools_dir:VkLayer_lunarg_api_dump" ]
99        }
100      } else {
101        loadable_modules = []
102        foreach(_library, angle_libraries) {
103          loadable_modules += [ "$root_out_dir/lib.compressed/${_library}${angle_libs_suffix}${shlib_extension}" ]
104        }
105        if (angle_enable_vulkan_validation_layers) {
106          foreach(_layer, vulkan_validation_layers) {
107            loadable_modules += [
108              "$root_out_dir/lib.compressed/lib${_layer}${shlib_extension}",
109            ]
110          }
111        }
112        if (angle_enable_vulkan_api_dump_layer) {
113          loadable_modules += [ "$root_out_dir/lib.compressed/libVkLayer_lunarg_api_dump${shlib_extension}" ]
114        }
115      }
116    }
117  }
118}
119