Skip to content

Commit

Permalink
[DOC] Update the depends README with dependencies and cmake instructions
Browse files Browse the repository at this point in the history
Summary:
This diff updates the cross compilation instructions to use cmake and
ninja.
It also make the doc in sync with core with up to date dependencies.

Backport of core [[bitcoin/bitcoin#14264 | PR14264]] and [[bitcoin/bitcoin#16051 | PR16051]].

Test Plan: Read and test the instructions.

Reviewers: #bitcoin_abc, jasonbcox, deadalnix

Reviewed By: #bitcoin_abc, jasonbcox, deadalnix

Subscribers: jasonbcox, deadalnix

Differential Revision: https://reviews.bitcoinabc.org/D5394
  • Loading branch information
Fabcien committed Mar 6, 2020
1 parent ae17dc9 commit 3aaf582
Show file tree
Hide file tree
Showing 2 changed files with 73 additions and 16 deletions.
86 changes: 70 additions & 16 deletions depends/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,79 @@ To build dependencies for the current arch+OS:

To build for another arch/OS:

make HOST=host-platform-triplet
make build-<platform>

For example:
Where `<platform>` is one of the following:
- linux64
- linux32
- linux-arm
- linux-aarch64
- osx
- win32
- win64

make HOST=x86_64-w64-mingw32
For example, building the dependencies for macOS:

A prefix will be generated that's suitable for plugging into Bitcoin's
configure. In the above example, a dir named x86_64-w64-mingw32 will be
created. To use it for bitcoin-abc:
make build-osx

./configure --prefix=`pwd`/depends/x86_64-w64-mingw32
Note that it will use all the CPU cores available on the machine by default.
This behavior can be changed by setting the `JOBS` environment variable (see
below).

Common `host-platform-triplets` for cross compilation are:
To use the dependencies for building Bitcoin ABC, you need to set the platform
file to be used by `cmake`.
The platform files are located under `cmake/platforms/`.
For example, cross-building for macOS (run from the project root):

- `i686-w64-mingw32` for Win32
- `x86_64-w64-mingw32` for Win64
- `x86_64-apple-darwin14` for macOS
- `arm-linux-gnueabihf` for Linux ARM 32 bit
- `aarch64-linux-gnu` for Linux ARM 64 bit
mkdir build_osx
cd build_osx
cmake -GNinja .. -DCMAKE_TOOLCHAIN_FILE=../cmake/platforms/OSX.cmake
ninja

No other options are needed, the paths are automatically configured.

Dependency Options:
### Install the required dependencies: Ubuntu & Debian

#### Common to all arch/OS

sudo apt-get install build-essential autoconf automake cmake curl git libtool ninja-build patch pkg-config python3

#### For macOS cross compilation

sudo apt-get install imagemagick libbz2-dev libcap-dev librsvg2-bin libtiff-tools python3-setuptools

#### For Win32/Win64 cross compilation

- see [build-windows.md](../doc/build-windows.md#cross-compilation-for-ubuntu-and-windows-subsystem-for-linux)

#### For linux cross compilation

Common linux dependencies:

sudo apt-get install gperf

For linux 32 bits cross compilation:

First add the i386 architecture to `dpkg`:

sudo dpkg --add-architecture i386
sudo apt-get update

Then install the dependencies:

sudo apt-get install lib32stdc++-8-dev libc6-dev:i386

For linux ARM cross compilation:

sudo apt-get install g++-arm-linux-gnueabihf

For linux AARCH64 cross compilation:

sudo apt-get install g++-aarch64-linux-gnu


### Dependency Options

The following can be set when running make: make FOO=bar

SOURCES_PATH: downloaded sources will be placed here
Expand All @@ -44,15 +94,19 @@ The following can be set when running make: make FOO=bar
BUILD_ID_SALT: Optional salt to use when generating build package ids
JOBS: Number of jobs to use for each package build

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`.
If some packages are not built, for example by building the depends with
`make NO_WALLET=1`, the appropriate options should be set when building Bitcoin
ABC using these dependencies.
In this example, `-DBUILD_BITCOIN_WALLET=OFF` should be passed to the `cmake`
command line to ensure that the build will not fail due to missing dependencies.

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
build-all: build the dependencies for all the arch/OS

### Other documentation

Expand Down
3 changes: 3 additions & 0 deletions doc/build-unix.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,9 @@ Then update the package list and install `cmake`:
sudo apt update
sudo apt install cmake

Now, you can either build from self-compiled [depends](/depends/README.md) or
install the required dependencies with the following instructions.

Options when installing required Boost library files:

1. On at least Ubuntu 16.04+ and Debian 9+ there are generic names for the
Expand Down

0 comments on commit 3aaf582

Please sign in to comment.