diff options
Diffstat (limited to 'fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/wamr-sdk/build_sdk.sh')
-rwxr-xr-x | fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/wamr-sdk/build_sdk.sh | 254 |
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 00000000..954584f6 --- /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 |