#!/bin/bash

QSAPPS=""

# Remove build error "tima_config.h" or "board.h"
HANDLE_FILE_NAME=cust$(echo $LOCAL_BUILD_ID | tr "[A-Z]" "[a-z]")a.h
sed -i "s|#include \"tima_config.h\"|//#include \"tima_config.h\"|" ../../../$QSEE_BUILD_DIR/$HANDLE_FILE_NAME > ../../../$QSEE_BUILD_DIR/$HANDLE_FILE_NAME".tmp"
mv ../../../$QSEE_BUILD_DIR/$HANDLE_FILE_NAME".tmp" ../../../$QSEE_BUILD_DIR/$HANDLE_FILE_NAME
sed -i "s|#include \"board.h\"|//#include \"board.h\"|" ../../../$QSEE_BUILD_DIR/$HANDLE_FILE_NAME > ../../../$QSEE_BUILD_DIR/$HANDLE_FILE_NAME".tmp"
mv ../../../$QSEE_BUILD_DIR/$HANDLE_FILE_NAME".tmp" ../../../$QSEE_BUILD_DIR/$HANDLE_FILE_NAME

# copy to build system
qsapp="mldap"

QSAPPS="$QSAPPS $qsapp"
echo "Copying sources of $qsapp"
mkdir -p ../../../$QSEE_QSAPPS_DIR/$qsapp
cp -rfv "../../common" ../../../$QSEE_QSAPPS_DIR/$qsapp/src
cp -rfv "../src" ../../../$QSEE_QSAPPS_DIR/$qsapp/src/qsee
mkdir -p ../../../$QSEE_QSAPPS_DIR/$qsapp/build
if [ ${REAL_BUILD_CHIPSET} == "sm8250" ] || [ ${REAL_BUILD_CHIPSET} == "sdm845" ] || [ ${REAL_BUILD_CHIPSET} == "sm8150" ] || [ ${REAL_BUILD_CHIPSET} == "sm6150" ] || [ ${REAL_BUILD_CHIPSET} == "sdm670" ]; then
    mkdir -p ../../../$QSEE_ROOT_PATH/ssg/bsp/trustzone/qsapps/$qsapp/build
else
    mkdir -p ../../../$QSEE_ROOT_PATH/core/bsp/trustzone/qsapps/$qsapp/build
fi

if [ -e "${NHLOS_PATH}/mldap.ld" ]; then
    mkdir -p ../../../$QSEE_ROOT_PATH/core/bsp/trustzone/qsapps/$qsapp/build
    cp -rfv "${NHLOS_PATH}/mldap.ld" ../../../$QSEE_QSAPPS_DIR/$qsapp/build/mldap.ld
    cp -rfv "${NHLOS_PATH}/SConscript" ../../../$QSEE_QSAPPS_DIR/$qsapp/build/SConscript
elif [ -e "${NHLOS_PATH}/mldap.scl" ]; then
    mkdir -p ../../../$QSEE_ROOT_PATH/core/bsp/trustzone/qsapps/$qsapp/build
    cp -rfv "${NHLOS_PATH}/mldap.scl" ../../../$QSEE_QSAPPS_DIR/$qsapp/build/mldap.scl
    cp -rfv "${NHLOS_PATH}/SConscript" ../../../$QSEE_QSAPPS_DIR/$qsapp/build/SConscript
else
    cp -rfv "${NHLOS_PATH}/SConscript" ../../../$QSEE_QSAPPS_DIR/$qsapp/src/SConscript
fi

if [ -e "../../../$QSEE_ROOT_PATH/core/bsp/build/scripts/secure_app_builder.py" ]; then
    cp -rfv ${NHLOS_PATH}/secure_app_builder.py ${NHLOS_PATH}/secure_app_builder_tmp.py
    sed -i "s|INPUT_MODEL_NAME|$MODEL_NAME|" ${NHLOS_PATH}/secure_app_builder_tmp.py
    cp -rfv ${NHLOS_PATH}/secure_app_builder_tmp.py ../../../$QSEE_ROOT_PATH/core/bsp/build/scripts/secure_app_builder.py
    cp -rfv "${NHLOS_PATH}/SConscript.bsp" ../../../$QSEE_ROOT_PATH/core/bsp/trustzone/qsapps/$qsapp/build/SConscript
