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, 2017)
9 define(_COPYRIGHT_HOLDERS,[The %s developers])
10 define(_COPYRIGHT_HOLDERS_SUBSTITUTION,[[Bitcoin Core]])
11 AC_INIT([Bitcoin Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[https://github.com/bitcoin/bitcoin/issues],[bitcoin],[https://bitcoincore.org/])
12 AC_CONFIG_SRCDIR([src/validation.cpp])
13 AC_CONFIG_HEADERS([src/config/bitcoin-config.h])
14 AC_CONFIG_AUX_DIR([build-aux])
15 AC_CONFIG_MACRO_DIR([build-aux/m4])
17 BITCOIN_DAEMON_NAME=bitcoind
18 BITCOIN_GUI_NAME=bitcoin-qt
19 BITCOIN_CLI_NAME=bitcoin-cli
20 BITCOIN_TX_NAME=bitcoin-tx
24 AH_TOP([#ifndef BITCOIN_CONFIG_H])
25 AH_TOP([#define BITCOIN_CONFIG_H])
26 AH_BOTTOM([#endif //BITCOIN_CONFIG_H])
28 dnl faketime breaks configure and is only needed for make. Disable it here.
31 dnl Automake init set-up and checks
32 AM_INIT_AUTOMAKE([no-define subdir-objects foreign])
34 dnl faketime messes with timestamps and causes configure to be re-run.
35 dnl --disable-maintainer-mode can be used to bypass this.
36 AM_MAINTAINER_MODE([enable])
38 dnl make the compilation flags quiet unless V=1 is used
39 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
41 dnl Compiler checks (here before libtool).
42 if test "x${CXXFLAGS+set}" = "xset"; then
43 CXXFLAGS_overridden=yes
45 CXXFLAGS_overridden=no
49 dnl By default, libtool for mingw refuses to link static libs into a dll for
50 dnl fear of mixing pic/non-pic objects, and import/export complications. Since
51 dnl we have those under control, re-enable that functionality.
54 lt_cv_deplibs_check_method="pass_all"
57 dnl Require C++11 compiler (no GNU extensions)
58 AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory])
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]])
215 ## Some compilers (gcc) ignore unknown -Wno-* options, but warn about all
216 ## unknown options if any other warning is produced. Test the -Wfoo case, and
217 ## set the -Wno-foo case if it works.
218 AX_CHECK_COMPILE_FLAG([-Wunused-parameter],[CXXFLAGS="$CXXFLAGS -Wno-unused-parameter"],,[[$CXXFLAG_WERROR]])
219 AX_CHECK_COMPILE_FLAG([-Wself-assign],[CXXFLAGS="$CXXFLAGS -Wno-self-assign"],,[[$CXXFLAG_WERROR]])
220 AX_CHECK_COMPILE_FLAG([-Wunused-local-typedef],[CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"],,[[$CXXFLAG_WERROR]])
221 AX_CHECK_COMPILE_FLAG([-Wdeprecated-register],[CXXFLAGS="$CXXFLAGS -Wno-deprecated-register"],,[[$CXXFLAG_WERROR]])
223 CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"
226 [AS_HELP_STRING([--with-utils],
227 [build bitcoin-cli bitcoin-tx (default=yes)])],
228 [build_bitcoin_utils=$withval],
229 [build_bitcoin_utils=yes])
232 [AS_HELP_STRING([--with-libs],
233 [build libraries (default=yes)])],
234 [build_bitcoin_libs=$withval],
235 [build_bitcoin_libs=yes])
237 AC_ARG_WITH([daemon],
238 [AS_HELP_STRING([--with-daemon],
239 [build bitcoind daemon (default=yes)])],
240 [build_bitcoind=$withval],
241 [build_bitcoind=yes])
247 #pkgconfig does more harm than good with MinGW
251 AC_CHECK_LIB([mingwthrd], [main],, AC_MSG_ERROR(lib missing))
252 AC_CHECK_LIB([kernel32], [main],, AC_MSG_ERROR(lib missing))
253 AC_CHECK_LIB([user32], [main],, AC_MSG_ERROR(lib missing))
254 AC_CHECK_LIB([gdi32], [main],, AC_MSG_ERROR(lib missing))
255 AC_CHECK_LIB([comdlg32], [main],, AC_MSG_ERROR(lib missing))
256 AC_CHECK_LIB([winspool], [main],, AC_MSG_ERROR(lib missing))
257 AC_CHECK_LIB([winmm], [main],, AC_MSG_ERROR(lib missing))
258 AC_CHECK_LIB([shell32], [main],, AC_MSG_ERROR(lib missing))
259 AC_CHECK_LIB([comctl32], [main],, AC_MSG_ERROR(lib missing))
260 AC_CHECK_LIB([ole32], [main],, AC_MSG_ERROR(lib missing))
261 AC_CHECK_LIB([oleaut32], [main],, AC_MSG_ERROR(lib missing))
262 AC_CHECK_LIB([uuid], [main],, AC_MSG_ERROR(lib missing))
263 AC_CHECK_LIB([rpcrt4], [main],, AC_MSG_ERROR(lib missing))
264 AC_CHECK_LIB([advapi32], [main],, AC_MSG_ERROR(lib missing))
265 AC_CHECK_LIB([ws2_32], [main],, AC_MSG_ERROR(lib missing))
266 AC_CHECK_LIB([mswsock], [main],, AC_MSG_ERROR(lib missing))
267 AC_CHECK_LIB([shlwapi], [main],, AC_MSG_ERROR(lib missing))
268 AC_CHECK_LIB([iphlpapi], [main],, AC_MSG_ERROR(lib missing))
269 AC_CHECK_LIB([crypt32], [main],, AC_MSG_ERROR(lib missing))
271 # -static is interpreted by libtool, where it has a different meaning.
272 # In libtool-speak, it's -all-static.
273 AX_CHECK_LINK_FLAG([[-static]],[LIBTOOL_APP_LDFLAGS="$LIBTOOL_APP_LDFLAGS -all-static"])
275 AC_PATH_PROG([MAKENSIS], [makensis], none)
276 if test x$MAKENSIS = xnone; then
277 AC_MSG_WARN("makensis not found. Cannot create installer.")
280 AC_PATH_TOOL(WINDRES, windres, none)
281 if test x$WINDRES = xnone; then
282 AC_MSG_ERROR("windres not found")
285 CPPFLAGS="$CPPFLAGS -D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB"
286 LEVELDB_TARGET_FLAGS="-DOS_WINDOWS"
287 if test "x$CXXFLAGS_overridden" = "xno"; then
288 CXXFLAGS="$CXXFLAGS -w"
291 i?86-*) WINDOWS_BITS=32 ;;
292 x86_64-*) WINDOWS_BITS=64 ;;
293 *) AC_MSG_ERROR("Could not determine win32/win64 for installer") ;;
295 AC_SUBST(WINDOWS_BITS)
297 dnl libtool insists upon adding -nostdlib and a list of objects/libs to link against.
298 dnl That breaks our ability to build dll's with static libgcc/libstdc++/libssp. Override
299 dnl its command here, with the predeps/postdeps removed, and -static inserted. Postdeps are
300 dnl also overridden to prevent their insertion later.
301 dnl This should only affect dll's.
302 archive_cmds_CXX="\$CC -shared \$libobjs \$deplibs \$compiler_flags -static -o \$output_objdir/\$soname \${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib"
308 LEVELDB_TARGET_FLAGS="-DOS_MACOSX"
309 if test x$cross_compiling != xyes; then
311 AC_CHECK_PROG([PORT],port, port)
312 if test x$PORT = xport; then
313 dnl add default macports paths
314 CPPFLAGS="$CPPFLAGS -isystem /opt/local/include"
315 LIBS="$LIBS -L/opt/local/lib"
316 if test -d /opt/local/include/db48; then
317 CPPFLAGS="$CPPFLAGS -I/opt/local/include/db48"
318 LIBS="$LIBS -L/opt/local/lib/db48"
322 AC_PATH_PROGS([RSVG_CONVERT], [rsvg-convert rsvg],rsvg-convert)
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_LINK_FLAG([[--coverage]], [LDFLAGS="$LDFLAGS --coverage"],
419 [AC_MSG_ERROR("lcov testing requested but --coverage linker flag does not work")])
420 AX_CHECK_COMPILE_FLAG([--coverage],[CXXFLAGS="$CXXFLAGS --coverage"],
421 [AC_MSG_ERROR("lcov testing requested but --coverage flag does not work")])
424 dnl Check for endianness
427 dnl Check for pthread compile/link requirements
430 # The following macro will add the necessary defines to bitcoin-config.h, but
431 # they also need to be passed down to any subprojects. Pull the results out of
432 # the cache and add them to CPPFLAGS.
434 # detect POSIX or GNU variant of strerror_r
437 if test x$ac_cv_sys_file_offset_bits != x &&
438 test x$ac_cv_sys_file_offset_bits != xno &&
439 test x$ac_cv_sys_file_offset_bits != xunknown; then
440 CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
443 if test x$ac_cv_sys_large_files != x &&
444 test x$ac_cv_sys_large_files != xno &&
445 test x$ac_cv_sys_large_files != xunknown; then
446 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES=$ac_cv_sys_large_files"
449 AX_CHECK_LINK_FLAG([[-Wl,--large-address-aware]], [LDFLAGS="$LDFLAGS -Wl,--large-address-aware"])
451 AX_GCC_FUNC_ATTRIBUTE([visibility])
452 AX_GCC_FUNC_ATTRIBUTE([dllexport])
453 AX_GCC_FUNC_ATTRIBUTE([dllimport])
455 if test x$use_glibc_compat != xno; then
457 #glibc absorbed clock_gettime in 2.17. librt (its previous location) is safe to link
458 #in anyway for back-compat.
459 AC_CHECK_LIB([rt],[clock_gettime],, AC_MSG_ERROR(lib missing))
461 #__fdelt_chk's params and return type have changed from long unsigned int to long int.
462 # See which one is present here.
463 AC_MSG_CHECKING(__fdelt_chk type)
464 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef _FORTIFY_SOURCE
465 #undef _FORTIFY_SOURCE
467 #define _FORTIFY_SOURCE 2
468 #include <sys/select.h>
469 extern "C" long unsigned int __fdelt_warn(long unsigned int);]],[[]])],
470 [ fdelt_type="long unsigned int"],
471 [ fdelt_type="long int"])
472 AC_MSG_RESULT($fdelt_type)
473 AC_DEFINE_UNQUOTED(FDELT_TYPE, $fdelt_type,[parameter and return value type for __fdelt_chk])
475 AC_SEARCH_LIBS([clock_gettime],[rt])
478 if test x$TARGET_OS != xwindows; then
479 # All windows code is PIC, forcing it on just adds useless compile warnings
480 AX_CHECK_COMPILE_FLAG([-fPIC],[PIC_FLAGS="-fPIC"])
483 if test x$use_hardening != xno; then
484 AX_CHECK_COMPILE_FLAG([-Wstack-protector],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wstack-protector"])
485 AX_CHECK_COMPILE_FLAG([-fstack-protector-all],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fstack-protector-all"])
487 AX_CHECK_PREPROC_FLAG([-D_FORTIFY_SOURCE=2],[
488 AX_CHECK_PREPROC_FLAG([-U_FORTIFY_SOURCE],[
489 HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -U_FORTIFY_SOURCE"
491 HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -D_FORTIFY_SOURCE=2"
494 AX_CHECK_LINK_FLAG([[-Wl,--dynamicbase]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--dynamicbase"])
495 AX_CHECK_LINK_FLAG([[-Wl,--nxcompat]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--nxcompat"])
496 AX_CHECK_LINK_FLAG([[-Wl,--high-entropy-va]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--high-entropy-va"])
497 AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"])
498 AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"])
500 if test x$TARGET_OS != xwindows; then
501 AX_CHECK_COMPILE_FLAG([-fPIE],[PIE_FLAGS="-fPIE"])
502 AX_CHECK_LINK_FLAG([[-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"])
507 AC_CHECK_LIB([ssp], [main],, AC_MSG_ERROR(lib missing))
512 dnl this flag screws up non-darwin gcc even when the check fails. special-case it.
513 if test x$TARGET_OS = xdarwin; then
514 AX_CHECK_LINK_FLAG([[-Wl,-dead_strip]], [LDFLAGS="$LDFLAGS -Wl,-dead_strip"])
517 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])
519 AC_CHECK_DECLS([strnlen])
521 # Check for daemon(3), unrelated to --with-daemon (although used by it)
522 AC_CHECK_DECLS([daemon])
524 AC_CHECK_DECLS([le16toh, le32toh, le64toh, htole16, htole32, htole64, be16toh, be32toh, be64toh, htobe16, htobe32, htobe64],,,
527 #elif HAVE_SYS_ENDIAN_H
528 #include <sys/endian.h>
531 AC_CHECK_DECLS([bswap_16, bswap_32, bswap_64],,,
533 #include <byteswap.h>
536 dnl Check for MSG_NOSIGNAL
537 AC_MSG_CHECKING(for MSG_NOSIGNAL)
538 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
539 [[ int f = MSG_NOSIGNAL; ]])],
540 [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MSG_NOSIGNAL, 1,[Define this symbol if you have MSG_NOSIGNAL]) ],
544 AC_MSG_CHECKING([for visibility attribute])
545 AC_LINK_IFELSE([AC_LANG_SOURCE([
546 int foo_def( void ) __attribute__((visibility("default")));
550 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE,1,[Define if the visibility attribute is supported.])
555 if test x$use_reduce_exports = xyes; then
556 AC_MSG_ERROR([Cannot find a working visibility attribute. Use --disable-reduce-exports.])
561 if test x$use_reduce_exports = xyes; then
562 AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],[RE_CXXFLAGS="-fvisibility=hidden"],
563 [AC_MSG_ERROR([Cannot set default symbol visibility. Use --disable-reduce-exports.])])
569 AM_CONDITIONAL([EMBEDDED_LEVELDB],[true])
570 AC_SUBST(LEVELDB_CPPFLAGS)
574 if test x$enable_wallet != xno; then
575 dnl Check for libdb_cxx only if wallet enabled
579 dnl Check for libminiupnpc (optional)
580 if test x$use_upnp != xno; then
582 [miniupnpc/miniwget.h miniupnpc/miniupnpc.h miniupnpc/upnpcommands.h miniupnpc/upnperrors.h],
583 [AC_CHECK_LIB([miniupnpc], [main],[MINIUPNPC_LIBS=-lminiupnpc], [have_miniupnpc=no])],
590 dnl sets $bitcoin_enable_qt, $bitcoin_enable_qt_test, $bitcoin_enable_qt_dbus
591 BITCOIN_QT_CONFIGURE([$use_pkgconfig], [qt5])
593 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests$use_bench = xnonononono; then
599 if test x$use_boost = xyes; then
601 dnl Minimum required Boost version
602 define(MINIMUM_REQUIRED_BOOST, 1.47.0)
604 dnl Check for boost libs
605 AX_BOOST_BASE([MINIMUM_REQUIRED_BOOST])
608 AX_BOOST_PROGRAM_OPTIONS
613 if test x$use_reduce_exports = xyes; then
614 AC_MSG_CHECKING([for working boost reduced exports])
615 TEMP_CPPFLAGS="$CPPFLAGS"
616 CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
617 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
618 @%:@include <boost/version.hpp>
620 #if BOOST_VERSION >= 104900
621 // Everything is okay
623 # error Boost version is too old
628 AC_MSG_ERROR([boost versions < 1.49 are known to be broken with reduced exports. Use --disable-reduce-exports.])
630 CPPFLAGS="$TEMP_CPPFLAGS"
634 if test x$use_reduce_exports = xyes; then
635 CXXFLAGS="$CXXFLAGS $RE_CXXFLAGS"
636 AX_CHECK_LINK_FLAG([[-Wl,--exclude-libs,ALL]], [RELDFLAGS="-Wl,--exclude-libs,ALL"])
639 if test x$use_tests = xyes; then
641 if test x$HEXDUMP = x; then
642 AC_MSG_ERROR(hexdump is required for tests)
646 if test x$use_boost = xyes; then
648 AX_BOOST_UNIT_TEST_FRAMEWORK
650 dnl Determine if -DBOOST_TEST_DYN_LINK is needed
651 AC_MSG_CHECKING([for dynamic linked boost test])
653 LIBS="$LIBS $BOOST_LDFLAGS $BOOST_UNIT_TEST_FRAMEWORK_LIB"
654 TEMP_CPPFLAGS="$CPPFLAGS"
655 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
656 AC_LINK_IFELSE([AC_LANG_SOURCE([
657 #define BOOST_TEST_DYN_LINK
658 #define BOOST_TEST_MAIN
659 #include <boost/test/unit_test.hpp>
663 [TESTDEFS="$TESTDEFS -DBOOST_TEST_DYN_LINK"],
666 CPPFLAGS="$TEMP_CPPFLAGS"
671 if test x$use_boost = xyes; then
673 BOOST_LIBS="$BOOST_LDFLAGS $BOOST_SYSTEM_LIB $BOOST_FILESYSTEM_LIB $BOOST_PROGRAM_OPTIONS_LIB $BOOST_THREAD_LIB $BOOST_CHRONO_LIB"
676 dnl If boost (prior to 1.57) was built without c++11, it emulated scoped enums
677 dnl using c++98 constructs. Unfortunately, this implementation detail leaked into
678 dnl the abi. This was fixed in 1.57.
680 dnl When building against that installed version using c++11, the headers pick up
681 dnl on the native c++11 scoped enum support and enable it, however it will fail to
682 dnl link. This can be worked around by disabling c++11 scoped enums if linking will
684 dnl BOOST_NO_SCOPED_ENUMS was changed to BOOST_NO_CXX11_SCOPED_ENUMS in 1.51.
687 LIBS="$BOOST_LIBS $LIBS"
688 TEMP_CPPFLAGS="$CPPFLAGS"
689 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
690 AC_MSG_CHECKING([for mismatched boost c++11 scoped enums])
691 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
692 #include "boost/config.hpp"
693 #include "boost/version.hpp"
694 #if !defined(BOOST_NO_SCOPED_ENUMS) && !defined(BOOST_NO_CXX11_SCOPED_ENUMS) && BOOST_VERSION < 105700
695 #define BOOST_NO_SCOPED_ENUMS
696 #define BOOST_NO_CXX11_SCOPED_ENUMS
699 #include "boost/filesystem.hpp"
702 boost::filesystem::copy_file("foo", "bar");
707 [AC_MSG_RESULT(mismatched); BOOST_CPPFLAGS="$BOOST_CPPFLAGS -DBOOST_NO_SCOPED_ENUMS -DBOOST_NO_CXX11_SCOPED_ENUMS"], [AC_MSG_RESULT(ok)])
709 CPPFLAGS="$TEMP_CPPFLAGS"
711 dnl Boost >= 1.50 uses sleep_for rather than the now-deprecated sleep, however
712 dnl it was broken from 1.50 to 1.52 when backed by nanosleep. Use sleep_for if
713 dnl a working version is available, else fall back to sleep. sleep was removed
715 dnl If neither is available, abort.
717 LIBS="$BOOST_LIBS $LIBS"
718 TEMP_CPPFLAGS="$CPPFLAGS"
719 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
720 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
721 #include <boost/thread/thread.hpp>
722 #include <boost/version.hpp>
724 #if BOOST_VERSION >= 105000 && (!defined(BOOST_HAS_NANOSLEEP) || BOOST_VERSION >= 105200)
725 boost::this_thread::sleep_for(boost::chrono::milliseconds(0));
731 AC_DEFINE(HAVE_WORKING_BOOST_SLEEP_FOR, 1, [Define this symbol if boost sleep_for works])],
734 CPPFLAGS="$TEMP_CPPFLAGS"
736 if test x$boost_sleep != xyes; then
738 LIBS="$BOOST_LIBS $LIBS"
739 TEMP_CPPFLAGS="$CPPFLAGS"
740 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
741 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
742 #include <boost/version.hpp>
743 #include <boost/thread.hpp>
744 #include <boost/date_time/posix_time/posix_time_types.hpp>
746 #if BOOST_VERSION <= 105600
747 boost::this_thread::sleep(boost::posix_time::milliseconds(0));
752 [boost_sleep=yes; AC_DEFINE(HAVE_WORKING_BOOST_SLEEP, 1, [Define this symbol if boost sleep works])],
755 CPPFLAGS="$TEMP_CPPFLAGS"
758 if test x$boost_sleep != xyes; then
759 AC_MSG_ERROR(No working boost sleep implementation found.)
764 if test x$use_pkgconfig = xyes; then
769 PKG_CHECK_MODULES([SSL], [libssl],, [AC_MSG_ERROR(openssl not found.)])
770 PKG_CHECK_MODULES([CRYPTO], [libcrypto],,[AC_MSG_ERROR(libcrypto not found.)])
771 BITCOIN_QT_CHECK([PKG_CHECK_MODULES([PROTOBUF], [protobuf], [have_protobuf=yes], [BITCOIN_QT_FAIL(libprotobuf not found)])])
772 if test x$use_qr != xno; then
773 BITCOIN_QT_CHECK([PKG_CHECK_MODULES([QR], [libqrencode], [have_qrencode=yes], [have_qrencode=no])])
775 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
776 PKG_CHECK_MODULES([EVENT], [libevent],, [AC_MSG_ERROR(libevent not found.)])
777 if test x$TARGET_OS != xwindows; then
778 PKG_CHECK_MODULES([EVENT_PTHREADS], [libevent_pthreads],, [AC_MSG_ERROR(libevent_pthreads not found.)])
782 if test "x$use_zmq" = "xyes"; then
783 PKG_CHECK_MODULES([ZMQ],[libzmq >= 4],
784 [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
785 [AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
786 AC_MSG_WARN([libzmq version 4.x or greater not found, disabling])
789 AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
794 AC_CHECK_HEADER([openssl/crypto.h],,AC_MSG_ERROR(libcrypto headers missing))
795 AC_CHECK_LIB([crypto], [main],CRYPTO_LIBS=-lcrypto, AC_MSG_ERROR(libcrypto missing))
797 AC_CHECK_HEADER([openssl/ssl.h],, AC_MSG_ERROR(libssl headers missing),)
798 AC_CHECK_LIB([ssl], [main],SSL_LIBS=-lssl, AC_MSG_ERROR(libssl missing))
800 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
801 AC_CHECK_HEADER([event2/event.h],, AC_MSG_ERROR(libevent headers missing),)
802 AC_CHECK_LIB([event],[main],EVENT_LIBS=-levent,AC_MSG_ERROR(libevent missing))
803 if test x$TARGET_OS != xwindows; then
804 AC_CHECK_LIB([event_pthreads],[main],EVENT_PTHREADS_LIBS=-levent_pthreads,AC_MSG_ERROR(libevent_pthreads missing))
808 if test "x$use_zmq" = "xyes"; then
809 AC_CHECK_HEADER([zmq.h],
810 [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
811 [AC_MSG_WARN([zmq.h not found, disabling zmq support])
813 AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
814 AC_CHECK_LIB([zmq],[zmq_ctx_shutdown],ZMQ_LIBS=-lzmq,
815 [AC_MSG_WARN([libzmq >= 4.0 not found, disabling zmq support])
817 AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
819 AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
822 if test "x$use_zmq" = "xyes"; then
823 dnl Assume libzmq was built for static linking
826 ZMQ_CFLAGS="$ZMQ_CFLAGS -DZMQ_STATIC"
831 BITCOIN_QT_CHECK(AC_CHECK_LIB([protobuf] ,[main],[PROTOBUF_LIBS=-lprotobuf], BITCOIN_QT_FAIL(libprotobuf not found)))
832 if test x$use_qr != xno; then
833 BITCOIN_QT_CHECK([AC_CHECK_LIB([qrencode], [main],[QR_LIBS=-lqrencode], [have_qrencode=no])])
834 BITCOIN_QT_CHECK([AC_CHECK_HEADER([qrencode.h],, have_qrencode=no)])
838 save_CXXFLAGS="${CXXFLAGS}"
839 CXXFLAGS="${CXXFLAGS} ${CRYPTO_CFLAGS} ${SSL_CFLAGS}"
840 AC_CHECK_DECLS([EVP_MD_CTX_new],,,[AC_INCLUDES_DEFAULT
841 #include <openssl/x509_vfy.h>
843 CXXFLAGS="${save_CXXFLAGS}"
847 need_bundled_univalue=yes
849 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests$use_bench = xnonononono; then
850 need_bundled_univalue=no
853 if test x$system_univalue != xno ; then
855 if test x$use_pkgconfig = xyes; then
860 PKG_CHECK_MODULES([UNIVALUE],[libunivalue],[found_univalue=yes],[true])
864 AC_CHECK_HEADER([univalue.h],[
865 AC_CHECK_LIB([univalue], [main],[
866 UNIVALUE_LIBS=-lunivalue
872 if test x$found_univalue = xyes ; then
874 need_bundled_univalue=no
875 elif test x$system_univalue = xyes ; then
876 AC_MSG_ERROR([univalue not found])
882 if test x$need_bundled_univalue = xyes ; then
883 UNIVALUE_CFLAGS='-I$(srcdir)/univalue/include'
884 UNIVALUE_LIBS='univalue/libunivalue.la'
889 AM_CONDITIONAL([EMBEDDED_UNIVALUE],[test x$need_bundled_univalue = xyes])
890 AC_SUBST(UNIVALUE_CFLAGS)
891 AC_SUBST(UNIVALUE_LIBS)
893 BITCOIN_QT_PATH_PROGS([PROTOC], [protoc],$protoc_bin_path)
895 AC_MSG_CHECKING([whether to build bitcoind])
896 AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
897 AC_MSG_RESULT($build_bitcoind)
899 AC_MSG_CHECKING([whether to build utils (bitcoin-cli bitcoin-tx)])
900 AM_CONDITIONAL([BUILD_BITCOIN_UTILS], [test x$build_bitcoin_utils = xyes])
901 AC_MSG_RESULT($build_bitcoin_utils)
903 AC_MSG_CHECKING([whether to build libraries])
904 AM_CONDITIONAL([BUILD_BITCOIN_LIBS], [test x$build_bitcoin_libs = xyes])
905 if test x$build_bitcoin_libs = xyes; then
906 AC_DEFINE(HAVE_CONSENSUS_LIB, 1, [Define this symbol if the consensus lib has been built])
907 AC_CONFIG_FILES([libbitcoinconsensus.pc:libbitcoinconsensus.pc.in])
909 AC_MSG_RESULT($build_bitcoin_libs)
913 if test "x$use_ccache" != "xno"; then
914 AC_MSG_CHECKING(if ccache should be used)
915 if test x$CCACHE = x; then
916 if test "x$use_ccache" = "xyes"; then
917 AC_MSG_ERROR([ccache not found.]);
923 CC="$ac_cv_path_CCACHE $CC"
924 CXX="$ac_cv_path_CCACHE $CXX"
926 AC_MSG_RESULT($use_ccache)
928 if test "x$use_ccache" = "xyes"; then
929 AX_CHECK_PREPROC_FLAG([-Qunused-arguments],[CPPFLAGS="-Qunused-arguments $CPPFLAGS"])
933 AC_MSG_CHECKING([if wallet should be enabled])
934 if test x$enable_wallet != xno; then
936 AC_DEFINE_UNQUOTED([ENABLE_WALLET],[1],[Define to 1 to enable wallet functions])
942 dnl enable upnp support
943 AC_MSG_CHECKING([whether to build with support for UPnP])
944 if test x$have_miniupnpc = xno; then
945 if test x$use_upnp = xyes; then
946 AC_MSG_ERROR("UPnP requested but cannot be built. use --without-miniupnpc")
950 if test x$use_upnp != xno; then
952 AC_MSG_CHECKING([whether to build with UPnP enabled by default])
955 if test x$use_upnp_default != xno; then
959 AC_MSG_RESULT($use_upnp_default)
960 AC_DEFINE_UNQUOTED([USE_UPNP],[$upnp_setting],[UPnP support not compiled if undefined, otherwise value (0 or 1) determines default state])
961 if test x$TARGET_OS = xwindows; then
962 MINIUPNPC_CPPFLAGS="-DSTATICLIB -DMINIUPNP_STATICLIB"
969 dnl these are only used when qt is enabled
971 if test x$bitcoin_enable_qt != xno; then
972 dnl enable dbus support
973 AC_MSG_CHECKING([whether to build GUI with support for D-Bus])
974 if test x$bitcoin_enable_qt_dbus != xno; then
975 AC_DEFINE([USE_DBUS],[1],[Define if dbus support should be compiled in])
977 AC_MSG_RESULT($bitcoin_enable_qt_dbus)
979 dnl enable qr support
980 AC_MSG_CHECKING([whether to build GUI with support for QR codes])
981 if test x$have_qrencode = xno; then
982 if test x$use_qr = xyes; then
983 AC_MSG_ERROR("QR support requested but cannot be built. use --without-qrencode")
987 if test x$use_qr != xno; then
989 AC_DEFINE([USE_QRCODE],[1],[Define if QR support should be compiled in])
996 if test x$XGETTEXT = x; then
997 AC_MSG_WARN("xgettext is required to update qt translations")
1000 AC_MSG_CHECKING([whether to build test_bitcoin-qt])
1001 if test x$use_gui_tests$bitcoin_enable_qt_test = xyesyes; then
1002 AC_MSG_RESULT([yes])
1009 AM_CONDITIONAL([ENABLE_ZMQ], [test "x$use_zmq" = "xyes"])
1011 AC_MSG_CHECKING([whether to build test_bitcoin])
1012 if test x$use_tests = xyes; then
1013 AC_MSG_RESULT([yes])
1020 AC_MSG_CHECKING([whether to reduce exports])
1021 if test x$use_reduce_exports = xyes; then
1022 AC_MSG_RESULT([yes])
1027 if test x$build_bitcoin_utils$build_bitcoin_libs$build_bitcoind$bitcoin_enable_qt$use_bench$use_tests = xnononononono; then
1028 AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon --with-gui --enable-bench or --enable-tests])
1031 AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin])
1032 AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin])
1033 AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows])
1034 AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet = xyes])
1035 AM_CONDITIONAL([ENABLE_TESTS],[test x$BUILD_TEST = xyes])
1036 AM_CONDITIONAL([ENABLE_QT],[test x$bitcoin_enable_qt = xyes])
1037 AM_CONDITIONAL([ENABLE_QT_TESTS],[test x$BUILD_TEST_QT = xyes])
1038 AM_CONDITIONAL([ENABLE_BENCH],[test x$use_bench = xyes])
1039 AM_CONDITIONAL([USE_QRCODE], [test x$use_qr = xyes])
1040 AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
1041 AM_CONDITIONAL([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes])
1042 AM_CONDITIONAL([HARDEN],[test x$use_hardening = xyes])
1044 AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version])
1045 AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor version])
1046 AC_DEFINE(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION, [Build revision])
1047 AC_DEFINE(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD, [Version Build])
1048 AC_DEFINE(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE, [Version is release])
1049 AC_DEFINE(COPYRIGHT_YEAR, _COPYRIGHT_YEAR, [Copyright year])
1050 AC_DEFINE(COPYRIGHT_HOLDERS, "_COPYRIGHT_HOLDERS", [Copyright holder(s) before %s replacement])
1051 AC_DEFINE(COPYRIGHT_HOLDERS_SUBSTITUTION, "_COPYRIGHT_HOLDERS_SUBSTITUTION", [Replacement for %s in copyright holders string])
1052 define(_COPYRIGHT_HOLDERS_FINAL, [patsubst(_COPYRIGHT_HOLDERS, [%s], [_COPYRIGHT_HOLDERS_SUBSTITUTION])])
1053 AC_DEFINE(COPYRIGHT_HOLDERS_FINAL, "_COPYRIGHT_HOLDERS_FINAL", [Copyright holder(s)])
1054 AC_SUBST(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR)
1055 AC_SUBST(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR)
1056 AC_SUBST(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION)
1057 AC_SUBST(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD)
1058 AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
1059 AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
1060 AC_SUBST(COPYRIGHT_HOLDERS, "_COPYRIGHT_HOLDERS")
1061 AC_SUBST(COPYRIGHT_HOLDERS_SUBSTITUTION, "_COPYRIGHT_HOLDERS_SUBSTITUTION")
1062 AC_SUBST(COPYRIGHT_HOLDERS_FINAL, "_COPYRIGHT_HOLDERS_FINAL")
1063 AC_SUBST(BITCOIN_DAEMON_NAME)
1064 AC_SUBST(BITCOIN_GUI_NAME)
1065 AC_SUBST(BITCOIN_CLI_NAME)
1066 AC_SUBST(BITCOIN_TX_NAME)
1069 AC_SUBST(HARDENED_CXXFLAGS)
1070 AC_SUBST(HARDENED_CPPFLAGS)
1071 AC_SUBST(HARDENED_LDFLAGS)
1074 AC_SUBST(LIBTOOL_APP_LDFLAGS)
1076 AC_SUBST(USE_QRCODE)
1077 AC_SUBST(BOOST_LIBS)
1079 AC_SUBST(LEVELDB_TARGET_FLAGS)
1080 AC_SUBST(MINIUPNPC_CPPFLAGS)
1081 AC_SUBST(MINIUPNPC_LIBS)
1082 AC_SUBST(CRYPTO_LIBS)
1084 AC_SUBST(EVENT_LIBS)
1085 AC_SUBST(EVENT_PTHREADS_LIBS)
1087 AC_SUBST(PROTOBUF_LIBS)
1089 AC_CONFIG_FILES([Makefile src/Makefile doc/man/Makefile share/setup.nsi share/qt/Info.plist src/test/buildenv.py])
1090 AC_CONFIG_FILES([qa/pull-tester/tests_config.py],[chmod +x qa/pull-tester/tests_config.py])
1091 AC_CONFIG_FILES([contrib/devtools/split-debug.sh],[chmod +x contrib/devtools/split-debug.sh])
1092 AC_CONFIG_LINKS([qa/pull-tester/rpc-tests.py:qa/pull-tester/rpc-tests.py])
1094 dnl boost's m4 checks do something really nasty: they export these vars. As a
1095 dnl result, they leak into secp256k1's configure and crazy things happen.
1096 dnl Until this is fixed upstream and we've synced, we'll just un-export them.
1097 CPPFLAGS_TEMP="$CPPFLAGS"
1099 CPPFLAGS="$CPPFLAGS_TEMP"
1101 LDFLAGS_TEMP="$LDFLAGS"
1103 LDFLAGS="$LDFLAGS_TEMP"
1109 PKGCONFIG_PATH_TEMP="$PKG_CONFIG_PATH"
1110 unset PKG_CONFIG_PATH
1111 PKG_CONFIG_PATH="$PKGCONFIG_PATH_TEMP"
1113 PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
1114 unset PKG_CONFIG_LIBDIR
1115 PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
1117 if test x$need_bundled_univalue = xyes; then
1118 AC_CONFIG_SUBDIRS([src/univalue])
1121 ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no --enable-module-recovery"
1122 AC_CONFIG_SUBDIRS([src/secp256k1])
1126 dnl Taken from https://wiki.debian.org/RpathIssue
1129 AC_MSG_RESULT([Fixing libtool for -rpath problems.])
1130 sed < libtool > libtool-2 \
1131 's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/'
1132 mv libtool-2 libtool
1137 dnl Replace the BUILDDIR path with the correct Windows path if compiling on Native Windows
1140 sed 's/BUILDDIR="\/\([[a-z]]\)/BUILDDIR="\1:/' qa/pull-tester/tests_config.py > qa/pull-tester/tests_config-2.py
1141 mv qa/pull-tester/tests_config-2.py qa/pull-tester/tests_config.py
1146 echo "Options used to compile and link:"
1147 echo " with wallet = $enable_wallet"
1148 echo " with gui / qt = $bitcoin_enable_qt"
1149 if test x$bitcoin_enable_qt != xno; then
1150 echo " qt version = $bitcoin_qt_got_major_vers"
1151 echo " with qr = $use_qr"
1153 echo " with zmq = $use_zmq"
1154 echo " with test = $use_tests"
1155 echo " with bench = $use_bench"
1156 echo " with upnp = $use_upnp"
1157 echo " debug enabled = $enable_debug"
1159 echo " target os = $TARGET_OS"
1160 echo " build os = $BUILD_OS"
1163 echo " CFLAGS = $CFLAGS"
1164 echo " CPPFLAGS = $CPPFLAGS"
1166 echo " CXXFLAGS = $CXXFLAGS"
1167 echo " LDFLAGS = $LDFLAGS"