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.11.15])
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 \
200 dnl Check whether printf("%m") works
201 AC_CACHE_CHECK([whether the printf family supports %m],
202 [nbdkit_cv_func_printf_percent_m],
211 snprintf(buf, sizeof buf, "%m");
212 return !!strcmp (buf, strerror (EINVAL));
214 [nbdkit_cv_func_printf_percent_m=yes],
215 [nbdkit_cv_func_printf_percent_m=no],
218 *-gnu* | gnu*) nbdkit_cv_func_printf_percent_m=yes;;
219 *) nbdkit_cv_func_printf_percent_m="guessing no";;
222 AS_IF([test "x$nbdkit_cv_func_printf_percent_m" = xyes],
223 [AC_DEFINE([HAVE_VFPRINTF_PERCENT_M],[1],
224 [Define to 1 if vfprintf supports %m.])])
227 AC_SEARCH_LIBS([dlopen], [dl dld], [
228 AS_IF([test "x$ac_cv_search_dlopen" != "xnone required"],
229 [DL_LIBS="$ac_cv_search_dlopen"], [DL_LIBS=])
231 ], [AC_MSG_ERROR([unable to find the dlopen() function])
235 dnl Test if <iconv.h> header can build working binaries.
237 dnl On FreeBSD: iconv and libiconv both exist, both can be installed
238 dnl simultaneously, <iconv.h> can exist in two separate places, and
239 dnl if you get the wrong header/library mix everything breaks.
241 dnl On Haiku: libiconv is required to link to iconv_* functions.
243 [AS_HELP_STRING([--without-iconv],
244 [don't try to link against iconv @<:@default=check@:>@])],
247 AS_IF([test "x$with_iconv" != "xno"],[
248 AC_CHECK_HEADER([iconv.h],[
249 AC_MSG_CHECKING([if <iconv.h> can be used to link a program])
256 main (int argc, char *argv[])
258 iconv_t ic = iconv_open ("", "");
271 AM_CONDITIONAL([HAVE_ICONV], [test "x$iconv_working" = "xyes"])
273 dnl Don't use linker script for the server on FreeBSD because
274 dnl FreeBSD's linker is broken. See eg:
275 dnl https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=190851
276 AC_MSG_CHECKING([if we should use a linker script for the server])
278 [freebsd*], [use_linker_script_for_server=no],
279 [use_linker_script_for_server=yes]
281 AC_MSG_RESULT([$use_linker_script_for_server])
282 AM_CONDITIONAL([USE_LINKER_SCRIPT_FOR_SERVER],
283 [test "x$use_linker_script_for_server" = "xyes"])
285 dnl Check if -rdynamic linker flag works.
286 acx_nbdkit_save_LDFLAGS="${LDFLAGS}"
287 LDFLAGS="${LDFLAGS} -rdynamic"
288 AC_MSG_CHECKING([if linker supports -rdynamic])
293 main (int argc, char *argv[])
305 LDFLAGS="${acx_nbdkit_save_LDFLAGS}"
306 AC_SUBST([DL_LDFLAGS])
308 dnl Check for dladdr in -ldl, optional. This is a glibc extension.
310 LIBS="$DL_LIBS $LIBS"
311 AC_CHECK_FUNCS([dladdr])
314 AC_SEARCH_LIBS([getaddrinfo], [network socket])
316 dnl Check for SELinux socket labelling (optional).
317 PKG_CHECK_MODULES([LIBSELINUX], [libselinux], [
318 AC_SUBST([LIBSELINUX_CFLAGS])
319 AC_SUBST([LIBSELINUX_LIBS])
320 AC_DEFINE([HAVE_LIBSELINUX],[1],[libselinux found at compile time.])
322 AC_MSG_WARN([libselinux not found, SELinux socket labelling support will be disabled.])
325 dnl Check for GnuTLS (optional, for TLS support).
326 PKG_CHECK_MODULES([GNUTLS], [gnutls >= 3.3.0], [
327 AC_SUBST([GNUTLS_CFLAGS])
328 AC_SUBST([GNUTLS_LIBS])
329 AC_DEFINE([HAVE_GNUTLS],[1],[gnutls found at compile time.])
331 AC_MSG_WARN([gnutls not found or < 3.3.0, TLS support will be disabled.])
334 AS_IF([test "$GNUTLS_LIBS" != ""],[
335 AC_MSG_CHECKING([for default TLS session priority string])
336 AC_ARG_WITH([tls-priority],
337 [AS_HELP_STRING([--with-tls-priority],
338 [default TLS session priority string @<:@default=NORMAL@:>@])],
339 [tls_priority=$withval],
340 [tls_priority=NORMAL])
341 AC_MSG_RESULT([$tls_priority])
342 AC_DEFINE_UNQUOTED([TLS_PRIORITY],["$tls_priority"],
343 [Default TLS session priority string])
345 # Check for APIs which may not be present.
347 LIBS="$GNUTLS_LIBS $LIBS"
349 gnutls_base64_decode2 \
350 gnutls_certificate_set_known_dh_params \
351 gnutls_session_set_verify_cert])
355 dnl Check for valgrind.
356 AC_CHECK_PROG([VALGRIND],[valgrind],[valgrind],[no])
358 dnl If valgrind headers are available (optional).
359 dnl Since this is only useful for developers, you have to enable
360 dnl it explicitly using --enable-valgrind.
361 AC_ARG_ENABLE([valgrind],
362 [AS_HELP_STRING([--enable-valgrind],
363 [enable Valgrind extensions (for developers)])],
364 [enable_valgrind=yes],
365 [enable_valgrind=no])
366 AS_IF([test "x$enable_valgrind" = "xyes"],[
367 PKG_CHECK_MODULES([VALGRIND], [valgrind], [
368 AC_SUBST([VALGRIND_CFLAGS])
369 AC_SUBST([VALGRIND_LIBS])
370 AC_DEFINE([HAVE_VALGRIND],[1],[Valgrind headers found at compile time])
372 AC_MSG_ERROR([--enable-valgrind given, but Valgrind headers are not available])
377 PKG_CHECK_MODULES([BASH_COMPLETION], [bash-completion >= 2.0], [
379 AC_MSG_CHECKING([for bash-completions directory])
380 m4_ifdef([PKG_CHECK_VAR],[
381 PKG_CHECK_VAR(bashcompdir, [bash-completion], [completionsdir])
383 AS_IF([test -z "$bashcompdir"], [
384 bashcompdir="${sysconfdir}/bash_completion.d"
386 AC_MSG_RESULT([$bashcompdir])
387 AC_SUBST([bashcompdir])
390 AC_MSG_WARN([bash-completion not installed])
392 AM_CONDITIONAL([HAVE_BASH_COMPLETION],[test "x$bash_completion" = "xyes"])
394 dnl Check we have enough to run podwrapper.
395 AC_CHECK_PROG([PERL],[perl],[perl],[no])
396 AS_IF([test "x$PERL" != "xno"],[
397 AC_MSG_CHECKING([if we have perl Pod::Man and Pod::Simple])
398 AS_IF([$PERL -MPod::Man -MPod::Simple -e 1 >&AS_MESSAGE_LOG_FD 2>&1],[
403 AC_MSG_RESULT([$enable_pod])
405 AM_CONDITIONAL([HAVE_POD],
406 [test "x$PERL" != "xno" && test "x$enable_pod" = "xyes"])
408 dnl Define the path to the podwrapper program.
409 PODWRAPPER="$PERL $(pwd)/podwrapper.pl"
410 AC_SUBST([PODWRAPPER])
412 dnl Allow all plugins and filters to be disabled.
413 AC_ARG_ENABLE([plugins],
414 [AS_HELP_STRING([--disable-plugins],
415 [disable all bundled plugins and filters])])
416 AM_CONDITIONAL([HAVE_PLUGINS], [test "x$enable_plugins" != "xno"])
418 dnl Check for Perl, for embedding in the perl plugin.
419 dnl Note that the perl binary is checked above.
420 AC_ARG_ENABLE([perl],
421 [AS_HELP_STRING([--disable-perl], [disable Perl embed plugin])],
424 AS_IF([test "x$PERL" != "xno" && test "x$enable_perl" != "xno"],[
425 dnl Check for Perl archlib.
426 AC_MSG_CHECKING([for Perl embed archlib])
427 PERL_ARCHLIB="$($PERL -MConfig -e 'print $Config{archlib}')"
428 AS_IF([ test -n "$PERL_ARCHLIB" ],[
429 AC_MSG_RESULT([$PERL_ARCHLIB])
431 AC_MSG_NOTICE([Perl embed module disabled])
435 dnl Check for Perl CFLAGS.
436 AC_MSG_CHECKING([for Perl embed CFLAGS])
437 PERL_CFLAGS="$($PERL -MExtUtils::Embed -e 'ccflags')"
438 AS_IF([ test -n "$PERL_CFLAGS" ],[
439 AC_MSG_RESULT([$PERL_CFLAGS])
441 AC_MSG_NOTICE([Perl embed module disabled])
445 dnl Check for Perl LDOPTS.
446 AC_MSG_CHECKING([for Perl embed LDOPTS])
447 PERL_LDOPTS="$($PERL -MExtUtils::Embed -e 'ldopts')"
448 AC_MSG_RESULT([$PERL_LDOPTS])
450 dnl XXX Could check these actually work.
452 AM_CONDITIONAL([HAVE_PERL],[test "x$enable_perl" != "xno" && test "x$PERL" != "xno"])
453 AC_SUBST([PERL_ARCHLIB])
454 AC_SUBST([PERL_CFLAGS])
455 AC_SUBST([PERL_LDOPTS])
457 dnl Check for Python, for embedding in the python plugin.
458 AC_CHECK_PROG([PYTHON],[python],[python],[no])
459 AC_ARG_ENABLE([python],
460 [AS_HELP_STRING([--disable-python], [disable Python embed plugin])],
463 AS_IF([test "x$PYTHON" != "xno" && test "x$enable_python" != "xno"],[
464 AC_MSG_CHECKING([version of $PYTHON])
465 PYTHON_VERSION_MAJOR=`$PYTHON -c "import sys; print (sys.version_info@<:@0@:>@)"`
466 PYTHON_VERSION_MINOR=`$PYTHON -c "import sys; print (sys.version_info@<:@1@:>@)"`
467 PYTHON_VERSION="$PYTHON_VERSION_MAJOR.$PYTHON_VERSION_MINOR"
468 AS_IF([test -n "$PYTHON_VERSION"],[
469 AC_MSG_RESULT([$PYTHON_VERSION])
471 AC_MSG_NOTICE([Python embed module disabled])
475 dnl Check for Python CFLAGS, libraries.
476 dnl On Debian: python-X.Y.pc
477 PKG_CHECK_MODULES([PYTHON], [python-"$PYTHON_VERSION"], [
478 AC_SUBST([PYTHON_CFLAGS])
479 AC_SUBST([PYTHON_LIBS])
480 AC_SUBST([PYTHON_VERSION])
481 AC_DEFINE([HAVE_PYTHON],[1],[Python library found at compile time])
483 dnl On Fedora: python.pc
484 PKG_CHECK_MODULES([PYTHON], [python], [
485 AC_SUBST([PYTHON_CFLAGS])
486 AC_SUBST([PYTHON_LIBS])
487 AC_SUBST([PYTHON_VERSION])
488 AC_DEFINE([HAVE_PYTHON],[1],[Python library found at compile time])
490 AC_MSG_WARN([python $PYTHON_VERSION not found])
495 dnl Check for various functions needed by the bindings.
498 PYTHON_BLDLIBRARY=`$PYTHON -c "import distutils.sysconfig; \
499 print (distutils.sysconfig.get_config_var('BLDLIBRARY'))"`
500 AC_CHECK_LIB([c],[PyString_FromString],
501 [AC_DEFINE([HAVE_PYSTRING_FROMSTRING],1,
502 [Found PyString_FromString in libpython.])],
503 [],[$PYTHON_BLDLIBRARY])
504 AC_CHECK_LIB([c],[PyString_AsString],
505 [AC_DEFINE([HAVE_PYSTRING_ASSTRING],1,
506 [Found PyString_AsString in libpython.])],
507 [],[$PYTHON_BLDLIBRARY])
508 AC_CHECK_LIB([c],[PyUnicode_AsUTF8],
509 [AC_DEFINE([HAVE_PYUNICODE_ASUTF8],1,
510 [Found PyUnicode_AsUTF8 in libpython.])],
511 [],[$PYTHON_BLDLIBRARY])
516 AM_CONDITIONAL([HAVE_PYTHON],[test "x$enable_python" != "xno" && test "x$PYTHON" != "xno"])
517 AC_SUBST([PYTHON_CFLAGS])
518 AC_SUBST([PYTHON_LIBS])
519 AC_SUBST([PYTHON_LDFLAGS])
521 dnl For the OCaml plugin, you can set OCAMLOPTFLAGS before running
522 dnl ./configure to specify any extra flags you want to pass to
524 AC_SUBST([OCAMLOPTFLAGS])
526 dnl Check for OCaml, for embedding in the ocaml plugin.
528 AC_ARG_ENABLE([ocaml],
529 [AS_HELP_STRING([--disable-ocaml], [disable OCaml embed plugin])],
532 AS_IF([test "x$OCAMLOPT" != "xno" && test "x$enable_ocaml" != "xno"],[
533 dnl Check OCaml can create a shared library (see README for details).
534 AC_MSG_CHECKING([if $OCAMLOPT can create a shared library])
535 echo 'print_endline "test"' > conftest.ml
536 AS_IF([$OCAMLOPT $OCAMLOPTFLAGS -output-obj -runtime-variant _pic -o conftest.so conftest.ml >&AS_MESSAGE_LOG_FD 2>&1],[
538 ocaml_link_shared=yes
542 rm -f conftest.ml conftest.cmi conftest.cmx conftest.so conftest.o
544 AM_CONDITIONAL([HAVE_OCAML],[test "x$OCAMLOPT" != "xno" &&
545 test "x$ocaml_link_shared" = "xyes"])
547 dnl For developing plugins in Rust, optional.
548 AC_CHECK_PROG([CARGO],[cargo],[cargo],[no])
549 AC_ARG_ENABLE([rust],
550 [AS_HELP_STRING([--disable-rust], [disable Rust plugin])],
553 AM_CONDITIONAL([HAVE_RUST],
554 [test "x$CARGO" != "xno" && test "x$enable_rust" != "xno"])
556 dnl Check for Ruby, for embedding in the Ruby plugin.
557 AC_CHECK_PROG([RUBY],[ruby],[ruby],[no])
558 AC_ARG_ENABLE([ruby],
559 [AS_HELP_STRING([--disable-ruby], [disable Ruby plugin])],
562 AS_IF([test "x$RUBY" != "xno" && test "x$enable_ruby" != "xno"],[
563 PKG_CHECK_MODULES([RUBY], [ruby], [
564 AC_SUBST([RUBY_CFLAGS])
565 AC_SUBST([RUBY_LIBS])
567 AC_MSG_WARN([ruby not found])
571 AM_CONDITIONAL([HAVE_RUBY],[test "x$RUBY" != "xno" &&
572 test "x$enable_ruby" = "xyes"])
574 dnl Check for Tcl, for embedding in the Tcl plugin.
576 [AS_HELP_STRING([--disable-tcl], [disable Tcl plugin])],
579 AS_IF([test "x$enable_tcl" != "xno"],[
580 PKG_CHECK_MODULES([TCL], [tcl], [
581 AC_SUBST([TCL_CFLAGS])
584 AC_MSG_WARN([Tcl not found])
588 AM_CONDITIONAL([HAVE_TCL],[test "x$enable_tcl" = "xyes"])
590 dnl Check for Lua, for embedding in the Lua plugin.
592 [AS_HELP_STRING([--disable-lua], [disable Lua plugin])],
595 AS_IF([test "x$enable_lua" != "xno"],[
596 PKG_CHECK_MODULES([LUA], [lua], [
597 AC_SUBST([LUA_CFLAGS])
600 dnl Lua 5.1 used by RHEL 7 does not have lua_isinteger.
602 LIBS="$LUA_LIBS $LIBS"
603 AC_CHECK_FUNCS([lua_isinteger])
606 AC_MSG_WARN([Lua not found])
610 AM_CONDITIONAL([HAVE_LUA],[test "x$enable_lua" = "xyes"])
612 dnl Check for curl (only if you want to compile the curl plugin).
614 [AS_HELP_STRING([--without-curl],
615 [disable curl plugin @<:@default=check@:>@])],
618 AS_IF([test "$with_curl" != "no"],[
619 PKG_CHECK_MODULES([CURL], [libcurl],[
620 AC_SUBST([CURL_CFLAGS])
621 AC_SUBST([CURL_LIBS])
622 AC_DEFINE([HAVE_CURL],[1],[curl found at compile time.])
623 AC_CHECK_DECL([CURLOPT_UNIX_SOCKET_PATH], [
624 AC_DEFINE([HAVE_CURLOPT_UNIX_SOCKET_PATH],[1],
625 [CURLOPT_UNIX_SOCKET_PATH found at compile time.])
626 ], [], [#include <curl/curl.h>])
628 [AC_MSG_WARN([curl not found, curl plugin will be disabled])])
630 AM_CONDITIONAL([HAVE_CURL],[test "x$CURL_LIBS" != "x"])
632 dnl Check for libssh (only if you want to compile the ssh plugin).
634 [AS_HELP_STRING([--without-ssh],
635 [disable ssh plugin @<:@default=check@:>@])],
638 AS_IF([test "$with_ssh" != "no"],[
639 PKG_CHECK_MODULES([SSH], [libssh >= 0.8.0],[
640 AC_SUBST([SSH_CFLAGS])
643 [AC_MSG_WARN([libssh not found, ssh plugin will be disabled])])
645 AM_CONDITIONAL([HAVE_SSH],[test "x$SSH_LIBS" != "x"])
647 dnl Check for genisoimage or mkisofs
648 dnl (only if you want to compile the iso plugin).
651 [AS_HELP_STRING([--without-iso],
652 [disable iso plugin @<:@default=check@:>@])],
655 AS_IF([test "$with_iso" != "no"],[
656 AC_CHECK_PROG([GENISOIMAGE],[genisoimage],[genisoimage],[no])
657 AC_CHECK_PROG([MKISOFS],[mkisofs],[mkisofs],[no])
658 AS_IF([test "x$GENISOIMAGE" != "xno"],[
659 ISOPROG="$GENISOIMAGE"
661 AS_IF([test "x$MKISOFS" != "xno"],[
665 AS_IF([test "x$ISOPROG" != "xno"],[
666 AC_DEFINE_UNQUOTED([ISOPROG],["$ISOPROG"],
667 [Program used by iso plugin to make ISOs.])
671 AM_CONDITIONAL([HAVE_ISO],[test "x$ISOPROG" != "xno"])
673 dnl Check for libvirt (only if you want to compile the libvirt plugin).
674 AC_ARG_WITH([libvirt],
675 [AS_HELP_STRING([--without-libvirt],
676 [disable libvirt plugin @<:@default=check@:>@])],
678 [with_libvirt=check])
679 AS_IF([test "$with_libvirt" != "no"],[
680 PKG_CHECK_MODULES([LIBVIRT], [libvirt],[
681 AC_SUBST([LIBVIRT_CFLAGS])
682 AC_SUBST([LIBVIRT_LIBS])
683 AC_DEFINE([HAVE_LIBVIRT],[1],[libvirt found at compile time.])
685 [AC_MSG_WARN([libvirt not found, libvirt plugin will be disabled])])
687 AM_CONDITIONAL([HAVE_LIBVIRT],[test "x$LIBVIRT_LIBS" != "x"])
689 dnl Check for zlib (only if you want to compile the gzip plugin).
691 [AS_HELP_STRING([--without-zlib],
692 [disable gzip plugin @<:@default=check@:>@])],
695 AS_IF([test "$with_zlib" != "no"],[
696 PKG_CHECK_MODULES([ZLIB], [zlib >= 1.2.3.5],[
697 AC_SUBST([ZLIB_CFLAGS])
698 AC_SUBST([ZLIB_LIBS])
699 AC_DEFINE([HAVE_ZLIB],[1],[zlib found at compile time.])
701 [AC_MSG_WARN([zlib >= 1.2.3.5 not found, gzip plugin will be disabled])])
703 AM_CONDITIONAL([HAVE_ZLIB],[test "x$ZLIB_LIBS" != "x"])
705 dnl Check for liblzma (only if you want to compile the xz filter).
706 AC_ARG_WITH([liblzma],
707 [AS_HELP_STRING([--without-liblzma],
708 [disable xz filter @<:@default=check@:>@])],
710 [with_liblzma=check])
711 AS_IF([test "$with_liblzma" != "no"],[
712 PKG_CHECK_MODULES([LIBLZMA], [liblzma],[
713 AC_SUBST([LIBLZMA_CFLAGS])
714 AC_SUBST([LIBLZMA_LIBS])
715 AC_DEFINE([HAVE_LIBLZMA],[1],[liblzma found at compile time.])
717 [AC_MSG_WARN([liblzma not found, xz filter will be disabled])])
719 AM_CONDITIONAL([HAVE_LIBLZMA],[test "x$LIBLZMA_LIBS" != "x"])
721 dnl Check for libguestfs (only for the guestfs plugin and the test suite).
722 AC_ARG_WITH([libguestfs],
723 [AS_HELP_STRING([--without-libguestfs],
724 [disable guestfs plugin and tests @<:@default=check@:>@])],
726 [with_libguestfs=check])
727 AS_IF([test "$with_libguestfs" != "no"],[
728 PKG_CHECK_MODULES([LIBGUESTFS], [libguestfs],[
729 # Although the library was found, we want to make sure it supports nbd
730 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
733 #ifndef GUESTFS_ADD_DRIVE_OPTS_PROTOCOL
737 AC_SUBST([LIBGUESTFS_CFLAGS])
738 AC_SUBST([LIBGUESTFS_LIBS])
739 AC_DEFINE([HAVE_LIBGUESTFS],[1],[libguestfs found at compile time.])
742 AC_MSG_WARN([libguestfs too old, guestfs plugin and tests will be disabled])])
744 [AC_MSG_WARN([libguestfs not found, guestfs plugin and tests will be disabled])])
746 AM_CONDITIONAL([HAVE_LIBGUESTFS],[test "x$LIBGUESTFS_LIBS" != "x"])
748 dnl Check for guestfish (only needed for some of the tests).
749 AC_CHECK_PROG([GUESTFISH], [guestfish], [guestfish], [no])
750 AM_CONDITIONAL([HAVE_GUESTFISH], [test "x$GUESTFISH" != "xno"])
752 dnl Check for ext2fs and com_err, for the ext2 plugin.
754 [AS_HELP_STRING([--without-ext2],
755 [disable ext2 plugin @<:@default=check@:>@])],
758 AS_IF([test "$with_ext2" != "no"], [
759 PKG_CHECK_MODULES([EXT2FS], [ext2fs], [
760 AC_SUBST([EXT2FS_CFLAGS])
761 AC_SUBST([EXT2FS_LIBS])
762 AC_DEFINE([HAVE_EXT2FS],[1],[ext2fs found at compile time.])
764 [AC_MSG_WARN([ext2fs not found, ext2 plugin will be disabled])])
765 PKG_CHECK_MODULES([COM_ERR], [com_err], [
766 AC_SUBST([COM_ERR_CFLAGS])
767 AC_SUBST([COM_ERR_LIBS])
768 AC_DEFINE([HAVE_COM_ERR],[1],[com_err found at compile time.])
770 [AC_MSG_WARN([com_err not found, ext2 plugin will be disabled])])
772 AM_CONDITIONAL([HAVE_EXT2],
773 [test "x$EXT2FS_LIBS" != "x" && test "x$COM_ERR_LIBS" != "x"])
775 dnl Check if the user wants to disable VDDK support.
776 dnl See plugins/vddk/README.VDDK.
777 AC_ARG_ENABLE([vddk],
778 [AS_HELP_STRING([--disable-vddk],
779 [disable VMware VDDK plugin])],
782 AM_CONDITIONAL([HAVE_VDDK], [test "x$enable_vddk" = "xyes"])
784 dnl List of plugins and filters.
824 plugins="$(echo $(printf %s\\n $lang_plugins $non_lang_plugins | sort -u))"
842 AC_SUBST([lang_plugins])
843 AC_SUBST([non_lang_plugins])
846 dnl Produce output files.
847 AC_CONFIG_HEADERS([config.h])
848 AC_CONFIG_FILES([podwrapper.pl],
849 [chmod +x,-w podwrapper.pl])
850 AC_CONFIG_FILES([Makefile
852 common/bitmap/Makefile
854 common/include/Makefile
855 common/protocol/Makefile
856 common/regions/Makefile
857 common/sparse/Makefile
858 common/utils/Makefile
862 plugins/curl/Makefile
863 plugins/data/Makefile
864 plugins/example1/Makefile
865 plugins/example2/Makefile
866 plugins/example3/Makefile
867 plugins/example4/Makefile
868 plugins/ext2/Makefile
869 plugins/file/Makefile
870 plugins/floppy/Makefile
871 plugins/full/Makefile
872 plugins/guestfs/Makefile
873 plugins/gzip/Makefile
875 plugins/libvirt/Makefile
876 plugins/linuxdisk/Makefile
878 plugins/memory/Makefile
880 plugins/null/Makefile
881 plugins/ocaml/Makefile
882 plugins/partitioning/Makefile
883 plugins/pattern/Makefile
884 plugins/perl/Makefile
885 plugins/python/Makefile
886 plugins/random/Makefile
887 plugins/ruby/Makefile
888 plugins/rust/Cargo.toml
889 plugins/rust/Makefile
892 plugins/split/Makefile
893 plugins/streaming/Makefile
896 plugins/vddk/Makefile
897 plugins/zero/Makefile
899 filters/blocksize/Makefile
900 filters/cache/Makefile
902 filters/delay/Makefile
903 filters/error/Makefile
906 filters/nozero/Makefile
907 filters/offset/Makefile
908 filters/partition/Makefile
909 filters/rate/Makefile
910 filters/readahead/Makefile
911 filters/truncate/Makefile
925 echo "----------------------------------------------------------------------"
926 echo "Thank you for downloading $PACKAGE_STRING"
928 echo "This is how we have configured the optional components for you today:"
935 if $@; then echo "yes"; else echo "no"; fi
938 echo "Optional server features:"
940 feature "bash-completion ........................ " \
941 test "x$HAVE_BASH_COMPLETION_TRUE" = "x"
942 feature "manual pages ........................... " \
943 test "x$HAVE_POD_TRUE" = "x"
944 feature "SELinux ................................ " \
945 test "x$LIBSELINUX_LIBS" != "x"
946 feature "TLS .................................... " \
947 test "x$GNUTLS_LIBS" != "x"
950 echo "Optional plugins:"
952 feature "curl ................................... " \
953 test "x$HAVE_CURL_TRUE" = "x"
954 feature "example4 ............................... " \
955 test "x$HAVE_PERL_TRUE" = "x"
956 feature "ext2 ................................... " \
957 test "x$HAVE_EXT2_TRUE" = "x"
958 feature "floppy ................................. " \
959 test "x$HAVE_ICONV_TRUE" = "x"
960 feature "guestfs ................................ " \
961 test "x$HAVE_LIBGUESTFS_TRUE" = "x"
962 feature "gzip ................................... " \
963 test "x$HAVE_ZLIB_TRUE" = "x"
964 feature "iso .................................... " \
965 test "x$HAVE_ISO_TRUE" = "x"
966 feature "libvirt ................................ " \
967 test "x$HAVE_LIBVIRT_TRUE" = "x"
968 feature "ssh .................................... " \
969 test "x$HAVE_SSH_TRUE" = "x"
970 feature "tar .................................... " \
971 test "x$HAVE_PERL_TRUE" = "x"
972 feature "vddk ................................... " \
973 test "x$HAVE_VDDK_TRUE" = "x"
979 feature "lua .................................... " \
980 test "x$HAVE_LUA_TRUE" = "x"
981 feature "ocaml .................................. " \
982 test "x$HAVE_OCAML_TRUE" = "x"
983 feature "perl ................................... " \
984 test "x$HAVE_PERL_TRUE" = "x"
985 feature "python ................................. " \
986 test "x$HAVE_PYTHON_TRUE" = "x"
987 feature "ruby ................................... " \
988 test "x$HAVE_RUBY_TRUE" = "x"
989 feature "rust ................................... " \
990 test "x$HAVE_RUST_TRUE" = "x"
991 feature "tcl .................................... " \
992 test "x$HAVE_TCL_TRUE" = "x"
996 echo "Optional filters:"
998 feature "xz ..................................... " \
999 test "x$HAVE_LIBLZMA_TRUE" = "x"
1002 echo "If any optional component is configured ‘no’ when you expected ‘yes’"
1003 echo "then you should check the preceding messages and README."
1005 echo "Please report bugs back to the mailing list:"
1006 echo "http://www.redhat.com/mailman/listinfo/libguestfs"
1008 echo "Next you should type 'make' to build the package,"
1009 echo "then 'make check' to run the tests."