#!/bin/bash
WS_ROOT_DIR=`pwd`

ALL_TA=("cncc_pay" "amex_pay" "amex_payv2" "mc_pay" "visa_pay" "plcc_pay" "dc_pay" "itrc_pay" "krcc_pay" "chncmm_pay")
ARGS=( $@ )

if [[ $1 == "all" || $2 == "all" ]]; then
	echo "Do not support all build yet"
	exit 1
fi

if [[ "$3" == "all" ]]; then
	BUILD_TA=${ALL_TA[@]}
	BUILD_AUTH=true
else
	for a in ${ARGS[@]}; do
		if [[ $a != "all" ]]; then
			for ta in ${ALL_TA[@]}; do
				if [[ $a == $ta ]]; then
					BUILD_TA+="$a "
					break;
				elif [[ $a == "pay_auth" ]]; then
					BUILD_AUTH=true
					break;
				fi
			done
		fi
	done
fi



AUTH_RESOLUTIONS=()
case $2 in
	star)
	if [[ "$1" != sdm845 ]]; then
		echo "Invalid BUILD_CHIP value : $1, $2"
		exit 1
	fi
	export MODEL_FAMILY="sdm845"
	export ESE_NXP=
	export ESE_GEM=
	export ESE_DIR=""
	export CMN_DIR=""

	BUILD_CHIP=${1:0:6}
	RUNTYPE=qc_secimg40_
	TZ_BUILD_ID=WAXAANAAA

	export SUPPORT_IRIS=true
	export SUPPORT_SOFTKEY=true
	AUTH_RESOLUTIONS=(320 480 640)

	;;
	dream)
	if [[ "$1" != msm8998 ]]; then
		echo "Invalid BUILD_CHIP value : $1, $2"
		exit 1
	fi
	export MODEL_FAMILY="msm8998"
	export ESE_NXP=true
	export ESE_GEM=false
	#export ESE_DIR=""
	#export CMN_DIR=""

	BUILD_CHIP=${1:0:7}
	RUNTYPE=qc_secimg40_
	TZ_BUILD_ID=RAGAANAA

	export SUPPORT_IRIS=true
	export SUPPORT_SOFTKEY=true
	AUTH_RESOLUTIONS=(320 480 640)
	;;
	kelly)
	if [[ "$1" != msm8998 ]]; then
		echo "Invalid BUILD_CHIP value : $1, $2"
		exit 1
	fi
	export MODEL_FAMILY="msm8998"
	export ESE_NXP=true
	export ESE_GEM=false
	export CMN_DIR="W2018"

	BUILD_CHIP=${1:0:7}
	RUNTYPE=qc_secimg40_
	TZ_BUILD_ID=RAGAANAA

    # only build a pay_auth TA
    BUILD_TA=""
    BUILD_AUTH=true
	export SUPPORT_IRIS=true
	export SUPPORT_SOFTKEY=false
	AUTH_RESOLUTIONS=(480)
	;;
	jackpotq)
	if [[ "$1" != sdm660 ]]; then
		echo "Invalid BUILD_CHIP value : $1, $2"
		exit 1
	fi
	export MODEL_FAMILY="sdm660"
	export ESE_NXP=false
	export ESE_GEM=true

	BUILD_CHIP=${1:0:6}
	RUNTYPE=qc_secimg40_
	TZ_BUILD_ID=KAJAANAA
	PRODUCT_NAME=jackpotqlte_chn_open
	# Disabled
	# PRODUCT_NAME=jackpotqlte_chn_open
	# PRODUCT_NAME=jackpot2qlte_chn_open

	export SUPPORT_IRIS=false
	export SUPPORT_SOFTKEY=true
	AUTH_RESOLUTIONS=(480)
	;;

	*)
	echo "Provide model name, for ex : ./QCOM_TA_BUILD_8998.sh <dream>"
	exit
	;;
esac

# Common Settings
SIGNCLIENT="${WS_ROOT_DIR}/${1}/nhlos/common/build/signclient.jar"
SECURE_NAME=QSEE_${BUILD_CHIP^^}_TA
export UX3_0=true

echo "########################################################################################"
echo "#"
echo "# Build : 
				chip=$1, model=$2"
