build(macos): configure C++ standard and ICU root#5101
Conversation
|
I'm confused about setting CXX_STANDARD here. We already set it in cmake itself, and we always use fetch content in our CI builds, so I'm not sure this is actually an issue. |
|
The existing CXX_STANDARD setting applies only to the In my local build, Homebrew had Boost 1.90 installed, while the project requested exactly 1.89. CMake rejected the newer Homebrew Boost and fell back to FetchContent, so Boost.Locale was built as part of the project. That fetched Boost target then compiled against Homebrew’s ICU headers without a C++17+ default and failed on ICU headers using constructs like Passing That said, if you prefer, setting the project-wide C++ standard near the top-level CMake before dependencies are loaded would be cleaner than passing it from the macOS scripts. I also wouldn't be offended if you chose to reject as it is very much an edge case and easy to work around with |
|
I think this can probably affect Linux as well, so probably we could just set it in the top level CMakelists.txt as well as in the tests. |
|
Right, it probably does. Do you want me to take a crack at it? |
Yes please! |
|
Done. It builds cleanly on macOS, I did not test elsewhere. |
|
And for good measure I updated |
Pass the project C++ standard explicitly so fetched dependencies build against modern Homebrew headers. Point CMake at Homebrew's icu4c@78 prefix to match the dependency installed by the macOS build path. Mirror the manual macOS build script in CI so the two paths stay aligned.
1691f89 to
dce4987
Compare
Bundle ReportBundle size has no change ✅ |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #5101 +/- ##
=========================================
Coverage ? 18.06%
=========================================
Files ? 109
Lines ? 23534
Branches ? 10323
=========================================
Hits ? 4251
Misses ? 16868
Partials ? 2415
Flags with carried forward coverage won't be shown. Click here to find out more. Continue to review full report in Codecov by Sentry.
|
|
The Linux failure was caused by setting the project C++ standard globally without also setting the CUDA standard before the I fixed that by setting |
|



Description
Pass the project C++ 23 standard explicitly so fetched dependencies build against modern headers. C++23 was chosen because it's already used for the
sunshinetarget incmake/targets/common.cmakeand by the Homebrew formula inpackaging/sunshine.rb, but those don't apply early enough to dependencies built throughscripts/macos_build.sh. This can break when Boost falls back to FetchContent.Point CMake at Homebrew's icu4c@78 prefix to match the dependency installed by the macOS build path. Without this, CMake can pick up inconsistent ICU headers/configuration from the Apple SDK or system paths while Boost.Locale is built from source.
Mirror the manual macOS build script in CI so the two paths stay aligned, as requested in the script comments.
Screenshot
Issues Fixed or Closed
Roadmap Issues
Type of Change
Checklist
AI Usage