#!/bin/bash
WS_ROOT_DIR=`pwd`

if [[ "$1" != sdm* ]]; then
	echo "Invalid BUILD_CHIP value : $1"
	echo "Please set BUILD_CHIP appropriately, Values allowed : sdm710" # sdm670
	exit 1
fi

case $2 in
	a9sqlte)
	export ESE_NXP=true
	export ESE_GEM=false
	export ESE_DIR=""
	;;
	*)
	echo "Provide model name, for ex : ./QCOM_TA_BUILD_710.sh sdm710 a9sqlte" # sdm670
	exit
	;;
esac

BUILD_CHIP=sdm670 # ${1:0:6}
#SECURE_NAME=QSEE_${BUILD_CHIP^^}_TA # need to check sdm670
SECURE_NAME=QSEE_SDM845_TA 
RUNTYPE=qc_secimg40_ # need to check
SIGNCLIENT="${WS_ROOT_DIR}/nhlos/common/build/signclient.jar" # need to check
TZ_BUILD_ID=XAWAANAA
PRODUCT_NAME=a9sqltechn

QC_TA_BUILD_DIR="${WS_ROOT_DIR}/nhlos/trustzone_images/build/ms"
cd $QC_TA_BUILD_DIR

BIN_OUT_DIR="${QC_TA_BUILD_DIR}/bin/${TZ_BUILD_ID}/unsigned"

rm build-log*
rm LOGFILE*

export TIMA_VERSION=3
export TIMA_ENABLED=1

rm -f tima_config.h

# customize build_linux_samsung.sh and run to generate tima_config.h # sdm670
cp ../../../boot_images/QcomPkg/SDM670Pkg/build_linux_samsung.sh ../../../boot_images/QcomPkg/SDM670Pkg/build_linux_samsung_ta.sh
sed -i '/cd $XBL_BUILD_DIR/{n;s/^/#/}' ../../../boot_images/QcomPkg/SDM670Pkg/build_linux_samsung_ta.sh
sed -i '/cd $AOP_BUILD_DIR/{n;s/^/#/}' ../../../boot_images/QcomPkg/SDM670Pkg/build_linux_samsung_ta.sh
#sed -i '/cd $TZ_BUILD_DIR/{n;s/\.\/buildss\.sh/\.\/local_buildss\.sh/}' ../../../boot_images/QcomPkg/SDM670Pkg/build_linux_samsung_ta.sh
sed -i '/cd $TZ_BUILD_DIR/{n;s/^/#/}' ../../../boot_images/QcomPkg/SDM670Pkg/build_linux_samsung_ta.sh
sed -i '/cd $SLPI_BUILD_DIR/{n;s/^/#/}' ../../../boot_images/QcomPkg/SDM670Pkg/build_linux_samsung_ta.sh
sed -i 's/^QPSA_SIGNING$/#QPSA_SIGNING/' ../../../boot_images/QcomPkg/SDM670Pkg/build_linux_samsung_ta.sh
sed -i '/cd $COMMON_BUILD_DIR/{n;s/^/#/}' ../../../boot_images/QcomPkg/SDM670Pkg/build_linux_samsung_ta.sh
sed -i 's/^MAKE_EMERGENCY_TOOL$/#MAKE_EMERGENCY_TOOL/' ../../../boot_images/QcomPkg/SDM670Pkg/build_linux_samsung_ta.sh
../../../boot_images/QcomPkg/SDM670Pkg/build_linux_samsung_ta.sh T_PRODUCT=a9sqltechn T_MODEL=A9SQLTE T_CARRIER=CHN_OPEN T_TARGET=sdm710 # sdm670

