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