Skip to content

Commit d840e14

Browse files
[WASM] Build stdlib without build-script
1 parent 37a7f98 commit d840e14

File tree

5 files changed

+39
-54
lines changed

5 files changed

+39
-54
lines changed

cmake/caches/Runtime-WASI-wasm32.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@ set(SWIFT_PRIMARY_VARIANT_ARCH wasm32 CACHE STRING "")
44
set(SWIFT_SDKS WASI CACHE STRING "")
55

66
set(SWIFT_INCLUDE_TOOLS NO CACHE BOOL "")
7-
set(SWIFT_INCLUDE_TESTS NO CACHE BOOL "")
7+
set(SWIFT_INCLUDE_TESTS TRUE CACHE BOOL "")
88
set(SWIFT_INCLUDE_DOCS NO CACHE BOOL "")
99

1010
set(SWIFT_BUILD_SYNTAXPARSERLIB NO CACHE BOOL "")
1111
set(SWIFT_BUILD_SOURCEKIT NO CACHE BOOL "")
1212
set(SWIFT_ENABLE_SOURCEKIT_TESTS NO CACHE BOOL "")
1313

14-
set(SWIFTWASM_DISABLE_REFLECTION_TEST NO CACHE BOOL "")
14+
set(SWIFTWASM_DISABLE_REFLECTION_TEST YES CACHE BOOL "")
1515

1616
# stdlib configurations
1717
set(SWIFT_BUILD_STATIC_STDLIB YES CACHE BOOL "")

utils/build-script-impl

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1702,15 +1702,6 @@ for host in "${ALL_HOSTS[@]}"; do
17021702
fi
17031703
# fi
17041704

1705-
# wasm: SWIFT_WASI_SDK_PATH is used to determine wasi-sysroot
1706-
# to build compiler-rt for wasm32-wasi
1707-
if [[ ! "${SKIP_BUILD_WASM}" ]]; then
1708-
cmake_options=(
1709-
"${cmake_options[@]}"
1710-
-DCOMPILER_RT_SWIFT_WASI_SDK_PATH:STRING="${WASI_SDK}"
1711-
)
1712-
fi
1713-
17141705
cmake_options+=(
17151706
-DLLVM_ENABLE_PROJECTS="$(join ";" ${llvm_enable_projects[@]})"
17161707
)

utils/webassembly/build-foundation.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ set -ex
33
DESTINATION_TOOLCHAIN=$1
44
SOURCE_PATH="$(cd "$(dirname $0)/../../.." && pwd)"
55

6-
FOUNDATION_BUILD="$SOURCE_PATH/target-build/Ninja-Release/foundation-wasi-wasm32"
6+
FOUNDATION_BUILD="$SOURCE_PATH/target-build/foundation-wasi-wasm32"
77

88
mkdir -p $FOUNDATION_BUILD
99
cd $FOUNDATION_BUILD

utils/webassembly/build-toolchain.sh

Lines changed: 35 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -45,18 +45,13 @@ DISPLAY_NAME_SHORT="Swift for WebAssembly Development Snapshot"
4545
DISPLAY_NAME="${DISPLAY_NAME_SHORT} ${YEAR}-${MONTH}-${DAY}"
4646

4747
DIST_TOOLCHAIN_DESTDIR=$SOURCE_PATH/dist-toolchain-sdk
48-
HOST_TOOLCHAIN_DESTDIR=$SOURCE_PATH/host-toolchain-sdk
49-
TARGET_TOOLCHAIN_DESTDIR=$SOURCE_PATH/target-toolchain-sdk
5048

5149
DIST_TOOLCHAIN_SDK=$DIST_TOOLCHAIN_DESTDIR/$TOOLCHAIN_NAME
52-
HOST_TOOLCHAIN_SDK=$HOST_TOOLCHAIN_DESTDIR/$TOOLCHAIN_NAME
53-
TARGET_TOOLCHAIN_SDK=$TARGET_TOOLCHAIN_DESTDIR/$TOOLCHAIN_NAME
5450

5551

