Skip to content

Fix macOS build: bump OSX_MIN_VERSION and C++20 cleanup#282

Merged
TheTrunk merged 1 commit into
masterfrom
fix/macos-build-cpp20
May 20, 2026
Merged

Fix macOS build: bump OSX_MIN_VERSION and C++20 cleanup#282
TheTrunk merged 1 commit into
masterfrom
fix/macos-build-cpp20

Conversation

@blondfrogs
Copy link
Copy Markdown
Member

PR #278 swapped Boost filesystem for std::filesystem but did not raise the macOS deployment target. On macOS the std::filesystem symbols live in libc++.dylib and Apple only shipped them in 10.15+, so the headers mark std::filesystem::path et al. as unavailable for any target below 10.15. Two source patterns from the same migration also fail under -std=c++20.

  • depends/hosts/darwin.mk: raise OSX_MIN_VERSION and OSX_SDK_VERSION from 10.8 / 10.11 to 11.0. Required for std::filesystem to be callable on macOS.

  • src/wallet/rpcwallet.cpp: drop pwalletMain from a lambda capture list. C++20 forbids naming variables with non-automatic storage duration in a capture list; the body can reference the global directly.

  • src/wallet/wallet.cpp: std::random_shuffle was removed in C++17. Replace with an explicit Fisher-Yates loop that reuses GetRandInt, preserving the original RNG and shuffle semantics.

PR #278 swapped Boost filesystem for std::filesystem but did not raise
the macOS deployment target. On macOS the std::filesystem symbols live
in libc++.dylib and Apple only shipped them in 10.15+, so the headers
mark std::filesystem::path et al. as unavailable for any target below
10.15. Two source patterns from the same migration also fail under
-std=c++20.

- depends/hosts/darwin.mk: raise OSX_MIN_VERSION and OSX_SDK_VERSION
  from 10.8 / 10.11 to 11.0. Required for std::filesystem to be
  callable on macOS.

- src/wallet/rpcwallet.cpp: drop pwalletMain from a lambda capture
  list. C++20 forbids naming variables with non-automatic storage
  duration in a capture list; the body can reference the global
  directly.

- src/wallet/wallet.cpp: std::random_shuffle was removed in C++17.
  Replace with an explicit Fisher-Yates loop that reuses GetRandInt,
  preserving the original RNG and shuffle semantics.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@TheTrunk TheTrunk merged commit 69db01f into master May 20, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants