Skip to content

Commit ab22705

Browse files
committed
Build against system UniValue when available
1 parent 2adf7e2 commit ab22705

File tree

3 files changed

+64
-7
lines changed

3 files changed

+64
-7
lines changed

configure.ac

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,12 @@ AC_ARG_ENABLE([glibc-back-compat],
148148
[use_glibc_compat=$enableval],
149149
[use_glibc_compat=no])
150150

151+
AC_ARG_WITH([system-univalue],
152+
[AS_HELP_STRING([--without-system-univalue],
153+
[Build with system UniValue (default is auto)])],
154+
[system_univalue=$withval],
155+
[system_univalue=auto]
156+
)
151157
AC_ARG_ENABLE([zmq],
152158
[AS_HELP_STRING([--disable-zmq],
153159
[disable ZMQ notifications])],
@@ -742,6 +748,44 @@ else
742748
fi
743749
fi
744750

751+
dnl univalue check
752+
753+
if test x$system_univalue != xno ; then
754+
found_univalue=no
755+
if test x$use_pkgconfig = xyes; then
756+
: #NOP
757+
m4_ifdef(
758+
[PKG_CHECK_MODULES],
759+
[
760+
PKG_CHECK_MODULES([UNIVALUE],[libunivalue],[found_univalue=yes],[true])
761+
]
762+
)
763+
else
764+
AC_CHECK_HEADER([univalue.h],[
765+
AC_CHECK_LIB([univalue], [main],[
766+
UNIVALUE_LIBS=-lunivalue
767+
found_univalue=yes
768+
],[true])
769+
],[true])
770+
fi
771+
772+
if test x$found_univalue = xyes ; then
773+
system_univalue=yes
774+
elif test x$system_univalue = xyes ; then
775+
AC_MSG_ERROR([univalue not found])
776+
else
777+
system_univalue=no
778+
fi
779+
fi
780+
781+
if test x$system_univalue = xno ; then
782+
UNIVALUE_CFLAGS='-I$(srcdir)/univalue/include'
783+
UNIVALUE_LIBS='univalue/libunivalue.la'
784+
fi
785+
AM_CONDITIONAL([EMBEDDED_UNIVALUE],[test x$system_univalue = xno])
786+
AC_SUBST(UNIVALUE_CFLAGS)
787+
AC_SUBST(UNIVALUE_LIBS)
788+
745789
CXXFLAGS_TEMP="$CXXFLAGS"
746790
LIBS_TEMP="$LIBS"
747791
CXXFLAGS="$CXXFLAGS $SSL_CFLAGS $CRYPTO_CFLAGS"
@@ -958,8 +1002,12 @@ PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
9581002
unset PKG_CONFIG_LIBDIR
9591003
PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
9601004

1005+
if test x$system_univalue = xno; then
1006+
AC_CONFIG_SUBDIRS([src/univalue])
1007+
fi
1008+
9611009
ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no --enable-module-recovery"
962-
AC_CONFIG_SUBDIRS([src/secp256k1 src/univalue])
1010+
AC_CONFIG_SUBDIRS([src/secp256k1])
9631011

9641012
AC_OUTPUT
9651013

src/Makefile.am

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,20 @@
1-
DIST_SUBDIRS = secp256k1 univalue
1+
DIST_SUBDIRS = secp256k1
22

33
AM_LDFLAGS = $(PTHREAD_CFLAGS) $(LIBTOOL_LDFLAGS) $(HARDENED_LDFLAGS)
44
AM_CXXFLAGS = $(HARDENED_CXXFLAGS)
55
AM_CPPFLAGS = $(HARDENED_CPPFLAGS)
66

7+
if EMBEDDED_UNIVALUE
8+
DIST_SUBDIRS += univalue
9+
10+
LIBUNIVALUE = univalue/libunivalue.la
11+
12+
$(LIBUNIVALUE): $(wildcard univalue/lib/*) $(wildcard univalue/include/*)
13+
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F)
14+
else
15+
LIBUNIVALUE = $(UNIVALUE_LIBS)
16+
endif
17+
718
if EMBEDDED_LEVELDB
819
LEVELDB_CPPFLAGS += -I$(srcdir)/leveldb/include
920
LEVELDB_CPPFLAGS += -I$(srcdir)/leveldb/helpers/memenv
@@ -23,7 +34,7 @@ BITCOIN_CONFIG_INCLUDES=-I$(builddir)/config
2334
BITCOIN_INCLUDES=-I$(builddir) -I$(builddir)/obj $(BOOST_CPPFLAGS) $(LEVELDB_CPPFLAGS) $(CRYPTO_CFLAGS) $(SSL_CFLAGS)
2435

2536
BITCOIN_INCLUDES += -I$(srcdir)/secp256k1/include
26-
BITCOIN_INCLUDES += -I$(srcdir)/univalue/include
37+
BITCOIN_INCLUDES += $(UNIVALUE_CFLAGS)
2738

2839
LIBBITCOIN_SERVER=libbitcoin_server.a
2940
LIBBITCOIN_WALLET=libbitcoin_wallet.a
@@ -33,13 +44,9 @@ LIBBITCOIN_UTIL=libbitcoin_util.a
3344
LIBBITCOIN_CRYPTO=crypto/libbitcoin_crypto.a
3445
LIBBITCOINQT=qt/libbitcoinqt.a
3546
LIBSECP256K1=secp256k1/libsecp256k1.la
36-
LIBUNIVALUE=univalue/libunivalue.la
3747

3848
$(LIBSECP256K1): $(wildcard secp256k1/src/*) $(wildcard secp256k1/include/*)
3949
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F)
40-
41-
$(LIBUNIVALUE): $(wildcard univalue/lib/*) $(wildcard univalue/include/*)
42-
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C $(@D) $(@F)
4350

4451
# Make is not made aware of per-object dependencies to avoid limiting building parallelization
4552
# But to build the less dependent modules first, we manually select their order here:

src/Makefile.test.include

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,9 @@ check-local:
130130
@echo "Running test/bitcoin-util-test.py..."
131131
$(AM_V_at)srcdir=$(srcdir) PYTHONPATH=$(builddir)/test $(srcdir)/test/bitcoin-util-test.py
132132
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C secp256k1 check
133+
if EMBEDDED_UNIVALUE
133134
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C univalue check
135+
endif
134136

135137
%.json.h: %.json
136138
@$(MKDIR_P) $(@D)

0 commit comments

Comments
 (0)