| diff --git a/build-aux/m4/bitcoin_subdir_to_include.m4 b/build-aux/m4/bitcoin_subdir_to_include.m4 |
| index 66f106c..5f0a3b1 100644 |
| --- a/build-aux/m4/bitcoin_subdir_to_include.m4 |
| +++ b/build-aux/m4/bitcoin_subdir_to_include.m4 |
| @@ -5,7 +5,7 @@ AC_DEFUN([BITCOIN_SUBDIR_TO_INCLUDE],[ |
| AC_MSG_RESULT([default]) |
| else |
| echo "#include <$2$3.h>" >conftest.cpp |
| - newinclpath=`${CXXCPP} ${CPPFLAGS} -M conftest.cpp 2>/dev/null | [ tr -d '\\n\\r\\\\' | sed -e 's/^.*[[:space:]:]\(\/[^[:space:]]*\)]$3[\.h[[:space:]].*$/\1/' -e t -e d`] |
| + newinclpath=$(${CXXCPP} ${CPPFLAGS} -M conftest.cpp 2>/dev/null | sed [-E -e ':a' -e '/\\$/!b b' -e N -e 's/\\\n/ /' -e 't a' -e ':b' -e 's/^[^:]*:[[:space:]]*(([^[:space:]\]|\\.)*[[:space:]])*(([^[:space:]\]|\\.)*)]$3\.h[([[:space:]].*)?$/\3/' -e 't' -e d]) |
| AC_MSG_RESULT([${newinclpath}]) |
| if test "x${newinclpath}" != "x"; then |
| eval "$1=\"\$$1\"' -I${newinclpath}'" |
| diff --git a/configure.ac b/configure.ac |
| index 939dfea..6c9acb3 100644 |
| --- a/configure.ac |
| +++ b/configure.ac |
| @@ -200,6 +200,18 @@ AC_ARG_WITH([utils], |
| [build_bitcoin_utils=$withval], |
| [build_bitcoin_utils=yes]) |
| |
| +AC_ARG_ENABLE([util-cli], |
| + [AS_HELP_STRING([--enable-util-cli], |
| + [build bitcoin-cli])], |
| + [build_bitcoin_cli=$enableval], |
| + [build_bitcoin_cli=$build_bitcoin_utils]) |
| + |
| +AC_ARG_ENABLE([util-tx], |
| + [AS_HELP_STRING([--enable-util-tx], |
| + [build bitcoin-tx])], |
| + [build_bitcoin_tx=$enableval], |
| + [build_bitcoin_tx=$build_bitcoin_utils]) |
| + |
| AC_ARG_WITH([libs], |
| [AS_HELP_STRING([--with-libs], |
| [build libraries (default=yes)])], |
| @@ -531,14 +543,65 @@ if test x$use_reduce_exports = xyes; then |
| [AC_MSG_ERROR([Cannot set default symbol visibility. Use --disable-reduce-exports.])]) |
| fi |
| |
| +dnl Check for leveldb, only if explicitly requested |
| LEVELDB_CPPFLAGS= |
| LIBLEVELDB= |
| LIBMEMENV= |
| -AM_CONDITIONAL([EMBEDDED_LEVELDB],[true]) |
| +AC_ARG_WITH([system-leveldb], |
| + [AS_HELP_STRING([--with-system-leveldb], |
| + [Build with system LevelDB (default is no; DANGEROUS; NOT SUPPORTED)])], |
| + [system_leveldb=$withval], |
| + [system_leveldb=no] |
| +) |
| +if test x$system_leveldb != xno; then |
| + LEVELDB_CPPFLAGS= |
| + AC_CHECK_LIB([leveldb],[main],[ |
| + LIBLEVELDB=-lleveldb |
| + ],[ |
| + AC_MSG_ERROR([leveldb library not found; using --with-system-leveldb is not supported anyway]) |
| + ]) |
| + TEMP_LIBS="$LIBS" |
| + LIBS="$LIBS $LIBLEVELDB" |
| + AC_CHECK_LIB([memenv],[main],[ |
| + LIBMEMENV=-lmemenv |
| + ],[ |
| + AC_MSG_ERROR([LevelDB's memenv library not found; using --with-system-leveldb is not supported anyway]) |
| + ]) |
| + LIBS="$TEMP_LIBS" |
| + AC_CHECK_HEADER([leveldb/filter_policy.h],[],[ |
| + AC_MSG_ERROR([LevelDB headers not found; using --with-system-leveldb is not supported anyway]) |
| + ]) |
| + AC_CHECK_HEADER([leveldb/helpers/memenv.h],[ |
| + AC_MSG_CHECKING([for memenv.h path]) |
| + BITCOIN_SUBDIR_TO_INCLUDE([LEVELDB_CPPFLAGS],[leveldb/helpers/],[memenv]) |
| + ],[ |
| + AC_CHECK_HEADER([memenv.h],[],[ |
| + AC_MSG_ERROR([LevelDB headers not found; using --with-system-leveldb is not supported anyway]) |
| + ]) |
| + ]) |
| +fi |
| +AM_CONDITIONAL([EMBEDDED_LEVELDB],[test x$system_leveldb = xno]) |
| AC_SUBST(LEVELDB_CPPFLAGS) |
| AC_SUBST(LIBLEVELDB) |
| AC_SUBST(LIBMEMENV) |
| |
| +dnl Check for libsecp256k1, only if explicitly requested |
| +AC_ARG_WITH([system-libsecp256k1], |
| + [AS_HELP_STRING([--with-system-libsecp256k1], |
| + [Build with system libsecp256k1 (default is no; DANGEROUS; NOT SUPPORTED)])], |
| + [system_libsecp256k1=$withval], |
| + [system_libsecp256k1=no] |
| +) |
| +if test x$system_libsecp256k1 != xno; then |
| + PKG_CHECK_MODULES([libsecp256k1],[libsecp256k1],,[true]) |
| +else |
| + libsecp256k1_CFLAGS='-I$(srcdir)/secp256k1/include' |
| + libsecp256k1_LIBS='secp256k1/libsecp256k1.la' |
| +fi |
| +AM_CONDITIONAL([EMBEDDED_LIBSECP256K1],[test x$system_libsecp256k1 = xno]) |
| +AC_SUBST(libsecp256k1_CFLAGS) |
| +AC_SUBST(libsecp256k1_LIBS) |
| + |
| if test x$enable_wallet != xno; then |
| dnl Check for libdb_cxx only if wallet enabled |
| BITCOIN_FIND_BDB48 |
| @@ -558,7 +621,7 @@ BITCOIN_QT_INIT |
| dnl sets $bitcoin_enable_qt, $bitcoin_enable_qt_test, $bitcoin_enable_qt_dbus |
| BITCOIN_QT_CONFIGURE([$use_pkgconfig], [qt5]) |
| |
| -if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests = xnononono; then |
| +if test x$build_bitcoin_cli$build_bitcoin_tx$build_bitcoind$bitcoin_enable_qt$use_tests = xnonononono; then |
| use_boost=no |
| else |
| use_boost=yes |
| @@ -848,9 +911,13 @@ AC_MSG_CHECKING([whether to build bitcoind]) |
| AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes]) |
| AC_MSG_RESULT($build_bitcoind) |
| |
| -AC_MSG_CHECKING([whether to build utils (bitcoin-cli bitcoin-tx)]) |
| -AM_CONDITIONAL([BUILD_BITCOIN_UTILS], [test x$build_bitcoin_utils = xyes]) |
| -AC_MSG_RESULT($build_bitcoin_utils) |
| +AC_MSG_CHECKING([whether to build bitcoin-cli]) |
| +AM_CONDITIONAL([BUILD_BITCOIN_CLI], [test x$build_bitcoin_cli = xyes]) |
| +AC_MSG_RESULT($build_bitcoin_cli) |
| + |
| +AC_MSG_CHECKING([whether to build bitcoin-tx]) |
| +AM_CONDITIONAL([BUILD_BITCOIN_TX], [test x$build_bitcoin_tx = xyes]) |
| +AC_MSG_RESULT($build_bitcoin_tx) |
| |
| AC_MSG_CHECKING([whether to build libraries]) |
| AM_CONDITIONAL([BUILD_BITCOIN_LIBS], [test x$build_bitcoin_libs = xyes]) |
| @@ -975,7 +1042,7 @@ else |
| AC_MSG_RESULT([no]) |
| fi |
| |
| -if test x$build_bitcoin_utils$build_bitcoin_libs$build_bitcoind$bitcoin_enable_qt$use_tests = xnonononono; then |
| +if test x$build_bitcoin_cli$build_bitcoin_tx$build_bitcoin_libs$build_bitcoind$bitcoin_enable_qt$use_tests = xnononononono; then |
| AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon --with-gui or --enable-tests]) |
| fi |
| |
| @@ -1062,8 +1129,10 @@ if test x$system_univalue = xno; then |
| AC_CONFIG_SUBDIRS([src/univalue]) |
| fi |
| |
| +if test x$system_libsecp256k1 = xno; then |
| ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no --enable-module-recovery" |
| AC_CONFIG_SUBDIRS([src/secp256k1]) |
| +fi |
| |
| AC_OUTPUT |
| |
| diff --git a/qa/pull-tester/rpc-tests.py b/qa/pull-tester/rpc-tests.py |
| index 7649c11..978419b 100755 |
| --- a/qa/pull-tester/rpc-tests.py |
| +++ b/qa/pull-tester/rpc-tests.py |
| @@ -36,8 +36,8 @@ if not vars().has_key('ENABLE_WALLET'): |
| ENABLE_WALLET=0 |
| if not vars().has_key('ENABLE_BITCOIND'): |
| ENABLE_BITCOIND=0 |
| -if not vars().has_key('ENABLE_UTILS'): |
| - ENABLE_UTILS=0 |
| +if not vars().has_key('ENABLE_CLI'): |
| + ENABLE_CLI=0 |
| if not vars().has_key('ENABLE_ZMQ'): |
| ENABLE_ZMQ=0 |
| |
| @@ -141,7 +141,7 @@ def runtests(): |
| coverage = RPCCoverage() |
| print("Initializing coverage directory at %s\n" % coverage.dir) |
| |
| - if(ENABLE_WALLET == 1 and ENABLE_UTILS == 1 and ENABLE_BITCOIND == 1): |
| + if(ENABLE_WALLET == 1 and ENABLE_CLI == 1 and ENABLE_BITCOIND == 1): |
| rpcTestDir = buildDir + '/qa/rpc-tests/' |
| run_extended = '-extended' in opts |
| cov_flag = coverage.flag if coverage else '' |
| @@ -187,7 +187,7 @@ def runtests(): |
| coverage.cleanup() |
| |
| else: |
| - print "No rpc tests to run. Wallet, utils, and bitcoind must all be enabled" |
| + print "No rpc tests to run. Wallet, cli, and bitcoind must all be enabled" |
| |
| |
| class RPCCoverage(object): |
| diff --git a/qa/pull-tester/tests_config.py.in b/qa/pull-tester/tests_config.py.in |
| index 937b423..71a917c 100644 |
| --- a/qa/pull-tester/tests_config.py.in |
| +++ b/qa/pull-tester/tests_config.py.in |
| @@ -8,7 +8,7 @@ EXEEXT="@EXEEXT@" |
| |
| # These will turn into comments if they were disabled when configuring. |
| @ENABLE_WALLET_TRUE@ENABLE_WALLET=1 |
| -@BUILD_BITCOIN_UTILS_TRUE@ENABLE_UTILS=1 |
| +@BUILD_BITCOIN_CLI_TRUE@ENABLE_CLI=1 |
| @BUILD_BITCOIND_TRUE@ENABLE_BITCOIND=1 |
| @ENABLE_ZMQ_TRUE@ENABLE_ZMQ=1 |
| |
| diff --git a/src/Makefile.am b/src/Makefile.am |
| index fa7a78f..cc2f2ca 100644 |
| --- a/src/Makefile.am |
| +++ b/src/Makefile.am |
| @@ -31,7 +31,7 @@ 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 += $(libsecp256k1_CFLAGS) |
| BITCOIN_INCLUDES += $(UNIVALUE_CFLAGS) |
| |
| LIBBITCOIN_SERVER=libbitcoin_server.a |
| @@ -42,10 +42,16 @@ LIBBITCOIN_CLI=libbitcoin_cli.a |
| LIBBITCOIN_UTIL=libbitcoin_util.a |
| LIBBITCOIN_CRYPTO=crypto/libbitcoin_crypto.a |
| LIBBITCOINQT=qt/libbitcoinqt.a |
| +if EMBEDDED_LIBSECP256K1 |
| LIBSECP256K1=secp256k1/libsecp256k1.la |
| +else |
| +LIBSECP256K1=$(libsecp256k1_LIBS) |
| +endif |
| |
| +if EMBEDDED_LIBSECP256K1 |
| $(LIBSECP256K1): $(wildcard secp256k1/src/*) $(wildcard secp256k1/include/*) |
| $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F) |
| +endif |
| |
| # 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: |
| @@ -79,8 +85,11 @@ if BUILD_BITCOIND |
| bin_PROGRAMS += bitcoind |
| endif |
| |
| -if BUILD_BITCOIN_UTILS |
| - bin_PROGRAMS += bitcoin-cli bitcoin-tx |
| +if BUILD_BITCOIN_CLI |
| + bin_PROGRAMS += bitcoin-cli |
| +endif |
| +if BUILD_BITCOIN_TX |
| + bin_PROGRAMS += bitcoin-tx |
| endif |
| |
| .PHONY: FORCE check-symbols check-security |
| diff --git a/src/Makefile.test.include b/src/Makefile.test.include |
| index 6ef6a69..1b6e759 100644 |
| --- a/src/Makefile.test.include |
| +++ b/src/Makefile.test.include |
| @@ -127,7 +127,9 @@ bitcoin_test_clean : FORCE |
| check-local: |
| @echo "Running test/bitcoin-util-test.py..." |
| $(AM_V_at)srcdir=$(srcdir) PYTHONPATH=$(builddir)/test $(srcdir)/test/bitcoin-util-test.py |
| +if EMBEDDED_LIBSECP256K1 |
| $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C secp256k1 check |
| +endif |
| if EMBEDDED_UNIVALUE |
| $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C univalue check |
| endif |