Libbitcoin Build System
Libbitcoin Build uses templates and XML data to generate build artifacts for the following libbitcoin libraries.
- libbitcoin-system
- libbitcoin-blockchain
- libbitcoin-client
- libbitcoin-consensus
- libbitcoin-database
- libbitcoin-explorer
- libbitcoin-network
- libbitcoin-node
- libbitcoin-protocol
- libbitcoin-server
Notes on Badges
libitcoin-client
coverage does not reflect the effect oflibitcoin-explorer
network tests.libitcoin-explorer
coverage does not reflect the effect of network tests.libitcoin-network
coverage does not reflect the effect of network tests.- Current converage is inflated by the fact that only files with some level of coverage are counted.
The artifacts generated for each library are as follows. Package names coincide with libbitcoin repository names.
.appveyor.yml
.travis.yml
autogen.sh
build.cmd
configure.ac
install.sh
[library].pc.in
[library]_test_runner.sh
Makefile.am
include/bitcoin/[library].hpp
include/bitcoin/[library]/version.hpp
builds/cmake/CMakeLists.txt
builds/cmake/modules/[module].cmake
builds/msvc/nuget.config
builds/msvc/build/build_base.bat
builds/msvc/[edition]/[library]/[library].props
builds/msvc/[edition]/[library]/[library].vcxproj
builds/msvc/[edition]/[library]/[library].vcxproj.filters
builds/msvc/[edition]/[library]/[library].xml
builds/msvc/[edition]/[library]/packages.config
builds/msvc/[edition]/[library].import.props
builds/msvc/[edition]/[library].import.xml
builds/msvc/[edition]/[library].sln
These artifacts are merged into their respective repositories by libbitcoin maintainers. There is no need to build libbitcoin-build if you are not a maintainer in the process of applying a build configuration change.
The build system has a dependency on iMatix GSL, recently moved to the ZeroMQ repository. There are Linux/OSX and Visual Studio builds of GSL. A recent version is recommended. There is also a Windows single file executable available for download.
This is similar to the .travis.yml and is useful for local generation. In addition to generate.sh
there is a generate.cmd
for the native Windows environment.
# Create a top-level work_directory.
work_directory=$HOME/work
mkdir -p $work_directory
cd $work_directory
# Clone, build and install the gsl dependency.
# gsl requires pcre package (e.g. libpcre3-dev)
# On Ubuntu: sudo apt-get install libpcre3-dev
git clone https://github.com/imatix/gsl.git
cd gsl/src
make && sudo make install
cd ../../
# Clone all libbitcoin repositories.
git clone https://github.com/libbitcoin/libbitcoin-system.git
git clone https://github.com/libbitcoin/libbitcoin-blockchain.git
git clone https://github.com/libbitcoin/libbitcoin-build.git
git clone https://github.com/libbitcoin/libbitcoin-client.git
git clone https://github.com/libbitcoin/libbitcoin-consensus.git
git clone https://github.com/libbitcoin/libbitcoin-database.git
git clone https://github.com/libbitcoin/libbitcoin-explorer.git
git clone https://github.com/libbitcoin/libbitcoin-network.git
git clone https://github.com/libbitcoin/libbitcoin-node.git
git clone https://github.com/libbitcoin/libbitcoin-protocol.git
git clone https://github.com/libbitcoin/libbitcoin-server.git
# Run the libbitcoin-build generation script.
# Newly generated build files are copied to the cloned repos.
cd libbitcoin-build
./generate.sh
REM Create a top-level work_directory.
set work_directory=%USERPROFILE%\work
if not exist %work_directory% mkdir %work_directory%
cd %work_directory%
REM Clone all libbitcoin repositories.
git clone https://github.com/libbitcoin/libbitcoin-system.git
git clone https://github.com/libbitcoin/libbitcoin-blockchain.git
git clone https://github.com/libbitcoin/libbitcoin-build.git
git clone https://github.com/libbitcoin/libbitcoin-client.git
git clone https://github.com/libbitcoin/libbitcoin-consensus.git
git clone https://github.com/libbitcoin/libbitcoin-database.git
git clone https://github.com/libbitcoin/libbitcoin-explorer.git
git clone https://github.com/libbitcoin/libbitcoin-network.git
git clone https://github.com/libbitcoin/libbitcoin-node.git
git clone https://github.com/libbitcoin/libbitcoin-protocol.git
git clone https://github.com/libbitcoin/libbitcoin-server.git
REM Download the gsl dependency manually from
REM https://github.com/imatix/gsl/releases/download/NuGet-4.1.0.1/gsl.exe.
REM Copy the gsl.exe manually to the libbitcoin-build folder in your work
REM directory.
REM Run the libbitcoin-build generation script.
REM Newly generated build files are copied to the cloned repos.
cd libbitcoin-build
./generate.cmd