]> Git Repo - VerusCoin.git/blame - configure.ac
Use real number of cores for default -par, ignore virtual cores
[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
DH
5define(_CLIENT_VERSION_REVISION, 8)
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],
128 [use_hardening=yes])
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
293 AC_CHECK_PROG([BREW],brew, brew)
294 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
CF
300
301 openssl_prefix=`$BREW --prefix openssl 2>/dev/null`
302 bdb_prefix=`$BREW --prefix berkeley-db4 2>/dev/null`
9fedafba 303 if test x$openssl_prefix != x; then
b77b4eda 304 PKG_CONFIG_PATH="$openssl_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
f9e40fb0 305 export PKG_CONFIG_PATH
9fedafba
CF
306 fi
307 if test x$bdb_prefix != x; then
308 CPPFLAGS="$CPPFLAGS -I$bdb_prefix/include"
309 LIBS="$LIBS -L$bdb_prefix/lib"
310 fi
35b8af92 311 fi
b62bbb1f
CF
312 else
313 case $build_os in
314 *darwin*)
315 BUILD_OS=darwin
316 ;;
317 *)
318 AC_PATH_TOOL([INSTALLNAMETOOL], [install_name_tool], install_name_tool)
319 AC_PATH_TOOL([OTOOL], [otool], otool)
320 AC_PATH_PROGS([GENISOIMAGE], [genisoimage mkisofs],genisoimage)
b7f2cdc8
CF
321
322 dnl libtool will try to strip the static lib, which is a problem for
323 dnl cross-builds because strip attempts to call a hard-coded ld,
324 dnl which may not exist in the path. Stripping the .a is not
325 dnl necessary, so just disable it.
326 old_striplib=
b62bbb1f
CF
327 ;;
328 esac
35b8af92
CF
329 fi
330
9eb5a5fb 331 AX_CHECK_LINK_FLAG([[-Wl,-headerpad_max_install_names]], [LDFLAGS="$LDFLAGS -Wl,-headerpad_max_install_names"])
35b8af92 332 CPPFLAGS="$CPPFLAGS -DMAC_OSX"
35b8af92 333 ;;
ab123ad4
CF
334 *linux*)
335 TARGET_OS=linux
336 ;;
35b8af92 337 *)
35b8af92
CF
338 ;;
339esac
340
35b8af92 341if test x$use_comparison_tool != xno; then
4bc2a390
JG
342 if test x$JAVA = x; then
343 AC_MSG_ERROR("comparison tool set but java not found")
344 fi
35b8af92
CF
345 AC_SUBST(JAVA_COMPARISON_TOOL, $use_comparison_tool)
346fi
347
47b9374e 348if test x$use_comparison_tool_reorg_tests != xno; then
b77b4eda 349 if test x$use_comparison_tool = x; then
47b9374e
MC
350 AC_MSG_ERROR("comparison tool reorg tests but comparison tool was not specified")
351 fi
352 AC_SUBST(COMPARISON_TOOL_REORG_TESTS, 1)
353else
354 AC_SUBST(COMPARISON_TOOL_REORG_TESTS, 0)
355fi
356
b77b4eda
LD
357if test x$use_lcov = xyes; then
358 if test x$LCOV = x; then
35b8af92
CF
359 AC_MSG_ERROR("lcov testing requested but lcov not found")
360 fi
b77b4eda 361 if test x$GCOV = x; then
35b8af92
CF
362 AC_MSG_ERROR("lcov testing requested but gcov not found")
363 fi
b77b4eda 364 if test x$JAVA = x; then
35b8af92
CF
365 AC_MSG_ERROR("lcov testing requested but java not found")
366 fi
b77b4eda 367 if test x$GENHTML = x; then
35b8af92
CF
368 AC_MSG_ERROR("lcov testing requested but genhtml not found")
369 fi
b77b4eda 370 if test x$use_comparison_tool = x; then
35b8af92
CF
371 AC_MSG_ERROR("lcov testing requested but comparison tool was not specified")
372 fi
6ecb05dd
JG
373 LCOV="$LCOV --gcov-tool=$GCOV --rc lcov_branch_coverage=1"
374 GENHTML="$GENHTML --branch-coverage"
35b8af92
CF
375 AX_CHECK_COMPILE_FLAG([--coverage],[CXXFLAGS="$CXXFLAGS --coverage"],
376 [AC_MSG_ERROR("lcov testing requested but --coverage flag does not work")])
377fi
378
4414f5ff
WL
379dnl Check for endianness
380AC_C_BIGENDIAN
35b8af92
CF
381
382dnl Check for pthread compile/link requirements
383AX_PTHREAD
35b8af92
CF
384
385# The following macro will add the necessary defines to bitcoin-config.h, but
386# they also need to be passed down to any subprojects. Pull the results out of
387# the cache and add them to CPPFLAGS.
388AC_SYS_LARGEFILE
a60838d0
WL
389# detect POSIX or GNU variant of strerror_r
390AC_FUNC_STRERROR_R
35b8af92
CF
391
392if test x$ac_cv_sys_file_offset_bits != x &&
393 test x$ac_cv_sys_file_offset_bits != xno &&
394 test x$ac_cv_sys_file_offset_bits != xunknown; then
395 CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
396fi
397
398if test x$ac_cv_sys_large_files != x &&
399 test x$ac_cv_sys_large_files != xno &&
400 test x$ac_cv_sys_large_files != xunknown; then
401 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES=$ac_cv_sys_large_files"
402fi
403
404AX_CHECK_LINK_FLAG([[-Wl,--large-address-aware]], [LDFLAGS="$LDFLAGS -Wl,--large-address-aware"])
405
f36a40f7
CF
406AX_GCC_FUNC_ATTRIBUTE([visibility])
407AX_GCC_FUNC_ATTRIBUTE([dllexport])
408AX_GCC_FUNC_ATTRIBUTE([dllimport])
409
d5aab704
CF
410if test x$use_glibc_compat != xno; then
411
d68e2111
CF
412 #glibc absorbed clock_gettime in 2.17. librt (its previous location) is safe to link
413 #in anyway for back-compat.
414 AC_CHECK_LIB([rt],[clock_gettime],, AC_MSG_ERROR(lib missing))
415
d5aab704
CF
416 #__fdelt_chk's params and return type have changed from long unsigned int to long int.
417 # See which one is present here.
418 AC_MSG_CHECKING(__fdelt_chk type)
e2a98d27 419 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef _FORTIFY_SOURCE
8021cf8d
CF
420 #undef _FORTIFY_SOURCE
421 #endif
422 #define _FORTIFY_SOURCE 2
d5aab704 423 #include <sys/select.h>
e2a98d27 424 extern "C" long unsigned int __fdelt_warn(long unsigned int);]],[[]])],
d5aab704
CF
425 [ fdelt_type="long unsigned int"],
426 [ fdelt_type="long int"])
427 AC_MSG_RESULT($fdelt_type)
428 AC_DEFINE_UNQUOTED(FDELT_TYPE, $fdelt_type,[parameter and return value type for __fdelt_chk])
d68e2111
CF
429else
430 AC_SEARCH_LIBS([clock_gettime],[rt])
d5aab704
CF
431fi
432
35b8af92 433if test x$use_hardening != xno; then
5d37904b 434 AX_CHECK_COMPILE_FLAG([-Wformat],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wformat"],[AC_MSG_ERROR(Cannot enable -Wformat)])
6dcb7067 435 AX_CHECK_COMPILE_FLAG([-Wformat-security],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wformat-security"],[AC_MSG_ERROR(Cannot enable -Wformat-security)],[-Wformat])
b00b98ae
TH
436 AX_CHECK_COMPILE_FLAG([-Wstack-protector],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wstack-protector"],[AC_MSG_ERROR(Cannot enable -Wstack-protector)])
437 AX_CHECK_COMPILE_FLAG([-fstack-protector-all],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fstack-protector-all"],[AC_MSG_ERROR(Cannot enable -fstack-protector-all)])
35b8af92 438
9b4e03b2
LD
439 AX_CHECK_PREPROC_FLAG([-D_FORTIFY_SOURCE=2],[
440 AX_CHECK_PREPROC_FLAG([-U_FORTIFY_SOURCE],[
441 HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -U_FORTIFY_SOURCE"
b00b98ae 442 ],[AC_MSG_ERROR(Cannot enable -U_FORTIFY_SOURCE)])
9b4e03b2 443 HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -D_FORTIFY_SOURCE=2"
b00b98ae 444 ],[AC_MSG_ERROR(Cannot enable -D_FORTIFY_SOURCE=2)])
35b8af92 445
b00b98ae
TH
446 AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"],[AC_MSG_ERROR(Cannot enable RELRO)])
447 AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"],[AC_MSG_ERROR(Cannot enable BIND_NOW)])
35b8af92
CF
448
449 if test x$TARGET_OS != xwindows; then
eccd5856 450 # All windows code is PIC, forcing it on just adds useless compile warnings
b00b98ae
TH
451 AX_CHECK_COMPILE_FLAG([-fPIE],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fPIE"],[AC_MSG_ERROR(Cannot enable -fPIE)])
452 AX_CHECK_LINK_FLAG([[-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"],[AC_MSG_ERROR(Cannot enable -pie)])
453 else
454 # These are only available on Windows.
455 AX_CHECK_LINK_FLAG([[-Wl,--dynamicbase]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--dynamicbase"],[AC_MSG_ERROR(Cannot enable --dynamicbase)])
456 AX_CHECK_LINK_FLAG([[-Wl,--nxcompat]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--nxcompat"],[AC_MSG_ERROR(Cannot enable --nxcompat)])
35b8af92
CF
457 fi
458
811a765b
CF
459 case $host in
460 *mingw*)
461 AC_CHECK_LIB([ssp], [main],, AC_MSG_ERROR(lib missing))
462 ;;
463 esac
464
35b8af92
CF
465 CXXFLAGS="$CXXFLAGS $HARDENED_CXXFLAGS"
466 CPPFLAGS="$CPPFLAGS $HARDENED_CPPFLAGS"
467 LDFLAGS="$LDFLAGS $HARDENED_LDFLAGS"
468 OBJCXXFLAGS="$CXXFLAGS"
469fi
470
471dnl this flag screws up non-darwin gcc even when the check fails. special-case it.
472if test x$TARGET_OS = xdarwin; then
473 AX_CHECK_LINK_FLAG([[-Wl,-dead_strip]], [LDFLAGS="$LDFLAGS -Wl,-dead_strip"])
474fi
475
8ea6d37a 476AC_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
477AC_SEARCH_LIBS([getaddrinfo_a], [anl], [AC_DEFINE(HAVE_GETADDRINFO_A, 1, [Define this symbol if you have getaddrinfo_a])])
478AC_SEARCH_LIBS([inet_pton], [nsl resolv], [AC_DEFINE(HAVE_INET_PTON, 1, [Define this symbol if you have inet_pton])])
f2647cc0 479
494f6e7d
PJ
480AC_CHECK_DECLS([strnlen])
481
4414f5ff 482AC_CHECK_DECLS([le16toh, le32toh, le64toh, htole16, htole32, htole64, be16toh, be32toh, be64toh, htobe16, htobe32, htobe64],,,
f2647cc0
CF
483 [#if HAVE_ENDIAN_H
484 #include <endian.h>
8ea6d37a
AV
485 #elif HAVE_SYS_ENDIAN_H
486 #include <sys/endian.h>
f2647cc0 487 #endif])
35b8af92 488
4414f5ff
WL
489AC_CHECK_DECLS([bswap_16, bswap_32, bswap_64],,,
490 [#if HAVE_BYTESWAP_H
491 #include <byteswap.h>
492 #endif])
493
35b8af92
CF
494dnl Check for MSG_NOSIGNAL
495AC_MSG_CHECKING(for MSG_NOSIGNAL)
e2a98d27 496AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
497 [[ int f = MSG_NOSIGNAL; ]])],
35b8af92
CF
498 [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MSG_NOSIGNAL, 1,[Define this symbol if you have MSG_NOSIGNAL]) ],
499 [ AC_MSG_RESULT(no)]
500)
501
e432a5f0
CF
502AC_MSG_CHECKING([for visibility attribute])
503AC_LINK_IFELSE([AC_LANG_SOURCE([
504 int foo_def( void ) __attribute__((visibility("default")));
505 int main(){}
506 ])],
507 [
508 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE,1,[Define if the visibility attribute is supported.])
509 AC_MSG_RESULT(yes)
510 ],
511 [
512 AC_MSG_RESULT(no)
513 if test x$use_reduce_exports = xyes; then
3448b132 514 AC_MSG_ERROR([Cannot find a working visibility attribute. Use --disable-reduce-exports.])
e432a5f0 515 fi
e432a5f0
CF
516 ]
517)
518
3ee028f1 519if test x$use_reduce_exports = xyes; then
e432a5f0 520 AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],[RE_CXXFLAGS="-fvisibility=hidden"],
3448b132 521 [AC_MSG_ERROR([Cannot set default symbol visibility. Use --disable-reduce-exports.])])
e432a5f0
CF
522fi
523
4a290b52
LD
524LEVELDB_CPPFLAGS=
525LIBLEVELDB=
526LIBMEMENV=
527AM_CONDITIONAL([EMBEDDED_LEVELDB],[true])
528AC_SUBST(LEVELDB_CPPFLAGS)
529AC_SUBST(LIBLEVELDB)
530AC_SUBST(LIBMEMENV)
531
4f9e993b
WL
532if test x$enable_wallet != xno; then
533 dnl Check for libdb_cxx only if wallet enabled
9cb7abaf 534 BITCOIN_FIND_BDB62
4f9e993b 535fi
35b8af92
CF
536
537dnl Check for libminiupnpc (optional)
538if test x$use_upnp != xno; then
a26a3676
JT
539 AC_CHECK_HEADERS(
540 [miniupnpc/miniwget.h miniupnpc/miniupnpc.h miniupnpc/upnpcommands.h miniupnpc/upnperrors.h],
28d412ff 541 [AC_CHECK_LIB([miniupnpc], [main],[MINIUPNPC_LIBS=-lminiupnpc], [have_miniupnpc=no])],
a26a3676
JT
542 [have_miniupnpc=no]
543 )
35b8af92
CF
544fi
545
38ba3c66 546if test x$build_bitcoin_utils$build_bitcoind$use_tests = xnonono; then
b7a4ecc1
LD
547 use_boost=no
548else
549 use_boost=yes
550fi
551
552if test x$use_boost = xyes; then
553
35b8af92
CF
554dnl Check for boost libs
555AX_BOOST_BASE
556AX_BOOST_SYSTEM
557AX_BOOST_FILESYSTEM
558AX_BOOST_PROGRAM_OPTIONS
559AX_BOOST_THREAD
560AX_BOOST_CHRONO
561
e432a5f0 562
3ee028f1 563if test x$use_reduce_exports = xyes; then
e432a5f0
CF
564 AC_MSG_CHECKING([for working boost reduced exports])
565 TEMP_CPPFLAGS="$CPPFLAGS"
566 CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
567 AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
568 @%:@include <boost/version.hpp>
569 ]], [[
570 #if BOOST_VERSION >= 104900
571 // Everything is okay
572 #else
573 # error Boost version is too old
574 #endif
575 ]])],[
576 AC_MSG_RESULT(yes)
3ee028f1 577 ],[
3448b132 578 AC_MSG_ERROR([boost versions < 1.49 are known to be broken with reduced exports. Use --disable-reduce-exports.])
e432a5f0
CF
579 ])
580 CPPFLAGS="$TEMP_CPPFLAGS"
581fi
b7a4ecc1
LD
582fi
583
3ee028f1 584if test x$use_reduce_exports = xyes; then
e432a5f0
CF
585 CXXFLAGS="$CXXFLAGS $RE_CXXFLAGS"
586 AX_CHECK_LINK_FLAG([[-Wl,--exclude-libs,ALL]], [RELDFLAGS="-Wl,--exclude-libs,ALL"])
587fi
588
35b8af92 589if test x$use_tests = xyes; then
152e51c7
CF
590
591 if test x$HEXDUMP = x; then
592 AC_MSG_ERROR(hexdump is required for tests)
593 fi
594
595
b7a4ecc1
LD
596 if test x$use_boost = xyes; then
597
35b8af92 598 AX_BOOST_UNIT_TEST_FRAMEWORK
e4b991e5
WL
599
600 dnl Determine if -DBOOST_TEST_DYN_LINK is needed
601 AC_MSG_CHECKING([for dynamic linked boost test])
602 TEMP_LIBS="$LIBS"
a7d1f035 603 LIBS="$LIBS $BOOST_LDFLAGS $BOOST_UNIT_TEST_FRAMEWORK_LIB"
e4b991e5
WL
604 TEMP_CPPFLAGS="$CPPFLAGS"
605 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
606 AC_LINK_IFELSE([AC_LANG_SOURCE([
607 #define BOOST_TEST_DYN_LINK
608 #define BOOST_TEST_MAIN
609 #include <boost/test/unit_test.hpp>
610
611 ])],
612 [AC_MSG_RESULT(yes)]
613 [TESTDEFS="$TESTDEFS -DBOOST_TEST_DYN_LINK"],
614 [AC_MSG_RESULT(no)])
615 LIBS="$TEMP_LIBS"
616 CPPFLAGS="$TEMP_CPPFLAGS"
b7a4ecc1
LD
617
618 fi
35b8af92
CF
619fi
620
b7a4ecc1
LD
621if test x$use_boost = xyes; then
622
ca66717d 623BOOST_LIBS="$BOOST_LDFLAGS $BOOST_SYSTEM_LIB $BOOST_FILESYSTEM_LIB $BOOST_PROGRAM_OPTIONS_LIB $BOOST_THREAD_LIB $BOOST_CHRONO_LIB"
35b8af92
CF
624
625dnl Boost >= 1.50 uses sleep_for rather than the now-deprecated sleep, however
626dnl it was broken from 1.50 to 1.52 when backed by nanosleep. Use sleep_for if
627dnl a working version is available, else fall back to sleep. sleep was removed
628dnl after 1.56.
629dnl If neither is available, abort.
35b8af92 630TEMP_LIBS="$LIBS"
ca66717d 631LIBS="$BOOST_LIBS $LIBS"
714cdecb
WL
632TEMP_CPPFLAGS="$CPPFLAGS"
633CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
e2a98d27 634AC_LINK_IFELSE([AC_LANG_PROGRAM([[
35b8af92
CF
635 #include <boost/thread/thread.hpp>
636 #include <boost/version.hpp>
e2a98d27 637 ]],[[
35b8af92
CF
638 #if BOOST_VERSION >= 105000 && (!defined(BOOST_HAS_NANOSLEEP) || BOOST_VERSION >= 105200)
639 boost::this_thread::sleep_for(boost::chrono::milliseconds(0));
640 #else
641 choke me
642 #endif
e2a98d27 643 ]])],
ca66717d 644 [boost_sleep=yes;
35b8af92
CF
645 AC_DEFINE(HAVE_WORKING_BOOST_SLEEP_FOR, 1, [Define this symbol if boost sleep_for works])],
646 [boost_sleep=no])
647LIBS="$TEMP_LIBS"
714cdecb 648CPPFLAGS="$TEMP_CPPFLAGS"
35b8af92
CF
649
650if test x$boost_sleep != xyes; then
651TEMP_LIBS="$LIBS"
460b32d7 652LIBS="$BOOST_LIBS $LIBS"
714cdecb
WL
653TEMP_CPPFLAGS="$CPPFLAGS"
654CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
e2a98d27 655AC_LINK_IFELSE([AC_LANG_PROGRAM([[
35b8af92
CF
656 #include <boost/version.hpp>
657 #include <boost/thread.hpp>
658 #include <boost/date_time/posix_time/posix_time_types.hpp>
e2a98d27 659 ]],[[
35b8af92
CF
660 #if BOOST_VERSION <= 105600
661 boost::this_thread::sleep(boost::posix_time::milliseconds(0));
662 #else
663 choke me
664 #endif
e2a98d27 665 ]])],
35b8af92
CF
666 [boost_sleep=yes; AC_DEFINE(HAVE_WORKING_BOOST_SLEEP, 1, [Define this symbol if boost sleep works])],
667 [boost_sleep=no])
668LIBS="$TEMP_LIBS"
714cdecb 669CPPFLAGS="$TEMP_CPPFLAGS"
35b8af92
CF
670fi
671
672if test x$boost_sleep != xyes; then
539abc47 673 AC_MSG_ERROR(No working boost sleep implementation found.)
35b8af92
CF
674fi
675
b7a4ecc1 676fi
c8ba8ef6 677
35b8af92
CF
678if test x$use_pkgconfig = xyes; then
679
b77b4eda 680 if test x"$PKG_CONFIG" = "x"; then
12564aa1 681 AC_MSG_ERROR(pkg-config not found.)
35b8af92
CF
682 fi
683
684 : #NOP
685 m4_ifdef(
686 [PKG_CHECK_MODULES],
687 [
6b099402
CF
688 PKG_CHECK_MODULES([SSL], [libssl],, [AC_MSG_ERROR(openssl not found.)])
689 PKG_CHECK_MODULES([CRYPTO], [libcrypto],,[AC_MSG_ERROR(libcrypto not found.)])
df377ca8
WL
690 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
691 PKG_CHECK_MODULES([EVENT], [libevent],, [AC_MSG_ERROR(libevent not found.)])
692 if test x$TARGET_OS != xwindows; then
693 PKG_CHECK_MODULES([EVENT_PTHREADS], [libevent_pthreads],, [AC_MSG_ERROR(libevent_pthreads not found.)])
694 fi
695 fi
effe8a5f
JC
696
697 if test "x$use_zmq" = "xyes"; then
698 PKG_CHECK_MODULES([ZMQ],[libzmq >= 4],
699 [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
700 [AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
701 AC_MSG_WARN([libzmq version 4.x or greater not found, disabling])
702 use_zmq=no])
703 else
704 AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
705 fi
35b8af92
CF
706 ]
707 )
708else
c4da0970
NW
709 # BUG: Fix this:
710 echo 'BUG: configure does not yet check for the following dependencies if pkg-config is not on the system: libcrypto++, libgmp'
711
35b8af92 712 AC_CHECK_HEADER([openssl/crypto.h],,AC_MSG_ERROR(libcrypto headers missing))
6b099402 713 AC_CHECK_LIB([crypto], [main],CRYPTO_LIBS=-lcrypto, AC_MSG_ERROR(libcrypto missing))
35b8af92
CF
714
715 AC_CHECK_HEADER([openssl/ssl.h],, AC_MSG_ERROR(libssl headers missing),)
6b099402 716 AC_CHECK_LIB([ssl], [main],SSL_LIBS=-lssl, AC_MSG_ERROR(libssl missing))
35b8af92 717
df377ca8
WL
718 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
719 AC_CHECK_HEADER([event2/event.h],, AC_MSG_ERROR(libevent headers missing),)
720 AC_CHECK_LIB([event],[main],EVENT_LIBS=-levent,AC_MSG_ERROR(libevent missing))
721 if test x$TARGET_OS != xwindows; then
722 AC_CHECK_LIB([event_pthreads],[main],EVENT_PTHREADS_LIBS=-levent_pthreads,AC_MSG_ERROR(libevent_pthreads missing))
723 fi
724 fi
725
effe8a5f
JC
726 if test "x$use_zmq" = "xyes"; then
727 AC_CHECK_HEADER([zmq.h],
728 [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
729 [AC_MSG_WARN([zmq.h not found, disabling zmq support])
730 use_zmq=no
731 AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
732 AC_CHECK_LIB([zmq],[zmq_ctx_shutdown],ZMQ_LIBS=-lzmq,
733 [AC_MSG_WARN([libzmq >= 4.0 not found, disabling zmq support])
734 use_zmq=no
735 AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
736 else
737 AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
738 fi
739
00bcf223 740 if test "x$use_zmq" = "xyes"; then
741 dnl Assume libzmq was built for static linking
742 case $host in
743 *mingw*)
744 ZMQ_CFLAGS="$ZMQ_CFLAGS -DZMQ_STATIC"
745 ;;
746 esac
747 fi
c8ba8ef6 748fi
35b8af92 749
c4da0970
NW
750# These packages don't provide pkgconfig config files across all
751# platforms, so we use older autoconf detection mechanisms:
752AC_CHECK_HEADER([gmp.h],,AC_MSG_ERROR(libgmp headers missing))
753AC_CHECK_LIB([gmp],[[__gmpn_sub_n]],GMP_LIBS=-lgmp, [AC_MSG_ERROR(libgmp missing)])
754
755AC_CHECK_HEADER([gmpxx.h],,AC_MSG_ERROR(libgmpxx headers missing))
756AC_CHECK_LIB([gmpxx],[main],GMPXX_LIBS=-lgmpxx, [AC_MSG_ERROR(libgmpxx missing)])
757
c4da0970
NW
758# libsnark header layout is broken unless cpp's -I is passed with the
759# libsnark directory, so for now we use this hideous workaround:
760echo 'Hunting for libsnark include directory...'
761[LIBSNARK_INCDIR="$(echo "$CPPFLAGS" | sed 's,^.*-I\([^ ]*/include\).*$,\1/libsnark,')"]
762if test -d "$LIBSNARK_INCDIR"; then
763 echo "Found libsnark include directory: $LIBSNARK_INCDIR"
764else
765 AC_MSG_ERROR(libsnark include directory not found)
766fi
767
768CPPFLAGS="-I$LIBSNARK_INCDIR $CPPFLAGS"
769
770# Now check for libsnark compilability using traditional autoconf tests:
771AC_CHECK_HEADER([libsnark/gadgetlib1/gadget.hpp],,AC_MSG_ERROR(libsnark headers missing))
772AC_CHECK_LIB([snark],[main],LIBSNARK_LIBS=-lsnark, [AC_MSG_ERROR(libsnark missing)], [-lgmpxx])
773
802ea76b
SB
774RUST_LIBS=""
775if test x$enable_rust != xno; then
776 RUST_LIBS="-lrustzcash"
777fi
778
779LIBZCASH_LIBS="-lsnark -lgmp -lgmpxx -lboost_system-mt -lcrypto -lsodium -fopenmp $RUST_LIBS"
c4da0970 780
51babcb9 781CXXFLAGS_TEMP="$CXXFLAGS"
a19eeace 782LIBS_TEMP="$LIBS"
51babcb9 783CXXFLAGS="$CXXFLAGS $SSL_CFLAGS $CRYPTO_CFLAGS"
c4da0970 784LIBS="$LIBS $SSL_LIBS $CRYPTO_LIBS $GMP_LIBS $GMPXX_LIBS"
a19eeace 785AC_CHECK_HEADER([openssl/ec.h],, AC_MSG_ERROR(OpenSSL ec header missing),)
51babcb9 786CXXFLAGS="$CXXFLAGS_TEMP"
a19eeace
LD
787LIBS="$LIBS_TEMP"
788
e18e1001 789AC_MSG_CHECKING([whether to build bitcoind])
f930341d
LD
790AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
791AC_MSG_RESULT($build_bitcoind)
792
66a89c08 793AC_MSG_CHECKING([whether to build utils (zcash-cli zcash-tx)])
c101c769 794AM_CONDITIONAL([BUILD_BITCOIN_UTILS], [test x$build_bitcoin_utils = xyes])
795AC_MSG_RESULT($build_bitcoin_utils)
f930341d 796
cdd36c6c
CF
797AC_MSG_CHECKING([whether to build libraries])
798AM_CONDITIONAL([BUILD_BITCOIN_LIBS], [test x$build_bitcoin_libs = xyes])
799if test x$build_bitcoin_libs = xyes; then
800 AC_DEFINE(HAVE_CONSENSUS_LIB, 1, [Define this symbol if the consensus lib has been built])
08d6b02d 801 AC_CONFIG_FILES([libzcashconsensus.pc:libzcashconsensus.pc.in])
cdd36c6c 802fi
e463edc1 803
cdd36c6c
CF
804AC_MSG_RESULT($build_bitcoin_libs)
805
35b8af92
CF
806AC_LANG_POP
807
808if test "x$use_ccache" != "xno"; then
e18e1001 809 AC_MSG_CHECKING(if ccache should be used)
35b8af92
CF
810 if test x$CCACHE = x; then
811 if test "x$use_ccache" = "xyes"; then
812 AC_MSG_ERROR([ccache not found.]);
813 else
35b8af92
CF
814 use_ccache=no
815 fi
816 else
817 use_ccache=yes
818 CC="$ac_cv_path_CCACHE $CC"
819 CXX="$ac_cv_path_CCACHE $CXX"
820 fi
821 AC_MSG_RESULT($use_ccache)
822fi
386efb76
CF
823if test "x$use_ccache" = "xyes"; then
824 AX_CHECK_PREPROC_FLAG([-Qunused-arguments],[CPPFLAGS="-Qunused-arguments $CPPFLAGS"])
825fi
35b8af92 826
4f9e993b
WL
827dnl enable wallet
828AC_MSG_CHECKING([if wallet should be enabled])
829if test x$enable_wallet != xno; then
830 AC_MSG_RESULT(yes)
831 AC_DEFINE_UNQUOTED([ENABLE_WALLET],[1],[Define to 1 to enable wallet functions])
832
833else
834 AC_MSG_RESULT(no)
4f9e993b
WL
835fi
836
2cc0a252
JG
837dnl enable mining
838AC_MSG_CHECKING([if mining should be enabled])
839if test x$enable_mining != xno; then
840 AC_MSG_RESULT(yes)
841 AC_DEFINE(ENABLE_MINING, 1, [Define to 1 to enable mining functions])
842
843else
844 AC_MSG_RESULT(no)
845fi
846
802ea76b
SB
847dnl enable rust
848AC_MSG_CHECKING([if rust should be enabled])
849if test x$enable_rust != xno; then
850 AC_MSG_RESULT(yes)
851 AC_DEFINE(ENABLE_RUST, 1, [Define to 1 to enable Rust language dependent functions])
852
853else
854 AC_MSG_RESULT(no)
855fi
856
35b8af92 857dnl enable upnp support
e18e1001 858AC_MSG_CHECKING([whether to build with support for UPnP])
35b8af92
CF
859if test x$have_miniupnpc = xno; then
860 if test x$use_upnp = xyes; then
e18e1001 861 AC_MSG_ERROR("UPnP requested but cannot be built. use --without-miniupnpc")
35b8af92
CF
862 fi
863 AC_MSG_RESULT(no)
864else
865 if test x$use_upnp != xno; then
866 AC_MSG_RESULT(yes)
e18e1001 867 AC_MSG_CHECKING([whether to build with UPnP enabled by default])
35b8af92
CF
868 use_upnp=yes
869 upnp_setting=0
870 if test x$use_upnp_default != xno; then
871 use_upnp_default=yes
872 upnp_setting=1
873 fi
874 AC_MSG_RESULT($use_upnp_default)
e18e1001 875 AC_DEFINE_UNQUOTED([USE_UPNP],[$upnp_setting],[UPnP support not compiled if undefined, otherwise value (0 or 1) determines default state])
35b8af92 876 if test x$TARGET_OS = xwindows; then
9f7f504e 877 MINIUPNPC_CPPFLAGS="-DSTATICLIB -DMINIUPNP_STATICLIB"
35b8af92
CF
878 fi
879 else
880 AC_MSG_RESULT(no)
881 fi
882fi
883
f200002c
JG
884AM_CONDITIONAL([ENABLE_ZMQ], [test "x$use_zmq" = "xyes"])
885
e18e1001 886AC_MSG_CHECKING([whether to build test_bitcoin])
35b8af92 887if test x$use_tests = xyes; then
e18e1001 888 AC_MSG_RESULT([yes])
2762638a 889 BUILD_TEST="yes"
e18e1001
LD
890else
891 AC_MSG_RESULT([no])
2762638a 892 BUILD_TEST=""
35b8af92
CF
893fi
894
e432a5f0 895AC_MSG_CHECKING([whether to reduce exports])
3ee028f1 896if test x$use_reduce_exports = xyes; then
e432a5f0
CF
897 AC_MSG_RESULT([yes])
898else
899 AC_MSG_RESULT([no])
900fi
901
38ba3c66 902if test x$build_bitcoin_utils$build_bitcoin_libs$build_bitcoind$use_tests = xnononono; then
abecfc42 903 AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon or --enable-tests])
a9dbcf03
LD
904fi
905
35b8af92 906AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin])
b62bbb1f 907AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin])
35b8af92 908AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows])
b77b4eda 909AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet = xyes])
2cc0a252 910AM_CONDITIONAL([ENABLE_MINING],[test x$enable_mining = xyes])
802ea76b 911AM_CONDITIONAL([ENABLE_RUST],[test x$enable_rust = xyes])
2762638a 912AM_CONDITIONAL([ENABLE_TESTS],[test x$BUILD_TEST = xyes])
b77b4eda 913AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
35b8af92 914AM_CONDITIONAL([USE_COMPARISON_TOOL],[test x$use_comparison_tool != xno])
47b9374e 915AM_CONDITIONAL([USE_COMPARISON_TOOL_REORG_TESTS],[test x$use_comparison_tool_reorg_test != xno])
d5aab704 916AM_CONDITIONAL([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes])
56734f4b 917AM_CONDITIONAL([HARDEN],[test x$use_hardening = xyes])
35b8af92
CF
918
919AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version])
920AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor version])
921AC_DEFINE(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION, [Build revision])
922AC_DEFINE(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD, [Version Build])
923AC_DEFINE(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE, [Version is release])
924AC_DEFINE(COPYRIGHT_YEAR, _COPYRIGHT_YEAR, [Version is release])
925AC_SUBST(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR)
926AC_SUBST(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR)
927AC_SUBST(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION)
928AC_SUBST(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD)
929AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
930AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
931
e432a5f0 932AC_SUBST(RELDFLAGS)
e0077de5 933AC_SUBST(LIBTOOL_APP_LDFLAGS)
35b8af92 934AC_SUBST(USE_UPNP)
35b8af92 935AC_SUBST(BOOST_LIBS)
35b8af92
CF
936AC_SUBST(TESTDEFS)
937AC_SUBST(LEVELDB_TARGET_FLAGS)
9f7f504e 938AC_SUBST(MINIUPNPC_CPPFLAGS)
28d412ff 939AC_SUBST(MINIUPNPC_LIBS)
c4da0970
NW
940AC_SUBST(GMP_LIBS)
941AC_SUBST(GMPXX_LIBS)
c4da0970 942AC_SUBST(LIBSNARK_LIBS)
1785bdb9 943AC_SUBST(LIBZCASH_LIBS)
38ba3c66 944AC_CONFIG_FILES([Makefile src/Makefile doc/man/Makefile share/setup.nsi src/test/buildenv.py])
35b8af92 945AC_CONFIG_FILES([qa/pull-tester/run-bitcoind-for-test.sh],[chmod +x qa/pull-tester/run-bitcoind-for-test.sh])
7667850d 946AC_CONFIG_FILES([qa/pull-tester/tests-config.sh],[chmod +x qa/pull-tester/tests-config.sh])
07a99017
PW
947
948dnl boost's m4 checks do something really nasty: they export these vars. As a
949dnl result, they leak into secp256k1's configure and crazy things happen.
950dnl Until this is fixed upstream and we've synced, we'll just un-export them.
0dc86138 951CPPFLAGS_TEMP="$CPPFLAGS"
cf61b544 952unset CPPFLAGS
0dc86138
CF
953CPPFLAGS="$CPPFLAGS_TEMP"
954
955LDFLAGS_TEMP="$LDFLAGS"
cf61b544 956unset LDFLAGS
0dc86138
CF
957LDFLAGS="$LDFLAGS_TEMP"
958
959LIBS_TEMP="$LIBS"
960unset LIBS
961LIBS="$LIBS_TEMP"
962
963PKGCONFIG_PATH_TEMP="$PKG_CONFIG_PATH"
964unset PKG_CONFIG_PATH
965PKG_CONFIG_PATH="$PKGCONFIG_PATH_TEMP"
966
967PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
968unset PKG_CONFIG_LIBDIR
969PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
970
dfdb6dd0 971ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no"
a10a6e2a 972AC_CONFIG_SUBDIRS([src/secp256k1 src/univalue])
07a99017 973
35b8af92 974AC_OUTPUT
a98356fe
CF
975
976dnl Taken from https://wiki.debian.org/RpathIssue
977case $host in
978 *-*-linux-gnu)
979 AC_MSG_RESULT([Fixing libtool for -rpath problems.])
980 sed < libtool > libtool-2 \
981 's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/'
982 mv libtool-2 libtool
983 chmod 755 libtool
984 ;;
985esac
This page took 0.231777 seconds and 4 git commands to generate.