#!/bin/bash

###################################################
# Main Buildscript for HDCP
###################################################

###################################################
# 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 printBlue() {
    echo -e "\e[1;94m$1\e[m"
}

###################################################
# Start Build Script
###################################################
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)

#if [[ "${SCRIPT_DIR}" == *"SecurityControl/HDCP_Q" ]]; then
#    cd $SCRIPT_DIR
#else
#    printRed "Script path error!"
#    printRed "Please check script or path"
#    exit
#fi

clear
echo ""
printRed    "##########################################################################"
printYellow "                        MAIN Build System for HDCP                        "
printRed    "##########################################################################"

if [ "$1" == "DEBUG" ]; then
    export DEBUG=true
fi

## Select Main Secure OS
echo ""
PS3='Please select your secure OS : '
options=("Kinibi" "Qsee" "TEEGRIS" "Quit")

select opt in "${options[@]}"
do
    case $opt in
        "Quit")
            printRed "Your selecttion is [Quit]!!!"
            exit
            ;;
        *)
            SECURE_OS="${opt}"
        ;;
    esac

    if [ "${SECURE_OS}" == "" ]; then
        echo ""
        printRed "Your selection is error!!!"
        printRed "Please select again !!!"
        echo ""
        exit
    else
        echo ""
        echo ""
        break
    fi
done

