| name: CI |
| |
| on: |
| create: |
| tags: |
| push: |
| branches: |
| - main |
| pull_request: |
| |
| jobs: |
| lint: |
| name: lint |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/setup-python@v1 |
| with: |
| python-version: '3.x' |
| - uses: actions/checkout@v1 |
| - name: install tools |
| run: | |
| pip3 install flake8==3.7.8 |
| sudo apt-get install clang-format |
| - run: flake8 |
| - run: ./scripts/clang-format-diff.sh |
| env: |
| GITHUB_EVENT_BEFORE: ${{ github.event.before }} |
| build: |
| name: build |
| runs-on: ${{ matrix.os }} |
| strategy: |
| matrix: |
| os: [ubuntu-latest, macos-12, windows-latest] |
| steps: |
| - uses: actions/setup-python@v1 |
| with: |
| python-version: '3.x' |
| - uses: actions/checkout@v1 |
| with: |
| submodules: true |
| - name: install ninja (linux) |
| run: sudo apt-get install ninja-build |
| if: matrix.os == 'ubuntu-latest' |
| - name: install ninja (osx) |
| run: brew install ninja |
| if: matrix.os == 'macos-12' |
| - name: install ninja (win) |
| run: choco install ninja |
| if: matrix.os == 'windows-latest' |
| - name: mkdir |
| run: mkdir -p out |
| - name: cmake |
| run: cmake .. -G Ninja -DWITH_WASI=ON -DWERROR=ON -Werror=dev |
| working-directory: out |
| if: matrix.os != 'windows-latest' |
| - name: cmake (windows) |
| run: cmake .. -DWERROR=ON -Werror=dev |
| working-directory: out |
| if: matrix.os == 'windows-latest' |
| - name: build |
| run: cmake --build out |
| - name: check if generated files are up-to-date |
| run: python ./scripts/check_clean.py |
| - name: unittests |
| run: cmake --build out --target run-unittests |
| - name: c-api-tests |
| run: cmake --build out --target run-c-api-tests |
| - name: tests |
| run: cmake --build out --target run-tests |
| emscripten: |
| name: emscripten |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v1 |
| with: |
| submodules: true |
| - name: build |
| run: | |
| docker run -di --name emscripten -v $(pwd):/src emscripten/emsdk:latest bash |
| docker exec emscripten emcc -v |
| docker exec emscripten emcmake cmake . |
| docker exec emscripten make -j 2 VERBOSE=1 |
| |
| sanitize: |
| name: sanitize |
| runs-on: ubuntu-latest |
| env: |
| USE_NINJA: "1" |
| CC: "clang" |
| WASM2C_CFLAGS: "-march=x86-64-v2" # currently required for SIMDe to pass some tests on x86-64 |
| strategy: |
| matrix: |
| sanitizer: [asan, ubsan, fuzz] |
| type: [debug, release] |
| steps: |
| - uses: actions/setup-python@v1 |
| with: |
| python-version: '3.x' |
| - uses: actions/checkout@v1 |
| with: |
| submodules: true |
| - run: sudo apt-get install ninja-build |
| - run: make clang-${{ matrix.type }}-${{ matrix.sanitizer }} |
| - if: ${{ matrix.sanitizer }} != fuzz |
| run: make test-clang-${{ matrix.type }}-${{ matrix.sanitizer }} |
| build-wasm2c-memchecked: |
| name: wasm2c-memchecked |
| runs-on: ubuntu-latest |
| env: |
| USE_NINJA: "1" |
| CC: "clang" # used by the wasm2c tests |
| WASM2C_CFLAGS: "-march=x86-64-v2 -fsanitize=address -DWASM_RT_USE_MMAP=0" |
| steps: |
| - uses: actions/setup-python@v1 |
| with: |
| python-version: '3.x' |
| - uses: actions/checkout@v1 |
| with: |
| submodules: true |
| - run: sudo apt-get install ninja-build |
| - run: make clang-debug-asan |
| - run: make test-clang-debug-asan |
| |
| build-min-cmake: |
| name: min-cmake |
| runs-on: ubuntu-latest |
| steps: |
| - uses: actions/checkout@v1 |
| with: |
| submodules: true |
| - uses: actions/setup-python@v1 |
| with: |
| python-version: '3.x' |
| - name: Install Ninja |
| run: sudo apt-get install ninja-build |
| - name: Detect minimum CMake version |
| run: > |
| awk 'match($0, /cmake_minimum_required\(VERSION *([0-9]+\.[0-9]+)\)/, a) |
| { print "WABT_CMAKE_VER=" a[1]; exit; }' CMakeLists.txt | tee $GITHUB_ENV |
| - name: Install minimum CMake |
| run: | |
| python -m pip install -U setuptools wheel pip |
| python -m pip install "cmake==${WABT_CMAKE_VER}.*" |
| cmake --version |
| - name: Configure WABT |
| run: cmake -G Ninja -S . -B out -DCMAKE_BUILD_TYPE=Release |
| - name: build |
| run: cmake --build out |
| - name: unittests |
| run: cmake --build out --target run-unittests |
| - name: c-api-tests |
| run: cmake --build out --target run-c-api-tests |
| - name: tests |
| run: cmake --build out --target run-tests |