Long ago our code actually used gmp directly but that is no longer the case. Our dependency secp256k1 has an optional dependency on gmp but the way we configure and compile secp256k1 does not use it. So there is no reason to download and compile gmp in our build system. This means we no longer need to maintain three different forks of GMP (one for Darwin, one for Win and one for Linux that supports gcc15). This also makes downloading and compiling Hush faster. Joy to the world.
Hush Dependencies
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 prefix will be generated that's suitable for plugging into Hush's
configure. In the above example, a dir named x86_64-w64-mingw32 will be
created. To use it for Hush:
./configure --prefix=`pwd`/depends/x86_64-w64-mingw32
Common host-platform-triplets for cross compilation are:
i686-w64-mingw32for Win32x86_64-w64-mingw32for Win64x86_64-apple-darwin11for MacOSXarm-linux-gnueabihffor Linux ARM
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)
PRIORITY_DOWNLOAD_PATH: Try fetching source files from here before using their own URLs
NO_WALLET: Don't download/build/cache libs needed to enable the wallet
DEBUG: disable some optimizations and enable more runtime checking
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 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
Other documentation
- description.md: General description of the depends system
- packages.md: Steps for adding packages