diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 16ef0bc29..95ef5c87c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -3,7 +3,13 @@ on: [push, pull_request] jobs: test: name: Build and Test - runs-on: macOS-10.15 + strategy: + matrix: + os: [macOS-10.15] + include: + - os: macOS-10.15 + toolchain: https://github.com/swiftwasm/swift/releases/download/swift-wasm-DEVELOPMENT-SNAPSHOT-2020-03-08-a/swift-wasm-DEVELOPMENT-SNAPSHOT-2020-03-08-a-osx.tar.gz + runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@master @@ -19,4 +25,4 @@ jobs: make bootstrap make test env: - TOOLCHAIN_DOWNLOAD: https://github.com/kateinoigakukun/swiftwasm/releases/download/swift-wasm-DEVELOPMENT-SNAPSHOT-2020-03-05-a/swift-wasm-DEVELOPMENT-SNAPSHOT-2020-03-05-a-osx.tar.gz + TOOLCHAIN_DOWNLOAD: ${{ matrix.toolchain }} diff --git a/.gitignore b/.gitignore index 528f3fbf2..c1866f55e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ dist node_modules -.wasi-sdk .DS_Store /.build /Packages diff --git a/.swift-version b/.swift-version index d3e4190bb..9cec33793 100644 --- a/.swift-version +++ b/.swift-version @@ -1 +1 @@ -wasm-DEVELOPMENT-SNAPSHOT-2020-03-05-a +wasm-DEVELOPMENT-SNAPSHOT-2020-03-08-a diff --git a/Example/JavaScriptKitExample/Makefile b/Example/JavaScriptKitExample/Makefile deleted file mode 100644 index 586c55fb1..000000000 --- a/Example/JavaScriptKitExample/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -SRCROOT := $(MAKEFILE_DIR)/../../ -SCRIPT_DIR := $(SRCROOT)/script -WASI_SDK_DIR ?= $(SRCROOT)/.wasi-sdk -WASI_SYSROOT ?= $(WASI_SDK_DIR)/share/wasi-sysroot - -build: - $(SCRIPT_DIR)/build-package.sh $(WASI_SYSROOT) \ No newline at end of file diff --git a/Example/Makefile b/Example/Makefile index 1eae20c88..0b42f4834 100644 --- a/Example/Makefile +++ b/Example/Makefile @@ -2,7 +2,8 @@ MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST))) .PHONY: JavaScriptKitExample JavaScriptKitExample: - cd JavaScriptKitExample && make build + cd JavaScriptKitExample && \ + swift build --triple wasm32-unknown-wasi dist/JavaScriptKitExample.wasm: JavaScriptKitExample mkdir -p dist diff --git a/IntegrationTests/JavaScriptKitExec/Makefile b/IntegrationTests/JavaScriptKitExec/Makefile deleted file mode 100644 index 586c55fb1..000000000 --- a/IntegrationTests/JavaScriptKitExec/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -SRCROOT := $(MAKEFILE_DIR)/../../ -SCRIPT_DIR := $(SRCROOT)/script -WASI_SDK_DIR ?= $(SRCROOT)/.wasi-sdk -WASI_SYSROOT ?= $(WASI_SDK_DIR)/share/wasi-sysroot - -build: - $(SCRIPT_DIR)/build-package.sh $(WASI_SYSROOT) \ No newline at end of file diff --git a/IntegrationTests/Makefile b/IntegrationTests/Makefile index 0d0ef24f5..c80a30662 100644 --- a/IntegrationTests/Makefile +++ b/IntegrationTests/Makefile @@ -2,7 +2,8 @@ MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST))) .PHONY: JavaScriptKitExec JavaScriptKitExec: - cd JavaScriptKitExec && make build + cd JavaScriptKitExec && \ + swift build --triple wasm32-unknown-wasi dist/JavaScriptKitExec.wasm: JavaScriptKitExec mkdir -p dist diff --git a/Makefile b/Makefile index bbc35b6b3..f202f1a46 100644 --- a/Makefile +++ b/Makefile @@ -1,20 +1,15 @@ MAKEFILE_DIR := $(dir $(lastword $(MAKEFILE_LIST))) -WASI_SDK_DIR ?= $(MAKEFILE_DIR)/.wasi-sdk -WASI_SYSROOT ?= $(WASI_SDK_DIR)/share/wasi-sysroot .PHONY: bootstrap bootstrap: cd Runtime && npm install .PHONY: build -build: .wasi-sdk/dummy - ./script/build-package.sh $(WASI_SYSROOT) +build: + swift build --triple wasm32-unknown-wasi cd Runtime && npm run build .PHONY: test -test: build +test: cd IntegrationTests && make test -.wasi-sdk/dummy: - ./script/install-wasi-sdk.sh $(WASI_SDK_DIR) - touch .wasi-sdk/dummy diff --git a/Package.swift b/Package.swift index 96c3f3c76..626a5e780 100644 --- a/Package.swift +++ b/Package.swift @@ -10,9 +10,23 @@ let package = Package( targets: [ .target( name: "JavaScriptKit", - dependencies: ["_CJavaScriptKit"]), + dependencies: ["_CJavaScriptKit"], + linkerSettings: [ + .unsafeFlags([ + "-Xlinker", + "--export=swjs_call_host_function", + "-Xlinker", + "--export=swjs_prepare_host_function_call" + ]) + ]), .target( - name: "_CJavaScriptKit"), + name: "_CJavaScriptKit", + linkerSettings: [ + .unsafeFlags([ + "-Xlinker", + "--allow-undefined", + ]) + ]), .testTarget( name: "JavaScriptKitTests", dependencies: ["JavaScriptKit"]), diff --git a/script/build-package.sh b/script/build-package.sh deleted file mode 100755 index 095e60518..000000000 --- a/script/build-package.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -WASI_SYSROOT=$1 - -swift build --triple wasm32-unknown-wasi \ - -Xswiftc -Xclang-linker \ - -Xswiftc --sysroot=$WASI_SYSROOT \ - -Xcc --sysroot=$WASI_SYSROOT \ - -Xlinker --allow-undefined \ - -Xlinker --export=swjs_call_host_function \ - -Xlinker --export=swjs_prepare_host_function_call diff --git a/script/install-wasi-sdk.sh b/script/install-wasi-sdk.sh deleted file mode 100755 index 68a989a53..000000000 --- a/script/install-wasi-sdk.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -set -x -INSTALL_PATH=$1 - -WASI_SDK_DOWNLOAD_URL="https://github.com/swiftwasm/wasi-sdk/releases/download/0.2.0-swiftwasm/dist-ubuntu-latest.tgz.zip" - -TMP_DIR=$(mktemp -d) -pushd $TMP_DIR -wget -O dist-wasi-sdk.tgz.zip $WASI_SDK_DOWNLOAD_URL -unzip dist-wasi-sdk.tgz.zip -d . -WASI_SDK_TAR_PATH=$(find . -type f -name "wasi-sdk-*") -WASI_SDK_FULL_NAME=$(basename $WASI_SDK_TAR_PATH -linux.tar.gz) -tar xfz $WASI_SDK_TAR_PATH -popd - -mv $TMP_DIR/$WASI_SDK_FULL_NAME $INSTALL_PATH