#!/bin/bash
WS_ROOT_DIR=`pwd`

BUILD_CHIP="msm8953"
BUILD_DIR="msm8953"
SECURE_NAME=QSEE_${BUILD_DIR^^}_TA
RUNTYPE=qc_secimg30_
SIGNCLIENT="${WS_ROOT_DIR}/nhlos/common/build/signclient.jar"
TZ_BUILD_ID=SANAANAA

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*

export TIMA_VERSION=3
export TIMA_ENABLED=1

rm -f tima_config.h

#Create the tima_config.h file, we can define global flags in this file
DEFINE()
{
	DEFINE_NAME=$1
	DEFINE_VALUE=$2
	echo 'DEFINE : '$DEFINE_NAME' VALUE='$DEFINE_VALUE
	echo '#define '$DEFINE_NAME'	'$DEFINE_VALUE >> tima_config.h
}

MAKE_MODEL_DEFINE()
{
	case $1 in
		c7)
		export ESE_NXP=true
		export ESE_GEM=false
		export ESE_DIR=""
			;;
		c5p)
		export ESE_NXP=true
		export ESE_GEM=false
		export ESE_DIR=""
			;;			
		c7p)
		export ESE_NXP=true
		export ESE_GEM=false
		export ESE_DIR=""
			;;
		c5pGem)
		export ESE_NXP=false
		export ESE_GEM=true
		export ESE_DIR="CPRO"
			;;			
		c7pGem)
		export ESE_NXP=false
		export ESE_GEM=true
		export ESE_DIR="CPRO"
			;;
		*)
			echo "Provide model name, for ex : ./QCOM_TA_BUILD_8953.sh <c7p(c7,c5p)|c7pGem(c5pGem)>"
			exit
			;;
	esac		
}

INCLUDE_TZ_LIBRARIES_TO_APP_FOLDERS(){
# all required libraries
	lib_directories=(
			"../../core/kernel/libstd/build"
			"../../core/securemsm/trustzone/qsapps/libs/applib/common_applib/build"
			"../../core/securemsm/trustzone/qsapps/libs/applib/qsee/build"
			"../../core/securemsm/trustzone/qsapps/libs/applib/proxy/build"
			"../../core/securemsm/trustzone/qsee/mink/libstd/build"
			)
			include_lib_in_tz_app=("pay_auth" "chncmm_pay" "cncc_pay" "amex_pay" "amex_payv2" "mc_pay" "plcc_pay" "visa_pay" "dc_pay" "krcc_pay")
			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
# 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
}

# Model
DEFINE QSEE_MSM8953 1
MAKE_MODEL_DEFINE $1
export MODEL_FAMILY="msm8953"

# Demo
export ENABLE_DEMO=false

# TZ related libraries
INCLUDE_TZ_LIBRARIES_TO_APP_FOLDERS

# TIMA
DEFINE TIMA_BASE_ADDR			0x85B00000
DEFINE TIMA_MSR_BASE_ADDR		TIMA_BASE_ADDR
DEFINE TIMA_VPCR_ADDR			TIMA_BASE_ADDR
DEFINE TIMA_VPCR_SIZE			0x20000
DEFINE TIMA_BOOT_MSR_ADDR_OFFSET	0x20
DEFINE TIMA_GOLDEN_MSR_ADDR_OFFSET	0xC00
DEFINE TIMA_BOOT_MEASUREMENT_ADDR	"(TIMA_VPCR_ADDR + 0x20)"
DEFINE TIMA_GOLDEN_MEASUREMENT_ADDR	"(TIMA_VPCR_ADDR + 0xC00)"

ESE_QC_PRD_DIR="app/src/ese_production/assets/ta/qc/${BUILD_DIR:3:4}"
ESE_QC_STG_DIR="app/src/ese_staging/assets/ta/qc/${BUILD_DIR:3:4}"
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
	./build.sh CHIPSET=$BUILD_CHIP $TA_NAME -c
	./build.sh CHIPSET=$BUILD_CHIP $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
	./build.sh CHIPSET=$BUILD_CHIP $TA_NAME -c
	./build.sh CHIPSET=$BUILD_CHIP $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

if [ ${ESE_GEM} == false ]; then

