From 42c6603ab3a6e693ac0d51a6ce4c605c9ba0b96d Mon Sep 17 00:00:00 2001 From: Max Desiatov Date: Thu, 14 Nov 2019 08:17:57 +0000 Subject: [PATCH] Update WASI SDK, create installable package on macOS (#14) New WASI SDK package should contain a new version of the linker. Also, the script should now create an installable package on macOS so that one could create a full SwiftWasm package later after the build. * Update WASI SDK, create installable package on macOS * Fix sysroot path, update wasi-sdk on Linux * Exclude module net for wasm SDK in glibc.modulemap * Remove module termios from glic.modulemap for wasm * Disable _stdlib_mkstemps for wasm --- build-linux.sh | 2 ++ build-mac.sh | 8 +++++++- ci-linux.sh | 5 +++-- ci-mac.sh | 5 +++-- .../SwiftPrivateLibcExtras/SwiftPrivateLibcExtras.swift | 2 +- stdlib/public/Platform/glibc.modulemap.gyb | 4 ++++ 6 files changed, 20 insertions(+), 6 deletions(-) diff --git a/build-linux.sh b/build-linux.sh index 720a67971c21e..285a5b05a3c9c 100755 --- a/build-linux.sh +++ b/build-linux.sh @@ -1,5 +1,7 @@ #/bin/bash +export sourcedir=$PWD/.. + ./utils/build-script --release --wasm --verbose \ --skip-build-benchmarks \ --extra-cmake-options=" \ diff --git a/build-mac.sh b/build-mac.sh index 741b394981492..2751f98df442c 100755 --- a/build-mac.sh +++ b/build-mac.sh @@ -1,5 +1,7 @@ #/bin/bash +export sourcedir=$PWD/.. + ./utils/build-script --release --wasm --verbose \ --skip-build-benchmarks \ --extra-cmake-options=" \ @@ -22,4 +24,8 @@ --wasm-icu-i18n-include "$sourcedir/icu_out/include" \ --wasm-icu-uc "$sourcedir/icu_out/lib" \ --wasm-icu-uc-include "$sourcedir/icu_out/include" \ - --wasm-wasi-sdk "$sourcedir/wasi-sdk" + --wasm-wasi-sdk "$sourcedir/wasi-sdk" \ + --install-swift \ + --install-prefix="/opt/swiftwasm-sdk" \ + --install-destdir="$sourcedir/install" \ + --installable-package="$sourcedir/swiftwasm-mac.tar.gz" diff --git a/ci-linux.sh b/ci-linux.sh index 1c8da320bc53f..467e38b1f1403 100755 --- a/ci-linux.sh +++ b/ci-linux.sh @@ -22,9 +22,10 @@ sudo ./install_cmake.sh --skip-license --prefix=/opt/cmake sudo ln -sf /opt/cmake/bin/* /usr/local/bin cmake --version -wget -O wasi-sdk.tar.gz https://github.com/swiftwasm/wasi-sdk/releases/download/20190421.6/wasi-sdk-3.19gefb17cb478f9.m-linux.tar.gz +wget -O wasi-sdk.tar.gz https://github.com/swiftwasm/wasi-sdk/releases/download/20191022.1/wasi-sdk-4.39g3025a5f47c04-linux.tar.gz tar xfz wasi-sdk.tar.gz -mv wasi-sdk-3.19gefb17cb478f9+m/opt/wasi-sdk ./wasi-sdk +mv wasi-sdk-4.39g3025a5f47c04 ./wasi-sdk +mv wasi-sdk/share/wasi-sysroot wasi-sdk/share/sysroot wget -O icu.tar.xz "https://github.com/swiftwasm/icu4c-wasi/releases/download/20190421.3/icu4c-wasi.tar.xz" tar xf icu.tar.xz diff --git a/ci-mac.sh b/ci-mac.sh index dc8bab5527073..d3a08d7164af9 100755 --- a/ci-mac.sh +++ b/ci-mac.sh @@ -6,9 +6,10 @@ export current_sha=`git rev-parse HEAD` git checkout $current_sha export sourcedir=$PWD/.. cd $sourcedir -wget -O wasi-sdk.tar.gz https://github.com/swiftwasm/wasi-sdk/releases/download/20190421.6/wasi-sdk-3.19gefb17cb478f9.m-linux.tar.gz +wget -O wasi-sdk.tar.gz https://github.com/swiftwasm/wasi-sdk/releases/download/20191022.1/wasi-sdk-4.39g3025a5f47c04-linux.tar.gz tar xfz wasi-sdk.tar.gz -mv wasi-sdk-3.19gefb17cb478f9+m/opt/wasi-sdk ./wasi-sdk +mv wasi-sdk-4.39g3025a5f47c04 ./wasi-sdk +mv wasi-sdk/share/wasi-sysroot wasi-sdk/share/sysroot # Link sysroot/usr/include to sysroot/include because Darwin sysroot doesn't # find header files in sysroot/include but sysroot/usr/include mkdir wasi-sdk/share/sysroot/usr/ diff --git a/stdlib/private/SwiftPrivateLibcExtras/SwiftPrivateLibcExtras.swift b/stdlib/private/SwiftPrivateLibcExtras/SwiftPrivateLibcExtras.swift index 8c09674b4faae..6042ba6550ad8 100644 --- a/stdlib/private/SwiftPrivateLibcExtras/SwiftPrivateLibcExtras.swift +++ b/stdlib/private/SwiftPrivateLibcExtras/SwiftPrivateLibcExtras.swift @@ -20,7 +20,7 @@ import MSVCRT #endif public func _stdlib_mkstemps(_ template: inout String, _ suffixlen: CInt) -> CInt { -#if os(Android) || os(Haiku) || os(Windows) +#if os(Android) || os(Haiku) || os(Windows) || os(Wasm) preconditionFailure("mkstemps doesn't work on your platform") #else var utf8CStr = template.utf8CString diff --git a/stdlib/public/Platform/glibc.modulemap.gyb b/stdlib/public/Platform/glibc.modulemap.gyb index 97c52fe1ce4fa..eba7fde86588a 100644 --- a/stdlib/public/Platform/glibc.modulemap.gyb +++ b/stdlib/public/Platform/glibc.modulemap.gyb @@ -353,12 +353,14 @@ module SwiftGlibc [system] { header "${GLIBC_INCLUDE_PATH}/libgen.h" export * } +% if CMAKE_SDK != "WASM": module net { module if { header "${GLIBC_INCLUDE_PATH}/net/if.h" export * } } +% end module netinet { module in { header "${GLIBC_INCLUDE_PATH}/netinet/in.h" @@ -517,10 +519,12 @@ module SwiftGlibc [system] { export * } % end +% if CMAKE_SDK != "WASM": module termios { header "${GLIBC_INCLUDE_PATH}/termios.h" export * } +% end module unistd { header "${GLIBC_INCLUDE_PATH}/unistd.h" export *