name: CI
on: [push]

jobs:
    ubuntu-latest:
        runs-on: ubuntu-latest

        steps:
            - name: Clone
              uses: actions/checkout@v1

            - name: Dependencies
              run: |
                  sudo apt-get update
                  sudo apt-get install build-essential
                  sudo apt-get install libsdl2-dev

            - name: Build
              run: |
                make
                make stream

    macOS-latest:
        runs-on: macOS-latest

        steps:
            - name: Clone
              uses: actions/checkout@v1

            - name: Dependencies
              run: |
                  brew update
                  brew install sdl2

            - name: Build
              run: |
                make
                make stream

    ubuntu-latest-gcc:
        runs-on: ubuntu-latest

        strategy:
            matrix:
                build: [Debug, Release]

        steps:
            - name: Clone
              uses: actions/checkout@v1

            - name: Dependencies
              run: |
                  sudo apt-get update
                  sudo apt-get install build-essential
                  sudo apt-get install cmake
                  sudo apt-get install libsdl2-dev

            - name: Configure
              run: cmake . -DWHISPER_SUPPORT_SDL2=ON -DCMAKE_BUILD_TYPE=${{ matrix.build }}

            - name: Build
              run: |
                make
                ctest -L gh --output-on-failure

    ubuntu-latest-clang:
        runs-on: ubuntu-latest

        strategy:
            matrix:
                build: [Debug, Release]

        steps:
            - name: Clone
              uses: actions/checkout@v1

            - name: Dependencies
              run: |
                  sudo apt-get update
                  sudo apt-get install build-essential
                  sudo apt-get install cmake
                  sudo apt-get install libsdl2-dev

            - name: Configure
              run: cmake . -DWHISPER_SUPPORT_SDL2=ON -DCMAKE_BUILD_TYPE=${{ matrix.build }} -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang

            - name: Build
              run: |
                make
                ctest -L gh --output-on-failure

    ubuntu-latest-gcc-sanitized:
        runs-on: ubuntu-latest

        strategy:
            matrix:
                sanitizer: [ADDRESS, THREAD, UNDEFINED]

        steps:
            - name: Clone
              uses: actions/checkout@v1

            - name: Dependencies
              run: |
                  sudo apt-get update
                  sudo apt-get install build-essential
                  sudo apt-get install cmake

            - name: Configure
              run: cmake . -DCMAKE_BUILD_TYPE=Debug -DWHISPER_SANITIZE_${{ matrix.sanitizer }}=ON

            - name: Build
              run: |
                make
                ctest -L gh --output-on-failure
