aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Dashjr <luke-jr+git@utopios.org>2016-01-14 00:26:23 +0000
committerLuke Dashjr <luke-jr+git@utopios.org>2016-01-15 04:34:06 +0000
commitab22705a7b7796362ad7c6ec8f7465d3a450977f (patch)
tree75e45c178182f2ef7f7d8ad2b85c2497f666b6a0
parent2adf7e2c90b22d89308f36355f8a6de395e24c36 (diff)
downloadbitcoin-ab22705a7b7796362ad7c6ec8f7465d3a450977f.tar.xz
Build against system UniValue when available
-rw-r--r--configure.ac50
-rw-r--r--src/Makefile.am19
-rw-r--r--src/Makefile.test.include2
3 files changed, 64 insertions, 7 deletions
diff --git a/configure.ac b/configure.ac
index 63a745393e..9819c2493c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -148,6 +148,12 @@ AC_ARG_ENABLE([glibc-back-compat],
[use_glibc_compat=$enableval],
[use_glibc_compat=no])
+AC_ARG_WITH([system-univalue],
+ [AS_HELP_STRING([--without-system-univalue],
+ [Build with system UniValue (default is auto)])],
+ [system_univalue=$withval],
+ [system_univalue=auto]
+)
AC_ARG_ENABLE([zmq],
[AS_HELP_STRING([--disable-zmq],
[disable ZMQ notifications])],
@@ -742,6 +748,44 @@ else
fi
fi
+dnl univalue check
+
+if test x$system_univalue != xno ; then
+ found_univalue=no
+ if test x$use_pkgconfig = xyes; then
+ : #NOP
+ m4_ifdef(
+ [PKG_CHECK_MODULES],
+ [
+ PKG_CHECK_MODULES([UNIVALUE],[libunivalue],[found_univalue=yes],[true])
+ ]
+ )
+ else
+ AC_CHECK_HEADER([univalue.h],[
+ AC_CHECK_LIB([univalue], [main],[
+ UNIVALUE_LIBS=-lunivalue
+ found_univalue=yes
+ ],[true])
+ ],[true])
+ fi
+
+ if test x$found_univalue = xyes ; then
+ system_univalue=yes
+ elif test x$system_univalue = xyes ; then
+ AC_MSG_ERROR([univalue not found])
+ else
+ system_univalue=no
+ fi
+fi
+
+if test x$system_univalue = xno ; then
+ UNIVALUE_CFLAGS='-I$(srcdir)/univalue/include'
+ UNIVALUE_LIBS='univalue/libunivalue.la'
+fi
+AM_CONDITIONAL([EMBEDDED_UNIVALUE],[test x$system_univalue = xno])
+AC_SUBST(UNIVALUE_CFLAGS)
+AC_SUBST(UNIVALUE_LIBS)
+
CXXFLAGS_TEMP="$CXXFLAGS"
LIBS_TEMP="$LIBS"
CXXFLAGS="$CXXFLAGS $SSL_CFLAGS $CRYPTO_CFLAGS"
@@ -958,8 +1002,12 @@ PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
unset PKG_CONFIG_LIBDIR
PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
+if test x$system_univalue = xno; then
+ AC_CONFIG_SUBDIRS([src/univalue])
+fi
+
ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no --enable-module-recovery"
-AC_CONFIG_SUBDIRS([src/secp256k1 src/univalue])
+AC_CONFIG_SUBDIRS([src/secp256k1])
AC_OUTPUT
diff --git a/src/Makefile.am b/src/Makefile.am
index bb627a5448..97593bfe86 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1,9 +1,20 @@
-DIST_SUBDIRS = secp256k1 univalue
+DIST_SUBDIRS = secp256k1
AM_LDFLAGS = $(PTHREAD_CFLAGS) $(LIBTOOL_LDFLAGS) $(HARDENED_LDFLAGS)
AM_CXXFLAGS = $(HARDENED_CXXFLAGS)
AM_CPPFLAGS = $(HARDENED_CPPFLAGS)
+if EMBEDDED_UNIVALUE
+DIST_SUBDIRS += univalue
+
+LIBUNIVALUE = univalue/libunivalue.la
+
+$(LIBUNIVALUE): $(wildcard univalue/lib/*) $(wildcard univalue/include/*)
+ $(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F)
+else
+LIBUNIVALUE = $(UNIVALUE_LIBS)
+endif
+
if EMBEDDED_LEVELDB
LEVELDB_CPPFLAGS += -I$(srcdir)/leveldb/include
LEVELDB_CPPFLAGS += -I$(srcdir)/leveldb/helpers/memenv
@@ -23,7 +34,7 @@ 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
+BITCOIN_INCLUDES += $(UNIVALUE_CFLAGS)
LIBBITCOIN_SERVER=libbitcoin_server.a
LIBBITCOIN_WALLET=libbitcoin_wallet.a
@@ -33,13 +44,9 @@ LIBBITCOIN_UTIL=libbitcoin_util.a
LIBBITCOIN_CRYPTO=crypto/libbitcoin_crypto.a
LIBBITCOINQT=qt/libbitcoinqt.a
LIBSECP256K1=secp256k1/libsecp256k1.la
-LIBUNIVALUE=univalue/libunivalue.la
$(LIBSECP256K1): $(wildcard secp256k1/src/*) $(wildcard secp256k1/include/*)
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F)
-
-$(LIBUNIVALUE): $(wildcard univalue/lib/*) $(wildcard univalue/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:
diff --git a/src/Makefile.test.include b/src/Makefile.test.include
index 4d0894b711..6cf0205dd9 100644
--- a/src/Makefile.test.include
+++ b/src/Makefile.test.include
@@ -130,7 +130,9 @@ 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
+if EMBEDDED_UNIVALUE
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C univalue check
+endif
%.json.h: %.json
@$(MKDIR_P) $(@D)