1630219d90
This makes it easier for us to replace it if desired, since it's now only in one spot. Also, it avoids the openssl include from allocators.h, which essentially forced openssl to be included from every compilation unit.
423 lines
9.7 KiB
Makefile
423 lines
9.7 KiB
Makefile
DIST_SUBDIRS = secp256k1
|
|
AM_LDFLAGS = $(PTHREAD_CFLAGS) $(LIBTOOL_LDFLAGS)
|
|
|
|
|
|
if EMBEDDED_LEVELDB
|
|
LEVELDB_CPPFLAGS += -I$(srcdir)/leveldb/include
|
|
LEVELDB_CPPFLAGS += -I$(srcdir)/leveldb/helpers/memenv
|
|
LIBLEVELDB += $(builddir)/leveldb/libleveldb.a
|
|
LIBMEMENV += $(builddir)/leveldb/libmemenv.a
|
|
|
|
# NOTE: This dependency is not strictly necessary, but without it make may try to build both in parallel, which breaks the LevelDB build system in a race
|
|
$(LIBLEVELDB): $(LIBMEMENV)
|
|
|
|
$(LIBLEVELDB) $(LIBMEMENV):
|
|
@echo "Building LevelDB ..." && $(MAKE) -C $(@D) $(@F) CXX="$(CXX)" \
|
|
CC="$(CC)" PLATFORM=$(TARGET_OS) AR="$(AR)" $(LEVELDB_TARGET_FLAGS) \
|
|
OPT="$(CXXFLAGS) $(CPPFLAGS)"
|
|
endif
|
|
|
|
BITCOIN_CONFIG_INCLUDES=-I$(builddir)/config
|
|
BITCOIN_INCLUDES=-I$(builddir) -I$(builddir)/obj $(BOOST_CPPFLAGS) $(LEVELDB_CPPFLAGS) $(CRYPTO_CFLAGS) $(SSL_CFLAGS)
|
|
|
|
BITCOIN_INCLUDES += -I$(srcdir)/secp256k1/include
|
|
|
|
LIBBITCOIN_SERVER=libbitcoin_server.a
|
|
LIBBITCOIN_WALLET=libbitcoin_wallet.a
|
|
LIBBITCOIN_COMMON=libbitcoin_common.a
|
|
LIBBITCOIN_CLI=libbitcoin_cli.a
|
|
LIBBITCOIN_UTIL=libbitcoin_util.a
|
|
LIBBITCOIN_CRYPTO=crypto/libbitcoin_crypto.a
|
|
LIBBITCOIN_UNIVALUE=univalue/libbitcoin_univalue.a
|
|
LIBBITCOINQT=qt/libbitcoinqt.a
|
|
LIBSECP256K1=secp256k1/libsecp256k1.la
|
|
|
|
$(LIBSECP256K1): $(wildcard secp256k1/src/*) $(wildcard secp256k1/include/*)
|
|
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F)
|
|
|
|
# Make is not made aware of per-object dependencies to avoid limiting building parallelization
|
|
# But to build the less dependent modules first, we manually select their order here:
|
|
EXTRA_LIBRARIES = \
|
|
crypto/libbitcoin_crypto.a \
|
|
libbitcoin_util.a \
|
|
libbitcoin_common.a \
|
|
univalue/libbitcoin_univalue.a \
|
|
libbitcoin_server.a \
|
|
libbitcoin_cli.a
|
|
if ENABLE_WALLET
|
|
BITCOIN_INCLUDES += $(BDB_CPPFLAGS)
|
|
EXTRA_LIBRARIES += libbitcoin_wallet.a
|
|
endif
|
|
|
|
if BUILD_BITCOIN_LIBS
|
|
lib_LTLIBRARIES = libbitcoinconsensus.la
|
|
LIBBITCOIN_CONSENSUS=libbitcoinconsensus.la
|
|
else
|
|
LIBBITCOIN_CONSENSUS=
|
|
endif
|
|
|
|
bin_PROGRAMS =
|
|
TESTS =
|
|
|
|
if BUILD_BITCOIND
|
|
bin_PROGRAMS += bitcoind
|
|
endif
|
|
|
|
if BUILD_BITCOIN_UTILS
|
|
bin_PROGRAMS += bitcoin-cli bitcoin-tx
|
|
endif
|
|
|
|
.PHONY: FORCE
|
|
# bitcoin core #
|
|
BITCOIN_CORE_H = \
|
|
addrman.h \
|
|
alert.h \
|
|
allocators.h \
|
|
amount.h \
|
|
arith_uint256.h \
|
|
base58.h \
|
|
bloom.h \
|
|
chain.h \
|
|
chainparamsbase.h \
|
|
chainparams.h \
|
|
chainparamsseeds.h \
|
|
checkpoints.h \
|
|
checkqueue.h \
|
|
clientversion.h \
|
|
coincontrol.h \
|
|
coins.h \
|
|
compat.h \
|
|
compressor.h \
|
|
core_io.h \
|
|
crypter.h \
|
|
db.h \
|
|
eccryptoverify.h \
|
|
ecwrapper.h \
|
|
hash.h \
|
|
init.h \
|
|
key.h \
|
|
keystore.h \
|
|
leveldbwrapper.h \
|
|
limitedmap.h \
|
|
main.h \
|
|
merkleblock.h \
|
|
miner.h \
|
|
mruset.h \
|
|
netbase.h \
|
|
net.h \
|
|
noui.h \
|
|
pow.h \
|
|
primitives/block.h \
|
|
primitives/transaction.h \
|
|
protocol.h \
|
|
pubkey.h \
|
|
random.h \
|
|
rpcclient.h \
|
|
rpcprotocol.h \
|
|
rpcserver.h \
|
|
script/interpreter.h \
|
|
script/script_error.h \
|
|
script/script.h \
|
|
script/sigcache.h \
|
|
script/sign.h \
|
|
script/standard.h \
|
|
serialize.h \
|
|
streams.h \
|
|
support/cleanse.h \
|
|
sync.h \
|
|
threadsafety.h \
|
|
timedata.h \
|
|
tinyformat.h \
|
|
txdb.h \
|
|
txmempool.h \
|
|
ui_interface.h \
|
|
uint256.h \
|
|
undo.h \
|
|
util.h \
|
|
utilmoneystr.h \
|
|
utilstrencodings.h \
|
|
utiltime.h \
|
|
version.h \
|
|
walletdb.h \
|
|
wallet.h \
|
|
wallet_ismine.h \
|
|
compat/sanity.h
|
|
|
|
JSON_H = \
|
|
json/json_spirit.h \
|
|
json/json_spirit_error_position.h \
|
|
json/json_spirit_reader.h \
|
|
json/json_spirit_reader_template.h \
|
|
json/json_spirit_stream_reader.h \
|
|
json/json_spirit_utils.h \
|
|
json/json_spirit_value.h \
|
|
json/json_spirit_writer.h \
|
|
json/json_spirit_writer_template.h
|
|
|
|
obj/build.h: FORCE
|
|
@$(MKDIR_P) $(builddir)/obj
|
|
@$(top_srcdir)/share/genbuild.sh $(abs_top_builddir)/src/obj/build.h \
|
|
$(abs_top_srcdir)
|
|
libbitcoin_util_a-clientversion.$(OBJEXT): obj/build.h
|
|
|
|
# server: shared between bitcoind and bitcoin-qt
|
|
libbitcoin_server_a_CPPFLAGS = $(BITCOIN_INCLUDES) $(MINIUPNPC_CPPFLAGS)
|
|
libbitcoin_server_a_SOURCES = \
|
|
addrman.cpp \
|
|
alert.cpp \
|
|
bloom.cpp \
|
|
chain.cpp \
|
|
checkpoints.cpp \
|
|
init.cpp \
|
|
leveldbwrapper.cpp \
|
|
main.cpp \
|
|
merkleblock.cpp \
|
|
miner.cpp \
|
|
net.cpp \
|
|
noui.cpp \
|
|
pow.cpp \
|
|
rest.cpp \
|
|
rpcblockchain.cpp \
|
|
rpcmining.cpp \
|
|
rpcmisc.cpp \
|
|
rpcnet.cpp \
|
|
rpcrawtransaction.cpp \
|
|
rpcserver.cpp \
|
|
script/sigcache.cpp \
|
|
timedata.cpp \
|
|
txdb.cpp \
|
|
txmempool.cpp \
|
|
$(JSON_H) \
|
|
$(BITCOIN_CORE_H)
|
|
|
|
# wallet: shared between bitcoind and bitcoin-qt, but only linked
|
|
# when wallet enabled
|
|
libbitcoin_wallet_a_CPPFLAGS = $(BITCOIN_INCLUDES)
|
|
libbitcoin_wallet_a_SOURCES = \
|
|
db.cpp \
|
|
crypter.cpp \
|
|
rpcdump.cpp \
|
|
rpcwallet.cpp \
|
|
wallet.cpp \
|
|
wallet_ismine.cpp \
|
|
walletdb.cpp \
|
|
$(BITCOIN_CORE_H)
|
|
|
|
# crypto primitives library
|
|
crypto_libbitcoin_crypto_a_CPPFLAGS = $(BITCOIN_CONFIG_INCLUDES)
|
|
crypto_libbitcoin_crypto_a_SOURCES = \
|
|
crypto/sha1.cpp \
|
|
crypto/sha256.cpp \
|
|
crypto/sha512.cpp \
|
|
crypto/hmac_sha256.cpp \
|
|
crypto/hmac_sha512.cpp \
|
|
crypto/ripemd160.cpp \
|
|
crypto/common.h \
|
|
crypto/sha256.h \
|
|
crypto/sha512.h \
|
|
crypto/hmac_sha256.h \
|
|
crypto/hmac_sha512.h \
|
|
crypto/sha1.h \
|
|
crypto/ripemd160.h
|
|
|
|
# univalue JSON library
|
|
univalue_libbitcoin_univalue_a_SOURCES = \
|
|
univalue/univalue.cpp \
|
|
univalue/univalue_read.cpp \
|
|
univalue/univalue_write.cpp \
|
|
univalue/univalue_escapes.h \
|
|
univalue/univalue.h
|
|
|
|
# common: shared between bitcoind, and bitcoin-qt and non-server tools
|
|
libbitcoin_common_a_CPPFLAGS = $(BITCOIN_INCLUDES)
|
|
libbitcoin_common_a_SOURCES = \
|
|
allocators.cpp \
|
|
arith_uint256.cpp \
|
|
amount.cpp \
|
|
base58.cpp \
|
|
chainparams.cpp \
|
|
coins.cpp \
|
|
compressor.cpp \
|
|
primitives/block.cpp \
|
|
primitives/transaction.cpp \
|
|
core_read.cpp \
|
|
core_write.cpp \
|
|
eccryptoverify.cpp \
|
|
ecwrapper.cpp \
|
|
hash.cpp \
|
|
key.cpp \
|
|
keystore.cpp \
|
|
netbase.cpp \
|
|
protocol.cpp \
|
|
pubkey.cpp \
|
|
script/interpreter.cpp \
|
|
script/script.cpp \
|
|
script/sign.cpp \
|
|
script/standard.cpp \
|
|
script/script_error.cpp \
|
|
$(BITCOIN_CORE_H)
|
|
|
|
# util: shared between all executables.
|
|
# This library *must* be included to make sure that the glibc
|
|
# backward-compatibility objects and their sanity checks are linked.
|
|
libbitcoin_util_a_CPPFLAGS = $(BITCOIN_INCLUDES)
|
|
libbitcoin_util_a_SOURCES = \
|
|
chainparamsbase.cpp \
|
|
clientversion.cpp \
|
|
compat/glibc_sanity.cpp \
|
|
compat/glibcxx_sanity.cpp \
|
|
compat/strnlen.cpp \
|
|
random.cpp \
|
|
rpcprotocol.cpp \
|
|
support/cleanse.cpp \
|
|
sync.cpp \
|
|
uint256.cpp \
|
|
util.cpp \
|
|
utilmoneystr.cpp \
|
|
utilstrencodings.cpp \
|
|
utiltime.cpp \
|
|
$(BITCOIN_CORE_H)
|
|
|
|
if GLIBC_BACK_COMPAT
|
|
libbitcoin_util_a_SOURCES += compat/glibc_compat.cpp
|
|
libbitcoin_util_a_SOURCES += compat/glibcxx_compat.cpp
|
|
endif
|
|
|
|
# cli: shared between bitcoin-cli and bitcoin-qt
|
|
libbitcoin_cli_a_CPPFLAGS = $(BITCOIN_INCLUDES)
|
|
libbitcoin_cli_a_SOURCES = \
|
|
rpcclient.cpp \
|
|
$(BITCOIN_CORE_H)
|
|
|
|
nodist_libbitcoin_util_a_SOURCES = $(srcdir)/obj/build.h
|
|
#
|
|
|
|
# bitcoind binary #
|
|
bitcoind_SOURCES = bitcoind.cpp
|
|
bitcoind_CPPFLAGS = $(BITCOIN_INCLUDES)
|
|
bitcoind_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
|
|
|
if TARGET_WINDOWS
|
|
bitcoind_SOURCES += bitcoind-res.rc
|
|
endif
|
|
|
|
bitcoind_LDADD = \
|
|
$(LIBBITCOIN_SERVER) \
|
|
$(LIBBITCOIN_COMMON) \
|
|
$(LIBBITCOIN_UNIVALUE) \
|
|
$(LIBBITCOIN_UTIL) \
|
|
$(LIBBITCOIN_CRYPTO) \
|
|
$(LIBLEVELDB) \
|
|
$(LIBMEMENV) \
|
|
$(LIBSECP256K1)
|
|
|
|
if ENABLE_WALLET
|
|
bitcoind_LDADD += libbitcoin_wallet.a
|
|
endif
|
|
|
|
bitcoind_LDADD += $(BOOST_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS)
|
|
#
|
|
|
|
# bitcoin-cli binary #
|
|
bitcoin_cli_SOURCES = bitcoin-cli.cpp
|
|
bitcoin_cli_CPPFLAGS = $(BITCOIN_INCLUDES)
|
|
bitcoin_cli_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
|
|
|
if TARGET_WINDOWS
|
|
bitcoin_cli_SOURCES += bitcoin-cli-res.rc
|
|
endif
|
|
|
|
bitcoin_cli_LDADD = \
|
|
$(LIBBITCOIN_CLI) \
|
|
$(LIBBITCOIN_UTIL) \
|
|
$(LIBSECP256K1)
|
|
|
|
bitcoin_cli_LDADD += $(BOOST_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS)
|
|
#
|
|
|
|
# bitcoin-tx binary #
|
|
bitcoin_tx_SOURCES = bitcoin-tx.cpp
|
|
bitcoin_tx_CPPFLAGS = $(BITCOIN_INCLUDES)
|
|
bitcoin_tx_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
|
|
|
bitcoin_tx_LDADD = \
|
|
$(LIBBITCOIN_UNIVALUE) \
|
|
$(LIBBITCOIN_COMMON) \
|
|
$(LIBBITCOIN_UTIL) \
|
|
$(LIBBITCOIN_CRYPTO) \
|
|
$(LIBSECP256K1)
|
|
|
|
bitcoin_tx_LDADD += $(BOOST_LIBS) $(CRYPTO_LIBS)
|
|
#
|
|
|
|
# bitcoinconsensus library #
|
|
if BUILD_BITCOIN_LIBS
|
|
include_HEADERS = script/bitcoinconsensus.h
|
|
libbitcoinconsensus_la_SOURCES = \
|
|
crypto/hmac_sha512.cpp \
|
|
crypto/ripemd160.cpp \
|
|
crypto/sha1.cpp \
|
|
crypto/sha256.cpp \
|
|
crypto/sha512.cpp \
|
|
eccryptoverify.cpp \
|
|
ecwrapper.cpp \
|
|
hash.cpp \
|
|
primitives/transaction.cpp \
|
|
pubkey.cpp \
|
|
script/bitcoinconsensus.cpp \
|
|
script/interpreter.cpp \
|
|
script/script.cpp \
|
|
uint256.cpp \
|
|
utilstrencodings.cpp
|
|
|
|
if GLIBC_BACK_COMPAT
|
|
libbitcoinconsensus_la_SOURCES += compat/glibc_compat.cpp
|
|
libbitcoinconsensus_la_SOURCES += compat/glibcxx_compat.cpp
|
|
endif
|
|
|
|
libbitcoinconsensus_la_LDFLAGS = -no-undefined $(RELDFLAGS)
|
|
libbitcoinconsensus_la_LIBADD = $(CRYPTO_LIBS)
|
|
libbitcoinconsensus_la_CPPFLAGS = $(CRYPTO_CFLAGS) -I$(builddir)/obj -DBUILD_BITCOIN_INTERNAL
|
|
|
|
if USE_LIBSECP256K1
|
|
libbitcoinconsensus_la_LIBADD += secp256k1/libsecp256k1.la
|
|
endif
|
|
endif
|
|
#
|
|
|
|
CLEANFILES = leveldb/libleveldb.a leveldb/libmemenv.a *.gcda *.gcno
|
|
|
|
DISTCLEANFILES = obj/build.h
|
|
|
|
EXTRA_DIST = leveldb
|
|
|
|
clean-local:
|
|
-$(MAKE) -C leveldb clean
|
|
-$(MAKE) -C secp256k1 clean
|
|
rm -f leveldb/*/*.gcno leveldb/helpers/memenv/*.gcno
|
|
-rm -f config.h
|
|
|
|
.rc.o:
|
|
@test -f $(WINDRES)
|
|
$(AM_V_GEN) $(WINDRES) -DWINDRES_PREPROC -i $< -o $@
|
|
|
|
.mm.o:
|
|
$(AM_V_CXX) $(OBJCXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
|
$(CPPFLAGS) $(AM_CXXFLAGS) $(QT_INCLUDES) $(CXXFLAGS) -c -o $@ $<
|
|
|
|
%.pb.cc %.pb.h: %.proto
|
|
@test -f $(PROTOC)
|
|
$(AM_V_GEN) $(PROTOC) --cpp_out=$(@D) --proto_path=$(abspath $(<D) $<)
|
|
|
|
if ENABLE_TESTS
|
|
include Makefile.test.include
|
|
endif
|
|
|
|
if ENABLE_QT
|
|
include Makefile.qt.include
|
|
endif
|
|
|
|
if ENABLE_QT_TESTS
|
|
include Makefile.qttest.include
|
|
endif
|