Skip to content

Commit d3de429

Browse files
build-system: Configure target specific LLVM instead of reusing it
If setting CMAKE_SYSTEM_NAME to WASI, some find_package fails because we reused LLVM package configured for host. So configure another LLVM package to avoid unnecessary package requirement
1 parent 1721782 commit d3de429

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed

cmake/caches/Runtime-WASI-wasm32.cmake

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# FIXME(katei): Platform/WASI is not recognized as a platform in LLVM, so it reports
2+
# "Unable to determine platform" while handling LLVM options.
3+
# Set WASI as a UNIX platform to spoof LLVM
4+
set(UNIX 1)
5+
16
set(SWIFT_PRIMARY_VARIANT_SDK WASI CACHE STRING "")
27
set(SWIFT_PRIMARY_VARIANT_ARCH wasm32 CACHE STRING "")
38
set(SWIFT_HOST_VARIANT_SDK NONE CACHE STRING "")

utils/webassembly/build-toolchain.sh

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ build_host_toolchain() {
7878

7979
build_target_toolchain() {
8080

81-
COMPILER_RT_BUILD_DIR="$TARGET_BUILD_ROOT/compiler-rt-wasi-wasm32"
81+
local COMPILER_RT_BUILD_DIR="$TARGET_BUILD_ROOT/compiler-rt-wasi-wasm32"
8282
cmake -B "$COMPILER_RT_BUILD_DIR" \
8383
-D CMAKE_TOOLCHAIN_FILE="$SOURCE_PATH/swift/utils/webassembly/compiler-rt-cache.cmake" \
8484
-D CMAKE_BUILD_TYPE=Release \
@@ -95,18 +95,25 @@ build_target_toolchain() {
9595

9696
ninja install -C "$COMPILER_RT_BUILD_DIR"
9797

98-
SWIFT_STDLIB_BUILD_DIR="$TARGET_BUILD_ROOT/swift-stdlib-wasi-wasm32"
99-
cmake -B "$TARGET_BUILD_ROOT/swift-stdlib-wasi-wasm32" \
98+
# Only configure LLVM to use CMake functionalities in LLVM
99+
local LLVM_TARGET_BUILD_DIR="$TARGET_BUILD_ROOT/llvm-wasi-wasm32"
100+
cmake -B "$LLVM_TARGET_BUILD_DIR" \
101+
-D CMAKE_BUILD_TYPE=Release \
102+
-D LLVM_ENABLE_ZLIB=NO \
103+
-D LLVM_ENABLE_LIBXML2=NO \
104+
-G Ninja \
105+
-S "$SOURCE_PATH/llvm-project/llvm"
106+
107+
local SWIFT_STDLIB_BUILD_DIR="$TARGET_BUILD_ROOT/swift-stdlib-wasi-wasm32"
108+
cmake -B "$SWIFT_STDLIB_BUILD_DIR" \
100109
-C "$SOURCE_PATH/swift/cmake/caches/Runtime-WASI-wasm32.cmake" \
110+
-D CMAKE_TOOLCHAIN_FILE="$SOURCE_PATH/swift/utils/webassembly/toolchain-wasi.cmake" \
101111
-D CMAKE_BUILD_TYPE=Release \
102-
-D CMAKE_C_COMPILER="$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/bin/clang" \
103-
-D CMAKE_CXX_COMPILER="$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/bin/clang++" \
104-
-D CMAKE_RANLIB="$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/bin/llvm-ranlib" \
105-
-D CMAKE_AR="$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/bin/llvm-ar" \
106112
-D CMAKE_C_COMPILER_LAUNCHER="$(which sccache)" \
107113
-D CMAKE_CXX_COMPILER_LAUNCHER="$(which sccache)" \
108114
-D CMAKE_INSTALL_PREFIX="$DIST_TOOLCHAIN_SDK/usr" \
109-
-D LLVM_DIR="$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/lib/cmake/llvm/" \
115+
-D LLVM_BIN="$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/bin" \
116+
-D LLVM_DIR="$LLVM_TARGET_BUILD_DIR/lib/cmake/llvm/" \
110117
-D SWIFT_NATIVE_SWIFT_TOOLS_PATH="$HOST_BUILD_DIR/swift-$HOST_SUFFIX/bin" \
111118
-D SWIFT_WASI_SYSROOT_PATH="$WASI_SYSROOT_PATH" \
112119
-D SWIFT_WASI_wasm32_ICU_UC_INCLUDE="$BUILD_SDK_PATH/icu/include" \

0 commit comments

Comments
 (0)