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