name: Build caches for master

on:
  push:
    branches:
      - master

env:
  QT_VERSION: 5.12.12

jobs:
  build_linux:
    strategy:
      matrix:
        configuration: [Debug, Release]
        compiler: [gcc-9, gcc-13, clang-16]
        cmake_options: [""]
        include:
          # Also include configurations that check if the code compiles without the graphics backends
          - configuration: Debug
            compiler: gcc-13
            cmake_options: -DFSO_BUILD_WITH_OPENGL=OFF -DFSO_BUILD_WITH_VULKAN=OFF
          - configuration: Release
            compiler: gcc-13
            cmake_options: -DFSO_BUILD_WITH_OPENGL=OFF -DFSO_BUILD_WITH_VULKAN=OFF
    name: Linux
    runs-on: ubuntu-latest
    container: ghcr.io/scp-fs2open/linux_build:sha-71099c9
    steps:
      - name: Install Qt dependencies
        run: apt-get -yq update && apt-get -yq install libfontconfig1
      - uses: actions/checkout@v7
        name: Checkout
        with:
          submodules: true
      - name: Set workspace as safe
        # This appears to be broken in current actions, so do it manually
        run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
      - name: ccache
        uses: hendrikmuhs/ccache-action@v1
        with:
          key: ${{ runner.os }}-${{ matrix.configuration }}-${{ matrix.compiler }}
      - name: Configure ccache
        run: |
          ccache --set-config=sloppiness=pch_defines,time_macros
          ccache -p

      - name: Configure CMake
        env:
          CONFIGURATION: ${{ matrix.configuration }}
          COMPILER: ${{ matrix.compiler }}
          JOB_CMAKE_OPTIONS: ${{ matrix.cmake_options }}
          CCACHE_PATH: /usr/local/bin/ccache
          ENABLE_QTFRED: ON
          Qt5_DIR: /qt/${{ env.QT_VERSION }}/gcc_64/lib/cmake/Qt5
        run: $GITHUB_WORKSPACE/ci/linux/configure_cmake.sh
      - name: Compile
        working-directory: ./build
        run: LD_LIBRARY_PATH=$Qt5_DIR/lib:$LD_LIBRARY_PATH ninja -k 20 all
      - name: Show CCache statistics
        run: ccache --show-stats
