1 dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
3 define(_CLIENT_VERSION_MAJOR, 0)
4 define(_CLIENT_VERSION_MINOR, 13)
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/validation.cpp])
13 AC_CONFIG_HEADERS([src/config/bitcoin-config.h])
14 AC_CONFIG_AUX_DIR([build-aux])
15 AC_CONFIG_MACRO_DIR([build-aux/m4])
17 BITCOIN_DAEMON_NAME=bitcoind
18 BITCOIN_GUI_NAME=bitcoin-qt
19 BITCOIN_CLI_NAME=bitcoin-cli
20 BITCOIN_TX_NAME=bitcoin-tx
24 AH_TOP([#ifndef BITCOIN_CONFIG_H])
25 AH_TOP([#define BITCOIN_CONFIG_H])
26 AH_BOTTOM([#endif //BITCOIN_CONFIG_H])
28 dnl faketime breaks configure and is only needed for make. Disable it here.
31 dnl Automake init set-up and checks
32 AM_INIT_AUTOMAKE([no-define subdir-objects foreign])
34 dnl faketime messes with timestamps and causes configure to be re-run.
35 dnl --disable-maintainer-mode can be used to bypass this.
36 AM_MAINTAINER_MODE([enable])
38 dnl make the compilation flags quiet unless V=1 is used
39 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
41 dnl Compiler checks (here before libtool).
42 if test "x${CXXFLAGS+set}" = "xset"; then
43 CXXFLAGS_overridden=yes
45 CXXFLAGS_overridden=no
49 dnl By default, libtool for mingw refuses to link static libs into a dll for
50 dnl fear of mixing pic/non-pic objects, and import/export complications. Since
51 dnl we have those under control, re-enable that functionality.
54 lt_cv_deplibs_check_method="pass_all"
57 dnl Require C++11 compiler (no GNU extensions)
58 AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory])
59 dnl Check if -latomic is required for <std::atomic>
62 dnl Unless the user specified OBJCXX, force it to be the same as CXX. This ensures
63 dnl that we get the same -std flags for both.
64 m4_ifdef([AC_PROG_OBJCXX],[
65 if test "x${OBJCXX+set}" = "x"; then
71 dnl Libtool init checks.
74 dnl Check/return PATH for base programs.
76 AC_PATH_TOOL(RANLIB, ranlib)
77 AC_PATH_TOOL(STRIP, strip)
78 AC_PATH_TOOL(GCOV, gcov)
79 AC_PATH_PROG(LCOV, lcov)
80 dnl Python 3.x is supported from 3.4 on (see https://github.com/bitcoin/bitcoin/issues/7893)
81 AC_PATH_PROGS([PYTHON], [python3.6 python3.5 python3.4 python3 python2.7 python2 python])
82 AC_PATH_PROG(GENHTML, genhtml)
83 AC_PATH_PROG([GIT], [git])
84 AC_PATH_PROG(CCACHE,ccache)
85 AC_PATH_PROG(XGETTEXT,xgettext)
86 AC_PATH_PROG(HEXDUMP,hexdump)
87 AC_PATH_TOOL(READELF, readelf)
88 AC_PATH_TOOL(CPPFILT, c++filt)
89 AC_PATH_TOOL(OBJCOPY, objcopy)
91 AC_ARG_VAR(PYTHONPATH, Augments the default search path for python module files)
94 AC_ARG_ENABLE([wallet],
95 [AS_HELP_STRING([--disable-wallet],
96 [disable wallet (enabled by default)])],
97 [enable_wallet=$enableval],
100 AC_ARG_WITH([miniupnpc],
101 [AS_HELP_STRING([--with-miniupnpc],
102 [enable UPNP (default is yes if libminiupnpc is found)])],
106 AC_ARG_ENABLE([upnp-default],
107 [AS_HELP_STRING([--enable-upnp-default],
108 [if UPNP is enabled, turn it on at startup (default is no)])],
109 [use_upnp_default=$enableval],
110 [use_upnp_default=no])
113 AS_HELP_STRING([--disable-tests],[do not compile tests (default is to compile)]),
114 [use_tests=$enableval],
117 AC_ARG_ENABLE(gui-tests,
118 AS_HELP_STRING([--disable-gui-tests],[do not compile GUI tests (default is to compile if GUI and tests enabled)]),
119 [use_gui_tests=$enableval],
120 [use_gui_tests=$use_tests])
123 AS_HELP_STRING([--disable-bench],[do not compile benchmarks (default is to compile)]),
124 [use_bench=$enableval],
127 AC_ARG_ENABLE([extended-rpc-tests],
128 AS_HELP_STRING([--enable-extended-rpc-tests],[enable expensive RPC tests when using lcov (default no)]),
129 [use_extended_rpc_tests=$enableval],
130 [use_extended_rpc_tests=no])
132 AC_ARG_WITH([qrencode],
133 [AS_HELP_STRING([--with-qrencode],
134 [enable QR code support (default is yes if qt is enabled and libqrencode is found)])],
138 AC_ARG_ENABLE([hardening],
139 [AS_HELP_STRING([--disable-hardening],
140 [do not attempt to harden the resulting executables (default is to harden)])],
141 [use_hardening=$enableval],
144 AC_ARG_ENABLE([reduce-exports],
145 [AS_HELP_STRING([--enable-reduce-exports],
146 [attempt to reduce exported symbols in the resulting executables (default is no)])],
147 [use_reduce_exports=$enableval],
148 [use_reduce_exports=no])
150 AC_ARG_ENABLE([ccache],
151 [AS_HELP_STRING([--disable-ccache],
152 [do not use ccache for building (default is to use if found)])],
153 [use_ccache=$enableval],
156 AC_ARG_ENABLE([lcov],
157 [AS_HELP_STRING([--enable-lcov],
158 [enable lcov testing (default is no)])],
162 AC_ARG_ENABLE([glibc-back-compat],
163 [AS_HELP_STRING([--enable-glibc-back-compat],
164 [enable backwards compatibility with glibc])],
165 [use_glibc_compat=$enableval],
166 [use_glibc_compat=no])
168 AC_ARG_WITH([system-univalue],
169 [AS_HELP_STRING([--with-system-univalue],
170 [Build with system UniValue (default is no)])],
171 [system_univalue=$withval],
175 [AS_HELP_STRING([--disable-zmq],
176 [disable ZMQ notifications])],
177 [use_zmq=$enableval],
180 AC_ARG_WITH([protoc-bindir],[AS_HELP_STRING([--with-protoc-bindir=BIN_DIR],[specify protoc bin path])], [protoc_bin_path=$withval], [])
183 [AS_HELP_STRING([--disable-man],
184 [do not install man pages (default is to install)])],,
186 AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
189 AC_ARG_ENABLE([debug],
190 [AS_HELP_STRING([--enable-debug],
191 [use debug compiler flags and macros (default is no)])],
192 [enable_debug=$enableval],
196 AX_CHECK_COMPILE_FLAG([-Werror],[CXXFLAG_WERROR="-Werror"],[CXXFLAG_WERROR=""])
198 if test "x$enable_debug" = xyes; then
199 CPPFLAGS="$CPPFLAGS -DDEBUG -DDEBUG_LOCKORDER"
200 if test "x$GCC" = xyes; then
201 CFLAGS="$CFLAGS -g3 -O0"
204 if test "x$GXX" = xyes; then
205 CXXFLAGS="$CXXFLAGS -g3 -O0"
209 if test "x$CXXFLAGS_overridden" = "xno"; then
210 AX_CHECK_COMPILE_FLAG([-Wall],[CXXFLAGS="$CXXFLAGS -Wall"],,[[$CXXFLAG_WERROR]])
211 AX_CHECK_COMPILE_FLAG([-Wextra],[CXXFLAGS="$CXXFLAGS -Wextra"],,[[$CXXFLAG_WERROR]])
212 AX_CHECK_COMPILE_FLAG([-Wformat],[CXXFLAGS="$CXXFLAGS -Wformat"],,[[$CXXFLAG_WERROR]])
213 AX_CHECK_COMPILE_FLAG([-Wformat-security],[CXXFLAGS="$CXXFLAGS -Wformat-security"],,[[$CXXFLAG_WERROR]])
214 AX_CHECK_COMPILE_FLAG([-Wshadow],[CXXFLAGS="$CXXFLAGS -Wshadow"],,[[$CXXFLAG_WERROR]])
216 ## Some compilers (gcc) ignore unknown -Wno-* options, but warn about all
217 ## unknown options if any other warning is produced. Test the -Wfoo case, and
218 ## set the -Wno-foo case if it works.
219 AX_CHECK_COMPILE_FLAG([-Wunused-parameter],[CXXFLAGS="$CXXFLAGS -Wno-unused-parameter"],,[[$CXXFLAG_WERROR]])
220 AX_CHECK_COMPILE_FLAG([-Wself-assign],[CXXFLAGS="$CXXFLAGS -Wno-self-assign"],,[[$CXXFLAG_WERROR]])
221 AX_CHECK_COMPILE_FLAG([-Wunused-local-typedef],[CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"],,[[$CXXFLAG_WERROR]])
222 AX_CHECK_COMPILE_FLAG([-Wdeprecated-register],[CXXFLAGS="$CXXFLAGS -Wno-deprecated-register"],,[[$CXXFLAG_WERROR]])
224 CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"
227 [AS_HELP_STRING([--with-utils],
228 [build bitcoin-cli bitcoin-tx (default=yes)])],
229 [build_bitcoin_utils=$withval],
230 [build_bitcoin_utils=yes])
233 [AS_HELP_STRING([--with-libs],
234 [build libraries (default=yes)])],
235 [build_bitcoin_libs=$withval],
236 [build_bitcoin_libs=yes])
238 AC_ARG_WITH([daemon],
239 [AS_HELP_STRING([--with-daemon],
240 [build bitcoind daemon (default=yes)])],
241 [build_bitcoind=$withval],
242 [build_bitcoind=yes])
248 #pkgconfig does more harm than good with MinGW
252 AC_CHECK_LIB([mingwthrd], [main],, AC_MSG_ERROR(lib missing))
253 AC_CHECK_LIB([kernel32], [main],, AC_MSG_ERROR(lib missing))
254 AC_CHECK_LIB([user32], [main],, AC_MSG_ERROR(lib missing))
255 AC_CHECK_LIB([gdi32], [main],, AC_MSG_ERROR(lib missing))
256 AC_CHECK_LIB([comdlg32], [main],, AC_MSG_ERROR(lib missing))
257 AC_CHECK_LIB([winspool], [main],, AC_MSG_ERROR(lib missing))
258 AC_CHECK_LIB([winmm], [main],, AC_MSG_ERROR(lib missing))
259 AC_CHECK_LIB([shell32], [main],, AC_MSG_ERROR(lib missing))
260 AC_CHECK_LIB([comctl32], [main],, AC_MSG_ERROR(lib missing))
261 AC_CHECK_LIB([ole32], [main],, AC_MSG_ERROR(lib missing))
262 AC_CHECK_LIB([oleaut32], [main],, AC_MSG_ERROR(lib missing))
263 AC_CHECK_LIB([uuid], [main],, AC_MSG_ERROR(lib missing))
264 AC_CHECK_LIB([rpcrt4], [main],, AC_MSG_ERROR(lib missing))
265 AC_CHECK_LIB([advapi32], [main],, AC_MSG_ERROR(lib missing))
266 AC_CHECK_LIB([ws2_32], [main],, AC_MSG_ERROR(lib missing))
267 AC_CHECK_LIB([mswsock], [main],, AC_MSG_ERROR(lib missing))
268 AC_CHECK_LIB([shlwapi], [main],, AC_MSG_ERROR(lib missing))
269 AC_CHECK_LIB([iphlpapi], [main],, AC_MSG_ERROR(lib missing))
270 AC_CHECK_LIB([crypt32], [main],, AC_MSG_ERROR(lib missing))
272 # -static is interpreted by libtool, where it has a different meaning.
273 # In libtool-speak, it's -all-static.
274 AX_CHECK_LINK_FLAG([[-static]],[LIBTOOL_APP_LDFLAGS="$LIBTOOL_APP_LDFLAGS -all-static"])
276 AC_PATH_PROG([MAKENSIS], [makensis], none)
277 if test x$MAKENSIS = xnone; then
278 AC_MSG_WARN("makensis not found. Cannot create installer.")
281 AC_PATH_TOOL(WINDRES, windres, none)
282 if test x$WINDRES = xnone; then
283 AC_MSG_ERROR("windres not found")
286 CPPFLAGS="$CPPFLAGS -D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB"
287 LEVELDB_TARGET_FLAGS="-DOS_WINDOWS"
288 if test "x$CXXFLAGS_overridden" = "xno"; then
289 CXXFLAGS="$CXXFLAGS -w"
292 i?86-*) WINDOWS_BITS=32 ;;
293 x86_64-*) WINDOWS_BITS=64 ;;
294 *) AC_MSG_ERROR("Could not determine win32/win64 for installer") ;;
296 AC_SUBST(WINDOWS_BITS)
298 dnl libtool insists upon adding -nostdlib and a list of objects/libs to link against.
299 dnl That breaks our ability to build dll's with static libgcc/libstdc++/libssp. Override
300 dnl its command here, with the predeps/postdeps removed, and -static inserted. Postdeps are
301 dnl also overridden to prevent their insertion later.
302 dnl This should only affect dll's.
303 archive_cmds_CXX="\$CC -shared \$libobjs \$deplibs \$compiler_flags -static -o \$output_objdir/\$soname \${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib"
309 LEVELDB_TARGET_FLAGS="-DOS_MACOSX"
310 if test x$cross_compiling != xyes; then
312 AC_CHECK_PROG([PORT],port, port)
313 if test x$PORT = xport; then
314 dnl add default macports paths
315 CPPFLAGS="$CPPFLAGS -isystem /opt/local/include"
316 LIBS="$LIBS -L/opt/local/lib"
317 if test -d /opt/local/include/db48; then
318 CPPFLAGS="$CPPFLAGS -I/opt/local/include/db48"
319 LIBS="$LIBS -L/opt/local/lib/db48"
323 AC_CHECK_PROG([BREW],brew, brew)
324 if test x$BREW = xbrew; then
325 dnl These Homebrew packages may be keg-only, meaning that they won't be found
326 dnl in expected paths because they may conflict with system files. Ask
327 dnl Homebrew where each one is located, then adjust paths accordingly.
328 dnl It's safe to add these paths even if the functionality is disabled by
329 dnl the user (--without-wallet or --without-gui for example).
331 openssl_prefix=`$BREW --prefix openssl 2>/dev/null`
332 bdb_prefix=`$BREW --prefix berkeley-db4 2>/dev/null`
333 qt5_prefix=`$BREW --prefix qt5 2>/dev/null`
334 if test x$openssl_prefix != x; then
335 PKG_CONFIG_PATH="$openssl_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
336 export PKG_CONFIG_PATH
338 if test x$bdb_prefix != x; then
339 CPPFLAGS="$CPPFLAGS -I$bdb_prefix/include"
340 LIBS="$LIBS -L$bdb_prefix/lib"
342 if test x$qt5_prefix != x; then
343 PKG_CONFIG_PATH="$qt5_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
344 export PKG_CONFIG_PATH
353 AC_PATH_TOOL([INSTALLNAMETOOL], [install_name_tool], install_name_tool)
354 AC_PATH_TOOL([OTOOL], [otool], otool)
355 AC_PATH_PROGS([GENISOIMAGE], [genisoimage mkisofs],genisoimage)
356 AC_PATH_PROGS([RSVG_CONVERT], [rsvg-convert rsvg],rsvg-convert)
357 AC_PATH_PROGS([IMAGEMAGICK_CONVERT], [convert],convert)
358 AC_PATH_PROGS([TIFFCP], [tiffcp],tiffcp)
360 dnl libtool will try to strip the static lib, which is a problem for
361 dnl cross-builds because strip attempts to call a hard-coded ld,
362 dnl which may not exist in the path. Stripping the .a is not
363 dnl necessary, so just disable it.
369 AX_CHECK_LINK_FLAG([[-Wl,-headerpad_max_install_names]], [LDFLAGS="$LDFLAGS -Wl,-headerpad_max_install_names"])
370 CPPFLAGS="$CPPFLAGS -DMAC_OSX"
371 OBJCXXFLAGS="$CXXFLAGS"
375 LEVELDB_TARGET_FLAGS="-DOS_LINUX"
378 LEVELDB_TARGET_FLAGS="-DOS_FREEBSD"
381 LEVELDB_TARGET_FLAGS="-DOS_OPENBSD"
384 OTHER_OS=`echo ${host_os} | awk '{print toupper($0)}'`
385 AC_MSG_WARN([Guessing LevelDB OS as OS_${OTHER_OS}, please check whether this is correct, if not add an entry to configure.ac.])
386 LEVELDB_TARGET_FLAGS="-DOS_${OTHER_OS}"
390 if test x$use_pkgconfig = xyes; then
391 m4_ifndef([PKG_PROG_PKG_CONFIG], [AC_MSG_ERROR(PKG_PROG_PKG_CONFIG macro not found. Please install pkg-config and re-run autogen.sh.)])
392 m4_ifdef([PKG_PROG_PKG_CONFIG], [
394 if test x"$PKG_CONFIG" = "x"; then
395 AC_MSG_ERROR(pkg-config not found.)
400 if test x$use_extended_rpc_tests != xno; then
401 AC_SUBST(EXTENDED_RPC_TESTS, -extended)
404 if test x$use_lcov = xyes; then
405 if test x$LCOV = x; then
406 AC_MSG_ERROR("lcov testing requested but lcov not found")
408 if test x$GCOV = x; then
409 AC_MSG_ERROR("lcov testing requested but gcov not found")
411 if test x$PYTHON = x; then
412 AC_MSG_ERROR("lcov testing requested but python not found")
414 if test x$GENHTML = x; then
415 AC_MSG_ERROR("lcov testing requested but genhtml not found")
417 LCOV="$LCOV --gcov-tool=$GCOV"
418 AX_CHECK_COMPILE_FLAG([--coverage],[CXXFLAGS="$CXXFLAGS --coverage"],
419 [AC_MSG_ERROR("lcov testing requested but --coverage flag does not work")])
422 dnl Check for endianness
425 dnl Check for pthread compile/link requirements
428 # The following macro will add the necessary defines to bitcoin-config.h, but
429 # they also need to be passed down to any subprojects. Pull the results out of
430 # the cache and add them to CPPFLAGS.
432 # detect POSIX or GNU variant of strerror_r
435 if test x$ac_cv_sys_file_offset_bits != x &&
436 test x$ac_cv_sys_file_offset_bits != xno &&
437 test x$ac_cv_sys_file_offset_bits != xunknown; then
438 CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
441 if test x$ac_cv_sys_large_files != x &&
442 test x$ac_cv_sys_large_files != xno &&
443 test x$ac_cv_sys_large_files != xunknown; then
444 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES=$ac_cv_sys_large_files"
447 AX_CHECK_LINK_FLAG([[-Wl,--large-address-aware]], [LDFLAGS="$LDFLAGS -Wl,--large-address-aware"])
449 AX_GCC_FUNC_ATTRIBUTE([visibility])
450 AX_GCC_FUNC_ATTRIBUTE([dllexport])
451 AX_GCC_FUNC_ATTRIBUTE([dllimport])
453 if test x$use_glibc_compat != xno; then
455 #glibc absorbed clock_gettime in 2.17. librt (its previous location) is safe to link
456 #in anyway for back-compat.
457 AC_CHECK_LIB([rt],[clock_gettime],, AC_MSG_ERROR(lib missing))
459 #__fdelt_chk's params and return type have changed from long unsigned int to long int.
460 # See which one is present here.
461 AC_MSG_CHECKING(__fdelt_chk type)
462 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef _FORTIFY_SOURCE
463 #undef _FORTIFY_SOURCE
465 #define _FORTIFY_SOURCE 2
466 #include <sys/select.h>
467 extern "C" long unsigned int __fdelt_warn(long unsigned int);]],[[]])],
468 [ fdelt_type="long unsigned int"],
469 [ fdelt_type="long int"])
470 AC_MSG_RESULT($fdelt_type)
471 AC_DEFINE_UNQUOTED(FDELT_TYPE, $fdelt_type,[parameter and return value type for __fdelt_chk])
473 AC_SEARCH_LIBS([clock_gettime],[rt])
476 if test x$TARGET_OS != xwindows; then
477 # All windows code is PIC, forcing it on just adds useless compile warnings
478 AX_CHECK_COMPILE_FLAG([-fPIC],[PIC_FLAGS="-fPIC"])
481 if test x$use_hardening != xno; then
482 AX_CHECK_COMPILE_FLAG([-Wstack-protector],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wstack-protector"])
483 AX_CHECK_COMPILE_FLAG([-fstack-protector-all],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fstack-protector-all"])
485 AX_CHECK_PREPROC_FLAG([-D_FORTIFY_SOURCE=2],[
486 AX_CHECK_PREPROC_FLAG([-U_FORTIFY_SOURCE],[
487 HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -U_FORTIFY_SOURCE"
489 HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -D_FORTIFY_SOURCE=2"
492 AX_CHECK_LINK_FLAG([[-Wl,--dynamicbase]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--dynamicbase"])
493 AX_CHECK_LINK_FLAG([[-Wl,--nxcompat]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--nxcompat"])
494 AX_CHECK_LINK_FLAG([[-Wl,--high-entropy-va]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--high-entropy-va"])
495 AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"])
496 AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"])
498 if test x$TARGET_OS != xwindows; then
499 AX_CHECK_COMPILE_FLAG([-fPIE],[PIE_FLAGS="-fPIE"])
500 AX_CHECK_LINK_FLAG([[-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"])
505 AC_CHECK_LIB([ssp], [main],, AC_MSG_ERROR(lib missing))
510 dnl this flag screws up non-darwin gcc even when the check fails. special-case it.
511 if test x$TARGET_OS = xdarwin; then
512 AX_CHECK_LINK_FLAG([[-Wl,-dead_strip]], [LDFLAGS="$LDFLAGS -Wl,-dead_strip"])
515 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])
517 AC_CHECK_DECLS([strnlen])
519 # Check for daemon(3), unrelated to --with-daemon (although used by it)
520 AC_CHECK_DECLS([daemon])
522 AC_CHECK_DECLS([le16toh, le32toh, le64toh, htole16, htole32, htole64, be16toh, be32toh, be64toh, htobe16, htobe32, htobe64],,,
525 #elif HAVE_SYS_ENDIAN_H
526 #include <sys/endian.h>
529 AC_CHECK_DECLS([bswap_16, bswap_32, bswap_64],,,
531 #include <byteswap.h>
534 dnl Check for MSG_NOSIGNAL
535 AC_MSG_CHECKING(for MSG_NOSIGNAL)
536 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
537 [[ int f = MSG_NOSIGNAL; ]])],
538 [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MSG_NOSIGNAL, 1,[Define this symbol if you have MSG_NOSIGNAL]) ],
542 AC_MSG_CHECKING([for visibility attribute])
543 AC_LINK_IFELSE([AC_LANG_SOURCE([
544 int foo_def( void ) __attribute__((visibility("default")));
548 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE,1,[Define if the visibility attribute is supported.])
553 if test x$use_reduce_exports = xyes; then
554 AC_MSG_ERROR([Cannot find a working visibility attribute. Use --disable-reduce-exports.])
559 if test x$use_reduce_exports = xyes; then
560 AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],[RE_CXXFLAGS="-fvisibility=hidden"],
561 [AC_MSG_ERROR([Cannot set default symbol visibility. Use --disable-reduce-exports.])])
567 AM_CONDITIONAL([EMBEDDED_LEVELDB],[true])
568 AC_SUBST(LEVELDB_CPPFLAGS)
572 if test x$enable_wallet != xno; then
573 dnl Check for libdb_cxx only if wallet enabled
577 dnl Check for libminiupnpc (optional)
578 if test x$use_upnp != xno; then
580 [miniupnpc/miniwget.h miniupnpc/miniupnpc.h miniupnpc/upnpcommands.h miniupnpc/upnperrors.h],
581 [AC_CHECK_LIB([miniupnpc], [main],[MINIUPNPC_LIBS=-lminiupnpc], [have_miniupnpc=no])],
588 dnl sets $bitcoin_enable_qt, $bitcoin_enable_qt_test, $bitcoin_enable_qt_dbus
589 BITCOIN_QT_CONFIGURE([$use_pkgconfig], [qt5])
591 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests$use_bench = xnonononono; then
597 if test x$use_boost = xyes; then
599 dnl Minimum required Boost version
600 define(MINIMUM_REQUIRED_BOOST, 1.47.0)
602 dnl Check for boost libs
603 AX_BOOST_BASE([MINIMUM_REQUIRED_BOOST])
606 AX_BOOST_PROGRAM_OPTIONS
611 if test x$use_reduce_exports = xyes; then
612 AC_MSG_CHECKING([for working boost reduced exports])
613 TEMP_CPPFLAGS="$CPPFLAGS"
614 CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
615 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
616 @%:@include <boost/version.hpp>
618 #if BOOST_VERSION >= 104900
619 // Everything is okay
621 # error Boost version is too old
626 AC_MSG_ERROR([boost versions < 1.49 are known to be broken with reduced exports. Use --disable-reduce-exports.])
628 CPPFLAGS="$TEMP_CPPFLAGS"
632 if test x$use_reduce_exports = xyes; then
633 CXXFLAGS="$CXXFLAGS $RE_CXXFLAGS"
634 AX_CHECK_LINK_FLAG([[-Wl,--exclude-libs,ALL]], [RELDFLAGS="-Wl,--exclude-libs,ALL"])
637 if test x$use_tests = xyes; then
639 if test x$HEXDUMP = x; then
640 AC_MSG_ERROR(hexdump is required for tests)
644 if test x$use_boost = xyes; then
646 AX_BOOST_UNIT_TEST_FRAMEWORK
648 dnl Determine if -DBOOST_TEST_DYN_LINK is needed
649 AC_MSG_CHECKING([for dynamic linked boost test])
651 LIBS="$LIBS $BOOST_LDFLAGS $BOOST_UNIT_TEST_FRAMEWORK_LIB"
652 TEMP_CPPFLAGS="$CPPFLAGS"
653 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
654 AC_LINK_IFELSE([AC_LANG_SOURCE([
655 #define BOOST_TEST_DYN_LINK
656 #define BOOST_TEST_MAIN
657 #include <boost/test/unit_test.hpp>
661 [TESTDEFS="$TESTDEFS -DBOOST_TEST_DYN_LINK"],
664 CPPFLAGS="$TEMP_CPPFLAGS"
669 if test x$use_boost = xyes; then
671 BOOST_LIBS="$BOOST_LDFLAGS $BOOST_SYSTEM_LIB $BOOST_FILESYSTEM_LIB $BOOST_PROGRAM_OPTIONS_LIB $BOOST_THREAD_LIB $BOOST_CHRONO_LIB"
674 dnl If boost (prior to 1.57) was built without c++11, it emulated scoped enums
675 dnl using c++98 constructs. Unfortunately, this implementation detail leaked into
676 dnl the abi. This was fixed in 1.57.
678 dnl When building against that installed version using c++11, the headers pick up
679 dnl on the native c++11 scoped enum support and enable it, however it will fail to
680 dnl link. This can be worked around by disabling c++11 scoped enums if linking will
682 dnl BOOST_NO_SCOPED_ENUMS was changed to BOOST_NO_CXX11_SCOPED_ENUMS in 1.51.
685 LIBS="$BOOST_LIBS $LIBS"
686 TEMP_CPPFLAGS="$CPPFLAGS"
687 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
688 AC_MSG_CHECKING([for mismatched boost c++11 scoped enums])
689 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
690 #include "boost/config.hpp"
691 #include "boost/version.hpp"
692 #if !defined(BOOST_NO_SCOPED_ENUMS) && !defined(BOOST_NO_CXX11_SCOPED_ENUMS) && BOOST_VERSION < 105700
693 #define BOOST_NO_SCOPED_ENUMS
694 #define BOOST_NO_CXX11_SCOPED_ENUMS
697 #include "boost/filesystem.hpp"
700 boost::filesystem::copy_file("foo", "bar");
705 [AC_MSG_RESULT(mismatched); BOOST_CPPFLAGS="$BOOST_CPPFLAGS -DBOOST_NO_SCOPED_ENUMS -DBOOST_NO_CXX11_SCOPED_ENUMS"], [AC_MSG_RESULT(ok)])
707 CPPFLAGS="$TEMP_CPPFLAGS"
709 dnl Boost >= 1.50 uses sleep_for rather than the now-deprecated sleep, however
710 dnl it was broken from 1.50 to 1.52 when backed by nanosleep. Use sleep_for if
711 dnl a working version is available, else fall back to sleep. sleep was removed
713 dnl If neither is available, abort.
715 LIBS="$BOOST_LIBS $LIBS"
716 TEMP_CPPFLAGS="$CPPFLAGS"
717 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
718 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
719 #include <boost/thread/thread.hpp>
720 #include <boost/version.hpp>
722 #if BOOST_VERSION >= 105000 && (!defined(BOOST_HAS_NANOSLEEP) || BOOST_VERSION >= 105200)
723 boost::this_thread::sleep_for(boost::chrono::milliseconds(0));
729 AC_DEFINE(HAVE_WORKING_BOOST_SLEEP_FOR, 1, [Define this symbol if boost sleep_for works])],
732 CPPFLAGS="$TEMP_CPPFLAGS"
734 if test x$boost_sleep != xyes; then
736 LIBS="$BOOST_LIBS $LIBS"
737 TEMP_CPPFLAGS="$CPPFLAGS"
738 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
739 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
740 #include <boost/version.hpp>
741 #include <boost/thread.hpp>
742 #include <boost/date_time/posix_time/posix_time_types.hpp>
744 #if BOOST_VERSION <= 105600
745 boost::this_thread::sleep(boost::posix_time::milliseconds(0));
750 [boost_sleep=yes; AC_DEFINE(HAVE_WORKING_BOOST_SLEEP, 1, [Define this symbol if boost sleep works])],
753 CPPFLAGS="$TEMP_CPPFLAGS"
756 if test x$boost_sleep != xyes; then
757 AC_MSG_ERROR(No working boost sleep implementation found.)
762 if test x$use_pkgconfig = xyes; then
767 PKG_CHECK_MODULES([SSL], [libssl],, [AC_MSG_ERROR(openssl not found.)])
768 PKG_CHECK_MODULES([CRYPTO], [libcrypto],,[AC_MSG_ERROR(libcrypto not found.)])
769 BITCOIN_QT_CHECK([PKG_CHECK_MODULES([PROTOBUF], [protobuf], [have_protobuf=yes], [BITCOIN_QT_FAIL(libprotobuf not found)])])
770 if test x$use_qr != xno; then
771 BITCOIN_QT_CHECK([PKG_CHECK_MODULES([QR], [libqrencode], [have_qrencode=yes], [have_qrencode=no])])
773 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
774 PKG_CHECK_MODULES([EVENT], [libevent],, [AC_MSG_ERROR(libevent not found.)])
775 if test x$TARGET_OS != xwindows; then
776 PKG_CHECK_MODULES([EVENT_PTHREADS], [libevent_pthreads],, [AC_MSG_ERROR(libevent_pthreads not found.)])
780 if test "x$use_zmq" = "xyes"; then
781 PKG_CHECK_MODULES([ZMQ],[libzmq >= 4],
782 [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
783 [AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
784 AC_MSG_WARN([libzmq version 4.x or greater not found, disabling])
787 AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
792 AC_CHECK_HEADER([openssl/crypto.h],,AC_MSG_ERROR(libcrypto headers missing))
793 AC_CHECK_LIB([crypto], [main],CRYPTO_LIBS=-lcrypto, AC_MSG_ERROR(libcrypto missing))
795 AC_CHECK_HEADER([openssl/ssl.h],, AC_MSG_ERROR(libssl headers missing),)
796 AC_CHECK_LIB([ssl], [main],SSL_LIBS=-lssl, AC_MSG_ERROR(libssl missing))
798 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
799 AC_CHECK_HEADER([event2/event.h],, AC_MSG_ERROR(libevent headers missing),)
800 AC_CHECK_LIB([event],[main],EVENT_LIBS=-levent,AC_MSG_ERROR(libevent missing))
801 if test x$TARGET_OS != xwindows; then
802 AC_CHECK_LIB([event_pthreads],[main],EVENT_PTHREADS_LIBS=-levent_pthreads,AC_MSG_ERROR(libevent_pthreads missing))
806 if test "x$use_zmq" = "xyes"; then
807 AC_CHECK_HEADER([zmq.h],
808 [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
809 [AC_MSG_WARN([zmq.h not found, disabling zmq support])
811 AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
812 AC_CHECK_LIB([zmq],[zmq_ctx_shutdown],ZMQ_LIBS=-lzmq,
813 [AC_MSG_WARN([libzmq >= 4.0 not found, disabling zmq support])
815 AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
817 AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
820 if test "x$use_zmq" = "xyes"; then
821 dnl Assume libzmq was built for static linking
824 ZMQ_CFLAGS="$ZMQ_CFLAGS -DZMQ_STATIC"
829 BITCOIN_QT_CHECK(AC_CHECK_LIB([protobuf] ,[main],[PROTOBUF_LIBS=-lprotobuf], BITCOIN_QT_FAIL(libprotobuf not found)))
830 if test x$use_qr != xno; then
831 BITCOIN_QT_CHECK([AC_CHECK_LIB([qrencode], [main],[QR_LIBS=-lqrencode], [have_qrencode=no])])
832 BITCOIN_QT_CHECK([AC_CHECK_HEADER([qrencode.h],, have_qrencode=no)])
838 need_bundled_univalue=yes
840 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests$use_bench = xnonononono; then
841 need_bundled_univalue=no
844 if test x$system_univalue != xno ; then
846 if test x$use_pkgconfig = xyes; then
851 PKG_CHECK_MODULES([UNIVALUE],[libunivalue],[found_univalue=yes],[true])
855 AC_CHECK_HEADER([univalue.h],[
856 AC_CHECK_LIB([univalue], [main],[
857 UNIVALUE_LIBS=-lunivalue
863 if test x$found_univalue = xyes ; then
865 need_bundled_univalue=no
866 elif test x$system_univalue = xyes ; then
867 AC_MSG_ERROR([univalue not found])
873 if test x$need_bundled_univalue = xyes ; then
874 UNIVALUE_CFLAGS='-I$(srcdir)/univalue/include'
875 UNIVALUE_LIBS='univalue/libunivalue.la'
880 AM_CONDITIONAL([EMBEDDED_UNIVALUE],[test x$need_bundled_univalue = xyes])
881 AC_SUBST(UNIVALUE_CFLAGS)
882 AC_SUBST(UNIVALUE_LIBS)
884 BITCOIN_QT_PATH_PROGS([PROTOC], [protoc],$protoc_bin_path)
886 AC_MSG_CHECKING([whether to build bitcoind])
887 AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
888 AC_MSG_RESULT($build_bitcoind)
890 AC_MSG_CHECKING([whether to build utils (bitcoin-cli bitcoin-tx)])
891 AM_CONDITIONAL([BUILD_BITCOIN_UTILS], [test x$build_bitcoin_utils = xyes])
892 AC_MSG_RESULT($build_bitcoin_utils)
894 AC_MSG_CHECKING([whether to build libraries])
895 AM_CONDITIONAL([BUILD_BITCOIN_LIBS], [test x$build_bitcoin_libs = xyes])
896 if test x$build_bitcoin_libs = xyes; then
897 AC_DEFINE(HAVE_CONSENSUS_LIB, 1, [Define this symbol if the consensus lib has been built])
898 AC_CONFIG_FILES([libbitcoinconsensus.pc:libbitcoinconsensus.pc.in])
900 AC_MSG_RESULT($build_bitcoin_libs)
904 if test "x$use_ccache" != "xno"; then
905 AC_MSG_CHECKING(if ccache should be used)
906 if test x$CCACHE = x; then
907 if test "x$use_ccache" = "xyes"; then
908 AC_MSG_ERROR([ccache not found.]);
914 CC="$ac_cv_path_CCACHE $CC"
915 CXX="$ac_cv_path_CCACHE $CXX"
917 AC_MSG_RESULT($use_ccache)
919 if test "x$use_ccache" = "xyes"; then
920 AX_CHECK_PREPROC_FLAG([-Qunused-arguments],[CPPFLAGS="-Qunused-arguments $CPPFLAGS"])
924 AC_MSG_CHECKING([if wallet should be enabled])
925 if test x$enable_wallet != xno; then
927 AC_DEFINE_UNQUOTED([ENABLE_WALLET],[1],[Define to 1 to enable wallet functions])
933 dnl enable upnp support
934 AC_MSG_CHECKING([whether to build with support for UPnP])
935 if test x$have_miniupnpc = xno; then
936 if test x$use_upnp = xyes; then
937 AC_MSG_ERROR("UPnP requested but cannot be built. use --without-miniupnpc")
941 if test x$use_upnp != xno; then
943 AC_MSG_CHECKING([whether to build with UPnP enabled by default])
946 if test x$use_upnp_default != xno; then
950 AC_MSG_RESULT($use_upnp_default)
951 AC_DEFINE_UNQUOTED([USE_UPNP],[$upnp_setting],[UPnP support not compiled if undefined, otherwise value (0 or 1) determines default state])
952 if test x$TARGET_OS = xwindows; then
953 MINIUPNPC_CPPFLAGS="-DSTATICLIB -DMINIUPNP_STATICLIB"
960 dnl these are only used when qt is enabled
962 if test x$bitcoin_enable_qt != xno; then
963 dnl enable dbus support
964 AC_MSG_CHECKING([whether to build GUI with support for D-Bus])
965 if test x$bitcoin_enable_qt_dbus != xno; then
966 AC_DEFINE([USE_DBUS],[1],[Define if dbus support should be compiled in])
968 AC_MSG_RESULT($bitcoin_enable_qt_dbus)
970 dnl enable qr support
971 AC_MSG_CHECKING([whether to build GUI with support for QR codes])
972 if test x$have_qrencode = xno; then
973 if test x$use_qr = xyes; then
974 AC_MSG_ERROR("QR support requested but cannot be built. use --without-qrencode")
978 if test x$use_qr != xno; then
980 AC_DEFINE([USE_QRCODE],[1],[Define if QR support should be compiled in])
987 if test x$XGETTEXT = x; then
988 AC_MSG_WARN("xgettext is required to update qt translations")
991 AC_MSG_CHECKING([whether to build test_bitcoin-qt])
992 if test x$use_gui_tests$bitcoin_enable_qt_test = xyesyes; then
1000 AM_CONDITIONAL([ENABLE_ZMQ], [test "x$use_zmq" = "xyes"])
1002 AC_MSG_CHECKING([whether to build test_bitcoin])
1003 if test x$use_tests = xyes; then
1004 AC_MSG_RESULT([yes])
1011 AC_MSG_CHECKING([whether to reduce exports])
1012 if test x$use_reduce_exports = xyes; then
1013 AC_MSG_RESULT([yes])
1018 if test x$build_bitcoin_utils$build_bitcoin_libs$build_bitcoind$bitcoin_enable_qt$use_bench$use_tests = xnononononono; then
1019 AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon --with-gui --enable-bench or --enable-tests])
1022 AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin])
1023 AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin])
1024 AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows])
1025 AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet = xyes])
1026 AM_CONDITIONAL([ENABLE_TESTS],[test x$BUILD_TEST = xyes])
1027 AM_CONDITIONAL([ENABLE_QT],[test x$bitcoin_enable_qt = xyes])
1028 AM_CONDITIONAL([ENABLE_QT_TESTS],[test x$BUILD_TEST_QT = xyes])
1029 AM_CONDITIONAL([ENABLE_BENCH],[test x$use_bench = xyes])
1030 AM_CONDITIONAL([USE_QRCODE], [test x$use_qr = xyes])
1031 AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
1032 AM_CONDITIONAL([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes])
1033 AM_CONDITIONAL([HARDEN],[test x$use_hardening = xyes])
1035 AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version])
1036 AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor version])
1037 AC_DEFINE(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION, [Build revision])
1038 AC_DEFINE(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD, [Version Build])
1039 AC_DEFINE(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE, [Version is release])
1040 AC_DEFINE(COPYRIGHT_YEAR, _COPYRIGHT_YEAR, [Copyright year])
1041 AC_DEFINE(COPYRIGHT_HOLDERS, "_COPYRIGHT_HOLDERS", [Copyright holder(s) before %s replacement])
1042 AC_DEFINE(COPYRIGHT_HOLDERS_SUBSTITUTION, "_COPYRIGHT_HOLDERS_SUBSTITUTION", [Replacement for %s in copyright holders string])
1043 define(_COPYRIGHT_HOLDERS_FINAL, [patsubst(_COPYRIGHT_HOLDERS, [%s], [_COPYRIGHT_HOLDERS_SUBSTITUTION])])
1044 AC_DEFINE(COPYRIGHT_HOLDERS_FINAL, "_COPYRIGHT_HOLDERS_FINAL", [Copyright holder(s)])
1045 AC_SUBST(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR)
1046 AC_SUBST(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR)
1047 AC_SUBST(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION)
1048 AC_SUBST(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD)
1049 AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
1050 AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
1051 AC_SUBST(COPYRIGHT_HOLDERS, "_COPYRIGHT_HOLDERS")
1052 AC_SUBST(COPYRIGHT_HOLDERS_SUBSTITUTION, "_COPYRIGHT_HOLDERS_SUBSTITUTION")
1053 AC_SUBST(COPYRIGHT_HOLDERS_FINAL, "_COPYRIGHT_HOLDERS_FINAL")
1054 AC_SUBST(BITCOIN_DAEMON_NAME)
1055 AC_SUBST(BITCOIN_GUI_NAME)
1056 AC_SUBST(BITCOIN_CLI_NAME)
1057 AC_SUBST(BITCOIN_TX_NAME)
1060 AC_SUBST(HARDENED_CXXFLAGS)
1061 AC_SUBST(HARDENED_CPPFLAGS)
1062 AC_SUBST(HARDENED_LDFLAGS)
1065 AC_SUBST(LIBTOOL_APP_LDFLAGS)
1067 AC_SUBST(USE_QRCODE)
1068 AC_SUBST(BOOST_LIBS)
1070 AC_SUBST(LEVELDB_TARGET_FLAGS)
1071 AC_SUBST(MINIUPNPC_CPPFLAGS)
1072 AC_SUBST(MINIUPNPC_LIBS)
1073 AC_SUBST(CRYPTO_LIBS)
1075 AC_SUBST(EVENT_LIBS)
1076 AC_SUBST(EVENT_PTHREADS_LIBS)
1078 AC_SUBST(PROTOBUF_LIBS)
1080 AC_CONFIG_FILES([Makefile src/Makefile doc/man/Makefile share/setup.nsi share/qt/Info.plist src/test/buildenv.py])
1081 AC_CONFIG_FILES([qa/pull-tester/run-bitcoind-for-test.sh],[chmod +x qa/pull-tester/run-bitcoind-for-test.sh])
1082 AC_CONFIG_FILES([qa/pull-tester/tests_config.py],[chmod +x qa/pull-tester/tests_config.py])
1083 AC_CONFIG_FILES([contrib/devtools/split-debug.sh],[chmod +x contrib/devtools/split-debug.sh])
1084 AC_CONFIG_LINKS([qa/pull-tester/rpc-tests.py:qa/pull-tester/rpc-tests.py])
1086 dnl boost's m4 checks do something really nasty: they export these vars. As a
1087 dnl result, they leak into secp256k1's configure and crazy things happen.
1088 dnl Until this is fixed upstream and we've synced, we'll just un-export them.
1089 CPPFLAGS_TEMP="$CPPFLAGS"
1091 CPPFLAGS="$CPPFLAGS_TEMP"
1093 LDFLAGS_TEMP="$LDFLAGS"
1095 LDFLAGS="$LDFLAGS_TEMP"
1101 PKGCONFIG_PATH_TEMP="$PKG_CONFIG_PATH"
1102 unset PKG_CONFIG_PATH
1103 PKG_CONFIG_PATH="$PKGCONFIG_PATH_TEMP"
1105 PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
1106 unset PKG_CONFIG_LIBDIR
1107 PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
1109 if test x$need_bundled_univalue = xyes; then
1110 AC_CONFIG_SUBDIRS([src/univalue])
1113 ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no --enable-module-recovery"
1114 AC_CONFIG_SUBDIRS([src/secp256k1])
1118 dnl Taken from https://wiki.debian.org/RpathIssue
1121 AC_MSG_RESULT([Fixing libtool for -rpath problems.])
1122 sed < libtool > libtool-2 \
1123 's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/'
1124 mv libtool-2 libtool
1129 dnl Replace the BUILDDIR path with the correct Windows path if compiling on Native Windows
1132 sed 's/BUILDDIR="\/\([[a-z]]\)/BUILDDIR="\1:/' qa/pull-tester/tests_config.py > qa/pull-tester/tests_config-2.py
1133 mv qa/pull-tester/tests_config-2.py qa/pull-tester/tests_config.py
1138 echo "Options used to compile and link:"
1139 echo " with wallet = $enable_wallet"
1140 echo " with gui / qt = $bitcoin_enable_qt"
1141 if test x$bitcoin_enable_qt != xno; then
1142 echo " qt version = $bitcoin_qt_got_major_vers"
1143 echo " with qr = $use_qr"
1145 echo " with zmq = $use_zmq"
1146 echo " with test = $use_tests"
1147 echo " with bench = $use_bench"
1148 echo " with upnp = $use_upnp"
1149 echo " debug enabled = $enable_debug"
1151 echo " target os = $TARGET_OS"
1152 echo " build os = $BUILD_OS"
1155 echo " CFLAGS = $CFLAGS"
1156 echo " CPPFLAGS = $CPPFLAGS"
1158 echo " CXXFLAGS = $CXXFLAGS"
1159 echo " LDFLAGS = $LDFLAGS"