Skip to content

Commit a9740c9

Browse files
Merge pull request #1902 from swiftwasm/katei/improve-dev-script
Improve development script
2 parents 4b6b3bf + a0a58eb commit a9740c9

File tree

6 files changed

+182
-150
lines changed

6 files changed

+182
-150
lines changed

utils/build-presets.ini

-110
Original file line numberDiff line numberDiff line change
@@ -2567,113 +2567,3 @@ no-assertions
25672567
mixin-preset=source_compat_suite_linux_base
25682568
debug
25692569
no-assertions
2570-
2571-
#===----------------------------------------------------------------------===#
2572-
# Preset for the WebAssembly toolchain and SDK
2573-
#===----------------------------------------------------------------------===#
2574-
2575-
[preset: webassembly]
2576-
no-assertions
2577-
release
2578-
cmake-c-launcher=%(C_CXX_LAUNCHER)s
2579-
cmake-cxx-launcher=%(C_CXX_LAUNCHER)s
2580-
skip-build-benchmarks
2581-
llvm-targets-to-build=X86;AArch64;WebAssembly
2582-
install-destdir=%(INSTALL_DESTDIR)s
2583-
swift-install-components=autolink-driver;compiler;clang-builtin-headers;stdlib;sdk-overlay;parser-lib;editor-integration;tools;testsuite-tools;toolchain-tools;license;sourcekit-inproc;swift-remote-mirror;swift-remote-mirror-headers;clang-resource-dir-symlink
2584-
llvm-install-components=llvm-cov;llvm-profdata;IndexStore;clang;clang-resource-headers;compiler-rt;clangd;dsymutil;lld;llvm-ar;llvm-ranlib
2585-
install-swift
2586-
install-prefix=/%(TOOLCHAIN_NAME)s/usr
2587-
swift-darwin-supported-archs=x86_64
2588-
2589-
[preset: webassembly-host]
2590-
2591-
mixin-preset=webassembly
2592-
extra-cmake-options=
2593-
-DSWIFT_BUILD_SOURCEKIT=FALSE
2594-
-DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE
2595-
-DSWIFT_BUILD_SYNTAXPARSERLIB=FALSE
2596-
2597-
llbuild
2598-
swiftpm
2599-
indexstore-db
2600-
sourcekit-lsp
2601-
libcxx
2602-
2603-
install-llvm
2604-
install-swift
2605-
install-llbuild
2606-
install-swiftpm
2607-
install-sourcekit-lsp
2608-
install-libcxx
2609-
2610-
[preset: webassembly-linux-host]
2611-
2612-
mixin-preset=webassembly-host
2613-
2614-
libdispatch
2615-
libicu
2616-
foundation
2617-
xctest
2618-
2619-
install-libicu
2620-
install-foundation
2621-
install-libdispatch
2622-
install-xctest
2623-
2624-
skip-test-libicu
2625-
skip-test-foundation
2626-
skip-test-libdispatch
2627-
skip-test-xctest
2628-
2629-
[preset: webassembly-target]
2630-
2631-
mixin-preset=webassembly
2632-
wasm
2633-
verbose
2634-
# Install lld, compiler-rt and clang
2635-
install-llvm
2636-
build-stdlib-deployment-targets=wasi-wasm32
2637-
build-swift-dynamic-sdk-overlay=false
2638-
build-swift-dynamic-stdlib=false
2639-
build-swift-static-sdk-overlay
2640-
build-swift-static-stdlib
2641-
stdlib-deployment-targets=wasi-wasm32
2642-
wasi-sdk=%(SOURCE_PATH)s/wasi-sdk
2643-
2644-
[preset: webassembly-linux-target]
2645-
2646-
mixin-preset=webassembly-target
2647-
extra-cmake-options=
2648-
-DWASI_ICU_URL:STRING="https://github.com/swiftwasm/icu4c-wasi/releases/download/0.5.0/icu4c-wasi.tar.xz"
2649-
-DWASI_ICU_MD5:STRING="25943864ebbfff15cf5aee8d9d5cc4d7"
2650-
-DSWIFT_PRIMARY_VARIANT_SDK:STRING=WASI
2651-
-DSWIFT_PRIMARY_VARIANT_ARCH:STRING=wasm32
2652-
-DSWIFT_SDKS='WASI;LINUX'
2653-
-DSWIFT_STDLIB_SINGLE_THREADED_RUNTIME=TRUE
2654-
-DSWIFT_BUILD_SOURCEKIT=FALSE
2655-
-DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE
2656-
-DSWIFT_BUILD_SYNTAXPARSERLIB=FALSE
2657-
-DCMAKE_AR="%(TOOLS_BIN_DIR)s/llvm-ar"
2658-
-DCMAKE_RANLIB="%(TOOLS_BIN_DIR)s/llvm-ranlib"
2659-
-DCLANG_COMPILER_RT_CMAKE_ARGS='-DCMAKE_TOOLCHAIN_FILE=%(SOURCE_PATH)s/swift/utils/webassembly/compiler-rt-cache.cmake'
2660-
-DSWIFTWASM_DISABLE_REFLECTION_TEST=TRUE
2661-
2662-
[preset: webassembly-macos-target]
2663-
2664-
mixin-preset=webassembly-target
2665-
extra-cmake-options=
2666-
-DWASI_ICU_URL:STRING="https://github.com/swiftwasm/icu4c-wasi/releases/download/0.5.0/icu4c-wasi.tar.xz"
2667-
-DWASI_ICU_MD5:STRING="25943864ebbfff15cf5aee8d9d5cc4d7"
2668-
-DSWIFT_PRIMARY_VARIANT_SDK:STRING=WASI
2669-
-DSWIFT_PRIMARY_VARIANT_ARCH:STRING=wasm32
2670-
-DSWIFT_SDKS='WASI'
2671-
-DSWIFT_STDLIB_SINGLE_THREADED_RUNTIME=TRUE
2672-
-DSWIFT_OSX_x86_64_ICU_STATICLIB=TRUE
2673-
-DSWIFT_BUILD_SOURCEKIT=FALSE
2674-
-DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE
2675-
-DSWIFT_BUILD_SYNTAXPARSERLIB=FALSE
2676-
-DCMAKE_AR='%(TOOLS_BIN_DIR)s/llvm-ar'
2677-
-DCMAKE_RANLIB='%(TOOLS_BIN_DIR)s/llvm-ranlib'
2678-
-DCLANG_COMPILER_RT_CMAKE_ARGS='-DCMAKE_TOOLCHAIN_FILE=%(SOURCE_PATH)s/swift/utils/webassembly/compiler-rt-cache.cmake'
2679-
-DSWIFTWASM_DISABLE_REFLECTION_TEST=TRUE

