diff --git a/doc/README.md b/doc/README.md index 489facbb2f..4a494b5bdc 100644 --- a/doc/README.md +++ b/doc/README.md @@ -33,6 +33,7 @@ Building --------------------- The following are developer notes on how to build Dash Core on your native platform. They are not complete guides, but include notes on the necessary libraries, compile flags, etc. +- [Dependencies](dependencies.md) - [macOS Build Notes](build-osx.md) - [Unix Build Notes](build-unix.md) - [Windows Build Notes](build-windows.md) diff --git a/doc/build-cross.md b/doc/build-cross.md index 56932824de..9c46b91785 100644 --- a/doc/build-cross.md +++ b/doc/build-cross.md @@ -6,9 +6,9 @@ the `HOST` parameter when building the dependencies and then specifying another The following instructions are only tested on Debian Stretch and Ubuntu Bionic. -MacOSX Cross-compilation +macOS Cross-compilation ------------------------ -Cross-compiling to MacOSX requires a few additional packages to be installed: +Cross-compiling to macOS requires a few additional packages to be installed: ```bash $ sudo apt-get install python3-setuptools libcap-dev zlib1g-dev libbz2-dev cmake diff --git a/doc/build-generic.md b/doc/build-generic.md index 0a53072755..1bfb01abb2 100644 --- a/doc/build-generic.md +++ b/doc/build-generic.md @@ -34,6 +34,8 @@ Please read the [depends](../depends/README.md) documentation for more details o options. If no host is specified (as in the above example) when calling `make`, the depends system will default to your local host system. +See [dependencies.md](dependencies.md) for a complete overview. + Building Dash Core --------------------- diff --git a/doc/build-osx.md b/doc/build-osx.md index 461292598a..b64d8010ff 100644 --- a/doc/build-osx.md +++ b/doc/build-osx.md @@ -23,13 +23,15 @@ Then install [Homebrew](https://brew.sh). brew install automake libtool pkg-config libnatpmp ``` -If you run into issues, check [Homebrew's troubleshooting page](https://docs.brew.sh/Troubleshooting). +See [dependencies.md](dependencies.md) for a complete overview. If you want to build the disk image with `make deploy` (.dmg / optional), you need RSVG: ```shell brew install librsvg ``` +If you run into issues, check [Homebrew's troubleshooting page](https://docs.brew.sh/Troubleshooting). + ## Building It's possible that your `PATH` environment variable contains some problematic strings, run diff --git a/doc/build-unix.md b/doc/build-unix.md index 428841cd5e..8d05c05fe5 100644 --- a/doc/build-unix.md +++ b/doc/build-unix.md @@ -39,6 +39,8 @@ pkg_add automake # (select highest version, e.g. 1.15) pkg_add python # (select highest version, e.g. 3.5) ``` +For the versions used, see [dependencies.md](dependencies.md) + Building -------- diff --git a/doc/dependencies.md b/doc/dependencies.md new file mode 100644 index 0000000000..8a881fafac --- /dev/null +++ b/doc/dependencies.md @@ -0,0 +1,46 @@ +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.73.0](https://www.boost.org/users/download/) | [1.47.0](https://github.com/bitcoin/bitcoin/pull/8920) | No | | | +| Clang[ \* ](#note1) | | [5.0+](https://releases.llvm.org/download.html) (C++17 support) | | | | +| D-Bus | [1.10.18](https://cgit.freedesktop.org/dbus/dbus/tree/NEWS?h=dbus-1.10) | | No | Yes | | +| Expat | [2.2.7](https://libexpat.github.io/) | | No | Yes | | +| fontconfig | [2.12.1](https://www.freedesktop.org/software/fontconfig/release/) | | No | Yes | | +| FreeType | [2.7.1](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) | | | | +| HarfBuzz-NG | | | | | [Yes](https://github.com/dashpay/dash/blob/develop/depends/packages/qt.mk) | +| libevent | [2.1.11-stable](https://github.com/libevent/libevent/releases) | No | | | +| libnatpmp | git commit [4536032...](https://github.com/miniupnp/libnatpmp/tree/4536032ae32268a45c073a4d5e91bbab4534773a) | | No | | | +| libpng | | | | | [Yes](https://github.com/dashpay/dash/blob/develop/depends/packages/qt.mk) | +| librsvg | | | | | | +| MiniUPnPc | [2.0.20180203](https://miniupnp.tuxfamily.org/files) | | No | | | +| PCRE | | | | | [Yes](https://github.com/dashpay/dash/blob/develop/depends/packages/qt.mk) | +| Python (tests) | | [3.5](https://www.python.org/downloads) | | | | +| qrencode | [3.4.4](https://fukuchi.org/works/qrencode) | | No | | | +| Qt | [5.12.11](https://download.qt.io/official_releases/qt/) | [5.5.1](https://github.com/bitcoin/bitcoin/issues/13478) | No | | | +| XCB | | | | | [Yes](https://github.com/dashpay/dash/blob/develop/depends/packages/qt.mk) (Linux only) | +| 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) | + +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. + +#### Options passed to `./configure` +* MiniUPnPc is not needed with `--without-miniupnpc`. +* 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`. +* ZeroMQ is needed only with the `--with-zmq` option. + +#### Other +* librsvg is only needed if you need to run `make deploy` on (cross-compilation to) macOS. +* Not-Qt-bundled zlib is required to build the [DMG tool](../contrib/macdeploy/README.md#deterministic-macos-dmg-notes) from the libdmg-hfsplus project.