INCLUDE_TZ_LIBRARIES_TO_APP_FOLDERS(){
# secure ui, touch related libraries
	lib_directories=(
			"../../apps/bsp/trustzone/qsapps/sselog"
			"../../apps/bsp/trustzone/qsapps/zlib"
			"../../apps/bsp/trustzone/qsapps/libgd"
			"../../apps/bsp/trustzone/qsapps/libpng"
			"../../apps/bsp/trustzone/qsapps/drts_controller_sdm670" # sdm670
			"../../apps/bsp/trustzone/qsapps/touch_controller_i2c_sdm670" # sdm670
			"../../apps/bsp/trustzone/qsapps/secure_ui"
			"../../apps/bsp/trustzone/qsapps/secure_ui_lib"
			"../../apps/bsp/trustzone/qsapps/secure_ui_tui"
			"../../apps/bsp/trustzone/qsapps/touch_lib"
			"../../apps/bsp/trustzone/qsapps/secure_ui"
			"../../apps/bsp/trustzone/qsapps/sklayout"
			)
			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/build/scorpion/$TZ_BUILD_ID
					cp -Rf $lib/secure_ui_sample/build/scorpion/ $lib/$tz_app/build/
				done
			done
# bio related libraries
	lib_directories=(
			"../../apps/bsp/trustzone/qsapps/biometric_lib"
			)
			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/build/scorpion/$TZ_BUILD_ID
					cp -Rf $lib/iris/build/scorpion/ $lib/$tz_app/build/
				done
			done
}

# Model
export MODEL_FAMILY="sdm710"

# Demo
export ENABLE_DEMO=false

export LLVM_VERSION=4.0.3
export LLVMROOT=${WS_ROOT_DIR}/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

echo LLVM_VERSION=$LLVM_VERSION
echo LLVMROOT=$LLVMROOT
echo LLVMBIN=$LLVMBIN
echo LLVMLIB=$LLVMLIB
echo LLVMINC=$LLVMINC
echo LLVM32INC=$LLVM32INC
echo LLVMTOOLPATH=$LLVMTOOLPATH
echo LLVMCLANG=$LLVMCLANG
echo MUSL32PATH=$MUSL32PATH
echo MUSLPATH=$MUSLPATH

# TZ related libraries
INCLUDE_TZ_LIBRARIES_TO_APP_FOLDERS

ESE_QC_PRD_DIR="app/src/ese_production/assets/ta/qc/${1:3:${#1}}"
ESE_QC_STG_DIR="app/src/ese_staging/assets/ta/qc/${1:3:${#1}}"
ESE_OUT_DIR_PRD="${WS_ROOT_DIR}/${JOB_NAME}${BUILD_DISPLAY_NAME}_v${P4_CHANGELIST}/${ESE_QC_PRD_DIR}"
ESE_OUT_DIR_STG="${WS_ROOT_DIR}/${JOB_NAME}${BUILD_DISPLAY_NAME}_v${P4_CHANGELIST}/${ESE_QC_STG_DIR}"
mkdir -p $ESE_OUT_DIR_PRD
mkdir -p $ESE_OUT_DIR_STG
mkdir -p $ESE_OUT_DIR_PRD/$ESE_DIR/
mkdir -p $ESE_OUT_DIR_STG/$ESE_DIR/

ESE_PAYMENT_TA_LIST=( "chncmm_pay" )

