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