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