• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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