From de196940a25cf46dc2d0feb052807c6821454aed Mon Sep 17 00:00:00 2001 From: Yuta Saito Date: Sat, 3 Oct 2020 22:50:55 +0900 Subject: [PATCH 1/6] [WASM] Improve build script based on ShellCheck --- utils/webassembly/build-toolchain.sh | 37 +++++++++---------- utils/webassembly/install-wasi-sdk.sh | 14 +++---- .../webassembly/linux/install-dependencies.sh | 2 +- .../webassembly/macos/install-dependencies.sh | 2 +- 4 files changed, 27 insertions(+), 28 deletions(-) diff --git a/utils/webassembly/build-toolchain.sh b/utils/webassembly/build-toolchain.sh index a0bee16b75c08..22e32aab7c373 100755 --- a/utils/webassembly/build-toolchain.sh +++ b/utils/webassembly/build-toolchain.sh @@ -1,8 +1,8 @@ -#/bin/bash +#!/bin/bash set -ex -SOURCE_PATH="$(cd "$(dirname $0)/../../.." && pwd)" -UTILS_PATH="$(cd "$(dirname $0)" && pwd)" +SOURCE_PATH="$(cd "$(dirname "$0")/../../.." && pwd)" +UTILS_PATH="$(cd "$(dirname "$0")" && pwd)" WASI_SDK_PATH=$SOURCE_PATH/wasi-sdk @@ -14,9 +14,9 @@ case $(uname -s) in HOST_SUFFIX=macosx-x86_64 ;; Linux) - if [ $(grep RELEASE /etc/lsb-release) == "DISTRIB_RELEASE=18.04" ]; then + if [ "$(grep RELEASE /etc/lsb-release)" == "DISTRIB_RELEASE=18.04" ]; then OS_SUFFIX=ubuntu18.04 - elif [ $(grep RELEASE /etc/lsb-release) == "DISTRIB_RELEASE=20.04" ]; then + elif [ "$(grep RELEASE /etc/lsb-release)" == "DISTRIB_RELEASE=20.04" ]; then OS_SUFFIX=ubuntu20.04 else echo "Unknown Ubuntu version" @@ -37,7 +37,6 @@ MONTH=$(date +"%m") DAY=$(date +"%d") TOOLCHAIN_VERSION="${YEAR}${MONTH}${DAY}" TOOLCHAIN_NAME="swift-wasm-DEVELOPMENT-SNAPSHOT-${YEAR}-${MONTH}-${DAY}-a" -ARCHIVE="${TOOLCHAIN_NAME}-${OS_SUFFIX}.tar.gz" PACKAGE_ARTIFACT="$SOURCE_PATH/swift-wasm-DEVELOPMENT-SNAPSHOT-${OS_SUFFIX}.tar.gz" @@ -60,12 +59,12 @@ HOST_BUILD_DIR=$HOST_BUILD_ROOT/Ninja-Release TARGET_BUILD_DIR=$TARGET_BUILD_ROOT/Ninja-Release # Avoid clang headers symlink issues -mkdir -p $HOST_TOOLCHAIN_SDK/usr/lib/clang/10.0.0 +mkdir -p "$HOST_TOOLCHAIN_SDK/usr/lib/clang/10.0.0" build_host_toolchain() { # Build the host toolchain and SDK first. env SWIFT_BUILD_ROOT="$HOST_BUILD_ROOT" \ - $SOURCE_PATH/swift/utils/build-script \ + "$SOURCE_PATH/swift/utils/build-script" \ --preset=$HOST_PRESET \ --build-dir="$HOST_BUILD_DIR" \ INSTALL_DESTDIR="$HOST_TOOLCHAIN_DESTDIR" \ @@ -74,7 +73,7 @@ build_host_toolchain() { } build_target_toolchain() { - mkdir -p $HOST_BUILD_DIR/ + mkdir -p "$HOST_BUILD_DIR/" # Copy the host build dir to reuse it. if [[ ! -e "$HOST_BUILD_DIR/llvm-$HOST_SUFFIX" ]]; then cp -r "$HOST_BUILD_DIR/llvm-$HOST_SUFFIX" "$TARGET_BUILD_DIR/llvm-$HOST_SUFFIX" @@ -84,8 +83,8 @@ build_target_toolchain() { # build the cross-compilled toolchain env SWIFT_BUILD_ROOT="$TARGET_BUILD_ROOT" \ - $SOURCE_PATH/swift/utils/build-script \ - --preset=$TARGET_PRESET --reconfigure \ + "$SOURCE_PATH/swift/utils/build-script" \ + --preset=$TARGET_PRESET \ --build-dir="$TARGET_BUILD_DIR" \ INSTALL_DESTDIR="$TARGET_TOOLCHAIN_DESTDIR" \ SOURCE_PATH="$SOURCE_PATH" \ @@ -97,8 +96,8 @@ build_target_toolchain() { TOOLS_BIN_DIR="${HOST_TOOLCHAIN_SDK}/usr/bin" \ C_CXX_LAUNCHER="$(which sccache)" - $UTILS_PATH/build-foundation.sh $TARGET_TOOLCHAIN_SDK - $UTILS_PATH/build-xctest.sh $TARGET_TOOLCHAIN_SDK + "$UTILS_PATH/build-foundation.sh" "$TARGET_TOOLCHAIN_SDK" + "$UTILS_PATH/build-xctest.sh" "$TARGET_TOOLCHAIN_SDK" } @@ -108,16 +107,16 @@ merge_toolchains() { cp -r "$HOST_TOOLCHAIN_DESTDIR" "$DIST_TOOLCHAIN_DESTDIR" # Merge wasi-sdk and the toolchain - cp -r $WASI_SDK_PATH/share/wasi-sysroot $DIST_TOOLCHAIN_SDK/usr/share + cp -r "$WASI_SDK_PATH/share/wasi-sysroot" "$DIST_TOOLCHAIN_SDK/usr/share" # Copy the target environment stdlib into the toolchain # Avoid copying usr/lib/swift/clang because our toolchain's one is a directory # but nightly's one is symbolic link. A simple copy fails to merge them. - rsync -v -a $TARGET_TOOLCHAIN_SDK/usr/lib/ $DIST_TOOLCHAIN_SDK/usr/lib/ --exclude 'swift/clang' - rsync -v -a $TARGET_TOOLCHAIN_SDK/usr/bin/ $DIST_TOOLCHAIN_SDK/usr/bin/ + rsync -v -a "$TARGET_TOOLCHAIN_SDK/usr/lib/" "$DIST_TOOLCHAIN_SDK/usr/lib/" --exclude 'swift/clang' + rsync -v -a "$TARGET_TOOLCHAIN_SDK/usr/bin/" "$DIST_TOOLCHAIN_SDK/usr/bin/" # Replace absolute sysroot path with relative path - sed -i -e "s@\".*/include@\"../../../../share/wasi-sysroot/include@g" $DIST_TOOLCHAIN_SDK/usr/lib/swift/wasi/wasm32/wasi.modulemap + sed -i -e "s@\".*/include@\"../../../../share/wasi-sysroot/include@g" "$DIST_TOOLCHAIN_SDK/usr/lib/swift/wasi/wasm32/wasi.modulemap" } build_host_toolchain @@ -125,5 +124,5 @@ build_target_toolchain merge_toolchains -cd $DIST_TOOLCHAIN_DESTDIR -tar cfz $PACKAGE_ARTIFACT $TOOLCHAIN_NAME +cd "$DIST_TOOLCHAIN_DESTDIR" +tar cfz "$PACKAGE_ARTIFACT" "$TOOLCHAIN_NAME" diff --git a/utils/webassembly/install-wasi-sdk.sh b/utils/webassembly/install-wasi-sdk.sh index 636480ecd7ab5..e9af50cd5f533 100755 --- a/utils/webassembly/install-wasi-sdk.sh +++ b/utils/webassembly/install-wasi-sdk.sh @@ -1,18 +1,18 @@ -#/bin/bash +#!/bin/bash set -ex -SOURCE_PATH="$( cd "$(dirname $0)/../../../" && pwd )" +SOURCE_PATH="$( cd "$(dirname "$0")/../../../" && pwd )" -cd $SOURCE_PATH +cd "$SOURCE_PATH" WASI_SDK_URL="https://github.com/swiftwasm/wasi-sdk/releases/download/0.2.2-swiftwasm/dist-$2.zip" [ ! -e dist-wasi-sdk.zip ] && \ - wget -O dist-wasi-sdk.zip $WASI_SDK_URL + wget -O dist-wasi-sdk.zip "$WASI_SDK_URL" unzip -u dist-wasi-sdk.zip -d . WASI_SDK_TAR_PATH=$(find . -type f -name "wasi-sdk-*") -WASI_SDK_FULL_NAME=$(basename $WASI_SDK_TAR_PATH -$1.tar.gz) -tar xfz $WASI_SDK_TAR_PATH +WASI_SDK_FULL_NAME=$(basename "$WASI_SDK_TAR_PATH" -"$1".tar.gz) +tar xfz "$WASI_SDK_TAR_PATH" rm -rf ./wasi-sdk -mv $WASI_SDK_FULL_NAME ./wasi-sdk +mv "$WASI_SDK_FULL_NAME" ./wasi-sdk diff --git a/utils/webassembly/linux/install-dependencies.sh b/utils/webassembly/linux/install-dependencies.sh index a0c1e1a7c94c9..9f6200729b0f3 100755 --- a/utils/webassembly/linux/install-dependencies.sh +++ b/utils/webassembly/linux/install-dependencies.sh @@ -1,4 +1,4 @@ -#/bin/bash +#!/bin/bash set -ex diff --git a/utils/webassembly/macos/install-dependencies.sh b/utils/webassembly/macos/install-dependencies.sh index 59394716e1b5a..5656953d01639 100755 --- a/utils/webassembly/macos/install-dependencies.sh +++ b/utils/webassembly/macos/install-dependencies.sh @@ -1,4 +1,4 @@ -#/bin/bash +#!/bin/bash set -ex From 1a27ecc0a758f9de37584d9a5adea28b7605a4df Mon Sep 17 00:00:00 2001 From: Yuta Saito Date: Sat, 3 Oct 2020 22:57:52 +0900 Subject: [PATCH 2/6] [WASM] Separate build-presets file --- utils/build-presets.ini | 110 --------------------------- utils/webassembly/build-presets.ini | 109 ++++++++++++++++++++++++++ utils/webassembly/build-toolchain.sh | 2 + 3 files changed, 111 insertions(+), 110 deletions(-) create mode 100644 utils/webassembly/build-presets.ini diff --git a/utils/build-presets.ini b/utils/build-presets.ini index ff14d391f824a..7d9a5c264c863 100644 --- a/utils/build-presets.ini +++ b/utils/build-presets.ini @@ -2567,113 +2567,3 @@ no-assertions mixin-preset=source_compat_suite_linux_base debug no-assertions - -#===----------------------------------------------------------------------===# -# Preset for the WebAssembly toolchain and SDK -#===----------------------------------------------------------------------===# - -[preset: webassembly] -no-assertions -release -cmake-c-launcher=%(C_CXX_LAUNCHER)s -cmake-cxx-launcher=%(C_CXX_LAUNCHER)s -skip-build-benchmarks -llvm-targets-to-build=X86;AArch64;WebAssembly -install-destdir=%(INSTALL_DESTDIR)s -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 -llvm-install-components=llvm-cov;llvm-profdata;IndexStore;clang;clang-resource-headers;compiler-rt;clangd;dsymutil;lld;llvm-ar;llvm-ranlib -install-swift -install-prefix=/%(TOOLCHAIN_NAME)s/usr -swift-darwin-supported-archs=x86_64 - -[preset: webassembly-host] - -mixin-preset=webassembly -extra-cmake-options= - -DSWIFT_BUILD_SOURCEKIT=FALSE - -DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE - -DSWIFT_BUILD_SYNTAXPARSERLIB=FALSE - -llbuild -swiftpm -indexstore-db -sourcekit-lsp -libcxx - -install-llvm -install-swift -install-llbuild -install-swiftpm -install-sourcekit-lsp -install-libcxx - -[preset: webassembly-linux-host] - -mixin-preset=webassembly-host - -libdispatch -libicu -foundation -xctest - -install-libicu -install-foundation -install-libdispatch -install-xctest - -skip-test-libicu -skip-test-foundation -skip-test-libdispatch -skip-test-xctest - -[preset: webassembly-target] - -mixin-preset=webassembly -wasm -verbose -# Install lld, compiler-rt and clang -install-llvm -build-stdlib-deployment-targets=wasi-wasm32 -build-swift-dynamic-sdk-overlay=false -build-swift-dynamic-stdlib=false -build-swift-static-sdk-overlay -build-swift-static-stdlib -stdlib-deployment-targets=wasi-wasm32 -wasi-sdk=%(SOURCE_PATH)s/wasi-sdk - -[preset: webassembly-linux-target] - -mixin-preset=webassembly-target -extra-cmake-options= - -DWASI_ICU_URL:STRING="https://github.com/swiftwasm/icu4c-wasi/releases/download/0.5.0/icu4c-wasi.tar.xz" - -DWASI_ICU_MD5:STRING="25943864ebbfff15cf5aee8d9d5cc4d7" - -DSWIFT_PRIMARY_VARIANT_SDK:STRING=WASI - -DSWIFT_PRIMARY_VARIANT_ARCH:STRING=wasm32 - -DSWIFT_SDKS='WASI;LINUX' - -DSWIFT_STDLIB_SINGLE_THREADED_RUNTIME=TRUE - -DSWIFT_BUILD_SOURCEKIT=FALSE - -DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE - -DSWIFT_BUILD_SYNTAXPARSERLIB=FALSE - -DCMAKE_AR="%(TOOLS_BIN_DIR)s/llvm-ar" - -DCMAKE_RANLIB="%(TOOLS_BIN_DIR)s/llvm-ranlib" - -DCLANG_COMPILER_RT_CMAKE_ARGS='-DCMAKE_TOOLCHAIN_FILE=%(SOURCE_PATH)s/swift/utils/webassembly/compiler-rt-cache.cmake' - -DSWIFTWASM_DISABLE_REFLECTION_TEST=TRUE - -[preset: webassembly-macos-target] - -mixin-preset=webassembly-target -extra-cmake-options= - -DWASI_ICU_URL:STRING="https://github.com/swiftwasm/icu4c-wasi/releases/download/0.5.0/icu4c-wasi.tar.xz" - -DWASI_ICU_MD5:STRING="25943864ebbfff15cf5aee8d9d5cc4d7" - -DSWIFT_PRIMARY_VARIANT_SDK:STRING=WASI - -DSWIFT_PRIMARY_VARIANT_ARCH:STRING=wasm32 - -DSWIFT_SDKS='WASI' - -DSWIFT_STDLIB_SINGLE_THREADED_RUNTIME=TRUE - -DSWIFT_OSX_x86_64_ICU_STATICLIB=TRUE - -DSWIFT_BUILD_SOURCEKIT=FALSE - -DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE - -DSWIFT_BUILD_SYNTAXPARSERLIB=FALSE - -DCMAKE_AR='%(TOOLS_BIN_DIR)s/llvm-ar' - -DCMAKE_RANLIB='%(TOOLS_BIN_DIR)s/llvm-ranlib' - -DCLANG_COMPILER_RT_CMAKE_ARGS='-DCMAKE_TOOLCHAIN_FILE=%(SOURCE_PATH)s/swift/utils/webassembly/compiler-rt-cache.cmake' - -DSWIFTWASM_DISABLE_REFLECTION_TEST=TRUE diff --git a/utils/webassembly/build-presets.ini b/utils/webassembly/build-presets.ini new file mode 100644 index 0000000000000..08828e9a03548 --- /dev/null +++ b/utils/webassembly/build-presets.ini @@ -0,0 +1,109 @@ +#===----------------------------------------------------------------------===# +# Preset for the WebAssembly toolchain and SDK +#===----------------------------------------------------------------------===# + +[preset: webassembly] +no-assertions +release +cmake-c-launcher=%(C_CXX_LAUNCHER)s +cmake-cxx-launcher=%(C_CXX_LAUNCHER)s +skip-build-benchmarks +llvm-targets-to-build=X86;AArch64;WebAssembly +install-destdir=%(INSTALL_DESTDIR)s +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 +llvm-install-components=llvm-cov;llvm-profdata;IndexStore;clang;clang-resource-headers;compiler-rt;clangd;dsymutil;lld;llvm-ar;llvm-ranlib +install-swift +install-prefix=/%(TOOLCHAIN_NAME)s/usr +swift-darwin-supported-archs=x86_64 + +[preset: webassembly-host] + +mixin-preset=webassembly +extra-cmake-options= + -DSWIFT_BUILD_SOURCEKIT=FALSE + -DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE + -DSWIFT_BUILD_SYNTAXPARSERLIB=FALSE + +llbuild +swiftpm +indexstore-db +sourcekit-lsp +libcxx + +install-llvm +install-swift +install-llbuild +install-swiftpm +install-sourcekit-lsp +install-libcxx + +[preset: webassembly-linux-host] + +mixin-preset=webassembly-host + +libdispatch +libicu +foundation +xctest + +install-libicu +install-foundation +install-libdispatch +install-xctest + +skip-test-libicu +skip-test-foundation +skip-test-libdispatch +skip-test-xctest + +[preset: webassembly-target] + +mixin-preset=webassembly +wasm +verbose +# Install lld, compiler-rt and clang +install-llvm +build-stdlib-deployment-targets=wasi-wasm32 +build-swift-dynamic-sdk-overlay=false +build-swift-dynamic-stdlib=false +build-swift-static-sdk-overlay +build-swift-static-stdlib +stdlib-deployment-targets=wasi-wasm32 +wasi-sdk=%(SOURCE_PATH)s/wasi-sdk + +[preset: webassembly-linux-target] + +mixin-preset=webassembly-target +extra-cmake-options= + -DWASI_ICU_URL:STRING="https://github.com/swiftwasm/icu4c-wasi/releases/download/0.5.0/icu4c-wasi.tar.xz" + -DWASI_ICU_MD5:STRING="25943864ebbfff15cf5aee8d9d5cc4d7" + -DSWIFT_PRIMARY_VARIANT_SDK:STRING=WASI + -DSWIFT_PRIMARY_VARIANT_ARCH:STRING=wasm32 + -DSWIFT_SDKS='WASI;LINUX' + -DSWIFT_STDLIB_SINGLE_THREADED_RUNTIME=TRUE + -DSWIFT_BUILD_SOURCEKIT=FALSE + -DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE + -DSWIFT_BUILD_SYNTAXPARSERLIB=FALSE + -DCMAKE_AR="%(TOOLS_BIN_DIR)s/llvm-ar" + -DCMAKE_RANLIB="%(TOOLS_BIN_DIR)s/llvm-ranlib" + -DCLANG_COMPILER_RT_CMAKE_ARGS='-DCMAKE_TOOLCHAIN_FILE=%(SOURCE_PATH)s/swift/utils/webassembly/compiler-rt-cache.cmake' + -DSWIFTWASM_DISABLE_REFLECTION_TEST=TRUE + +[preset: webassembly-macos-target] + +mixin-preset=webassembly-target +extra-cmake-options= + -DWASI_ICU_URL:STRING="https://github.com/swiftwasm/icu4c-wasi/releases/download/0.5.0/icu4c-wasi.tar.xz" + -DWASI_ICU_MD5:STRING="25943864ebbfff15cf5aee8d9d5cc4d7" + -DSWIFT_PRIMARY_VARIANT_SDK:STRING=WASI + -DSWIFT_PRIMARY_VARIANT_ARCH:STRING=wasm32 + -DSWIFT_SDKS='WASI' + -DSWIFT_STDLIB_SINGLE_THREADED_RUNTIME=TRUE + -DSWIFT_OSX_x86_64_ICU_STATICLIB=TRUE + -DSWIFT_BUILD_SOURCEKIT=FALSE + -DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE + -DSWIFT_BUILD_SYNTAXPARSERLIB=FALSE + -DCMAKE_AR='%(TOOLS_BIN_DIR)s/llvm-ar' + -DCMAKE_RANLIB='%(TOOLS_BIN_DIR)s/llvm-ranlib' + -DCLANG_COMPILER_RT_CMAKE_ARGS='-DCMAKE_TOOLCHAIN_FILE=%(SOURCE_PATH)s/swift/utils/webassembly/compiler-rt-cache.cmake' + -DSWIFTWASM_DISABLE_REFLECTION_TEST=TRUE \ No newline at end of file diff --git a/utils/webassembly/build-toolchain.sh b/utils/webassembly/build-toolchain.sh index 22e32aab7c373..f3f226bd5fb55 100755 --- a/utils/webassembly/build-toolchain.sh +++ b/utils/webassembly/build-toolchain.sh @@ -65,6 +65,7 @@ build_host_toolchain() { # Build the host toolchain and SDK first. env SWIFT_BUILD_ROOT="$HOST_BUILD_ROOT" \ "$SOURCE_PATH/swift/utils/build-script" \ + --preset-file="$UTILS_PATH/build-presets.ini" \ --preset=$HOST_PRESET \ --build-dir="$HOST_BUILD_DIR" \ INSTALL_DESTDIR="$HOST_TOOLCHAIN_DESTDIR" \ @@ -84,6 +85,7 @@ build_target_toolchain() { # build the cross-compilled toolchain env SWIFT_BUILD_ROOT="$TARGET_BUILD_ROOT" \ "$SOURCE_PATH/swift/utils/build-script" \ + --preset-file="$UTILS_PATH/build-presets.ini" \ --preset=$TARGET_PRESET \ --build-dir="$TARGET_BUILD_DIR" \ INSTALL_DESTDIR="$TARGET_TOOLCHAIN_DESTDIR" \ From 6e9a5229d24c9862fd3346d42e4541b00f0db5a8 Mon Sep 17 00:00:00 2001 From: Yuta Saito Date: Sat, 3 Oct 2020 23:02:54 +0900 Subject: [PATCH 3/6] [WASM] Rename TOOLS_BIN_DIR to LLVM_BIN_DIR --- utils/webassembly/build-presets.ini | 8 ++++---- utils/webassembly/build-toolchain.sh | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/utils/webassembly/build-presets.ini b/utils/webassembly/build-presets.ini index 08828e9a03548..3d18a263ce77e 100644 --- a/utils/webassembly/build-presets.ini +++ b/utils/webassembly/build-presets.ini @@ -84,8 +84,8 @@ extra-cmake-options= -DSWIFT_BUILD_SOURCEKIT=FALSE -DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE -DSWIFT_BUILD_SYNTAXPARSERLIB=FALSE - -DCMAKE_AR="%(TOOLS_BIN_DIR)s/llvm-ar" - -DCMAKE_RANLIB="%(TOOLS_BIN_DIR)s/llvm-ranlib" + -DCMAKE_AR="%(LLVM_BIN_DIR)s/llvm-ar" + -DCMAKE_RANLIB="%(LLVM_BIN_DIR)s/llvm-ranlib" -DCLANG_COMPILER_RT_CMAKE_ARGS='-DCMAKE_TOOLCHAIN_FILE=%(SOURCE_PATH)s/swift/utils/webassembly/compiler-rt-cache.cmake' -DSWIFTWASM_DISABLE_REFLECTION_TEST=TRUE @@ -103,7 +103,7 @@ extra-cmake-options= -DSWIFT_BUILD_SOURCEKIT=FALSE -DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE -DSWIFT_BUILD_SYNTAXPARSERLIB=FALSE - -DCMAKE_AR='%(TOOLS_BIN_DIR)s/llvm-ar' - -DCMAKE_RANLIB='%(TOOLS_BIN_DIR)s/llvm-ranlib' + -DCMAKE_AR='%(LLVM_BIN_DIR)s/llvm-ar' + -DCMAKE_RANLIB='%(LLVM_BIN_DIR)s/llvm-ranlib' -DCLANG_COMPILER_RT_CMAKE_ARGS='-DCMAKE_TOOLCHAIN_FILE=%(SOURCE_PATH)s/swift/utils/webassembly/compiler-rt-cache.cmake' -DSWIFTWASM_DISABLE_REFLECTION_TEST=TRUE \ No newline at end of file diff --git a/utils/webassembly/build-toolchain.sh b/utils/webassembly/build-toolchain.sh index f3f226bd5fb55..88a5b0851b1bb 100755 --- a/utils/webassembly/build-toolchain.sh +++ b/utils/webassembly/build-toolchain.sh @@ -95,7 +95,7 @@ build_target_toolchain() { DISPLAY_NAME_SHORT="${DISPLAY_NAME_SHORT}" \ TOOLCHAIN_NAME="${TOOLCHAIN_NAME}" \ TOOLCHAIN_VERSION="${TOOLCHAIN_VERSION}" \ - TOOLS_BIN_DIR="${HOST_TOOLCHAIN_SDK}/usr/bin" \ + LLVM_BIN_DIR="${HOST_TOOLCHAIN_SDK}/usr/bin" \ C_CXX_LAUNCHER="$(which sccache)" "$UTILS_PATH/build-foundation.sh" "$TARGET_TOOLCHAIN_SDK" From d8bf0fcdecc5ac244687e582c609ccbbdcfbd02a Mon Sep 17 00:00:00 2001 From: Yuta Saito Date: Sat, 3 Oct 2020 23:15:26 +0900 Subject: [PATCH 4/6] [WASM] Cleanup build-presets.ini to ease development build --- utils/webassembly/build-presets.ini | 45 +++++++++++++++++++++------- utils/webassembly/build-toolchain.sh | 8 ++--- 2 files changed, 39 insertions(+), 14 deletions(-) diff --git a/utils/webassembly/build-presets.ini b/utils/webassembly/build-presets.ini index 3d18a263ce77e..8fca4eac9df05 100644 --- a/utils/webassembly/build-presets.ini +++ b/utils/webassembly/build-presets.ini @@ -3,18 +3,22 @@ #===----------------------------------------------------------------------===# [preset: webassembly] -no-assertions -release cmake-c-launcher=%(C_CXX_LAUNCHER)s cmake-cxx-launcher=%(C_CXX_LAUNCHER)s skip-build-benchmarks llvm-targets-to-build=X86;AArch64;WebAssembly +swift-darwin-supported-archs=x86_64 + +[preset: webassembly-install] + +release +no-assertions +install-swift install-destdir=%(INSTALL_DESTDIR)s 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 llvm-install-components=llvm-cov;llvm-profdata;IndexStore;clang;clang-resource-headers;compiler-rt;clangd;dsymutil;lld;llvm-ar;llvm-ranlib -install-swift install-prefix=/%(TOOLCHAIN_NAME)s/usr -swift-darwin-supported-archs=x86_64 + [preset: webassembly-host] @@ -24,6 +28,11 @@ extra-cmake-options= -DSWIFT_ENABLE_SOURCEKIT_TESTS=FALSE -DSWIFT_BUILD_SYNTAXPARSERLIB=FALSE +[preset: webassembly-host-install] +mixin-preset= + webassembly-host + webassembly-install + llbuild swiftpm indexstore-db @@ -37,9 +46,9 @@ install-swiftpm install-sourcekit-lsp install-libcxx -[preset: webassembly-linux-host] +[preset: webassembly-linux-host-install] -mixin-preset=webassembly-host +mixin-preset=webassembly-host-install libdispatch libicu @@ -60,9 +69,6 @@ skip-test-xctest mixin-preset=webassembly wasm -verbose -# Install lld, compiler-rt and clang -install-llvm build-stdlib-deployment-targets=wasi-wasm32 build-swift-dynamic-sdk-overlay=false build-swift-dynamic-stdlib=false @@ -71,6 +77,15 @@ build-swift-static-stdlib stdlib-deployment-targets=wasi-wasm32 wasi-sdk=%(SOURCE_PATH)s/wasi-sdk + +[preset: webassembly-target-install] +mixin-preset= + webassembly-target + webassembly-install +# Install lld, compiler-rt and clang +install-llvm + + [preset: webassembly-linux-target] mixin-preset=webassembly-target @@ -106,4 +121,14 @@ extra-cmake-options= -DCMAKE_AR='%(LLVM_BIN_DIR)s/llvm-ar' -DCMAKE_RANLIB='%(LLVM_BIN_DIR)s/llvm-ranlib' -DCLANG_COMPILER_RT_CMAKE_ARGS='-DCMAKE_TOOLCHAIN_FILE=%(SOURCE_PATH)s/swift/utils/webassembly/compiler-rt-cache.cmake' - -DSWIFTWASM_DISABLE_REFLECTION_TEST=TRUE \ No newline at end of file + -DSWIFTWASM_DISABLE_REFLECTION_TEST=TRUE + +[preset: webassembly-linux-target-install] +mixin-preset= + webassembly-target-install + webassembly-linux-target + +[preset: webassembly-macos-target-install] +mixin-preset= + webassembly-target-install + webassembly-macos-target \ No newline at end of file diff --git a/utils/webassembly/build-toolchain.sh b/utils/webassembly/build-toolchain.sh index 88a5b0851b1bb..cc28c402cf6ea 100755 --- a/utils/webassembly/build-toolchain.sh +++ b/utils/webassembly/build-toolchain.sh @@ -9,8 +9,8 @@ WASI_SDK_PATH=$SOURCE_PATH/wasi-sdk case $(uname -s) in Darwin) OS_SUFFIX=osx - HOST_PRESET=webassembly-host - TARGET_PRESET=webassembly-macos-target + HOST_PRESET=webassembly-host-install + TARGET_PRESET=webassembly-macos-target-install HOST_SUFFIX=macosx-x86_64 ;; Linux) @@ -22,8 +22,8 @@ case $(uname -s) in echo "Unknown Ubuntu version" exit 1 fi - HOST_PRESET=webassembly-linux-host - TARGET_PRESET=webassembly-linux-target + HOST_PRESET=webassembly-linux-host-install + TARGET_PRESET=webassembly-linux-target-install HOST_SUFFIX=linux-x86_64 ;; *) From 374cbc85b719ac27ff9acf021d7a5f2a6691f806 Mon Sep 17 00:00:00 2001 From: Yuta Saito Date: Sat, 3 Oct 2020 23:50:04 +0900 Subject: [PATCH 5/6] [WASM] Improve dependency install script --- utils/webassembly/install-wasi-sdk.sh | 17 +++++++++++------ utils/webassembly/macos/install-dependencies.sh | 8 +++++--- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/utils/webassembly/install-wasi-sdk.sh b/utils/webassembly/install-wasi-sdk.sh index e9af50cd5f533..acccbc0184cbb 100755 --- a/utils/webassembly/install-wasi-sdk.sh +++ b/utils/webassembly/install-wasi-sdk.sh @@ -1,6 +1,6 @@ #!/bin/bash -set -ex +set -eux SOURCE_PATH="$( cd "$(dirname "$0")/../../../" && pwd )" @@ -8,11 +8,16 @@ cd "$SOURCE_PATH" WASI_SDK_URL="https://github.com/swiftwasm/wasi-sdk/releases/download/0.2.2-swiftwasm/dist-$2.zip" -[ ! -e dist-wasi-sdk.zip ] && \ - wget -O dist-wasi-sdk.zip "$WASI_SDK_URL" +workdir=$(mktemp -d) +pushd $workdir + +wget -O dist-wasi-sdk.zip "$WASI_SDK_URL" unzip -u dist-wasi-sdk.zip -d . -WASI_SDK_TAR_PATH=$(find . -type f -name "wasi-sdk-*") + +WASI_SDK_TAR_PATH=$(find "$workdir" -type f -name "wasi-sdk-*") WASI_SDK_FULL_NAME=$(basename "$WASI_SDK_TAR_PATH" -"$1".tar.gz) tar xfz "$WASI_SDK_TAR_PATH" -rm -rf ./wasi-sdk -mv "$WASI_SDK_FULL_NAME" ./wasi-sdk +popd + +rm -rf $SOURCE_PATH/wasi-sdk +mv "$workdir/$WASI_SDK_FULL_NAME" $SOURCE_PATH/wasi-sdk diff --git a/utils/webassembly/macos/install-dependencies.sh b/utils/webassembly/macos/install-dependencies.sh index 5656953d01639..3f805347a8fdd 100755 --- a/utils/webassembly/macos/install-dependencies.sh +++ b/utils/webassembly/macos/install-dependencies.sh @@ -2,10 +2,12 @@ set -ex -brew uninstall $(brew list | grep python@2) -brew install cmake ninja llvm sccache wasmer +if [[ ! -z "$CI" ]]; then + brew uninstall $(brew list | grep python@2) + brew install cmake ninja llvm sccache wasmer +fi -SOURCE_PATH="$( cd "$(dirname $0)/../../../../" && pwd )" +SOURCE_PATH="$(cd "$(dirname $0)/../../../../" && pwd)" SWIFT_PATH=$SOURCE_PATH/swift cd $SWIFT_PATH From a0a58eb9e3475542a9f32b9417db206de5e5d4c3 Mon Sep 17 00:00:00 2001 From: Yuta Saito Date: Sun, 4 Oct 2020 18:33:57 +0900 Subject: [PATCH 6/6] Run non-destructive installation command on non-CI env --- utils/webassembly/macos/install-dependencies.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/utils/webassembly/macos/install-dependencies.sh b/utils/webassembly/macos/install-dependencies.sh index bb44ac4d5ef00..85cf0a30c1105 100755 --- a/utils/webassembly/macos/install-dependencies.sh +++ b/utils/webassembly/macos/install-dependencies.sh @@ -4,14 +4,14 @@ set -ex if [[ ! -z "$CI" ]]; then brew uninstall $(brew list | grep python@2) - brew install cmake ninja llvm sccache - - # Install latest wasmer - if [ ! -e ~/.wasmer/bin/wasmer ]; then - curl https://get.wasmer.io -sSfL | sh - fi fi +brew install cmake ninja llvm sccache + +# Install latest wasmer +if [ ! -e ~/.wasmer/bin/wasmer ]; then + curl https://get.wasmer.io -sSfL | sh +fi SOURCE_PATH="$(cd "$(dirname $0)/../../../../" && pwd)" SWIFT_PATH=$SOURCE_PATH/swift