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
A toolchain will be generated that's suitable for plugging into Sumokoin's cmake. In the above example, a dir named x86_64-w64-mingw32 will be created. To use it for Sumokoin:
cmake -DCMAKE_TOOLCHAIN=`pwd`/contrib/depends/x86_64-w64-mingw32
Common host-platform-triplets
for cross compilation are:
i686-w64-mingw32
for Win32x86_64-w64-mingw32
for Win64x86_64-apple-darwin14
for MacOSXarm-linux-gnueabihf
for Linux ARM 32 bitaarch64-linux-gnu
for Linux ARM 64 bitriscv64-linux-gnu
for Linux RISCV 64 bit
No other options are needed, the paths are automatically configured.
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 OSX)
FALLBACK_DOWNLOAD_PATH: If a source file can't be fetched, try here before giving up
DEBUG: disable some optimizations and enable more runtime checking
HOST_ID_SALT: Optional salt to use when generating host package ids
BUILD_ID_SALT: Optional salt to use when generating build package ids
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 osx 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
To build with the x86_64-apple-darwin14 you require the mac os developer tools. Here are step-by-step to extract Apple SDK from XCode.app
Our current macOS SDK
(Xcode-11.3.1-11C505-extracted-SDK-with-libcxx-headers.tar.gz
) can be
extracted from
Xcode_11.3.1.xip.
An Apple ID is needed to download this.
After Xcode version 7.x, Apple started shipping the Xcode.app
in a .xip
archive. This makes the SDK less-trivial to extract on non-macOS machines. One
approach (tested on Debian Buster) is outlined below:
# Install/clone tools needed for extracting Xcode.app
apt install cpio
git clone https://github.com/bitcoin-core/apple-sdk-tools.git
# Unpack Xcode_11.3.1.xip and place the resulting Xcode.app in your current
# working directory
python3 apple-sdk-tools/extract_xcode.py -f Xcode_11.3.1.xip | cpio -d -i
On macOS the process is more straightforward:
xip -x Xcode_11.3.1.xip
To generate Xcode-11.3.1-11C505-extracted-SDK-with-libcxx-headers.tar.gz
, run
the script gen-sdk
with the path to Xcode.app
(extracted in the
previous stage) as the first argument.
# Generate a Xcode-11.3.1-11C505-extracted-SDK-with-libcxx-headers.tar.gz from
# the supplied Xcode.app
python3 ./contrib/depends/gen-sdk.py '/path/to/Xcode.app'
Create a new directoty called SDKs
in this directory and extract the generated .gz into it.
The depends build will then pick it up automatically
(without requiring SDK_PATH).
Building for 32/64bit mingw requires switching alternatives to a posix mode
update-alternatives --set x86_64-w64-mingw32-g++ x86_64-w64-mingw32-g++-posix
update-alternatives --set x86_64-w64-mingw32-gcc x86_64-w64-mingw32-gcc-posix
- description.md: General description of the depends system
- packages.md: Steps for adding packages