echo "# Build Options :
				ESE_NXP=${ESE_NXP}, ESE_GEM=${ESE_GEM}, ESE_DIR=${ESE_DIR}, CMN_DIR=${CMN_DIR}
		 		SECURE_NAME=${SECURE_NAME}, RUNTYPE=${RUNTYPE}, TZ_BUILD_ID=${TZ_BUILD_ID}
		 		PRODUCT_NAME=${PRODUCT_NAME}, BUILD_CHIP=${BUILD_CHIP}
				BUILD_TA=${BUILD_TA}"
echo "# Build Auth options :
				UX3_0=${UX3_0}
				SUPPORT_IRIS=${SUPPORT_IRIS}, SUPPORT_SOFTKEY=${SUPPORT_SOFTKEY}
		 		AUTH_RESOLUTIONS=${AUTH_RESOLUTIONS[@]}"
echo "#"
echo "########################################################################################"

########################################################################################
########## COPY FILES ##########
#
rm -rf ${WS_ROOT_DIR}/outputs
mkdir -p ${WS_ROOT_DIR}/outputs

QC_TA_BUILD_DIR="${WS_ROOT_DIR}/${1}/nhlos/trustzone_images/build/ms"
BIN_OUT_DIR="${QC_TA_BUILD_DIR}/bin/${TZ_BUILD_ID}/unsigned"

# remove log files
cd $QC_TA_BUILD_DIR
rm build-log*
rm LOGFILE*

