Add change options to fundrawtransaction
[bitcoinplatinum.git] / configure.ac
blobec5656814f07452a4e656d36595ab654b0ceb92a
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 AC_CANONICAL_HOST
19 AH_TOP([#ifndef BITCOIN_CONFIG_H])
20 AH_TOP([#define BITCOIN_CONFIG_H])
21 AH_BOTTOM([#endif //BITCOIN_CONFIG_H])
23 dnl faketime breaks configure and is only needed for make. Disable it here.
24 unset FAKETIME
26 dnl Automake init set-up and checks
27 AM_INIT_AUTOMAKE([no-define subdir-objects foreign])
29 dnl faketime messes with timestamps and causes configure to be re-run.
30 dnl --disable-maintainer-mode can be used to bypass this.
31 AM_MAINTAINER_MODE([enable])
33 dnl make the compilation flags quiet unless V=1 is used
34 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
36 dnl Compiler checks (here before libtool).
37 if test "x${CXXFLAGS+set}" = "xset"; then
38   CXXFLAGS_overridden=yes
39 else
40   CXXFLAGS_overridden=no
42 AC_PROG_CXX
43 m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCXX])
45 dnl By default, libtool for mingw refuses to link static libs into a dll for
46 dnl fear of mixing pic/non-pic objects, and import/export complications. Since
47 dnl we have those under control, re-enable that functionality.
48 case $host in
49   *mingw*)
50      lt_cv_deplibs_check_method="pass_all"
51   ;;
52 esac
53 dnl Libtool init checks.
54 LT_INIT([pic-only])
56 dnl Check/return PATH for base programs.
57 AC_PATH_TOOL(AR, ar)
58 AC_PATH_TOOL(RANLIB, ranlib)
59 AC_PATH_TOOL(STRIP, strip)
60 AC_PATH_TOOL(GCOV, gcov)
61 AC_PATH_PROG(LCOV, lcov)
62 AC_PATH_PROG(JAVA, java)
63 AC_PATH_PROGS([PYTHON], [python3 python2.7 python2 python])
64 AC_PATH_PROG(GENHTML, genhtml)
65 AC_PATH_PROG([GIT], [git])
66 AC_PATH_PROG(CCACHE,ccache)
67 AC_PATH_PROG(XGETTEXT,xgettext)
68 AC_PATH_PROG(HEXDUMP,hexdump)
69 AC_PATH_TOOL(READELF, readelf)
70 AC_PATH_TOOL(CPPFILT, c++filt)
72 AC_ARG_VAR(PYTHONPATH, Augments the default search path for python module files)
74 dnl pkg-config check.
75 PKG_PROG_PKG_CONFIG
77 # Enable wallet
78 AC_ARG_ENABLE([wallet],
79   [AS_HELP_STRING([--disable-wallet],
80   [disable wallet (enabled by default)])],
81   [enable_wallet=$enableval],
82   [enable_wallet=yes])
84 AC_ARG_WITH([miniupnpc],
85   [AS_HELP_STRING([--with-miniupnpc],
86   [enable UPNP (default is yes if libminiupnpc is found)])],
87   [use_upnp=$withval],
88   [use_upnp=auto])
90 AC_ARG_ENABLE([upnp-default],
91   [AS_HELP_STRING([--enable-upnp-default],
92   [if UPNP is enabled, turn it on at startup (default is no)])],
93   [use_upnp_default=$enableval],
94   [use_upnp_default=no])
96 AC_ARG_ENABLE(tests,
97     AS_HELP_STRING([--disable-tests],[do not compile tests (default is to compile)]),
98     [use_tests=$enableval],
99     [use_tests=yes])
101 AC_ARG_ENABLE(gui-tests,
102     AS_HELP_STRING([--disable-gui-tests],[do not compile GUI tests (default is to compile if GUI and tests enabled)]),
103     [use_gui_tests=$enableval],
104     [use_gui_tests=$use_tests])
106 AC_ARG_ENABLE(bench,
107     AS_HELP_STRING([--disable-bench],[do not compile benchmarks (default is to compile)]),
108     [use_bench=$enableval],
109     [use_bench=yes])
111 AC_ARG_WITH([comparison-tool],
112     AS_HELP_STRING([--with-comparison-tool],[path to java comparison tool (requires --enable-tests)]),
113     [use_comparison_tool=$withval],
114     [use_comparison_tool=no])
116 AC_ARG_ENABLE([comparison-tool-reorg-tests],
117     AS_HELP_STRING([--enable-comparison-tool-reorg-tests],[enable expensive reorg tests in the comparison tool (default no)]),
118     [use_comparison_tool_reorg_tests=$enableval],
119     [use_comparison_tool_reorg_tests=no])
121 AC_ARG_ENABLE([extended-rpc-tests],
122     AS_HELP_STRING([--enable-extended-rpc-tests],[enable expensive RPC tests when using lcov (default no)]),
123     [use_extended_rpc_tests=$enableval],
124     [use_extended_rpc_tests=no])
126 AC_ARG_WITH([qrencode],
127   [AS_HELP_STRING([--with-qrencode],
128   [enable QR code support (default is yes if qt is enabled and libqrencode is found)])],
129   [use_qr=$withval],
130   [use_qr=auto])
132 AC_ARG_ENABLE([hardening],
133   [AS_HELP_STRING([--disable-hardening],
134   [do not attempt to harden the resulting executables (default is to harden)])],
135   [use_hardening=$enableval],
136   [use_hardening=yes])
138 AC_ARG_ENABLE([reduce-exports],
139   [AS_HELP_STRING([--enable-reduce-exports],
140   [attempt to reduce exported symbols in the resulting executables (default is no)])],
141   [use_reduce_exports=$enableval],
142   [use_reduce_exports=no])
144 AC_ARG_ENABLE([ccache],
145   [AS_HELP_STRING([--disable-ccache],
146   [do not use ccache for building (default is to use if found)])],
147   [use_ccache=$enableval],
148   [use_ccache=auto])
150 AC_ARG_ENABLE([lcov],
151   [AS_HELP_STRING([--enable-lcov],
152   [enable lcov testing (default is no)])],
153   [use_lcov=yes],
154   [use_lcov=no])
156 AC_ARG_ENABLE([glibc-back-compat],
157   [AS_HELP_STRING([--enable-glibc-back-compat],
158   [enable backwards compatibility with glibc])],
159   [use_glibc_compat=$enableval],
160   [use_glibc_compat=no])
162 AC_ARG_WITH([system-univalue],
163   [AS_HELP_STRING([--with-system-univalue],
164   [Build with system UniValue (default is no)])],
165   [system_univalue=$withval],
166   [system_univalue=no]
168 AC_ARG_ENABLE([zmq],
169   [AS_HELP_STRING([--disable-zmq],
170   [disable ZMQ notifications])],
171   [use_zmq=$enableval],
172   [use_zmq=yes])
174 AC_ARG_WITH([protoc-bindir],[AS_HELP_STRING([--with-protoc-bindir=BIN_DIR],[specify protoc bin path])], [protoc_bin_path=$withval], [])
176 # Enable debug
177 AC_ARG_ENABLE([debug],
178     [AS_HELP_STRING([--enable-debug],
179                     [use debug compiler flags and macros (default is no)])],
180     [enable_debug=$enableval],
181     [enable_debug=no])
183 if test "x$enable_debug" = xyes; then
184     CPPFLAGS="$CPPFLAGS -DDEBUG -DDEBUG_LOCKORDER"
185     if test "x$GCC" = xyes; then
186         CFLAGS="$CFLAGS -g3 -O0"
187     fi
189     if test "x$GXX" = xyes; then
190         CXXFLAGS="$CXXFLAGS -g3 -O0"
191     fi
194 ## TODO: Remove these hard-coded paths and flags. They are here for the sake of
195 ##       compatibility with the legacy buildsystem.
197 if test "x$CXXFLAGS_overridden" = "xno"; then
198   CXXFLAGS="$CXXFLAGS -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -Wno-self-assign"
200 CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"
202 AC_ARG_WITH([utils],
203   [AS_HELP_STRING([--with-utils],
204   [build bitcoin-cli bitcoin-tx (default=yes)])],
205   [build_bitcoin_utils=$withval],
206   [build_bitcoin_utils=yes])
208 AC_ARG_WITH([libs],
209   [AS_HELP_STRING([--with-libs],
210   [build libraries (default=yes)])],
211   [build_bitcoin_libs=$withval],
212   [build_bitcoin_libs=yes])
214 AC_ARG_WITH([daemon],
215   [AS_HELP_STRING([--with-daemon],
216   [build bitcoind daemon (default=yes)])],
217   [build_bitcoind=$withval],
218   [build_bitcoind=yes])
220 AC_LANG_PUSH([C++])
222 use_pkgconfig=yes
223 case $host in
224   *mingw*)
226      #pkgconfig does more harm than good with MinGW
227      use_pkgconfig=no
229      TARGET_OS=windows
230      AC_CHECK_LIB([mingwthrd],      [main],, AC_MSG_ERROR(lib missing))
231      AC_CHECK_LIB([kernel32],      [main],, AC_MSG_ERROR(lib missing))
232      AC_CHECK_LIB([user32],      [main],, AC_MSG_ERROR(lib missing))
233      AC_CHECK_LIB([gdi32],      [main],, AC_MSG_ERROR(lib missing))
234      AC_CHECK_LIB([comdlg32],      [main],, AC_MSG_ERROR(lib missing))
235      AC_CHECK_LIB([winspool],      [main],, AC_MSG_ERROR(lib missing))
236      AC_CHECK_LIB([winmm],      [main],, AC_MSG_ERROR(lib missing))
237      AC_CHECK_LIB([shell32],      [main],, AC_MSG_ERROR(lib missing))
238      AC_CHECK_LIB([comctl32],      [main],, AC_MSG_ERROR(lib missing))
239      AC_CHECK_LIB([ole32],      [main],, AC_MSG_ERROR(lib missing))
240      AC_CHECK_LIB([oleaut32],      [main],, AC_MSG_ERROR(lib missing))
241      AC_CHECK_LIB([uuid],      [main],, AC_MSG_ERROR(lib missing))
242      AC_CHECK_LIB([rpcrt4],      [main],, AC_MSG_ERROR(lib missing))
243      AC_CHECK_LIB([advapi32],      [main],, AC_MSG_ERROR(lib missing))
244      AC_CHECK_LIB([ws2_32],      [main],, AC_MSG_ERROR(lib missing))
245      AC_CHECK_LIB([mswsock],      [main],, AC_MSG_ERROR(lib missing))
246      AC_CHECK_LIB([shlwapi],      [main],, AC_MSG_ERROR(lib missing))
247      AC_CHECK_LIB([iphlpapi],      [main],, AC_MSG_ERROR(lib missing))
248      AC_CHECK_LIB([crypt32],      [main],, AC_MSG_ERROR(lib missing))
250      # -static is interpreted by libtool, where it has a different meaning.
251      # In libtool-speak, it's -all-static.
252      AX_CHECK_LINK_FLAG([[-static]],[LIBTOOL_APP_LDFLAGS="$LIBTOOL_APP_LDFLAGS -all-static"])
254      AC_PATH_PROG([MAKENSIS], [makensis], none)
255      if test x$MAKENSIS = xnone; then
256        AC_MSG_WARN("makensis not found. Cannot create installer.")
257      fi
259      AC_PATH_TOOL(WINDRES, windres, none)
260      if test x$WINDRES = xnone; then
261        AC_MSG_ERROR("windres not found")
262      fi
264      CPPFLAGS="$CPPFLAGS -D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB"
265      LEVELDB_TARGET_FLAGS="TARGET_OS=OS_WINDOWS_CROSSCOMPILE"
266      if test "x$CXXFLAGS_overridden" = "xno"; then
267        CXXFLAGS="$CXXFLAGS -w"
268      fi
269      case $host in
270        i?86-*) WINDOWS_BITS=32 ;;
271        x86_64-*) WINDOWS_BITS=64 ;;
272        *) AC_MSG_ERROR("Could not determine win32/win64 for installer") ;;
273      esac
274      AC_SUBST(WINDOWS_BITS)
276      dnl libtool insists upon adding -nostdlib and a list of objects/libs to link against.
277      dnl That breaks our ability to build dll's with static libgcc/libstdc++/libssp. Override
278      dnl its command here, with the predeps/postdeps removed, and -static inserted. Postdeps are
279      dnl also overridden to prevent their insertion later.
280      dnl This should only affect dll's.
281      archive_cmds_CXX="\$CC -shared \$libobjs \$deplibs \$compiler_flags -static -o \$output_objdir/\$soname \${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib"
282      postdeps_CXX=
284      ;;
285   *darwin*)
286      TARGET_OS=darwin
287      LEVELDB_TARGET_FLAGS="TARGET_OS=Darwin"
288      if  test x$cross_compiling != xyes; then
289        BUILD_OS=darwin
290        AC_CHECK_PROG([PORT],port, port)
291        if test x$PORT = xport; then
292          dnl add default macports paths
293          CPPFLAGS="$CPPFLAGS -isystem /opt/local/include"
294          LIBS="$LIBS -L/opt/local/lib"
295          if test -d /opt/local/include/db48; then
296            CPPFLAGS="$CPPFLAGS -I/opt/local/include/db48"
297            LIBS="$LIBS -L/opt/local/lib/db48"
298          fi
299        fi
301        AC_CHECK_PROG([BREW],brew, brew)
302        if test x$BREW = xbrew; then
303          dnl These Homebrew packages may be keg-only, meaning that they won't be found
304          dnl in expected paths because they may conflict with system files. Ask
305          dnl Homebrew where each one is located, then adjust paths accordingly.
306          dnl It's safe to add these paths even if the functionality is disabled by
307          dnl the user (--without-wallet or --without-gui for example).
309          openssl_prefix=`$BREW --prefix openssl 2>/dev/null`
310          bdb_prefix=`$BREW --prefix berkeley-db4 2>/dev/null`
311          qt5_prefix=`$BREW --prefix qt5 2>/dev/null`
312          if test x$openssl_prefix != x; then
313            PKG_CONFIG_PATH="$openssl_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
314            export PKG_CONFIG_PATH
315          fi
316          if test x$bdb_prefix != x; then
317            CPPFLAGS="$CPPFLAGS -I$bdb_prefix/include"
318            LIBS="$LIBS -L$bdb_prefix/lib"
319          fi
320          if test x$qt5_prefix != x; then
321            PKG_CONFIG_PATH="$qt5_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
322            export PKG_CONFIG_PATH
323          fi
324        fi
325      else
326        case $build_os in
327          *darwin*)
328            BUILD_OS=darwin
329            ;;
330          *)
331            AC_PATH_TOOL([INSTALLNAMETOOL], [install_name_tool], install_name_tool)
332            AC_PATH_TOOL([OTOOL], [otool], otool)
333            AC_PATH_PROGS([GENISOIMAGE], [genisoimage mkisofs],genisoimage)
334            AC_PATH_PROGS([RSVG_CONVERT], [rsvg-convert rsvg],rsvg-convert)
335            AC_PATH_PROGS([IMAGEMAGICK_CONVERT], [convert],convert)
336            AC_PATH_PROGS([TIFFCP], [tiffcp],tiffcp)
338            dnl libtool will try to strip the static lib, which is a problem for
339            dnl cross-builds because strip attempts to call a hard-coded ld,
340            dnl which may not exist in the path. Stripping the .a is not
341            dnl necessary, so just disable it.
342            old_striplib=
343            ;;
344        esac
345      fi
347      AX_CHECK_LINK_FLAG([[-Wl,-headerpad_max_install_names]], [LDFLAGS="$LDFLAGS -Wl,-headerpad_max_install_names"])
348      CPPFLAGS="$CPPFLAGS -DMAC_OSX"
349      OBJCXXFLAGS="$CXXFLAGS"
350      ;;
351    *linux*)
352      TARGET_OS=linux
353      ;;
354    *)
355      ;;
356 esac
358 if test x$use_comparison_tool != xno; then
359   AC_SUBST(JAVA_COMPARISON_TOOL, $use_comparison_tool)
362 if test x$use_comparison_tool_reorg_tests != xno; then
363   if test x$use_comparison_tool = x; then
364     AC_MSG_ERROR("comparison tool reorg tests but comparison tool was not specified")
365   fi
366   AC_SUBST(COMPARISON_TOOL_REORG_TESTS, 1)
367 else
368   AC_SUBST(COMPARISON_TOOL_REORG_TESTS, 0)
371 if test x$use_extended_rpc_tests != xno; then
372   AC_SUBST(EXTENDED_RPC_TESTS, -extended)
375 if test x$use_lcov = xyes; then
376   if test x$LCOV = x; then
377     AC_MSG_ERROR("lcov testing requested but lcov not found")
378   fi
379   if test x$GCOV = x; then
380     AC_MSG_ERROR("lcov testing requested but gcov not found")
381   fi
382   if test x$JAVA = x; then
383     AC_MSG_ERROR("lcov testing requested but java not found")
384   fi
385   if test x$PYTHON = x; then
386     AC_MSG_ERROR("lcov testing requested but python not found")
387   fi
388   if test x$GENHTML = x; then
389     AC_MSG_ERROR("lcov testing requested but genhtml not found")
390   fi
391   if test x$use_comparison_tool = x; then
392     AC_MSG_ERROR("lcov testing requested but comparison tool was not specified")
393   fi
394   LCOV="$LCOV --gcov-tool=$GCOV"
395   AX_CHECK_COMPILE_FLAG([--coverage],[CXXFLAGS="$CXXFLAGS --coverage"],
396     [AC_MSG_ERROR("lcov testing requested but --coverage flag does not work")])
399 dnl Check for endianness
400 AC_C_BIGENDIAN
402 dnl Check for pthread compile/link requirements
403 AX_PTHREAD
405 # The following macro will add the necessary defines to bitcoin-config.h, but
406 # they also need to be passed down to any subprojects. Pull the results out of
407 # the cache and add them to CPPFLAGS.
408 AC_SYS_LARGEFILE
409 # detect POSIX or GNU variant of strerror_r
410 AC_FUNC_STRERROR_R
412 if test x$ac_cv_sys_file_offset_bits != x &&
413    test x$ac_cv_sys_file_offset_bits != xno &&
414    test x$ac_cv_sys_file_offset_bits != xunknown; then
415   CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
418 if test x$ac_cv_sys_large_files != x &&
419    test x$ac_cv_sys_large_files != xno &&
420    test x$ac_cv_sys_large_files != xunknown; then
421   CPPFLAGS="$CPPFLAGS -D_LARGE_FILES=$ac_cv_sys_large_files"
424 AX_CHECK_LINK_FLAG([[-Wl,--large-address-aware]], [LDFLAGS="$LDFLAGS -Wl,--large-address-aware"])
426 AX_GCC_FUNC_ATTRIBUTE([visibility])
427 AX_GCC_FUNC_ATTRIBUTE([dllexport])
428 AX_GCC_FUNC_ATTRIBUTE([dllimport])
430 if test x$use_glibc_compat != xno; then
432   #glibc absorbed clock_gettime in 2.17. librt (its previous location) is safe to link
433   #in anyway for back-compat.
434   AC_CHECK_LIB([rt],[clock_gettime],, AC_MSG_ERROR(lib missing))
436   #__fdelt_chk's params and return type have changed from long unsigned int to long int.
437   # See which one is present here.
438   AC_MSG_CHECKING(__fdelt_chk type)
439   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef _FORTIFY_SOURCE
440                     #undef _FORTIFY_SOURCE
441                   #endif
442                   #define _FORTIFY_SOURCE 2
443                   #include <sys/select.h>
444      extern "C" long unsigned int __fdelt_warn(long unsigned int);]],[[]])],
445     [ fdelt_type="long unsigned int"],
446     [ fdelt_type="long int"])
447   AC_MSG_RESULT($fdelt_type)
448   AC_DEFINE_UNQUOTED(FDELT_TYPE, $fdelt_type,[parameter and return value type for __fdelt_chk])
449 else
450   AC_SEARCH_LIBS([clock_gettime],[rt])
453 if test x$TARGET_OS != xwindows; then
454   # All windows code is PIC, forcing it on just adds useless compile warnings
455   AX_CHECK_COMPILE_FLAG([-fPIC],[PIC_FLAGS="-fPIC"])
458 if test x$use_hardening != xno; then
459   AX_CHECK_COMPILE_FLAG([-Wstack-protector],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wstack-protector"])
460   AX_CHECK_COMPILE_FLAG([-fstack-protector-all],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fstack-protector-all"])
462   AX_CHECK_PREPROC_FLAG([-D_FORTIFY_SOURCE=2],[
463     AX_CHECK_PREPROC_FLAG([-U_FORTIFY_SOURCE],[
464       HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -U_FORTIFY_SOURCE"
465     ])
466     HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -D_FORTIFY_SOURCE=2"
467   ])
469   AX_CHECK_LINK_FLAG([[-Wl,--dynamicbase]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--dynamicbase"])
470   AX_CHECK_LINK_FLAG([[-Wl,--nxcompat]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--nxcompat"])
471   AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"])
472   AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"])
474   if test x$TARGET_OS != xwindows; then
475     AX_CHECK_COMPILE_FLAG([-fPIE],[PIE_FLAGS="-fPIE"])
476     AX_CHECK_LINK_FLAG([[-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"])
477   fi
479   case $host in
480     *mingw*)
481        AC_CHECK_LIB([ssp],      [main],, AC_MSG_ERROR(lib missing))
482     ;;
483   esac
486 dnl this flag screws up non-darwin gcc even when the check fails. special-case it.
487 if test x$TARGET_OS = xdarwin; then
488   AX_CHECK_LINK_FLAG([[-Wl,-dead_strip]], [LDFLAGS="$LDFLAGS -Wl,-dead_strip"])
491 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])
492 AC_SEARCH_LIBS([getaddrinfo_a], [anl], [AC_DEFINE(HAVE_GETADDRINFO_A, 1, [Define this symbol if you have getaddrinfo_a])])
493 AC_SEARCH_LIBS([inet_pton], [nsl resolv], [AC_DEFINE(HAVE_INET_PTON, 1, [Define this symbol if you have inet_pton])])
495 AC_CHECK_DECLS([strnlen])
497 AC_CHECK_DECLS([le16toh, le32toh, le64toh, htole16, htole32, htole64, be16toh, be32toh, be64toh, htobe16, htobe32, htobe64],,,
498                 [#if HAVE_ENDIAN_H
499                  #include <endian.h>
500                  #elif HAVE_SYS_ENDIAN_H
501                  #include <sys/endian.h>
502                  #endif])
504 AC_CHECK_DECLS([bswap_16, bswap_32, bswap_64],,,
505                 [#if HAVE_BYTESWAP_H
506                  #include <byteswap.h>
507                  #endif])
509 dnl Check for MSG_NOSIGNAL
510 AC_MSG_CHECKING(for MSG_NOSIGNAL)
511 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
512  [[ int f = MSG_NOSIGNAL; ]])],
513  [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MSG_NOSIGNAL, 1,[Define this symbol if you have MSG_NOSIGNAL]) ],
514  [ AC_MSG_RESULT(no)]
517 AC_MSG_CHECKING([for visibility attribute])
518 AC_LINK_IFELSE([AC_LANG_SOURCE([
519   int foo_def( void ) __attribute__((visibility("default")));
520   int main(){}
521   ])],
522   [
523     AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE,1,[Define if the visibility attribute is supported.])
524     AC_MSG_RESULT(yes)
525   ],
526   [
527     AC_MSG_RESULT(no)
528     if test x$use_reduce_exports = xyes; then
529       AC_MSG_ERROR([Cannot find a working visibility attribute. Use --disable-reduce-exports.])
530     fi
531   ]
534 if test x$use_reduce_exports = xyes; then
535   AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],[RE_CXXFLAGS="-fvisibility=hidden"],
536   [AC_MSG_ERROR([Cannot set default symbol visibility. Use --disable-reduce-exports.])])
539 LEVELDB_CPPFLAGS=
540 LIBLEVELDB=
541 LIBMEMENV=
542 AM_CONDITIONAL([EMBEDDED_LEVELDB],[true])
543 AC_SUBST(LEVELDB_CPPFLAGS)
544 AC_SUBST(LIBLEVELDB)
545 AC_SUBST(LIBMEMENV)
547 if test x$enable_wallet != xno; then
548     dnl Check for libdb_cxx only if wallet enabled
549     BITCOIN_FIND_BDB48
552 dnl Check for libminiupnpc (optional)
553 if test x$use_upnp != xno; then
554   AC_CHECK_HEADERS(
555     [miniupnpc/miniwget.h miniupnpc/miniupnpc.h miniupnpc/upnpcommands.h miniupnpc/upnperrors.h],
556     [AC_CHECK_LIB([miniupnpc], [main],[MINIUPNPC_LIBS=-lminiupnpc], [have_miniupnpc=no])],
557     [have_miniupnpc=no]
558   )
561 BITCOIN_QT_INIT
563 dnl sets $bitcoin_enable_qt, $bitcoin_enable_qt_test, $bitcoin_enable_qt_dbus
564 BITCOIN_QT_CONFIGURE([$use_pkgconfig], [qt5])
566 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests = xnononono; then
567     use_boost=no
568 else
569     use_boost=yes
572 if test x$use_boost = xyes; then
574 dnl Check for boost libs
575 AX_BOOST_BASE
576 AX_BOOST_SYSTEM
577 AX_BOOST_FILESYSTEM
578 AX_BOOST_PROGRAM_OPTIONS
579 AX_BOOST_THREAD
580 AX_BOOST_CHRONO
583 if test x$use_reduce_exports = xyes; then
584   AC_MSG_CHECKING([for working boost reduced exports])
585   TEMP_CPPFLAGS="$CPPFLAGS"
586   CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
587   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
588       @%:@include <boost/version.hpp>
589     ]], [[
590       #if BOOST_VERSION >= 104900
591       // Everything is okay
592       #else
593       #  error Boost version is too old
594       #endif
595     ]])],[
596       AC_MSG_RESULT(yes)
597     ],[
598     AC_MSG_ERROR([boost versions < 1.49 are known to be broken with reduced exports. Use --disable-reduce-exports.])
599   ])
600   CPPFLAGS="$TEMP_CPPFLAGS"
604 if test x$use_reduce_exports = xyes; then
605     CXXFLAGS="$CXXFLAGS $RE_CXXFLAGS"
606     AX_CHECK_LINK_FLAG([[-Wl,--exclude-libs,ALL]], [RELDFLAGS="-Wl,--exclude-libs,ALL"])
609 if test x$use_tests = xyes; then
611   if test x$HEXDUMP = x; then
612     AC_MSG_ERROR(hexdump is required for tests)
613   fi
616   if test x$use_boost = xyes; then
618   AX_BOOST_UNIT_TEST_FRAMEWORK
620   dnl Determine if -DBOOST_TEST_DYN_LINK is needed
621   AC_MSG_CHECKING([for dynamic linked boost test])
622   TEMP_LIBS="$LIBS"
623   LIBS="$LIBS $BOOST_LDFLAGS $BOOST_UNIT_TEST_FRAMEWORK_LIB"
624   TEMP_CPPFLAGS="$CPPFLAGS"
625   CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
626   AC_LINK_IFELSE([AC_LANG_SOURCE([
627        #define BOOST_TEST_DYN_LINK
628        #define BOOST_TEST_MAIN
629         #include <boost/test/unit_test.hpp>
631        ])],
632     [AC_MSG_RESULT(yes)]
633     [TESTDEFS="$TESTDEFS -DBOOST_TEST_DYN_LINK"],
634     [AC_MSG_RESULT(no)])
635   LIBS="$TEMP_LIBS"
636   CPPFLAGS="$TEMP_CPPFLAGS"
638   fi
641 if test x$use_boost = xyes; then
643 BOOST_LIBS="$BOOST_LDFLAGS $BOOST_SYSTEM_LIB $BOOST_FILESYSTEM_LIB $BOOST_PROGRAM_OPTIONS_LIB $BOOST_THREAD_LIB $BOOST_CHRONO_LIB"
646 dnl If boost (prior to 1.57) was built without c++11, it emulated scoped enums
647 dnl using c++98 constructs. Unfortunately, this implementation detail leaked into
648 dnl the abi. This was fixed in 1.57.
650 dnl When building against that installed version using c++11, the headers pick up
651 dnl on the native c++11 scoped enum support and enable it, however it will fail to
652 dnl link. This can be worked around by disabling c++11 scoped enums if linking will
653 dnl fail.
654 dnl BOOST_NO_SCOPED_ENUMS was changed to BOOST_NO_CXX11_SCOPED_ENUMS in 1.51.
656 TEMP_LIBS="$LIBS"
657 LIBS="$BOOST_LIBS $LIBS"
658 TEMP_CPPFLAGS="$CPPFLAGS"
659 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
660 AC_MSG_CHECKING([for mismatched boost c++11 scoped enums])
661 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
662   #include "boost/config.hpp"
663   #include "boost/version.hpp"
664   #if !defined(BOOST_NO_SCOPED_ENUMS) && !defined(BOOST_NO_CXX11_SCOPED_ENUMS) && BOOST_VERSION < 105700
665   #define BOOST_NO_SCOPED_ENUMS
666   #define BOOST_NO_CXX11_SCOPED_ENUMS
667   #define CHECK
668   #endif
669   #include "boost/filesystem.hpp"
670   ]],[[
671   #if defined(CHECK)
672     boost::filesystem::copy_file("foo", "bar");
673   #else
674     choke;
675   #endif
676   ]])],
677   [AC_MSG_RESULT(mismatched); BOOST_CPPFLAGS="$BOOST_CPPFLAGS -DBOOST_NO_SCOPED_ENUMS -DBOOST_NO_CXX11_SCOPED_ENUMS"], [AC_MSG_RESULT(ok)])
678 LIBS="$TEMP_LIBS"
679 CPPFLAGS="$TEMP_CPPFLAGS"
681 dnl Boost >= 1.50 uses sleep_for rather than the now-deprecated sleep, however
682 dnl it was broken from 1.50 to 1.52 when backed by nanosleep. Use sleep_for if
683 dnl a working version is available, else fall back to sleep. sleep was removed
684 dnl after 1.56.
685 dnl If neither is available, abort.
686 TEMP_LIBS="$LIBS"
687 LIBS="$BOOST_LIBS $LIBS"
688 TEMP_CPPFLAGS="$CPPFLAGS"
689 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
690 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
691   #include <boost/thread/thread.hpp>
692   #include <boost/version.hpp>
693   ]],[[
694   #if BOOST_VERSION >= 105000 && (!defined(BOOST_HAS_NANOSLEEP) || BOOST_VERSION >= 105200)
695       boost::this_thread::sleep_for(boost::chrono::milliseconds(0));
696   #else
697    choke me
698   #endif
699   ]])],
700   [boost_sleep=yes;
701      AC_DEFINE(HAVE_WORKING_BOOST_SLEEP_FOR, 1, [Define this symbol if boost sleep_for works])],
702   [boost_sleep=no])
703 LIBS="$TEMP_LIBS"
704 CPPFLAGS="$TEMP_CPPFLAGS"
706 if test x$boost_sleep != xyes; then
707 TEMP_LIBS="$LIBS"
708 LIBS="$BOOST_LIBS $LIBS"
709 TEMP_CPPFLAGS="$CPPFLAGS"
710 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
711 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
712   #include <boost/version.hpp>
713   #include <boost/thread.hpp>
714   #include <boost/date_time/posix_time/posix_time_types.hpp>
715   ]],[[
716   #if BOOST_VERSION <= 105600
717       boost::this_thread::sleep(boost::posix_time::milliseconds(0));
718   #else
719    choke me
720   #endif
721   ]])],
722   [boost_sleep=yes; AC_DEFINE(HAVE_WORKING_BOOST_SLEEP, 1, [Define this symbol if boost sleep works])],
723   [boost_sleep=no])
724 LIBS="$TEMP_LIBS"
725 CPPFLAGS="$TEMP_CPPFLAGS"
728 if test x$boost_sleep != xyes; then
729   AC_MSG_ERROR(No working boost sleep implementation found.)
734 if test x$use_pkgconfig = xyes; then
736   if test x"$PKG_CONFIG" = "x"; then
737     AC_MSG_ERROR(pkg-config not found.)
738   fi
740   : #NOP
741   m4_ifdef(
742     [PKG_CHECK_MODULES],
743     [
744       PKG_CHECK_MODULES([SSL], [libssl],, [AC_MSG_ERROR(openssl  not found.)])
745       PKG_CHECK_MODULES([CRYPTO], [libcrypto],,[AC_MSG_ERROR(libcrypto  not found.)])
746       BITCOIN_QT_CHECK([PKG_CHECK_MODULES([PROTOBUF], [protobuf], [have_protobuf=yes], [BITCOIN_QT_FAIL(libprotobuf not found)])])
747       if test x$use_qr != xno; then
748         BITCOIN_QT_CHECK([PKG_CHECK_MODULES([QR], [libqrencode], [have_qrencode=yes], [have_qrencode=no])])
749       fi
750       if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
751         PKG_CHECK_MODULES([EVENT], [libevent],, [AC_MSG_ERROR(libevent not found.)])
752         if test x$TARGET_OS != xwindows; then
753           PKG_CHECK_MODULES([EVENT_PTHREADS], [libevent_pthreads],, [AC_MSG_ERROR(libevent_pthreads not found.)])
754         fi
755       fi
757       if test "x$use_zmq" = "xyes"; then
758         PKG_CHECK_MODULES([ZMQ],[libzmq >= 4],
759           [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
760           [AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
761            AC_MSG_WARN([libzmq version 4.x or greater not found, disabling])
762            use_zmq=no])
763       else
764           AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
765       fi
766     ]
767   )
768 else
769   AC_CHECK_HEADER([openssl/crypto.h],,AC_MSG_ERROR(libcrypto headers missing))
770   AC_CHECK_LIB([crypto],      [main],CRYPTO_LIBS=-lcrypto, AC_MSG_ERROR(libcrypto missing))
772   AC_CHECK_HEADER([openssl/ssl.h],, AC_MSG_ERROR(libssl headers missing),)
773   AC_CHECK_LIB([ssl],         [main],SSL_LIBS=-lssl, AC_MSG_ERROR(libssl missing))
775   if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
776     AC_CHECK_HEADER([event2/event.h],, AC_MSG_ERROR(libevent headers missing),)
777     AC_CHECK_LIB([event],[main],EVENT_LIBS=-levent,AC_MSG_ERROR(libevent missing))
778     if test x$TARGET_OS != xwindows; then
779       AC_CHECK_LIB([event_pthreads],[main],EVENT_PTHREADS_LIBS=-levent_pthreads,AC_MSG_ERROR(libevent_pthreads missing))
780     fi
781   fi
783   if test "x$use_zmq" = "xyes"; then
784      AC_CHECK_HEADER([zmq.h],
785        [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
786        [AC_MSG_WARN([zmq.h not found, disabling zmq support])
787         use_zmq=no
788         AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
789      AC_CHECK_LIB([zmq],[zmq_ctx_shutdown],ZMQ_LIBS=-lzmq,
790        [AC_MSG_WARN([libzmq >= 4.0 not found, disabling zmq support])
791         use_zmq=no
792         AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
793   else
794     AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
795   fi
797   BITCOIN_QT_CHECK(AC_CHECK_LIB([protobuf] ,[main],[PROTOBUF_LIBS=-lprotobuf], BITCOIN_QT_FAIL(libprotobuf not found)))
798   if test x$use_qr != xno; then
799     BITCOIN_QT_CHECK([AC_CHECK_LIB([qrencode], [main],[QR_LIBS=-lqrencode], [have_qrencode=no])])
800     BITCOIN_QT_CHECK([AC_CHECK_HEADER([qrencode.h],, have_qrencode=no)])
801   fi
804 dnl univalue check
806 if test x$system_univalue != xno ; then
807   found_univalue=no
808   if test x$use_pkgconfig = xyes; then
809     : #NOP
810     m4_ifdef(
811       [PKG_CHECK_MODULES],
812       [
813         PKG_CHECK_MODULES([UNIVALUE],[libunivalue],[found_univalue=yes],[true])
814       ]
815     )
816   else
817     AC_CHECK_HEADER([univalue.h],[
818       AC_CHECK_LIB([univalue],  [main],[
819         UNIVALUE_LIBS=-lunivalue
820         found_univalue=yes
821       ],[true])
822     ],[true])
823   fi
825   if test x$found_univalue = xyes ; then
826     system_univalue=yes
827   elif test x$system_univalue = xyes ; then
828     AC_MSG_ERROR([univalue not found])
829   else
830     system_univalue=no
831   fi
834 if test x$system_univalue = xno ; then
835   UNIVALUE_CFLAGS='-I$(srcdir)/univalue/include'
836   UNIVALUE_LIBS='univalue/libunivalue.la'
838 AM_CONDITIONAL([EMBEDDED_UNIVALUE],[test x$system_univalue = xno])
839 AC_SUBST(UNIVALUE_CFLAGS)
840 AC_SUBST(UNIVALUE_LIBS)
842 CXXFLAGS_TEMP="$CXXFLAGS"
843 LIBS_TEMP="$LIBS"
844 CXXFLAGS="$CXXFLAGS $SSL_CFLAGS $CRYPTO_CFLAGS"
845 LIBS="$LIBS $SSL_LIBS $CRYPTO_LIBS"
846 AC_CHECK_HEADER([openssl/ec.h],, AC_MSG_ERROR(OpenSSL ec header missing),)
847 CXXFLAGS="$CXXFLAGS_TEMP"
848 LIBS="$LIBS_TEMP"
850 BITCOIN_QT_PATH_PROGS([PROTOC], [protoc],$protoc_bin_path)
852 AC_MSG_CHECKING([whether to build bitcoind])
853 AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
854 AC_MSG_RESULT($build_bitcoind)
856 AC_MSG_CHECKING([whether to build utils (bitcoin-cli bitcoin-tx)])
857 AM_CONDITIONAL([BUILD_BITCOIN_UTILS], [test x$build_bitcoin_utils = xyes])
858 AC_MSG_RESULT($build_bitcoin_utils)
860 AC_MSG_CHECKING([whether to build libraries])
861 AM_CONDITIONAL([BUILD_BITCOIN_LIBS], [test x$build_bitcoin_libs = xyes])
862 if test x$build_bitcoin_libs = xyes; then
863   AC_DEFINE(HAVE_CONSENSUS_LIB, 1, [Define this symbol if the consensus lib has been built])
864   AC_CONFIG_FILES([libbitcoinconsensus.pc:libbitcoinconsensus.pc.in])
866 AC_MSG_RESULT($build_bitcoin_libs)
868 AC_LANG_POP
870 if test "x$use_ccache" != "xno"; then
871   AC_MSG_CHECKING(if ccache should be used)
872   if test x$CCACHE = x; then
873     if test "x$use_ccache" = "xyes"; then
874       AC_MSG_ERROR([ccache not found.]);
875     else
876       use_ccache=no
877     fi
878   else
879     use_ccache=yes
880     CC="$ac_cv_path_CCACHE $CC"
881     CXX="$ac_cv_path_CCACHE $CXX"
882   fi
883   AC_MSG_RESULT($use_ccache)
885 if test "x$use_ccache" = "xyes"; then
886     AX_CHECK_PREPROC_FLAG([-Qunused-arguments],[CPPFLAGS="-Qunused-arguments $CPPFLAGS"])
889 dnl enable wallet
890 AC_MSG_CHECKING([if wallet should be enabled])
891 if test x$enable_wallet != xno; then
892   AC_MSG_RESULT(yes)
893   AC_DEFINE_UNQUOTED([ENABLE_WALLET],[1],[Define to 1 to enable wallet functions])
895 else
896   AC_MSG_RESULT(no)
899 dnl enable upnp support
900 AC_MSG_CHECKING([whether to build with support for UPnP])
901 if test x$have_miniupnpc = xno; then
902   if test x$use_upnp = xyes; then
903      AC_MSG_ERROR("UPnP requested but cannot be built. use --without-miniupnpc")
904   fi
905   AC_MSG_RESULT(no)
906 else
907   if test x$use_upnp != xno; then
908     AC_MSG_RESULT(yes)
909     AC_MSG_CHECKING([whether to build with UPnP enabled by default])
910     use_upnp=yes
911     upnp_setting=0
912     if test x$use_upnp_default != xno; then
913       use_upnp_default=yes
914       upnp_setting=1
915     fi
916     AC_MSG_RESULT($use_upnp_default)
917     AC_DEFINE_UNQUOTED([USE_UPNP],[$upnp_setting],[UPnP support not compiled if undefined, otherwise value (0 or 1) determines default state])
918     if test x$TARGET_OS = xwindows; then
919       MINIUPNPC_CPPFLAGS="-DSTATICLIB -DMINIUPNP_STATICLIB"
920     fi
921   else
922     AC_MSG_RESULT(no)
923   fi
926 dnl these are only used when qt is enabled
927 BUILD_TEST_QT=""
928 if test x$bitcoin_enable_qt != xno; then
929   dnl enable dbus support
930   AC_MSG_CHECKING([whether to build GUI with support for D-Bus])
931   if test x$bitcoin_enable_qt_dbus != xno; then
932     AC_DEFINE([USE_DBUS],[1],[Define if dbus support should be compiled in])
933   fi
934   AC_MSG_RESULT($bitcoin_enable_qt_dbus)
936   dnl enable qr support
937   AC_MSG_CHECKING([whether to build GUI with support for QR codes])
938   if test x$have_qrencode = xno; then
939     if test x$use_qr = xyes; then
940      AC_MSG_ERROR("QR support requested but cannot be built. use --without-qrencode")
941     fi
942     AC_MSG_RESULT(no)
943   else
944     if test x$use_qr != xno; then
945       AC_MSG_RESULT(yes)
946       AC_DEFINE([USE_QRCODE],[1],[Define if QR support should be compiled in])
947       use_qr=yes
948     else
949       AC_MSG_RESULT(no)
950     fi
951   fi
953   if test x$XGETTEXT = x; then
954     AC_MSG_WARN("xgettext is required to update qt translations")
955   fi
957   AC_MSG_CHECKING([whether to build test_bitcoin-qt])
958   if test x$use_gui_tests$bitcoin_enable_qt_test = xyesyes; then
959     AC_MSG_RESULT([yes])
960     BUILD_TEST_QT="yes"
961   else
962     AC_MSG_RESULT([no])
963   fi
966 AM_CONDITIONAL([ENABLE_ZMQ], [test "x$use_zmq" = "xyes"])
968 AC_MSG_CHECKING([whether to build test_bitcoin])
969 if test x$use_tests = xyes; then
970   AC_MSG_RESULT([yes])
971   BUILD_TEST="yes"
972 else
973   AC_MSG_RESULT([no])
974   BUILD_TEST=""
977 AC_MSG_CHECKING([whether to reduce exports])
978 if test x$use_reduce_exports = xyes; then
979   AC_MSG_RESULT([yes])
980 else
981   AC_MSG_RESULT([no])
984 if test x$build_bitcoin_utils$build_bitcoin_libs$build_bitcoind$bitcoin_enable_qt$use_tests = xnonononono; then
985   AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon --with-gui or --enable-tests])
988 AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin])
989 AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin])
990 AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows])
991 AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet = xyes])
992 AM_CONDITIONAL([ENABLE_TESTS],[test x$BUILD_TEST = xyes])
993 AM_CONDITIONAL([ENABLE_QT],[test x$bitcoin_enable_qt = xyes])
994 AM_CONDITIONAL([ENABLE_QT_TESTS],[test x$BUILD_TEST_QT = xyes])
995 AM_CONDITIONAL([ENABLE_BENCH],[test x$use_bench = xyes])
996 AM_CONDITIONAL([USE_QRCODE], [test x$use_qr = xyes])
997 AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
998 AM_CONDITIONAL([USE_COMPARISON_TOOL],[test x$use_comparison_tool != xno])
999 AM_CONDITIONAL([USE_COMPARISON_TOOL_REORG_TESTS],[test x$use_comparison_tool_reorg_test != xno])
1000 AM_CONDITIONAL([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes])
1001 AM_CONDITIONAL([HARDEN],[test x$use_hardening = xyes])
1003 AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version])
1004 AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor version])
1005 AC_DEFINE(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION, [Build revision])
1006 AC_DEFINE(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD, [Version Build])
1007 AC_DEFINE(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE, [Version is release])
1008 AC_DEFINE(COPYRIGHT_YEAR, _COPYRIGHT_YEAR, [Copyright year])
1009 AC_DEFINE(COPYRIGHT_HOLDERS, "_COPYRIGHT_HOLDERS", [Copyright holder(s) before %s replacement])
1010 AC_DEFINE(COPYRIGHT_HOLDERS_SUBSTITUTION, "_COPYRIGHT_HOLDERS_SUBSTITUTION", [Replacement for %s in copyright holders string])
1011 define(_COPYRIGHT_HOLDERS_FINAL, [patsubst(_COPYRIGHT_HOLDERS, [%s], [_COPYRIGHT_HOLDERS_SUBSTITUTION])])
1012 AC_DEFINE(COPYRIGHT_HOLDERS_FINAL, "_COPYRIGHT_HOLDERS_FINAL", [Copyright holder(s)])
1013 AC_SUBST(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR)
1014 AC_SUBST(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR)
1015 AC_SUBST(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION)
1016 AC_SUBST(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD)
1017 AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
1018 AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
1019 AC_SUBST(COPYRIGHT_HOLDERS, "_COPYRIGHT_HOLDERS")
1020 AC_SUBST(COPYRIGHT_HOLDERS_SUBSTITUTION, "_COPYRIGHT_HOLDERS_SUBSTITUTION")
1021 AC_SUBST(COPYRIGHT_HOLDERS_FINAL, "_COPYRIGHT_HOLDERS_FINAL")
1023 AC_SUBST(RELDFLAGS)
1024 AC_SUBST(HARDENED_CXXFLAGS)
1025 AC_SUBST(HARDENED_CPPFLAGS)
1026 AC_SUBST(HARDENED_LDFLAGS)
1027 AC_SUBST(PIC_FLAGS)
1028 AC_SUBST(PIE_FLAGS)
1029 AC_SUBST(LIBTOOL_APP_LDFLAGS)
1030 AC_SUBST(USE_UPNP)
1031 AC_SUBST(USE_QRCODE)
1032 AC_SUBST(BOOST_LIBS)
1033 AC_SUBST(TESTDEFS)
1034 AC_SUBST(LEVELDB_TARGET_FLAGS)
1035 AC_SUBST(MINIUPNPC_CPPFLAGS)
1036 AC_SUBST(MINIUPNPC_LIBS)
1037 AC_CONFIG_FILES([Makefile src/Makefile share/setup.nsi share/qt/Info.plist src/test/buildenv.py])
1038 AC_CONFIG_FILES([qa/pull-tester/run-bitcoind-for-test.sh],[chmod +x qa/pull-tester/run-bitcoind-for-test.sh])
1039 AC_CONFIG_FILES([qa/pull-tester/tests_config.py],[chmod +x qa/pull-tester/tests_config.py])
1041 dnl boost's m4 checks do something really nasty: they export these vars. As a
1042 dnl result, they leak into secp256k1's configure and crazy things happen.
1043 dnl Until this is fixed upstream and we've synced, we'll just un-export them.
1044 CPPFLAGS_TEMP="$CPPFLAGS"
1045 unset CPPFLAGS
1046 CPPFLAGS="$CPPFLAGS_TEMP"
1048 LDFLAGS_TEMP="$LDFLAGS"
1049 unset LDFLAGS
1050 LDFLAGS="$LDFLAGS_TEMP"
1052 LIBS_TEMP="$LIBS"
1053 unset LIBS
1054 LIBS="$LIBS_TEMP"
1056 PKGCONFIG_PATH_TEMP="$PKG_CONFIG_PATH"
1057 unset PKG_CONFIG_PATH
1058 PKG_CONFIG_PATH="$PKGCONFIG_PATH_TEMP"
1060 PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
1061 unset PKG_CONFIG_LIBDIR
1062 PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
1064 if test x$system_univalue = xno; then
1065   AC_CONFIG_SUBDIRS([src/univalue])
1068 ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no --enable-module-recovery"
1069 AC_CONFIG_SUBDIRS([src/secp256k1])
1071 AC_OUTPUT
1073 dnl Taken from https://wiki.debian.org/RpathIssue
1074 case $host in
1075    *-*-linux-gnu)
1076      AC_MSG_RESULT([Fixing libtool for -rpath problems.])
1077      sed < libtool > libtool-2 \
1078      's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/'
1079      mv libtool-2 libtool
1080      chmod 755 libtool
1081    ;;
1082 esac
1084 dnl Replace the BUILDDIR path with the correct Windows path if compiling on Native Windows
1085 case ${OS} in
1086    *Windows*)
1087      sed  's/BUILDDIR="\/\([[a-z]]\)/BUILDDIR="\1:/'  qa/pull-tester/tests_config.py > qa/pull-tester/tests_config-2.py
1088      mv qa/pull-tester/tests_config-2.py qa/pull-tester/tests_config.py
1089    ;;
1090 esac