aboutsummaryrefslogtreecommitdiff
path: root/src/Makefile.am
diff options
context:
space:
mode:
Diffstat (limited to 'src/Makefile.am')
-rw-r--r--src/Makefile.am436
1 files changed, 436 insertions, 0 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000000..8de216c176
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,436 @@
+DIST_SUBDIRS = secp256k1
+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
+
+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
+LIBBITCOIN_UNIVALUE=univalue/libbitcoin_univalue.a
+LIBBITCOINQT=qt/libbitcoinqt.a
+LIBSECP256K1=secp256k1/libsecp256k1.la
+
+$(LIBSECP256K1): $(wildcard secp256k1/src/*) $(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 = \
+ crypto/libbitcoin_crypto.a \
+ libbitcoin_util.a \
+ libbitcoin_common.a \
+ univalue/libbitcoin_univalue.a \
+ libbitcoin_server.a \
+ libbitcoin_cli.a
+if ENABLE_WALLET
+BITCOIN_INCLUDES += $(BDB_CPPFLAGS)
+EXTRA_LIBRARIES += libbitcoin_wallet.a
+endif
+
+if BUILD_BITCOIN_LIBS
+lib_LTLIBRARIES = libbitcoinconsensus.la
+LIBBITCOIN_CONSENSUS=libbitcoinconsensus.la
+else
+LIBBITCOIN_CONSENSUS=
+endif
+
+bin_PROGRAMS =
+TESTS =
+
+if BUILD_BITCOIND
+ bin_PROGRAMS += bitcoind
+endif
+
+if BUILD_BITCOIN_UTILS
+ bin_PROGRAMS += bitcoin-cli bitcoin-tx
+endif
+
+.PHONY: FORCE
+# bitcoin core #
+BITCOIN_CORE_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/params.h \
+ consensus/validation.h \
+ core_io.h \
+ eccryptoverify.h \
+ ecwrapper.h \
+ hash.h \
+ init.h \
+ key.h \
+ keystore.h \
+ leveldbwrapper.h \
+ limitedmap.h \
+ main.h \
+ memusage.h \
+ merkleblock.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/pagelocker.h \
+ sync.h \
+ threadsafety.h \
+ timedata.h \
+ tinyformat.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
+
+JSON_H = \
+ json/json_spirit.h \
+ json/json_spirit_error_position.h \
+ json/json_spirit_reader.h \
+ json/json_spirit_reader_template.h \
+ json/json_spirit_stream_reader.h \
+ json/json_spirit_utils.h \
+ json/json_spirit_value.h \
+ json/json_spirit_writer.h \
+ json/json_spirit_writer_template.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 bitcoind and bitcoin-qt
+libbitcoin_server_a_CPPFLAGS = $(BITCOIN_INCLUDES) $(MINIUPNPC_CPPFLAGS)
+libbitcoin_server_a_SOURCES = \
+ addrman.cpp \
+ alert.cpp \
+ bloom.cpp \
+ chain.cpp \
+ checkpoints.cpp \
+ init.cpp \
+ leveldbwrapper.cpp \
+ main.cpp \
+ merkleblock.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 \
+ txdb.cpp \
+ txmempool.cpp \
+ validationinterface.cpp \
+ $(JSON_H) \
+ $(BITCOIN_CORE_H)
+
+# wallet: shared between bitcoind and bitcoin-qt, but only linked
+# when wallet enabled
+libbitcoin_wallet_a_CPPFLAGS = $(BITCOIN_INCLUDES)
+libbitcoin_wallet_a_SOURCES = \
+ 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)
+
+# crypto primitives library
+crypto_libbitcoin_crypto_a_CPPFLAGS = $(BITCOIN_CONFIG_INCLUDES)
+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/ripemd160.h \
+ crypto/sha1.cpp \
+ crypto/sha1.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.h \
+ univalue/univalue_escapes.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 = \
+ 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)
+
+# 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)
+
+if GLIBC_BACK_COMPAT
+libbitcoin_util_a_SOURCES += compat/glibc_compat.cpp
+endif
+
+# cli: shared between bitcoin-cli and bitcoin-qt
+libbitcoin_cli_a_CPPFLAGS = $(BITCOIN_INCLUDES)
+libbitcoin_cli_a_SOURCES = \
+ rpcclient.cpp \
+ $(BITCOIN_CORE_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)
+
+if TARGET_WINDOWS
+bitcoind_SOURCES += bitcoind-res.rc
+endif
+
+bitcoind_LDADD = \
+ $(LIBBITCOIN_SERVER) \
+ $(LIBBITCOIN_COMMON) \
+ $(LIBBITCOIN_UNIVALUE) \
+ $(LIBBITCOIN_UTIL) \
+ $(LIBBITCOIN_CRYPTO) \
+ $(LIBLEVELDB) \
+ $(LIBMEMENV) \
+ $(LIBSECP256K1)
+
+if ENABLE_WALLET
+bitcoind_LDADD += libbitcoin_wallet.a
+endif
+
+bitcoind_LDADD += $(BOOST_LIBS) $(BDB_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS) $(MINIUPNPC_LIBS)
+#
+
+# bitcoin-cli binary #
+bitcoin_cli_SOURCES = bitcoin-cli.cpp
+bitcoin_cli_CPPFLAGS = $(BITCOIN_INCLUDES)
+bitcoin_cli_LDFLAGS = $(RELDFLAGS) $(AM_LDFLAGS) $(LIBTOOL_APP_LDFLAGS)
+
+if TARGET_WINDOWS
+bitcoin_cli_SOURCES += bitcoin-cli-res.rc
+endif
+
+bitcoin_cli_LDADD = \
+ $(LIBBITCOIN_CLI) \
+ $(LIBBITCOIN_UTIL) \
+ $(LIBSECP256K1)
+
+bitcoin_cli_LDADD += $(BOOST_LIBS) $(SSL_LIBS) $(CRYPTO_LIBS)
+#
+
+# bitcoin-tx binary #
+bitcoin_tx_SOURCES = bitcoin-tx.cpp
+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
+
+bitcoin_tx_LDADD = \
+ $(LIBBITCOIN_UNIVALUE) \
+ $(LIBBITCOIN_COMMON) \
+ $(LIBBITCOIN_UTIL) \
+ $(LIBBITCOIN_CRYPTO) \
+ $(LIBSECP256K1)
+
+bitcoin_tx_LDADD += $(BOOST_LIBS) $(CRYPTO_LIBS)
+#
+
+# bitcoinconsensus library #
+if BUILD_BITCOIN_LIBS
+include_HEADERS = script/bitcoinconsensus.h
+libbitcoinconsensus_la_SOURCES = \
+ 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/bitcoinconsensus.cpp \
+ script/interpreter.cpp \
+ script/script.cpp \
+ uint256.cpp \
+ utilstrencodings.cpp
+
+if GLIBC_BACK_COMPAT
+ libbitcoinconsensus_la_SOURCES += compat/glibc_compat.cpp
+endif
+
+libbitcoinconsensus_la_LDFLAGS = -no-undefined $(RELDFLAGS)
+libbitcoinconsensus_la_LIBADD = $(CRYPTO_LIBS)
+libbitcoinconsensus_la_CPPFLAGS = $(CRYPTO_CFLAGS) -I$(builddir)/obj -DBUILD_BITCOIN_INTERNAL
+
+endif
+#
+
+CLEANFILES = leveldb/libleveldb.a leveldb/libmemenv.a *.gcda *.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) $(QT_INCLUDES) $(CXXFLAGS) -c -o $@ $<
+
+%.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
+endif
+
+if ENABLE_QT
+include Makefile.qt.include
+endif
+
+if ENABLE_QT_TESTS
+include Makefile.qttest.include
+endif