diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 0e2df4b34..d8f75f0b9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -259,6 +259,6 @@ jobs: cmake -G Ninja -B build -S . \ -DWASI_SDK_INCLUDE_TESTS=ON \ -DWASI_SDK_TEST_HOST_TOOLCHAIN=ON \ - -DCMAKE_TOOLCHAIN_FILE=$(ls ./wasi-sdk-*/share/cmake/wasi-sdk.cmake) + -DCMAKE_TOOLCHAIN_FILE=$(ls ./wasi-sdk-*/share/cmake/wasi-sdk-p1.cmake) - run: ninja -C build build-tests - run: ctest --output-on-failure --parallel 10 --test-dir build/tests diff --git a/CMakeLists.txt b/CMakeLists.txt index a0d3fca77..78c95e5b2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") project(wasi-sdk) include(ExternalProject) -set(WASI_SDK_TARGETS "wasm32-wasi;wasm32-wasip1;wasm32-wasip2;wasm32-wasip1-threads;wasm32-wasi-threads" +set(WASI_SDK_TARGETS "wasm32-wasip1;wasm32-wasip2;wasm32-wasip1-threads" CACHE STRING "List of WASI targets to build") option(WASI_SDK_BUILD_TOOLCHAIN "Build a toolchain instead of the sysroot" OFF) diff --git a/README.md b/README.md index 89dadb917..3606927f2 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ is to build the sysroot: ```shell script cmake -G Ninja -B build/sysroot -S . \ -DCMAKE_INSTALL_PREFIX=build/install \ - -DCMAKE_TOOLCHAIN_FILE=build/install/share/cmake/wasi-sdk.cmake \ + -DCMAKE_TOOLCHAIN_FILE=build/install/share/cmake/wasi-sdk-p1.cmake \ -DCMAKE_C_COMPILER_WORKS=ON \ -DCMAKE_CXX_COMPILER_WORKS=ON cmake --build build/sysroot --target install @@ -159,16 +159,16 @@ includes/libraries/etc. The `--sysroot=...` option is not necessary if ### Integrating with a CMake build system -Use a toolchain file to setup the *wasi-sdk* platform. +Use a toolchain file to setup the *wasi-sdk-p1* platform. ``` -$ cmake -DCMAKE_TOOLCHAIN_FILE=${WASI_SDK_PATH}/share/cmake/wasi-sdk.cmake ... +$ cmake -DCMAKE_TOOLCHAIN_FILE=${WASI_SDK_PATH}/share/cmake/wasi-sdk-p1.cmake ... ``` -or the *wasi-sdk-thread* platform +or the *wasi-sdk-p1-pthread* platform ``` -$ cmake -DCMAKE_TOOLCHAIN_FILE=${WASI_SDK_PATH}/share/cmake/wasi-sdk-pthread.cmake ... +$ cmake -DCMAKE_TOOLCHAIN_FILE=${WASI_SDK_PATH}/share/cmake/wasi-sdk-p1-pthread.cmake ... ``` ## Notes for Autoconf diff --git a/ci/build.sh b/ci/build.sh index 7525aa4d4..b0925ed1e 100755 --- a/ci/build.sh +++ b/ci/build.sh @@ -33,7 +33,7 @@ fi # Use the just-built toolchain and its `CMAKE_TOOLCHAIN_FILE` to build a # sysroot. cmake -G Ninja -B $build_dir/sysroot -S . \ - "-DCMAKE_TOOLCHAIN_FILE=$build_dir/install/share/cmake/wasi-sdk.cmake" \ + "-DCMAKE_TOOLCHAIN_FILE=$build_dir/install/share/cmake/wasi-sdk-p1.cmake" \ -DCMAKE_C_COMPILER_WORKS=ON \ -DCMAKE_CXX_COMPILER_WORKS=ON \ -DWASI_SDK_INCLUDE_TESTS=ON \ diff --git a/cmake/wasi-sdk-sysroot.cmake b/cmake/wasi-sdk-sysroot.cmake index 25d583736..a24c00d9c 100644 --- a/cmake/wasi-sdk-sysroot.cmake +++ b/cmake/wasi-sdk-sysroot.cmake @@ -98,7 +98,7 @@ function(define_compiler_rt target) add_dependencies(compiler-rt-build compiler-rt-build-${target}) endfunction() -define_compiler_rt(wasm32-wasi) +define_compiler_rt(wasm32-wasip1) define_compiler_rt(wasm32-wasip1-threads) # In addition to the default installation of `compiler-rt` itself also copy @@ -115,15 +115,11 @@ add_custom_target(compiler-rt-post-build COMMAND ${CMAKE_COMMAND} -E copy_directory ${clang_resource_dir}/include ${wasi_resource_dir}/include - # Copy the `lib/wasm32-unknown-wasi` folder to `lib/wasm32-unknown-wasi{p1,p2}` to ensure that those - # OS-strings also work for looking up the compiler-rt.a file. + # Copy the `lib/wasm32-unknown-wasip1` folder to `lib/wasm32-unknown-wasip2` + # to ensure that those OS-strings also work for looking up the compiler-rt.a + # file. COMMAND ${CMAKE_COMMAND} -E copy_directory - ${wasi_resource_dir}/lib/wasm32-unknown-wasi ${wasi_resource_dir}/lib/wasm32-unknown-wasip1 - COMMAND ${CMAKE_COMMAND} -E copy_directory - ${wasi_resource_dir}/lib/wasm32-unknown-wasi ${wasi_resource_dir}/lib/wasm32-unknown-wasip2 - # Copy the `lib/wasm32-unknown-wasip1-threads` folder to `lib/wasm32-unknown-wasi-threads` - COMMAND ${CMAKE_COMMAND} -E copy_directory - ${wasi_resource_dir}/lib/wasm32-unknown-wasip1-threads ${wasi_resource_dir}/lib/wasm32-unknown-wasi-threads + ${wasi_resource_dir}/lib/wasm32-unknown-wasip1 ${wasi_resource_dir}/lib/wasm32-unknown-wasip2 COMMENT "finalizing compiler-rt installation" ) diff --git a/cmake/wasi-sdk-toolchain.cmake b/cmake/wasi-sdk-toolchain.cmake index 56949feab..240c43b31 100644 --- a/cmake/wasi-sdk-toolchain.cmake +++ b/cmake/wasi-sdk-toolchain.cmake @@ -87,7 +87,7 @@ ExternalProject_Add(llvm-build -DLLVM_INCLUDE_BENCHMARKS=OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_TARGETS_TO_BUILD=WebAssembly - -DLLVM_DEFAULT_TARGET_TRIPLE=wasm32-wasi + -DLLVM_DEFAULT_TARGET_TRIPLE=wasm32-wasip1 -DLLVM_INSTALL_BINUTILS_SYMLINKS=TRUE -DLLVM_ENABLE_LIBXML2=OFF # Pass `-s` to strip symbols by default and shrink the size of the @@ -152,8 +152,7 @@ endfunction() copy_misc_file(src/config/config.sub misc) copy_misc_file(src/config/config.guess misc) -copy_misc_file(wasi-sdk.cmake cmake) -copy_misc_file(wasi-sdk-pthread.cmake cmake) +copy_misc_file(wasi-sdk-p1-pthread.cmake cmake) copy_misc_file(wasi-sdk-p1.cmake cmake) copy_misc_file(wasi-sdk-p2.cmake cmake) copy_misc_file(cmake/Platform/WASI.cmake cmake/Platform) diff --git a/wasi-sdk-pthread.cmake b/wasi-sdk-p1-pthread.cmake similarity index 97% rename from wasi-sdk-pthread.cmake rename to wasi-sdk-p1-pthread.cmake index c2cd83dbd..230d4e250 100644 --- a/wasi-sdk-pthread.cmake +++ b/wasi-sdk-p1-pthread.cmake @@ -3,7 +3,7 @@ set(CMAKE_SYSTEM_NAME WASI) set(CMAKE_SYSTEM_VERSION 1) set(CMAKE_SYSTEM_PROCESSOR wasm32) -set(triple wasm32-wasi-threads) +set(triple wasm32-wasip1-threads) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthread") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread") # wasi-threads requires --import-memory. diff --git a/wasi-sdk.cmake b/wasi-sdk.cmake deleted file mode 100644 index 2131cfcd7..000000000 --- a/wasi-sdk.cmake +++ /dev/null @@ -1,37 +0,0 @@ -# Cmake toolchain description file for the Makefile - -# Until Platform/WASI.cmake is upstream we need to inject the path to it -# into CMAKE_MODULE_PATH. -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}") - -set(CMAKE_SYSTEM_NAME WASI) -set(CMAKE_SYSTEM_VERSION 1) -set(CMAKE_SYSTEM_PROCESSOR wasm32) -set(triple wasm32-wasi) - -if(WIN32) - set(WASI_HOST_EXE_SUFFIX ".exe") -else() - set(WASI_HOST_EXE_SUFFIX "") -endif() - -# When building from source, WASI_SDK_PREFIX represents the generated directory -if(NOT WASI_SDK_PREFIX) - set(WASI_SDK_PREFIX ${CMAKE_CURRENT_LIST_DIR}/../../) -endif() - -set(CMAKE_C_COMPILER ${WASI_SDK_PREFIX}/bin/clang${WASI_HOST_EXE_SUFFIX}) -set(CMAKE_CXX_COMPILER ${WASI_SDK_PREFIX}/bin/clang++${WASI_HOST_EXE_SUFFIX}) -set(CMAKE_ASM_COMPILER ${WASI_SDK_PREFIX}/bin/clang${WASI_HOST_EXE_SUFFIX}) -set(CMAKE_AR ${WASI_SDK_PREFIX}/bin/llvm-ar${WASI_HOST_EXE_SUFFIX}) -set(CMAKE_RANLIB ${WASI_SDK_PREFIX}/bin/llvm-ranlib${WASI_HOST_EXE_SUFFIX}) -set(CMAKE_C_COMPILER_TARGET ${triple}) -set(CMAKE_CXX_COMPILER_TARGET ${triple}) -set(CMAKE_ASM_COMPILER_TARGET ${triple}) - -# Don't look in the sysroot for executables to run during the build -set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -# Only look in the sysroot (not in the host paths) for the rest -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)