mkdir ${BUILD_CHIP}
COPY_COMMON_TA_FILES() {
	echo "########## Copy common TA files to the nhlos ##########"
	echo "# MST file"
	cd ${WS_ROOT_DIR}
	MST_DIR="${BUILD_CHIP}/nhlos/trustzone_images/core/securemsm/trustzone/qsapps/tz_spay_platform/tl/QSEE/"

	mkdir -p ${MST_DIR}
	cp -rf ${BUILD_CHIP}/nhlos/trustzone_images/core/securemsm/tz_spay_platform/tl/mst_tl.c ${MST_DIR}
	ls -al ${MST_DIR}

	echo "# Common TA files"
	cp -rf ta_common/tz_* ${BUILD_CHIP}/nhlos/trustzone_images/core/securemsm/trustzone/qsapps/
	cp -rf ta_common/pay_auth ${BUILD_CHIP}/nhlos/trustzone_images/core/securemsm/trustzone/qsapps/
	ls -al ${BUILD_CHIP}/nhlos/trustzone_images/core/securemsm/trustzone/qsapps/

	echo "# Common trustzone_images build files"
	cp -rf ta_common/trustzone_images/* ${BUILD_CHIP}/nhlos/trustzone_images/
	
	echo "Copy check : build_config.xml, SConscript"
	ls -al ${BUILD_CHIP}/nhlos/trustzone_images/build/ms/ | grep build_config
	ls -al ${BUILD_CHIP}/nhlos/trustzone_images/core/securemsm/trustzone/qsapps/build | grep SCons

	echo "Copy Card TAs"
	cp -rf ta_common/amex_pay ${BUILD_CHIP}/nhlos/trustzone_images/core/securemsm/trustzone/qsapps/
	cp -rf ta_common/amex_payv2 ${BUILD_CHIP}/nhlos/trustzone_images/core/securemsm/trustzone/qsapps/
	cp -rf ta_common/chncmm_pay ${BUILD_CHIP}/nhlos/trustzone_images/core/securemsm/trustzone/qsapps/
	cp -rf ta_common/cncc_pay ${BUILD_CHIP}/nhlos/trustzone_images/core/securemsm/trustzone/qsapps/
	cp -rf ta_common/dc_pay ${BUILD_CHIP}/nhlos/trustzone_images/core/securemsm/trustzone/qsapps/
	cp -rf ta_common/itrc_pay ${BUILD_CHIP}/nhlos/trustzone_images/core/securemsm/trustzone/qsapps/
	cp -rf ta_common/krcc_pay ${BUILD_CHIP}/nhlos/trustzone_images/core/securemsm/trustzone/qsapps/
	cp -rf ta_common/mc_pay ${BUILD_CHIP}/nhlos/trustzone_images/core/securemsm/trustzone/qsapps/
	cp -rf ta_common/plcc_pay ${BUILD_CHIP}/nhlos/trustzone_images/core/securemsm/trustzone/qsapps/
	cp -rf ta_common/visa_pay ${BUILD_CHIP}/nhlos/trustzone_images/core/securemsm/trustzone/qsapps/
	ls -al ${BUILD_CHIP}/nhlos/trustzone_images/core/securemsm/trustzone/qsapps/
	
	echo "# COPY DONE"
	echo "########################################################################################"
}
COPY_COMMON_TA_FILES

########################################################################################
########## MAKE A TIMA CONFIG FILE ##########
#

# customize build_linux_samsung.sh and run to generate tima_config.h
#cp ../../../boot_images/QcomPkg/Msm8998Pkg/build_linux_samsung.sh ../../../boot_images/QcomPkg/Msm8998Pkg/build_linux_samsung_ta.sh
#sed -i '/cd $XBL_BUILD_DIR/{n;s/^/#/}' ../../../boot_images/QcomPkg/Msm8998Pkg/build_linux_samsung_ta.sh
#sed -i '/cd $RPM_BUILD_DIR/{n;s/^/#/}' ../../../boot_images/QcomPkg/Msm8998Pkg/build_linux_samsung_ta.sh
#sed -i '/cd $TZ_BUILD_DIR/{n;s/\.\/buildss\.sh/\.\/local_buildss\.sh/}' ../../../boot_images/QcomPkg/Msm8998Pkg/build_linux_samsung_ta.sh
#sed -i '/cd $SLPI_BUILD_DIR/{n;s/^/#/}' ../../../boot_images/QcomPkg/Msm8998Pkg/build_linux_samsung_ta.sh
#sed -i 's/^QPSA_SIGNING$/#QPSA_SIGNING/' ../../../boot_images/QcomPkg/Msm8998Pkg/build_linux_samsung_ta.sh
#sed -i '/cd $COMMON_BUILD_DIR/{n;s/^/#/}' ../../../boot_images/QcomPkg/Msm8998Pkg/build_linux_samsung_ta.sh
#sed -i 's/^MAKE_EMERGENCY_TOOL$/#MAKE_EMERGENCY_TOOL/' ../../../boot_images/QcomPkg/Msm8998Pkg/build_linux_samsung_ta.sh
#../../../boot_images/QcomPkg/Msm8998Pkg/build_linux_samsung_ta.sh
#
# Set tima_config.h
export TIMA_VERSION=3
export TIMA_ENABLED=1

cd ${WS_ROOT_DIR}
rm -f tima_config.h
./build_linux_samsung_ta.sh

"Copy tima_config.h"
cp tima_config.h ${QC_TA_BUILD_DIR}/
ls -al ${QC_TA_BUILD_DIR} | grep tima_config.h


########################################################################################
########## BUILD CONFIGURATIONS ##########
#
cd $QC_TA_BUILD_DIR

INCLUDE_TZ_LIBRARIES_TO_APP_FOLDERS(){
# secure ui, touch related libraries
	lib_directories=(
			"../../core/securemsm/sse/log/build"
			"../../core/securemsm/sse/qsee/SecureDisplay/zlib/build"
			"../../core/securemsm/sse/qsee/SecureDisplay/libgd/build"
			"../../core/securemsm/sse/qsee/SecureDisplay/libpng/build"
			"../../core/securemsm/sse/qsee/SecureTouch/drTs/controller/build"
			"../../core/securemsm/sse/qsee/SecureTouch/drTs/lib/build"
			"../../core/securemsm/sse/qsee/SecureUI/build"
			"../../core/securemsm/sse/qsee/SecureUILib/lib/build"
			"../../core/securemsm/sse/SecureTouch/layout/build"
			"../../core/securemsm/sse/SecureTouch/controller/build"
			)
			include_lib_in_tz_app=("pay_auth")
			for lib in ${lib_directories[@]}
			do
				for tz_app in ${include_lib_in_tz_app[@]}
				do
					rm -rf $lib/$tz_app/					#remove existing (local build) to have latest files
					mkdir -p $lib/$tz_app/scorpion/
					cp -Rf $lib/secure_ui_sample/scorpion/ $lib/$tz_app/
				done
			done
# bio related libraries
	lib_directories=(
			"../../core/securemsm/trustzone/qsapps/libs/biometric/build"
			)
			include_lib_in_tz_app=("pay_auth")
			for lib in ${lib_directories[@]}
			do
				for tz_app in ${include_lib_in_tz_app[@]}
				do
					rm -rf $lib/$tz_app/					#remove existing (local build) to have latest files
					mkdir -p $lib/$tz_app/scorpion/
					cp -Rf $lib/sampleapp/scorpion/ $lib/$tz_app/
				done
			done
}


########################################################################################
########## BUILD AUTH TA ##########
#

if [[ ${BUILD_AUTH} == true ]]; then
    # TZ related libraries
    INCLUDE_TZ_LIBRARIES_TO_APP_FOLDERS

    TA_NAME=pay_auth
    #source ${WS_ROOT_DIR}/build_version.config

    CMN_QC_DIR_PRD="app/src/cmn_production/assets/ta/qc/${1:3:${#1}}"
    CMN_QC_DIR_STG="app/src/cmn_staging/assets/ta/qc/${1:3:${#1}}"
    CMN_OUT_DIR_PRD="${WS_ROOT_DIR}/outputs/${JOB_NAME}${BUILD_DISPLAY_NAME}_v${P4_CHANGELIST}/${CMN_QC_DIR_PRD}"
    CMN_OUT_DIR_STG="${WS_ROOT_DIR}/outputs/${JOB_NAME}${BUILD_DISPLAY_NAME}_v${P4_CHANGELIST}/${CMN_QC_DIR_STG}"

    for R in ${AUTH_RESOLUTIONS[@]}; do
	    export TUI_DPI=$R
	    TUI_DIR="360-xxxhdpi"
	    if [ ${R} == 480 ]; then
		    TUI_DIR="360-xxhdpi"
	    elif [ ${R} == 320 ]; then
		    TUI_DIR="360-xhdpi"
	    fi

        # for kelly project
        if [[ ${CMN_DIR} != "" ]]; then
	        echo "replace ${TUI_DIR} to ${CMN_DIR}"
            TUI_DIR=${CMN_DIR}
        fi

	    echo ====================== BUILD PRODUCTION TA $TUI_DPI =======================
	    export STAGING_ENV=false

	    rm -rf $CMN_OUT_DIR_PRD/$TUI_DIR/
	    mkdir -p $CMN_OUT_DIR_PRD/$TUI_DIR/
	    #python build_all.py -b TZ.BF.4.0 CHIPSET=$BUILD_CHIP $TA_NAME --cnb
	    python build_all.py -b TZ.BF.4.0 CHIPSET=$BUILD_CHIP $TA_NAME -c
	    python build_all.py -b TZ.BF.4.0 CHIPSET=$BUILD_CHIP $TA_NAME
	    java -jar ${SIGNCLIENT} -model ${SECURE_NAME} -runtype ${RUNTYPE}${TA_NAME} -input ${BIN_OUT_DIR}/${TA_NAME}.mbn -output ${CMN_OUT_DIR_PRD}/${TUI_DIR}/${TA_NAME}.mp3

	    echo ======================== BUILD STAGING TA $TUI_DPI ========================
	    export STAGING_ENV=true

	    rm -rf $CMN_OUT_DIR_STG/$TUI_DIR/
	    mkdir -p $CMN_OUT_DIR_STG/$TUI_DIR/
	    #python build_all.py -b TZ.BF.4.0 CHIPSET=$BUILD_CHIP $TA_NAME --cnb
	    python build_all.py -b TZ.BF.4.0 CHIPSET=$BUILD_CHIP $TA_NAME -c
	    python build_all.py -b TZ.BF.4.0 CHIPSET=$BUILD_CHIP $TA_NAME
	    java -jar ${SIGNCLIENT} -model ${SECURE_NAME} -runtype ${RUNTYPE}${TA_NAME} -input ${BIN_OUT_DIR}/${TA_NAME}.mbn -output ${CMN_OUT_DIR_STG}/${TUI_DIR}/${TA_NAME}.mp3
    done
fi


########################################################################################
# PRODUCTION : MAKE TA FOLDERS
TEE_QC_DIR_PRD="app/src/tee_production/assets/ta/qc/${1:3:${#1}}"
TEE_OUT_DIR_PRD="${WS_ROOT_DIR}/outputs/${JOB_NAME}${BUILD_DISPLAY_NAME}_v${P4_CHANGELIST}/${TEE_QC_DIR_PRD}"
mkdir -p $TEE_OUT_DIR_PRD

# CNCC TA FOLDERS
CMN_QC_DIR_PRD="app/src/cmn_production/assets/ta/qc/${1:3:${#1}}"
CMN_OUT_DIR_PRD="${WS_ROOT_DIR}/outputs/${JOB_NAME}${BUILD_DISPLAY_NAME}_v${P4_CHANGELIST}/${CMN_QC_DIR_PRD}"
mkdir -p $CMN_OUT_DIR_PRD

# KRCC TA FOLDERS
LOCAL_SCHEME_QC_DIR_PRD="app/src/tee_production_localScheme/assets/ta/qc/${1:3:${#1}}"
LOCAL_SCHEME_OUT_DIR_PRD="${WS_ROOT_DIR}/outputs/${JOB_NAME}${BUILD_DISPLAY_NAME}_v${P4_CHANGELIST}/${LOCAL_SCHEME_QC_DIR_PRD}"
mkdir -p $LOCAL_SCHEME_OUT_DIR_PRD

# ESE TA FOLDERS
ESE_QC_DIR_PRD="app/src/ese_production/assets/ta/qc/${1:3:${#1}}"
ESE_OUT_DIR_PRD="${WS_ROOT_DIR}/outputs/${JOB_NAME}${BUILD_DISPLAY_NAME}_v${P4_CHANGELIST}/${ESE_QC_DIR_PRD}"
mkdir -p $ESE_OUT_DIR_PRD/$ESE_DIR/


########################################################################################
# STAGING : MAKE TA FOLDERS
#
TEE_QC_DIR_STG="app/src/tee_staging/assets/ta/qc/${1:3:${#1}}"
TEE_OUT_DIR_STG="${WS_ROOT_DIR}/outputs/${JOB_NAME}${BUILD_DISPLAY_NAME}_v${P4_CHANGELIST}/${TEE_QC_DIR_STG}"
mkdir -p $TEE_OUT_DIR_STG

# CNCC TA FOLDERS
CMN_QC_DIR_STG="app/src/cmn_staging/assets/ta/qc/${1:3:${#1}}"
CMN_OUT_DIR_STG="${WS_ROOT_DIR}/outputs/${JOB_NAME}${BUILD_DISPLAY_NAME}_v${P4_CHANGELIST}/${CMN_QC_DIR_STG}"
mkdir -p $CMN_OUT_DIR_STG

# KRCC TA FOLDERS
LOCAL_SCHEME_QC_DIR_STG="app/src/tee_staging_localScheme/assets/ta/qc/${1:3:${#1}}"
LOCAL_SCHEME_OUT_DIR_STG="${WS_ROOT_DIR}/outputs/${JOB_NAME}${BUILD_DISPLAY_NAME}_v${P4_CHANGELIST}/${LOCAL_SCHEME_QC_DIR_STG}"
mkdir -p $LOCAL_SCHEME_OUT_DIR_STG

# ESE TA FOLDERS
ESE_QC_DIR_STG="app/src/ese_staging/assets/ta/qc/${1:3:${#1}}"
ESE_OUT_DIR_STG="${WS_ROOT_DIR}/outputs/${JOB_NAME}${BUILD_DISPLAY_NAME}_v${P4_CHANGELIST}/${ESE_QC_DIR_STG}"
if [[ ${ESE_DIR} == "" ]]; then
	echo "There is no ESE_DIR"
	mkdir -p $ESE_OUT_DIR_STG/
else
	mkdir -p $ESE_OUT_DIR_STG/$ESE_DIR/
fi

#
########################################################################################
########## BUILD CARD TA ##########
MAX_TA_NAME_LEN=8

#ALL_TA=("cncc_pay" "amex_pay" "amex_payv2" "mc_pay" "visa_pay" "plcc_pay" "dc_pay" "krcc_pay" "chncmm_pay")
#ALL_TA=( "itrc_pay" )

TA_OUTDIR_PRD=""
TA_OUTDIR_STG=""

for TA_NAME in ${BUILD_TA[@]}; do
	echo ======================== BUILD CARD TA ${TA_NAME/amex/aexp} ========================
	#source ${WS_ROOT_DIR}/build_version.config
	if [ ${TA_NAME} == "cncc_pay" ]; then
		TA_SIGNING_NAME=${TA_NAME}
		TA_OUTDIR_PRD=${CMN_OUT_DIR_PRD}
		TA_OUTDIR_STG=${CMN_OUT_DIR_STG}
	elif [ ${TA_NAME} == "krcc_pay" ]; then
		export GLOBAL_MEMBERSHIP=true
		TA_SIGNING_NAME=${TA_NAME}
		TA_OUTDIR_PRD=${LOCAL_SCHEME_OUT_DIR_PRD}
		TA_OUTDIR_STG=${LOCAL_SCHEME_OUT_DIR_STG}
	elif [ ${TA_NAME} == "chncmm_pay" ]; then
		TA_SIGNING_NAME=${TA_NAME}
		if [ ${ESE_DIR} != "" ]; then
			TA_OUTDIR_PRD=${ESE_OUT_DIR_PRD}/${ESE_DIR}
			TA_OUTDIR_STG=${ESE_OUT_DIR_STG}/${ESE_DIR}
		else
			echo "There is no ESE_DIR."
			TA_OUTDIR_PRD=${ESE_OUT_DIR_PRD}
			TA_OUTDIR_STG=${ESE_OUT_DIR_STG}
		fi
	else
		TA_SIGNING_NAME=${TA_NAME:0:$MAX_TA_NAME_LEN}
		TA_OUTDIR_PRD=${TEE_OUT_DIR_PRD}
		TA_OUTDIR_STG=${TEE_OUT_DIR_STG}
	fi

	echo ====================== BUILD PRODUCTION TA : ${TA_NAME} =======================
	export STAGING_ENV=false
	#python build_all.py -b TZ.BF.4.0 CHIPSET=$BUILD_CHIP $TA_NAME -cnb
	python build_all.py -b TZ.BF.4.0 CHIPSET=$BUILD_CHIP $TA_NAME -c
	python build_all.py -b TZ.BF.4.0 CHIPSET=$BUILD_CHIP $TA_NAME
	mv ${BIN_OUT_DIR}/${TA_NAME}.mbn ${BIN_OUT_DIR}/${TA_SIGNING_NAME}.mbn
	java -jar ${SIGNCLIENT} -model ${SECURE_NAME} -runtype ${RUNTYPE}${TA_SIGNING_NAME} -input ${BIN_OUT_DIR}/${TA_SIGNING_NAME}.mbn -output ${TA_OUTDIR_PRD}/${TA_NAME/amex/aexp}.mp3

	echo ======================== BUILD STAGING TA : ${TA_NAME} ========================
	export STAGING_ENV=true
	#python build_all.py -b TZ.BF.4.0 CHIPSET=$BUILD_CHIP $TA_NAME -cnb
	python build_all.py -b TZ.BF.4.0 CHIPSET=$BUILD_CHIP $TA_NAME -c
	python build_all.py -b TZ.BF.4.0 CHIPSET=$BUILD_CHIP $TA_NAME
	mv ${BIN_OUT_DIR}/${TA_NAME}.mbn ${BIN_OUT_DIR}/${TA_SIGNING_NAME}.mbn
	java -jar ${SIGNCLIENT} -model ${SECURE_NAME} -runtype ${RUNTYPE}${TA_SIGNING_NAME} -input ${BIN_OUT_DIR}/${TA_SIGNING_NAME}.mbn -output ${TA_OUTDIR_STG}/${TA_NAME/amex/aexp}.mp3
done

