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