#! /bin/sh

# Copyright 2018 Google Inc.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

usage() {
    cat >&2 <<EOM

This script can be run with no arguments, in which case it will produce an
APK with native libraries for all four architectures: arm, arm64, x86, and
x64.  You can instead list the architectures you want as arguments to this
script.  For example:

    $0 arm x86

The environment variables ANDROID_NDK and ANDROID_HOME must be set to the
locations of the Android NDK and SDK.  Current values:

    ANDROID_NDK="$ANDROID_NDK"
    ANDROID_HOME="$ANDROID_HOME"

Additionally, \`python\` and \`ninja\` should be in your path.

If SKQP_EXTRA_MODELS is non-empty, assets unneeded by the CTS tests will be
included for experimental mode.

It assumes that the source tree is in the desired state, e.g. by having
run 'python tools/git-sync-deps' in the root of the skia checkout.

EOM
    exit 1
}

[ -d "$ANDROID_NDK"  ] || usage
[ -d "$ANDROID_HOME" ] || usage
command -v ninja  > /dev/null || usage
command -v python > /dev/null || usage
for ARCH in $*; do case $ARCH in arm|arm64|x86|x64);; *) usage;; esac; done

set -x # Verbose
set -e # Exit immediately

# check if OUTPUT_DIR was set in the environment.
if [ -z "${APK_OUTPUT_DIR}" ]; then
    APK_OUTPUT_DIR=out/skqp
fi

cd "$(dirname "$0")/../.."
python tools/skqp/download_model
if [ -z "$SKQP_EXTRA_MODELS" ]; then
    python tools/skqp/remove_unneeded_assets
fi

python tools/skqp/setup_resources

APP=skqp
LIB=libskqp_app.so

find platform_tools/android/apps/$APP -name $LIB -exec rm {} +

if [ $# -eq 0 ]; then
    set -- arm arm64 x86 x64
fi

for ARCH in $*; do
    BUILD="${APK_OUTPUT_DIR}-${ARCH}"
    if [ "$SKQP_DEBUG" ]; then
        python tools/skqp/generate_gn_args $BUILD-debug "$ANDROID_NDK" --arch "$ARCH" --debug
    else
        python tools/skqp/generate_gn_args $BUILD "$ANDROID_NDK" --arch "$ARCH"
    fi
    bin/gn gen $BUILD
    ninja -C $BUILD $LIB
    case $ARCH in
        arm)    NATIVE=armeabi-v7a ;;
        arm64)  NATIVE=arm64-v8a   ;;
        x86)    NATIVE=x86         ;;
        x64)    NATIVE=x86_64      ;;
        *)      usage              ;;
    esac
    DST=platform_tools/android/apps/$APP/src/main/libs/$NATIVE
    mkdir -p $DST
    cp -a $BUILD/$LIB $DST/$LIB
done

(
    cd platform_tools/android
    apps/gradlew -p apps/$APP -P suppressNativeBuild :$APP:assembleUniversalDebug
)

mkdir -p $APK_OUTPUT_DIR
cp platform_tools/android/apps/$APP/build/outputs/apk/$APP-universal-debug.apk "${APK_OUTPUT_DIR}/"

