name: Build Release

# Trigger whenever a release is created
on:
  release:
    types:
      - created

permissions:
  contents: write

jobs:
  build:
    name: build
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - os: ubuntu-22.04
            arch: x86_64
            name: linux-x64
          - os: ubuntu-22.04-arm
            arch: aarch64
            name: linux-arm64
          - os: macos-14
            arch: aarch64
            name: macos-arm64
          - os: windows-latest
            arch: x86_64
            name: windows-x64
    defaults:
      run:
        shell: bash
    steps:
    - uses: actions/setup-python@v5
      with:
        python-version: '3.x'
    - uses: actions/checkout@v1
      with:
        submodules: true

    - name: install ninja (linux)
      run: sudo apt-get install ninja-build
      if: contains(matrix.os, 'ubuntu')

    - name: install ninja (osx)
      run: brew install ninja
      if: matrix.os == 'macos-14'

    - name: install ninja (win)
      run: choco install ninja
      if: matrix.os == 'windows-latest'

    - name: mkdir
      run: mkdir -p out

    - name: cmake (unix)
      run: cmake -S . -B out -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install
      if: matrix.os != 'windows-latest'

    - name: cmake (win)
      # -G "Visual Studio 15 2017"
      run: cmake -S . -B out -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install
      if: matrix.os == 'windows-latest'

    - name: build
      run: cmake --build out --config Release --target install

    - name: strip
      run: find bin/ -type f -perm -u=x -exec strip {} +
      if: matrix.os != 'windows-latest'

    - uses: ./.github/actions/release-archive
      with:
        os: ${{ matrix.name }}
        upload_to_release: true

  build-wasi:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
      with:
        submodules: true

    - name: built-tools
      run: |
        docker run -di --name wasi-sdk -v $(pwd):/src --workdir /src ghcr.io/webassembly/wasi-sdk:wasi-sdk-20 bash
        docker exec wasi-sdk cmake -S . -B out -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install -DBUILD_TESTS=0 -DBUILD_LIBWASM=0
        docker exec wasi-sdk cmake --build out --config Release --target install

    - uses: ./.github/actions/release-archive
      with:
        os: wasi
        upload_to_release: true
