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