utils/webassembly/build-presets.ini

+134
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
#===----------------------------------------------------------------------===#
2+
# Preset for the WebAssembly toolchain and SDK
3+
#===----------------------------------------------------------------------===#
4+
5+
[preset: webassembly]
6+
cmake-c-launcher=%(C_CXX_LAUNCHER)s
7+
cmake-cxx-launcher=%(C_CXX_LAUNCHER)s
8+
skip-build-benchmarks
9+
llvm-targets-to-build=X86;AArch64;WebAssembly
10+
swift-darwin-supported-archs=x86_64
11+
12+
[preset: webassembly-install]
13+
14+
release
15+
no-assertions
16+
install-swift
17+
install-destdir=%(INSTALL_DESTDIR)s
18+
swift-install-components=autolink-driver;compiler;clang-builtin-headers;stdlib;sdk-overlay;parser-lib;editor-integration;tools;testsuite-tools;toolchain-tools;license;sourcekit-inproc;swift-remote-mirror;swift-remote-mirror-headers;clang-resource-dir-symlink
19+
llvm-install-components=llvm-cov;llvm-profdata;IndexStore;clang;clang-resource-headers;compiler-rt;clangd;dsymutil;lld;llvm-ar;llvm-ranlib
20+
install-prefix=/%(TOOLCHAIN_NAME)s/usr
21+
22+
23+
[preset: webassembly-host]
24+
25+
mixin-preset=webassembly
26+
extra-cmake-options=
27+
-DSWIFT_BUILD_SOURCEKIT=FALSE
28+
-DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE
29+
-DSWIFT_BUILD_SYNTAXPARSERLIB=FALSE
30+
31+
[preset: webassembly-host-install]
32+
mixin-preset=
33+
webassembly-host
34+
webassembly-install
35+
36+
llbuild
37+
swiftpm
38+
indexstore-db
39+
sourcekit-lsp
40+
libcxx
41+
42+
install-llvm
43+
install-swift
44+
install-llbuild
45+
install-swiftpm
46+
install-sourcekit-lsp
47+
install-libcxx
48+
49+
[preset: webassembly-linux-host-install]
50+
51+
mixin-preset=webassembly-host-install
52+
53+
libdispatch
54+
libicu
55+
foundation
56+
xctest
57+
58+
install-libicu
59+
install-foundation
60+
install-libdispatch
61+
install-xctest
62+
63+
skip-test-libicu
64+
skip-test-foundation
65+
skip-test-libdispatch
66+
skip-test-xctest
67+
68+
[preset: webassembly-target]
69+
70+
mixin-preset=webassembly
71+
wasm
72+
build-stdlib-deployment-targets=wasi-wasm32
73+
build-swift-dynamic-sdk-overlay=false
74+
build-swift-dynamic-stdlib=false
75+
build-swift-static-sdk-overlay
76+
build-swift-static-stdlib
77+
stdlib-deployment-targets=wasi-wasm32
78+
wasi-sdk=%(SOURCE_PATH)s/wasi-sdk
79+
80+
81+
[preset: webassembly-target-install]
82+
mixin-preset=
83+
webassembly-target
84+
webassembly-install
85+
# Install lld, compiler-rt and clang
86+
install-llvm
87+
88+
89+
[preset: webassembly-linux-target]
90+
91+
mixin-preset=webassembly-target
92+
extra-cmake-options=
93+
-DWASI_ICU_URL:STRING="https://github.com/swiftwasm/icu4c-wasi/releases/download/0.5.0/icu4c-wasi.tar.xz"
94+
-DWASI_ICU_MD5:STRING="25943864ebbfff15cf5aee8d9d5cc4d7"
95+
-DSWIFT_PRIMARY_VARIANT_SDK:STRING=WASI
96+
-DSWIFT_PRIMARY_VARIANT_ARCH:STRING=wasm32
97+
-DSWIFT_SDKS='WASI;LINUX'
98+
-DSWIFT_STDLIB_SINGLE_THREADED_RUNTIME=TRUE
99+
-DSWIFT_BUILD_SOURCEKIT=FALSE
100+
-DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE
101+
-DSWIFT_BUILD_SYNTAXPARSERLIB=FALSE
102+
-DCMAKE_AR="%(LLVM_BIN_DIR)s/llvm-ar"
103+
-DCMAKE_RANLIB="%(LLVM_BIN_DIR)s/llvm-ranlib"
104+
-DCLANG_COMPILER_RT_CMAKE_ARGS='-DCMAKE_TOOLCHAIN_FILE=%(SOURCE_PATH)s/swift/utils/webassembly/compiler-rt-cache.cmake'
105+
-DSWIFTWASM_DISABLE_REFLECTION_TEST=TRUE
106+
107+
[preset: webassembly-macos-target]
108+
109+
mixin-preset=webassembly-target
110+
extra-cmake-options=
111+
-DWASI_ICU_URL:STRING="https://github.com/swiftwasm/icu4c-wasi/releases/download/0.5.0/icu4c-wasi.tar.xz"
112+
-DWASI_ICU_MD5:STRING="25943864ebbfff15cf5aee8d9d5cc4d7"
113+
-DSWIFT_PRIMARY_VARIANT_SDK:STRING=WASI
114+
-DSWIFT_PRIMARY_VARIANT_ARCH:STRING=wasm32
115+
-DSWIFT_SDKS='WASI'
116+
-DSWIFT_STDLIB_SINGLE_THREADED_RUNTIME=TRUE
117+
-DSWIFT_OSX_x86_64_ICU_STATICLIB=TRUE
118+
-DSWIFT_BUILD_SOURCEKIT=FALSE
119+
-DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE
120+
-DSWIFT_BUILD_SYNTAXPARSERLIB=FALSE
121+
-DCMAKE_AR='%(LLVM_BIN_DIR)s/llvm-ar'
122+
-DCMAKE_RANLIB='%(LLVM_BIN_DIR)s/llvm-ranlib'
123+
-DCLANG_COMPILER_RT_CMAKE_ARGS='-DCMAKE_TOOLCHAIN_FILE=%(SOURCE_PATH)s/swift/utils/webassembly/compiler-rt-cache.cmake'
124+
-DSWIFTWASM_DISABLE_REFLECTION_TEST=TRUE
125+
126+
[preset: webassembly-linux-target-install]
127+
mixin-preset=
128+
webassembly-target-install
129+
webassembly-linux-target
130+
131+
[preset: webassembly-macos-target-install]
132+
mixin-preset=
133+
webassembly-target-install
134+
webassembly-macos-target

