summaryrefslogtreecommitdiffstats
path: root/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/wamr-sdk/build_sdk.sh
diff options
context:
space:
mode:
Diffstat (limited to 'fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/wamr-sdk/build_sdk.sh')
-rwxr-xr-xfluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/wamr-sdk/build_sdk.sh254
1 files changed, 254 insertions, 0 deletions
diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/wamr-sdk/build_sdk.sh b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/wamr-sdk/build_sdk.sh
new file mode 100755
index 000000000..954584f69
--- /dev/null
+++ b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/wamr-sdk/build_sdk.sh
@@ -0,0 +1,254 @@
+#!/bin/bash
+
+# Copyright (C) 2019 Intel Corporation. All rights reserved.
+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+sdk_root=$(cd "$(dirname "$0")/" && pwd)
+wamr_root_dir=${sdk_root}/..
+out_dir=${sdk_root}/out
+profile_path=${out_dir}/profile.cmake
+wamr_config_cmake_file=""
+wasi_sdk_home="/opt/wasi-sdk"
+# libc support, default builtin-libc
+LIBC_SUPPORT="BUILTIN"
+CM_DEXTRA_SDK_INCLUDE_PATH=""
+CM_BUILD_TYPE="-DCMAKE_BUILD_TYPE=Release"
+CM_TOOLCHAIN=""
+
+# menuconfig will pass options to this script
+MENUCONFIG=""
+
+usage ()
+{
+ echo "build.sh [options]"
+ echo " -n [profile name]"
+ echo " -x [config file path name]"
+ echo " -t [cmake toolchain file]"
+ echo " -e [extra include path], files under this path will be copied into SDK package"
+ echo " -c, clean"
+ echo " -d, debug mode"
+ echo " -i, enter menu config settings"
+ echo " -w [wasi-sdk installation path] it will be '/opt/wasi-sdk' if not set"
+ exit 1
+}
+
+
+while getopts "e:x:n:t:icdw:" opt
+do
+ case $opt in
+ n)
+ PROFILE=$OPTARG
+ ;;
+ t)
+ CM_TOOLCHAIN="-DCMAKE_TOOLCHAIN_FILE=$OPTARG"
+ ;;
+ x)
+ wamr_config_cmake_file=$OPTARG
+ ;;
+ e)
+ CM_DEXTRA_SDK_INCLUDE_PATH="-DEXTRA_SDK_INCLUDE_PATH=${OPTARG}"
+ ;;
+ c)
+ CLEAN="TRUE"
+ ;;
+ d)
+ CM_BUILD_TYPE="-DCMAKE_BUILD_TYPE=Debug"
+ ;;
+ i)
+ MENUCONFIG="TRUE"
+ ;;
+ w)
+ if [[ -n "${OPTARG}" ]]; then
+ wasi_sdk_home=$(realpath "${OPTARG}")
+ fi
+ ;;
+ ?)
+ echo "Unknown arg: $arg"
+ usage
+ exit 1
+ ;;
+ esac
+done
+
+
+if [ ! -f "${wasi_sdk_home}/bin/clang" ]; then
+ echo "Can not find clang under \"${wasi_sdk_home}/bin\"."
+ exit 1
+else
+ echo "Found WASI_SDK HOME ${wasi_sdk_home}"
+fi
+
+
+echo "download dependent external repositories.."
+${wamr_root_dir}/core/deps/download.sh
+[ $? -eq 0 ] || exit $?
+
+
+
+if [ -z "$PROFILE" ]; then
+ PROFILE="default"
+ echo "PROFILE argument not set, using DEFAULT"
+ if [[ -z "$wamr_config_cmake_file" ]]; then
+ wamr_config_cmake_file=${sdk_root}/wamr_config_default.cmake
+ echo "use default config file: [$wamr_config_cmake_file]"
+ fi
+fi
+
+
+if [ ! -d "${out_dir}" ]; then
+ mkdir -p ${out_dir}
+fi
+
+curr_profile_dir=${out_dir}/${PROFILE}
+wamr_app_out_dir=${curr_profile_dir}/app-sdk/wamr-app-framework
+sysroot_dir=${curr_profile_dir}/app-sdk/libc-builtin-sysroot
+
+
+echo "CM_DEXTRA_SDK_INCLUDE_PATH=${CM_DEXTRA_SDK_INCLUDE_PATH}"
+
+
+if [[ "$CLEAN" = "TRUE" ]]; then
+ rm -rf ${curr_profile_dir}
+fi
+
+
+
+# cmake config file for wamr runtime:
+# 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
+#
+if [[ -n "$wamr_config_cmake_file" ]]; then
+ if [[ ! -f $wamr_config_cmake_file ]]; then
+ echo "user given file not exist: ${wamr_config_cmake_file}"
+ exit 1
+ fi
+
+ echo "User config file: [${wamr_config_cmake_file}]"
+
+else
+ wamr_config_cmake_file=${out_dir}/wamr_config_${PROFILE}.cmake
+ # always rebuilt the sdk if user is not giving the config file
+ if [ -d ${curr_profile_dir} ]; then
+ rm -rf ${curr_profile_dir}
+ fi
+
+ if [[ "$MENUCONFIG" = "TRUE" ]] || [[ ! -f $wamr_config_cmake_file ]]; then
+ echo "MENUCONFIG: [${wamr_config_cmake_file}]"
+ ./menuconfig.sh -x ${wamr_config_cmake_file}
+ [ $? -eq 0 ] || exit $?
+ else
+ echo "use existing config file: [$wamr_config_cmake_file]"
+ fi
+fi
+
+
+mkdir -p ${curr_profile_dir}
+mkdir -p ${curr_profile_dir}/app-sdk
+mkdir -p ${curr_profile_dir}/runtime-sdk
+
+
+if [ "${BUILD_LLVM}" = "TRUE" ]; then
+ if [ ! -d "${wamr_root_dir}/core/deps/llvm" ]; then
+ echo -e "\n"
+ echo "###### build llvm (this will take a long time) #######"
+ echo ""
+ cd ${wamr_root_dir}/wamr-compiler
+ ./build_llvm.sh
+ fi
+fi
+
+echo -e "\n\n"
+echo "############## Start to build wasm app sdk ###############"
+
+# If wgl module is selected, check if the extra SDK include dir is passed by the args, prompt user to input if not.
+app_all_selected=`cat ${wamr_config_cmake_file} | grep WAMR_APP_BUILD_ALL`
+app_wgl_selected=`cat ${wamr_config_cmake_file} | grep WAMR_APP_BUILD_WGL`
+
+if [[ -n "${app_wgl_selected}" ]] || [[ -n "${app_all_selected}" ]]; then
+ if [ -z "${CM_DEXTRA_SDK_INCLUDE_PATH}" ]; then
+ echo -e "\033[31mWGL module require lvgl config files, please input the path to the lvgl SDK include path:\033[0m"
+ read -a extra_file_path
+
+ if [[ -z "${extra_file_path}" ]] || [[ ! -d "${extra_file_path}" ]]; then
+ echo -e "\033[31mThe extra SDK path is empty\033[0m"
+ else
+ CM_DEXTRA_SDK_INCLUDE_PATH="-DEXTRA_SDK_INCLUDE_PATH=${extra_file_path}"
+ fi
+ fi
+
+ cd ${wamr_root_dir}/core/app-framework/wgl/app
+ ./prepare_headers.sh
+fi
+
+cd ${sdk_root}/app
+rm -fr build && mkdir build
+cd build
+
+out=`grep WAMR_BUILD_LIBC_WASI ${wamr_config_cmake_file} |grep 1`
+if [ -n "$out" ]; then
+ LIBC_SUPPORT="WASI"
+fi
+if [ "${LIBC_SUPPORT}" = "WASI" ]; then
+ echo "using wasi toolchain"
+ cmake .. $CM_DEXTRA_SDK_INCLUDE_PATH \
+ -DWAMR_BUILD_SDK_PROFILE=${PROFILE} \
+ -DCONFIG_PATH=${wamr_config_cmake_file} \
+ -DWASI_SDK_DIR="${wasi_sdk_home}" \
+ -DCMAKE_TOOLCHAIN_FILE=../wasi_toolchain.cmake
+else
+ echo "using builtin libc toolchain"
+ cmake .. $CM_DEXTRA_SDK_INCLUDE_PATH \
+ -DWAMR_BUILD_SDK_PROFILE=${PROFILE} \
+ -DCONFIG_PATH=${wamr_config_cmake_file} \
+ -DWASI_SDK_DIR="${wasi_sdk_home}" \
+ -DCMAKE_TOOLCHAIN_FILE=../wamr_toolchain.cmake
+fi
+[ $? -eq 0 ] || exit $?
+
+make
+if (( $? == 0 )); then
+ echo -e "\033[32mSuccessfully built app-sdk under ${curr_profile_dir}/app-sdk\033[0m"
+else
+ echo -e "\033[31mFailed to build app-sdk for wasm application\033[0m"
+ exit 1
+fi
+
+cd ..
+rm -fr build
+echo -e "\n\n"
+
+
+
+echo "############## Start to build runtime sdk ###############"
+cd ${sdk_root}/runtime
+rm -fr build-runtime-sdk && mkdir build-runtime-sdk
+cd build-runtime-sdk
+cmake .. $CM_DEXTRA_SDK_INCLUDE_PATH \
+ -DWAMR_BUILD_SDK_PROFILE=${PROFILE} \
+ -DCONFIG_PATH=${wamr_config_cmake_file} \
+ $CM_TOOLCHAIN $CM_BUILD_TYPE
+[ $? -eq 0 ] || exit $?
+make
+
+if (( $? == 0 )); then
+ echo -e "\033[32mSuccessfully built runtime library under ${curr_profile_dir}/runtime-sdk/lib\033[0m"
+else
+ echo -e "\033[31mFailed to build runtime sdk\033[0m"
+ exit 1
+fi
+
+APP=`grep WAMR_BUILD_APP_FRAMEWORK ${wamr_config_cmake_file} |grep 1`
+if [ -n "$APP" ]; then
+ # Generate defined-symbol list for app-sdk
+ cd ${wamr_app_out_dir}/share
+ cat ${curr_profile_dir}/runtime-sdk/include/*.inl | egrep "^ *EXPORT_WASM_API *[(] *[a-zA-Z_][a-zA-Z0-9_]* *?[)]" | cut -d '(' -f2 | cut -d ')' -f1 > defined-symbols.txt
+fi
+
+
+cd ..
+rm -fr build-runtime-sdk
+
+exit 0