Starting with Tor version 0.2.7.1 it is possible, through Tor's control socket API, to create and destroy 'ephemeral' hidden services programmatically. https://stem.torproject.org/api/control.html#stem.control.Controller.create_ephemeral_hidden_service This means that if Tor is running (and proper authorization is available), bitcoin automatically creates a hidden service to listen on, without user manual configuration. This will positively affect the number of available .onion nodes. - When the node is started, connect to Tor through control socket - Send `ADD_ONION` command - First time: - Make it create a hidden service key - Save the key in the data directory for later usage - Make it redirect port 8333 to the local port 8333 (or whatever port we're listening on). - Keep control socket connection open for as long node is running. The hidden service will (by default) automatically go away when the connection is closed.
549 lines
13 KiB
Makefile
549 lines
13 KiB
Makefile
DIST_SUBDIRS = secp256k1 univalue
|
|
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) -D__STDC_LIMIT_MACROS"
|
|
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
|
|
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
|
|
LIBSECP256K1=secp256k1/libsecp256k1.la
|
|
LIBUNIVALUE=univalue/libunivalue.la
|
|
LIBZCASH=libzcash.a
|
|
|
|
$(LIBSECP256K1): $(wildcard secp256k1/src/*) $(wildcard secp256k1/include/*)
|
|
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F)
|
|
|
|
$(LIBUNIVALUE): $(wildcard univalue/lib/*)
|
|
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C univalue/
|
|
|
|
# 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 \
|
|
libzcash.a
|
|
if ENABLE_WALLET
|
|
BITCOIN_INCLUDES += $(BDB_CPPFLAGS)
|
|
EXTRA_LIBRARIES += libbitcoin_wallet.a
|
|
endif
|
|
if ENABLE_ZMQ
|
|
EXTRA_LIBRARIES += libbitcoin_zmq.a
|
|
endif
|
|
|
|
if BUILD_BITCOIN_LIBS
|
|
lib_LTLIBRARIES = libzcashconsensus.la
|
|
LIBZCASH_CONSENSUS=libzcashconsensus.la
|
|
else
|
|
LIBZCASH_CONSENSUS=
|
|
endif
|
|
|
|
bin_PROGRAMS =
|
|
noinst_PROGRAMS =
|
|
TESTS =
|
|
|
|
if BUILD_BITCOIND
|
|
bin_PROGRAMS += zcashd
|
|
endif
|
|
|
|
if BUILD_BITCOIN_UTILS
|
|
bin_PROGRAMS += zcash-cli zcash-tx
|
|
endif
|
|
|
|
LIBZCASH_H = \
|
|
zcash/IncrementalMerkleTree.hpp \
|
|
zcash/NoteEncryption.hpp \
|
|
zcash/Address.hpp \
|
|
zcash/JoinSplit.hpp \
|
|
zcash/Note.hpp \
|
|
zcash/prf.h \
|
|
zcash/Proof.hpp \
|
|
zcash/util.h \
|
|
zcash/Zcash.h
|
|
|
|
.PHONY: FORCE check-symbols check-security
|
|
# bitcoin core #
|
|
BITCOIN_CORE_H = \
|
|
addrman.h \
|
|
alert.h \
|
|
amount.h \
|
|
arith_uint256.h \
|
|
asyncrpcoperation.h \
|
|
asyncrpcqueue.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/params.h \
|
|
consensus/validation.h \
|
|
core_io.h \
|
|
core_memusage.h \
|
|
eccryptoverify.h \
|
|
ecwrapper.h \
|
|
hash.h \
|
|
httprpc.h \
|
|
httpserver.h \
|
|
init.h \
|
|
key.h \
|
|
keystore.h \
|
|
leveldbwrapper.h \
|
|
limitedmap.h \
|
|
main.h \
|
|
memusage.h \
|
|
merkleblock.h \
|
|
metrics.h \
|
|
miner.h \
|
|
mruset.h \
|
|
net.h \
|
|
netbase.h \
|
|
noui.h \
|
|
policy/fees.h \
|
|
pow.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 \
|
|
streams.h \
|
|
support/allocators/secure.h \
|
|
support/allocators/zeroafterfree.h \
|
|
support/cleanse.h \
|
|
support/events.h \
|
|
support/pagelocker.h \
|
|
sync.h \
|
|
threadsafety.h \
|
|
timedata.h \
|
|
tinyformat.h \
|
|
torcontrol.h \
|
|
txdb.h \
|
|
txmempool.h \
|
|
ui_interface.h \
|
|
uint256.h \
|
|
uint252.h \
|
|
undo.h \
|
|
util.h \
|
|
utilmoneystr.h \
|
|
utilstrencodings.h \
|
|
utiltime.h \
|
|
validationinterface.h \
|
|
version.h \
|
|
wallet/asyncrpcoperation_sendmany.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: zcashd
|
|
libbitcoin_server_a_CPPFLAGS = $(BITCOIN_INCLUDES) $(MINIUPNPC_CPPFLAGS) $(EVENT_CFLAGS) $(EVENT_PTHREADS_CFLAGS)
|
|
libbitcoin_server_a_SOURCES = \
|
|
sendalert.cpp \
|
|
addrman.cpp \
|
|
alert.cpp \
|
|
alertkeys.h \
|
|
asyncrpcoperation.cpp \
|
|
asyncrpcqueue.cpp \
|
|
bloom.cpp \
|
|
chain.cpp \
|
|
checkpoints.cpp \
|
|
httprpc.cpp \
|
|
httpserver.cpp \
|
|
init.cpp \
|
|
leveldbwrapper.cpp \
|
|
main.cpp \
|
|
merkleblock.cpp \
|
|
metrics.cpp \
|
|
miner.cpp \
|
|
net.cpp \
|
|
noui.cpp \
|
|
policy/fees.cpp \
|
|
pow.cpp \
|
|
rest.cpp \
|
|
rpcblockchain.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) \
|
|
$(LIBZCASH_H)
|
|
|
|
if ENABLE_ZMQ
|
|
LIBBITCOIN_ZMQ=libbitcoin_zmq.a
|
|
|
|
libbitcoin_zmq_a_CPPFLAGS = $(BITCOIN_INCLUDES) $(ZMQ_CFLAGS)
|
|
libbitcoin_zmq_a_SOURCES = \
|
|
zmq/zmqabstractnotifier.cpp \
|
|
zmq/zmqnotificationinterface.cpp \
|
|
zmq/zmqpublishnotifier.cpp
|
|
endif
|
|
|
|
|
|
# wallet: zcashd, but only linked when wallet enabled
|
|
libbitcoin_wallet_a_CPPFLAGS = $(BITCOIN_INCLUDES)
|
|
libbitcoin_wallet_a_SOURCES = \
|
|
utiltest.cpp \
|
|
utiltest.h \
|
|
zcbenchmarks.cpp \
|
|
zcbenchmarks.h \
|
|
wallet/asyncrpcoperation_sendmany.cpp \
|
|
wallet/crypter.cpp \
|
|
wallet/db.cpp \
|
|
wallet/rpcdump.cpp \
|
|
wallet/rpcwallet.cpp \
|
|
wallet/wallet.cpp \
|
|
wallet/wallet_ismine.cpp \
|
|
wallet/walletdb.cpp \
|
|
$(BITCOIN_CORE_H) \
|
|
$(LIBZCASH_H)
|
|
|
|
# crypto primitives library
|
|
crypto_libbitcoin_crypto_a_CPPFLAGS = $(BITCOIN_CONFIG_INCLUDES)
|
|
crypto_libbitcoin_crypto_a_SOURCES = \
|
|
crypto/common.h \
|
|
crypto/equihash.cpp \
|
|
crypto/equihash.h \
|
|
crypto/equihash.tcc \
|
|
crypto/hmac_sha256.cpp \
|
|
crypto/hmac_sha256.h \
|
|
crypto/hmac_sha512.cpp \
|
|
crypto/hmac_sha512.h \
|
|
crypto/ripemd160.cpp \
|
|
crypto/ripemd160.h \
|
|
crypto/sha1.cpp \
|
|
crypto/sha1.h \
|
|
crypto/sha256.cpp \
|
|
crypto/sha256.h \
|
|
crypto/sha512.cpp \
|
|
crypto/sha512.h
|
|
|
|
if ENABLE_MINING
|
|
EQUIHASH_TROMP_SOURCES = \
|
|
pow/tromp/equi_miner.h \
|
|
pow/tromp/equi.h \
|
|
pow/tromp/osx_barrier.h
|
|
|
|
crypto_libbitcoin_crypto_a_CPPFLAGS += \
|
|
-DEQUIHASH_TROMP_ATOMIC
|
|
crypto_libbitcoin_crypto_a_SOURCES += \
|
|
${EQUIHASH_TROMP_SOURCES}
|
|
endif
|
|
|
|
# common: shared between zcashd and non-server tools
|
|
libbitcoin_common_a_CPPFLAGS = $(BITCOIN_INCLUDES)
|
|
libbitcoin_common_a_SOURCES = \
|
|
amount.cpp \
|
|
arith_uint256.cpp \
|
|
base58.cpp \
|
|
chainparams.cpp \
|
|
coins.cpp \
|
|
compressor.cpp \
|
|
core_read.cpp \
|
|
core_write.cpp \
|
|
eccryptoverify.cpp \
|
|
ecwrapper.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 \
|
|
$(BITCOIN_CORE_H) \
|
|
$(LIBZCASH_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 = \
|
|
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) \
|
|
$(LIBZCASH_H)
|
|
|
|
if GLIBC_BACK_COMPAT
|
|
libbitcoin_util_a_SOURCES += compat/glibc_compat.cpp
|
|
endif
|
|
|
|
# cli: zcash-cli
|
|
libbitcoin_cli_a_CPPFLAGS = $(BITCOIN_INCLUDES)
|
|
libbitcoin_cli_a_SOURCES = \
|
|
rpcclient.cpp \
|
|
$(BITCOIN_CORE_H) \
|
|
$(LIBZCASH_H)
|
|
|
|
nodist_libbitcoin_util_a_SOURCES = $(srcdir)/obj/build.h
|
|
#
|
|
|
|
# bitcoind binary #
|
|
zcashd_SOURCES = bitcoind.cpp
|
|
zcashd_CPPFLAGS = $(BITCOIN_INCLUDES)
|
|
zcashd_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
|
|
|
if TARGET_WINDOWS
|
|
zcashd_SOURCES += bitcoind-res.rc
|
|
endif
|
|
|
|
zcashd_LDADD = \
|
|
$(LIBBITCOIN_SERVER) \
|
|
$(LIBBITCOIN_COMMON) \
|
|
$(LIBUNIVALUE) \
|
|
$(LIBBITCOIN_UTIL) \
|
|
$(LIBBITCOIN_CRYPTO) \
|
|
$(LIBZCASH) \
|
|
$(LIBLEVELDB) \
|
|
$(LIBMEMENV) \
|
|
$(LIBSECP256K1)
|
|
|
|
if ENABLE_ZMQ
|
|
zcashd_LDADD += $(LIBBITCOIN_ZMQ) $(ZMQ_LIBS)
|
|
endif
|
|
|
|
if ENABLE_WALLET
|
|
zcashd_LDADD += libbitcoin_wallet.a
|
|
endif
|
|
|
|
zcashd_LDADD += \
|
|
$(BOOST_LIBS) \
|
|
$(BDB_LIBS) \
|
|
$(SSL_LIBS) \
|
|
$(CRYPTO_LIBS) \
|
|
$(MINIUPNPC_LIBS) \
|
|
$(EVENT_PTHREADS_LIBS) \
|
|
$(EVENT_LIBS) \
|
|
$(LIBZCASH) \
|
|
$(LIBBITCOIN_CRYPTO) \
|
|
$(LIBZCASH_LIBS)
|
|
|
|
# bitcoin-cli binary #
|
|
zcash_cli_SOURCES = bitcoin-cli.cpp
|
|
zcash_cli_CPPFLAGS = $(BITCOIN_INCLUDES) $(EVENT_CFLAGS)
|
|
zcash_cli_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
|
|
|
if TARGET_WINDOWS
|
|
zcash_cli_SOURCES += bitcoin-cli-res.rc
|
|
endif
|
|
|
|
zcash_cli_LDADD = \
|
|
$(LIBBITCOIN_CLI) \
|
|
$(LIBUNIVALUE) \
|
|
$(LIBBITCOIN_UTIL) \
|
|
$(BOOST_LIBS) \
|
|
$(SSL_LIBS) \
|
|
$(CRYPTO_LIBS) \
|
|
$(EVENT_LIBS) \
|
|
$(LIBZCASH) \
|
|
$(LIBBITCOIN_CRYPTO) \
|
|
$(LIBZCASH_LIBS)
|
|
#
|
|
|
|
# zcash-tx binary #
|
|
zcash_tx_SOURCES = bitcoin-tx.cpp
|
|
zcash_tx_CPPFLAGS = $(BITCOIN_INCLUDES)
|
|
zcash_tx_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
|
|
|
|
if TARGET_WINDOWS
|
|
zcash_tx_SOURCES += bitcoin-tx-res.rc
|
|
endif
|
|
|
|
# FIXME: Is libzcash needed for zcash_tx?
|
|
zcash_tx_LDADD = \
|
|
$(LIBUNIVALUE) \
|
|
$(LIBBITCOIN_COMMON) \
|
|
$(LIBBITCOIN_UTIL) \
|
|
$(LIBSECP256K1) \
|
|
$(LIBZCASH) \
|
|
$(LIBBITCOIN_CRYPTO) \
|
|
$(LIBZCASH_LIBS)
|
|
|
|
zcash_tx_LDADD += $(BOOST_LIBS) $(CRYPTO_LIBS)
|
|
#
|
|
|
|
# zcash protocol primitives #
|
|
libzcash_a_SOURCES = \
|
|
zcash/IncrementalMerkleTree.cpp \
|
|
zcash/NoteEncryption.cpp \
|
|
zcash/Address.cpp \
|
|
zcash/JoinSplit.cpp \
|
|
zcash/Proof.cpp \
|
|
zcash/Note.cpp \
|
|
zcash/prf.cpp \
|
|
zcash/util.cpp \
|
|
zcash/circuit/commitment.tcc \
|
|
zcash/circuit/gadget.tcc \
|
|
zcash/circuit/merkle.tcc \
|
|
zcash/circuit/note.tcc \
|
|
zcash/circuit/prfs.tcc \
|
|
zcash/circuit/utils.tcc
|
|
|
|
libzcash_a_CPPFLAGS = -DMULTICORE -fopenmp -fPIC -DBINARY_OUTPUT -DCURVE_ALT_BN128 -DBOOST_SPIRIT_THREADSAFE -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS $(HARDENED_CPPFLAGS) -pipe -O1 -g -Wstack-protector -fstack-protector-all -fPIE -fvisibility=hidden -DSTATIC $(BITCOIN_INCLUDES)
|
|
|
|
libzcash_a_CXXFLAGS = $(HARDENED_CXXFLAGS) -fwrapv -fno-strict-aliasing
|
|
|
|
libzcash_a_LDFLAGS = $(HARDENED_LDFLAGS)
|
|
|
|
libzcash_a_CPPFLAGS += -DMONTGOMERY_OUTPUT
|
|
|
|
# zcashconsensus library #
|
|
if BUILD_BITCOIN_LIBS
|
|
include_HEADERS = script/zcashconsensus.h
|
|
libzcashconsensus_la_SOURCES = \
|
|
crypto/equihash.cpp \
|
|
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/zcashconsensus.cpp \
|
|
script/interpreter.cpp \
|
|
script/script.cpp \
|
|
uint256.cpp \
|
|
utilstrencodings.cpp
|
|
|
|
if GLIBC_BACK_COMPAT
|
|
libzcashconsensus_la_SOURCES += compat/glibc_compat.cpp
|
|
endif
|
|
|
|
libzcashconsensus_la_LDFLAGS = -no-undefined $(RELDFLAGS)
|
|
libzcashconsensus_la_LIBADD = $(CRYPTO_LIBS)
|
|
libzcashconsensus_la_CPPFLAGS = $(CRYPTO_CFLAGS) -I$(builddir)/obj -DBUILD_BITCOIN_INTERNAL
|
|
|
|
endif
|
|
#
|
|
|
|
CLEANFILES = leveldb/libleveldb.a leveldb/libmemenv.a *.gcda *.gcno */*.gcno wallet/*/*.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) $(CXXFLAGS) -c -o $@ $<
|
|
|
|
check-symbols: $(bin_PROGRAMS)
|
|
if GLIBC_BACK_COMPAT
|
|
@echo "Checking glibc back compat of [$(bin_PROGRAMS)]..."
|
|
$(AM_V_at) READELF=$(READELF) CPPFILT=$(CPPFILT) $(top_srcdir)/contrib/devtools/symbol-check.py < $(bin_PROGRAMS)
|
|
endif
|
|
|
|
check-security: $(bin_PROGRAMS)
|
|
if HARDEN
|
|
@echo "Checking binary security of [$(bin_PROGRAMS)]..."
|
|
$(AM_V_at) READELF=$(READELF) OBJDUMP=$(OBJDUMP) $(top_srcdir)/contrib/devtools/security-check.py < $(bin_PROGRAMS)
|
|
endif
|
|
|
|
%.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
|
|
include Makefile.gtest.include
|
|
endif
|
|
|
|
include Makefile.zcash.include
|