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:
      matrix:
        os: [ubuntu-latest, macos-12, windows-latest]
    defaults:
      run:
        shell: bash
    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 (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.os }}
        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
