From aed1eb2d47731d4a7dc58bc7a217206542650956 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Sun, 17 Nov 2019 20:51:26 +0000 Subject: [PATCH 1/7] Move packaging scripts from swiftwasm-package-sdk --- .github/workflows/main.yml | 58 +++++++----- utils/wasm/.gitignore | 5 + utils/wasm/README.md | 23 +++++ utils/wasm/build-linux-package.sh | 9 ++ utils/wasm/build-mac-package.sh | 9 ++ utils/wasm/build-packages.sh | 5 + utils/wasm/copy-shared-files.sh | 4 + utils/wasm/download-installable-prebuilts.sh | 7 ++ utils/wasm/download-prebuilts.sh | 8 ++ utils/wasm/linux/unpack-prebuilts.sh | 20 ++++ utils/wasm/macos/unpack-prebuilts.sh | 30 ++++++ utils/wasm/remove-swift-extra-files.sh | 26 ++++++ utils/wasm/remove-wasi-extra-files.sh | 10 ++ utils/wasm/sdkroot/README.md | 87 ++++++++++++++++++ utils/wasm/sdkroot/example/hello.swift | 1 + utils/wasm/sdkroot/extra_objs/fakelocaltime.o | Bin 0 -> 423 bytes utils/wasm/sdkroot/extra_objs/fakepthread.o | Bin 0 -> 4061 bytes utils/wasm/sdkroot/extra_objs/swift_end.o | Bin 0 -> 576 bytes utils/wasm/sdkroot/extra_objs/swift_start.o | Bin 0 -> 584 bytes .../sdkroot/extra_utils/generateModulemap.sh | 2 + utils/wasm/sdkroot/swiftwasm | 42 +++++++++ 21 files changed, 321 insertions(+), 25 deletions(-) create mode 100644 utils/wasm/.gitignore create mode 100644 utils/wasm/README.md create mode 100755 utils/wasm/build-linux-package.sh create mode 100755 utils/wasm/build-mac-package.sh create mode 100755 utils/wasm/build-packages.sh create mode 100755 utils/wasm/copy-shared-files.sh create mode 100755 utils/wasm/download-installable-prebuilts.sh create mode 100755 utils/wasm/download-prebuilts.sh create mode 100755 utils/wasm/linux/unpack-prebuilts.sh create mode 100755 utils/wasm/macos/unpack-prebuilts.sh create mode 100755 utils/wasm/remove-swift-extra-files.sh create mode 100755 utils/wasm/remove-wasi-extra-files.sh create mode 100644 utils/wasm/sdkroot/README.md create mode 100644 utils/wasm/sdkroot/example/hello.swift create mode 100644 utils/wasm/sdkroot/extra_objs/fakelocaltime.o create mode 100644 utils/wasm/sdkroot/extra_objs/fakepthread.o create mode 100644 utils/wasm/sdkroot/extra_objs/swift_end.o create mode 100644 utils/wasm/sdkroot/extra_objs/swift_start.o create mode 100755 utils/wasm/sdkroot/extra_utils/generateModulemap.sh create mode 100755 utils/wasm/sdkroot/swiftwasm diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8c81e1643c433..f7be1146588f6 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -3,10 +3,10 @@ name: CI on: push: branches: - - swiftwasm + - swiftwasm pull_request: branches: - - swiftwasm + - swiftwasm jobs: linux_build: @@ -14,34 +14,39 @@ jobs: runs-on: ubuntu-18.04 steps: - - uses: actions/checkout@v1 - - name: Build Linux installable archive - run: ./ci-linux.sh - - name: Upload Linux installable archive - uses: actions/upload-artifact@v1 - with: - name: linux-installable - path: ../swiftwasm-linux.tar.gz + - uses: actions/checkout@v1 + - name: Build Linux installable archive + run: ./ci-linux.sh + - name: Upload Linux installable archive + uses: actions/upload-artifact@v1 + with: + name: linux-installable + path: ../swiftwasm-linux.tar.gz macos_build: timeout-minutes: 0 runs-on: macOS-10.14 steps: - - uses: actions/checkout@v1 - - name: Build macOS installable archive - run: ./ci-mac.sh - - name: Upload macOS installable archive - uses: actions/upload-artifact@v1 - with: - name: macos-installable - path: ../swiftwasm-macos.tar.gz + - uses: actions/checkout@v1 + - name: Build macOS installable archive + run: ./ci-mac.sh + - name: Upload macOS installable archive + uses: actions/upload-artifact@v1 + with: + name: macos-installable + path: ../swiftwasm-macos.tar.gz + - name: Upload packaging scripts + uses: actions/upload-artifact@v1 + with: + name: packaging-scripts + path: utils/wasm package: name: Build SwiftWasm packages needs: - - linux_build - - macos_build + - linux_build + - macos_build runs-on: ubuntu-18.04 steps: - name: Download installable Linux archive @@ -52,11 +57,14 @@ jobs: uses: actions/download-artifact@v1 with: name: macos-installable + - name: Download packaging scripts + uses: actions/download-artifact@v1 + with: + name: packaging-scripts - name: Build the packages shell: bash run: | - git clone https://github.com/swiftwasm/swiftwasm-package-sdk.git - cd swiftwasm-package-sdk + cd packaging-scripts ./download-prebuilts.sh cp ../linux-installable/swiftwasm-linux.tar.gz \ @@ -74,19 +82,19 @@ jobs: uses: actions/upload-artifact@v1 with: name: macos-package - path: swiftwasm-package-sdk/output/swiftwasm-sdk-macos.tar.xz + path: packaging-scripts/output/swiftwasm-sdk-macos.tar.xz - name: Upload Linux package uses: actions/upload-artifact@v1 with: name: linux-package - path: swiftwasm-package-sdk/output/swiftwasm-sdk-linux.tar.xz + path: packaging-scripts/output/swiftwasm-sdk-linux.tar.xz - name: Upload hello.wasm compiled with Linux package uses: actions/upload-artifact@v1 with: name: linux-hello.wasm - path: swiftwasm-package-sdk/output/swiftwasm-sdk/hello.wasm + path: packaging-scripts/output/swiftwasm-sdk/hello.wasm macos_smoke_test: name: Compile hello.swift on macOS diff --git a/utils/wasm/.gitignore b/utils/wasm/.gitignore new file mode 100644 index 0000000000000..411f44532e7bc --- /dev/null +++ b/utils/wasm/.gitignore @@ -0,0 +1,5 @@ +compiler +swiftwasm-sdk +prebuilt +output +tmpdir diff --git a/utils/wasm/README.md b/utils/wasm/README.md new file mode 100644 index 0000000000000..106f4fc35d84d --- /dev/null +++ b/utils/wasm/README.md @@ -0,0 +1,23 @@ +Creates packages containing everything needed to build WebAssembly programs with Swift. + +# Building + +``` +./download-prebuilts.sh +./download-installable-prebuilts.sh +./build-packages.sh +``` + +# Contents of package + +- Swift toolchain from [swiftwasm-sdk](https://github.com/swiftwasm/swiftwasm-sdk) +- WASI modified sysroot from [wasi-sdk](https://github.com/swiftwasm/wasi-sdk) +- libicu from [icu4c-wasi](https://github.com/swiftwasm/icu4c-wasi) +- linking helpers from [swiftwasm-wasi-stubs](https://github.com/swiftwasm/swiftwasm-wasi-stubs) +- wasi-ld, either from wasi-sdk (on Linux) or upstream LLVM 9.0 (on Mac) +- build script for compiling a Swift file to a .wasm +- a Getting Started guide + +# Notes + +This shares a lot with the [swiftwasm-compile-service](https://github.com/swiftwasm/swiftwasm-compile-service). diff --git a/utils/wasm/build-linux-package.sh b/utils/wasm/build-linux-package.sh new file mode 100755 index 0000000000000..685d5c247a18e --- /dev/null +++ b/utils/wasm/build-linux-package.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +echo "Unpacking Linux prebuilts" +mkdir -p output +cd linux +./unpack-prebuilts.sh +echo "Compressing" +tar cJf ../output/swiftwasm-sdk-linux.tar.xz swiftwasm-sdk +cd .. diff --git a/utils/wasm/build-mac-package.sh b/utils/wasm/build-mac-package.sh new file mode 100755 index 0000000000000..f131febe97f4e --- /dev/null +++ b/utils/wasm/build-mac-package.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +echo "Unpacking macOS prebuilts" +mkdir -p output +cd macos +./unpack-prebuilts.sh +echo "Compressing macOS package" +tar cJf ../output/swiftwasm-sdk-macos.tar.xz swiftwasm-sdk +cd .. \ No newline at end of file diff --git a/utils/wasm/build-packages.sh b/utils/wasm/build-packages.sh new file mode 100755 index 0000000000000..9f5bf6e9a9fc9 --- /dev/null +++ b/utils/wasm/build-packages.sh @@ -0,0 +1,5 @@ +#!/bin/bash +set -e +rm -rf output || true +./build-linux-package.sh +./build-mac-package.sh \ No newline at end of file diff --git a/utils/wasm/copy-shared-files.sh b/utils/wasm/copy-shared-files.sh new file mode 100755 index 0000000000000..7e1ce8a81832d --- /dev/null +++ b/utils/wasm/copy-shared-files.sh @@ -0,0 +1,4 @@ +#!/bin/bash +set -e +cp -r ../sdkroot/* compiler/ +cp ../linux/compiler/opt/swiftwasm-sdk/lib/swift/wasm/wasm32/glibc.modulemap compiler/extra_utils diff --git a/utils/wasm/download-installable-prebuilts.sh b/utils/wasm/download-installable-prebuilts.sh new file mode 100755 index 0000000000000..c407580547fc4 --- /dev/null +++ b/utils/wasm/download-installable-prebuilts.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -e +mkdir -p prebuilt +cd prebuilt +wget -O swiftwasm-linux.tar.gz https://github.com/swiftwasm/swiftwasm-sdk/releases/download/20191112.1.linux/swiftwasm.tar.gz +# Mac specific +wget -O swiftwasm-macos.tar.gz https://github.com/swiftwasm/swiftwasm-sdk/releases/download/20191112.1.mac/swiftwasm-mac.tar.gz diff --git a/utils/wasm/download-prebuilts.sh b/utils/wasm/download-prebuilts.sh new file mode 100755 index 0000000000000..5ee1c8b3bf756 --- /dev/null +++ b/utils/wasm/download-prebuilts.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -e +mkdir -p prebuilt +cd prebuilt +wget https://github.com/swiftwasm/wasi-sdk/releases/download/20191022.1/wasi-sdk-4.39g3025a5f47c04-linux.tar.gz +wget https://github.com/swiftwasm/icu4c-wasi/releases/download/20190421.3/icu4c-wasi.tar.xz +# Mac specific +wget http://releases.llvm.org/9.0.0/clang+llvm-9.0.0-x86_64-darwin-apple.tar.xz diff --git a/utils/wasm/linux/unpack-prebuilts.sh b/utils/wasm/linux/unpack-prebuilts.sh new file mode 100755 index 0000000000000..a5d5f669aa39f --- /dev/null +++ b/utils/wasm/linux/unpack-prebuilts.sh @@ -0,0 +1,20 @@ +#!/bin/bash +set -e +rm -rf swiftwasm-sdk compiler +mkdir swiftwasm-sdk +ln -s swiftwasm-sdk compiler +cd compiler +untar="../../prebuilt/wasi-sdk-"*"-linux.tar.gz +../../prebuilt/swiftwasm-linux.tar.gz +../../prebuilt/icu4c-wasi.tar.xz" +for i in $untar +do + echo $i + tar xf $i +done +cd .. +mv "compiler/wasi-sdk-"* "compiler/wasi-sdk" +mv compiler/wasi-sdk/share/wasi-sysroot compiler/wasi-sdk/share/sysroot +../remove-swift-extra-files.sh || true +../remove-wasi-extra-files.sh || true +../copy-shared-files.sh || true diff --git a/utils/wasm/macos/unpack-prebuilts.sh b/utils/wasm/macos/unpack-prebuilts.sh new file mode 100755 index 0000000000000..169dd8cde7ce5 --- /dev/null +++ b/utils/wasm/macos/unpack-prebuilts.sh @@ -0,0 +1,30 @@ +#!/bin/bash +set -e +rm -rf swiftwasm-sdk compiler tmpdir +mkdir swiftwasm-sdk tmpdir +ln -s swiftwasm-sdk compiler +cd compiler +untar="../../prebuilt/wasi-sdk-"*"-linux.tar.gz +../../prebuilt/swiftwasm-macos.tar.gz +../../prebuilt/icu4c-wasi.tar.xz" +for i in $untar +do + echo $i + tar xf $i +done +# Mac: unpack the Linux one and copy stdlibs +cd .. +cd tmpdir +tar xf ../../prebuilt/clang+llvm-*-x86_64-darwin-apple.tar.xz +tar xf ../../prebuilt/swiftwasm-linux.tar.gz +cd .. +mv "compiler/wasi-sdk-"* "compiler/wasi-sdk" +mv compiler/wasi-sdk/share/wasi-sysroot compiler/wasi-sdk/share/sysroot +../remove-swift-extra-files.sh || true +rm -r compiler/wasi-sdk/bin +mkdir compiler/wasi-sdk/bin +cp tmpdir/clang+llvm-*-x86_64-darwin-apple/bin/wasm-ld compiler/wasi-sdk/bin +cp -a tmpdir/opt/swiftwasm-sdk/lib/swift/wasm compiler/opt/swiftwasm-sdk/lib/swift/wasm +cp -a tmpdir/opt/swiftwasm-sdk/lib/swift_static compiler/opt/swiftwasm-sdk/lib/swift_static +# ok, finally copy over the shared files +../copy-shared-files.sh || true diff --git a/utils/wasm/remove-swift-extra-files.sh b/utils/wasm/remove-swift-extra-files.sh new file mode 100755 index 0000000000000..2e4e2d541a45f --- /dev/null +++ b/utils/wasm/remove-swift-extra-files.sh @@ -0,0 +1,26 @@ +#!/bin/bash +basepath="compiler/opt/swiftwasm-sdk" +filestoremove="bin/sil-* +bin/lldb* +bin/sourcekitd-* +bin/swift-api-digester +bin/swift-autolink-extract +bin/swift-demangle +bin/swift-demangle-yamldump +bin/swift-format +bin/swift-llvm-opt +bin/swift-refactor +bin/swift-reflection-dump +bin/swift-*-test +lib/libsourcekitdInProc.so +lib/swift/clang/lib/linux/* +lib/swift_static/linux/* +lib/swift/linux/x86_64/* +lib/swift/linux/*" +for i in $filestoremove +do + echo $basepath/$i + rm $basepath/$i +done +# Mac only +rm -r $basepath/lib/swift/macosx $basepath/lib/sourcekitd.framework diff --git a/utils/wasm/remove-wasi-extra-files.sh b/utils/wasm/remove-wasi-extra-files.sh new file mode 100755 index 0000000000000..19ac34009874f --- /dev/null +++ b/utils/wasm/remove-wasi-extra-files.sh @@ -0,0 +1,10 @@ +#!/bin/bash +basepath="compiler/wasi-sdk" +filestoremove="bin/clang* +bin/llvm* +bin/llc" +for i in $filestoremove +do + echo $basepath/$i + rm $basepath/$i +done diff --git a/utils/wasm/sdkroot/README.md b/utils/wasm/sdkroot/README.md new file mode 100644 index 0000000000000..db8048d2a504d --- /dev/null +++ b/utils/wasm/sdkroot/README.md @@ -0,0 +1,87 @@ +SwiftWasm: Getting started +========================== + +Thank you for trying SwiftWasm! Here's how to get started. + +Please visit our website at https://swiftwasm.org for the latest updates. + + +Install dependencies +==================== + +Before running SwiftWasm, you will need to install some dependencies. + +Ubuntu: + +``` +sudo apt-get install libatomic1 +``` + +macOS: + +(No dependencies needed.) + +Windows: + +Install Windows Subsystem for Linux, then follow the Ubuntu instructions. + + + + +Compile SwiftWasm +================= + +Run + +``` +./swiftwasm example/hello.swift hello.wasm +``` + +To compile example/hello.swift to hello.wasm. + + + + +Running Wasm files +================== + +To run the resulting hello.wasm file: + +- Visit https://swiftwasm.org/polyfill/ +- select "Browse", and choose the hello.wasm file +- you should get output in the textbox. + +This polyfill should work in Firefox 66, Chrome 74, and Safari 12.1. + +You can also run the file outside a browser with: + +- Wasmtime https://github.com/CraneStation/wasmtime +- Lucet https://github.com/swiftwasm/lucet/tree/swiftwasm +- or any other WASI-compatible WebAssembly runtime. + + + + +Questions and support +===================== + +If you have any questions, please open an issue on + +https://github.com/swiftwasm/swift + + + +Third-party licenses +==================== + +This package contains components with their own license requirements. + +Swift compiler: https://github.com/apple/swift/blob/master/LICENSE.txt + +LLVM/Clang: https://github.com/llvm/llvm-project/blob/master/lld/LICENSE.TXT + +WASI sysroot: https://github.com/CraneStation/wasi-sysroot/blob/master/LICENSE + +ICU: https://github.com/unicode-org/icu/blob/master/icu4c/LICENSE + +WASI polyfill: https://github.com/CraneStation/wasmtime/blob/master/wasmtime-wasi/LICENSE diff --git a/utils/wasm/sdkroot/example/hello.swift b/utils/wasm/sdkroot/example/hello.swift new file mode 100644 index 0000000000000..e61506705879c --- /dev/null +++ b/utils/wasm/sdkroot/example/hello.swift @@ -0,0 +1 @@ +print("Hello, 🌐!") diff --git a/utils/wasm/sdkroot/extra_objs/fakelocaltime.o b/utils/wasm/sdkroot/extra_objs/fakelocaltime.o new file mode 100644 index 0000000000000000000000000000000000000000..904d3a6dedc6108030be87a4d3012e63e153ed9a GIT binary patch literal 423 zcmb7Au};G<5WTaVCN!0rg#ocRf`O^(#KKeo8xn|x(M^M?OcSSaTqLGM%=|zHet-|) zTVUo#uoGZl!^7Er@7_DTgRCwQ0PwkOTOf06u$hy_Rr2W(Mx}lj3sER7Gb2h_R_2ia zdU#I=rEisyxfORCom*9DVY5XcaSiY-tZkOB#JW=2N<*7Y7#CHZ6;_o}7-#k52O$hU zy88yB=D@vLNO6{=gd-=blyZ95fwP`soN_oOBTkRVC=GbPS<*8DCkh=K-lq|ddJ!Lt zcBFrG3y1@TC?_L|aC9ITQlIYcc88F=WO+petmMkxRl3h!?F&bbB2?X12^zLL) h*OR|31mMNfLnEEp5leBaE@>~2}=BA9S^yPfa% zd++<+d%y4P6ujml0RZyO%E}5Tv$WMBtyv;JSS$V;U=~P=UWsw$2hZnSccB{iUg$3R zi}i4s0+GuTu3HT%)zB|T?%YyPj;i&*jl6veK4}279h;F?uDOkRHHiF>wPHsx*9h@> z4yYt4-oAPm0b{4+hEqTY9#4J{pz$Zi$9M%7sd3_{WbGonwH^5@;LwugFq_(}=I|0Y zip_19p+opZW~gQ>d2_l$CP=0>v1!d=Nai+clkYFUSjkY zSkGv{gofn2*hw|)x#9?0bu>&t+wJHj;uzRs+wOPvij~YJ*+E`^oB35W^oK`O98ka<;d4Jd&*x!bGx zd!zlK?^PbRmxAU}qk%uQe#M?{8UUq9bEJ`=Zn+**+=E^OfaIgZ%%@8gAKxAJ zm5d-T?c;x>qTCO-#bdIHlOsTBlV1 zww4Y9LPxu5k*?~XD?h&|=i+cNtXI6qE2bje(OI~&?g1YDH(DlWfa!I(9XSF#v<|OJ zeCrdtqy{jxPQ+xwI_ogffxBLmWd3gH6D6%R{%?6LE_LW*M~hE9{p3^Z8KDyK7!l9n z+a?jG2@x03ZlRr~L|j1o1MMUu;w!XEjIe7ArFfGK13$v^0B>^(PVs^`%Zd1c6ZRuV z_zK4heM7>B6$_3j1#v<_80{Cdn+joXsYrWQ#R+pxMcSvT1z)NK@hzU_CzY_jCA=ag zfFBbGuL=v^69w^+AmVF5*bf5X%VG=g>k@uRv*0zYAWmyU{DpQzC+vM4Dd+Sl;GgM8 zxu9EcQ7?$^bt3*m_!R@;V}=9#q=E2R!-9{Eg81AZ;yZ(|-z0q9*be+<6XD~g1t-jc u_`pOM?FQPZAtKJB{fhQxj)+gtzR3}GIft&l=XL?Vl|$Fphb=fhT=)lRhUi}a literal 0 HcmV?d00001 diff --git a/utils/wasm/sdkroot/extra_objs/swift_end.o b/utils/wasm/sdkroot/extra_objs/swift_end.o new file mode 100644 index 0000000000000000000000000000000000000000..6c002c6ac575353b02fe2a4bd871105524a4af40 GIT binary patch literal 576 zcmZvXK~BRk5JktSOCuFQ7e%z9JI=rXdXkZGCdk6EBin$o3*sOwxCJ+0!%Yx-7KjAd z3ZdD3z5i$QKL}qj0LWh3wuNj)=Kd5>D?`FzMU{0;2CT-x)tg^ugBX zA55}D1d;WDv%`R+ayDUgSo`4k zgjFiiMODlvEaAPCp*fnc9MxJ#S^%Fv|BhZAZr%MuqlEzLXpeRQoczIE?E%CM1BlHB L5c>`wwgmVAh?dGa literal 0 HcmV?d00001 diff --git a/utils/wasm/sdkroot/extra_objs/swift_start.o b/utils/wasm/sdkroot/extra_objs/swift_start.o new file mode 100644 index 0000000000000000000000000000000000000000..45fb95dc614ef06434518de07567f7e3d276274e GIT binary patch literal 584 zcmZ{fK~BRk5JktSOCuFQ7ZoZ}mc0T8=t)M#agc>$NA^&ZT@VN10Ei2)V9zDE0!y|e z$W~|xyRY~EjQ$4^Y6bw=Yu9y<&6M4rBN}a$@K~$b`8ESK;7depOYM~;tnREN?JSbG zHi|U>%lF|vhaD{W=iAE%?06D+5~oS5l2|9PNur42`LTbu=zH91dz0l~55srHH;93R zCk*$xqAP5?BPX2+0G#pdKQ2mVE9Yxrr3!3F7Dq{H8`aMxQ3?{-khqvgcva1&yq=pt zo=Ad;^{#$+`dl literal 0 HcmV?d00001 diff --git a/utils/wasm/sdkroot/extra_utils/generateModulemap.sh b/utils/wasm/sdkroot/extra_utils/generateModulemap.sh new file mode 100755 index 0000000000000..940e5a413339b --- /dev/null +++ b/utils/wasm/sdkroot/extra_utils/generateModulemap.sh @@ -0,0 +1,2 @@ +#!/bin/sh +exec sed -e "s@\"/include@\"$1/include@g" "$(dirname $0)/glibc.modulemap" diff --git a/utils/wasm/sdkroot/swiftwasm b/utils/wasm/sdkroot/swiftwasm new file mode 100755 index 0000000000000..244e79f3a0eeb --- /dev/null +++ b/utils/wasm/sdkroot/swiftwasm @@ -0,0 +1,42 @@ +#!/bin/bash +set -e + +if [ "$#" -lt 2 ] +then + echo "usage: swiftwasm file1.swift file2.swift.... output.wasm" + exit 1 +fi +sdk="$(dirname $0)" +tmpobj="$(mktemp -t swiftwasm-XXXXXXXX)" +outputfile="${@: -1}" +if [[ "$outputfile" != *.wasm ]] +then + echo "output should end in .wasm" + exit 1 +fi +sysroot="$(dirname $0)/wasi-sdk/share/sysroot" +abssysroot="$(cd "$(dirname "$sysroot")" && pwd)/$(basename "$sysroot")" + +"$sdk/extra_utils/generateModulemap.sh" "$abssysroot" >"$sdk/opt/swiftwasm-sdk/lib/swift/wasm/wasm32/glibc.modulemap" + +"$sdk/opt/swiftwasm-sdk/bin/swiftc" -target wasm32-unknown-unknown-wasm \ + -sdk "$sysroot" -O -c \ + -o "$tmpobj" \ + "${@:1:$#-1}" +"$sdk/wasi-sdk/bin/wasm-ld" --error-limit=0 -o "$outputfile" \ + "$sysroot/lib/wasm32-wasi/crt1.o" \ + "$sdk/extra_objs/swift_start.o" \ + "$sdk/opt/swiftwasm-sdk/lib/swift_static/wasm/wasm32/swiftrt.o" \ + "$tmpobj" \ + "-L$sdk/opt/swiftwasm-sdk/lib/swift_static/wasm" \ + "-L$sysroot/lib/wasm32-wasi" \ + "-L$sdk/icu_out/lib" \ + -lswiftCore \ + -lc -lc++ -lc++abi -lswiftImageInspectionShared \ + -licuuc -licudata \ + "$sdk/wasi-sdk/lib/clang/9.0.0/lib/wasi/libclang_rt.builtins-wasm32.a" \ + "$sdk/extra_objs/fakepthread.o" \ + "$sdk/extra_objs/swift_end.o" \ + --no-gc-sections \ + --no-threads +rm "$tmpobj" From 617f144809a948c0f49796b7ea150e0d2862c9f5 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Sun, 17 Nov 2019 21:10:33 +0000 Subject: [PATCH 2/7] Rename `wasm` directory to `webassembly` --- .github/workflows/main.yml | 2 +- utils/{wasm => webassembly}/.gitignore | 0 utils/{wasm => webassembly}/README.md | 0 utils/{wasm => webassembly}/build-linux-package.sh | 0 utils/{wasm => webassembly}/build-mac-package.sh | 0 utils/{wasm => webassembly}/build-packages.sh | 0 utils/{wasm => webassembly}/copy-shared-files.sh | 0 .../download-installable-prebuilts.sh | 0 utils/{wasm => webassembly}/download-prebuilts.sh | 0 .../{wasm => webassembly}/linux/unpack-prebuilts.sh | 0 .../{wasm => webassembly}/macos/unpack-prebuilts.sh | 0 .../remove-swift-extra-files.sh | 0 .../remove-wasi-extra-files.sh | 0 utils/{wasm => webassembly}/sdkroot/README.md | 0 .../sdkroot/example/hello.swift | 0 .../sdkroot/extra_objs/fakelocaltime.o | Bin .../sdkroot/extra_objs/fakepthread.o | Bin .../sdkroot/extra_objs/swift_end.o | Bin .../sdkroot/extra_objs/swift_start.o | Bin .../sdkroot/extra_utils/generateModulemap.sh | 0 utils/{wasm => webassembly}/sdkroot/swiftwasm | 0 21 files changed, 1 insertion(+), 1 deletion(-) rename utils/{wasm => webassembly}/.gitignore (100%) rename utils/{wasm => webassembly}/README.md (100%) rename utils/{wasm => webassembly}/build-linux-package.sh (100%) rename utils/{wasm => webassembly}/build-mac-package.sh (100%) rename utils/{wasm => webassembly}/build-packages.sh (100%) rename utils/{wasm => webassembly}/copy-shared-files.sh (100%) rename utils/{wasm => webassembly}/download-installable-prebuilts.sh (100%) rename utils/{wasm => webassembly}/download-prebuilts.sh (100%) rename utils/{wasm => webassembly}/linux/unpack-prebuilts.sh (100%) rename utils/{wasm => webassembly}/macos/unpack-prebuilts.sh (100%) rename utils/{wasm => webassembly}/remove-swift-extra-files.sh (100%) rename utils/{wasm => webassembly}/remove-wasi-extra-files.sh (100%) rename utils/{wasm => webassembly}/sdkroot/README.md (100%) rename utils/{wasm => webassembly}/sdkroot/example/hello.swift (100%) rename utils/{wasm => webassembly}/sdkroot/extra_objs/fakelocaltime.o (100%) rename utils/{wasm => webassembly}/sdkroot/extra_objs/fakepthread.o (100%) rename utils/{wasm => webassembly}/sdkroot/extra_objs/swift_end.o (100%) rename utils/{wasm => webassembly}/sdkroot/extra_objs/swift_start.o (100%) rename utils/{wasm => webassembly}/sdkroot/extra_utils/generateModulemap.sh (100%) rename utils/{wasm => webassembly}/sdkroot/swiftwasm (100%) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f7be1146588f6..5e39e99bfd045 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -40,7 +40,7 @@ jobs: uses: actions/upload-artifact@v1 with: name: packaging-scripts - path: utils/wasm + path: utils/webassembly package: name: Build SwiftWasm packages diff --git a/utils/wasm/.gitignore b/utils/webassembly/.gitignore similarity index 100% rename from utils/wasm/.gitignore rename to utils/webassembly/.gitignore diff --git a/utils/wasm/README.md b/utils/webassembly/README.md similarity index 100% rename from utils/wasm/README.md rename to utils/webassembly/README.md diff --git a/utils/wasm/build-linux-package.sh b/utils/webassembly/build-linux-package.sh similarity index 100% rename from utils/wasm/build-linux-package.sh rename to utils/webassembly/build-linux-package.sh diff --git a/utils/wasm/build-mac-package.sh b/utils/webassembly/build-mac-package.sh similarity index 100% rename from utils/wasm/build-mac-package.sh rename to utils/webassembly/build-mac-package.sh diff --git a/utils/wasm/build-packages.sh b/utils/webassembly/build-packages.sh similarity index 100% rename from utils/wasm/build-packages.sh rename to utils/webassembly/build-packages.sh diff --git a/utils/wasm/copy-shared-files.sh b/utils/webassembly/copy-shared-files.sh similarity index 100% rename from utils/wasm/copy-shared-files.sh rename to utils/webassembly/copy-shared-files.sh diff --git a/utils/wasm/download-installable-prebuilts.sh b/utils/webassembly/download-installable-prebuilts.sh similarity index 100% rename from utils/wasm/download-installable-prebuilts.sh rename to utils/webassembly/download-installable-prebuilts.sh diff --git a/utils/wasm/download-prebuilts.sh b/utils/webassembly/download-prebuilts.sh similarity index 100% rename from utils/wasm/download-prebuilts.sh rename to utils/webassembly/download-prebuilts.sh diff --git a/utils/wasm/linux/unpack-prebuilts.sh b/utils/webassembly/linux/unpack-prebuilts.sh similarity index 100% rename from utils/wasm/linux/unpack-prebuilts.sh rename to utils/webassembly/linux/unpack-prebuilts.sh diff --git a/utils/wasm/macos/unpack-prebuilts.sh b/utils/webassembly/macos/unpack-prebuilts.sh similarity index 100% rename from utils/wasm/macos/unpack-prebuilts.sh rename to utils/webassembly/macos/unpack-prebuilts.sh diff --git a/utils/wasm/remove-swift-extra-files.sh b/utils/webassembly/remove-swift-extra-files.sh similarity index 100% rename from utils/wasm/remove-swift-extra-files.sh rename to utils/webassembly/remove-swift-extra-files.sh diff --git a/utils/wasm/remove-wasi-extra-files.sh b/utils/webassembly/remove-wasi-extra-files.sh similarity index 100% rename from utils/wasm/remove-wasi-extra-files.sh rename to utils/webassembly/remove-wasi-extra-files.sh diff --git a/utils/wasm/sdkroot/README.md b/utils/webassembly/sdkroot/README.md similarity index 100% rename from utils/wasm/sdkroot/README.md rename to utils/webassembly/sdkroot/README.md diff --git a/utils/wasm/sdkroot/example/hello.swift b/utils/webassembly/sdkroot/example/hello.swift similarity index 100% rename from utils/wasm/sdkroot/example/hello.swift rename to utils/webassembly/sdkroot/example/hello.swift diff --git a/utils/wasm/sdkroot/extra_objs/fakelocaltime.o b/utils/webassembly/sdkroot/extra_objs/fakelocaltime.o similarity index 100% rename from utils/wasm/sdkroot/extra_objs/fakelocaltime.o rename to utils/webassembly/sdkroot/extra_objs/fakelocaltime.o diff --git a/utils/wasm/sdkroot/extra_objs/fakepthread.o b/utils/webassembly/sdkroot/extra_objs/fakepthread.o similarity index 100% rename from utils/wasm/sdkroot/extra_objs/fakepthread.o rename to utils/webassembly/sdkroot/extra_objs/fakepthread.o diff --git a/utils/wasm/sdkroot/extra_objs/swift_end.o b/utils/webassembly/sdkroot/extra_objs/swift_end.o similarity index 100% rename from utils/wasm/sdkroot/extra_objs/swift_end.o rename to utils/webassembly/sdkroot/extra_objs/swift_end.o diff --git a/utils/wasm/sdkroot/extra_objs/swift_start.o b/utils/webassembly/sdkroot/extra_objs/swift_start.o similarity index 100% rename from utils/wasm/sdkroot/extra_objs/swift_start.o rename to utils/webassembly/sdkroot/extra_objs/swift_start.o diff --git a/utils/wasm/sdkroot/extra_utils/generateModulemap.sh b/utils/webassembly/sdkroot/extra_utils/generateModulemap.sh similarity index 100% rename from utils/wasm/sdkroot/extra_utils/generateModulemap.sh rename to utils/webassembly/sdkroot/extra_utils/generateModulemap.sh diff --git a/utils/wasm/sdkroot/swiftwasm b/utils/webassembly/sdkroot/swiftwasm similarity index 100% rename from utils/wasm/sdkroot/swiftwasm rename to utils/webassembly/sdkroot/swiftwasm From 42d557996c034f38efab1c98bc28cb9eb60dea5c Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Mon, 18 Nov 2019 09:22:46 +0000 Subject: [PATCH 3/7] Make all .sh scripts executable after download --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5e39e99bfd045..30cf9a82dd192 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -65,6 +65,7 @@ jobs: shell: bash run: | cd packaging-scripts + find . -name '*.sh' -exec chmod +x {} \; ./download-prebuilts.sh cp ../linux-installable/swiftwasm-linux.tar.gz \ From 49980bcf49a5b6cf943654d419c524b2ed1d3237 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Mon, 18 Nov 2019 12:48:54 +0000 Subject: [PATCH 4/7] Make sdkroot/swiftwasm script executable --- .github/workflows/main.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 30cf9a82dd192..46d9785712789 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -66,6 +66,7 @@ jobs: run: | cd packaging-scripts find . -name '*.sh' -exec chmod +x {} \; + chmod +x sdkroot/swiftwasm ./download-prebuilts.sh cp ../linux-installable/swiftwasm-linux.tar.gz \ From 8b1974350fb38a6e5f9add504c06b8f3a9e06e10 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Mon, 18 Nov 2019 12:54:46 +0000 Subject: [PATCH 5/7] Add newline to build-mac-package.sh --- utils/webassembly/build-mac-package.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/webassembly/build-mac-package.sh b/utils/webassembly/build-mac-package.sh index f131febe97f4e..cd3c2602e8b5d 100755 --- a/utils/webassembly/build-mac-package.sh +++ b/utils/webassembly/build-mac-package.sh @@ -6,4 +6,4 @@ cd macos ./unpack-prebuilts.sh echo "Compressing macOS package" tar cJf ../output/swiftwasm-sdk-macos.tar.xz swiftwasm-sdk -cd .. \ No newline at end of file +cd .. From bec21966fb761c7bd1a3d16a3fd1a0b1c9afd3cd Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Mon, 18 Nov 2019 12:55:02 +0000 Subject: [PATCH 6/7] Add newline to build-packages.sh --- utils/webassembly/build-packages.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/webassembly/build-packages.sh b/utils/webassembly/build-packages.sh index 9f5bf6e9a9fc9..e83fc38beb5d6 100755 --- a/utils/webassembly/build-packages.sh +++ b/utils/webassembly/build-packages.sh @@ -2,4 +2,4 @@ set -e rm -rf output || true ./build-linux-package.sh -./build-mac-package.sh \ No newline at end of file +./build-mac-package.sh From 2f16854dbc113507039d72255b835629e5dcfb73 Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Tue, 19 Nov 2019 09:14:28 +0000 Subject: [PATCH 7/7] Remove swift_start.o and swift_end.o --- utils/webassembly/sdkroot/extra_objs/swift_end.o | Bin 576 -> 0 bytes .../webassembly/sdkroot/extra_objs/swift_start.o | Bin 584 -> 0 bytes utils/webassembly/sdkroot/swiftwasm | 2 -- 3 files changed, 2 deletions(-) delete mode 100644 utils/webassembly/sdkroot/extra_objs/swift_end.o delete mode 100644 utils/webassembly/sdkroot/extra_objs/swift_start.o diff --git a/utils/webassembly/sdkroot/extra_objs/swift_end.o b/utils/webassembly/sdkroot/extra_objs/swift_end.o deleted file mode 100644 index 6c002c6ac575353b02fe2a4bd871105524a4af40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 576 zcmZvXK~BRk5JktSOCuFQ7e%z9JI=rXdXkZGCdk6EBin$o3*sOwxCJ+0!%Yx-7KjAd z3ZdD3z5i$QKL}qj0LWh3wuNj)=Kd5>D?`FzMU{0;2CT-x)tg^ugBX zA55}D1d;WDv%`R+ayDUgSo`4k zgjFiiMODlvEaAPCp*fnc9MxJ#S^%Fv|BhZAZr%MuqlEzLXpeRQoczIE?E%CM1BlHB L5c>`wwgmVAh?dGa diff --git a/utils/webassembly/sdkroot/extra_objs/swift_start.o b/utils/webassembly/sdkroot/extra_objs/swift_start.o deleted file mode 100644 index 45fb95dc614ef06434518de07567f7e3d276274e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 584 zcmZ{fK~BRk5JktSOCuFQ7ZoZ}mc0T8=t)M#agc>$NA^&ZT@VN10Ei2)V9zDE0!y|e z$W~|xyRY~EjQ$4^Y6bw=Yu9y<&6M4rBN}a$@K~$b`8ESK;7depOYM~;tnREN?JSbG zHi|U>%lF|vhaD{W=iAE%?06D+5~oS5l2|9PNur42`LTbu=zH91dz0l~55srHH;93R zCk*$xqAP5?BPX2+0G#pdKQ2mVE9Yxrr3!3F7Dq{H8`aMxQ3?{-khqvgcva1&yq=pt zo=Ad;^{#$+`dl diff --git a/utils/webassembly/sdkroot/swiftwasm b/utils/webassembly/sdkroot/swiftwasm index 244e79f3a0eeb..d87894df816cd 100755 --- a/utils/webassembly/sdkroot/swiftwasm +++ b/utils/webassembly/sdkroot/swiftwasm @@ -25,7 +25,6 @@ abssysroot="$(cd "$(dirname "$sysroot")" && pwd)/$(basename "$sysroot")" "${@:1:$#-1}" "$sdk/wasi-sdk/bin/wasm-ld" --error-limit=0 -o "$outputfile" \ "$sysroot/lib/wasm32-wasi/crt1.o" \ - "$sdk/extra_objs/swift_start.o" \ "$sdk/opt/swiftwasm-sdk/lib/swift_static/wasm/wasm32/swiftrt.o" \ "$tmpobj" \ "-L$sdk/opt/swiftwasm-sdk/lib/swift_static/wasm" \ @@ -36,7 +35,6 @@ abssysroot="$(cd "$(dirname "$sysroot")" && pwd)/$(basename "$sysroot")" -licuuc -licudata \ "$sdk/wasi-sdk/lib/clang/9.0.0/lib/wasi/libclang_rt.builtins-wasm32.a" \ "$sdk/extra_objs/fakepthread.o" \ - "$sdk/extra_objs/swift_end.o" \ --no-gc-sections \ --no-threads rm "$tmpobj"