name: CodeQL Analysis (macos)

on:

  push:
    paths:
      - src/**
      - cmake/**
      - "**/CMakeLists.txt"
      - "CMakePresets.json"
      - .github/workflows/codeql.yml
      - vcpkg.json
      - "!**/Makefile*"

  pull_request:
    paths:
      - src/**
      - cmake/**
      - "**/CMakeLists.txt"
      - "CMakePresets.json"
      - .github/workflows/**
      - .github/workflows/codeql.yml
      - vcpkg.json
      - "!**/Makefile*"

jobs:

  analyze-macos12:

    name: "${{ matrix.ui.name }}, ${{ matrix.build.name }}, ${{ matrix.dynarec.name }}, x86_64"

    runs-on: macos-12

    permissions:
      actions: read
      contents: read
      security-events: write

    strategy:
      fail-fast: true
      matrix:
        language: [ 'cpp' ]
        build:
#          - name: Regular
#            preset: regular
#          - name: Debug
#            preset: debug
#            slug: -Debug
          - name: Dev
            preset: experimental
            slug: -Dev
        dynarec:
          - name: ODR
            new: off
            slug: -ODR
          - name: NDR
            new: on
            slug: -NDR
        ui:
          - name: SDL GUI
            qt: off
          - name: Qt GUI
            qt: on
            slug: -Qt
            packages: >-
              qt@5

    steps:
      - name: Install dependencies
        run: >-
          brew install
          ninja
          freetype
          sdl2
          libpng
          rtmidi
          openal-soft
          fluidsynth
          ${{ matrix.ui.packages }}

      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Initialize CodeQL
        uses: github/codeql-action/init@v2
        with:
          languages: ${{ matrix.language }}
          config-file: ./.github/codeql/codeql-config.yml

      - name: Configure CMake
        run: >-
          cmake -G Ninja -S . -B build --preset ${{ matrix.build.preset }}
          --toolchain ./cmake/flags-gcc-x86_64.cmake
          -D NEW_DYNAREC=${{ matrix.dynarec.new }}
          -D CMAKE_INSTALL_PREFIX=./build/artifacts
          -D QT=${{ matrix.ui.qt }}
          -D Qt5_ROOT=$(brew --prefix qt@5)
          -D Qt5LinguistTools_ROOT=$(brew --prefix qt@5)
          -D OpenAL_ROOT=$(brew --prefix openal-soft)

      - name: Build
        run: cmake --build build

      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v2
        with:
          category: "/language:${{matrix.language}}"
