wasm-micro-runtime/samples/native-stack-overflow/build.sh
YAMAMOTO Takashi 3e5361f76d
samples/native-stack-overflow: Examine native functions with signature (#3382)
Note: wamrc chooses different methods to call native functions
with and without signatures.
2024-05-03 09:16:35 +08:00

104 lines
2.5 KiB
Bash
Executable File

#! /bin/sh
#
# Copyright (C) 2019 Intel Corporation. All rights reserved.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#
CURR_DIR=$PWD
WAMR_DIR=${PWD}/../..
OUT_DIR=${PWD}/out
WASM_APPS=${PWD}/wasm-apps
rm -rf ${OUT_DIR}
mkdir ${OUT_DIR}
mkdir ${OUT_DIR}/wasm-apps
echo "##################### build (default)"
cd ${CURR_DIR}
mkdir -p cmake_build
cd cmake_build
cmake ..
make -j 4
if [ $? != 0 ];then
echo "BUILD_FAIL native-stack-overflow exit as $?\n"
exit 2
fi
cp -a native-stack-overflow ${OUT_DIR}
echo "##################### build (WAMR_DISABLE_HW_BOUND_CHECK=1)"
cd ${CURR_DIR}
mkdir -p cmake_build_disable_hw_bound
cd cmake_build_disable_hw_bound
cmake -D WAMR_DISABLE_HW_BOUND_CHECK=1 ..
make -j 4
if [ $? != 0 ];then
echo "BUILD_FAIL native-stack-overflow exit as $?\n"
exit 2
fi
cp -a native-stack-overflow ${OUT_DIR}/native-stack-overflow.WAMR_DISABLE_HW_BOUND_CHECK
echo "##################### signature shared lib"
cd ${CURR_DIR}
cc -I ../../core/iwasm/include -shared -o ${OUT_DIR}/signature.so \
src/signature.c
echo
echo "##################### build wasm apps"
cd ${WASM_APPS}
for i in `ls *.c`
do
APP_SRC="$i"
OUT_FILE=${i%.*}.wasm
# use WAMR SDK to build out the .wasm binary
/opt/wasi-sdk/bin/clang \
-mexec-model=reactor \
-Os -z stack-size=4096 -Wl,--initial-memory=65536 \
-Wl,--allow-undefined \
-o ${OUT_DIR}/wasm-apps/${OUT_FILE} ${APP_SRC}
if [ -f ${OUT_DIR}/wasm-apps/${OUT_FILE} ]; then
echo "build ${OUT_FILE} success"
else
echo "build ${OUT_FILE} fail"
fi
done
echo "#################### build wasm apps done"
echo "#################### aot-compile"
WAMRC=${WAMR_DIR}/wamr-compiler/build/wamrc
${WAMRC} \
-o ${OUT_DIR}/wasm-apps/${OUT_FILE}.aot \
--size-level=0 \
${OUT_DIR}/wasm-apps/${OUT_FILE}
echo "#################### aot-compile w/ signature"
WAMRC=${WAMR_DIR}/wamr-compiler/build/wamrc
${WAMRC} \
-o ${OUT_DIR}/wasm-apps/${OUT_FILE}.aot.signature \
--size-level=0 \
--native-lib=${OUT_DIR}/signature.so \
${OUT_DIR}/wasm-apps/${OUT_FILE}
echo "#################### aot-compile (--bounds-checks=1)"
${WAMRC} \
-o ${OUT_DIR}/wasm-apps/${OUT_FILE}.aot.bounds-checks \
--size-level=0 \
--bounds-checks=1 \
${OUT_DIR}/wasm-apps/${OUT_FILE}
echo "#################### aot-compile (--bounds-checks=1) w/ signature"
${WAMRC} \
-o ${OUT_DIR}/wasm-apps/${OUT_FILE}.aot.signature.bounds-checks \
--size-level=0 \
--native-lib=${OUT_DIR}/signature.so \
--bounds-checks=1 \
${OUT_DIR}/wasm-apps/${OUT_FILE}