From bac407fa1ecf2434ecfcbe86f5695a107508d898 Mon Sep 17 00:00:00 2001
From: Kittywhiskers Van Gogh <63189531+kwvg@users.noreply.github.com>
Date: Mon, 28 Jun 2021 15:58:49 +0800
Subject: [PATCH 01/16] merge bitcoin#23060: increase minimum compiler and
lib(std)c++ requirements
---
doc/dependencies.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/doc/dependencies.md b/doc/dependencies.md
index af782aecc1886..6583a1cc5efd0 100644
--- a/doc/dependencies.md
+++ b/doc/dependencies.md
@@ -7,10 +7,10 @@ These are the dependencies currently used by Dash Core. You can find instruction
| --- | --- | --- | --- | --- | --- |
| Berkeley DB | [4.8.30](https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html) | 4.8.x | No | | |
| Boost | [1.81.0](https://www.boost.org/users/download/) | [1.73.0](https://github.com/bitcoin/bitcoin/pull/29066) | No | | |
-| Clang[ \* ](#note1) | | [5.0+](https://releases.llvm.org/download.html) (C++17 support) | | | |
+| Clang[ \* ](#note1) | | [7.0](https://releases.llvm.org/download.html) (C++17 & std::filesystem support) | | | |
| fontconfig | [2.12.1](https://www.freedesktop.org/software/fontconfig/release/) | | No | Yes | |
| FreeType | [2.11.0](https://download.savannah.gnu.org/releases/freetype) | | No | | [Yes](https://github.com/dashpay/dash/blob/develop/depends/packages/qt.mk) (Android only) |
-| GCC | | [7+](https://gcc.gnu.org/) (C++17 support) | | | |
+| GCC | | [8.1](https://gcc.gnu.org/) (C++17 & std::filesystem support) | | | |
| glibc | | [2.31](https://www.gnu.org/software/libc/) | | | | |
| HarfBuzz-NG | | | | | [Yes](https://github.com/dashpay/dash/blob/develop/depends/packages/qt.mk) |
| libevent | [2.1.12-stable](https://github.com/libevent/libevent/releases) | [2.0.21](https://github.com/bitcoin/bitcoin/pull/18676) | No | | |
From 56989ec5275e5e967bcef31a8452a291805bb894 Mon Sep 17 00:00:00 2001
From: Kittywhiskers Van Gogh <63189531+kwvg@users.noreply.github.com>
Date: Wed, 26 Jan 2022 08:30:25 +0000
Subject: [PATCH 02/16] merge bitcoin#24164: Bump minimum required clang/libc++
to 8.0
---
doc/dependencies.md | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/doc/dependencies.md b/doc/dependencies.md
index 6583a1cc5efd0..5723c88488c50 100644
--- a/doc/dependencies.md
+++ b/doc/dependencies.md
@@ -7,7 +7,7 @@ These are the dependencies currently used by Dash Core. You can find instruction
| --- | --- | --- | --- | --- | --- |
| Berkeley DB | [4.8.30](https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html) | 4.8.x | No | | |
| Boost | [1.81.0](https://www.boost.org/users/download/) | [1.73.0](https://github.com/bitcoin/bitcoin/pull/29066) | No | | |
-| Clang[ \* ](#note1) | | [7.0](https://releases.llvm.org/download.html) (C++17 & std::filesystem support) | | | |
+| Clang | | [8.0](https://releases.llvm.org/download.html) (C++17 & std::filesystem support) | | | |
| fontconfig | [2.12.1](https://www.freedesktop.org/software/fontconfig/release/) | | No | Yes | |
| FreeType | [2.11.0](https://download.savannah.gnu.org/releases/freetype) | | No | | [Yes](https://github.com/dashpay/dash/blob/develop/depends/packages/qt.mk) (Android only) |
| GCC | | [8.1](https://gcc.gnu.org/) (C++17 & std::filesystem support) | | | |
@@ -29,8 +29,6 @@ These are the dependencies currently used by Dash Core. You can find instruction
| ZeroMQ | [4.3.1](https://github.com/zeromq/libzmq/releases) | 4.0.0 | No | | |
| zlib | | | | | [Yes](https://github.com/dashpay/dash/blob/develop/depends/packages/qt.mk) |
-Note \* : When compiling with `-stdlib=libc++`, the minimum supported libc++ version is 7.0.
-
Controlling dependencies
------------------------
Some dependencies are not needed in all configurations. The following are some factors that affect the dependency list.
From 2bd84222f0db7cf4a1e54968d0e63c7a8e7226ea Mon Sep 17 00:00:00 2001
From: Kittywhiskers Van Gogh <63189531+kwvg@users.noreply.github.com>
Date: Fri, 8 Nov 2024 13:29:17 +0000
Subject: [PATCH 03/16] merge bitcoin#23565: rewrite dependencies.md
---
doc/build-freebsd.md | 40 +++++-------------
doc/build-osx.md | 37 +----------------
doc/build-unix.md | 26 +-----------
doc/dependencies.md | 96 ++++++++++++++++++++++----------------------
4 files changed, 62 insertions(+), 137 deletions(-)
diff --git a/doc/build-freebsd.md b/doc/build-freebsd.md
index dd734f7787d15..735a8dfa98ee3 100644
--- a/doc/build-freebsd.md
+++ b/doc/build-freebsd.md
@@ -4,36 +4,6 @@
This guide describes how to build dashd, command-line utilities, and GUI on FreeBSD.
-## Dependencies
-
-The following dependencies are **required**:
-
- Library | Purpose | Description
- ----------------------------------------------------------------------|------------|----------------------
- [autoconf](https://svnweb.freebsd.org/ports/head/devel/autoconf/) | Build | Automatically configure software source code
- [automake](https://svnweb.freebsd.org/ports/head/devel/automake/) | Build | Generate makefile (requires autoconf)
- [libtool](https://svnweb.freebsd.org/ports/head/devel/libtool/) | Build | Shared library support
- [pkgconf](https://svnweb.freebsd.org/ports/head/devel/pkgconf/) | Build | Configure compiler and linker flags
- [git](https://svnweb.freebsd.org/ports/head/devel/git/) | Clone | Version control system
- [gmake](https://svnweb.freebsd.org/ports/head/devel/gmake/) | Compile | Generate executables
- [boost-libs](https://svnweb.freebsd.org/ports/head/devel/boost-libs/) | Utility | Library for threading, data structures, etc
- [libevent](https://svnweb.freebsd.org/ports/head/devel/libevent/) | Networking | OS independent asynchronous networking
-
-
-The following dependencies are **optional**:
-
- Library | Purpose | Description
- ---------------------------------------------------------------------------|------------------|----------------------
- [db5](https://svnweb.freebsd.org/ports/head/databases/db5/) | Berkeley DB | Wallet storage (only needed when wallet enabled)
- [qt5](https://svnweb.freebsd.org/ports/head/devel/qt5/) | GUI | GUI toolkit (only needed when GUI enabled)
- [gmp](https://svnweb.freebsd.org/ports/head/math/gmp/) | Optimized math routines | Arbitrary precision arithmetic library
- [libqrencode](https://svnweb.freebsd.org/ports/head/graphics/libqrencode/) | QR codes in GUI | Generating QR codes (only needed when GUI enabled)
- [libzmq4](https://svnweb.freebsd.org/ports/head/net/libzmq4/) | ZMQ notification | Allows generating ZMQ notifications (requires ZMQ version >= 4.0.0)
- [sqlite3](https://svnweb.freebsd.org/ports/head/databases/sqlite3/) | SQLite DB | Wallet storage (only needed when wallet enabled)
- [python3](https://svnweb.freebsd.org/ports/head/lang/python3/) | Testing | Python Interpreter (only needed when running the test suite)
-
- See [dependencies.md](dependencies.md) for a complete overview.
-
## Preparation
### 1. Install Required Dependencies
@@ -44,6 +14,8 @@ pkg install autoconf automake boost-libs git gmake libevent libtool pkgconf
```
+See [dependencies.md](dependencies.md) for a complete overview.
+
### 2. Clone Dash Repo
Now that `git` and all the required dependencies are installed, let's clone the Dash Core repository to a directory. All build scripts and commands will run from this directory.
``` bash
@@ -91,6 +63,14 @@ pkg install libqrencode
```
---
+#### Notifications
+###### ZeroMQ
+
+Dash Core can provide notifications via ZeroMQ. If the package is installed, support will be compiled in.
+```bash
+pkg install libzmq4
+```
+
#### Test Suite Dependencies
There is an included test suite that is useful for testing code changes when developing.
To run the test suite (recommended), you will need to have Python 3 installed:
diff --git a/doc/build-osx.md b/doc/build-osx.md
index c532dc9648e2c..59d43a7941948 100644
--- a/doc/build-osx.md
+++ b/doc/build-osx.md
@@ -6,41 +6,6 @@ This guide describes how to build dashd, command-line utilities, and GUI on macO
**Note:** The following is for Intel Macs only!
-## Dependencies
-
-The following dependencies are **required**:
-
-Library | Purpose | Description
------------------------------------------------------------|------------|----------------------
-[automake](https://formulae.brew.sh/formula/automake) | Build | Generate makefile
-[libtool](https://formulae.brew.sh/formula/libtool) | Build | Shared library support
-[pkg-config](https://formulae.brew.sh/formula/pkg-config) | Build | Configure compiler and linker flags
-[boost](https://formulae.brew.sh/formula/boost) | Utility | Library for threading, data structures, etc
-[libevent](https://formulae.brew.sh/formula/libevent) | Networking | OS independent asynchronous networking
-
-The following dependencies are **optional**:
-
-Library | Purpose | Description
---------------------------------------------------------------- |------------------|----------------------
-[berkeley-db@4](https://formulae.brew.sh/formula/berkeley-db@4) | Berkeley DB | Wallet storage (only needed when wallet enabled)
-[qt@5](https://formulae.brew.sh/formula/qt@5) | GUI | GUI toolkit (only needed when GUI enabled)
-[qrencode](https://formulae.brew.sh/formula/qrencode) | QR codes in GUI | Generating QR codes (only needed when GUI enabled)
-[zeromq](https://formulae.brew.sh/formula/zeromq) | ZMQ notification | Allows generating ZMQ notifications (requires ZMQ version >= 4.0.0)
-[sqlite](https://formulae.brew.sh/formula/sqlite) | SQLite DB | Wallet storage (only needed when wallet enabled)
-[miniupnpc](https://formulae.brew.sh/formula/miniupnpc) | UPnP Support | Firewall-jumping support (needed for port mapping support)
-[libnatpmp](https://formulae.brew.sh/formula/libnatpmp) | NAT-PMP Support | Firewall-jumping support (needed for port mapping support)
-[python3](https://formulae.brew.sh/formula/python@3.9) | Testing | Python Interpreter (only needed when running the test suite)
-
-The following dependencies are **optional** packages required for deploying:
-
-Library | Purpose | Description
-----------------------------------------------------|------------------|----------------------
-[librsvg](https://formulae.brew.sh/formula/librsvg) | Deploy Dependency| Library to render SVG files
-[ds_store](https://pypi.org/project/ds-store/) | Deploy Dependency| Examine and modify .DS_Store files
-[mac_alias](https://pypi.org/project/mac-alias/) | Deploy Dependency| Generate/Read binary alias and bookmark records
-
-See [dependencies.md](dependencies.md) for a complete overview.
-
## Preparation
The commands in this guide should be executed in a Terminal application.
@@ -81,6 +46,8 @@ The first step is to download the required dependencies.
These dependencies represent the packages required to get a barebones installation up and running.
To install, run the following from your terminal:
+See [dependencies.md](dependencies.md) for a complete overview.
+
``` bash
brew install automake libtool boost gmp pkg-config libevent
```
diff --git a/doc/build-unix.md b/doc/build-unix.md
index 4eb4aed88551b..069842cb61865 100644
--- a/doc/build-unix.md
+++ b/doc/build-unix.md
@@ -28,31 +28,7 @@ make install # optional
This will build dash-qt as well, if the dependencies are met.
-Dependencies
----------------------
-
-These dependencies are required:
-
- Library | Purpose | Description
- ------------|------------------|----------------------
- libboost | Utility | Library for threading, data structures, etc
- libevent | Networking | OS independent asynchronous networking
-
-Optional dependencies:
-
- Library | Purpose | Description
- ------------|------------------|----------------------
- gmp | Optimized math routines | Arbitrary precision arithmetic library
- miniupnpc | UPnP Support | Firewall-jumping support
- libnatpmp | NAT-PMP Support | Firewall-jumping support
- libdb4.8 | Berkeley DB | Wallet storage (only needed when legacy wallet enabled)
- qt | GUI | GUI toolkit (only needed when GUI enabled)
- libqrencode | QR codes in GUI | QR code generation (only needed when GUI enabled)
- libzmq3 | ZMQ notification | ZMQ notifications (requires ZMQ version >= 4.0.0)
- sqlite3 | SQLite DB | Wallet storage (only needed when descriptor wallet enabled)
- systemtap | Tracing (USDT) | Statically defined tracepoints
-
-For the versions used, see [dependencies.md](dependencies.md)
+See [dependencies.md](dependencies.md) for a complete overview.
Memory Requirements
--------------------
diff --git a/doc/dependencies.md b/doc/dependencies.md
index 5723c88488c50..5db0bcb457e3c 100644
--- a/doc/dependencies.md
+++ b/doc/dependencies.md
@@ -1,47 +1,49 @@
-Dependencies
-============
-
-These are the dependencies currently used by Dash 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](https://doc.qt.io/qt-5/configure-options.html#third-party-libraries) |
-| --- | --- | --- | --- | --- | --- |
-| Berkeley DB | [4.8.30](https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html) | 4.8.x | No | | |
-| Boost | [1.81.0](https://www.boost.org/users/download/) | [1.73.0](https://github.com/bitcoin/bitcoin/pull/29066) | No | | |
-| Clang | | [8.0](https://releases.llvm.org/download.html) (C++17 & std::filesystem support) | | | |
-| fontconfig | [2.12.1](https://www.freedesktop.org/software/fontconfig/release/) | | No | Yes | |
-| FreeType | [2.11.0](https://download.savannah.gnu.org/releases/freetype) | | No | | [Yes](https://github.com/dashpay/dash/blob/develop/depends/packages/qt.mk) (Android only) |
-| GCC | | [8.1](https://gcc.gnu.org/) (C++17 & std::filesystem support) | | | |
-| glibc | | [2.31](https://www.gnu.org/software/libc/) | | | | |
-| HarfBuzz-NG | | | | | [Yes](https://github.com/dashpay/dash/blob/develop/depends/packages/qt.mk) |
-| libevent | [2.1.12-stable](https://github.com/libevent/libevent/releases) | [2.0.21](https://github.com/bitcoin/bitcoin/pull/18676) | No | | |
-| libnatpmp | git commit [07004b9...](https://github.com/miniupnp/libnatpmp/tree/07004b97cf691774efebe70404cf22201e4d330d) | | No | | |
-| libpng | | | | | [Yes](https://github.com/dashpay/dash/blob/develop/depends/packages/qt.mk) |
-| Linux Kernel | [N/A](https://www.kernel.org/) | 3.2.0 | | | |
-| MiniUPnPc | [2.2.2](https://miniupnp.tuxfamily.org/files) | | No | | |
-| PCRE | | | | | [Yes](https://github.com/dashpay/dash/blob/develop/depends/packages/qt.mk) |
-| Python (tests) | | [3.9](https://www.python.org/downloads) | | | |
-| qrencode | [3.4.4](https://fukuchi.org/works/qrencode) | | No | | |
-| Qt | [5.15.13](https://download.qt.io/official_releases/qt/) | [5.11.3](https://github.com/bitcoin/bitcoin/pull/24132) | No | | |
-| SQLite | [3.32.1](https://sqlite.org/download.html) | [3.7.17](https://github.com/bitcoin/bitcoin/pull/19077) | | | |
-| XCB | | | | | [Yes](https://github.com/dashpay/dash/blob/develop/depends/packages/qt.mk) (Linux only) |
-| systemtap ([tracing](tracing.md))| [4.8](https://sourceware.org/ftp/systemtap/releases/) | | | | |
-| xkbcommon | | | | | [Yes](https://github.com/dashpay/dash/blob/develop/depends/packages/qt.mk) (Linux only) |
-| ZeroMQ | [4.3.1](https://github.com/zeromq/libzmq/releases) | 4.0.0 | No | | |
-| zlib | | | | | [Yes](https://github.com/dashpay/dash/blob/develop/depends/packages/qt.mk) |
-
-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`.
-* Berkeley DB is not needed with `--disable-wallet` or `--without-bdb`.
-* SQLite is not needed with `--disable-wallet` or `--without-sqlite`.
-* libnatpmp is not needed with `--without-natpmp`.
-* 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](../contrib/macdeploy/README.md#deterministic-macos-dmg-notes) from the libdmg-hfsplus project.
+# Dependencies
+
+These are the dependencies used by Dash Core.
+You can find installation instructions in the `build-*.md` file for your platform.
+"Runtime" and "Version Used" are both in reference to the release binaries.
+
+| Compiler | Minimum required |
+| --- | --- |
+| [Autoconf](https://www.gnu.org/software/autoconf/) | [2.69](https://github.com/bitcoin/bitcoin/pull/17769) |
+| [Automake](https://www.gnu.org/software/automake/) | [1.13](https://github.com/bitcoin/bitcoin/pull/18290) |
+| [Clang](https://clang.llvm.org) | [8.0](https://github.com/bitcoin/bitcoin/pull/24164) |
+| [GCC](https://gcc.gnu.org) | [8.1](https://github.com/bitcoin/bitcoin/pull/23060) |
+| [Python](https://www.python.org) (scripts, tests) | [3.9](https://github.com/bitcoin/bitcoin/pull/28211) |
+| [systemtap](https://sourceware.org/systemtap/) ([tracing](tracing.md))| N/A |
+
+## Required
+
+| Dependency | Version used | Minimum required | Runtime |
+| --- | --- | --- | --- |
+| [Boost](https://www.boost.org/users/download/) | 1.81.0 | [1.73.0](https://github.com/bitcoin/bitcoin/pull/29066) | No |
+| [libevent](https://github.com/libevent/libevent/releases) | 2.1.12-stable | [2.0.21](https://github.com/bitcoin/bitcoin/pull/18676) | No |
+| [glibc](https://www.gnu.org/software/libc/) | N/A | [2.31](https://github.com/bitcoin/bitcoin/pull/29987) | Yes |
+
+## Optional
+
+### GUI
+| Dependency | Version used | Minimum required | Runtime |
+| --- | --- | --- | --- |
+| [Fontconfig](https://www.freedesktop.org/wiki/Software/fontconfig/) | 2.12.1 | 2.6 | Yes |
+| [FreeType](https://freetype.org) | 2.11.0 | 2.3.0 | Yes |
+| [qrencode](https://fukuchi.org/works/qrencode/) | [3.4.4](https://fukuchi.org/works/qrencode) | | No |
+| [Qt](https://www.qt.io) | [5.15.13](https://download.qt.io/official_releases/qt/) | [5.11.3](https://github.com/bitcoin/bitcoin/pull/24132) | No |
+
+### Networking
+| Dependency | Version used | Minimum required | Runtime |
+| --- | --- | --- | --- |
+| [libnatpmp](https://github.com/miniupnp/libnatpmp/) | commit [07004b9...](https://github.com/miniupnp/libnatpmp/tree/07004b97cf691774efebe70404cf22201e4d330d) | | No |
+| [MiniUPnPc](https://miniupnp.tuxfamily.org/) | 2.2.2 | 1.9 | No |
+
+### Notifications
+| Dependency | Version used | Minimum required | Runtime |
+| --- | --- | --- | --- |
+| [ZeroMQ](https://zeromq.org) | 4.3.1 | 4.0.0 | No |
+
+### Wallet
+| Dependency | Version used | Minimum required | Runtime |
+| --- | --- | --- | --- |
+| [Berkeley DB](https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html) (legacy wallet) | 4.8.30 | 4.8.x | No |
+| [SQLite](https://sqlite.org) | 3.32.1 | [3.7.17](https://github.com/bitcoin/bitcoin/pull/19077) | No |
From 39b6f4bceec7087e88a2aca4e05e91b29bf8aceb Mon Sep 17 00:00:00 2001
From: Kittywhiskers Van Gogh <63189531+kwvg@users.noreply.github.com>
Date: Mon, 14 Feb 2022 13:55:57 +0200
Subject: [PATCH 04/16] merge bitcoin#24337: Do not define
`PROVIDE_FUZZ_MAIN_FUNCTION` macro unconditionally
---
configure.ac | 39 ++++++++++++++++++---------------------
1 file changed, 18 insertions(+), 21 deletions(-)
diff --git a/configure.ac b/configure.ac
index c8fec23a264ae..612c71b160442 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1363,22 +1363,6 @@ if test "x$enable_fuzz" = "xyes"; then
enable_fuzz_binary=yes
AX_CHECK_PREPROC_FLAG([-DABORT_ON_FAILED_ASSUME],[[DEBUG_CPPFLAGS="$DEBUG_CPPFLAGS -DABORT_ON_FAILED_ASSUME"]],,[[$CXXFLAG_WERROR]])
-
- AC_MSG_CHECKING([whether main function is needed for fuzz binary])
- AX_CHECK_LINK_FLAG(
- [[-fsanitize=$use_sanitizers]],
- [AC_MSG_RESULT([no])],
- [AC_MSG_RESULT([yes])
- CORE_CPPFLAGS="$CORE_CPPFLAGS -DPROVIDE_FUZZ_MAIN_FUNCTION"],
- [],
- [AC_LANG_PROGRAM([[
- #include
- #include
- extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { return 0; }
- /* comment to remove the main function ...
- ]],[[
- */ int not_main() {
- ]])])
else
BITCOIN_QT_INIT
@@ -1392,8 +1376,25 @@ else
QT_DBUS_INCLUDES=SUPPRESS_WARNINGS($QT_DBUS_INCLUDES)
QT_TEST_INCLUDES=SUPPRESS_WARNINGS($QT_TEST_INCLUDES)
fi
+fi
+
+if test x$enable_fuzz_binary = xyes; then
+ AC_MSG_CHECKING([whether main function is needed for fuzz binary])
+ AX_CHECK_LINK_FLAG(
+ [],
+ [AC_MSG_RESULT([no])],
+ [AC_MSG_RESULT([yes]); CORE_CPPFLAGS="$CORE_CPPFLAGS -DPROVIDE_FUZZ_MAIN_FUNCTION"],
+ [$SANITIZER_LDFLAGS],
+ [AC_LANG_PROGRAM([[
+ #include
+ #include
+ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { return 0; }
+ /* comment to remove the main function ...
+ ]],[[
+ */ int not_main() {
+ ]])])
- CORE_CPPFLAGS="$CORE_CPPFLAGS -DPROVIDE_FUZZ_MAIN_FUNCTION"
+ CHECK_RUNTIME_LIB
fi
if test x$enable_wallet != xno; then
@@ -1817,10 +1818,6 @@ if test x$build_bitcoin_wallet$build_bitcoin_cli$build_bitcoin_tx$build_bitcoind
AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon --with-gui --enable-bench or --enable-tests])
fi
-if test x$enable_fuzz_binary = xyes; then
- CHECK_RUNTIME_LIB
-fi
-
AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin])
AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin])
AM_CONDITIONAL([TARGET_LINUX], [test x$TARGET_OS = xlinux])
From ebba607a409e8648b3799e346d22424ba0fd1d52 Mon Sep 17 00:00:00 2001
From: Kittywhiskers Van Gogh <63189531+kwvg@users.noreply.github.com>
Date: Sun, 3 Nov 2024 08:27:06 +0000
Subject: [PATCH 05/16] docs: update version used to match `depends`
---
doc/dependencies.md | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/doc/dependencies.md b/doc/dependencies.md
index 5db0bcb457e3c..40ce282908374 100644
--- a/doc/dependencies.md
+++ b/doc/dependencies.md
@@ -28,7 +28,7 @@ You can find installation instructions in the `build-*.md` file for your platfor
| --- | --- | --- | --- |
| [Fontconfig](https://www.freedesktop.org/wiki/Software/fontconfig/) | 2.12.1 | 2.6 | Yes |
| [FreeType](https://freetype.org) | 2.11.0 | 2.3.0 | Yes |
-| [qrencode](https://fukuchi.org/works/qrencode/) | [3.4.4](https://fukuchi.org/works/qrencode) | | No |
+| [qrencode](https://fukuchi.org/works/qrencode/) | [4.1.1](https://fukuchi.org/works/qrencode) | | No |
| [Qt](https://www.qt.io) | [5.15.13](https://download.qt.io/official_releases/qt/) | [5.11.3](https://github.com/bitcoin/bitcoin/pull/24132) | No |
### Networking
@@ -40,10 +40,10 @@ You can find installation instructions in the `build-*.md` file for your platfor
### Notifications
| Dependency | Version used | Minimum required | Runtime |
| --- | --- | --- | --- |
-| [ZeroMQ](https://zeromq.org) | 4.3.1 | 4.0.0 | No |
+| [ZeroMQ](https://zeromq.org) | 4.3.5 | 4.0.0 | No |
### Wallet
| Dependency | Version used | Minimum required | Runtime |
| --- | --- | --- | --- |
| [Berkeley DB](https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html) (legacy wallet) | 4.8.30 | 4.8.x | No |
-| [SQLite](https://sqlite.org) | 3.32.1 | [3.7.17](https://github.com/bitcoin/bitcoin/pull/19077) | No |
+| [SQLite](https://sqlite.org) | 3.38.5 | [3.7.17](https://github.com/bitcoin/bitcoin/pull/19077) | No |
From f8e0339b068253f92591b5f9ea677460f2e1c7e9 Mon Sep 17 00:00:00 2001
From: Kittywhiskers Van Gogh <63189531+kwvg@users.noreply.github.com>
Date: Sun, 3 Nov 2024 08:33:14 +0000
Subject: [PATCH 06/16] docs: add `libgmp` as an optional dependency
---
doc/dependencies.md | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/doc/dependencies.md b/doc/dependencies.md
index 40ce282908374..954bac71db1ea 100644
--- a/doc/dependencies.md
+++ b/doc/dependencies.md
@@ -23,6 +23,10 @@ You can find installation instructions in the `build-*.md` file for your platfor
## Optional
+| Dependency | Version used | Minimum required | Runtime |
+| --- | --- | --- | --- |
+| [libgmp](https://gmplib.org/download/gmp/)[ \* ](#note1) | 6.3.0 | [6.2.0](https://github.com/dashpay/bls-signatures/pull/92) | No |
+
### GUI
| Dependency | Version used | Minimum required | Runtime |
| --- | --- | --- | --- |
@@ -47,3 +51,5 @@ You can find installation instructions in the `build-*.md` file for your platfor
| --- | --- | --- | --- |
| [Berkeley DB](https://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html) (legacy wallet) | 4.8.30 | 4.8.x | No |
| [SQLite](https://sqlite.org) | 3.38.5 | [3.7.17](https://github.com/bitcoin/bitcoin/pull/19077) | No |
+
+Note \* : The minimum supported version on macOS is 6.3.0
From f6777695bcc4a48e0c7c0cd4259e8a948487df93 Mon Sep 17 00:00:00 2001
From: Kittywhiskers Van Gogh <63189531+kwvg@users.noreply.github.com>
Date: Sun, 3 Nov 2024 08:35:16 +0000
Subject: [PATCH 07/16] merge bitcoin#27682: Bump minimum supported Clang to
clang-10
---
build-aux/m4/l_filesystem.m4 | 11 +----------
ci/test/05_before_script.sh | 3 ---
doc/dependencies.md | 2 +-
3 files changed, 2 insertions(+), 14 deletions(-)
diff --git a/build-aux/m4/l_filesystem.m4 b/build-aux/m4/l_filesystem.m4
index ca3a0cd41c061..7e577f7ae56d6 100644
--- a/build-aux/m4/l_filesystem.m4
+++ b/build-aux/m4/l_filesystem.m4
@@ -3,7 +3,6 @@ dnl Distributed under the MIT software license, see the accompanying
dnl file COPYING or http://www.opensource.org/licenses/mit-license.php.
# GCC 8.1 and earlier requires -lstdc++fs
-# Clang 8.0.0 (libc++) and earlier requires -lc++fs
m4_define([_CHECK_FILESYSTEM_testbody], [[
#include
@@ -26,20 +25,12 @@ AC_DEFUN([CHECK_FILESYSTEM], [
AC_MSG_RESULT([yes])
],[
AC_MSG_RESULT([no])
- SAVED_LIBS="$LIBS"
- LIBS="$SAVED_LIBS -lstdc++fs"
+ LIBS="$LIBS -lstdc++fs"
AC_MSG_CHECKING([whether std::filesystem needs -lstdc++fs])
AC_LINK_IFELSE([AC_LANG_SOURCE([_CHECK_FILESYSTEM_testbody])],[
AC_MSG_RESULT([yes])
- ],[
- AC_MSG_RESULT([no])
- AC_MSG_CHECKING([whether std::filesystem needs -lc++fs])
- LIBS="$SAVED_LIBS -lc++fs"
- AC_LINK_IFELSE([AC_LANG_SOURCE([_CHECK_FILESYSTEM_testbody])],[
- AC_MSG_RESULT([yes])
],[
AC_MSG_FAILURE([cannot figure out how to use std::filesystem])
- ])
])
])
diff --git a/ci/test/05_before_script.sh b/ci/test/05_before_script.sh
index 07dfaad234031..eda748f74c60e 100755
--- a/ci/test/05_before_script.sh
+++ b/ci/test/05_before_script.sh
@@ -26,9 +26,6 @@ if [[ $HOST = *-mingw32 ]]; then
fi
if [ -z "$NO_DEPENDS" ]; then
if [[ $DOCKER_NAME_TAG == centos* ]]; then
- # CentOS has problems building the depends if the config shell is not explicitly set
- # (i.e. for libevent a Makefile with an empty SHELL variable is generated, leading to
- # an error as the first command is executed)
SHELL_OPTS="LC_ALL=en_US.UTF-8 CONFIG_SHELL=/bin/bash"
else
SHELL_OPTS="CONFIG_SHELL="
diff --git a/doc/dependencies.md b/doc/dependencies.md
index 954bac71db1ea..94e3fd081c54c 100644
--- a/doc/dependencies.md
+++ b/doc/dependencies.md
@@ -8,7 +8,7 @@ You can find installation instructions in the `build-*.md` file for your platfor
| --- | --- |
| [Autoconf](https://www.gnu.org/software/autoconf/) | [2.69](https://github.com/bitcoin/bitcoin/pull/17769) |
| [Automake](https://www.gnu.org/software/automake/) | [1.13](https://github.com/bitcoin/bitcoin/pull/18290) |
-| [Clang](https://clang.llvm.org) | [8.0](https://github.com/bitcoin/bitcoin/pull/24164) |
+| [Clang](https://clang.llvm.org) | [10.0](https://github.com/bitcoin/bitcoin/pull/27682) |
| [GCC](https://gcc.gnu.org) | [8.1](https://github.com/bitcoin/bitcoin/pull/23060) |
| [Python](https://www.python.org) (scripts, tests) | [3.9](https://github.com/bitcoin/bitcoin/pull/28211) |
| [systemtap](https://sourceware.org/systemtap/) ([tracing](tracing.md))| N/A |
From 6b22832fe8a3294206655b9626a5c9c8aa354bdd Mon Sep 17 00:00:00 2001
From: Kittywhiskers Van Gogh <63189531+kwvg@users.noreply.github.com>
Date: Sun, 3 Nov 2024 08:41:31 +0000
Subject: [PATCH 08/16] partial bitcoin#27662: Bump minimum supported GCC to
g++-9
excludes:
- fa953f15b (portions)
---
.cirrus.yml | 4 ++--
build-aux/m4/l_filesystem.m4 | 38 ------------------------------------
ci/test/04_install.sh | 4 ++--
ci/test/05_before_script.sh | 2 +-
configure.ac | 3 ---
doc/dependencies.md | 2 +-
6 files changed, 6 insertions(+), 47 deletions(-)
delete mode 100644 build-aux/m4/l_filesystem.m4
diff --git a/.cirrus.yml b/.cirrus.yml
index 55136d7d8907f..7c3db59b74ba4 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -78,10 +78,10 @@ task:
FILE_ENV: "./ci/test/00_setup_env_win64.sh"
task:
- name: '32-bit + dash [gui] [CentOS 8]'
+ name: '32-bit + dash [gui] [CentOS 9]'
<< : *GLOBAL_TASK_TEMPLATE
container:
- image: centos:8
+ image: centos:9
env:
PACKAGE_MANAGER_INSTALL: "yum install -y"
FILE_ENV: "./ci/test/00_setup_env_i686_centos.sh"
diff --git a/build-aux/m4/l_filesystem.m4 b/build-aux/m4/l_filesystem.m4
deleted file mode 100644
index 7e577f7ae56d6..0000000000000
--- a/build-aux/m4/l_filesystem.m4
+++ /dev/null
@@ -1,38 +0,0 @@
-dnl Copyright (c) 2022 The Bitcoin Core developers
-dnl Distributed under the MIT software license, see the accompanying
-dnl file COPYING or http://www.opensource.org/licenses/mit-license.php.
-
-# GCC 8.1 and earlier requires -lstdc++fs
-
-m4_define([_CHECK_FILESYSTEM_testbody], [[
- #include
-
- namespace fs = std::filesystem;
-
- int main() {
- (void)fs::current_path().root_name();
- return 0;
- }
-]])
-
-AC_DEFUN([CHECK_FILESYSTEM], [
-
- AC_LANG_PUSH(C++)
-
- AC_MSG_CHECKING([whether std::filesystem can be used without link library])
-
- AC_LINK_IFELSE([AC_LANG_SOURCE([_CHECK_FILESYSTEM_testbody])],[
- AC_MSG_RESULT([yes])
- ],[
- AC_MSG_RESULT([no])
- LIBS="$LIBS -lstdc++fs"
- AC_MSG_CHECKING([whether std::filesystem needs -lstdc++fs])
- AC_LINK_IFELSE([AC_LANG_SOURCE([_CHECK_FILESYSTEM_testbody])],[
- AC_MSG_RESULT([yes])
- ],[
- AC_MSG_FAILURE([cannot figure out how to use std::filesystem])
- ])
- ])
-
- AC_LANG_POP
-])
diff --git a/ci/test/04_install.sh b/ci/test/04_install.sh
index a744d16be8a2a..d6f74f0f872a5 100755
--- a/ci/test/04_install.sh
+++ b/ci/test/04_install.sh
@@ -59,8 +59,8 @@ if [ -n "$DPKG_ADD_ARCH" ]; then
fi
if [[ $DOCKER_NAME_TAG == centos* ]]; then
- ${CI_RETRY_EXE} DOCKER_EXEC yum -y install epel-release
- ${CI_RETRY_EXE} DOCKER_EXEC yum -y install "$DOCKER_PACKAGES" "$PACKAGES"
+ DOCKER_EXEC yum -y install epel-release
+ DOCKER_EXEC yum -y install "$DOCKER_PACKAGES" "$PACKAGES"
elif [ "$CI_USE_APT_INSTALL" != "no" ]; then
${CI_RETRY_EXE} DOCKER_EXEC apt-get update
${CI_RETRY_EXE} DOCKER_EXEC apt-get install --no-install-recommends --no-upgrade -y "$PACKAGES" "$DOCKER_PACKAGES"
diff --git a/ci/test/05_before_script.sh b/ci/test/05_before_script.sh
index eda748f74c60e..3b6e957c17cd6 100755
--- a/ci/test/05_before_script.sh
+++ b/ci/test/05_before_script.sh
@@ -26,7 +26,7 @@ if [[ $HOST = *-mingw32 ]]; then
fi
if [ -z "$NO_DEPENDS" ]; then
if [[ $DOCKER_NAME_TAG == centos* ]]; then
- SHELL_OPTS="LC_ALL=en_US.UTF-8 CONFIG_SHELL=/bin/bash"
+ SHELL_OPTS="CONFIG_SHELL=/bin/bash"
else
SHELL_OPTS="CONFIG_SHELL="
fi
diff --git a/configure.ac b/configure.ac
index 612c71b160442..d1487d54ddde9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -90,9 +90,6 @@ else
AX_CXX_COMPILE_STDCXX([20], [noext], [mandatory])
fi
-dnl check if additional link flags are required for std::filesystem
-CHECK_FILESYSTEM
-
dnl Unless the user specified OBJCXX, force it to be the same as CXX. This ensures
dnl that we get the same -std flags for both.
m4_ifdef([AC_PROG_OBJCXX],[
diff --git a/doc/dependencies.md b/doc/dependencies.md
index 94e3fd081c54c..5884ea4167bf7 100644
--- a/doc/dependencies.md
+++ b/doc/dependencies.md
@@ -9,7 +9,7 @@ You can find installation instructions in the `build-*.md` file for your platfor
| [Autoconf](https://www.gnu.org/software/autoconf/) | [2.69](https://github.com/bitcoin/bitcoin/pull/17769) |
| [Automake](https://www.gnu.org/software/automake/) | [1.13](https://github.com/bitcoin/bitcoin/pull/18290) |
| [Clang](https://clang.llvm.org) | [10.0](https://github.com/bitcoin/bitcoin/pull/27682) |
-| [GCC](https://gcc.gnu.org) | [8.1](https://github.com/bitcoin/bitcoin/pull/23060) |
+| [GCC](https://gcc.gnu.org) | [9.1](https://github.com/bitcoin/bitcoin/pull/27662) |
| [Python](https://www.python.org) (scripts, tests) | [3.9](https://github.com/bitcoin/bitcoin/pull/28211) |
| [systemtap](https://sourceware.org/systemtap/) ([tracing](tracing.md))| N/A |
From b7da1ed5b3c682744e0f836026f5b2aab31259de Mon Sep 17 00:00:00 2001
From: Kittywhiskers Van Gogh <63189531+kwvg@users.noreply.github.com>
Date: Sun, 3 Nov 2024 08:53:38 +0000
Subject: [PATCH 09/16] partial bitcoin#28210: Bump clang minimum supported
version to 13
excludes:
- fae379b6b (portions)
---
doc/dependencies.md | 2 +-
src/net.cpp | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/doc/dependencies.md b/doc/dependencies.md
index 5884ea4167bf7..f387371a4ceef 100644
--- a/doc/dependencies.md
+++ b/doc/dependencies.md
@@ -8,7 +8,7 @@ You can find installation instructions in the `build-*.md` file for your platfor
| --- | --- |
| [Autoconf](https://www.gnu.org/software/autoconf/) | [2.69](https://github.com/bitcoin/bitcoin/pull/17769) |
| [Automake](https://www.gnu.org/software/automake/) | [1.13](https://github.com/bitcoin/bitcoin/pull/18290) |
-| [Clang](https://clang.llvm.org) | [10.0](https://github.com/bitcoin/bitcoin/pull/27682) |
+| [Clang](https://clang.llvm.org) | [13.0](https://github.com/bitcoin/bitcoin/pull/28210) |
| [GCC](https://gcc.gnu.org) | [9.1](https://github.com/bitcoin/bitcoin/pull/27662) |
| [Python](https://www.python.org) (scripts, tests) | [3.9](https://github.com/bitcoin/bitcoin/pull/28211) |
| [systemtap](https://sourceware.org/systemtap/) ([tracing](tracing.md))| N/A |
diff --git a/src/net.cpp b/src/net.cpp
index 46829633f3e33..367b5361a4f1c 100644
--- a/src/net.cpp
+++ b/src/net.cpp
@@ -1644,7 +1644,7 @@ std::optional V2Transport::GetMessageType(Span& cont
}
// Strip message type bytes of contents.
contents = contents.subspan(CMessageHeader::COMMAND_SIZE);
- return {std::move(ret)};
+ return ret;
}
CNetMessage V2Transport::GetReceivedMessage(std::chrono::microseconds time, bool& reject_message) noexcept
From c71e3df8b48db29a860c5b7207e663435909ebd2 Mon Sep 17 00:00:00 2001
From: Kittywhiskers Van Gogh <63189531+kwvg@users.noreply.github.com>
Date: Sun, 27 Aug 2023 09:34:49 +0200
Subject: [PATCH 10/16] partial bitcoin#28348: Bump g++ minimum supported
version to 10
excludes:
- fa5423b5b582aaf8c5b7c516806157244cf20c74
---
configure.ac | 5 +----
doc/dependencies.md | 2 +-
src/util/hasher.h | 2 +-
3 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/configure.ac b/configure.ac
index d1487d54ddde9..d6efa491df2d3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -478,10 +478,7 @@ if test "x$enable_werror" = "xyes"; then
AX_CHECK_COMPILE_FLAG([-Werror=conditional-uninitialized],[ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror=conditional-uninitialized"],,[[$CXXFLAG_WERROR]])
AX_CHECK_COMPILE_FLAG([-Werror=sign-compare],[ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror=sign-compare"],,[[$CXXFLAG_WERROR]])
- dnl -Wsuggest-override is broken with GCC before 9.2
- dnl https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78010
- AX_CHECK_COMPILE_FLAG([-Werror=suggest-override],[ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror=suggest-override"],,[[$CXXFLAG_WERROR]],
- [AC_LANG_SOURCE([[struct A { virtual void f(); }; struct B : A { void f() final; };]])])
+ AX_CHECK_COMPILE_FLAG([-Wsuggest-override], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wsuggest-override"], [], [$CXXFLAG_WERROR])
AX_CHECK_COMPILE_FLAG([-Werror=unreachable-code-loop-increment],[ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror=unreachable-code-loop-increment"],,[[$CXXFLAG_WERROR]])
AX_CHECK_COMPILE_FLAG([-Werror=mismatched-tags], [ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror=mismatched-tags"], [], [$CXXFLAG_WERROR])
AX_CHECK_COMPILE_FLAG([-Werror=implicit-fallthrough], [ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror=implicit-fallthrough"], [], [$CXXFLAG_WERROR])
diff --git a/doc/dependencies.md b/doc/dependencies.md
index f387371a4ceef..43aeede6b89a7 100644
--- a/doc/dependencies.md
+++ b/doc/dependencies.md
@@ -9,7 +9,7 @@ You can find installation instructions in the `build-*.md` file for your platfor
| [Autoconf](https://www.gnu.org/software/autoconf/) | [2.69](https://github.com/bitcoin/bitcoin/pull/17769) |
| [Automake](https://www.gnu.org/software/automake/) | [1.13](https://github.com/bitcoin/bitcoin/pull/18290) |
| [Clang](https://clang.llvm.org) | [13.0](https://github.com/bitcoin/bitcoin/pull/28210) |
-| [GCC](https://gcc.gnu.org) | [9.1](https://github.com/bitcoin/bitcoin/pull/27662) |
+| [GCC](https://gcc.gnu.org) | [10.1](https://github.com/bitcoin/bitcoin/pull/28348) |
| [Python](https://www.python.org) (scripts, tests) | [3.9](https://github.com/bitcoin/bitcoin/pull/28211) |
| [systemtap](https://sourceware.org/systemtap/) ([tracing](tracing.md))| N/A |
diff --git a/src/util/hasher.h b/src/util/hasher.h
index 59a965a4d6853..ba39d05077644 100644
--- a/src/util/hasher.h
+++ b/src/util/hasher.h
@@ -39,7 +39,7 @@ class SaltedOutpointHasher
* a slight performance penalty (around 1.6%), but this is compensated by
* memory savings of about 9% which allow for a larger dbcache setting.
*
- * @see https://gcc.gnu.org/onlinedocs/gcc-9.2.0/libstdc++/manual/manual/unordered_associative.html
+ * @see https://gcc.gnu.org/onlinedocs/gcc-13.2.0/libstdc++/manual/manual/unordered_associative.html
*/
size_t operator()(const COutPoint& id) const noexcept {
return SipHashUint256Extra(k0, k1, id.hash, id.n);
From 35d33571a6f55dcc44840764928130947a18b3b2 Mon Sep 17 00:00:00 2001
From: Kittywhiskers Van Gogh <63189531+kwvg@users.noreply.github.com>
Date: Tue, 9 Jan 2024 14:11:41 +0100
Subject: [PATCH 11/16] merge bitcoin#29208: Bump clang minimum supported
version to 14
---
build-aux/m4/bitcoin_runtime_lib.m4 | 42 -----------------------
configure.ac | 2 --
doc/dependencies.md | 2 +-
src/Makefile.test.include | 2 +-
src/test/fuzz/addition_overflow.cpp | 10 ------
src/test/fuzz/multiplication_overflow.cpp | 10 ------
6 files changed, 2 insertions(+), 66 deletions(-)
delete mode 100644 build-aux/m4/bitcoin_runtime_lib.m4
diff --git a/build-aux/m4/bitcoin_runtime_lib.m4 b/build-aux/m4/bitcoin_runtime_lib.m4
deleted file mode 100644
index 1a6922deca485..0000000000000
--- a/build-aux/m4/bitcoin_runtime_lib.m4
+++ /dev/null
@@ -1,42 +0,0 @@
-# On some platforms clang builtin implementations
-# require compiler-rt as a runtime library to use.
-#
-# See:
-# - https://bugs.llvm.org/show_bug.cgi?id=28629
-
-m4_define([_CHECK_RUNTIME_testbody], [[
- bool f(long long x, long long y, long long* p)
- {
- return __builtin_mul_overflow(x, y, p);
- }
- int main() { return 0; }
-]])
-
-AC_DEFUN([CHECK_RUNTIME_LIB], [
-
- AC_LANG_PUSH([C++])
-
- AC_MSG_CHECKING([for __builtin_mul_overflow])
- AC_LINK_IFELSE(
- [AC_LANG_SOURCE([_CHECK_RUNTIME_testbody])],
- [
- AC_MSG_RESULT([yes])
- AC_DEFINE([HAVE_BUILTIN_MUL_OVERFLOW], [1], [Define if you have a working __builtin_mul_overflow])
- ],
- [
- ax_check_save_flags="$LDFLAGS"
- LDFLAGS="$LDFLAGS --rtlib=compiler-rt -lgcc_s"
- AC_LINK_IFELSE(
- [AC_LANG_SOURCE([_CHECK_RUNTIME_testbody])],
- [
- AC_MSG_RESULT([yes, with additional linker flags])
- RUNTIME_LDFLAGS="--rtlib=compiler-rt -lgcc_s"
- AC_DEFINE([HAVE_BUILTIN_MUL_OVERFLOW], [1], [Define if you have a working __builtin_mul_overflow])
- ],
- [AC_MSG_RESULT([no])])
- LDFLAGS="$ax_check_save_flags"
- ])
-
- AC_LANG_POP
- AC_SUBST([RUNTIME_LDFLAGS])
-])
diff --git a/configure.ac b/configure.ac
index d6efa491df2d3..2b84eb19235d9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1387,8 +1387,6 @@ if test x$enable_fuzz_binary = xyes; then
]],[[
*/ int not_main() {
]])])
-
- CHECK_RUNTIME_LIB
fi
if test x$enable_wallet != xno; then
diff --git a/doc/dependencies.md b/doc/dependencies.md
index 43aeede6b89a7..19d81449b299a 100644
--- a/doc/dependencies.md
+++ b/doc/dependencies.md
@@ -8,7 +8,7 @@ You can find installation instructions in the `build-*.md` file for your platfor
| --- | --- |
| [Autoconf](https://www.gnu.org/software/autoconf/) | [2.69](https://github.com/bitcoin/bitcoin/pull/17769) |
| [Automake](https://www.gnu.org/software/automake/) | [1.13](https://github.com/bitcoin/bitcoin/pull/18290) |
-| [Clang](https://clang.llvm.org) | [13.0](https://github.com/bitcoin/bitcoin/pull/28210) |
+| [Clang](https://clang.llvm.org) | [14.0](https://github.com/bitcoin/bitcoin/pull/29208) |
| [GCC](https://gcc.gnu.org) | [10.1](https://github.com/bitcoin/bitcoin/pull/28348) |
| [Python](https://www.python.org) (scripts, tests) | [3.9](https://github.com/bitcoin/bitcoin/pull/28211) |
| [systemtap](https://sourceware.org/systemtap/) ([tracing](tracing.md))| N/A |
diff --git a/src/Makefile.test.include b/src/Makefile.test.include
index 00e0429688fd7..705db24bd7890 100644
--- a/src/Makefile.test.include
+++ b/src/Makefile.test.include
@@ -243,7 +243,7 @@ if ENABLE_FUZZ_BINARY
test_fuzz_fuzz_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
test_fuzz_fuzz_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
test_fuzz_fuzz_LDADD = $(FUZZ_SUITE_LD_COMMON)
-test_fuzz_fuzz_LDFLAGS = $(FUZZ_SUITE_LDFLAGS_COMMON) $(RUNTIME_LDFLAGS)
+test_fuzz_fuzz_LDFLAGS = $(FUZZ_SUITE_LDFLAGS_COMMON)
test_fuzz_fuzz_SOURCES = \
test/fuzz/addition_overflow.cpp \
test/fuzz/addrman.cpp \
diff --git a/src/test/fuzz/addition_overflow.cpp b/src/test/fuzz/addition_overflow.cpp
index 372c1a370e852..edc89a0e18462 100644
--- a/src/test/fuzz/addition_overflow.cpp
+++ b/src/test/fuzz/addition_overflow.cpp
@@ -11,14 +11,6 @@
#include
#include
-#if defined(__has_builtin)
-#if __has_builtin(__builtin_add_overflow)
-#define HAVE_BUILTIN_ADD_OVERFLOW
-#endif
-#elif defined(__GNUC__)
-#define HAVE_BUILTIN_ADD_OVERFLOW
-#endif
-
namespace {
template
void TestAdditionOverflow(FuzzedDataProvider& fuzzed_data_provider)
@@ -32,14 +24,12 @@ void TestAdditionOverflow(FuzzedDataProvider& fuzzed_data_provider)
assert(is_addition_overflow_custom == AdditionOverflow(j, i));
assert(maybe_add == CheckedAdd(j, i));
assert(sat_add == SaturatingAdd(j, i));
-#if defined(HAVE_BUILTIN_ADD_OVERFLOW)
T result_builtin;
const bool is_addition_overflow_builtin = __builtin_add_overflow(i, j, &result_builtin);
assert(is_addition_overflow_custom == is_addition_overflow_builtin);
if (!is_addition_overflow_custom) {
assert(i + j == result_builtin);
}
-#endif
if (is_addition_overflow_custom) {
assert(sat_add == std::numeric_limits::min() || sat_add == std::numeric_limits::max());
} else {
diff --git a/src/test/fuzz/multiplication_overflow.cpp b/src/test/fuzz/multiplication_overflow.cpp
index c7251650c2580..3a6127f31f8e7 100644
--- a/src/test/fuzz/multiplication_overflow.cpp
+++ b/src/test/fuzz/multiplication_overflow.cpp
@@ -2,10 +2,6 @@
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
-#if defined(HAVE_CONFIG_H)
-#include
-#endif
-
#include
#include
#include
@@ -21,18 +17,12 @@ void TestMultiplicationOverflow(FuzzedDataProvider& fuzzed_data_provider)
const T i = fuzzed_data_provider.ConsumeIntegral();
const T j = fuzzed_data_provider.ConsumeIntegral();
const bool is_multiplication_overflow_custom = MultiplicationOverflow(i, j);
-#if defined(HAVE_BUILTIN_MUL_OVERFLOW)
T result_builtin;
const bool is_multiplication_overflow_builtin = __builtin_mul_overflow(i, j, &result_builtin);
assert(is_multiplication_overflow_custom == is_multiplication_overflow_builtin);
if (!is_multiplication_overflow_custom) {
assert(i * j == result_builtin);
}
-#else
- if (!is_multiplication_overflow_custom) {
- (void)(i * j);
- }
-#endif
}
} // namespace
From f397076f7c8344a512db9c8971340c8836bed1b6 Mon Sep 17 00:00:00 2001
From: Kittywhiskers Van Gogh <63189531+kwvg@users.noreply.github.com>
Date: Fri, 15 Dec 2023 13:01:26 +0100
Subject: [PATCH 12/16] merge bitcoin#29091: Bump g++ minimum supported version
to 11
---
doc/dependencies.md | 2 +-
src/util/system.cpp | 11 -----------
2 files changed, 1 insertion(+), 12 deletions(-)
diff --git a/doc/dependencies.md b/doc/dependencies.md
index 19d81449b299a..756d9fbc43929 100644
--- a/doc/dependencies.md
+++ b/doc/dependencies.md
@@ -9,7 +9,7 @@ You can find installation instructions in the `build-*.md` file for your platfor
| [Autoconf](https://www.gnu.org/software/autoconf/) | [2.69](https://github.com/bitcoin/bitcoin/pull/17769) |
| [Automake](https://www.gnu.org/software/automake/) | [1.13](https://github.com/bitcoin/bitcoin/pull/18290) |
| [Clang](https://clang.llvm.org) | [14.0](https://github.com/bitcoin/bitcoin/pull/29208) |
-| [GCC](https://gcc.gnu.org) | [10.1](https://github.com/bitcoin/bitcoin/pull/28348) |
+| [GCC](https://gcc.gnu.org) | [11.1](https://github.com/bitcoin/bitcoin/pull/29091) |
| [Python](https://www.python.org) (scripts, tests) | [3.9](https://github.com/bitcoin/bitcoin/pull/28211) |
| [systemtap](https://sourceware.org/systemtap/) ([tracing](tracing.md))| N/A |
diff --git a/src/util/system.cpp b/src/util/system.cpp
index a7acfff57b80f..a9c3009011b55 100644
--- a/src/util/system.cpp
+++ b/src/util/system.cpp
@@ -1140,20 +1140,9 @@ std::vector ArgsManager::GetSettingsList(const std::string&
bool RenameOver(fs::path src, fs::path dest)
{
-#ifdef __MINGW64__
- // This is a workaround for a bug in libstdc++ which
- // implements std::filesystem::rename with _wrename function.
- // This bug has been fixed in upstream:
- // - GCC 10.3: 8dd1c1085587c9f8a21bb5e588dfe1e8cdbba79e
- // - GCC 11.1: 1dfd95f0a0ca1d9e6cbc00e6cbfd1fa20a98f312
- // For more details see the commits mentioned above.
- return MoveFileExW(src.wstring().c_str(), dest.wstring().c_str(),
- MOVEFILE_REPLACE_EXISTING) != 0;
-#else
std::error_code error;
fs::rename(src, dest, error);
return !error;
-#endif
}
/**
From 7e4614a69bba19297cf4a89c07543b386abccc77 Mon Sep 17 00:00:00 2001
From: Kittywhiskers Van Gogh <63189531+kwvg@users.noreply.github.com>
Date: Fri, 8 Nov 2024 13:30:18 +0000
Subject: [PATCH 13/16] merge bitcoin#29165: Bump clang minimum supported
version to 15
---
doc/dependencies.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/doc/dependencies.md b/doc/dependencies.md
index 756d9fbc43929..9325661358a94 100644
--- a/doc/dependencies.md
+++ b/doc/dependencies.md
@@ -8,7 +8,7 @@ You can find installation instructions in the `build-*.md` file for your platfor
| --- | --- |
| [Autoconf](https://www.gnu.org/software/autoconf/) | [2.69](https://github.com/bitcoin/bitcoin/pull/17769) |
| [Automake](https://www.gnu.org/software/automake/) | [1.13](https://github.com/bitcoin/bitcoin/pull/18290) |
-| [Clang](https://clang.llvm.org) | [14.0](https://github.com/bitcoin/bitcoin/pull/29208) |
+| [Clang](https://clang.llvm.org) | [15.0](https://github.com/bitcoin/bitcoin/pull/29165) |
| [GCC](https://gcc.gnu.org) | [11.1](https://github.com/bitcoin/bitcoin/pull/29091) |
| [Python](https://www.python.org) (scripts, tests) | [3.9](https://github.com/bitcoin/bitcoin/pull/28211) |
| [systemtap](https://sourceware.org/systemtap/) ([tracing](tracing.md))| N/A |
From 4d10993809df7178fadbb04c7fb450b1342193e9 Mon Sep 17 00:00:00 2001
From: Kittywhiskers Van Gogh <63189531+kwvg@users.noreply.github.com>
Date: Mon, 29 Apr 2024 10:33:21 +0200
Subject: [PATCH 14/16] merge bitcoin#29934: add LLVM instruction for macOS <
13
---
doc/build-osx.md | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/doc/build-osx.md b/doc/build-osx.md
index 59d43a7941948..01d868607f024 100644
--- a/doc/build-osx.md
+++ b/doc/build-osx.md
@@ -52,6 +52,20 @@ See [dependencies.md](dependencies.md) for a complete overview.
brew install automake libtool boost gmp pkg-config libevent
```
+For macOS 11 (Big Sur) and 12 (Monterey) you need to install a more recent version of llvm.
+
+``` bash
+brew install llvm
+```
+
+And append the following to the configure commands below:
+
+``` bash
+CC=$(brew --prefix llvm)/bin/clang CXX=$(brew --prefix llvm)/bin/clang++
+```
+
+Try `llvm@17` if compilation fails with the default version of llvm.
+
### 4. Clone Dash repository
`git` should already be installed by default on your system.
From 5e7e5630a4e2e4968b6fe11b8b1d7e720bcb9b16 Mon Sep 17 00:00:00 2001
From: Kittywhiskers Van Gogh <63189531+kwvg@users.noreply.github.com>
Date: Sun, 10 Nov 2024 20:59:59 +0000
Subject: [PATCH 15/16] merge bitcoin#30261: add release note for 29091 and
29165
---
doc/release-notes-6389.md | 4 ++++
1 file changed, 4 insertions(+)
create mode 100644 doc/release-notes-6389.md
diff --git a/doc/release-notes-6389.md b/doc/release-notes-6389.md
new file mode 100644
index 0000000000000..3e9696491db7a
--- /dev/null
+++ b/doc/release-notes-6389.md
@@ -0,0 +1,4 @@
+Build
+-----
+
+GCC 11.1 or later, or Clang 15+ or later, are now required to compile Dash Core.
From 0861692256b0b1aa49d81dabb7e025904c6bc2ad Mon Sep 17 00:00:00 2001
From: Kittywhiskers Van Gogh <63189531+kwvg@users.noreply.github.com>
Date: Mon, 10 Jun 2024 18:21:21 +0200
Subject: [PATCH 16/16] partial bitcoin#30263: Bump clang minimum supported
version to 16
excludes:
- 9999dbc1bd171931f02266d7c1a5cfd39f49238e
- fa8f53273c7e5965620d31a8c3fe5f223cb76888
---
doc/dependencies.md | 2 +-
doc/release-notes-6389.md | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/doc/dependencies.md b/doc/dependencies.md
index 9325661358a94..d6ef634211b36 100644
--- a/doc/dependencies.md
+++ b/doc/dependencies.md
@@ -8,7 +8,7 @@ You can find installation instructions in the `build-*.md` file for your platfor
| --- | --- |
| [Autoconf](https://www.gnu.org/software/autoconf/) | [2.69](https://github.com/bitcoin/bitcoin/pull/17769) |
| [Automake](https://www.gnu.org/software/automake/) | [1.13](https://github.com/bitcoin/bitcoin/pull/18290) |
-| [Clang](https://clang.llvm.org) | [15.0](https://github.com/bitcoin/bitcoin/pull/29165) |
+| [Clang](https://clang.llvm.org) | [16.0](https://github.com/bitcoin/bitcoin/pull/30263) |
| [GCC](https://gcc.gnu.org) | [11.1](https://github.com/bitcoin/bitcoin/pull/29091) |
| [Python](https://www.python.org) (scripts, tests) | [3.9](https://github.com/bitcoin/bitcoin/pull/28211) |
| [systemtap](https://sourceware.org/systemtap/) ([tracing](tracing.md))| N/A |
diff --git a/doc/release-notes-6389.md b/doc/release-notes-6389.md
index 3e9696491db7a..feeae0fe82419 100644
--- a/doc/release-notes-6389.md
+++ b/doc/release-notes-6389.md
@@ -1,4 +1,4 @@
Build
-----
-GCC 11.1 or later, or Clang 15+ or later, are now required to compile Dash Core.
+GCC 11.1 or later, or Clang 16.0 or later, are now required to compile Dash Core.