#!/bin/bash # Copyright The ANGLE Project Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # # Generates a roll CL within the ANGLE repository of AOSP. deps=( "third_party/spirv-tools/src" "third_party/glslang/src" "third_party/spirv-headers/src" "third_party/vulkan-headers/src" "third_party/jsoncpp" "third_party/jsoncpp/source" "third_party/vulkan_memory_allocator" ) # Delete dep directories so that gclient can check them out for dep in ${deps[@]}; do rm -rf $dep done # Sync all of ANGLE's deps so that 'gn gen' works python scripts/bootstrap.py gclient sync -D # generate gn build files and convert them to blueprints gn_args=( "target_os = \"android\"" "is_component_build = false" "is_debug = false" # Build for 64-bit CPUs "target_cpu = \"arm64\"" # Don't make a dependency on .git/HEAD. Some Android builds are done without .git folders # present. "angle_enable_commit_id = false" # Target ndk API 26 to make sure ANGLE can use the Vulkan backend on Android "android32_ndk_api_level = 26" "android64_ndk_api_level = 26" # Disable all backends except Vulkan "angle_enable_vulkan = true" "angle_enable_gl = true" # TODO(geofflang): Disable GL once Andrid no longer requires it. anglebug.com/4444 "angle_enable_d3d9 = false" "angle_enable_d3d11 = false" "angle_enable_null = false" "angle_enable_metal = false" # SwiftShader is loaded as the system Vulkan driver on Android, not compiled by ANGLE "angle_enable_swiftshader = false" # Disable all shader translator targets except desktop GL (for Vulkan) "angle_enable_essl = true" # TODO(geofflang): Disable ESSL once Andrid no longer requires it. anglebug.com/4444 "angle_enable_glsl = true" # TODO(geofflang): Disable ESSL once Andrid no longer requires it. anglebug.com/4444 "angle_enable_hlsl = false" ) gn gen out/Android --args="${gn_args[*]}" gn desc out/Android --format=json "*" > out/Android/desc.json python scripts/generate_android_bp.py out/Android/desc.json > Android.bp rm -r out git add Android.bp # Delete the .git files in each dep so that it can be added to this repo. Some deps like jsoncpp # have multiple layers of deps so delete everything before adding them. for dep in ${deps[@]}; do rm -rf $dep/.git done extra_removal_files=( # The jsoncpp OWNERS and VulkanMemoryAllocator file contains users that have not logged into # the Android gerrit so it fails to upload. "third_party/jsoncpp/OWNERS" "third_party/vulkan_memory_allocator/OWNERS" ) for removal_file in ${extra_removal_files[@]}; do rm $removal_file done for dep in ${deps[@]}; do git add -f $dep done git commit --amend --no-edit