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