name: CMake

on: [push]

env:
  # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
  BUILD_TYPE: Debug

jobs:
  build:
    # 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: ${{ matrix.os }}
    name: ${{ matrix.os }}-${{ matrix.cc }}
    strategy:
      matrix:
        include:
          - os: macos-latest
            cc: "clang"
            cxx: "clang++"
          - os: Ubuntu-20.04
            cc: "clang-10"
            cxx: "clang++-10"
          - os: Ubuntu-20.04
            cc: "gcc-10"
            cxx: "g++-10"
          - os: windows-latest
            cc: "cl"
            cxx: "cl"

    steps:
    - uses: actions/checkout@v2
      with:
        # Whether to checkout submodules: `true` to checkout submodules or `recursive` to
        # recursively checkout submodules.
        submodules: 'true'

    - name: Set Windows ENV
      if: runner.os == 'Windows'
      uses: ilammy/msvc-dev-cmd@v1
      
    - name: Create Build Environment
      # Some projects don't allow in-source building, so create a separate build directory
      # We'll use this as our working directory for all subsequent commands
      run: cmake -E make_directory ${{github.workspace}}/build

    - name: Configure CMake
      # Use a bash shell so we can use the same syntax for environment variable
      # access regardless of the host operating system
      shell: bash
      working-directory: ${{github.workspace}}/build
      # Note the current convention is to use the -S and -B options here to specify source 
      # and build directories, but this is only available with CMake 3.13 and higher.  
      # The CMake binaries on the Github Actions machines are (as of this writing) 3.12
      run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_C_COMPILER=${{ matrix.cc }} -DCMAKE_CXX_COMPILER=${{ matrix.cxx }}

    - name: Build
      working-directory: ${{github.workspace}}/build
      shell: bash

      # Execute the build.  You can specify a specific target with "--target <NAME>"
      run: cmake --build . --config $BUILD_TYPE --verbose

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