utils/webassembly/build-toolchain.sh

+25-24
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
1-
#/bin/bash
1+
#!/bin/bash
22

33
set -ex
4-
SOURCE_PATH="$(cd "$(dirname $0)/../../.." && pwd)"
5-
UTILS_PATH="$(cd "$(dirname $0)" && pwd)"
4+
SOURCE_PATH="$(cd "$(dirname "$0")/../../.." && pwd)"
5+
UTILS_PATH="$(cd "$(dirname "$0")" && pwd)"
66

77
WASI_SDK_PATH=$SOURCE_PATH/wasi-sdk
88

99
case $(uname -s) in
1010
Darwin)
1111
OS_SUFFIX=osx
12-
HOST_PRESET=webassembly-host
13-
TARGET_PRESET=webassembly-macos-target
12+
HOST_PRESET=webassembly-host-install
13+
TARGET_PRESET=webassembly-macos-target-install
1414
HOST_SUFFIX=macosx-x86_64
1515
;;
1616
Linux)
17-
if [ $(grep RELEASE /etc/lsb-release) == "DISTRIB_RELEASE=18.04" ]; then
17+
if [ "$(grep RELEASE /etc/lsb-release)" == "DISTRIB_RELEASE=18.04" ]; then
1818
OS_SUFFIX=ubuntu18.04
19-
elif [ $(grep RELEASE /etc/lsb-release) == "DISTRIB_RELEASE=20.04" ]; then
19+
elif [ "$(grep RELEASE /etc/lsb-release)" == "DISTRIB_RELEASE=20.04" ]; then
2020
OS_SUFFIX=ubuntu20.04
2121
else
2222
echo "Unknown Ubuntu version"
2323
exit 1
2424
fi
25-
HOST_PRESET=webassembly-linux-host
26-
TARGET_PRESET=webassembly-linux-target
25+
HOST_PRESET=webassembly-linux-host-install
26+
TARGET_PRESET=webassembly-linux-target-install
2727
HOST_SUFFIX=linux-x86_64
2828
;;
2929
*)
@@ -37,7 +37,6 @@ MONTH=$(date +"%m")
3737
DAY=$(date +"%d")
3838
TOOLCHAIN_VERSION="${YEAR}${MONTH}${DAY}"
3939
TOOLCHAIN_NAME="swift-wasm-DEVELOPMENT-SNAPSHOT-${YEAR}-${MONTH}-${DAY}-a"
40-
ARCHIVE="${TOOLCHAIN_NAME}-${OS_SUFFIX}.tar.gz"
4140

