From c8bfead9096dcd28b046e9f460904860d6647cba Mon Sep 17 00:00:00 2001 From: Ben Hoffman Date: Sat, 8 Aug 2026 10:04:37 -0400 Subject: [PATCH 1/5] Add GitHub Actions CI (Linux GCC leg to start) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Additive only — appveyor.yml is untouched and keeps running in parallel. Starts with just the Linux GCC leg per the incremental rollout plan; Clang and Windows MSVC legs land in follow-up commits once this is green. Catch2 is built from the submodule and installed into a workspace -local prefix (find_package(Catch2 3 REQUIRED) needs config-mode, not just the checked-out source). --- .github/workflows/build.yml | 74 +++++++++++++++++++++++++++++++++++++ .gitignore | 5 +++ 2 files changed, 79 insertions(+) create mode 100644 .github/workflows/build.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..fcf9d1e3 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,74 @@ +name: Build + +on: + push: + branches: [ main ] + pull_request: + workflow_dispatch: + +# Cancel superseded runs on the same branch +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + name: ${{ matrix.name }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false # one toolchain failing must not hide the others + matrix: + include: + - name: Linux GCC Release + os: ubuntu-22.04 + compiler: gcc + cc: gcc + cxx: g++ + build_type: Release + + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + # ---------- system dependencies ---------- + - name: Install Linux dependencies + if: runner.os == 'Linux' + run: | + sudo apt-get update -qq + sudo apt-get install -y --no-install-recommends \ + ninja-build pkg-config \ + xorg-dev libx11-dev libwayland-dev libglu1-mesa-dev \ + libvulkan-dev vulkan-headers + + # ---------- Catch2 (needed by find_package(Catch2 3 REQUIRED)) ---------- + - name: Build and install Catch2 + shell: bash + run: | + cmake -S external/Catch2 -B external/Catch2/build \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DCMAKE_INSTALL_PREFIX="${{ github.workspace }}/.deps" \ + -DBUILD_TESTING=OFF + cmake --build external/Catch2/build --config ${{ matrix.build_type }} --target install + + # ---------- configure + build ---------- + - name: Configure (Linux) + if: runner.os == 'Linux' + env: + CC: ${{ matrix.cc }} + CXX: ${{ matrix.cxx }} + run: | + cmake -S . -B build -G Ninja \ + -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \ + -DDEFINE_SHIPPING=OFF \ + -DCMAKE_PREFIX_PATH="${{ github.workspace }}/.deps" + + - name: Build + run: cmake --build build --config ${{ matrix.build_type }} --parallel + + # ---------- run tests ---------- + - name: Run FlingTests (Linux) + if: runner.os == 'Linux' + run: | + mkdir -p Logs + ./build/FlingTests/bin/FlingTests diff --git a/.gitignore b/.gitignore index 9af309bf..3fe18619 100644 --- a/.gitignore +++ b/.gitignore @@ -38,6 +38,11 @@ bld/ cmake-build-debug/ cmake-build-release/ +# Local CI validation build folders / installed deps prefix +build-gcc/ +build-clang/ +.deps/ + #external/ From e3adb5d3c1ee369f024cce818a53cff357b17ba1 Mon Sep 17 00:00:00 2001 From: Ben Hoffman Date: Sat, 8 Aug 2026 10:05:49 -0400 Subject: [PATCH 2/5] Drop invalid vulkan-headers apt package (libvulkan-dev already covers it) --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fcf9d1e3..7e93a3ff 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -39,7 +39,7 @@ jobs: sudo apt-get install -y --no-install-recommends \ ninja-build pkg-config \ xorg-dev libx11-dev libwayland-dev libglu1-mesa-dev \ - libvulkan-dev vulkan-headers + libvulkan-dev # ---------- Catch2 (needed by find_package(Catch2 3 REQUIRED)) ---------- - name: Build and install Catch2 From feab250b7456516d0f8bc462d04d75affb030ad8 Mon Sep 17 00:00:00 2001 From: Ben Hoffman Date: Sat, 8 Aug 2026 10:07:50 -0400 Subject: [PATCH 3/5] Add libxkbcommon-dev for GLFW Wayland support --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7e93a3ff..b3c9d016 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -38,7 +38,7 @@ jobs: sudo apt-get update -qq sudo apt-get install -y --no-install-recommends \ ninja-build pkg-config \ - xorg-dev libx11-dev libwayland-dev libglu1-mesa-dev \ + xorg-dev libx11-dev libwayland-dev libxkbcommon-dev libglu1-mesa-dev \ libvulkan-dev # ---------- Catch2 (needed by find_package(Catch2 3 REQUIRED)) ---------- From 0531a923c9fc56d45e3f3aa8c1f4f57633b3ee61 Mon Sep 17 00:00:00 2001 From: Ben Hoffman Date: Sat, 8 Aug 2026 10:12:23 -0400 Subject: [PATCH 4/5] Add Linux Clang leg --- .github/workflows/build.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b3c9d016..a86b83f7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -25,6 +25,12 @@ jobs: cc: gcc cxx: g++ build_type: Release + - name: Linux Clang Release + os: ubuntu-22.04 + compiler: clang + cc: clang + cxx: clang++ + build_type: Release steps: - uses: actions/checkout@v4 From 390940c6d8b6cc60ff5bc7b8a53fbdd88297dd59 Mon Sep 17 00:00:00 2001 From: Ben Hoffman Date: Sat, 8 Aug 2026 10:17:17 -0400 Subject: [PATCH 5/5] Add Windows MSVC Debug/Release legs --- .github/workflows/build.yml | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a86b83f7..4f1d5fd8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -31,6 +31,14 @@ jobs: cc: clang cxx: clang++ build_type: Release + - name: Windows MSVC Debug + os: windows-2022 + compiler: msvc + build_type: Debug + - name: Windows MSVC Release + os: windows-2022 + compiler: msvc + build_type: Release steps: - uses: actions/checkout@v4 @@ -47,6 +55,15 @@ jobs: xorg-dev libx11-dev libwayland-dev libxkbcommon-dev libglu1-mesa-dev \ libvulkan-dev + - name: Install Vulkan SDK (Windows) + if: runner.os == 'Windows' + uses: jakoch/install-vulkan-sdk-action@v1 + with: + vulkan_version: 1.4.357.0 + install_runtime: true + cache: true + stripdown: true + # ---------- Catch2 (needed by find_package(Catch2 3 REQUIRED)) ---------- - name: Build and install Catch2 shell: bash @@ -69,6 +86,14 @@ jobs: -DDEFINE_SHIPPING=OFF \ -DCMAKE_PREFIX_PATH="${{ github.workspace }}/.deps" + - name: Configure (Windows) + if: runner.os == 'Windows' + run: | + cmake -S . -B build -G "Visual Studio 17 2022" -A x64 ` + -DDEFINE_SHIPPING=OFF ` + -DENABLE_MULTICORE=ON ` + -DCMAKE_PREFIX_PATH="${{ github.workspace }}/.deps" + - name: Build run: cmake --build build --config ${{ matrix.build_type }} --parallel @@ -78,3 +103,10 @@ jobs: run: | mkdir -p Logs ./build/FlingTests/bin/FlingTests + + - name: Run FlingTests (Windows) + if: runner.os == 'Windows' + shell: cmd + run: | + if not exist Logs mkdir Logs + build\FlingTests\bin\${{ matrix.build_type }}\FlingTests.exe