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