Skip to content

Commit 09ffdea

Browse files
0861692 partial bitcoin#30263: Bump clang minimum supported version to 16 (Kittywhiskers Van Gogh) 5e7e563 merge bitcoin#30261: add release note for 29091 and 29165 (Kittywhiskers Van Gogh) 4d10993 merge bitcoin#29934: add LLVM instruction for macOS < 13 (Kittywhiskers Van Gogh) 7e4614a merge bitcoin#29165: Bump clang minimum supported version to 15 (Kittywhiskers Van Gogh) f397076 merge bitcoin#29091: Bump g++ minimum supported version to 11 (Kittywhiskers Van Gogh) 35d3357 merge bitcoin#29208: Bump clang minimum supported version to 14 (Kittywhiskers Van Gogh) c71e3df partial bitcoin#28348: Bump g++ minimum supported version to 10 (Kittywhiskers Van Gogh) b7da1ed partial bitcoin#28210: Bump clang minimum supported version to 13 (Kittywhiskers Van Gogh) 6b22832 partial bitcoin#27662: Bump minimum supported GCC to g++-9 (Kittywhiskers Van Gogh) f677769 merge bitcoin#27682: Bump minimum supported Clang to clang-10 (Kittywhiskers Van Gogh) f8e0339 docs: add `libgmp` as an optional dependency (Kittywhiskers Van Gogh) ebba607 docs: update version used to match `depends` (Kittywhiskers Van Gogh) 39b6f4b merge bitcoin#24337: Do not define `PROVIDE_FUZZ_MAIN_FUNCTION` macro unconditionally (Kittywhiskers Van Gogh) 2bd8422 merge bitcoin#23565: rewrite dependencies.md (Kittywhiskers Van Gogh) 56989ec merge bitcoin#24164: Bump minimum required clang/libc++ to 8.0 (Kittywhiskers Van Gogh) bac407f merge bitcoin#23060: increase minimum compiler and lib(std)c++ requirements (Kittywhiskers Van Gogh) Pull request description: ## Additional Information * Dependent on #6516 ## Breaking Changes GCC 11.1 or later, or Clang 16.0 or later, are now required to compile Dash Core. ## Checklist: - [x] I have performed a self-review of my own code - [x] I have commented my code, particularly in hard-to-understand areas **(note: N/A)** - [x] I have added or updated relevant unit/integration/functional/e2e tests **(note: N/A)** - [x] I have made corresponding changes to the documentation - [x] I have assigned this pull request to a milestone _(for repository code-owners and collaborators only)_ ACKs for top commit: PastaPastaPasta: utACK 0861692 UdjinM6: utACK 0861692 Tree-SHA512: 6de3f8153482b4f379fd397dd3000688632356299c4f13a2f8af20d2f7337318bd3cd0b96182d6f378846b14981bc499ea32aa3d20cba6a0c7cf5f2a6e151937
2 parents 53529cc + 0861692 commit 09ffdea

17 files changed

+111
-298
lines changed

.cirrus.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,10 @@ task:
7878
FILE_ENV: "./ci/test/00_setup_env_win64.sh"
7979

8080
task:
81-
name: '32-bit + dash [gui] [CentOS 8]'
81+
name: '32-bit + dash [gui] [CentOS 9]'
8282
<< : *GLOBAL_TASK_TEMPLATE
8383
container:
84-
image: centos:8
84+
image: centos:9
8585
env:
8686
PACKAGE_MANAGER_INSTALL: "yum install -y"
8787
FILE_ENV: "./ci/test/00_setup_env_i686_centos.sh"

build-aux/m4/bitcoin_runtime_lib.m4

Lines changed: 0 additions & 42 deletions
This file was deleted.

build-aux/m4/l_filesystem.m4

Lines changed: 0 additions & 47 deletions
This file was deleted.

ci/test/04_install.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ if [ -n "$DPKG_ADD_ARCH" ]; then
5959
fi
6060

