1 dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
3 define(_CLIENT_VERSION_MAJOR, 2)
4 define(_CLIENT_VERSION_MINOR, 0)
5 define(_CLIENT_VERSION_REVISION, 7)
6 define(_CLIENT_VERSION_BUILD, 53)
7 define(_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)))
8 define(_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)))
9 define(_CLIENT_VERSION_IS_RELEASE, true)
10 define(_COPYRIGHT_YEAR, 2019)
11 AC_INIT([Verus-CLI],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_SUFFIX(_ZC_BUILD_VAL)],[https://github.com/VerusCoin/VerusCoin/issues],[verus-cli])
12 AC_CONFIG_SRCDIR([src/main.cpp])
13 AC_CONFIG_HEADERS([src/config/bitcoin-config.h])
14 AC_CONFIG_AUX_DIR([build-aux])
15 AC_CONFIG_MACRO_DIR([build-aux/m4])
17 BITCOIN_DAEMON_NAME=verusd
18 BITCOIN_CLI_NAME=verus
19 BITCOIN_TX_NAME=verus-tx
21 dnl Unless the user specified ARFLAGS, force it to be cr
22 AC_ARG_VAR(ARFLAGS, [Flags for the archiver, defaults to <cr> if not set])
23 if test "x${ARFLAGS+set}" != "xset"; then
29 AH_TOP([#ifndef BITCOIN_CONFIG_H])
30 AH_TOP([#define BITCOIN_CONFIG_H])
31 AH_BOTTOM([#endif //BITCOIN_CONFIG_H])
33 dnl faketime breaks configure and is only needed for make. Disable it here.
36 dnl Automake init set-up and checks
37 AM_INIT_AUTOMAKE([no-define subdir-objects foreign tar-pax])
39 dnl faketime messes with timestamps and causes configure to be re-run.
40 dnl --disable-maintainer-mode can be used to bypass this.
41 AM_MAINTAINER_MODE([enable])
43 dnl make the compilation flags quiet unless V=1 is used
44 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
46 dnl Compiler checks (here before libtool).
47 if test "x${CXXFLAGS+set}" = "xset"; then
48 CXXFLAGS_overridden=yes
50 CXXFLAGS_overridden=no
54 m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCXX])
56 dnl By default, libtool for mingw refuses to link static libs into a dll for
57 dnl fear of mixing pic/non-pic objects, and import/export complications. Since
58 dnl we have those under control, re-enable that functionality.
61 lt_cv_deplibs_check_method="pass_all"
64 dnl Require C++11 compiler (no GNU extensions)
65 AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory], [nodefault])
66 dnl Check if -latomic is required for <std::atomic>
69 dnl Libtool init checks.
72 dnl Check/return PATH for base programs.
74 AC_PATH_TOOL(RANLIB, ranlib)
75 AC_PATH_TOOL(STRIP, strip)
76 AC_PATH_TOOL(GCOV, gcov)
77 AC_PATH_PROG(LCOV, lcov)
78 AC_PATH_PROG(GENHTML, genhtml)
79 AC_PATH_PROG([GIT], [git])
80 AC_PATH_PROG(CCACHE,ccache)
81 AC_PATH_PROG(XGETTEXT,xgettext)
82 AC_PATH_PROG(HEXDUMP,hexdump)
83 AC_PATH_TOOL(READELF,readelf)
84 AC_PATH_TOOL(CPPFILT,c++filt)
87 AC_ARG_ENABLE([wallet],
88 [AS_HELP_STRING([--enable-wallet],
89 [enable wallet (default is yes)])],
90 [enable_wallet=$enableval],
93 AC_ARG_ENABLE([mining],
94 [AS_HELP_STRING([--enable-mining],
95 [enable mining (default is yes)])],
96 [enable_mining=$enableval],
99 AC_ARG_ENABLE([proton],
100 [AS_HELP_STRING([--disable-proton],
101 [disable Proton (AMQP messaging)])],
102 [use_proton=$enableval],
106 AS_HELP_STRING([--enable-tests],[compile tests (default is yes)]),
107 [use_tests=$enableval],
110 AC_ARG_ENABLE([asan],
111 [AS_HELP_STRING([--enable-asan],
112 [instrument the executables with asan (default is no)])],
113 [use_asan=$enableval],
116 AC_ARG_ENABLE([tsan],
117 [AS_HELP_STRING([--enable-tsan],
118 [instrument the executables with tsan (default is no)])],
119 [use_tsan=$enableval],
122 if test x$TARGET_OS = xdarwin; then
123 AC_ARG_ENABLE([hardening],
124 [AS_HELP_STRING([--enable-hardening],
125 [attempt to harden the resulting executables (default is yes)])],
126 [use_hardening=$enableval],
129 AC_ARG_ENABLE([hardening],
130 [AS_HELP_STRING([--enable-hardening],
131 [attempt to harden the resulting executables (default is yes)])],
132 [use_hardening=$enableval],
136 AC_ARG_ENABLE([reduce-exports],
137 [AS_HELP_STRING([--enable-reduce-exports],
138 [attempt to reduce exported symbols in the resulting executables (default is no)])],
139 [use_reduce_exports=$enableval],
140 [use_reduce_exports=no])
142 AC_ARG_ENABLE([ccache],
143 [AS_HELP_STRING([--enable-ccache],
144 [use ccache for building (default is yes if ccache is found)])],
145 [use_ccache=$enableval],
148 AC_ARG_ENABLE([lcov],
149 [AS_HELP_STRING([--enable-lcov],
150 [enable lcov testing (default is no)])],
154 AC_ARG_ENABLE([glibc-back-compat],
155 [AS_HELP_STRING([--enable-glibc-back-compat],
156 [enable backwards compatibility with glibc])],
157 [use_glibc_compat=$enableval],
158 [use_glibc_compat=no])
161 [AS_HELP_STRING([--disable-zmq],
162 [disable ZMQ notifications])],
163 [use_zmq=$enableval],
166 AC_ARG_WITH([protoc-bindir],[AS_HELP_STRING([--with-protoc-bindir=BIN_DIR],[specify protoc bin path])], [protoc_bin_path=$withval], [])
169 [AS_HELP_STRING([--disable-man],
170 [do not install man pages (default is to install)])],,
172 AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no)
175 AC_ARG_ENABLE([debug],
176 [AS_HELP_STRING([--enable-debug],
177 [use debug compiler flags and macros (default is no)])],
178 [enable_debug=$enableval],
181 # Turn warnings into errors
182 AC_ARG_ENABLE([werror],
183 [AS_HELP_STRING([--enable-werror],
184 [Treat all compiler warnings as errors (default is no)])],
185 [enable_werror=$enableval],
189 AX_CHECK_COMPILE_FLAG([-Werror],[CXXFLAG_WERROR="-Werror"],[CXXFLAG_WERROR=""])
191 if test "x$enable_debug" = xyes; then
192 CPPFLAGS="$CPPFLAGS -DDEBUG -DDEBUG_LOCKORDER"
193 if test "x$GCC" = xyes; then
194 CFLAGS="$CFLAGS -g3 -O0"
197 if test "x$GXX" = xyes; then
198 CXXFLAGS="$CXXFLAGS -g3 -O0"
203 if test "x$enable_werror" = "xyes"; then
204 if test "x$CXXFLAG_WERROR" = "x"; then
205 AC_MSG_ERROR("enable-werror set but -Werror is not usable")
207 ERROR_CXXFLAGS="$ERROR_CXXFLAGS -Werror"
210 if test "x$CXXFLAGS_overridden" = "xno"; then
211 AX_CHECK_COMPILE_FLAG([-Wall],[CXXFLAGS="$CXXFLAGS -Wall"],,[[$CXXFLAG_WERROR]])
212 AX_CHECK_COMPILE_FLAG([-Wextra],[CXXFLAGS="$CXXFLAGS -Wextra"],,[[$CXXFLAG_WERROR]])
213 AX_CHECK_COMPILE_FLAG([-Wformat],[CXXFLAGS="$CXXFLAGS -Wformat"],,[[$CXXFLAG_WERROR]])
214 AX_CHECK_COMPILE_FLAG([-Wvla],[CXXFLAGS="$CXXFLAGS -Wvla"],,[[$CXXFLAG_WERROR]])
215 AX_CHECK_COMPILE_FLAG([-Wformat-security],[CXXFLAGS="$CXXFLAGS -Wformat-security"],,[[$CXXFLAG_WERROR]])
217 ## Some compilers (gcc) ignore unknown -Wno-* options, but warn about all
218 ## unknown options if any other warning is produced. Test the -Wfoo case, and
219 ## set the -Wno-foo case if it works.
220 AX_CHECK_COMPILE_FLAG([-Wunused-parameter],[CXXFLAGS="$CXXFLAGS -Wno-unused-parameter"],,[[$CXXFLAG_WERROR]])
221 AX_CHECK_COMPILE_FLAG([-Wself-assign],[CXXFLAGS="$CXXFLAGS -Wno-self-assign"],,[[$CXXFLAG_WERROR]])
222 AX_CHECK_COMPILE_FLAG([-Wunused-local-typedef],[CXXFLAGS="$CXXFLAGS -Wno-unused-local-typedef"],,[[$CXXFLAG_WERROR]])
223 AX_CHECK_COMPILE_FLAG([-Wdeprecated-register],[CXXFLAGS="$CXXFLAGS -Wno-deprecated-register"],,[[$CXXFLAG_WERROR]])
225 CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"
228 [AS_HELP_STRING([--with-utils],
229 [build verus verus-tx wallet-utility (default=yes)])],
230 [build_bitcoin_utils=$withval],
231 [build_bitcoin_utils=yes])
234 [AS_HELP_STRING([--with-libs],
235 [build libraries (default=no)])],
236 [build_bitcoin_libs=$withval],
237 [build_bitcoin_libs=no])
239 AC_ARG_WITH([daemon],
240 [AS_HELP_STRING([--with-daemon],
241 [build bitcoind daemon (default=yes)])],
242 [build_bitcoind=$withval],
243 [build_bitcoind=yes])
245 GCC_TARGET=`$CC -dumpmachine 2>&1`
259 #pkgconfig does more harm than good with MinGW
263 AC_CHECK_LIB([mingwthrd], [main],, AC_MSG_ERROR(lib missing))
264 AC_CHECK_LIB([kernel32], [main],, AC_MSG_ERROR(lib missing))
265 AC_CHECK_LIB([user32], [main],, AC_MSG_ERROR(lib missing))
266 AC_CHECK_LIB([gdi32], [main],, AC_MSG_ERROR(lib missing))
267 AC_CHECK_LIB([comdlg32], [main],, AC_MSG_ERROR(lib missing))
268 AC_CHECK_LIB([winspool], [main],, AC_MSG_ERROR(lib missing))
269 AC_CHECK_LIB([winmm], [main],, AC_MSG_ERROR(lib missing))
270 AC_CHECK_LIB([shell32], [main],, AC_MSG_ERROR(lib missing))
271 AC_CHECK_LIB([comctl32], [main],, AC_MSG_ERROR(lib missing))
272 AC_CHECK_LIB([ole32], [main],, AC_MSG_ERROR(lib missing))
273 AC_CHECK_LIB([oleaut32], [main],, AC_MSG_ERROR(lib missing))
274 AC_CHECK_LIB([uuid], [main],, AC_MSG_ERROR(lib missing))
275 AC_CHECK_LIB([rpcrt4], [main],, AC_MSG_ERROR(lib missing))
276 AC_CHECK_LIB([advapi32], [main],, AC_MSG_ERROR(lib missing))
277 AC_CHECK_LIB([ws2_32], [main],, AC_MSG_ERROR(lib missing))
278 AC_CHECK_LIB([mswsock], [main],, AC_MSG_ERROR(lib missing))
279 AC_CHECK_LIB([shlwapi], [main],, AC_MSG_ERROR(lib missing))
280 AC_CHECK_LIB([iphlpapi], [main],, AC_MSG_ERROR(lib missing))
281 AC_CHECK_LIB([crypt32], [main],, AC_MSG_ERROR(lib missing))
283 # -static is interpreted by libtool, where it has a different meaning.
284 # In libtool-speak, it's -all-static.
285 AX_CHECK_LINK_FLAG([[-static]],[LIBTOOL_APP_LDFLAGS="$LIBTOOL_APP_LDFLAGS -all-static"])
287 AC_PATH_PROG([MAKENSIS], [makensis], none)
288 if test x$MAKENSIS = xnone; then
289 AC_MSG_WARN("makensis not found. Cannot create installer.")
292 AC_PATH_TOOL(WINDRES, windres, none)
293 if test x$WINDRES = xnone; then
294 AC_MSG_ERROR("windres not found")
297 CPPFLAGS="$CPPFLAGS -D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB"
298 LEVELDB_TARGET_FLAGS="TARGET_OS=OS_WINDOWS_CROSSCOMPILE"
299 if test "x$CXXFLAGS_overridden" = "xno"; then
300 CXXFLAGS="$CXXFLAGS -w"
303 i?86-*) WINDOWS_BITS=32 ;;
304 x86_64-*) WINDOWS_BITS=64 ;;
305 *) AC_MSG_ERROR("Could not determine win32/win64 for installer") ;;
307 AC_SUBST(WINDOWS_BITS)
309 dnl libtool insists upon adding -nostdlib and a list of objects/libs to link against.
310 dnl That breaks our ability to build dll's with static libgcc/libstdc++/libssp. Override
311 dnl its command here, with the predeps/postdeps removed, and -static inserted. Postdeps are
312 dnl also overridden to prevent their insertion later.
313 dnl This should only affect dll's.
314 archive_cmds_CXX="\$CC -shared \$libobjs \$deplibs \$compiler_flags -static -o \$output_objdir/\$soname \${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib"
320 LEVELDB_TARGET_FLAGS="TARGET_OS=Darwin"
321 if test x$cross_compiling != xyes; then
323 AC_CHECK_PROG([PORT],port, port)
324 if test x$PORT = xport; then
325 dnl add default macports paths
326 CPPFLAGS="$CPPFLAGS -isystem /opt/local/include"
327 LIBS="$LIBS -L/opt/local/lib"
328 if test -d /opt/local/include/db62; then
329 CPPFLAGS="$CPPFLAGS -I/opt/local/include/db62"
330 LIBS="$LIBS -L/opt/local/lib/db62"
334 dnl AC_CHECK_PROG([BREW],brew, brew)
335 dnl if test x$BREW = xbrew; then
336 dnl These Homebrew packages may be keg-only, meaning that they won't be found
337 dnl in expected paths because they may conflict with system files. Ask
338 dnl Homebrew where each one is located, then adjust paths accordingly.
339 dnl It's safe to add these paths even if the functionality is disabled by
340 dnl the user (--without-wallet for example).
342 dnl openssl_prefix=`$BREW --prefix openssl 2>/dev/null`
343 dnl bdb_prefix=`$BREW --prefix berkeley-db4 2>/dev/null`
344 dnl qt5_prefix=`$BREW --prefix qt5 2>/dev/null`
345 dnl if test x$openssl_prefix != x; then
346 dnl PKG_CONFIG_PATH="$PKG_CONFIG_PATH"
347 dnl export PKG_CONFIG_PATH
349 dnl if test x$bdb_prefix != x; then
350 dnl CPPFLAGS="$CPPFLAGS -I$bdb_prefix/include"
351 dnl LIBS="$LIBS -L$bdb_prefix/lib"
353 dnl if test x$qt5_prefix != x; then
354 dnl PKG_CONFIG_PATH="$qt5_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
355 dnl export PKG_CONFIG_PATH
364 AC_PATH_TOOL([INSTALLNAMETOOL], [install_name_tool], install_name_tool)
365 AC_PATH_TOOL([OTOOL], [otool], otool)
366 AC_PATH_PROGS([GENISOIMAGE], [genisoimage mkisofs],genisoimage)
368 dnl libtool will try to strip the static lib, which is a problem for
369 dnl cross-builds because strip attempts to call a hard-coded ld,
370 dnl which may not exist in the path. Stripping the .a is not
371 dnl necessary, so just disable it.
377 AX_CHECK_LINK_FLAG([[-Wl,-headerpad_max_install_names]], [LDFLAGS="$LDFLAGS -Wl,-headerpad_max_install_names"])
378 CPPFLAGS="$CPPFLAGS -DMAC_OSX"
379 OBJCXXFLAGS="$CXXFLAGS"
388 if test x$use_pkgconfig = xyes; then
389 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.)])
390 m4_ifdef([PKG_PROG_PKG_CONFIG], [
392 if test x"$PKG_CONFIG" = "x"; then
393 AC_MSG_ERROR(pkg-config not found.)
398 if test x$use_lcov = xyes; then
399 if test x$LCOV = x; then
400 AC_MSG_ERROR("lcov testing requested but lcov not found")
402 if test x$GCOV = x; then
403 AC_MSG_ERROR("lcov testing requested but gcov not found")
405 if test x$GENHTML = x; then
406 AC_MSG_ERROR("lcov testing requested but genhtml not found")
408 LCOV="$LCOV --gcov-tool=$GCOV --rc lcov_branch_coverage=1"
409 GENHTML="$GENHTML --branch-coverage"
410 AX_CHECK_COMPILE_FLAG([--coverage],[CXXFLAGS="$CXXFLAGS --coverage"],
411 [AC_MSG_ERROR("lcov testing requested but --coverage flag does not work")])
414 dnl Check for endianness
417 dnl Check for pthread compile/link requirements
420 # The following macro will add the necessary defines to bitcoin-config.h, but
421 # they also need to be passed down to any subprojects. Pull the results out of
422 # the cache and add them to CPPFLAGS.
424 # detect POSIX or GNU variant of strerror_r
427 if test x$ac_cv_sys_file_offset_bits != x &&
428 test x$ac_cv_sys_file_offset_bits != xno &&
429 test x$ac_cv_sys_file_offset_bits != xunknown; then
430 CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
433 if test x$ac_cv_sys_large_files != x &&
434 test x$ac_cv_sys_large_files != xno &&
435 test x$ac_cv_sys_large_files != xunknown; then
436 CPPFLAGS="$CPPFLAGS -D_LARGE_FILES=$ac_cv_sys_large_files"
439 AX_CHECK_LINK_FLAG([[-Wl,--large-address-aware]], [LDFLAGS="$LDFLAGS -Wl,--large-address-aware"])
441 AX_GCC_FUNC_ATTRIBUTE([visibility])
442 AX_GCC_FUNC_ATTRIBUTE([dllexport])
443 AX_GCC_FUNC_ATTRIBUTE([dllimport])
445 if test x$use_glibc_compat != xno; then
447 #glibc absorbed clock_gettime in 2.17. librt (its previous location) is safe to link
448 #in anyway for back-compat.
449 AC_CHECK_LIB([rt],[clock_gettime],, AC_MSG_ERROR(lib missing))
451 #__fdelt_chk's params and return type have changed from long unsigned int to long int.
452 # See which one is present here.
453 AC_MSG_CHECKING(__fdelt_chk type)
454 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef _FORTIFY_SOURCE
455 #undef _FORTIFY_SOURCE
457 #define _FORTIFY_SOURCE 2
458 #include <sys/select.h>
459 extern "C" long unsigned int __fdelt_warn(long unsigned int);]],[[]])],
460 [ fdelt_type="long unsigned int"],
461 [ fdelt_type="long int"])
462 AC_MSG_RESULT($fdelt_type)
463 AC_DEFINE_UNQUOTED(FDELT_TYPE, $fdelt_type,[parameter and return value type for __fdelt_chk])
465 AC_SEARCH_LIBS([clock_gettime],[rt])
468 if test x$TARGET_OS != xwindows; then
469 # All windows code is PIC, forcing it on just adds useless compile warnings
470 AX_CHECK_COMPILE_FLAG([-fPIC],[PIC_FLAGS="-fPIC"])
473 #asan and tsan cannot be used together
474 if test x$use_asan$use_tsan == xyesyes; then
475 AC_MSG_ERROR(asan and tsan cannot be simultaneously enabled)
478 # using asan flag to enable address sanitizer and undefined behavior sanitizer
479 if test x$use_asan == xyes; then
480 AX_CHECK_LINK_FLAG([-static-libstdc++],[SAN_LDFLAGS="$SAN_LDFLAGS -static-libstdc++"],[AC_MSG_ERROR(Cannot statically link -static-libstdc++)])
481 AX_CHECK_LINK_FLAG([-static-libasan],[SAN_LDFLAGS="$SAN_LDFLAGS -static-libasan"],[AC_MSG_ERROR(Cannot statically link -static-libasan)])
482 AX_CHECK_COMPILE_FLAG([-fsanitize=address],[SAN_CXXFLAGS="$SAN_CXXFLAGS -fsanitize=address"],[AC_MSG_ERROR(Cannot enable -fsanitize=address)])
483 AX_CHECK_COMPILE_FLAG([-fsanitize=undefined],[SAN_CXXFLAGS="$SAN_CXXFLAGS -fsanitize=undefined"],[AC_MSG_ERROR(Cannot enable -fsanitize=undefined)])
484 AX_CHECK_COMPILE_FLAG([-fno-omit-frame-pointer],[SAN_CXXFLAGS="$SAN_CXXFLAGS -fno-omit-frame-pointer"],[AC_MSG_ERROR(Cannot enable -fno-omit-frame-pointer)])
487 # using tsan flag to enable address thread sanitizer
488 # TSAN is supported on Linux x84_64 and tested on Ubuntu 12.04
489 # Non-position-independent executables are not supported. Use with -fPIE and -pie flags
490 # libc/libstdc++ static linking is not supported
491 if test x$use_tsan == xyes; then
492 AX_CHECK_COMPILE_FLAG([-fsanitize=thread],[SAN_CXXFLAGS="$SAN_CXXFLAGS -fsanitize=thread"],[AC_MSG_ERROR(Cannot enable -fsanitize=thread)])
493 AX_CHECK_COMPILE_FLAG([-fno-omit-frame-pointer],[SAN_CXXFLAGS="$SAN_CXXFLAGS -fno-omit-frame-pointer"],[AC_MSG_ERROR(Cannot enable -fno-omit-frame-pointer)])
496 if test x$use_hardening != xno; then
497 AX_CHECK_COMPILE_FLAG([-Wformat],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wformat"],[AC_MSG_ERROR(Cannot enable -Wformat)])
498 AX_CHECK_COMPILE_FLAG([-Wformat-security],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wformat-security"],[AC_MSG_ERROR(Cannot enable -Wformat-security)],[-Wformat])
499 AX_CHECK_COMPILE_FLAG([-Wstack-protector],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wstack-protector"],[AC_MSG_ERROR(Cannot enable -Wstack-protector)])
500 AX_CHECK_COMPILE_FLAG([-fstack-protector-all],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fstack-protector-all"],[AC_MSG_ERROR(Cannot enable -fstack-protector-all)])
502 AX_CHECK_PREPROC_FLAG([-D_FORTIFY_SOURCE=2],[
503 AX_CHECK_PREPROC_FLAG([-U_FORTIFY_SOURCE],[
504 HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -U_FORTIFY_SOURCE"
505 ],[AC_MSG_ERROR(Cannot enable -U_FORTIFY_SOURCE)])
506 HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -D_FORTIFY_SOURCE=2"
507 ],[AC_MSG_ERROR(Cannot enable -D_FORTIFY_SOURCE=2)])
509 #AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"],[AC_MSG_ERROR(Cannot enable RELRO)])
510 #AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"],[AC_MSG_ERROR(Cannot enable BIND_NOW)])
512 if test x$TARGET_OS != xwindows; then
513 # All windows code is PIC, forcing it on just adds useless compile warnings
514 AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"],[AC_MSG_ERROR(Cannot enable RELRO)])
515 AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"],[AC_MSG_ERROR(Cannot enable BIND_NOW)])
516 AX_CHECK_COMPILE_FLAG([-fPIE],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fPIE"],[AC_MSG_ERROR(Cannot enable -fPIE)])
517 AX_CHECK_LINK_FLAG([[-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"],[AC_MSG_ERROR(Cannot enable -pie)])
519 # These are only available on Windows.
520 AX_CHECK_LINK_FLAG([[-Wl,--dynamicbase]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--dynamicbase"],[AC_MSG_ERROR(Cannot enable --dynamicbase)])
521 AX_CHECK_LINK_FLAG([[-Wl,--nxcompat]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--nxcompat"],[AC_MSG_ERROR(Cannot enable --nxcompat)])
522 AX_CHECK_LINK_FLAG([[-Wl,--high-entropy-va]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--high-entropy-va"],[AC_MSG_ERROR(Cannot enable ASLR)])
527 AC_CHECK_LIB([ssp], [main],, AC_MSG_ERROR(lib missing))
532 dnl this flag screws up non-darwin gcc even when the check fails. special-case it.
533 if test x$TARGET_OS = xdarwin; then
534 AX_CHECK_LINK_FLAG([[-Wl,-dead_strip]], [LDFLAGS="$LDFLAGS -Wl,-dead_strip"])
537 AC_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])
538 AC_SEARCH_LIBS([getaddrinfo_a], [anl], [AC_DEFINE(HAVE_GETADDRINFO_A, 1, [Define this symbol if you have getaddrinfo_a])])
539 AC_SEARCH_LIBS([inet_pton], [nsl resolv], [AC_DEFINE(HAVE_INET_PTON, 1, [Define this symbol if you have inet_pton])])
541 AC_CHECK_DECLS([strnlen])
543 AC_CHECK_DECLS([le16toh, le32toh, le64toh, htole16, htole32, htole64, be16toh, be32toh, be64toh, htobe16, htobe32, htobe64],,,
546 #elif HAVE_SYS_ENDIAN_H
547 #include <sys/endian.h>
550 AC_CHECK_DECLS([bswap_16, bswap_32, bswap_64],,,
552 #include <byteswap.h>
555 dnl Check for MSG_NOSIGNAL
556 AC_MSG_CHECKING(for MSG_NOSIGNAL)
557 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
558 [[ int f = MSG_NOSIGNAL; ]])],
559 [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MSG_NOSIGNAL, 1,[Define this symbol if you have MSG_NOSIGNAL]) ],
563 AC_MSG_CHECKING([for visibility attribute])
564 AC_LINK_IFELSE([AC_LANG_SOURCE([
565 int foo_def( void ) __attribute__((visibility("default")));
569 AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE,1,[Define if the visibility attribute is supported.])
574 if test x$use_reduce_exports = xyes; then
575 AC_MSG_ERROR([Cannot find a working visibility attribute. Use --disable-reduce-exports.])
580 if test x$use_reduce_exports = xyes; then
581 AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],[RE_CXXFLAGS="-fvisibility=hidden"],
582 [AC_MSG_ERROR([Cannot set default symbol visibility. Use --disable-reduce-exports.])])
588 AM_CONDITIONAL([EMBEDDED_LEVELDB],[true])
589 AC_SUBST(LEVELDB_CPPFLAGS)
593 if test x$enable_wallet != xno; then
594 dnl Check for libdb_cxx only if wallet enabled
598 dnl Check Qpid Proton headers and library exist
599 if test x$use_proton = xyes; then
600 AC_CHECK_HEADERS([proton/connection.hpp],
602 [AC_MSG_WARN([Proton headers not found, disabling Proton support])
604 AC_CHECK_LIB([qpid-proton-cpp-static], [main],
605 [PROTON_LIBS="-lqpid-proton-cpp-static"],
606 [AC_MSG_WARN([Proton qpid-proton-cpp-static library not found, disabling Proton support])
608 AC_CHECK_LIB([qpid-proton-core-static], [main],
609 [PROTON_LIBS+=" -lqpid-proton-core-static"],
610 [AC_MSG_WARN([Proton qpid-proton-core-static library not found, disabling Proton support])
612 AC_CHECK_LIB([qpid-proton-static], [main],
613 [PROTON_LIBS+=" -lqpid-proton-static"],
614 [AC_MSG_WARN([Proton qpid-proton-static library not found, disabling Proton support])
617 if test x$use_proton = xyes; then
618 AC_DEFINE(ENABLE_PROTON, 1, [Define to 1 to enable Proton functions])
620 AC_DEFINE(ENABLE_PROTON, 0, [Define to 1 to enable Proton functions])
623 if test x$build_bitcoin_utils$build_bitcoind$use_tests = xnonono; then
629 if test x$use_boost = xyes; then
631 dnl Check for boost libs
632 dnl We need Boost >= 1.62 to fix a potential security bug (https://github.com/zcash/zcash/issues/1241)
633 AX_BOOST_BASE([1.62])
636 AX_BOOST_PROGRAM_OPTIONS
642 if test x$use_reduce_exports = xyes; then
643 CXXFLAGS="$CXXFLAGS $RE_CXXFLAGS"
644 AX_CHECK_LINK_FLAG([[-Wl,--exclude-libs,ALL]], [RELDFLAGS="-Wl,--exclude-libs,ALL"])
647 if test x$use_tests = xyes; then
649 if test x$HEXDUMP = x; then
650 AC_MSG_ERROR(hexdump is required for tests)
654 if test x$use_boost = xyes; then
656 AX_BOOST_UNIT_TEST_FRAMEWORK
658 dnl Determine if -DBOOST_TEST_DYN_LINK is needed
659 AC_MSG_CHECKING([for dynamic linked boost test])
661 LIBS="$LIBS $BOOST_LDFLAGS $BOOST_UNIT_TEST_FRAMEWORK_LIB"
662 TEMP_CPPFLAGS="$CPPFLAGS"
663 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
664 AC_LINK_IFELSE([AC_LANG_SOURCE([
665 #define BOOST_TEST_DYN_LINK
666 #define BOOST_TEST_MAIN
667 #include <boost/test/unit_test.hpp>
671 [TESTDEFS="$TESTDEFS -DBOOST_TEST_DYN_LINK"],
674 CPPFLAGS="$TEMP_CPPFLAGS"
679 if test x$use_boost = xyes; then
680 BOOST_LIBS="$BOOST_LDFLAGS $BOOST_SYSTEM_LIB $BOOST_FILESYSTEM_LIB $BOOST_PROGRAM_OPTIONS_LIB $BOOST_THREAD_LIB $BOOST_CHRONO_LIB"
683 if test x$use_pkgconfig = xyes; then
688 PKG_CHECK_MODULES([SSL], [libssl],, [AC_MSG_ERROR(openssl not found.)])
689 PKG_CHECK_MODULES([CRYPTO], [libcrypto],,[AC_MSG_ERROR(libcrypto not found.)])
690 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
691 PKG_CHECK_MODULES([EVENT], [libevent],, [AC_MSG_ERROR(libevent not found.)])
692 if test x$TARGET_OS != xwindows; then
693 PKG_CHECK_MODULES([EVENT_PTHREADS], [libevent_pthreads],, [AC_MSG_ERROR(libevent_pthreads not found.)])
697 if test "x$use_zmq" = "xyes"; then
698 PKG_CHECK_MODULES([ZMQ],[libzmq >= 4],
699 [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
700 [AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
701 AC_MSG_WARN([libzmq version 4.x or greater not found, disabling])
704 AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
710 echo 'BUG: configure does not yet check for the following dependencies if pkg-config is not on the system: libcrypto++, libgmp'
712 AC_CHECK_HEADER([openssl/crypto.h],,AC_MSG_ERROR(libcrypto headers missing))
713 AC_CHECK_LIB([crypto], [main],CRYPTO_LIBS=-lcrypto, AC_MSG_ERROR(libcrypto missing))
715 AC_CHECK_HEADER([openssl/ssl.h],, AC_MSG_ERROR(libssl headers missing),)
716 AC_CHECK_LIB([ssl], [main],SSL_LIBS=-lssl, AC_MSG_ERROR(libssl missing))
718 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
719 AC_CHECK_HEADER([event2/event.h],, AC_MSG_ERROR(libevent headers missing),)
720 AC_CHECK_LIB([event],[main],EVENT_LIBS=-levent,AC_MSG_ERROR(libevent missing))
721 if test x$TARGET_OS != xwindows; then
722 AC_CHECK_LIB([event_pthreads],[main],EVENT_PTHREADS_LIBS=-levent_pthreads,AC_MSG_ERROR(libevent_pthreads missing))
726 if test "x$use_zmq" = "xyes"; then
727 AC_CHECK_HEADER([zmq.h],
728 [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
729 [AC_MSG_WARN([zmq.h not found, disabling zmq support])
731 AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
732 AC_CHECK_LIB([zmq],[zmq_ctx_shutdown],ZMQ_LIBS=-lzmq,
733 [AC_MSG_WARN([libzmq >= 4.0 not found, disabling zmq support])
735 AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
737 AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
740 if test "x$use_zmq" = "xyes"; then
741 dnl Assume libzmq was built for static linking
744 ZMQ_CFLAGS="$ZMQ_CFLAGS -DZMQ_STATIC"
750 # These packages don't provide pkgconfig config files across all
751 # platforms, so we use older autoconf detection mechanisms:
752 if test x$TARGET_OS = xdarwin; then
753 AC_CHECK_HEADER([gmp.h],,AC_MSG_ERROR(libgmp headers missing))
754 AC_CHECK_LIB([gmp],[[__gmpn_sub_n]],GMP_LIBS=-lgmp, [AC_MSG_ERROR(libgmp missing)])
756 AC_CHECK_HEADER([gmpxx.h],,AC_MSG_ERROR(libgmpxx headers missing))
757 AC_CHECK_LIB([gmpxx],[main],GMPXX_LIBS=-lgmpxx, [AC_MSG_ERROR(libgmpxx missing)])
760 #AC_CHECK_HEADER([gmp.h],,AC_MSG_ERROR(libgmp headers missing))
761 #AC_CHECK_LIB([gmp],[[__gmpn_sub_n]],GMP_LIBS=-lgmp, [AC_MSG_ERROR(libgmp missing)])
763 #AC_CHECK_HEADER([gmpxx.h],,AC_MSG_ERROR(libgmpxx headers missing))
764 #AC_CHECK_LIB([gmpxx],[main],GMPXX_LIBS=-lgmpxx, [AC_MSG_ERROR(libgmpxx missing)])
766 RUST_LIBS="-lrustzcash"
771 RUST_LIBS="$RUST_LIBS -ldl"
775 dnl Check for OpenMP support
777 [AC_DEFINE(HAVE_OPENMP, 1, [Define if OpenMP is enabled])
778 AM_CONDITIONAL([HAVE_OPENMP], [true])
779 CPPFLAGS="$CPPFLAGS -DMULTICORE"
780 CXXFLAGS="$CXXFLAGS $OPENMP_CXXFLAGS"],
781 [AC_MSG_WARN([OpenMP not supported, disabling multithreading])
782 AC_DEFINE(HAVE_OPENMP, 0, [Define if OpenMP is enabled])
783 AM_CONDITIONAL([HAVE_OPENMP], [false])])
785 # Gitian uses a config.site that sets depends_prefix, and then sets --prefix=/
786 # build.sh just uses --prefix
787 if test x$depends_prefix != x; then
788 LIBSNARK_DEPINST="$depends_prefix"
790 LIBSNARK_DEPINST="$prefix"
793 # Set optimization flags for libsnark
794 AX_GCC_ARCHFLAG([no], [LIBSNARK_OPTFLAGS="-O2 $ax_cv_gcc_archflag"], [LIBSNARK_OPTFLAGS="-O2"])
796 # Additional Zcash flags
797 AX_CHECK_COMPILE_FLAG([-fwrapv],[CXXFLAGS="$CXXFLAGS -fwrapv"])
798 AX_CHECK_COMPILE_FLAG([-fno-strict-aliasing],[CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"])
799 AX_CHECK_COMPILE_FLAG([-Wno-builtin-declaration-mismatch],[CXXFLAGS="$CXXFLAGS -Wno-builtin-declaration-mismatch"],,[[$CXXFLAG_WERROR]])
800 LIBZCASH_LIBS="-lgmp -lgmpxx $BOOST_SYSTEM_LIB -lcrypto -lsodium $RUST_LIBS"
802 AC_MSG_CHECKING([whether to build bitcoind])
803 AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
804 AC_MSG_RESULT($build_bitcoind)
806 AC_MSG_CHECKING([whether to build utils (verus verus-tx wallet-utility)])
807 AM_CONDITIONAL([BUILD_BITCOIN_UTILS], [test x$build_bitcoin_utils = xyes])
808 AC_MSG_RESULT($build_bitcoin_utils)
810 AC_MSG_CHECKING([whether to build libraries])
811 AM_CONDITIONAL([BUILD_BITCOIN_LIBS], [test x$build_bitcoin_libs = xyes])
812 if test x$build_bitcoin_libs = xyes; then
813 AC_DEFINE(HAVE_CONSENSUS_LIB, 1, [Define this symbol if the consensus lib has been built])
814 AC_CONFIG_FILES([libzcashconsensus.pc:libzcashconsensus.pc.in])
817 AC_MSG_RESULT($build_bitcoin_libs)
821 if test "x$use_ccache" != "xno"; then
822 AC_MSG_CHECKING(if ccache should be used)
823 if test x$CCACHE = x; then
824 if test "x$use_ccache" = "xyes"; then
825 AC_MSG_ERROR([ccache not found.]);
831 CC="$ac_cv_path_CCACHE $CC"
832 CXX="$ac_cv_path_CCACHE $CXX"
834 AC_MSG_RESULT($use_ccache)
836 if test "x$use_ccache" = "xyes"; then
837 AX_CHECK_PREPROC_FLAG([-Qunused-arguments],[CPPFLAGS="-Qunused-arguments $CPPFLAGS"])
841 AC_MSG_CHECKING([if wallet should be enabled])
842 if test x$enable_wallet != xno; then
844 AC_DEFINE_UNQUOTED([ENABLE_WALLET],[1],[Define to 1 to enable wallet functions])
851 AC_MSG_CHECKING([if mining should be enabled])
852 if test x$enable_mining != xno; then
854 AC_DEFINE(ENABLE_MINING, 1, [Define to 1 to enable mining functions])
860 AM_CONDITIONAL([ENABLE_ZMQ], [test "x$use_zmq" = "xyes"])
862 AM_CONDITIONAL([ENABLE_PROTON], [test "x$use_proton" = "xyes"])
864 AC_MSG_CHECKING([whether to build test_bitcoin])
865 if test x$use_tests = xyes; then
873 AC_MSG_CHECKING([whether to reduce exports])
874 if test x$use_reduce_exports = xyes; then
880 if test x$build_bitcoin_utils$build_bitcoin_libs$build_bitcoind$use_tests = xnononono; then
881 AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon or --enable-tests])
884 AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin])
885 AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin])
886 AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows])
887 AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet = xyes])
888 AM_CONDITIONAL([ENABLE_MINING],[test x$enable_mining = xyes])
889 AM_CONDITIONAL([ENABLE_TESTS],[test x$BUILD_TEST = xyes])
890 AM_CONDITIONAL([ARCH_ARM], [test x$have_arm = xtrue])
891 AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
892 AM_CONDITIONAL([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes])
893 AM_CONDITIONAL([HARDEN],[test x$use_hardening = xyes])
894 AM_CONDITIONAL([ASAN],[test x$use_asan = xyes])
895 AM_CONDITIONAL([TSAN],[test x$use_tsan = xyes])
897 AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version])
898 AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor version])
899 AC_DEFINE(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION, [Build revision])
900 AC_DEFINE(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD, [Version Build])
901 AC_DEFINE(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE, [Version is release])
902 AC_DEFINE(COPYRIGHT_YEAR, _COPYRIGHT_YEAR, [Version is release])
903 AC_SUBST(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR)
904 AC_SUBST(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR)
905 AC_SUBST(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION)
906 AC_SUBST(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD)
907 AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
908 AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
909 AC_SUBST(BITCOIN_DAEMON_NAME)
910 AC_SUBST(BITCOIN_CLI_NAME)
911 AC_SUBST(BITCOIN_TX_NAME)
914 AC_SUBST(ERROR_CXXFLAGS)
915 AC_SUBST(SAN_CXXFLAGS)
916 AC_SUBST(SAN_LDFLAGS)
917 AC_SUBST(HARDENED_CXXFLAGS)
918 AC_SUBST(HARDENED_CPPFLAGS)
919 AC_SUBST(HARDENED_LDFLAGS)
922 AC_SUBST(LIBTOOL_APP_LDFLAGS)
925 AC_SUBST(LEVELDB_TARGET_FLAGS)
926 AC_SUBST(CRYPTO_LIBS)
929 AC_SUBST(EVENT_PTHREADS_LIBS)
933 AC_SUBST(LIBSNARK_DEPINST)
934 AC_SUBST(LIBSNARK_OPTFLAGS)
935 AC_SUBST(LIBZCASH_LIBS)
936 AC_SUBST(PROTON_LIBS)
937 AC_CONFIG_FILES([Makefile src/Makefile doc/man/Makefile src/test/buildenv.py])
938 AC_CONFIG_FILES([qa/pull-tester/run-bitcoind-for-test.sh],[chmod +x qa/pull-tester/run-bitcoind-for-test.sh])
939 AC_CONFIG_FILES([qa/pull-tester/tests-config.sh],[chmod +x qa/pull-tester/tests-config.sh])
941 dnl boost's m4 checks do something really nasty: they export these vars. As a
942 dnl result, they leak into secp256k1's configure and crazy things happen.
943 dnl Until this is fixed upstream and we've synced, we'll just un-export them.
944 CPPFLAGS_TEMP="$CPPFLAGS"
946 CPPFLAGS="$CPPFLAGS_TEMP"
948 LDFLAGS_TEMP="$LDFLAGS"
950 LDFLAGS="$LDFLAGS_TEMP"
956 PKGCONFIG_PATH_TEMP="$PKG_CONFIG_PATH"
957 unset PKG_CONFIG_PATH
958 PKG_CONFIG_PATH="$PKGCONFIG_PATH_TEMP"
960 PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
961 unset PKG_CONFIG_LIBDIR
962 PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
964 ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no --enable-module-recovery"
965 AC_CONFIG_SUBDIRS([src/secp256k1 src/snark src/univalue src/cryptoconditions])
969 dnl Taken from https://wiki.debian.org/RpathIssue
972 AC_MSG_RESULT([Fixing libtool for -rpath problems.])
973 sed < libtool > libtool-2 \
974 's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/'
981 echo "Options used to compile and link:"
982 echo " with wallet = $enable_wallet"
983 echo " with proton = $use_proton"
984 echo " with zmq = $use_zmq"
985 echo " with test = $use_tests"
986 echo " debug enabled = $enable_debug"
987 echo " werror = $enable_werror"
989 echo " target os = $TARGET_OS"
990 echo " build os = $BUILD_OS"
993 echo " CFLAGS = $CFLAGS"
994 echo " CPPFLAGS = $CPPFLAGS"
996 echo " CXXFLAGS = $CXXFLAGS"
997 echo " LDFLAGS = $LDFLAGS"
998 echo " ARFLAGS = $ARFLAGS"