name: CMake

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

env:
  # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
  BUILD_TYPE: Debug
  EM_VERSION: 2.0.24
  EM_CACHE_FOLDER: 'emsdk-cache'

jobs:
  linux:
    timeout-minutes: 10

    # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
    # You can convert this to a matrix build if you need cross-platform coverage.
    # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
      with:
        submodules: recursive

    # TODO: cache

    - name: Install Dependencies
      run: sudo apt update && sudo apt -y install libsdl2-dev

    - name: Configure CMake
      run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}

    - name: Build
      run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4

    #- name: Test
      #working-directory: ${{github.workspace}}/build
      ## Execute tests defined by the CMake configuration.
      ## See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
      #run: ctest -C ${{env.BUILD_TYPE}} --output-on-failure

  linux_gles:
    timeout-minutes: 10

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
      with:
        submodules: recursive

    # TODO: cache

    - name: Install Dependencies
      run: sudo apt update && sudo apt -y install libsdl2-dev

    - name: Configure CMake
      run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DMM_OPENGL_3_GLES=ON

    - name: Build
      run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4

  linux_tracy:
    timeout-minutes: 10

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
      with:
        submodules: recursive

    - name: Install Dependencies
      run: sudo apt update && sudo apt -y install libsdl2-dev

    - name: Configure CMake
      run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DTRACY_ENABLE=ON

    - name: Build
      run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4

  emscripten:
    timeout-minutes: 10

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v3
      with:
        submodules: recursive

    #- name: Install Dependencies
      #run: sudo apt update && sudo apt -y install libsdl2-dev

    - name: Setup emsdk
      uses: mymindstorm/setup-emsdk@v11
      with:
        # Make sure to set a version number!
        version: ${{env.EM_VERSION}}
        # This is the name of the cache folder.
        # The cache folder will be placed in the build directory,
        #  so make sure it doesn't conflict with anything!
        actions-cache-folder: ${{env.EM_CACHE_FOLDER}}

    - name: Verify
      run: emcc --check

    - name: Configure CMake
      run: emcmake cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DMM_OPENGL_3_GLES=ON

    - name: Build
      run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4

  macos:
    timeout-minutes: 10

    runs-on: macos-latest

    steps:
    - uses: actions/checkout@v3
      with:
        submodules: recursive

    # TODO: cache

    - name: Install Dependencies
      run: brew install sdl2

    - name: Configure CMake
      run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}

    - name: Build
      run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4

  # TODO: for some reason vcpkg find sdl does not work, despite the find_package REQUIRE not failing
  #windows:
    #timeout-minutes: 10

    #runs-on: windows-latest

    #steps:
    #- uses: actions/checkout@v3
      #with:
        #submodules: recursive

    ## TODO: cache

    #- name: Install Dependencies
      #run: vcpkg install sdl2:x64-windows

    ## setup vs env
    #- uses: ilammy/msvc-dev-cmd@v1
      #with:
        #arch: amd64

    #- name: Configure CMake
      #run: cmake -G Ninja -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake

    #- name: Build
      #run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} -j 4

