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