elif [ -e "../../../$QSEE_ROOT_PATH/ssg/bsp/build/scripts/secure_app_builder.py" ]; then
    cp -rfv ${NHLOS_PATH}/secure_app_builder.py ${NHLOS_PATH}/secure_app_builder_tmp.py
    sed -i "s|INPUT_MODEL_NAME|$MODEL_NAME|" ${NHLOS_PATH}/secure_app_builder_tmp.py
    cp -rfv ${NHLOS_PATH}/secure_app_builder_tmp.py ../../../$QSEE_ROOT_PATH/ssg/bsp/build/scripts/secure_app_builder.py
    cp -rfv "${NHLOS_PATH}/SConscript.bsp" ../../../$QSEE_ROOT_PATH/ssg/bsp/trustzone/qsapps/$qsapp/build/SConscript
else
    cp -rfv ${NHLOS_PATH}/SConscript.bsp ${NHLOS_PATH}/SConscript_tmp.bsp
    sed -i "s|INPUT_MODEL_NAME|$MODEL_NAME|" ${NHLOS_PATH}/SConscript_tmp.bsp
    cp -rfv ${NHLOS_PATH}/SConscript_tmp.bsp ../../../$QSEE_ROOT_PATH/core/bsp/trustzone/qsapps/$qsapp/build/SConscript
fi

if [ "$NHLOS_PATH" == "SM8150" ] || [ "$NHLOS_PATH" == "SM8250" ]; then
    cp ./"${NHLOS_PATH}"/build_mldap.xml ../../../$QSEE_ROOT_PATH/build/ms/build_mldap.xml
    cd ../../../$QSEE_ROOT_PATH/ssg/bsp/trustzone/build
    sed -e "/apps64 = \[/,/\]/{/mldap\//d;s/.*].*/  '\${BUILD_ROOT}\/ssg\/securemsm\/trustzone\/qsapps\/mldap\/src\/SConscript\',\n\0/g}" SConscript > ./SConscript.tmp
    mv ./SConscript.tmp ./SConscript
    cd -
fi

cp -rfv "../../../nwd/common" ../../../$QSEE_QSAPPS_DIR/$qsapp/src/
cp -rfv "../../../nwd/common/include" ../../../$QSEE_QSAPPS_DIR/$qsapp/src/


echo "List of QSAPPS: $QSAPPS"

echo "Entering to $QSEE_BUILD_DIR"
cd ../../../"$QSEE_BUILD_DIR"

# build trustlets
if [ -e "./build_qsapps.sh" ]; then
    # clean
    ./build_qsapps.sh CHIPSET="${REAL_BUILD_CHIPSET}" mldap -c
    #build
    ./build_qsapps.sh CHIPSET="${REAL_BUILD_CHIPSET}" mldap
elif [ ${REAL_BUILD_CHIPSET} == "msm8998" ]; then
    # clean
    PATH="$PATH:../../../$QSEE_BUILD_DIR" python build_all.py -b TZ.BF.4.0 CHIPSET=${REAL_BUILD_CHIPSET} mldap -c
    #build
    PATH="$PATH:../../../$QSEE_BUILD_DIR" python build_all.py -b TZ.BF.4.0 CHIPSET=${REAL_BUILD_CHIPSET} mldap
elif [ ${REAL_BUILD_CHIPSET} == "sdm660" ]; then
    # clean
    PATH="$PATH:../../../$QSEE_BUILD_DIR" python build_all.py -b TZ.BF.4.0 CHIPSET=${REAL_BUILD_CHIPSET} PRODUCT_NAME=c10plte_chn_open mldap -c
    #build
    PATH="$PATH:../../../$QSEE_BUILD_DIR" python build_all.py -b TZ.BF.4.0 CHIPSET=${REAL_BUILD_CHIPSET} PRODUCT_NAME=c10plte_chn_open mldap