5652
HOST_BUILD_ROOT=$SOURCE_PATH/host-build
5753
TARGET_BUILD_ROOT=$SOURCE_PATH/target-build
5854
HOST_BUILD_DIR=$HOST_BUILD_ROOT/Ninja-Release
59-
TARGET_BUILD_DIR=$TARGET_BUILD_ROOT/Ninja-Release
6055

6156
build_host_toolchain() {
6257
# Build the host toolchain and SDK first.
@@ -65,55 +60,54 @@ build_host_toolchain() {
6560
--preset-file="$UTILS_PATH/build-presets.ini" \
6661
--preset=$HOST_PRESET \
6762
--build-dir="$HOST_BUILD_DIR" \
68-
INSTALL_DESTDIR="$HOST_TOOLCHAIN_DESTDIR" \
63+
INSTALL_DESTDIR="$DIST_TOOLCHAIN_DESTDIR" \
6964
TOOLCHAIN_NAME="$TOOLCHAIN_NAME" \
7065
C_CXX_LAUNCHER="$(which sccache)"
7166
}
7267

7368
build_target_toolchain() {
74-
mkdir -p "$HOST_BUILD_DIR/"
75-
# Copy the host build dir to reuse it.
76-
if [[ ! -e "$HOST_BUILD_DIR/llvm-$HOST_SUFFIX" ]]; then
77-
cp -r "$HOST_BUILD_DIR/llvm-$HOST_SUFFIX" "$TARGET_BUILD_DIR/llvm-$HOST_SUFFIX"
78-
# Clean up compiler-rt dir to cross compile it for host and wasm32
79-
(cd "$TARGET_BUILD_DIR/llvm-$HOST_SUFFIX" && ninja compiler-rt-clear)
80-
fi
81-
82-
# build the cross-compilled toolchain
83-
env SWIFT_BUILD_ROOT="$TARGET_BUILD_ROOT" \
84-
"$SOURCE_PATH/swift/utils/build-script" \
85-
--preset-file="$UTILS_PATH/build-presets.ini" \
86-
--preset=$TARGET_PRESET \
87-
--build-dir="$TARGET_BUILD_DIR" \
88-
INSTALL_DESTDIR="$TARGET_TOOLCHAIN_DESTDIR" \
89-
SOURCE_PATH="$SOURCE_PATH" \
90-
BUNDLE_IDENTIFIER="${BUNDLE_IDENTIFIER}" \
91-
DISPLAY_NAME="${DISPLAY_NAME}" \
92-
DISPLAY_NAME_SHORT="${DISPLAY_NAME_SHORT}" \
93-
TOOLCHAIN_NAME="${TOOLCHAIN_NAME}" \
94-
TOOLCHAIN_VERSION="${TOOLCHAIN_VERSION}" \
95-
LLVM_BIN_DIR="${HOST_TOOLCHAIN_SDK}/usr/bin" \
96-
C_CXX_LAUNCHER="$(which sccache)"
9769

98-
"$UTILS_PATH/build-foundation.sh" "$TARGET_TOOLCHAIN_SDK"
99-
"$UTILS_PATH/build-xctest.sh" "$TARGET_TOOLCHAIN_SDK"
70+
COMPILER_RT_BUILD_DIR="$TARGET_BUILD_ROOT/compiler-rt-wasi-wasm32"
71+
cmake -B "$COMPILER_RT_BUILD_DIR" \
72+
-D CMAKE_TOOLCHAIN_FILE="$SOURCE_PATH/swift/utils/webassembly/compiler-rt-cache.cmake" \
73+
-D CMAKE_BUILD_TYPE=Release \
74+
-D CMAKE_C_COMPILER="$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/bin/clang" \
75+
-D CMAKE_CXX_COMPILER="$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/bin/clang++" \
76+
-D CMAKE_C_COMPILER_LAUNCHER=sccache \
77+
-D CMAKE_CXX_COMPILER_LAUNCHER=sccache \
78+
-D CMAKE_INSTALL_PREFIX="$DIST_TOOLCHAIN_SDK/usr" \
79+
-D COMPILER_RT_SWIFT_WASI_SDK_PATH="$WASI_SDK_PATH" \
80+
-G Ninja \
81+
-S ../llvm-project/compiler-rt
82+
83+
ninja install -C "$COMPILER_RT_BUILD_DIR"
84+
85+
SWIFT_STDLIB_BUILD_DIR="$TARGET_BUILD_ROOT/swift-stdlib-wasi-wasm32"
86+
cmake -B "$TARGET_BUILD_ROOT/swift-stdlib-wasi-wasm32" \
87+
-C "$SOURCE_PATH/swift/cmake/caches/Runtime-WASI-wasm32.cmake" \
88+
-D CMAKE_BUILD_TYPE=Release \
89+
-D CMAKE_C_COMPILER="$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/bin/clang" \
90+
-D CMAKE_CXX_COMPILER="$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/bin/clang++" \
91+
-D CMAKE_C_COMPILER_LAUNCHER="$(which sccache)" \
92+
-D CMAKE_CXX_COMPILER_LAUNCHER="$(which sccache)" \
93+
-D CMAKE_INSTALL_PREFIX="$DIST_TOOLCHAIN_SDK/usr" \
94+
-D LLVM_DIR="$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/lib/cmake/llvm/" \
95+
-D SWIFT_NATIVE_SWIFT_TOOLS_PATH="$HOST_BUILD_DIR/swift-$HOST_SUFFIX/bin" \
96+
-D SWIFT_WASI_SDK_PATH="$WASI_SDK_PATH" \
97+
-G Ninja \
98+
-S "$SOURCE_PATH/swift"
99+
100+
ninja install -C "$SWIFT_STDLIB_BUILD_DIR"
101+
102+
"$UTILS_PATH/build-foundation.sh" "$DIST_TOOLCHAIN_SDK"
103+
"$UTILS_PATH/build-xctest.sh" "$DIST_TOOLCHAIN_SDK"
100104

101105
}
102106

103107
merge_toolchains() {
104-
rm -rf "$DIST_TOOLCHAIN_DESTDIR"
105-
# Copy the base host toolchain
106-
cp -r "$HOST_TOOLCHAIN_DESTDIR" "$DIST_TOOLCHAIN_DESTDIR"
107-
108108
# Merge wasi-sdk and the toolchain
109109
cp -r "$WASI_SDK_PATH/share/wasi-sysroot" "$DIST_TOOLCHAIN_SDK/usr/share"
110110

111-
# Copy the target environment stdlib into the toolchain
112-
# Avoid copying usr/lib/swift/clang because our toolchain's one is a directory
113-
# but nightly's one is symbolic link. A simple copy fails to merge them.
114-
rsync -v -a "$TARGET_TOOLCHAIN_SDK/usr/lib/" "$DIST_TOOLCHAIN_SDK/usr/lib/" --exclude 'swift/clang'
115-
rsync -v -a "$TARGET_TOOLCHAIN_SDK/usr/bin/" "$DIST_TOOLCHAIN_SDK/usr/bin/"
116-
117111
# Replace absolute sysroot path with relative path
118112
sed -i.bak -e "s@\".*/include@\"../../../../share/wasi-sysroot/include@g" "$DIST_TOOLCHAIN_SDK/usr/lib/swift/wasi/wasm32/wasi.modulemap"
119113
rm "$DIST_TOOLCHAIN_SDK/usr/lib/swift/wasi/wasm32/wasi.modulemap.bak"

utils/webassembly/build-xctest.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ set -ex
33
DESTINATION_TOOLCHAIN=$1
44
SOURCE_PATH="$(cd "$(dirname $0)/../../.." && pwd)"
55

6-
BUILD_DIR="$SOURCE_PATH/target-build/Ninja-Release/xctest-wasi-wasm32"
6+
BUILD_DIR="$SOURCE_PATH/target-build/xctest-wasi-wasm32"
77

88
mkdir -p $BUILD_DIR
99
cd $BUILD_DIR

0 commit comments

Comments
 (0)