Merge branch 'sys_libsecp256k1' into restore_libconsensus-28+knots

This commit is contained in:
Luke Dashjr 2025-03-05 17:54:24 +00:00
commit b442c5db16
3 changed files with 38 additions and 2 deletions

View File

@ -1141,6 +1141,32 @@ if test "$enable_fuzz_binary" = "yes"; then
]])])
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])
TEMP_CFLAGS="$CFLAGS"
TEMP_LIBS="$LIBS"
CFLAGS="$libsecp256k1_CFLAGS $CFLAGS"
LIBS="$libsecp256k1_LIBS $LIBS"
AC_CHECK_FUNCS([secp256k1_selftest],[],[
AC_MSG_ERROR([libsecp256k1 is too old or broken (must be at least v0.2.0 or newer)])
])
CFLAGS="$TEMP_CFLAGS"
LIBS="$TEMP_LIBS"
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
@ -1693,8 +1719,10 @@ CPPFLAGS="$CPPFLAGS_TEMP"
if test -n "$use_sanitizers"; then
export SECP_CFLAGS="$SECP_CFLAGS $SANITIZER_CFLAGS"
fi
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

@ -25,7 +25,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
@ -34,7 +34,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
@ -66,8 +70,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:
@ -910,7 +916,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 $(BOOST_CPPFLAGS) $(LEVELDB_CPPFLAGS)
libbitcoinkernel_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(builddir)/obj $(libsecp256k1_CFLAGS) $(BOOST_CPPFLAGS) $(LEVELDB_CPPFLAGS)
# libbitcoinkernel requires default symbol visibility, explicitly specify that
# here so that things still work even when user configures with

View File

@ -449,7 +449,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