4241
PACKAGE_ARTIFACT="$SOURCE_PATH/swift-wasm-DEVELOPMENT-SNAPSHOT-${OS_SUFFIX}.tar.gz"
4342

@@ -60,12 +59,13 @@ HOST_BUILD_DIR=$HOST_BUILD_ROOT/Ninja-Release
6059
TARGET_BUILD_DIR=$TARGET_BUILD_ROOT/Ninja-Release
6160

6261
# Avoid clang headers symlink issues
63-
mkdir -p $HOST_TOOLCHAIN_SDK/usr/lib/clang/10.0.0
62+
mkdir -p "$HOST_TOOLCHAIN_SDK/usr/lib/clang/10.0.0"
6463

6564
build_host_toolchain() {
6665
# Build the host toolchain and SDK first.
6766
env SWIFT_BUILD_ROOT="$HOST_BUILD_ROOT" \
68-
$SOURCE_PATH/swift/utils/build-script \
67+
"$SOURCE_PATH/swift/utils/build-script" \
68+
--preset-file="$UTILS_PATH/build-presets.ini" \
6969
--preset=$HOST_PRESET \
7070
--build-dir="$HOST_BUILD_DIR" \
7171
INSTALL_DESTDIR="$HOST_TOOLCHAIN_DESTDIR" \
@@ -74,7 +74,7 @@ build_host_toolchain() {
7474
}
7575

7676
build_target_toolchain() {
77-
mkdir -p $HOST_BUILD_DIR/
77+
mkdir -p "$HOST_BUILD_DIR/"
7878
# Copy the host build dir to reuse it.
7979
if [[ ! -e "$HOST_BUILD_DIR/llvm-$HOST_SUFFIX" ]]; then
8080
cp -r "$HOST_BUILD_DIR/llvm-$HOST_SUFFIX" "$TARGET_BUILD_DIR/llvm-$HOST_SUFFIX"
@@ -84,8 +84,9 @@ build_target_toolchain() {
8484

8585
# build the cross-compilled toolchain
8686
env SWIFT_BUILD_ROOT="$TARGET_BUILD_ROOT" \
87-
$SOURCE_PATH/swift/utils/build-script \
88-
--preset=$TARGET_PRESET --reconfigure \
87+
"$SOURCE_PATH/swift/utils/build-script" \
88+
--preset-file="$UTILS_PATH/build-presets.ini" \
89+
--preset=$TARGET_PRESET \
8990
--build-dir="$TARGET_BUILD_DIR" \
9091
INSTALL_DESTDIR="$TARGET_TOOLCHAIN_DESTDIR" \
9192
SOURCE_PATH="$SOURCE_PATH" \
@@ -94,11 +95,11 @@ build_target_toolchain() {
9495
DISPLAY_NAME_SHORT="${DISPLAY_NAME_SHORT}" \
9596
TOOLCHAIN_NAME="${TOOLCHAIN_NAME}" \
9697
TOOLCHAIN_VERSION="${TOOLCHAIN_VERSION}" \
97-
TOOLS_BIN_DIR="${HOST_TOOLCHAIN_SDK}/usr/bin" \
98+
LLVM_BIN_DIR="${HOST_TOOLCHAIN_SDK}/usr/bin" \
9899
C_CXX_LAUNCHER="$(which sccache)"
99100

100-
$UTILS_PATH/build-foundation.sh $TARGET_TOOLCHAIN_SDK
101-
$UTILS_PATH/build-xctest.sh $TARGET_TOOLCHAIN_SDK
101+
"$UTILS_PATH/build-foundation.sh" "$TARGET_TOOLCHAIN_SDK"
102+
"$UTILS_PATH/build-xctest.sh" "$TARGET_TOOLCHAIN_SDK"
102103

103104
}
104105

@@ -108,22 +109,22 @@ merge_toolchains() {
108109
cp -r "$HOST_TOOLCHAIN_DESTDIR" "$DIST_TOOLCHAIN_DESTDIR"
109110

110111
# Merge wasi-sdk and the toolchain
111-
cp -r $WASI_SDK_PATH/share/wasi-sysroot $DIST_TOOLCHAIN_SDK/usr/share
112+
cp -r "$WASI_SDK_PATH/share/wasi-sysroot" "$DIST_TOOLCHAIN_SDK/usr/share"
112113

113114
# Copy the target environment stdlib into the toolchain
114115
# Avoid copying usr/lib/swift/clang because our toolchain's one is a directory
115116
# but nightly's one is symbolic link. A simple copy fails to merge them.
116-
rsync -v -a $TARGET_TOOLCHAIN_SDK/usr/lib/ $DIST_TOOLCHAIN_SDK/usr/lib/ --exclude 'swift/clang'
117-
rsync -v -a $TARGET_TOOLCHAIN_SDK/usr/bin/ $DIST_TOOLCHAIN_SDK/usr/bin/
117+
rsync -v -a "$TARGET_TOOLCHAIN_SDK/usr/lib/" "$DIST_TOOLCHAIN_SDK/usr/lib/" --exclude 'swift/clang'
118+
rsync -v -a "$TARGET_TOOLCHAIN_SDK/usr/bin/" "$DIST_TOOLCHAIN_SDK/usr/bin/"
118119

119120
# Replace absolute sysroot path with relative path
120-
sed -i -e "s@\".*/include@\"../../../../share/wasi-sysroot/include@g" $DIST_TOOLCHAIN_SDK/usr/lib/swift/wasi/wasm32/wasi.modulemap
121+
sed -i -e "s@\".*/include@\"../../../../share/wasi-sysroot/include@g" "$DIST_TOOLCHAIN_SDK/usr/lib/swift/wasi/wasm32/wasi.modulemap"
121122
}
122123

123124
build_host_toolchain
124125
build_target_toolchain
125126

126127
merge_toolchains
127128

128-
cd $DIST_TOOLCHAIN_DESTDIR
129-
tar cfz $PACKAGE_ARTIFACT $TOOLCHAIN_NAME
129+
cd "$DIST_TOOLCHAIN_DESTDIR"
130+
tar cfz "$PACKAGE_ARTIFACT" "$TOOLCHAIN_NAME"

0 commit comments

Comments
 (0)