## Select Secure OS
case "$SECURE_OS" in
    #####################################################################################################
    Kinibi)
        PS3='Please select your main chipset : '
        options=("exynos9810" "exynos9810_400C" "exynos9810_500" "exynos8895" "exynos8890" "exynos8890_310B" \
                 "exynos7420" "exynos7885" "exynos7885_static" "exynos7880" "exynos7870" \
                 "exynos7580" "exynos5433" "exynos5430_tbase302" "exynos3475" \
                 "Quit")

        select opt in "${options[@]}"
        do
            case $opt in
                "Quit")
                    printRed "Your selecttion is [Quit]!!!"
                    exit
                    ;;
                *)
                    MAIN_CHIPSET="${opt}"
                ;;
            esac

            if [ "${MAIN_CHIPSET}" == "" ]; then
                printRed "Your selection is error!!!"
                printRed "Please select again !!!"
            else
                break
            fi
        done

        cd hdcp2/nwd
        if [ "${DEBUG}" == "true" ]; then
            ./build_kinibi.sh ${MAIN_CHIPSET} --debug --debug
        else
            ./build_kinibi.sh ${MAIN_CHIPSET}
        fi
        ;;
    #####################################################################################################
    Qsee)
        ## Select QSEECOM HIDL
        PS3='Please select QSEECOM HIDL supported : '
        options=("Yes" "No" "Quit")
        select opt in "${options[@]}"
        do
            case $opt in
                "Yes")
                    printRed "USE_QSEELIB_HIDL=true"
                    export USE_QSEELIB_HIDL=true
                    ;;
                "No")
                    printRed "USE_QSEELIB_HIDL=false"
                    export USE_QSEELIB_HIDL=false
                    ;;
                "Quit")
                    printRed "Your selecttion is [Quit]!!!"
                    exit
                ;;
            esac
            if [ "${USE_QSEELIB_HIDL}" == "" ]; then
                printRed "Your selection is error!!!"
                printRed "Please select again !!!"
            else
                echo ""
                echo ""
                break
            fi
        done

        ## Select target OS for QC
        PS3='Please select your main chipset : '
        options=("SM8250" "SM8150" "SM7150" "SM6150" "SDM845" "msm8998" "msm8996" "msm8976" "msm8976pro" \
                 "msm8953" "msm8917" "msm8916" "SDM710" "SDM660" "SDM450" "SDM450_ODM" "Quit")

        select opt in "${options[@]}"
        do
            case $opt in
                "Quit")
                    printRed "Your selecttion is [Quit]!!!"
                    exit
                    ;;
                *) 
                    MAIN_CHIPSET="${opt}"
                    echo ""
                    echo ""
                ;;
            esac

            if [ "${MAIN_CHIPSET}" == "" ]; then
                printRed "Your selection is error!!!"
                printRed "Please select again !!!"
            else
                PS3='Please select ion version : '
                options=("Modern" "Legacy" "Quit")

                select opt in "${options[@]}"
                do
                    case $opt in
                        "Quit")
                            printRed "Your selecttion is [Quit]!!!"
                            exit
                            ;;
                        *) 
                            ION_VERSION="${opt}"
                        ;;
                    esac

                    if [ "${ION_VERSION}" == "" ]; then
                        printRed "Your selection is error!!!"
                        printRed "Please select again !!!"
                    else
                        echo ""
                        echo ""
                        break
                    fi
                done

                break
            fi
        done

        printCyan "Please input your model name of test device "
        read -e -p "MODEL : " MODEL_NAME

        clear
        echo ""
        printRed    "##########################################################################"
        printYellow "                    Build System for HDCP Snapdragon                      "
        printRed    "##########################################################################"

        case $ION_VERSION in
            "Modern")
                export USE_ION_MORDERN=true
                ;;
            "Legacy")
                export USE_ION_MORDERN=false
                ;;
        esac

        case $MAIN_CHIPSET in
            "SM8250")
                REAL_BUILD_CHIPSET="sm8250"
                NHLOS_PATH="SM8250"
                LOCAL_BUILD_ID="DARAANAA"
                ;;
            "SM8150")
                REAL_BUILD_CHIPSET="sm8150"
                NHLOS_PATH="SM8150"
                LOCAL_BUILD_ID="YAQAANAA"
                ;;
            "SM7150")
                REAL_BUILD_CHIPSET="sm7150"
                NHLOS_PATH="SM6150"
                LOCAL_BUILD_ID="QAOAANAA"
                ;;
            "SM6150")
                REAL_BUILD_CHIPSET="sm6150"
                NHLOS_PATH="SM6150"
                LOCAL_BUILD_ID="PAZAANAA"
                ;;
            "SDM845")
                REAL_BUILD_CHIPSET="sdm845"
                NHLOS_PATH="SDM845"
                LOCAL_BUILD_ID="WAXAANAA"
                ;;
            "msm8998")
                REAL_BUILD_CHIPSET=$MAIN_CHIPSET
                NHLOS_PATH="msm8998"
                LOCAL_BUILD_ID="RAGAANAA"
                ;;
            "msm8996")
                REAL_BUILD_CHIPSET=$MAIN_CHIPSET
                NHLOS_PATH="msm8996"
                LOCAL_BUILD_ID="IADAANAA"
                ;;
            "msm8976")
                REAL_BUILD_CHIPSET="msm8956"
                NHLOS_PATH="msm8976"
                LOCAL_BUILD_ID="MAYAANAA"
                ;;
            "msm8976pro")
                REAL_BUILD_CHIPSET="msm8956"
                NHLOS_PATH="msm8976pro"
                LOCAL_BUILD_ID="MAYAANAA"
                ;;
            "msm8953")
                REAL_BUILD_CHIPSET=$MAIN_CHIPSET
                NHLOS_PATH="msm8953"
                LOCAL_BUILD_ID="SANAANAA"
                ;;
            "msm8917")
                REAL_BUILD_CHIPSET="msm8937"
                NHLOS_PATH="msm8953"
                LOCAL_BUILD_ID="ZALAANAA"
                ;;
            "msm8916")
                REAL_BUILD_CHIPSET=$MAIN_CHIPSET
                NHLOS_PATH="msm8939"
                LOCAL_BUILD_ID="MAVAANAA"
                ;;
            "SDM710")
                REAL_BUILD_CHIPSET="sdm670"
                NHLOS_PATH="SDM710"
                LOCAL_BUILD_ID="XAWAANAA"
                ;;
            "SDM660")
                REAL_BUILD_CHIPSET="sdm660"
                NHLOS_PATH="SDM6xx"
                LOCAL_BUILD_ID="KAJAANAA"
                ;;
            "SDM450")
                REAL_BUILD_CHIPSET="msm8953"
                NHLOS_PATH="SDM450"
                LOCAL_BUILD_ID="SANAANAA"
                ;;
            "SDM450_ODM")
                MAIN_CHIPSET="SDM429"
                REAL_BUILD_CHIPSET="msm8953"
                NHLOS_PATH="SDM429"
                LOCAL_BUILD_ID="SANAANAA"
                ;;
        esac

        # Copy source code to NHLOS
        if [ "$NHLOS_PATH" == "SDM845" ] || [ "$NHLOS_PATH" == "SDM710" ] || [ "$NHLOS_PATH" == "SM8150" ] || [ "$NHLOS_PATH" == "SM6150" ] || [ "$NHLOS_PATH" == "SM8250" ]; then
            BRANCH_NAME="ssg"
        else
            BRANCH_NAME="core"
        fi

        TZ_BASE_FOLDER="../../../NHLOS/MAIN/SM8250_LA1.0/sm8250_tz/trustzone_images"
        APP_BASE_FOLDER="$BRANCH_NAME/securemsm/trustzone/qsapps/sshdcpapp"
        BSP_BASE_FOLDER="$BRANCH_NAME/bsp/trustzone/qsapps/sshdcpapp"

        if [ "$NHLOS_PATH" == "msm8996" ] || [ "$NHLOS_PATH" == "msm8976pro" ] || [ "$NHLOS_PATH" == "msm8976" ] || [ "$NHLOS_PATH" == "msm8953" ]; then
            RUNTYPE="qc_secimg30_sshdcpapp"
        elif [ "$NHLOS_PATH" == "msm8939" ]; then
            RUNTYPE="qc_secimg_sshdcpapp"
        elif [ "$NHLOS_PATH" == "SM8250" ] || "$NHLOS_PATH" == "SM8150" ] || [ "$NHLOS_PATH" == "SM6150" ]; then
            RUNTYPE="qc_secimg50_tzapp"
        elif [ "$NHLOS_PATH" == "SDM429" ]; then
            RUNTYPE="qc_secimg50_bl"
        else
            RUNTYPE="qc_secimg40_sshdcpapp"
        fi

        cd ./hdcp2/swd/qsee

        mkdir -p ../../../../../$TZ_BASE_FOLDER/$APP_BASE_FOLDER/build/ 2>/dev/null
        mkdir -p ../../../../../$TZ_BASE_FOLDER/$APP_BASE_FOLDER/src/ 2>/dev/null
        mkdir -p ../../../../../$TZ_BASE_FOLDER/$APP_BASE_FOLDER/ssl/ 2>/dev/null

        cp -rf ./src/* ../../../../../$TZ_BASE_FOLDER/$APP_BASE_FOLDER/src/
        cp -rf ./ssl/* ../../../../../$TZ_BASE_FOLDER/$APP_BASE_FOLDER/ssl/
        cd - 1>/dev/null

        cd ./hdcp2/swd/qsee/build

        if [ "$NHLOS_PATH" == "msm8996" ] || [ "$NHLOS_PATH" == "msm8976pro" ] || [ "$NHLOS_PATH" == "msm8976" ] || [ "$NHLOS_PATH" == "msm8939" ]; then
            cp -rfv ./SConscript_pre ./SConscript_pre_tmp
            if [ "$DEBUG" == "true" ]; then
                sed -i "s|INPUT_DEBUG_VAL|$DEBUG|" ./SConscript_tmp
            fi
            sed -i "s|INPUT_NHLOS_PATH|$NHLOS_PATH|" ./SConscript_pre_tmp
            cp -rfv ./SConscript_pre_tmp ../../../../../../$TZ_BASE_FOLDER/$APP_BASE_FOLDER/build/SConscript
            rm ./SConscript_pre_tmp
            if [ "$NHLOS_PATH" == "msm8996" ] || [ "$NHLOS_PATH" == "msm8976pro" ]; then
                cp ./sshdcpapp.ld   ../../../../../../$TZ_BASE_FOLDER/$APP_BASE_FOLDER/build
            elif [ "$NHLOS_PATH" == "msm8976" ] || [ "$NHLOS_PATH" == "msm8939" ]; then
                cp ./sshdcpapp.scl   ../../../../../../$TZ_BASE_FOLDER/$APP_BASE_FOLDER/build
            fi
            sed 's/$INPUT_MODEL_NAME/'$MODEL_NAME'/' ./SConscript_pre.bsp > ./SConscript_pre.tmp
            sed -i "s|INPUT_NHLOS_PATH|$NHLOS_PATH|" ./SConscript_pre.tmp
            sed -i "s|INPUT_RUNTYPE|$RUNTYPE|" ./SConscript_pre.tmp
            mkdir -p ../../../../../../$TZ_BASE_FOLDER/$BSP_BASE_FOLDER/build/ 2>/dev/null
            cp ./SConscript_pre.tmp ../../../../../../$TZ_BASE_FOLDER/$BSP_BASE_FOLDER/build/SConscript
            rm ./SConscript_pre.tmp
        else
            cp -rfv ./SConscript ./SConscript_tmp
            if [ "$DEBUG" == "true" ]; then
                sed -i "s|INPUT_DEBUG_VAL|$DEBUG|" ./SConscript_tmp
            fi
            sed -i "s|INPUT_NHLOS_PATH|$NHLOS_PATH|" ./SConscript_tmp
            sed -i "s|INPUT_BRANCH_NAME|$BRANCH_NAME|" ./SConscript_tmp
            cp -rfv ./SConscript_tmp ../../../../../../$TZ_BASE_FOLDER/$APP_BASE_FOLDER/SConscript
            rm ./SConscript_tmp

            if [ "$NHLOS_PATH" != "SM8150" ]; then
                cp -rfv ./"${NHLOS_PATH}"/secure_app_builder.py ./secure_app_builder_tmp.py
                sed -i "s|INPUT_MODEL_NAME|$MODEL_NAME|" ./secure_app_builder_tmp.py
                sed -i "s|INPUT_RUNTYPE|$RUNTYPE|" ./secure_app_builder_tmp.py
                cp -rfv ./secure_app_builder_tmp.py ../../../../../../$TZ_BASE_FOLDER/$BRANCH_NAME/bsp/build/scripts/secure_app_builder.py
                rm -rf ./secure_app_builder_tmp.py
            fi

            sed 's/$INPUT_MODEL_NAME/'$MODEL_NAME'/' ./SConscript.bsp > ./SConscript.tmp
            sed -i "s|INPUT_NHLOS_PATH|$NHLOS_PATH|" ./SConscript.tmp
            sed -i "s|INPUT_BRANCH_NAME|$BRANCH_NAME|" ./SConscript.tmp
            mkdir -p ../../../../../../$TZ_BASE_FOLDER/$BSP_BASE_FOLDER/build/ 2>/dev/null
            cp ./SConscript.tmp ../../../../../../$TZ_BASE_FOLDER/$BSP_BASE_FOLDER/build/SConscript
            rm ./SConscript.tmp

            if [ "$NHLOS_PATH" == "SDM845" ] || [ "$NHLOS_PATH" == "SM8150" ] || [ "$NHLOS_PATH" == "SM8250" ]; then
                cp ./"${NHLOS_PATH}"/build_hdcp.xml ../../../../../../$TZ_BASE_FOLDER/build/ms/build_hdcp.xml
            fi
        fi

        cd - 1>/dev/null

        # Remove build error "tima_config.h" or "board.h"
        HANDLE_FILE_NAME="cust$(echo $LOCAL_BUILD_ID | tr "[A-Z]" "[a-z]")a.h"

        cd ../../$TZ_BASE_FOLDER/build/ms
        sed 's/^#include \"tima_config.h\"/\/\/#include \"tima_config.h\"/' ./$HANDLE_FILE_NAME > ./$HANDLE_FILE_NAME".tmp"
        mv ./$HANDLE_FILE_NAME".tmp" ./$HANDLE_FILE_NAME
        sed 's/^#include \"board.h\"/\/\/#include \"board.h\"/' ./$HANDLE_FILE_NAME > ./$HANDLE_FILE_NAME".tmp"
        mv ./$HANDLE_FILE_NAME".tmp" ./$HANDLE_FILE_NAME
        cd - 1>/dev/null

        if [ "$NHLOS_PATH" == "SM8150" ] || [ "$NHLOS_PATH" == "SM8250" ]; then
            cd ../../$TZ_BASE_FOLDER/ssg/bsp/trustzone/build
            # sed -e "/apps64 = \[/,/\]/{/sshdcpapp\//d;s/.*smartfitting.*/\0\n  '\${BUILD_ROOT}\/ssg\/securemsm\/trustzone\/qsapps\/sshdcpapp\/SConscript\',/g}" SConscript > ./SConscript.tmp
            sed -e "/apps64 = \[/,/\]/{/sshdcpapp\//d;s/.*].*/  '\${BUILD_ROOT}\/ssg\/securemsm\/trustzone\/qsapps\/sshdcpapp\/SConscript\',\n\0/g}" SConscript > ./SConscript.tmp
            mv ./SConscript.tmp ./SConscript
            cd - 1>/dev/null
        fi

        rm -rf hdcp2/bin
        mkdir hdcp2/bin

        # Build TZ App
        echo ""
        printYellow "-------------------------------------------------------------------------"
        printYellowBack "Start building TZ application"
        cd ../../$TZ_BASE_FOLDER/build/ms
        if [ -e "./build_qsapps.sh" ]; then
            ./build_qsapps.sh CHIPSET="${REAL_BUILD_CHIPSET}" sshdcpapp -c
            echo ""
            printYellowBack "Clean Complete"
            echo ""
            sleep 1
            ./build_qsapps.sh CHIPSET="${REAL_BUILD_CHIPSET}" sshdcpapp
        else
            if [ "$NHLOS_PATH" == "msm8998" ]; then
                python build_all.py -b TZ.BF.4.0 CHIPSET=msm8998 sshdcpapp -c
                echo ""
                printYellowBack "Clean Complete"
                echo ""
                sleep 1
                python build_all.py -b TZ.BF.4.0 CHIPSET=msm8998 sshdcpapp
            elif [ "$NHLOS_PATH" == "SDM6xx" ]; then
                python build_all.py -b TZ.BF.4.0 CHIPSET=sdm660 PRODUCT_NAME=$MODEL_NAME sshdcpapp -c
                echo ""
                printYellowBack "Clean Complete"
                echo ""
                sleep 1
                python build_all.py -b TZ.BF.4.0 CHIPSET=sdm660 PRODUCT_NAME=$MODEL_NAME sshdcpapp
            elif [ "$NHLOS_PATH" == "SDM845" ]; then
                export LLVM_VERSION=3.9.6
                export SSROOT=/opt
                export LLVMROOT=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION
                export LLVMBIN=$LLVMROOT/bin
                export LLVMLIB=$LLVMROOT/lib/clang/$LLVM_VERSION/lib/linux
                export LLVMINC=$LLVMROOT/aarch64-none-elf/libc/include
                export LLVM32INC=$LLVMROOT/armv7-none-eabi/libc/include
                export LLVMTOOLPATH=$LLVMROOT/tools/bin
                export LLVMCLANG=$LLVMROOT/lib/clang/$LLVM_VERSION
                export MUSL32PATH=$LLVMROOT/armv7-none-eabi/libc
                export MUSLPATH=$LLVMROOT/aarch64-none-elf/libc

                rm -rf ./bin/${LOCAL_BUILD_ID}/unsigned/signed_sshdcpapp.mbn
                python build_all.py -b TZ.XF.5.0 CHIPSET=sdm845 -c
                echo ""
                printYellowBack "Clean Complete"
                echo ""
                sleep 1
                python build_all.py -b TZ.XF.5.0 CHIPSET=sdm845 --config=build_hdcp.xml
            elif [ "$NHLOS_PATH" == "SDM710" ] || [ "$NHLOS_PATH" == "SM6150" ]; then
                export SSROOT=/opt
                export LLVM_VERSION=4.0.3
                export LLVMROOT=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION
                export LLVMBIN=$LLVMROOT/bin
                export LLVMLIB=$LLVMROOT/lib/clang/$LLVM_VERSION/lib/linux
                export LLVMINC=$LLVMROOT/aarch64-none-elf/libc/include
                export LLVM32INC=$LLVMROOT/armv7-none-eabi/libc/include
                export LLVMTOOLPATH=$LLVMROOT/tools/bin
                export LLVMCLANG=$LLVMROOT/lib/clang/$LLVM_VERSION
                export MUSL32PATH=$LLVMROOT/armv7-none-eabi/libc
                export MUSLPATH=$LLVMROOT/aarch64-none-elf/libc
                export LLVMLIBPROP=$LLVMROOT/lib/clang/$LLVM_VERSION/lib/linux-propri_rt

                rm -rf ./bin/${LOCAL_BUILD_ID}/unsigned/signed_sshdcpapp.mbn
                if [ "$NHLOS_PATH" == "SDM710" ]; then
                    python build_all.py -b TZ.XF.5.0 CHIPSET=sdm670 --config=build_config_deploy.xml --clean
                    echo ""
                    printYellowBack "Clean Complete"
                    echo ""
                    sleep 1
                    python build_all.py -b TZ.XF.5.0 CHIPSET=sdm670 --cnb --config=build_config_deploy.xml --cbt=sshdcpapp
                else
                    python build_all.py -b TZ.XF.5.0 CHIPSET=${REAL_BUILD_CHIPSET} --config=./bin/${LOCAL_BUILD_ID}/build_config_deploy.xml/build_config_deploy.xml --clean
                    echo ""
                    printYellowBack "Clean Complete"
                    echo ""
                    sleep 1
                    python build_all.py -b TZ.XF.5.0 CHIPSET=${REAL_BUILD_CHIPSET} --cnb --config=./bin/${LOCAL_BUILD_ID}/build_config_deploy.xml/build_config_deploy.xml --cbt=sshdcpapp
                fi
            elif [ "$NHLOS_PATH" == "SM8150" ]; then
                export LLVM_VERSION=4.0.11
                export SSROOT=/opt
                export LLVMROOT=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION
                export LLVMBIN=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION/bin
                export LLVMLIBPROP=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION/lib/clang/$LLVM_VERSION/lib/linux-propri_rt
                export MUSL32PATH=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION/armv7-none-eabi/libc
                export LLVM32INC=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION/armv7-none-eabi/libc/include
                export LLVMINC=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION/aarch64-none-elf/libc/include
                export LLVMLIB=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION/lib/clang/$LLVM_VERSION/lib/linux
                export LLVMCLANG=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION/lib/clang/$LLVM_VERSION
                export MUSLPATH=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION/aarch64-none-elf/libc
                export LLVMTOOLPATH=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION/tools/bin
                export QSEE_QSAPPS_DIR=$QSEE_ROOT_PATH/ssg/securemsm/trustzone/qsapps

                rm -rf ./bin/${LOCAL_BUILD_ID}/unsigned/signed_sshdcpapp.mbn
                python build_all.py -b TZ.XF.5.0 CHIPSET=sm8150 -c
                echo ""
                printYellowBack "Clean Complete"
                echo ""
                sleep 1
                python build_all.py -b TZ.XF.5.0 CHIPSET=sm8150 --config=build_hdcp.xml

                # Signing using signclient
                java -jar ../../../common/build/signclient.jar \
                        -model ${MODEL_NAME} \
                        -runtype qc_secimg50_tzapp \
                        -input bin/${LOCAL_BUILD_ID}/unsigned/sshdcpapp.mbn \
                        -output bin/${LOCAL_BUILD_ID}/unsigned/signed_sshdcpapp.mbn

                rm ./bin/PIL_IMAGES/SPLITBINS_${LOCAL_BUILD_ID}/unsigned/sshdcpapp.*

                # Split with signed TA and copy
                python ../../ssg/bsp/build/scripts/pil_splitter.py ./bin/${LOCAL_BUILD_ID}/unsigned/signed_sshdcpapp.mbn sshdcpapp
                mv ./sshdcpapp.* ./bin/PIL_IMAGES/SPLITBINS_${LOCAL_BUILD_ID}/unsigned/
            elif [ "$NHLOS_PATH" == "SM8250" ]; then
                export RAW_CHIPSET=sm8250
                export TARGET_BUILD_VARIANT=eng
                export LLVM_VERSION=4.0.11
                export SSROOT=/opt
                export LLVMROOT=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION
                export LLVMBIN=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION/bin
                export LLVMLIBPROP=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION/lib/clang/$LLVM_VERSION/lib/linux-propri_rt
                export MUSL32PATH=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION/armv7-none-eabi/libc
                export LLVM32INC=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION/armv7-none-eabi/libc/include
                export LLVMINC=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION/aarch64-none-elf/libc/include
                export LLVMLIB=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION/lib/clang/$LLVM_VERSION/lib/linux
                export LLVMCLANG=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION/lib/clang/$LLVM_VERSION
                export MUSLPATH=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION/aarch64-none-elf/libc
                export LLVMTOOLPATH=$SSROOT/toolchains/Qualcomm/llvm/$LLVM_VERSION/tools/bin
                export QSEE_QSAPPS_DIR=$QSEE_ROOT_PATH/ssg/securemsm/trustzone/qsapps

                rm -rf ./bin/${LOCAL_BUILD_ID}/unsigned/signed_sshdcpapp.mbn
                python build_all.py -b TZ.XF.5.0 CHIPSET=sm8250 -c
                echo ""
                printYellowBack "Clean Complete"
                echo ""
                sleep 1
                python build_all.py -b TZ.XF.5.0 CHIPSET=sm8250 --config=build_hdcp.xml
            else
                ./build.sh CHIPSET="${REAL_BUILD_CHIPSET}" sshdcpapp -c
                echo ""
                printYellowBack "Clean Complete"
                echo ""
                sleep 1
                ./build.sh CHIPSET="${REAL_BUILD_CHIPSET}" sshdcpapp
            fi
        fi
        cd - 1>/dev/null

        # Copy output to hdcp2/bin
        mkdir ./hdcp2/bin/unsigned
        mkdir ./hdcp2/bin/lib
        cp ../../$TZ_BASE_FOLDER/build/ms/bin/${LOCAL_BUILD_ID}/unsigned/sshdcpapp.mbn ./hdcp2/bin
        cp -r ../../$TZ_BASE_FOLDER/build/ms/bin/PIL_IMAGES/SPLITBINS_${LOCAL_BUILD_ID}/unsigned/sshdcpapp.* ./hdcp2/bin/unsigned
        if [ "$NHLOS_PATH" != "SM8150" ]; then
            cp ../../$TZ_BASE_FOLDER/$BSP_BASE_FOLDER/build/${LOCAL_BUILD_ID}/sshdcpapp* ./hdcp2/bin/lib
        fi

        # Clean build files
        rm -rf ../../$TZ_BASE_FOLDER/$APP_BASE_FOLDER

        printYellowBack "End building TZ application"
        echo ""

        # Build Normal world component
        echo ""
        printYellow "-------------------------------------------------------------------------"
        printYellowBack "Start building Normal world component"
        cd ./hdcp2/nwd

        if [ "${DEBUG}" == "true" ]; then
            ./build_qsee.sh "${MAIN_CHIPSET}" --debug
        else
            ./build_qsee.sh "${MAIN_CHIPSET}"
        fi

        cd - 1>/dev/null
        printYellowBack "End building Normal world component"
        echo ""

        ls -al hdcp2/bin
        ls -al hdcp2/bin/unsigned

        printRed "##########################################################################"
        ;;
    #####################################################################################################
    TEEGRIS)
        rm -rf hdcp2/bin
        mkdir hdcp2/bin

        echo ""
        PS3='Please select OS : '
            options=("Qos" "BeforeQos" "Quit")

        select opt in "${options[@]}"
        do
            case $opt in
                Qos)
                    echo "Use the system partition"
                    export USE_SYSTEM_PARTITION=true
                    ;;
                BeforeQos)
                    echo "Use the vendor partition"
                    ;;
                *)
                    echo "Please input from following target types."
                    echo "Qos | BeforeQos"
                    exit 1
                    ;;
            esac
            break
        done

        echo ""
        PS3='Please select your chipset with TEEGRIS : '
            options=("Exynos" "MediaTek" "Quit")

        select opt in "${options[@]}"
        do
            case $opt in
                Exynos)
                    echo "Build for Exynos"
                    export USE_EXYNOS=true
                    ;;
                MediaTek)
                    echo "Build for MediaTek"
                    export USE_MTK=true
                    ;;
                *)
                    echo "Please input from following target types."
                    echo "Exynos| MediaTek"
                    exit 1
                    ;;
            esac
            break
        done

        echo ""
        echo ""

        if [ "$USE_EXYNOS" == "true" ]; then
            PS3='Please select your main chipset : '
            options=("EXYNOS9830" "EXYNOS9820" "EXYNOS9630" "EXYNOS9610" "EXYNOS7904" "Quit")

            select opt in "${options[@]}"
            do
                case $opt in
                    "Quit")
                        printRed "Your selecttion is [Quit]!!!"
                        exit
                        ;;
                    *)
                        export MAIN_CHIPSET="${opt}"
                    ;;
                esac

                if [ "${MAIN_CHIPSET}" == "" ]; then
                    printRed "Your selection is error!!!"
                    printRed "Please select again !!!"
                else
                    break
                fi
            done

            case $MAIN_CHIPSET in
                "EXYNOS9830")
                    echo "Teegris SDK is Version 4.0 !!"
                    export TG_SDK_PATH=../../../../../TZSDK/teegris_sdk.4.1.0
                    export TG_TOOLCHAIN=$TG_SDK_PATH/toolchains/arm-secureos-gnueabi-gcc_6_3-linux-x86
                    export TG_SDK_VER="V4"
                    export USE_WFD_TS_MUX_HW=true
                    ;;
                "EXYNOS9820")
                    echo "Teegris SDK is Version 3.0 !!"
                    export TG_SDK_PATH=../../../../../TZSDK/teegris_sdk
                    export TG_TOOLCHAIN=$TG_SDK_PATH/toolchains/arm-secureos-gnueabi-gcc_6_3-linux-x86
                    export TG_SDK_VER="V3"
                    export USE_WFD_TS_MUX_HW=true
                    ;;
                "EXYNOS9630")
                    echo "Teegris SDK is Version 4.0 !!"
                    export TG_SDK_PATH=../../../../../TZSDK/teegris_sdk.4.1.0
                    export TG_TOOLCHAIN=$TG_SDK_PATH/toolchains/arm-secureos-gnueabi-gcc_6_3-linux-x86
                    export TG_SDK_VER="V4"
                    export USE_WFD_TS_MUX_HW=true
                    ;;
                "EXYNOS9610")
                    echo "Teegris SDK is Version 3.0 !!"
                    export TG_SDK_PATH=../../../../../TZSDK/teegris_sdk
                    export TG_TOOLCHAIN=$TG_SDK_PATH/toolchains/arm-secureos-gnueabi-gcc_6_3-linux-x86
                    export TG_SDK_VER="V3"
                    ;;
                "EXYNOS7904")
                    echo "Teegris SDK is Version 3.0 !!"
                    export TG_SDK_PATH=../../../../../TZSDK/teegris_sdk
                    export TG_TOOLCHAIN=$TG_SDK_PATH/toolchains/arm-secureos-gnueabi-gcc_6_3-linux-x86
                    export TG_SDK_VER="V3"
                    ;;
                *)
                    echo "Teegris SDK is Version 2.0 !!"
                    export TG_SDK_PATH=../../../../../TZSDK/blowfish-sdk-2.0/bf_sdk
                    export TG_TOOLCHAIN=$TG_SDK_PATH/toolchains/arm-secureos-gnueabi-5.2-linux_x86
                    export TG_SDK_VER="V2"
                    ;;
                esac
        else
            echo "Teegris SDK is Version 2.0 !!"
            export TG_SDK_PATH=../../../../../TZSDK/blowfish-sdk-2.0/bf_sdk
            export TG_TOOLCHAIN=$TG_SDK_PATH/toolchains/arm-secureos-gnueabi-5.2-linux_x86
            export TG_SDK_VER="V2"
        fi

        # Build TZ App
        echo ""
        printYellow "-------------------------------------------------------------------------"
        printYellowBack "Start building TZ application"
        cd ./hdcp2/swd/teegris/
        ./build.sh
        cd - 1>/dev/null
        printYellowBack "End building TZ application"
        echo ""

        # Build Normal world component
        echo ""
        printYellow "-------------------------------------------------------------------------"
        printYellowBack "Start building Normal world component"
        cd ./hdcp2/nwd
        ./build_teegris.sh
        cd - 1>/dev/null
        printYellowBack "End building Normal world component"
        echo ""

        ls -al hdcp2/bin

        printRed "##########################################################################"
        ;;
    *)
        printRed "Don't arrive this porint !!!"
        exit
        ;;
esac

exit
