mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-05-14 13:41:31 +00:00
sdk build
This commit is contained in:
parent
a4ac16a1c8
commit
a478166884
|
@ -1,7 +1,7 @@
|
||||||
mainmenu "WebAssembly Micro Runtime Configuration"
|
mainmenu "WebAssembly Micro Runtime Configuration"
|
||||||
|
|
||||||
config WAMR_SDK_PROFILE
|
config WAMR_SDK_PROFILE
|
||||||
string "wamr sdk profile name"
|
string "wamr SDK profile name"
|
||||||
default "default"
|
default "default"
|
||||||
help
|
help
|
||||||
create a new SDK by giving a name or overwrite
|
create a new SDK by giving a name or overwrite
|
||||||
|
@ -64,20 +64,33 @@ choice
|
||||||
|
|
||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
config APP_FRAMEWORK_ENABLE
|
|
||||||
bool "enable app framework"
|
|
||||||
help
|
|
||||||
enable wamr app framework
|
|
||||||
|
|
||||||
menu "app modules"
|
|
||||||
depends on APP_FRAMEWORK_ENABLE
|
|
||||||
|
|
||||||
config APP_BUILD_ALL
|
choice
|
||||||
bool "enable all modules"
|
prompt "application framework"
|
||||||
|
config APP_FRAMEWORK_DISABLE
|
||||||
|
bool "Disable app framework"
|
||||||
|
help
|
||||||
|
Disable wamr app framework
|
||||||
|
|
||||||
source ".wamr_modules"
|
config APP_FRAMEWORK_DEFAULT
|
||||||
|
bool "Default components"
|
||||||
|
help
|
||||||
|
Default components
|
||||||
|
|
||||||
endmenu
|
config TRI_CHOICE_SYM_2
|
||||||
|
tristate "Tristate choice sym 2"
|
||||||
|
|
||||||
|
config APP_BUILD_CUSTOM
|
||||||
|
bool "customized module config"
|
||||||
|
|
||||||
|
menu "modules:"
|
||||||
|
depends on APP_BUILD_CUSTOM
|
||||||
|
|
||||||
|
source ".wamr_modules"
|
||||||
|
|
||||||
|
endmenu
|
||||||
|
endchoice
|
||||||
|
|
||||||
config EXTRA_INCLUDE_ENABLE
|
config EXTRA_INCLUDE_ENABLE
|
||||||
bool "enable extra include dir"
|
bool "enable extra include dir"
|
||||||
|
|
|
@ -20,9 +20,6 @@ usage ()
|
||||||
echo "build.sh [options]"
|
echo "build.sh [options]"
|
||||||
echo " -n [profile name]"
|
echo " -n [profile name]"
|
||||||
echo " -x [config file path name]"
|
echo " -x [config file path name]"
|
||||||
echo " -p [platform]"
|
|
||||||
echo " -t [target]"
|
|
||||||
echo " -m [mode]"
|
|
||||||
echo " -e [extra include path], files under this path will be copied into SDK package"
|
echo " -e [extra include path], files under this path will be copied into SDK package"
|
||||||
echo " -c, clean"
|
echo " -c, clean"
|
||||||
echo " -i, enter interactive config setting"
|
echo " -i, enter interactive config setting"
|
||||||
|
@ -30,7 +27,7 @@ usage ()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
while getopts "e:x:n:p:t:m:l:awgicg" opt
|
while getopts "e:x:n:t:m:l:awgicg" opt
|
||||||
do
|
do
|
||||||
case $opt in
|
case $opt in
|
||||||
n)
|
n)
|
||||||
|
@ -39,24 +36,6 @@ do
|
||||||
x)
|
x)
|
||||||
wamr_config_cmake_file=$OPTARG
|
wamr_config_cmake_file=$OPTARG
|
||||||
;;
|
;;
|
||||||
p)
|
|
||||||
PLATFORM=$OPTARG
|
|
||||||
;;
|
|
||||||
t)
|
|
||||||
TARGET=$OPTARG
|
|
||||||
;;
|
|
||||||
m)
|
|
||||||
OLD_IFS="$IFS"
|
|
||||||
IFS=","
|
|
||||||
MODES=($OPTARG)
|
|
||||||
IFS="$OLD_IFS"
|
|
||||||
;;
|
|
||||||
l)
|
|
||||||
OLD_IFS="$IFS"
|
|
||||||
IFS=","
|
|
||||||
APP_LIST=($OPTARG)
|
|
||||||
IFS="$OLD_IFS"
|
|
||||||
;;
|
|
||||||
e)
|
e)
|
||||||
CMAKE_DEXTRA_SDK_INCLUDE_PATH="-DEXTRA_SDK_INCLUDE_PATH=${OPTARG}"
|
CMAKE_DEXTRA_SDK_INCLUDE_PATH="-DEXTRA_SDK_INCLUDE_PATH=${OPTARG}"
|
||||||
;;
|
;;
|
||||||
|
@ -69,9 +48,6 @@ do
|
||||||
w)
|
w)
|
||||||
LIBC_SUPPORT="WASI"
|
LIBC_SUPPORT="WASI"
|
||||||
;;
|
;;
|
||||||
g)
|
|
||||||
FROM_GUI_MENU="TRUE"
|
|
||||||
;;
|
|
||||||
i)
|
i)
|
||||||
MENUCONFIG="TRUE"
|
MENUCONFIG="TRUE"
|
||||||
;;
|
;;
|
||||||
|
@ -107,7 +83,7 @@ fi
|
||||||
# 1. use the users provided the config cmake file path.
|
# 1. use the users provided the config cmake file path.
|
||||||
# 2. if user set MENU CONFIG, enter menu config to generate menu_config.cmake in the profile output folder
|
# 2. if user set MENU CONFIG, enter menu config to generate menu_config.cmake in the profile output folder
|
||||||
# 3. If the menu_config.cmake is already in the profile folder, use it
|
# 3. If the menu_config.cmake is already in the profile folder, use it
|
||||||
#4: use the default config cmake file
|
# 4. Use the default config cmake file
|
||||||
if [[ -n "$wamr_config_cmake_file" ]]; then
|
if [[ -n "$wamr_config_cmake_file" ]]; then
|
||||||
echo "User config file: [${wamr_config_cmake_file}]"
|
echo "User config file: [${wamr_config_cmake_file}]"
|
||||||
else
|
else
|
||||||
|
@ -138,240 +114,11 @@ if [ "${FROM_GUI_MENU}" != "TRUE" ]; then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
mkdir -p ${curr_profile_dir}
|
mkdir -p ${curr_profile_dir}
|
||||||
mkdir -p ${curr_profile_dir}/app-sdk
|
mkdir -p ${curr_profile_dir}/app-sdk
|
||||||
mkdir -p ${curr_profile_dir}/runtime-sdk
|
mkdir -p ${curr_profile_dir}/runtime-sdk
|
||||||
|
|
||||||
function set_build_target () {
|
|
||||||
target=$1
|
|
||||||
|
|
||||||
if [[ "${target}" = "X86_64" ]]; then
|
|
||||||
echo -e "set (WAMR_BUILD_TARGET \"X86_64\")" >> ${wamr_config_cmake_file}
|
|
||||||
elif [[ "${target}" = "X86_32" ]]; then
|
|
||||||
echo -e "set (WAMR_BUILD_TARGET \"X86_32\")" >> ${wamr_config_cmake_file}
|
|
||||||
else
|
|
||||||
echo "unknown build target."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function set_build_platform () {
|
|
||||||
platform=$1
|
|
||||||
|
|
||||||
if [[ "${platform}" = "linux" ]]; then
|
|
||||||
echo -e "set (WAMR_BUILD_PLATFORM \"linux\")" >> ${wamr_config_cmake_file}
|
|
||||||
# TODO: add other platforms
|
|
||||||
else
|
|
||||||
echo "${platform} platform currently not supported"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# input: array of selected exec modes [aot jit interp]
|
|
||||||
function set_exec_mode () {
|
|
||||||
modes=($1)
|
|
||||||
|
|
||||||
for mode in ${modes[@]}
|
|
||||||
do
|
|
||||||
if [[ "$mode" = "aot" ]]; then
|
|
||||||
echo "set (WAMR_BUILD_AOT 1)" >> ${wamr_config_cmake_file}
|
|
||||||
elif [[ "$mode" = "jit" ]]; then
|
|
||||||
echo "set (WAMR_BUILD_JIT 1)" >> ${wamr_config_cmake_file}
|
|
||||||
BUILD_LLVM="TRUE"
|
|
||||||
elif [[ "$mode" = "interp" ]]; then
|
|
||||||
echo "set (WAMR_BUILD_INTERP 1)" >> ${wamr_config_cmake_file}
|
|
||||||
else
|
|
||||||
echo "unknown execute mode."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
function set_libc_support () {
|
|
||||||
libc=$1
|
|
||||||
|
|
||||||
if [ "$libc" = "WASI" ]; then
|
|
||||||
echo "set (WAMR_BUILD_LIBC_WASI 1)" >> ${wamr_config_cmake_file}
|
|
||||||
else
|
|
||||||
echo "set (WAMR_BUILD_LIBC_BUILTIN 1)" >> ${wamr_config_cmake_file}
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
function set_app_framework () {
|
|
||||||
app_support=$1
|
|
||||||
|
|
||||||
if [ "$app_support" = "TRUE" ]; then
|
|
||||||
echo "set (WAMR_BUILD_APP_FRAMEWORK 1)" >> ${wamr_config_cmake_file}
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# input: array of selected app modules
|
|
||||||
function set_app_module () {
|
|
||||||
modules=($1)
|
|
||||||
|
|
||||||
for module in ${modules[*]}
|
|
||||||
do
|
|
||||||
if [ "${module}" = "all" ]; then
|
|
||||||
cmake_app_list="WAMR_APP_BUILD_ALL"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
|
|
||||||
cmake_app_list="${cmake_app_list} WAMR_APP_BUILD_${module^^}"
|
|
||||||
done
|
|
||||||
|
|
||||||
# APP module list
|
|
||||||
if [ -n "${cmake_app_list}" ]; then
|
|
||||||
echo "set (WAMR_BUILD_APP_LIST ${cmake_app_list# })" >> ${wamr_config_cmake_file}
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ ! -f "/opt/wasi-sdk/bin/clang" ]; then
|
|
||||||
echo "Can't find wasi-sdk under /opt/wasi-sdk"
|
|
||||||
echo "You can download wasi-sdk from here:"
|
|
||||||
echo ""
|
|
||||||
echo "https://github.com/CraneStation/wasi-sdk/releases/tag/wasi-sdk-7"
|
|
||||||
echo ""
|
|
||||||
echo "please install it to the default path for your convenience"
|
|
||||||
echo ""
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${FROM_GUI_MENU}" = "TRUE" ]; then
|
|
||||||
# called from gui based menuconfig,
|
|
||||||
# all settings are passed from command line options
|
|
||||||
|
|
||||||
if [[ -f $wamr_config_cmake_file ]]; then
|
|
||||||
rm $wamr_config_cmake_file
|
|
||||||
fi
|
|
||||||
|
|
||||||
set_build_target ${TARGET}
|
|
||||||
set_build_platform ${PLATFORM}
|
|
||||||
set_exec_mode "${MODES[*]}"
|
|
||||||
set_libc_support ${LIBC_SUPPORT}
|
|
||||||
set_app_module "${APP_LIST[*]}"
|
|
||||||
set_app_framework ${APP}
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
# No options passed, ask for user input
|
|
||||||
if [ "$MENUCONFIG" = "TRUE" ]; then
|
|
||||||
|
|
||||||
if [[ -f $wamr_config_cmake_file ]]; then
|
|
||||||
rm $wamr_config_cmake_file
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "-----------------------------------------------------------------"
|
|
||||||
echo "select a build target:"
|
|
||||||
echo "[1] X86_64 (default)"
|
|
||||||
echo "[2] X86_32"
|
|
||||||
read -a select_target
|
|
||||||
|
|
||||||
if [ "${select_target}" = "2" ]; then
|
|
||||||
TARGET="X86_32"
|
|
||||||
else
|
|
||||||
TARGET="X86_64"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "-----------------------------------------------------------------"
|
|
||||||
echo "select a build platform:"
|
|
||||||
echo "[1] linux (default)"
|
|
||||||
echo "More platforms to be add here ..."
|
|
||||||
|
|
||||||
read -a select_platform
|
|
||||||
|
|
||||||
if [ "${select_platform}" = "1" ]; then
|
|
||||||
PLATFORM="linux"
|
|
||||||
# TODO: add more platforms
|
|
||||||
else
|
|
||||||
PLATFORM="linux"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "-----------------------------------------------------------------"
|
|
||||||
echo "select one or more execution mode of the WAMR runtime"
|
|
||||||
|
|
||||||
enable_interp="y"
|
|
||||||
enable_jit="n"
|
|
||||||
enable_aot="n"
|
|
||||||
|
|
||||||
read -p "enable interpreter mode [y]/n: " -a enable_interp
|
|
||||||
read -p "enable jit mode y/[n]: " -a enable_jit
|
|
||||||
read -p "enable aot mode y/[n]: " -a enable_aot
|
|
||||||
|
|
||||||
# by default the interpreter mode is selected
|
|
||||||
if [[ ${enable_interp} != "n" ]] && [[ ${enable_interp} != "N" ]]; then
|
|
||||||
enable_interp="y"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ${enable_interp} != "y" ]] && [[ ${enable_aot} != "y" ]];
|
|
||||||
then
|
|
||||||
echo "WASM Interpreter and AOT must be enabled at least one"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ${enable_interp} = "y" ]]; then
|
|
||||||
MODES[${#MODES[@]}]=interp
|
|
||||||
fi
|
|
||||||
if [[ ${enable_jit} = "y" ]] || [[ ${enable_jit} = "Y" ]]; then
|
|
||||||
MODES[${#MODES[@]}]=jit
|
|
||||||
fi
|
|
||||||
if [[ ${enable_aot} = "y" ]] || [[ ${enable_aot} = "Y" ]]; then
|
|
||||||
MODES[${#MODES[@]}]=aot
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "-----------------------------------------------------------------"
|
|
||||||
echo "select a libc support:"
|
|
||||||
echo "[1] builtin libc (default)"
|
|
||||||
echo "[2] WebAssembly System Interface (WASI)"
|
|
||||||
read -a libc_select
|
|
||||||
|
|
||||||
if [ "$libc_select" = "1" ]; then
|
|
||||||
LIBC_SUPPORT="BUILTIN"
|
|
||||||
elif [ "$libc_select" = "2" ]; then
|
|
||||||
LIBC_SUPPORT="WASI"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "-----------------------------------------------------------------"
|
|
||||||
echo "enable app framework? [y]/n"
|
|
||||||
read -a enable_app
|
|
||||||
|
|
||||||
if [[ "$enable_app" != "n" ]] && [[ "$enable_app" != "N" ]]; then
|
|
||||||
APP="TRUE"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$APP" = "TRUE" ]]; then
|
|
||||||
echo ""
|
|
||||||
echo "-----------------------------------------------------------------"
|
|
||||||
echo "please input the name of the module you need, seperate by ',' "
|
|
||||||
echo "type \"all\" if you want to enable all of them"
|
|
||||||
echo "---------------"
|
|
||||||
for folder in `ls ${wamr_root_dir}/core/app-framework -F | grep "/$" | grep -v "base" | grep -v "app-native-shared" | grep -v "template"`
|
|
||||||
do
|
|
||||||
folder=${folder%*/}
|
|
||||||
echo "${folder}"
|
|
||||||
done
|
|
||||||
echo "---------------"
|
|
||||||
read -a app_select
|
|
||||||
|
|
||||||
app_select=${app_select},base
|
|
||||||
app_select=${app_select#,}
|
|
||||||
OLD_IFS="$IFS"
|
|
||||||
IFS=","
|
|
||||||
APP_LIST=($app_select)
|
|
||||||
IFS="$OLD_IFS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
set_build_target ${TARGET}
|
|
||||||
set_build_platform ${PLATFORM}
|
|
||||||
set_exec_mode "${MODES[*]}"
|
|
||||||
set_libc_support ${LIBC_SUPPORT}
|
|
||||||
set_app_module "${APP_LIST[*]}"
|
|
||||||
set_app_framework ${APP}
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "${BUILD_LLVM}" = "TRUE" ]; then
|
if [ "${BUILD_LLVM}" = "TRUE" ]; then
|
||||||
if [ ! -d "${wamr_root_dir}/core/deps/llvm" ]; then
|
if [ ! -d "${wamr_root_dir}/core/deps/llvm" ]; then
|
||||||
|
|
|
@ -28,6 +28,7 @@ do
|
||||||
done
|
done
|
||||||
|
|
||||||
menuconfig Kconfig
|
menuconfig Kconfig
|
||||||
|
[ $? -eq 0 ] || exit $?
|
||||||
|
|
||||||
if [ ! -e ".config" ]; then
|
if [ ! -e ".config" ]; then
|
||||||
exit 0
|
exit 0
|
||||||
|
@ -50,6 +51,8 @@ function args_add_array()
|
||||||
args="${args} -$1 ${2#,}"
|
args="${args} -$1 ${2#,}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
source .config
|
||||||
|
|
||||||
profile=`cat .config | grep "^CONFIG_WAMR_SDK_PROFILE"`
|
profile=`cat .config | grep "^CONFIG_WAMR_SDK_PROFILE"`
|
||||||
profile=${profile#CONFIG_WAMR_SDK_PROFILE=\"}
|
profile=${profile#CONFIG_WAMR_SDK_PROFILE=\"}
|
||||||
profile=${profile%*\"}
|
profile=${profile%*\"}
|
||||||
|
|
|
@ -7,3 +7,6 @@ set (WAMR_BUILD_LIBC_BUILTIN 1)
|
||||||
set (WAMR_BUILD_LIBC_WASI 0)
|
set (WAMR_BUILD_LIBC_WASI 0)
|
||||||
set (WAMR_BUILD_APP_FRAMEWORK 1)
|
set (WAMR_BUILD_APP_FRAMEWORK 1)
|
||||||
set (WAMR_BUILD_APP_LIST WAMR_APP_BUILD_BASE)
|
set (WAMR_BUILD_APP_LIST WAMR_APP_BUILD_BASE)
|
||||||
|
|
||||||
|
#
|
||||||
|
# set (EXTRA_SDK_INCLUDE_PATH "")
|
||||||
|
|
Loading…
Reference in New Issue
Block a user