From 55c3f78dca0a3dfc0f143f0af22eafbe8c0cbb71 Mon Sep 17 00:00:00 2001 From: Duke Date: Tue, 30 Dec 2025 13:42:08 -0500 Subject: [PATCH] Remove gmp as a dependency since we don't actually use it Long ago our code actually used gmp directly but that is no longer the case. Our dependency secp256k1 has an optional dependency on gmp but the way we configure and compile secp256k1 does not use it. So there is no reason to download and compile gmp in our build system. This means we no longer need to maintain three different forks of GMP (one for Darwin, one for Win and one for Linux that supports gcc15). This also makes downloading and compiling Hush faster. Joy to the world. --- configure.ac | 32 +-------- depends/packages/libgmp.mk | 52 -------------- depends/packages/packages.mk | 2 +- depends/patches/libgmp/gcc-15.patch | 105 ---------------------------- 4 files changed, 4 insertions(+), 187 deletions(-) delete mode 100644 depends/packages/libgmp.mk delete mode 100644 depends/patches/libgmp/gcc-15.patch diff --git a/configure.ac b/configure.ac index a7be75c61..2bd8a4970 100644 --- a/configure.ac +++ b/configure.ac @@ -716,7 +716,7 @@ if test x$use_pkgconfig = xyes; then ) else # BUG: Fix this: - echo 'BUG: configure does not yet check for the following dependencies if pkg-config is not on the system: libcrypto++, gmp' + echo 'BUG: configure does not yet check for the following dependencies if pkg-config is not on the system: libcrypto++' AC_CHECK_HEADER([wolfssl/wolfcrypt/sha512.h],,AC_MSG_ERROR(libwolfssl headers missing)) AC_CHECK_LIB([wolfssl], [wc_InitSha512],CRYPTO_LIBS=-lwolfssl, AC_MSG_ERROR(libwolfssl missing)) @@ -732,33 +732,9 @@ else fi fi -# These packages don't provide pkgconfig config files across all -# platforms, so we use older autoconf detection mechanisms: -if test x$TARGET_OS = xdarwin; then -AC_CHECK_HEADER([gmp.h],,AC_MSG_ERROR(libgmp headers missing)) -AC_CHECK_LIB([gmp],[[__gmpn_sub_n]],GMP_LIBS=-lgmp, [AC_MSG_ERROR(libgmp missing)]) - -AC_CHECK_HEADER([gmpxx.h],,AC_MSG_ERROR(libgmpxx headers missing)) -AC_CHECK_LIB([gmpxx],[main],GMPXX_LIBS=-lgmpxx, [AC_MSG_ERROR(libgmpxx missing)]) -fi - -#AC_CHECK_HEADER([gmp.h],,AC_MSG_ERROR(libgmp headers missing)) -#AC_CHECK_LIB([gmp],[[__gmpn_sub_n]],GMP_LIBS=-lgmp, [AC_MSG_ERROR(libgmp missing)]) - -#AC_CHECK_HEADER([gmpxx.h],,AC_MSG_ERROR(libgmpxx headers missing)) -#AC_CHECK_LIB([gmpxx],[main],GMPXX_LIBS=-lgmpxx, [AC_MSG_ERROR(libgmpxx missing)]) - fi -# These packages don't provide pkgconfig config files across all -# platforms, so we use older autoconf detection mechanisms: -AC_CHECK_HEADER([gmp.h],,AC_MSG_ERROR(libgmp headers missing)) -#AC_CHECK_LIB([gmp],[[__gmpn_sub_n]],GMP_LIBS=-lgmp, [AC_MSG_ERROR(libgmp missing)]) - -AC_CHECK_HEADER([gmpxx.h],,AC_MSG_ERROR(libgmpxx headers missing)) -AC_CHECK_LIB([gmpxx],[main],GMPXX_LIBS=-lgmpxx, [AC_MSG_ERROR(libgmpxx missing)]) - RUST_LIBS="-lrustzcash" case $host in *mingw*) @@ -768,12 +744,12 @@ case $host in ;; esac -# Additional Zcash internals flags +# Additional internals flags AX_CHECK_COMPILE_FLAG([-fwrapv],[CXXFLAGS="$CXXFLAGS -fwrapv"]) AX_CHECK_COMPILE_FLAG([-fno-strict-aliasing],[CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"]) AX_CHECK_COMPILE_FLAG([-Wno-builtin-declaration-mismatch],[CXXFLAGS="$CXXFLAGS -Wno-builtin-declaration-mismatch"],,[[$CXXFLAG_WERROR]]) -LIBZCASH_LIBS="-lgmp -lgmpxx $BOOST_SYSTEM_LIB -lwolfssl -lsodium $RUST_LIBS" +LIBZCASH_LIBS="$BOOST_SYSTEM_LIB -lwolfssl -lsodium $RUST_LIBS" AC_MSG_CHECKING([whether to build hushd]) AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes]) @@ -902,8 +878,6 @@ AC_SUBST(CRYPTO_LIBS) AC_SUBST(SSL_LIBS) AC_SUBST(EVENT_LIBS) AC_SUBST(EVENT_PTHREADS_LIBS) -AC_SUBST(GMP_LIBS) -AC_SUBST(GMPXX_LIBS) AC_SUBST(LIBZCASH_LIBS) AC_CONFIG_FILES([Makefile src/Makefile doc/man/Makefile src/test/buildenv.py]) AC_CONFIG_FILES([qa/pull-tester/run-bitcoind-for-test.sh],[chmod +x qa/pull-tester/run-bitcoind-for-test.sh]) diff --git a/depends/packages/libgmp.mk b/depends/packages/libgmp.mk deleted file mode 100644 index b154932eb..000000000 --- a/depends/packages/libgmp.mk +++ /dev/null @@ -1,52 +0,0 @@ -package=libgmp - - -ifeq ($(host_os),mingw32) -$(package)_download_path=https://github.com/radix42/$(package)/archive -$(package)_file_name=$(package)-$($(package)_git_commit).tar.gz -$(package)_download_file=$($(package)_git_commit).tar.gz -$(package)_sha256_hash=67df06ed50f288bd7b1ec6907973684fb7cf1196f2cb368b59d423e42b065e40 -$(package)_git_commit=42ba95387cdfd67399f7aac52fddb8d6e1258ee6 -$(package)_dependencies= -$(package)_config_opts=--enable-cxx --disable-shared -else -#else ifeq ($(build_os),darwin) -$(package)_version=6.1.1 -$(package)_download_path=https://git.hush.is/attachments -$(package)_file_name=d613c855-cd92-4efb-b893-658496852019 -$(package)_download_file=d613c855-cd92-4efb-b893-658496852019 -$(package)_sha256_hash=a8109865f2893f1373b0a8ed5ff7429de8db696fc451b1036bd7bdf95bbeffd6 -$(package)_config_opts=--enable-cxx --disable-shared -$(package)_patches=gcc-15.patch -endif - -#else -#$(package)_version=6.1.1 -#$(package)_download_path=https://ftp.gnu.org/gnu/gmp -#$(package)_file_name=gmp-$($(package)_version).tar.bz2 -#$(package)_sha256_hash=a8109865f2893f1373b0a8ed5ff7429de8db696fc451b1036bd7bdf95bbeffd6 -#$(package)_dependencies= -#$(package)_config_opts=--enable-cxx --disable-shared -#endif - -define $(package)_preprocess_cmds - patch -p1 < $($(package)_patch_dir)/gcc-15.patch -endef - -define $(package)_config_cmds - $($(package)_autoconf) --host=$(host) --build=$(build) -endef - -ifeq ($(build_os),darwin) -define $(package)_build_cmds - $(MAKE) -endef -else -define $(package)_build_cmds - $(MAKE) CPPFLAGS='-fPIC' -endef -endif - -define $(package)_stage_cmds - $(MAKE) DESTDIR=$($(package)_staging_dir) install ; echo '=== staging find for $(package):' ; find $($(package)_staging_dir) -endef diff --git a/depends/packages/packages.mk b/depends/packages/packages.mk index 1324ad7d6..c39adbf30 100644 --- a/depends/packages/packages.mk +++ b/depends/packages/packages.mk @@ -1,4 +1,4 @@ -zcash_packages := libgmp libsodium utfcpp +zcash_packages := libsodium utfcpp rust_crates := \ crate_aes \ crate_aesni \ diff --git a/depends/patches/libgmp/gcc-15.patch b/depends/patches/libgmp/gcc-15.patch deleted file mode 100644 index 6b924f95e..000000000 --- a/depends/patches/libgmp/gcc-15.patch +++ /dev/null @@ -1,105 +0,0 @@ -diff --git a/acinclude.m4 b/acinclude.m4 -index bcc6f52..53705e1 100644 ---- a/acinclude.m4 -+++ b/acinclude.m4 -@@ -602,24 +602,6 @@ int f () - } - ]) - --GMP_PROG_CC_WORKS_PART([$1], [long long reliability test 1], --[/* The following provokes a segfault in the compiler on powerpc-apple-darwin. -- Extracted from tests/mpn/t-iord_u.c. Causes Apple's gcc 3.3 build 1640 and -- 1666 to segfault with e.g., -O2 -mpowerpc64. */ -- --#if defined (__GNUC__) && ! defined (__cplusplus) --typedef unsigned long long t1;typedef t1*t2; --void g(){} --void h(){} --static __inline__ t1 e(t2 rp,t2 up,int n,t1 v0) --{t1 c,x,r;int i;if(v0){c=1;for(i=1;iconftest.c <&5 -- gmp_compile="$cc $cflags $cppflags conftest.c >&5" -- if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$gmp_compile\""; } >&5 -- (eval $gmp_compile) 2>&5 -- ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; }; then -- cc_works_part=yes -- if test "$cross_compiling" = no; then -- if { ac_try='./a.out || ./b.out || ./a.exe || ./a_out.exe || ./conftest' -- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 -- (eval $ac_try) 2>&5 -- ac_status=$? -- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -- test $ac_status = 0; }; }; then :; -- else -- cc_works_part=norun -- fi -- fi -- else -- cc_works_part=no -- fi -- if test "$cc_works_part" != yes; then -- echo "failed program was:" >&5 -- cat conftest.c >&5 -- fi -- rm -f conftest* a.out b.out a.exe a_out.exe -- case $cc_works_part in -- yes) -- -- ;; -- no) -- gmp_prog_cc_works="no, long long reliability test 1" -- ;; -- norun) -- gmp_prog_cc_works="no, long long reliability test 1, program does not run" -- ;; -- esac --fi -- -- -- -- - if test "$gmp_prog_cc_works" = yes; then - # remove anything that might look like compiler output to our "||" expression - rm -f conftest* a.out b.out a.exe a_out.exe