# Copyright (C) 2019 Intel Corporation. All rights reserved. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception name: compilation on windows-latest on: # will be triggered on PR events pull_request: types: - opened - synchronize paths: - ".github/workflows/compilation_on_windows.yml" - "build-scripts/**" - "core/**" - "!core/deps/**" - "product-mini/**" - "samples/**" - "!samples/workload/**" - "tests/wamr-test-suites/**" - "wamr-compiler/**" - "wamr-sdk/**" # will be triggered on push events push: branches: - main - "dev/**" paths: - ".github/workflows/compilation_on_windows.yml" - "build-scripts/**" - "core/**" - "!core/deps/**" - "product-mini/**" - "samples/**" - "!samples/workload/**" - "tests/wamr-test-suites/**" - "wamr-compiler/**" - "wamr-sdk/**" # allow to be triggered manually workflow_dispatch: env: # For Spec Test DEFAULT_TEST_OPTIONS: "-s spec -b" MULTI_MODULES_TEST_OPTIONS: "-s spec -b -M" THREADS_TEST_OPTIONS: "-s spec -b -p" WASI_TEST_OPTIONS: "-s wasi_certification -w" WASI_TEST_FILTER: ${{ github.workspace }}/product-mini/platforms/windows/wasi_filtered_tests.json # Used when building the WASI socket and thread tests CC: ${{ github.workspace }}/wasi-sdk/bin/clang # 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: runs-on: windows-latest strategy: matrix: build_options: [ "-DWAMR_BUILD_AOT=1 -DWAMR_BUILD_INTERP=0", "-DWAMR_BUILD_AOT=0", "-DWAMR_BUILD_TAIL_CALL=1", "-DWAMR_BUILD_CUSTOM_NAME_SECTION=1", "-DWAMR_DISABLE_HW_BOUND_CHECK=1", "-DWAMR_BUILD_REF_TYPES=1", "-DWAMR_BUILD_SIMD=1", "-DWAMR_BUILD_DEBUG_INTERP=1", "-DWAMR_BUILD_LIB_PTHREAD=1", "-DWAMR_BUILD_LIB_WASI_THREADS=1", "-DWAMR_BUILD_LIBC_UVWASI=0 -DWAMR_BUILD_LIBC_WASI=1" ] steps: - uses: actions/checkout@v3 - name: clone uvwasi library if: ${{ !contains(matrix.build_options, '-DWAMR_BUILD_LIBC_UVWASI=0') }} run: | cd core/deps git clone https://github.com/nodejs/uvwasi.git - name: Build iwasm run: | cd product-mini/platforms/windows mkdir build && cd build cmake .. ${{ matrix.build_options }} cmake --build . --config Release --parallel 4 test: runs-on: windows-latest needs: [build] strategy: fail-fast: false matrix: running_mode: [ "classic-interp", "fast-interp", ] test_option: [ $DEFAULT_TEST_OPTIONS, $MULTI_MODULES_TEST_OPTIONS, $THREADS_TEST_OPTIONS, $WASI_TEST_OPTIONS, ] steps: - name: checkout uses: actions/checkout@v3 - name: download and install wasi-sdk if: matrix.test_option == '$WASI_TEST_OPTIONS' run: | curl "https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-20/wasi-sdk-20.0.m-mingw.tar.gz" -o wasi-sdk.tar.gz -L mkdir wasi-sdk tar -xzf wasi-sdk.tar.gz -C wasi-sdk --strip-components 1 - name: build socket api tests shell: bash if: matrix.test_option == '$WASI_TEST_OPTIONS' run: ./build.sh working-directory: ./core/iwasm/libraries/lib-socket/test/ - name: Build WASI thread tests shell: bash if: matrix.test_option == '$WASI_TEST_OPTIONS' run: ./build.sh working-directory: ./core/iwasm/libraries/lib-wasi-threads/test/ - name: run tests shell: bash timeout-minutes: 20 run: ./test_wamr.sh ${{ matrix.test_option }} -t ${{ matrix.running_mode }} working-directory: ./tests/wamr-test-suites