$(LIBLEVELDB) $(LIBMEMENV):
@echo "Building LevelDB ..." && $(MAKE) -C $(@D) $(@F) CXX="$(CXX)" \
CC="$(CC)" PLATFORM=$(TARGET_OS) AR="$(AR)" $(LEVELDB_TARGET_FLAGS) \
- OPT="$(CXXFLAGS) $(CPPFLAGS)"
+ OPT="$(CXXFLAGS) $(CPPFLAGS) -D__STDC_LIMIT_MACROS"
endif
BITCOIN_CONFIG_INCLUDES=-I$(builddir)/config
LIBBITCOIN_UNIVALUE=univalue/libbitcoin_univalue.a
LIBBITCOINQT=qt/libbitcoinqt.a
LIBSECP256K1=secp256k1/libsecp256k1.la
+LIBZCASH=libzcash.a
$(LIBSECP256K1): $(wildcard secp256k1/src/*) $(wildcard secp256k1/include/*)
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F)
libbitcoin_common.a \
univalue/libbitcoin_univalue.a \
libbitcoin_server.a \
- libbitcoin_cli.a
+ libbitcoin_cli.a \
+ libzcash.a
if ENABLE_WALLET
BITCOIN_INCLUDES += $(BDB_CPPFLAGS)
EXTRA_LIBRARIES += libbitcoin_wallet.a
TESTS =
if BUILD_BITCOIND
- bin_PROGRAMS += bitcoind
+ bin_PROGRAMS += zcashd
endif
if BUILD_BITCOIN_UTILS
- bin_PROGRAMS += bitcoin-cli bitcoin-tx
+ bin_PROGRAMS += zcash-cli bitcoin-tx
endif
+# TODO: rename to libzcash
+LIBZCASH_H = \
+ zcash/IncrementalMerkleTree.h \
+ zerocash/utils/util.h \
+ zcash/NoteEncryption.hpp \
+ zcash/Address.hpp \
+ zcash/JoinSplit.hpp \
+ zcash/Note.hpp \
+ zcash/prf.h \
+ zcash/util.h
+
.PHONY: FORCE
# bitcoin core #
BITCOIN_CORE_H = \
base58.h \
bloom.h \
chain.h \
- chainparamsbase.h \
chainparams.h \
+ chainparamsbase.h \
chainparamsseeds.h \
checkpoints.h \
checkqueue.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 \
- wallet/db.h \
eccryptoverify.h \
ecwrapper.h \
hash.h \
leveldbwrapper.h \
limitedmap.h \
main.h \
+ memusage.h \
merkleblock.h \
miner.h \
mruset.h \
- netbase.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_error.h \
script/script.h \
+ script/script_error.h \
script/sigcache.h \
script/sign.h \
script/standard.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/crypter.h \
- wallet/walletdb.h \
+ wallet/db.h \
wallet/wallet.h \
wallet/wallet_ismine.h \
- compat/byteswap.h \
- compat/endian.h \
- compat/sanity.h
+ wallet/walletdb.h
JSON_H = \
json/json_spirit.h \
miner.cpp \
net.cpp \
noui.cpp \
+ policy/fees.cpp \
pow.cpp \
rest.cpp \
rpcblockchain.cpp \
timedata.cpp \
txdb.cpp \
txmempool.cpp \
+ validationinterface.cpp \
$(JSON_H) \
- $(BITCOIN_CORE_H)
+ $(BITCOIN_CORE_H) \
+ $(LIBZCASH_H)
# wallet: shared between bitcoind and bitcoin-qt, but only linked
# when wallet enabled
libbitcoin_wallet_a_CPPFLAGS = $(BITCOIN_INCLUDES)
libbitcoin_wallet_a_SOURCES = \
+ zcbenchmarks.cpp \
wallet/crypter.cpp \
wallet/db.cpp \
wallet/rpcdump.cpp \
wallet/wallet.cpp \
wallet/wallet_ismine.cpp \
wallet/walletdb.cpp \
- $(BITCOIN_CORE_H)
+ $(BITCOIN_CORE_H) \
+ $(LIBZCASH_H)
# crypto primitives library
crypto_libbitcoin_crypto_a_CPPFLAGS = $(BITCOIN_CONFIG_INCLUDES)
crypto_libbitcoin_crypto_a_SOURCES = \
- crypto/sha1.cpp \
- crypto/sha256.cpp \
- crypto/sha512.cpp \
- crypto/hmac_sha256.cpp \
- crypto/hmac_sha512.cpp \
- crypto/ripemd160.cpp \
crypto/common.h \
- crypto/sha256.h \
- crypto/sha512.h \
+ crypto/equihash.cpp \
+ crypto/equihash.h \
+ 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/ripemd160.h
+ crypto/sha256.cpp \
+ crypto/sha256.h \
+ crypto/sha512.cpp \
+ crypto/sha512.h
# univalue JSON library
univalue_libbitcoin_univalue_a_SOURCES = \
univalue/univalue.cpp \
- univalue/univalue_read.cpp \
- univalue/univalue_write.cpp \
+ univalue/univalue.h \
univalue/univalue_escapes.h \
- univalue/univalue.h
+ univalue/univalue_read.cpp \
+ univalue/univalue_write.cpp
# common: shared between bitcoind, and bitcoin-qt and non-server tools
libbitcoin_common_a_CPPFLAGS = $(BITCOIN_INCLUDES)
libbitcoin_common_a_SOURCES = \
- arith_uint256.cpp \
amount.cpp \
+ arith_uint256.cpp \
base58.cpp \
chainparams.cpp \
coins.cpp \
compressor.cpp \
- primitives/block.cpp \
- primitives/transaction.cpp \
core_read.cpp \
core_write.cpp \
eccryptoverify.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 \
- script/script_error.cpp \
- $(BITCOIN_CORE_H)
+ $(BITCOIN_CORE_H) \
+ $(LIBZCASH_H)
# util: shared between all executables.
# This library *must* be included to make sure that the glibc
utilmoneystr.cpp \
utilstrencodings.cpp \
utiltime.cpp \
- $(BITCOIN_CORE_H)
+ $(BITCOIN_CORE_H) \
+ $(LIBZCASH_H)
if GLIBC_BACK_COMPAT
libbitcoin_util_a_SOURCES += compat/glibc_compat.cpp
libbitcoin_cli_a_CPPFLAGS = $(BITCOIN_INCLUDES)
libbitcoin_cli_a_SOURCES = \
rpcclient.cpp \
- $(BITCOIN_CORE_H)
+ $(BITCOIN_CORE_H) \
+ $(LIBZCASH_H)
nodist_libbitcoin_util_a_SOURCES = $(srcdir)/obj/build.h
#
# bitcoind binary #
-bitcoind_SOURCES = bitcoind.cpp
-bitcoind_CPPFLAGS = $(BITCOIN_INCLUDES)
-bitcoind_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
+zcashd_SOURCES = bitcoind.cpp
+zcashd_CPPFLAGS = $(BITCOIN_INCLUDES)
+zcashd_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
if TARGET_WINDOWS
-bitcoind_SOURCES += bitcoind-res.rc
+zcashd_SOURCES += bitcoind-res.rc
endif
-bitcoind_LDADD = \
+zcashd_LDADD = \
$(LIBBITCOIN_SERVER) \
$(LIBBITCOIN_COMMON) \
$(LIBBITCOIN_UNIVALUE) \
$(LIBBITCOIN_UTIL) \
$(LIBBITCOIN_CRYPTO) \
+ $(LIBZCASH) \
$(LIBLEVELDB) \
$(LIBMEMENV) \
$(LIBSECP256K1)
if ENABLE_WALLET
-bitcoind_LDADD += libbitcoin_wallet.a
+zcashd_LDADD += libbitcoin_wallet.a
endif
-bitcoind_LDADD += $(BOOST_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS)
+zcashd_LDADD += \
+ $(BOOST_LIBS) \
+ $(BDB_LIBS) \
+ $(SSL_LIBS) \
+ $(CRYPTO_LIBS) \
+ $(MINIUPNPC_LIBS) \
+ $(LIBZCASH) \
+ $(LIBBITCOIN_CRYPTO) \
+ $(LIBZCASH_LIBS)
#
# bitcoin-cli binary #
-bitcoin_cli_SOURCES = bitcoin-cli.cpp
-bitcoin_cli_CPPFLAGS = $(BITCOIN_INCLUDES)
-bitcoin_cli_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
+zcash_cli_SOURCES = bitcoin-cli.cpp
+zcash_cli_CPPFLAGS = $(BITCOIN_INCLUDES)
+zcash_cli_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
if TARGET_WINDOWS
-bitcoin_cli_SOURCES += bitcoin-cli-res.rc
+zcash_cli_SOURCES += bitcoin-cli-res.rc
endif
-bitcoin_cli_LDADD = \
+zcash_cli_LDADD = \
$(LIBBITCOIN_CLI) \
$(LIBBITCOIN_UTIL) \
- $(LIBSECP256K1)
-
-bitcoin_cli_LDADD += $(BOOST_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS)
+ $(BOOST_LIBS) \
+ $(SSL_LIBS) \
+ $(CRYPTO_LIBS) \
+ $(LIBZCASH) \
+ $(LIBBITCOIN_CRYPTO) \
+ $(LIBZCASH_LIBS)
#
# bitcoin-tx binary #
bitcoin_tx_CPPFLAGS = $(BITCOIN_INCLUDES)
bitcoin_tx_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
+if TARGET_WINDOWS
+bitcoin_tx_SOURCES += bitcoin-tx-res.rc
+endif
+
+# FIXME: Is libzcash needed for bitcoin_tx?
bitcoin_tx_LDADD = \
$(LIBBITCOIN_UNIVALUE) \
$(LIBBITCOIN_COMMON) \
$(LIBBITCOIN_UTIL) \
+ $(LIBSECP256K1) \
+ $(LIBZCASH) \
$(LIBBITCOIN_CRYPTO) \
- $(LIBSECP256K1)
+ $(LIBZCASH_LIBS)
bitcoin_tx_LDADD += $(BOOST_LIBS) $(CRYPTO_LIBS)
#
+# zerocash protocol primitives #
+libzcash_a_SOURCES = \
+ zcash/IncrementalMerkleTree.cpp \
+ zerocash/utils/util.cpp \
+ zcash/NoteEncryption.cpp \
+ zcash/Address.cpp \
+ zcash/JoinSplit.cpp \
+ zcash/Note.cpp \
+ zcash/prf.cpp \
+ zcash/util.cpp
+
+libzcash_a_CPPFLAGS = -DMULTICORE -fopenmp -fPIC -DBINARY_OUTPUT -DCURVE_ALT_BN128 -DBOOST_SPIRIT_THREADSAFE -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS $(HARDENED_CPPFLAGS) -pipe -O2 -O0 -g -Wstack-protector -fstack-protector-all -fPIE -fvisibility=hidden -DSTATIC $(BITCOIN_INCLUDES)
+
# bitcoinconsensus library #
if BUILD_BITCOIN_LIBS
include_HEADERS = script/bitcoinconsensus.h
libbitcoinconsensus_la_SOURCES = \
+ crypto/equihash.cpp \
crypto/hmac_sha512.cpp \
crypto/ripemd160.cpp \
crypto/sha1.cpp \
if ENABLE_TESTS
include Makefile.test.include
+include Makefile.gtest.include
endif
if ENABLE_QT
if ENABLE_QT_TESTS
include Makefile.qttest.include
endif
+
+include Makefile.zcash.include