Skip to content

Commit 9b3eff6

Browse files
Restore corelibs build scripts
1 parent c27c10a commit 9b3eff6

File tree

5 files changed

+153
-7
lines changed

5 files changed

+153
-7
lines changed
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#!/bin/bash
2+
set -ex
3+
DESTINATION_TOOLCHAIN=$1
4+
LLVM_BIN_DIR=$2
5+
CLANG_BIN_DIR=$3
6+
SWIFT_BIN_DIR=$4
7+
WASI_SYSROOT_PATH=$5
8+
TRIPLE="$6"
9+
10+
SOURCE_PATH="$(cd "$(dirname $0)/../../../.." && pwd)"
11+
BUILD_SDK_PATH="$SOURCE_PATH/build-sdk"
12+
LIBXML2_PATH="$BUILD_SDK_PATH/libxml2-$TRIPLE"
13+
14+
# WORKAROUND: libxml2 is compiled as wasm32-unknown-wasi but we expect it to be wasm32-unknown-wasip1
15+
if [[ "$TRIPLE" == "wasm32-unknown-wasip1" ]]; then
16+
LIBXML2_PATH="$BUILD_SDK_PATH/libxml2-wasm32-unknown-wasi"
17+
fi
18+
19+
FOUNDATION_BUILD="$SOURCE_PATH/build/WebAssembly/foundation-$TRIPLE"
20+
21+
swift_extra_flags=""
22+
c_extra_flags=""
23+
if [[ "$TRIPLE" == "wasm32-unknown-wasip1-threads" ]]; then
24+
swift_extra_flags="-Xcc -matomics -Xcc -mbulk-memory -Xcc -mthread-model -Xcc posix -Xcc -pthread -Xcc -ftls-model=local-exec"
25+
c_extra_flags="-mthread-model posix -pthread -ftls-model=local-exec"
26+
fi
27+
28+
cmake -G Ninja \
29+
-D CMAKE_BUILD_TYPE="Release" \
30+
-D CMAKE_SYSROOT="$WASI_SYSROOT_PATH" \
31+
-D CMAKE_Swift_COMPILER="$SWIFT_BIN_DIR/swiftc" \
32+
-D CMAKE_STAGING_PREFIX="$DESTINATION_TOOLCHAIN/usr" \
33+
-D CMAKE_SYSTEM_NAME=WASI \
34+
-D CMAKE_SYSTEM_PROCESSOR=wasm32 \
35+
-D CMAKE_C_COMPILER_TARGET="$TRIPLE" \
36+
-D CMAKE_CXX_COMPILER_TARGET="$TRIPLE" \
37+
-D CMAKE_Swift_COMPILER_TARGET="$TRIPLE" \
38+
-D CMAKE_C_COMPILER="$CLANG_BIN_DIR/clang" \
39+
-D CMAKE_CXX_COMPILER="$CLANG_BIN_DIR/clang++" \
40+
-D CMAKE_AR="$LLVM_BIN_DIR/llvm-ar" \
41+
-D CMAKE_RANLIB="$LLVM_BIN_DIR/llvm-ranlib" \
42+
-D LIBXML2_INCLUDE_DIR="$LIBXML2_PATH/include/libxml2" \
43+
-D LIBXML2_LIBRARY="$LIBXML2_PATH/lib" \
44+
-D BUILD_SHARED_LIBS=OFF \
45+
-D FOUNDATION_BUILD_TOOLS=OFF \
46+
-D CMAKE_Swift_COMPILER_FORCED=ON \
47+
-D CMAKE_C_COMPILER_FORCED=ON \
48+
-D CMAKE_CXX_COMPILER_FORCED=ON \
49+
-D CMAKE_Swift_FLAGS="-sdk $WASI_SYSROOT_PATH -resource-dir $DESTINATION_TOOLCHAIN/usr/lib/swift_static $swift_extra_flags" \
50+
-D CMAKE_C_FLAGS="-resource-dir $DESTINATION_TOOLCHAIN/usr/lib/swift_static/clang -B $LLVM_BIN_DIR $c_extra_flags" \
51+
-D CMAKE_CXX_FLAGS="-fno-exceptions -resource-dir $DESTINATION_TOOLCHAIN/usr/lib/swift_static/clang -B $LLVM_BIN_DIR $c_extra_flags" \
52+
-D _SwiftCollections_SourceDIR="$SOURCE_PATH/swift-collections" \
53+
-D _SwiftFoundation_SourceDIR="$SOURCE_PATH/swift-foundation" \
54+
-D _SwiftFoundationICU_SourceDIR="$SOURCE_PATH/swift-foundation-icu" \
55+
-D SwiftFoundation_MACRO="$SWIFT_BIN_DIR/../lib/swift/host/plugins" \
56+
-B "$FOUNDATION_BUILD" \
57+
"${SOURCE_PATH}/swift-corelibs-foundation"
58+
59+
cmake --build "$FOUNDATION_BUILD"
60+
cmake --install "$FOUNDATION_BUILD"

