bitcoin/doc/dependencies.md
MarcoFalke e7db4e245a
Merge bitcoin/bitcoin#24164: build: Bump minimum required clang/libc++ to 8.0
fae20e6b50 Revert "Avoid the use of P0083R3 std::set::merge" (MarcoFalke)
fab53b5fd4 ci/doc: Set minimum required clang/libc++ version to 8.0 (MarcoFalke)

Pull request description:

  This is not for 23.0, but for 24.0. It comes with the following benefits:

  * Can use C++17 P0083R3 std::set::merge from libc++ 8.0
  * No longer need to provide support for clang-7, which already fails to compile on some architectures (https://github.com/bitcoin/bitcoin/issues/21294#issuecomment-998098483)

  This should be fine, given that all supported operating systems ship with at least clang-10:

  * CentOS 8: clang-12
  * Stretch: https://packages.debian.org/stretch/clang-11
  * Buster: https://packages.debian.org/buster-backports/clang-11
  * Bionic: https://packages.ubuntu.com/bionic-updates/clang-10
  * Focal: https://packages.ubuntu.com/focal/clang-10

ACKs for top commit:
  fanquake:
    ACK fae20e6b50 - I think this is fine to do. I would be surprised if in another 6 months time someone was stuck on a system we supported, needing to compile Core, and only had access to Clang 7 or older. As mentioned in the PR description, all systems we currently support, already support multiple newer versions of Clang.
  hebasto:
    ACK fae20e6b50, I have reviewed the code and it looks OK, I agree it can be merged.

Tree-SHA512: 3b4c6c130ff40dd7e84934af076863415e5dd661d823c72e3e3832566c65be6e877a7ef9164bbcf394bcea4b897fc29a48db0f231c22ace0e2c9b5638659a628
2022-03-12 10:37:05 +01:00

3.6 KiB

Dependencies

These are the dependencies currently used by Bitcoin Core. You can find instructions for installing them in the build-*.md file for your platform.

Dependency Version used Minimum required CVEs Shared Bundled Qt library
Berkeley DB 4.8.30 4.8.x No
Boost 1.77.0 1.64.0 No
Clang 8.0 (C++17 & std::filesystem support)
Fontconfig 2.12.6 No Yes
FreeType 2.11.0 No Yes (Android only)
GCC 8.1 (C++17 & std::filesystem support)
glibc 2.18
HarfBuzz-NG Yes
libevent 2.1.12-stable 2.0.21 No
libnatpmp git commit 4536032... No
libpng Yes
MiniUPnPc 2.2.2 No
PCRE Yes
Python (tests) 3.6
qrencode 3.4.4 No
Qt 5.15.2 5.11.3 No
SQLite 3.32.1 3.7.17
XCB Yes (Linux only)
systemtap (tracing) 4.5
xkbcommon Yes (Linux only)
ZeroMQ 4.3.1 4.0.0 No
zlib Yes

Controlling dependencies

Some dependencies are not needed in all configurations. The following are some factors that affect the dependency list.

Options passed to ./configure

  • MiniUPnPc is not needed with --without-miniupnpc.
  • libnatpmp is not needed with --without-natpmp.
  • Berkeley DB is not needed with --disable-wallet or --without-bdb.
  • SQLite is not needed with --disable-wallet or --without-sqlite.
  • Qt is not needed with --without-gui.
  • If the qrencode dependency is absent, QR support won't be added. To force an error when that happens, pass --with-qrencode.
  • If the systemtap dependency is absent, USDT support won't compiled in.
  • ZeroMQ is needed only with the --with-zmq option.

Other

  • Not-Qt-bundled zlib is required to build the DMG tool from the libdmg-hfsplus project.