for TA_NAME in "${ESE_PAYMENT_TA_LIST[@]}"; do

	source ${WS_ROOT_DIR}/build_version.config

	echo ====================== BUILD PRODUCTION TA =======================
	export STAGING_ENV=false
	python build_all.py -b TZ.XF.5.0 CHIPSET=$BUILD_CHIP PRODUCT_NAME=$PRODUCT_NAME --config=build_config_$TA_NAME.xml $TA_NAME --clean
	python build_all.py -b TZ.XF.5.0 CHIPSET=$BUILD_CHIP PRODUCT_NAME=$PRODUCT_NAME --cnb --config=build_config_$TA_NAME.xml --cbt $TA_NAME
	java -jar ${SIGNCLIENT} -model ${SECURE_NAME} -runtype ${RUNTYPE}${TA_NAME} -input ${BIN_OUT_DIR}/${TA_NAME}.mbn -output ${ESE_OUT_DIR_PRD}/${ESE_DIR}/${TA_NAME}.mp3

	echo ======================== BUILD STAGING TA ========================
	export STAGING_ENV=true
	python build_all.py -b TZ.XF.5.0 CHIPSET=$BUILD_CHIP PRODUCT_NAME=$PRODUCT_NAME --config=build_config_$TA_NAME.xml $TA_NAME --clean
	python build_all.py -b TZ.XF.5.0 CHIPSET=$BUILD_CHIP PRODUCT_NAME=$PRODUCT_NAME --cnb --config=build_config_$TA_NAME.xml --cbt $TA_NAME
	java -jar ${SIGNCLIENT} -model ${SECURE_NAME} -runtype ${RUNTYPE}${TA_NAME} -input ${BIN_OUT_DIR}/${TA_NAME}.mbn -output ${ESE_OUT_DIR_STG}/${ESE_DIR}/${TA_NAME}.mp3
done

TEE_QC_PRD_DIR="app/src/tee_production/assets/ta/qc/${1:3:${#1}}"
TEE_QC_STG_DIR="app/src/tee_staging/assets/ta/qc/${1:3:${#1}}"
TEE_OUT_DIR_PRD="${WS_ROOT_DIR}/${JOB_NAME}${BUILD_DISPLAY_NAME}_v${P4_CHANGELIST}/${TEE_QC_PRD_DIR}"
TEE_OUT_DIR_STG="${WS_ROOT_DIR}/${JOB_NAME}${BUILD_DISPLAY_NAME}_v${P4_CHANGELIST}/${TEE_QC_STG_DIR}"
mkdir -p $TEE_OUT_DIR_PRD
mkdir -p $TEE_OUT_DIR_STG

MAX_TA_NAME_LEN=8

TEE_PAYMENT_TA_LIST=( "amex_pay" "amex_payv2" "mc_pay" "visa_pay" "plcc_pay" "dc_pay" )

for TA_NAME in "${TEE_PAYMENT_TA_LIST[@]}"; do

	source ${WS_ROOT_DIR}/build_version.config
	TA_SIGNING_NAME=${TA_NAME:0:$MAX_TA_NAME_LEN}

	echo ====================== BUILD PRODUCTION TA =======================
	export STAGING_ENV=false

	python build_all.py -b TZ.XF.5.0 CHIPSET=$BUILD_CHIP PRODUCT_NAME=$PRODUCT_NAME --config=build_config_$TA_NAME.xml $TA_NAME --clean
	python build_all.py -b TZ.XF.5.0 CHIPSET=$BUILD_CHIP PRODUCT_NAME=$PRODUCT_NAME --cnb --config=build_config_$TA_NAME.xml --cbt $TA_NAME
	mv ${BIN_OUT_DIR}/${TA_NAME}.mbn ${BIN_OUT_DIR}/${TA_SIGNING_NAME}.mbn
	if [ ${TA_NAME} == "amex_payv2" ]; then
		echo "move amex_payv2.mbn to amex_pay.mbn for signing"
	fi
	java -jar ${SIGNCLIENT} -model ${SECURE_NAME} -runtype ${RUNTYPE}${TA_SIGNING_NAME} -input ${BIN_OUT_DIR}/${TA_SIGNING_NAME}.mbn -output ${TEE_OUT_DIR_PRD}/${TA_NAME/amex/aexp}.mp3

	echo ======================== BUILD STAGING TA ========================
	export STAGING_ENV=true

	python build_all.py -b TZ.XF.5.0 CHIPSET=$BUILD_CHIP PRODUCT_NAME=$PRODUCT_NAME --config=build_config_$TA_NAME.xml $TA_NAME --clean
	python build_all.py -b TZ.XF.5.0 CHIPSET=$BUILD_CHIP PRODUCT_NAME=$PRODUCT_NAME --cnb --config=build_config_$TA_NAME.xml --cbt $TA_NAME
	mv ${BIN_OUT_DIR}/${TA_NAME}.mbn ${BIN_OUT_DIR}/${TA_SIGNING_NAME}.mbn
	if [ ${TA_NAME} == "amex_payv2" ]; then
		echo "move amex_payv2.mbn to amex_pay.mbn for signing"
	fi
	java -jar ${SIGNCLIENT} -model ${SECURE_NAME} -runtype ${RUNTYPE}${TA_SIGNING_NAME} -input ${BIN_OUT_DIR}/${TA_SIGNING_NAME}.mbn -output ${TEE_OUT_DIR_STG}/${TA_NAME/amex/aexp}.mp3
