Edit

kc3-lang/angle/android/angle_apk.gni

Branch :

  • Show log

    Commit

  • Author : Courtney Goeltzenleuchter
    Date : 2019-01-03 12:40:13
    Hash : c05c1416
    Message : Add validation layers to Android apk The compressed symbol support requires explicitly listing the libraries, so add validation libraries. Use list of ANGLE libraries to reduce duplication Bug: angleproject:2981 Change-Id: Ia8feb58d2a2ee66299b00bbb1fd3a4d9094c0b68 Reviewed-on: https://chromium-review.googlesource.com/c/1394569 Commit-Queue: Jamie Madill <jmadill@chromium.org> Reviewed-by: Yuly Novikov <ynovikov@chromium.org>

  • android/angle_apk.gni
  • # 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_tracker",
      "VkLayer_parameter_validation",
      "VkLayer_threading",
      "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_resources("${invoker.package_name}_resources") {
        resource_dirs = [ "android/res" ]
    
        custom_package = "com.android.angle.common"
        deps = [
          "//third_party/android_deps:android_support_v14_preference_java",
          "//third_party/android_deps:android_support_v7_preference_java",
        ]
      }
    
      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",
          ":${invoker.package_name}_resources",
          "//base:base_java",
          "//third_party/android_deps:android_support_v14_preference_java",
          "//third_party/android_deps:android_support_v7_preference_java",
        ]
        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" ]
            }
          }
        }
    
        # Common files required by all builds
        java_files = [
          "android/src/com/android/angle/common/GlobalSettings.java",
          "android/src/com/android/angle/common/MainFragment.java",
          "android/src/com/android/angle/common/Receiver.java",
        ]
    
        if (target_name == "aosp_apk") {
          java_files += [ "android/src/com/android/angle/MainActivity.java" ]
        } else if (target_name == "google_apk") {
          java_files += [ "android/src/com/google/android/angle/MainActivity.java" ]
        }
      }
    }