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