Files
SpaghettiKart/vcpkg.json
T
quarrel07 6ed9a8ad28 Fix macOS arm64 build: fmt consteval error in the TorchExternal sub-build (#712)
* Fix macOS arm64 build: fmt consteval error in the TorchExternal sub-build

Torch's pinned spdlog bundles an fmt whose consteval format-string
checking fails to compile under newer AppleClang (Xcode 16+), breaking
the build-macos-arm64 CI job (the intel runner's older Xcode doesn't hit
it):

  error: call to consteval function 'fmt::basic_format_string<...>' is
  not a constant expression

Define FMT_CONSTEVAL as empty inside the Torch sub-build, falling back to
fmt's pre-C++20 constexpr checking. Injected via CMAKE_PROJECT_INCLUDE
because Torch's CMakeLists overwrites CMAKE_CXX_FLAGS, so plain flag
injection through CMAKE_ARGS is discarded. Scoped to AppleClang; no other
platform or compiler is affected, and the Torch pin is unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Also neutralize FMT_CONSTEVAL for the game build (vcpkg spdlog/fmt)

With the TorchExternal fix in place, CI reaches the game build and hits
the same consteval error again, this time from the vcpkg-provided
spdlog/fmt headers (SPDLOG_FMT_EXTERNAL) under the runner's Xcode 26.5.
Apply the same AppleClang-scoped FMT_CONSTEVAL= define at the project
level so both layers compile.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Pin vcpkg fmt to 10.2.1 (+ spdlog 1.14.1): fmt 11.0.2 can't compile on new AppleClang

The baseline's fmt 11.0.2 both fails to compile under newer AppleClang
(consteval format-string checking) and removed the #ifndef guard around
FMT_CONSTEVAL, so the AppleClang-scoped define from the previous commit
lands on the compile line but gets clobbered by fmt's own definition
(FMT_USE_CONSTEVAL is likewise unguarded in that version). No newer fmt
exists in the pinned baseline.

Override fmt to 10.2.1, which keeps the #ifndef guard, making the
existing define effective; spdlog moves to the matching 1.14.1 (1.15.x
requires fmt >= 11 headers).

Verified locally against the exact CI setup (vcpkg at baseline
2e58bb35ff, vcpkg toolchain file, Ninja): the previous failure reproduces
without this change and the full game builds cleanly with it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Add TODO markers for removing the fmt consteval workarounds

Requested in PR #712 review: mark all three workaround sites (project-level
define, Torch sub-build include, vcpkg fmt/spdlog pins) so they can be found
and removed together once the Torch pin is bumped past its spdlog/fmt update.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: siliconports <aguthmann10@gmail.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 00:28:29 +02:00

48 lines
1.5 KiB
JSON

{
"name": "spaghettikart",
"version": "1.0.0",
"description": "A Mario Kart 64 port",
"homepage": "https://github.com/HarbourMasters/SpaghettiKart",
"dependencies": [
"zlib",
"bzip2",
"libzip",
"libpng",
{
"name": "sdl2",
"features": ["x11", "alsa", "wayland"],
"platform": "linux",
"default-features": false
},
{
"name": "sdl2",
"platform": "windows"
},
{
"name": "sdl2",
"platform": "osx"
},
"sdl2-net",
"glew",
"glfw3",
"nlohmann-json",
"tinyxml2",
"spdlog",
"libogg",
"libvorbis"
],
"overrides": [
{
"$reason": "fmt 11.0.2 (spdlog's dependency) fails to compile under newer AppleClang (consteval format-string checking) and hard-defines FMT_CONSTEVAL with no override guard, so it cannot be disabled either. 10.2.1 keeps the #ifndef guard, letting the AppleClang-scoped FMT_CONSTEVAL= define in CMakeLists.txt take effect. spdlog is pinned to the matching 1.14.1 (1.15.x requires fmt >= 11). TODO: Temporary hack. Remove both pins (plus the FMT_CONSTEVAL blocks in CMakeLists.txt and cmake/TorchExternalFixes.cmake) once the Torch pin is bumped past Torch's spdlog/fmt update. Note the bump also needs matching MK64 loader changes, see the discussion on PR #712.",
"name": "fmt",
"version": "10.2.1",
"port-version": 2
},
{
"name": "spdlog",
"version": "1.14.1"
}
],
"builtin-baseline": "2e58bb35ff7a3a037920d959ce20cb4d8c22319a"
}