From a4781668842811e129014c959f63efc0a7bed074 Mon Sep 17 00:00:00 2001 From: Wang Xin Date: Fri, 21 Feb 2020 16:54:20 +0800 Subject: [PATCH] sdk build --- wamr-sdk/Kconfig | 35 ++-- wamr-sdk/build_sdk.sh | 259 +---------------------------- wamr-sdk/menuconfig.sh | 3 + wamr-sdk/wamr_config_default.cmake | 3 + 4 files changed, 33 insertions(+), 267 deletions(-) diff --git a/wamr-sdk/Kconfig b/wamr-sdk/Kconfig index 0431abe2..c3958427 100644 --- a/wamr-sdk/Kconfig +++ b/wamr-sdk/Kconfig @@ -1,7 +1,7 @@ mainmenu "WebAssembly Micro Runtime Configuration" config WAMR_SDK_PROFILE - string "wamr sdk profile name" + string "wamr SDK profile name" default "default" help create a new SDK by giving a name or overwrite @@ -64,20 +64,33 @@ choice endchoice -config APP_FRAMEWORK_ENABLE - bool "enable app framework" - help - enable wamr app framework + -menu "app modules" - depends on APP_FRAMEWORK_ENABLE +choice + prompt "application framework" + config APP_FRAMEWORK_DISABLE + bool "Disable app framework" + help + Disable wamr app framework - config APP_BUILD_ALL - bool "enable all modules" + config APP_FRAMEWORK_DEFAULT + bool "Default components" + help + Default components + + config TRI_CHOICE_SYM_2 + tristate "Tristate choice sym 2" - source ".wamr_modules" + config APP_BUILD_CUSTOM + bool "customized module config" -endmenu + menu "modules:" + depends on APP_BUILD_CUSTOM + + source ".wamr_modules" + + endmenu +endchoice config EXTRA_INCLUDE_ENABLE bool "enable extra include dir" diff --git a/wamr-sdk/build_sdk.sh b/wamr-sdk/build_sdk.sh index f3e15352..99b8b9bc 100755 --- a/wamr-sdk/build_sdk.sh +++ b/wamr-sdk/build_sdk.sh @@ -20,9 +20,6 @@ usage () echo "build.sh [options]" echo " -n [profile 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 " -c, clean" 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 case $opt in n) @@ -39,24 +36,6 @@ do x) 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) CMAKE_DEXTRA_SDK_INCLUDE_PATH="-DEXTRA_SDK_INCLUDE_PATH=${OPTARG}" ;; @@ -69,9 +48,6 @@ do w) LIBC_SUPPORT="WASI" ;; - g) - FROM_GUI_MENU="TRUE" - ;; i) MENUCONFIG="TRUE" ;; @@ -107,7 +83,7 @@ fi # 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 # 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 echo "User config file: [${wamr_config_cmake_file}]" else @@ -138,240 +114,11 @@ if [ "${FROM_GUI_MENU}" != "TRUE" ]; then fi fi + mkdir -p ${curr_profile_dir} mkdir -p ${curr_profile_dir}/app-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 [ ! -d "${wamr_root_dir}/core/deps/llvm" ]; then diff --git a/wamr-sdk/menuconfig.sh b/wamr-sdk/menuconfig.sh index 320a3ecd..87672de5 100755 --- a/wamr-sdk/menuconfig.sh +++ b/wamr-sdk/menuconfig.sh @@ -28,6 +28,7 @@ do done menuconfig Kconfig +[ $? -eq 0 ] || exit $? if [ ! -e ".config" ]; then exit 0 @@ -50,6 +51,8 @@ function args_add_array() args="${args} -$1 ${2#,}" } +source .config + profile=`cat .config | grep "^CONFIG_WAMR_SDK_PROFILE"` profile=${profile#CONFIG_WAMR_SDK_PROFILE=\"} profile=${profile%*\"} diff --git a/wamr-sdk/wamr_config_default.cmake b/wamr-sdk/wamr_config_default.cmake index ab0c014d..98cc6e9c 100644 --- a/wamr-sdk/wamr_config_default.cmake +++ b/wamr-sdk/wamr_config_default.cmake @@ -7,3 +7,6 @@ set (WAMR_BUILD_LIBC_BUILTIN 1) set (WAMR_BUILD_LIBC_WASI 0) set (WAMR_BUILD_APP_FRAMEWORK 1) set (WAMR_BUILD_APP_LIST WAMR_APP_BUILD_BASE) + +# +# set (EXTRA_SDK_INCLUDE_PATH "")