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