[doc][trivial] Remove source forge from Debian watch.
[bitcoinplatinum.git] / configure.ac
blob63a745393e37ab60a74e2c19a3d0c6c432cd65dd
1 dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
2 AC_PREREQ([2.60])
3 define(_CLIENT_VERSION_MAJOR, 0)
4 define(_CLIENT_VERSION_MINOR, 11)
5 define(_CLIENT_VERSION_REVISION, 99)
6 define(_CLIENT_VERSION_BUILD, 0)
7 define(_CLIENT_VERSION_IS_RELEASE, false)
8 define(_COPYRIGHT_YEAR, 2015)
9 AC_INIT([Bitcoin Core],[_CLIENT_VERSION_MAJOR._CLIENT_VERSION_MINOR._CLIENT_VERSION_REVISION],[https://github.com/bitcoin/bitcoin/issues],[bitcoin])
10 AC_CONFIG_SRCDIR([src/main.cpp])
11 AC_CONFIG_HEADERS([src/config/bitcoin-config.h])
12 AC_CONFIG_AUX_DIR([build-aux])
13 AC_CONFIG_MACRO_DIR([build-aux/m4])
15 AC_CANONICAL_HOST
17 AH_TOP([#ifndef BITCOIN_CONFIG_H])
18 AH_TOP([#define BITCOIN_CONFIG_H])
19 AH_BOTTOM([#endif //BITCOIN_CONFIG_H])
21 dnl faketime breaks configure and is only needed for make. Disable it here.
22 unset FAKETIME
24 dnl Automake init set-up and checks
25 AM_INIT_AUTOMAKE([no-define subdir-objects foreign])
27 dnl faketime messes with timestamps and causes configure to be re-run.
28 dnl --disable-maintainer-mode can be used to bypass this.
29 AM_MAINTAINER_MODE([enable])
31 dnl make the compilation flags quiet unless V=1 is used
32 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
34 dnl Compiler checks (here before libtool).
35 if test "x${CXXFLAGS+set}" = "xset"; then
36   CXXFLAGS_overridden=yes
37 else
38   CXXFLAGS_overridden=no
40 AC_PROG_CXX
41 m4_ifdef([AC_PROG_OBJCXX],[AC_PROG_OBJCXX])
43 dnl By default, libtool for mingw refuses to link static libs into a dll for
44 dnl fear of mixing pic/non-pic objects, and import/export complications. Since
45 dnl we have those under control, re-enable that functionality.
46 case $host in
47   *mingw*)
48      lt_cv_deplibs_check_method="pass_all"
49   ;;
50 esac
51 dnl Libtool init checks.
52 LT_INIT([pic-only])
54 dnl Check/return PATH for base programs.
55 AC_PATH_TOOL(AR, ar)
56 AC_PATH_TOOL(RANLIB, ranlib)
57 AC_PATH_TOOL(STRIP, strip)
58 AC_PATH_TOOL(GCOV, gcov)
59 AC_PATH_PROG(LCOV, lcov)
60 AC_PATH_PROG(JAVA, java)
61 AC_PATH_PROG(PYTHON, python)
62 AC_PATH_PROG(GENHTML, genhtml)
63 AC_PATH_PROG([GIT], [git])
64 AC_PATH_PROG(CCACHE,ccache)
65 AC_PATH_PROG(XGETTEXT,xgettext)
66 AC_PATH_PROG(HEXDUMP,hexdump)
68 dnl pkg-config check.
69 PKG_PROG_PKG_CONFIG
71 # Enable wallet
72 AC_ARG_ENABLE([wallet],
73   [AS_HELP_STRING([--disable-wallet],
74   [disable wallet (enabled by default)])],
75   [enable_wallet=$enableval],
76   [enable_wallet=yes])
78 AC_ARG_WITH([miniupnpc],
79   [AS_HELP_STRING([--with-miniupnpc],
80   [enable UPNP (default is yes if libminiupnpc is found)])],
81   [use_upnp=$withval],
82   [use_upnp=auto])
84 AC_ARG_ENABLE([upnp-default],
85   [AS_HELP_STRING([--enable-upnp-default],
86   [if UPNP is enabled, turn it on at startup (default is no)])],
87   [use_upnp_default=$enableval],
88   [use_upnp_default=no])
90 AC_ARG_ENABLE(tests,
91     AS_HELP_STRING([--disable-tests],[do not compile tests (default is to compile)]),
92     [use_tests=$enableval],
93     [use_tests=yes])
95 AC_ARG_ENABLE(bench,
96     AS_HELP_STRING([--disable-bench],[do not compile benchmarks (default is to compile)]),
97     [use_bench=$enableval],
98     [use_bench=yes])
100 AC_ARG_WITH([comparison-tool],
101     AS_HELP_STRING([--with-comparison-tool],[path to java comparison tool (requires --enable-tests)]),
102     [use_comparison_tool=$withval],
103     [use_comparison_tool=no])
105 AC_ARG_ENABLE([comparison-tool-reorg-tests],
106     AS_HELP_STRING([--enable-comparison-tool-reorg-tests],[enable expensive reorg tests in the comparison tool (default no)]),
107     [use_comparison_tool_reorg_tests=$enableval],
108     [use_comparison_tool_reorg_tests=no])
110 AC_ARG_ENABLE([extended-rpc-tests],
111     AS_HELP_STRING([--enable-extended-rpc-tests],[enable expensive RPC tests when using lcov (default no)]),
112     [use_extended_rpc_tests=$enableval],
113     [use_extended_rpc_tests=no])
115 AC_ARG_WITH([qrencode],
116   [AS_HELP_STRING([--with-qrencode],
117   [enable QR code support (default is yes if qt is enabled and libqrencode is found)])],
118   [use_qr=$withval],
119   [use_qr=auto])
121 AC_ARG_ENABLE([hardening],
122   [AS_HELP_STRING([--disable-hardening],
123   [do not attempt to harden the resulting executables (default is to harden)])],
124   [use_hardening=$enableval],
125   [use_hardening=yes])
127 AC_ARG_ENABLE([reduce-exports],
128   [AS_HELP_STRING([--enable-reduce-exports],
129   [attempt to reduce exported symbols in the resulting executables (default is no)])],
130   [use_reduce_exports=$enableval],
131   [use_reduce_exports=no])
133 AC_ARG_ENABLE([ccache],
134   [AS_HELP_STRING([--disable-ccache],
135   [do not use ccache for building (default is to use if found)])],
136   [use_ccache=$enableval],
137   [use_ccache=auto])
139 AC_ARG_ENABLE([lcov],
140   [AS_HELP_STRING([--enable-lcov],
141   [enable lcov testing (default is no)])],
142   [use_lcov=yes],
143   [use_lcov=no])
145 AC_ARG_ENABLE([glibc-back-compat],
146   [AS_HELP_STRING([--enable-glibc-back-compat],
147   [enable backwards compatibility with glibc])],
148   [use_glibc_compat=$enableval],
149   [use_glibc_compat=no])
151 AC_ARG_ENABLE([zmq],
152   [AS_HELP_STRING([--disable-zmq],
153   [disable ZMQ notifications])],
154   [use_zmq=$enableval],
155   [use_zmq=yes])
157 AC_ARG_WITH([protoc-bindir],[AS_HELP_STRING([--with-protoc-bindir=BIN_DIR],[specify protoc bin path])], [protoc_bin_path=$withval], [])
159 # Enable debug
160 AC_ARG_ENABLE([debug],
161     [AS_HELP_STRING([--enable-debug],
162                     [use debug compiler flags and macros (default is no)])],
163     [enable_debug=$enableval],
164     [enable_debug=no])
166 if test "x$enable_debug" = xyes; then
167     CPPFLAGS="$CPPFLAGS -DDEBUG -DDEBUG_LOCKORDER"
168     if test "x$GCC" = xyes; then
169         CFLAGS="$CFLAGS -g3 -O0"
170     fi
172     if test "x$GXX" = xyes; then
173         CXXFLAGS="$CXXFLAGS -g3 -O0"
174     fi
177 ## TODO: Remove these hard-coded paths and flags. They are here for the sake of
178 ##       compatibility with the legacy buildsystem.
180 if test "x$CXXFLAGS_overridden" = "xno"; then
181   CXXFLAGS="$CXXFLAGS -Wall -Wextra -Wformat -Wformat-security -Wno-unused-parameter -Wno-self-assign"
183 CPPFLAGS="$CPPFLAGS -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS"
185 AC_ARG_WITH([utils],
186   [AS_HELP_STRING([--with-utils],
187   [build bitcoin-cli bitcoin-tx (default=yes)])],
188   [build_bitcoin_utils=$withval],
189   [build_bitcoin_utils=yes])
191 AC_ARG_WITH([libs],
192   [AS_HELP_STRING([--with-libs],
193   [build libraries (default=yes)])],
194   [build_bitcoin_libs=$withval],
195   [build_bitcoin_libs=yes])
197 AC_ARG_WITH([daemon],
198   [AS_HELP_STRING([--with-daemon],
199   [build bitcoind daemon (default=yes)])],
200   [build_bitcoind=$withval],
201   [build_bitcoind=yes])
203 AC_LANG_PUSH([C++])
205 use_pkgconfig=yes
206 case $host in
207   *mingw*)
209      #pkgconfig does more harm than good with MinGW
210      use_pkgconfig=no
212      TARGET_OS=windows
213      AC_CHECK_LIB([mingwthrd],      [main],, AC_MSG_ERROR(lib missing))
214      AC_CHECK_LIB([kernel32],      [main],, AC_MSG_ERROR(lib missing))
215      AC_CHECK_LIB([user32],      [main],, AC_MSG_ERROR(lib missing))
216      AC_CHECK_LIB([gdi32],      [main],, AC_MSG_ERROR(lib missing))
217      AC_CHECK_LIB([comdlg32],      [main],, AC_MSG_ERROR(lib missing))
218      AC_CHECK_LIB([winspool],      [main],, AC_MSG_ERROR(lib missing))
219      AC_CHECK_LIB([winmm],      [main],, AC_MSG_ERROR(lib missing))
220      AC_CHECK_LIB([shell32],      [main],, AC_MSG_ERROR(lib missing))
221      AC_CHECK_LIB([comctl32],      [main],, AC_MSG_ERROR(lib missing))
222      AC_CHECK_LIB([ole32],      [main],, AC_MSG_ERROR(lib missing))
223      AC_CHECK_LIB([oleaut32],      [main],, AC_MSG_ERROR(lib missing))
224      AC_CHECK_LIB([uuid],      [main],, AC_MSG_ERROR(lib missing))
225      AC_CHECK_LIB([rpcrt4],      [main],, AC_MSG_ERROR(lib missing))
226      AC_CHECK_LIB([advapi32],      [main],, AC_MSG_ERROR(lib missing))
227      AC_CHECK_LIB([ws2_32],      [main],, AC_MSG_ERROR(lib missing))
228      AC_CHECK_LIB([mswsock],      [main],, AC_MSG_ERROR(lib missing))
229      AC_CHECK_LIB([shlwapi],      [main],, AC_MSG_ERROR(lib missing))
230      AC_CHECK_LIB([iphlpapi],      [main],, AC_MSG_ERROR(lib missing))
231      AC_CHECK_LIB([crypt32],      [main],, AC_MSG_ERROR(lib missing))
233      # -static is interpreted by libtool, where it has a different meaning.
234      # In libtool-speak, it's -all-static.
235      AX_CHECK_LINK_FLAG([[-static]],[LIBTOOL_APP_LDFLAGS="$LIBTOOL_APP_LDFLAGS -all-static"])
237      AC_PATH_PROG([MAKENSIS], [makensis], none)
238      if test x$MAKENSIS = xnone; then
239        AC_MSG_WARN("makensis not found. Cannot create installer.")
240      fi
242      AC_PATH_TOOL(WINDRES, windres, none)
243      if test x$WINDRES = xnone; then
244        AC_MSG_ERROR("windres not found")
245      fi
247      CPPFLAGS="$CPPFLAGS -D_MT -DWIN32 -D_WINDOWS -DBOOST_THREAD_USE_LIB"
248      LEVELDB_TARGET_FLAGS="TARGET_OS=OS_WINDOWS_CROSSCOMPILE"
249      if test "x$CXXFLAGS_overridden" = "xno"; then
250        CXXFLAGS="$CXXFLAGS -w"
251      fi
252      case $host in
253        i?86-*) WINDOWS_BITS=32 ;;
254        x86_64-*) WINDOWS_BITS=64 ;;
255        *) AC_MSG_ERROR("Could not determine win32/win64 for installer") ;;
256      esac
257      AC_SUBST(WINDOWS_BITS)
259      dnl libtool insists upon adding -nostdlib and a list of objects/libs to link against.
260      dnl That breaks our ability to build dll's with static libgcc/libstdc++/libssp. Override
261      dnl its command here, with the predeps/postdeps removed, and -static inserted. Postdeps are
262      dnl also overridden to prevent their insertion later.
263      dnl This should only affect dll's.
264      archive_cmds_CXX="\$CC -shared \$libobjs \$deplibs \$compiler_flags -static -o \$output_objdir/\$soname \${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker \$lib"
265      postdeps_CXX=
267      ;;
268   *darwin*)
269      TARGET_OS=darwin
270      LEVELDB_TARGET_FLAGS="TARGET_OS=Darwin"
271      if  test x$cross_compiling != xyes; then
272        BUILD_OS=darwin
273        AC_CHECK_PROG([PORT],port, port)
274        if test x$PORT = xport; then
275          dnl add default macports paths
276          CPPFLAGS="$CPPFLAGS -isystem /opt/local/include"
277          LIBS="$LIBS -L/opt/local/lib"
278          if test -d /opt/local/include/db48; then
279            CPPFLAGS="$CPPFLAGS -I/opt/local/include/db48"
280            LIBS="$LIBS -L/opt/local/lib/db48"
281          fi
282        fi
284        AC_CHECK_PROG([BREW],brew, brew)
285        if test x$BREW = xbrew; then
286          dnl These Homebrew packages may be keg-only, meaning that they won't be found
287          dnl in expected paths because they may conflict with system files. Ask
288          dnl Homebrew where each one is located, then adjust paths accordingly.
289          dnl It's safe to add these paths even if the functionality is disabled by
290          dnl the user (--without-wallet or --without-gui for example).
292          openssl_prefix=`$BREW --prefix openssl 2>/dev/null`
293          bdb_prefix=`$BREW --prefix berkeley-db4 2>/dev/null`
294          qt5_prefix=`$BREW --prefix qt5 2>/dev/null`
295          if test x$openssl_prefix != x; then
296            PKG_CONFIG_PATH="$openssl_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
297            export PKG_CONFIG_PATH
298          fi
299          if test x$bdb_prefix != x; then
300            CPPFLAGS="$CPPFLAGS -I$bdb_prefix/include"
301            LIBS="$LIBS -L$bdb_prefix/lib"
302          fi
303          if test x$qt5_prefix != x; then
304            PKG_CONFIG_PATH="$qt5_prefix/lib/pkgconfig:$PKG_CONFIG_PATH"
305            export PKG_CONFIG_PATH
306          fi
307        fi
308      else
309        case $build_os in
310          *darwin*)
311            BUILD_OS=darwin
312            ;;
313          *)
314            AC_PATH_TOOL([INSTALLNAMETOOL], [install_name_tool], install_name_tool)
315            AC_PATH_TOOL([OTOOL], [otool], otool)
316            AC_PATH_PROGS([GENISOIMAGE], [genisoimage mkisofs],genisoimage)
318            dnl libtool will try to strip the static lib, which is a problem for
319            dnl cross-builds because strip attempts to call a hard-coded ld,
320            dnl which may not exist in the path. Stripping the .a is not
321            dnl necessary, so just disable it.
322            old_striplib=
323            ;;
324        esac
325      fi
327      AX_CHECK_LINK_FLAG([[-Wl,-headerpad_max_install_names]], [LDFLAGS="$LDFLAGS -Wl,-headerpad_max_install_names"])
328      CPPFLAGS="$CPPFLAGS -DMAC_OSX"
329      OBJCXXFLAGS="$CXXFLAGS"
330      ;;
331    *linux*)
332      TARGET_OS=linux
333      ;;
334    *)
335      ;;
336 esac
338 if test x$use_comparison_tool != xno; then
339   AC_SUBST(JAVA_COMPARISON_TOOL, $use_comparison_tool)
342 if test x$use_comparison_tool_reorg_tests != xno; then
343   if test x$use_comparison_tool = x; then
344     AC_MSG_ERROR("comparison tool reorg tests but comparison tool was not specified")
345   fi
346   AC_SUBST(COMPARISON_TOOL_REORG_TESTS, 1)
347 else
348   AC_SUBST(COMPARISON_TOOL_REORG_TESTS, 0)
351 if test x$use_extended_rpc_tests != xno; then
352   AC_SUBST(EXTENDED_RPC_TESTS, -extended)
355 if test x$use_lcov = xyes; then
356   if test x$LCOV = x; then
357     AC_MSG_ERROR("lcov testing requested but lcov not found")
358   fi
359   if test x$GCOV = x; then
360     AC_MSG_ERROR("lcov testing requested but gcov not found")
361   fi
362   if test x$JAVA = x; then
363     AC_MSG_ERROR("lcov testing requested but java not found")
364   fi
365   if test x$PYTHON = x; then
366     AC_MSG_ERROR("lcov testing requested but python not found")
367   fi
368   if test x$GENHTML = x; then
369     AC_MSG_ERROR("lcov testing requested but genhtml not found")
370   fi
371   if test x$use_comparison_tool = x; then
372     AC_MSG_ERROR("lcov testing requested but comparison tool was not specified")
373   fi
374   LCOV="$LCOV --gcov-tool=$GCOV"
375   AX_CHECK_COMPILE_FLAG([--coverage],[CXXFLAGS="$CXXFLAGS --coverage"],
376     [AC_MSG_ERROR("lcov testing requested but --coverage flag does not work")])
379 dnl Check for endianness
380 AC_C_BIGENDIAN
382 dnl Check for pthread compile/link requirements
383 AX_PTHREAD
385 # The following macro will add the necessary defines to bitcoin-config.h, but
386 # they also need to be passed down to any subprojects. Pull the results out of
387 # the cache and add them to CPPFLAGS.
388 AC_SYS_LARGEFILE
389 # detect POSIX or GNU variant of strerror_r
390 AC_FUNC_STRERROR_R
392 if test x$ac_cv_sys_file_offset_bits != x &&
393    test x$ac_cv_sys_file_offset_bits != xno &&
394    test x$ac_cv_sys_file_offset_bits != xunknown; then
395   CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits"
398 if test x$ac_cv_sys_large_files != x &&
399    test x$ac_cv_sys_large_files != xno &&
400    test x$ac_cv_sys_large_files != xunknown; then
401   CPPFLAGS="$CPPFLAGS -D_LARGE_FILES=$ac_cv_sys_large_files"
404 AX_CHECK_LINK_FLAG([[-Wl,--large-address-aware]], [LDFLAGS="$LDFLAGS -Wl,--large-address-aware"])
406 AX_GCC_FUNC_ATTRIBUTE([visibility])
407 AX_GCC_FUNC_ATTRIBUTE([dllexport])
408 AX_GCC_FUNC_ATTRIBUTE([dllimport])
410 if test x$use_glibc_compat != xno; then
412   #__fdelt_chk's params and return type have changed from long unsigned int to long int.
413   # See which one is present here.
414   AC_MSG_CHECKING(__fdelt_chk type)
415   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef _FORTIFY_SOURCE
416                     #undef _FORTIFY_SOURCE
417                   #endif
418                   #define _FORTIFY_SOURCE 2
419                   #include <sys/select.h>
420      extern "C" long unsigned int __fdelt_warn(long unsigned int);]],[[]])],
421     [ fdelt_type="long unsigned int"],
422     [ fdelt_type="long int"])
423   AC_MSG_RESULT($fdelt_type)
424   AC_DEFINE_UNQUOTED(FDELT_TYPE, $fdelt_type,[parameter and return value type for __fdelt_chk])
428 if test x$TARGET_OS != xwindows; then
429   # All windows code is PIC, forcing it on just adds useless compile warnings
430   AX_CHECK_COMPILE_FLAG([-fPIC],[PIC_FLAGS="-fPIC"])
433 if test x$use_hardening != xno; then
434   AX_CHECK_COMPILE_FLAG([-Wstack-protector],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -Wstack-protector"])
435   AX_CHECK_COMPILE_FLAG([-fstack-protector-all],[HARDENED_CXXFLAGS="$HARDENED_CXXFLAGS -fstack-protector-all"])
437   AX_CHECK_PREPROC_FLAG([-D_FORTIFY_SOURCE=2],[
438     AX_CHECK_PREPROC_FLAG([-U_FORTIFY_SOURCE],[
439       HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -U_FORTIFY_SOURCE"
440     ])
441     HARDENED_CPPFLAGS="$HARDENED_CPPFLAGS -D_FORTIFY_SOURCE=2"
442   ])
444   AX_CHECK_LINK_FLAG([[-Wl,--dynamicbase]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--dynamicbase"])
445   AX_CHECK_LINK_FLAG([[-Wl,--nxcompat]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,--nxcompat"])
446   AX_CHECK_LINK_FLAG([[-Wl,-z,relro]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,relro"])
447   AX_CHECK_LINK_FLAG([[-Wl,-z,now]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -Wl,-z,now"])
449   if test x$TARGET_OS != xwindows; then
450     AX_CHECK_COMPILE_FLAG([-fPIE],[PIE_FLAGS="-fPIE"])
451     AX_CHECK_LINK_FLAG([[-pie]], [HARDENED_LDFLAGS="$HARDENED_LDFLAGS -pie"])
452   fi
454   case $host in
455     *mingw*)
456        AC_CHECK_LIB([ssp],      [main],, AC_MSG_ERROR(lib missing))
457     ;;
458   esac
461 dnl this flag screws up non-darwin gcc even when the check fails. special-case it.
462 if test x$TARGET_OS = xdarwin; then
463   AX_CHECK_LINK_FLAG([[-Wl,-dead_strip]], [LDFLAGS="$LDFLAGS -Wl,-dead_strip"])
466 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])
467 AC_SEARCH_LIBS([getaddrinfo_a], [anl], [AC_DEFINE(HAVE_GETADDRINFO_A, 1, [Define this symbol if you have getaddrinfo_a])])
468 AC_SEARCH_LIBS([inet_pton], [nsl resolv], [AC_DEFINE(HAVE_INET_PTON, 1, [Define this symbol if you have inet_pton])])
470 AC_CHECK_DECLS([strnlen])
472 AC_CHECK_DECLS([le16toh, le32toh, le64toh, htole16, htole32, htole64, be16toh, be32toh, be64toh, htobe16, htobe32, htobe64],,,
473                 [#if HAVE_ENDIAN_H
474                  #include <endian.h>
475                  #elif HAVE_SYS_ENDIAN_H
476                  #include <sys/endian.h>
477                  #endif])
479 AC_CHECK_DECLS([bswap_16, bswap_32, bswap_64],,,
480                 [#if HAVE_BYTESWAP_H
481                  #include <byteswap.h>
482                  #endif])
484 dnl Check for MSG_NOSIGNAL
485 AC_MSG_CHECKING(for MSG_NOSIGNAL)
486 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]],
487  [[ int f = MSG_NOSIGNAL; ]])],
488  [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_MSG_NOSIGNAL, 1,[Define this symbol if you have MSG_NOSIGNAL]) ],
489  [ AC_MSG_RESULT(no)]
492 AC_SEARCH_LIBS([clock_gettime],[rt])
494 AC_MSG_CHECKING([for visibility attribute])
495 AC_LINK_IFELSE([AC_LANG_SOURCE([
496   int foo_def( void ) __attribute__((visibility("default")));
497   int main(){}
498   ])],
499   [
500     AC_DEFINE(HAVE_VISIBILITY_ATTRIBUTE,1,[Define if the visibility attribute is supported.])
501     AC_MSG_RESULT(yes)
502   ],
503   [
504     AC_MSG_RESULT(no)
505     if test x$use_reduce_exports = xyes; then
506       AC_MSG_ERROR([Cannot find a working visibility attribute. Use --disable-reduce-exports.])
507     fi
508   ]
511 if test x$use_reduce_exports = xyes; then
512   AX_CHECK_COMPILE_FLAG([-fvisibility=hidden],[RE_CXXFLAGS="-fvisibility=hidden"],
513   [AC_MSG_ERROR([Cannot set default symbol visibility. Use --disable-reduce-exports.])])
516 LEVELDB_CPPFLAGS=
517 LIBLEVELDB=
518 LIBMEMENV=
519 AM_CONDITIONAL([EMBEDDED_LEVELDB],[true])
520 AC_SUBST(LEVELDB_CPPFLAGS)
521 AC_SUBST(LIBLEVELDB)
522 AC_SUBST(LIBMEMENV)
524 if test x$enable_wallet != xno; then
525     dnl Check for libdb_cxx only if wallet enabled
526     BITCOIN_FIND_BDB48
529 dnl Check for libminiupnpc (optional)
530 if test x$use_upnp != xno; then
531   AC_CHECK_HEADERS(
532     [miniupnpc/miniwget.h miniupnpc/miniupnpc.h miniupnpc/upnpcommands.h miniupnpc/upnperrors.h],
533     [AC_CHECK_LIB([miniupnpc], [main],[MINIUPNPC_LIBS=-lminiupnpc], [have_miniupnpc=no])],
534     [have_miniupnpc=no]
535   )
538 BITCOIN_QT_INIT
540 dnl sets $bitcoin_enable_qt, $bitcoin_enable_qt_test, $bitcoin_enable_qt_dbus
541 BITCOIN_QT_CONFIGURE([$use_pkgconfig], [qt5])
543 if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests = xnononono; then
544     use_boost=no
545 else
546     use_boost=yes
549 if test x$use_boost = xyes; then
551 dnl Check for boost libs
552 AX_BOOST_BASE
553 AX_BOOST_SYSTEM
554 AX_BOOST_FILESYSTEM
555 AX_BOOST_PROGRAM_OPTIONS
556 AX_BOOST_THREAD
557 AX_BOOST_CHRONO
560 if test x$use_reduce_exports = xyes; then
561   AC_MSG_CHECKING([for working boost reduced exports])
562   TEMP_CPPFLAGS="$CPPFLAGS"
563   CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
564   AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
565       @%:@include <boost/version.hpp>
566     ]], [[
567       #if BOOST_VERSION >= 104900
568       // Everything is okay
569       #else
570       #  error Boost version is too old
571       #endif
572     ]])],[
573       AC_MSG_RESULT(yes)
574     ],[
575     AC_MSG_ERROR([boost versions < 1.49 are known to be broken with reduced exports. Use --disable-reduce-exports.])
576   ])
577   CPPFLAGS="$TEMP_CPPFLAGS"
581 if test x$use_reduce_exports = xyes; then
582     CXXFLAGS="$CXXFLAGS $RE_CXXFLAGS"
583     AX_CHECK_LINK_FLAG([[-Wl,--exclude-libs,ALL]], [RELDFLAGS="-Wl,--exclude-libs,ALL"])
586 if test x$use_tests = xyes; then
588   if test x$HEXDUMP = x; then
589     AC_MSG_ERROR(hexdump is required for tests)
590   fi
593   if test x$use_boost = xyes; then
595   AX_BOOST_UNIT_TEST_FRAMEWORK
597   dnl Determine if -DBOOST_TEST_DYN_LINK is needed
598   AC_MSG_CHECKING([for dynamic linked boost test])
599   TEMP_LIBS="$LIBS"
600   LIBS="$LIBS $BOOST_LDFLAGS $BOOST_UNIT_TEST_FRAMEWORK_LIB"
601   TEMP_CPPFLAGS="$CPPFLAGS"
602   CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
603   AC_LINK_IFELSE([AC_LANG_SOURCE([
604        #define BOOST_TEST_DYN_LINK
605        #define BOOST_TEST_MAIN
606         #include <boost/test/unit_test.hpp>
608        ])],
609     [AC_MSG_RESULT(yes)]
610     [TESTDEFS="$TESTDEFS -DBOOST_TEST_DYN_LINK"],
611     [AC_MSG_RESULT(no)])
612   LIBS="$TEMP_LIBS"
613   CPPFLAGS="$TEMP_CPPFLAGS"
615   fi
618 if test x$use_boost = xyes; then
620 BOOST_LIBS="$BOOST_LDFLAGS $BOOST_SYSTEM_LIB $BOOST_FILESYSTEM_LIB $BOOST_PROGRAM_OPTIONS_LIB $BOOST_THREAD_LIB $BOOST_CHRONO_LIB"
622 dnl Boost >= 1.50 uses sleep_for rather than the now-deprecated sleep, however
623 dnl it was broken from 1.50 to 1.52 when backed by nanosleep. Use sleep_for if
624 dnl a working version is available, else fall back to sleep. sleep was removed
625 dnl after 1.56.
626 dnl If neither is available, abort.
627 TEMP_LIBS="$LIBS"
628 LIBS="$BOOST_LIBS $LIBS"
629 TEMP_CPPFLAGS="$CPPFLAGS"
630 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
631 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
632   #include <boost/thread/thread.hpp>
633   #include <boost/version.hpp>
634   ]],[[
635   #if BOOST_VERSION >= 105000 && (!defined(BOOST_HAS_NANOSLEEP) || BOOST_VERSION >= 105200)
636       boost::this_thread::sleep_for(boost::chrono::milliseconds(0));
637   #else
638    choke me
639   #endif
640   ]])],
641   [boost_sleep=yes;
642      AC_DEFINE(HAVE_WORKING_BOOST_SLEEP_FOR, 1, [Define this symbol if boost sleep_for works])],
643   [boost_sleep=no])
644 LIBS="$TEMP_LIBS"
645 CPPFLAGS="$TEMP_CPPFLAGS"
647 if test x$boost_sleep != xyes; then
648 TEMP_LIBS="$LIBS"
649 LIBS="$BOOST_LIBS $LIBS"
650 TEMP_CPPFLAGS="$CPPFLAGS"
651 CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
652 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
653   #include <boost/version.hpp>
654   #include <boost/thread.hpp>
655   #include <boost/date_time/posix_time/posix_time_types.hpp>
656   ]],[[
657   #if BOOST_VERSION <= 105600
658       boost::this_thread::sleep(boost::posix_time::milliseconds(0));
659   #else
660    choke me
661   #endif
662   ]])],
663   [boost_sleep=yes; AC_DEFINE(HAVE_WORKING_BOOST_SLEEP, 1, [Define this symbol if boost sleep works])],
664   [boost_sleep=no])
665 LIBS="$TEMP_LIBS"
666 CPPFLAGS="$TEMP_CPPFLAGS"
669 if test x$boost_sleep != xyes; then
670   AC_MSG_ERROR(No working boost sleep implementation found.)
675 if test x$use_pkgconfig = xyes; then
677   if test x"$PKG_CONFIG" = "x"; then
678     AC_MSG_ERROR(pkg-config not found.)
679   fi
681   : #NOP
682   m4_ifdef(
683     [PKG_CHECK_MODULES],
684     [
685       PKG_CHECK_MODULES([SSL], [libssl],, [AC_MSG_ERROR(openssl  not found.)])
686       PKG_CHECK_MODULES([CRYPTO], [libcrypto],,[AC_MSG_ERROR(libcrypto  not found.)])
687       BITCOIN_QT_CHECK([PKG_CHECK_MODULES([PROTOBUF], [protobuf], [have_protobuf=yes], [BITCOIN_QT_FAIL(libprotobuf not found)])])
688       if test x$use_qr != xno; then
689         BITCOIN_QT_CHECK([PKG_CHECK_MODULES([QR], [libqrencode], [have_qrencode=yes], [have_qrencode=no])])
690       fi
691       if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
692         PKG_CHECK_MODULES([EVENT], [libevent],, [AC_MSG_ERROR(libevent not found.)])
693         if test x$TARGET_OS != xwindows; then
694           PKG_CHECK_MODULES([EVENT_PTHREADS], [libevent_pthreads],, [AC_MSG_ERROR(libevent_pthreads not found.)])
695         fi
696       fi
698       if test "x$use_zmq" = "xyes"; then
699         PKG_CHECK_MODULES([ZMQ],[libzmq >= 4],
700           [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
701           [AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
702            AC_MSG_WARN([libzmq version 4.x or greater not found, disabling])
703            use_zmq=no])
704       else
705           AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
706       fi
707     ]
708   )
709 else
710   AC_CHECK_HEADER([openssl/crypto.h],,AC_MSG_ERROR(libcrypto headers missing))
711   AC_CHECK_LIB([crypto],      [main],CRYPTO_LIBS=-lcrypto, AC_MSG_ERROR(libcrypto missing))
713   AC_CHECK_HEADER([openssl/ssl.h],, AC_MSG_ERROR(libssl headers missing),)
714   AC_CHECK_LIB([ssl],         [main],SSL_LIBS=-lssl, AC_MSG_ERROR(libssl missing))
716   if test x$build_bitcoin_utils$build_bitcoind$bitcoin_enable_qt$use_tests != xnononono; then
717     AC_CHECK_HEADER([event2/event.h],, AC_MSG_ERROR(libevent headers missing),)
718     AC_CHECK_LIB([event],[main],EVENT_LIBS=-levent,AC_MSG_ERROR(libevent missing))
719     if test x$TARGET_OS != xwindows; then
720       AC_CHECK_LIB([event_pthreads],[main],EVENT_PTHREADS_LIBS=-levent_pthreads,AC_MSG_ERROR(libevent_pthreads missing))
721     fi
722   fi
724   if test "x$use_zmq" = "xyes"; then
725      AC_CHECK_HEADER([zmq.h],
726        [AC_DEFINE([ENABLE_ZMQ],[1],[Define to 1 to enable ZMQ functions])],
727        [AC_MSG_WARN([zmq.h not found, disabling zmq support])
728         use_zmq=no
729         AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
730      AC_CHECK_LIB([zmq],[zmq_ctx_shutdown],ZMQ_LIBS=-lzmq,
731        [AC_MSG_WARN([libzmq >= 4.0 not found, disabling zmq support])
732         use_zmq=no
733         AC_DEFINE([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])])
734   else
735     AC_DEFINE_UNQUOTED([ENABLE_ZMQ],[0],[Define to 1 to enable ZMQ functions])
736   fi
738   BITCOIN_QT_CHECK(AC_CHECK_LIB([protobuf] ,[main],[PROTOBUF_LIBS=-lprotobuf], BITCOIN_QT_FAIL(libprotobuf not found)))
739   if test x$use_qr != xno; then
740     BITCOIN_QT_CHECK([AC_CHECK_LIB([qrencode], [main],[QR_LIBS=-lqrencode], [have_qrencode=no])])
741     BITCOIN_QT_CHECK([AC_CHECK_HEADER([qrencode.h],, have_qrencode=no)])
742   fi
745 CXXFLAGS_TEMP="$CXXFLAGS"
746 LIBS_TEMP="$LIBS"
747 CXXFLAGS="$CXXFLAGS $SSL_CFLAGS $CRYPTO_CFLAGS"
748 LIBS="$LIBS $SSL_LIBS $CRYPTO_LIBS"
749 AC_CHECK_HEADER([openssl/ec.h],, AC_MSG_ERROR(OpenSSL ec header missing),)
750 CXXFLAGS="$CXXFLAGS_TEMP"
751 LIBS="$LIBS_TEMP"
753 BITCOIN_QT_PATH_PROGS([PROTOC], [protoc],$protoc_bin_path)
755 AC_MSG_CHECKING([whether to build bitcoind])
756 AM_CONDITIONAL([BUILD_BITCOIND], [test x$build_bitcoind = xyes])
757 AC_MSG_RESULT($build_bitcoind)
759 AC_MSG_CHECKING([whether to build utils (bitcoin-cli bitcoin-tx)])
760 AM_CONDITIONAL([BUILD_BITCOIN_UTILS], [test x$build_bitcoin_utils = xyes])
761 AC_MSG_RESULT($build_bitcoin_utils)
763 AC_MSG_CHECKING([whether to build libraries])
764 AM_CONDITIONAL([BUILD_BITCOIN_LIBS], [test x$build_bitcoin_libs = xyes])
765 if test x$build_bitcoin_libs = xyes; then
766   AC_DEFINE(HAVE_CONSENSUS_LIB, 1, [Define this symbol if the consensus lib has been built])
767   AC_CONFIG_FILES([libbitcoinconsensus.pc:libbitcoinconsensus.pc.in])
769 AC_MSG_RESULT($build_bitcoin_libs)
771 AC_LANG_POP
773 if test "x$use_ccache" != "xno"; then
774   AC_MSG_CHECKING(if ccache should be used)
775   if test x$CCACHE = x; then
776     if test "x$use_ccache" = "xyes"; then
777       AC_MSG_ERROR([ccache not found.]);
778     else
779       use_ccache=no
780     fi
781   else
782     use_ccache=yes
783     CC="$ac_cv_path_CCACHE $CC"
784     CXX="$ac_cv_path_CCACHE $CXX"
785   fi
786   AC_MSG_RESULT($use_ccache)
788 if test "x$use_ccache" = "xyes"; then
789     AX_CHECK_PREPROC_FLAG([-Qunused-arguments],[CPPFLAGS="-Qunused-arguments $CPPFLAGS"])
792 dnl enable wallet
793 AC_MSG_CHECKING([if wallet should be enabled])
794 if test x$enable_wallet != xno; then
795   AC_MSG_RESULT(yes)
796   AC_DEFINE_UNQUOTED([ENABLE_WALLET],[1],[Define to 1 to enable wallet functions])
798 else
799   AC_MSG_RESULT(no)
802 dnl enable upnp support
803 AC_MSG_CHECKING([whether to build with support for UPnP])
804 if test x$have_miniupnpc = xno; then
805   if test x$use_upnp = xyes; then
806      AC_MSG_ERROR("UPnP requested but cannot be built. use --without-miniupnpc")
807   fi
808   AC_MSG_RESULT(no)
809 else
810   if test x$use_upnp != xno; then
811     AC_MSG_RESULT(yes)
812     AC_MSG_CHECKING([whether to build with UPnP enabled by default])
813     use_upnp=yes
814     upnp_setting=0
815     if test x$use_upnp_default != xno; then
816       use_upnp_default=yes
817       upnp_setting=1
818     fi
819     AC_MSG_RESULT($use_upnp_default)
820     AC_DEFINE_UNQUOTED([USE_UPNP],[$upnp_setting],[UPnP support not compiled if undefined, otherwise value (0 or 1) determines default state])
821     if test x$TARGET_OS = xwindows; then
822       MINIUPNPC_CPPFLAGS="-DSTATICLIB -DMINIUPNP_STATICLIB"
823     fi
824   else
825     AC_MSG_RESULT(no)
826   fi
829 dnl these are only used when qt is enabled
830 if test x$bitcoin_enable_qt != xno; then
831   BUILD_QT=qt
832   dnl enable dbus support
833   AC_MSG_CHECKING([whether to build GUI with support for D-Bus])
834   if test x$bitcoin_enable_qt_dbus != xno; then
835     AC_DEFINE([USE_DBUS],[1],[Define if dbus support should be compiled in])
836   fi
837   AC_MSG_RESULT($bitcoin_enable_qt_dbus)
839   dnl enable qr support
840   AC_MSG_CHECKING([whether to build GUI with support for QR codes])
841   if test x$have_qrencode = xno; then
842     if test x$use_qr = xyes; then
843      AC_MSG_ERROR("QR support requested but cannot be built. use --without-qrencode")
844     fi
845     AC_MSG_RESULT(no)
846   else
847     if test x$use_qr != xno; then
848       AC_MSG_RESULT(yes)
849       AC_DEFINE([USE_QRCODE],[1],[Define if QR support should be compiled in])
850       use_qr=yes
851     else
852       AC_MSG_RESULT(no)
853     fi
854   fi
856   if test x$XGETTEXT = x; then
857     AC_MSG_WARN("xgettext is required to update qt translations")
858   fi
860   AC_MSG_CHECKING([whether to build test_bitcoin-qt])
861   if test x$use_tests$bitcoin_enable_qt_test = xyesyes; then
862     AC_MSG_RESULT([yes])
863     BUILD_TEST_QT="test"
864   else
865     AC_MSG_RESULT([no])
866   fi
869 AM_CONDITIONAL([ENABLE_ZMQ], [test "x$use_zmq" = "xyes"])
871 AC_MSG_CHECKING([whether to build test_bitcoin])
872 if test x$use_tests = xyes; then
873   AC_MSG_RESULT([yes])
874   BUILD_TEST="test"
875 else
876   AC_MSG_RESULT([no])
879 AC_MSG_CHECKING([whether to reduce exports])
880 if test x$use_reduce_exports = xyes; then
881   AC_MSG_RESULT([yes])
882 else
883   AC_MSG_RESULT([no])
886 if test x$build_bitcoin_utils$build_bitcoin_libs$build_bitcoind$bitcoin_enable_qt$use_tests = xnonononono; then
887   AC_MSG_ERROR([No targets! Please specify at least one of: --with-utils --with-libs --with-daemon --with-gui or --enable-tests])
890 AM_CONDITIONAL([TARGET_DARWIN], [test x$TARGET_OS = xdarwin])
891 AM_CONDITIONAL([BUILD_DARWIN], [test x$BUILD_OS = xdarwin])
892 AM_CONDITIONAL([TARGET_WINDOWS], [test x$TARGET_OS = xwindows])
893 AM_CONDITIONAL([ENABLE_WALLET],[test x$enable_wallet = xyes])
894 AM_CONDITIONAL([ENABLE_TESTS],[test x$use_tests = xyes])
895 AM_CONDITIONAL([ENABLE_QT],[test x$bitcoin_enable_qt = xyes])
896 AM_CONDITIONAL([ENABLE_QT_TESTS],[test x$use_tests$bitcoin_enable_qt_test = xyesyes])
897 AM_CONDITIONAL([ENABLE_BENCH],[test x$use_bench = xyes])
898 AM_CONDITIONAL([USE_QRCODE], [test x$use_qr = xyes])
899 AM_CONDITIONAL([USE_LCOV],[test x$use_lcov = xyes])
900 AM_CONDITIONAL([USE_COMPARISON_TOOL],[test x$use_comparison_tool != xno])
901 AM_CONDITIONAL([USE_COMPARISON_TOOL_REORG_TESTS],[test x$use_comparison_tool_reorg_test != xno])
902 AM_CONDITIONAL([GLIBC_BACK_COMPAT],[test x$use_glibc_compat = xyes])
904 AC_DEFINE(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR, [Major version])
905 AC_DEFINE(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR, [Minor version])
906 AC_DEFINE(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION, [Build revision])
907 AC_DEFINE(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD, [Version Build])
908 AC_DEFINE(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE, [Version is release])
909 AC_DEFINE(COPYRIGHT_YEAR, _COPYRIGHT_YEAR, [Version is release])
910 AC_SUBST(CLIENT_VERSION_MAJOR, _CLIENT_VERSION_MAJOR)
911 AC_SUBST(CLIENT_VERSION_MINOR, _CLIENT_VERSION_MINOR)
912 AC_SUBST(CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION)
913 AC_SUBST(CLIENT_VERSION_BUILD, _CLIENT_VERSION_BUILD)
914 AC_SUBST(CLIENT_VERSION_IS_RELEASE, _CLIENT_VERSION_IS_RELEASE)
915 AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR)
917 AC_SUBST(RELDFLAGS)
918 AC_SUBST(HARDENED_CXXFLAGS)
919 AC_SUBST(HARDENED_CPPFLAGS)
920 AC_SUBST(HARDENED_LDFLAGS)
921 AC_SUBST(PIC_FLAGS)
922 AC_SUBST(PIE_FLAGS)
923 AC_SUBST(LIBTOOL_APP_LDFLAGS)
924 AC_SUBST(USE_UPNP)
925 AC_SUBST(USE_QRCODE)
926 AC_SUBST(BOOST_LIBS)
927 AC_SUBST(TESTDEFS)
928 AC_SUBST(LEVELDB_TARGET_FLAGS)
929 AC_SUBST(BUILD_TEST)
930 AC_SUBST(BUILD_QT)
931 AC_SUBST(BUILD_TEST_QT)
932 AC_SUBST(MINIUPNPC_CPPFLAGS)
933 AC_SUBST(MINIUPNPC_LIBS)
934 AC_CONFIG_FILES([Makefile src/Makefile share/setup.nsi share/qt/Info.plist src/test/buildenv.py])
935 AC_CONFIG_FILES([qa/pull-tester/run-bitcoind-for-test.sh],[chmod +x qa/pull-tester/run-bitcoind-for-test.sh])
936 AC_CONFIG_FILES([qa/pull-tester/tests_config.py],[chmod +x qa/pull-tester/tests_config.py])
938 dnl boost's m4 checks do something really nasty: they export these vars. As a
939 dnl result, they leak into secp256k1's configure and crazy things happen.
940 dnl Until this is fixed upstream and we've synced, we'll just un-export them.
941 CPPFLAGS_TEMP="$CPPFLAGS"
942 unset CPPFLAGS
943 CPPFLAGS="$CPPFLAGS_TEMP"
945 LDFLAGS_TEMP="$LDFLAGS"
946 unset LDFLAGS
947 LDFLAGS="$LDFLAGS_TEMP"
949 LIBS_TEMP="$LIBS"
950 unset LIBS
951 LIBS="$LIBS_TEMP"
953 PKGCONFIG_PATH_TEMP="$PKG_CONFIG_PATH"
954 unset PKG_CONFIG_PATH
955 PKG_CONFIG_PATH="$PKGCONFIG_PATH_TEMP"
957 PKGCONFIG_LIBDIR_TEMP="$PKG_CONFIG_LIBDIR"
958 unset PKG_CONFIG_LIBDIR
959 PKG_CONFIG_LIBDIR="$PKGCONFIG_LIBDIR_TEMP"
961 ac_configure_args="${ac_configure_args} --disable-shared --with-pic --with-bignum=no --enable-module-recovery"
962 AC_CONFIG_SUBDIRS([src/secp256k1 src/univalue])
964 AC_OUTPUT
966 dnl Taken from https://wiki.debian.org/RpathIssue
967 case $host in
968    *-*-linux-gnu)
969      AC_MSG_RESULT([Fixing libtool for -rpath problems.])
970      sed < libtool > libtool-2 \
971      's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_IS_A_FOOL__ "/'
972      mv libtool-2 libtool
973      chmod 755 libtool
974    ;;
975 esac
977 dnl Replace the BUILDDIR path with the correct Windows path if compiling on Native Windows
978 case ${OS} in
979    *Windows*)
980      sed  's/BUILDDIR="\/\([[a-z]]\)/BUILDDIR="\1:/'  qa/pull-tester/tests_config.py > qa/pull-tester/tests_config-2.py
981      mv qa/pull-tester/tests_config-2.py qa/pull-tester/tests_config.py
982    ;;
983 esac