Merge #7703: tor: Change auth order to only use password auth if -torpassword
[bitcoinplatinum.git] / configure.ac
bloba1c04daf5360104ecbf863aac34d0eefb6d4c4c8
1 dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
2 AC_PREREQ([2.60])
3 define(_CLIENT_VERSION_MAJOR, 0)
4 define(_CLIENT_VERSION_MINOR, 12)
5 define(_CLIENT_VERSION_REVISION, 99)
6 define(_CLIENT_VERSION_BUILD, 0)
7 define(_CLIENT_VERSION_IS_RELEASE, false)
8 define(_COPYRIGHT_YEAR, 2016)
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/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=bitcoind
18 BITCOIN_GUI_NAME=bitcoin-qt
19 BITCOIN_CLI_NAME=bitcoin-cli
20 BITCOIN_TX_NAME=bitcoin-tx
22 AC_CANONICAL_HOST
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.
29 unset FAKETIME
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
44 else
45   CXXFLAGS_overridden=no
47 AC_PROG_CXX
48 m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCXX])
50 dnl By default, libtool for mingw refuses to link static libs into a dll for
51 dnl fear of mixing pic/non-pic objects, and import/export complications. Since
52 dnl we have those under control, re-enable that functionality.
53 case $host in
54   *mingw*)
55      lt_cv_deplibs_check_method="pass_all"
56   ;;
57 esac
58 dnl Require C++11 compiler (no GNU extensions)
59 AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory])
60 dnl Libtool init checks.
61 LT_INIT([pic-only])
63 dnl Check/return PATH for base programs.
64 AC_PATH_TOOL(AR, ar)
65 AC_PATH_TOOL(RANLIB, ranlib)
66 AC_PATH_TOOL(STRIP, strip)
67 AC_PATH_TOOL(GCOV, gcov)
68 AC_PATH_PROG(LCOV, lcov)
69 AC_PATH_PROG(JAVA, java)
70 AC_PATH_PROGS([PYTHON], [python3 python2.7 python2 python])
71 AC_PATH_PROG(GENHTML, genhtml)
72 AC_PATH_PROG([GIT], [git])
73 AC_PATH_PROG(CCACHE,ccache)
74 AC_PATH_PROG(XGETTEXT,xgettext)
75 AC_PATH_PROG(HEXDUMP,hexdump)
76 AC_PATH_TOOL(READELF, readelf)
77 AC_PATH_TOOL(CPPFILT, c++filt)
79 AC_ARG_VAR(PYTHONPATH, Augments the default search path for python module files)
81 dnl pkg-config check.
82 PKG_PROG_PKG_CONFIG
84 # Enable wallet
85 AC_ARG_ENABLE([wallet],
86   [AS_HELP_STRING([--disable-wallet],
87   [disable wallet (enabled by default)])],
88   [enable_wallet=$enableval],
89   [enable_wallet=yes])
91 AC_ARG_WITH([miniupnpc],
92   [AS_HELP_STRING([--with-miniupnpc],
93   [enable UPNP (default is yes if libminiupnpc is found)])],
94   [use_upnp=$withval],
95   [use_upnp=auto])
97 AC_ARG_ENABLE([upnp-default],
98   [AS_HELP_STRING([--enable-upnp-default],
99   [if UPNP is enabled, turn it on at startup (default is no)])],
100   [use_upnp_default=$enableval],
101   [use_upnp_default=no])
103 AC_ARG_ENABLE(tests,
104     AS_HELP_STRING([--disable-tests],[do not compile tests (default is to compile)]),
105     [use_tests=$enableval],
106     [use_tests=yes])
108 AC_ARG_ENABLE(gui-tests,
109     AS_HELP_STRING([--disable-gui-tests],[do not compile GUI tests (default is to compile if GUI and tests enabled)]),
110     [use_gui_tests=$enableval],
111     [use_gui_tests=$use_tests])
113 AC_ARG_ENABLE(bench,
114     AS_HELP_STRING([--disable-bench],[do not compile benchmarks (default is to compile)]),
115     [use_bench=$enableval],
116     [use_bench=yes])
118 AC_ARG_WITH([comparison-tool],
119     AS_HELP_STRING([--with-comparison-tool],[path to java comparison tool (requires --enable-tests)]),
120     [use_comparison_tool=$withval],
121     [use_comparison_tool=no])
123 AC_ARG_ENABLE([comparison-tool-reorg-tests],
124     AS_HELP_STRING([--enable-comparison-tool-reorg-tests],[enable expensive reorg tests in the comparison tool (default no)]),
125     [use_comparison_tool_reorg_tests=$enableval],
126     [use_comparison_tool_reorg_tests=no])
128 AC_ARG_ENABLE([extended-rpc-tests],
129     AS_HELP_STRING([--enable-extended-rpc-tests],[enable expensive RPC tests when using lcov (default no)]),
130     [use_extended_rpc_tests=$enableval],
131     [use_extended_rpc_tests=no])
133 AC_ARG_WITH([qrencode],
134   [AS_HELP_STRING([--with-qrencode],
135   [enable QR code support (default is yes if qt is enabled and libqrencode is found)])],
136   [use_qr=$withval],
137   [use_qr=auto])
139 AC_ARG_ENABLE([hardening],
140   [AS_HELP_STRING([--disable-hardening],
141   [do not attempt to harden the resulting executables (default is to harden)])],
142   [use_hardening=$enableval],
143   [use_hardening=yes])
145 AC_ARG_ENABLE([reduce-exports],
146   [AS_HELP_STRING([--enable-reduce-exports],
147   [attempt to reduce exported symbols in the resulting executables (default is no)])],
148   [use_reduce_exports=$enableval],
149   [use_reduce_exports=no])
151 AC_ARG_ENABLE([ccache],
152   [AS_HELP_STRING([--disable-ccache],
153   [do not use ccache for building (default is to use if found)])],
154   [use_ccache=$enableval],
155   [use_ccache=auto])
157 AC_ARG_ENABLE([lcov],
158   [AS_HELP_STRING([--enable-lcov],
159   [enable lcov testing (default is no)])],
160   [use_lcov=yes],
161   [use_lcov=no])
163 AC_ARG_ENABLE([glibc-back-compat],
164   [AS_HELP_STRING([--enable-glibc-back-compat],
165   [enable backwards compatibility with glibc])],
166   [use_glibc_compat=$enableval],
167   [use_glibc_compat=no])
169 AC_ARG_WITH([system-univalue],
170   [AS_HELP_STRING([--with-system-univalue],
171   [Build with system UniValue (default is no)])],
172   [system_univalue=$withval],
173   [system_univalue=no]
175 AC_ARG_ENABLE([zmq],
176   [AS_HELP_STRING([--disable-zmq],
177   [disable ZMQ notifications])],
178   [use_zmq=$enableval],
179   [use_zmq=yes])
181 AC_ARG_WITH([protoc-bindir],[AS_HELP_STRING([--with-protoc-bindir=BIN_DIR],[specify protoc bin path])], [protoc_bin_path=$withval], [])
183 # Enable debug
184 AC_ARG_ENABLE([debug],
185     [AS_HELP_STRING([--enable-debug],
186                     [use debug compiler flags and macros (default is no)])],
187     [enable_debug=$enableval],
188     [enable_debug=no])
190 AC_LANG_PUSH([C++])
191 AX_CHECK_COMPILE_FLAG([-Werror],[CXXFLAG_WERROR="-Werror"],[CXXFLAG_WERROR=""])
193 if test "x$enable_debug" = xyes; then
194     CPPFLAGS="$CPPFLAGS -DDEBUG -DDEBUG_LOCKORDER"
195     if test "x$GCC" = xyes; then
196         CFLAGS="$CFLAGS -g3 -O0"
197     fi
199     if test "x$GXX" = xyes; then
200         CXXFLAGS="$CXXFLAGS -g3 -O0"
201     fi
204 if test "x$CXXFLAGS_overridden" = "xno"; then
205   AX_CHECK_COMPILE_FLAG([-Wall],[CXXFLAGS="$CXXFLAGS -Wall"],,[[$CXXFLAG_WERROR]])
206   AX_CHECK_COMPILE_FLAG([-Wextra],[CXXFLAGS="$CXXFLAGS -Wextra"],,[[$CXXFLAG_WERROR]])
207   AX_CHECK_COMPILE_FLAG([-Wformat],[CXXFLAGS="$CXXFLAGS -Wformat"],,[[$CXXFLAG_WERROR]])
208   AX_CHECK_COMPILE_FLAG([-Wformat-security],[CXXFLAGS="$CXXFLAGS -Wformat-security"],,[[$CXXFLAG_WERROR]])
210   ## Some compilers (gcc) ignore unknown -Wno-* options, but warn about all
211   ## unknown options if any other warning is produced. Test the -Wfoo case, and
212   ## set the -Wno-foo case if it works.
213   AX_CHECK_COMPILE_FLAG([-Wunused-parameter],[CXXFLAGS="$CXXFLAGS -Wno-unused-parameter"],,[[$CXXFLAG_WERROR]])
214   AX_CHECK_COMPILE_FLAG([-Wself-assign],[CXXFLAGS="$CXXFLAGS -Wno-self-assign"],,[[$CXXFLAG_WERROR]])
215   AX_CHECK_COMPILE_FLAG([-Wunused-local-typedef],[CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"],,[[$CXXFLAG_WERROR]])
216   AX_CHECK_COMPILE_FLAG([-Wdeprecated-register],[CXXFLAGS="$CXXFLAGS -Wno-deprecated-register"],,[[$CXXFLAG_WERROR]])
218 CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"
220 AC_ARG_WITH([utils],
221   [AS_HELP_STRING([--with-utils],
222   [build bitcoin-cli bitcoin-tx (default=yes)])],
223   [build_bitcoin_utils=$withval],
224   [build_bitcoin_utils=yes])
226 AC_ARG_WITH([libs],
227   [AS_HELP_STRING([--with-libs],
228   [build libraries (default=yes)])],
229   [build_bitcoin_libs=$withval],
230   [build_bitcoin_libs=yes])
232 AC_ARG_WITH([daemon],
233   [AS_HELP_STRING([--with-daemon],
234   [build bitcoind daemon (default=yes)])],
235   [build_bitcoind=$withval],
236   [build_bitcoind=yes])
238 use_pkgconfig=yes
239 case $host in
240   *mingw*)
242      #pkgconfig does more harm than good with MinGW
243      use_pkgconfig=no
245      TARGET_OS=windows
246      AC_CHECK_LIB([mingwthrd],      [main],, AC_MSG_ERROR(lib missing))
247      AC_CHECK_LIB([kernel32],      [main],, AC_MSG_ERROR(lib missing))
248      AC_CHECK_LIB([user32],      [main],, AC_MSG_ERROR(lib missing))
249      AC_CHECK_LIB([gdi32],      [main],, AC_MSG_ERROR(lib missing))
250      AC_CHECK_LIB([comdlg32],      [main],, AC_MSG_ERROR(lib missing))
251      AC_CHECK_LIB([winspool],      [main],, AC_MSG_ERROR(lib missing))
252      AC_CHECK_LIB([winmm],      [main],, AC_MSG_ERROR(lib missing))
253      AC_CHECK_LIB([shell32],      [main],, AC_MSG_ERROR(lib missing))
254      AC_CHECK_LIB([comctl32],      [main],, AC_MSG_ERROR(lib missing))
255      AC_CHECK_LIB([ole32],      [main],, AC_MSG_ERROR(lib missing))
256      AC_CHECK_LIB([oleaut32],      [main],, AC_MSG_ERROR(lib missing))
257      AC_CHECK_LIB([uuid],      [main],, AC_MSG_ERROR(lib missing))
258      AC_CHECK_LIB([rpcrt4],      [main],, AC_MSG_ERROR(lib missing))
259      AC_CHECK_LIB([advapi32],      [main],, AC_MSG_ERROR(lib missing))
260      AC_CHECK_LIB([ws2_32],      [main],, AC_MSG_ERROR(lib missing))
261      AC_CHECK_LIB([mswsock],      [main],, AC_MSG_ERROR(lib missing))
262      AC_CHECK_LIB([shlwapi],      [main],, AC_MSG_ERROR(lib missing))
263      AC_CHECK_LIB([iphlpapi],      [main],, AC_MSG_ERROR(lib missing))
264      AC_CHECK_LIB([crypt32],      [main],, AC_MSG_ERROR(lib missing))
266      # -static is interpreted by libtool, where it has a different meaning.
267      # In libtool-speak, it's -all-static.
268      AX_CHECK_LINK_FLAG([[-static]],[LIBTOOL_APP_LDFLAGS="$LIBTOOL_APP_LDFLAGS -all-static"])
270      AC_PATH_PROG([MAKENSIS], [makensis], none)
271      if test x$MAKENSIS = xnone; then
272        AC_MSG_WARN("makensis not found. Cannot create installer.")
273      fi
275      AC_PATH_TOOL(WINDRES, windres, none)
276      if test x$WINDRES = xnone; then
277        AC_MSG_ERROR("windres not found")
278      fi
280      CPPFLAGS="$CPPFLAGS -D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB"
281      LEVELDB_TARGET_FLAGS="-DOS_WINDOWS"
282      if test "x$CXXFLAGS_overridden" = "xno"; then
283        CXXFLAGS="$CXXFLAGS -w"
284      fi
285      case $host in
286        i?86-*) WINDOWS_BITS=32 ;;
287        x86_64-*) WINDOWS_BITS=64 ;;
288        *) AC_MSG_ERROR("Could not determine win32/win64 for installer") ;;
289      esac
290      AC_SUBST(WINDOWS_BITS)
292      dnl libtool insists upon adding -nostdlib and a list of objects/libs to link against.
293      dnl That breaks our ability to build dll's with static libgcc/libstdc++/libssp. Override
294      dnl its command here, with the predeps/postdeps removed, and -static inserted. Postdeps are
295      dnl also overridden to prevent their insertion later.
296      dnl This should only affect dll's.
297      archive_cmds_CXX="\$CC -shared \$libobjs \$deplibs \$compiler_flags -static -o \$output_objdir/\$soname \${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib"
298      postdeps_CXX=
300      ;;
301   *darwin*)
302      TARGET_OS=darwin
303      LEVELDB_TARGET_FLAGS="-DOS_MACOSX"
304      if  test x$cross_compiling != xyes; then
305        BUILD_OS=darwin
306        AC_CHECK_PROG([PORT],port, port)
307        if test x$PORT = xport; then
308          dnl add default macports paths
309          CPPFLAGS="$CPPFLAGS -isystem /opt/local/include"
310          LIBS="$LIBS -L/opt/local/lib"
311          if test -d /opt/local/include/db48; then
312            CPPFLAGS="$CPPFLAGS -I/opt/local/include/db48"
313            LIBS="$LIBS -L/opt/local/lib/db48"
314          fi
315        fi
317        AC_CHECK_PROG([BREW],brew, brew)
318        if test x$BREW = xbrew; then
319          dnl These Homebrew packages may be keg-only, meaning that they won't be found
320          dnl in expected paths because they may conflict with system files. Ask
321          dnl Homebrew where each one is located, then adjust paths accordingly.
322          dnl It's safe to add these paths even if the functionality is disabled by
323          dnl the user (--without-wallet or --without-gui for example).
325          openssl_prefix=`$BREW --prefix openssl 2>/dev/null`
326          bdb_prefix=`$BREW --prefix berkeley-db4 2>/dev/null`
327          qt5_prefix=`$BREW --prefix qt5 2>/dev/null`
328          if test x$openssl_prefix != x; then
329            PKG_CONFIG_PATH="$openssl_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
330            export PKG_CONFIG_PATH
331          fi
332          if test x$bdb_prefix != x; then
333            CPPFLAGS="$CPPFLAGS -I$bdb_prefix/include"
334            LIBS="$LIBS -L$bdb_prefix/lib"
335          fi
336          if test x$qt5_prefix != x; then
337            PKG_CONFIG_PATH="$qt5_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
338            export PKG_CONFIG_PATH
339          fi
340        fi
341      else
342        case $build_os in
343          *darwin*)
344            BUILD_OS=darwin
345            ;;
346          *)
347            AC_PATH_TOOL([INSTALLNAMETOOL], [install_name_tool], install_name_tool)
348            AC_PATH_TOOL([OTOOL], [otool], otool)
349            AC_PATH_PROGS([GENISOIMAGE], [genisoimage mkisofs],genisoimage)
350            AC_PATH_PROGS([RSVG_CONVERT], [rsvg-convert rsvg],rsvg-convert)
351            AC_PATH_PROGS([IMAGEMAGICK_CONVERT], [convert],convert)
352            AC_PATH_PROGS([TIFFCP], [tiffcp],tiffcp)
354            dnl libtool will try to strip the static lib, which is a problem for
355            dnl cross-builds because strip attempts to call a hard-coded ld,
356            dnl which may not exist in the path. Stripping the .a is not
357            dnl necessary, so just disable it.
358            old_striplib=
359            ;;
360        esac
361      fi
363      AX_CHECK_LINK_FLAG([[-Wl,-headerpad_max_install_names]], [LDFLAGS="$LDFLAGS -Wl,-headerpad_max_install_names"])
364      CPPFLAGS="$CPPFLAGS -DMAC_OSX"
365      OBJCXXFLAGS="$CXXFLAGS"
366      ;;
367    *linux*)
368      TARGET_OS=linux
369      LEVELDB_TARGET_FLAGS="-DOS_LINUX"
370      ;;
371    *)
372      OTHER_OS=`echo ${host_os} | awk '{print toupper($0)}'`
373      LEVELDB_TARGET_FLAGS="-DOS_${OTHER_OS}"
374      ;;
375 esac
377 if test x$use_comparison_tool != xno; then
378   AC_SUBST(JAVA_COMPARISON_TOOL, $use_comparison_tool)
381 if test x$use_comparison_tool_reorg_tests != xno; then
382   if test x$use_comparison_tool = x; then
383     AC_MSG_ERROR("comparison tool reorg tests but comparison tool was not specified")
384   fi
385   AC_SUBST(COMPARISON_TOOL_REORG_TESTS, 1)
386 else
387   AC_SUBST(COMPARISON_TOOL_REORG_TESTS, 0)
390 if test x$use_extended_rpc_tests != xno; then
391   AC_SUBST(EXTENDED_RPC_TESTS, -extended)
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")
397   fi
398   if test x$GCOV = x; then
399     AC_MSG_ERROR("lcov testing requested but gcov not found")
400   fi
401   if test x$JAVA = x; then
402     AC_MSG_ERROR("lcov testing requested but java not found")
403   fi
404   if test x$PYTHON = x; then
405     AC_MSG_ERROR("lcov testing requested but python not found")
406   fi
407   if test x$GENHTML = x; then
408     AC_MSG_ERROR("lcov testing requested but genhtml not found")
409   fi
410   if test x$use_comparison_tool = x; then
411     AC_MSG_ERROR("lcov testing requested but comparison tool was not specified")
412   fi
413   LCOV="$LCOV --gcov-tool=$GCOV"
414   AX_CHECK_COMPILE_FLAG([--coverage],[CXXFLAGS="$CXXFLAGS --coverage"],
415     [AC_MSG_ERROR("lcov testing requested but --coverage flag does not work")])
418 dnl Check for endianness
419 AC_C_BIGENDIAN
421 dnl Check for pthread compile/link requirements
422 AX_PTHREAD
424 # The following macro will add the necessary defines to bitcoin-config.h, but
425 # they also need to be passed down to any subprojects. Pull the results out of
426 # the cache and add them to CPPFLAGS.
427 AC_SYS_LARGEFILE
428 # detect POSIX or GNU variant of strerror_r
429 AC_FUNC_STRERROR_R
431 if test x$ac_cv_sys_file_offset_bits != x &&
432    test x$ac_cv_sys_file_offset_bits != xno &&
433    test x$ac_cv_sys_file_offset_bits != xunknown; then
434   CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
437 if test x$ac_cv_sys_large_files != x &&
438    test x$ac_cv_sys_large_files != xno &&
439    test x$ac_cv_sys_large_files != xunknown; then
440   CPPFLAGS="$CPPFLAGS -D_LARGE_FILES=$ac_cv_sys_large_files"
443 AX_CHECK_LINK_FLAG([[-Wl,--large-address-aware]], [LDFLAGS="$LDFLAGS -Wl,--large-address-aware"])
445 AX_GCC_FUNC_ATTRIBUTE([visibility])
446 AX_GCC_FUNC_ATTRIBUTE([dllexport])
447 AX_GCC_FUNC_ATTRIBUTE([dllimport])
449 if test x$use_glibc_compat != xno; then
451   #glibc absorbed clock_gettime in 2.17. librt (its previous location) is safe to link
452   #in anyway for back-compat.
453   AC_CHECK_LIB([rt],[clock_gettime],, AC_MSG_ERROR(lib missing))
455   #__fdelt_chk's params and return type have changed from long unsigned int to long int.
456   # See which one is present here.
457   AC_MSG_CHECKING(__fdelt_chk type)
458   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef _FORTIFY_SOURCE
459                     #undef _FORTIFY_SOURCE
460                   #endif
461                   #define _FORTIFY_SOURCE 2
462                   #include <sys/select.h>
463      extern "C" long unsigned int __fdelt_warn(long unsigned int);]],[[]])],
464     [ fdelt_type="long unsigned int"],
465     [ fdelt_type="long int"])
466   AC_MSG_RESULT($fdelt_type)
467   AC_DEFINE_UNQUOTED(FDELT_TYPE, $fdelt_type,[parameter and return value type for __fdelt_chk])
468 else
469   AC_SEARCH_LIBS([clock_gettime],[rt])
472 if test x$TARGET_OS != xwindows; then
473   # All windows code is PIC, forcing it on just adds useless compile warnings
474   AX_CHECK_COMPILE_FLAG([-fPIC],[PIC_FLAGS="-fPIC"])
477 if test x$use_hardening != xno; then
478   AX_CHECK_COMPILE_FLAG([-Wstack-protector],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wstack-protector"])
479   AX_CHECK_COMPILE_FLAG([-fstack-protector-all],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fstack-protector-all"])
481   AX_CHECK_PREPROC_FLAG([-D_FORTIFY_SOURCE=2],[
482     AX_CHECK_PREPROC_FLAG([-U_FORTIFY_SOURCE],[
483       HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -U_FORTIFY_SOURCE"
484     ])
485     HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -D_FORTIFY_SOURCE=2"
486   ])
488   AX_CHECK_LINK_FLAG([[-Wl,--dynamicbase]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--dynamicbase"])
489   AX_CHECK_LINK_FLAG([[-Wl,--nxcompat]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--nxcompat"])
490   AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"])
491   AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"])
493   if test x$TARGET_OS != xwindows; then
494     AX_CHECK_COMPILE_FLAG([-fPIE],[PIE_FLAGS="-fPIE"])
495     AX_CHECK_LINK_FLAG([[-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"])
496   fi
498   case $host in
499     *mingw*)
500        AC_CHECK_LIB([ssp],      [main],, AC_MSG_ERROR(lib missing))
501     ;;
502   esac
505 dnl this flag screws up non-darwin gcc even when the check fails. special-case it.
506 if test x$TARGET_OS = xdarwin; then
507   AX_CHECK_LINK_FLAG([[-Wl,-dead_strip]], [LDFLAGS="$LDFLAGS -Wl,-dead_strip"])
510 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])
511 AC_SEARCH_LIBS([getaddrinfo_a], [anl], [AC_DEFINE(HAVE_GETADDRINFO_A, 1, [Define this symbol if you have getaddrinfo_a])])
512 AC_SEARCH_LIBS([inet_pton], [nsl resolv], [AC_DEFINE(HAVE_INET_PTON, 1, [Define this symbol if you have inet_pton])])
514 AC_CHECK_DECLS([strnlen])
516 AC_CHECK_DECLS([le16toh, le32toh, le64toh, htole16, htole32, htole64, be16toh, be32toh, be64toh, htobe16, htobe32, htobe64],,,
517                 [#if HAVE_ENDIAN_H
518                  #include <endian.h>
519                  #elif HAVE_SYS_ENDIAN_H
520                  #include <sys/endian.h>
521                  #endif])
523 AC_CHECK_DECLS([bswap_16, bswap_32, bswap_64],,,
524                 [#if HAVE_BYTESWAP_H
525                  #include <byteswap.h>
526                  #endif])
528 dnl Check for MSG_NOSIGNAL
529 AC_MSG_CHECKING(for MSG_NOSIGNAL)
530 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
531  [[ int f = MSG_NOSIGNAL; ]])],
532  [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MSG_NOSIGNAL, 1,[Define this symbol if you have MSG_NOSIGNAL]) ],
533  [ AC_MSG_RESULT(no)]
536 AC_MSG_CHECKING([for visibility attribute])
537 AC_LINK_IFELSE([AC_LANG_SOURCE([
538   int foo_def( void ) __attribute__((visibility("default")));
539   int main(){}
540   ])],
541   [
542     AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE,1,[Define if the visibility attribute is supported.])
543     AC_MSG_RESULT(yes)
544   ],
545   [
546     AC_MSG_RESULT(no)
547     if test x$use_reduce_exports = xyes; then
548       AC_MSG_ERROR([Cannot find a working visibility attribute. Use --disable-reduce-exports.])
549     fi
550   ]
553 if test x$use_reduce_exports = xyes; then
554   AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],[RE_CXXFLAGS="-fvisibility=hidden"],
555   [AC_MSG_ERROR([Cannot set default symbol visibility. Use --disable-reduce-exports.])])
558 LEVELDB_CPPFLAGS=
559 LIBLEVELDB=
560 LIBMEMENV=
561 AM_CONDITIONAL([EMBEDDED_LEVELDB],[true])
562 AC_SUBST(LEVELDB_CPPFLAGS)
563 AC_SUBST(LIBLEVELDB)
564 AC_SUBST(LIBMEMENV)
566 if test x$enable_wallet != xno; then
567     dnl Check for libdb_cxx only if wallet enabled
568     BITCOIN_FIND_BDB48
571 dnl Check for libminiupnpc (optional)
572 if test x$use_upnp != xno; then
573   AC_CHECK_HEADERS(
574     [miniupnpc/miniwget.h miniupnpc/miniupnpc.h miniupnpc/upnpcommands.h miniupnpc/upnperrors.h],
575     [AC_CHECK_LIB([miniupnpc], [main],[MINIUPNPC_LIBS=-lminiupnpc], [have_miniupnpc=no])],
576     [have_miniupnpc=no]
577   )
580 BITCOIN_QT_INIT
582 dnl sets $bitcoin_enable_qt, $bitcoin_enable_qt_test, $bitcoin_enable_qt_dbus
583 BITCOIN_QT_CONFIGURE([$use_pkgconfig], [qt5])
585 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests = xnononono; then
586     use_boost=no
587 else
588     use_boost=yes
591 if test x$use_boost = xyes; then
593 dnl Check for boost libs
594 AX_BOOST_BASE
595 AX_BOOST_SYSTEM
596 AX_BOOST_FILESYSTEM
597 AX_BOOST_PROGRAM_OPTIONS
598 AX_BOOST_THREAD
599 AX_BOOST_CHRONO
602 if test x$use_reduce_exports = xyes; then
603   AC_MSG_CHECKING([for working boost reduced exports])
604   TEMP_CPPFLAGS="$CPPFLAGS"
605   CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
606   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
607       @%:@include <boost/version.hpp>
608     ]], [[
609       #if BOOST_VERSION >= 104900
610       // Everything is okay
611       #else
612       #  error Boost version is too old
613       #endif
614     ]])],[
615       AC_MSG_RESULT(yes)
616     ],[
617     AC_MSG_ERROR([boost versions < 1.49 are known to be broken with reduced exports. Use --disable-reduce-exports.])
618   ])
619   CPPFLAGS="$TEMP_CPPFLAGS"
623 if test x$use_reduce_exports = xyes; then
624     CXXFLAGS="$CXXFLAGS $RE_CXXFLAGS"
625     AX_CHECK_LINK_FLAG([[-Wl,--exclude-libs,ALL]], [RELDFLAGS="-Wl,--exclude-libs,ALL"])
628 if test x$use_tests = xyes; then
630   if test x$HEXDUMP = x; then
631     AC_MSG_ERROR(hexdump is required for tests)
632   fi
635   if test x$use_boost = xyes; then
637   AX_BOOST_UNIT_TEST_FRAMEWORK
639   dnl Determine if -DBOOST_TEST_DYN_LINK is needed
640   AC_MSG_CHECKING([for dynamic linked boost test])
641   TEMP_LIBS="$LIBS"
642   LIBS="$LIBS $BOOST_LDFLAGS $BOOST_UNIT_TEST_FRAMEWORK_LIB"
643   TEMP_CPPFLAGS="$CPPFLAGS"
644   CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
645   AC_LINK_IFELSE([AC_LANG_SOURCE([
646        #define BOOST_TEST_DYN_LINK
647        #define BOOST_TEST_MAIN
648         #include <boost/test/unit_test.hpp>
650        ])],
651     [AC_MSG_RESULT(yes)]
652     [TESTDEFS="$TESTDEFS -DBOOST_TEST_DYN_LINK"],
653     [AC_MSG_RESULT(no)])
654   LIBS="$TEMP_LIBS"
655   CPPFLAGS="$TEMP_CPPFLAGS"
657   fi
660 if test x$use_boost = xyes; then
662 BOOST_LIBS="$BOOST_LDFLAGS $BOOST_SYSTEM_LIB $BOOST_FILESYSTEM_LIB $BOOST_PROGRAM_OPTIONS_LIB $BOOST_THREAD_LIB $BOOST_CHRONO_LIB"
665 dnl If boost (prior to 1.57) was built without c++11, it emulated scoped enums
666 dnl using c++98 constructs. Unfortunately, this implementation detail leaked into
667 dnl the abi. This was fixed in 1.57.
669 dnl When building against that installed version using c++11, the headers pick up
670 dnl on the native c++11 scoped enum support and enable it, however it will fail to
671 dnl link. This can be worked around by disabling c++11 scoped enums if linking will
672 dnl fail.
673 dnl BOOST_NO_SCOPED_ENUMS was changed to BOOST_NO_CXX11_SCOPED_ENUMS in 1.51.
675 TEMP_LIBS="$LIBS"
676 LIBS="$BOOST_LIBS $LIBS"
677 TEMP_CPPFLAGS="$CPPFLAGS"
678 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
679 AC_MSG_CHECKING([for mismatched boost c++11 scoped enums])
680 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
681   #include "boost/config.hpp"
682   #include "boost/version.hpp"
683   #if !defined(BOOST_NO_SCOPED_ENUMS) && !defined(BOOST_NO_CXX11_SCOPED_ENUMS) && BOOST_VERSION < 105700
684   #define BOOST_NO_SCOPED_ENUMS
685   #define BOOST_NO_CXX11_SCOPED_ENUMS
686   #define CHECK
687   #endif
688   #include "boost/filesystem.hpp"
689   ]],[[
690   #if defined(CHECK)
691     boost::filesystem::copy_file("foo", "bar");
692   #else
693     choke;
694   #endif
695   ]])],
696   [AC_MSG_RESULT(mismatched); BOOST_CPPFLAGS="$BOOST_CPPFLAGS -DBOOST_NO_SCOPED_ENUMS -DBOOST_NO_CXX11_SCOPED_ENUMS"], [AC_MSG_RESULT(ok)])
697 LIBS="$TEMP_LIBS"
698 CPPFLAGS="$TEMP_CPPFLAGS"
700 dnl Boost >= 1.50 uses sleep_for rather than the now-deprecated sleep, however
701 dnl it was broken from 1.50 to 1.52 when backed by nanosleep. Use sleep_for if
702 dnl a working version is available, else fall back to sleep. sleep was removed
703 dnl after 1.56.
704 dnl If neither is available, abort.
705 TEMP_LIBS="$LIBS"
706 LIBS="$BOOST_LIBS $LIBS"
707 TEMP_CPPFLAGS="$CPPFLAGS"
708 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
709 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
710   #include <boost/thread/thread.hpp>
711   #include <boost/version.hpp>
712   ]],[[
713   #if BOOST_VERSION >= 105000 && (!defined(BOOST_HAS_NANOSLEEP) || BOOST_VERSION >= 105200)
714       boost::this_thread::sleep_for(boost::chrono::milliseconds(0));
715   #else
716    choke me
717   #endif
718   ]])],
719   [boost_sleep=yes;
720      AC_DEFINE(HAVE_WORKING_BOOST_SLEEP_FOR, 1, [Define this symbol if boost sleep_for works])],
721   [boost_sleep=no])
722 LIBS="$TEMP_LIBS"
723 CPPFLAGS="$TEMP_CPPFLAGS"
725 if test x$boost_sleep != xyes; then
726 TEMP_LIBS="$LIBS"
727 LIBS="$BOOST_LIBS $LIBS"
728 TEMP_CPPFLAGS="$CPPFLAGS"
729 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
730 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
731   #include <boost/version.hpp>
732   #include <boost/thread.hpp>
733   #include <boost/date_time/posix_time/posix_time_types.hpp>
734   ]],[[
735   #if BOOST_VERSION <= 105600
736       boost::this_thread::sleep(boost::posix_time::milliseconds(0));
737   #else
738    choke me
739   #endif
740   ]])],
741   [boost_sleep=yes; AC_DEFINE(HAVE_WORKING_BOOST_SLEEP, 1, [Define this symbol if boost sleep works])],
742   [boost_sleep=no])
743 LIBS="$TEMP_LIBS"
744 CPPFLAGS="$TEMP_CPPFLAGS"
747 if test x$boost_sleep != xyes; then
748   AC_MSG_ERROR(No working boost sleep implementation found.)
753 if test x$use_pkgconfig = xyes; then
755   if test x"$PKG_CONFIG" = "x"; then
756     AC_MSG_ERROR(pkg-config not found.)
757   fi
759   : #NOP
760   m4_ifdef(
761     [PKG_CHECK_MODULES],
762     [
763       PKG_CHECK_MODULES([SSL], [libssl],, [AC_MSG_ERROR(openssl  not found.)])
764       PKG_CHECK_MODULES([CRYPTO], [libcrypto],,[AC_MSG_ERROR(libcrypto  not found.)])
765       BITCOIN_QT_CHECK([PKG_CHECK_MODULES([PROTOBUF], [protobuf], [have_protobuf=yes], [BITCOIN_QT_FAIL(libprotobuf not found)])])
766       if test x$use_qr != xno; then
767         BITCOIN_QT_CHECK([PKG_CHECK_MODULES([QR], [libqrencode], [have_qrencode=yes], [have_qrencode=no])])
768       fi
769       if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
770         PKG_CHECK_MODULES([EVENT], [libevent],, [AC_MSG_ERROR(libevent not found.)])
771         if test x$TARGET_OS != xwindows; then
772           PKG_CHECK_MODULES([EVENT_PTHREADS], [libevent_pthreads],, [AC_MSG_ERROR(libevent_pthreads not found.)])
773         fi
774       fi
776       if test "x$use_zmq" = "xyes"; then
777         PKG_CHECK_MODULES([ZMQ],[libzmq >= 4],
778           [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
779           [AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
780            AC_MSG_WARN([libzmq version 4.x or greater not found, disabling])
781            use_zmq=no])
782       else
783           AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
784       fi
785     ]
786   )
787 else
788   AC_CHECK_HEADER([openssl/crypto.h],,AC_MSG_ERROR(libcrypto headers missing))
789   AC_CHECK_LIB([crypto],      [main],CRYPTO_LIBS=-lcrypto, AC_MSG_ERROR(libcrypto missing))
791   AC_CHECK_HEADER([openssl/ssl.h],, AC_MSG_ERROR(libssl headers missing),)
792   AC_CHECK_LIB([ssl],         [main],SSL_LIBS=-lssl, AC_MSG_ERROR(libssl missing))
794   if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
795     AC_CHECK_HEADER([event2/event.h],, AC_MSG_ERROR(libevent headers missing),)
796     AC_CHECK_LIB([event],[main],EVENT_LIBS=-levent,AC_MSG_ERROR(libevent missing))
797     if test x$TARGET_OS != xwindows; then
798       AC_CHECK_LIB([event_pthreads],[main],EVENT_PTHREADS_LIBS=-levent_pthreads,AC_MSG_ERROR(libevent_pthreads missing))
799     fi
800   fi
802   if test "x$use_zmq" = "xyes"; then
803      AC_CHECK_HEADER([zmq.h],
804        [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
805        [AC_MSG_WARN([zmq.h not found, disabling zmq support])
806         use_zmq=no
807         AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
808      AC_CHECK_LIB([zmq],[zmq_ctx_shutdown],ZMQ_LIBS=-lzmq,
809        [AC_MSG_WARN([libzmq >= 4.0 not found, disabling zmq support])
810         use_zmq=no
811         AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
812   else
813     AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
814   fi
816   BITCOIN_QT_CHECK(AC_CHECK_LIB([protobuf] ,[main],[PROTOBUF_LIBS=-lprotobuf], BITCOIN_QT_FAIL(libprotobuf not found)))
817   if test x$use_qr != xno; then
818     BITCOIN_QT_CHECK([AC_CHECK_LIB([qrencode], [main],[QR_LIBS=-lqrencode], [have_qrencode=no])])
819     BITCOIN_QT_CHECK([AC_CHECK_HEADER([qrencode.h],, have_qrencode=no)])
820   fi
823 dnl univalue check
825 if test x$system_univalue != xno ; then
826   found_univalue=no
827   if test x$use_pkgconfig = xyes; then
828     : #NOP
829     m4_ifdef(
830       [PKG_CHECK_MODULES],
831       [
832         PKG_CHECK_MODULES([UNIVALUE],[libunivalue],[found_univalue=yes],[true])
833       ]
834     )
835   else
836     AC_CHECK_HEADER([univalue.h],[
837       AC_CHECK_LIB([univalue],  [main],[
838         UNIVALUE_LIBS=-lunivalue
839         found_univalue=yes
840       ],[true])
841     ],[true])
842   fi
844   if test x$found_univalue = xyes ; then
845     system_univalue=yes
846   elif test x$system_univalue = xyes ; then
847     AC_MSG_ERROR([univalue not found])
848   else
849     system_univalue=no
850   fi
853 if test x$system_univalue = xno ; then
854   UNIVALUE_CFLAGS='-I$(srcdir)/univalue/include'
855   UNIVALUE_LIBS='univalue/libunivalue.la'
857 AM_CONDITIONAL([EMBEDDED_UNIVALUE],[test x$system_univalue = xno])
858 AC_SUBST(UNIVALUE_CFLAGS)
859 AC_SUBST(UNIVALUE_LIBS)
861 CXXFLAGS_TEMP="$CXXFLAGS"
862 LIBS_TEMP="$LIBS"
863 CXXFLAGS="$CXXFLAGS $SSL_CFLAGS $CRYPTO_CFLAGS"
864 LIBS="$LIBS $SSL_LIBS $CRYPTO_LIBS"
865 AC_CHECK_HEADER([openssl/ec.h],, AC_MSG_ERROR(OpenSSL ec header missing),)
866 CXXFLAGS="$CXXFLAGS_TEMP"
867 LIBS="$LIBS_TEMP"
869 BITCOIN_QT_PATH_PROGS([PROTOC], [protoc],$protoc_bin_path)
871 AC_MSG_CHECKING([whether to build bitcoind])
872 AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
873 AC_MSG_RESULT($build_bitcoind)
875 AC_MSG_CHECKING([whether to build utils (bitcoin-cli bitcoin-tx)])
876 AM_CONDITIONAL([BUILD_BITCOIN_UTILS], [test x$build_bitcoin_utils = xyes])
877 AC_MSG_RESULT($build_bitcoin_utils)
879 AC_MSG_CHECKING([whether to build libraries])
880 AM_CONDITIONAL([BUILD_BITCOIN_LIBS], [test x$build_bitcoin_libs = xyes])
881 if test x$build_bitcoin_libs = xyes; then
882   AC_DEFINE(HAVE_CONSENSUS_LIB, 1, [Define this symbol if the consensus lib has been built])
883   AC_CONFIG_FILES([libbitcoinconsensus.pc:libbitcoinconsensus.pc.in])
885 AC_MSG_RESULT($build_bitcoin_libs)
887 AC_LANG_POP
889 if test "x$use_ccache" != "xno"; then
890   AC_MSG_CHECKING(if ccache should be used)
891   if test x$CCACHE = x; then
892     if test "x$use_ccache" = "xyes"; then
893       AC_MSG_ERROR([ccache not found.]);
894     else
895       use_ccache=no
896     fi
897   else
898     use_ccache=yes
899     CC="$ac_cv_path_CCACHE $CC"
900     CXX="$ac_cv_path_CCACHE $CXX"
901   fi
902   AC_MSG_RESULT($use_ccache)
904 if test "x$use_ccache" = "xyes"; then
905     AX_CHECK_PREPROC_FLAG([-Qunused-arguments],[CPPFLAGS="-Qunused-arguments $CPPFLAGS"])
908 dnl enable wallet
909 AC_MSG_CHECKING([if wallet should be enabled])
910 if test x$enable_wallet != xno; then
911   AC_MSG_RESULT(yes)
912   AC_DEFINE_UNQUOTED([ENABLE_WALLET],[1],[Define to 1 to enable wallet functions])
914 else
915   AC_MSG_RESULT(no)
918 dnl enable upnp support
919 AC_MSG_CHECKING([whether to build with support for UPnP])
920 if test x$have_miniupnpc = xno; then
921   if test x$use_upnp = xyes; then
922      AC_MSG_ERROR("UPnP requested but cannot be built. use --without-miniupnpc")
923   fi
924   AC_MSG_RESULT(no)
925 else
926   if test x$use_upnp != xno; then
927     AC_MSG_RESULT(yes)
928     AC_MSG_CHECKING([whether to build with UPnP enabled by default])
929     use_upnp=yes
930     upnp_setting=0
931     if test x$use_upnp_default != xno; then
932       use_upnp_default=yes
933       upnp_setting=1
934     fi
935     AC_MSG_RESULT($use_upnp_default)
936     AC_DEFINE_UNQUOTED([USE_UPNP],[$upnp_setting],[UPnP support not compiled if undefined, otherwise value (0 or 1) determines default state])
937     if test x$TARGET_OS = xwindows; then
938       MINIUPNPC_CPPFLAGS="-DSTATICLIB -DMINIUPNP_STATICLIB"
939     fi
940   else
941     AC_MSG_RESULT(no)
942   fi
945 dnl these are only used when qt is enabled
946 BUILD_TEST_QT=""
947 if test x$bitcoin_enable_qt != xno; then
948   dnl enable dbus support
949   AC_MSG_CHECKING([whether to build GUI with support for D-Bus])
950   if test x$bitcoin_enable_qt_dbus != xno; then
951     AC_DEFINE([USE_DBUS],[1],[Define if dbus support should be compiled in])
952   fi
953   AC_MSG_RESULT($bitcoin_enable_qt_dbus)
955   dnl enable qr support
956   AC_MSG_CHECKING([whether to build GUI with support for QR codes])
957   if test x$have_qrencode = xno; then
958     if test x$use_qr = xyes; then
959      AC_MSG_ERROR("QR support requested but cannot be built. use --without-qrencode")
960     fi
961     AC_MSG_RESULT(no)
962   else
963     if test x$use_qr != xno; then
964       AC_MSG_RESULT(yes)
965       AC_DEFINE([USE_QRCODE],[1],[Define if QR support should be compiled in])
966       use_qr=yes
967     else
968       AC_MSG_RESULT(no)
969     fi
970   fi
972   if test x$XGETTEXT = x; then
973     AC_MSG_WARN("xgettext is required to update qt translations")
974   fi
976   AC_MSG_CHECKING([whether to build test_bitcoin-qt])
977   if test x$use_gui_tests$bitcoin_enable_qt_test = xyesyes; then
978     AC_MSG_RESULT([yes])
979     BUILD_TEST_QT="yes"
980   else
981     AC_MSG_RESULT([no])
982   fi
985 AM_CONDITIONAL([ENABLE_ZMQ], [test "x$use_zmq" = "xyes"])
987 AC_MSG_CHECKING([whether to build test_bitcoin])
988 if test x$use_tests = xyes; then
989   AC_MSG_RESULT([yes])
990   BUILD_TEST="yes"
991 else
992   AC_MSG_RESULT([no])
993   BUILD_TEST=""
996 AC_MSG_CHECKING([whether to reduce exports])
997 if test x$use_reduce_exports = xyes; then
998   AC_MSG_RESULT([yes])
999 else
1000   AC_MSG_RESULT([no])
1003 if test x$build_bitcoin_utils$build_bitcoin_libs$build_bitcoind$bitcoin_enable_qt$use_tests = xnonononono; then
1004   AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon --with-gui or --enable-tests])
1007 AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin])
1008 AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin])
1009 AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows])
1010 AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet = xyes])
1011 AM_CONDITIONAL([ENABLE_TESTS],[test x$BUILD_TEST = xyes])
1012 AM_CONDITIONAL([ENABLE_QT],[test x$bitcoin_enable_qt = xyes])
1013 AM_CONDITIONAL([ENABLE_QT_TESTS],[test x$BUILD_TEST_QT = xyes])
1014 AM_CONDITIONAL([ENABLE_BENCH],[test x$use_bench = xyes])
1015 AM_CONDITIONAL([USE_QRCODE], [test x$use_qr = xyes])
1016 AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
1017 AM_CONDITIONAL([USE_COMPARISON_TOOL],[test x$use_comparison_tool != xno])
1018 AM_CONDITIONAL([USE_COMPARISON_TOOL_REORG_TESTS],[test x$use_comparison_tool_reorg_test != xno])
1019 AM_CONDITIONAL([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes])
1020 AM_CONDITIONAL([HARDEN],[test x$use_hardening = xyes])
1022 AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version])
1023 AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor version])
1024 AC_DEFINE(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION, [Build revision])
1025 AC_DEFINE(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD, [Version Build])
1026 AC_DEFINE(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE, [Version is release])
1027 AC_DEFINE(COPYRIGHT_YEAR, _COPYRIGHT_YEAR, [Copyright year])
1028 AC_DEFINE(COPYRIGHT_HOLDERS, "_COPYRIGHT_HOLDERS", [Copyright holder(s) before %s replacement])
1029 AC_DEFINE(COPYRIGHT_HOLDERS_SUBSTITUTION, "_COPYRIGHT_HOLDERS_SUBSTITUTION", [Replacement for %s in copyright holders string])
1030 define(_COPYRIGHT_HOLDERS_FINAL, [patsubst(_COPYRIGHT_HOLDERS, [%s], [_COPYRIGHT_HOLDERS_SUBSTITUTION])])
1031 AC_DEFINE(COPYRIGHT_HOLDERS_FINAL, "_COPYRIGHT_HOLDERS_FINAL", [Copyright holder(s)])
1032 AC_SUBST(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR)
1033 AC_SUBST(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR)
1034 AC_SUBST(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION)
1035 AC_SUBST(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD)
1036 AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
1037 AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
1038 AC_SUBST(COPYRIGHT_HOLDERS, "_COPYRIGHT_HOLDERS")
1039 AC_SUBST(COPYRIGHT_HOLDERS_SUBSTITUTION, "_COPYRIGHT_HOLDERS_SUBSTITUTION")
1040 AC_SUBST(COPYRIGHT_HOLDERS_FINAL, "_COPYRIGHT_HOLDERS_FINAL")
1041 AC_SUBST(BITCOIN_DAEMON_NAME)
1042 AC_SUBST(BITCOIN_GUI_NAME)
1043 AC_SUBST(BITCOIN_CLI_NAME)
1044 AC_SUBST(BITCOIN_TX_NAME)
1046 AC_SUBST(RELDFLAGS)
1047 AC_SUBST(HARDENED_CXXFLAGS)
1048 AC_SUBST(HARDENED_CPPFLAGS)
1049 AC_SUBST(HARDENED_LDFLAGS)
1050 AC_SUBST(PIC_FLAGS)
1051 AC_SUBST(PIE_FLAGS)
1052 AC_SUBST(LIBTOOL_APP_LDFLAGS)
1053 AC_SUBST(USE_UPNP)
1054 AC_SUBST(USE_QRCODE)
1055 AC_SUBST(BOOST_LIBS)
1056 AC_SUBST(TESTDEFS)
1057 AC_SUBST(LEVELDB_TARGET_FLAGS)
1058 AC_SUBST(MINIUPNPC_CPPFLAGS)
1059 AC_SUBST(MINIUPNPC_LIBS)
1060 AC_CONFIG_FILES([Makefile src/Makefile share/setup.nsi share/qt/Info.plist src/test/buildenv.py])
1061 AC_CONFIG_FILES([qa/pull-tester/run-bitcoind-for-test.sh],[chmod +x qa/pull-tester/run-bitcoind-for-test.sh])
1062 AC_CONFIG_FILES([qa/pull-tester/tests_config.py],[chmod +x qa/pull-tester/tests_config.py])
1064 dnl boost's m4 checks do something really nasty: they export these vars. As a
1065 dnl result, they leak into secp256k1's configure and crazy things happen.
1066 dnl Until this is fixed upstream and we've synced, we'll just un-export them.
1067 CPPFLAGS_TEMP="$CPPFLAGS"
1068 unset CPPFLAGS
1069 CPPFLAGS="$CPPFLAGS_TEMP"
1071 LDFLAGS_TEMP="$LDFLAGS"
1072 unset LDFLAGS
1073 LDFLAGS="$LDFLAGS_TEMP"
1075 LIBS_TEMP="$LIBS"
1076 unset LIBS
1077 LIBS="$LIBS_TEMP"
1079 PKGCONFIG_PATH_TEMP="$PKG_CONFIG_PATH"
1080 unset PKG_CONFIG_PATH
1081 PKG_CONFIG_PATH="$PKGCONFIG_PATH_TEMP"
1083 PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
1084 unset PKG_CONFIG_LIBDIR
1085 PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
1087 if test x$system_univalue = xno; then
1088   AC_CONFIG_SUBDIRS([src/univalue])
1091 ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no --enable-module-recovery"
1092 AC_CONFIG_SUBDIRS([src/secp256k1])
1094 AC_OUTPUT
1096 dnl Taken from https://wiki.debian.org/RpathIssue
1097 case $host in
1098    *-*-linux-gnu)
1099      AC_MSG_RESULT([Fixing libtool for -rpath problems.])
1100      sed < libtool > libtool-2 \
1101      's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/'
1102      mv libtool-2 libtool
1103      chmod 755 libtool
1104    ;;
1105 esac
1107 dnl Replace the BUILDDIR path with the correct Windows path if compiling on Native Windows
1108 case ${OS} in
1109    *Windows*)
1110      sed  's/BUILDDIR="\/\([[a-z]]\)/BUILDDIR="\1:/'  qa/pull-tester/tests_config.py > qa/pull-tester/tests_config-2.py
1111      mv qa/pull-tester/tests_config-2.py qa/pull-tester/tests_config.py
1112    ;;
1113 esac