schemes/release-6.2/build/build-target-toolchain.sh

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,11 @@ build_target_toolchain() {
4040
env DESTDIR="$TRIPLE_DESTDIR" \
4141
cmake --install "$TARGET_BUILD_ROOT/$STDLIB_PRODUCT-$HOST_SUFFIX" --prefix /usr
4242

43-
env DESTDIR="$TRIPLE_DESTDIR" \
44-
cmake --install "$TARGET_BUILD_ROOT/wasmswiftsdk-$HOST_SUFFIX/swift-testing/$TRIPLE" --prefix /usr
45-
env DESTDIR="$TRIPLE_DESTDIR" \
46-
cmake --install "$TARGET_BUILD_ROOT/wasmswiftsdk-$HOST_SUFFIX/foundation/$TRIPLE" --prefix /usr
47-
env DESTDIR="$TRIPLE_DESTDIR" \
48-
cmake --install "$TARGET_BUILD_ROOT/wasmswiftsdk-$HOST_SUFFIX/xctest/$TRIPLE" --prefix /usr
43+
local swift_testing_build_dir="$TARGET_BUILD_ROOT/wasmswiftsdk-$HOST_SUFFIX/swift-testing/$TRIPLE"
44+
if [[ -d "$swift_testing_build_dir" ]]; then
45+
env DESTDIR="$TRIPLE_DESTDIR" \
46+
cmake --install "$swift_testing_build_dir" --prefix /usr
47+
fi
4948

5049
rm -rf "$TRIPLE_DESTDIR/usr/lib/swift_static/clang/lib/$COMPILER_RT_OS_DIR"
5150
# XXX: Is this the right way to install compiler-rt?
@@ -58,6 +57,25 @@ build_target_toolchain() {
5857
fi
5958
}
6059

60+
build_target_corelibs() {
61+
local LLVM_BIN_DIR="$1"
62+
local CLANG_BIN_DIR="$2"
63+
local SWIFT_BIN_DIR="$3"
64+
local TRIPLE="$4"
65+
local SHORT_TRIPLE="$5"
66+
67+
local TRIPLE_DESTDIR="$TARGET_TOOLCHAIN_DESTDIR/$TRIPLE"
68+
local CORELIBS_ARGS=(
69+
"$TRIPLE_DESTDIR"
70+
"$LLVM_BIN_DIR"
71+
"$CLANG_BIN_DIR"
72+
"$SWIFT_BIN_DIR"
73+
"$WASI_SYSROOT_PATH/$SHORT_TRIPLE"
74+
)
75+
"$SCHEMES_BUILD_PATH/build-foundation.sh" "${CORELIBS_ARGS[@]}" "$TRIPLE"
76+
"$SCHEMES_BUILD_PATH/build-xctest.sh" "${CORELIBS_ARGS[@]}" "$TRIPLE"
77+
}
78+
6179
main() {
6280
local OPTIONS_LLVM_BIN=""
6381
local OPTIONS_CLANG_BIN=""
@@ -147,6 +165,9 @@ main() {
147165
build_target_toolchain "${BUILD_TOOLS_ARGS[@]}" "wasm32-unknown-wasip1-threads" "wasip1-threads-wasm32" "wasm32-wasip1-threads" "wasmthreadsstdlib" "wasip1"
148166

149167
rsync -av "$WASI_SYSROOT_PATH/" "$PACKAGING_DIR/wasi-sysroot/"
168+
169+
build_target_corelibs "${BUILD_TOOLS_ARGS[@]}" "wasm32-unknown-wasip1" "wasm32-wasip1"
170+
build_target_corelibs "${BUILD_TOOLS_ARGS[@]}" "wasm32-unknown-wasip1-threads" "wasm32-wasip1-threads"
150171
}
151172

152173
main "$@"
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/bin/bash
2+
set -ex
3+
DESTINATION_TOOLCHAIN=$1
4+
LLVM_BIN_DIR=$2
5+
CLANG_BIN_DIR=$3
6+
SWIFT_BIN_DIR=$4
7+
WASI_SYSROOT_PATH=$5
8+
TRIPLE="$6"
9+
10+
SOURCE_PATH="$(cd "$(dirname $0)/../../../../" && pwd)"
11+
SCHEME_BUILD_PATH="$(cd "$(dirname $0)" && pwd)"
12+
13+
BUILD_DIR="$SOURCE_PATH/build/WebAssembly/xctest-$TRIPLE"
14+
15+
mkdir -p $BUILD_DIR
16+
cd $BUILD_DIR
17+
18+
swift_extra_flags=""
19+
if [[ "$TRIPLE" == "wasm32-unknown-wasip1-threads" ]]; then
20+
swift_extra_flags="-Xcc -matomics -Xcc -mbulk-memory -Xcc -mthread-model -Xcc posix -Xcc -pthread -Xcc -ftls-model=local-exec"
21+
fi
22+
23+
cmake -G Ninja \
24+
-DCMAKE_BUILD_TYPE="Release" \
25+
-DCMAKE_SYSROOT="$WASI_SYSROOT_PATH" \
26+
-DCMAKE_STAGING_PREFIX="$DESTINATION_TOOLCHAIN/usr" \
27+
-DCMAKE_Swift_COMPILER="$SWIFT_BIN_DIR/swiftc" \
28+
-DCMAKE_TOOLCHAIN_FILE="$SCHEME_BUILD_PATH/toolchain-wasi.cmake" \
29+
-DTRIPLE="$TRIPLE" \
30+
-DLLVM_BIN="$LLVM_BIN_DIR" \
31+
-DCLANG_BIN="$CLANG_BIN_DIR" \
32+
-DBUILD_SHARED_LIBS=OFF \
33+
-DCMAKE_Swift_COMPILER_FORCED=ON \
34+
-DCMAKE_Swift_FLAGS="-sdk $WASI_SYSROOT_PATH -resource-dir $DESTINATION_TOOLCHAIN/usr/lib/swift_static $swift_extra_flags" \
35+
-DSWIFT_FOUNDATION_PATH=$DESTINATION_TOOLCHAIN/usr/lib/swift_static/wasi/wasm32 \
36+
"${SOURCE_PATH}/swift-corelibs-xctest"
37+
38+
ninja -v
39+
ninja -v install
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
set(CMAKE_SYSTEM_NAME WASI)
2+
set(CMAKE_SYSTEM_VERSION 1)
3+
set(CMAKE_SYSTEM_PROCESSOR wasm32)
4+
5+
set(CMAKE_C_COMPILER "${CLANG_BIN}/clang")
6+
set(CMAKE_CXX_COMPILER "${CLANG_BIN}/clang++")
7+
set(CMAKE_AR "${LLVM_BIN}/llvm-ar" CACHE STRING "LLVM Archiver for wasm32")
8+
set(CMAKE_RANLIB "${LLVM_BIN}/llvm-ranlib" CACHE STRING "LLVM Ranlib for wasm32")
9+
set(CMAKE_C_COMPILER_TARGET ${TRIPLE} CACHE STRING "")
10+
set(CMAKE_CXX_COMPILER_TARGET ${TRIPLE} CACHE STRING "")
11+
set(CMAKE_Swift_COMPILER_TARGET ${TRIPLE} CACHE STRING "")
12+
set(CMAKE_ASM_COMPILER_TARGET ${TRIPLE} CACHE STRING "")
13+
14+
# Don't look in the sysroot for executables to run during the build
15+
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
16+
# Only look in the sysroot (not in the host paths) for the rest
17+
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER)
18+
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER)
19+
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE NEVER)
20+
21+
# Some other hacks
22+
set(CMAKE_C_COMPILER_WORKS ON)
23+
set(CMAKE_CXX_COMPILER_WORKS ON)

schemes/release-6.2/manifest.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
"update-checkout-scheme": "release/6.2",
33
"base-tag": "swift-6.2-DEVELOPMENT-SNAPSHOT-2025-08-14-a",
44
"icu4c": [],
5-
"libxml2": [],
5+
"libxml2": [
6+
"https://github.com/swiftwasm/libxml2-wasm/releases/download/2.0.0/libxml2-wasm32-unknown-wasi.tar.gz",
7+
"https://github.com/swiftwasm/libxml2-wasm/releases/download/2.0.0/libxml2-wasm32-unknown-wasip1-threads.tar.gz"
8+
],
69
"swift-org-download-channel": "swift-6.2-branch"
710
}

0 commit comments

Comments
 (0)