]> Git Repo - VerusCoin.git/blob - configure.ac
Add Blossom to upgrade list
[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, 2)
4 define(_CLIENT_VERSION_MINOR, 0)
5 define(_CLIENT_VERSION_REVISION, 4)
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, 2018)
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 BITCOIN_DAEMON_NAME=zcashd
18 BITCOIN_CLI_NAME=zcash-cli
19 BITCOIN_TX_NAME=zcash-tx
20
21 dnl Unless the user specified ARFLAGS, force it to be cr
22 AC_ARG_VAR(ARFLAGS, [Flags for the archiver, defaults to <cr> if not set])
23 if test "x${ARFLAGS+set}" != "xset"; then
24   ARFLAGS="cr"
25 fi
26
27 AC_CANONICAL_HOST
28
29 AH_TOP([#ifndef BITCOIN_CONFIG_H])
30 AH_TOP([#define BITCOIN_CONFIG_H])
31 AH_BOTTOM([#endif //BITCOIN_CONFIG_H])
32
33 dnl faketime breaks configure and is only needed for make. Disable it here.
34 unset FAKETIME
35
36 dnl Automake init set-up and checks
37 AM_INIT_AUTOMAKE([no-define subdir-objects foreign tar-pax])
38
39 dnl faketime messes with timestamps and causes configure to be re-run.
40 dnl --disable-maintainer-mode can be used to bypass this.
41 AM_MAINTAINER_MODE([enable])
42
43 dnl make the compilation flags quiet unless V=1 is used
44 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
45
46 dnl Compiler checks (here before libtool).
47 if test "x${CXXFLAGS+set}" = "xset"; then
48   CXXFLAGS_overridden=yes
49 else
50   CXXFLAGS_overridden=no
51 fi
52
53 AC_PROG_CXX
54 m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCXX])
55
56 dnl By default, libtool for mingw refuses to link static libs into a dll for
57 dnl fear of mixing pic/non-pic objects, and import/export complications. Since
58 dnl we have those under control, re-enable that functionality.
59 case $host in
60   *mingw*)
61      lt_cv_deplibs_check_method="pass_all"
62   ;;
63 esac
64 dnl Require C++11 compiler (no GNU extensions)
65 AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory], [nodefault])
66 dnl Check if -latomic is required for <std::atomic>
67 CHECK_ATOMIC
68
69 dnl Libtool init checks.
70 LT_INIT([pic-only])
71
72 dnl Check/return PATH for base programs.
73 AC_PATH_TOOL(AR, ar)
74 AC_PATH_TOOL(RANLIB, ranlib)
75 AC_PATH_TOOL(STRIP, strip)
76 AC_PATH_TOOL(GCOV, gcov)
77 AC_PATH_PROG(LCOV, lcov)
78 AC_PATH_PROG(GENHTML, genhtml)
79 AC_PATH_PROG([GIT], [git])
80 AC_PATH_PROG(CCACHE,ccache)
81 AC_PATH_PROG(XGETTEXT,xgettext)
82 AC_PATH_PROG(HEXDUMP,hexdump)
83 AC_PATH_TOOL(READELF,readelf)
84 AC_PATH_TOOL(CPPFILT,c++filt)
85
86 # Enable wallet
87 AC_ARG_ENABLE([wallet],
88   [AS_HELP_STRING([--enable-wallet],
89   [enable wallet (default is yes)])],
90   [enable_wallet=$enableval],
91   [enable_wallet=yes])
92
93 AC_ARG_ENABLE([mining],
94   [AS_HELP_STRING([--enable-mining],
95   [enable mining (default is yes)])],
96   [enable_mining=$enableval],
97   [enable_mining=yes])
98
99 AC_ARG_ENABLE([proton],
100   [AS_HELP_STRING([--disable-proton],
101   [disable Proton (AMQP messaging)])],
102   [use_proton=$enableval],
103   [use_proton=yes])
104
105 AC_ARG_ENABLE(tests,
106     AS_HELP_STRING([--enable-tests],[compile tests (default is yes)]),
107     [use_tests=$enableval],
108     [use_tests=yes])
109
110 AC_ARG_ENABLE([asan],
111   [AS_HELP_STRING([--enable-asan],
112   [instrument the executables with asan (default is no)])],
113   [use_asan=$enableval],
114   [use_asan=no])
115
116 AC_ARG_ENABLE([tsan],
117   [AS_HELP_STRING([--enable-tsan],
118   [instrument the executables with tsan (default is no)])],
119   [use_tsan=$enableval],
120   [use_tsan=no])
121
122 AC_ARG_ENABLE([hardening],
123   [AS_HELP_STRING([--enable-hardening],
124   [attempt to harden the resulting executables (default is yes)])],
125   [use_hardening=$enableval],
126   [use_hardening=yes])
127
128 AC_ARG_ENABLE([reduce-exports],
129   [AS_HELP_STRING([--enable-reduce-exports],
130   [attempt to reduce exported symbols in the resulting executables (default is no)])],
131   [use_reduce_exports=$enableval],
132   [use_reduce_exports=no])
133
134 AC_ARG_ENABLE([ccache],
135   [AS_HELP_STRING([--enable-ccache],
136   [use ccache for building (default is yes if ccache is found)])],
137   [use_ccache=$enableval],
138   [use_ccache=auto])
139
140 AC_ARG_ENABLE([lcov],
141   [AS_HELP_STRING([--enable-lcov],
142   [enable lcov testing (default is no)])],
143   [use_lcov=yes],
144   [use_lcov=no])
145
146 AC_ARG_ENABLE([glibc-back-compat],
147   [AS_HELP_STRING([--enable-glibc-back-compat],
148   [enable backwards compatibility with glibc])],
149   [use_glibc_compat=$enableval],
150   [use_glibc_compat=no])
151
152 AC_ARG_ENABLE([zmq],
153   [AS_HELP_STRING([--disable-zmq],
154   [disable ZMQ notifications])],
155   [use_zmq=$enableval],
156   [use_zmq=yes])
157
158 AC_ARG_WITH([protoc-bindir],[AS_HELP_STRING([--with-protoc-bindir=BIN_DIR],[specify protoc bin path])], [protoc_bin_path=$withval], [])
159
160 AC_ARG_ENABLE(man,
161     [AS_HELP_STRING([--disable-man],
162                     [do not install man pages (default is to install)])],,
163     enable_man=yes)
164 AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
165
166 # Enable debug
167 AC_ARG_ENABLE([debug],
168     [AS_HELP_STRING([--enable-debug],
169                     [use debug compiler flags and macros (default is no)])],
170     [enable_debug=$enableval],
171     [enable_debug=no])
172
173 # Turn warnings into errors
174 AC_ARG_ENABLE([werror],
175     [AS_HELP_STRING([--enable-werror],
176                     [Treat all compiler warnings as errors (default is no)])],
177     [enable_werror=$enableval],
178     [enable_werror=no])
179
180 AC_LANG_PUSH([C++])
181 AX_CHECK_COMPILE_FLAG([-Werror],[CXXFLAG_WERROR="-Werror"],[CXXFLAG_WERROR=""])
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 ERROR_CXXFLAGS=
195 if test "x$enable_werror" = "xyes"; then
196   if test "x$CXXFLAG_WERROR" = "x"; then
197     AC_MSG_ERROR("enable-werror set but -Werror is not usable")
198   fi
199   ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror"
200 fi
201
202 if test "x$CXXFLAGS_overridden" = "xno"; then
203   AX_CHECK_COMPILE_FLAG([-Wall],[CXXFLAGS="$CXXFLAGS -Wall"],,[[$CXXFLAG_WERROR]])
204   AX_CHECK_COMPILE_FLAG([-Wextra],[CXXFLAGS="$CXXFLAGS -Wextra"],,[[$CXXFLAG_WERROR]])
205   AX_CHECK_COMPILE_FLAG([-Wformat],[CXXFLAGS="$CXXFLAGS -Wformat"],,[[$CXXFLAG_WERROR]])
206   AX_CHECK_COMPILE_FLAG([-Wvla],[CXXFLAGS="$CXXFLAGS -Wvla"],,[[$CXXFLAG_WERROR]])
207   AX_CHECK_COMPILE_FLAG([-Wformat-security],[CXXFLAGS="$CXXFLAGS -Wformat-security"],,[[$CXXFLAG_WERROR]])
208
209   ## Some compilers (gcc) ignore unknown -Wno-* options, but warn about all
210   ## unknown options if any other warning is produced. Test the -Wfoo case, and
211   ## set the -Wno-foo case if it works.
212   AX_CHECK_COMPILE_FLAG([-Wunused-parameter],[CXXFLAGS="$CXXFLAGS -Wno-unused-parameter"],,[[$CXXFLAG_WERROR]])
213   AX_CHECK_COMPILE_FLAG([-Wself-assign],[CXXFLAGS="$CXXFLAGS -Wno-self-assign"],,[[$CXXFLAG_WERROR]])
214   AX_CHECK_COMPILE_FLAG([-Wunused-local-typedef],[CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"],,[[$CXXFLAG_WERROR]])
215   AX_CHECK_COMPILE_FLAG([-Wdeprecated-register],[CXXFLAGS="$CXXFLAGS -Wno-deprecated-register"],,[[$CXXFLAG_WERROR]])
216 fi
217 CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"
218
219 AC_ARG_WITH([utils],
220   [AS_HELP_STRING([--with-utils],
221   [build zcash-cli zcash-tx (default=yes)])],
222   [build_bitcoin_utils=$withval],
223   [build_bitcoin_utils=yes])
224
225 AC_ARG_WITH([libs],
226   [AS_HELP_STRING([--with-libs],
227   [build libraries (default=no)])],
228   [build_bitcoin_libs=$withval],
229   [build_bitcoin_libs=no])
230
231 AC_ARG_WITH([daemon],
232   [AS_HELP_STRING([--with-daemon],
233   [build bitcoind daemon (default=yes)])],
234   [build_bitcoind=$withval],
235   [build_bitcoind=yes])
236
237 use_pkgconfig=yes
238 case $host in
239   *mingw*)
240
241      #pkgconfig does more harm than good with MinGW
242      use_pkgconfig=no
243
244      TARGET_OS=windows
245      AC_CHECK_LIB([mingwthrd],      [main],, AC_MSG_ERROR(lib missing))
246      AC_CHECK_LIB([kernel32],      [main],, AC_MSG_ERROR(lib missing))
247      AC_CHECK_LIB([user32],      [main],, AC_MSG_ERROR(lib missing))
248      AC_CHECK_LIB([gdi32],      [main],, AC_MSG_ERROR(lib missing))
249      AC_CHECK_LIB([comdlg32],      [main],, AC_MSG_ERROR(lib missing))
250      AC_CHECK_LIB([winspool],      [main],, AC_MSG_ERROR(lib missing))
251      AC_CHECK_LIB([winmm],      [main],, AC_MSG_ERROR(lib missing))
252      AC_CHECK_LIB([shell32],      [main],, AC_MSG_ERROR(lib missing))
253      AC_CHECK_LIB([comctl32],      [main],, AC_MSG_ERROR(lib missing))
254      AC_CHECK_LIB([ole32],      [main],, AC_MSG_ERROR(lib missing))
255      AC_CHECK_LIB([oleaut32],      [main],, AC_MSG_ERROR(lib missing))
256      AC_CHECK_LIB([uuid],      [main],, AC_MSG_ERROR(lib missing))
257      AC_CHECK_LIB([rpcrt4],      [main],, AC_MSG_ERROR(lib missing))
258      AC_CHECK_LIB([advapi32],      [main],, AC_MSG_ERROR(lib missing))
259      AC_CHECK_LIB([ws2_32],      [main],, AC_MSG_ERROR(lib missing))
260      AC_CHECK_LIB([mswsock],      [main],, AC_MSG_ERROR(lib missing))
261      AC_CHECK_LIB([shlwapi],      [main],, AC_MSG_ERROR(lib missing))
262      AC_CHECK_LIB([iphlpapi],      [main],, AC_MSG_ERROR(lib missing))
263      AC_CHECK_LIB([crypt32],      [main],, AC_MSG_ERROR(lib missing))
264
265      # -static is interpreted by libtool, where it has a different meaning.
266      # In libtool-speak, it's -all-static.
267      AX_CHECK_LINK_FLAG([[-static]],[LIBTOOL_APP_LDFLAGS="$LIBTOOL_APP_LDFLAGS -all-static"])
268
269      AC_PATH_PROG([MAKENSIS], [makensis], none)
270      if test x$MAKENSIS = xnone; then
271        AC_MSG_WARN("makensis not found. Cannot create installer.")
272      fi
273
274      AC_PATH_TOOL(WINDRES, windres, none)
275      if test x$WINDRES = xnone; then
276        AC_MSG_ERROR("windres not found")
277      fi
278
279      CPPFLAGS="$CPPFLAGS -D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB"
280      LEVELDB_TARGET_FLAGS="TARGET_OS=OS_WINDOWS_CROSSCOMPILE"
281      if test "x$CXXFLAGS_overridden" = "xno"; then
282        CXXFLAGS="$CXXFLAGS -w"
283      fi
284      case $host in
285        i?86-*) WINDOWS_BITS=32 ;;
286        x86_64-*) WINDOWS_BITS=64 ;;
287        *) AC_MSG_ERROR("Could not determine win32/win64 for installer") ;;
288      esac
289      AC_SUBST(WINDOWS_BITS)
290
291      dnl libtool insists upon adding -nostdlib and a list of objects/libs to link against.
292      dnl That breaks our ability to build dll's with static libgcc/libstdc++/libssp. Override
293      dnl its command here, with the predeps/postdeps removed, and -static inserted. Postdeps are
294      dnl also overridden to prevent their insertion later.
295      dnl This should only affect dll's.
296      archive_cmds_CXX="\$CC -shared \$libobjs \$deplibs \$compiler_flags -static -o \$output_objdir/\$soname \${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib"
297      postdeps_CXX=
298
299      ;;
300   *darwin*)
301      TARGET_OS=darwin
302      LEVELDB_TARGET_FLAGS="TARGET_OS=Darwin"
303      if  test x$cross_compiling != xyes; then
304        BUILD_OS=darwin
305        AC_CHECK_PROG([PORT],port, port)
306        if test x$PORT = xport; then
307          dnl add default macports paths
308          CPPFLAGS="$CPPFLAGS -isystem /opt/local/include"
309          LIBS="$LIBS -L/opt/local/lib"
310          if test -d /opt/local/include/db62; then
311            CPPFLAGS="$CPPFLAGS -I/opt/local/include/db62"
312            LIBS="$LIBS -L/opt/local/lib/db62"
313          fi
314        fi
315
316        AC_CHECK_PROG([BREW],brew, brew)
317        if test x$BREW = xbrew; then
318          dnl These Homebrew packages may be keg-only, meaning that they won't be found
319          dnl in expected paths because they may conflict with system files. Ask
320          dnl Homebrew where each one is located, then adjust paths accordingly.
321          dnl It's safe to add these paths even if the functionality is disabled by
322          dnl the user (--without-wallet for example).
323
324          openssl_prefix=`$BREW --prefix openssl 2>/dev/null`
325          bdb_prefix=`$BREW --prefix berkeley-db4 2>/dev/null`
326          if test x$openssl_prefix != x; then
327            PKG_CONFIG_PATH="$openssl_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
328            export PKG_CONFIG_PATH
329          fi
330          if test x$bdb_prefix != x; then
331            CPPFLAGS="$CPPFLAGS -I$bdb_prefix/include"
332            LIBS="$LIBS -L$bdb_prefix/lib"
333          fi
334        fi
335      else
336        case $build_os in
337          *darwin*)
338            BUILD_OS=darwin
339            ;;
340          *)
341            AC_PATH_TOOL([INSTALLNAMETOOL], [install_name_tool], install_name_tool)
342            AC_PATH_TOOL([OTOOL], [otool], otool)
343            AC_PATH_PROGS([GENISOIMAGE], [genisoimage mkisofs],genisoimage)
344
345            dnl libtool will try to strip the static lib, which is a problem for
346            dnl cross-builds because strip attempts to call a hard-coded ld,
347            dnl which may not exist in the path. Stripping the .a is not
348            dnl necessary, so just disable it.
349            old_striplib=
350            ;;
351        esac
352      fi
353
354      AX_CHECK_LINK_FLAG([[-Wl,-headerpad_max_install_names]], [LDFLAGS="$LDFLAGS -Wl,-headerpad_max_install_names"])
355      CPPFLAGS="$CPPFLAGS -DMAC_OSX"
356      OBJCXXFLAGS="$CXXFLAGS"
357      ;;
358    *linux*)
359      TARGET_OS=linux
360      ;;
361    *)
362      ;;
363 esac
364
365 if test x$use_pkgconfig = xyes; then
366   m4_ifndef([PKG_PROG_PKG_CONFIG], [AC_MSG_ERROR(PKG_PROG_PKG_CONFIG macro not found. Please install pkg-config and re-run autogen.sh.)])
367   m4_ifdef([PKG_PROG_PKG_CONFIG], [
368   PKG_PROG_PKG_CONFIG
369   if test x"$PKG_CONFIG" = "x"; then
370     AC_MSG_ERROR(pkg-config not found.)
371   fi
372   ])
373 fi
374
375 if test x$use_lcov = xyes; then
376   if test x$LCOV = x; then
377     AC_MSG_ERROR("lcov testing requested but lcov not found")
378   fi
379   if test x$GCOV = x; then
380     AC_MSG_ERROR("lcov testing requested but gcov not found")
381   fi
382   if test x$GENHTML = x; then
383     AC_MSG_ERROR("lcov testing requested but genhtml not found")
384   fi
385   LCOV="$LCOV --gcov-tool=$GCOV --rc lcov_branch_coverage=1"
386   GENHTML="$GENHTML --branch-coverage"
387   AX_CHECK_COMPILE_FLAG([--coverage],[CXXFLAGS="$CXXFLAGS --coverage"],
388     [AC_MSG_ERROR("lcov testing requested but --coverage flag does not work")])
389 fi
390
391 dnl Check for endianness
392 AC_C_BIGENDIAN
393
394 dnl Check for pthread compile/link requirements
395 AX_PTHREAD
396
397 # The following macro will add the necessary defines to bitcoin-config.h, but
398 # they also need to be passed down to any subprojects. Pull the results out of
399 # the cache and add them to CPPFLAGS.
400 AC_SYS_LARGEFILE
401 # detect POSIX or GNU variant of strerror_r
402 AC_FUNC_STRERROR_R
403
404 if test x$ac_cv_sys_file_offset_bits != x &&
405    test x$ac_cv_sys_file_offset_bits != xno &&
406    test x$ac_cv_sys_file_offset_bits != xunknown; then
407   CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
408 fi
409
410 if test x$ac_cv_sys_large_files != x &&
411    test x$ac_cv_sys_large_files != xno &&
412    test x$ac_cv_sys_large_files != xunknown; then
413   CPPFLAGS="$CPPFLAGS -D_LARGE_FILES=$ac_cv_sys_large_files"
414 fi
415
416 AX_CHECK_LINK_FLAG([[-Wl,--large-address-aware]], [LDFLAGS="$LDFLAGS -Wl,--large-address-aware"])
417
418 AX_GCC_FUNC_ATTRIBUTE([visibility])
419 AX_GCC_FUNC_ATTRIBUTE([dllexport])
420 AX_GCC_FUNC_ATTRIBUTE([dllimport])
421
422 if test x$use_glibc_compat != xno; then
423
424   #glibc absorbed clock_gettime in 2.17. librt (its previous location) is safe to link
425   #in anyway for back-compat.
426   AC_CHECK_LIB([rt],[clock_gettime],, AC_MSG_ERROR(lib missing))
427
428   #__fdelt_chk's params and return type have changed from long unsigned int to long int.
429   # See which one is present here.
430   AC_MSG_CHECKING(__fdelt_chk type)
431   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef _FORTIFY_SOURCE
432                     #undef _FORTIFY_SOURCE
433                   #endif
434                   #define _FORTIFY_SOURCE 2
435                   #include <sys/select.h>
436      extern "C" long unsigned int __fdelt_warn(long unsigned int);]],[[]])],
437     [ fdelt_type="long unsigned int"],
438     [ fdelt_type="long int"])
439   AC_MSG_RESULT($fdelt_type)
440   AC_DEFINE_UNQUOTED(FDELT_TYPE, $fdelt_type,[parameter and return value type for __fdelt_chk])
441 else
442   AC_SEARCH_LIBS([clock_gettime],[rt])
443 fi
444
445 if test x$TARGET_OS != xwindows; then
446   # All windows code is PIC, forcing it on just adds useless compile warnings
447   AX_CHECK_COMPILE_FLAG([-fPIC],[PIC_FLAGS="-fPIC"])
448 fi
449
450 #asan and tsan cannot be used together
451 if test x$use_asan$use_tsan == xyesyes; then
452   AC_MSG_ERROR(asan and tsan cannot be simultaneously enabled)
453 fi
454
455 # using asan flag to enable address sanitizer and undefined behavior sanitizer
456 if test x$use_asan == xyes; then
457   AX_CHECK_LINK_FLAG([-static-libstdc++],[SAN_LDFLAGS="$SAN_LDFLAGS -static-libstdc++"],[AC_MSG_ERROR(Cannot statically link -static-libstdc++)])
458   AX_CHECK_LINK_FLAG([-static-libasan],[SAN_LDFLAGS="$SAN_LDFLAGS -static-libasan"],[AC_MSG_ERROR(Cannot statically link -static-libasan)])
459   AX_CHECK_COMPILE_FLAG([-fsanitize=address],[SAN_CXXFLAGS="$SAN_CXXFLAGS -fsanitize=address"],[AC_MSG_ERROR(Cannot enable -fsanitize=address)])
460   AX_CHECK_COMPILE_FLAG([-fsanitize=undefined],[SAN_CXXFLAGS="$SAN_CXXFLAGS -fsanitize=undefined"],[AC_MSG_ERROR(Cannot enable -fsanitize=undefined)])
461   AX_CHECK_COMPILE_FLAG([-fno-omit-frame-pointer],[SAN_CXXFLAGS="$SAN_CXXFLAGS -fno-omit-frame-pointer"],[AC_MSG_ERROR(Cannot enable -fno-omit-frame-pointer)])
462 fi
463
464 # using tsan flag to enable address thread sanitizer
465 # TSAN is supported on Linux x84_64 and tested on Ubuntu 12.04
466 # Non-position-independent executables are not supported.  Use with -fPIE and -pie flags
467 # libc/libstdc++ static linking is not supported
468 if test x$use_tsan == xyes; then
469   AX_CHECK_COMPILE_FLAG([-fsanitize=thread],[SAN_CXXFLAGS="$SAN_CXXFLAGS -fsanitize=thread"],[AC_MSG_ERROR(Cannot enable -fsanitize=thread)])
470   AX_CHECK_COMPILE_FLAG([-fno-omit-frame-pointer],[SAN_CXXFLAGS="$SAN_CXXFLAGS -fno-omit-frame-pointer"],[AC_MSG_ERROR(Cannot enable -fno-omit-frame-pointer)])
471 fi
472
473 if test x$use_hardening != xno; then
474   AX_CHECK_COMPILE_FLAG([-Wformat],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wformat"],[AC_MSG_ERROR(Cannot enable -Wformat)])
475   AX_CHECK_COMPILE_FLAG([-Wformat-security],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wformat-security"],[AC_MSG_ERROR(Cannot enable -Wformat-security)],[-Wformat])
476   AX_CHECK_COMPILE_FLAG([-Wstack-protector],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wstack-protector"],[AC_MSG_ERROR(Cannot enable -Wstack-protector)])
477   AX_CHECK_COMPILE_FLAG([-fstack-protector-all],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fstack-protector-all"],[AC_MSG_ERROR(Cannot enable -fstack-protector-all)])
478
479   AX_CHECK_PREPROC_FLAG([-D_FORTIFY_SOURCE=2],[
480     AX_CHECK_PREPROC_FLAG([-U_FORTIFY_SOURCE],[
481       HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -U_FORTIFY_SOURCE"
482     ],[AC_MSG_ERROR(Cannot enable -U_FORTIFY_SOURCE)])
483     HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -D_FORTIFY_SOURCE=2"
484   ],[AC_MSG_ERROR(Cannot enable -D_FORTIFY_SOURCE=2)])
485
486   if test x$BUILD_OS = xdarwin || test x$TARGET_OS = xwindows; then
487     # Xcode's ld (at least ld64-302.3) doesn't support -z
488     # mingw-w64's ld (at least mingw-w64 4.0.4-2) also appears to not support -z
489     AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"],[AC_MSG_WARN(Cannot enable RELRO)])
490     AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"],[AC_MSG_WARN(Cannot enable BIND_NOW)])
491   else
492     AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"],[AC_MSG_ERROR(Cannot enable RELRO)])
493     AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"],[AC_MSG_ERROR(Cannot enable BIND_NOW)])
494   fi
495
496   if test x$TARGET_OS != xwindows; then
497     # All windows code is PIC, forcing it on just adds useless compile warnings
498     AX_CHECK_COMPILE_FLAG([-fPIE],[PIE_FLAGS="-fPIE"],[AC_MSG_ERROR(Cannot enable -fPIE)])
499     if test x$BUILD_OS = xdarwin; then
500       AX_CHECK_LINK_FLAG([[-Wl,-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-pie"],[AC_MSG_ERROR(Cannot enable -Wl,-pie)])
501     else
502       AX_CHECK_LINK_FLAG([[-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"],[AC_MSG_ERROR(Cannot enable -pie)])
503     fi
504   else
505     # These are only available on Windows.
506     AX_CHECK_LINK_FLAG([[-Wl,--dynamicbase]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--dynamicbase"],[AC_MSG_ERROR(Cannot enable --dynamicbase)])
507     AX_CHECK_LINK_FLAG([[-Wl,--nxcompat]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--nxcompat"],[AC_MSG_ERROR(Cannot enable --nxcompat)])
508     AX_CHECK_LINK_FLAG([[-Wl,--high-entropy-va]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--high-entropy-va"],[AC_MSG_ERROR(Cannot enable ASLR)])
509   fi
510
511   case $host in
512     *mingw*)
513        AC_CHECK_LIB([ssp],      [main],, AC_MSG_ERROR(lib missing))
514     ;;
515   esac
516 fi
517
518 dnl this flag screws up non-darwin gcc even when the check fails. special-case it.
519 if test x$TARGET_OS = xdarwin; then
520   AX_CHECK_LINK_FLAG([[-Wl,-dead_strip]], [LDFLAGS="$LDFLAGS -Wl,-dead_strip"])
521 fi
522
523 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])
524 AC_SEARCH_LIBS([getaddrinfo_a], [anl], [AC_DEFINE(HAVE_GETADDRINFO_A, 1, [Define this symbol if you have getaddrinfo_a])])
525 AC_SEARCH_LIBS([inet_pton], [nsl resolv], [AC_DEFINE(HAVE_INET_PTON, 1, [Define this symbol if you have inet_pton])])
526
527 AC_CHECK_DECLS([strnlen])
528
529 AC_CHECK_DECLS([le16toh, le32toh, le64toh, htole16, htole32, htole64, be16toh, be32toh, be64toh, htobe16, htobe32, htobe64],,,
530                 [#if HAVE_ENDIAN_H
531                  #include <endian.h>
532                  #elif HAVE_SYS_ENDIAN_H
533                  #include <sys/endian.h>
534                  #endif])
535
536 AC_CHECK_DECLS([bswap_16, bswap_32, bswap_64],,,
537                 [#if HAVE_BYTESWAP_H
538                  #include <byteswap.h>
539                  #endif])
540
541 dnl Check for MSG_NOSIGNAL
542 AC_MSG_CHECKING(for MSG_NOSIGNAL)
543 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
544  [[ int f = MSG_NOSIGNAL; ]])],
545  [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MSG_NOSIGNAL, 1,[Define this symbol if you have MSG_NOSIGNAL]) ],
546  [ AC_MSG_RESULT(no)]
547 )
548
549 AC_MSG_CHECKING([for visibility attribute])
550 AC_LINK_IFELSE([AC_LANG_SOURCE([
551   int foo_def( void ) __attribute__((visibility("default")));
552   int main(){}
553   ])],
554   [
555     AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE,1,[Define if the visibility attribute is supported.])
556     AC_MSG_RESULT(yes)
557   ],
558   [
559     AC_MSG_RESULT(no)
560     if test x$use_reduce_exports = xyes; then
561       AC_MSG_ERROR([Cannot find a working visibility attribute. Use --disable-reduce-exports.])
562     fi
563   ]
564 )
565
566 if test x$use_reduce_exports = xyes; then
567   AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],[RE_CXXFLAGS="-fvisibility=hidden"],
568   [AC_MSG_ERROR([Cannot set default symbol visibility. Use --disable-reduce-exports.])])
569 fi
570
571 LEVELDB_CPPFLAGS=
572 LIBLEVELDB=
573 LIBMEMENV=
574 AM_CONDITIONAL([EMBEDDED_LEVELDB],[true])
575 AC_SUBST(LEVELDB_CPPFLAGS)
576 AC_SUBST(LIBLEVELDB)
577 AC_SUBST(LIBMEMENV)
578
579 if test x$enable_wallet != xno; then
580     dnl Check for libdb_cxx only if wallet enabled
581     BITCOIN_FIND_BDB62
582 fi
583
584 dnl Check Qpid Proton headers and library exist
585 if test x$use_proton = xyes; then
586   AC_CHECK_HEADERS([proton/connection.hpp],
587     [],
588     [AC_MSG_WARN([Proton headers not found, disabling Proton support])
589     use_proton=no])
590  AC_CHECK_LIB([qpid-proton-cpp-static], [main],
591     [PROTON_LIBS="-lqpid-proton-cpp-static"],
592     [AC_MSG_WARN([Proton qpid-proton-cpp-static library not found, disabling Proton support])
593     use_proton=no])
594  AC_CHECK_LIB([qpid-proton-core-static], [main],
595     [PROTON_LIBS+=" -lqpid-proton-core-static"],
596     [AC_MSG_WARN([Proton qpid-proton-core-static library not found, disabling Proton support])
597     use_proton=no])
598  AC_CHECK_LIB([qpid-proton-static], [main],
599     [PROTON_LIBS+=" -lqpid-proton-static"],
600     [AC_MSG_WARN([Proton qpid-proton-static library not found, disabling Proton support])
601     use_proton=no])
602 fi
603 if test x$use_proton = xyes; then
604     AC_DEFINE(ENABLE_PROTON, 1, [Define to 1 to enable Proton functions])
605 else
606     AC_DEFINE(ENABLE_PROTON, 0, [Define to 1 to enable Proton functions])
607 fi
608
609 if test x$build_bitcoin_utils$build_bitcoind$use_tests = xnonono; then
610     use_boost=no
611 else
612     use_boost=yes
613 fi
614
615 if test x$use_boost = xyes; then
616
617 dnl Check for boost libs
618 dnl We need Boost >= 1.62 to fix a potential security bug (https://github.com/zcash/zcash/issues/1241)
619 AX_BOOST_BASE([1.62])
620 AX_BOOST_SYSTEM
621 AX_BOOST_FILESYSTEM
622 AX_BOOST_PROGRAM_OPTIONS
623 AX_BOOST_THREAD
624 AX_BOOST_CHRONO
625
626 fi
627
628 if test x$use_reduce_exports = xyes; then
629     CXXFLAGS="$CXXFLAGS $RE_CXXFLAGS"
630     AX_CHECK_LINK_FLAG([[-Wl,--exclude-libs,ALL]], [RELDFLAGS="-Wl,--exclude-libs,ALL"])
631 fi
632
633 if test x$use_tests = xyes; then
634
635   if test x$HEXDUMP = x; then
636     AC_MSG_ERROR(hexdump is required for tests)
637   fi
638
639
640   if test x$use_boost = xyes; then
641
642   AX_BOOST_UNIT_TEST_FRAMEWORK
643
644   dnl Determine if -DBOOST_TEST_DYN_LINK is needed
645   AC_MSG_CHECKING([for dynamic linked boost test])
646   TEMP_LIBS="$LIBS"
647   LIBS="$LIBS $BOOST_LDFLAGS $BOOST_UNIT_TEST_FRAMEWORK_LIB"
648   TEMP_CPPFLAGS="$CPPFLAGS"
649   CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
650   AC_LINK_IFELSE([AC_LANG_SOURCE([
651        #define BOOST_TEST_DYN_LINK
652        #define BOOST_TEST_MAIN
653         #include <boost/test/unit_test.hpp>
654
655        ])],
656     [AC_MSG_RESULT(yes)]
657     [TESTDEFS="$TESTDEFS -DBOOST_TEST_DYN_LINK"],
658     [AC_MSG_RESULT(no)])
659   LIBS="$TEMP_LIBS"
660   CPPFLAGS="$TEMP_CPPFLAGS"
661
662   fi
663 fi
664
665 if test x$use_boost = xyes; then
666 BOOST_LIBS="$BOOST_LDFLAGS $BOOST_SYSTEM_LIB $BOOST_FILESYSTEM_LIB $BOOST_PROGRAM_OPTIONS_LIB $BOOST_THREAD_LIB $BOOST_CHRONO_LIB"
667 fi
668
669 if test x$use_pkgconfig = xyes; then
670   : dnl
671   m4_ifdef(
672     [PKG_CHECK_MODULES],
673     [
674       PKG_CHECK_MODULES([SSL], [libssl],, [AC_MSG_ERROR(openssl  not found.)])
675       PKG_CHECK_MODULES([CRYPTO], [libcrypto],,[AC_MSG_ERROR(libcrypto  not found.)])
676       if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
677         PKG_CHECK_MODULES([EVENT], [libevent],, [AC_MSG_ERROR(libevent not found.)])
678         if test x$TARGET_OS != xwindows; then
679           PKG_CHECK_MODULES([EVENT_PTHREADS], [libevent_pthreads],, [AC_MSG_ERROR(libevent_pthreads not found.)])
680         fi
681       fi
682
683       if test "x$use_zmq" = "xyes"; then
684         PKG_CHECK_MODULES([ZMQ],[libzmq >= 4],
685           [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
686           [AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
687            AC_MSG_WARN([libzmq version 4.x or greater not found, disabling])
688            use_zmq=no])
689       else
690           AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
691       fi
692     ]
693   )
694 else
695   # BUG: Fix this:
696   echo 'BUG: configure does not yet check for the following dependencies if pkg-config is not on the system: libcrypto++, libgmp'
697
698   AC_CHECK_HEADER([openssl/crypto.h],,AC_MSG_ERROR(libcrypto headers missing))
699   AC_CHECK_LIB([crypto],      [main],CRYPTO_LIBS=-lcrypto, AC_MSG_ERROR(libcrypto missing))
700
701   AC_CHECK_HEADER([openssl/ssl.h],, AC_MSG_ERROR(libssl headers missing),)
702   AC_CHECK_LIB([ssl],         [main],SSL_LIBS=-lssl, AC_MSG_ERROR(libssl missing))
703
704   if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
705     AC_CHECK_HEADER([event2/event.h],, AC_MSG_ERROR(libevent headers missing),)
706     AC_CHECK_LIB([event],[main],EVENT_LIBS=-levent,AC_MSG_ERROR(libevent missing))
707     if test x$TARGET_OS != xwindows; then
708       AC_CHECK_LIB([event_pthreads],[main],EVENT_PTHREADS_LIBS=-levent_pthreads,AC_MSG_ERROR(libevent_pthreads missing))
709     fi
710   fi
711
712   if test "x$use_zmq" = "xyes"; then
713      AC_CHECK_HEADER([zmq.h],
714        [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
715        [AC_MSG_WARN([zmq.h not found, disabling zmq support])
716         use_zmq=no
717         AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
718      AC_CHECK_LIB([zmq],[zmq_ctx_shutdown],ZMQ_LIBS=-lzmq,
719        [AC_MSG_WARN([libzmq >= 4.0 not found, disabling zmq support])
720         use_zmq=no
721         AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
722   else
723     AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
724   fi
725
726   if test "x$use_zmq" = "xyes"; then
727     dnl Assume libzmq was built for static linking
728     case $host in
729       *mingw*)
730         ZMQ_CFLAGS="$ZMQ_CFLAGS -DZMQ_STATIC"
731       ;;
732     esac
733   fi
734 fi
735
736 # These packages don't provide pkgconfig config files across all
737 # platforms, so we use older autoconf detection mechanisms:
738 AC_CHECK_HEADER([gmp.h],,AC_MSG_ERROR(libgmp headers missing))
739 AC_CHECK_LIB([gmp],[[__gmpn_sub_n]],GMP_LIBS=-lgmp, [AC_MSG_ERROR(libgmp missing)])
740
741 AC_CHECK_HEADER([gmpxx.h],,AC_MSG_ERROR(libgmpxx headers missing))
742 AC_CHECK_LIB([gmpxx],[main],GMPXX_LIBS=-lgmpxx, [AC_MSG_ERROR(libgmpxx missing)])
743
744 RUST_LIBS="-lrustzcash"
745 case $host in
746   *mingw*)
747     ;;
748   *)
749     RUST_LIBS="$RUST_LIBS -ldl"
750     ;;
751 esac
752
753 dnl Check for OpenMP support
754 AX_OPENMP(
755   [AC_DEFINE(HAVE_OPENMP, 1, [Define if OpenMP is enabled])
756    AM_CONDITIONAL([HAVE_OPENMP], [true])
757    CPPFLAGS="$CPPFLAGS -DMULTICORE"
758    CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"],
759   [AC_MSG_WARN([OpenMP not supported, disabling multithreading])
760    AC_DEFINE(HAVE_OPENMP, 0, [Define if OpenMP is enabled])
761    AM_CONDITIONAL([HAVE_OPENMP], [false])])
762
763 # Gitian uses a config.site that sets depends_prefix, and then sets --prefix=/
764 # build.sh just uses --prefix
765 if test x$depends_prefix != x; then
766   LIBSNARK_DEPINST="$depends_prefix"
767 else
768   LIBSNARK_DEPINST="$prefix"
769 fi
770
771 # Additional Zcash flags
772 AX_CHECK_COMPILE_FLAG([-fwrapv],[CXXFLAGS="$CXXFLAGS -fwrapv"])
773 AX_CHECK_COMPILE_FLAG([-fno-strict-aliasing],[CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"])
774 AX_CHECK_COMPILE_FLAG([-Wno-builtin-declaration-mismatch],[CXXFLAGS="$CXXFLAGS -Wno-builtin-declaration-mismatch"],,[[$CXXFLAG_WERROR]])
775
776 LIBZCASH_LIBS="-lgmp -lgmpxx $BOOST_SYSTEM_LIB -lcrypto -lsodium $RUST_LIBS"
777
778 AC_MSG_CHECKING([whether to build bitcoind])
779 AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
780 AC_MSG_RESULT($build_bitcoind)
781
782 AC_MSG_CHECKING([whether to build utils (zcash-cli zcash-tx)])
783 AM_CONDITIONAL([BUILD_BITCOIN_UTILS], [test x$build_bitcoin_utils = xyes])
784 AC_MSG_RESULT($build_bitcoin_utils)
785
786 AC_MSG_CHECKING([whether to build libraries])
787 AM_CONDITIONAL([BUILD_BITCOIN_LIBS], [test x$build_bitcoin_libs = xyes])
788 if test x$build_bitcoin_libs = xyes; then
789   AC_DEFINE(HAVE_CONSENSUS_LIB, 1, [Define this symbol if the consensus lib has been built])
790   AC_CONFIG_FILES([libzcashconsensus.pc:libzcashconsensus.pc.in])
791 fi
792
793 AC_MSG_RESULT($build_bitcoin_libs)
794
795 AC_LANG_POP
796
797 if test "x$use_ccache" != "xno"; then
798   AC_MSG_CHECKING(if ccache should be used)
799   if test x$CCACHE = x; then
800     if test "x$use_ccache" = "xyes"; then
801       AC_MSG_ERROR([ccache not found.]);
802     else
803       use_ccache=no
804     fi
805   else
806     use_ccache=yes
807     CC="$ac_cv_path_CCACHE $CC"
808     CXX="$ac_cv_path_CCACHE $CXX"
809   fi
810   AC_MSG_RESULT($use_ccache)
811 fi
812 if test "x$use_ccache" = "xyes"; then
813     AX_CHECK_PREPROC_FLAG([-Qunused-arguments],[CPPFLAGS="-Qunused-arguments $CPPFLAGS"])
814 fi
815
816 dnl enable wallet
817 AC_MSG_CHECKING([if wallet should be enabled])
818 if test x$enable_wallet != xno; then
819   AC_MSG_RESULT(yes)
820   AC_DEFINE_UNQUOTED([ENABLE_WALLET],[1],[Define to 1 to enable wallet functions])
821
822 else
823   AC_MSG_RESULT(no)
824 fi
825
826 dnl enable mining
827 AC_MSG_CHECKING([if mining should be enabled])
828 if test x$enable_mining != xno; then
829   AC_MSG_RESULT(yes)
830   AC_DEFINE(ENABLE_MINING, 1, [Define to 1 to enable mining functions])
831
832 else
833   AC_MSG_RESULT(no)
834 fi
835
836 AM_CONDITIONAL([ENABLE_ZMQ], [test "x$use_zmq" = "xyes"])
837
838 AM_CONDITIONAL([ENABLE_PROTON], [test "x$use_proton" = "xyes"])
839
840 AC_MSG_CHECKING([whether to build test_bitcoin])
841 if test x$use_tests = xyes; then
842   AC_MSG_RESULT([yes])
843   BUILD_TEST="yes"
844 else
845   AC_MSG_RESULT([no])
846   BUILD_TEST=""
847 fi
848
849 AC_MSG_CHECKING([whether to reduce exports])
850 if test x$use_reduce_exports = xyes; then
851   AC_MSG_RESULT([yes])
852 else
853   AC_MSG_RESULT([no])
854 fi
855
856 if test x$build_bitcoin_utils$build_bitcoin_libs$build_bitcoind$use_tests = xnononono; then
857   AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon or --enable-tests])
858 fi
859
860 AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin])
861 AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin])
862 AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows])
863 AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet = xyes])
864 AM_CONDITIONAL([ENABLE_MINING],[test x$enable_mining = xyes])
865 AM_CONDITIONAL([ENABLE_TESTS],[test x$BUILD_TEST = xyes])
866 AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
867 AM_CONDITIONAL([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes])
868 AM_CONDITIONAL([HARDEN],[test x$use_hardening = xyes])
869 AM_CONDITIONAL([ASAN],[test x$use_asan = xyes])
870 AM_CONDITIONAL([TSAN],[test x$use_tsan = xyes])
871
872 AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version])
873 AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor version])
874 AC_DEFINE(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION, [Build revision])
875 AC_DEFINE(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD, [Version Build])
876 AC_DEFINE(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE, [Version is release])
877 AC_DEFINE(COPYRIGHT_YEAR, _COPYRIGHT_YEAR, [Version is release])
878 AC_SUBST(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR)
879 AC_SUBST(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR)
880 AC_SUBST(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION)
881 AC_SUBST(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD)
882 AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
883 AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
884 AC_SUBST(BITCOIN_DAEMON_NAME)
885 AC_SUBST(BITCOIN_CLI_NAME)
886 AC_SUBST(BITCOIN_TX_NAME)
887
888 AC_SUBST(RELDFLAGS)
889 AC_SUBST(ERROR_CXXFLAGS)
890 AC_SUBST(SAN_CXXFLAGS)
891 AC_SUBST(SAN_LDFLAGS)
892 AC_SUBST(HARDENED_CXXFLAGS)
893 AC_SUBST(HARDENED_CPPFLAGS)
894 AC_SUBST(HARDENED_LDFLAGS)
895 AC_SUBST(PIC_FLAGS)
896 AC_SUBST(PIE_FLAGS)
897 AC_SUBST(LIBTOOL_APP_LDFLAGS)
898 AC_SUBST(BOOST_LIBS)
899 AC_SUBST(TESTDEFS)
900 AC_SUBST(LEVELDB_TARGET_FLAGS)
901 AC_SUBST(CRYPTO_LIBS)
902 AC_SUBST(SSL_LIBS)
903 AC_SUBST(EVENT_LIBS)
904 AC_SUBST(EVENT_PTHREADS_LIBS)
905 AC_SUBST(ZMQ_LIBS)
906 AC_SUBST(GMP_LIBS)
907 AC_SUBST(GMPXX_LIBS)
908 AC_SUBST(LIBSNARK_DEPINST)
909 AC_SUBST(LIBZCASH_LIBS)
910 AC_SUBST(PROTON_LIBS)
911 AC_CONFIG_FILES([Makefile src/Makefile doc/man/Makefile src/test/buildenv.py])
912 AC_CONFIG_FILES([qa/pull-tester/run-bitcoind-for-test.sh],[chmod +x qa/pull-tester/run-bitcoind-for-test.sh])
913 AC_CONFIG_FILES([qa/pull-tester/tests-config.sh],[chmod +x qa/pull-tester/tests-config.sh])
914
915 dnl boost's m4 checks do something really nasty: they export these vars. As a
916 dnl result, they leak into secp256k1's configure and crazy things happen.
917 dnl Until this is fixed upstream and we've synced, we'll just un-export them.
918 CPPFLAGS_TEMP="$CPPFLAGS"
919 unset CPPFLAGS
920 CPPFLAGS="$CPPFLAGS_TEMP"
921
922 LDFLAGS_TEMP="$LDFLAGS"
923 unset LDFLAGS
924 LDFLAGS="$LDFLAGS_TEMP"
925
926 LIBS_TEMP="$LIBS"
927 unset LIBS
928 LIBS="$LIBS_TEMP"
929
930 PKGCONFIG_PATH_TEMP="$PKG_CONFIG_PATH"
931 unset PKG_CONFIG_PATH
932 PKG_CONFIG_PATH="$PKGCONFIG_PATH_TEMP"
933
934 PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
935 unset PKG_CONFIG_LIBDIR
936 PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
937
938 ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no --enable-module-recovery"
939 AC_CONFIG_SUBDIRS([src/secp256k1 src/snark src/univalue])
940
941 AC_OUTPUT
942
943 dnl Taken from https://wiki.debian.org/RpathIssue
944 case $host in
945    *-*-linux-gnu)
946      AC_MSG_RESULT([Fixing libtool for -rpath problems.])
947      sed < libtool > libtool-2 \
948      's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/'
949      mv libtool-2 libtool
950      chmod 755 libtool
951    ;;
952 esac
953
954 echo 
955 echo "Options used to compile and link:"
956 echo "  with wallet   = $enable_wallet"
957 echo "  with proton   = $use_proton"
958 echo "  with zmq      = $use_zmq"
959 echo "  with test     = $use_tests"
960 echo "  debug enabled = $enable_debug"
961 echo "  werror        = $enable_werror"
962 echo 
963 echo "  target os     = $TARGET_OS"
964 echo "  build os      = $BUILD_OS"
965 echo
966 echo "  CC            = $CC"
967 echo "  CFLAGS        = $CFLAGS"
968 echo "  CPPFLAGS      = $CPPFLAGS"
969 echo "  CXX           = $CXX"
970 echo "  CXXFLAGS      = $CXXFLAGS"
971 echo "  LDFLAGS       = $LDFLAGS"
972 echo "  ARFLAGS       = $ARFLAGS"
973 echo 
This page took 0.073476 seconds and 4 git commands to generate.