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