]> Git Repo - VerusCoin.git/blame - configure.ac
Change --enable-werror to apply to all warnings, use it in build.sh
[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)
c5b04132 5define(_CLIENT_VERSION_REVISION, 13)
0523d21d 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
daad2c27 718LIBZCASH_LIBS="-lgmp -lgmpxx -lboost_system-mt -lcrypto -lsodium $RUST_LIBS"
c4da0970 719
e18e1001 720AC_MSG_CHECKING([whether to build bitcoind])
f930341d
LD
721AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
722AC_MSG_RESULT($build_bitcoind)
723
66a89c08 724AC_MSG_CHECKING([whether to build utils (zcash-cli zcash-tx)])
c101c769 725AM_CONDITIONAL([BUILD_BITCOIN_UTILS], [test x$build_bitcoin_utils = xyes])
726AC_MSG_RESULT($build_bitcoin_utils)
f930341d 727
cdd36c6c
CF
728AC_MSG_CHECKING([whether to build libraries])
729AM_CONDITIONAL([BUILD_BITCOIN_LIBS], [test x$build_bitcoin_libs = xyes])
730if test x$build_bitcoin_libs = xyes; then
731 AC_DEFINE(HAVE_CONSENSUS_LIB, 1, [Define this symbol if the consensus lib has been built])
08d6b02d 732 AC_CONFIG_FILES([libzcashconsensus.pc:libzcashconsensus.pc.in])
cdd36c6c 733fi
e463edc1 734
cdd36c6c
CF
735AC_MSG_RESULT($build_bitcoin_libs)
736
35b8af92
CF
737AC_LANG_POP
738
739if test "x$use_ccache" != "xno"; then
e18e1001 740 AC_MSG_CHECKING(if ccache should be used)
35b8af92
CF
741 if test x$CCACHE = x; then
742 if test "x$use_ccache" = "xyes"; then
743 AC_MSG_ERROR([ccache not found.]);
744 else
35b8af92
CF
745 use_ccache=no
746 fi
747 else
748 use_ccache=yes
749 CC="$ac_cv_path_CCACHE $CC"
750 CXX="$ac_cv_path_CCACHE $CXX"
751 fi
752 AC_MSG_RESULT($use_ccache)
753fi
386efb76
CF
754if test "x$use_ccache" = "xyes"; then
755 AX_CHECK_PREPROC_FLAG([-Qunused-arguments],[CPPFLAGS="-Qunused-arguments $CPPFLAGS"])
756fi
35b8af92 757
4f9e993b
WL
758dnl enable wallet
759AC_MSG_CHECKING([if wallet should be enabled])
760if test x$enable_wallet != xno; then
761 AC_MSG_RESULT(yes)
762 AC_DEFINE_UNQUOTED([ENABLE_WALLET],[1],[Define to 1 to enable wallet functions])
763
764else
765 AC_MSG_RESULT(no)
4f9e993b
WL
766fi
767
2cc0a252
JG
768dnl enable mining
769AC_MSG_CHECKING([if mining should be enabled])
770if test x$enable_mining != xno; then
771 AC_MSG_RESULT(yes)
772 AC_DEFINE(ENABLE_MINING, 1, [Define to 1 to enable mining functions])
773
774else
775 AC_MSG_RESULT(no)
776fi
777
802ea76b
SB
778dnl enable rust
779AC_MSG_CHECKING([if rust should be enabled])
780if test x$enable_rust != xno; then
781 AC_MSG_RESULT(yes)
782 AC_DEFINE(ENABLE_RUST, 1, [Define to 1 to enable Rust language dependent functions])
783
784else
785 AC_MSG_RESULT(no)
786fi
787
f200002c
JG
788AM_CONDITIONAL([ENABLE_ZMQ], [test "x$use_zmq" = "xyes"])
789
99eb947a
S
790AM_CONDITIONAL([ENABLE_PROTON], [test "x$use_proton" = "xyes"])
791
e18e1001 792AC_MSG_CHECKING([whether to build test_bitcoin])
35b8af92 793if test x$use_tests = xyes; then
e18e1001 794 AC_MSG_RESULT([yes])
2762638a 795 BUILD_TEST="yes"
e18e1001
LD
796else
797 AC_MSG_RESULT([no])
2762638a 798 BUILD_TEST=""
35b8af92
CF
799fi
800
e432a5f0 801AC_MSG_CHECKING([whether to reduce exports])
3ee028f1 802if test x$use_reduce_exports = xyes; then
e432a5f0
CF
803 AC_MSG_RESULT([yes])
804else
805 AC_MSG_RESULT([no])
806fi
807
38ba3c66 808if test x$build_bitcoin_utils$build_bitcoin_libs$build_bitcoind$use_tests = xnononono; then
abecfc42 809 AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon or --enable-tests])
a9dbcf03
LD
810fi
811
35b8af92 812AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin])
b62bbb1f 813AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin])
35b8af92 814AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows])
b77b4eda 815AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet = xyes])
2cc0a252 816AM_CONDITIONAL([ENABLE_MINING],[test x$enable_mining = xyes])
802ea76b 817AM_CONDITIONAL([ENABLE_RUST],[test x$enable_rust = xyes])
2762638a 818AM_CONDITIONAL([ENABLE_TESTS],[test x$BUILD_TEST = xyes])
b77b4eda 819AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
d5aab704 820AM_CONDITIONAL([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes])
56734f4b 821AM_CONDITIONAL([HARDEN],[test x$use_hardening = xyes])
35b8af92
CF
822
823AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version])
824AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor version])
825AC_DEFINE(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION, [Build revision])
826AC_DEFINE(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD, [Version Build])
827AC_DEFINE(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE, [Version is release])
828AC_DEFINE(COPYRIGHT_YEAR, _COPYRIGHT_YEAR, [Version is release])
829AC_SUBST(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR)
830AC_SUBST(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR)
831AC_SUBST(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION)
832AC_SUBST(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD)
833AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
834AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
c5d645e2
CF
835AC_SUBST(BITCOIN_DAEMON_NAME)
836AC_SUBST(BITCOIN_CLI_NAME)
837AC_SUBST(BITCOIN_TX_NAME)
35b8af92 838
e432a5f0 839AC_SUBST(RELDFLAGS)
5dd887fd 840AC_SUBST(ERROR_CXXFLAGS)
c459de2f
CF
841AC_SUBST(HARDENED_CXXFLAGS)
842AC_SUBST(HARDENED_CPPFLAGS)
843AC_SUBST(HARDENED_LDFLAGS)
844AC_SUBST(PIC_FLAGS)
845AC_SUBST(PIE_FLAGS)
e0077de5 846AC_SUBST(LIBTOOL_APP_LDFLAGS)
35b8af92 847AC_SUBST(BOOST_LIBS)
35b8af92
CF
848AC_SUBST(TESTDEFS)
849AC_SUBST(LEVELDB_TARGET_FLAGS)
d7002714
CF
850AC_SUBST(CRYPTO_LIBS)
851AC_SUBST(SSL_LIBS)
852AC_SUBST(EVENT_LIBS)
853AC_SUBST(EVENT_PTHREADS_LIBS)
854AC_SUBST(ZMQ_LIBS)
c4da0970
NW
855AC_SUBST(GMP_LIBS)
856AC_SUBST(GMPXX_LIBS)
8f23c734 857AC_SUBST(LIBSNARK_DEPINST)
1785bdb9 858AC_SUBST(LIBZCASH_LIBS)
99eb947a 859AC_SUBST(PROTON_LIBS)
38ba3c66 860AC_CONFIG_FILES([Makefile src/Makefile doc/man/Makefile share/setup.nsi src/test/buildenv.py])
35b8af92 861AC_CONFIG_FILES([qa/pull-tester/run-bitcoind-for-test.sh],[chmod +x qa/pull-tester/run-bitcoind-for-test.sh])
7667850d 862AC_CONFIG_FILES([qa/pull-tester/tests-config.sh],[chmod +x qa/pull-tester/tests-config.sh])
07a99017
PW
863
864dnl boost's m4 checks do something really nasty: they export these vars. As a
865dnl result, they leak into secp256k1's configure and crazy things happen.
866dnl Until this is fixed upstream and we've synced, we'll just un-export them.
0dc86138 867CPPFLAGS_TEMP="$CPPFLAGS"
cf61b544 868unset CPPFLAGS
0dc86138
CF
869CPPFLAGS="$CPPFLAGS_TEMP"
870
871LDFLAGS_TEMP="$LDFLAGS"
cf61b544 872unset LDFLAGS
0dc86138
CF
873LDFLAGS="$LDFLAGS_TEMP"
874
875LIBS_TEMP="$LIBS"
876unset LIBS
877LIBS="$LIBS_TEMP"
878
879PKGCONFIG_PATH_TEMP="$PKG_CONFIG_PATH"
880unset PKG_CONFIG_PATH
881PKG_CONFIG_PATH="$PKGCONFIG_PATH_TEMP"
882
883PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
884unset PKG_CONFIG_LIBDIR
885PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
886
c1afe40a 887ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no --enable-module-recovery"
26a8f68e 888AC_CONFIG_SUBDIRS([src/secp256k1 src/snark src/univalue])
07a99017 889
35b8af92 890AC_OUTPUT
a98356fe
CF
891
892dnl Taken from https://wiki.debian.org/RpathIssue
893case $host in
894 *-*-linux-gnu)
895 AC_MSG_RESULT([Fixing libtool for -rpath problems.])
896 sed < libtool > libtool-2 \
897 's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/'
898 mv libtool-2 libtool
899 chmod 755 libtool
900 ;;
901esac
0bcd85be
JS
902
903echo
904echo "Options used to compile and link:"
905echo " with wallet = $enable_wallet"
906echo " with zmq = $use_zmq"
907echo " with test = $use_tests"
908echo " debug enabled = $enable_debug"
5dd887fd 909echo " werror = $enable_werror"
0bcd85be
JS
910echo
911echo " target os = $TARGET_OS"
912echo " build os = $BUILD_OS"
913echo
914echo " CC = $CC"
915echo " CFLAGS = $CFLAGS"
916echo " CPPFLAGS = $CPPFLAGS"
917echo " CXX = $CXX"
918echo " CXXFLAGS = $CXXFLAGS"
919echo " LDFLAGS = $LDFLAGS"
bc9fff11 920echo " ARFLAGS = $ARFLAGS"
0bcd85be 921echo
This page took 0.31267 seconds and 4 git commands to generate.