![]() Bump libmultiprocess library to include bugfix https://github.com/chaincodelabs/libmultiprocess/pull/159 which should fix intermittent CI failures reported in https://github.com/bitcoin/bitcoin/issues/31921 This change is bumping the libmultiprocess version instead of cherry picking the bugfix. It could cherry-pick the bugfix instead, but there are reasons to prefer bumping the version: - Bugfix might interact with earlier PRs, and the latest version is better tested with testing done in many CI configurations in #30975 and #31802 - Even though we are in feature freeze for a release, the MULTIPROCESS=1 option is currently not enabled for release, so this PR only affect CI builds and local builds, not the release build. This update brings in the following changes: https://github.com/chaincodelabs/libmultiprocess/pull/140 build: don't clobber user/superproject c++ version https://github.com/chaincodelabs/libmultiprocess/pull/142 build: add option for external mpgen binary https://github.com/chaincodelabs/libmultiprocess/pull/143 cleanup: initialize vars in the EventLoop constructor in the correct order https://github.com/chaincodelabs/libmultiprocess/pull/146 cmake: Suppress compiler warnings from capnproto headers https://github.com/chaincodelabs/libmultiprocess/pull/147 cmake: EXTERNAL_MPGEN cleanups https://github.com/chaincodelabs/libmultiprocess/pull/148 util: fix -Wpessimizing-move warning https://github.com/chaincodelabs/libmultiprocess/pull/145 CTest: Module must be included at the top level https://github.com/chaincodelabs/libmultiprocess/pull/149 Avoid `-Wundef` compiler warnings https://github.com/chaincodelabs/libmultiprocess/pull/152 refactor: Fix compiler and clang-tidy warnings https://github.com/chaincodelabs/libmultiprocess/pull/155 scripted-diff: s/Libmultiprocess_EXTERNAL_MPGEN/MPGEN_EXECUTABLE/g https://github.com/chaincodelabs/libmultiprocess/pull/156 refactor: Remove locale-dependent function calls https://github.com/chaincodelabs/libmultiprocess/pull/157 refactor: Avoid using std::format https://github.com/chaincodelabs/libmultiprocess/pull/159 bugfix: Do not lock EventLoop::mutex after EventLoop is done https://github.com/chaincodelabs/libmultiprocess/pull/161 cmake: Avoid including CTest if not top level project https://github.com/chaincodelabs/libmultiprocess/pull/164 Bump minimum required cmake to 3.12 |
||
---|---|---|
.. | ||
builders | ||
hosts | ||
packages | ||
patches | ||
.gitignore | ||
config.guess | ||
config.sub | ||
description.md | ||
funcs.mk | ||
gen_id | ||
Makefile | ||
packages.md | ||
README.md | ||
toolchain.cmake.in |
Usage
To build dependencies for the current arch+OS:
make
To build for another arch/OS:
make HOST=host-platform-triplet
For example:
make HOST=x86_64-w64-mingw32 -j4
When configuring Bitcoin Core, CMake by default will ignore the depends output. In
order for it to pick up libraries, tools, and settings from the depends build,
you must specify the toolchain file.
In the above example, a file named depends/x86_64-w64-mingw32/toolchain.cmake
will be
created. To use it during configuring Bitcoin Core:
cmake -B build --toolchain depends/x86_64-w64-mingw32/toolchain.cmake
Common host-platform-triplet
s for cross compilation are:
i686-pc-linux-gnu
for Linux x86 32 bitx86_64-pc-linux-gnu
for Linux x86 64 bitx86_64-w64-mingw32
for Win64x86_64-apple-darwin
for macOSarm64-apple-darwin
for ARM macOSarm-linux-gnueabihf
for Linux ARM 32 bitaarch64-linux-gnu
for Linux ARM 64 bitpowerpc64-linux-gnu
for Linux POWER 64 bit (big endian)powerpc64le-linux-gnu
for Linux POWER 64 bit (little endian)riscv32-linux-gnu
for Linux RISC-V 32 bitriscv64-linux-gnu
for Linux RISC-V 64 bits390x-linux-gnu
for Linux S390X
The paths are automatically configured and no other options are needed.
Install the required dependencies: Ubuntu & Debian
Common
apt install cmake curl make patch
GUI
Skip the following packages if you don't intend to use the GUI and will build with NO_QT=1
:
apt install bison g++ pkgconf python3 xz-utils
For macOS cross compilation
apt install clang lld llvm zip
Clang 18 or later is required. You must also obtain the macOS SDK before
proceeding with a cross-compile. Under the depends directory, create a
subdirectory named SDKs
. Then, place the extracted SDK under this new directory.
For more information, see SDK Extraction.
For Win64 cross compilation
apt install g++-mingw-w64-x86-64-posix
For linux (including i386, ARM) cross compilation
Common linux dependencies:
sudo apt-get install g++-multilib binutils
For linux ARM cross compilation:
sudo apt-get install g++-arm-linux-gnueabihf binutils-arm-linux-gnueabihf
For linux AARCH64 cross compilation:
sudo apt-get install g++-aarch64-linux-gnu binutils-aarch64-linux-gnu
For linux POWER 64-bit cross compilation (there are no packages for 32-bit):
sudo apt-get install g++-powerpc64-linux-gnu binutils-powerpc64-linux-gnu g++-powerpc64le-linux-gnu binutils-powerpc64le-linux-gnu
For linux RISC-V 64-bit cross compilation (there are no packages for 32-bit):
sudo apt-get install g++-riscv64-linux-gnu binutils-riscv64-linux-gnu
For linux S390X cross compilation:
sudo apt-get install g++-s390x-linux-gnu binutils-s390x-linux-gnu
Install the required dependencies: FreeBSD
pkg install bash
Install the required dependencies: NetBSD
pkgin install bash gmake
Install the required dependencies: OpenBSD
pkg_add bash gmake gtar
Dependency Options
The following can be set when running make: make FOO=bar
SOURCES_PATH
: Downloaded sources will be placed hereBASE_CACHE
: Built packages will be placed hereSDK_PATH
: Path where SDKs can be found (used by macOS)FALLBACK_DOWNLOAD_PATH
: If a source file can't be fetched, try here before giving upC_STANDARD
: Set the C standard version used. Defaults toc11
.CXX_STANDARD
: Set the C++ standard version used. Defaults toc++20
.NO_BOOST
: Don't download/build/cache BoostNO_LIBEVENT
: Don't download/build/cache LibeventNO_QT
: Don't download/build/cache Qt and its dependenciesNO_QR
: Don't download/build/cache packages needed for enabling qrencodeNO_ZMQ
: Don't download/build/cache packages needed for enabling ZeroMQNO_WALLET
: Don't download/build/cache libs needed to enable the walletNO_BDB
: Don't download/build/cache BerkeleyDBNO_SQLITE
: Don't download/build/cache SQLiteNO_USDT
: Don't download/build/cache packages needed for enabling USDT tracepointsMULTIPROCESS
: Build libmultiprocess (experimental)DEBUG
: Disable some optimizations and enable more runtime checkingHOST_ID_SALT
: Optional salt to use when generating host package idsBUILD_ID_SALT
: Optional salt to use when generating build package idsLOG
: Use file-based logging for individual packages. During a package build its log file resides in thedepends
directory, and the log file is printed out automatically in case of build error. After successful build log files are moved along with package archivesLTO
: Enable options needed for LTO. Does not add-flto
related options to *FLAGS.NO_HARDEN=1
: Don't use hardening options when building packages
If some packages are not built, for example make NO_WALLET=1
, the appropriate CMake cache
variables will be set when generating the Bitcoin Core buildsystem. In this case, -DENABLE_WALLET=OFF
.
Additional targets
download: run 'make download' to fetch all sources without building them
download-osx: run 'make download-osx' to fetch all sources needed for macOS builds
download-win: run 'make download-win' to fetch all sources needed for win builds
download-linux: run 'make download-linux' to fetch all sources needed for linux builds
Other documentation
- description.md: General description of the depends system
- packages.md: Steps for adding packages