TEE_QC_PRD_DIR="app/src/tee_production/assets/ta/qc/${BUILD_DIR:3:4}"
TEE_QC_STG_DIR="app/src/tee_staging/assets/ta/qc/${BUILD_DIR:3:4}"
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" "plcc_pay" "visa_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
	./build.sh CHIPSET=$BUILD_CHIP $TA_NAME -c
	./build.sh 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 ${TEE_OUT_DIR_PRD}/${TA_NAME/amex/aexp}.mp3

	echo ======================== BUILD STAGING TA ========================
	export STAGING_ENV=true
	./build.sh CHIPSET=$BUILD_CHIP $TA_NAME -c
	./build.sh 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 ${TEE_OUT_DIR_STG}/${TA_NAME/amex/aexp}.mp3
done

CMN_QC_PRD_DIR="app/src/cmn_production/assets/ta/qc/${BUILD_DIR:3:4}"
CMN_QC_STG_DIR="app/src/cmn_staging/assets/ta/qc/${BUILD_DIR:3:4}"
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
	./build.sh CHIPSET=$BUILD_CHIP $TA_NAME -c
	./build.sh 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}/${TA_NAME}.mp3

	echo ======================== BUILD STAGING TA ========================
	export STAGING_ENV=true
	./build.sh CHIPSET=$BUILD_CHIP $TA_NAME -c
	./build.sh 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}/${TA_NAME}.mp3
done

TA_NAME=pay_auth
source ${WS_ROOT_DIR}/build_version.config
export UX3_0=true

for R in 320 480 ; do
	export TUI_DPI=$R
	TUI_DIR="360-xxxhdpi"
	if [ ${TUI_DPI} == 480 ]; then
		TUI_DIR="360-xxhdpi"
	elif [ ${TUI_DPI} == 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/
	./build.sh CHIPSET=$BUILD_CHIP $TA_NAME -c
	./build.sh CHIPSET=$BUILD_CHIP $TA_NAME
	cp ${BIN_OUT_DIR}/${TA_NAME}.mbn ${CMN_OUT_DIR_PRD}/${TUI_DIR}/pay_auth.mbn
	java -jar ${SIGNCLIENT} -model ${SECURE_NAME} -runtype ${RUNTYPE}${TA_NAME} -input ${CMN_OUT_DIR_PRD}/${TUI_DIR}/${TA_NAME}.mbn -output ${CMN_OUT_DIR_PRD}/${TUI_DIR}/${TA_NAME}.mp3
	rm ${CMN_OUT_DIR_PRD}/${TUI_DIR}/pay_auth.mbn

	echo ======================== BUILD STAGING TA $TUI_DPI ========================
	export STAGING_ENV=true
	mkdir -p $CMN_OUT_DIR_STG/$TUI_DIR/
	./build.sh CHIPSET=$BUILD_CHIP $TA_NAME -c
	./build.sh CHIPSET=$BUILD_CHIP $TA_NAME
	cp ${BIN_OUT_DIR}/${TA_NAME}.mbn ${CMN_OUT_DIR_STG}/${TUI_DIR}/pay_auth.mbn
	java -jar ${SIGNCLIENT} -model ${SECURE_NAME} -runtype ${RUNTYPE}${TA_NAME} -input ${CMN_OUT_DIR_STG}/${TUI_DIR}/${TA_NAME}.mbn -output ${CMN_OUT_DIR_STG}/${TUI_DIR}/${TA_NAME}.mp3
	rm ${CMN_OUT_DIR_STG}/${TUI_DIR}/pay_auth.mbn
done

LOCAL_SCHEME_QC_PRD_DIR="app/src/tee_production_localScheme/assets/ta/qc/${BUILD_DIR:3:4}"
LOCAL_SCHEME_QC_STG_DIR="app/src/tee_staging_localScheme/assets/ta/qc/${BUILD_DIR:3:4}"
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")

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
	./build.sh CHIPSET=$BUILD_CHIP $TA_NAME -c
	./build.sh CHIPSET=$BUILD_CHIP $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
	./build.sh CHIPSET=$BUILD_CHIP $TA_NAME -c
	./build.sh CHIPSET=$BUILD_CHIP $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

fi