elif [ ${REAL_BUILD_CHIPSET} == "sdm670" ]; then
    # clean
    PATH="$PATH:../../../$QSEE_BUILD_DIR" python build_all.py -b TZ.XF.5.0 CHIPSET=sdm670 --config=build_config_deploy.xml --clean
    #build
    PATH="$PATH:../../../$QSEE_BUILD_DIR" python build_all.py -b TZ.XF.5.0 CHIPSET=sdm670 --cnb --config=build_config_deploy.xml --cbt=mldap
elif [ ${REAL_BUILD_CHIPSET} == "sdm845" ]; then
    # clean
    PATH="$PATH:../../../$QSEE_BUILD_DIR" python build_all.py -b TZ.XF.5.0 CHIPSET=sdm845 --config=build_mldap.xml --clean
    #build
    PATH="$PATH:../../../$QSEE_BUILD_DIR" python build_all.py -b TZ.XF.5.0 CHIPSET=sdm845 --config=build_mldap.xml --recompile
elif [ ${REAL_BUILD_CHIPSET} == "sm8150" ]; then
    # clean
    PATH="$PATH:../../../$QSEE_BUILD_DIR" python build_all.py -b TZ.XF.5.0 CHIPSET=sm8150 -c
    #build
    PATH="$PATH:../../../$QSEE_BUILD_DIR" python build_all.py -b TZ.XF.5.0 CHIPSET=sm8150 --cnb --config=build_mldap.xml
elif [ ${REAL_BUILD_CHIPSET} == "sm8250" ]; then
    # clean
    PATH="$PATH:../../../$QSEE_BUILD_DIR" python build_all.py -b TZ.XF.5.0 CHIPSET=sm8250 -c
    #build
    PATH="$PATH:../../../$QSEE_BUILD_DIR" python build_all.py -b TZ.XF.5.0 CHIPSET=sm8250 --cnb --config=build_mldap.xml
elif [ ${REAL_BUILD_CHIPSET} == "sm6150" ] || [ ${REAL_BUILD_CHIPSET} == "sm7150" ]; then
    PATH="$PATH:../../../$QSEE_BUILD_DIR" python build_all.py -b TZ.XF.5.0 CHIPSET=sm6150 --config=build_config_deploy.xml --clean
    #build
    PATH="$PATH:../../../$QSEE_BUILD_DIR" python build_all.py -b TZ.XF.5.0 CHIPSET=sm6150 --cnb --config=build_config_deploy.xml --cbt=mldap
else
    # clean
    PATH="$PATH:../../../$QSEE_BUILD_DIR" ./build.sh CHIPSET=${REAL_BUILD_CHIPSET} mldap -c
    # build
    PATH="$PATH:../../../$QSEE_BUILD_DIR" ./build.sh CHIPSET=${REAL_BUILD_CHIPSET} mldap
fi

cd -

# copy binaries
for qsapp in $QSAPPS; do
    cp ../../../$QSEE_BUILD_DIR/bin/$LOCAL_BUILD_ID/unsigned/mldap.mbn ../../../$P4_BIN_DIR
    cp ../../../$QSEE_BUILD_DIR/bin/PIL_IMAGES/SPLITBINS_$LOCAL_BUILD_ID/$qsapp.* ../../../$SPLIT_BIN_DIR
done

# Cleanup for the purpose the CryptoCore could be built successfully.
if [ -e "../../../$QSEE_ROOT_PATH/core/bsp/build/scripts/secure_app_builder.py" ]; then
    rm ${NHLOS_PATH}/secure_app_builder_tmp.py
    rm -rf ../../../$QSEE_ROOT_PATH/core/bsp/trustzone/qsapps/$qsapp/build/SConscript
elif [ -e "../../../$QSEE_ROOT_PATH/ssg/bsp/build/scripts/secure_app_builder.py" ]; then
    rm ${NHLOS_PATH}/secure_app_builder_tmp.py
    rm -rf ../../../$QSEE_ROOT_PATH/ssg/bsp/trustzone/qsapps/$qsapp/build/SConscript
else
    rm ${NHLOS_PATH}/SConscript_tmp.bsp
fi

rm -rf ../../../$QSEE_QSAPPS_DIR/$qsapp
