name: AdPlug CMake CI

on: [ push, pull_request, workflow_dispatch ]

env:
  libbinio_PRESET: default
  libbinio_ROOT: '${{github.workspace}}/libbinio/out/install/default/lib/cmake/libbinio/'

jobs:
  build:
    strategy:
      fail-fast: false
      matrix:
        os: [ 'windows-latest', 'ubuntu-latest', 'macos-latest' ]

    runs-on: ${{matrix.os}}

    steps:
    - name: Find libbinio repository
      shell: bash
      run: |
        owner="${GITHUB_REPOSITORY%/*}"
        if [ "$owner" = "adplug" ] || git ls-remote --exit-code "https://github.com/$owner/libbinio.git" >/dev/null 2>&1; then
          echo "LIBBINIO_REPOSITORY=$owner/libbinio" >> "$GITHUB_ENV"
        else
          echo 'LIBBINIO_REPOSITORY=adplug/libbinio' >> "$GITHUB_ENV"
        fi

    - name: Get cmake and ninja
      uses: lukka/get-cmake@latest

    - name: Find MSVC (on Windows)
      uses: ilammy/msvc-dev-cmd@v1

    - name: Checkout libbinio repository
      uses: actions/checkout@v7
      with:
        repository: '${{env.LIBBINIO_REPOSITORY}}'
        ref: master
        path: libbinio
        fetch-depth: 0

    - name: Checkout adplug repository
      uses: actions/checkout@v7
      with:
        path: adplug
        fetch-depth: 0

    - name: Build libbinio
      uses: lukka/run-cmake@v10
      env:
        VCPKG_ROOT:
        # workaround for https://github.com/lukka/run-cmake/issues/142
      with:
        cmakeListsTxtPath: libbinio/CMakeLists.txt
        configurePreset: '${{env.libbinio_PRESET}}'
        buildPreset: '${{env.libbinio_PRESET}}'

    - name: Install libbinio
      working-directory: 'libbinio/out/build/${{env.libbinio_PRESET}}/'
      run: cmake --install .

    - name: Build adplug
      uses: lukka/run-cmake@v10
      env:
        VCPKG_ROOT:
        # workaround for https://github.com/lukka/run-cmake/issues/142
      with:
        cmakeListsTxtPath: adplug/CMakeLists.txt
        configurePreset: default
        buildPreset: default
        testPreset: default
