1 dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
3 define(_CLIENT_VERSION_MAJOR, 0)
4 define(_CLIENT_VERSION_MINOR, 14)
5 define(_CLIENT_VERSION_REVISION, 99)
6 define(_CLIENT_VERSION_BUILD, 0)
7 define(_CLIENT_VERSION_IS_RELEASE, false)
8 define(_COPYRIGHT_YEAR, 2017)
9 define(_COPYRIGHT_HOLDERS,[The %s developers])
10 define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[Bitcoin Core]])
11 AC_INIT([Bitcoin Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[https://github.com/bitcoin/bitcoin/issues],[bitcoin],[https://bitcoincore.org/])
12 AC_CONFIG_SRCDIR([src/validation.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=bitcoind
18 BITCOIN_GUI_NAME=bitcoin-qt
19 BITCOIN_CLI_NAME=bitcoin-cli
20 BITCOIN_TX_NAME=bitcoin-tx
24 AH_TOP([#ifndef BITCOIN_CONFIG_H])
25 AH_TOP([#define BITCOIN_CONFIG_H])
26 AH_BOTTOM([#endif //BITCOIN_CONFIG_H])
28 dnl faketime breaks configure and is only needed for make. Disable it here.
31 dnl Automake init set-up and checks
32 AM_INIT_AUTOMAKE([no-define subdir-objects foreign])
34 dnl faketime messes with timestamps and causes configure to be re-run.
35 dnl --disable-maintainer-mode can be used to bypass this.
36 AM_MAINTAINER_MODE([enable])
38 dnl make the compilation flags quiet unless V=1 is used
39 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
41 dnl Compiler checks (here before libtool).
42 if test "x${CXXFLAGS+set}" = "xset"; then
43 CXXFLAGS_overridden=yes
45 CXXFLAGS_overridden=no
49 dnl By default, libtool for mingw refuses to link static libs into a dll for
50 dnl fear of mixing pic/non-pic objects, and import/export complications. Since
51 dnl we have those under control, re-enable that functionality.
54 lt_cv_deplibs_check_method="pass_all"
57 dnl Require C++11 compiler (no GNU extensions)
58 AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory], [nodefault])
59 dnl Check if -latomic is required for <std::atomic>
62 dnl Unless the user specified OBJCXX, force it to be the same as CXX. This ensures
63 dnl that we get the same -std flags for both.
64 m4_ifdef([AC_PROG_OBJCXX],[
65 if test "x${OBJCXX+set}" = "x"; then
71 dnl Libtool init checks.
74 dnl Check/return PATH for base programs.
76 AC_PATH_TOOL(RANLIB, ranlib)
77 AC_PATH_TOOL(STRIP, strip)
78 AC_PATH_TOOL(GCOV, gcov)
79 AC_PATH_PROG(LCOV, lcov)
80 dnl Python 3.x is supported from 3.4 on (see https://github.com/bitcoin/bitcoin/issues/7893)
81 AC_PATH_PROGS([PYTHON], [python3.6 python3.5 python3.4 python3 python2.7 python2 python])
82 AC_PATH_PROG(GENHTML, genhtml)
83 AC_PATH_PROG([GIT], [git])
84 AC_PATH_PROG(CCACHE,ccache)
85 AC_PATH_PROG(XGETTEXT,xgettext)
86 AC_PATH_PROG(HEXDUMP,hexdump)
87 AC_PATH_TOOL(READELF, readelf)
88 AC_PATH_TOOL(CPPFILT, c++filt)
89 AC_PATH_TOOL(OBJCOPY, objcopy)
91 AC_ARG_VAR(PYTHONPATH, Augments the default search path for python module files)
94 AC_ARG_ENABLE([wallet],
95 [AS_HELP_STRING([--disable-wallet],
96 [disable wallet (enabled by default)])],
97 [enable_wallet=$enableval],
100 AC_ARG_WITH([miniupnpc],
101 [AS_HELP_STRING([--with-miniupnpc],
102 [enable UPNP (default is yes if libminiupnpc is found)])],
106 AC_ARG_ENABLE([upnp-default],
107 [AS_HELP_STRING([--enable-upnp-default],
108 [if UPNP is enabled, turn it on at startup (default is no)])],
109 [use_upnp_default=$enableval],
110 [use_upnp_default=no])
113 AS_HELP_STRING([--disable-tests],[do not compile tests (default is to compile)]),
114 [use_tests=$enableval],
117 AC_ARG_ENABLE(gui-tests,
118 AS_HELP_STRING([--disable-gui-tests],[do not compile GUI tests (default is to compile if GUI and tests enabled)]),
119 [use_gui_tests=$enableval],
120 [use_gui_tests=$use_tests])
123 AS_HELP_STRING([--disable-bench],[do not compile benchmarks (default is to compile)]),
124 [use_bench=$enableval],
127 AC_ARG_ENABLE([extended-functional-tests],
128 AS_HELP_STRING([--enable-extended-functional-tests],[enable expensive functional tests when using lcov (default no)]),
129 [use_extended_functional_tests=$enableval],
130 [use_extended_functional_tests=no])
132 AC_ARG_WITH([qrencode],
133 [AS_HELP_STRING([--with-qrencode],
134 [enable QR code support (default is yes if qt is enabled and libqrencode is found)])],
138 AC_ARG_ENABLE([hardening],
139 [AS_HELP_STRING([--disable-hardening],
140 [do not attempt to harden the resulting executables (default is to harden)])],
141 [use_hardening=$enableval],
144 AC_ARG_ENABLE([reduce-exports],
145 [AS_HELP_STRING([--enable-reduce-exports],
146 [attempt to reduce exported symbols in the resulting executables (default is no)])],
147 [use_reduce_exports=$enableval],
148 [use_reduce_exports=no])
150 AC_ARG_ENABLE([ccache],
151 [AS_HELP_STRING([--disable-ccache],
152 [do not use ccache for building (default is to use if found)])],
153 [use_ccache=$enableval],
156 AC_ARG_ENABLE([lcov],
157 [AS_HELP_STRING([--enable-lcov],
158 [enable lcov testing (default is no)])],
162 AC_ARG_ENABLE([lcov-branch-coverage],
163 [AS_HELP_STRING([--enable-lcov-branch-coverage],
164 [enable lcov testing branch coverage (default is no)])],
165 [use_lcov_branch=yes],
166 [use_lcov_branch=no])
168 AC_ARG_ENABLE([glibc-back-compat],
169 [AS_HELP_STRING([--enable-glibc-back-compat],
170 [enable backwards compatibility with glibc])],
171 [use_glibc_compat=$enableval],
172 [use_glibc_compat=no])
174 AC_ARG_WITH([system-univalue],
175 [AS_HELP_STRING([--with-system-univalue],
176 [Build with system UniValue (default is no)])],
177 [system_univalue=$withval],
181 [AS_HELP_STRING([--disable-zmq],
182 [disable ZMQ notifications])],
183 [use_zmq=$enableval],
186 AC_ARG_WITH([protoc-bindir],[AS_HELP_STRING([--with-protoc-bindir=BIN_DIR],[specify protoc bin path])], [protoc_bin_path=$withval], [])
189 [AS_HELP_STRING([--disable-man],
190 [do not install man pages (default is to install)])],,
192 AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
195 AC_ARG_ENABLE([debug],
196 [AS_HELP_STRING([--enable-debug],
197 [use debug compiler flags and macros (default is no)])],
198 [enable_debug=$enableval],
201 # Turn warnings into errors
202 AC_ARG_ENABLE([werror],
203 [AS_HELP_STRING([--enable-werror],
204 [Treat certain compiler warnings as errors (default is no)])],
205 [enable_werror=$enableval],
209 AX_CHECK_COMPILE_FLAG([-Werror],[CXXFLAG_WERROR="-Werror"],[CXXFLAG_WERROR=""])
211 if test "x$enable_debug" = xyes; then
212 CPPFLAGS="$CPPFLAGS -DDEBUG -DDEBUG_LOCKORDER"
213 if test "x$GCC" = xyes; then
214 CFLAGS="$CFLAGS -g3 -O0"
217 if test "x$GXX" = xyes; then
218 CXXFLAGS="$CXXFLAGS -g3 -O0"
223 if test "x$enable_werror" = "xyes"; then
224 if test "x$CXXFLAG_WERROR" = "x"; then
225 AC_MSG_ERROR("enable-werror set but -Werror is not usable")
227 AX_CHECK_COMPILE_FLAG([-Werror=vla],[ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror=vla"],,[[$CXXFLAG_WERROR]])
230 if test "x$CXXFLAGS_overridden" = "xno"; then
231 AX_CHECK_COMPILE_FLAG([-Wall],[CXXFLAGS="$CXXFLAGS -Wall"],,[[$CXXFLAG_WERROR]])
232 AX_CHECK_COMPILE_FLAG([-Wextra],[CXXFLAGS="$CXXFLAGS -Wextra"],,[[$CXXFLAG_WERROR]])
233 AX_CHECK_COMPILE_FLAG([-Wformat],[CXXFLAGS="$CXXFLAGS -Wformat"],,[[$CXXFLAG_WERROR]])
234 AX_CHECK_COMPILE_FLAG([-Wvla],[CXXFLAGS="$CXXFLAGS -Wvla"],,[[$CXXFLAG_WERROR]])
235 AX_CHECK_COMPILE_FLAG([-Wformat-security],[CXXFLAGS="$CXXFLAGS -Wformat-security"],,[[$CXXFLAG_WERROR]])
237 ## Some compilers (gcc) ignore unknown -Wno-* options, but warn about all
238 ## unknown options if any other warning is produced. Test the -Wfoo case, and
239 ## set the -Wno-foo case if it works.
240 AX_CHECK_COMPILE_FLAG([-Wunused-parameter],[CXXFLAGS="$CXXFLAGS -Wno-unused-parameter"],,[[$CXXFLAG_WERROR]])
241 AX_CHECK_COMPILE_FLAG([-Wself-assign],[CXXFLAGS="$CXXFLAGS -Wno-self-assign"],,[[$CXXFLAG_WERROR]])
242 AX_CHECK_COMPILE_FLAG([-Wunused-local-typedef],[CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"],,[[$CXXFLAG_WERROR]])
243 AX_CHECK_COMPILE_FLAG([-Wdeprecated-register],[CXXFLAGS="$CXXFLAGS -Wno-deprecated-register"],,[[$CXXFLAG_WERROR]])
244 AX_CHECK_COMPILE_FLAG([-Wimplicit-fallthrough],[CXXFLAGS="$CXXFLAGS -Wno-implicit-fallthrough"],,[[$CXXFLAG_WERROR]])
246 # Check for optional instruction set support. Enabling these does _not_ imply that all code will
247 # be compiled with them, rather that specific objects/libs may use them after checking for runtime
249 AX_CHECK_COMPILE_FLAG([-msse4.2],[[enable_sse42=yes; SSE42_CXXFLAGS="-msse4.2"]],,[[$CXXFLAG_WERROR]])
252 CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"
255 [AS_HELP_STRING([--with-utils],
256 [build bitcoin-cli bitcoin-tx (default=yes)])],
257 [build_bitcoin_utils=$withval],
258 [build_bitcoin_utils=yes])
261 [AS_HELP_STRING([--with-libs],
262 [build libraries (default=yes)])],
263 [build_bitcoin_libs=$withval],
264 [build_bitcoin_libs=yes])
266 AC_ARG_WITH([daemon],
267 [AS_HELP_STRING([--with-daemon],
268 [build bitcoind daemon (default=yes)])],
269 [build_bitcoind=$withval],
270 [build_bitcoind=yes])
276 #pkgconfig does more harm than good with MinGW
280 AC_CHECK_LIB([mingwthrd], [main],, AC_MSG_ERROR(lib missing))
281 AC_CHECK_LIB([kernel32], [main],, AC_MSG_ERROR(lib missing))
282 AC_CHECK_LIB([user32], [main],, AC_MSG_ERROR(lib missing))
283 AC_CHECK_LIB([gdi32], [main],, AC_MSG_ERROR(lib missing))
284 AC_CHECK_LIB([comdlg32], [main],, AC_MSG_ERROR(lib missing))
285 AC_CHECK_LIB([winspool], [main],, AC_MSG_ERROR(lib missing))
286 AC_CHECK_LIB([winmm], [main],, AC_MSG_ERROR(lib missing))
287 AC_CHECK_LIB([shell32], [main],, AC_MSG_ERROR(lib missing))
288 AC_CHECK_LIB([comctl32], [main],, AC_MSG_ERROR(lib missing))
289 AC_CHECK_LIB([ole32], [main],, AC_MSG_ERROR(lib missing))
290 AC_CHECK_LIB([oleaut32], [main],, AC_MSG_ERROR(lib missing))
291 AC_CHECK_LIB([uuid], [main],, AC_MSG_ERROR(lib missing))
292 AC_CHECK_LIB([rpcrt4], [main],, AC_MSG_ERROR(lib missing))
293 AC_CHECK_LIB([advapi32], [main],, AC_MSG_ERROR(lib missing))
294 AC_CHECK_LIB([ws2_32], [main],, AC_MSG_ERROR(lib missing))
295 AC_CHECK_LIB([mswsock], [main],, AC_MSG_ERROR(lib missing))
296 AC_CHECK_LIB([shlwapi], [main],, AC_MSG_ERROR(lib missing))
297 AC_CHECK_LIB([iphlpapi], [main],, AC_MSG_ERROR(lib missing))
298 AC_CHECK_LIB([crypt32], [main],, AC_MSG_ERROR(lib missing))
300 # -static is interpreted by libtool, where it has a different meaning.
301 # In libtool-speak, it's -all-static.
302 AX_CHECK_LINK_FLAG([[-static]],[LIBTOOL_APP_LDFLAGS="$LIBTOOL_APP_LDFLAGS -all-static"])
304 AC_PATH_PROG([MAKENSIS], [makensis], none)
305 if test x$MAKENSIS = xnone; then
306 AC_MSG_WARN("makensis not found. Cannot create installer.")
309 AC_PATH_TOOL(WINDRES, windres, none)
310 if test x$WINDRES = xnone; then
311 AC_MSG_ERROR("windres not found")
314 CPPFLAGS="$CPPFLAGS -D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB"
315 LEVELDB_TARGET_FLAGS="-DOS_WINDOWS"
316 if test "x$CXXFLAGS_overridden" = "xno"; then
317 CXXFLAGS="$CXXFLAGS -w"
320 i?86-*) WINDOWS_BITS=32 ;;
321 x86_64-*) WINDOWS_BITS=64 ;;
322 *) AC_MSG_ERROR("Could not determine win32/win64 for installer") ;;
324 AC_SUBST(WINDOWS_BITS)
326 dnl libtool insists upon adding -nostdlib and a list of objects/libs to link against.
327 dnl That breaks our ability to build dll's with static libgcc/libstdc++/libssp. Override
328 dnl its command here, with the predeps/postdeps removed, and -static inserted. Postdeps are
329 dnl also overridden to prevent their insertion later.
330 dnl This should only affect dll's.
331 archive_cmds_CXX="\$CC -shared \$libobjs \$deplibs \$compiler_flags -static -o \$output_objdir/\$soname \${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib"
337 LEVELDB_TARGET_FLAGS="-DOS_MACOSX"
338 if test x$cross_compiling != xyes; then
340 AC_CHECK_PROG([PORT],port, port)
341 if test x$PORT = xport; then
342 dnl add default macports paths
343 CPPFLAGS="$CPPFLAGS -isystem /opt/local/include"
344 LIBS="$LIBS -L/opt/local/lib"
345 if test -d /opt/local/include/db48; then
346 CPPFLAGS="$CPPFLAGS -I/opt/local/include/db48"
347 LIBS="$LIBS -L/opt/local/lib/db48"
351 AC_PATH_PROGS([RSVG_CONVERT], [rsvg-convert rsvg],rsvg-convert)
352 AC_CHECK_PROG([BREW],brew, brew)
353 if test x$BREW = xbrew; then
354 dnl These Homebrew packages may be keg-only, meaning that they won't be found
355 dnl in expected paths because they may conflict with system files. Ask
356 dnl Homebrew where each one is located, then adjust paths accordingly.
357 dnl It's safe to add these paths even if the functionality is disabled by
358 dnl the user (--without-wallet or --without-gui for example).
360 openssl_prefix=`$BREW --prefix openssl 2>/dev/null`
361 bdb_prefix=`$BREW --prefix berkeley-db4 2>/dev/null`
362 qt5_prefix=`$BREW --prefix qt5 2>/dev/null`
363 if test x$openssl_prefix != x; then
364 PKG_CONFIG_PATH="$openssl_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
365 export PKG_CONFIG_PATH
367 if test x$bdb_prefix != x; then
368 CPPFLAGS="$CPPFLAGS -I$bdb_prefix/include"
369 LIBS="$LIBS -L$bdb_prefix/lib"
371 if test x$qt5_prefix != x; then
372 PKG_CONFIG_PATH="$qt5_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
373 export PKG_CONFIG_PATH
382 AC_PATH_TOOL([INSTALLNAMETOOL], [install_name_tool], install_name_tool)
383 AC_PATH_TOOL([OTOOL], [otool], otool)
384 AC_PATH_PROGS([GENISOIMAGE], [genisoimage mkisofs],genisoimage)
385 AC_PATH_PROGS([RSVG_CONVERT], [rsvg-convert rsvg],rsvg-convert)
386 AC_PATH_PROGS([IMAGEMAGICK_CONVERT], [convert],convert)
387 AC_PATH_PROGS([TIFFCP], [tiffcp],tiffcp)
389 dnl libtool will try to strip the static lib, which is a problem for
390 dnl cross-builds because strip attempts to call a hard-coded ld,
391 dnl which may not exist in the path. Stripping the .a is not
392 dnl necessary, so just disable it.
398 AX_CHECK_LINK_FLAG([[-Wl,-headerpad_max_install_names]], [LDFLAGS="$LDFLAGS -Wl,-headerpad_max_install_names"])
399 CPPFLAGS="$CPPFLAGS -DMAC_OSX"
400 OBJCXXFLAGS="$CXXFLAGS"
404 LEVELDB_TARGET_FLAGS="-DOS_LINUX"
407 LEVELDB_TARGET_FLAGS="-DOS_FREEBSD"
410 LEVELDB_TARGET_FLAGS="-DOS_OPENBSD"
413 OTHER_OS=`echo ${host_os} | awk '{print toupper($0)}'`
414 AC_MSG_WARN([Guessing LevelDB OS as OS_${OTHER_OS}, please check whether this is correct, if not add an entry to configure.ac.])
415 LEVELDB_TARGET_FLAGS="-DOS_${OTHER_OS}"
419 if test x$use_pkgconfig = xyes; then
420 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.)])
421 m4_ifdef([PKG_PROG_PKG_CONFIG], [
423 if test x"$PKG_CONFIG" = "x"; then
424 AC_MSG_ERROR(pkg-config not found.)
429 if test x$use_extended_functional_tests != xno; then
430 AC_SUBST(EXTENDED_FUNCTIONAL_TESTS, --extended)
433 if test x$use_lcov = xyes; then
434 if test x$LCOV = x; then
435 AC_MSG_ERROR("lcov testing requested but lcov not found")
437 if test x$GCOV = x; then
438 AC_MSG_ERROR("lcov testing requested but gcov not found")
440 if test x$PYTHON = x; then
441 AC_MSG_ERROR("lcov testing requested but python not found")
443 if test x$GENHTML = x; then
444 AC_MSG_ERROR("lcov testing requested but genhtml not found")
446 LCOV="$LCOV --gcov-tool=$GCOV"
447 AX_CHECK_LINK_FLAG([[--coverage]], [LDFLAGS="$LDFLAGS --coverage"],
448 [AC_MSG_ERROR("lcov testing requested but --coverage linker flag does not work")])
449 AX_CHECK_COMPILE_FLAG([--coverage],[CXXFLAGS="$CXXFLAGS --coverage"],
450 [AC_MSG_ERROR("lcov testing requested but --coverage flag does not work")])
451 AC_DEFINE(USE_COVERAGE, 1, [Define this symbol if coverage is enabled])
452 CXXFLAGS="$CXXFLAGS -Og"
455 if test x$use_lcov_branch != xno; then
456 AC_SUBST(LCOV_OPTS, "$LCOV_OPTS --rc lcov_branch_coverage=1")
459 dnl Check for endianness
462 dnl Check for pthread compile/link requirements
465 # The following macro will add the necessary defines to bitcoin-config.h, but
466 # they also need to be passed down to any subprojects. Pull the results out of
467 # the cache and add them to CPPFLAGS.
469 # detect POSIX or GNU variant of strerror_r
472 if test x$ac_cv_sys_file_offset_bits != x &&
473 test x$ac_cv_sys_file_offset_bits != xno &&
474 test x$ac_cv_sys_file_offset_bits != xunknown; then
475 CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
478 if test x$ac_cv_sys_large_files != x &&
479 test x$ac_cv_sys_large_files != xno &&
480 test x$ac_cv_sys_large_files != xunknown; then
481 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES=$ac_cv_sys_large_files"
484 AX_CHECK_LINK_FLAG([[-Wl,--large-address-aware]], [LDFLAGS="$LDFLAGS -Wl,--large-address-aware"])
486 AX_GCC_FUNC_ATTRIBUTE([visibility])
487 AX_GCC_FUNC_ATTRIBUTE([dllexport])
488 AX_GCC_FUNC_ATTRIBUTE([dllimport])
490 if test x$use_glibc_compat != xno; then
492 #glibc absorbed clock_gettime in 2.17. librt (its previous location) is safe to link
493 #in anyway for back-compat.
494 AC_CHECK_LIB([rt],[clock_gettime],, AC_MSG_ERROR(lib missing))
496 #__fdelt_chk's params and return type have changed from long unsigned int to long int.
497 # See which one is present here.
498 AC_MSG_CHECKING(__fdelt_chk type)
499 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef _FORTIFY_SOURCE
500 #undef _FORTIFY_SOURCE
502 #define _FORTIFY_SOURCE 2
503 #include <sys/select.h>
504 extern "C" long unsigned int __fdelt_warn(long unsigned int);]],[[]])],
505 [ fdelt_type="long unsigned int"],
506 [ fdelt_type="long int"])
507 AC_MSG_RESULT($fdelt_type)
508 AC_DEFINE_UNQUOTED(FDELT_TYPE, $fdelt_type,[parameter and return value type for __fdelt_chk])
510 AC_SEARCH_LIBS([clock_gettime],[rt])
513 if test x$TARGET_OS != xwindows; then
514 # All windows code is PIC, forcing it on just adds useless compile warnings
515 AX_CHECK_COMPILE_FLAG([-fPIC],[PIC_FLAGS="-fPIC"])
518 if test x$use_hardening != xno; then
519 AX_CHECK_COMPILE_FLAG([-Wstack-protector],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wstack-protector"])
520 AX_CHECK_COMPILE_FLAG([-fstack-protector-all],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fstack-protector-all"])
522 AX_CHECK_PREPROC_FLAG([-D_FORTIFY_SOURCE=2],[
523 AX_CHECK_PREPROC_FLAG([-U_FORTIFY_SOURCE],[
524 HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -U_FORTIFY_SOURCE"
526 HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -D_FORTIFY_SOURCE=2"
529 AX_CHECK_LINK_FLAG([[-Wl,--dynamicbase]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--dynamicbase"])
530 AX_CHECK_LINK_FLAG([[-Wl,--nxcompat]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--nxcompat"])
531 AX_CHECK_LINK_FLAG([[-Wl,--high-entropy-va]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--high-entropy-va"])
532 AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"])
533 AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"])
535 if test x$TARGET_OS != xwindows; then
536 AX_CHECK_COMPILE_FLAG([-fPIE],[PIE_FLAGS="-fPIE"])
537 AX_CHECK_LINK_FLAG([[-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"])
542 AC_CHECK_LIB([ssp], [main],, AC_MSG_ERROR(lib missing))
547 dnl this flag screws up non-darwin gcc even when the check fails. special-case it.
548 if test x$TARGET_OS = xdarwin; then
549 AX_CHECK_LINK_FLAG([[-Wl,-dead_strip]], [LDFLAGS="$LDFLAGS -Wl,-dead_strip"])
552 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])
554 AC_CHECK_DECLS([strnlen])
556 # Check for daemon(3), unrelated to --with-daemon (although used by it)
557 AC_CHECK_DECLS([daemon])
559 AC_CHECK_DECLS([le16toh, le32toh, le64toh, htole16, htole32, htole64, be16toh, be32toh, be64toh, htobe16, htobe32, htobe64],,,
562 #elif HAVE_SYS_ENDIAN_H
563 #include <sys/endian.h>
566 AC_CHECK_DECLS([bswap_16, bswap_32, bswap_64],,,
568 #include <byteswap.h>
571 AC_CHECK_DECLS([__builtin_clz, __builtin_clzl, __builtin_clzll])
573 dnl Check for MSG_NOSIGNAL
574 AC_MSG_CHECKING(for MSG_NOSIGNAL)
575 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
576 [[ int f = MSG_NOSIGNAL; ]])],
577 [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MSG_NOSIGNAL, 1,[Define this symbol if you have MSG_NOSIGNAL]) ],
581 dnl Check for MSG_DONTWAIT
582 AC_MSG_CHECKING(for MSG_DONTWAIT)
583 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
584 [[ int f = MSG_DONTWAIT; ]])],
585 [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MSG_DONTWAIT, 1,[Define this symbol if you have MSG_DONTWAIT]) ],
589 dnl Check for malloc_info (for memory statistics information in getmemoryinfo)
590 AC_MSG_CHECKING(for getmemoryinfo)
591 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
592 [[ int f = malloc_info(0, NULL); ]])],
593 [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MALLOC_INFO, 1,[Define this symbol if you have malloc_info]) ],
597 dnl Check for mallopt(M_ARENA_MAX) (to set glibc arenas)
598 AC_MSG_CHECKING(for mallopt M_ARENA_MAX)
599 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <malloc.h>]],
600 [[ mallopt(M_ARENA_MAX, 1); ]])],
601 [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MALLOPT_ARENA_MAX, 1,[Define this symbol if you have mallopt with M_ARENA_MAX]) ],
605 AC_MSG_CHECKING([for visibility attribute])
606 AC_LINK_IFELSE([AC_LANG_SOURCE([
607 int foo_def( void ) __attribute__((visibility("default")));
611 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE,1,[Define if the visibility attribute is supported.])
616 if test x$use_reduce_exports = xyes; then
617 AC_MSG_ERROR([Cannot find a working visibility attribute. Use --disable-reduce-exports.])
622 # Check for different ways of gathering OS randomness
623 AC_MSG_CHECKING(for Linux getrandom syscall)
624 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>
625 #include <sys/syscall.h>
626 #include <linux/random.h>]],
627 [[ syscall(SYS_getrandom, nullptr, 32, 0); ]])],
628 [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYS_GETRANDOM, 1,[Define this symbol if the Linux getrandom system call is available]) ],
632 AC_MSG_CHECKING(for getentropy)
633 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]],
634 [[ getentropy(nullptr, 32) ]])],
635 [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_GETENTROPY, 1,[Define this symbol if the BSD getentropy system call is available]) ],
639 AC_MSG_CHECKING(for sysctl KERN_ARND)
640 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
641 #include <sys/sysctl.h>]],
642 [[ static const int name[2] = {CTL_KERN, KERN_ARND};
643 sysctl(name, 2, nullptr, nullptr, nullptr, 0); ]])],
644 [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL_ARND, 1,[Define this symbol if the BSD sysctl(KERN_ARND) is available]) ],
648 # Check for reduced exports
649 if test x$use_reduce_exports = xyes; then
650 AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],[RE_CXXFLAGS="-fvisibility=hidden"],
651 [AC_MSG_ERROR([Cannot set default symbol visibility. Use --disable-reduce-exports.])])
657 AM_CONDITIONAL([EMBEDDED_LEVELDB],[true])
658 AC_SUBST(LEVELDB_CPPFLAGS)
662 if test x$enable_wallet != xno; then
663 dnl Check for libdb_cxx only if wallet enabled
667 dnl Check for libminiupnpc (optional)
668 if test x$use_upnp != xno; then
670 [miniupnpc/miniwget.h miniupnpc/miniupnpc.h miniupnpc/upnpcommands.h miniupnpc/upnperrors.h],
671 [AC_CHECK_LIB([miniupnpc], [main],[MINIUPNPC_LIBS=-lminiupnpc], [have_miniupnpc=no])],
678 dnl sets $bitcoin_enable_qt, $bitcoin_enable_qt_test, $bitcoin_enable_qt_dbus
679 BITCOIN_QT_CONFIGURE([$use_pkgconfig], [qt5])
681 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests$use_bench = xnonononono; then
687 if test x$use_boost = xyes; then
689 dnl Minimum required Boost version
690 define(MINIMUM_REQUIRED_BOOST, 1.47.0)
692 dnl Check for boost libs
693 AX_BOOST_BASE([MINIMUM_REQUIRED_BOOST])
696 AX_BOOST_PROGRAM_OPTIONS
700 dnl Boost 1.56 through 1.62 allow using std::atomic instead of its own atomic
701 dnl counter implementations. In 1.63 and later the std::atomic approach is default.
702 m4_pattern_allow(DBOOST_AC_USE_STD_ATOMIC) dnl otherwise it's treated like a macro
703 BOOST_CPPFLAGS="-DBOOST_SP_USE_STD_ATOMIC -DBOOST_AC_USE_STD_ATOMIC $BOOST_CPPFLAGS"
705 if test x$use_reduce_exports = xyes; then
706 AC_MSG_CHECKING([for working boost reduced exports])
707 TEMP_CPPFLAGS="$CPPFLAGS"
708 CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
709 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
710 @%:@include <boost/version.hpp>
712 #if BOOST_VERSION >= 104900
713 // Everything is okay
715 # error Boost version is too old
720 AC_MSG_ERROR([boost versions < 1.49 are known to be broken with reduced exports. Use --disable-reduce-exports.])
722 CPPFLAGS="$TEMP_CPPFLAGS"
726 if test x$use_reduce_exports = xyes; then
727 CXXFLAGS="$CXXFLAGS $RE_CXXFLAGS"
728 AX_CHECK_LINK_FLAG([[-Wl,--exclude-libs,ALL]], [RELDFLAGS="-Wl,--exclude-libs,ALL"])
731 if test x$use_tests = xyes; then
733 if test x$HEXDUMP = x; then
734 AC_MSG_ERROR(hexdump is required for tests)
738 if test x$use_boost = xyes; then
740 AX_BOOST_UNIT_TEST_FRAMEWORK
742 dnl Determine if -DBOOST_TEST_DYN_LINK is needed
743 AC_MSG_CHECKING([for dynamic linked boost test])
745 LIBS="$LIBS $BOOST_LDFLAGS $BOOST_UNIT_TEST_FRAMEWORK_LIB"
746 TEMP_CPPFLAGS="$CPPFLAGS"
747 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
748 AC_LINK_IFELSE([AC_LANG_SOURCE([
749 #define BOOST_TEST_DYN_LINK
750 #define BOOST_TEST_MAIN
751 #include <boost/test/unit_test.hpp>
755 [TESTDEFS="$TESTDEFS -DBOOST_TEST_DYN_LINK"],
758 CPPFLAGS="$TEMP_CPPFLAGS"
763 if test x$use_boost = xyes; then
765 BOOST_LIBS="$BOOST_LDFLAGS $BOOST_SYSTEM_LIB $BOOST_FILESYSTEM_LIB $BOOST_PROGRAM_OPTIONS_LIB $BOOST_THREAD_LIB $BOOST_CHRONO_LIB"
768 dnl If boost (prior to 1.57) was built without c++11, it emulated scoped enums
769 dnl using c++98 constructs. Unfortunately, this implementation detail leaked into
770 dnl the abi. This was fixed in 1.57.
772 dnl When building against that installed version using c++11, the headers pick up
773 dnl on the native c++11 scoped enum support and enable it, however it will fail to
774 dnl link. This can be worked around by disabling c++11 scoped enums if linking will
776 dnl BOOST_NO_SCOPED_ENUMS was changed to BOOST_NO_CXX11_SCOPED_ENUMS in 1.51.
779 LIBS="$BOOST_LIBS $LIBS"
780 TEMP_CPPFLAGS="$CPPFLAGS"
781 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
782 AC_MSG_CHECKING([for mismatched boost c++11 scoped enums])
783 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
784 #include "boost/config.hpp"
785 #include "boost/version.hpp"
786 #if !defined(BOOST_NO_SCOPED_ENUMS) && !defined(BOOST_NO_CXX11_SCOPED_ENUMS) && BOOST_VERSION < 105700
787 #define BOOST_NO_SCOPED_ENUMS
788 #define BOOST_NO_CXX11_SCOPED_ENUMS
791 #include "boost/filesystem.hpp"
794 boost::filesystem::copy_file("foo", "bar");
799 [AC_MSG_RESULT(mismatched); BOOST_CPPFLAGS="$BOOST_CPPFLAGS -DBOOST_NO_SCOPED_ENUMS -DBOOST_NO_CXX11_SCOPED_ENUMS"], [AC_MSG_RESULT(ok)])
801 CPPFLAGS="$TEMP_CPPFLAGS"
803 dnl Boost >= 1.50 uses sleep_for rather than the now-deprecated sleep, however
804 dnl it was broken from 1.50 to 1.52 when backed by nanosleep. Use sleep_for if
805 dnl a working version is available, else fall back to sleep. sleep was removed
807 dnl If neither is available, abort.
809 LIBS="$BOOST_LIBS $LIBS"
810 TEMP_CPPFLAGS="$CPPFLAGS"
811 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
812 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
813 #include <boost/thread/thread.hpp>
814 #include <boost/version.hpp>
816 #if BOOST_VERSION >= 105000 && (!defined(BOOST_HAS_NANOSLEEP) || BOOST_VERSION >= 105200)
817 boost::this_thread::sleep_for(boost::chrono::milliseconds(0));
823 AC_DEFINE(HAVE_WORKING_BOOST_SLEEP_FOR, 1, [Define this symbol if boost sleep_for works])],
826 CPPFLAGS="$TEMP_CPPFLAGS"
828 if test x$boost_sleep != xyes; then
830 LIBS="$BOOST_LIBS $LIBS"
831 TEMP_CPPFLAGS="$CPPFLAGS"
832 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
833 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
834 #include <boost/version.hpp>
835 #include <boost/thread.hpp>
836 #include <boost/date_time/posix_time/posix_time_types.hpp>
838 #if BOOST_VERSION <= 105600
839 boost::this_thread::sleep(boost::posix_time::milliseconds(0));
844 [boost_sleep=yes; AC_DEFINE(HAVE_WORKING_BOOST_SLEEP, 1, [Define this symbol if boost sleep works])],
847 CPPFLAGS="$TEMP_CPPFLAGS"
850 if test x$boost_sleep != xyes; then
851 AC_MSG_ERROR(No working boost sleep implementation found.)
856 if test x$use_pkgconfig = xyes; then
861 PKG_CHECK_MODULES([SSL], [libssl],, [AC_MSG_ERROR(openssl not found.)])
862 PKG_CHECK_MODULES([CRYPTO], [libcrypto],,[AC_MSG_ERROR(libcrypto not found.)])
863 BITCOIN_QT_CHECK([PKG_CHECK_MODULES([PROTOBUF], [protobuf], [have_protobuf=yes], [BITCOIN_QT_FAIL(libprotobuf not found)])])
864 if test x$use_qr != xno; then
865 BITCOIN_QT_CHECK([PKG_CHECK_MODULES([QR], [libqrencode], [have_qrencode=yes], [have_qrencode=no])])
867 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
868 PKG_CHECK_MODULES([EVENT], [libevent],, [AC_MSG_ERROR(libevent not found.)])
869 if test x$TARGET_OS != xwindows; then
870 PKG_CHECK_MODULES([EVENT_PTHREADS], [libevent_pthreads],, [AC_MSG_ERROR(libevent_pthreads not found.)])
874 if test "x$use_zmq" = "xyes"; then
875 PKG_CHECK_MODULES([ZMQ],[libzmq >= 4],
876 [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
877 [AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
878 AC_MSG_WARN([libzmq version 4.x or greater not found, disabling])
881 AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
886 AC_CHECK_HEADER([openssl/crypto.h],,AC_MSG_ERROR(libcrypto headers missing))
887 AC_CHECK_LIB([crypto], [main],CRYPTO_LIBS=-lcrypto, AC_MSG_ERROR(libcrypto missing))
889 AC_CHECK_HEADER([openssl/ssl.h],, AC_MSG_ERROR(libssl headers missing),)
890 AC_CHECK_LIB([ssl], [main],SSL_LIBS=-lssl, AC_MSG_ERROR(libssl missing))
892 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
893 AC_CHECK_HEADER([event2/event.h],, AC_MSG_ERROR(libevent headers missing),)
894 AC_CHECK_LIB([event],[main],EVENT_LIBS=-levent,AC_MSG_ERROR(libevent missing))
895 if test x$TARGET_OS != xwindows; then
896 AC_CHECK_LIB([event_pthreads],[main],EVENT_PTHREADS_LIBS=-levent_pthreads,AC_MSG_ERROR(libevent_pthreads missing))
900 if test "x$use_zmq" = "xyes"; then
901 AC_CHECK_HEADER([zmq.h],
902 [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
903 [AC_MSG_WARN([zmq.h not found, disabling zmq support])
905 AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
906 AC_CHECK_LIB([zmq],[zmq_ctx_shutdown],ZMQ_LIBS=-lzmq,
907 [AC_MSG_WARN([libzmq >= 4.0 not found, disabling zmq support])
909 AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
911 AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
914 if test "x$use_zmq" = "xyes"; then
915 dnl Assume libzmq was built for static linking
918 ZMQ_CFLAGS="$ZMQ_CFLAGS -DZMQ_STATIC"
923 BITCOIN_QT_CHECK(AC_CHECK_LIB([protobuf] ,[main],[PROTOBUF_LIBS=-lprotobuf], BITCOIN_QT_FAIL(libprotobuf not found)))
924 if test x$use_qr != xno; then
925 BITCOIN_QT_CHECK([AC_CHECK_LIB([qrencode], [main],[QR_LIBS=-lqrencode], [have_qrencode=no])])
926 BITCOIN_QT_CHECK([AC_CHECK_HEADER([qrencode.h],, have_qrencode=no)])
930 save_CXXFLAGS="${CXXFLAGS}"
931 CXXFLAGS="${CXXFLAGS} ${CRYPTO_CFLAGS} ${SSL_CFLAGS}"
932 AC_CHECK_DECLS([EVP_MD_CTX_new],,,[AC_INCLUDES_DEFAULT
933 #include <openssl/x509_vfy.h>
935 CXXFLAGS="${save_CXXFLAGS}"
939 need_bundled_univalue=yes
941 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests$use_bench = xnonononono; then
942 need_bundled_univalue=no
945 if test x$system_univalue != xno ; then
947 if test x$use_pkgconfig = xyes; then
952 PKG_CHECK_MODULES([UNIVALUE],[libunivalue],[found_univalue=yes],[true])
956 AC_CHECK_HEADER([univalue.h],[
957 AC_CHECK_LIB([univalue], [main],[
958 UNIVALUE_LIBS=-lunivalue
964 if test x$found_univalue = xyes ; then
966 need_bundled_univalue=no
967 elif test x$system_univalue = xyes ; then
968 AC_MSG_ERROR([univalue not found])
974 if test x$need_bundled_univalue = xyes ; then
975 UNIVALUE_CFLAGS='-I$(srcdir)/univalue/include'
976 UNIVALUE_LIBS='univalue/libunivalue.la'
981 AM_CONDITIONAL([EMBEDDED_UNIVALUE],[test x$need_bundled_univalue = xyes])
982 AC_SUBST(UNIVALUE_CFLAGS)
983 AC_SUBST(UNIVALUE_LIBS)
985 BITCOIN_QT_PATH_PROGS([PROTOC], [protoc],$protoc_bin_path)
987 AC_MSG_CHECKING([whether to build bitcoind])
988 AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
989 AC_MSG_RESULT($build_bitcoind)
991 AC_MSG_CHECKING([whether to build utils (bitcoin-cli bitcoin-tx)])
992 AM_CONDITIONAL([BUILD_BITCOIN_UTILS], [test x$build_bitcoin_utils = xyes])
993 AC_MSG_RESULT($build_bitcoin_utils)
995 AC_MSG_CHECKING([whether to build libraries])
996 AM_CONDITIONAL([BUILD_BITCOIN_LIBS], [test x$build_bitcoin_libs = xyes])
997 if test x$build_bitcoin_libs = xyes; then
998 AC_DEFINE(HAVE_CONSENSUS_LIB, 1, [Define this symbol if the consensus lib has been built])
999 AC_CONFIG_FILES([libbitcoinconsensus.pc:libbitcoinconsensus.pc.in])
1001 AC_MSG_RESULT($build_bitcoin_libs)
1005 if test "x$use_ccache" != "xno"; then
1006 AC_MSG_CHECKING(if ccache should be used)
1007 if test x$CCACHE = x; then
1008 if test "x$use_ccache" = "xyes"; then
1009 AC_MSG_ERROR([ccache not found.]);
1015 CC="$ac_cv_path_CCACHE $CC"
1016 CXX="$ac_cv_path_CCACHE $CXX"
1018 AC_MSG_RESULT($use_ccache)
1020 if test "x$use_ccache" = "xyes"; then
1021 AX_CHECK_PREPROC_FLAG([-Qunused-arguments],[CPPFLAGS="-Qunused-arguments $CPPFLAGS"])
1025 AC_MSG_CHECKING([if wallet should be enabled])
1026 if test x$enable_wallet != xno; then
1028 AC_DEFINE_UNQUOTED([ENABLE_WALLET],[1],[Define to 1 to enable wallet functions])
1034 dnl enable upnp support
1035 AC_MSG_CHECKING([whether to build with support for UPnP])
1036 if test x$have_miniupnpc = xno; then
1037 if test x$use_upnp = xyes; then
1038 AC_MSG_ERROR("UPnP requested but cannot be built. use --without-miniupnpc")
1042 if test x$use_upnp != xno; then
1044 AC_MSG_CHECKING([whether to build with UPnP enabled by default])
1047 if test x$use_upnp_default != xno; then
1048 use_upnp_default=yes
1051 AC_MSG_RESULT($use_upnp_default)
1052 AC_DEFINE_UNQUOTED([USE_UPNP],[$upnp_setting],[UPnP support not compiled if undefined, otherwise value (0 or 1) determines default state])
1053 if test x$TARGET_OS = xwindows; then
1054 MINIUPNPC_CPPFLAGS="-DSTATICLIB -DMINIUPNP_STATICLIB"
1061 dnl these are only used when qt is enabled
1063 if test x$bitcoin_enable_qt != xno; then
1064 dnl enable dbus support
1065 AC_MSG_CHECKING([whether to build GUI with support for D-Bus])
1066 if test x$bitcoin_enable_qt_dbus != xno; then
1067 AC_DEFINE([USE_DBUS],[1],[Define if dbus support should be compiled in])
1069 AC_MSG_RESULT($bitcoin_enable_qt_dbus)
1071 dnl enable qr support
1072 AC_MSG_CHECKING([whether to build GUI with support for QR codes])
1073 if test x$have_qrencode = xno; then
1074 if test x$use_qr = xyes; then
1075 AC_MSG_ERROR("QR support requested but cannot be built. use --without-qrencode")
1079 if test x$use_qr != xno; then
1081 AC_DEFINE([USE_QRCODE],[1],[Define if QR support should be compiled in])
1088 if test x$XGETTEXT = x; then
1089 AC_MSG_WARN("xgettext is required to update qt translations")
1092 AC_MSG_CHECKING([whether to build test_bitcoin-qt])
1093 if test x$use_gui_tests$bitcoin_enable_qt_test = xyesyes; then
1094 AC_MSG_RESULT([yes])
1101 AM_CONDITIONAL([ENABLE_ZMQ], [test "x$use_zmq" = "xyes"])
1103 AC_MSG_CHECKING([whether to build test_bitcoin])
1104 if test x$use_tests = xyes; then
1105 AC_MSG_RESULT([yes])
1112 AC_MSG_CHECKING([whether to reduce exports])
1113 if test x$use_reduce_exports = xyes; then
1114 AC_MSG_RESULT([yes])
1119 if test x$build_bitcoin_utils$build_bitcoin_libs$build_bitcoind$bitcoin_enable_qt$use_bench$use_tests = xnononononono; then
1120 AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon --with-gui --enable-bench or --enable-tests])
1123 AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin])
1124 AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin])
1125 AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows])
1126 AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet = xyes])
1127 AM_CONDITIONAL([ENABLE_TESTS],[test x$BUILD_TEST = xyes])
1128 AM_CONDITIONAL([ENABLE_QT],[test x$bitcoin_enable_qt = xyes])
1129 AM_CONDITIONAL([ENABLE_QT_TESTS],[test x$BUILD_TEST_QT = xyes])
1130 AM_CONDITIONAL([ENABLE_BENCH],[test x$use_bench = xyes])
1131 AM_CONDITIONAL([USE_QRCODE], [test x$use_qr = xyes])
1132 AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
1133 AM_CONDITIONAL([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes])
1134 AM_CONDITIONAL([HARDEN],[test x$use_hardening = xyes])
1135 AM_CONDITIONAL([ENABLE_SSE42],[test x$enable_sse42 = xyes])
1137 AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version])
1138 AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor version])
1139 AC_DEFINE(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION, [Build revision])
1140 AC_DEFINE(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD, [Version Build])
1141 AC_DEFINE(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE, [Version is release])
1142 AC_DEFINE(COPYRIGHT_YEAR, _COPYRIGHT_YEAR, [Copyright year])
1143 AC_DEFINE(COPYRIGHT_HOLDERS, "_COPYRIGHT_HOLDERS", [Copyright holder(s) before %s replacement])
1144 AC_DEFINE(COPYRIGHT_HOLDERS_SUBSTITUTION, "_COPYRIGHT_HOLDERS_SUBSTITUTION", [Replacement for %s in copyright holders string])
1145 define(_COPYRIGHT_HOLDERS_FINAL, [patsubst(_COPYRIGHT_HOLDERS, [%s], [_COPYRIGHT_HOLDERS_SUBSTITUTION])])
1146 AC_DEFINE(COPYRIGHT_HOLDERS_FINAL, "_COPYRIGHT_HOLDERS_FINAL", [Copyright holder(s)])
1147 AC_SUBST(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR)
1148 AC_SUBST(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR)
1149 AC_SUBST(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION)
1150 AC_SUBST(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD)
1151 AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
1152 AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
1153 AC_SUBST(COPYRIGHT_HOLDERS, "_COPYRIGHT_HOLDERS")
1154 AC_SUBST(COPYRIGHT_HOLDERS_SUBSTITUTION, "_COPYRIGHT_HOLDERS_SUBSTITUTION")
1155 AC_SUBST(COPYRIGHT_HOLDERS_FINAL, "_COPYRIGHT_HOLDERS_FINAL")
1156 AC_SUBST(BITCOIN_DAEMON_NAME)
1157 AC_SUBST(BITCOIN_GUI_NAME)
1158 AC_SUBST(BITCOIN_CLI_NAME)
1159 AC_SUBST(BITCOIN_TX_NAME)
1162 AC_SUBST(ERROR_CXXFLAGS)
1163 AC_SUBST(HARDENED_CXXFLAGS)
1164 AC_SUBST(HARDENED_CPPFLAGS)
1165 AC_SUBST(HARDENED_LDFLAGS)
1168 AC_SUBST(SSE42_CXXFLAGS)
1169 AC_SUBST(LIBTOOL_APP_LDFLAGS)
1171 AC_SUBST(USE_QRCODE)
1172 AC_SUBST(BOOST_LIBS)
1174 AC_SUBST(LEVELDB_TARGET_FLAGS)
1175 AC_SUBST(MINIUPNPC_CPPFLAGS)
1176 AC_SUBST(MINIUPNPC_LIBS)
1177 AC_SUBST(CRYPTO_LIBS)
1179 AC_SUBST(EVENT_LIBS)
1180 AC_SUBST(EVENT_PTHREADS_LIBS)
1182 AC_SUBST(PROTOBUF_LIBS)
1184 AC_CONFIG_FILES([Makefile src/Makefile doc/man/Makefile share/setup.nsi share/qt/Info.plist test/config.ini])
1185 AC_CONFIG_FILES([contrib/devtools/split-debug.sh],[chmod +x contrib/devtools/split-debug.sh])
1186 AC_CONFIG_FILES([doc/Doxyfile])
1187 AC_CONFIG_LINKS([test/functional/test_runner.py:test/functional/test_runner.py])
1188 AC_CONFIG_LINKS([test/util/bitcoin-util-test.py:test/util/bitcoin-util-test.py])
1190 dnl boost's m4 checks do something really nasty: they export these vars. As a
1191 dnl result, they leak into secp256k1's configure and crazy things happen.
1192 dnl Until this is fixed upstream and we've synced, we'll just un-export them.
1193 CPPFLAGS_TEMP="$CPPFLAGS"
1195 CPPFLAGS="$CPPFLAGS_TEMP"
1197 LDFLAGS_TEMP="$LDFLAGS"
1199 LDFLAGS="$LDFLAGS_TEMP"
1205 PKGCONFIG_PATH_TEMP="$PKG_CONFIG_PATH"
1206 unset PKG_CONFIG_PATH
1207 PKG_CONFIG_PATH="$PKGCONFIG_PATH_TEMP"
1209 PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
1210 unset PKG_CONFIG_LIBDIR
1211 PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
1213 if test x$need_bundled_univalue = xyes; then
1214 AC_CONFIG_SUBDIRS([src/univalue])
1217 ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no --enable-module-recovery"
1218 AC_CONFIG_SUBDIRS([src/secp256k1])
1222 dnl Taken from https://wiki.debian.org/RpathIssue
1225 AC_MSG_RESULT([Fixing libtool for -rpath problems.])
1226 sed < libtool > libtool-2 \
1227 's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/'
1228 mv libtool-2 libtool
1233 dnl Replace the BUILDDIR path with the correct Windows path if compiling on Native Windows
1236 sed 's/BUILDDIR="\/\([[a-z]]\)/BUILDDIR="\1:/' test/config.ini > test/config-2.ini
1237 mv test/config-2.ini test/config.ini
1242 echo "Options used to compile and link:"
1243 echo " with wallet = $enable_wallet"
1244 echo " with gui / qt = $bitcoin_enable_qt"
1245 if test x$bitcoin_enable_qt != xno; then
1246 echo " qt version = $bitcoin_qt_got_major_vers"
1247 echo " with qr = $use_qr"
1249 echo " with zmq = $use_zmq"
1250 echo " with test = $use_tests"
1251 echo " with bench = $use_bench"
1252 echo " with upnp = $use_upnp"
1253 echo " debug enabled = $enable_debug"
1254 echo " werror = $enable_werror"
1256 echo " target os = $TARGET_OS"
1257 echo " build os = $BUILD_OS"
1260 echo " CFLAGS = $CFLAGS"
1261 echo " CPPFLAGS = $CPPFLAGS"
1263 echo " CXXFLAGS = $CXXFLAGS"
1264 echo " LDFLAGS = $LDFLAGS"