#!/bin/bash

set -ex

source ./get_skia2.sh
source ./cache_helper.sh

ARCH=$1
CONFIG=$2

build_skia_android() {
    cd $SKIA_DIR_NAME

    if [ "$ARCH" != "x86" ] &&
        [ "$ARCH" != "x64" ] &&
        [ "$ARCH" != "arm" ] &&
        [ "$ARCH" != "arm64" ]; then
        printf "Invalid architecture: '%s'. Choose one between 'x86', \
            'x64', \
            'arm', \
            or 'arm64'" "$ARCH"
        exit 1
    fi

    BUILD_FLAGS=
    EXTRA_CFLAGS=
    if [ "$CONFIG" = "debug" ]; then
        BUILD_FLAGS="is_official_build=false is_debug=true skia_enable_tools=false"
    else # release
        BUILD_FLAGS="is_official_build=true is_debug=false"
        EXTRA_CFLAGS="\
    \"-fno-rtti\",                          \
    \"-flto=full\",                         \
    \"-fembed-bitcode\",                    \
    \"-DRIVE_OPTIMIZED\",                   \
    \"-DSK_DISABLE_SKPICTURE\",             \
    \"-DSK_DISABLE_TEXT\",                  \
    \"-DSK_DISABLE_LEGACY_SHADERCONTEXT\",  \
    \"-DSK_DISABLE_LOWP_RASTER_PIPELINE\",  \
    \"-DSK_FORCE_RASTER_PIPELINE_BLITTER\", \
    \"-DSK_DISABLE_AAA\",                   \
    \"-DSK_DISABLE_EFFECT_DESERIALIZATION\" \
    "
    fi

    # Useful for debugging:
    # bin/gn args --list out/${ARCH}

    bin/gn gen out/"${CONFIG}"/"${ARCH}" --args=" \
        ndk=\"${NDK_PATH}\" \
        target_cpu=\"${ARCH}\" \
        extra_cflags=[                              \
            ${EXTRA_CFLAGS}                         \
            ]                                       \
        \
        ${BUILD_FLAGS} \

        skia_gl_standard=\"gles\" 
        skia_use_zlib=true \
        skia_use_egl=true \
        skia_use_gl=true \
        skia_enable_gpu=true \
        skia_use_libpng_decode=false \
        skia_use_libpng_encode=false \

        skia_use_angle=false \
        skia_use_dng_sdk=false \
        skia_use_freetype=false \
        
        skia_use_expat=false \
        skia_use_fontconfig=false \
        skia_use_system_freetype2=false \
        skia_use_icu=false \
        skia_use_libheif=false \
        skia_use_system_libpng=false \
        skia_use_system_libjpeg_turbo=false \
        skia_use_system_libwebp=false \
        skia_use_libjpeg_turbo_encode=false \
        skia_use_libjpeg_turbo_decode=false \
        skia_use_libwebp_encode=false \
        skia_use_libwebp_decode=false \
        skia_use_lua=false \
        skia_use_piex=false \
        skia_use_vulkan=false \
        
        skia_use_system_zlib=false \
        skia_enable_fontmgr_empty=false \
        skia_enable_spirv_validation=false \
        skia_enable_pdf=false \
        skia_enable_skottie=false \
        "

    ninja -C out/"${CONFIG}"/"${ARCH}"
    cd ..
}

if is_build_cached_locally; then
    echo "Build is cached, nothing to do."
else
    if is_build_cached_remotely; then
        pull_cache
    else
        getSkia
        build_skia_android
        # hmm not the appiest with this guy
        if [ "$CONFIG" != "debug" ]; then
            OUTPUT_CACHE=out/"${CONFIG}"/$ARCH upload_cache
        fi
    fi
fi