6161
if [[ $DOCKER_NAME_TAG == centos* ]]; then
62-
${CI_RETRY_EXE} DOCKER_EXEC yum -y install epel-release
63-
${CI_RETRY_EXE} DOCKER_EXEC yum -y install "$DOCKER_PACKAGES" "$PACKAGES"
62+
DOCKER_EXEC yum -y install epel-release
63+
DOCKER_EXEC yum -y install "$DOCKER_PACKAGES" "$PACKAGES"
6464
elif [ "$CI_USE_APT_INSTALL" != "no" ]; then
6565
${CI_RETRY_EXE} DOCKER_EXEC apt-get update
6666
${CI_RETRY_EXE} DOCKER_EXEC apt-get install --no-install-recommends --no-upgrade -y "$PACKAGES" "$DOCKER_PACKAGES"

ci/test/05_before_script.sh

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,7 @@ if [[ $HOST = *-mingw32 ]]; then
2626
fi
2727
if [ -z "$NO_DEPENDS" ]; then
2828
if [[ $DOCKER_NAME_TAG == centos* ]]; then
29-
# CentOS has problems building the depends if the config shell is not explicitly set
30-
# (i.e. for libevent a Makefile with an empty SHELL variable is generated, leading to
31-
# an error as the first command is executed)
32-
SHELL_OPTS="LC_ALL=en_US.UTF-8 CONFIG_SHELL=/bin/bash"
29+
SHELL_OPTS="CONFIG_SHELL=/bin/bash"
3330
else
3431
SHELL_OPTS="CONFIG_SHELL="
3532
fi

configure.ac

Lines changed: 17 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,6 @@ else
9090
AX_CXX_COMPILE_STDCXX([20], [noext], [mandatory])
9191
fi
9292

