Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge bitcoin#30454: build: Introduce CMake-based build system
4105129 cmake: Ignore build subdirectories within source directory (Hennadii Stepanov) 6ce50fd doc: Update for CMake-based build system (Hennadii Stepanov) 9730288 ci: Migrate CI scripts to CMake (Hennadii Stepanov) c360837 cmake, lint: Adjust `lint_includes_build_config` (Hennadii Stepanov) 3885441 cmake: Add presets for native Windows builds (Hennadii Stepanov) 7681746 cmake: Add vcpkg manifest file (Hennadii Stepanov) 8b6f1c4 cmake: Add `Coverage` and `CoverageFuzz` scripts (Hennadii Stepanov) 65bdbc1 cmake: Add `docs` build target (Hennadii Stepanov) fb75ebb cmake: Add compiler diagnostic flags (Hennadii Stepanov) e821f0a cmake: Migrate Guix build scripts to CMake (Hennadii Stepanov) 747adb6 cmake: Add `Maintenance` module (Hennadii Stepanov) 1f60b30 cmake: Add `APPEND_{CPP,C,CXX,LD}FLAGS` cache variables (Hennadii Stepanov) 2b43c45 cmake: Add `AddWindowsResources` module (Hennadii Stepanov) 973a3b0 cmake: Implement `install` build target (Hennadii Stepanov) 84ac35c cmake: Add cross-compiling support (Hennadii Stepanov) 0d01c22 build: Generate `toolchain.cmake` in depends (Hennadii Stepanov) 91a7992 depends: Add host-specific `cmake_system_version` variables (Hennadii Stepanov) 9b31209 depends: Rename `cmake_system` -> `cmake_system_name` (Hennadii Stepanov) 4a5208a Revert "build, qt: Do not install *.prl files" (Hennadii Stepanov) 6522af6 depends: Amend handling flags environment variables (Hennadii Stepanov) 90cec4d cmake: Add `MULTIPROCESS` option (Hennadii Stepanov) bb1a450 cmake: Build `bitcoin-chainstate` executable (Hennadii Stepanov) aed38ea cmake: Build `bitcoinkernel` library (Hennadii Stepanov) 975d673 cmake: Build `test_bitcoin-qt` executable (Hennadii Stepanov) 10fcc66 cmake: Add `WITH_DBUS` option (Hennadii Stepanov) 5bb5a4b cmake: Add `libqrencode` optional package support (Hennadii Stepanov) 57a6e2e cmake: Build `bitcoin-qt` executable (Hennadii Stepanov) 30f6429 cmake: Add `WERROR` option (Hennadii Stepanov) c98d4a4 cmake: Add `REDUCE_EXPORTS` option (Hennadii Stepanov) a01cb6e cmake: Add `HARDENING` option (Hennadii Stepanov) a8a2e36 cmake: Add Python-based tests (Hennadii Stepanov) 3d85379 cmake: Add fuzzing options (Hennadii Stepanov) 908530e cmake: Add `SANITIZERS` option (Hennadii Stepanov) 8bb0e85 cmake: Build `bench_bitcoin` executable (Hennadii Stepanov) 8017351 cmake: Add external signer support (Hennadii Stepanov) 353e0c9 cmake: Add `systemtap-sdt` optional package support (Hennadii Stepanov) d2fda82 cmake: Add `libzmq` optional package support (Hennadii Stepanov) ae7b39a cmake: Add `libminiupnpc` optional package support (Hennadii Stepanov) 6480e1d cmake: Add `libnatpmp` optional package support (Hennadii Stepanov) e73e930 cmake: Build `bitcoin-util` executable (Hennadii Stepanov) 027c6d7 cmake: Build `bitcoin-tx` executable (Hennadii Stepanov) d10c5c3 cmake: Add wallet functionality (Hennadii Stepanov) ab2e99b cmake: Create test suite for `ctest` (Hennadii Stepanov) 959370b cmake: Build `test_bitcoin` executable (Hennadii Stepanov) b27bf97 cmake: Build `bitcoin-cli` executable (Hennadii Stepanov) a9813df cmake: Build `bitcoind` executable (Hennadii Stepanov) 97829ce cmake: Add `FindLibevent` module (Hennadii Stepanov) 3118e40 cmake: Build `bitcoin_consensus` library (Hennadii Stepanov) 809a2f1 cmake: Build `bitcoin_util` static library (Hennadii Stepanov) 0a9a521 cmake: Build `bitcoin_crypto` library (Hennadii Stepanov) 958971f cmake: Build `univalue` static library (Hennadii Stepanov) 752747f cmake: Generate `obj/build.h` header (Hennadii Stepanov) 1f0a78e cmake: Build `minisketch` static library (Hennadii Stepanov) 12bfbc8 cmake: Build `leveldb` static library (Hennadii Stepanov) 51985c5 cmake: Build `crc32c` static library (Hennadii Stepanov) db7a198 cmake: Build `secp256k1` subtree (Hennadii Stepanov) dbb7ed1 cmake: Add `ccache` support (Hennadii Stepanov) cedfdf6 cmake: Redefine/adjust per-configuration flags (Hennadii Stepanov) b6b5e73 cmake: Add global compiler and linker flags (Hennadii Stepanov) f983279 cmake: Add `TryAppendLinkerFlag` module (Hennadii Stepanov) 4a0af29 cmake: Add `TryAppendCXXFlags` module (Hennadii Stepanov) 35cffc4 cmake: Add POSIX threads support (Hennadii Stepanov) fd72d00 cmake: Add position independent code support (Hennadii Stepanov) 07069e2 cmake: Add introspection module (Hennadii Stepanov) 27d687f cmake: Add `config/bitcoin-config.h` support (Hennadii Stepanov) fe5cdac cmake: Print compiler and linker flags in summary (Hennadii Stepanov) 7068388 cmake: Introduce interface libraries to encapsulate common flags (Hennadii Stepanov) a2317e2 cmake: Add root `CMakeLists.txt` file (Hennadii Stepanov) Pull request description: This PR introduces a new CMake-based build system, which is a drop-in replacement for the current Autotools-based build system. ML announcement: https://groups.google.com/g/bitcoindev/c/hgKkfQWzrTo As discussed during the recent CoreDev meetup in April, the switch from Autotools to CMake is intended to happen as soon as possible after branching 28.x off, which means that 29.0 will be built using CMake. This PR branch is essentially the [staging branch](https://github.com/hebasto/bitcoin/tree/cmake-staging), with every change reviewed and tested by a group of contributors, including (in alphabetical order): - [**achow101**](https://github.com/achow101) - [**fanquake**](https://github.com/fanquake) - [**maflcko**](https://github.com/maflcko) - [**m3dwards**](https://github.com/m3dwards) - [**pablomartin4btc**](https://github.com/pablomartin4btc) - [**real-or-random**](https://github.com/real-or-random) - [**ryanofsky**](https://github.com/ryanofsky) - [**sipsorcery**](https://github.com/sipsorcery) - [**TheCharlatan**](https://github.com/TheCharlatan) - [**theStack**](https://github.com/theStack) - [**theuni**](https://github.com/theuni) - [**vasild**](https://github.com/vasild) Reviewing in a separate staging repo was suggested in bitcoin#27060 (comment). The accompanying changes to the OSS-Fuzz project are available in hebasto/oss-fuzz#8. Please refer to the [build options parity table](https://gist.github.com/hebasto/2ef97d3a726bfce08ded9df07f7dab5e). The "auto" value is no longer available; non-default values must be specified explicitly. Additionally, the new default values have been chosen to suit the everyday build experience for the majority of developers. System requirements for using the CMake-based build system: - CMake >= 3.22 (if not available in your system's repository, it can be downloaded from https://cmake.org/download/) - a build tool of your choice: - any Make (GNU Make is no longer a requirement); GNU Make is still required to build depends - Ninja (https://ninja-build.org/) - MSBuild - Xcode A note for Windows users: The default installation of the latest version of MSVC 17.10.4 includes both CMake 3.28.3 and the vcpkg package manager). --- We, the build system developers, kindly ask reviewers to refrain from making suggestions that are not directly related to the migration process or can be implemented separately. Bugs in the scripts and errors in the updated documentation should be the focus of this PR. Please be advised that comments not aligned with this PR's goal may be ignored. Thank you all for your understanding. ACKs for top commit: maflcko: review ACK 4105129 🐥 sipsorcery: ACK 4105129. vasild: ACK 4105129 TheCharlatan: ACK 4105129 pablomartin4btc: tACK 4105129 i-am-yuvi: tACK [`4105129`](bitcoin@4105129) theuni: ACK 4105129. fanquake: ACK 4105129 Tree-SHA512: 6c1445054436c6c00ad63bfa0f19d64091a2b25c9bd694f85bf2218ac358ffb774d6c000685b3ca1e9b50401babed989fa2a0694b774c211d226bfd1944c9b39
- Loading branch information