Skip to content

Latest commit

 

History

History
126 lines (91 loc) · 3.79 KB

README.md

File metadata and controls

126 lines (91 loc) · 3.79 KB

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

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 Win32
  • x86_64-w64-mingw32 for Win64
  • x86_64-apple-darwin14 for MacOSX
  • arm-linux-gnueabihf for Linux ARM 32 bit
  • aarch64-linux-gnu for Linux ARM 64 bit
  • riscv64-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

Darwin (macos) 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

SDK Extraction

Step 1: Obtaining 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

Step 2: Generating Xcode-11.3.1-11C505-extracted-SDK-with-libcxx-headers.tar.gz from Xcode.app

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).

Mingw builds

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

Other documentation