1 dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
3 define(_CLIENT_VERSION_MAJOR, 0)
4 define(_CLIENT_VERSION_MINOR, 14)
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], [nodefault])
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],
195 # Turn warnings into errors
196 AC_ARG_ENABLE([werror],
197 [AS_HELP_STRING([--enable-werror],
198 [Treat certain compiler warnings as errors (default is no)])],
199 [enable_werror=$enableval],
203 AX_CHECK_COMPILE_FLAG([-Werror],[CXXFLAG_WERROR="-Werror"],[CXXFLAG_WERROR=""])
205 if test "x$enable_debug" = xyes; then
206 CPPFLAGS="$CPPFLAGS -DDEBUG -DDEBUG_LOCKORDER"
207 if test "x$GCC" = xyes; then
208 CFLAGS="$CFLAGS -g3 -O0"
211 if test "x$GXX" = xyes; then
212 CXXFLAGS="$CXXFLAGS -g3 -O0"
217 if test "x$enable_werror" = "xyes"; then
218 if test "x$CXXFLAG_WERROR" = "x"; then
219 AC_MSG_ERROR("enable-werror set but -Werror is not usable")
221 AX_CHECK_COMPILE_FLAG([-Werror=vla],[ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror=vla"],,[[$CXXFLAG_WERROR]])
224 if test "x$CXXFLAGS_overridden" = "xno"; then
225 AX_CHECK_COMPILE_FLAG([-Wall],[CXXFLAGS="$CXXFLAGS -Wall"],,[[$CXXFLAG_WERROR]])
226 AX_CHECK_COMPILE_FLAG([-Wextra],[CXXFLAGS="$CXXFLAGS -Wextra"],,[[$CXXFLAG_WERROR]])
227 AX_CHECK_COMPILE_FLAG([-Wformat],[CXXFLAGS="$CXXFLAGS -Wformat"],,[[$CXXFLAG_WERROR]])
228 AX_CHECK_COMPILE_FLAG([-Wvla],[CXXFLAGS="$CXXFLAGS -Wvla"],,[[$CXXFLAG_WERROR]])
229 AX_CHECK_COMPILE_FLAG([-Wformat-security],[CXXFLAGS="$CXXFLAGS -Wformat-security"],,[[$CXXFLAG_WERROR]])
230 AX_CHECK_COMPILE_FLAG([-Wshadow],[CXXFLAGS="$CXXFLAGS -Wshadow"],,[[$CXXFLAG_WERROR]])
232 ## Some compilers (gcc) ignore unknown -Wno-* options, but warn about all
233 ## unknown options if any other warning is produced. Test the -Wfoo case, and
234 ## set the -Wno-foo case if it works.
235 AX_CHECK_COMPILE_FLAG([-Wunused-parameter],[CXXFLAGS="$CXXFLAGS -Wno-unused-parameter"],,[[$CXXFLAG_WERROR]])
236 AX_CHECK_COMPILE_FLAG([-Wself-assign],[CXXFLAGS="$CXXFLAGS -Wno-self-assign"],,[[$CXXFLAG_WERROR]])
237 AX_CHECK_COMPILE_FLAG([-Wunused-local-typedef],[CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"],,[[$CXXFLAG_WERROR]])
238 AX_CHECK_COMPILE_FLAG([-Wdeprecated-register],[CXXFLAGS="$CXXFLAGS -Wno-deprecated-register"],,[[$CXXFLAG_WERROR]])
240 CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"
243 [AS_HELP_STRING([--with-utils],
244 [build bitcoin-cli bitcoin-tx (default=yes)])],
245 [build_bitcoin_utils=$withval],
246 [build_bitcoin_utils=yes])
249 [AS_HELP_STRING([--with-libs],
250 [build libraries (default=yes)])],
251 [build_bitcoin_libs=$withval],
252 [build_bitcoin_libs=yes])
254 AC_ARG_WITH([daemon],
255 [AS_HELP_STRING([--with-daemon],
256 [build bitcoind daemon (default=yes)])],
257 [build_bitcoind=$withval],
258 [build_bitcoind=yes])
264 #pkgconfig does more harm than good with MinGW
268 AC_CHECK_LIB([mingwthrd], [main],, AC_MSG_ERROR(lib missing))
269 AC_CHECK_LIB([kernel32], [main],, AC_MSG_ERROR(lib missing))
270 AC_CHECK_LIB([user32], [main],, AC_MSG_ERROR(lib missing))
271 AC_CHECK_LIB([gdi32], [main],, AC_MSG_ERROR(lib missing))
272 AC_CHECK_LIB([comdlg32], [main],, AC_MSG_ERROR(lib missing))
273 AC_CHECK_LIB([winspool], [main],, AC_MSG_ERROR(lib missing))
274 AC_CHECK_LIB([winmm], [main],, AC_MSG_ERROR(lib missing))
275 AC_CHECK_LIB([shell32], [main],, AC_MSG_ERROR(lib missing))
276 AC_CHECK_LIB([comctl32], [main],, AC_MSG_ERROR(lib missing))
277 AC_CHECK_LIB([ole32], [main],, AC_MSG_ERROR(lib missing))
278 AC_CHECK_LIB([oleaut32], [main],, AC_MSG_ERROR(lib missing))
279 AC_CHECK_LIB([uuid], [main],, AC_MSG_ERROR(lib missing))
280 AC_CHECK_LIB([rpcrt4], [main],, AC_MSG_ERROR(lib missing))
281 AC_CHECK_LIB([advapi32], [main],, AC_MSG_ERROR(lib missing))
282 AC_CHECK_LIB([ws2_32], [main],, AC_MSG_ERROR(lib missing))
283 AC_CHECK_LIB([mswsock], [main],, AC_MSG_ERROR(lib missing))
284 AC_CHECK_LIB([shlwapi], [main],, AC_MSG_ERROR(lib missing))
285 AC_CHECK_LIB([iphlpapi], [main],, AC_MSG_ERROR(lib missing))
286 AC_CHECK_LIB([crypt32], [main],, AC_MSG_ERROR(lib missing))
288 # -static is interpreted by libtool, where it has a different meaning.
289 # In libtool-speak, it's -all-static.
290 AX_CHECK_LINK_FLAG([[-static]],[LIBTOOL_APP_LDFLAGS="$LIBTOOL_APP_LDFLAGS -all-static"])
292 AC_PATH_PROG([MAKENSIS], [makensis], none)
293 if test x$MAKENSIS = xnone; then
294 AC_MSG_WARN("makensis not found. Cannot create installer.")
297 AC_PATH_TOOL(WINDRES, windres, none)
298 if test x$WINDRES = xnone; then
299 AC_MSG_ERROR("windres not found")
302 CPPFLAGS="$CPPFLAGS -D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB"
303 LEVELDB_TARGET_FLAGS="-DOS_WINDOWS"
304 if test "x$CXXFLAGS_overridden" = "xno"; then
305 CXXFLAGS="$CXXFLAGS -w"
308 i?86-*) WINDOWS_BITS=32 ;;
309 x86_64-*) WINDOWS_BITS=64 ;;
310 *) AC_MSG_ERROR("Could not determine win32/win64 for installer") ;;
312 AC_SUBST(WINDOWS_BITS)
314 dnl libtool insists upon adding -nostdlib and a list of objects/libs to link against.
315 dnl That breaks our ability to build dll's with static libgcc/libstdc++/libssp. Override
316 dnl its command here, with the predeps/postdeps removed, and -static inserted. Postdeps are
317 dnl also overridden to prevent their insertion later.
318 dnl This should only affect dll's.
319 archive_cmds_CXX="\$CC -shared \$libobjs \$deplibs \$compiler_flags -static -o \$output_objdir/\$soname \${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib"
325 LEVELDB_TARGET_FLAGS="-DOS_MACOSX"
326 if test x$cross_compiling != xyes; then
328 AC_CHECK_PROG([PORT],port, port)
329 if test x$PORT = xport; then
330 dnl add default macports paths
331 CPPFLAGS="$CPPFLAGS -isystem /opt/local/include"
332 LIBS="$LIBS -L/opt/local/lib"
333 if test -d /opt/local/include/db48; then
334 CPPFLAGS="$CPPFLAGS -I/opt/local/include/db48"
335 LIBS="$LIBS -L/opt/local/lib/db48"
339 AC_PATH_PROGS([RSVG_CONVERT], [rsvg-convert rsvg],rsvg-convert)
340 AC_CHECK_PROG([BREW],brew, brew)
341 if test x$BREW = xbrew; then
342 dnl These Homebrew packages may be keg-only, meaning that they won't be found
343 dnl in expected paths because they may conflict with system files. Ask
344 dnl Homebrew where each one is located, then adjust paths accordingly.
345 dnl It's safe to add these paths even if the functionality is disabled by
346 dnl the user (--without-wallet or --without-gui for example).
348 openssl_prefix=`$BREW --prefix openssl 2>/dev/null`
349 bdb_prefix=`$BREW --prefix berkeley-db4 2>/dev/null`
350 qt5_prefix=`$BREW --prefix qt5 2>/dev/null`
351 if test x$openssl_prefix != x; then
352 PKG_CONFIG_PATH="$openssl_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
353 export PKG_CONFIG_PATH
355 if test x$bdb_prefix != x; then
356 CPPFLAGS="$CPPFLAGS -I$bdb_prefix/include"
357 LIBS="$LIBS -L$bdb_prefix/lib"
359 if test x$qt5_prefix != x; then
360 PKG_CONFIG_PATH="$qt5_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
361 export PKG_CONFIG_PATH
370 AC_PATH_TOOL([INSTALLNAMETOOL], [install_name_tool], install_name_tool)
371 AC_PATH_TOOL([OTOOL], [otool], otool)
372 AC_PATH_PROGS([GENISOIMAGE], [genisoimage mkisofs],genisoimage)
373 AC_PATH_PROGS([RSVG_CONVERT], [rsvg-convert rsvg],rsvg-convert)
374 AC_PATH_PROGS([IMAGEMAGICK_CONVERT], [convert],convert)
375 AC_PATH_PROGS([TIFFCP], [tiffcp],tiffcp)
377 dnl libtool will try to strip the static lib, which is a problem for
378 dnl cross-builds because strip attempts to call a hard-coded ld,
379 dnl which may not exist in the path. Stripping the .a is not
380 dnl necessary, so just disable it.
386 AX_CHECK_LINK_FLAG([[-Wl,-headerpad_max_install_names]], [LDFLAGS="$LDFLAGS -Wl,-headerpad_max_install_names"])
387 CPPFLAGS="$CPPFLAGS -DMAC_OSX"
388 OBJCXXFLAGS="$CXXFLAGS"
392 LEVELDB_TARGET_FLAGS="-DOS_LINUX"
395 LEVELDB_TARGET_FLAGS="-DOS_FREEBSD"
398 LEVELDB_TARGET_FLAGS="-DOS_OPENBSD"
401 OTHER_OS=`echo ${host_os} | awk '{print toupper($0)}'`
402 AC_MSG_WARN([Guessing LevelDB OS as OS_${OTHER_OS}, please check whether this is correct, if not add an entry to configure.ac.])
403 LEVELDB_TARGET_FLAGS="-DOS_${OTHER_OS}"
407 if test x$use_pkgconfig = xyes; then
408 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.)])
409 m4_ifdef([PKG_PROG_PKG_CONFIG], [
411 if test x"$PKG_CONFIG" = "x"; then
412 AC_MSG_ERROR(pkg-config not found.)
417 if test x$use_extended_rpc_tests != xno; then
418 AC_SUBST(EXTENDED_RPC_TESTS, -extended)
421 if test x$use_lcov = xyes; then
422 if test x$LCOV = x; then
423 AC_MSG_ERROR("lcov testing requested but lcov not found")
425 if test x$GCOV = x; then
426 AC_MSG_ERROR("lcov testing requested but gcov not found")
428 if test x$PYTHON = x; then
429 AC_MSG_ERROR("lcov testing requested but python not found")
431 if test x$GENHTML = x; then
432 AC_MSG_ERROR("lcov testing requested but genhtml not found")
434 LCOV="$LCOV --gcov-tool=$GCOV"
435 AX_CHECK_LINK_FLAG([[--coverage]], [LDFLAGS="$LDFLAGS --coverage"],
436 [AC_MSG_ERROR("lcov testing requested but --coverage linker flag does not work")])
437 AX_CHECK_COMPILE_FLAG([--coverage],[CXXFLAGS="$CXXFLAGS --coverage"],
438 [AC_MSG_ERROR("lcov testing requested but --coverage flag does not work")])
441 dnl Check for endianness
444 dnl Check for pthread compile/link requirements
447 # The following macro will add the necessary defines to bitcoin-config.h, but
448 # they also need to be passed down to any subprojects. Pull the results out of
449 # the cache and add them to CPPFLAGS.
451 # detect POSIX or GNU variant of strerror_r
454 if test x$ac_cv_sys_file_offset_bits != x &&
455 test x$ac_cv_sys_file_offset_bits != xno &&
456 test x$ac_cv_sys_file_offset_bits != xunknown; then
457 CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
460 if test x$ac_cv_sys_large_files != x &&
461 test x$ac_cv_sys_large_files != xno &&
462 test x$ac_cv_sys_large_files != xunknown; then
463 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES=$ac_cv_sys_large_files"
466 AX_CHECK_LINK_FLAG([[-Wl,--large-address-aware]], [LDFLAGS="$LDFLAGS -Wl,--large-address-aware"])
468 AX_GCC_FUNC_ATTRIBUTE([visibility])
469 AX_GCC_FUNC_ATTRIBUTE([dllexport])
470 AX_GCC_FUNC_ATTRIBUTE([dllimport])
472 if test x$use_glibc_compat != xno; then
474 #glibc absorbed clock_gettime in 2.17. librt (its previous location) is safe to link
475 #in anyway for back-compat.
476 AC_CHECK_LIB([rt],[clock_gettime],, AC_MSG_ERROR(lib missing))
478 #__fdelt_chk's params and return type have changed from long unsigned int to long int.
479 # See which one is present here.
480 AC_MSG_CHECKING(__fdelt_chk type)
481 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef _FORTIFY_SOURCE
482 #undef _FORTIFY_SOURCE
484 #define _FORTIFY_SOURCE 2
485 #include <sys/select.h>
486 extern "C" long unsigned int __fdelt_warn(long unsigned int);]],[[]])],
487 [ fdelt_type="long unsigned int"],
488 [ fdelt_type="long int"])
489 AC_MSG_RESULT($fdelt_type)
490 AC_DEFINE_UNQUOTED(FDELT_TYPE, $fdelt_type,[parameter and return value type for __fdelt_chk])
492 AC_SEARCH_LIBS([clock_gettime],[rt])
495 if test x$TARGET_OS != xwindows; then
496 # All windows code is PIC, forcing it on just adds useless compile warnings
497 AX_CHECK_COMPILE_FLAG([-fPIC],[PIC_FLAGS="-fPIC"])
500 if test x$use_hardening != xno; then
501 AX_CHECK_COMPILE_FLAG([-Wstack-protector],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wstack-protector"])
502 AX_CHECK_COMPILE_FLAG([-fstack-protector-all],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fstack-protector-all"])
504 AX_CHECK_PREPROC_FLAG([-D_FORTIFY_SOURCE=2],[
505 AX_CHECK_PREPROC_FLAG([-U_FORTIFY_SOURCE],[
506 HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -U_FORTIFY_SOURCE"
508 HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -D_FORTIFY_SOURCE=2"
511 AX_CHECK_LINK_FLAG([[-Wl,--dynamicbase]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--dynamicbase"])
512 AX_CHECK_LINK_FLAG([[-Wl,--nxcompat]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--nxcompat"])
513 AX_CHECK_LINK_FLAG([[-Wl,--high-entropy-va]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--high-entropy-va"])
514 AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"])
515 AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"])
517 if test x$TARGET_OS != xwindows; then
518 AX_CHECK_COMPILE_FLAG([-fPIE],[PIE_FLAGS="-fPIE"])
519 AX_CHECK_LINK_FLAG([[-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"])
524 AC_CHECK_LIB([ssp], [main],, AC_MSG_ERROR(lib missing))
529 dnl this flag screws up non-darwin gcc even when the check fails. special-case it.
530 if test x$TARGET_OS = xdarwin; then
531 AX_CHECK_LINK_FLAG([[-Wl,-dead_strip]], [LDFLAGS="$LDFLAGS -Wl,-dead_strip"])
534 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])
536 AC_CHECK_DECLS([strnlen])
538 # Check for daemon(3), unrelated to --with-daemon (although used by it)
539 AC_CHECK_DECLS([daemon])
541 AC_CHECK_DECLS([le16toh, le32toh, le64toh, htole16, htole32, htole64, be16toh, be32toh, be64toh, htobe16, htobe32, htobe64],,,
544 #elif HAVE_SYS_ENDIAN_H
545 #include <sys/endian.h>
548 AC_CHECK_DECLS([bswap_16, bswap_32, bswap_64],,,
550 #include <byteswap.h>
553 dnl Check for MSG_NOSIGNAL
554 AC_MSG_CHECKING(for MSG_NOSIGNAL)
555 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
556 [[ int f = MSG_NOSIGNAL; ]])],
557 [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MSG_NOSIGNAL, 1,[Define this symbol if you have MSG_NOSIGNAL]) ],
561 AC_MSG_CHECKING([for visibility attribute])
562 AC_LINK_IFELSE([AC_LANG_SOURCE([
563 int foo_def( void ) __attribute__((visibility("default")));
567 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE,1,[Define if the visibility attribute is supported.])
572 if test x$use_reduce_exports = xyes; then
573 AC_MSG_ERROR([Cannot find a working visibility attribute. Use --disable-reduce-exports.])
578 # Check for different ways of gathering OS randomness
579 AC_MSG_CHECKING(for Linux getrandom syscall)
580 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>
581 #include <sys/syscall.h>
582 #include <linux/random.h>]],
583 [[ syscall(SYS_getrandom, nullptr, 32, 0); ]])],
584 [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYS_GETRANDOM, 1,[Define this symbol if the Linux getrandom system call is available]) ],
588 AC_MSG_CHECKING(for getentropy)
589 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>]],
590 [[ getentropy(nullptr, 32) ]])],
591 [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_GETENTROPY, 1,[Define this symbol if the BSD getentropy system call is available]) ],
595 AC_MSG_CHECKING(for sysctl KERN_ARND)
596 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
597 #include <sys/sysctl.h>]],
598 [[ static const int name[2] = {CTL_KERN, KERN_ARND};
599 sysctl(name, 2, nullptr, nullptr, nullptr, 0); ]])],
600 [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL_ARND, 1,[Define this symbol if the BSD sysctl(KERN_ARND) is available]) ],
604 # Check for reduced exports
605 if test x$use_reduce_exports = xyes; then
606 AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],[RE_CXXFLAGS="-fvisibility=hidden"],
607 [AC_MSG_ERROR([Cannot set default symbol visibility. Use --disable-reduce-exports.])])
613 AM_CONDITIONAL([EMBEDDED_LEVELDB],[true])
614 AC_SUBST(LEVELDB_CPPFLAGS)
618 if test x$enable_wallet != xno; then
619 dnl Check for libdb_cxx only if wallet enabled
623 dnl Check for libminiupnpc (optional)
624 if test x$use_upnp != xno; then
626 [miniupnpc/miniwget.h miniupnpc/miniupnpc.h miniupnpc/upnpcommands.h miniupnpc/upnperrors.h],
627 [AC_CHECK_LIB([miniupnpc], [main],[MINIUPNPC_LIBS=-lminiupnpc], [have_miniupnpc=no])],
634 dnl sets $bitcoin_enable_qt, $bitcoin_enable_qt_test, $bitcoin_enable_qt_dbus
635 BITCOIN_QT_CONFIGURE([$use_pkgconfig], [qt5])
637 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests$use_bench = xnonononono; then
643 if test x$use_boost = xyes; then
645 dnl Minimum required Boost version
646 define(MINIMUM_REQUIRED_BOOST, 1.47.0)
648 dnl Check for boost libs
649 AX_BOOST_BASE([MINIMUM_REQUIRED_BOOST])
652 AX_BOOST_PROGRAM_OPTIONS
657 if test x$use_reduce_exports = xyes; then
658 AC_MSG_CHECKING([for working boost reduced exports])
659 TEMP_CPPFLAGS="$CPPFLAGS"
660 CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
661 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
662 @%:@include <boost/version.hpp>
664 #if BOOST_VERSION >= 104900
665 // Everything is okay
667 # error Boost version is too old
672 AC_MSG_ERROR([boost versions < 1.49 are known to be broken with reduced exports. Use --disable-reduce-exports.])
674 CPPFLAGS="$TEMP_CPPFLAGS"
678 if test x$use_reduce_exports = xyes; then
679 CXXFLAGS="$CXXFLAGS $RE_CXXFLAGS"
680 AX_CHECK_LINK_FLAG([[-Wl,--exclude-libs,ALL]], [RELDFLAGS="-Wl,--exclude-libs,ALL"])
683 if test x$use_tests = xyes; then
685 if test x$HEXDUMP = x; then
686 AC_MSG_ERROR(hexdump is required for tests)
690 if test x$use_boost = xyes; then
692 AX_BOOST_UNIT_TEST_FRAMEWORK
694 dnl Determine if -DBOOST_TEST_DYN_LINK is needed
695 AC_MSG_CHECKING([for dynamic linked boost test])
697 LIBS="$LIBS $BOOST_LDFLAGS $BOOST_UNIT_TEST_FRAMEWORK_LIB"
698 TEMP_CPPFLAGS="$CPPFLAGS"
699 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
700 AC_LINK_IFELSE([AC_LANG_SOURCE([
701 #define BOOST_TEST_DYN_LINK
702 #define BOOST_TEST_MAIN
703 #include <boost/test/unit_test.hpp>
707 [TESTDEFS="$TESTDEFS -DBOOST_TEST_DYN_LINK"],
710 CPPFLAGS="$TEMP_CPPFLAGS"
715 if test x$use_boost = xyes; then
717 BOOST_LIBS="$BOOST_LDFLAGS $BOOST_SYSTEM_LIB $BOOST_FILESYSTEM_LIB $BOOST_PROGRAM_OPTIONS_LIB $BOOST_THREAD_LIB $BOOST_CHRONO_LIB"
720 dnl If boost (prior to 1.57) was built without c++11, it emulated scoped enums
721 dnl using c++98 constructs. Unfortunately, this implementation detail leaked into
722 dnl the abi. This was fixed in 1.57.
724 dnl When building against that installed version using c++11, the headers pick up
725 dnl on the native c++11 scoped enum support and enable it, however it will fail to
726 dnl link. This can be worked around by disabling c++11 scoped enums if linking will
728 dnl BOOST_NO_SCOPED_ENUMS was changed to BOOST_NO_CXX11_SCOPED_ENUMS in 1.51.
731 LIBS="$BOOST_LIBS $LIBS"
732 TEMP_CPPFLAGS="$CPPFLAGS"
733 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
734 AC_MSG_CHECKING([for mismatched boost c++11 scoped enums])
735 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
736 #include "boost/config.hpp"
737 #include "boost/version.hpp"
738 #if !defined(BOOST_NO_SCOPED_ENUMS) && !defined(BOOST_NO_CXX11_SCOPED_ENUMS) && BOOST_VERSION < 105700
739 #define BOOST_NO_SCOPED_ENUMS
740 #define BOOST_NO_CXX11_SCOPED_ENUMS
743 #include "boost/filesystem.hpp"
746 boost::filesystem::copy_file("foo", "bar");
751 [AC_MSG_RESULT(mismatched); BOOST_CPPFLAGS="$BOOST_CPPFLAGS -DBOOST_NO_SCOPED_ENUMS -DBOOST_NO_CXX11_SCOPED_ENUMS"], [AC_MSG_RESULT(ok)])
753 CPPFLAGS="$TEMP_CPPFLAGS"
755 dnl Boost >= 1.50 uses sleep_for rather than the now-deprecated sleep, however
756 dnl it was broken from 1.50 to 1.52 when backed by nanosleep. Use sleep_for if
757 dnl a working version is available, else fall back to sleep. sleep was removed
759 dnl If neither is available, abort.
761 LIBS="$BOOST_LIBS $LIBS"
762 TEMP_CPPFLAGS="$CPPFLAGS"
763 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
764 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
765 #include <boost/thread/thread.hpp>
766 #include <boost/version.hpp>
768 #if BOOST_VERSION >= 105000 && (!defined(BOOST_HAS_NANOSLEEP) || BOOST_VERSION >= 105200)
769 boost::this_thread::sleep_for(boost::chrono::milliseconds(0));
775 AC_DEFINE(HAVE_WORKING_BOOST_SLEEP_FOR, 1, [Define this symbol if boost sleep_for works])],
778 CPPFLAGS="$TEMP_CPPFLAGS"
780 if test x$boost_sleep != xyes; then
782 LIBS="$BOOST_LIBS $LIBS"
783 TEMP_CPPFLAGS="$CPPFLAGS"
784 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
785 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
786 #include <boost/version.hpp>
787 #include <boost/thread.hpp>
788 #include <boost/date_time/posix_time/posix_time_types.hpp>
790 #if BOOST_VERSION <= 105600
791 boost::this_thread::sleep(boost::posix_time::milliseconds(0));
796 [boost_sleep=yes; AC_DEFINE(HAVE_WORKING_BOOST_SLEEP, 1, [Define this symbol if boost sleep works])],
799 CPPFLAGS="$TEMP_CPPFLAGS"
802 if test x$boost_sleep != xyes; then
803 AC_MSG_ERROR(No working boost sleep implementation found.)
808 if test x$use_pkgconfig = xyes; then
813 PKG_CHECK_MODULES([SSL], [libssl],, [AC_MSG_ERROR(openssl not found.)])
814 PKG_CHECK_MODULES([CRYPTO], [libcrypto],,[AC_MSG_ERROR(libcrypto not found.)])
815 BITCOIN_QT_CHECK([PKG_CHECK_MODULES([PROTOBUF], [protobuf], [have_protobuf=yes], [BITCOIN_QT_FAIL(libprotobuf not found)])])
816 if test x$use_qr != xno; then
817 BITCOIN_QT_CHECK([PKG_CHECK_MODULES([QR], [libqrencode], [have_qrencode=yes], [have_qrencode=no])])
819 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
820 PKG_CHECK_MODULES([EVENT], [libevent],, [AC_MSG_ERROR(libevent not found.)])
821 if test x$TARGET_OS != xwindows; then
822 PKG_CHECK_MODULES([EVENT_PTHREADS], [libevent_pthreads],, [AC_MSG_ERROR(libevent_pthreads not found.)])
826 if test "x$use_zmq" = "xyes"; then
827 PKG_CHECK_MODULES([ZMQ],[libzmq >= 4],
828 [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
829 [AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
830 AC_MSG_WARN([libzmq version 4.x or greater not found, disabling])
833 AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
838 AC_CHECK_HEADER([openssl/crypto.h],,AC_MSG_ERROR(libcrypto headers missing))
839 AC_CHECK_LIB([crypto], [main],CRYPTO_LIBS=-lcrypto, AC_MSG_ERROR(libcrypto missing))
841 AC_CHECK_HEADER([openssl/ssl.h],, AC_MSG_ERROR(libssl headers missing),)
842 AC_CHECK_LIB([ssl], [main],SSL_LIBS=-lssl, AC_MSG_ERROR(libssl missing))
844 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
845 AC_CHECK_HEADER([event2/event.h],, AC_MSG_ERROR(libevent headers missing),)
846 AC_CHECK_LIB([event],[main],EVENT_LIBS=-levent,AC_MSG_ERROR(libevent missing))
847 if test x$TARGET_OS != xwindows; then
848 AC_CHECK_LIB([event_pthreads],[main],EVENT_PTHREADS_LIBS=-levent_pthreads,AC_MSG_ERROR(libevent_pthreads missing))
852 if test "x$use_zmq" = "xyes"; then
853 AC_CHECK_HEADER([zmq.h],
854 [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
855 [AC_MSG_WARN([zmq.h not found, disabling zmq support])
857 AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
858 AC_CHECK_LIB([zmq],[zmq_ctx_shutdown],ZMQ_LIBS=-lzmq,
859 [AC_MSG_WARN([libzmq >= 4.0 not found, disabling zmq support])
861 AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
863 AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
866 if test "x$use_zmq" = "xyes"; then
867 dnl Assume libzmq was built for static linking
870 ZMQ_CFLAGS="$ZMQ_CFLAGS -DZMQ_STATIC"
875 BITCOIN_QT_CHECK(AC_CHECK_LIB([protobuf] ,[main],[PROTOBUF_LIBS=-lprotobuf], BITCOIN_QT_FAIL(libprotobuf not found)))
876 if test x$use_qr != xno; then
877 BITCOIN_QT_CHECK([AC_CHECK_LIB([qrencode], [main],[QR_LIBS=-lqrencode], [have_qrencode=no])])
878 BITCOIN_QT_CHECK([AC_CHECK_HEADER([qrencode.h],, have_qrencode=no)])
882 save_CXXFLAGS="${CXXFLAGS}"
883 CXXFLAGS="${CXXFLAGS} ${CRYPTO_CFLAGS} ${SSL_CFLAGS}"
884 AC_CHECK_DECLS([EVP_MD_CTX_new],,,[AC_INCLUDES_DEFAULT
885 #include <openssl/x509_vfy.h>
887 CXXFLAGS="${save_CXXFLAGS}"
891 need_bundled_univalue=yes
893 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests$use_bench = xnonononono; then
894 need_bundled_univalue=no
897 if test x$system_univalue != xno ; then
899 if test x$use_pkgconfig = xyes; then
904 PKG_CHECK_MODULES([UNIVALUE],[libunivalue],[found_univalue=yes],[true])
908 AC_CHECK_HEADER([univalue.h],[
909 AC_CHECK_LIB([univalue], [main],[
910 UNIVALUE_LIBS=-lunivalue
916 if test x$found_univalue = xyes ; then
918 need_bundled_univalue=no
919 elif test x$system_univalue = xyes ; then
920 AC_MSG_ERROR([univalue not found])
926 if test x$need_bundled_univalue = xyes ; then
927 UNIVALUE_CFLAGS='-I$(srcdir)/univalue/include'
928 UNIVALUE_LIBS='univalue/libunivalue.la'
933 AM_CONDITIONAL([EMBEDDED_UNIVALUE],[test x$need_bundled_univalue = xyes])
934 AC_SUBST(UNIVALUE_CFLAGS)
935 AC_SUBST(UNIVALUE_LIBS)
937 BITCOIN_QT_PATH_PROGS([PROTOC], [protoc],$protoc_bin_path)
939 AC_MSG_CHECKING([whether to build bitcoind])
940 AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
941 AC_MSG_RESULT($build_bitcoind)
943 AC_MSG_CHECKING([whether to build utils (bitcoin-cli bitcoin-tx)])
944 AM_CONDITIONAL([BUILD_BITCOIN_UTILS], [test x$build_bitcoin_utils = xyes])
945 AC_MSG_RESULT($build_bitcoin_utils)
947 AC_MSG_CHECKING([whether to build libraries])
948 AM_CONDITIONAL([BUILD_BITCOIN_LIBS], [test x$build_bitcoin_libs = xyes])
949 if test x$build_bitcoin_libs = xyes; then
950 AC_DEFINE(HAVE_CONSENSUS_LIB, 1, [Define this symbol if the consensus lib has been built])
951 AC_CONFIG_FILES([libbitcoinconsensus.pc:libbitcoinconsensus.pc.in])
953 AC_MSG_RESULT($build_bitcoin_libs)
957 if test "x$use_ccache" != "xno"; then
958 AC_MSG_CHECKING(if ccache should be used)
959 if test x$CCACHE = x; then
960 if test "x$use_ccache" = "xyes"; then
961 AC_MSG_ERROR([ccache not found.]);
967 CC="$ac_cv_path_CCACHE $CC"
968 CXX="$ac_cv_path_CCACHE $CXX"
970 AC_MSG_RESULT($use_ccache)
972 if test "x$use_ccache" = "xyes"; then
973 AX_CHECK_PREPROC_FLAG([-Qunused-arguments],[CPPFLAGS="-Qunused-arguments $CPPFLAGS"])
977 AC_MSG_CHECKING([if wallet should be enabled])
978 if test x$enable_wallet != xno; then
980 AC_DEFINE_UNQUOTED([ENABLE_WALLET],[1],[Define to 1 to enable wallet functions])
986 dnl enable upnp support
987 AC_MSG_CHECKING([whether to build with support for UPnP])
988 if test x$have_miniupnpc = xno; then
989 if test x$use_upnp = xyes; then
990 AC_MSG_ERROR("UPnP requested but cannot be built. use --without-miniupnpc")
994 if test x$use_upnp != xno; then
996 AC_MSG_CHECKING([whether to build with UPnP enabled by default])
999 if test x$use_upnp_default != xno; then
1000 use_upnp_default=yes
1003 AC_MSG_RESULT($use_upnp_default)
1004 AC_DEFINE_UNQUOTED([USE_UPNP],[$upnp_setting],[UPnP support not compiled if undefined, otherwise value (0 or 1) determines default state])
1005 if test x$TARGET_OS = xwindows; then
1006 MINIUPNPC_CPPFLAGS="-DSTATICLIB -DMINIUPNP_STATICLIB"
1013 dnl these are only used when qt is enabled
1015 if test x$bitcoin_enable_qt != xno; then
1016 dnl enable dbus support
1017 AC_MSG_CHECKING([whether to build GUI with support for D-Bus])
1018 if test x$bitcoin_enable_qt_dbus != xno; then
1019 AC_DEFINE([USE_DBUS],[1],[Define if dbus support should be compiled in])
1021 AC_MSG_RESULT($bitcoin_enable_qt_dbus)
1023 dnl enable qr support
1024 AC_MSG_CHECKING([whether to build GUI with support for QR codes])
1025 if test x$have_qrencode = xno; then
1026 if test x$use_qr = xyes; then
1027 AC_MSG_ERROR("QR support requested but cannot be built. use --without-qrencode")
1031 if test x$use_qr != xno; then
1033 AC_DEFINE([USE_QRCODE],[1],[Define if QR support should be compiled in])
1040 if test x$XGETTEXT = x; then
1041 AC_MSG_WARN("xgettext is required to update qt translations")
1044 AC_MSG_CHECKING([whether to build test_bitcoin-qt])
1045 if test x$use_gui_tests$bitcoin_enable_qt_test = xyesyes; then
1046 AC_MSG_RESULT([yes])
1053 AM_CONDITIONAL([ENABLE_ZMQ], [test "x$use_zmq" = "xyes"])
1055 AC_MSG_CHECKING([whether to build test_bitcoin])
1056 if test x$use_tests = xyes; then
1057 AC_MSG_RESULT([yes])
1064 AC_MSG_CHECKING([whether to reduce exports])
1065 if test x$use_reduce_exports = xyes; then
1066 AC_MSG_RESULT([yes])
1071 if test x$build_bitcoin_utils$build_bitcoin_libs$build_bitcoind$bitcoin_enable_qt$use_bench$use_tests = xnononononono; then
1072 AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon --with-gui --enable-bench or --enable-tests])
1075 AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin])
1076 AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin])
1077 AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows])
1078 AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet = xyes])
1079 AM_CONDITIONAL([ENABLE_TESTS],[test x$BUILD_TEST = xyes])
1080 AM_CONDITIONAL([ENABLE_QT],[test x$bitcoin_enable_qt = xyes])
1081 AM_CONDITIONAL([ENABLE_QT_TESTS],[test x$BUILD_TEST_QT = xyes])
1082 AM_CONDITIONAL([ENABLE_BENCH],[test x$use_bench = xyes])
1083 AM_CONDITIONAL([USE_QRCODE], [test x$use_qr = xyes])
1084 AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
1085 AM_CONDITIONAL([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes])
1086 AM_CONDITIONAL([HARDEN],[test x$use_hardening = xyes])
1088 AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version])
1089 AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor version])
1090 AC_DEFINE(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION, [Build revision])
1091 AC_DEFINE(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD, [Version Build])
1092 AC_DEFINE(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE, [Version is release])
1093 AC_DEFINE(COPYRIGHT_YEAR, _COPYRIGHT_YEAR, [Copyright year])
1094 AC_DEFINE(COPYRIGHT_HOLDERS, "_COPYRIGHT_HOLDERS", [Copyright holder(s) before %s replacement])
1095 AC_DEFINE(COPYRIGHT_HOLDERS_SUBSTITUTION, "_COPYRIGHT_HOLDERS_SUBSTITUTION", [Replacement for %s in copyright holders string])
1096 define(_COPYRIGHT_HOLDERS_FINAL, [patsubst(_COPYRIGHT_HOLDERS, [%s], [_COPYRIGHT_HOLDERS_SUBSTITUTION])])
1097 AC_DEFINE(COPYRIGHT_HOLDERS_FINAL, "_COPYRIGHT_HOLDERS_FINAL", [Copyright holder(s)])
1098 AC_SUBST(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR)
1099 AC_SUBST(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR)
1100 AC_SUBST(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION)
1101 AC_SUBST(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD)
1102 AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
1103 AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
1104 AC_SUBST(COPYRIGHT_HOLDERS, "_COPYRIGHT_HOLDERS")
1105 AC_SUBST(COPYRIGHT_HOLDERS_SUBSTITUTION, "_COPYRIGHT_HOLDERS_SUBSTITUTION")
1106 AC_SUBST(COPYRIGHT_HOLDERS_FINAL, "_COPYRIGHT_HOLDERS_FINAL")
1107 AC_SUBST(BITCOIN_DAEMON_NAME)
1108 AC_SUBST(BITCOIN_GUI_NAME)
1109 AC_SUBST(BITCOIN_CLI_NAME)
1110 AC_SUBST(BITCOIN_TX_NAME)
1113 AC_SUBST(ERROR_CXXFLAGS)
1114 AC_SUBST(HARDENED_CXXFLAGS)
1115 AC_SUBST(HARDENED_CPPFLAGS)
1116 AC_SUBST(HARDENED_LDFLAGS)
1119 AC_SUBST(LIBTOOL_APP_LDFLAGS)
1121 AC_SUBST(USE_QRCODE)
1122 AC_SUBST(BOOST_LIBS)
1124 AC_SUBST(LEVELDB_TARGET_FLAGS)
1125 AC_SUBST(MINIUPNPC_CPPFLAGS)
1126 AC_SUBST(MINIUPNPC_LIBS)
1127 AC_SUBST(CRYPTO_LIBS)
1129 AC_SUBST(EVENT_LIBS)
1130 AC_SUBST(EVENT_PTHREADS_LIBS)
1132 AC_SUBST(PROTOBUF_LIBS)
1134 AC_CONFIG_FILES([Makefile src/Makefile doc/man/Makefile share/setup.nsi share/qt/Info.plist src/test/buildenv.py])
1135 AC_CONFIG_FILES([qa/pull-tester/tests_config.ini],[chmod +x qa/pull-tester/tests_config.ini])
1136 AC_CONFIG_FILES([contrib/devtools/split-debug.sh],[chmod +x contrib/devtools/split-debug.sh])
1137 AC_CONFIG_LINKS([qa/pull-tester/rpc-tests.py:qa/pull-tester/rpc-tests.py])
1139 dnl boost's m4 checks do something really nasty: they export these vars. As a
1140 dnl result, they leak into secp256k1's configure and crazy things happen.
1141 dnl Until this is fixed upstream and we've synced, we'll just un-export them.
1142 CPPFLAGS_TEMP="$CPPFLAGS"
1144 CPPFLAGS="$CPPFLAGS_TEMP"
1146 LDFLAGS_TEMP="$LDFLAGS"
1148 LDFLAGS="$LDFLAGS_TEMP"
1154 PKGCONFIG_PATH_TEMP="$PKG_CONFIG_PATH"
1155 unset PKG_CONFIG_PATH
1156 PKG_CONFIG_PATH="$PKGCONFIG_PATH_TEMP"
1158 PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
1159 unset PKG_CONFIG_LIBDIR
1160 PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
1162 if test x$need_bundled_univalue = xyes; then
1163 AC_CONFIG_SUBDIRS([src/univalue])
1166 ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no --enable-module-recovery"
1167 AC_CONFIG_SUBDIRS([src/secp256k1])
1171 dnl Taken from https://wiki.debian.org/RpathIssue
1174 AC_MSG_RESULT([Fixing libtool for -rpath problems.])
1175 sed < libtool > libtool-2 \
1176 's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/'
1177 mv libtool-2 libtool
1182 dnl Replace the BUILDDIR path with the correct Windows path if compiling on Native Windows
1185 sed 's/BUILDDIR="\/\([[a-z]]\)/BUILDDIR="\1:/' qa/pull-tester/tests_config.py > qa/pull-tester/tests_config-2.py
1186 mv qa/pull-tester/tests_config-2.py qa/pull-tester/tests_config.py
1191 echo "Options used to compile and link:"
1192 echo " with wallet = $enable_wallet"
1193 echo " with gui / qt = $bitcoin_enable_qt"
1194 if test x$bitcoin_enable_qt != xno; then
1195 echo " qt version = $bitcoin_qt_got_major_vers"
1196 echo " with qr = $use_qr"
1198 echo " with zmq = $use_zmq"
1199 echo " with test = $use_tests"
1200 echo " with bench = $use_bench"
1201 echo " with upnp = $use_upnp"
1202 echo " debug enabled = $enable_debug"
1203 echo " werror = $enable_werror"
1205 echo " target os = $TARGET_OS"
1206 echo " build os = $BUILD_OS"
1209 echo " CFLAGS = $CFLAGS"
1210 echo " CPPFLAGS = $CPPFLAGS"
1212 echo " CXXFLAGS = $CXXFLAGS"
1213 echo " LDFLAGS = $LDFLAGS"