You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
244 lines
8.9 KiB
244 lines
8.9 KiB
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 37fe47e..14e5c34 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -170,6 +170,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)])],
|
|
@@ -488,14 +500,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
|
|
@@ -515,7 +578,7 @@ BITCOIN_QT_INIT
|
|
dnl sets $bitcoin_enable_qt, $bitcoin_enable_qt_test, $bitcoin_enable_qt_dbus
|
|
BITCOIN_QT_CONFIGURE([$use_pkgconfig], [qt4])
|
|
|
|
-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
|
|
@@ -701,9 +764,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])
|
|
@@ -826,7 +893,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
|
|
|
|
@@ -895,8 +962,10 @@ PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
|
|
unset PKG_CONFIG_LIBDIR
|
|
PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
|
|
|
|
+if test x$system_libsecp256k1 = xno; then
|
|
ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no"
|
|
AC_CONFIG_SUBDIRS([src/secp256k1])
|
|
+fi
|
|
|
|
AC_OUTPUT
|
|
|
|
diff --git a/qa/pull-tester/rpc-tests.sh b/qa/pull-tester/rpc-tests.sh
|
|
index 9b31865..5bb187c 100755
|
|
--- a/qa/pull-tester/rpc-tests.sh
|
|
+++ b/qa/pull-tester/rpc-tests.sh
|
|
@@ -57,7 +57,7 @@ testScriptsExt=(
|
|
extArg="-extended"
|
|
passOn=${@#$extArg}
|
|
|
|
-if [ "x${ENABLE_BITCOIND}${ENABLE_UTILS}${ENABLE_WALLET}" = "x111" ]; then
|
|
+if [ "x${ENABLE_BITCOIND}${ENABLE_CLI}${ENABLE_WALLET}" = "x111" ]; then
|
|
for (( i = 0; i < ${#testScripts[@]}; i++ ))
|
|
do
|
|
if [ -z "$1" ] || [ "${1:0:1}" == "-" ] || [ "$1" == "${testScripts[$i]}" ] || [ "$1.py" == "${testScripts[$i]}" ]
|
|
diff --git a/qa/pull-tester/tests-config.sh.in b/qa/pull-tester/tests-config.sh.in
|
|
index 10f4d33..e0e407d 100755
|
|
--- a/qa/pull-tester/tests-config.sh.in
|
|
+++ b/qa/pull-tester/tests-config.sh.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
|
|
|
|
REAL_BITCOIND="$BUILDDIR/src/bitcoind${EXEEXT}"
|
|
diff --git a/src/Makefile.am b/src/Makefile.am
|
|
index 1c2f770..4d60ddf 100644
|
|
--- a/src/Makefile.am
|
|
+++ b/src/Makefile.am
|
|
@@ -1,4 +1,6 @@
|
|
+if EMBEDDED_LIBSECP256K1
|
|
DIST_SUBDIRS = secp256k1
|
|
+endif
|
|
AM_LDFLAGS = $(PTHREAD_CFLAGS) $(LIBTOOL_LDFLAGS)
|
|
|
|
|
|
@@ -20,7 +22,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)
|
|
|
|
LIBBITCOIN_SERVER=libbitcoin_server.a
|
|
LIBBITCOIN_WALLET=libbitcoin_wallet.a
|
|
@@ -30,10 +32,16 @@ LIBBITCOIN_UTIL=libbitcoin_util.a
|
|
LIBBITCOIN_CRYPTO=crypto/libbitcoin_crypto.a
|
|
LIBBITCOIN_UNIVALUE=univalue/libbitcoin_univalue.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:
|
|
@@ -63,8 +71,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
|
|
diff --git a/src/Makefile.test.include b/src/Makefile.test.include
|
|
index 0997148..14b4deb 100644
|
|
--- a/src/Makefile.test.include
|
|
+++ b/src/Makefile.test.include
|
|
@@ -111,10 +111,12 @@ bitcoin_test_check: $(TEST_BINARY) FORCE
|
|
bitcoin_test_clean : FORCE
|
|
rm -f $(CLEAN_BITCOIN_TEST) $(test_test_bitcoin_OBJECTS) $(TEST_BINARY)
|
|
|
|
+if EMBEDDED_LIBSECP256K1
|
|
check-local:
|
|
@echo "Running test/bitcoin-util-test.py..."
|
|
$(AM_V_at)srcdir=$(srcdir) PYTHONPATH=$(builddir)/test $(srcdir)/test/bitcoin-util-test.py
|
|
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C secp256k1 check
|
|
+endif
|
|
|
|
%.json.h: %.json
|
|
@$(MKDIR_P) $(@D)
|