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