From 5f7169bc0e6c61a0642ca4eacf84f56707fa5768 Mon Sep 17 00:00:00 2001 From: nicolassanchez02 <98576999+nicolassanchez02@users.noreply.github.com> Date: Fri, 29 May 2026 01:20:05 -0500 Subject: [PATCH 1/2] libopenage: accept Eigen 5 by relaxing version pin find_package(Eigen3 3.3 REQUIRED NO_MODULE) rejects Eigen 5, because Eigen's config-version file no longer treats a new major as compatible with an older request. Eigen 5 now ships on Arch and Homebrew, so configure aborts there before anything compiles. This is the cause of issue #1793 and of the long-failing macOS CI on master. openage only uses the stable core and geometry API (Vector2/3/4f, Matrix4f, Affine3f, AngleAxisf, dot, prescale, UnitZ), none of which Eigen 5 drops, so dropping the version constraint is enough. A version range would be tidier but needs cmake 3.19 and our floor is 3.16. Verified by building openage and running the full test suite against a local Eigen 5.0.1: configures, compiles, and all tests pass. Closes #1793. --- libopenage/CMakeLists.txt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libopenage/CMakeLists.txt b/libopenage/CMakeLists.txt index 30b7b23b01..162f513bdb 100644 --- a/libopenage/CMakeLists.txt +++ b/libopenage/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright 2014-2025 the openage authors. See copying.md for legal info. +# Copyright 2014-2026 the openage authors. See copying.md for legal info. # main C++ library definitions. # dependency and source file setup for the resulting library. @@ -56,7 +56,12 @@ find_package(PNG REQUIRED) find_package(Opusfile REQUIRED) find_package(Epoxy REQUIRED) find_package(HarfBuzz 1.0.0 REQUIRED) -find_package(Eigen3 3.3 REQUIRED NO_MODULE) +# Eigen dropped strict config-version compatibility across its 3 to 5 major +# bump, so pinning "3.3" here makes find_package reject Eigen 5 (shipped by +# Arch and Homebrew) even though openage only uses the stable core/geometry +# API. A version range would need cmake 3.19; our floor is 3.16, so require +# any Eigen3 config instead. +find_package(Eigen3 REQUIRED NO_MODULE) set(CMAKE_THREAD_PREFER_PTHREAD TRUE) find_package(Threads REQUIRED) From fb1628630ef1972f20591b5cdb769db0c7dc7e1c Mon Sep 17 00:00:00 2001 From: nicolassanchez02 <98576999+nicolassanchez02@users.noreply.github.com> Date: Fri, 29 May 2026 01:58:33 -0500 Subject: [PATCH 2/2] ci: build the macOS job with Apple clang The macOS workflow forced Homebrew's LLVM (`brew --prefix llvm`/clang++), which on the current runner is clang 22 whose libc++ can't find its own / ahead of the SDK's C headers, so every C++ TU fails to compile with "header search paths are not configured properly". None of the errors are in openage code. doc/building.md already recommends `--compiler=clang` (the Xcode clang) as the hassle-free macOS toolchain, so point CI at it and drop the now unused Homebrew LLVM install. Apple clang is built for the macOS SDK and its libc++, so the header-ordering problem goes away. --- .github/workflows/macosx-ci.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/macosx-ci.yml b/.github/workflows/macosx-ci.yml index 2270121092..eb5805e5bd 100644 --- a/.github/workflows/macosx-ci.yml +++ b/.github/workflows/macosx-ci.yml @@ -44,8 +44,6 @@ jobs: run: brew install --cask font-dejavu - name: Install environment helpers with homebrew run: brew install --force ccache - - name: Install LLVM with homebrew - run: brew install --force llvm - name: Install openage dependencies with homebrew run: brew install --force cmake python3 libepoxy freetype fontconfig harfbuzz opus opusfile qt6 libogg libpng toml11 eigen - name: Install nyan dependencies with homebrew @@ -56,7 +54,7 @@ jobs: # numpy pulls gcc as dep? and pygments doesn't work. run: pip3 install --upgrade --break-system-packages cython numpy mako lz4 pillow pygments setuptools toml - name: Configure - run: ./configure --compiler="$(brew --prefix llvm)/bin/clang++" --mode=release --ccache --download-nyan + run: ./configure --compiler=clang --mode=release --ccache --download-nyan - name: Build run: make -j$(sysctl -n hw.logicalcpu) VERBOSE=1 - name: Test