name: CodeQL 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-msys2: name: "Analyze Windows MSYS2 (${{ matrix.ui.name }}, ${{ matrix.build.name }}, ${{ matrix.dynarec.name }}, ${{ matrix.environment.msystem }})" runs-on: windows-2022 permissions: actions: read contents: read security-events: write defaults: run: shell: msys2 {0} 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: Win32 GUI qt: off static: on - name: Qt GUI qt: on static: off slug: -Qt packages: >- qt5-base:p qt5-tools:p environment: # - msystem: MSYS # toolchain: ./cmake/flags-gcc-x86_64.cmake - msystem: MINGW32 prefix: mingw-w64-i686 toolchain: ./cmake/flags-gcc-i686.cmake - msystem: MINGW64 prefix: mingw-w64-x86_64 toolchain: ./cmake/flags-gcc-x86_64.cmake # - msystem: CLANG32 # prefix: mingw-w64-clang-i686 # toolchain: ./cmake/llvm-win32-i686.cmake # - msystem: CLANG64 # prefix: mingw-w64-clang-x86_64 # toolchain: ./cmake/llvm-win32-x86_64.cmake - msystem: UCRT64 prefix: mingw-w64-ucrt-x86_64 toolchain: ./cmake/flags-gcc-x86_64.cmake steps: - name: Prepare MSYS2 environment uses: msys2/setup-msys2@v2 with: release: false update: true msystem: ${{ matrix.environment.msystem }} pacboy: >- ninja:p cmake:p gcc:p pkgconf:p freetype:p SDL2:p zlib:p libpng:p openal:p rtmidi:p libvncserver:p ${{ matrix.ui.packages }} - name: Checkout repository uses: actions/checkout@v3 - 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 ${{ matrix.environment.toolchain }} -D NEW_DYNAREC=${{ matrix.dynarec.new }} -D CMAKE_INSTALL_PREFIX=./build/artifacts -D QT=${{ matrix.ui.qt }} -D STATIC_BUILD=${{ matrix.ui.static }} - name: Build run: cmake --build build - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v2 with: category: "/language:${{matrix.language}}" analyze-linux: name: "Analyze Linux GCC 11 (${{ matrix.ui.name }}, ${{ matrix.build.name }}, ${{ matrix.dynarec.name }}, x86_64)" runs-on: ubuntu-22.04 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: Qt GUI qt: on slug: -Qt packages: >- qtbase5-dev qtbase5-private-dev qttools5-dev libevdev-dev libxkbcommon-x11-dev steps: - name: Install dependencies run: >- sudo apt update && sudo apt install build-essential ninja-build libfreetype-dev libsdl2-dev libpng-dev libc6-dev librtmidi-dev libopenal-dev libvncserver-dev ${{ matrix.ui.packages }} - name: Checkout repository uses: actions/checkout@v3 - 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 }} - name: Build run: cmake --build build - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v2 with: category: "/language:${{matrix.language}}" analyze-macos11: name: "Analyze macOS 11 (${{ matrix.ui.name }}, ${{ matrix.build.name }}, ${{ matrix.dynarec.name }}, x86_64)" runs-on: macos-11 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: Qt GUI qt: on slug: -Qt packages: >- qt@5 steps: - name: Install dependencies run: >- brew install ninja freetype sdl2 libpng rtmidi openal-soft libvncserver ${{ matrix.ui.packages }} - name: Checkout repository uses: actions/checkout@v3 - 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}}"