diff --git a/wamr-sdk/app/CMakeLists.txt b/wamr-sdk/app/CMakeLists.txt index 3424b7a3..2e115cf4 100644 --- a/wamr-sdk/app/CMakeLists.txt +++ b/wamr-sdk/app/CMakeLists.txt @@ -12,7 +12,7 @@ endif () if (NOT DEFINED CONFIG_PATH) set (CONFIG_PATH ${CMAKE_CURRENT_LIST_DIR}/../wamr_config_default.cmake) - message(STATUS, "CONFIG_PATH set to ${CONFIG_PATH} ") + message(STATUS "CONFIG_PATH set to ${CONFIG_PATH} ") endif () if (NOT EXISTS "${CONFIG_PATH}") @@ -21,8 +21,9 @@ endif () include(${CONFIG_PATH}) - -set (OUT_DIR "${CMAKE_CURRENT_LIST_DIR}/../out/${WAMR_BUILD_SDK_PROFILE}") +if (NOT DEFINED OUT_DIR) + set (OUT_DIR "${CMAKE_CURRENT_LIST_DIR}/../out/${WAMR_BUILD_SDK_PROFILE}") +endif () set (APP_SDK_DIR "${OUT_DIR}/app-sdk") if (DEFINED EXTRA_SDK_INCLUDE_PATH) diff --git a/wamr-sdk/app/wamr_toolchain.cmake b/wamr-sdk/app/wamr_toolchain.cmake index 17fc35d2..58fc8834 100644 --- a/wamr-sdk/app/wamr_toolchain.cmake +++ b/wamr-sdk/app/wamr_toolchain.cmake @@ -1,13 +1,18 @@ # Copyright (C) 2019 Intel Corporation. All rights reserved. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -SET(CMAKE_SYSTEM_NAME Linux) -SET(CMAKE_SYSTEM_PROCESSOR wasm32) -SET (CMAKE_SYSROOT ${CMAKE_CURRENT_LIST_DIR}/libc-builtin-sysroot) +SET (CMAKE_SYSTEM_NAME Linux) +SET (CMAKE_SYSTEM_PROCESSOR wasm32) +SET (CMAKE_SYSROOT ${CMAKE_CURRENT_LIST_DIR}/libc-builtin-sysroot) + + +IF (NOT (DEFINED WASI_SDK_DIR OR DEFINED CACHE{WASI_SDK_DIR})) + MESSAGE (FATAL_ERROR "WASI_SDK_DIR is not defined") +ELSE () + MESSAGE (STATUS "WASI_SDK_DIR=${WASI_SDK_DIR}") + LIST (APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES "WASI_SDK_DIR") +ENDIF () -if (NOT DEFINED WASI_SDK_DIR) - SET (WASI_SDK_DIR "/opt/wasi-sdk") -endif () SET (CMAKE_C_FLAGS "-nostdlib -z stack-size=4096" CACHE INTERNAL "") SET (CMAKE_C_COMPILER_TARGET "wasm32") @@ -26,4 +31,4 @@ SET (CMAKE_NM "${WASI_SDK_DIR}/bin/llvm-nm" CACHE INTER SET (CMAKE_OBJDUMP "${WASI_SDK_DIR}/bin/llvm-dwarfdump" CACHE INTERNAL "") SET (CMAKE_RANLIB "${WASI_SDK_DIR}/bin/llvm-ranlib" CACHE INTERNAL "") SET (CMAKE_EXE_LINKER_FLAGS - "${CMAKE_EXE_LINKER_FLAGS},--allow-undefined-file=${CMAKE_SYSROOT}/share/defined-symbols.txt" CACHE INTERNAL "") + "${CMAKE_EXE_LINKER_FLAGS},--allow-undefined-file=${CMAKE_SYSROOT}/share/defined-symbols.txt" CACHE INTERNAL "") \ No newline at end of file diff --git a/wamr-sdk/build_sdk.sh b/wamr-sdk/build_sdk.sh index e592c2cd..53856e9c 100755 --- a/wamr-sdk/build_sdk.sh +++ b/wamr-sdk/build_sdk.sh @@ -8,6 +8,7 @@ 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="" @@ -27,11 +28,12 @@ usage () 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:icd" opt +while getopts "e:x:n:t:icdw:" opt do case $opt in n) @@ -55,6 +57,11 @@ do i) MENUCONFIG="TRUE" ;; + w) + if [[ -n "${OPTARG}" ]]; then + wasi_sdk_home=$(realpath "${OPTARG}") + fi + ;; ?) echo "Unknown arg: $arg" usage @@ -64,13 +71,11 @@ do done -if [ ! -f "/opt/wasi-sdk/bin/clang" ]; then - echo "Intall wasi-sdk.." && - rm -fr wasi-sdk-* /opt/wasi-sdk && - wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-12/wasi-sdk-12.0-linux.tar.gz && - tar -zxf wasi-sdk-12.0-linux.tar.gz && - mv wasi-sdk-12.0 /opt/wasi-sdk && - rm -f wasi-sdk-12.0-linux.tar.gz +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 @@ -191,12 +196,14 @@ if [ "${LIBC_SUPPORT}" = "WASI" ]; then 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 $? diff --git a/wamr-sdk/runtime/CMakeLists.txt b/wamr-sdk/runtime/CMakeLists.txt index c3bd8637..e8e5c363 100644 --- a/wamr-sdk/runtime/CMakeLists.txt +++ b/wamr-sdk/runtime/CMakeLists.txt @@ -24,7 +24,9 @@ endif () include(${CONFIG_PATH}) -set (OUT_DIR "${CMAKE_CURRENT_LIST_DIR}/../out/${WAMR_BUILD_SDK_PROFILE}") +if (NOT DEFINED OUT_DIR) + set (OUT_DIR "${CMAKE_CURRENT_LIST_DIR}/../out/${WAMR_BUILD_SDK_PROFILE}") +endif () set (RUNTIME_SDK_DIR "${OUT_DIR}/runtime-sdk") include(${CMAKE_CURRENT_LIST_DIR}/../../build-scripts/runtime_lib.cmake)