93-
dnl check if additional link flags are required for std::filesystem
94-
CHECK_FILESYSTEM
95-
9693
dnl Unless the user specified OBJCXX, force it to be the same as CXX. This ensures
9794
dnl that we get the same -std flags for both.
9895
m4_ifdef([AC_PROG_OBJCXX],[
@@ -481,10 +478,7 @@ if test "x$enable_werror" = "xyes"; then
481478

482479
AX_CHECK_COMPILE_FLAG([-Werror=conditional-uninitialized],[ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror=conditional-uninitialized"],,[[$CXXFLAG_WERROR]])
483480
AX_CHECK_COMPILE_FLAG([-Werror=sign-compare],[ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror=sign-compare"],,[[$CXXFLAG_WERROR]])
484-
dnl -Wsuggest-override is broken with GCC before 9.2
485-
dnl https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78010
486-
AX_CHECK_COMPILE_FLAG([-Werror=suggest-override],[ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror=suggest-override"],,[[$CXXFLAG_WERROR]],
487-
[AC_LANG_SOURCE([[struct A { virtual void f(); }; struct B : A { void f() final; };]])])
481+
AX_CHECK_COMPILE_FLAG([-Wsuggest-override], [WARN_CXXFLAGS="$WARN_CXXFLAGS -Wsuggest-override"], [], [$CXXFLAG_WERROR])
488482
AX_CHECK_COMPILE_FLAG([-Werror=unreachable-code-loop-increment],[ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror=unreachable-code-loop-increment"],,[[$CXXFLAG_WERROR]])
489483
AX_CHECK_COMPILE_FLAG([-Werror=mismatched-tags], [ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror=mismatched-tags"], [], [$CXXFLAG_WERROR])
490484
AX_CHECK_COMPILE_FLAG([-Werror=implicit-fallthrough], [ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror=implicit-fallthrough"], [], [$CXXFLAG_WERROR])
@@ -1363,22 +1357,6 @@ if test "x$enable_fuzz" = "xyes"; then
13631357
enable_fuzz_binary=yes
13641358

13651359
AX_CHECK_PREPROC_FLAG([-DABORT_ON_FAILED_ASSUME],[[DEBUG_CPPFLAGS="$DEBUG_CPPFLAGS -DABORT_ON_FAILED_ASSUME"]],,[[$CXXFLAG_WERROR]])
1366-
1367-
AC_MSG_CHECKING([whether main function is needed for fuzz binary])
1368-
AX_CHECK_LINK_FLAG(
1369-
[[-fsanitize=$use_sanitizers]],
1370-
[AC_MSG_RESULT([no])],
1371-
[AC_MSG_RESULT([yes])
1372-
CORE_CPPFLAGS="$CORE_CPPFLAGS -DPROVIDE_FUZZ_MAIN_FUNCTION"],
1373-
[],
1374-
[AC_LANG_PROGRAM([[
1375-
#include <cstdint>
1376-
#include <cstddef>
1377-
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { return 0; }
1378-
/* comment to remove the main function ...
1379-
]],[[
1380-
*/ int not_main() {
1381-
]])])
13821360
else
13831361
BITCOIN_QT_INIT
13841362

@@ -1392,8 +1370,23 @@ else
13921370
QT_DBUS_INCLUDES=SUPPRESS_WARNINGS($QT_DBUS_INCLUDES)
13931371
QT_TEST_INCLUDES=SUPPRESS_WARNINGS($QT_TEST_INCLUDES)
13941372
fi
1373+
fi
13951374

1396-
CORE_CPPFLAGS="$CORE_CPPFLAGS -DPROVIDE_FUZZ_MAIN_FUNCTION"
1375+
if test x$enable_fuzz_binary = xyes; then
1376+
AC_MSG_CHECKING([whether main function is needed for fuzz binary])
1377+
AX_CHECK_LINK_FLAG(
1378+
[],
1379+
[AC_MSG_RESULT([no])],
1380+
[AC_MSG_RESULT([yes]); CORE_CPPFLAGS="$CORE_CPPFLAGS -DPROVIDE_FUZZ_MAIN_FUNCTION"],
1381+
[$SANITIZER_LDFLAGS],
1382+
[AC_LANG_PROGRAM([[
1383+
#include <cstdint>
1384+
#include <cstddef>
1385+
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { return 0; }
1386+
/* comment to remove the main function ...
1387+
]],[[
1388+
*/ int not_main() {
1389+
]])])
13971390
fi
13981391

13991392
if test x$enable_wallet != xno; then
@@ -1817,10 +1810,6 @@ if test x$build_bitcoin_wallet$build_bitcoin_cli$build_bitcoin_tx$build_bitcoind
18171810
AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon --with-gui --enable-bench or --enable-tests])
18181811
fi
18191812

1820-
if test x$enable_fuzz_binary = xyes; then
1821-
CHECK_RUNTIME_LIB
1822-
fi
1823-
18241813
AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin])
18251814
AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin])
18261815
AM_CONDITIONAL([TARGET_LINUX], [test x$TARGET_OS = xlinux])

doc/build-freebsd.md

Lines changed: 10 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,36 +4,6 @@
44

55
This guide describes how to build dashd, command-line utilities, and GUI on FreeBSD.
66

7-
## Dependencies
8-
9-
The following dependencies are **required**:
10-
11-
Library | Purpose | Description
12-
----------------------------------------------------------------------|------------|----------------------
13-
[autoconf](https://svnweb.freebsd.org/ports/head/devel/autoconf/) | Build | Automatically configure software source code
14-
[automake](https://svnweb.freebsd.org/ports/head/devel/automake/) | Build | Generate makefile (requires autoconf)
15-
[libtool](https://svnweb.freebsd.org/ports/head/devel/libtool/) | Build | Shared library support
16-
[pkgconf](https://svnweb.freebsd.org/ports/head/devel/pkgconf/) | Build | Configure compiler and linker flags
17-
[git](https://svnweb.freebsd.org/ports/head/devel/git/) | Clone | Version control system
18-
[gmake](https://svnweb.freebsd.org/ports/head/devel/gmake/) | Compile | Generate executables
19-
[boost-libs](https://svnweb.freebsd.org/ports/head/devel/boost-libs/) | Utility | Library for threading, data structures, etc
20-
[libevent](https://svnweb.freebsd.org/ports/head/devel/libevent/) | Networking | OS independent asynchronous networking
21-
22-
23-
The following dependencies are **optional**:
24-
25-
Library | Purpose | Description
26-
---------------------------------------------------------------------------|------------------|----------------------
27-
[db5](https://svnweb.freebsd.org/ports/head/databases/db5/) | Berkeley DB | Wallet storage (only needed when wallet enabled)
28-
[qt5](https://svnweb.freebsd.org/ports/head/devel/qt5/) | GUI | GUI toolkit (only needed when GUI enabled)
29-
[gmp](https://svnweb.freebsd.org/ports/head/math/gmp/) | Optimized math routines | Arbitrary precision arithmetic library
30-
[libqrencode](https://svnweb.freebsd.org/ports/head/graphics/libqrencode/) | QR codes in GUI | Generating QR codes (only needed when GUI enabled)
31-
[libzmq4](https://svnweb.freebsd.org/ports/head/net/libzmq4/) | ZMQ notification | Allows generating ZMQ notifications (requires ZMQ version >= 4.0.0)
32-
[sqlite3](https://svnweb.freebsd.org/ports/head/databases/sqlite3/) | SQLite DB | Wallet storage (only needed when wallet enabled)
33-
[python3](https://svnweb.freebsd.org/ports/head/lang/python3/) | Testing | Python Interpreter (only needed when running the test suite)
34-
35-
See [dependencies.md](dependencies.md) for a complete overview.
36-
377
## Preparation
388

399
### 1. Install Required Dependencies
@@ -44,6 +14,8 @@ pkg install autoconf automake boost-libs git gmake libevent libtool pkgconf
4414

4515
```
4616

17+
See [dependencies.md](dependencies.md) for a complete overview.
18+
4719
### 2. Clone Dash Repo
4820
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.
4921
``` bash
@@ -91,6 +63,14 @@ pkg install libqrencode
9163
```
9264
---
9365

66+
#### Notifications
67+
###### ZeroMQ
68+
69+
Dash Core can provide notifications via ZeroMQ. If the package is installed, support will be compiled in.
70+
```bash
71+
pkg install libzmq4
72+
```
73+
9474
#### Test Suite Dependencies
9575
There is an included test suite that is useful for testing code changes when developing.
9676
To run the test suite (recommended), you will need to have Python 3 installed:

doc/build-osx.md

Lines changed: 16 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -6,41 +6,6 @@ This guide describes how to build dashd, command-line utilities, and GUI on macO
66

77
**Note:** The following is for Intel Macs only!
88

9-
## Dependencies
10-
11-
The following dependencies are **required**:
12-
13-
Library | Purpose | Description
14-
-----------------------------------------------------------|------------|----------------------
15-
[automake](https://formulae.brew.sh/formula/automake) | Build | Generate makefile
16-
[libtool](https://formulae.brew.sh/formula/libtool) | Build | Shared library support
17-
[pkg-config](https://formulae.brew.sh/formula/pkg-config) | Build | Configure compiler and linker flags
18-
[boost](https://formulae.brew.sh/formula/boost) | Utility | Library for threading, data structures, etc
19-
[libevent](https://formulae.brew.sh/formula/libevent) | Networking | OS independent asynchronous networking
20-
21-
The following dependencies are **optional**:
22-
23-
Library | Purpose | Description
24-
--------------------------------------------------------------- |------------------|----------------------
25-
[berkeley-db@4](https://formulae.brew.sh/formula/berkeley-db@4) | Berkeley DB | Wallet storage (only needed when wallet enabled)
26-
[qt@5](https://formulae.brew.sh/formula/qt@5) | GUI | GUI toolkit (only needed when GUI enabled)
27-
[qrencode](https://formulae.brew.sh/formula/qrencode) | QR codes in GUI | Generating QR codes (only needed when GUI enabled)
28-
[zeromq](https://formulae.brew.sh/formula/zeromq) | ZMQ notification | Allows generating ZMQ notifications (requires ZMQ version >= 4.0.0)
29-
[sqlite](https://formulae.brew.sh/formula/sqlite) | SQLite DB | Wallet storage (only needed when wallet enabled)
30-
[miniupnpc](https://formulae.brew.sh/formula/miniupnpc) | UPnP Support | Firewall-jumping support (needed for port mapping support)
31-
[libnatpmp](https://formulae.brew.sh/formula/libnatpmp) | NAT-PMP Support | Firewall-jumping support (needed for port mapping support)
32-
[python3](https://formulae.brew.sh/formula/python@3.9) | Testing | Python Interpreter (only needed when running the test suite)
33-
34-
The following dependencies are **optional** packages required for deploying:
35-
36-
Library | Purpose | Description
37-
----------------------------------------------------|------------------|----------------------
38-
[librsvg](https://formulae.brew.sh/formula/librsvg) | Deploy Dependency| Library to render SVG files
39-
[ds_store](https://pypi.org/project/ds-store/) | Deploy Dependency| Examine and modify .DS_Store files
40-
[mac_alias](https://pypi.org/project/mac-alias/) | Deploy Dependency| Generate/Read binary alias and bookmark records
41-
42-
See [dependencies.md](dependencies.md) for a complete overview.
43-
449
## Preparation
4510

4611
The commands in this guide should be executed in a Terminal application.
@@ -81,10 +46,26 @@ The first step is to download the required dependencies.
8146
These dependencies represent the packages required to get a barebones installation up and running.
8247
To install, run the following from your terminal:
8348

49+
See [dependencies.md](dependencies.md) for a complete overview.
50+
8451
``` bash
8552
brew install automake libtool boost gmp pkg-config libevent
8653
```
8754

55+
For macOS 11 (Big Sur) and 12 (Monterey) you need to install a more recent version of llvm.
56+
57+
``` bash
58+
brew install llvm
59+
```
60+
61+
And append the following to the configure commands below:
62+
63+
``` bash
64+
CC=$(brew --prefix llvm)/bin/clang CXX=$(brew --prefix llvm)/bin/clang++
65+
```
66+
67+
Try `llvm@17` if compilation fails with the default version of llvm.
68+
8869
### 4. Clone Dash repository
8970

9071
`git` should already be installed by default on your system.

doc/build-unix.md

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -28,31 +28,7 @@ make install # optional
2828

2929
This will build dash-qt as well, if the dependencies are met.
3030

31-
Dependencies
32-
---------------------
33-
34-
These dependencies are required:
35-
36-
Library | Purpose | Description
37-
------------|------------------|----------------------
38-
libboost | Utility | Library for threading, data structures, etc
39-
libevent | Networking | OS independent asynchronous networking
40-
41-
Optional dependencies:
42-
43-
Library | Purpose | Description
44-
------------|------------------|----------------------
45-
gmp | Optimized math routines | Arbitrary precision arithmetic library
46-
miniupnpc | UPnP Support | Firewall-jumping support
47-
libnatpmp | NAT-PMP Support | Firewall-jumping support
48-
libdb4.8 | Berkeley DB | Wallet storage (only needed when legacy wallet enabled)
49-
qt | GUI | GUI toolkit (only needed when GUI enabled)
50-
libqrencode | QR codes in GUI | QR code generation (only needed when GUI enabled)
51-
libzmq3 | ZMQ notification | ZMQ notifications (requires ZMQ version >= 4.0.0)
52-
sqlite3 | SQLite DB | Wallet storage (only needed when descriptor wallet enabled)
53-
systemtap | Tracing (USDT) | Statically defined tracepoints
54-
55-
For the versions used, see [dependencies.md](dependencies.md)
31+
See [dependencies.md](dependencies.md) for a complete overview.
5632

5733
Memory Requirements
5834
--------------------

0 commit comments

Comments
 (0)