#35454 cmake: skip missing example targets in libmultiprocess.cmake
https://github.com/bitcoin/bitcoin/pull/35454 · · +5/-1 in 1 files, 1 commits · labels: Build system · draft
Goal
- Prevent CMake configuration errors when building against newer or external libmultiprocess versions
- Keeps builds working if upstream libmultiprocess omits example targets
Wraps target property settings for libmultiprocess example targets (mpcalculator, mpprinter, mpexample) in an existence check within cmake/libmultiprocess.cmake. This ensures CMake does not error if upstream libmultiprocess omits or removes those example targets.
Problem: Upstream libmultiprocess PR #287 removes example targets, which causes Bitcoin Core's CMake configuration step to fail with 'Can not find target to add properties to' when compiling against external or newer libmultiprocess versions.
Category: Build and CI (#22 of 55)
P3 · bug fix
- P3 because it fixes CMake configuration failures when using external libmultiprocess trees
- Default in-tree builds are unaffected but unblocks cross-repo CI and future subtree updates
Fixes a CMake configuration breakage when building against updated external libmultiprocess trees. Default in-tree subtree builds are unaffected, but the fix is necessary for cross-repo CI jobs in libmultiprocess and eventual subtree updates.
Membership: Modifies cmake/libmultiprocess.cmake to adjust CMake target property handling.
Factors: security/stability 0, bug 1, performance 0, user value 0, leverage 1
Reviewability: Stale: Author silent 103d
- Author has been inactive for over 100 days
The author has been silent for 103 days, exceeding the 60-day project threshold for stale PRs.
Author status: silent since 2026-06-05
Resolved concerns:
- hebasto suggested subprojects should avoid forcing parent projects to process unused CMake code (e.g. by gating examples via build options in libmultiprocess); ryanofsky responded that modularization and target existence checks avoid unnecessary parent-project assumptions.
Agreement: Positive
- Concept approval for defensive CMake integration of subprojects (hebasto)
- Suggested upstream subprojects should handle gating example targets directly (hebasto)
Concept ACK from hebasto on defensive CMake integration, with unresolved discussion on subproject design
hebasto offered a Concept ACK for being defensive when integrating subprojects, followed by a discussion on whether libmultiprocess should gate example subdirectories itself.
- hebasto: 'Concept ACK on being defensive when integrating a subproject, regardless of bitcoin-core/libmultiprocess#287.'
- hebasto: 'However, I believe that such issues should be handled by the subprojects themselves...'
Review verdicts (DrahtBot): 0
- Concept ACK: hebasto
Dependencies
Enables:
Files
0 lines under test/bench/ci.
- cmake/libmultiprocess.cmake +5/-1
Card
PR 35454 adds target existence checks before setting compile-command properties on libmultiprocess example targets in CMake. It solves a configuration failure when building Bitcoin Core against external or updated libmultiprocess libraries where example targets have been removed (as in libmultiprocess#287). The change is low-impact for standard builds because the in-tree subtree is unchanged, but it is necessary for upstream CI testing. Review is currently stale due to over 100 days of author silence following a design discussion with hebasto.