name: Continuous Integration

on: [push, pull_request]

jobs:
  build:
    name: ${{ matrix.config.name }}
    runs-on: ${{ matrix.config.os }}
    strategy:
      fail-fast: false
      matrix:
        config:
        - {
            name: "macOS",
            os: macos-12,
            extra_options: "-DBUILD_PK3=ON",
            deps_cmdline: "brew install fluidsynth freeimage ftgl lua mpg123 sfml wxwidgets"
          }
        - {
            name: "Linux GCC",
            os: ubuntu-20.04,
            deps_cmdline: "sudo apt-key adv --fetch-keys https://repos.codelite.org/CodeLite.asc && \
						   sudo apt-add-repository 'deb https://repos.codelite.org/wx3.1.5/ubuntu/ focal universe' && \
						   sudo apt update && sudo apt install \
                           libfluidsynth-dev libfreeimage-dev libwebkit2gtk-4.0-dev \
                           libftgl-dev libgtk-3-dev liblua5.3-dev libmpg123-dev libsfml-dev \
                           libwxgtk3.1unofficial-dev libwxgtk-webview3.1unofficial-dev"
          }
        - {
            name: "Linux Clang",
            os: ubuntu-20.04,
            extra_options: "-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++",
            deps_cmdline: "sudo apt-key adv --fetch-keys https://repos.codelite.org/CodeLite.asc && \
						   sudo apt-add-repository 'deb https://repos.codelite.org/wx3.1.5/ubuntu/ focal universe' && \
						   sudo apt update && sudo apt install \
                           libfluidsynth-dev libfreeimage-dev libwebkit2gtk-4.0-dev \
                           libftgl-dev libgtk-3-dev liblua5.3-dev libmpg123-dev libsfml-dev \
                           libwxgtk3.1unofficial-dev libwxgtk-webview3.1unofficial-dev"
          }

    steps:
    - uses: actions/checkout@v2

    - name: Install Dependencies
      shell: bash
      run: |
        if [[ ! -z "${{ matrix.config.deps_cmdline }}" ]]; then
          eval ${{ matrix.config.deps_cmdline }}
        fi

    - name: Configure
      shell: bash
      run: |
        mkdir build
        cmake -B build ${{ matrix.config.extra_options }} .

    - name: Build
      shell: bash
      run: |
        export MAKEFLAGS=--keep-going
        cmake --build build --parallel 3
