#36023 build: Always define HAVE_SYSTEM

ReviewabilityReviewsAgreementSize
#36023 Sjors build: Always define HAVE_SYSTEMAuthor silent 74d0Mild1
  • Avoid compiler warnings about undefined macros on platforms lacking std::system like iOS
  • Ready for review
  • No review verdicts recorded
  • Objection to unmotivated build configuration changes and code churn (fanquake)
  • Author replied to defend the change but the objection remains open (fanquake)
  • Questions raised about reverting call sites or using a linter instead (hebasto, maflcko)
  • 1 lines added or modified outside tests
  • 0 lines added or modified in tests
  • 1 lines removed in total
  • 1 files, 1 commits
Build and CI#54 of 56
P4 · cleanup
  • P4 because it only silences compiler warnings on platforms like iOS
  • The cleanup has minimal impact on normal build operations
Reviewability: ReadyStalePaused
Agreement: StrongPositivePositive w/ caveatsNeutralMildDisputedBlockedCrickets
Reviews: current code-review ACKs, then (+stale ACKs) and -NACKs; greener = more ACKs.
Size: lines added or modified outside tests, then in tests; greener = smaller.

Goal

Switches the CMake definition of HAVE_SYSTEM in bitcoin-build-config.h.in from #cmakedefine to #cmakedefine01. This ensures HAVE_SYSTEM is always defined as either 1 or 0 instead of being left undefined when std::system is absent.

Problem: When compiling on platforms lacking std::system (such as iOS), an undefined HAVE_SYSTEM triggers -Wundef compiler warnings at #if HAVE_SYSTEM check sites.

Reviewability

Stale · Author silent 74d

No author activity for 74 days; a review may wait a long time for a response.

Agreement

Mild

objection that needs a change was answered, no reply from the objector (fanquake: unmotivated build configuration changes and code churn)

Thread notes: Initial assessment. Recorded fanquake's objection regarding unmotivated macro changes, which remains open despite the author dropping HAVE_FDATASYNC.

Objections, suggestions, and questions:

ReviewerTypeHarm, request, or questionStatusMust beAuthor repliedQuote
fanquake (member)objection, approachunmotivated build configuration changes and code churnanswered · reply on record; standing not assessed yet · v1, not yet re-checkedchangedyes2026-08-19: 'Please don't make random changes for no reason.'

Participants:

  • fanquake (member, objection, 1 statements 2026-08-19 to 2026-08-19): objected to making random changes without reason
  • hebasto (member, question, 1 statements 2026-08-19 to 2026-08-19): asked whether reverting the earlier call site change would be better
  • maflcko (member, question, 1 statements 2026-08-19 to 2026-08-19): suggested enforcing a single style across the codebase with a linter

Files

0 lines under test/bench/ci.

  • cmake/bitcoin-build-config.h.in +1/-1

Card

The short text the ranking pass compares across PRs.

Changes the CMake build configuration for HAVE_SYSTEM to use #cmakedefine01 so it is always defined as 0 or 1. This prevents -Wundef warnings when building the kernel on platforms lacking std::system, such as iOS. Initial reviewer feedback questioned making ad-hoc macro changes without a consistent style or linter. The patch is small and ready for review.

Data

dossier JSON · extract JSON · model ledger, generated 2026-09-18T03:42, confidence high, input hash 7dfd23b070b10660
thread read through 2026-08-19 (4 statements), head 013fffe371
Discussion read under schema 1 rules: suggestions and questions may be missing, and an objection may combine several harms (schema history).
labels: Build system

Categories

Build and CI

P4 · cleanup

Switches HAVE_SYSTEM to cmakedefine01 to avoid a -Wundef compiler warning on platforms lacking std::system like iOS. Minor warning cleanup on an unsupported platform with minimal impact on build operations.

Membership: Touches cmake/bitcoin-build-config.h.in and carries the Build system label.

Factors: security/stability 0, bug 0, performance 0, user value 0, leverage 0