Skip to content

Commit 6d8114c

Browse files
[WASM] Fix ci script to test stdlib
1 parent d840e14 commit 6d8114c

File tree

2 files changed

+33
-27
lines changed

2 files changed

+33
-27
lines changed

utils/webassembly/build-toolchain.sh

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ BUNDLE_IDENTIFIER="swiftwasm.${YEAR}${MONTH}${DAY}"
4444
DISPLAY_NAME_SHORT="Swift for WebAssembly Development Snapshot"
4545
DISPLAY_NAME="${DISPLAY_NAME_SHORT} ${YEAR}-${MONTH}-${DAY}"
4646

47+
HOST_TOOLCHAIN_DESTDIR=$SOURCE_PATH/host-toolchain-sdk
4748
DIST_TOOLCHAIN_DESTDIR=$SOURCE_PATH/dist-toolchain-sdk
48-
4949
DIST_TOOLCHAIN_SDK=$DIST_TOOLCHAIN_DESTDIR/$TOOLCHAIN_NAME
5050

5151

@@ -60,22 +60,26 @@ build_host_toolchain() {
6060
--preset-file="$UTILS_PATH/build-presets.ini" \
6161
--preset=$HOST_PRESET \
6262
--build-dir="$HOST_BUILD_DIR" \
63-
INSTALL_DESTDIR="$DIST_TOOLCHAIN_DESTDIR" \
63+
INSTALL_DESTDIR="$HOST_TOOLCHAIN_DESTDIR" \
6464
TOOLCHAIN_NAME="$TOOLCHAIN_NAME" \
6565
C_CXX_LAUNCHER="$(which sccache)"
6666
}
6767

