From d93d878aa4f9d9863072f0383589613099ccbe6d Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 19 Feb 2020 18:53:03 -0800 Subject: [PATCH 01/12] Fixed runtime doc links --- lib/runtime-c-api/Cargo.toml | 1 + lib/runtime/Cargo.toml | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/runtime-c-api/Cargo.toml b/lib/runtime-c-api/Cargo.toml index ee6b3c6cb04..0fc3710b3b9 100644 --- a/lib/runtime-c-api/Cargo.toml +++ b/lib/runtime-c-api/Cargo.toml @@ -2,6 +2,7 @@ name = "wasmer-runtime-c-api" version = "0.13.1" description = "Wasmer C API library" +documentation = "https://wasmerio.github.io/wasmer/c/runtime-c-api/" license = "MIT" authors = ["The Wasmer Engineering Team "] repository = "https://github.com/wasmerio/wasmer" diff --git a/lib/runtime/Cargo.toml b/lib/runtime/Cargo.toml index a8dd63dbc71..432f2b5a941 100644 --- a/lib/runtime/Cargo.toml +++ b/lib/runtime/Cargo.toml @@ -2,7 +2,6 @@ name = "wasmer-runtime" version = "0.13.1" description = "Wasmer runtime library" -documentation = "https://wasmerio.github.io/wasmer/c/runtime-c-api/" license = "MIT" authors = ["The Wasmer Engineering Team "] repository = "https://github.com/wasmerio/wasmer" From 40fb54c58fdf8a5621157a68e31d05d00bf70110 Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 19 Feb 2020 18:54:32 -0800 Subject: [PATCH 02/12] Improved Wasmer C API artifacts --- Makefile | 27 ++++++++++++++ azure-pipelines.yml | 17 +++------ lib/runtime-c-api/distribution/README.md | 25 +++++++++++++ scripts/capi-name.sh | 46 ++++++++++++++++++++++++ 4 files changed, 102 insertions(+), 13 deletions(-) create mode 100644 lib/runtime-c-api/distribution/README.md create mode 100755 scripts/capi-name.sh diff --git a/Makefile b/Makefile index 6e34078afb2..c5a1dce0b2a 100644 --- a/Makefile +++ b/Makefile @@ -294,6 +294,33 @@ build-install: cp ./target/release/wasmer ./install/bin/ tar -C ./install -zcvf wasmer.tar.gz bin/wapm bin/wasmer +UNAME_S := $(shell uname -s) + +build-capi: + mkdir -p ./capi/ + mkdir -p ./capi/include + mkdir -p ./capi/lib + +ifeq ($(OS), Windows_NT) + cp target/release/libwasmer_runtime_c_api.dll ./capi/lib/wasmer.dll + cp target/release/libwasmer_runtime_c_api.lib ./capi/lib/wasmer.lib +else +ifeq ($(UNAME_S), Darwin) + cp target/release/libwasmer_runtime_c_api.dylib ./capi/lib/libwasmer.dylib + cp target/release/libwasmer_runtime_c_api.dylib ./capi/lib/libwasmer.a + # Fix the rpath for the dylib + install_name_tool -id "@rpath/libwasmer.dylib" ./capi/lib/libwasmer.dylib +else + cp target/release/libwasmer_runtime_c_api.so ./capi/lib/libwasmer.so + cp target/release/libwasmer_runtime_c_api.a ./capi/lib/libwasmer.a +endif +endif + + find target/release/build -name 'wasmer.h*' -exec cp {} ./capi/include ';' + cp LICENSE ./capi/LICENSE + cp lib/runtime-c-api/distribution/* ./capi/ + tar -C ./capi -zcvf wasmer-c-api.tar.gz lib include README.md LICENSE + # For installing the contents locally do-install: tar -C ~/.wasmer -zxvf wasmer.tar.gz diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 9e42676cf96..b202ca5b809 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -213,21 +213,12 @@ jobs: condition: and(succeeded(), not(eq(variables['Agent.OS'], 'Windows_NT'))) - bash: | make capi - cp target/release/libwasmer_runtime_c_api.so ./artifacts - find target/release/build -name 'wasmer.h*' -exec cp {} ./artifacts ';' - displayName: Build c-api (Linux) + displayName: Build c-api condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux')) - bash: | - make capi - install_name_tool -id "@rpath/libwasmer_runtime_c_api.dylib" target/release/libwasmer_runtime_c_api.dylib - cp target/release/libwasmer_runtime_c_api.dylib ./artifacts - displayName: Build c-api (Darwin) - condition: and(succeeded(), eq(variables['Agent.OS'], 'Darwin')) - - bash: | - make capi - cp target/release/wasmer_runtime_c_api.dll ./artifacts - displayName: Build c-api (Windows) - condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT')) + make build-capi + cp ./wasmer-c-api.tar.gz ./artifacts/$(./scripts/capi-name.sh) + displayName: Build c-api artifacts - publish: $(System.DefaultWorkingDirectory)/artifacts artifact: library-$(Agent.OS) diff --git a/lib/runtime-c-api/distribution/README.md b/lib/runtime-c-api/distribution/README.md new file mode 100644 index 00000000000..1751be531d6 --- /dev/null +++ b/lib/runtime-c-api/distribution/README.md @@ -0,0 +1,25 @@ +# Wasmer C API + +This is the [Wasmer WebAssembly Runtime](https://wasmer.io) shared library. +You can use it in any C/C++ projects. + +This directory is structured like the following: +* `lib` is where the Wasmer shared library lives. +* `include` is where the Wasmer headers live + +## Using it + +If you want to compile a `c` file using Wasmer, you can do: + +```bash +clang YOUR_FILE -Iinclude -lwasmer -Llib +``` + +> Note: append ` -rpath lib` if you are in macOS. + +## Examples + +You can check examples of how to use the Wasmer C API here: + +https://docs.wasmer.io/integrations/c/examples + diff --git a/scripts/capi-name.sh b/scripts/capi-name.sh new file mode 100755 index 00000000000..08b508e4628 --- /dev/null +++ b/scripts/capi-name.sh @@ -0,0 +1,46 @@ +#!/bin/sh + +initArch() { + ARCH=$(uname -m) + if [ -n "$WASMER_ARCH" ]; then + ARCH="$WASMER_ARCH" + fi + # If you modify this list, please also modify install.sh + case $ARCH in + amd64) ARCH="amd64";; + x86_64) ARCH="amd64";; + aarch64) ARCH="arm64";; + i386) ARCH="386";; + *) echo "Architecture ${ARCH} is not supported by this installation script"; exit 1;; + esac +} + +initOS() { + OS=$(uname | tr '[:upper:]' '[:lower:]') + if [ -n "$WASMER_OS" ]; then + echo "Using WASMER_OS" + OS="$WASMER_OS" + fi + case "$OS" in + darwin) OS='darwin';; + linux) OS='linux';; + freebsd) OS='freebsd';; + # mingw*) OS='windows';; + # msys*) OS='windows';; + *) echo "OS ${OS} is not supported by this installation script"; exit 1;; + esac +} + +# identify platform based on uname output +initArch +initOS + +# determine install directory if required +BINARY="wasmer-c-api-${OS}-${ARCH}.tar.gz" + +# add .exe if on windows +# if [ "$OS" = "windows" ]; then +# BINARY="$BINARY.exe" +# fi + +echo "${BINARY}" From 0b5064694f3c06f1689bc201285d3cd02f9c5fa9 Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 19 Feb 2020 18:55:18 -0800 Subject: [PATCH 03/12] Ignore the capi folder --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 21ab53e284d..1dfea1e5edd 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,6 @@ .idea **/.vscode install/ +capi/ api-docs/ api-docs-repo/ From edeabd419bc459c276a6ec4eca58fda0cf2bd033 Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 19 Feb 2020 18:58:22 -0800 Subject: [PATCH 04/12] Add links for API Docs --- lib/runtime-c-api/distribution/README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/runtime-c-api/distribution/README.md b/lib/runtime-c-api/distribution/README.md index 1751be531d6..bb1689ee0ba 100644 --- a/lib/runtime-c-api/distribution/README.md +++ b/lib/runtime-c-api/distribution/README.md @@ -7,7 +7,14 @@ This directory is structured like the following: * `lib` is where the Wasmer shared library lives. * `include` is where the Wasmer headers live -## Using it +## Documentation + +The API documentation for the Wasmer Runtime C API can be found here: + +https://wasmerio.github.io/wasmer/c/runtime-c-api/ + + +## Usage If you want to compile a `c` file using Wasmer, you can do: From 6d0efd274aef0e6a7699c181be2f733e9cee79e0 Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 19 Feb 2020 19:03:22 -0800 Subject: [PATCH 05/12] Updated changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb7cce41a9c..16b7e90ef6e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## **[Unreleased]** +- [#1233](https://github.com/wasmerio/wasmer/pull/1233) Improved Wasmer C API release artifacts. - [#787](https://github.com/wasmerio/wasmer/pull/787) New crate `wasmer-interface-types` to implement WebAssembly Interface Types. - [#1213](https://github.com/wasmerio/wasmer/pull/1213) Fixed WASI `fdstat` to detect `isatty` properly. - [#1192](https://github.com/wasmerio/wasmer/pull/1192) Use `ExceptionCode` for error representation. From b31d8d73d89b1fce91339ff05052d744323bf76c Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 19 Feb 2020 21:39:10 -0800 Subject: [PATCH 06/12] Fixed windows library --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index c5a1dce0b2a..a8df5cd28bc 100644 --- a/Makefile +++ b/Makefile @@ -302,8 +302,8 @@ build-capi: mkdir -p ./capi/lib ifeq ($(OS), Windows_NT) - cp target/release/libwasmer_runtime_c_api.dll ./capi/lib/wasmer.dll - cp target/release/libwasmer_runtime_c_api.lib ./capi/lib/wasmer.lib + cp target/release/wasmer_runtime_c_api.dll ./capi/lib/wasmer.dll + cp target/release/wasmer_runtime_c_api.lib ./capi/lib/wasmer.lib else ifeq ($(UNAME_S), Darwin) cp target/release/libwasmer_runtime_c_api.dylib ./capi/lib/libwasmer.dylib From f0abcb0a7a34d6480ee1bbcd9f9a565f40606baa Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 19 Feb 2020 21:49:47 -0800 Subject: [PATCH 07/12] Fixing C api creation only for Linux --- azure-pipelines.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index b202ca5b809..112d2da8e14 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -214,7 +214,6 @@ jobs: - bash: | make capi displayName: Build c-api - condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux')) - bash: | make build-capi cp ./wasmer-c-api.tar.gz ./artifacts/$(./scripts/capi-name.sh) From 1d9741b856d5985a1d69764aa5058f025b4d3772 Mon Sep 17 00:00:00 2001 From: Syrus Date: Wed, 19 Feb 2020 23:14:10 -0800 Subject: [PATCH 08/12] Fixed make capi script in windows --- azure-pipelines.yml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 112d2da8e14..f94f5ec312b 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -217,7 +217,21 @@ jobs: - bash: | make build-capi cp ./wasmer-c-api.tar.gz ./artifacts/$(./scripts/capi-name.sh) - displayName: Build c-api artifacts + displayName: Build c-api artifacts (Unix) + condition: | + and( + succeeded(), + not(eq(variables['Agent.OS'], 'Windows_NT')) + ) + - bash: | + make build-capi + cp ./wasmer-c-api.tar.gz ./artifacts/wasmer-c-api-windows.tar.gz + displayName: Build c-api artifacts (Windows) + condition: | + and( + succeeded(), + eq(variables['Agent.OS'], 'Windows_NT') + ) - publish: $(System.DefaultWorkingDirectory)/artifacts artifact: library-$(Agent.OS) From aa0f33203ce4c44b980f5c7c1d92eb651fde25a0 Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 20 Feb 2020 11:24:54 -0800 Subject: [PATCH 09/12] Reuse doc file for capi docs --- Makefile | 8 +++-- lib/runtime-c-api/distribution/README.md | 32 ----------------- lib/runtime-c-api/doc/index.md | 45 ++++++++---------------- 3 files changed, 19 insertions(+), 66 deletions(-) delete mode 100644 lib/runtime-c-api/distribution/README.md diff --git a/Makefile b/Makefile index a8df5cd28bc..9692c417845 100644 --- a/Makefile +++ b/Makefile @@ -318,7 +318,7 @@ endif find target/release/build -name 'wasmer.h*' -exec cp {} ./capi/include ';' cp LICENSE ./capi/LICENSE - cp lib/runtime-c-api/distribution/* ./capi/ + cp lib/runtime-c-api/doc/index.md ./capi/README.md tar -C ./capi -zcvf wasmer-c-api.tar.gz lib include README.md LICENSE # For installing the contents locally @@ -333,9 +333,11 @@ publish-release: dep-graph: cargo deps --optional-deps --filter wasmer-wasi wasmer-wasi-tests wasmer-kernel-loader wasmer-dev-utils wasmer-llvm-backend wasmer-emscripten wasmer-emscripten-tests wasmer-runtime-core wasmer-runtime wasmer-middleware-common wasmer-middleware-common-tests wasmer-singlepass-backend wasmer-clif-backend wasmer --manifest-path Cargo.toml | dot -Tpng > wasmer_depgraph.png -docs: - cargo doc --features=backend-singlepass,backend-cranelift,backend-llvm,docs,wasi,managed --workspace --document-private-items --no-deps +docs-capi: cd lib/runtime-c-api/ && doxygen doxyfile && cd .. + +docs: docs-capi + cargo doc --features=backend-singlepass,backend-cranelift,backend-llvm,docs,wasi,managed --workspace --document-private-items --no-deps mkdir -p api-docs mkdir -p api-docs/c cp -R target/doc api-docs/crates diff --git a/lib/runtime-c-api/distribution/README.md b/lib/runtime-c-api/distribution/README.md deleted file mode 100644 index bb1689ee0ba..00000000000 --- a/lib/runtime-c-api/distribution/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# Wasmer C API - -This is the [Wasmer WebAssembly Runtime](https://wasmer.io) shared library. -You can use it in any C/C++ projects. - -This directory is structured like the following: -* `lib` is where the Wasmer shared library lives. -* `include` is where the Wasmer headers live - -## Documentation - -The API documentation for the Wasmer Runtime C API can be found here: - -https://wasmerio.github.io/wasmer/c/runtime-c-api/ - - -## Usage - -If you want to compile a `c` file using Wasmer, you can do: - -```bash -clang YOUR_FILE -Iinclude -lwasmer -Llib -``` - -> Note: append ` -rpath lib` if you are in macOS. - -## Examples - -You can check examples of how to use the Wasmer C API here: - -https://docs.wasmer.io/integrations/c/examples - diff --git a/lib/runtime-c-api/doc/index.md b/lib/runtime-c-api/doc/index.md index 84b08e56ae6..ebd5dadb7d0 100644 --- a/lib/runtime-c-api/doc/index.md +++ b/lib/runtime-c-api/doc/index.md @@ -1,12 +1,9 @@ # Wasmer Runtime C API -[Wasmer] is a standalone [WebAssembly] runtime, aiming to be fully -compatible with WASI, Emscripten, Rust and Go. [Learn -more](https://github.com/wasmerio/wasmer). +[Wasmer] is a standalone WebAssembly runtime for running WebAssembly [outside of the browser](https://webassembly.org/docs/non-web/), supporting [WASI](https://github.com/WebAssembly/WASI) and [Emscripten](https://emscripten.org/). -The `wasmer-runtime-c-api` crate exposes a C and a C++ API to interact -with the Wasmer runtime. This document is the index of its -auto-generated documentation. +The Wasmer Runtime C API exposes a C and a C++ API to interact +with the Wasmer Runtime, so you can use WebAssembly anywhere. [Wasmer]: https://github.com/wasmerio/wasmer [WebAssembly]: https://webassembly.org/ @@ -15,21 +12,22 @@ auto-generated documentation. Since the Wasmer runtime is written in Rust, the C and C++ API are designed to work hand-in-hand with its shared library. The C and C++ -header files, namely [`wasmer.h`] and `wasmer.hh` are documented -here. Their source code can be found in the source tree of this -crate. They are automatically generated, and always up-to-date in this -repository. The C and C++ header files along with the runtime shared +header files, namely [`wasmer.h`][wasmer_h] and `wasmer.hh` are documented +in the docs. + +Their source code can be found in the source tree of the [wasmer-runtime-c-api](https://github.com/wasmerio/wasmer/tree/master/lib/runtime-c-api) +crate. +The C and C++ header files along with the runtime shared libraries (`.so`, `.dylib`, `.dll`) can also be downloaded in the Wasmer [release page]. -[`wasmer.h`]: ./wasmer_8h.html [release page]: https://github.com/wasmerio/wasmer/releases Here is a simple example to use the C API: ```c #include -#include "../wasmer.h" +#include "wasmer.h" #include #include @@ -90,26 +88,12 @@ int main() } ``` -# Testing - -Tests are run using the release build of the library. If you make -changes or compile with non-default features, please ensure you -rebuild in release mode for the tests to see the changes. +# Examples -The tests can be run via `cargo test`, such as: +You can check more examples of how to use the Wasmer C API here: -```sh -$ cargo test --release -- --nocapture -``` +https://docs.wasmer.io/integrations/c/examples -To run tests manually, enter the `lib/runtime-c-api/tests` directory -and run the following commands: - -```sh -$ cmake . -$ make -$ make test -``` # License @@ -118,7 +102,6 @@ Wasmer is primarily distributed under the terms of the [MIT license][mit-license] ([LICENSE][license]). -[wasmer_h]: ./wasmer.h -[wasmer_hh]: ./wasmer.hh +[wasmer_h]: https://wasmerio.github.io/wasmer/c/runtime-c-api/wasmer_8h.html [mit-license]: http://opensource.org/licenses/MIT [license]: https://github.com/wasmerio/wasmer/blob/master/LICENSE From c8df4fb5da671756455a8f0248a0586810c432df Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 20 Feb 2020 11:25:46 -0800 Subject: [PATCH 10/12] Removed empty lines --- Makefile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Makefile b/Makefile index 9692c417845..071f42440ba 100644 --- a/Makefile +++ b/Makefile @@ -300,7 +300,6 @@ build-capi: mkdir -p ./capi/ mkdir -p ./capi/include mkdir -p ./capi/lib - ifeq ($(OS), Windows_NT) cp target/release/wasmer_runtime_c_api.dll ./capi/lib/wasmer.dll cp target/release/wasmer_runtime_c_api.lib ./capi/lib/wasmer.lib @@ -315,7 +314,6 @@ else cp target/release/libwasmer_runtime_c_api.a ./capi/lib/libwasmer.a endif endif - find target/release/build -name 'wasmer.h*' -exec cp {} ./capi/include ';' cp LICENSE ./capi/LICENSE cp lib/runtime-c-api/doc/index.md ./capi/README.md From 38830ed8e5f4ddc59ad7f2ff6900c8c89a9f9a38 Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 20 Feb 2020 11:56:47 -0800 Subject: [PATCH 11/12] Fixed unused cd --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 071f42440ba..2bb5cb4f195 100644 --- a/Makefile +++ b/Makefile @@ -332,7 +332,7 @@ dep-graph: cargo deps --optional-deps --filter wasmer-wasi wasmer-wasi-tests wasmer-kernel-loader wasmer-dev-utils wasmer-llvm-backend wasmer-emscripten wasmer-emscripten-tests wasmer-runtime-core wasmer-runtime wasmer-middleware-common wasmer-middleware-common-tests wasmer-singlepass-backend wasmer-clif-backend wasmer --manifest-path Cargo.toml | dot -Tpng > wasmer_depgraph.png docs-capi: - cd lib/runtime-c-api/ && doxygen doxyfile && cd .. + cd lib/runtime-c-api/ && doxygen doxyfile docs: docs-capi cargo doc --features=backend-singlepass,backend-cranelift,backend-llvm,docs,wasi,managed --workspace --document-private-items --no-deps From 69d88ced5357b3c111a1bd4503923b2495d36057 Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 20 Feb 2020 11:59:44 -0800 Subject: [PATCH 12/12] Make commands more clear --- .travis.yml | 2 +- Makefile | 7 ++++--- azure-pipelines.yml | 6 +++--- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 425607a0248..75c7d7f9af1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,7 +29,7 @@ before_deploy: # Release - make release-singlepass - make wapm - - make build-install + - make build-install-package - mkdir -p artifacts - cp ./wasmer.tar.gz ./artifacts/$(./scripts/binary-name.sh) diff --git a/Makefile b/Makefile index 2bb5cb4f195..a7b1039e901 100644 --- a/Makefile +++ b/Makefile @@ -287,8 +287,8 @@ bench-llvm: cargo bench --all --no-default-features --features "backend-llvm" \ --exclude wasmer-singlepass-backend --exclude wasmer-clif-backend --exclude wasmer-kernel-loader -# Build utils -build-install: +build-install-package: + # This command doesn't build the binary, just packages it mkdir -p ./install/bin cp ./wapm-cli/target/release/wapm ./install/bin/ cp ./target/release/wasmer ./install/bin/ @@ -296,7 +296,8 @@ build-install: UNAME_S := $(shell uname -s) -build-capi: +build-capi-package: + # This command doesn't build the C-API, just packages it mkdir -p ./capi/ mkdir -p ./capi/include mkdir -p ./capi/lib diff --git a/azure-pipelines.yml b/azure-pipelines.yml index f94f5ec312b..24aa07d588a 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -153,7 +153,7 @@ jobs: condition: | startsWith(variables['Build.SourceBranch'], 'refs/tags') - bash: | - make build-install + make build-install-package cp ./wasmer.tar.gz ./artifacts/$(./scripts/binary-name.sh) displayName: Build Distribution (*nix) condition: | @@ -215,7 +215,7 @@ jobs: make capi displayName: Build c-api - bash: | - make build-capi + make build-capi-package cp ./wasmer-c-api.tar.gz ./artifacts/$(./scripts/capi-name.sh) displayName: Build c-api artifacts (Unix) condition: | @@ -224,7 +224,7 @@ jobs: not(eq(variables['Agent.OS'], 'Windows_NT')) ) - bash: | - make build-capi + make build-capi-package cp ./wasmer-c-api.tar.gz ./artifacts/wasmer-c-api-windows.tar.gz displayName: Build c-api artifacts (Windows) condition: |