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      generate_final_jni = false
46      deps = [ ":${invoker.package_name}_assets" ]
47      if (symbol_level != 0) {
48        deps += [ ":compressed_symbols" ]
49        if (android_64bit_target_cpu) {
50          deps += [ ":compressed_symbols($android_secondary_abi_toolchain)" ]
51        }
52      }
53
54      uncompress_shared_libraries = true
55
56      if (android_64bit_target_cpu) {
57        if (symbol_level == 0) {
58          secondary_abi_shared_libraries = []
59          foreach(_library, angle_libraries) {
60            secondary_abi_shared_libraries +=
61                [ "$angle_root:${_library}($android_secondary_abi_toolchain)" ]
62          }
63          if (angle_enable_vulkan_validation_layers) {
64            foreach(_layer, vulkan_validation_layers) {
65              secondary_abi_shared_libraries +=
66                  [ "$angle_vulkan_validation_layers_dir:${_layer}" +
67                    "($android_secondary_abi_toolchain)" ]
68            }
69          }
70        } else {
71          _secondary_out_dir = get_label_info(
72                  ":compressed_symbols($android_secondary_abi_toolchain)",
73                  "root_out_dir")
74          secondary_abi_loadable_modules = []
75          foreach(_library, angle_libraries) {
76            secondary_abi_loadable_modules += [ "$_secondary_out_dir/lib.compressed/${_library}${angle_libs_suffix}${shlib_extension}" ]
77          }
78          if (angle_enable_vulkan_validation_layers) {
79            foreach(_layer, vulkan_validation_layers) {
80              secondary_abi_loadable_modules += [ "${_secondary_out_dir}/lib.compressed/lib${_layer}${shlib_extension}" ]
81            }
82          }
83        }
84      }
85
86      if (symbol_level == 0) {
87        shared_libraries = []
88        foreach(_library, angle_libraries) {
89          shared_libraries += [ "$angle_root:$_library" ]
90        }
91        if (angle_enable_vulkan_validation_layers) {
92          foreach(_layer, vulkan_validation_layers) {
93            shared_libraries +=
94                [ "$angle_vulkan_validation_layers_dir:${_layer}" ]
95          }
96        }
97      } else {
98        loadable_modules = []
99        foreach(_library, angle_libraries) {
100          loadable_modules += [ "$root_out_dir/lib.compressed/${_library}${angle_libs_suffix}${shlib_extension}" ]
101        }
102        if (angle_enable_vulkan_validation_layers) {
103          foreach(_layer, vulkan_validation_layers) {
104            loadable_modules += [
105              "$root_out_dir/lib.compressed/lib${_layer}${shlib_extension}",
106            ]
107          }
108        }
109      }
110    }
111  }
112}
113