]> Git Repo - VerusCoin.git/blob - configure.ac
Auto merge of #2068 - bitcartel:2045_sendmany_fee_zero, r=bitcartel
[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_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_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 mining
800 AC_MSG_CHECKING([if mining should be enabled])
801 if test x$enable_mining != xno; then
802   AC_MSG_RESULT(yes)
803   AC_DEFINE(ENABLE_MINING, 1, [Define to 1 to enable mining functions])
804
805 else
806   AC_MSG_RESULT(no)
807 fi
808
809 dnl enable upnp support
810 AC_MSG_CHECKING([whether to build with support for UPnP])
811 if test x$have_miniupnpc = xno; then
812   if test x$use_upnp = xyes; then
813      AC_MSG_ERROR("UPnP requested but cannot be built. use --without-miniupnpc")
814   fi
815   AC_MSG_RESULT(no)
816 else
817   if test x$use_upnp != xno; then
818     AC_MSG_RESULT(yes)
819     AC_MSG_CHECKING([whether to build with UPnP enabled by default])
820     use_upnp=yes
821     upnp_setting=0
822     if test x$use_upnp_default != xno; then
823       use_upnp_default=yes
824       upnp_setting=1
825     fi
826     AC_MSG_RESULT($use_upnp_default)
827     AC_DEFINE_UNQUOTED([USE_UPNP],[$upnp_setting],[UPnP support not compiled if undefined, otherwise value (0 or 1) determines default state])
828     if test x$TARGET_OS = xwindows; then
829       MINIUPNPC_CPPFLAGS="-DSTATICLIB -DMINIUPNP_STATICLIB"
830     fi
831   else
832     AC_MSG_RESULT(no)
833   fi
834 fi
835
836 dnl these are only used when qt is enabled
837 BUILD_TEST_QT=""
838 if test x$bitcoin_enable_qt != xno; then
839   dnl enable dbus support
840   AC_MSG_CHECKING([whether to build GUI with support for D-Bus])
841   if test x$bitcoin_enable_qt_dbus != xno; then
842     AC_DEFINE([USE_DBUS],[1],[Define if dbus support should be compiled in])
843   fi
844   AC_MSG_RESULT($bitcoin_enable_qt_dbus)
845
846   dnl enable qr support
847   AC_MSG_CHECKING([whether to build GUI with support for QR codes])
848   if test x$have_qrencode = xno; then
849     if test x$use_qr = xyes; then
850      AC_MSG_ERROR("QR support requested but cannot be built. use --without-qrencode")
851     fi
852     AC_MSG_RESULT(no)
853   else
854     if test x$use_qr != xno; then
855       AC_MSG_RESULT(yes)
856       AC_DEFINE([USE_QRCODE],[1],[Define if QR support should be compiled in])
857       use_qr=yes
858     else
859       AC_MSG_RESULT(no)
860     fi
861   fi
862
863   if test x$XGETTEXT = x; then
864     AC_MSG_WARN("xgettext is required to update qt translations")
865   fi
866
867   AC_MSG_CHECKING([whether to build test_bitcoin-qt])
868   if test x$use_gui_tests$bitcoin_enable_qt_test = xyesyes; then
869     AC_MSG_RESULT([yes])
870     BUILD_TEST_QT="yes"
871   else
872     AC_MSG_RESULT([no])
873   fi
874 fi
875
876 AC_MSG_CHECKING([whether to build test_bitcoin])
877 if test x$use_tests = xyes; then
878   AC_MSG_RESULT([yes])
879   BUILD_TEST="yes"
880 else
881   AC_MSG_RESULT([no])
882   BUILD_TEST=""
883 fi
884
885 AC_MSG_CHECKING([whether to reduce exports])
886 if test x$use_reduce_exports = xyes; then
887   AC_MSG_RESULT([yes])
888 else
889   AC_MSG_RESULT([no])
890 fi
891
892 if test x$build_bitcoin_utils$build_bitcoin_libs$build_bitcoind$bitcoin_enable_qt$use_tests = xnonononono; then
893   AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon --with-gui or --enable-tests])
894 fi
895
896 AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin])
897 AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin])
898 AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows])
899 AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet = xyes])
900 AM_CONDITIONAL([ENABLE_MINING],[test x$enable_mining = xyes])
901 AM_CONDITIONAL([ENABLE_TESTS],[test x$BUILD_TEST = xyes])
902 AM_CONDITIONAL([ENABLE_QT],[test x$bitcoin_enable_qt = xyes])
903 AM_CONDITIONAL([ENABLE_QT_TESTS],[test x$BUILD_TEST_QT = xyes])
904 AM_CONDITIONAL([USE_QRCODE], [test x$use_qr = xyes])
905 AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
906 AM_CONDITIONAL([USE_COMPARISON_TOOL],[test x$use_comparison_tool != xno])
907 AM_CONDITIONAL([USE_COMPARISON_TOOL_REORG_TESTS],[test x$use_comparison_tool_reorg_test != xno])
908 AM_CONDITIONAL([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes])
909 AM_CONDITIONAL([HARDEN],[test x$use_hardening = xyes])
910
911 AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version])
912 AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor version])
913 AC_DEFINE(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION, [Build revision])
914 AC_DEFINE(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD, [Version Build])
915 AC_DEFINE(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE, [Version is release])
916 AC_DEFINE(COPYRIGHT_YEAR, _COPYRIGHT_YEAR, [Version is release])
917 AC_SUBST(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR)
918 AC_SUBST(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR)
919 AC_SUBST(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION)
920 AC_SUBST(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD)
921 AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
922 AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
923
924 AC_SUBST(RELDFLAGS)
925 AC_SUBST(LIBTOOL_APP_LDFLAGS)
926 AC_SUBST(USE_UPNP)
927 AC_SUBST(USE_QRCODE)
928 AC_SUBST(BOOST_LIBS)
929 AC_SUBST(TESTDEFS)
930 AC_SUBST(LEVELDB_TARGET_FLAGS)
931 AC_SUBST(MINIUPNPC_CPPFLAGS)
932 AC_SUBST(MINIUPNPC_LIBS)
933 AC_SUBST(GMP_LIBS)
934 AC_SUBST(GMPXX_LIBS)
935 AC_SUBST(LIBSNARK_LIBS)
936 AC_SUBST(LIBZCASH_LIBS)
937 AC_CONFIG_FILES([Makefile src/Makefile share/setup.nsi share/qt/Info.plist src/test/buildenv.py])
938 AC_CONFIG_FILES([qa/pull-tester/run-bitcoind-for-test.sh],[chmod +x qa/pull-tester/run-bitcoind-for-test.sh])
939 AC_CONFIG_FILES([qa/pull-tester/tests-config.sh],[chmod +x qa/pull-tester/tests-config.sh])
940
941 dnl boost's m4 checks do something really nasty: they export these vars. As a
942 dnl result, they leak into secp256k1's configure and crazy things happen.
943 dnl Until this is fixed upstream and we've synced, we'll just un-export them.
944 CPPFLAGS_TEMP="$CPPFLAGS"
945 unset CPPFLAGS
946 CPPFLAGS="$CPPFLAGS_TEMP"
947
948 LDFLAGS_TEMP="$LDFLAGS"
949 unset LDFLAGS
950 LDFLAGS="$LDFLAGS_TEMP"
951
952 LIBS_TEMP="$LIBS"
953 unset LIBS
954 LIBS="$LIBS_TEMP"
955
956 PKGCONFIG_PATH_TEMP="$PKG_CONFIG_PATH"
957 unset PKG_CONFIG_PATH
958 PKG_CONFIG_PATH="$PKGCONFIG_PATH_TEMP"
959
960 PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
961 unset PKG_CONFIG_LIBDIR
962 PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
963
964 ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no"
965 AC_CONFIG_SUBDIRS([src/secp256k1])
966
967 AC_OUTPUT
968
969 dnl Taken from https://wiki.debian.org/RpathIssue
970 case $host in
971    *-*-linux-gnu)
972      AC_MSG_RESULT([Fixing libtool for -rpath problems.])
973      sed < libtool > libtool-2 \
974      's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/'
975      mv libtool-2 libtool
976      chmod 755 libtool
977    ;;
978 esac
This page took 0.079667 seconds and 4 git commands to generate.