mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2024-11-26 15:32:05 +00:00
3e5361f76d
Note: wamrc chooses different methods to call native functions with and without signatures.
104 lines
2.5 KiB
Bash
Executable File
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}
|