configure: Add unsupported --with-system-libsecp256k1 configure flag

This commit is contained in:
Luke Dashjr 2023-11-24 03:42:42 +00:00
parent 96ec3b67a7
commit 0c7ad462c9
3 changed files with 30 additions and 3 deletions

View File

@ -1364,6 +1364,23 @@ if test "$enable_fuzz_binary" = "yes"; then
CHECK_RUNTIME_LIB
fi
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 "$enable_wallet" != "no"; then
dnl Check for libdb_cxx only if wallet enabled
if test "$use_bdb" != "no"; then
@ -1959,8 +1976,10 @@ CPPFLAGS_TEMP="$CPPFLAGS"
unset CPPFLAGS
CPPFLAGS="$CPPFLAGS_TEMP"
if test x$system_libsecp256k1 = xno; then
ac_configure_args="${ac_configure_args} --disable-shared --with-pic --enable-benchmark=no --enable-module-recovery --disable-module-ecdh"
AC_CONFIG_SUBDIRS([src/secp256k1])
fi
AC_OUTPUT

View File

@ -24,7 +24,7 @@ check_PROGRAMS =
TESTS =
BENCHMARKS =
BITCOIN_INCLUDES=-I$(builddir) -I$(srcdir)/$(MINISKETCH_INCLUDE_DIR_INT) -I$(srcdir)/secp256k1/include -I$(srcdir)/$(UNIVALUE_INCLUDE_DIR_INT)
BITCOIN_INCLUDES=-I$(builddir) -I$(srcdir)/$(MINISKETCH_INCLUDE_DIR_INT) $(libsecp256k1_CFLAGS) -I$(srcdir)/$(UNIVALUE_INCLUDE_DIR_INT)
LIBBITCOIN_NODE=libbitcoin_node.a
LIBBITCOIN_COMMON=libbitcoin_common.a
@ -33,7 +33,11 @@ LIBBITCOIN_CLI=libbitcoin_cli.a
LIBBITCOIN_UTIL=libbitcoin_util.a
LIBBITCOIN_CRYPTO_BASE=crypto/libbitcoin_crypto_base.la
LIBBITCOINQT=qt/libbitcoinqt.a
if EMBEDDED_LIBSECP256K1
LIBSECP256K1=secp256k1/libsecp256k1.la
else
LIBSECP256K1=$(libsecp256k1_LIBS)
endif
if ENABLE_ZMQ
LIBBITCOIN_ZMQ=libbitcoin_zmq.a
@ -68,8 +72,10 @@ LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_ARM_SHANI)
endif
noinst_LTLIBRARIES += $(LIBBITCOIN_CRYPTO)
if EMBEDDED_LIBSECP256K1
$(LIBSECP256K1): $(wildcard secp256k1/src/*.h) $(wildcard secp256k1/src/*.c) $(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:
@ -908,7 +914,7 @@ lib_LTLIBRARIES += $(LIBBITCOINKERNEL)
libbitcoinkernel_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined $(RELDFLAGS) $(PTHREAD_FLAGS)
libbitcoinkernel_la_LIBADD = $(LIBBITCOIN_CRYPTO) $(LIBLEVELDB) $(LIBMEMENV) $(LIBSECP256K1)
libbitcoinkernel_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(builddir)/obj -I$(srcdir)/secp256k1/include -DBUILD_BITCOIN_INTERNAL $(BOOST_CPPFLAGS) $(LEVELDB_CPPFLAGS)
libbitcoinkernel_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(builddir)/obj $(libsecp256k1_CFLAGS) -DBUILD_BITCOIN_INTERNAL $(BOOST_CPPFLAGS) $(LEVELDB_CPPFLAGS)
# libbitcoinkernel requires default symbol visibility, explicitly specify that
# here so that things still work even when user configures with
@ -1015,7 +1021,7 @@ libbitcoinconsensus_la_SOURCES = support/cleanse.cpp $(crypto_libbitcoin_crypto_
libbitcoinconsensus_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined $(RELDFLAGS)
libbitcoinconsensus_la_LIBADD = $(LIBSECP256K1)
libbitcoinconsensus_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(builddir)/obj -I$(srcdir)/secp256k1/include -DBUILD_BITCOIN_INTERNAL
libbitcoinconsensus_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(builddir)/obj $(libsecp256k1_CFLAGS) -DBUILD_BITCOIN_INTERNAL
libbitcoinconsensus_la_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
endif

View File

@ -392,7 +392,9 @@ if ENABLE_BENCH
$(BENCH_BINARY) -sanity-check -priority-level=high
endif
endif
if EMBEDDED_LIBSECP256K1
$(AM_V_at)$(MAKE) $(AM_MAKEFLAGS) -C secp256k1 check
endif
if ENABLE_TESTS
UNIVALUE_TESTS = univalue/test/object univalue/test/unitester