Edit

kc3-lang/angle/scripts/roll_aosp.sh

Branch :

  • Show log

    Commit

  • Author : Geoff Lang
    Date : 2020-06-22 08:52:31
    Hash : 94e8a3d9
    Message : Roll zlib and cpufeatures from the ndk into Android. zlib is required to compress program binaries. It also pulls in the ndk for cpufeatures. Since the ndk is so large, only pull roll in the required sub-folders. BUG=angleproject:4776 Change-Id: I4967a06fd8bfb27040ad0c2f60fec265d555488a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2255507 Reviewed-by: Geoff Lang <geofflang@chromium.org> Commit-Queue: Geoff Lang <geofflang@chromium.org>

  • scripts/roll_aosp.sh
  • #!/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"
        "third_party/zlib"
    )
    
    # Only add the parts of NDK that are required by ANGLE. The entire dep is too large.
    delete_only_deps=(
        "third_party/android_ndk"
    )
    
    add_only_deps=(
        "third_party/android_ndk/sources/android/cpufeatures"
    )
    
    # Delete dep directories so that gclient can check them out
    for dep in ${deps[@]} ${delete_only_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[@]} ${delete_only_deps[@]}; do
        rm -rf $dep/.git
    done
    
    extra_removal_files=(
        # Some third_party deps have OWNERS files which contains users that have not logged into
        # the Android gerrit. Repo cannot upload with these files present.
        "third_party/jsoncpp/OWNERS"
        "third_party/vulkan_memory_allocator/OWNERS"
        "third_party/zlib/OWNERS"
        "third_party/zlib/google/OWNERS"
        "third_party/zlib/contrib/tests/OWNERS"
        "third_party/zlib/contrib/bench/OWNERS"
        "third_party/zlib/contrib/tests/fuzzers/OWNERS"
    )
    
    for removal_file in ${extra_removal_files[@]}; do
        rm $removal_file
    done
    
    for dep in ${deps[@]} ${add_only_deps[@]}; do
        git add -f $dep
    done
    
    git commit --amend --no-edit