]> Git Repo - VerusCoin.git/blob - configure.ac
build: Remove -DBOOST_SPIRIT_THREADSAFE
[VerusCoin.git] / configure.ac
1 dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
2 AC_PREREQ([2.60])
3 define(_CLIENT_VERSION_MAJOR, 1)
4 define(_CLIENT_VERSION_MINOR, 0)
5 define(_CLIENT_VERSION_REVISION, 6)
6 define(_CLIENT_VERSION_BUILD, 50)
7 define(_ZC_BUILD_VAL, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, m4_incr(_CLIENT_VERSION_BUILD), m4_eval(_CLIENT_VERSION_BUILD < 50), 1, m4_eval(_CLIENT_VERSION_BUILD - 24), m4_eval(_CLIENT_VERSION_BUILD == 50), 1, , m4_eval(_CLIENT_VERSION_BUILD - 50)))
8 define(_CLIENT_VERSION_SUFFIX, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, _CLIENT_VERSION_REVISION-beta$1, m4_eval(_CLIENT_VERSION_BUILD < 50), 1, _CLIENT_VERSION_REVISION-rc$1, m4_eval(_CLIENT_VERSION_BUILD == 50), 1, _CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION-$1)))
9 define(_CLIENT_VERSION_IS_RELEASE, true)
10 define(_COPYRIGHT_YEAR, 2017)
11 AC_INIT([Zcash],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_SUFFIX(_ZC_BUILD_VAL)],[https://github.com/zcash/zcash/issues],[zcash])
12 AC_CONFIG_SRCDIR([src/main.cpp])
13 AC_CONFIG_HEADERS([src/config/bitcoin-config.h])
14 AC_CONFIG_AUX_DIR([build-aux])
15 AC_CONFIG_MACRO_DIR([build-aux/m4])
16
17 AC_CANONICAL_HOST
18
19 AH_TOP([#ifndef BITCOIN_CONFIG_H])
20 AH_TOP([#define BITCOIN_CONFIG_H])
21 AH_BOTTOM([#endif //BITCOIN_CONFIG_H])
22
23 dnl faketime breaks configure and is only needed for make. Disable it here.
24 unset FAKETIME
25
26 dnl Automake init set-up and checks
27 AM_INIT_AUTOMAKE([no-define subdir-objects foreign])
28
29 dnl faketime messes with timestamps and causes configure to be re-run.
30 dnl --disable-maintainer-mode can be used to bypass this.
31 AM_MAINTAINER_MODE([enable])
32
33 dnl make the compilation flags quiet unless V=1 is used
34 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
35
36 dnl Compiler checks (here before libtool).
37 if test "x${CXXFLAGS+set}" = "xset"; then
38   CXXFLAGS_overridden=yes
39 else
40   CXXFLAGS_overridden=no
41 fi
42
43 # Zcash requries C++11 compatibility; set it early:
44 CXXFLAGS="-std=c++11 $CXXFLAGS"
45
46 AC_PROG_CXX
47 m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCXX])
48
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.
52 case $host in
53   *mingw*)
54      lt_cv_deplibs_check_method="pass_all"
55   ;;
56 esac
57 dnl Libtool init checks.
58 LT_INIT([pic-only])
59
60 dnl Check/return PATH for base programs.
61 AC_PATH_TOOL(AR, ar)
62 AC_PATH_TOOL(RANLIB, ranlib)
63 AC_PATH_TOOL(STRIP, strip)
64 AC_PATH_TOOL(GCOV, gcov)
65 AC_PATH_PROG(LCOV, lcov)
66 AC_PATH_PROG(JAVA, java)
67 AC_PATH_PROG(GENHTML, genhtml)
68 AC_PATH_PROG([GIT], [git])
69 AC_PATH_PROG(CCACHE,ccache)
70 AC_PATH_PROG(XGETTEXT,xgettext)
71 AC_PATH_PROG(HEXDUMP,hexdump)
72 AC_PATH_TOOL(READELF,readelf)
73 AC_PATH_TOOL(CPPFILT,c++filt)
74
75 dnl pkg-config check.
76 PKG_PROG_PKG_CONFIG
77
78 # Enable wallet
79 AC_ARG_ENABLE([wallet],
80   [AS_HELP_STRING([--enable-wallet],
81   [enable wallet (default is yes)])],
82   [enable_wallet=$enableval],
83   [enable_wallet=yes])
84
85 AC_ARG_ENABLE([mining],
86   [AS_HELP_STRING([--enable-mining],
87   [enable mining (default is yes)])],
88   [enable_mining=$enableval],
89   [enable_mining=yes])
90
91 AC_ARG_WITH([miniupnpc],
92   [AS_HELP_STRING([--with-miniupnpc],
93   [enable UPNP (default is yes if libminiupnpc is found)])],
94   [use_upnp=$withval],
95   [use_upnp=auto])
96
97 AC_ARG_ENABLE([upnp-default],
98   [AS_HELP_STRING([--enable-upnp-default],
99   [if UPNP is enabled, turn it on at startup (default is no)])],
100   [use_upnp_default=$enableval],
101   [use_upnp_default=no])
102
103 AC_ARG_ENABLE(tests,
104     AS_HELP_STRING([--enable-tests],[compile tests (default is yes)]),
105     [use_tests=$enableval],
106     [use_tests=yes])
107
108 AC_ARG_ENABLE(gui-tests,
109     AS_HELP_STRING([--disable-gui-tests],[do not compile GUI tests (default is to compile if GUI and tests enabled)]),
110     [use_gui_tests=$enableval],
111     [use_gui_tests=$use_tests])
112
113 AC_ARG_WITH([comparison-tool],
114     AS_HELP_STRING([--with-comparison-tool],[path to java comparison tool (requires --enable-tests)]),
115     [use_comparison_tool=$withval],
116     [use_comparison_tool=no])
117
118 AC_ARG_ENABLE([comparison-tool-reorg-tests],
119     AS_HELP_STRING([--enable-comparison-tool-reorg-tests],[enable expensive reorg tests in the comparison tool (default no)]),
120     [use_comparison_tool_reorg_tests=$enableval],
121     [use_comparison_tool_reorg_tests=no])
122
123 AC_ARG_WITH([qrencode],
124   [AS_HELP_STRING([--with-qrencode],
125   [enable QR code support (default is yes if qt is enabled and libqrencode is found)])],
126   [use_qr=$withval],
127   [use_qr=auto])
128
129 AC_ARG_ENABLE([hardening],
130   [AS_HELP_STRING([--enable-hardening],
131   [attempt to harden the resulting executables (default is yes)])],
132   [use_hardening=$enableval],
133   [use_hardening=yes])
134
135 AC_ARG_ENABLE([reduce-exports],
136   [AS_HELP_STRING([--enable-reduce-exports],
137   [attempt to reduce exported symbols in the resulting executables (default is no)])],
138   [use_reduce_exports=$enableval],
139   [use_reduce_exports=no])
140
141 AC_ARG_ENABLE([ccache],
142   [AS_HELP_STRING([--enable-ccache],
143   [use ccache for building (default is yes if ccache is found)])],
144   [use_ccache=$enableval],
145   [use_ccache=auto])
146
147 AC_ARG_ENABLE([lcov],
148   [AS_HELP_STRING([--enable-lcov],
149   [enable lcov testing (default is no)])],
150   [use_lcov=yes],
151   [use_lcov=no])
152
153 AC_ARG_ENABLE([glibc-back-compat],
154   [AS_HELP_STRING([--enable-glibc-back-compat],
155   [enable backwards compatibility with glibc])],
156   [use_glibc_compat=$enableval],
157   [use_glibc_compat=no])
158
159 AC_ARG_ENABLE([zmq],
160   [AS_HELP_STRING([--disable-zmq],
161   [disable ZMQ notifications])],
162   [use_zmq=$enableval],
163   [use_zmq=yes])
164
165 AC_ARG_WITH([protoc-bindir],[AS_HELP_STRING([--with-protoc-bindir=BIN_DIR],[specify protoc bin path])], [protoc_bin_path=$withval], [])
166
167 AC_ARG_ENABLE(man,
168     [AS_HELP_STRING([--disable-man],
169                     [do not install man pages (default is to install)])],,
170     enable_man=yes)
171 AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
172
173 # Enable debug
174 AC_ARG_ENABLE([debug],
175     [AS_HELP_STRING([--enable-debug],
176                     [use debug compiler flags and macros (default is no)])],
177     [enable_debug=$enableval],
178     [enable_debug=no])
179
180 if test "x$enable_debug" = xyes; then
181     if test "x$GCC" = xyes; then
182         CFLAGS="-g3 -O0 -DDEBUG"
183     fi
184
185     if test "x$GXX" = xyes; then
186         CXXFLAGS="-g3 -O0 -DDEBUG"
187     fi
188 fi
189
190 ## TODO: Remove these hard-coded paths and flags. They are here for the sake of
191 ##       compatibility with the legacy buildsystem.
192 ##
193 if test "x$CXXFLAGS_overridden" = "xno"; then
194   CXXFLAGS="$CXXFLAGS -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -Wno-self-assign"
195 fi
196 CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"
197
198 AC_ARG_WITH([utils],
199   [AS_HELP_STRING([--with-utils],
200   [build zcash-cli zcash-tx (default=yes)])],
201   [build_bitcoin_utils=$withval],
202   [build_bitcoin_utils=yes])
203
204 AC_ARG_WITH([libs],
205   [AS_HELP_STRING([--with-libs],
206   [build libraries (default=yes)])],
207   [build_bitcoin_libs=$withval],
208   [build_bitcoin_libs=yes])
209
210 AC_ARG_WITH([daemon],
211   [AS_HELP_STRING([--with-daemon],
212   [build bitcoind daemon (default=yes)])],
213   [build_bitcoind=$withval],
214   [build_bitcoind=yes])
215
216 AC_LANG_PUSH([C++])
217
218 use_pkgconfig=yes
219 case $host in
220   *mingw*)
221
222      #pkgconfig does more harm than good with MinGW
223      use_pkgconfig=no
224
225      TARGET_OS=windows
226      AC_CHECK_LIB([mingwthrd],      [main],, AC_MSG_ERROR(lib missing))
227      AC_CHECK_LIB([kernel32],      [main],, AC_MSG_ERROR(lib missing))
228      AC_CHECK_LIB([user32],      [main],, AC_MSG_ERROR(lib missing))
229      AC_CHECK_LIB([gdi32],      [main],, AC_MSG_ERROR(lib missing))
230      AC_CHECK_LIB([comdlg32],      [main],, AC_MSG_ERROR(lib missing))
231      AC_CHECK_LIB([winspool],      [main],, AC_MSG_ERROR(lib missing))
232      AC_CHECK_LIB([winmm],      [main],, AC_MSG_ERROR(lib missing))
233      AC_CHECK_LIB([shell32],      [main],, AC_MSG_ERROR(lib missing))
234      AC_CHECK_LIB([comctl32],      [main],, AC_MSG_ERROR(lib missing))
235      AC_CHECK_LIB([ole32],      [main],, AC_MSG_ERROR(lib missing))
236      AC_CHECK_LIB([oleaut32],      [main],, AC_MSG_ERROR(lib missing))
237      AC_CHECK_LIB([uuid],      [main],, AC_MSG_ERROR(lib missing))
238      AC_CHECK_LIB([rpcrt4],      [main],, AC_MSG_ERROR(lib missing))
239      AC_CHECK_LIB([advapi32],      [main],, AC_MSG_ERROR(lib missing))
240      AC_CHECK_LIB([ws2_32],      [main],, AC_MSG_ERROR(lib missing))
241      AC_CHECK_LIB([mswsock],      [main],, AC_MSG_ERROR(lib missing))
242      AC_CHECK_LIB([shlwapi],      [main],, AC_MSG_ERROR(lib missing))
243      AC_CHECK_LIB([iphlpapi],      [main],, AC_MSG_ERROR(lib missing))
244      AC_CHECK_LIB([crypt32],      [main],, AC_MSG_ERROR(lib missing))
245
246      # -static is interpreted by libtool, where it has a different meaning.
247      # In libtool-speak, it's -all-static.
248      AX_CHECK_LINK_FLAG([[-static]],[LIBTOOL_APP_LDFLAGS="$LIBTOOL_APP_LDFLAGS -all-static"])
249
250      AC_PATH_PROG([MAKENSIS], [makensis], none)
251      if test x$MAKENSIS = xnone; then
252        AC_MSG_WARN("makensis not found. Cannot create installer.")
253      fi
254
255      AC_PATH_TOOL(WINDRES, windres, none)
256      if test x$WINDRES = xnone; then
257        AC_MSG_ERROR("windres not found")
258      fi
259
260      CPPFLAGS="$CPPFLAGS -D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB"
261      LEVELDB_TARGET_FLAGS="TARGET_OS=OS_WINDOWS_CROSSCOMPILE"
262      if test "x$CXXFLAGS_overridden" = "xno"; then
263        CXXFLAGS="$CXXFLAGS -w"
264      fi
265      case $host in
266        i?86-*) WINDOWS_BITS=32 ;;
267        x86_64-*) WINDOWS_BITS=64 ;;
268        *) AC_MSG_ERROR("Could not determine win32/win64 for installer") ;;
269      esac
270      AC_SUBST(WINDOWS_BITS)
271
272      dnl libtool insists upon adding -nostdlib and a list of objects/libs to link against.
273      dnl That breaks our ability to build dll's with static libgcc/libstdc++/libssp. Override
274      dnl its command here, with the predeps/postdeps removed, and -static inserted. Postdeps are
275      dnl also overridden to prevent their insertion later.
276      dnl This should only affect dll's.
277      archive_cmds_CXX="\$CC -shared \$libobjs \$deplibs \$compiler_flags -static -o \$output_objdir/\$soname \${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib"
278      postdeps_CXX=
279
280      ;;
281   *darwin*)
282      TARGET_OS=darwin
283      LEVELDB_TARGET_FLAGS="TARGET_OS=Darwin"
284      if  test x$cross_compiling != xyes; then
285        BUILD_OS=darwin
286        AC_CHECK_PROG([PORT],port, port)
287        if test x$PORT = xport; then
288          dnl add default macports paths
289          CPPFLAGS="$CPPFLAGS -isystem /opt/local/include"
290          LIBS="$LIBS -L/opt/local/lib"
291          if test -d /opt/local/include/db62; then
292            CPPFLAGS="$CPPFLAGS -I/opt/local/include/db62"
293            LIBS="$LIBS -L/opt/local/lib/db62"
294          fi
295        fi
296
297        AC_CHECK_PROG([BREW],brew, brew)
298        if test x$BREW = xbrew; then
299          dnl These Homebrew packages may be keg-only, meaning that they won't be found
300          dnl in expected paths because they may conflict with system files. Ask
301          dnl Homebrew where each one is located, then adjust paths accordingly.
302          dnl It's safe to add these paths even if the functionality is disabled by
303          dnl the user (--without-wallet or --without-gui for example).
304
305          openssl_prefix=`$BREW --prefix openssl 2>/dev/null`
306          bdb_prefix=`$BREW --prefix berkeley-db4 2>/dev/null`
307          qt5_prefix=`$BREW --prefix qt5 2>/dev/null`
308          if test x$openssl_prefix != x; then
309            PKG_CONFIG_PATH="$openssl_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
310            export PKG_CONFIG_PATH
311          fi
312          if test x$bdb_prefix != x; then
313            CPPFLAGS="$CPPFLAGS -I$bdb_prefix/include"
314            LIBS="$LIBS -L$bdb_prefix/lib"
315          fi
316          if test x$qt5_prefix != x; then
317            PKG_CONFIG_PATH="$qt5_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
318            export PKG_CONFIG_PATH
319          fi
320        fi
321      else
322        case $build_os in
323          *darwin*)
324            BUILD_OS=darwin
325            ;;
326          *)
327            AC_PATH_TOOL([INSTALLNAMETOOL], [install_name_tool], install_name_tool)
328            AC_PATH_TOOL([OTOOL], [otool], otool)
329            AC_PATH_PROGS([GENISOIMAGE], [genisoimage mkisofs],genisoimage)
330
331            dnl libtool will try to strip the static lib, which is a problem for
332            dnl cross-builds because strip attempts to call a hard-coded ld,
333            dnl which may not exist in the path. Stripping the .a is not
334            dnl necessary, so just disable it.
335            old_striplib=
336            ;;
337        esac
338      fi
339
340      AX_CHECK_LINK_FLAG([[-Wl,-headerpad_max_install_names]], [LDFLAGS="$LDFLAGS -Wl,-headerpad_max_install_names"])
341      CPPFLAGS="$CPPFLAGS -DMAC_OSX"
342      ;;
343    *linux*)
344      TARGET_OS=linux
345      ;;
346    *)
347      ;;
348 esac
349
350 if test x$use_comparison_tool != xno; then
351   if test x$JAVA = x; then
352     AC_MSG_ERROR("comparison tool set but java not found")
353   fi
354   AC_SUBST(JAVA_COMPARISON_TOOL, $use_comparison_tool)
355 fi
356
357 if test x$use_comparison_tool_reorg_tests != xno; then
358   if test x$use_comparison_tool = x; then
359     AC_MSG_ERROR("comparison tool reorg tests but comparison tool was not specified")
360   fi
361   AC_SUBST(COMPARISON_TOOL_REORG_TESTS, 1)
362 else
363   AC_SUBST(COMPARISON_TOOL_REORG_TESTS, 0)
364 fi
365
366 if test x$use_lcov = xyes; then
367   if test x$LCOV = x; then
368     AC_MSG_ERROR("lcov testing requested but lcov not found")
369   fi
370   if test x$GCOV = x; then
371     AC_MSG_ERROR("lcov testing requested but gcov not found")
372   fi
373   if test x$JAVA = x; then
374     AC_MSG_ERROR("lcov testing requested but java not found")
375   fi
376   if test x$GENHTML = x; then
377     AC_MSG_ERROR("lcov testing requested but genhtml not found")
378   fi
379   if test x$use_comparison_tool = x; then
380     AC_MSG_ERROR("lcov testing requested but comparison tool was not specified")
381   fi
382   LCOV="$LCOV --gcov-tool=$GCOV --rc lcov_branch_coverage=1"
383   GENHTML="$GENHTML --branch-coverage"
384   AX_CHECK_COMPILE_FLAG([--coverage],[CXXFLAGS="$CXXFLAGS --coverage"],
385     [AC_MSG_ERROR("lcov testing requested but --coverage flag does not work")])
386 fi
387
388 dnl Check for endianness
389 AC_C_BIGENDIAN
390
391 dnl Check for pthread compile/link requirements
392 AX_PTHREAD
393
394 # The following macro will add the necessary defines to bitcoin-config.h, but
395 # they also need to be passed down to any subprojects. Pull the results out of
396 # the cache and add them to CPPFLAGS.
397 AC_SYS_LARGEFILE
398 # detect POSIX or GNU variant of strerror_r
399 AC_FUNC_STRERROR_R
400
401 if test x$ac_cv_sys_file_offset_bits != x &&
402    test x$ac_cv_sys_file_offset_bits != xno &&
403    test x$ac_cv_sys_file_offset_bits != xunknown; then
404   CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
405 fi
406
407 if test x$ac_cv_sys_large_files != x &&
408    test x$ac_cv_sys_large_files != xno &&
409    test x$ac_cv_sys_large_files != xunknown; then
410   CPPFLAGS="$CPPFLAGS -D_LARGE_FILES=$ac_cv_sys_large_files"
411 fi
412
413 AX_CHECK_LINK_FLAG([[-Wl,--large-address-aware]], [LDFLAGS="$LDFLAGS -Wl,--large-address-aware"])
414
415 AX_GCC_FUNC_ATTRIBUTE([visibility])
416 AX_GCC_FUNC_ATTRIBUTE([dllexport])
417 AX_GCC_FUNC_ATTRIBUTE([dllimport])
418
419 if test x$use_glibc_compat != xno; then
420
421   #glibc absorbed clock_gettime in 2.17. librt (its previous location) is safe to link
422   #in anyway for back-compat.
423   AC_CHECK_LIB([rt],[clock_gettime],, AC_MSG_ERROR(lib missing))
424
425   #__fdelt_chk's params and return type have changed from long unsigned int to long int.
426   # See which one is present here.
427   AC_MSG_CHECKING(__fdelt_chk type)
428   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef _FORTIFY_SOURCE
429                     #undef _FORTIFY_SOURCE
430                   #endif
431                   #define _FORTIFY_SOURCE 2
432                   #include <sys/select.h>
433      extern "C" long unsigned int __fdelt_warn(long unsigned int);]],[[]])],
434     [ fdelt_type="long unsigned int"],
435     [ fdelt_type="long int"])
436   AC_MSG_RESULT($fdelt_type)
437   AC_DEFINE_UNQUOTED(FDELT_TYPE, $fdelt_type,[parameter and return value type for __fdelt_chk])
438 else
439   AC_SEARCH_LIBS([clock_gettime],[rt])
440 fi
441
442 if test x$use_hardening != xno; then
443   AX_CHECK_COMPILE_FLAG([-Wformat],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wformat"],[AC_MSG_ERROR(Cannot enable -Wformat)])
444   AX_CHECK_COMPILE_FLAG([-Wformat-security],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wformat-security"],[AC_MSG_ERROR(Cannot enable -Wformat-security)],[-Wformat])
445   AX_CHECK_COMPILE_FLAG([-Wstack-protector],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wstack-protector"],[AC_MSG_ERROR(Cannot enable -Wstack-protector)])
446   AX_CHECK_COMPILE_FLAG([-fstack-protector-all],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fstack-protector-all"],[AC_MSG_ERROR(Cannot enable -fstack-protector-all)])
447
448   AX_CHECK_PREPROC_FLAG([-D_FORTIFY_SOURCE=2],[
449     AX_CHECK_PREPROC_FLAG([-U_FORTIFY_SOURCE],[
450       HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -U_FORTIFY_SOURCE"
451     ],[AC_MSG_ERROR(Cannot enable -U_FORTIFY_SOURCE)])
452     HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -D_FORTIFY_SOURCE=2"
453   ],[AC_MSG_ERROR(Cannot enable -D_FORTIFY_SOURCE=2)])
454
455   AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"],[AC_MSG_ERROR(Cannot enable RELRO)])
456   AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"],[AC_MSG_ERROR(Cannot enable BIND_NOW)])
457
458   if test x$TARGET_OS != xwindows; then
459     # All windows code is PIC, forcing it on just adds useless compile warnings
460     AX_CHECK_COMPILE_FLAG([-fPIE],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fPIE"],[AC_MSG_ERROR(Cannot enable -fPIE)])
461     AX_CHECK_LINK_FLAG([[-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"],[AC_MSG_ERROR(Cannot enable -pie)])
462   else
463     # These are only available on Windows.
464     AX_CHECK_LINK_FLAG([[-Wl,--dynamicbase]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--dynamicbase"],[AC_MSG_ERROR(Cannot enable --dynamicbase)])
465     AX_CHECK_LINK_FLAG([[-Wl,--nxcompat]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--nxcompat"],[AC_MSG_ERROR(Cannot enable --nxcompat)])
466   fi
467
468   case $host in
469     *mingw*)
470        AC_CHECK_LIB([ssp],      [main],, AC_MSG_ERROR(lib missing))
471     ;;
472   esac
473
474   CXXFLAGS="$CXXFLAGS $HARDENED_CXXFLAGS"
475   CPPFLAGS="$CPPFLAGS $HARDENED_CPPFLAGS"
476   LDFLAGS="$LDFLAGS $HARDENED_LDFLAGS"
477   OBJCXXFLAGS="$CXXFLAGS"
478 fi
479
480 dnl this flag screws up non-darwin gcc even when the check fails. special-case it.
481 if test x$TARGET_OS = xdarwin; then
482   AX_CHECK_LINK_FLAG([[-Wl,-dead_strip]], [LDFLAGS="$LDFLAGS -Wl,-dead_strip"])
483 fi
484
485 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])
486 AC_SEARCH_LIBS([getaddrinfo_a], [anl], [AC_DEFINE(HAVE_GETADDRINFO_A, 1, [Define this symbol if you have getaddrinfo_a])])
487 AC_SEARCH_LIBS([inet_pton], [nsl resolv], [AC_DEFINE(HAVE_INET_PTON, 1, [Define this symbol if you have inet_pton])])
488
489 AC_CHECK_DECLS([strnlen])
490
491 AC_CHECK_DECLS([le16toh, le32toh, le64toh, htole16, htole32, htole64, be16toh, be32toh, be64toh, htobe16, htobe32, htobe64],,,
492                 [#if HAVE_ENDIAN_H
493                  #include <endian.h>
494                  #elif HAVE_SYS_ENDIAN_H
495                  #include <sys/endian.h>
496                  #endif])
497
498 AC_CHECK_DECLS([bswap_16, bswap_32, bswap_64],,,
499                 [#if HAVE_BYTESWAP_H
500                  #include <byteswap.h>
501                  #endif])
502
503 dnl Check for MSG_NOSIGNAL
504 AC_MSG_CHECKING(for MSG_NOSIGNAL)
505 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
506  [[ int f = MSG_NOSIGNAL; ]])],
507  [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MSG_NOSIGNAL, 1,[Define this symbol if you have MSG_NOSIGNAL]) ],
508  [ AC_MSG_RESULT(no)]
509 )
510
511 AC_MSG_CHECKING([for visibility attribute])
512 AC_LINK_IFELSE([AC_LANG_SOURCE([
513   int foo_def( void ) __attribute__((visibility("default")));
514   int main(){}
515   ])],
516   [
517     AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE,1,[Define if the visibility attribute is supported.])
518     AC_MSG_RESULT(yes)
519   ],
520   [
521     AC_MSG_RESULT(no)
522     if test x$use_reduce_exports = xyes; then
523       AC_MSG_ERROR([Cannot find a working visibility attribute. Use --disable-reduce-exports.])
524     fi
525   ]
526 )
527
528 if test x$use_reduce_exports = xyes; then
529   AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],[RE_CXXFLAGS="-fvisibility=hidden"],
530   [AC_MSG_ERROR([Cannot set default symbol visibility. Use --disable-reduce-exports.])])
531 fi
532
533 LEVELDB_CPPFLAGS=
534 LIBLEVELDB=
535 LIBMEMENV=
536 AM_CONDITIONAL([EMBEDDED_LEVELDB],[true])
537 AC_SUBST(LEVELDB_CPPFLAGS)
538 AC_SUBST(LIBLEVELDB)
539 AC_SUBST(LIBMEMENV)
540
541 if test x$enable_wallet != xno; then
542     dnl Check for libdb_cxx only if wallet enabled
543     BITCOIN_FIND_BDB62
544 fi
545
546 dnl Check for libminiupnpc (optional)
547 if test x$use_upnp != xno; then
548   AC_CHECK_HEADERS(
549     [miniupnpc/miniwget.h miniupnpc/miniupnpc.h miniupnpc/upnpcommands.h miniupnpc/upnperrors.h],
550     [AC_CHECK_LIB([miniupnpc], [main],[MINIUPNPC_LIBS=-lminiupnpc], [have_miniupnpc=no])],
551     [have_miniupnpc=no]
552   )
553 fi
554
555 BITCOIN_QT_INIT
556
557 dnl sets $bitcoin_enable_qt, $bitcoin_enable_qt_test, $bitcoin_enable_qt_dbus
558 BITCOIN_QT_CONFIGURE([$use_pkgconfig], [qt4])
559
560 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests = xnononono; then
561     use_boost=no
562 else
563     use_boost=yes
564 fi
565
566 if test x$use_boost = xyes; then
567
568 dnl Check for boost libs
569 AX_BOOST_BASE
570 AX_BOOST_SYSTEM
571 AX_BOOST_FILESYSTEM
572 AX_BOOST_PROGRAM_OPTIONS
573 AX_BOOST_THREAD
574 AX_BOOST_CHRONO
575
576
577 if test x$use_reduce_exports = xyes; then
578   AC_MSG_CHECKING([for working boost reduced exports])
579   TEMP_CPPFLAGS="$CPPFLAGS"
580   CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
581   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
582       @%:@include <boost/version.hpp>
583     ]], [[
584       #if BOOST_VERSION >= 104900
585       // Everything is okay
586       #else
587       #  error Boost version is too old
588       #endif
589     ]])],[
590       AC_MSG_RESULT(yes)
591     ],[
592     AC_MSG_ERROR([boost versions < 1.49 are known to be broken with reduced exports. Use --disable-reduce-exports.])
593   ])
594   CPPFLAGS="$TEMP_CPPFLAGS"
595 fi
596 fi
597
598 if test x$use_reduce_exports = xyes; then
599     CXXFLAGS="$CXXFLAGS $RE_CXXFLAGS"
600     AX_CHECK_LINK_FLAG([[-Wl,--exclude-libs,ALL]], [RELDFLAGS="-Wl,--exclude-libs,ALL"])
601 fi
602
603 if test x$use_tests = xyes; then
604
605   if test x$HEXDUMP = x; then
606     AC_MSG_ERROR(hexdump is required for tests)
607   fi
608
609
610   if test x$use_boost = xyes; then
611
612   AX_BOOST_UNIT_TEST_FRAMEWORK
613
614   dnl Determine if -DBOOST_TEST_DYN_LINK is needed
615   AC_MSG_CHECKING([for dynamic linked boost test])
616   TEMP_LIBS="$LIBS"
617   LIBS="$LIBS $BOOST_LDFLAGS $BOOST_UNIT_TEST_FRAMEWORK_LIB"
618   TEMP_CPPFLAGS="$CPPFLAGS"
619   CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
620   AC_LINK_IFELSE([AC_LANG_SOURCE([
621        #define BOOST_TEST_DYN_LINK
622        #define BOOST_TEST_MAIN
623         #include <boost/test/unit_test.hpp>
624
625        ])],
626     [AC_MSG_RESULT(yes)]
627     [TESTDEFS="$TESTDEFS -DBOOST_TEST_DYN_LINK"],
628     [AC_MSG_RESULT(no)])
629   LIBS="$TEMP_LIBS"
630   CPPFLAGS="$TEMP_CPPFLAGS"
631
632   fi
633 fi
634
635 if test x$use_boost = xyes; then
636
637 BOOST_LIBS="$BOOST_LDFLAGS $BOOST_SYSTEM_LIB $BOOST_FILESYSTEM_LIB $BOOST_PROGRAM_OPTIONS_LIB $BOOST_THREAD_LIB $BOOST_CHRONO_LIB"
638
639 dnl Boost >= 1.50 uses sleep_for rather than the now-deprecated sleep, however
640 dnl it was broken from 1.50 to 1.52 when backed by nanosleep. Use sleep_for if
641 dnl a working version is available, else fall back to sleep. sleep was removed
642 dnl after 1.56.
643 dnl If neither is available, abort.
644 TEMP_LIBS="$LIBS"
645 LIBS="$BOOST_LIBS $LIBS"
646 TEMP_CPPFLAGS="$CPPFLAGS"
647 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
648 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
649   #include <boost/thread/thread.hpp>
650   #include <boost/version.hpp>
651   ]],[[
652   #if BOOST_VERSION >= 105000 && (!defined(BOOST_HAS_NANOSLEEP) || BOOST_VERSION >= 105200)
653       boost::this_thread::sleep_for(boost::chrono::milliseconds(0));
654   #else
655    choke me
656   #endif
657   ]])],
658   [boost_sleep=yes;
659      AC_DEFINE(HAVE_WORKING_BOOST_SLEEP_FOR, 1, [Define this symbol if boost sleep_for works])],
660   [boost_sleep=no])
661 LIBS="$TEMP_LIBS"
662 CPPFLAGS="$TEMP_CPPFLAGS"
663
664 if test x$boost_sleep != xyes; then
665 TEMP_LIBS="$LIBS"
666 LIBS="$BOOST_LIBS $LIBS"
667 TEMP_CPPFLAGS="$CPPFLAGS"
668 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
669 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
670   #include <boost/version.hpp>
671   #include <boost/thread.hpp>
672   #include <boost/date_time/posix_time/posix_time_types.hpp>
673   ]],[[
674   #if BOOST_VERSION <= 105600
675       boost::this_thread::sleep(boost::posix_time::milliseconds(0));
676   #else
677    choke me
678   #endif
679   ]])],
680   [boost_sleep=yes; AC_DEFINE(HAVE_WORKING_BOOST_SLEEP, 1, [Define this symbol if boost sleep works])],
681   [boost_sleep=no])
682 LIBS="$TEMP_LIBS"
683 CPPFLAGS="$TEMP_CPPFLAGS"
684 fi
685
686 if test x$boost_sleep != xyes; then
687   AC_MSG_ERROR(No working boost sleep implementation found.)
688 fi
689
690 fi
691
692 if test x$use_pkgconfig = xyes; then
693
694   if test x"$PKG_CONFIG" = "x"; then
695     AC_MSG_ERROR(pkg-config not found.)
696   fi
697
698   : #NOP
699   m4_ifdef(
700     [PKG_CHECK_MODULES],
701     [
702       PKG_CHECK_MODULES([SSL], [libssl],, [AC_MSG_ERROR(openssl  not found.)])
703       PKG_CHECK_MODULES([CRYPTO], [libcrypto],,[AC_MSG_ERROR(libcrypto  not found.)])
704       BITCOIN_QT_CHECK([PKG_CHECK_MODULES([PROTOBUF], [protobuf], [have_protobuf=yes], [BITCOIN_QT_FAIL(libprotobuf not found)])])
705       if test x$use_qr != xno; then
706         BITCOIN_QT_CHECK([PKG_CHECK_MODULES([QR], [libqrencode], [have_qrencode=yes], [have_qrencode=no])])
707       fi
708
709       if test "x$use_zmq" = "xyes"; then
710         PKG_CHECK_MODULES([ZMQ],[libzmq >= 4],
711           [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
712           [AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
713            AC_MSG_WARN([libzmq version 4.x or greater not found, disabling])
714            use_zmq=no])
715       else
716           AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
717       fi
718     ]
719   )
720 else
721   # BUG: Fix this:
722   echo 'BUG: configure does not yet check for the following dependencies if pkg-config is not on the system: libcrypto++, libgmp'
723
724   AC_CHECK_HEADER([openssl/crypto.h],,AC_MSG_ERROR(libcrypto headers missing))
725   AC_CHECK_LIB([crypto],      [main],CRYPTO_LIBS=-lcrypto, AC_MSG_ERROR(libcrypto missing))
726
727   AC_CHECK_HEADER([openssl/ssl.h],, AC_MSG_ERROR(libssl headers missing),)
728   AC_CHECK_LIB([ssl],         [main],SSL_LIBS=-lssl, AC_MSG_ERROR(libssl missing))
729
730   if test "x$use_zmq" = "xyes"; then
731      AC_CHECK_HEADER([zmq.h],
732        [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
733        [AC_MSG_WARN([zmq.h not found, disabling zmq support])
734         use_zmq=no
735         AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
736      AC_CHECK_LIB([zmq],[zmq_ctx_shutdown],ZMQ_LIBS=-lzmq,
737        [AC_MSG_WARN([libzmq >= 4.0 not found, disabling zmq support])
738         use_zmq=no
739         AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
740   else
741     AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
742   fi
743
744   if test "x$use_zmq" = "xyes"; then
745     dnl Assume libzmq was built for static linking
746     case $host in
747       *mingw*)
748         ZMQ_CFLAGS="$ZMQ_CFLAGS -DZMQ_STATIC"
749       ;;
750     esac
751   fi
752
753   BITCOIN_QT_CHECK(AC_CHECK_LIB([protobuf] ,[main],[PROTOBUF_LIBS=-lprotobuf], BITCOIN_QT_FAIL(libprotobuf not found)))
754   if test x$use_qr != xno; then
755     BITCOIN_QT_CHECK([AC_CHECK_LIB([qrencode], [main],[QR_LIBS=-lqrencode], [have_qrencode=no])])
756     BITCOIN_QT_CHECK([AC_CHECK_HEADER([qrencode.h],, have_qrencode=no)])
757   fi
758 fi
759
760 # These packages don't provide pkgconfig config files across all
761 # platforms, so we use older autoconf detection mechanisms:
762 AC_CHECK_HEADER([gmp.h],,AC_MSG_ERROR(libgmp headers missing))
763 AC_CHECK_LIB([gmp],[[__gmpn_sub_n]],GMP_LIBS=-lgmp, [AC_MSG_ERROR(libgmp missing)])
764
765 AC_CHECK_HEADER([gmpxx.h],,AC_MSG_ERROR(libgmpxx headers missing))
766 AC_CHECK_LIB([gmpxx],[main],GMPXX_LIBS=-lgmpxx, [AC_MSG_ERROR(libgmpxx missing)])
767
768 # libsnark header layout is broken unless cpp's -I is passed with the
769 # libsnark directory, so for now we use this hideous workaround:
770 echo 'Hunting for libsnark include directory...'
771 [LIBSNARK_INCDIR="$(echo "$CPPFLAGS" | sed 's,^.*-I\([^ ]*/include\).*$,\1/libsnark,')"]
772 if test -d "$LIBSNARK_INCDIR"; then
773    echo "Found libsnark include directory: $LIBSNARK_INCDIR"
774 else
775     AC_MSG_ERROR(libsnark include directory not found)
776 fi
777
778 CPPFLAGS="-I$LIBSNARK_INCDIR $CPPFLAGS"
779
780 # Now check for libsnark compilability using traditional autoconf tests:
781 AC_CHECK_HEADER([libsnark/gadgetlib1/gadget.hpp],,AC_MSG_ERROR(libsnark headers missing))
782 AC_CHECK_LIB([snark],[main],LIBSNARK_LIBS=-lsnark, [AC_MSG_ERROR(libsnark missing)], [-lgmpxx])
783
784 LIBZCASH_LIBS="-lsnark -lgmp -lgmpxx -lboost_system-mt -lcrypto -lsodium -fopenmp"
785
786 CXXFLAGS_TEMP="$CXXFLAGS"
787 LIBS_TEMP="$LIBS"
788 CXXFLAGS="$CXXFLAGS $SSL_CFLAGS $CRYPTO_CFLAGS"
789 LIBS="$LIBS $SSL_LIBS $CRYPTO_LIBS $GMP_LIBS $GMPXX_LIBS"
790 AC_CHECK_HEADER([openssl/ec.h],, AC_MSG_ERROR(OpenSSL ec header missing),)
791 CXXFLAGS="$CXXFLAGS_TEMP"
792 LIBS="$LIBS_TEMP"
793
794 BITCOIN_QT_PATH_PROGS([PROTOC], [protoc],$protoc_bin_path)
795
796 AC_MSG_CHECKING([whether to build bitcoind])
797 AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
798 AC_MSG_RESULT($build_bitcoind)
799
800 AC_MSG_CHECKING([whether to build utils (zcash-cli zcash-tx)])
801 AM_CONDITIONAL([BUILD_BITCOIN_UTILS], [test x$build_bitcoin_utils = xyes])
802 AC_MSG_RESULT($build_bitcoin_utils)
803
804 AC_MSG_CHECKING([whether to build libraries])
805 AM_CONDITIONAL([BUILD_BITCOIN_LIBS], [test x$build_bitcoin_libs = xyes])
806 if test x$build_bitcoin_libs = xyes; then
807   AC_DEFINE(HAVE_CONSENSUS_LIB, 1, [Define this symbol if the consensus lib has been built])
808   AC_CONFIG_FILES([libzcashconsensus.pc:libzcashconsensus.pc.in])
809 fi
810
811 AC_MSG_RESULT($build_bitcoin_libs)
812
813 AC_LANG_POP
814
815 if test "x$use_ccache" != "xno"; then
816   AC_MSG_CHECKING(if ccache should be used)
817   if test x$CCACHE = x; then
818     if test "x$use_ccache" = "xyes"; then
819       AC_MSG_ERROR([ccache not found.]);
820     else
821       use_ccache=no
822     fi
823   else
824     use_ccache=yes
825     CC="$ac_cv_path_CCACHE $CC"
826     CXX="$ac_cv_path_CCACHE $CXX"
827   fi
828   AC_MSG_RESULT($use_ccache)
829 fi
830 if test "x$use_ccache" = "xyes"; then
831     AX_CHECK_PREPROC_FLAG([-Qunused-arguments],[CPPFLAGS="-Qunused-arguments $CPPFLAGS"])
832 fi
833
834 dnl enable wallet
835 AC_MSG_CHECKING([if wallet should be enabled])
836 if test x$enable_wallet != xno; then
837   AC_MSG_RESULT(yes)
838   AC_DEFINE_UNQUOTED([ENABLE_WALLET],[1],[Define to 1 to enable wallet functions])
839
840 else
841   AC_MSG_RESULT(no)
842 fi
843
844 dnl enable mining
845 AC_MSG_CHECKING([if mining should be enabled])
846 if test x$enable_mining != xno; then
847   AC_MSG_RESULT(yes)
848   AC_DEFINE(ENABLE_MINING, 1, [Define to 1 to enable mining functions])
849
850 else
851   AC_MSG_RESULT(no)
852 fi
853
854 dnl enable upnp support
855 AC_MSG_CHECKING([whether to build with support for UPnP])
856 if test x$have_miniupnpc = xno; then
857   if test x$use_upnp = xyes; then
858      AC_MSG_ERROR("UPnP requested but cannot be built. use --without-miniupnpc")
859   fi
860   AC_MSG_RESULT(no)
861 else
862   if test x$use_upnp != xno; then
863     AC_MSG_RESULT(yes)
864     AC_MSG_CHECKING([whether to build with UPnP enabled by default])
865     use_upnp=yes
866     upnp_setting=0
867     if test x$use_upnp_default != xno; then
868       use_upnp_default=yes
869       upnp_setting=1
870     fi
871     AC_MSG_RESULT($use_upnp_default)
872     AC_DEFINE_UNQUOTED([USE_UPNP],[$upnp_setting],[UPnP support not compiled if undefined, otherwise value (0 or 1) determines default state])
873     if test x$TARGET_OS = xwindows; then
874       MINIUPNPC_CPPFLAGS="-DSTATICLIB -DMINIUPNP_STATICLIB"
875     fi
876   else
877     AC_MSG_RESULT(no)
878   fi
879 fi
880
881 dnl these are only used when qt is enabled
882 BUILD_TEST_QT=""
883 if test x$bitcoin_enable_qt != xno; then
884   dnl enable dbus support
885   AC_MSG_CHECKING([whether to build GUI with support for D-Bus])
886   if test x$bitcoin_enable_qt_dbus != xno; then
887     AC_DEFINE([USE_DBUS],[1],[Define if dbus support should be compiled in])
888   fi
889   AC_MSG_RESULT($bitcoin_enable_qt_dbus)
890
891   dnl enable qr support
892   AC_MSG_CHECKING([whether to build GUI with support for QR codes])
893   if test x$have_qrencode = xno; then
894     if test x$use_qr = xyes; then
895      AC_MSG_ERROR("QR support requested but cannot be built. use --without-qrencode")
896     fi
897     AC_MSG_RESULT(no)
898   else
899     if test x$use_qr != xno; then
900       AC_MSG_RESULT(yes)
901       AC_DEFINE([USE_QRCODE],[1],[Define if QR support should be compiled in])
902       use_qr=yes
903     else
904       AC_MSG_RESULT(no)
905     fi
906   fi
907
908   if test x$XGETTEXT = x; then
909     AC_MSG_WARN("xgettext is required to update qt translations")
910   fi
911
912   AC_MSG_CHECKING([whether to build test_bitcoin-qt])
913   if test x$use_gui_tests$bitcoin_enable_qt_test = xyesyes; then
914     AC_MSG_RESULT([yes])
915     BUILD_TEST_QT="yes"
916   else
917     AC_MSG_RESULT([no])
918   fi
919 fi
920
921 AM_CONDITIONAL([ENABLE_ZMQ], [test "x$use_zmq" = "xyes"])
922
923 AC_MSG_CHECKING([whether to build test_bitcoin])
924 if test x$use_tests = xyes; then
925   AC_MSG_RESULT([yes])
926   BUILD_TEST="yes"
927 else
928   AC_MSG_RESULT([no])
929   BUILD_TEST=""
930 fi
931
932 AC_MSG_CHECKING([whether to reduce exports])
933 if test x$use_reduce_exports = xyes; then
934   AC_MSG_RESULT([yes])
935 else
936   AC_MSG_RESULT([no])
937 fi
938
939 if test x$build_bitcoin_utils$build_bitcoin_libs$build_bitcoind$bitcoin_enable_qt$use_tests = xnonononono; then
940   AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon --with-gui or --enable-tests])
941 fi
942
943 AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin])
944 AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin])
945 AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows])
946 AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet = xyes])
947 AM_CONDITIONAL([ENABLE_MINING],[test x$enable_mining = xyes])
948 AM_CONDITIONAL([ENABLE_TESTS],[test x$BUILD_TEST = xyes])
949 AM_CONDITIONAL([ENABLE_QT],[test x$bitcoin_enable_qt = xyes])
950 AM_CONDITIONAL([ENABLE_QT_TESTS],[test x$BUILD_TEST_QT = xyes])
951 AM_CONDITIONAL([USE_QRCODE], [test x$use_qr = xyes])
952 AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
953 AM_CONDITIONAL([USE_COMPARISON_TOOL],[test x$use_comparison_tool != xno])
954 AM_CONDITIONAL([USE_COMPARISON_TOOL_REORG_TESTS],[test x$use_comparison_tool_reorg_test != xno])
955 AM_CONDITIONAL([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes])
956 AM_CONDITIONAL([HARDEN],[test x$use_hardening = xyes])
957
958 AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version])
959 AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor version])
960 AC_DEFINE(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION, [Build revision])
961 AC_DEFINE(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD, [Version Build])
962 AC_DEFINE(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE, [Version is release])
963 AC_DEFINE(COPYRIGHT_YEAR, _COPYRIGHT_YEAR, [Version is release])
964 AC_SUBST(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR)
965 AC_SUBST(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR)
966 AC_SUBST(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION)
967 AC_SUBST(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD)
968 AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
969 AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
970
971 AC_SUBST(RELDFLAGS)
972 AC_SUBST(LIBTOOL_APP_LDFLAGS)
973 AC_SUBST(USE_UPNP)
974 AC_SUBST(USE_QRCODE)
975 AC_SUBST(BOOST_LIBS)
976 AC_SUBST(TESTDEFS)
977 AC_SUBST(LEVELDB_TARGET_FLAGS)
978 AC_SUBST(MINIUPNPC_CPPFLAGS)
979 AC_SUBST(MINIUPNPC_LIBS)
980 AC_SUBST(GMP_LIBS)
981 AC_SUBST(GMPXX_LIBS)
982 AC_SUBST(LIBSNARK_LIBS)
983 AC_SUBST(LIBZCASH_LIBS)
984 AC_CONFIG_FILES([Makefile src/Makefile doc/man/Makefile share/setup.nsi share/qt/Info.plist src/test/buildenv.py])
985 AC_CONFIG_FILES([qa/pull-tester/run-bitcoind-for-test.sh],[chmod +x qa/pull-tester/run-bitcoind-for-test.sh])
986 AC_CONFIG_FILES([qa/pull-tester/tests-config.sh],[chmod +x qa/pull-tester/tests-config.sh])
987
988 dnl boost's m4 checks do something really nasty: they export these vars. As a
989 dnl result, they leak into secp256k1's configure and crazy things happen.
990 dnl Until this is fixed upstream and we've synced, we'll just un-export them.
991 CPPFLAGS_TEMP="$CPPFLAGS"
992 unset CPPFLAGS
993 CPPFLAGS="$CPPFLAGS_TEMP"
994
995 LDFLAGS_TEMP="$LDFLAGS"
996 unset LDFLAGS
997 LDFLAGS="$LDFLAGS_TEMP"
998
999 LIBS_TEMP="$LIBS"
1000 unset LIBS
1001 LIBS="$LIBS_TEMP"
1002
1003 PKGCONFIG_PATH_TEMP="$PKG_CONFIG_PATH"
1004 unset PKG_CONFIG_PATH
1005 PKG_CONFIG_PATH="$PKGCONFIG_PATH_TEMP"
1006
1007 PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
1008 unset PKG_CONFIG_LIBDIR
1009 PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
1010
1011 ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no"
1012 AC_CONFIG_SUBDIRS([src/secp256k1 src/univalue])
1013
1014 AC_OUTPUT
1015
1016 dnl Taken from https://wiki.debian.org/RpathIssue
1017 case $host in
1018    *-*-linux-gnu)
1019      AC_MSG_RESULT([Fixing libtool for -rpath problems.])
1020      sed < libtool > libtool-2 \
1021      's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/'
1022      mv libtool-2 libtool
1023      chmod 755 libtool
1024    ;;
1025 esac
This page took 0.07596 seconds and 4 git commands to generate.