Sfoglia il codice sorgente

Refine wamr-sdk build scripts (#801)

Avoid hardcoding the path of wasi-sdk in wamr_toolchain.cmake,
allow passing -w [wasi-sdk path] to build_sdk.sh,
allow passing OUT_DIR to app-sdk and runtime-sdk,
and optimize message information.
liang.he 4 anni fa
parent
commit
1a987ae59b

+ 4 - 3
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)

+ 12 - 7
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 "")

+ 15 - 8
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 $?

+ 3 - 1
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)