c295cba5a2f934e51a7c8610ab4c58b8e9d56619 depends: zeromq: disable draft classes and methods (fanquake) 0072237b9e33e0b89f6c9f51dd0b946fa89a6134 depends: xproto: configure flags cleanup (fanquake) 6a8ada3a4f67affcf0ef7452e206083d7b58b2bc depends: qrencode: configure flags cleanup (fanquake) 86beb8cdc4e312bd0bed2cbb273aebb792be2747 depends: fontconfig: configure flags cleanup (fanquake) e656d95ec74336c2bd93bd387f67aeb6aed4dc40 depends: libxcb: configure flags cleanup (fanquake) e439388b352b7dfbf2e00c6ba2970fed0a4a5554 depends: libXau: configure flags cleanup (fanquake) Pull request description: Related to #16354. This PR adds additional configure flags to packages in depends to explicitly disable features we aren't using; similar to #16183. It also fixes passing `--without-tools` to `qrencode`. I've added `--disable-drafts` to `zeromq`: ```bash Build and install draft classes and methods [default=yes] ``` I'm not entirely sure how far we want to take this. i.e in the `zeromq` package we explicitly pass `--without-libsodium`, even though it's disabled by default. Do we also want to explicitly pass all the other `--without` flags? : ```bash --with-libgssapi_krb5 require libzmq build with libgssapi_krb5 [default=no] --with-libsodium use libsodium instead of built-in tweetnacl [default=no] --with-pgm build libzmq with PGM extension. Requires pkg-config [default=no] --with-norm build libzmq with NORM protocol extension, optionally specifying norm path [default=no] --with-vmci build libzmq with VMCI transport [default=no] ``` ACKs for top commit: dongcarl: ACK c295cba5a2f934e51a7c8610ab4c58b8e9d56619 Tree-SHA512: df6d38b863b4008ed2cb06c97eb0e21eaa4b5fde552876065ba7f3c87bf6e372e5b954a51bf3fde2151cfb6d2c022227d34337fc6e50ce0caa1d518abbd2412a
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
Bitcoin's configure script by default will ignore the depends output. In
order for it to pick up libraries, tools, and settings from the depends build,
you must point it at the appropriate --prefix
directory generated by the
build. In the above example, a prefix dir named x86_64-w64-mingw32 will be
created. To use it for Bitcoin:
./configure --prefix=`pwd`/depends/x86_64-w64-mingw32
Common host-platform-triplets
for cross compilation are:
i686-pc-linux-gnu
for Linux 32 bitx86_64-pc-linux-gnu
for x86 Linuxx86_64-w64-mingw32
for Win64x86_64-apple-darwin14
for macOSarm-linux-gnueabihf
for Linux ARM 32 bitaarch64-linux-gnu
for Linux ARM 64 bitriscv32-linux-gnu
for Linux RISC-V 32 bitriscv64-linux-gnu
for Linux RISC-V 64 bit
No other options are needed, the paths are automatically configured.
Install the required dependencies: Ubuntu & Debian
For macOS cross compilation
sudo apt-get install curl librsvg2-bin libtiff-tools bsdmainutils cmake imagemagick libcap-dev libz-dev libbz2-dev python3-setuptools
For Win32/Win64 cross compilation
- see build-windows.md
For linux (including i386, ARM) cross compilation
Common linux dependencies:
sudo apt-get install make automake cmake curl g++-multilib libtool binutils-gold bsdmainutils pkg-config python3 patch
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 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
RISC-V known issue: gcc-7.3.0 and gcc-7.3.1 result in a broken test_bitcoin
executable (see https://github.com/bitcoin/bitcoin/pull/13543),
this is apparently fixed in gcc-8.1.0.
Dependency Options
The following can be set when running make: make FOO=bar
SOURCES_PATH: downloaded sources will be placed here
BASE_CACHE: built packages will be placed here
SDK_PATH: Path where sdk's can be found (used by macOS)
FALLBACK_DOWNLOAD_PATH: If a source file can't be fetched, try here before giving up
NO_QT: Don't download/build/cache qt and its dependencies
NO_ZMQ: Don't download/build/cache packages needed for enabling zeromq
NO_WALLET: Don't download/build/cache libs needed to enable the wallet
NO_UPNP: Don't download/build/cache packages needed for enabling upnp
DEBUG: disable some optimizations and enable more runtime checking
RAPIDCHECK: build rapidcheck (experimental, requires cmake)
HOST_ID_SALT: Optional salt to use when generating host package ids
BUILD_ID_SALT: Optional salt to use when generating build package ids
If some packages are not built, for example make NO_WALLET=1
, the appropriate
options will be passed to bitcoin's configure. In this case, --disable-wallet
.
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