1 dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
3 define(_CLIENT_VERSION_MAJOR, 1)
4 define(_CLIENT_VERSION_MINOR, 0)
5 define(_CLIENT_VERSION_REVISION, 15)
6 define(_CLIENT_VERSION_BUILD, 50)
7 define(_ZC_BUILD_VAL, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, m4_incr(_CLIENT_VERSION_BUILD), m4_eval(_CLIENT_VERSION_BUILD < 50), 1, m4_eval(_CLIENT_VERSION_BUILD - 24), m4_eval(_CLIENT_VERSION_BUILD == 50), 1, , m4_eval(_CLIENT_VERSION_BUILD - 50)))
8 define(_CLIENT_VERSION_SUFFIX, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, _CLIENT_VERSION_REVISION-beta$1, m4_eval(_CLIENT_VERSION_BUILD < 50), 1, _CLIENT_VERSION_REVISION-rc$1, m4_eval(_CLIENT_VERSION_BUILD == 50), 1, _CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION-$1)))
9 define(_CLIENT_VERSION_IS_RELEASE, true)
10 define(_COPYRIGHT_YEAR, 2017)
11 AC_INIT([Zcash],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_SUFFIX(_ZC_BUILD_VAL)],[https://github.com/zcash/zcash/issues],[zcash])
12 AC_CONFIG_SRCDIR([src/main.cpp])
13 AC_CONFIG_HEADERS([src/config/bitcoin-config.h])
14 AC_CONFIG_AUX_DIR([build-aux])
15 AC_CONFIG_MACRO_DIR([build-aux/m4])
17 BITCOIN_DAEMON_NAME=zcashd
18 BITCOIN_CLI_NAME=zcash-cli
19 BITCOIN_TX_NAME=zcash-tx
21 dnl Unless the user specified ARFLAGS, force it to be cr
22 AC_ARG_VAR(ARFLAGS, [Flags for the archiver, defaults to <cr> if not set])
23 if test "x${ARFLAGS+set}" != "xset"; then
29 AH_TOP([#ifndef BITCOIN_CONFIG_H])
30 AH_TOP([#define BITCOIN_CONFIG_H])
31 AH_BOTTOM([#endif //BITCOIN_CONFIG_H])
33 dnl faketime breaks configure and is only needed for make. Disable it here.
36 dnl Automake init set-up and checks
37 AM_INIT_AUTOMAKE([no-define subdir-objects foreign tar-pax])
39 dnl faketime messes with timestamps and causes configure to be re-run.
40 dnl --disable-maintainer-mode can be used to bypass this.
41 AM_MAINTAINER_MODE([enable])
43 dnl make the compilation flags quiet unless V=1 is used
44 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
46 dnl Compiler checks (here before libtool).
47 if test "x${CXXFLAGS+set}" = "xset"; then
48 CXXFLAGS_overridden=yes
50 CXXFLAGS_overridden=no
54 m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCXX])
56 dnl By default, libtool for mingw refuses to link static libs into a dll for
57 dnl fear of mixing pic/non-pic objects, and import/export complications. Since
58 dnl we have those under control, re-enable that functionality.
61 lt_cv_deplibs_check_method="pass_all"
64 dnl Require C++11 compiler (no GNU extensions)
65 AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory], [nodefault])
66 dnl Check if -latomic is required for <std::atomic>
69 dnl Libtool init checks.
72 dnl Check/return PATH for base programs.
74 AC_PATH_TOOL(RANLIB, ranlib)
75 AC_PATH_TOOL(STRIP, strip)
76 AC_PATH_TOOL(GCOV, gcov)
77 AC_PATH_PROG(LCOV, lcov)
78 AC_PATH_PROG(GENHTML, genhtml)
79 AC_PATH_PROG([GIT], [git])
80 AC_PATH_PROG(CCACHE,ccache)
81 AC_PATH_PROG(XGETTEXT,xgettext)
82 AC_PATH_PROG(HEXDUMP,hexdump)
83 AC_PATH_TOOL(READELF,readelf)
84 AC_PATH_TOOL(CPPFILT,c++filt)
87 AC_ARG_ENABLE([wallet],
88 [AS_HELP_STRING([--enable-wallet],
89 [enable wallet (default is yes)])],
90 [enable_wallet=$enableval],
93 AC_ARG_ENABLE([mining],
94 [AS_HELP_STRING([--enable-mining],
95 [enable mining (default is yes)])],
96 [enable_mining=$enableval],
100 [AS_HELP_STRING([--enable-rust],
101 [enable rust (default is yes)])],
102 [enable_rust=$enableval],
105 AC_ARG_ENABLE([proton],
106 [AS_HELP_STRING([--disable-proton],
107 [disable Proton (AMQP messaging)])],
108 [use_proton=$enableval],
112 AS_HELP_STRING([--enable-tests],[compile tests (default is yes)]),
113 [use_tests=$enableval],
116 AC_ARG_ENABLE([asan],
117 [AS_HELP_STRING([--enable-asan],
118 [instrument the executables with asan (default is no)])],
119 [use_asan=$enableval],
122 AC_ARG_ENABLE([tsan],
123 [AS_HELP_STRING([--enable-tsan],
124 [instrument the executables with tsan (default is no)])],
125 [use_tsan=$enableval],
128 if test x$TARGET_OS = xdarwin; then
129 AC_ARG_ENABLE([hardening],
130 [AS_HELP_STRING([--enable-hardening],
131 [attempt to harden the resulting executables (default is yes)])],
132 [use_hardening=$enableval],
135 AC_ARG_ENABLE([hardening],
136 [AS_HELP_STRING([--enable-hardening],
137 [attempt to harden the resulting executables (default is yes)])],
138 [use_hardening=$enableval],
142 AC_ARG_ENABLE([reduce-exports],
143 [AS_HELP_STRING([--enable-reduce-exports],
144 [attempt to reduce exported symbols in the resulting executables (default is no)])],
145 [use_reduce_exports=$enableval],
146 [use_reduce_exports=no])
148 AC_ARG_ENABLE([ccache],
149 [AS_HELP_STRING([--enable-ccache],
150 [use ccache for building (default is yes if ccache is found)])],
151 [use_ccache=$enableval],
154 AC_ARG_ENABLE([lcov],
155 [AS_HELP_STRING([--enable-lcov],
156 [enable lcov testing (default is no)])],
160 AC_ARG_ENABLE([glibc-back-compat],
161 [AS_HELP_STRING([--enable-glibc-back-compat],
162 [enable backwards compatibility with glibc])],
163 [use_glibc_compat=$enableval],
164 [use_glibc_compat=no])
167 [AS_HELP_STRING([--disable-zmq],
168 [disable ZMQ notifications])],
169 [use_zmq=$enableval],
172 AC_ARG_WITH([protoc-bindir],[AS_HELP_STRING([--with-protoc-bindir=BIN_DIR],[specify protoc bin path])], [protoc_bin_path=$withval], [])
175 [AS_HELP_STRING([--disable-man],
176 [do not install man pages (default is to install)])],,
178 AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
181 AC_ARG_ENABLE([debug],
182 [AS_HELP_STRING([--enable-debug],
183 [use debug compiler flags and macros (default is no)])],
184 [enable_debug=$enableval],
187 # Turn warnings into errors
188 AC_ARG_ENABLE([werror],
189 [AS_HELP_STRING([--enable-werror],
190 [Treat all compiler warnings as errors (default is no)])],
191 [enable_werror=$enableval],
195 AX_CHECK_COMPILE_FLAG([-Werror],[CXXFLAG_WERROR="-Werror"],[CXXFLAG_WERROR=""])
197 if test "x$enable_debug" = xyes; then
198 CPPFLAGS="$CPPFLAGS -DDEBUG -DDEBUG_LOCKORDER"
199 if test "x$GCC" = xyes; then
200 CFLAGS="$CFLAGS -g3 -O0"
203 if test "x$GXX" = xyes; then
204 CXXFLAGS="$CXXFLAGS -g3 -O0"
209 if test "x$enable_werror" = "xyes"; then
210 if test "x$CXXFLAG_WERROR" = "x"; then
211 AC_MSG_ERROR("enable-werror set but -Werror is not usable")
213 ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror"
216 if test "x$CXXFLAGS_overridden" = "xno"; then
217 AX_CHECK_COMPILE_FLAG([-Wall],[CXXFLAGS="$CXXFLAGS -Wall"],,[[$CXXFLAG_WERROR]])
218 AX_CHECK_COMPILE_FLAG([-Wextra],[CXXFLAGS="$CXXFLAGS -Wextra"],,[[$CXXFLAG_WERROR]])
219 AX_CHECK_COMPILE_FLAG([-Wformat],[CXXFLAGS="$CXXFLAGS -Wformat"],,[[$CXXFLAG_WERROR]])
220 AX_CHECK_COMPILE_FLAG([-Wvla],[CXXFLAGS="$CXXFLAGS -Wvla"],,[[$CXXFLAG_WERROR]])
221 AX_CHECK_COMPILE_FLAG([-Wformat-security],[CXXFLAGS="$CXXFLAGS -Wformat-security"],,[[$CXXFLAG_WERROR]])
223 ## Some compilers (gcc) ignore unknown -Wno-* options, but warn about all
224 ## unknown options if any other warning is produced. Test the -Wfoo case, and
225 ## set the -Wno-foo case if it works.
226 AX_CHECK_COMPILE_FLAG([-Wunused-parameter],[CXXFLAGS="$CXXFLAGS -Wno-unused-parameter"],,[[$CXXFLAG_WERROR]])
227 AX_CHECK_COMPILE_FLAG([-Wself-assign],[CXXFLAGS="$CXXFLAGS -Wno-self-assign"],,[[$CXXFLAG_WERROR]])
228 AX_CHECK_COMPILE_FLAG([-Wunused-local-typedef],[CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"],,[[$CXXFLAG_WERROR]])
229 AX_CHECK_COMPILE_FLAG([-Wdeprecated-register],[CXXFLAGS="$CXXFLAGS -Wno-deprecated-register"],,[[$CXXFLAG_WERROR]])
231 CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"
234 [AS_HELP_STRING([--with-utils],
235 [build zcash-cli zcash-tx wallet-utility (default=yes)])],
236 [build_bitcoin_utils=$withval],
237 [build_bitcoin_utils=yes])
240 [AS_HELP_STRING([--with-libs],
241 [build libraries (default=yes)])],
242 [build_bitcoin_libs=$withval],
243 [build_bitcoin_libs=yes])
245 AC_ARG_WITH([daemon],
246 [AS_HELP_STRING([--with-daemon],
247 [build bitcoind daemon (default=yes)])],
248 [build_bitcoind=$withval],
249 [build_bitcoind=yes])
255 #pkgconfig does more harm than good with MinGW
259 AC_CHECK_LIB([mingwthrd], [main],, AC_MSG_ERROR(lib missing))
260 AC_CHECK_LIB([kernel32], [main],, AC_MSG_ERROR(lib missing))
261 AC_CHECK_LIB([user32], [main],, AC_MSG_ERROR(lib missing))
262 AC_CHECK_LIB([gdi32], [main],, AC_MSG_ERROR(lib missing))
263 AC_CHECK_LIB([comdlg32], [main],, AC_MSG_ERROR(lib missing))
264 AC_CHECK_LIB([winspool], [main],, AC_MSG_ERROR(lib missing))
265 AC_CHECK_LIB([winmm], [main],, AC_MSG_ERROR(lib missing))
266 AC_CHECK_LIB([shell32], [main],, AC_MSG_ERROR(lib missing))
267 AC_CHECK_LIB([comctl32], [main],, AC_MSG_ERROR(lib missing))
268 AC_CHECK_LIB([ole32], [main],, AC_MSG_ERROR(lib missing))
269 AC_CHECK_LIB([oleaut32], [main],, AC_MSG_ERROR(lib missing))
270 AC_CHECK_LIB([uuid], [main],, AC_MSG_ERROR(lib missing))
271 AC_CHECK_LIB([rpcrt4], [main],, AC_MSG_ERROR(lib missing))
272 AC_CHECK_LIB([advapi32], [main],, AC_MSG_ERROR(lib missing))
273 AC_CHECK_LIB([ws2_32], [main],, AC_MSG_ERROR(lib missing))
274 AC_CHECK_LIB([mswsock], [main],, AC_MSG_ERROR(lib missing))
275 AC_CHECK_LIB([shlwapi], [main],, AC_MSG_ERROR(lib missing))
276 AC_CHECK_LIB([iphlpapi], [main],, AC_MSG_ERROR(lib missing))
277 AC_CHECK_LIB([crypt32], [main],, AC_MSG_ERROR(lib missing))
279 # -static is interpreted by libtool, where it has a different meaning.
280 # In libtool-speak, it's -all-static.
281 AX_CHECK_LINK_FLAG([[-static]],[LIBTOOL_APP_LDFLAGS="$LIBTOOL_APP_LDFLAGS -all-static"])
283 AC_PATH_PROG([MAKENSIS], [makensis], none)
284 if test x$MAKENSIS = xnone; then
285 AC_MSG_WARN("makensis not found. Cannot create installer.")
288 AC_PATH_TOOL(WINDRES, windres, none)
289 if test x$WINDRES = xnone; then
290 AC_MSG_ERROR("windres not found")
293 CPPFLAGS="$CPPFLAGS -D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB"
294 LEVELDB_TARGET_FLAGS="TARGET_OS=OS_WINDOWS_CROSSCOMPILE"
295 if test "x$CXXFLAGS_overridden" = "xno"; then
296 CXXFLAGS="$CXXFLAGS -w"
299 i?86-*) WINDOWS_BITS=32 ;;
300 x86_64-*) WINDOWS_BITS=64 ;;
301 *) AC_MSG_ERROR("Could not determine win32/win64 for installer") ;;
303 AC_SUBST(WINDOWS_BITS)
305 dnl libtool insists upon adding -nostdlib and a list of objects/libs to link against.
306 dnl That breaks our ability to build dll's with static libgcc/libstdc++/libssp. Override
307 dnl its command here, with the predeps/postdeps removed, and -static inserted. Postdeps are
308 dnl also overridden to prevent their insertion later.
309 dnl This should only affect dll's.
310 archive_cmds_CXX="\$CC -shared \$libobjs \$deplibs \$compiler_flags -static -o \$output_objdir/\$soname \${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib"
316 LEVELDB_TARGET_FLAGS="TARGET_OS=Darwin"
317 if test x$cross_compiling != xyes; then
319 AC_CHECK_PROG([PORT],port, port)
320 if test x$PORT = xport; then
321 dnl add default macports paths
322 CPPFLAGS="$CPPFLAGS -isystem /opt/local/include"
323 LIBS="$LIBS -L/opt/local/lib"
324 if test -d /opt/local/include/db62; then
325 CPPFLAGS="$CPPFLAGS -I/opt/local/include/db62"
326 LIBS="$LIBS -L/opt/local/lib/db62"
330 dnl AC_CHECK_PROG([BREW],brew, brew)
331 dnl if test x$BREW = xbrew; then
332 dnl These Homebrew packages may be keg-only, meaning that they won't be found
333 dnl in expected paths because they may conflict with system files. Ask
334 dnl Homebrew where each one is located, then adjust paths accordingly.
335 dnl It's safe to add these paths even if the functionality is disabled by
336 dnl the user (--without-wallet for example).
338 dnl openssl_prefix=`$BREW --prefix openssl 2>/dev/null`
339 dnl bdb_prefix=`$BREW --prefix berkeley-db4 2>/dev/null`
340 dnl qt5_prefix=`$BREW --prefix qt5 2>/dev/null`
341 dnl if test x$openssl_prefix != x; then
342 dnl PKG_CONFIG_PATH="$PKG_CONFIG_PATH"
343 dnl export PKG_CONFIG_PATH
345 dnl if test x$bdb_prefix != x; then
346 dnl CPPFLAGS="$CPPFLAGS -I$bdb_prefix/include"
347 dnl LIBS="$LIBS -L$bdb_prefix/lib"
349 dnl if test x$qt5_prefix != x; then
350 dnl PKG_CONFIG_PATH="$qt5_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
351 dnl export PKG_CONFIG_PATH
360 AC_PATH_TOOL([INSTALLNAMETOOL], [install_name_tool], install_name_tool)
361 AC_PATH_TOOL([OTOOL], [otool], otool)
362 AC_PATH_PROGS([GENISOIMAGE], [genisoimage mkisofs],genisoimage)
364 dnl libtool will try to strip the static lib, which is a problem for
365 dnl cross-builds because strip attempts to call a hard-coded ld,
366 dnl which may not exist in the path. Stripping the .a is not
367 dnl necessary, so just disable it.
373 AX_CHECK_LINK_FLAG([[-Wl,-headerpad_max_install_names]], [LDFLAGS="$LDFLAGS -Wl,-headerpad_max_install_names"])
374 CPPFLAGS="$CPPFLAGS -DMAC_OSX"
375 OBJCXXFLAGS="$CXXFLAGS"
384 if test x$use_pkgconfig = xyes; then
385 m4_ifndef([PKG_PROG_PKG_CONFIG], [AC_MSG_ERROR(PKG_PROG_PKG_CONFIG macro not found. Please install pkg-config and re-run autogen.sh.)])
386 m4_ifdef([PKG_PROG_PKG_CONFIG], [
388 if test x"$PKG_CONFIG" = "x"; then
389 AC_MSG_ERROR(pkg-config not found.)
394 if test x$use_lcov = xyes; then
395 if test x$LCOV = x; then
396 AC_MSG_ERROR("lcov testing requested but lcov not found")
398 if test x$GCOV = x; then
399 AC_MSG_ERROR("lcov testing requested but gcov not found")
401 if test x$GENHTML = x; then
402 AC_MSG_ERROR("lcov testing requested but genhtml not found")
404 LCOV="$LCOV --gcov-tool=$GCOV --rc lcov_branch_coverage=1"
405 GENHTML="$GENHTML --branch-coverage"
406 AX_CHECK_COMPILE_FLAG([--coverage],[CXXFLAGS="$CXXFLAGS --coverage"],
407 [AC_MSG_ERROR("lcov testing requested but --coverage flag does not work")])
410 dnl Check for endianness
413 dnl Check for pthread compile/link requirements
416 # The following macro will add the necessary defines to bitcoin-config.h, but
417 # they also need to be passed down to any subprojects. Pull the results out of
418 # the cache and add them to CPPFLAGS.
420 # detect POSIX or GNU variant of strerror_r
423 if test x$ac_cv_sys_file_offset_bits != x &&
424 test x$ac_cv_sys_file_offset_bits != xno &&
425 test x$ac_cv_sys_file_offset_bits != xunknown; then
426 CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
429 if test x$ac_cv_sys_large_files != x &&
430 test x$ac_cv_sys_large_files != xno &&
431 test x$ac_cv_sys_large_files != xunknown; then
432 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES=$ac_cv_sys_large_files"
435 AX_CHECK_LINK_FLAG([[-Wl,--large-address-aware]], [LDFLAGS="$LDFLAGS -Wl,--large-address-aware"])
437 AX_GCC_FUNC_ATTRIBUTE([visibility])
438 AX_GCC_FUNC_ATTRIBUTE([dllexport])
439 AX_GCC_FUNC_ATTRIBUTE([dllimport])
441 if test x$use_glibc_compat != xno; then
443 #glibc absorbed clock_gettime in 2.17. librt (its previous location) is safe to link
444 #in anyway for back-compat.
445 AC_CHECK_LIB([rt],[clock_gettime],, AC_MSG_ERROR(lib missing))
447 #__fdelt_chk's params and return type have changed from long unsigned int to long int.
448 # See which one is present here.
449 AC_MSG_CHECKING(__fdelt_chk type)
450 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef _FORTIFY_SOURCE
451 #undef _FORTIFY_SOURCE
453 #define _FORTIFY_SOURCE 2
454 #include <sys/select.h>
455 extern "C" long unsigned int __fdelt_warn(long unsigned int);]],[[]])],
456 [ fdelt_type="long unsigned int"],
457 [ fdelt_type="long int"])
458 AC_MSG_RESULT($fdelt_type)
459 AC_DEFINE_UNQUOTED(FDELT_TYPE, $fdelt_type,[parameter and return value type for __fdelt_chk])
461 AC_SEARCH_LIBS([clock_gettime],[rt])
464 if test x$TARGET_OS != xwindows; then
465 # All windows code is PIC, forcing it on just adds useless compile warnings
466 AX_CHECK_COMPILE_FLAG([-fPIC],[PIC_FLAGS="-fPIC"])
469 #asan and tsan cannot be used together
470 if test x$use_asan$use_tsan == xyesyes; then
471 AC_MSG_ERROR(asan and tsan cannot be simultaneously enabled)
474 # using asan flag to enable address sanitizer and undefined behavior sanitizer
475 if test x$use_asan == xyes; then
476 AX_CHECK_LINK_FLAG([-static-libstdc++],[SAN_LDFLAGS="$SAN_LDFLAGS -static-libstdc++"],[AC_MSG_ERROR(Cannot statically link -static-libstdc++)])
477 AX_CHECK_LINK_FLAG([-static-libasan],[SAN_LDFLAGS="$SAN_LDFLAGS -static-libasan"],[AC_MSG_ERROR(Cannot statically link -static-libasan)])
478 AX_CHECK_COMPILE_FLAG([-fsanitize=address],[SAN_CXXFLAGS="$SAN_CXXFLAGS -fsanitize=address"],[AC_MSG_ERROR(Cannot enable -fsanitize=address)])
479 AX_CHECK_COMPILE_FLAG([-fsanitize=undefined],[SAN_CXXFLAGS="$SAN_CXXFLAGS -fsanitize=undefined"],[AC_MSG_ERROR(Cannot enable -fsanitize=undefined)])
480 AX_CHECK_COMPILE_FLAG([-fno-omit-frame-pointer],[SAN_CXXFLAGS="$SAN_CXXFLAGS -fno-omit-frame-pointer"],[AC_MSG_ERROR(Cannot enable -fno-omit-frame-pointer)])
483 # using tsan flag to enable address thread sanitizer
484 # TSAN is supported on Linux x84_64 and tested on Ubuntu 12.04
485 # Non-position-independent executables are not supported. Use with -fPIE and -pie flags
486 # libc/libstdc++ static linking is not supported
487 if test x$use_tsan == xyes; then
488 AX_CHECK_COMPILE_FLAG([-fsanitize=thread],[SAN_CXXFLAGS="$SAN_CXXFLAGS -fsanitize=thread"],[AC_MSG_ERROR(Cannot enable -fsanitize=thread)])
489 AX_CHECK_COMPILE_FLAG([-fno-omit-frame-pointer],[SAN_CXXFLAGS="$SAN_CXXFLAGS -fno-omit-frame-pointer"],[AC_MSG_ERROR(Cannot enable -fno-omit-frame-pointer)])
492 if test x$use_hardening != xno; then
493 AX_CHECK_COMPILE_FLAG([-Wformat],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wformat"],[AC_MSG_ERROR(Cannot enable -Wformat)])
494 AX_CHECK_COMPILE_FLAG([-Wformat-security],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wformat-security"],[AC_MSG_ERROR(Cannot enable -Wformat-security)],[-Wformat])
495 AX_CHECK_COMPILE_FLAG([-Wstack-protector],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wstack-protector"],[AC_MSG_ERROR(Cannot enable -Wstack-protector)])
496 AX_CHECK_COMPILE_FLAG([-fstack-protector-all],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fstack-protector-all"],[AC_MSG_ERROR(Cannot enable -fstack-protector-all)])
498 AX_CHECK_PREPROC_FLAG([-D_FORTIFY_SOURCE=2],[
499 AX_CHECK_PREPROC_FLAG([-U_FORTIFY_SOURCE],[
500 HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -U_FORTIFY_SOURCE"
501 ],[AC_MSG_ERROR(Cannot enable -U_FORTIFY_SOURCE)])
502 HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -D_FORTIFY_SOURCE=2"
503 ],[AC_MSG_ERROR(Cannot enable -D_FORTIFY_SOURCE=2)])
505 #AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"],[AC_MSG_ERROR(Cannot enable RELRO)])
506 #AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"],[AC_MSG_ERROR(Cannot enable BIND_NOW)])
508 if test x$TARGET_OS != xwindows; then
509 # All windows code is PIC, forcing it on just adds useless compile warnings
510 AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"],[AC_MSG_ERROR(Cannot enable RELRO)])
511 AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"],[AC_MSG_ERROR(Cannot enable BIND_NOW)])
512 AX_CHECK_COMPILE_FLAG([-fPIE],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fPIE"],[AC_MSG_ERROR(Cannot enable -fPIE)])
513 AX_CHECK_LINK_FLAG([[-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"],[AC_MSG_ERROR(Cannot enable -pie)])
515 # These are only available on Windows.
516 AX_CHECK_LINK_FLAG([[-Wl,--dynamicbase]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--dynamicbase"],[AC_MSG_ERROR(Cannot enable --dynamicbase)])
517 AX_CHECK_LINK_FLAG([[-Wl,--nxcompat]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--nxcompat"],[AC_MSG_ERROR(Cannot enable --nxcompat)])
518 AX_CHECK_LINK_FLAG([[-Wl,--high-entropy-va]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--high-entropy-va"],[AC_MSG_ERROR(Cannot enable ASLR)])
523 AC_CHECK_LIB([ssp], [main],, AC_MSG_ERROR(lib missing))
528 dnl this flag screws up non-darwin gcc even when the check fails. special-case it.
529 if test x$TARGET_OS = xdarwin; then
530 AX_CHECK_LINK_FLAG([[-Wl,-dead_strip]], [LDFLAGS="$LDFLAGS -Wl,-dead_strip"])
533 AC_CHECK_HEADERS([endian.h sys/endian.h byteswap.h stdio.h stdlib.h unistd.h strings.h sys/types.h sys/stat.h sys/select.h sys/prctl.h])
534 AC_SEARCH_LIBS([getaddrinfo_a], [anl], [AC_DEFINE(HAVE_GETADDRINFO_A, 1, [Define this symbol if you have getaddrinfo_a])])
535 AC_SEARCH_LIBS([inet_pton], [nsl resolv], [AC_DEFINE(HAVE_INET_PTON, 1, [Define this symbol if you have inet_pton])])
537 AC_CHECK_DECLS([strnlen])
539 AC_CHECK_DECLS([le16toh, le32toh, le64toh, htole16, htole32, htole64, be16toh, be32toh, be64toh, htobe16, htobe32, htobe64],,,
542 #elif HAVE_SYS_ENDIAN_H
543 #include <sys/endian.h>
546 AC_CHECK_DECLS([bswap_16, bswap_32, bswap_64],,,
548 #include <byteswap.h>
551 dnl Check for MSG_NOSIGNAL
552 AC_MSG_CHECKING(for MSG_NOSIGNAL)
553 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
554 [[ int f = MSG_NOSIGNAL; ]])],
555 [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MSG_NOSIGNAL, 1,[Define this symbol if you have MSG_NOSIGNAL]) ],
559 AC_MSG_CHECKING([for visibility attribute])
560 AC_LINK_IFELSE([AC_LANG_SOURCE([
561 int foo_def( void ) __attribute__((visibility("default")));
565 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE,1,[Define if the visibility attribute is supported.])
570 if test x$use_reduce_exports = xyes; then
571 AC_MSG_ERROR([Cannot find a working visibility attribute. Use --disable-reduce-exports.])
576 if test x$use_reduce_exports = xyes; then
577 AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],[RE_CXXFLAGS="-fvisibility=hidden"],
578 [AC_MSG_ERROR([Cannot set default symbol visibility. Use --disable-reduce-exports.])])
584 AM_CONDITIONAL([EMBEDDED_LEVELDB],[true])
585 AC_SUBST(LEVELDB_CPPFLAGS)
589 if test x$enable_wallet != xno; then
590 dnl Check for libdb_cxx only if wallet enabled
594 dnl Check Qpid Proton headers and library exist
595 if test x$use_proton = xyes; then
596 AC_CHECK_HEADERS([proton/connection.hpp],
598 [AC_MSG_WARN([Proton headers not found, disabling Proton support])
600 AC_CHECK_LIB([qpid-proton-cpp], [main],
601 [PROTON_LIBS="-lqpid-proton-cpp -lqpid-proton"],
602 [AC_MSG_WARN([Proton libraries not found, disabling Proton support])
605 if test x$use_proton = xyes; then
606 AC_DEFINE(ENABLE_PROTON, 1, [Define to 1 to enable Proton functions])
608 AC_DEFINE(ENABLE_PROTON, 0, [Define to 1 to enable Proton functions])
611 if test x$build_bitcoin_utils$build_bitcoind$use_tests = xnonono; then
617 if test x$use_boost = xyes; then
619 dnl Check for boost libs
620 dnl We need Boost >= 1.62 to fix a potential security bug (https://github.com/zcash/zcash/issues/1241)
621 AX_BOOST_BASE([1.62])
624 AX_BOOST_PROGRAM_OPTIONS
630 if test x$use_reduce_exports = xyes; then
631 CXXFLAGS="$CXXFLAGS $RE_CXXFLAGS"
632 AX_CHECK_LINK_FLAG([[-Wl,--exclude-libs,ALL]], [RELDFLAGS="-Wl,--exclude-libs,ALL"])
635 if test x$use_tests = xyes; then
637 if test x$HEXDUMP = x; then
638 AC_MSG_ERROR(hexdump is required for tests)
642 if test x$use_boost = xyes; then
644 AX_BOOST_UNIT_TEST_FRAMEWORK
646 dnl Determine if -DBOOST_TEST_DYN_LINK is needed
647 AC_MSG_CHECKING([for dynamic linked boost test])
649 LIBS="$LIBS $BOOST_LDFLAGS $BOOST_UNIT_TEST_FRAMEWORK_LIB"
650 TEMP_CPPFLAGS="$CPPFLAGS"
651 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
652 AC_LINK_IFELSE([AC_LANG_SOURCE([
653 #define BOOST_TEST_DYN_LINK
654 #define BOOST_TEST_MAIN
655 #include <boost/test/unit_test.hpp>
659 [TESTDEFS="$TESTDEFS -DBOOST_TEST_DYN_LINK"],
662 CPPFLAGS="$TEMP_CPPFLAGS"
667 if test x$use_boost = xyes; then
668 BOOST_LIBS="$BOOST_LDFLAGS $BOOST_SYSTEM_LIB $BOOST_FILESYSTEM_LIB $BOOST_PROGRAM_OPTIONS_LIB $BOOST_THREAD_LIB $BOOST_CHRONO_LIB"
671 if test x$use_pkgconfig = xyes; then
676 PKG_CHECK_MODULES([SSL], [libssl],, [AC_MSG_ERROR(openssl not found.)])
677 PKG_CHECK_MODULES([CRYPTO], [libcrypto],,[AC_MSG_ERROR(libcrypto not found.)])
678 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
679 PKG_CHECK_MODULES([EVENT], [libevent],, [AC_MSG_ERROR(libevent not found.)])
680 if test x$TARGET_OS != xwindows; then
681 PKG_CHECK_MODULES([EVENT_PTHREADS], [libevent_pthreads],, [AC_MSG_ERROR(libevent_pthreads not found.)])
685 if test "x$use_zmq" = "xyes"; then
686 PKG_CHECK_MODULES([ZMQ],[libzmq >= 4],
687 [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
688 [AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
689 AC_MSG_WARN([libzmq version 4.x or greater not found, disabling])
692 AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
698 echo 'BUG: configure does not yet check for the following dependencies if pkg-config is not on the system: libcrypto++, libgmp'
700 AC_CHECK_HEADER([openssl/crypto.h],,AC_MSG_ERROR(libcrypto headers missing))
701 AC_CHECK_LIB([crypto], [main],CRYPTO_LIBS=-lcrypto, AC_MSG_ERROR(libcrypto missing))
703 AC_CHECK_HEADER([openssl/ssl.h],, AC_MSG_ERROR(libssl headers missing),)
704 AC_CHECK_LIB([ssl], [main],SSL_LIBS=-lssl, AC_MSG_ERROR(libssl missing))
706 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
707 AC_CHECK_HEADER([event2/event.h],, AC_MSG_ERROR(libevent headers missing),)
708 AC_CHECK_LIB([event],[main],EVENT_LIBS=-levent,AC_MSG_ERROR(libevent missing))
709 if test x$TARGET_OS != xwindows; then
710 AC_CHECK_LIB([event_pthreads],[main],EVENT_PTHREADS_LIBS=-levent_pthreads,AC_MSG_ERROR(libevent_pthreads missing))
714 if test "x$use_zmq" = "xyes"; then
715 AC_CHECK_HEADER([zmq.h],
716 [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
717 [AC_MSG_WARN([zmq.h not found, disabling zmq support])
719 AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
720 AC_CHECK_LIB([zmq],[zmq_ctx_shutdown],ZMQ_LIBS=-lzmq,
721 [AC_MSG_WARN([libzmq >= 4.0 not found, disabling zmq support])
723 AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
725 AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
728 if test "x$use_zmq" = "xyes"; then
729 dnl Assume libzmq was built for static linking
732 ZMQ_CFLAGS="$ZMQ_CFLAGS -DZMQ_STATIC"
738 # These packages don't provide pkgconfig config files across all
739 # platforms, so we use older autoconf detection mechanisms:
740 if test x$TARGET_OS = xdarwin; then
741 AC_CHECK_HEADER([gmp.h],,AC_MSG_ERROR(libgmp headers missing))
742 AC_CHECK_LIB([gmp],[[__gmpn_sub_n]],GMP_LIBS=-lgmp, [AC_MSG_ERROR(libgmp missing)])
744 AC_CHECK_HEADER([gmpxx.h],,AC_MSG_ERROR(libgmpxx headers missing))
745 AC_CHECK_LIB([gmpxx],[main],GMPXX_LIBS=-lgmpxx, [AC_MSG_ERROR(libgmpxx missing)])
748 #AC_CHECK_HEADER([gmp.h],,AC_MSG_ERROR(libgmp headers missing))
749 #AC_CHECK_LIB([gmp],[[__gmpn_sub_n]],GMP_LIBS=-lgmp, [AC_MSG_ERROR(libgmp missing)])
751 #AC_CHECK_HEADER([gmpxx.h],,AC_MSG_ERROR(libgmpxx headers missing))
752 #AC_CHECK_LIB([gmpxx],[main],GMPXX_LIBS=-lgmpxx, [AC_MSG_ERROR(libgmpxx missing)])
754 # libsnark header layout is broken unless cpp's -I is passed with the
755 # libsnark directory, so for now we use this hideous workaround:
756 echo 'Hunting for libsnark include directory...'
757 [LIBSNARK_INCDIR="$(echo "$CPPFLAGS" | sed 's,^.*-I\([^ ]*/include\).*$,\1/libsnark,')"]
758 if test -d "$LIBSNARK_INCDIR"; then
759 echo "Found libsnark include directory: $LIBSNARK_INCDIR"
761 #AC_MSG_ERROR(libsnark include directory not found)
762 echo "libsnark include directory not found ($LIBSNARK_INCDIR)"
765 CPPFLAGS="-I$LIBSNARK_INCDIR $CPPFLAGS"
767 # Now check for libsnark compilability using traditional autoconf tests:
768 if test x$TARGET_OS = xdarwin; then
769 AC_CHECK_HEADER([libsnark/gadgetlib1/gadget.hpp],,AC_MSG_ERROR(libsnark headers missing))
770 AC_CHECK_LIB([snark],[main],LIBSNARK_LIBS=-lsnark, [AC_MSG_ERROR(libsnark missing)], [-lgmpxx])
772 #AC_CHECK_HEADER([libsnark/gadgetlib1/gadget.hpp],,AC_MSG_ERROR(libsnark headers missing))
773 #AC_CHECK_LIB([snark],[main],LIBSNARK_LIBS=-lsnark, [AC_MSG_ERROR(libsnark missing)], [-lgmpxx])
776 if test x$enable_rust != xno; then
777 RUST_LIBS="-lrustzcash"
780 dnl Check for OpenMP support
782 [AC_DEFINE(HAVE_OPENMP, 1, [Define if OpenMP is enabled])
783 AM_CONDITIONAL([HAVE_OPENMP], [true])
784 CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"],
785 [AC_MSG_WARN([OpenMP not supported, disabling multithreading])
786 AC_DEFINE(HAVE_OPENMP, 0, [Define if OpenMP is enabled])
787 AM_CONDITIONAL([HAVE_OPENMP], [false])])
789 # Gitian uses a config.site that sets depends_prefix, and then sets --prefix=/
790 # build.sh just uses --prefix
791 if test x$depends_prefix != x; then
792 LIBSNARK_DEPINST="$depends_prefix"
794 LIBSNARK_DEPINST="$prefix"
797 # Additional Zcash flags
798 AX_CHECK_COMPILE_FLAG([-fwrapv],[CXXFLAGS="$CXXFLAGS -fwrapv"])
799 AX_CHECK_COMPILE_FLAG([-fno-strict-aliasing],[CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"])
800 AX_CHECK_COMPILE_FLAG([-Wno-builtin-declaration-mismatch],[CXXFLAGS="$CXXFLAGS -Wno-builtin-declaration-mismatch"],,[[$CXXFLAG_WERROR]])
802 LIBZCASH_LIBS="-lgmp -lgmpxx -lboost_system -lcrypto -lsodium $RUST_LIBS"
804 AC_MSG_CHECKING([whether to build bitcoind])
805 AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
806 AC_MSG_RESULT($build_bitcoind)
808 AC_MSG_CHECKING([whether to build utils (zcash-cli zcash-tx wallet-utility)])
809 AM_CONDITIONAL([BUILD_BITCOIN_UTILS], [test x$build_bitcoin_utils = xyes])
810 AC_MSG_RESULT($build_bitcoin_utils)
812 AC_MSG_CHECKING([whether to build libraries])
813 AM_CONDITIONAL([BUILD_BITCOIN_LIBS], [test x$build_bitcoin_libs = xyes])
814 if test x$build_bitcoin_libs = xyes; then
815 AC_DEFINE(HAVE_CONSENSUS_LIB, 1, [Define this symbol if the consensus lib has been built])
816 AC_CONFIG_FILES([libzcashconsensus.pc:libzcashconsensus.pc.in])
819 AC_MSG_RESULT($build_bitcoin_libs)
823 if test "x$use_ccache" != "xno"; then
824 AC_MSG_CHECKING(if ccache should be used)
825 if test x$CCACHE = x; then
826 if test "x$use_ccache" = "xyes"; then
827 AC_MSG_ERROR([ccache not found.]);
833 CC="$ac_cv_path_CCACHE $CC"
834 CXX="$ac_cv_path_CCACHE $CXX"
836 AC_MSG_RESULT($use_ccache)
838 if test "x$use_ccache" = "xyes"; then
839 AX_CHECK_PREPROC_FLAG([-Qunused-arguments],[CPPFLAGS="-Qunused-arguments $CPPFLAGS"])
843 AC_MSG_CHECKING([if wallet should be enabled])
844 if test x$enable_wallet != xno; then
846 AC_DEFINE_UNQUOTED([ENABLE_WALLET],[1],[Define to 1 to enable wallet functions])
853 AC_MSG_CHECKING([if mining should be enabled])
854 if test x$enable_mining != xno; then
856 AC_DEFINE(ENABLE_MINING, 1, [Define to 1 to enable mining functions])
863 AC_MSG_CHECKING([if rust should be enabled])
864 if test x$enable_rust != xno; then
866 AC_DEFINE(ENABLE_RUST, 1, [Define to 1 to enable Rust language dependent functions])
872 AM_CONDITIONAL([ENABLE_ZMQ], [test "x$use_zmq" = "xyes"])
874 AM_CONDITIONAL([ENABLE_PROTON], [test "x$use_proton" = "xyes"])
876 AC_MSG_CHECKING([whether to build test_bitcoin])
877 if test x$use_tests = xyes; then
885 AC_MSG_CHECKING([whether to reduce exports])
886 if test x$use_reduce_exports = xyes; then
892 if test x$build_bitcoin_utils$build_bitcoin_libs$build_bitcoind$use_tests = xnononono; then
893 AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon or --enable-tests])
896 AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin])
897 AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin])
898 AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows])
899 AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet = xyes])
900 AM_CONDITIONAL([ENABLE_MINING],[test x$enable_mining = xyes])
901 AM_CONDITIONAL([ENABLE_RUST],[test x$enable_rust = xyes])
902 AM_CONDITIONAL([ENABLE_TESTS],[test x$BUILD_TEST = xyes])
903 AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
904 AM_CONDITIONAL([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes])
905 AM_CONDITIONAL([HARDEN],[test x$use_hardening = xyes])
906 AM_CONDITIONAL([ASAN],[test x$use_asan = xyes])
907 AM_CONDITIONAL([TSAN],[test x$use_tsan = xyes])
909 AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version])
910 AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor version])
911 AC_DEFINE(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION, [Build revision])
912 AC_DEFINE(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD, [Version Build])
913 AC_DEFINE(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE, [Version is release])
914 AC_DEFINE(COPYRIGHT_YEAR, _COPYRIGHT_YEAR, [Version is release])
915 AC_SUBST(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR)
916 AC_SUBST(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR)
917 AC_SUBST(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION)
918 AC_SUBST(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD)
919 AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
920 AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
921 AC_SUBST(BITCOIN_DAEMON_NAME)
922 AC_SUBST(BITCOIN_CLI_NAME)
923 AC_SUBST(BITCOIN_TX_NAME)
926 AC_SUBST(ERROR_CXXFLAGS)
927 AC_SUBST(SAN_CXXFLAGS)
928 AC_SUBST(SAN_LDFLAGS)
929 AC_SUBST(HARDENED_CXXFLAGS)
930 AC_SUBST(HARDENED_CPPFLAGS)
931 AC_SUBST(HARDENED_LDFLAGS)
934 AC_SUBST(LIBTOOL_APP_LDFLAGS)
937 AC_SUBST(LEVELDB_TARGET_FLAGS)
938 AC_SUBST(CRYPTO_LIBS)
941 AC_SUBST(EVENT_PTHREADS_LIBS)
945 AC_SUBST(LIBSNARK_DEPINST)
946 AC_SUBST(LIBZCASH_LIBS)
947 AC_SUBST(PROTON_LIBS)
948 AC_CONFIG_FILES([Makefile src/Makefile doc/man/Makefile src/test/buildenv.py])
949 AC_CONFIG_FILES([qa/pull-tester/run-bitcoind-for-test.sh],[chmod +x qa/pull-tester/run-bitcoind-for-test.sh])
950 AC_CONFIG_FILES([qa/pull-tester/tests-config.sh],[chmod +x qa/pull-tester/tests-config.sh])
952 dnl boost's m4 checks do something really nasty: they export these vars. As a
953 dnl result, they leak into secp256k1's configure and crazy things happen.
954 dnl Until this is fixed upstream and we've synced, we'll just un-export them.
955 CPPFLAGS_TEMP="$CPPFLAGS"
957 CPPFLAGS="$CPPFLAGS_TEMP"
959 LDFLAGS_TEMP="$LDFLAGS"
961 LDFLAGS="$LDFLAGS_TEMP"
967 PKGCONFIG_PATH_TEMP="$PKG_CONFIG_PATH"
968 unset PKG_CONFIG_PATH
969 PKG_CONFIG_PATH="$PKGCONFIG_PATH_TEMP"
971 PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
972 unset PKG_CONFIG_LIBDIR
973 PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
975 ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no --enable-module-recovery"
976 AC_CONFIG_SUBDIRS([src/secp256k1 src/snark src/univalue src/cryptoconditions])
980 dnl Taken from https://wiki.debian.org/RpathIssue
983 AC_MSG_RESULT([Fixing libtool for -rpath problems.])
984 sed < libtool > libtool-2 \
985 's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/'
992 echo "Options used to compile and link:"
993 echo " with wallet = $enable_wallet"
994 echo " with rust = $enable_rust"
995 echo " with proton = $use_proton"
996 echo " with zmq = $use_zmq"
997 echo " with test = $use_tests"
998 echo " debug enabled = $enable_debug"
999 echo " werror = $enable_werror"
1001 echo " target os = $TARGET_OS"
1002 echo " build os = $BUILD_OS"
1005 echo " CFLAGS = $CFLAGS"
1006 echo " CPPFLAGS = $CPPFLAGS"
1008 echo " CXXFLAGS = $CXXFLAGS"
1009 echo " LDFLAGS = $LDFLAGS"
1010 echo " ARFLAGS = $ARFLAGS"