@@ -45,18 +45,13 @@ DISPLAY_NAME_SHORT="Swift for WebAssembly Development Snapshot"
45
45
DISPLAY_NAME=" ${DISPLAY_NAME_SHORT} ${YEAR} -${MONTH} -${DAY} "
46
46
47
47
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
50
48
51
49
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
54
50
55
51
56
52
HOST_BUILD_ROOT=$SOURCE_PATH /host-build
57
53
TARGET_BUILD_ROOT=$SOURCE_PATH /target-build
58
54
HOST_BUILD_DIR=$HOST_BUILD_ROOT /Ninja-Release
59
- TARGET_BUILD_DIR=$TARGET_BUILD_ROOT /Ninja-Release
60
55
61
56
build_host_toolchain () {
62
57
# Build the host toolchain and SDK first.
@@ -65,55 +60,54 @@ build_host_toolchain() {
65
60
--preset-file=" $UTILS_PATH /build-presets.ini" \
66
61
--preset=$HOST_PRESET \
67
62
--build-dir=" $HOST_BUILD_DIR " \
68
- INSTALL_DESTDIR=" $HOST_TOOLCHAIN_DESTDIR " \
63
+ INSTALL_DESTDIR=" $DIST_TOOLCHAIN_DESTDIR " \
69
64
TOOLCHAIN_NAME=" $TOOLCHAIN_NAME " \
70
65
C_CXX_LAUNCHER=" $( which sccache) "
71
66
}
72
67
73
68
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) "
97
69
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 "
100
104
101
105
}
102
106
103
107
merge_toolchains () {
104
- rm -rf " $DIST_TOOLCHAIN_DESTDIR "
105
- # Copy the base host toolchain
106
- cp -r " $HOST_TOOLCHAIN_DESTDIR " " $DIST_TOOLCHAIN_DESTDIR "
107
-
108
108
# Merge wasi-sdk and the toolchain
109
109
cp -r " $WASI_SDK_PATH /share/wasi-sysroot" " $DIST_TOOLCHAIN_SDK /usr/share"
110
110
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
-
117
111
# Replace absolute sysroot path with relative path
118
112
sed -i.bak -e " s@\" .*/include@\" ../../../../share/wasi-sysroot/include@g" " $DIST_TOOLCHAIN_SDK /usr/lib/swift/wasi/wasm32/wasi.modulemap"
119
113
rm " $DIST_TOOLCHAIN_SDK /usr/lib/swift/wasi/wasm32/wasi.modulemap.bak"
0 commit comments