2016-04-09 19:17:17 +02:00
DIST_SUBDIRS = secp256k1 univalue
AM_LDFLAGS = $( PTHREAD_CFLAGS) $( LIBTOOL_LDFLAGS) $( HARDENED_LDFLAGS)
AM_CXXFLAGS = $( HARDENED_CXXFLAGS)
AM_CPPFLAGS = $( HARDENED_CPPFLAGS)
i f E M B E D D E D _ L E V E L D B
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 = " $( AM_CXXFLAGS) $( PIE_FLAGS) $( CXXFLAGS) $( AM_CPPFLAGS) $( CPPFLAGS) -D__STDC_LIMIT_MACROS "
e n d i f
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
BITCOIN_INCLUDES += -I$( srcdir) /univalue/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
LIBBITCOINQT = qt/libbitcoinqt.a
LIBSECP256K1 = secp256k1/libsecp256k1.la
LIBUNIVALUE = univalue/libunivalue.la
$(LIBSECP256K1) : $( wildcard secp 256k 1/src /*) $( wildcard secp 256k 1/include /*)
$( AM_V_at) $( MAKE) $( AM_MAKEFLAGS) -C $( @D) $( @F)
$(LIBUNIVALUE) : $( wildcard univalue /lib /*) $( wildcard univalue /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 \
libbitcoin_server.a \
libbitcoin_cli.a
i f E N A B L E _ W A L L E T
BITCOIN_INCLUDES += $( BDB_CPPFLAGS)
EXTRA_LIBRARIES += libbitcoin_wallet.a
e n d i f
i f E N A B L E _ Z M Q
EXTRA_LIBRARIES += libbitcoin_zmq.a
e n d i f
i f B U I L D _ B I T C O I N _ L I B S
2017-04-15 09:29:09 +02:00
lib_LTLIBRARIES = libdashconsensus.la
LIBBITCOIN_CONSENSUS = libdashconsensus.la
2016-04-09 19:17:17 +02:00
e l s e
LIBBITCOIN_CONSENSUS =
e n d i f
bin_PROGRAMS =
TESTS =
BENCHMARKS =
i f B U I L D _ B I T C O I N D
bin_PROGRAMS += dashd
e n d i f
i f B U I L D _ B I T C O I N _ U T I L S
bin_PROGRAMS += dash-cli dash-tx
e n d i f
.PHONY : FORCE check -symbols check -security
# dash core #
BITCOIN_CORE_H = \
activemasternode.h \
addrman.h \
alert.h \
amount.h \
arith_uint256.h \
base58.h \
bloom.h \
chain.h \
chainparams.h \
chainparamsbase.h \
chainparamsseeds.h \
checkpoints.h \
checkqueue.h \
clientversion.h \
coincontrol.h \
coins.h \
compat.h \
compat/byteswap.h \
compat/endian.h \
compat/sanity.h \
compressor.h \
consensus/consensus.h \
consensus/merkle.h \
consensus/params.h \
consensus/validation.h \
core_io.h \
core_memusage.h \
darksend.h \
dsnotificationinterface.h \
darksend-relay.h \
governance.h \
governance-brain.h \
governance-classes.h \
governance-categories.h \
governance-keys.h \
governance-types.h \
governance-vote.h \
hash.h \
httprpc.h \
httpserver.h \
init.h \
instantx.h \
key.h \
keepass.h \
keystore.h \
dbwrapper.h \
limitedmap.h \
main.h \
masternode.h \
masternode-payments.h \
masternode-sync.h \
masternodeman.h \
masternodeconfig.h \
memusage.h \
merkleblock.h \
miner.h \
net.h \
netbase.h \
noui.h \
policy/fees.h \
policy/policy.h \
policy/rbf.h \
pow.h \
prevector.h \
primitives/block.h \
primitives/transaction.h \
protocol.h \
pubkey.h \
random.h \
reverselock.h \
rpcclient.h \
rpcprotocol.h \
rpcserver.h \
scheduler.h \
script/interpreter.h \
script/script.h \
script/script_error.h \
script/sigcache.h \
script/sign.h \
script/standard.h \
serialize.h \
spork.h \
streams.h \
support/allocators/secure.h \
support/allocators/zeroafterfree.h \
support/cleanse.h \
support/pagelocker.h \
sync.h \
threadsafety.h \
timedata.h \
tinyformat.h \
torcontrol.h \
txdb.h \
txmempool.h \
ui_interface.h \
uint256.h \
undo.h \
util.h \
utilmoneystr.h \
utilstrencodings.h \
utiltime.h \
validationinterface.h \
version.h \
wallet/crypter.h \
wallet/db.h \
wallet/wallet.h \
wallet/wallet_ismine.h \
wallet/walletdb.h \
zmq/zmqabstractnotifier.h \
zmq/zmqconfig.h\
zmq/zmqnotificationinterface.h \
zmq/zmqpublishnotifier.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 dashd and dash-qt
libbitcoin_server_a_CPPFLAGS = $( AM_CPPFLAGS) $( BITCOIN_INCLUDES) $( MINIUPNPC_CPPFLAGS) $( EVENT_CFLAGS) $( EVENT_PTHREADS_CFLAGS)
libbitcoin_server_a_CXXFLAGS = $( AM_CXXFLAGS) $( PIE_FLAGS)
libbitcoin_server_a_SOURCES = \
addrman.cpp \
alert.cpp \
bloom.cpp \
chain.cpp \
checkpoints.cpp \
httprpc.cpp \
httpserver.cpp \
init.cpp \
dbwrapper.cpp \
main.cpp \
merkleblock.cpp \
miner.cpp \
net.cpp \
noui.cpp \
policy/fees.cpp \
policy/policy.cpp \
pow.cpp \
rest.cpp \
rpcblockchain.cpp \
rpcmasternode.cpp \
rpcmining.cpp \
rpcmisc.cpp \
rpcnet.cpp \
rpcrawtransaction.cpp \
rpcserver.cpp \
script/sigcache.cpp \
timedata.cpp \
torcontrol.cpp \
txdb.cpp \
txmempool.cpp \
validationinterface.cpp \
$( BITCOIN_CORE_H)
i f E N A B L E _ Z M Q
LIBBITCOIN_ZMQ = libbitcoin_zmq.a
libbitcoin_zmq_a_CPPFLAGS = $( BITCOIN_INCLUDES) $( ZMQ_CFLAGS)
libbitcoin_zmq_a_CXXFLAGS = $( AM_CXXFLAGS) $( PIE_FLAGS)
libbitcoin_zmq_a_SOURCES = \
zmq/zmqabstractnotifier.cpp \
zmq/zmqnotificationinterface.cpp \
zmq/zmqpublishnotifier.cpp
e n d i f
# wallet: shared between dashd and dash-qt, but only linked
# when wallet enabled
libbitcoin_wallet_a_CPPFLAGS = $( AM_CPPFLAGS) $( BITCOIN_INCLUDES)
libbitcoin_wallet_a_CXXFLAGS = $( AM_CXXFLAGS) $( PIE_FLAGS)
libbitcoin_wallet_a_SOURCES = \
activemasternode.cpp \
darksend.cpp \
dsnotificationinterface.cpp \
darksend-relay.cpp \
governance.cpp \
governance-brain.cpp \
governance-classes.cpp \
governance-keys.cpp \
governance-vote.cpp \
instantx.cpp \
masternode.cpp \
masternodeconfig.cpp \
masternode-payments.cpp \
masternode-sync.cpp \
masternodeman.cpp \
keepass.cpp \
wallet/crypter.cpp \
wallet/db.cpp \
wallet/rpcdump.cpp \
wallet/rpcwallet.cpp \
wallet/wallet.cpp \
wallet/wallet_ismine.cpp \
wallet/walletdb.cpp \
policy/rbf.cpp \
$( BITCOIN_CORE_H)
# crypto primitives library
crypto_libbitcoin_crypto_a_CPPFLAGS = $( AM_CPPFLAGS) $( BITCOIN_CONFIG_INCLUDES) $( PIC_FLAGS)
crypto_libbitcoin_crypto_a_CXXFLAGS = $( AM_CXXFLAGS) $( PIE_FLAGS) $( PIC_FLAGS)
crypto_libbitcoin_crypto_a_SOURCES = \
crypto/common.h \
crypto/hmac_sha256.cpp \
crypto/hmac_sha256.h \
crypto/hmac_sha512.cpp \
crypto/hmac_sha512.h \
crypto/ripemd160.cpp \
crypto/aes_helper.c \
crypto/blake.c \
crypto/bmw.c \
crypto/cubehash.c \
crypto/echo.c \
crypto/groestl.c \
crypto/jh.c \
crypto/keccak.c \
crypto/luffa.c \
crypto/shavite.c \
crypto/simd.c \
crypto/skein.c \
crypto/ripemd160.h \
crypto/sha1.cpp \
crypto/sha1.h \
crypto/sha256.cpp \
crypto/sha256.h \
crypto/sha512.h \
crypto/sph_blake.h \
crypto/sph_bmw.h \
crypto/sph_cubehash.h \
crypto/sph_echo.h \
crypto/sph_groestl.h \
crypto/sph_jh.h \
crypto/sph_keccak.h \
crypto/sph_luffa.h \
crypto/sph_shavite.h \
crypto/sph_simd.h \
crypto/sph_skein.h \
crypto/sph_types.h \
crypto/sha512.cpp \
crypto/sha512.h
# common: shared between dashd, and dash-qt and non-server tools
libbitcoin_common_a_CPPFLAGS = $( AM_CPPFLAGS) $( BITCOIN_INCLUDES)
libbitcoin_common_a_CXXFLAGS = $( AM_CXXFLAGS) $( PIE_FLAGS)
libbitcoin_common_a_SOURCES = \
amount.cpp \
arith_uint256.cpp \
base58.cpp \
chainparams.cpp \
coins.cpp \
compressor.cpp \
consensus/merkle.cpp \
core_read.cpp \
core_write.cpp \
hash.cpp \
key.cpp \
keystore.cpp \
netbase.cpp \
primitives/block.cpp \
primitives/transaction.cpp \
protocol.cpp \
pubkey.cpp \
scheduler.cpp \
script/interpreter.cpp \
script/script.cpp \
script/script_error.cpp \
script/sign.cpp \
script/standard.cpp \
spork.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 = $( AM_CPPFLAGS) $( BITCOIN_INCLUDES)
libbitcoin_util_a_CXXFLAGS = $( AM_CXXFLAGS) $( PIE_FLAGS)
libbitcoin_util_a_SOURCES = \
support/pagelocker.cpp \
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)
i f G L I B C _ B A C K _ C O M P A T
libbitcoin_util_a_SOURCES += compat/glibc_compat.cpp
e n d i f
# cli: shared between dash-cli and dash-qt
libbitcoin_cli_a_CPPFLAGS = $( AM_CPPFLAGS) $( BITCOIN_INCLUDES)
libbitcoin_cli_a_CXXFLAGS = $( AM_CXXFLAGS) $( PIE_FLAGS)
libbitcoin_cli_a_SOURCES = \
rpcclient.cpp \
$( BITCOIN_CORE_H)
nodist_libbitcoin_util_a_SOURCES = $( srcdir) /obj/build.h
#
# bitcoind binary #
dashd_SOURCES = dashd.cpp
dashd_CPPFLAGS = $( AM_CPPFLAGS) $( BITCOIN_INCLUDES)
dashd_CXXFLAGS = $( AM_CXXFLAGS) $( PIE_FLAGS)
dashd_LDFLAGS = $( RELDFLAGS) $( AM_LDFLAGS) $( LIBTOOL_APP_LDFLAGS)
i f T A R G E T _ W I N D O W S
dashd_SOURCES += dashd-res.rc
e n d i f
dashd_LDADD = \
$( LIBBITCOIN_SERVER) \
$( LIBBITCOIN_COMMON) \
$( LIBUNIVALUE) \
$( LIBBITCOIN_UTIL) \
$( LIBBITCOIN_CRYPTO) \
$( LIBLEVELDB) \
$( LIBMEMENV) \
$( LIBSECP256K1)
i f E N A B L E _ Z M Q
dashd_LDADD += $( LIBBITCOIN_ZMQ) $( ZMQ_LIBS)
e n d i f
i f E N A B L E _ W A L L E T
dashd_LDADD += libbitcoin_wallet.a
e n d i f
dashd_LDADD += $( BOOST_LIBS) $( BDB_LIBS) $( SSL_LIBS) $( CRYPTO_LIBS) $( MINIUPNPC_LIBS) $( EVENT_PTHREADS_LIBS) $( EVENT_LIBS)
# dash-cli binary #
dash_cli_SOURCES = dash-cli.cpp
dash_cli_CPPFLAGS = $( AM_CPPFLAGS) $( BITCOIN_INCLUDES) $( EVENT_CFLAGS)
dash_cli_CXXFLAGS = $( AM_CXXFLAGS) $( PIE_FLAGS)
dash_cli_LDFLAGS = $( RELDFLAGS) $( AM_LDFLAGS) $( LIBTOOL_APP_LDFLAGS)
i f T A R G E T _ W I N D O W S
dash_cli_SOURCES += dash-cli-res.rc
e n d i f
dash_cli_LDADD = \
$( LIBBITCOIN_CLI) \
$( LIBUNIVALUE) \
$( LIBBITCOIN_UTIL)
dash_cli_LDADD += $( BOOST_LIBS) $( SSL_LIBS) $( CRYPTO_LIBS) $( EVENT_LIBS)
#
# dash-tx binary #
dash_tx_SOURCES = dash-tx.cpp
dash_tx_CPPFLAGS = $( AM_CPPFLAGS) $( BITCOIN_INCLUDES)
dash_tx_CXXFLAGS = $( AM_CXXFLAGS) $( PIE_FLAGS)
dash_tx_LDFLAGS = $( RELDFLAGS) $( AM_LDFLAGS) $( LIBTOOL_APP_LDFLAGS)
i f T A R G E T _ W I N D O W S
dash_tx_SOURCES += dash-tx-res.rc
e n d i f
dash_tx_LDADD = \
$( LIBUNIVALUE) \
$( LIBBITCOIN_COMMON) \
$( LIBBITCOIN_UTIL) \
$( LIBBITCOIN_CRYPTO) \
$( LIBSECP256K1)
dash_tx_LDADD += $( BOOST_LIBS) $( CRYPTO_LIBS)
#
2017-04-15 09:29:09 +02:00
# dashconsensus library #
2016-04-09 19:17:17 +02:00
i f B U I L D _ B I T C O I N _ L I B S
2017-04-15 09:29:09 +02:00
include_HEADERS = script/dashconsensus.h
libdashconsensus_la_SOURCES = \
2016-04-09 19:17:17 +02:00
crypto/hmac_sha512.cpp \
crypto/ripemd160.cpp \
crypto/sha1.cpp \
crypto/sha256.cpp \
crypto/sha512.cpp \
hash.cpp \
primitives/transaction.cpp \
pubkey.cpp \
2017-04-15 09:29:09 +02:00
script/dashconsensus.cpp \
2016-04-09 19:17:17 +02:00
script/interpreter.cpp \
script/script.cpp \
uint256.cpp \
utilstrencodings.cpp
i f G L I B C _ B A C K _ C O M P A T
2017-04-15 09:29:09 +02:00
libdashconsensus_la_SOURCES += compat/glibc_compat.cpp
2016-04-09 19:17:17 +02:00
e n d i f
2017-04-15 09:29:09 +02:00
libdashconsensus_la_LDFLAGS = $( AM_LDFLAGS) -no-undefined $( RELDFLAGS)
libdashconsensus_la_LIBADD = $( LIBSECP256K1)
libdashconsensus_la_CPPFLAGS = $( AM_CPPFLAGS) -I$( builddir) /obj -I$( srcdir) /secp256k1/include -DBUILD_BITCOIN_INTERNAL
libdashconsensus_la_CXXFLAGS = $( AM_CXXFLAGS) $( PIE_FLAGS)
2016-04-09 19:17:17 +02:00
e n d i f
#
CLEANFILES = leveldb/libleveldb.a leveldb/libmemenv.a
CLEANFILES += *.gcda *.gcno
CLEANFILES += compat/*.gcda compat/*.gcno
CLEANFILES += consensus/*.gcda consensus/*.gcno
CLEANFILES += crypto/*.gcda crypto/*.gcno
CLEANFILES += policy/*.gcda policy/*.gcno
CLEANFILES += primitives/*.gcda primitives/*.gcno
CLEANFILES += script/*.gcda script/*.gcno
CLEANFILES += support/*.gcda support/*.gcno
CLEANFILES += univalue/*.gcda univalue/*.gcno
CLEANFILES += wallet/*.gcda wallet/*.gcno
CLEANFILES += wallet/test/*.gcda wallet/test/*.gcno
CLEANFILES += zmq/*.gcda zmq/*.gcno
DISTCLEANFILES = obj/build.h
EXTRA_DIST = leveldb
clean-local :
-$( MAKE) -C leveldb clean
-$( MAKE) -C secp256k1 clean
-$( MAKE) -C univalue clean
-rm -f leveldb/*/*.gcda leveldb/*/*.gcno leveldb/helpers/memenv/*.gcda 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) $( AM_CXXFLAGS) $( PIE_FLAGS) $( CXXFLAGS) -c -o $@ $<
check-symbols : $( bin_PROGRAMS )
i f G L I B C _ B A C K _ C O M P A T
@echo "Checking glibc back compat..."
$( AM_V_at) READELF = $( READELF) CPPFILT = $( CPPFILT) $( top_srcdir) /contrib/devtools/symbol-check.py < $( bin_PROGRAMS)
e n d i f
check-security : $( bin_PROGRAMS )
i f H A R D E N
@echo "Checking binary security..."
$( AM_V_at) READELF = $( READELF) OBJDUMP = $( OBJDUMP) $( top_srcdir) /contrib/devtools/security-check.py < $( bin_PROGRAMS)
e n d i f
%.pb.cc %.pb.h : %.proto
@test -f $( PROTOC)
$( AM_V_GEN) $( PROTOC) --cpp_out= $( @D) --proto_path= $( abspath $( <D) $<)
i f E N A B L E _ T E S T S
i n c l u d e M a k e f i l e . t e s t . i n c l u d e
e n d i f
i f E N A B L E _ B E N C H
i n c l u d e M a k e f i l e . b e n c h . i n c l u d e
e n d i f
i f E N A B L E _ Q T
i n c l u d e M a k e f i l e . q t . i n c l u d e
e n d i f
i f E N A B L E _ Q T _ T E S T S
i n c l u d e M a k e f i l e . q t t e s t . i n c l u d e
e n d i f