#!/bin/bash

###################################################
# Start Function
###################################################
function printYellowBack() {
    echo -e "\e[1;43m## $1 ##\e[m"
}

function printYellow() {
    echo -e "\e[1;33m$1\e[m"
}

function printGreen() {
    echo -e "\e[1;32m$1\e[m"
}

function printRed() {
    echo -e "\e[1;31m$1\e[m"
}

function printCyan() {
    echo -e "\e[1;36m$1\e[m"
}

function strstr() {
    [ "${1#*$2*}" = "$1" ] && return 1
    return 0
}

###################################################
# Start Build Script
###################################################
if [ "${TBASE_SDK_PATH}" != "" ]; then
    export SDK_PATH_ROOT="${TBASE_SDK_PATH}/${PRODUCT_TRUSTZONE_TYPE}"
else
    cd ${TBASE_SDK_PATH}/../
    TEMP_PATH=$PWD
    cd - > /dev/null

    COMP_PATH_1="/tbase/${PRODUCT_TRUSTZONE_TYPE}"
    COMP_PATH_2=`echo "${TEMP_PATH}" | rev | cut -c1-${#COMP_PATH_1} | rev`

    if [ "${COMP_PATH_1}" == "${COMP_PATH_2}" ]; then
        export SDK_PATH_ROOT=$TEMP_PATH
    else
        printGreen "Finding Trust OS SDK folder..."
        if [ "${SDK_FIND_BASIC_FOLDER}" == "" ]; then
            SDK_FIND_BASIC_FOLDER="/"
        fi

        SDK_PATH_ROOT=`find "${SDK_FIND_BASIC_FOLDER}" -name "AndroidIntegration" -type d 2>/dev/null | egrep -e "/tbase/${PRODUCT_TRUSTZONE_TYPE}/" | sed "s/\/AndroidIntegration//"`

        if [ "${SDK_PATH_ROOT}" == "" ]; then
            printRed "There is no SDK, so stop build !!!"
            exit
        fi

        set $SDK_PATH_ROOT
        SDK_PATH_NUM=$#
        if [ $((SDK_PATH_NUM)) -gt 1 ] ; then
            echo ""
            printGreen "There are many SDK!!!"
            PS3='Please select your right SDK path : '
            options=($SDK_PATH_ROOT "Quit")
            select opt in "${options[@]}"
            do
                case $opt in
                    "Quit")
                        printRed "Your selecttion is [Quit]!!!"
                        printRed "Stop TZ App build!!!"
                        exit
                        ;;
                    *) SDK_PATH_ROOT="${opt}"
                    ;;
                esac

                if [ "${SDK_PATH_ROOT}" == "" ]; then
                    printRed "Your selection is error!!!"
                    printRed "Please select again !!!"
                else
                    break
                fi
            done
        fi

        export SDK_PATH_ROOT
    fi
fi

if [ "${DEBUG}" == "true" ]; then
    export MODE=Debug
else
    export MODE=Release
fi

if [ "${PRODUCT_TRUSTZONE_TYPE}" == "mt6768" ]; then
    echo ""
    printRed "######## Sub-Build MT6768 driver ########"
    cd ../driver/mt6768/drv_src/Locals/Build
    TRMODE=`echo ${MODE} | tr '[a-z]' '[A-Z]'`
    ./build.sh ${TRMODE}
    errorCode=$?
    if [ "${errorCode}" -ne "0" ]; then
        printRed "[Drv] build error : $errorCode"
        exit $errorCode
    fi

    cd - > /dev/null
fi

printYellow "-------------------------------------------------------------------------"
printYellowBack "Start building TZ application"
printRed "    SDK PATH : $SDK_PATH_ROOT"
echo ""

export TBASE_SEC_OPTION="tw"
export COMP_PATH_Make=.

cd $(dirname $(readlink -f $0))
source ${SDK_PATH_ROOT}/setup.sh

if [ -d ${COMP_PATH_ROOT}/${COMP_PATH_TlSdk} ]; then
    export TLSDK_DIR_SRC=${COMP_PATH_ROOT}/${COMP_PATH_TlSdk}
    make -f ../src/hdcp2_pre.mk
else
    export TLSDK_DIR_SRC=${COMP_PATH_TlSdk}
    make -f ../src/hdcp2.mk
fi

errorCode=$?
if [ "${errorCode}" -ne "0" ]; then
    printRed "[TA] build error : $errorCode"
    exit $errorCode
fi
