#!/bin/bash
export TOOLCHAIN_PATH=/opt/buildtools/riscv
export APP_PATH=../../demos/riscv64virt
export TMP_DIR=`pwd`/tmp
export OUT_DIR=`pwd`
cleanup() {
rm -rf ${TMP_DIR}
}
set -e
trap cleanup EXIT
POSIX_APP=(
"UniProton_test_posix_stdlib_interface" \
"UniProton_test_posix_string_interface" \
"UniProton_test_posix_regex_interface" \
"UniProton_test_posix_prng_interface"
)
MATH_APP=("UniProton_test_posix_math_interface")
RHEALSTONE_APP=(
"task-switch" \
"task-preempt" \
"message-latency" \
"deadlock-break" \
"semaphore-shuffle"
)
ALL_APP="${POSIX_APP[*]} ${RHEALSTONE_APP[*]} ${MATH_APP[*]}"
for one_arg in $*; do
if [[ $one_arg == "posix" || $one_arg == "POSIX" ]]; then
ALL_APP=${POSIX_APP[*]}
elif [[ $one_arg == "rhealstone" || $one_arg == "RHEALSTONE" ]]; then
ALL_APP=${RHEALSTONE_APP[*]}
elif [[ $one_arg == "math" || $one_arg == "MATH" ]]; then
ALL_APP=${MATH_APP[*]}
else
echo 'argv error'
exit 1
fi
done
if [ -f "${APP_PATH}/libs/libRV64VIRT.a" ];then
echo "have built yet"
else
pushd ${APP_PATH}/build
bash build_static.sh
popd
fi
if [ -d "${OUT_DIR}/baserheal" ];then
echo "have baserheal yet"
else
git clone https://gitee.com/Jer6y/baserheal.git ${OUT_DIR}/baserheal
fi
echo "================================================"
echo "Will build ${ALL_APP}"
echo "================================================"
for one_app in ${ALL_APP}
do
cmake -S ${APP_PATH} -B ${TMP_DIR} -DAPP:STRING=${one_app} -DTOOLCHAIN_PATH:STRING=$TOOLCHAIN_PATH
pushd ${TMP_DIR}
make ${one_app}
popd
cp ${TMP_DIR}/${one_app} ${OUT_DIR}/${one_app}_rv.elf
rm -rf ${TMP_DIR}
done
echo "================================================"
echo "Build ${ALL_APP} done"
echo "================================================"