6868
build_target_toolchain() {
69+
rm -rf "$DIST_TOOLCHAIN_DESTDIR"
70+
cp -r "$HOST_TOOLCHAIN_DESTDIR" "$DIST_TOOLCHAIN_DESTDIR"
6971

7072
COMPILER_RT_BUILD_DIR="$TARGET_BUILD_ROOT/compiler-rt-wasi-wasm32"
7173
cmake -B "$COMPILER_RT_BUILD_DIR" \
7274
-D CMAKE_TOOLCHAIN_FILE="$SOURCE_PATH/swift/utils/webassembly/compiler-rt-cache.cmake" \
7375
-D CMAKE_BUILD_TYPE=Release \
7476
-D CMAKE_C_COMPILER="$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/bin/clang" \
7577
-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" \
78+
-D CMAKE_RANLIB="$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/bin/llvm-ranlib" \
79+
-D CMAKE_AR="$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/bin/llvm-ar" \
80+
-D CMAKE_C_COMPILER_LAUNCHER="$(which sccache)" \
81+
-D CMAKE_CXX_COMPILER_LAUNCHER="$(which sccache)" \
82+
-D CMAKE_INSTALL_PREFIX="$DIST_TOOLCHAIN_SDK/usr/lib/clang/10.0.0/" \
7983
-D COMPILER_RT_SWIFT_WASI_SDK_PATH="$WASI_SDK_PATH" \
8084
-G Ninja \
8185
-S ../llvm-project/compiler-rt
@@ -88,6 +92,8 @@ build_target_toolchain() {
8892
-D CMAKE_BUILD_TYPE=Release \
8993
-D CMAKE_C_COMPILER="$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/bin/clang" \
9094
-D CMAKE_CXX_COMPILER="$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/bin/clang++" \
95+
-D CMAKE_RANLIB="$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/bin/llvm-ranlib" \
96+
-D CMAKE_AR="$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/bin/llvm-ar" \
9197
-D CMAKE_C_COMPILER_LAUNCHER="$(which sccache)" \
9298
-D CMAKE_CXX_COMPILER_LAUNCHER="$(which sccache)" \
9399
-D CMAKE_INSTALL_PREFIX="$DIST_TOOLCHAIN_SDK/usr" \
@@ -99,12 +105,20 @@ build_target_toolchain() {
99105

100106
ninja install -C "$SWIFT_STDLIB_BUILD_DIR"
101107

108+
# Copy tool binaries in target build dir to test stdlib
109+
rsync -a "$HOST_BUILD_DIR/llvm-$HOST_SUFFIX/bin/" "$SWIFT_STDLIB_BUILD_DIR/bin/"
110+
rsync -a "$HOST_BUILD_DIR/swift-$HOST_SUFFIX/bin/" "$SWIFT_STDLIB_BUILD_DIR/bin/"
111+
112+
# Link compiler-rt libs to stdlib build dir
113+
mkdir -p "$SWIFT_STDLIB_BUILD_DIR/lib/clang/10.0.0/"
114+
ln -fs "$COMPILER_RT_BUILD_DIR/lib" "$SWIFT_STDLIB_BUILD_DIR/lib/clang/10.0.0/lib"
115+
102116
"$UTILS_PATH/build-foundation.sh" "$DIST_TOOLCHAIN_SDK"
103117
"$UTILS_PATH/build-xctest.sh" "$DIST_TOOLCHAIN_SDK"
104118

105119
}
106120

107-
merge_toolchains() {
121+
embed_wasi_sysroot() {
108122
# Merge wasi-sdk and the toolchain
109123
cp -r "$WASI_SDK_PATH/share/wasi-sysroot" "$DIST_TOOLCHAIN_SDK/usr/share"
110124

@@ -158,7 +172,7 @@ create_darwin_info_plist() {
158172
build_host_toolchain
159173
build_target_toolchain
160174

161-
merge_toolchains
175+
embed_wasi_sysroot
162176

163177
if [[ "$(uname)" == "Darwin" ]]; then
164178
create_darwin_info_plist

utils/webassembly/ci.sh

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#/bin/bash
1+
#!/bin/bash
22

33
set -ex
44

@@ -9,11 +9,9 @@ UTILS_PATH=$SWIFT_PATH/utils/webassembly
99
case $(uname -s) in
1010
Darwin)
1111
DEPENDENCIES_SCRIPT=$UTILS_PATH/macos/install-dependencies.sh
12-
HOST_SUFFIX=macosx-x86_64
1312
;;
1413
Linux)
1514
DEPENDENCIES_SCRIPT=$UTILS_PATH/linux/install-dependencies.sh
16-
HOST_SUFFIX=linux-x86_64
1715
;;
1816
*)
1917
echo "Unrecognised platform $(uname -s)"
@@ -23,7 +21,7 @@ esac
2321

2422
BUILD_SCRIPT=$UTILS_PATH/build-toolchain.sh
2523
RUN_TEST_BIN=$SWIFT_PATH/utils/run-test
26-
TARGET_BUILD_DIR=$SOURCE_PATH/target-build/Ninja-Release
24+
TARGET_STDLIB_BUILD_DIR=$SOURCE_PATH/target-build/swift-stdlib-wasi-wasm32
2725

2826
$DEPENDENCIES_SCRIPT
2927

@@ -38,26 +36,20 @@ echo "Build script completed, will attempt to run test suites..."
3836

3937
if [[ "$(uname)" == "Darwin" ]]; then
4038
# workaround: host target test directory is necessary to use run-test
41-
mkdir -p $TARGET_BUILD_DIR/swift-macosx-x86_64/test-macosx-x86_64
42-
HOST_PLATFORM=macosx
43-
else
44-
HOST_PLATFORM=linux
39+
mkdir -p "$TARGET_STDLIB_BUILD_DIR/test-macosx-x86_64"
4540
fi
4641

42+
# Run tests
43+
$RUN_TEST_BIN --build-dir "$TARGET_STDLIB_BUILD_DIR" --target wasi-wasm32 \
44+
"$TARGET_STDLIB_BUILD_DIR/test-wasi-wasm32/stdlib"
45+
$RUN_TEST_BIN --build-dir "$TARGET_STDLIB_BUILD_DIR" --target wasi-wasm32 \
46+
"$TARGET_STDLIB_BUILD_DIR/test-wasi-wasm32/LTO"
47+
4748
if [[ "$(uname)" == "Linux" ]]; then
48-
$RUN_TEST_BIN --build-dir $TARGET_BUILD_DIR --target wasi-wasm32 \
49-
$TARGET_BUILD_DIR/swift-${HOST_PLATFORM}-x86_64/test-wasi-wasm32/stdlib
50-
$RUN_TEST_BIN --build-dir $TARGET_BUILD_DIR --target wasi-wasm32 \
51-
$TARGET_BUILD_DIR/swift-${HOST_PLATFORM}-x86_64/test-wasi-wasm32/LTO
52-
echo "Skip running test suites for Linux"
49+
echo "Skip running all test suites for Linux"
5350
else
54-
$RUN_TEST_BIN --build-dir $TARGET_BUILD_DIR --target wasi-wasm32 \
55-
$TARGET_BUILD_DIR/swift-${HOST_PLATFORM}-x86_64/test-wasi-wasm32/stdlib
56-
$RUN_TEST_BIN --build-dir $TARGET_BUILD_DIR --target wasi-wasm32 \
57-
$TARGET_BUILD_DIR/swift-${HOST_PLATFORM}-x86_64/test-wasi-wasm32/LTO
58-
59-
# Run test but ignore failure temporarily
60-
ninja check-swift-wasi-wasm32 -C $TARGET_BUILD_DIR/swift-$HOST_SUFFIX || true
51+
# Run all tests but ignore failure temporarily
52+
ninja check-swift-wasi-wasm32 -C "$TARGET_STDLIB_BUILD_DIR" || true
6153
fi
6254

6355
echo "The test suite has finished"

0 commit comments

Comments
 (0)