diff --git a/.github/workflows/wamr_wasi_extensions.yml b/.github/workflows/wamr_wasi_extensions.yml new file mode 100644 index 000000000..e9d10fe93 --- /dev/null +++ b/.github/workflows/wamr_wasi_extensions.yml @@ -0,0 +1,57 @@ +# Copyright (C) 2019 Intel Corporation. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +name: wamr_wasi_extensions + +on: + pull_request: + types: + - opened + - synchronize + paths: + - ".github/workflows/wamr_wasi_extensions.yml" + - "wamr_wasi_extensios/**" + - "core/iwasm/libraries/wasi-nn/include/**" + - "core/iwasm/libraries/lib-socket/**" + # allow to be triggered manually + workflow_dispatch: + +# Cancel any in-flight jobs for the same PR/branch so there's only one active +# at a time +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build_wamr_wasi_extensions: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-22.04, macos-13, macos-14] + steps: + - name: checkout + uses: actions/checkout@v4 + + - name: install-wasi-sdk-wabt + uses: ./.github/actions/install-wasi-sdk-wabt + with: + os: ${{ matrix.os }} + + - name: Build wamr-wasi-extensions + run: | + mkdir dist + ./build_libs.sh $(pwd)/dist/wamr-wasi-extensions + working-directory: wamr-wasi-extensions + + - name: Build wamr-wasi-extensions samples + run: | + ./build_samples.sh $(pwd)/dist/wamr-wasi-extensions + working-directory: wamr-wasi-extensions + + - name: Upload artifacts + if: matrix.os == 'macos-14' + uses: actions/upload-artifact@v4 + with: + name: wamr-wasi-extensions + path: wamr-wasi-extensions/dist + retention-days: 10 diff --git a/wamr-wasi-extensions/build_libs.sh b/wamr-wasi-extensions/build_libs.sh new file mode 100755 index 000000000..97f2fe104 --- /dev/null +++ b/wamr-wasi-extensions/build_libs.sh @@ -0,0 +1,15 @@ +#! /bin/sh + +# Copyright (C) 2025 Midokura Japan KK. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +set -e + +PREFIX=${1:-/tmp/wamr} +WASI_SDK=${WASI_SDK:-/opt/wasi-sdk} + +cmake -B build-lib \ +-DCMAKE_TOOLCHAIN_FILE=${WASI_SDK}/share/cmake/wasi-sdk.cmake \ +-DCMAKE_INSTALL_PREFIX=${PREFIX} \ +. +cmake --build build-lib -t install diff --git a/wamr-wasi-extensions/build_samples.sh b/wamr-wasi-extensions/build_samples.sh new file mode 100755 index 000000000..5dfeeabf2 --- /dev/null +++ b/wamr-wasi-extensions/build_samples.sh @@ -0,0 +1,33 @@ +#! /bin/sh + +# Copyright (C) 2025 Midokura Japan KK. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +set -e + +PREFIX=${1:-/tmp/wamr} +WASI_SDK=${WASI_SDK:-/opt/wasi-sdk} + +cmake -B build-app-nn \ +-DCMAKE_TOOLCHAIN_FILE=${WASI_SDK}/share/cmake/wasi-sdk.cmake \ +-DCMAKE_PREFIX_PATH=${PREFIX} \ +samples/nn +cmake --build build-app-nn + +cmake -B build-app-nn-cli \ +-DCMAKE_TOOLCHAIN_FILE=${WASI_SDK}/share/cmake/wasi-sdk.cmake \ +-DCMAKE_PREFIX_PATH=${PREFIX} \ +samples/nn-cli +cmake --build build-app-nn-cli + +cmake -B build-app-socket-nslookup \ +-DCMAKE_TOOLCHAIN_FILE=${WASI_SDK}/share/cmake/wasi-sdk-pthread.cmake \ +-DCMAKE_PREFIX_PATH=${PREFIX} \ +samples/socket-nslookup +cmake --build build-app-socket-nslookup + +cmake -B build-app-socket-tcp-udp \ +-DCMAKE_TOOLCHAIN_FILE=${WASI_SDK}/share/cmake/wasi-sdk-pthread.cmake \ +-DCMAKE_PREFIX_PATH=${PREFIX} \ +samples/socket-tcp-udp +cmake --build build-app-socket-tcp-udp diff --git a/wamr-wasi-extensions/test.sh b/wamr-wasi-extensions/test.sh index e485cf48c..1d366dfe9 100755 --- a/wamr-wasi-extensions/test.sh +++ b/wamr-wasi-extensions/test.sh @@ -5,35 +5,7 @@ set -e -PREFIX=/tmp/wamr -WASI_SDK=${WASI_SDK:-/opt/wasi-sdk} +PREFIX=${1:-/tmp/wamr} -cmake -B build-lib \ --DCMAKE_TOOLCHAIN_FILE=${WASI_SDK}/share/cmake/wasi-sdk.cmake \ --DCMAKE_INSTALL_PREFIX=${PREFIX} \ -. -cmake --build build-lib -t install - -cmake -B build-app-nn \ --DCMAKE_TOOLCHAIN_FILE=${WASI_SDK}/share/cmake/wasi-sdk.cmake \ --DCMAKE_PREFIX_PATH=${PREFIX} \ -samples/nn -cmake --build build-app-nn - -cmake -B build-app-nn-cli \ --DCMAKE_TOOLCHAIN_FILE=${WASI_SDK}/share/cmake/wasi-sdk.cmake \ --DCMAKE_PREFIX_PATH=${PREFIX} \ -samples/nn-cli -cmake --build build-app-nn-cli - -cmake -B build-app-socket-nslookup \ --DCMAKE_TOOLCHAIN_FILE=${WASI_SDK}/share/cmake/wasi-sdk-pthread.cmake \ --DCMAKE_PREFIX_PATH=${PREFIX} \ -samples/socket-nslookup -cmake --build build-app-socket-nslookup - -cmake -B build-app-socket-tcp-udp \ --DCMAKE_TOOLCHAIN_FILE=${WASI_SDK}/share/cmake/wasi-sdk-pthread.cmake \ --DCMAKE_PREFIX_PATH=${PREFIX} \ -samples/socket-tcp-udp -cmake --build build-app-socket-tcp-udp +./build_libs.sh ${PREFIX} +./build_samples.sh ${PREFIX}