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