2 # Copyright (C) 2013-2019 Red Hat Inc.
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions are
8 # * Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer.
11 # * Redistributions in binary form must reproduce the above copyright
12 # notice, this list of conditions and the following disclaimer in the
13 # documentation and/or other materials provided with the distribution.
15 # * Neither the name of Red Hat nor the names of its contributors may be
16 # used to endorse or promote products derived from this software without
17 # specific prior written permission.
19 # THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND
20 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21 # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
22 # PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR
23 # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
26 # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
27 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
29 # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 m4_define([NBDKIT_VERSION_MAJOR], [1])
33 m4_define([NBDKIT_VERSION_MINOR], [17])
34 m4_define([NBDKIT_VERSION_MICRO], [4])
36 NBDKIT_VERSION_MAJOR.NBDKIT_VERSION_MINOR.NBDKIT_VERSION_MICRO)
37 AC_CONFIG_MACRO_DIR([m4])
38 m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],[],
39 [m4_define([AC_USE_SYSTEM_EXTENSIONS],[])])
40 AC_USE_SYSTEM_EXTENSIONS
43 dnl NB: Do not [quote] this parameter.
44 AM_INIT_AUTOMAKE(foreign subdir-objects)
52 dnl Expose version information to the public headers
53 [NBDKIT_]VERSION_MAJOR=NBDKIT_VERSION_MAJOR
54 [NBDKIT_]VERSION_MINOR=NBDKIT_VERSION_MINOR
55 [NBDKIT_]VERSION_MICRO=NBDKIT_VERSION_MICRO
56 AC_SUBST([NBDKIT_VERSION_MAJOR])
57 AC_SUBST([NBDKIT_VERSION_MINOR])
58 AC_SUBST([NBDKIT_VERSION_MICRO])
60 dnl Check for basic C environment.
67 test "x$U" != "x" && AC_MSG_ERROR([Compiler not ANSI compliant])
71 dnl Check for C++ (optional, we just use this to test the header
72 dnl can be included from C++ code).
75 dnl The C++ compiler test is pretty useless because even if it fails
76 dnl it sets CXX=g++. So test the compiler actually works.
77 AC_MSG_CHECKING([if the C++ compiler really really works])
78 AS_IF([$CXX --version >&AS_MESSAGE_LOG_FD 2>&1],[have_cxx=yes],[have_cxx=no])
79 AC_MSG_RESULT([$have_cxx])
80 AM_CONDITIONAL([HAVE_CXX], [test "$have_cxx" = "yes"])
82 AC_ARG_ENABLE([gcc-warnings],
83 [AS_HELP_STRING([--enable-gcc-warnings],
84 [turn on lots of GCC warnings (for developers)])],
87 *) AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;;
89 gcc_warnings=$enableval],
92 if test "x$gcc_warnings" = "xyes"; then
93 WARNINGS_CFLAGS="-Wall -Wshadow -Wvla -Werror"
94 AC_SUBST([WARNINGS_CFLAGS])
97 dnl Check if the compiler supports -std=c90 flag. This is only used
98 dnl during a test. OpenBSD GCC does not support this flag so we skip
100 AC_MSG_CHECKING([if the compiler supports -std=c90 for ANSI C test])
102 CFLAGS="$CFLAGS -std=c90"
103 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
104 [supports_std_c90=yes],
105 [supports_std_c90=no])
107 AC_MSG_RESULT([$supports_std_c90])
108 AM_CONDITIONAL([CAN_TEST_ANSI_C], [test "x$supports_std_c90" = "xyes"])
110 dnl On Haiku we must use BSD-compatibility headers to get the endian
112 AC_MSG_CHECKING(whether OS-dependent include paths are required)
114 [haiku*], [CFLAGS="$CFLAGS -I`findpaths -p /system B_FIND_PATH_HEADERS_DIRECTORY`/bsd"; AC_MSG_RESULT(yes)],
118 dnl On Linux /tmp is often tmpfs which is not large enough, so use /var/tmp.
119 dnl But Haiku only has /tmp.
120 AC_MSG_CHECKING([for temporary directory for large files])
122 [haiku*], [LARGE_TMPDIR=/tmp],
123 [LARGE_TMPDIR=/var/tmp]
125 AC_MSG_RESULT([$LARGE_TMPDIR])
126 AC_DEFINE_UNQUOTED([LARGE_TMPDIR],["$LARGE_TMPDIR"],
127 [Temporary directory for large files])
129 dnl Check if libc has program_invocation_short_name.
130 AC_CHECK_DECLS([program_invocation_short_name], [], [], [#include <errno.h>])
134 dnl Check if __attribute__((cleanup(...))) works.
135 dnl Set -Werror, otherwise gcc will only emit a warning for attributes
136 dnl that it doesn't understand.
137 acx_nbdkit_save_CFLAGS="${CFLAGS}"
138 CFLAGS="${CFLAGS} -Werror"
139 AC_MSG_CHECKING([if __attribute__((cleanup(...))) works with this compiler])
154 __attribute__((cleanup(freep))) char *ptr = malloc (100);
158 main (int argc, char *argv[])
169 ['__attribute__((cleanup(...)))' does not work.
171 You may not be using a sufficiently recent version of GCC or CLANG, or
172 you may be using a C compiler which does not support this attribute,
173 or the configure test may be wrong.
175 This code requires the attribute to work for proper locking between threads.])])
176 CFLAGS="${acx_nbdkit_save_CFLAGS}"
178 dnl Check for __auto_type (GCC extension).
179 AC_MSG_CHECKING([if __auto_type is available in this compiler])
191 AC_DEFINE([HAVE_AUTO_TYPE],[1],[__auto_type is available])
197 dnl Check for other headers, all optional.
207 AC_CHECK_HEADERS([linux/vm_sockets.h], [], [], [#include <sys/socket.h>])
209 dnl Check for functions in libc, all optional.
213 get_current_dir_name \
220 dnl Check whether printf("%m") works
221 AC_CACHE_CHECK([whether the printf family supports %m],
222 [nbdkit_cv_func_printf_percent_m],
231 snprintf(buf, sizeof buf, "%m");
232 return !!strcmp (buf, strerror (EINVAL));
234 [nbdkit_cv_func_printf_percent_m=yes],
235 [nbdkit_cv_func_printf_percent_m=no],
238 *-gnu* | gnu*) nbdkit_cv_func_printf_percent_m=yes;;
239 *) nbdkit_cv_func_printf_percent_m="guessing no";;
242 AS_IF([test "x$nbdkit_cv_func_printf_percent_m" = xyes],
243 [AC_DEFINE([HAVE_VFPRINTF_PERCENT_M],[1],
244 [Define to 1 if vfprintf supports %m.])])
247 AC_SEARCH_LIBS([dlsym], [dl dld], [
248 AS_IF([test "x$ac_cv_search_dlsym" != "xnone required"],
249 [DL_LIBS="$ac_cv_search_dlsym"], [DL_LIBS=])
251 ], [AC_MSG_ERROR([unable to find the dlsym() function])
255 dnl Test if <iconv.h> header can build working binaries.
257 dnl On FreeBSD: iconv and libiconv both exist, both can be installed
258 dnl simultaneously, <iconv.h> can exist in two separate places, and
259 dnl if you get the wrong header/library mix everything breaks.
261 dnl On Haiku: libiconv is required to link to iconv_* functions.
263 [AS_HELP_STRING([--without-iconv],
264 [don't try to link against iconv @<:@default=check@:>@])],
267 AS_IF([test "x$with_iconv" != "xno"],[
268 AC_CHECK_HEADER([iconv.h],[
269 AC_MSG_CHECKING([if <iconv.h> can be used to link a program])
276 main (int argc, char *argv[])
278 iconv_t ic = iconv_open ("", "");
291 AM_CONDITIONAL([HAVE_ICONV], [test "x$iconv_working" = "xyes"])
293 dnl Don't use linker script for the server on FreeBSD because
294 dnl FreeBSD's linker is broken. See eg:
295 dnl https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=190851
296 AC_MSG_CHECKING([if we should use a linker script for the server])
298 [freebsd*], [use_linker_script_for_server=no],
299 [use_linker_script_for_server=yes]
301 AC_MSG_RESULT([$use_linker_script_for_server])
302 AM_CONDITIONAL([USE_LINKER_SCRIPT_FOR_SERVER],
303 [test "x$use_linker_script_for_server" = "xyes"])
305 dnl Check if -rdynamic linker flag works.
306 acx_nbdkit_save_LDFLAGS="${LDFLAGS}"
307 LDFLAGS="${LDFLAGS} -rdynamic"
308 AC_MSG_CHECKING([if linker supports -rdynamic])
313 main (int argc, char *argv[])
325 LDFLAGS="${acx_nbdkit_save_LDFLAGS}"
326 AC_SUBST([DL_LDFLAGS])
328 dnl Check for dladdr in -ldl, optional. This is a glibc extension.
330 LIBS="$DL_LIBS $LIBS"
331 AC_CHECK_FUNCS([dladdr])
334 AC_SEARCH_LIBS([getaddrinfo], [network socket])
336 dnl Check for SELinux socket labelling (optional).
337 PKG_CHECK_MODULES([LIBSELINUX], [libselinux], [
338 AC_SUBST([LIBSELINUX_CFLAGS])
339 AC_SUBST([LIBSELINUX_LIBS])
340 AC_DEFINE([HAVE_LIBSELINUX],[1],[libselinux found at compile time.])
342 AC_MSG_WARN([libselinux not found, SELinux socket labelling support will be disabled.])
345 dnl Check for GnuTLS (optional, for TLS support).
346 PKG_CHECK_MODULES([GNUTLS], [gnutls >= 3.3.0], [
347 AC_SUBST([GNUTLS_CFLAGS])
348 AC_SUBST([GNUTLS_LIBS])
349 AC_DEFINE([HAVE_GNUTLS],[1],[gnutls found at compile time.])
351 AC_MSG_WARN([gnutls not found or < 3.3.0, TLS support will be disabled.])
354 AS_IF([test "$GNUTLS_LIBS" != ""],[
355 AC_MSG_CHECKING([for default TLS session priority string])
356 AC_ARG_WITH([tls-priority],
357 [AS_HELP_STRING([--with-tls-priority],
358 [default TLS session priority string @<:@default=NORMAL@:>@])],
359 [tls_priority=$withval],
360 [tls_priority=NORMAL])
361 AC_MSG_RESULT([$tls_priority])
362 AC_DEFINE_UNQUOTED([TLS_PRIORITY],["$tls_priority"],
363 [Default TLS session priority string])
365 # Check for APIs which may not be present.
367 LIBS="$GNUTLS_LIBS $LIBS"
369 gnutls_base64_decode2 \
370 gnutls_certificate_set_known_dh_params \
371 gnutls_session_set_verify_cert])
375 dnl Check for valgrind.
376 AC_CHECK_PROG([VALGRIND],[valgrind],[valgrind],[no])
378 dnl If valgrind headers are available (optional).
379 dnl Since this is only useful for developers, you have to enable
380 dnl it explicitly using --enable-valgrind.
381 AC_ARG_ENABLE([valgrind],
382 [AS_HELP_STRING([--enable-valgrind],
383 [enable Valgrind extensions (for developers)])],
384 [enable_valgrind=yes],
385 [enable_valgrind=no])
386 AS_IF([test "x$enable_valgrind" = "xyes"],[
387 PKG_CHECK_MODULES([VALGRIND], [valgrind], [
388 AC_SUBST([VALGRIND_CFLAGS])
389 AC_SUBST([VALGRIND_LIBS])
390 AC_DEFINE([HAVE_VALGRIND],[1],[Valgrind headers found at compile time])
392 AC_MSG_ERROR([--enable-valgrind given, but Valgrind headers are not available])
396 dnl Build the special libFuzzer version of nbdkit. DO NOT USE THIS for
397 dnl normal builds. See fuzzing/README.
398 AC_ARG_ENABLE([libfuzzer],
399 [AS_HELP_STRING([--enable-libfuzzer],
400 [build libFuzzer test binary (developers only)])],
401 [enable_libfuzzer=yes],
402 [enable_libfuzzer=no])
403 AS_IF([test "x$enable_libfuzzer" = "xyes"],[
404 AC_DEFINE([ENABLE_LIBFUZZER],[1],[Enable special libFuzzer binary])
406 AM_CONDITIONAL([ENABLE_LIBFUZZER],[test "x$enable_libfuzzer" = "xyes"])
409 PKG_CHECK_MODULES([BASH_COMPLETION], [bash-completion >= 2.0], [
411 AC_MSG_CHECKING([for bash-completions directory])
412 m4_ifdef([PKG_CHECK_VAR],[
413 PKG_CHECK_VAR(bashcompdir, [bash-completion], [completionsdir])
415 AS_IF([test -z "$bashcompdir"], [
416 bashcompdir="${sysconfdir}/bash_completion.d"
418 AC_MSG_RESULT([$bashcompdir])
419 AC_SUBST([bashcompdir])
422 AC_MSG_WARN([bash-completion not installed])
424 AM_CONDITIONAL([HAVE_BASH_COMPLETION],[test "x$bash_completion" = "xyes"])
426 dnl Check we have enough to run podwrapper.
427 AC_CHECK_PROG([PERL],[perl],[perl],[no])
428 AS_IF([test "x$PERL" != "xno"],[
429 AC_MSG_CHECKING([if we have perl Pod::Man and Pod::Simple])
430 AS_IF([$PERL -MPod::Man -MPod::Simple -e 1 >&AS_MESSAGE_LOG_FD 2>&1],[
435 AC_MSG_RESULT([$enable_pod])
437 AM_CONDITIONAL([HAVE_POD],
438 [test "x$PERL" != "xno" && test "x$enable_pod" = "xyes"])
440 dnl Define the path to the podwrapper program.
441 PODWRAPPER="$PERL $(pwd)/podwrapper.pl"
442 AC_SUBST([PODWRAPPER])
444 dnl Allow all plugins and filters to be disabled.
445 AC_ARG_ENABLE([plugins],
446 [AS_HELP_STRING([--disable-plugins],
447 [disable all bundled plugins and filters])])
448 AM_CONDITIONAL([HAVE_PLUGINS], [test "x$enable_plugins" != "xno"])
450 dnl Check for Perl, for embedding in the perl plugin.
451 dnl Note that the perl binary is checked above.
452 AC_ARG_ENABLE([perl],
453 [AS_HELP_STRING([--disable-perl], [disable Perl embed plugin])],
456 AS_IF([test "x$PERL" != "xno" && test "x$enable_perl" != "xno"],[
457 dnl Check for Perl archlib.
458 AC_MSG_CHECKING([for Perl embed archlib])
459 PERL_ARCHLIB="$($PERL -MConfig -e 'print $Config{archlib}')"
460 AS_IF([ test -n "$PERL_ARCHLIB" ],[
461 AC_MSG_RESULT([$PERL_ARCHLIB])
463 AC_MSG_NOTICE([Perl embed module disabled])
467 dnl Check for Perl CFLAGS.
468 AC_MSG_CHECKING([for Perl embed CFLAGS])
469 PERL_CFLAGS="$($PERL -MExtUtils::Embed -e 'ccflags')"
470 AS_IF([ test -n "$PERL_CFLAGS" ],[
471 AC_MSG_RESULT([$PERL_CFLAGS])
473 AC_MSG_NOTICE([Perl embed module disabled])
477 dnl Check for Perl LDOPTS.
478 AC_MSG_CHECKING([for Perl embed LDOPTS])
479 PERL_LDOPTS="$($PERL -MExtUtils::Embed -e 'ldopts')"
480 AC_MSG_RESULT([$PERL_LDOPTS])
482 dnl XXX Could check these actually work.
484 AM_CONDITIONAL([HAVE_PERL],[test "x$enable_perl" != "xno" && test "x$PERL" != "xno"])
485 AC_SUBST([PERL_ARCHLIB])
486 AC_SUBST([PERL_CFLAGS])
487 AC_SUBST([PERL_LDOPTS])
489 dnl Check for Python 3, for embedding in the python plugin.
490 AC_PATH_PROGS([PYTHON],[python3 python],[no])
491 AC_ARG_ENABLE([python],
492 [AS_HELP_STRING([--disable-python], [disable Python embed plugin])],
495 AS_IF([test "x$PYTHON" != "xno" && test "x$enable_python" != "xno"],[
496 AC_MSG_CHECKING([version of $PYTHON])
497 PYTHON_VERSION_MAJOR=`$PYTHON -c "import sys; print (sys.version_info@<:@0@:>@)"`
498 PYTHON_VERSION_MINOR=`$PYTHON -c "import sys; print (sys.version_info@<:@1@:>@)"`
499 PYTHON_VERSION="$PYTHON_VERSION_MAJOR.$PYTHON_VERSION_MINOR"
500 AS_IF([test -n "$PYTHON_VERSION"],[
501 AC_MSG_RESULT([$PYTHON_VERSION])
503 AC_MSG_NOTICE([Python embed module disabled])
507 AC_MSG_CHECKING([Python major version is 3])
508 AS_IF([test "x$PYTHON_VERSION_MAJOR" = "x3"],[
512 AC_MSG_ERROR([Python $PYTHON_VERSION_MAJOR <> 3 is no longer supported.
514 Python 2 end of life is 2020-01-01 and nbdkit >= 1.16 no longer
517 If you want to use Python 2, you will need to use nbdkit 1.14.])
520 dnl Check for Python CFLAGS, libraries.
521 dnl For Python >= 3.8 we have to use python-<VERSION>-embed.pc, see:
522 dnl https://docs.python.org/3.8/whatsnew/3.8.html#debug-build-uses-the-same-abi-as-release-build
523 dnl The python.pc is called python-<VERSION>.pc on Debian and
524 dnl later versions of Fedora, and python.pc on older versions
526 PKG_CHECK_MODULES([PYTHON], [python-"$PYTHON_VERSION"-embed], [
527 AC_SUBST([PYTHON_CFLAGS])
528 AC_SUBST([PYTHON_LIBS])
529 AC_SUBST([PYTHON_VERSION])
530 AC_DEFINE([HAVE_PYTHON],[1],[Python library found at compile time])
532 PKG_CHECK_MODULES([PYTHON], [python-"$PYTHON_VERSION"], [
533 AC_SUBST([PYTHON_CFLAGS])
534 AC_SUBST([PYTHON_LIBS])
535 AC_SUBST([PYTHON_VERSION])
536 AC_DEFINE([HAVE_PYTHON],[1],[Python library found at compile time])
538 PKG_CHECK_MODULES([PYTHON], [python], [
539 AC_SUBST([PYTHON_CFLAGS])
540 AC_SUBST([PYTHON_LIBS])
541 AC_SUBST([PYTHON_VERSION])
542 AC_DEFINE([HAVE_PYTHON],[1],[Python library found at compile time])
544 AC_MSG_WARN([python $PYTHON_VERSION not found])
548 AM_CONDITIONAL([HAVE_PYTHON],[test "x$enable_python" != "xno" && test "x$PYTHON" != "xno"])
549 AC_SUBST([PYTHON_CFLAGS])
550 AC_SUBST([PYTHON_LIBS])
551 AC_SUBST([PYTHON_LDFLAGS])
553 dnl For the OCaml plugin, you can set OCAMLOPTFLAGS before running
554 dnl ./configure to specify any extra flags you want to pass to
556 AC_SUBST([OCAMLOPTFLAGS])
558 dnl Check for OCaml, for embedding in the ocaml plugin.
560 AC_ARG_ENABLE([ocaml],
561 [AS_HELP_STRING([--disable-ocaml], [disable OCaml embed plugin])],
564 AS_IF([test "x$OCAMLOPT" != "xno" && test "x$enable_ocaml" != "xno"],[
565 dnl Check OCaml can create a shared library (see README for details).
566 AC_MSG_CHECKING([if $OCAMLOPT can create a shared library])
567 echo 'print_endline "test"' > conftest.ml
568 AS_IF([$OCAMLOPT $OCAMLOPTFLAGS -output-obj -runtime-variant _pic -o conftest.so conftest.ml >&AS_MESSAGE_LOG_FD 2>&1],[
570 ocaml_link_shared=yes
574 rm -f conftest.ml conftest.cmi conftest.cmx conftest.so conftest.o
576 AM_CONDITIONAL([HAVE_OCAML],[test "x$OCAMLOPT" != "xno" &&
577 test "x$ocaml_link_shared" = "xyes"])
579 dnl For developing plugins in Rust, optional.
580 AC_CHECK_PROG([CARGO],[cargo],[cargo],[no])
581 AC_ARG_ENABLE([rust],
582 [AS_HELP_STRING([--disable-rust], [disable Rust plugin])],
585 AM_CONDITIONAL([HAVE_RUST],
586 [test "x$CARGO" != "xno" && test "x$enable_rust" != "xno"])
588 dnl Check for Ruby, for embedding in the Ruby plugin.
589 AC_CHECK_PROG([RUBY],[ruby],[ruby],[no])
590 AC_ARG_ENABLE([ruby],
591 [AS_HELP_STRING([--disable-ruby], [disable Ruby plugin])],
594 AS_IF([test "x$RUBY" != "xno" && test "x$enable_ruby" != "xno"],[
595 PKG_CHECK_MODULES([RUBY], [ruby], [
596 AC_SUBST([RUBY_CFLAGS])
597 AC_SUBST([RUBY_LIBS])
599 AC_MSG_WARN([ruby not found])
603 AM_CONDITIONAL([HAVE_RUBY],[test "x$RUBY" != "xno" &&
604 test "x$enable_ruby" = "xyes"])
606 dnl Check for Tcl, for embedding in the Tcl plugin.
608 [AS_HELP_STRING([--disable-tcl], [disable Tcl plugin])],
611 AS_IF([test "x$enable_tcl" != "xno"],[
612 PKG_CHECK_MODULES([TCL], [tcl], [
613 AC_SUBST([TCL_CFLAGS])
616 AC_MSG_WARN([Tcl not found])
620 AM_CONDITIONAL([HAVE_TCL],[test "x$enable_tcl" = "xyes"])
622 dnl Check for Lua, for embedding in the Lua plugin.
624 [AS_HELP_STRING([--disable-lua], [disable Lua plugin])],
627 AS_IF([test "x$enable_lua" != "xno"],[
628 PKG_CHECK_MODULES([LUA], [lua], [
629 AC_SUBST([LUA_CFLAGS])
632 dnl Lua 5.1 used by RHEL 7 does not have lua_isinteger.
634 LIBS="$LUA_LIBS $LIBS"
635 AC_CHECK_FUNCS([lua_isinteger])
638 AC_MSG_WARN([Lua not found])
642 AM_CONDITIONAL([HAVE_LUA],[test "x$enable_lua" = "xyes"])
644 dnl Check for curl (only if you want to compile the curl plugin).
646 [AS_HELP_STRING([--without-curl],
647 [disable curl plugin @<:@default=check@:>@])],
650 AS_IF([test "$with_curl" != "no"],[
651 PKG_CHECK_MODULES([CURL], [libcurl],[
652 AC_SUBST([CURL_CFLAGS])
653 AC_SUBST([CURL_LIBS])
654 AC_DEFINE([HAVE_CURL],[1],[curl found at compile time.])
655 AC_CHECK_DECL([CURLOPT_UNIX_SOCKET_PATH], [
656 AC_DEFINE([HAVE_CURLOPT_UNIX_SOCKET_PATH],[1],
657 [CURLOPT_UNIX_SOCKET_PATH found at compile time.])
658 ], [], [#include <curl/curl.h>])
660 [AC_MSG_WARN([curl not found, curl plugin will be disabled])])
662 AM_CONDITIONAL([HAVE_CURL],[test "x$CURL_LIBS" != "x"])
664 dnl Check for libssh (only if you want to compile the ssh plugin).
666 [AS_HELP_STRING([--without-ssh],
667 [disable ssh plugin @<:@default=check@:>@])],
670 AS_IF([test "$with_ssh" != "no"],[
671 PKG_CHECK_MODULES([SSH], [libssh >= 0.8.0],[
672 AC_SUBST([SSH_CFLAGS])
675 [AC_MSG_WARN([libssh not found, ssh plugin will be disabled])])
677 AM_CONDITIONAL([HAVE_SSH],[test "x$SSH_LIBS" != "x"])
679 dnl Check for genisoimage or mkisofs
680 dnl (only if you want to compile the iso plugin).
683 [AS_HELP_STRING([--without-iso],
684 [disable iso plugin @<:@default=check@:>@])],
687 AS_IF([test "$with_iso" != "no"],[
688 AC_CHECK_PROG([GENISOIMAGE],[genisoimage],[genisoimage],[no])
689 AC_CHECK_PROG([MKISOFS],[mkisofs],[mkisofs],[no])
690 AS_IF([test "x$GENISOIMAGE" != "xno"],[
691 ISOPROG="$GENISOIMAGE"
693 AS_IF([test "x$MKISOFS" != "xno"],[
697 AS_IF([test "x$ISOPROG" != "xno"],[
698 AC_DEFINE_UNQUOTED([ISOPROG],["$ISOPROG"],
699 [Program used by iso plugin to make ISOs.])
703 AM_CONDITIONAL([HAVE_ISO],[test "x$ISOPROG" != "xno"])
705 dnl Check for libvirt (only if you want to compile the libvirt plugin).
706 AC_ARG_WITH([libvirt],
707 [AS_HELP_STRING([--without-libvirt],
708 [disable libvirt plugin @<:@default=check@:>@])],
710 [with_libvirt=check])
711 AS_IF([test "$with_libvirt" != "no"],[
712 PKG_CHECK_MODULES([LIBVIRT], [libvirt],[
713 AC_SUBST([LIBVIRT_CFLAGS])
714 AC_SUBST([LIBVIRT_LIBS])
715 AC_DEFINE([HAVE_LIBVIRT],[1],[libvirt found at compile time.])
717 [AC_MSG_WARN([libvirt not found, libvirt plugin will be disabled])])
719 AM_CONDITIONAL([HAVE_LIBVIRT],[test "x$LIBVIRT_LIBS" != "x"])
721 dnl Check for zlib (only if you want to compile the gzip plugin).
723 [AS_HELP_STRING([--without-zlib],
724 [disable gzip plugin @<:@default=check@:>@])],
727 AS_IF([test "$with_zlib" != "no"],[
728 PKG_CHECK_MODULES([ZLIB], [zlib >= 1.2.3.5],[
729 AC_SUBST([ZLIB_CFLAGS])
730 AC_SUBST([ZLIB_LIBS])
731 AC_DEFINE([HAVE_ZLIB],[1],[zlib found at compile time.])
733 [AC_MSG_WARN([zlib >= 1.2.3.5 not found, gzip plugin will be disabled])])
735 AM_CONDITIONAL([HAVE_ZLIB],[test "x$ZLIB_LIBS" != "x"])
737 dnl Check for libnbd (only if you want to compile the full nbd plugin).
738 AC_ARG_WITH([libnbd],
739 [AS_HELP_STRING([--without-libnbd],
740 [disable full nbd plugin @<:@default=check@:>@])],
743 AS_IF([test "$with_libnbd" != "no"],[
744 PKG_CHECK_MODULES([LIBNBD], [libnbd >= 0.9.8],[
745 AC_SUBST([LIBNBD_CFLAGS])
746 AC_SUBST([LIBNBD_LIBS])
747 AC_DEFINE([HAVE_LIBNBD],[1],[libnbd found at compile time.])
749 [AC_MSG_WARN([libnbd >= 0.9.8 not found, nbd plugin will be crippled])])
751 AM_CONDITIONAL([HAVE_LIBNBD], [test "x$LIBNBD_LIBS" != "x"])
753 dnl Also you can disable the whole nbd plugin.
754 AC_ARG_ENABLE([nbd-plugin],
755 [AS_HELP_STRING([--disable-nbd-plugin], [disable nbd plugin])],
757 [enable_nbd_plugin=yes])
758 AM_CONDITIONAL([HAVE_NBD_PLUGIN],[test "x$enable_nbd_plugin" = "xyes"])
760 dnl Check for liblzma (only if you want to compile the xz filter).
761 AC_ARG_WITH([liblzma],
762 [AS_HELP_STRING([--without-liblzma],
763 [disable xz filter @<:@default=check@:>@])],
765 [with_liblzma=check])
766 AS_IF([test "$with_liblzma" != "no"],[
767 PKG_CHECK_MODULES([LIBLZMA], [liblzma],[
768 AC_SUBST([LIBLZMA_CFLAGS])
769 AC_SUBST([LIBLZMA_LIBS])
770 AC_DEFINE([HAVE_LIBLZMA],[1],[liblzma found at compile time.])
772 [AC_MSG_WARN([liblzma not found, xz filter will be disabled])])
774 AM_CONDITIONAL([HAVE_LIBLZMA],[test "x$LIBLZMA_LIBS" != "x"])
776 dnl Check for libguestfs (only for the guestfs plugin and the test suite).
777 AC_ARG_WITH([libguestfs],
778 [AS_HELP_STRING([--without-libguestfs],
779 [disable guestfs plugin and tests @<:@default=check@:>@])],
781 [with_libguestfs=check])
782 AS_IF([test "$with_libguestfs" != "no"],[
783 PKG_CHECK_MODULES([LIBGUESTFS], [libguestfs],[
784 # Although the library was found, we want to make sure it supports nbd
785 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
788 #ifndef GUESTFS_ADD_DRIVE_OPTS_PROTOCOL
792 AC_SUBST([LIBGUESTFS_CFLAGS])
793 AC_SUBST([LIBGUESTFS_LIBS])
794 AC_DEFINE([HAVE_LIBGUESTFS],[1],[libguestfs found at compile time.])
797 AC_MSG_WARN([libguestfs too old, guestfs plugin and tests will be disabled])])
799 [AC_MSG_WARN([libguestfs not found, guestfs plugin and tests will be disabled])])
801 AM_CONDITIONAL([HAVE_LIBGUESTFS],[test "x$LIBGUESTFS_LIBS" != "x"])
803 dnl Check for guestfish (only needed for some of the tests).
804 AC_CHECK_PROG([GUESTFISH], [guestfish], [guestfish], [no])
805 AM_CONDITIONAL([HAVE_GUESTFISH], [test "x$GUESTFISH" != "xno"])
807 dnl Check for ext2fs and com_err, for the ext2 plugin.
809 [AS_HELP_STRING([--without-ext2],
810 [disable ext2 plugin @<:@default=check@:>@])],
813 AS_IF([test "$with_ext2" != "no"], [
814 PKG_CHECK_MODULES([EXT2FS], [ext2fs], [
815 AC_SUBST([EXT2FS_CFLAGS])
816 AC_SUBST([EXT2FS_LIBS])
817 AC_DEFINE([HAVE_EXT2FS],[1],[ext2fs found at compile time.])
819 [AC_MSG_WARN([ext2fs not found, ext2 plugin will be disabled])])
820 PKG_CHECK_MODULES([COM_ERR], [com_err], [
821 AC_SUBST([COM_ERR_CFLAGS])
822 AC_SUBST([COM_ERR_LIBS])
823 AC_DEFINE([HAVE_COM_ERR],[1],[com_err found at compile time.])
825 [AC_MSG_WARN([com_err not found, ext2 plugin will be disabled])])
827 AM_CONDITIONAL([HAVE_EXT2],
828 [test "x$EXT2FS_LIBS" != "x" && test "x$COM_ERR_LIBS" != "x"])
830 dnl Check if the user wants to disable VDDK support.
831 dnl See plugins/vddk/README.VDDK.
832 AC_ARG_ENABLE([vddk],
833 [AS_HELP_STRING([--disable-vddk],
834 [disable VMware VDDK plugin])],
837 dnl VDDK is only available on i686 up to 5.1.1, and only x86-64
838 dnl after that. Don't compile on other platforms.
839 AC_MSG_CHECKING([if the host CPU is compatible with VDDK])
840 AS_IF([test "$host_cpu" = "x86_64" || test "$host_cpu" = "i686"],[
841 AC_MSG_RESULT([yes ($host_cpu)])
844 AC_MSG_RESULT([no ($host_cpu)])
848 AM_CONDITIONAL([HAVE_VDDK], [test "x$enable_vddk" = "xyes"])
850 dnl List of plugins and filters.
892 plugins="$(echo $(printf %s\\n $lang_plugins $non_lang_plugins | sort -u))"
918 AC_SUBST([lang_plugins])
919 AC_SUBST([non_lang_plugins])
922 dnl Produce output files.
923 AC_CONFIG_HEADERS([config.h])
924 AC_CONFIG_FILES([podwrapper.pl],
925 [chmod +x,-w podwrapper.pl])
926 AC_CONFIG_FILES([common/protocol/generate-protostrings.sh],
927 [chmod +x,-w common/protocol/generate-protostrings.sh])
928 AC_CONFIG_FILES([Makefile
930 common/bitmap/Makefile
932 common/include/Makefile
933 common/protocol/Makefile
934 common/regions/Makefile
935 common/sparse/Makefile
936 common/utils/Makefile
939 include/nbdkit-version.h
941 plugins/curl/Makefile
942 plugins/data/Makefile
943 plugins/eval/Makefile
944 plugins/example1/Makefile
945 plugins/example2/Makefile
946 plugins/example3/Makefile
947 plugins/example4/Makefile
948 plugins/ext2/Makefile
949 plugins/file/Makefile
950 plugins/floppy/Makefile
951 plugins/full/Makefile
952 plugins/guestfs/Makefile
953 plugins/gzip/Makefile
954 plugins/info/Makefile
956 plugins/libvirt/Makefile
957 plugins/linuxdisk/Makefile
959 plugins/memory/Makefile
961 plugins/null/Makefile
962 plugins/ocaml/Makefile
963 plugins/partitioning/Makefile
964 plugins/pattern/Makefile
965 plugins/perl/Makefile
966 plugins/python/Makefile
967 plugins/random/Makefile
968 plugins/ruby/Makefile
969 plugins/rust/Cargo.toml
970 plugins/rust/Makefile
973 plugins/split/Makefile
974 plugins/streaming/Makefile
977 plugins/vddk/Makefile
978 plugins/zero/Makefile
980 filters/blocksize/Makefile
981 filters/cache/Makefile
982 filters/cacheextents/Makefile
984 filters/delay/Makefile
985 filters/error/Makefile
989 filters/nocache/Makefile
990 filters/noextents/Makefile
991 filters/nofilter/Makefile
992 filters/noparallel/Makefile
993 filters/nozero/Makefile
994 filters/offset/Makefile
995 filters/partition/Makefile
996 filters/rate/Makefile
997 filters/readahead/Makefile
998 filters/retry/Makefile
999 filters/stats/Makefile
1000 filters/truncate/Makefile
1014 echo "----------------------------------------------------------------------"
1015 echo "Thank you for downloading $PACKAGE_STRING"
1017 echo "This is how we have configured the optional components for you today:"
1024 if $@; then echo "yes"; else echo "no"; fi
1027 echo "Optional server features:"
1029 feature "bash-completion ........................ " \
1030 test "x$HAVE_BASH_COMPLETION_TRUE" = "x"
1031 feature "manual pages ........................... " \
1032 test "x$HAVE_POD_TRUE" = "x"
1033 feature "SELinux ................................ " \
1034 test "x$LIBSELINUX_LIBS" != "x"
1035 feature "TLS .................................... " \
1036 test "x$GNUTLS_LIBS" != "x"
1039 echo "Optional plugins:"
1041 feature "curl ................................... " \
1042 test "x$HAVE_CURL_TRUE" = "x"
1043 feature "example4 ............................... " \
1044 test "x$HAVE_PERL_TRUE" = "x"
1045 feature "ext2 ................................... " \
1046 test "x$HAVE_EXT2_TRUE" = "x"
1047 feature "floppy ................................. " \
1048 test "x$HAVE_ICONV_TRUE" = "x"
1049 feature "guestfs ................................ " \
1050 test "x$HAVE_LIBGUESTFS_TRUE" = "x"
1051 feature "gzip ................................... " \
1052 test "x$HAVE_ZLIB_TRUE" = "x"
1053 feature "iso .................................... " \
1054 test "x$HAVE_ISO_TRUE" = "x"
1055 feature "libvirt ................................ " \
1056 test "x$HAVE_LIBVIRT_TRUE" = "x"
1057 feature "nbd .................................... " \
1058 test "x$HAVE_NBD_PLUGIN_TRUE" = "x"
1059 feature "ssh .................................... " \
1060 test "x$HAVE_SSH_TRUE" = "x"
1061 feature "tar .................................... " \
1062 test "x$HAVE_PERL_TRUE" = "x"
1063 feature "vddk ................................... " \
1064 test "x$HAVE_VDDK_TRUE" = "x"
1070 feature "lua .................................... " \
1071 test "x$HAVE_LUA_TRUE" = "x"
1072 feature "ocaml .................................. " \
1073 test "x$HAVE_OCAML_TRUE" = "x"
1074 feature "perl ................................... " \
1075 test "x$HAVE_PERL_TRUE" = "x"
1076 feature "python ................................. " \
1077 test "x$HAVE_PYTHON_TRUE" = "x"
1078 feature "ruby ................................... " \
1079 test "x$HAVE_RUBY_TRUE" = "x"
1080 feature "rust ................................... " \
1081 test "x$HAVE_RUST_TRUE" = "x"
1082 feature "tcl .................................... " \
1083 test "x$HAVE_TCL_TRUE" = "x"
1087 echo "Optional filters:"
1089 feature "xz ..................................... " \
1090 test "x$HAVE_LIBLZMA_TRUE" = "x"
1093 echo "If any optional component is configured ‘no’ when you expected ‘yes’"
1094 echo "then you should check the preceding messages and README."
1096 echo "Please report bugs back to the mailing list:"
1097 echo "http://www.redhat.com/mailman/listinfo/libguestfs"
1099 echo "Next you should type 'make' to build the package,"
1100 echo "then 'make check' to run the tests."