mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-15 12:51:00 +02:00
This is part of the "UTXO Set Statistics" project in Core, which aims to make things like "checking coin supply" faster. This stuff, and related things in coinstats.cpp, have always been broken for Elements in the sense that we consider only explicit outputs and we ignore assets (so everything just gets added together to get a meaningless total). It probably wouldn't be too hard to restrict this to only consider policyAsset, but it's out of scope for a rebase IMO. Also, I think this situation is fine .. I don't understand the motivation for this or why Core is merging this when they refuse to merge an address index .. but I guess we'll see if there are users who care about this data and who care about it being meaningful on Elements. Also, apologies for the big diff -- there were some mechanical changes to deal with CT amounts, but most of the changes related to the difference in how fees are accounted for. While I'm not thrilled with this PR, its functional test is really good! So I think what I eventually came up with is internally consistent.
917 lines
24 KiB
Makefile
917 lines
24 KiB
Makefile
# Copyright (c) 2013-2016 The Bitcoin Core developers
|
|
# Distributed under the MIT software license, see the accompanying
|
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
# Pattern rule to print variables, e.g. make print-top_srcdir
|
|
print-%:
|
|
@echo '$*'='$($*)'
|
|
|
|
DIST_SUBDIRS = secp256k1 univalue
|
|
|
|
AM_LDFLAGS = $(LIBTOOL_LDFLAGS) $(HARDENED_LDFLAGS) $(GPROF_LDFLAGS) $(SANITIZER_LDFLAGS)
|
|
AM_CXXFLAGS = $(DEBUG_CXXFLAGS) $(HARDENED_CXXFLAGS) $(WARN_CXXFLAGS) $(NOWARN_CXXFLAGS) $(ERROR_CXXFLAGS) $(GPROF_CXXFLAGS) $(SANITIZER_CXXFLAGS)
|
|
AM_CPPFLAGS = $(DEBUG_CPPFLAGS) $(HARDENED_CPPFLAGS)
|
|
AM_LIBTOOLFLAGS = --preserve-dup-deps
|
|
PTHREAD_FLAGS = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
|
|
EXTRA_LIBRARIES =
|
|
|
|
if EMBEDDED_UNIVALUE
|
|
LIBUNIVALUE = univalue/libunivalue.la
|
|
|
|
$(LIBUNIVALUE): $(wildcard univalue/lib/*) $(wildcard univalue/include/*)
|
|
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F)
|
|
else
|
|
LIBUNIVALUE = $(UNIVALUE_LIBS)
|
|
endif
|
|
|
|
BITCOIN_INCLUDES=-I$(builddir) -I$(srcdir)/secp256k1/include $(BDB_CPPFLAGS) $(BOOST_CPPFLAGS) $(LEVELDB_CPPFLAGS)
|
|
|
|
BITCOIN_INCLUDES += $(UNIVALUE_CFLAGS)
|
|
|
|
LIBBITCOIN_SERVER=libbitcoin_server.a
|
|
LIBBITCOIN_COMMON=libbitcoin_common.a
|
|
LIBBITCOIN_CONSENSUS=libelements_consensus.a
|
|
LIBBITCOIN_CLI=libbitcoin_cli.a
|
|
LIBBITCOIN_UTIL=libbitcoin_util.a
|
|
LIBBITCOIN_CRYPTO_BASE=crypto/libbitcoin_crypto_base.a
|
|
LIBBITCOINQT=qt/libbitcoinqt.a
|
|
LIBSECP256K1=secp256k1/libsecp256k1.la
|
|
|
|
if ENABLE_ZMQ
|
|
LIBBITCOIN_ZMQ=libbitcoin_zmq.a
|
|
endif
|
|
if BUILD_BITCOIN_LIBS
|
|
LIBBITCOINCONSENSUS=libelementsconsensus.la
|
|
endif
|
|
if ENABLE_WALLET
|
|
LIBBITCOIN_WALLET=libbitcoin_wallet.a
|
|
LIBBITCOIN_WALLET_TOOL=libbitcoin_wallet_tool.a
|
|
endif
|
|
|
|
LIBBITCOIN_CRYPTO= $(LIBBITCOIN_CRYPTO_BASE)
|
|
if ENABLE_SSE41
|
|
LIBBITCOIN_CRYPTO_SSE41 = crypto/libbitcoin_crypto_sse41.a
|
|
LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_SSE41)
|
|
endif
|
|
if ENABLE_AVX2
|
|
LIBBITCOIN_CRYPTO_AVX2 = crypto/libbitcoin_crypto_avx2.a
|
|
LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_AVX2)
|
|
endif
|
|
if ENABLE_SHANI
|
|
LIBBITCOIN_CRYPTO_SHANI = crypto/libbitcoin_crypto_shani.a
|
|
LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_SHANI)
|
|
endif
|
|
|
|
$(LIBSECP256K1): $(wildcard secp256k1/src/*.h) $(wildcard secp256k1/src/*.c) $(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 += \
|
|
$(LIBBITCOIN_CRYPTO) \
|
|
$(LIBBITCOIN_UTIL) \
|
|
$(LIBBITCOIN_COMMON) \
|
|
$(LIBBITCOIN_CONSENSUS) \
|
|
$(LIBBITCOIN_SERVER) \
|
|
$(LIBBITCOIN_CLI) \
|
|
$(LIBBITCOIN_IPC) \
|
|
$(LIBBITCOIN_WALLET) \
|
|
$(LIBBITCOIN_WALLET_TOOL) \
|
|
$(LIBBITCOIN_ZMQ)
|
|
|
|
lib_LTLIBRARIES = $(LIBBITCOINCONSENSUS)
|
|
|
|
bin_PROGRAMS =
|
|
noinst_PROGRAMS =
|
|
TESTS =
|
|
BENCHMARKS =
|
|
|
|
if BUILD_BITCOIND
|
|
bin_PROGRAMS += elementsd
|
|
endif
|
|
|
|
if BUILD_BITCOIN_NODE
|
|
bin_PROGRAMS += elements-node
|
|
endif
|
|
|
|
if BUILD_BITCOIN_CLI
|
|
bin_PROGRAMS += elements-cli
|
|
endif
|
|
|
|
if BUILD_BITCOIN_TX
|
|
bin_PROGRAMS += elements-tx
|
|
endif
|
|
|
|
if ENABLE_WALLET
|
|
if BUILD_BITCOIN_WALLET
|
|
bin_PROGRAMS += elements-wallet
|
|
endif
|
|
endif
|
|
|
|
if BUILD_BITCOIN_UTIL
|
|
bin_PROGRAMS += bitcoin-util
|
|
endif
|
|
|
|
.PHONY: FORCE check-symbols check-security
|
|
# bitcoin core #
|
|
BITCOIN_CORE_H = \
|
|
addrdb.h \
|
|
addrman.h \
|
|
asset.h \
|
|
assetsdir.h \
|
|
attributes.h \
|
|
banman.h \
|
|
base58.h \
|
|
bech32.h \
|
|
blech32.h \
|
|
blind.h \
|
|
blockencodings.h \
|
|
blockfilter.h \
|
|
block_proof.h \
|
|
bloom.h \
|
|
chain.h \
|
|
chainparams.h \
|
|
chainparamsbase.h \
|
|
chainparamsseeds.h \
|
|
checkqueue.h \
|
|
clientversion.h \
|
|
coins.h \
|
|
compat.h \
|
|
compat/assumptions.h \
|
|
compat/byteswap.h \
|
|
compat/cpuid.h \
|
|
compat/endian.h \
|
|
compat/sanity.h \
|
|
compressor.h \
|
|
confidential_validation.h \
|
|
consensus/consensus.h \
|
|
consensus/tx_check.h \
|
|
consensus/tx_verify.h \
|
|
core_io.h \
|
|
core_memusage.h \
|
|
cuckoocache.h \
|
|
dbwrapper.h \
|
|
dynafed.h \
|
|
external_signer.h \
|
|
flatfile.h \
|
|
fs.h \
|
|
httprpc.h \
|
|
httpserver.h \
|
|
i2p.h \
|
|
index/base.h \
|
|
index/blockfilterindex.h \
|
|
index/coinstatsindex.h \
|
|
index/disktxpos.h \
|
|
index/txindex.h \
|
|
indirectmap.h \
|
|
init.h \
|
|
init/common.h \
|
|
interfaces/chain.h \
|
|
interfaces/echo.h \
|
|
interfaces/handler.h \
|
|
interfaces/init.h \
|
|
interfaces/ipc.h \
|
|
interfaces/node.h \
|
|
interfaces/wallet.h \
|
|
issuance.h \
|
|
key.h \
|
|
key_io.h \
|
|
logging.h \
|
|
logging/timer.h \
|
|
mainchainrpc.h \
|
|
mapport.h \
|
|
memusage.h \
|
|
merkleblock.h \
|
|
miner.h \
|
|
net.h \
|
|
net_permissions.h \
|
|
net_processing.h \
|
|
net_types.h \
|
|
netaddress.h \
|
|
netbase.h \
|
|
netmessagemaker.h \
|
|
node/blockstorage.h \
|
|
node/coin.h \
|
|
node/coinstats.h \
|
|
node/context.h \
|
|
node/psbt.h \
|
|
node/transaction.h \
|
|
node/ui_interface.h \
|
|
node/utxo_snapshot.h \
|
|
noui.h \
|
|
outputtype.h \
|
|
pegins.h \
|
|
policy/feerate.h \
|
|
policy/fees.h \
|
|
policy/policy.h \
|
|
policy/rbf.h \
|
|
policy/settings.h \
|
|
pow.h \
|
|
primitives/pak.h \
|
|
protocol.h \
|
|
psbt.h \
|
|
random.h \
|
|
randomenv.h \
|
|
reverse_iterator.h \
|
|
rpc/blockchain.h \
|
|
rpc/client.h \
|
|
rpc/mining.h \
|
|
rpc/net.h \
|
|
rpc/protocol.h \
|
|
rpc/rawtransaction_util.h \
|
|
rpc/register.h \
|
|
rpc/request.h \
|
|
rpc/server.h \
|
|
rpc/util.h \
|
|
scheduler.h \
|
|
script/descriptor.h \
|
|
script/generic.hpp \
|
|
script/keyorigin.h \
|
|
script/pegins.h \
|
|
script/sigcache.h \
|
|
script/sign.h \
|
|
script/signingprovider.h \
|
|
script/standard.h \
|
|
shutdown.h \
|
|
signet.h \
|
|
streams.h \
|
|
support/allocators/secure.h \
|
|
support/allocators/zeroafterfree.h \
|
|
support/cleanse.h \
|
|
support/events.h \
|
|
support/lockedpool.h \
|
|
sync.h \
|
|
threadinterrupt.h \
|
|
threadsafety.h \
|
|
timedata.h \
|
|
torcontrol.h \
|
|
txdb.h \
|
|
txmempool.h \
|
|
txorphanage.h \
|
|
txrequest.h \
|
|
undo.h \
|
|
util/asmap.h \
|
|
util/bip32.h \
|
|
util/bytevectorhash.h \
|
|
util/check.h \
|
|
util/epochguard.h \
|
|
util/error.h \
|
|
util/fees.h \
|
|
util/getuniquepath.h \
|
|
util/golombrice.h \
|
|
util/hasher.h \
|
|
util/macros.h \
|
|
util/message.h \
|
|
util/moneystr.h \
|
|
util/rbf.h \
|
|
util/readwritefile.h \
|
|
util/settings.h \
|
|
util/sock.h \
|
|
util/spanparsing.h \
|
|
util/string.h \
|
|
util/system.h \
|
|
util/threadnames.h \
|
|
util/time.h \
|
|
util/tokenpipe.h \
|
|
util/trace.h \
|
|
util/translation.h \
|
|
util/ui_change_type.h \
|
|
util/url.h \
|
|
util/vector.h \
|
|
validation.h \
|
|
validationinterface.h \
|
|
versionbits.h \
|
|
versionbitsinfo.h \
|
|
wallet/bdb.h \
|
|
wallet/coincontrol.h \
|
|
wallet/coinselection.h \
|
|
wallet/context.h \
|
|
wallet/crypter.h \
|
|
wallet/db.h \
|
|
wallet/dump.h \
|
|
wallet/external_signer_scriptpubkeyman.h \
|
|
wallet/feebumper.h \
|
|
wallet/fees.h \
|
|
wallet/ismine.h \
|
|
wallet/load.h \
|
|
wallet/rpcwallet.h \
|
|
wallet/salvage.h \
|
|
wallet/scriptpubkeyman.h \
|
|
wallet/sqlite.h \
|
|
wallet/wallet.h \
|
|
wallet/walletdb.h \
|
|
wallet/wallettool.h \
|
|
wallet/walletutil.h \
|
|
walletinitinterface.h \
|
|
warnings.h \
|
|
zmq/zmqabstractnotifier.h \
|
|
zmq/zmqnotificationinterface.h \
|
|
zmq/zmqpublishnotifier.h \
|
|
zmq/zmqrpc.h \
|
|
zmq/zmqutil.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
|
|
|
|
ipc/capnp/libbitcoin_ipc_a-ipc.$(OBJEXT): $(libbitcoin_ipc_mpgen_input:=.h)
|
|
|
|
# server: shared between bitcoind and bitcoin-qt
|
|
# Contains code accessing mempool and chain state that is meant to be separated
|
|
# from wallet and gui code (see node/README.md). Shared code should go in
|
|
# libbitcoin_common or libbitcoin_util libraries, instead.
|
|
libbitcoin_server_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(MINIUPNPC_CPPFLAGS) $(NATPMP_CPPFLAGS) $(EVENT_CFLAGS) $(EVENT_PTHREADS_CFLAGS)
|
|
libbitcoin_server_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
libbitcoin_server_a_SOURCES = \
|
|
addrdb.cpp \
|
|
addrman.cpp \
|
|
assetsdir.cpp \
|
|
banman.cpp \
|
|
blockencodings.cpp \
|
|
blockfilter.cpp \
|
|
block_proof.cpp \
|
|
chain.cpp \
|
|
confidential_validation.cpp \
|
|
consensus/tx_verify.cpp \
|
|
dynafed.cpp \
|
|
dbwrapper.cpp \
|
|
flatfile.cpp \
|
|
httprpc.cpp \
|
|
httpserver.cpp \
|
|
i2p.cpp \
|
|
index/base.cpp \
|
|
index/blockfilterindex.cpp \
|
|
index/coinstatsindex.cpp \
|
|
index/txindex.cpp \
|
|
init.cpp \
|
|
mainchainrpc.cpp \
|
|
mapport.cpp \
|
|
miner.cpp \
|
|
net.cpp \
|
|
net_processing.cpp \
|
|
node/blockstorage.cpp \
|
|
node/coin.cpp \
|
|
node/coinstats.cpp \
|
|
node/context.cpp \
|
|
node/interfaces.cpp \
|
|
node/psbt.cpp \
|
|
node/transaction.cpp \
|
|
node/ui_interface.cpp \
|
|
noui.cpp \
|
|
pegins.cpp \
|
|
policy/fees.cpp \
|
|
policy/rbf.cpp \
|
|
policy/settings.cpp \
|
|
pow.cpp \
|
|
primitives/pak.cpp \
|
|
rest.cpp \
|
|
rpc/blockchain.cpp \
|
|
rpc/mining.cpp \
|
|
rpc/misc.cpp \
|
|
rpc/net.cpp \
|
|
rpc/rawtransaction.cpp \
|
|
rpc/server.cpp \
|
|
script/sigcache.cpp \
|
|
shutdown.cpp \
|
|
signet.cpp \
|
|
timedata.cpp \
|
|
torcontrol.cpp \
|
|
txdb.cpp \
|
|
txmempool.cpp \
|
|
txorphanage.cpp \
|
|
txrequest.cpp \
|
|
validation.cpp \
|
|
validationinterface.cpp \
|
|
versionbits.cpp \
|
|
$(BITCOIN_CORE_H)
|
|
|
|
if ENABLE_WALLET
|
|
libbitcoin_server_a_SOURCES += wallet/init.cpp
|
|
endif
|
|
if !ENABLE_WALLET
|
|
libbitcoin_server_a_SOURCES += dummywallet.cpp
|
|
endif
|
|
|
|
if ENABLE_ZMQ
|
|
libbitcoin_zmq_a_CPPFLAGS = $(AM_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 \
|
|
zmq/zmqrpc.cpp \
|
|
zmq/zmqutil.cpp
|
|
endif
|
|
|
|
|
|
# wallet: shared between bitcoind and bitcoin-qt, but only linked
|
|
# when wallet enabled
|
|
libbitcoin_wallet_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(SQLITE_CFLAGS)
|
|
libbitcoin_wallet_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
libbitcoin_wallet_a_SOURCES = \
|
|
assetsdir.cpp \
|
|
wallet/coincontrol.cpp \
|
|
wallet/context.cpp \
|
|
wallet/crypter.cpp \
|
|
wallet/db.cpp \
|
|
wallet/dump.cpp \
|
|
wallet/external_signer_scriptpubkeyman.cpp \
|
|
wallet/feebumper.cpp \
|
|
wallet/fees.cpp \
|
|
wallet/interfaces.cpp \
|
|
wallet/load.cpp \
|
|
wallet/rpcdump.cpp \
|
|
wallet/rpcwallet.cpp \
|
|
wallet/scriptpubkeyman.cpp \
|
|
wallet/wallet.cpp \
|
|
wallet/walletdb.cpp \
|
|
wallet/walletutil.cpp \
|
|
wallet/coinselection.cpp \
|
|
primitives/bitcoin/merkleblock.cpp \
|
|
primitives/bitcoin/block.cpp \
|
|
$(libbitcoin_common_a_SOURCES) \
|
|
$(libbitcoin_server_a_SOURCES) \
|
|
$(BITCOIN_CORE_H)
|
|
|
|
if USE_SQLITE
|
|
libbitcoin_wallet_a_SOURCES += wallet/sqlite.cpp
|
|
endif
|
|
if USE_BDB
|
|
libbitcoin_wallet_a_SOURCES += wallet/bdb.cpp wallet/salvage.cpp
|
|
endif
|
|
|
|
libbitcoin_wallet_tool_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
|
libbitcoin_wallet_tool_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
libbitcoin_wallet_tool_a_SOURCES = \
|
|
wallet/wallettool.cpp \
|
|
$(BITCOIN_CORE_H)
|
|
|
|
# crypto primitives library
|
|
crypto_libbitcoin_crypto_base_a_CPPFLAGS = $(AM_CPPFLAGS)
|
|
crypto_libbitcoin_crypto_base_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
crypto_libbitcoin_crypto_base_a_SOURCES = \
|
|
crypto/aes.cpp \
|
|
crypto/aes.h \
|
|
crypto/chacha_poly_aead.h \
|
|
crypto/chacha_poly_aead.cpp \
|
|
crypto/chacha20.h \
|
|
crypto/chacha20.cpp \
|
|
crypto/common.h \
|
|
crypto/hkdf_sha256_32.cpp \
|
|
crypto/hkdf_sha256_32.h \
|
|
crypto/hmac_sha256.cpp \
|
|
crypto/hmac_sha256.h \
|
|
crypto/hmac_sha512.cpp \
|
|
crypto/hmac_sha512.h \
|
|
crypto/poly1305.h \
|
|
crypto/poly1305.cpp \
|
|
crypto/muhash.h \
|
|
crypto/muhash.cpp \
|
|
crypto/ripemd160.cpp \
|
|
crypto/ripemd160.h \
|
|
crypto/sha1.cpp \
|
|
crypto/sha1.h \
|
|
crypto/sha256.cpp \
|
|
crypto/sha256.h \
|
|
crypto/sha3.cpp \
|
|
crypto/sha3.h \
|
|
crypto/sha512.cpp \
|
|
crypto/sha512.h \
|
|
crypto/siphash.cpp \
|
|
crypto/siphash.h
|
|
|
|
if USE_ASM
|
|
crypto_libbitcoin_crypto_base_a_SOURCES += crypto/sha256_sse4.cpp
|
|
endif
|
|
|
|
crypto_libbitcoin_crypto_sse41_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
crypto_libbitcoin_crypto_sse41_a_CPPFLAGS = $(AM_CPPFLAGS)
|
|
crypto_libbitcoin_crypto_sse41_a_CXXFLAGS += $(SSE41_CXXFLAGS)
|
|
crypto_libbitcoin_crypto_sse41_a_CPPFLAGS += -DENABLE_SSE41
|
|
crypto_libbitcoin_crypto_sse41_a_SOURCES = crypto/sha256_sse41.cpp
|
|
|
|
crypto_libbitcoin_crypto_avx2_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
crypto_libbitcoin_crypto_avx2_a_CPPFLAGS = $(AM_CPPFLAGS)
|
|
crypto_libbitcoin_crypto_avx2_a_CXXFLAGS += $(AVX2_CXXFLAGS)
|
|
crypto_libbitcoin_crypto_avx2_a_CPPFLAGS += -DENABLE_AVX2
|
|
crypto_libbitcoin_crypto_avx2_a_SOURCES = crypto/sha256_avx2.cpp
|
|
|
|
crypto_libbitcoin_crypto_shani_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
crypto_libbitcoin_crypto_shani_a_CPPFLAGS = $(AM_CPPFLAGS)
|
|
crypto_libbitcoin_crypto_shani_a_CXXFLAGS += $(SHANI_CXXFLAGS)
|
|
crypto_libbitcoin_crypto_shani_a_CPPFLAGS += -DENABLE_SHANI
|
|
crypto_libbitcoin_crypto_shani_a_SOURCES = crypto/sha256_shani.cpp
|
|
|
|
# consensus: shared between all executables that validate any consensus rules.
|
|
libelements_consensus_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
|
libelements_consensus_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
libelements_consensus_a_SOURCES = \
|
|
amount.h \
|
|
arith_uint256.cpp \
|
|
arith_uint256.h \
|
|
asset.cpp \
|
|
consensus/merkle.cpp \
|
|
consensus/merkle.h \
|
|
consensus/params.h \
|
|
consensus/tx_check.cpp \
|
|
consensus/validation.h \
|
|
hash.cpp \
|
|
hash.h \
|
|
prevector.h \
|
|
primitives/block.cpp \
|
|
primitives/block.h \
|
|
primitives/confidential.cpp \
|
|
primitives/confidential.h \
|
|
primitives/txwitness.cpp \
|
|
primitives/txwitness.h \
|
|
primitives/transaction.cpp \
|
|
primitives/transaction.h \
|
|
primitives/bitcoin/block.cpp \
|
|
primitives/bitcoin/block.h \
|
|
primitives/bitcoin/merkleblock.cpp \
|
|
primitives/bitcoin/merkleblock.h \
|
|
primitives/bitcoin/transaction.cpp \
|
|
primitives/bitcoin/transaction.h \
|
|
pubkey.cpp \
|
|
pubkey.h \
|
|
script/bitcoinconsensus.cpp \
|
|
script/interpreter.cpp \
|
|
script/interpreter.h \
|
|
script/script.cpp \
|
|
script/script.h \
|
|
script/script_error.cpp \
|
|
script/script_error.h \
|
|
serialize.h \
|
|
span.h \
|
|
tinyformat.h \
|
|
uint256.cpp \
|
|
uint256.h \
|
|
util/strencodings.cpp \
|
|
util/strencodings.h \
|
|
version.h
|
|
|
|
# common: shared between bitcoind, and bitcoin-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 = \
|
|
base58.cpp \
|
|
bech32.cpp \
|
|
blech32.cpp \
|
|
blind.cpp \
|
|
block_proof.cpp \
|
|
bloom.cpp \
|
|
chainparams.cpp \
|
|
coins.cpp \
|
|
compressor.cpp \
|
|
core_read.cpp \
|
|
core_write.cpp \
|
|
external_signer.cpp \
|
|
init/common.cpp \
|
|
issuance.cpp \
|
|
key.cpp \
|
|
key_io.cpp \
|
|
merkleblock.cpp \
|
|
netaddress.cpp \
|
|
netbase.cpp \
|
|
net_permissions.cpp \
|
|
outputtype.cpp \
|
|
policy/feerate.cpp \
|
|
policy/policy.cpp \
|
|
protocol.cpp \
|
|
psbt.cpp \
|
|
rpc/rawtransaction_util.cpp \
|
|
rpc/external_signer.cpp \
|
|
rpc/util.cpp \
|
|
scheduler.cpp \
|
|
script/descriptor.cpp \
|
|
script/pegins.cpp \
|
|
script/sign.cpp \
|
|
script/signingprovider.cpp \
|
|
script/standard.cpp \
|
|
versionbitsinfo.cpp \
|
|
warnings.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/lockedpool.cpp \
|
|
chainparamsbase.cpp \
|
|
clientversion.cpp \
|
|
compat/glibcxx_sanity.cpp \
|
|
compat/strnlen.cpp \
|
|
fs.cpp \
|
|
interfaces/echo.cpp \
|
|
interfaces/handler.cpp \
|
|
interfaces/init.cpp \
|
|
logging.cpp \
|
|
random.cpp \
|
|
randomenv.cpp \
|
|
rpc/request.cpp \
|
|
support/cleanse.cpp \
|
|
sync.cpp \
|
|
threadinterrupt.cpp \
|
|
util/asmap.cpp \
|
|
util/bip32.cpp \
|
|
util/bytevectorhash.cpp \
|
|
util/error.cpp \
|
|
util/fees.cpp \
|
|
util/getuniquepath.cpp \
|
|
util/hasher.cpp \
|
|
util/sock.cpp \
|
|
util/system.cpp \
|
|
util/message.cpp \
|
|
util/moneystr.cpp \
|
|
util/rbf.cpp \
|
|
util/readwritefile.cpp \
|
|
util/settings.cpp \
|
|
util/threadnames.cpp \
|
|
util/spanparsing.cpp \
|
|
util/strencodings.cpp \
|
|
util/string.cpp \
|
|
util/time.cpp \
|
|
util/tokenpipe.cpp \
|
|
$(BITCOIN_CORE_H)
|
|
|
|
if USE_LIBEVENT
|
|
libbitcoin_util_a_SOURCES += util/url.cpp
|
|
endif
|
|
|
|
if GLIBC_BACK_COMPAT
|
|
libbitcoin_util_a_SOURCES += compat/glibc_compat.cpp
|
|
AM_LDFLAGS += $(COMPAT_LDFLAGS)
|
|
endif
|
|
|
|
# cli: shared between bitcoin-cli and bitcoin-qt
|
|
libbitcoin_cli_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
|
libbitcoin_cli_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
libbitcoin_cli_a_SOURCES = \
|
|
compat/stdin.h \
|
|
compat/stdin.cpp \
|
|
rpc/client.cpp \
|
|
$(BITCOIN_CORE_H)
|
|
|
|
nodist_libbitcoin_util_a_SOURCES = $(srcdir)/obj/build.h
|
|
#
|
|
|
|
# bitcoind & bitcoin-node binaries #
|
|
elements_daemon_sources = bitcoind.cpp
|
|
elements_bin_cppflags = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
|
elements_bin_cxxflags = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
elements_bin_ldflags = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) $(PTHREAD_FLAGS)
|
|
|
|
if TARGET_WINDOWS
|
|
elements_daemon_sources += bitcoind-res.rc
|
|
endif
|
|
|
|
elements_bin_ldadd = \
|
|
$(LIBBITCOIN_WALLET) \
|
|
$(LIBBITCOIN_COMMON) \
|
|
$(LIBBITCOIN_UTIL) \
|
|
$(LIBUNIVALUE) \
|
|
$(LIBBITCOIN_ZMQ) \
|
|
$(LIBBITCOIN_CONSENSUS) \
|
|
$(LIBBITCOIN_CRYPTO) \
|
|
$(LIBLEVELDB) \
|
|
$(LIBLEVELDB_SSE42) \
|
|
$(LIBMEMENV) \
|
|
$(LIBSECP256K1)
|
|
|
|
elements_bin_ldadd += $(BOOST_LIBS) $(BDB_LIBS) $(MINIUPNPC_LIBS) $(NATPMP_LIBS) $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS) $(ZMQ_LIBS) $(SQLITE_LIBS)
|
|
|
|
elementsd_SOURCES = $(elements_daemon_sources) init/bitcoind.cpp
|
|
elementsd_CPPFLAGS = $(elements_bin_cppflags)
|
|
elementsd_CXXFLAGS = $(elements_bin_cxxflags)
|
|
elementsd_LDFLAGS = $(elements_bin_ldflags)
|
|
elementsd_LDADD = $(LIBBITCOIN_SERVER) $(elements_bin_ldadd)
|
|
|
|
elements_node_SOURCES = $(elements_daemon_sources) init/bitcoin-node.cpp
|
|
elements_node_CPPFLAGS = $(elements_bin_cppflags)
|
|
elements_node_CXXFLAGS = $(elements_bin_cxxflags)
|
|
elements_node_LDFLAGS = $(elements_bin_ldflags)
|
|
elements_node_LDADD = $(LIBBITCOIN_SERVER) $(elements_bin_ldadd) $(LIBBITCOIN_IPC) $(LIBMULTIPROCESS_LIBS)
|
|
|
|
# bitcoin-cli binary #
|
|
elements_cli_SOURCES = bitcoin-cli.cpp
|
|
elements_cli_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(EVENT_CFLAGS)
|
|
elements_cli_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
elements_cli_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) $(PTHREAD_FLAGS)
|
|
|
|
if TARGET_WINDOWS
|
|
elements_cli_SOURCES += bitcoin-cli-res.rc
|
|
endif
|
|
|
|
elements_cli_LDADD = \
|
|
$(LIBBITCOIN_CLI) \
|
|
$(LIBUNIVALUE) \
|
|
$(LIBBITCOIN_UTIL) \
|
|
$(LIBBITCOIN_CRYPTO)
|
|
|
|
elements_cli_LDADD += $(BOOST_LIBS) $(EVENT_LIBS)
|
|
#
|
|
|
|
# bitcoin-tx binary #
|
|
elements_tx_SOURCES = bitcoin-tx.cpp
|
|
elements_tx_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
|
elements_tx_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
elements_tx_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) $(PTHREAD_FLAGS)
|
|
|
|
if TARGET_WINDOWS
|
|
elements_tx_SOURCES += bitcoin-tx-res.rc
|
|
endif
|
|
|
|
elements_tx_LDADD = \
|
|
$(LIBUNIVALUE) \
|
|
$(LIBBITCOIN_COMMON) \
|
|
$(LIBBITCOIN_UTIL) \
|
|
$(LIBBITCOIN_CONSENSUS) \
|
|
$(LIBBITCOIN_CRYPTO) \
|
|
$(LIBSECP256K1)
|
|
|
|
elements_tx_LDADD += $(BOOST_LIBS)
|
|
#
|
|
|
|
# bitcoin-wallet binary #
|
|
elements_wallet_SOURCES = bitcoin-wallet.cpp
|
|
elements_wallet_CPPFLAGS = $(elements_bin_cppflags)
|
|
elements_wallet_CXXFLAGS = $(elements_bin_cxxflags)
|
|
elements_wallet_LDFLAGS = $(elements_bin_ldflags)
|
|
elements_wallet_LDADD = $(LIBBITCOIN_WALLET_TOOL) $(elements_bin_ldadd)
|
|
|
|
if TARGET_WINDOWS
|
|
elements_wallet_SOURCES += bitcoin-wallet-res.rc
|
|
endif
|
|
#
|
|
|
|
# bitcoin-util binary #
|
|
bitcoin_util_SOURCES = bitcoin-util.cpp
|
|
bitcoin_util_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
|
bitcoin_util_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
bitcoin_util_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) $(PTHREAD_FLAGS)
|
|
|
|
if TARGET_WINDOWS
|
|
bitcoin_util_SOURCES += bitcoin-util-res.rc
|
|
endif
|
|
|
|
bitcoin_util_LDADD = \
|
|
$(LIBBITCOIN_COMMON) \
|
|
$(LIBBITCOIN_UTIL) \
|
|
$(LIBUNIVALUE) \
|
|
$(LIBBITCOIN_CONSENSUS) \
|
|
$(LIBBITCOIN_CRYPTO) \
|
|
$(LIBSECP256K1)
|
|
|
|
bitcoin_util_LDADD += $(BOOST_LIBS)
|
|
#
|
|
|
|
# bitcoinconsensus library #
|
|
if BUILD_BITCOIN_LIBS
|
|
include_HEADERS = script/bitcoinconsensus.h
|
|
libelementsconsensus_la_SOURCES = support/cleanse.cpp $(crypto_libbitcoin_crypto_base_a_SOURCES) $(libelements_consensus_a_SOURCES)
|
|
|
|
if GLIBC_BACK_COMPAT
|
|
libelementsconsensus_la_SOURCES += compat/glibc_compat.cpp
|
|
endif
|
|
|
|
libelementsconsensus_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined $(RELDFLAGS)
|
|
libelementsconsensus_la_LIBADD = $(LIBSECP256K1)
|
|
libelementsconsensus_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(builddir)/obj -I$(srcdir)/secp256k1/include -DBUILD_BITCOIN_INTERNAL
|
|
libelementsconsensus_la_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
|
|
endif
|
|
#
|
|
|
|
CTAES_DIST = crypto/ctaes/bench.c
|
|
CTAES_DIST += crypto/ctaes/ctaes.c
|
|
CTAES_DIST += crypto/ctaes/ctaes.h
|
|
CTAES_DIST += crypto/ctaes/README.md
|
|
CTAES_DIST += crypto/ctaes/test.c
|
|
|
|
CLEANFILES = $(EXTRA_LIBRARIES)
|
|
|
|
CLEANFILES += *.gcda *.gcno
|
|
CLEANFILES += compat/*.gcda compat/*.gcno
|
|
CLEANFILES += consensus/*.gcda consensus/*.gcno
|
|
CLEANFILES += crc32c/src/*.gcda crc32c/src/*.gcno
|
|
CLEANFILES += crypto/*.gcda crypto/*.gcno
|
|
CLEANFILES += index/*.gcda index/*.gcno
|
|
CLEANFILES += interfaces/*.gcda interfaces/*.gcno
|
|
CLEANFILES += node/*.gcda node/*.gcno
|
|
CLEANFILES += policy/*.gcda policy/*.gcno
|
|
CLEANFILES += primitives/*.gcda primitives/*.gcno
|
|
CLEANFILES += rpc/*.gcda rpc/*.gcno
|
|
CLEANFILES += script/*.gcda script/*.gcno
|
|
CLEANFILES += support/*.gcda support/*.gcno
|
|
CLEANFILES += univalue/*.gcda univalue/*.gcno
|
|
CLEANFILES += util/*.gcda util/*.gcno
|
|
CLEANFILES += wallet/*.gcda wallet/*.gcno
|
|
CLEANFILES += wallet/test/*.gcda wallet/test/*.gcno
|
|
CLEANFILES += zmq/*.gcda zmq/*.gcno
|
|
CLEANFILES += obj/build.h
|
|
|
|
EXTRA_DIST = $(CTAES_DIST)
|
|
|
|
|
|
config/bitcoin-config.h: config/stamp-h1
|
|
@$(MAKE) -C $(top_builddir) $(subdir)/$(@)
|
|
config/stamp-h1: $(top_srcdir)/$(subdir)/config/bitcoin-config.h.in $(top_builddir)/config.status
|
|
$(AM_V_at)$(MAKE) -C $(top_builddir) $(subdir)/$(@)
|
|
$(top_srcdir)/$(subdir)/config/bitcoin-config.h.in: $(am__configure_deps)
|
|
$(AM_V_at)$(MAKE) -C $(top_srcdir) $(subdir)/config/bitcoin-config.h.in
|
|
|
|
clean-local:
|
|
-$(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
|
|
-rm -rf test/__pycache__
|
|
|
|
.rc.o:
|
|
@test -f $(WINDRES)
|
|
## FIXME: How to get the appropriate modulename_CPPFLAGS in here?
|
|
$(AM_V_GEN) $(WINDRES) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CPPFLAGS) -DWINDRES_PREPROC -i $< -o $@
|
|
|
|
check-symbols: $(bin_PROGRAMS)
|
|
if TARGET_DARWIN
|
|
@echo "Checking macOS dynamic libraries..."
|
|
$(AM_V_at) OTOOL=$(OTOOL) $(PYTHON) $(top_srcdir)/contrib/devtools/symbol-check.py $(bin_PROGRAMS)
|
|
endif
|
|
|
|
if TARGET_WINDOWS
|
|
@echo "Checking Windows dynamic libraries..."
|
|
$(AM_V_at) OBJDUMP=$(OBJDUMP) $(PYTHON) $(top_srcdir)/contrib/devtools/symbol-check.py $(bin_PROGRAMS)
|
|
endif
|
|
|
|
if GLIBC_BACK_COMPAT
|
|
@echo "Checking glibc back compat..."
|
|
$(AM_V_at) CPPFILT=$(CPPFILT) $(PYTHON) $(top_srcdir)/contrib/devtools/symbol-check.py $(bin_PROGRAMS)
|
|
endif
|
|
|
|
check-security: $(bin_PROGRAMS)
|
|
if HARDEN
|
|
@echo "Checking binary security..."
|
|
$(AM_V_at) OBJDUMP=$(OBJDUMP) OTOOL=$(OTOOL) $(PYTHON) $(top_srcdir)/contrib/devtools/security-check.py $(bin_PROGRAMS)
|
|
endif
|
|
|
|
libbitcoin_ipc_mpgen_input = \
|
|
ipc/capnp/echo.capnp \
|
|
ipc/capnp/init.capnp
|
|
EXTRA_DIST += $(libbitcoin_ipc_mpgen_input)
|
|
%.capnp:
|
|
|
|
if BUILD_MULTIPROCESS
|
|
LIBBITCOIN_IPC=libbitcoin_ipc.a
|
|
libbitcoin_ipc_a_SOURCES = \
|
|
ipc/capnp/init-types.h \
|
|
ipc/capnp/protocol.cpp \
|
|
ipc/capnp/protocol.h \
|
|
ipc/exception.h \
|
|
ipc/interfaces.cpp \
|
|
ipc/process.cpp \
|
|
ipc/process.h \
|
|
ipc/protocol.h
|
|
libbitcoin_ipc_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
|
libbitcoin_ipc_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) $(LIBMULTIPROCESS_CFLAGS)
|
|
|
|
include $(MPGEN_PREFIX)/include/mpgen.mk
|
|
libbitcoin_ipc_mpgen_output = \
|
|
$(libbitcoin_ipc_mpgen_input:=.c++) \
|
|
$(libbitcoin_ipc_mpgen_input:=.h) \
|
|
$(libbitcoin_ipc_mpgen_input:=.proxy-client.c++) \
|
|
$(libbitcoin_ipc_mpgen_input:=.proxy-server.c++) \
|
|
$(libbitcoin_ipc_mpgen_input:=.proxy-types.c++) \
|
|
$(libbitcoin_ipc_mpgen_input:=.proxy-types.h) \
|
|
$(libbitcoin_ipc_mpgen_input:=.proxy.h)
|
|
nodist_libbitcoin_ipc_a_SOURCES = $(libbitcoin_ipc_mpgen_output)
|
|
CLEANFILES += $(libbitcoin_ipc_mpgen_output)
|
|
endif
|
|
|
|
if EMBEDDED_LEVELDB
|
|
include Makefile.crc32c.include
|
|
include Makefile.leveldb.include
|
|
endif
|
|
|
|
include Makefile.test_util.include
|
|
include Makefile.test_fuzz.include
|
|
|
|
if ENABLE_TESTS
|
|
include Makefile.test.include
|
|
endif
|
|
|
|
if ENABLE_BENCH
|
|
include Makefile.bench.include
|
|
endif
|
|
|
|
if ENABLE_QT
|
|
include Makefile.qt.include
|
|
endif
|
|
|
|
if ENABLE_QT_TESTS
|
|
include Makefile.qttest.include
|
|
endif
|