mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-02-13 00:48:59 +00:00
29029df5c700e6940c712028303761d91ae15847 [doc] v3 signaling in mempool-replacements.md (glozow) e643ea795e4b6fea4a6bbb3d72870ee6a4c836b1 [fuzz] v3 transactions and sigop-adjusted vsize (glozow) 1fd16b5c62f54c7f4c60122acd65d852f63d1e8b [functional test] v3 transaction submission (glozow) 27c8786ba918a42c860e6a50eaee9fdf56d7c646 test framework: Add and use option for tx-version in MiniWallet methods (MarcoFalke) 9a1fea55b29fe025355b06b45e3d77d192acc635 [policy/validation] allow v3 transactions with certain restrictions (glozow) eb8d5a2e7d939dd3ee683486e98702079e0dfcc0 [policy] add v3 policy rules (glozow) 9a29d470fbb62bbb27d517efeafe46ff03c25f54 [rpc] return full string for package_msg and package-error (glozow) 158623b8e0726dff7eae4288138f1710e727db9c [refactor] change Workspace::m_conflicts and adjacent funcs/structs to use Txid (glozow) Pull request description: See #27463 for overall package relay tracking. Delving Bitcoin discussion thread: https://delvingbitcoin.org/t/v3-transaction-policy-for-anti-pinning/340 Delving Bitcoin discussion for LN usage: https://delvingbitcoin.org/t/lightning-transactions-with-v3-and-ephemeral-anchors/418 Rationale: - There are various pinning problems with RBF and our general ancestor/descendant limits. These policies help mitigate many pinning attacks and make package RBF feasible (see #28984 which implements package RBF on top of this). I would focus the most here on Rule 3 pinning. [1][2] - Switching to a cluster-based mempool (see #27677 and #28676) requires the removal of CPFP carve out, which applications depend on. V3 + package RBF + ephemeral anchors + 1-parent-1-child package relay provides an intermediate solution. V3 policy is for "Priority Transactions." [3][4] It allows users to opt in to more restrictive topological limits for shared transactions, in exchange for the more robust fee-bumping abilities that offers. Even though we don't have cluster limits, we are able to treat these transactions as having as having a maximum cluster size of 2. Immediate benefits: - You can presign a transaction with 0 fees (not just 1sat/vB!) and add a fee-bump later. - Rule 3 pinning is reduced by a significant amount, since the attacker can only attach a maximum of 1000vB to your shared transaction. This also enables some other cool things (again see #27463 for overall roadmap): - Ephemeral Anchors - Package RBF for these 1-parent-1-child packages. That means e.g. a commitment tx + child can replace another commitment tx using the child's fees. - We can transition to a "single anchor" universe without worrying about package limit pinning. So current users of CPFP carve out would have something else to use. - We can switch to a cluster-based mempool [5] (#27677 #28676), which removes CPFP carve out [6]. [1]: Original mailing list post and discussion about RBF pinning problems https://gist.github.com/glozow/25d9662c52453bd08b4b4b1d3783b9ff, https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-January/019817.html [2]: A FAQ is "we need this for cluster mempool, but is this still necessary afterwards?" There are some pinning issues that are fixed here and not fully fixed in cluster mempool, so we will still want this or something similar afterward. [3]: Mailing list post for v3 https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-September/020937.html [4]: Original PR #25038 also contains a lot of the discussion [5]: https://delvingbitcoin.org/t/an-overview-of-the-cluster-mempool-proposal/393/7 [6]: https://delvingbitcoin.org/t/an-overview-of-the-cluster-mempool-proposal/393#the-cpfp-carveout-rule-can-no-longer-be-supported-12 ACKs for top commit: sdaftuar: ACK 29029df5c700e6940c712028303761d91ae15847 achow101: ACK 29029df5c700e6940c712028303761d91ae15847 instagibbs: ACK 29029df5c700e6940c712028303761d91ae15847 modulo that Tree-SHA512: 9664b078890cfdca2a146439f8835c9d9ab483f43b30af8c7cd6962f09aa557fb1ce7689d5e130a2ec142235dbc8f21213881baa75241c5881660f9008d68450
1166 lines
31 KiB
Makefile
1166 lines
31 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-%: FORCE
|
|
@echo '$*'='$($*)'
|
|
|
|
DIST_SUBDIRS = secp256k1
|
|
|
|
AM_LDFLAGS = $(LIBTOOL_LDFLAGS) $(HARDENED_LDFLAGS) $(GPROF_LDFLAGS) $(SANITIZER_LDFLAGS) $(CORE_LDFLAGS)
|
|
AM_CXXFLAGS = $(CORE_CXXFLAGS) $(DEBUG_CXXFLAGS) $(HARDENED_CXXFLAGS) $(WARN_CXXFLAGS) $(NOWARN_CXXFLAGS) $(ERROR_CXXFLAGS) $(GPROF_CXXFLAGS) $(SANITIZER_CXXFLAGS)
|
|
AM_CPPFLAGS = $(DEBUG_CPPFLAGS) $(HARDENED_CPPFLAGS) $(CORE_CPPFLAGS)
|
|
AM_LIBTOOLFLAGS = --preserve-dup-deps
|
|
PTHREAD_FLAGS = $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
|
|
EXTRA_LIBRARIES =
|
|
|
|
lib_LTLIBRARIES =
|
|
noinst_LTLIBRARIES =
|
|
|
|
bin_PROGRAMS =
|
|
noinst_PROGRAMS =
|
|
check_PROGRAMS =
|
|
TESTS =
|
|
BENCHMARKS =
|
|
|
|
BITCOIN_INCLUDES=-I$(builddir) -I$(srcdir)/$(MINISKETCH_INCLUDE_DIR_INT) -I$(srcdir)/secp256k1/include -I$(srcdir)/$(UNIVALUE_INCLUDE_DIR_INT)
|
|
|
|
LIBBITCOIN_NODE=libbitcoin_node.a
|
|
LIBBITCOIN_COMMON=libbitcoin_common.a
|
|
LIBBITCOIN_CONSENSUS=libbitcoin_consensus.a
|
|
LIBBITCOIN_CLI=libbitcoin_cli.a
|
|
LIBBITCOIN_UTIL=libbitcoin_util.a
|
|
LIBBITCOIN_CRYPTO_BASE=crypto/libbitcoin_crypto_base.la
|
|
LIBBITCOINQT=qt/libbitcoinqt.a
|
|
LIBSECP256K1=secp256k1/libsecp256k1.la
|
|
|
|
if ENABLE_ZMQ
|
|
LIBBITCOIN_ZMQ=libbitcoin_zmq.a
|
|
endif
|
|
if BUILD_BITCOIN_LIBS
|
|
LIBBITCOINCONSENSUS=libbitcoinconsensus.la
|
|
endif
|
|
if BUILD_BITCOIN_KERNEL_LIB
|
|
LIBBITCOINKERNEL=libbitcoinkernel.la
|
|
endif
|
|
if ENABLE_WALLET
|
|
LIBBITCOIN_WALLET=libbitcoin_wallet.a
|
|
LIBBITCOIN_WALLET_TOOL=libbitcoin_wallet_tool.a
|
|
endif
|
|
|
|
LIBBITCOIN_CRYPTO = $(LIBBITCOIN_CRYPTO_BASE)
|
|
if USE_ASM
|
|
LIBBITCOIN_CRYPTO_SSE4 = crypto/libbitcoin_crypto_sse4.la
|
|
LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_SSE4)
|
|
endif
|
|
if ENABLE_SSE41
|
|
LIBBITCOIN_CRYPTO_SSE41 = crypto/libbitcoin_crypto_sse41.la
|
|
LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_SSE41)
|
|
endif
|
|
if ENABLE_AVX2
|
|
LIBBITCOIN_CRYPTO_AVX2 = crypto/libbitcoin_crypto_avx2.la
|
|
LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_AVX2)
|
|
endif
|
|
if ENABLE_X86_SHANI
|
|
LIBBITCOIN_CRYPTO_X86_SHANI = crypto/libbitcoin_crypto_x86_shani.la
|
|
LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_X86_SHANI)
|
|
endif
|
|
if ENABLE_ARM_SHANI
|
|
LIBBITCOIN_CRYPTO_ARM_SHANI = crypto/libbitcoin_crypto_arm_shani.la
|
|
LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_ARM_SHANI)
|
|
endif
|
|
noinst_LTLIBRARIES += $(LIBBITCOIN_CRYPTO)
|
|
|
|
$(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_UTIL) \
|
|
$(LIBBITCOIN_COMMON) \
|
|
$(LIBBITCOIN_CONSENSUS) \
|
|
$(LIBBITCOIN_NODE) \
|
|
$(LIBBITCOIN_CLI) \
|
|
$(LIBBITCOIN_IPC) \
|
|
$(LIBBITCOIN_WALLET) \
|
|
$(LIBBITCOIN_WALLET_TOOL) \
|
|
$(LIBBITCOIN_ZMQ)
|
|
|
|
if BUILD_BITCOIND
|
|
bin_PROGRAMS += bitcoind
|
|
endif
|
|
|
|
if BUILD_BITCOIN_NODE
|
|
bin_PROGRAMS += bitcoin-node
|
|
endif
|
|
|
|
if BUILD_BITCOIN_CLI
|
|
bin_PROGRAMS += bitcoin-cli
|
|
endif
|
|
|
|
if BUILD_BITCOIN_TX
|
|
bin_PROGRAMS += bitcoin-tx
|
|
endif
|
|
|
|
if ENABLE_WALLET
|
|
if BUILD_BITCOIN_WALLET
|
|
bin_PROGRAMS += bitcoin-wallet
|
|
endif
|
|
endif
|
|
|
|
if BUILD_BITCOIN_UTIL
|
|
bin_PROGRAMS += bitcoin-util
|
|
endif
|
|
|
|
if BUILD_BITCOIN_CHAINSTATE
|
|
bin_PROGRAMS += bitcoin-chainstate
|
|
endif
|
|
|
|
.PHONY: FORCE check-symbols check-security
|
|
# bitcoin core #
|
|
BITCOIN_CORE_H = \
|
|
addresstype.h \
|
|
addrdb.h \
|
|
addrman.h \
|
|
addrman_impl.h \
|
|
attributes.h \
|
|
banman.h \
|
|
base58.h \
|
|
bech32.h \
|
|
bip324.h \
|
|
blockencodings.h \
|
|
blockfilter.h \
|
|
chain.h \
|
|
chainparams.h \
|
|
chainparamsbase.h \
|
|
chainparamsseeds.h \
|
|
checkqueue.h \
|
|
clientversion.h \
|
|
coins.h \
|
|
common/args.h \
|
|
common/bloom.h \
|
|
common/init.h \
|
|
common/run_command.h \
|
|
common/url.h \
|
|
compat/assumptions.h \
|
|
compat/byteswap.h \
|
|
compat/compat.h \
|
|
compat/cpuid.h \
|
|
compat/endian.h \
|
|
common/settings.h \
|
|
common/system.h \
|
|
compressor.h \
|
|
consensus/consensus.h \
|
|
consensus/tx_check.h \
|
|
consensus/tx_verify.h \
|
|
core_io.h \
|
|
core_memusage.h \
|
|
cuckoocache.h \
|
|
dbwrapper.h \
|
|
deploymentinfo.h \
|
|
deploymentstatus.h \
|
|
external_signer.h \
|
|
flatfile.h \
|
|
headerssync.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 \
|
|
kernel/blockmanager_opts.h \
|
|
kernel/chain.h \
|
|
kernel/chainparams.h \
|
|
kernel/chainstatemanager_opts.h \
|
|
kernel/checks.h \
|
|
kernel/coinstats.h \
|
|
kernel/context.h \
|
|
kernel/cs_main.h \
|
|
kernel/disconnected_transactions.h \
|
|
kernel/mempool_entry.h \
|
|
kernel/mempool_limits.h \
|
|
kernel/mempool_options.h \
|
|
kernel/mempool_persist.h \
|
|
kernel/mempool_removal_reason.h \
|
|
kernel/messagestartchars.h \
|
|
kernel/notifications_interface.h \
|
|
kernel/validation_cache_sizes.h \
|
|
key.h \
|
|
key_io.h \
|
|
logging.h \
|
|
logging/timer.h \
|
|
mapport.h \
|
|
memusage.h \
|
|
merkleblock.h \
|
|
net.h \
|
|
net_permissions.h \
|
|
net_processing.h \
|
|
net_types.h \
|
|
netaddress.h \
|
|
netbase.h \
|
|
netgroup.h \
|
|
netmessagemaker.h \
|
|
node/abort.h \
|
|
node/blockmanager_args.h \
|
|
node/blockstorage.h \
|
|
node/caches.h \
|
|
node/chainstate.h \
|
|
node/chainstatemanager_args.h \
|
|
node/coin.h \
|
|
node/coins_view_args.h \
|
|
node/connection_types.h \
|
|
node/context.h \
|
|
node/database_args.h \
|
|
node/eviction.h \
|
|
node/interface_ui.h \
|
|
node/kernel_notifications.h \
|
|
node/mempool_args.h \
|
|
node/mempool_persist_args.h \
|
|
node/miner.h \
|
|
node/mini_miner.h \
|
|
node/minisketchwrapper.h \
|
|
node/peerman_args.h \
|
|
node/protocol_version.h \
|
|
node/psbt.h \
|
|
node/transaction.h \
|
|
node/txreconciliation.h \
|
|
node/utxo_snapshot.h \
|
|
node/validation_cache_args.h \
|
|
noui.h \
|
|
outputtype.h \
|
|
policy/v3_policy.h \
|
|
policy/feerate.h \
|
|
policy/fees.h \
|
|
policy/fees_args.h \
|
|
policy/packages.h \
|
|
policy/policy.h \
|
|
policy/rbf.h \
|
|
policy/settings.h \
|
|
pow.h \
|
|
protocol.h \
|
|
psbt.h \
|
|
random.h \
|
|
randomenv.h \
|
|
rest.h \
|
|
reverse_iterator.h \
|
|
rpc/blockchain.h \
|
|
rpc/client.h \
|
|
rpc/mempool.h \
|
|
rpc/mining.h \
|
|
rpc/protocol.h \
|
|
rpc/rawtransaction_util.h \
|
|
rpc/register.h \
|
|
rpc/request.h \
|
|
rpc/server.h \
|
|
rpc/server_util.h \
|
|
rpc/util.h \
|
|
scheduler.h \
|
|
script/descriptor.h \
|
|
script/keyorigin.h \
|
|
script/miniscript.h \
|
|
script/sigcache.h \
|
|
script/sign.h \
|
|
script/signingprovider.h \
|
|
script/solver.h \
|
|
signet.h \
|
|
streams.h \
|
|
support/allocators/pool.h \
|
|
support/allocators/secure.h \
|
|
support/allocators/zeroafterfree.h \
|
|
support/cleanse.h \
|
|
support/events.h \
|
|
support/lockedpool.h \
|
|
sync.h \
|
|
threadsafety.h \
|
|
timedata.h \
|
|
torcontrol.h \
|
|
txdb.h \
|
|
txmempool.h \
|
|
txorphanage.h \
|
|
txrequest.h \
|
|
undo.h \
|
|
util/any.h \
|
|
util/asmap.h \
|
|
util/batchpriority.h \
|
|
util/bip32.h \
|
|
util/bitdeque.h \
|
|
util/bytevectorhash.h \
|
|
util/chaintype.h \
|
|
util/check.h \
|
|
util/epochguard.h \
|
|
util/error.h \
|
|
util/exception.h \
|
|
util/fastrange.h \
|
|
util/fees.h \
|
|
util/fs.h \
|
|
util/fs_helpers.h \
|
|
util/golombrice.h \
|
|
util/hash_type.h \
|
|
util/hasher.h \
|
|
util/insert.h \
|
|
util/macros.h \
|
|
util/message.h \
|
|
util/moneystr.h \
|
|
util/overflow.h \
|
|
util/overloaded.h \
|
|
util/rbf.h \
|
|
util/readwritefile.h \
|
|
util/result.h \
|
|
util/serfloat.h \
|
|
util/signalinterrupt.h \
|
|
util/sock.h \
|
|
util/spanparsing.h \
|
|
util/string.h \
|
|
util/syserror.h \
|
|
util/thread.h \
|
|
util/threadinterrupt.h \
|
|
util/threadnames.h \
|
|
util/time.h \
|
|
util/tokenpipe.h \
|
|
util/trace.h \
|
|
util/transaction_identifier.h \
|
|
util/translation.h \
|
|
util/types.h \
|
|
util/ui_change_type.h \
|
|
util/vector.h \
|
|
validation.h \
|
|
validationinterface.h \
|
|
versionbits.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/load.h \
|
|
wallet/receive.h \
|
|
wallet/rpc/util.h \
|
|
wallet/rpc/wallet.h \
|
|
wallet/salvage.h \
|
|
wallet/scriptpubkeyman.h \
|
|
wallet/spend.h \
|
|
wallet/sqlite.h \
|
|
wallet/transaction.h \
|
|
wallet/types.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
|
|
$(AM_V_GEN) $(top_srcdir)/share/genbuild.sh "$(abs_top_builddir)/src/obj/build.h" \
|
|
"$(abs_top_srcdir)"
|
|
libbitcoin_util_a-clientversion.$(OBJEXT): obj/build.h
|
|
|
|
# node #
|
|
libbitcoin_node_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(LEVELDB_CPPFLAGS) $(BOOST_CPPFLAGS) $(MINIUPNPC_CPPFLAGS) $(NATPMP_CPPFLAGS) $(EVENT_CFLAGS) $(EVENT_PTHREADS_CFLAGS)
|
|
libbitcoin_node_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
libbitcoin_node_a_SOURCES = \
|
|
addrdb.cpp \
|
|
addrman.cpp \
|
|
banman.cpp \
|
|
bip324.cpp \
|
|
blockencodings.cpp \
|
|
blockfilter.cpp \
|
|
chain.cpp \
|
|
consensus/tx_verify.cpp \
|
|
dbwrapper.cpp \
|
|
deploymentstatus.cpp \
|
|
flatfile.cpp \
|
|
headerssync.cpp \
|
|
httprpc.cpp \
|
|
httpserver.cpp \
|
|
i2p.cpp \
|
|
index/base.cpp \
|
|
index/blockfilterindex.cpp \
|
|
index/coinstatsindex.cpp \
|
|
index/txindex.cpp \
|
|
init.cpp \
|
|
kernel/chain.cpp \
|
|
kernel/checks.cpp \
|
|
kernel/coinstats.cpp \
|
|
kernel/context.cpp \
|
|
kernel/cs_main.cpp \
|
|
kernel/disconnected_transactions.cpp \
|
|
kernel/mempool_persist.cpp \
|
|
kernel/mempool_removal_reason.cpp \
|
|
mapport.cpp \
|
|
net.cpp \
|
|
net_processing.cpp \
|
|
netgroup.cpp \
|
|
node/abort.cpp \
|
|
node/blockmanager_args.cpp \
|
|
node/blockstorage.cpp \
|
|
node/caches.cpp \
|
|
node/chainstate.cpp \
|
|
node/chainstatemanager_args.cpp \
|
|
node/coin.cpp \
|
|
node/coins_view_args.cpp \
|
|
node/connection_types.cpp \
|
|
node/context.cpp \
|
|
node/database_args.cpp \
|
|
node/eviction.cpp \
|
|
node/interface_ui.cpp \
|
|
node/interfaces.cpp \
|
|
node/kernel_notifications.cpp \
|
|
node/mempool_args.cpp \
|
|
node/mempool_persist_args.cpp \
|
|
node/miner.cpp \
|
|
node/mini_miner.cpp \
|
|
node/minisketchwrapper.cpp \
|
|
node/peerman_args.cpp \
|
|
node/psbt.cpp \
|
|
node/transaction.cpp \
|
|
node/txreconciliation.cpp \
|
|
node/utxo_snapshot.cpp \
|
|
node/validation_cache_args.cpp \
|
|
noui.cpp \
|
|
policy/v3_policy.cpp \
|
|
policy/fees.cpp \
|
|
policy/fees_args.cpp \
|
|
policy/packages.cpp \
|
|
policy/rbf.cpp \
|
|
policy/settings.cpp \
|
|
pow.cpp \
|
|
rest.cpp \
|
|
rpc/blockchain.cpp \
|
|
rpc/fees.cpp \
|
|
rpc/mempool.cpp \
|
|
rpc/mining.cpp \
|
|
rpc/net.cpp \
|
|
rpc/node.cpp \
|
|
rpc/output_script.cpp \
|
|
rpc/rawtransaction.cpp \
|
|
rpc/server.cpp \
|
|
rpc/server_util.cpp \
|
|
rpc/signmessage.cpp \
|
|
rpc/txoutproof.cpp \
|
|
script/sigcache.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_node_a_SOURCES += wallet/init.cpp
|
|
libbitcoin_node_a_CPPFLAGS += $(BDB_CPPFLAGS)
|
|
endif
|
|
if !ENABLE_WALLET
|
|
libbitcoin_node_a_SOURCES += dummywallet.cpp
|
|
endif
|
|
#
|
|
|
|
# zmq #
|
|
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 #
|
|
libbitcoin_wallet_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BOOST_CPPFLAGS) $(BDB_CPPFLAGS) $(SQLITE_CFLAGS)
|
|
libbitcoin_wallet_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
libbitcoin_wallet_a_SOURCES = \
|
|
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/receive.cpp \
|
|
wallet/rpc/addresses.cpp \
|
|
wallet/rpc/backup.cpp \
|
|
wallet/rpc/coins.cpp \
|
|
wallet/rpc/encrypt.cpp \
|
|
wallet/rpc/spend.cpp \
|
|
wallet/rpc/signmessage.cpp \
|
|
wallet/rpc/transactions.cpp \
|
|
wallet/rpc/util.cpp \
|
|
wallet/rpc/wallet.cpp \
|
|
wallet/scriptpubkeyman.cpp \
|
|
wallet/spend.cpp \
|
|
wallet/transaction.cpp \
|
|
wallet/wallet.cpp \
|
|
wallet/walletdb.cpp \
|
|
wallet/walletutil.cpp \
|
|
wallet/coinselection.cpp \
|
|
$(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
|
|
#
|
|
|
|
# wallet tool #
|
|
libbitcoin_wallet_tool_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BOOST_CPPFLAGS)
|
|
libbitcoin_wallet_tool_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
libbitcoin_wallet_tool_a_SOURCES = \
|
|
wallet/wallettool.cpp \
|
|
$(BITCOIN_CORE_H)
|
|
#
|
|
|
|
# crypto #
|
|
|
|
# crypto_base contains the unspecialized (unoptimized) versions of our
|
|
# crypto functions. Functions that require custom compiler flags and/or
|
|
# runtime opt-in are omitted.
|
|
crypto_libbitcoin_crypto_base_la_CPPFLAGS = $(AM_CPPFLAGS)
|
|
|
|
# Specify -static in both CXXFLAGS and LDFLAGS so libtool will only build a
|
|
# static version of this library. We don't need a dynamic version, and a dynamic
|
|
# version can't be used on windows anyway because the library doesn't currently
|
|
# export DLL symbols.
|
|
crypto_libbitcoin_crypto_base_la_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) -static
|
|
crypto_libbitcoin_crypto_base_la_LDFLAGS = $(AM_LDFLAGS) -static
|
|
|
|
crypto_libbitcoin_crypto_base_la_SOURCES = \
|
|
crypto/aes.cpp \
|
|
crypto/aes.h \
|
|
crypto/chacha20.h \
|
|
crypto/chacha20.cpp \
|
|
crypto/chacha20poly1305.h \
|
|
crypto/chacha20poly1305.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
|
|
|
|
# See explanation for -static in crypto_libbitcoin_crypto_base_la's LDFLAGS and
|
|
# CXXFLAGS above
|
|
crypto_libbitcoin_crypto_sse4_la_LDFLAGS = $(AM_LDFLAGS) -static
|
|
crypto_libbitcoin_crypto_sse4_la_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) -static
|
|
crypto_libbitcoin_crypto_sse4_la_CPPFLAGS = $(AM_CPPFLAGS)
|
|
crypto_libbitcoin_crypto_sse4_la_SOURCES = crypto/sha256_sse4.cpp
|
|
|
|
# See explanation for -static in crypto_libbitcoin_crypto_base_la's LDFLAGS and
|
|
# CXXFLAGS above
|
|
crypto_libbitcoin_crypto_sse41_la_LDFLAGS = $(AM_LDFLAGS) -static
|
|
crypto_libbitcoin_crypto_sse41_la_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) -static
|
|
crypto_libbitcoin_crypto_sse41_la_CPPFLAGS = $(AM_CPPFLAGS)
|
|
crypto_libbitcoin_crypto_sse41_la_CXXFLAGS += $(SSE41_CXXFLAGS)
|
|
crypto_libbitcoin_crypto_sse41_la_CPPFLAGS += -DENABLE_SSE41
|
|
crypto_libbitcoin_crypto_sse41_la_SOURCES = crypto/sha256_sse41.cpp
|
|
|
|
# See explanation for -static in crypto_libbitcoin_crypto_base_la's LDFLAGS and
|
|
# CXXFLAGS above
|
|
crypto_libbitcoin_crypto_avx2_la_LDFLAGS = $(AM_LDFLAGS) -static
|
|
crypto_libbitcoin_crypto_avx2_la_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) -static
|
|
crypto_libbitcoin_crypto_avx2_la_CPPFLAGS = $(AM_CPPFLAGS)
|
|
crypto_libbitcoin_crypto_avx2_la_CXXFLAGS += $(AVX2_CXXFLAGS)
|
|
crypto_libbitcoin_crypto_avx2_la_CPPFLAGS += -DENABLE_AVX2
|
|
crypto_libbitcoin_crypto_avx2_la_SOURCES = crypto/sha256_avx2.cpp
|
|
|
|
# See explanation for -static in crypto_libbitcoin_crypto_base_la's LDFLAGS and
|
|
# CXXFLAGS above
|
|
crypto_libbitcoin_crypto_x86_shani_la_LDFLAGS = $(AM_LDFLAGS) -static
|
|
crypto_libbitcoin_crypto_x86_shani_la_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) -static
|
|
crypto_libbitcoin_crypto_x86_shani_la_CPPFLAGS = $(AM_CPPFLAGS)
|
|
crypto_libbitcoin_crypto_x86_shani_la_CXXFLAGS += $(X86_SHANI_CXXFLAGS)
|
|
crypto_libbitcoin_crypto_x86_shani_la_CPPFLAGS += -DENABLE_X86_SHANI
|
|
crypto_libbitcoin_crypto_x86_shani_la_SOURCES = crypto/sha256_x86_shani.cpp
|
|
|
|
# See explanation for -static in crypto_libbitcoin_crypto_base_la's LDFLAGS and
|
|
# CXXFLAGS above
|
|
crypto_libbitcoin_crypto_arm_shani_la_LDFLAGS = $(AM_LDFLAGS) -static
|
|
crypto_libbitcoin_crypto_arm_shani_la_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) -static
|
|
crypto_libbitcoin_crypto_arm_shani_la_CPPFLAGS = $(AM_CPPFLAGS)
|
|
crypto_libbitcoin_crypto_arm_shani_la_CXXFLAGS += $(ARM_SHANI_CXXFLAGS)
|
|
crypto_libbitcoin_crypto_arm_shani_la_CPPFLAGS += -DENABLE_ARM_SHANI
|
|
crypto_libbitcoin_crypto_arm_shani_la_SOURCES = crypto/sha256_arm_shani.cpp
|
|
#
|
|
|
|
# consensus #
|
|
libbitcoin_consensus_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
|
libbitcoin_consensus_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
libbitcoin_consensus_a_SOURCES = \
|
|
arith_uint256.cpp \
|
|
arith_uint256.h \
|
|
consensus/amount.h \
|
|
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/transaction.cpp \
|
|
primitives/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
|
|
#
|
|
|
|
# common #
|
|
libbitcoin_common_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BOOST_CPPFLAGS)
|
|
libbitcoin_common_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
libbitcoin_common_a_SOURCES = \
|
|
addresstype.cpp \
|
|
base58.cpp \
|
|
bech32.cpp \
|
|
chainparams.cpp \
|
|
coins.cpp \
|
|
common/args.cpp \
|
|
common/bloom.cpp \
|
|
common/config.cpp \
|
|
common/init.cpp \
|
|
common/interfaces.cpp \
|
|
common/run_command.cpp \
|
|
common/settings.cpp \
|
|
common/system.cpp \
|
|
compressor.cpp \
|
|
core_read.cpp \
|
|
core_write.cpp \
|
|
deploymentinfo.cpp \
|
|
external_signer.cpp \
|
|
init/common.cpp \
|
|
kernel/chainparams.cpp \
|
|
key.cpp \
|
|
key_io.cpp \
|
|
merkleblock.cpp \
|
|
net_types.cpp \
|
|
netaddress.cpp \
|
|
netbase.cpp \
|
|
net_permissions.cpp \
|
|
outputtype.cpp \
|
|
policy/v3_policy.cpp \
|
|
policy/feerate.cpp \
|
|
policy/policy.cpp \
|
|
protocol.cpp \
|
|
psbt.cpp \
|
|
rpc/external_signer.cpp \
|
|
rpc/rawtransaction_util.cpp \
|
|
rpc/request.cpp \
|
|
rpc/util.cpp \
|
|
scheduler.cpp \
|
|
script/descriptor.cpp \
|
|
script/miniscript.cpp \
|
|
script/sign.cpp \
|
|
script/signingprovider.cpp \
|
|
script/solver.cpp \
|
|
warnings.cpp \
|
|
$(BITCOIN_CORE_H)
|
|
|
|
if USE_LIBEVENT
|
|
libbitcoin_common_a_CPPFLAGS += $(EVENT_CFLAGS)
|
|
libbitcoin_common_a_SOURCES += common/url.cpp
|
|
endif
|
|
#
|
|
|
|
# util #
|
|
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 \
|
|
logging.cpp \
|
|
random.cpp \
|
|
randomenv.cpp \
|
|
streams.cpp \
|
|
support/cleanse.cpp \
|
|
sync.cpp \
|
|
util/asmap.cpp \
|
|
util/batchpriority.cpp \
|
|
util/bip32.cpp \
|
|
util/bytevectorhash.cpp \
|
|
util/chaintype.cpp \
|
|
util/check.cpp \
|
|
util/error.cpp \
|
|
util/exception.cpp \
|
|
util/fees.cpp \
|
|
util/fs.cpp \
|
|
util/fs_helpers.cpp \
|
|
util/hasher.cpp \
|
|
util/sock.cpp \
|
|
util/syserror.cpp \
|
|
util/message.cpp \
|
|
util/moneystr.cpp \
|
|
util/rbf.cpp \
|
|
util/readwritefile.cpp \
|
|
util/signalinterrupt.cpp \
|
|
util/thread.cpp \
|
|
util/threadinterrupt.cpp \
|
|
util/threadnames.cpp \
|
|
util/serfloat.cpp \
|
|
util/spanparsing.cpp \
|
|
util/strencodings.cpp \
|
|
util/string.cpp \
|
|
util/time.cpp \
|
|
util/tokenpipe.cpp \
|
|
$(BITCOIN_CORE_H)
|
|
#
|
|
|
|
# cli #
|
|
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 #
|
|
bitcoin_daemon_sources = bitcoind.cpp
|
|
bitcoin_bin_cppflags = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
|
bitcoin_bin_cxxflags = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
bitcoin_bin_ldflags = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) $(PTHREAD_FLAGS)
|
|
|
|
if TARGET_WINDOWS
|
|
bitcoin_daemon_sources += bitcoind-res.rc
|
|
endif
|
|
|
|
bitcoin_bin_ldadd = \
|
|
$(LIBBITCOIN_WALLET) \
|
|
$(LIBBITCOIN_COMMON) \
|
|
$(LIBBITCOIN_UTIL) \
|
|
$(LIBUNIVALUE) \
|
|
$(LIBBITCOIN_ZMQ) \
|
|
$(LIBBITCOIN_CONSENSUS) \
|
|
$(LIBBITCOIN_CRYPTO) \
|
|
$(LIBLEVELDB) \
|
|
$(LIBMEMENV) \
|
|
$(LIBSECP256K1)
|
|
|
|
bitcoin_bin_ldadd += $(BDB_LIBS) $(MINIUPNPC_LIBS) $(NATPMP_LIBS) $(EVENT_PTHREADS_LIBS) $(EVENT_LIBS) $(ZMQ_LIBS) $(SQLITE_LIBS)
|
|
|
|
bitcoind_SOURCES = $(bitcoin_daemon_sources) init/bitcoind.cpp
|
|
bitcoind_CPPFLAGS = $(bitcoin_bin_cppflags)
|
|
bitcoind_CXXFLAGS = $(bitcoin_bin_cxxflags)
|
|
bitcoind_LDFLAGS = $(bitcoin_bin_ldflags)
|
|
bitcoind_LDADD = $(LIBBITCOIN_NODE) $(bitcoin_bin_ldadd)
|
|
|
|
bitcoin_node_SOURCES = $(bitcoin_daemon_sources) init/bitcoin-node.cpp
|
|
bitcoin_node_CPPFLAGS = $(bitcoin_bin_cppflags)
|
|
bitcoin_node_CXXFLAGS = $(bitcoin_bin_cxxflags)
|
|
bitcoin_node_LDFLAGS = $(bitcoin_bin_ldflags)
|
|
bitcoin_node_LDADD = $(LIBBITCOIN_NODE) $(bitcoin_bin_ldadd) $(LIBBITCOIN_IPC) $(LIBMULTIPROCESS_LIBS)
|
|
|
|
# bitcoin-cli binary #
|
|
bitcoin_cli_SOURCES = bitcoin-cli.cpp
|
|
bitcoin_cli_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(EVENT_CFLAGS)
|
|
bitcoin_cli_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
bitcoin_cli_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) $(PTHREAD_FLAGS)
|
|
|
|
if TARGET_WINDOWS
|
|
bitcoin_cli_SOURCES += bitcoin-cli-res.rc
|
|
endif
|
|
|
|
bitcoin_cli_LDADD = \
|
|
$(LIBBITCOIN_CLI) \
|
|
$(LIBUNIVALUE) \
|
|
$(LIBBITCOIN_COMMON) \
|
|
$(LIBBITCOIN_UTIL) \
|
|
$(LIBBITCOIN_CRYPTO)
|
|
|
|
bitcoin_cli_LDADD += $(EVENT_LIBS)
|
|
#
|
|
|
|
# bitcoin-tx binary #
|
|
bitcoin_tx_SOURCES = bitcoin-tx.cpp
|
|
bitcoin_tx_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
|
bitcoin_tx_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
bitcoin_tx_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS) $(PTHREAD_FLAGS)
|
|
|
|
if TARGET_WINDOWS
|
|
bitcoin_tx_SOURCES += bitcoin-tx-res.rc
|
|
endif
|
|
|
|
bitcoin_tx_LDADD = \
|
|
$(LIBUNIVALUE) \
|
|
$(LIBBITCOIN_COMMON) \
|
|
$(LIBBITCOIN_UTIL) \
|
|
$(LIBBITCOIN_CONSENSUS) \
|
|
$(LIBBITCOIN_CRYPTO) \
|
|
$(LIBSECP256K1)
|
|
#
|
|
|
|
# bitcoin-wallet binary #
|
|
bitcoin_wallet_SOURCES = bitcoin-wallet.cpp
|
|
bitcoin_wallet_SOURCES += init/bitcoin-wallet.cpp
|
|
bitcoin_wallet_CPPFLAGS = $(bitcoin_bin_cppflags)
|
|
bitcoin_wallet_CXXFLAGS = $(bitcoin_bin_cxxflags)
|
|
bitcoin_wallet_LDFLAGS = $(bitcoin_bin_ldflags)
|
|
bitcoin_wallet_LDADD = \
|
|
$(LIBBITCOIN_WALLET_TOOL) \
|
|
$(LIBBITCOIN_WALLET) \
|
|
$(LIBBITCOIN_COMMON) \
|
|
$(LIBBITCOIN_UTIL) \
|
|
$(LIBUNIVALUE) \
|
|
$(LIBBITCOIN_CONSENSUS) \
|
|
$(LIBBITCOIN_CRYPTO) \
|
|
$(LIBSECP256K1) \
|
|
$(BDB_LIBS) \
|
|
$(SQLITE_LIBS)
|
|
|
|
if TARGET_WINDOWS
|
|
bitcoin_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-chainstate binary #
|
|
bitcoin_chainstate_SOURCES = bitcoin-chainstate.cpp
|
|
bitcoin_chainstate_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES) $(BOOST_CPPFLAGS)
|
|
bitcoin_chainstate_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
|
|
|
bitcoin_chainstate_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(PTHREAD_FLAGS) $(LIBTOOL_APP_LDFLAGS) -static
|
|
bitcoin_chainstate_LDADD = $(LIBBITCOINKERNEL)
|
|
|
|
# libtool is unable to calculate this indirect dependency, presumably because it's a subproject.
|
|
# libsecp256k1 only needs to be linked in when libbitcoinkernel is static.
|
|
bitcoin_chainstate_LDADD += $(LIBSECP256K1)
|
|
#
|
|
|
|
# bitcoinkernel library #
|
|
if BUILD_BITCOIN_KERNEL_LIB
|
|
lib_LTLIBRARIES += $(LIBBITCOINKERNEL)
|
|
|
|
libbitcoinkernel_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined $(RELDFLAGS) $(PTHREAD_FLAGS)
|
|
libbitcoinkernel_la_LIBADD = $(LIBBITCOIN_CRYPTO) $(LIBLEVELDB) $(LIBMEMENV) $(LIBSECP256K1)
|
|
libbitcoinkernel_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(builddir)/obj -I$(srcdir)/secp256k1/include $(BOOST_CPPFLAGS) $(LEVELDB_CPPFLAGS)
|
|
|
|
# libbitcoinkernel requires default symbol visibility, explicitly specify that
|
|
# here so that things still work even when user configures with
|
|
# --enable-reduce-exports
|
|
#
|
|
# Note this is a quick hack that will be removed as we incrementally define what
|
|
# to export from the library.
|
|
libbitcoinkernel_la_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS) -fvisibility=default
|
|
|
|
# TODO: libbitcoinkernel is a work in progress consensus engine library, as more
|
|
# and more modules are decoupled from the consensus engine, this list will
|
|
# shrink to only those which are absolutely necessary.
|
|
libbitcoinkernel_la_SOURCES = \
|
|
kernel/bitcoinkernel.cpp \
|
|
arith_uint256.cpp \
|
|
chain.cpp \
|
|
clientversion.cpp \
|
|
coins.cpp \
|
|
compressor.cpp \
|
|
consensus/merkle.cpp \
|
|
consensus/tx_check.cpp \
|
|
consensus/tx_verify.cpp \
|
|
core_read.cpp \
|
|
dbwrapper.cpp \
|
|
deploymentinfo.cpp \
|
|
deploymentstatus.cpp \
|
|
flatfile.cpp \
|
|
hash.cpp \
|
|
kernel/chain.cpp \
|
|
kernel/checks.cpp \
|
|
kernel/chainparams.cpp \
|
|
kernel/coinstats.cpp \
|
|
kernel/context.cpp \
|
|
kernel/cs_main.cpp \
|
|
kernel/disconnected_transactions.cpp \
|
|
kernel/mempool_persist.cpp \
|
|
kernel/mempool_removal_reason.cpp \
|
|
key.cpp \
|
|
logging.cpp \
|
|
node/blockstorage.cpp \
|
|
node/chainstate.cpp \
|
|
node/utxo_snapshot.cpp \
|
|
policy/v3_policy.cpp \
|
|
policy/feerate.cpp \
|
|
policy/packages.cpp \
|
|
policy/policy.cpp \
|
|
policy/rbf.cpp \
|
|
policy/settings.cpp \
|
|
pow.cpp \
|
|
primitives/block.cpp \
|
|
primitives/transaction.cpp \
|
|
pubkey.cpp \
|
|
random.cpp \
|
|
randomenv.cpp \
|
|
scheduler.cpp \
|
|
script/interpreter.cpp \
|
|
script/script.cpp \
|
|
script/script_error.cpp \
|
|
script/sigcache.cpp \
|
|
script/solver.cpp \
|
|
signet.cpp \
|
|
streams.cpp \
|
|
support/cleanse.cpp \
|
|
support/lockedpool.cpp \
|
|
sync.cpp \
|
|
txdb.cpp \
|
|
txmempool.cpp \
|
|
uint256.cpp \
|
|
util/batchpriority.cpp \
|
|
util/chaintype.cpp \
|
|
util/check.cpp \
|
|
util/exception.cpp \
|
|
util/fs.cpp \
|
|
util/fs_helpers.cpp \
|
|
util/hasher.cpp \
|
|
util/moneystr.cpp \
|
|
util/rbf.cpp \
|
|
util/serfloat.cpp \
|
|
util/signalinterrupt.cpp \
|
|
util/strencodings.cpp \
|
|
util/string.cpp \
|
|
util/syserror.cpp \
|
|
util/thread.cpp \
|
|
util/threadnames.cpp \
|
|
util/time.cpp \
|
|
util/tokenpipe.cpp \
|
|
validation.cpp \
|
|
validationinterface.cpp \
|
|
versionbits.cpp \
|
|
warnings.cpp
|
|
|
|
# Required for obj/build.h to be generated first.
|
|
# More details: https://www.gnu.org/software/automake/manual/html_node/Built-Sources-Example.html
|
|
libbitcoinkernel_la-clientversion.l$(OBJEXT): obj/build.h
|
|
endif # BUILD_BITCOIN_KERNEL_LIB
|
|
#
|
|
|
|
# bitcoinconsensus library #
|
|
if BUILD_BITCOIN_LIBS
|
|
lib_LTLIBRARIES += $(LIBBITCOINCONSENSUS)
|
|
|
|
include_HEADERS = script/bitcoinconsensus.h
|
|
libbitcoinconsensus_la_SOURCES = support/cleanse.cpp $(crypto_libbitcoin_crypto_base_la_SOURCES) $(libbitcoin_consensus_a_SOURCES)
|
|
|
|
libbitcoinconsensus_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined $(RELDFLAGS)
|
|
libbitcoinconsensus_la_LIBADD = $(LIBSECP256K1)
|
|
libbitcoinconsensus_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(builddir)/obj -I$(srcdir)/secp256k1/include -DBUILD_BITCOIN_INTERNAL -DDISABLE_OPTIMIZED_SHA256
|
|
libbitcoinconsensus_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
|
|
-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) || (echo "windres $(WINDRES) not found, but is required to compile windows resource files"; exit 1)
|
|
## 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)
|
|
@echo "Running symbol and dynamic library checks..."
|
|
$(AM_V_at) $(PYTHON) $(top_srcdir)/contrib/devtools/symbol-check.py $(bin_PROGRAMS)
|
|
|
|
check-security: $(bin_PROGRAMS)
|
|
if HARDEN
|
|
@echo "Checking binary security..."
|
|
$(AM_V_at) $(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:
|
|
|
|
# Explicitly list dependencies on generated headers as described in
|
|
# https://www.gnu.org/software/automake/manual/html_node/Built-Sources-Example.html#Recording-Dependencies-manually
|
|
ipc/capnp/libbitcoin_ipc_a-protocol.$(OBJEXT): $(libbitcoin_ipc_mpgen_input:=.h)
|
|
|
|
if BUILD_MULTIPROCESS
|
|
LIBBITCOIN_IPC=libbitcoin_ipc.a
|
|
libbitcoin_ipc_a_SOURCES = \
|
|
ipc/capnp/common-types.h \
|
|
ipc/capnp/context.h \
|
|
ipc/capnp/init-types.h \
|
|
ipc/capnp/protocol.cpp \
|
|
ipc/capnp/protocol.h \
|
|
ipc/context.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
|
|
|
|
%.raw.h: %.raw
|
|
@$(MKDIR_P) $(@D)
|
|
$(AM_V_GEN) { \
|
|
echo "static unsigned const char $(*F)_raw[] = {" && \
|
|
$(HEXDUMP) -v -e '8/1 "0x%02x, "' -e '"\n"' $< | $(SED) -e 's/0x ,//g' && \
|
|
echo "};"; \
|
|
} > "$@.new" && mv -f "$@.new" "$@"
|
|
|
|
include Makefile.minisketch.include
|
|
|
|
include Makefile.crc32c.include
|
|
include Makefile.leveldb.include
|
|
|
|
include Makefile.test_util.include
|
|
include Makefile.test_fuzz.include
|
|
|
|
include Makefile.test.include
|
|
|
|
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
|
|
|
|
include Makefile.univalue.include
|