done

CMN_QC_PRD_DIR="app/src/cmn_production/assets/ta/qc/${1:3:${#1}}"
CMN_QC_STG_DIR="app/src/cmn_staging/assets/ta/qc/${1:3:${#1}}"
CMN_OUT_DIR_PRD="${WS_ROOT_DIR}/${JOB_NAME}${BUILD_DISPLAY_NAME}_v${P4_CHANGELIST}/${CMN_QC_PRD_DIR}"
CMN_OUT_DIR_STG="${WS_ROOT_DIR}/${JOB_NAME}${BUILD_DISPLAY_NAME}_v${P4_CHANGELIST}/${CMN_QC_STG_DIR}"
mkdir -p $CMN_OUT_DIR_PRD
mkdir -p $CMN_OUT_DIR_STG

COMMON_TA_LIST=( "cncc_pay" )

for TA_NAME in "${COMMON_TA_LIST[@]}"; do

	source ${WS_ROOT_DIR}/build_version.config

	echo ====================== BUILD PRODUCTION TA =======================
	export STAGING_ENV=false
	python build_all.py -b TZ.XF.5.0 CHIPSET=$BUILD_CHIP PRODUCT_NAME=$PRODUCT_NAME --config=build_config_$TA_NAME.xml $TA_NAME --clean
	python build_all.py -b TZ.XF.5.0 CHIPSET=$BUILD_CHIP PRODUCT_NAME=$PRODUCT_NAME --cnb --config=build_config_$TA_NAME.xml --cbt $TA_NAME
	java -jar ${SIGNCLIENT} -model ${SECURE_NAME} -runtype ${RUNTYPE}${TA_NAME} -input ${BIN_OUT_DIR}/${TA_NAME}.mbn -output ${CMN_OUT_DIR_PRD}/${TA_NAME/amex/aexp}.mp3

	echo ======================== BUILD STAGING TA ========================
	export STAGING_ENV=true
	python build_all.py -b TZ.XF.5.0 CHIPSET=$BUILD_CHIP PRODUCT_NAME=$PRODUCT_NAME --config=build_config_$TA_NAME.xml $TA_NAME --clean
	python build_all.py -b TZ.XF.5.0 CHIPSET=$BUILD_CHIP PRODUCT_NAME=$PRODUCT_NAME --cnb --config=build_config_$TA_NAME.xml --cbt $TA_NAME
	java -jar ${SIGNCLIENT} -model ${SECURE_NAME} -runtype ${RUNTYPE}${TA_NAME} -input ${BIN_OUT_DIR}/${TA_NAME}.mbn -output ${CMN_OUT_DIR_STG}/${TA_NAME/amex/aexp}.mp3
done

TA_NAME=pay_auth
source ${WS_ROOT_DIR}/build_version.config
export UX3_0=true
#export SUPPORT_IRIS=true
export SUPPORT_SOFTKEY_PUNCHHOLE=true

