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