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