for R in 480 ; 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
	echo ====================== BUILD PRODUCTION TA $TUI_DPI =======================
	export STAGING_ENV=false
	mkdir -p $CMN_OUT_DIR_PRD/$TUI_DIR/
	python build_all.py -b TZ.XF.5.0 CHIPSET=$BUILD_CHIP PRODUCT_NAME=$PRODUCT_NAME --config=build_config_$TA_NAME.xml $TA_NAME --clean
	python build_all.py -b TZ.XF.5.0 CHIPSET=$BUILD_CHIP PRODUCT_NAME=$PRODUCT_NAME --cnb --config=build_config_$TA_NAME.xml --cbt $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
	mkdir -p $CMN_OUT_DIR_STG/$TUI_DIR/
	python build_all.py -b TZ.XF.5.0 CHIPSET=$BUILD_CHIP PRODUCT_NAME=$PRODUCT_NAME --config=build_config_$TA_NAME.xml $TA_NAME --clean
	python build_all.py -b TZ.XF.5.0 CHIPSET=$BUILD_CHIP PRODUCT_NAME=$PRODUCT_NAME --cnb --config=build_config_$TA_NAME.xml --cbt $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

LOCAL_SCHEME_QC_PRD_DIR="app/src/tee_production_localScheme/assets/ta/qc/${1:3:${#1}}"
LOCAL_SCHEME_QC_STG_DIR="app/src/tee_staging_localScheme/assets/ta/qc/${1:3:${#1}}"
LOCAL_SCHEME_OUT_DIR_PRD="${WS_ROOT_DIR}/${JOB_NAME}${BUILD_DISPLAY_NAME}_v${P4_CHANGELIST}/${LOCAL_SCHEME_QC_PRD_DIR}"
LOCAL_SCHEME_OUT_DIR_STG="${WS_ROOT_DIR}/${JOB_NAME}${BUILD_DISPLAY_NAME}_v${P4_CHANGELIST}/${LOCAL_SCHEME_QC_STG_DIR}"
mkdir -p $LOCAL_SCHEME_OUT_DIR_PRD
mkdir -p $LOCAL_SCHEME_OUT_DIR_STG

LOCAL_SCHEME_TA_LIST=("krcc_pay")

echo ======================= BUILD LOCAL SCHEME TA ========================
for TA_NAME in "${LOCAL_SCHEME_TA_LIST[@]}"; do

	export GLOBAL_MEMBERSHIP=true
	source ${WS_ROOT_DIR}/build_version.config

	echo ====================== BUILD PRODUCTION TA =======================
	export STAGING_ENV=false
	python build_all.py -b TZ.XF.5.0 CHIPSET=$BUILD_CHIP PRODUCT_NAME=$PRODUCT_NAME --config=build_config_$TA_NAME.xml $TA_NAME --clean
	python build_all.py -b TZ.XF.5.0 CHIPSET=$BUILD_CHIP PRODUCT_NAME=$PRODUCT_NAME --cnb --config=build_config_$TA_NAME.xml --cbt $TA_NAME
	java -jar ${SIGNCLIENT} -model ${SECURE_NAME} -runtype ${RUNTYPE}${TA_NAME} -input ${BIN_OUT_DIR}/${TA_NAME}.mbn -output ${LOCAL_SCHEME_OUT_DIR_PRD}/${TA_NAME/amex/aexp}.mp3

	echo ======================== BUILD STAGING TA ========================
	export STAGING_ENV=true
	python build_all.py -b TZ.XF.5.0 CHIPSET=$BUILD_CHIP PRODUCT_NAME=$PRODUCT_NAME --config=build_config_$TA_NAME.xml $TA_NAME --clean
	python build_all.py -b TZ.XF.5.0 CHIPSET=$BUILD_CHIP PRODUCT_NAME=$PRODUCT_NAME --cnb --config=build_config_$TA_NAME.xml --cbt $TA_NAME
	java -jar ${SIGNCLIENT} -model ${SECURE_NAME} -runtype ${RUNTYPE}${TA_NAME} -input ${BIN_OUT_DIR}/${TA_NAME}.mbn -output ${LOCAL_SCHEME_OUT_DIR_STG}/${TA_NAME/amex/aexp}.mp3
done
