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 AC_INIT([nbdkit], [1.13.5])
33 AC_CONFIG_MACRO_DIR([m4])
34 m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],[],
35 [m4_define([AC_USE_SYSTEM_EXTENSIONS],[])])
36 AC_USE_SYSTEM_EXTENSIONS
39 dnl NB: Do not [quote] this parameter.
40 AM_INIT_AUTOMAKE(foreign)
48 dnl Check for basic C environment.
55 test "x$U" != "x" && AC_MSG_ERROR([Compiler not ANSI compliant])
59 dnl Check for C++ (optional, we just use this to test the header
60 dnl can be included from C++ code).
63 dnl The C++ compiler test is pretty useless because even if it fails
64 dnl it sets CXX=g++. So test the compiler actually works.
65 AC_MSG_CHECKING([if the C++ compiler really really works])
66 AS_IF([$CXX --version >&AS_MESSAGE_LOG_FD 2>&1],[have_cxx=yes],[have_cxx=no])
67 AC_MSG_RESULT([$have_cxx])
68 AM_CONDITIONAL([HAVE_CXX], [test "$have_cxx" = "yes"])
70 AC_ARG_ENABLE([gcc-warnings],
71 [AS_HELP_STRING([--enable-gcc-warnings],
72 [turn on lots of GCC warnings (for developers)])],
75 *) AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;;
77 gcc_warnings=$enableval],
80 if test "x$gcc_warnings" = "xyes"; then
81 WARNINGS_CFLAGS="-Wall -Werror"
82 AC_SUBST([WARNINGS_CFLAGS])
85 dnl Check if the compiler supports -std=c90 flag. This is only used
86 dnl during a test. OpenBSD GCC does not support this flag so we skip
88 AC_MSG_CHECKING([if the compiler supports -std=c90 for ANSI C test])
90 CFLAGS="$CFLAGS -std=c90"
91 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
92 [supports_std_c90=yes],
93 [supports_std_c90=no])
95 AC_MSG_RESULT([$supports_std_c90])
96 AM_CONDITIONAL([CAN_TEST_ANSI_C], [test "x$supports_std_c90" = "xyes"])
98 dnl On Haiku we must use BSD-compatibility headers to get the endian
100 AC_MSG_CHECKING(whether OS-dependent include paths are required)
102 [haiku*], [CFLAGS="$CFLAGS -I`findpaths -p /system B_FIND_PATH_HEADERS_DIRECTORY`/bsd"; AC_MSG_RESULT(yes)],
106 dnl On Linux /tmp is often tmpfs which is not large enough, so use /var/tmp.
107 dnl But Haiku only has /tmp.
108 AC_MSG_CHECKING([for temporary directory for large files])
110 [haiku*], [LARGE_TMPDIR=/tmp],
111 [LARGE_TMPDIR=/var/tmp]
113 AC_MSG_RESULT([$LARGE_TMPDIR])
114 AC_DEFINE_UNQUOTED([LARGE_TMPDIR],["$LARGE_TMPDIR"],
115 [Temporary directory for large files])
117 dnl Check if libc has program_invocation_short_name.
118 AC_CHECK_DECLS([program_invocation_short_name], [], [], [#include <errno.h>])
122 dnl Check if __attribute__((cleanup(...))) works.
123 dnl Set -Werror, otherwise gcc will only emit a warning for attributes
124 dnl that it doesn't understand.
125 acx_nbdkit_save_CFLAGS="${CFLAGS}"
126 CFLAGS="${CFLAGS} -Werror"
127 AC_MSG_CHECKING([if __attribute__((cleanup(...))) works with this compiler])
142 __attribute__((cleanup(freep))) char *ptr = malloc (100);
146 main (int argc, char *argv[])
157 ['__attribute__((cleanup(...)))' does not work.
159 You may not be using a sufficiently recent version of GCC or CLANG, or
160 you may be using a C compiler which does not support this attribute,
161 or the configure test may be wrong.
163 This code requires the attribute to work for proper locking between threads.])])
164 CFLAGS="${acx_nbdkit_save_CFLAGS}"
166 dnl Check for __auto_type (GCC extension).
167 AC_MSG_CHECKING([if __auto_type is available in this compiler])
179 AC_DEFINE([HAVE_AUTO_TYPE],[1],[__auto_type is available])
185 dnl Check for other headers, all optional.
194 dnl Check for functions in libc, all optional.
197 get_current_dir_name \
201 dnl Check whether printf("%m") works
202 AC_CACHE_CHECK([whether the printf family supports %m],
203 [nbdkit_cv_func_printf_percent_m],
212 snprintf(buf, sizeof buf, "%m");
213 return !!strcmp (buf, strerror (EINVAL));
215 [nbdkit_cv_func_printf_percent_m=yes],
216 [nbdkit_cv_func_printf_percent_m=no],
219 *-gnu* | gnu*) nbdkit_cv_func_printf_percent_m=yes;;
220 *) nbdkit_cv_func_printf_percent_m="guessing no";;
223 AS_IF([test "x$nbdkit_cv_func_printf_percent_m" = xyes],
224 [AC_DEFINE([HAVE_VFPRINTF_PERCENT_M],[1],
225 [Define to 1 if vfprintf supports %m.])])
228 AC_SEARCH_LIBS([dlsym], [dl dld], [
229 AS_IF([test "x$ac_cv_search_dlsym" != "xnone required"],
230 [DL_LIBS="$ac_cv_search_dlsym"], [DL_LIBS=])
232 ], [AC_MSG_ERROR([unable to find the dlsym() function])
236 dnl Test if <iconv.h> header can build working binaries.
238 dnl On FreeBSD: iconv and libiconv both exist, both can be installed
239 dnl simultaneously, <iconv.h> can exist in two separate places, and
240 dnl if you get the wrong header/library mix everything breaks.
242 dnl On Haiku: libiconv is required to link to iconv_* functions.
244 [AS_HELP_STRING([--without-iconv],
245 [don't try to link against iconv @<:@default=check@:>@])],
248 AS_IF([test "x$with_iconv" != "xno"],[
249 AC_CHECK_HEADER([iconv.h],[
250 AC_MSG_CHECKING([if <iconv.h> can be used to link a program])
257 main (int argc, char *argv[])
259 iconv_t ic = iconv_open ("", "");
272 AM_CONDITIONAL([HAVE_ICONV], [test "x$iconv_working" = "xyes"])
274 dnl Don't use linker script for the server on FreeBSD because
275 dnl FreeBSD's linker is broken. See eg:
276 dnl https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=190851
277 AC_MSG_CHECKING([if we should use a linker script for the server])
279 [freebsd*], [use_linker_script_for_server=no],
280 [use_linker_script_for_server=yes]
282 AC_MSG_RESULT([$use_linker_script_for_server])
283 AM_CONDITIONAL([USE_LINKER_SCRIPT_FOR_SERVER],
284 [test "x$use_linker_script_for_server" = "xyes"])
286 dnl Check if -rdynamic linker flag works.
287 acx_nbdkit_save_LDFLAGS="${LDFLAGS}"
288 LDFLAGS="${LDFLAGS} -rdynamic"
289 AC_MSG_CHECKING([if linker supports -rdynamic])
294 main (int argc, char *argv[])
306 LDFLAGS="${acx_nbdkit_save_LDFLAGS}"
307 AC_SUBST([DL_LDFLAGS])
309 dnl Check for dladdr in -ldl, optional. This is a glibc extension.
311 LIBS="$DL_LIBS $LIBS"
312 AC_CHECK_FUNCS([dladdr])
315 AC_SEARCH_LIBS([getaddrinfo], [network socket])
317 dnl Check for SELinux socket labelling (optional).
318 PKG_CHECK_MODULES([LIBSELINUX], [libselinux], [
319 AC_SUBST([LIBSELINUX_CFLAGS])
320 AC_SUBST([LIBSELINUX_LIBS])
321 AC_DEFINE([HAVE_LIBSELINUX],[1],[libselinux found at compile time.])
323 AC_MSG_WARN([libselinux not found, SELinux socket labelling support will be disabled.])
326 dnl Check for GnuTLS (optional, for TLS support).
327 PKG_CHECK_MODULES([GNUTLS], [gnutls >= 3.3.0], [
328 AC_SUBST([GNUTLS_CFLAGS])
329 AC_SUBST([GNUTLS_LIBS])
330 AC_DEFINE([HAVE_GNUTLS],[1],[gnutls found at compile time.])
332 AC_MSG_WARN([gnutls not found or < 3.3.0, TLS support will be disabled.])
335 AS_IF([test "$GNUTLS_LIBS" != ""],[
336 AC_MSG_CHECKING([for default TLS session priority string])
337 AC_ARG_WITH([tls-priority],
338 [AS_HELP_STRING([--with-tls-priority],
339 [default TLS session priority string @<:@default=NORMAL@:>@])],
340 [tls_priority=$withval],
341 [tls_priority=NORMAL])
342 AC_MSG_RESULT([$tls_priority])
343 AC_DEFINE_UNQUOTED([TLS_PRIORITY],["$tls_priority"],
344 [Default TLS session priority string])
346 # Check for APIs which may not be present.
348 LIBS="$GNUTLS_LIBS $LIBS"
350 gnutls_base64_decode2 \
351 gnutls_certificate_set_known_dh_params \
352 gnutls_session_set_verify_cert])
356 dnl Check for valgrind.
357 AC_CHECK_PROG([VALGRIND],[valgrind],[valgrind],[no])
359 dnl If valgrind headers are available (optional).
360 dnl Since this is only useful for developers, you have to enable
361 dnl it explicitly using --enable-valgrind.
362 AC_ARG_ENABLE([valgrind],
363 [AS_HELP_STRING([--enable-valgrind],
364 [enable Valgrind extensions (for developers)])],
365 [enable_valgrind=yes],
366 [enable_valgrind=no])
367 AS_IF([test "x$enable_valgrind" = "xyes"],[
368 PKG_CHECK_MODULES([VALGRIND], [valgrind], [
369 AC_SUBST([VALGRIND_CFLAGS])
370 AC_SUBST([VALGRIND_LIBS])
371 AC_DEFINE([HAVE_VALGRIND],[1],[Valgrind headers found at compile time])
373 AC_MSG_ERROR([--enable-valgrind given, but Valgrind headers are not available])
378 PKG_CHECK_MODULES([BASH_COMPLETION], [bash-completion >= 2.0], [
380 AC_MSG_CHECKING([for bash-completions directory])
381 m4_ifdef([PKG_CHECK_VAR],[
382 PKG_CHECK_VAR(bashcompdir, [bash-completion], [completionsdir])
384 AS_IF([test -z "$bashcompdir"], [
385 bashcompdir="${sysconfdir}/bash_completion.d"
387 AC_MSG_RESULT([$bashcompdir])
388 AC_SUBST([bashcompdir])
391 AC_MSG_WARN([bash-completion not installed])
393 AM_CONDITIONAL([HAVE_BASH_COMPLETION],[test "x$bash_completion" = "xyes"])
395 dnl Check we have enough to run podwrapper.
396 AC_CHECK_PROG([PERL],[perl],[perl],[no])
397 AS_IF([test "x$PERL" != "xno"],[
398 AC_MSG_CHECKING([if we have perl Pod::Man and Pod::Simple])
399 AS_IF([$PERL -MPod::Man -MPod::Simple -e 1 >&AS_MESSAGE_LOG_FD 2>&1],[
404 AC_MSG_RESULT([$enable_pod])
406 AM_CONDITIONAL([HAVE_POD],
407 [test "x$PERL" != "xno" && test "x$enable_pod" = "xyes"])
409 dnl Define the path to the podwrapper program.
410 PODWRAPPER="$PERL $(pwd)/podwrapper.pl"
411 AC_SUBST([PODWRAPPER])
413 dnl Allow all plugins and filters to be disabled.
414 AC_ARG_ENABLE([plugins],
415 [AS_HELP_STRING([--disable-plugins],
416 [disable all bundled plugins and filters])])
417 AM_CONDITIONAL([HAVE_PLUGINS], [test "x$enable_plugins" != "xno"])
419 dnl Check for Perl, for embedding in the perl plugin.
420 dnl Note that the perl binary is checked above.
421 AC_ARG_ENABLE([perl],
422 [AS_HELP_STRING([--disable-perl], [disable Perl embed plugin])],
425 AS_IF([test "x$PERL" != "xno" && test "x$enable_perl" != "xno"],[
426 dnl Check for Perl archlib.
427 AC_MSG_CHECKING([for Perl embed archlib])
428 PERL_ARCHLIB="$($PERL -MConfig -e 'print $Config{archlib}')"
429 AS_IF([ test -n "$PERL_ARCHLIB" ],[
430 AC_MSG_RESULT([$PERL_ARCHLIB])
432 AC_MSG_NOTICE([Perl embed module disabled])
436 dnl Check for Perl CFLAGS.
437 AC_MSG_CHECKING([for Perl embed CFLAGS])
438 PERL_CFLAGS="$($PERL -MExtUtils::Embed -e 'ccflags')"
439 AS_IF([ test -n "$PERL_CFLAGS" ],[
440 AC_MSG_RESULT([$PERL_CFLAGS])
442 AC_MSG_NOTICE([Perl embed module disabled])
446 dnl Check for Perl LDOPTS.
447 AC_MSG_CHECKING([for Perl embed LDOPTS])
448 PERL_LDOPTS="$($PERL -MExtUtils::Embed -e 'ldopts')"
449 AC_MSG_RESULT([$PERL_LDOPTS])
451 dnl XXX Could check these actually work.
453 AM_CONDITIONAL([HAVE_PERL],[test "x$enable_perl" != "xno" && test "x$PERL" != "xno"])
454 AC_SUBST([PERL_ARCHLIB])
455 AC_SUBST([PERL_CFLAGS])
456 AC_SUBST([PERL_LDOPTS])
458 dnl Check for Python, for embedding in the python plugin.
459 AC_CHECK_PROG([PYTHON],[python],[python],[no])
460 AC_ARG_ENABLE([python],
461 [AS_HELP_STRING([--disable-python], [disable Python embed plugin])],
464 AS_IF([test "x$PYTHON" != "xno" && test "x$enable_python" != "xno"],[
465 AC_MSG_CHECKING([version of $PYTHON])
466 PYTHON_VERSION_MAJOR=`$PYTHON -c "import sys; print (sys.version_info@<:@0@:>@)"`
467 PYTHON_VERSION_MINOR=`$PYTHON -c "import sys; print (sys.version_info@<:@1@:>@)"`
468 PYTHON_VERSION="$PYTHON_VERSION_MAJOR.$PYTHON_VERSION_MINOR"
469 AS_IF([test -n "$PYTHON_VERSION"],[
470 AC_MSG_RESULT([$PYTHON_VERSION])
472 AC_MSG_NOTICE([Python embed module disabled])
476 dnl Check for Python CFLAGS, libraries.
477 dnl For Python >= 3.8 we have to use python-<VERSION>-embed.pc, see:
478 dnl https://docs.python.org/3.8/whatsnew/3.8.html#debug-build-uses-the-same-abi-as-release-build
479 dnl The python.pc is called python-<VERSION>.pc on Debian and
480 dnl later versions of Fedora, and python.pc on older versions
482 PKG_CHECK_MODULES([PYTHON], [python-"$PYTHON_VERSION"-embed], [
483 AC_SUBST([PYTHON_CFLAGS])
484 AC_SUBST([PYTHON_LIBS])
485 AC_SUBST([PYTHON_VERSION])
486 AC_DEFINE([HAVE_PYTHON],[1],[Python library found at compile time])
488 PKG_CHECK_MODULES([PYTHON], [python-"$PYTHON_VERSION"], [
489 AC_SUBST([PYTHON_CFLAGS])
490 AC_SUBST([PYTHON_LIBS])
491 AC_SUBST([PYTHON_VERSION])
492 AC_DEFINE([HAVE_PYTHON],[1],[Python library found at compile time])
494 PKG_CHECK_MODULES([PYTHON], [python], [
495 AC_SUBST([PYTHON_CFLAGS])
496 AC_SUBST([PYTHON_LIBS])
497 AC_SUBST([PYTHON_VERSION])
498 AC_DEFINE([HAVE_PYTHON],[1],[Python library found at compile time])
500 AC_MSG_WARN([python $PYTHON_VERSION not found])
504 dnl Check for various functions needed by the bindings.
507 PYTHON_BLDLIBRARY=`$PYTHON -c "import distutils.sysconfig; \
508 print (distutils.sysconfig.get_config_var('BLDLIBRARY'))"`
509 AC_CHECK_LIB([c],[PyString_FromString],
510 [AC_DEFINE([HAVE_PYSTRING_FROMSTRING],1,
511 [Found PyString_FromString in libpython.])],
512 [],[$PYTHON_BLDLIBRARY])
513 AC_CHECK_LIB([c],[PyString_AsString],
514 [AC_DEFINE([HAVE_PYSTRING_ASSTRING],1,
515 [Found PyString_AsString in libpython.])],
516 [],[$PYTHON_BLDLIBRARY])
517 AC_CHECK_LIB([c],[PyUnicode_AsUTF8],
518 [AC_DEFINE([HAVE_PYUNICODE_ASUTF8],1,
519 [Found PyUnicode_AsUTF8 in libpython.])],
520 [],[$PYTHON_BLDLIBRARY])
525 AM_CONDITIONAL([HAVE_PYTHON],[test "x$enable_python" != "xno" && test "x$PYTHON" != "xno"])
526 AC_SUBST([PYTHON_CFLAGS])
527 AC_SUBST([PYTHON_LIBS])
528 AC_SUBST([PYTHON_LDFLAGS])
530 dnl For the OCaml plugin, you can set OCAMLOPTFLAGS before running
531 dnl ./configure to specify any extra flags you want to pass to
533 AC_SUBST([OCAMLOPTFLAGS])
535 dnl Check for OCaml, for embedding in the ocaml plugin.
537 AC_ARG_ENABLE([ocaml],
538 [AS_HELP_STRING([--disable-ocaml], [disable OCaml embed plugin])],
541 AS_IF([test "x$OCAMLOPT" != "xno" && test "x$enable_ocaml" != "xno"],[
542 dnl Check OCaml can create a shared library (see README for details).
543 AC_MSG_CHECKING([if $OCAMLOPT can create a shared library])
544 echo 'print_endline "test"' > conftest.ml
545 AS_IF([$OCAMLOPT $OCAMLOPTFLAGS -output-obj -runtime-variant _pic -o conftest.so conftest.ml >&AS_MESSAGE_LOG_FD 2>&1],[
547 ocaml_link_shared=yes
551 rm -f conftest.ml conftest.cmi conftest.cmx conftest.so conftest.o
553 AM_CONDITIONAL([HAVE_OCAML],[test "x$OCAMLOPT" != "xno" &&
554 test "x$ocaml_link_shared" = "xyes"])
556 dnl For developing plugins in Rust, optional.
557 AC_CHECK_PROG([CARGO],[cargo],[cargo],[no])
558 AC_ARG_ENABLE([rust],
559 [AS_HELP_STRING([--disable-rust], [disable Rust plugin])],
562 AM_CONDITIONAL([HAVE_RUST],
563 [test "x$CARGO" != "xno" && test "x$enable_rust" != "xno"])
565 dnl Check for Ruby, for embedding in the Ruby plugin.
566 AC_CHECK_PROG([RUBY],[ruby],[ruby],[no])
567 AC_ARG_ENABLE([ruby],
568 [AS_HELP_STRING([--disable-ruby], [disable Ruby plugin])],
571 AS_IF([test "x$RUBY" != "xno" && test "x$enable_ruby" != "xno"],[
572 PKG_CHECK_MODULES([RUBY], [ruby], [
573 AC_SUBST([RUBY_CFLAGS])
574 AC_SUBST([RUBY_LIBS])
576 AC_MSG_WARN([ruby not found])
580 AM_CONDITIONAL([HAVE_RUBY],[test "x$RUBY" != "xno" &&
581 test "x$enable_ruby" = "xyes"])
583 dnl Check for Tcl, for embedding in the Tcl plugin.
585 [AS_HELP_STRING([--disable-tcl], [disable Tcl plugin])],
588 AS_IF([test "x$enable_tcl" != "xno"],[
589 PKG_CHECK_MODULES([TCL], [tcl], [
590 AC_SUBST([TCL_CFLAGS])
593 AC_MSG_WARN([Tcl not found])
597 AM_CONDITIONAL([HAVE_TCL],[test "x$enable_tcl" = "xyes"])
599 dnl Check for Lua, for embedding in the Lua plugin.
601 [AS_HELP_STRING([--disable-lua], [disable Lua plugin])],
604 AS_IF([test "x$enable_lua" != "xno"],[
605 PKG_CHECK_MODULES([LUA], [lua], [
606 AC_SUBST([LUA_CFLAGS])
609 dnl Lua 5.1 used by RHEL 7 does not have lua_isinteger.
611 LIBS="$LUA_LIBS $LIBS"
612 AC_CHECK_FUNCS([lua_isinteger])
615 AC_MSG_WARN([Lua not found])
619 AM_CONDITIONAL([HAVE_LUA],[test "x$enable_lua" = "xyes"])
621 dnl Check for curl (only if you want to compile the curl plugin).
623 [AS_HELP_STRING([--without-curl],
624 [disable curl plugin @<:@default=check@:>@])],
627 AS_IF([test "$with_curl" != "no"],[
628 PKG_CHECK_MODULES([CURL], [libcurl],[
629 AC_SUBST([CURL_CFLAGS])
630 AC_SUBST([CURL_LIBS])
631 AC_DEFINE([HAVE_CURL],[1],[curl found at compile time.])
632 AC_CHECK_DECL([CURLOPT_UNIX_SOCKET_PATH], [
633 AC_DEFINE([HAVE_CURLOPT_UNIX_SOCKET_PATH],[1],
634 [CURLOPT_UNIX_SOCKET_PATH found at compile time.])
635 ], [], [#include <curl/curl.h>])
637 [AC_MSG_WARN([curl not found, curl plugin will be disabled])])
639 AM_CONDITIONAL([HAVE_CURL],[test "x$CURL_LIBS" != "x"])
641 dnl Check for libssh (only if you want to compile the ssh plugin).
643 [AS_HELP_STRING([--without-ssh],
644 [disable ssh plugin @<:@default=check@:>@])],
647 AS_IF([test "$with_ssh" != "no"],[
648 PKG_CHECK_MODULES([SSH], [libssh >= 0.8.0],[
649 AC_SUBST([SSH_CFLAGS])
652 [AC_MSG_WARN([libssh not found, ssh plugin will be disabled])])
654 AM_CONDITIONAL([HAVE_SSH],[test "x$SSH_LIBS" != "x"])
656 dnl Check for genisoimage or mkisofs
657 dnl (only if you want to compile the iso plugin).
660 [AS_HELP_STRING([--without-iso],
661 [disable iso plugin @<:@default=check@:>@])],
664 AS_IF([test "$with_iso" != "no"],[
665 AC_CHECK_PROG([GENISOIMAGE],[genisoimage],[genisoimage],[no])
666 AC_CHECK_PROG([MKISOFS],[mkisofs],[mkisofs],[no])
667 AS_IF([test "x$GENISOIMAGE" != "xno"],[
668 ISOPROG="$GENISOIMAGE"
670 AS_IF([test "x$MKISOFS" != "xno"],[
674 AS_IF([test "x$ISOPROG" != "xno"],[
675 AC_DEFINE_UNQUOTED([ISOPROG],["$ISOPROG"],
676 [Program used by iso plugin to make ISOs.])
680 AM_CONDITIONAL([HAVE_ISO],[test "x$ISOPROG" != "xno"])
682 dnl Check for libvirt (only if you want to compile the libvirt plugin).
683 AC_ARG_WITH([libvirt],
684 [AS_HELP_STRING([--without-libvirt],
685 [disable libvirt plugin @<:@default=check@:>@])],
687 [with_libvirt=check])
688 AS_IF([test "$with_libvirt" != "no"],[
689 PKG_CHECK_MODULES([LIBVIRT], [libvirt],[
690 AC_SUBST([LIBVIRT_CFLAGS])
691 AC_SUBST([LIBVIRT_LIBS])
692 AC_DEFINE([HAVE_LIBVIRT],[1],[libvirt found at compile time.])
694 [AC_MSG_WARN([libvirt not found, libvirt plugin will be disabled])])
696 AM_CONDITIONAL([HAVE_LIBVIRT],[test "x$LIBVIRT_LIBS" != "x"])
698 dnl Check for zlib (only if you want to compile the gzip plugin).
700 [AS_HELP_STRING([--without-zlib],
701 [disable gzip plugin @<:@default=check@:>@])],
704 AS_IF([test "$with_zlib" != "no"],[
705 PKG_CHECK_MODULES([ZLIB], [zlib >= 1.2.3.5],[
706 AC_SUBST([ZLIB_CFLAGS])
707 AC_SUBST([ZLIB_LIBS])
708 AC_DEFINE([HAVE_ZLIB],[1],[zlib found at compile time.])
710 [AC_MSG_WARN([zlib >= 1.2.3.5 not found, gzip plugin will be disabled])])
712 AM_CONDITIONAL([HAVE_ZLIB],[test "x$ZLIB_LIBS" != "x"])
714 dnl Check for libnbd (only if you want to compile the full nbd plugin).
715 AC_ARG_WITH([libnbd],
716 [AS_HELP_STRING([--without-libnbd],
717 [disable nbd plugin @<:@default=check@:>@])],
720 AS_IF([test "$with_libnbd" != "no"],[
721 PKG_CHECK_MODULES([LIBNBD], [libnbd >= 0.1.5],[
722 AC_SUBST([LIBNBD_CFLAGS])
723 AC_SUBST([LIBNBD_LIBS])
724 AC_DEFINE([HAVE_LIBNBD],[1],[libnbd found at compile time.])
726 [AC_MSG_WARN([libnbd >= 0.1.3 not found, nbd plugin will be crippled])])
728 AM_CONDITIONAL([HAVE_LIBNBD], [test "x$LIBNBD_LIBS" != "x"])
730 dnl Check for liblzma (only if you want to compile the xz filter).
731 AC_ARG_WITH([liblzma],
732 [AS_HELP_STRING([--without-liblzma],
733 [disable xz filter @<:@default=check@:>@])],
735 [with_liblzma=check])
736 AS_IF([test "$with_liblzma" != "no"],[
737 PKG_CHECK_MODULES([LIBLZMA], [liblzma],[
738 AC_SUBST([LIBLZMA_CFLAGS])
739 AC_SUBST([LIBLZMA_LIBS])
740 AC_DEFINE([HAVE_LIBLZMA],[1],[liblzma found at compile time.])
742 [AC_MSG_WARN([liblzma not found, xz filter will be disabled])])
744 AM_CONDITIONAL([HAVE_LIBLZMA],[test "x$LIBLZMA_LIBS" != "x"])
746 dnl Check for libguestfs (only for the guestfs plugin and the test suite).
747 AC_ARG_WITH([libguestfs],
748 [AS_HELP_STRING([--without-libguestfs],
749 [disable guestfs plugin and tests @<:@default=check@:>@])],
751 [with_libguestfs=check])
752 AS_IF([test "$with_libguestfs" != "no"],[
753 PKG_CHECK_MODULES([LIBGUESTFS], [libguestfs],[
754 # Although the library was found, we want to make sure it supports nbd
755 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
758 #ifndef GUESTFS_ADD_DRIVE_OPTS_PROTOCOL
762 AC_SUBST([LIBGUESTFS_CFLAGS])
763 AC_SUBST([LIBGUESTFS_LIBS])
764 AC_DEFINE([HAVE_LIBGUESTFS],[1],[libguestfs found at compile time.])
767 AC_MSG_WARN([libguestfs too old, guestfs plugin and tests will be disabled])])
769 [AC_MSG_WARN([libguestfs not found, guestfs plugin and tests will be disabled])])
771 AM_CONDITIONAL([HAVE_LIBGUESTFS],[test "x$LIBGUESTFS_LIBS" != "x"])
773 dnl Check for guestfish (only needed for some of the tests).
774 AC_CHECK_PROG([GUESTFISH], [guestfish], [guestfish], [no])
775 AM_CONDITIONAL([HAVE_GUESTFISH], [test "x$GUESTFISH" != "xno"])
777 dnl Check for ext2fs and com_err, for the ext2 plugin.
779 [AS_HELP_STRING([--without-ext2],
780 [disable ext2 plugin @<:@default=check@:>@])],
783 AS_IF([test "$with_ext2" != "no"], [
784 PKG_CHECK_MODULES([EXT2FS], [ext2fs], [
785 AC_SUBST([EXT2FS_CFLAGS])
786 AC_SUBST([EXT2FS_LIBS])
787 AC_DEFINE([HAVE_EXT2FS],[1],[ext2fs found at compile time.])
789 [AC_MSG_WARN([ext2fs not found, ext2 plugin will be disabled])])
790 PKG_CHECK_MODULES([COM_ERR], [com_err], [
791 AC_SUBST([COM_ERR_CFLAGS])
792 AC_SUBST([COM_ERR_LIBS])
793 AC_DEFINE([HAVE_COM_ERR],[1],[com_err found at compile time.])
795 [AC_MSG_WARN([com_err not found, ext2 plugin will be disabled])])
797 AM_CONDITIONAL([HAVE_EXT2],
798 [test "x$EXT2FS_LIBS" != "x" && test "x$COM_ERR_LIBS" != "x"])
800 dnl Check if the user wants to disable VDDK support.
801 dnl See plugins/vddk/README.VDDK.
802 AC_ARG_ENABLE([vddk],
803 [AS_HELP_STRING([--disable-vddk],
804 [disable VMware VDDK plugin])],
807 AM_CONDITIONAL([HAVE_VDDK], [test "x$enable_vddk" = "xyes"])
809 dnl List of plugins and filters.
849 plugins="$(echo $(printf %s\\n $lang_plugins $non_lang_plugins | sort -u))"
872 AC_SUBST([lang_plugins])
873 AC_SUBST([non_lang_plugins])
876 dnl Produce output files.
877 AC_CONFIG_HEADERS([config.h])
878 AC_CONFIG_FILES([podwrapper.pl],
879 [chmod +x,-w podwrapper.pl])
880 AC_CONFIG_FILES([Makefile
882 common/bitmap/Makefile
884 common/include/Makefile
885 common/protocol/Makefile
886 common/regions/Makefile
887 common/sparse/Makefile
888 common/utils/Makefile
892 plugins/curl/Makefile
893 plugins/data/Makefile
894 plugins/example1/Makefile
895 plugins/example2/Makefile
896 plugins/example3/Makefile
897 plugins/example4/Makefile
898 plugins/ext2/Makefile
899 plugins/file/Makefile
900 plugins/floppy/Makefile
901 plugins/full/Makefile
902 plugins/guestfs/Makefile
903 plugins/gzip/Makefile
905 plugins/libvirt/Makefile
906 plugins/linuxdisk/Makefile
908 plugins/memory/Makefile
910 plugins/null/Makefile
911 plugins/ocaml/Makefile
912 plugins/partitioning/Makefile
913 plugins/pattern/Makefile
914 plugins/perl/Makefile
915 plugins/python/Makefile
916 plugins/random/Makefile
917 plugins/ruby/Makefile
918 plugins/rust/Cargo.toml
919 plugins/rust/Makefile
922 plugins/split/Makefile
923 plugins/streaming/Makefile
926 plugins/vddk/Makefile
927 plugins/zero/Makefile
929 filters/blocksize/Makefile
930 filters/cache/Makefile
931 filters/cacheextents/Makefile
933 filters/delay/Makefile
934 filters/error/Makefile
937 filters/nocache/Makefile
938 filters/noextents/Makefile
939 filters/noparallel/Makefile
940 filters/nozero/Makefile
941 filters/offset/Makefile
942 filters/partition/Makefile
943 filters/rate/Makefile
944 filters/readahead/Makefile
945 filters/stats/Makefile
946 filters/truncate/Makefile
960 echo "----------------------------------------------------------------------"
961 echo "Thank you for downloading $PACKAGE_STRING"
963 echo "This is how we have configured the optional components for you today:"
970 if $@; then echo "yes"; else echo "no"; fi
973 echo "Optional server features:"
975 feature "bash-completion ........................ " \
976 test "x$HAVE_BASH_COMPLETION_TRUE" = "x"
977 feature "manual pages ........................... " \
978 test "x$HAVE_POD_TRUE" = "x"
979 feature "SELinux ................................ " \
980 test "x$LIBSELINUX_LIBS" != "x"
981 feature "TLS .................................... " \
982 test "x$GNUTLS_LIBS" != "x"
985 echo "Optional plugins:"
987 feature "curl ................................... " \
988 test "x$HAVE_CURL_TRUE" = "x"
989 feature "example4 ............................... " \
990 test "x$HAVE_PERL_TRUE" = "x"
991 feature "ext2 ................................... " \
992 test "x$HAVE_EXT2_TRUE" = "x"
993 feature "floppy ................................. " \
994 test "x$HAVE_ICONV_TRUE" = "x"
995 feature "guestfs ................................ " \
996 test "x$HAVE_LIBGUESTFS_TRUE" = "x"
997 feature "gzip ................................... " \
998 test "x$HAVE_ZLIB_TRUE" = "x"
999 feature "iso .................................... " \
1000 test "x$HAVE_ISO_TRUE" = "x"
1001 feature "libvirt ................................ " \
1002 test "x$HAVE_LIBVIRT_TRUE" = "x"
1003 feature "nbd .................................... " \
1004 test "x$HAVE_LIBNBD_TRUE" = "x"
1005 feature "ssh .................................... " \
1006 test "x$HAVE_SSH_TRUE" = "x"
1007 feature "tar .................................... " \
1008 test "x$HAVE_PERL_TRUE" = "x"
1009 feature "vddk ................................... " \
1010 test "x$HAVE_VDDK_TRUE" = "x"
1016 feature "lua .................................... " \
1017 test "x$HAVE_LUA_TRUE" = "x"
1018 feature "ocaml .................................. " \
1019 test "x$HAVE_OCAML_TRUE" = "x"
1020 feature "perl ................................... " \
1021 test "x$HAVE_PERL_TRUE" = "x"
1022 feature "python ................................. " \
1023 test "x$HAVE_PYTHON_TRUE" = "x"
1024 feature "ruby ................................... " \
1025 test "x$HAVE_RUBY_TRUE" = "x"
1026 feature "rust ................................... " \
1027 test "x$HAVE_RUST_TRUE" = "x"
1028 feature "tcl .................................... " \
1029 test "x$HAVE_TCL_TRUE" = "x"
1033 echo "Optional filters:"
1035 feature "xz ..................................... " \
1036 test "x$HAVE_LIBLZMA_TRUE" = "x"
1039 echo "If any optional component is configured ‘no’ when you expected ‘yes’"
1040 echo "then you should check the preceding messages and README."
1042 echo "Please report bugs back to the mailing list:"
1043 echo "http://www.redhat.com/mailman/listinfo/libguestfs"
1045 echo "Next you should type 'make' to build the package,"
1046 echo "then 'make check' to run the tests."