2 # Copyright (C) 2013-2022 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], [33])
34 m4_define([NBDKIT_VERSION_MICRO], [2])
36 NBDKIT_VERSION_MAJOR.NBDKIT_VERSION_MINOR.NBDKIT_VERSION_MICRO)
37 AC_CONFIG_MACRO_DIR([m4])
39 dnl This must be used very early else you will get
40 dnl "warning: AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS"
41 m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],[],
42 [m4_define([AC_USE_SYSTEM_EXTENSIONS],[])])
43 AC_USE_SYSTEM_EXTENSIONS
45 dnl NB: Do not [quote] this parameter.
46 AM_INIT_AUTOMAKE(foreign)
49 dnl Extra string, a freeform string defined by downstream packagers.
50 dnl eg. If you are packaging nbdkit for Linux distro X 1.1, you could
51 dnl ./configure --with-extra="X release 1.1"
53 [AS_HELP_STRING([--with-extra=...],
54 [extra version information (for use by packagers)])],
55 [NBDKIT_VERSION_EXTRA="$withval"],
56 [NBDKIT_VERSION_EXTRA=]
58 AC_DEFINE_UNQUOTED([NBDKIT_VERSION_EXTRA], ["$NBDKIT_VERSION_EXTRA"],
59 [Extra version information (for use by packagers)])
61 AC_MSG_NOTICE([nbdkit version NBDKIT_VERSION_MAJOR.NBDKIT_VERSION_MINOR.NBDKIT_VERSION_MICRO ($NBDKIT_VERSION_EXTRA)])
63 dnl List of plugins and filters.
109 plugins="$(echo $(printf %s\\n $lang_plugins $non_lang_plugins | sort -u))"
154 AC_SUBST([lang_plugins])
155 AC_SUBST([non_lang_plugins])
158 dnl Some very basic tools.
162 dnl Check for basic C environment.
169 test "x$U" != "x" && AC_MSG_ERROR([Compiler not ANSI compliant])
173 dnl Define the host CPU architecture (defines 'host_cpu').
175 AC_DEFINE_UNQUOTED([host_cpu],["$host_cpu"],[Host architecture.])
177 dnl Define 'host_os'.
178 AC_DEFINE_UNQUOTED([host_os],["$host_os"],[Host operating system.])
180 dnl Defines WORDS_BIGENDIAN on big endian platforms.
183 dnl These are defined in <unistd.h> which is included by
184 dnl AC_DEFAULT_INCLUDES.
185 AC_CHECK_SIZEOF([pid_t])
186 AC_CHECK_SIZEOF([uid_t])
187 AC_CHECK_SIZEOF([gid_t])
189 dnl Check for C++ (optional, we just use this to test the header
190 dnl can be included from C++ code).
193 dnl The C++ compiler test is pretty useless because even if it fails
194 dnl it sets CXX=g++. So test the compiler actually works.
195 AC_MSG_CHECKING([if the C++ compiler really really works])
196 AS_IF([$CXX --version >&AS_MESSAGE_LOG_FD 2>&1],[have_cxx=yes],[have_cxx=no])
197 AC_MSG_RESULT([$have_cxx])
198 AM_CONDITIONAL([HAVE_CXX], [test "$have_cxx" = "yes"])
200 AC_ARG_ENABLE([gcc-warnings],
201 [AS_HELP_STRING([--enable-gcc-warnings],
202 [turn on lots of GCC warnings (for developers)])],
205 *) AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;;
207 gcc_warnings=$enableval],
210 if test "x$gcc_warnings" = "xyes"; then
211 WARNINGS_CFLAGS="-Wall -Wshadow -Wvla -Werror"
212 AC_SUBST([WARNINGS_CFLAGS])
215 dnl Check if the compiler supports -std=c90 flag. This is only used
216 dnl during a test. OpenBSD GCC does not support this flag so we skip
218 AC_MSG_CHECKING([if the compiler supports -std=c90 for ANSI C test])
220 CFLAGS="$CFLAGS -std=c90"
221 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])],
222 [supports_std_c90=yes],
223 [supports_std_c90=no])
225 AC_MSG_RESULT([$supports_std_c90])
226 AM_CONDITIONAL([CAN_TEST_ANSI_C], [test "x$supports_std_c90" = "xyes"])
228 dnl Check for __builtin_*_overflow. We need the dummy parameters
229 dnl else detection doesn't work correctly for some reason.
230 AC_CHECK_DECLS([__builtin_add_overflow(int, int, int *),
231 __builtin_mul_overflow(int, int, int *)],
234 dnl On Haiku we must use BSD-compatibility headers to get the endian
236 AC_MSG_CHECKING(whether OS-dependent include paths are required)
238 [haiku*], [CFLAGS="$CFLAGS -I`findpaths -p /system B_FIND_PATH_HEADERS_DIRECTORY`/bsd"; AC_MSG_RESULT(yes)],
242 dnl On Linux /tmp is often tmpfs which is not large enough, so use /var/tmp.
243 dnl But Haiku only has /tmp.
244 AC_MSG_CHECKING([for temporary directory for large files])
246 [haiku*], [LARGE_TMPDIR=/tmp],
247 [LARGE_TMPDIR=/var/tmp]
249 AC_MSG_RESULT([$LARGE_TMPDIR])
250 AC_DEFINE_UNQUOTED([LARGE_TMPDIR],["$LARGE_TMPDIR"],
251 [Temporary directory for large files])
253 dnl Check if libc has program_invocation_short_name.
254 AC_CHECK_DECLS([program_invocation_short_name], [], [], [#include <errno.h>])
258 dnl Check if __attribute__((cleanup(...))) works.
259 dnl Set -Werror, otherwise gcc will only emit a warning for attributes
260 dnl that it doesn't understand.
261 acx_nbdkit_save_CFLAGS="${CFLAGS}"
262 CFLAGS="${CFLAGS} -Werror"
263 AC_MSG_CHECKING([if __attribute__((cleanup(...))) works with this compiler])
278 __attribute__((cleanup(freep))) char *ptr = malloc (100);
283 main (int argc, char *argv[])
294 ['__attribute__((cleanup(...)))' does not work.
296 You may not be using a sufficiently recent version of GCC or CLANG, or
297 you may be using a C compiler which does not support this attribute,
298 or the configure test may be wrong.
300 This code requires the attribute to work for proper locking between threads.])])
301 CFLAGS="${acx_nbdkit_save_CFLAGS}"
303 dnl Check for __auto_type (GCC extension).
304 AC_MSG_CHECKING([if __auto_type is available in this compiler])
316 AC_DEFINE([HAVE_AUTO_TYPE],[1],[__auto_type is available])
322 dnl 'environ' is not always declared in public header files:
323 dnl Linux => <unistd.h> Haiku => <stdlib.h>
324 dnl FreeBSD & OpenBSD => not declared
325 dnl On platforms where it's not declared we must add an extern decl.
326 AC_MSG_CHECKING([if environ is declared in header files])
334 const char **env = environ;
335 return env ? 1 : 0; // this just forces env to be used
340 AC_DEFINE([HAVE_ENVIRON_DECL],[1],[environ is declared in headers])
346 dnl Check for other headers, all optional.
375 AC_CHECK_HEADERS([linux/vm_sockets.h], [], [], [#include <sys/socket.h>])
377 dnl Check for functions in libc, all optional.
397 dnl Check for structs and members.
398 AC_CHECK_MEMBERS([struct dirent.d_type], [], [], [[#include <dirent.h>]])
399 AC_CHECK_MEMBERS([struct ucred.uid], [], [],
401 #ifdef HAVE_SYS_SOCKET_H
402 #include <sys/socket.h>
404 #ifdef HAVE_SYS_UCRED_H
405 #include <sys/ucred.h>
408 AC_CHECK_MEMBERS([struct sockpeercred.uid], [], [],
410 #ifdef HAVE_SYS_SOCKET_H
411 #include <sys/socket.h>
415 dnl Replacement functions that we provide for some platforms.
416 AC_CONFIG_LIBOBJ_DIR([common/replacements])
420 get_current_dir_name \
435 dnl Check whether printf("%m") works
436 AC_CACHE_CHECK([whether the printf family supports %m],
437 [nbdkit_cv_func_printf_percent_m],
446 snprintf(buf, sizeof buf, "%m");
447 return !!strcmp (buf, strerror (EINVAL));
449 [nbdkit_cv_func_printf_percent_m=yes],
450 [nbdkit_cv_func_printf_percent_m=no],
453 *-gnu* | gnu*) nbdkit_cv_func_printf_percent_m=yes;;
454 *) nbdkit_cv_func_printf_percent_m="guessing no";;
457 AS_IF([test "x$nbdkit_cv_func_printf_percent_m" = xyes],
458 [AC_DEFINE([HAVE_VFPRINTF_PERCENT_M],[1],
459 [Define to 1 if vfprintf supports %m.])])
462 AC_SEARCH_LIBS([dlsym], [dl dld], [
463 AS_IF([test "x$ac_cv_search_dlsym" != "xnone required"],
464 [DL_LIBS="$ac_cv_search_dlsym"], [DL_LIBS=])
466 ], [AC_MSG_ERROR([unable to find the dlsym() function])
470 dnl Test if <iconv.h> header can build working binaries.
472 dnl On FreeBSD: iconv and libiconv both exist, both can be installed
473 dnl simultaneously, <iconv.h> can exist in two separate places, and
474 dnl if you get the wrong header/library mix everything breaks.
476 dnl On Haiku: libiconv is required to link to iconv_* functions.
478 [AS_HELP_STRING([--without-iconv],
479 [don't try to link against iconv @<:@default=check@:>@])],
482 AS_IF([test "x$with_iconv" != "xno"],[
483 AC_CHECK_HEADER([iconv.h],[
484 AC_MSG_CHECKING([if <iconv.h> can be used to link a program])
491 main (int argc, char *argv[])
493 iconv_t ic = iconv_open ("", "");
506 AM_CONDITIONAL([HAVE_ICONV], [test "x$iconv_working" = "xyes"])
508 use_linker_script=yes
510 dnl Don't use linker script on FreeBSD because FreeBSD's linker is
512 dnl https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=190851
513 dnl Also on macOS (darwin) which fails with:
514 dnl ld: unknown option: --version-script=./nbdkit.syms
515 dnl clang: error: linker command failed with exit code 1
516 AC_MSG_CHECKING([if we should disable the linker script (FreeBSD, macOS)])
518 [freebsd*|darwin*], [
522 [AC_MSG_RESULT([no])]
525 dnl Check if -rdynamic linker flag works.
526 acx_nbdkit_save_LDFLAGS="${LDFLAGS}"
527 LDFLAGS="${LDFLAGS} -rdynamic"
528 AC_MSG_CHECKING([if linker supports -rdynamic])
533 main (int argc, char *argv[])
545 LDFLAGS="${acx_nbdkit_save_LDFLAGS}"
546 AC_SUBST([DL_LDFLAGS])
548 dnl Check for dladdr in -ldl, optional. This is a glibc extension.
550 LIBS="$DL_LIBS $LIBS"
551 AC_CHECK_FUNCS([dladdr])
555 AC_MSG_CHECKING([if the target is Windows])
559 LIBS="$LIBS -lmsvcrt -lkernel32 -luser32 -lws2_32"
560 NO_UNDEFINED_ON_WINDOWS="-no-undefined"
561 IMPORT_LIBRARY_ON_WINDOWS='-Wl,-L$(top_builddir)/server -Wl,-lnbdkit'
563 DIR_SEPARATOR_STR='\\'
569 AC_MSG_RESULT([$is_windows])
570 AC_SUBST([NO_UNDEFINED_ON_WINDOWS])
571 AC_SUBST([IMPORT_LIBRARY_ON_WINDOWS])
573 AC_DEFINE_UNQUOTED([SOEXT],["$SOEXT"],[Extension used for shared objects/DLLs.])
574 AC_DEFINE_UNQUOTED([EXEEXT],["$EXEEXT"],[Extension used for executables.])
575 AC_DEFINE_UNQUOTED([DIR_SEPARATOR_STR],["$DIR_SEPARATOR_STR"],
576 [String that separates path elements.])
577 AM_CONDITIONAL([IS_WINDOWS],[test "x$is_windows" = "xyes"])
579 AS_IF([test "x$is_windows" = "xyes"],[
580 dnl For Windows, look for the mc/windmc utility.
581 dnl XXX Do we need to check for mc.exe as well?
582 AC_CHECK_TOOLS([MC],[windmc mc],[no])
583 AS_IF([test "x$MC" = "xno"],
584 [AC_MSG_ERROR([mc/windmc utility must be available when compiling for Windows])])
586 dnl On Windows look for dlltool.
587 AC_CHECK_TOOLS([DLLTOOL],[dlltool],[no])
588 AS_IF([test "x$DLLTOOL" = "xno"],
589 [AC_MSG_ERROR([dlltool utility must be available when compiling for Windows])])
592 AC_SEARCH_LIBS([getaddrinfo], [network socket])
594 dnl Does this platform require libc_malloc_debug.so.0 (glibc >= 2.34)?
595 AC_MSG_CHECKING([if this is glibc >= 2.34])
596 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
598 #if !defined(__GLIBC__) || __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 34)
599 #error "not glibc 2.34"
601 ]])], [is_glibc_234=yes], [is_glibc_234=no]
603 AC_MSG_RESULT([$is_glibc_234])
604 AM_CONDITIONAL([HAVE_GLIBC_234], [test "x$is_glibc_234" = "xyes"])
606 dnl Check for SELinux socket labelling (optional).
607 PKG_CHECK_MODULES([LIBSELINUX], [libselinux], [
608 AC_SUBST([LIBSELINUX_CFLAGS])
609 AC_SUBST([LIBSELINUX_LIBS])
610 AC_DEFINE([HAVE_LIBSELINUX],[1],[libselinux found at compile time.])
612 AC_MSG_WARN([libselinux not found, SELinux socket labelling support will be disabled.])
615 dnl Check for GnuTLS (optional, for TLS support).
616 PKG_CHECK_MODULES([GNUTLS], [gnutls >= 3.3.0], [
617 AC_SUBST([GNUTLS_CFLAGS])
618 AC_SUBST([GNUTLS_LIBS])
619 AC_DEFINE([HAVE_GNUTLS],[1],[gnutls found at compile time.])
621 AC_MSG_WARN([gnutls not found or < 3.3.0, TLS support will be disabled.])
623 AM_CONDITIONAL([HAVE_GNUTLS], [test "x$GNUTLS_LIBS" != "x"])
625 AS_IF([test "x$GNUTLS_LIBS" != "x"],[
626 AC_MSG_CHECKING([for default TLS session priority string])
627 AC_ARG_WITH([tls-priority],
628 [AS_HELP_STRING([--with-tls-priority=...],
629 [default TLS session priority string @<:@default=NORMAL@:>@])],
630 [tls_priority=$withval],
631 [tls_priority=NORMAL])
632 AC_MSG_RESULT([$tls_priority])
633 AC_DEFINE_UNQUOTED([TLS_PRIORITY],["$tls_priority"],
634 [Default TLS session priority string])
636 # Check for APIs which may not be present.
638 LIBS="$GNUTLS_LIBS $LIBS"
640 gnutls_base64_decode2 \
641 gnutls_certificate_set_known_dh_params \
643 gnutls_group_get_name \
645 gnutls_session_set_verify_cert \
646 gnutls_srp_server_get_username \
647 gnutls_transport_is_ktls_enabled \
649 AC_CHECK_HEADERS([gnutls/socket.h])
652 dnl macOS has its own program called certtool and packages the
653 dnl GnuTLS tool as "gnutls-certtool".
654 AC_CHECK_PROGS([CERTTOOL],[gnutls-certtool certtool],[certtool])
656 AM_CONDITIONAL([HAVE_GNUTLS_PBKDF2],
657 [test "x$GNUTLS_LIBS" != "x" && test "x$ac_cv_func_gnutls_pbkdf2" = xyes])
659 dnl Check for some commands used by the tests which should be the GNU
660 dnl coreutils variants. On macOS these are prefixed with 'g' or 'gnu'.
661 AC_CHECK_PROGS([CUT],[gnucut cut],[cut])
662 AC_CHECK_PROGS([STAT],[gstat stat],[stat])
663 AC_CHECK_PROGS([TRUNCATE],[gtruncate truncate],[truncate])
665 AC_ARG_ENABLE([linuxdisk],
666 [AS_HELP_STRING([--disable-linuxdisk],
667 [disable linuxdisk plugin @<:@default=check@:>@])],
669 [enable_linuxdisk=check])
670 dnl Check for mke2fs -d (used by linuxdisk plugin). There are two
671 dnl possible outcomes that we care about: (1) We have mke2fs and
672 dnl it supports the -d option. (2) We either don't have mke2fs
673 dnl or it's too old to support the -d option (eg. on RHEL 7).
675 AS_IF([test "$enable_linuxdisk" != "no"], [
676 AC_MSG_CHECKING([for mke2fs supporting the -d option])
677 AS_IF([mke2fs -V >/dev/null 2>&1], [
678 AS_IF([LANG=C mke2fs -d 2>&1 | grep -sq "option requires an argument"], [
682 AC_MSG_RESULT([$mke2fs_with_d])
684 AM_CONDITIONAL([HAVE_MKE2FS_WITH_D],[test "x$mke2fs_with_d" = "xyes"])
686 dnl Check for valgrind.
687 AC_CHECK_PROG([VALGRIND],[valgrind],[valgrind],[no])
689 dnl If valgrind headers are available (optional).
690 dnl Although the runtime check adds only a trivial amount of code, you can
691 dnl avoid it with explicit --disable-valgrind.
692 AC_ARG_ENABLE([valgrind],
693 [AS_HELP_STRING([--disable-valgrind],
694 [disable Valgrind probe])],
696 [enable_valgrind=check])
697 AS_IF([test "x$enable_valgrind" != "xno"],[
698 PKG_CHECK_MODULES([VALGRIND], [valgrind], [
699 AC_SUBST([VALGRIND_CFLAGS])
700 AC_SUBST([VALGRIND_LIBS])
701 AC_DEFINE([HAVE_VALGRIND],[1],[Valgrind headers found at compile time])
703 AS_IF([test "x$enable_valgrind" = "xyes"], [
704 AC_MSG_ERROR([--enable-valgrind given, but Valgrind headers are not available])
709 dnl Build the special libFuzzer version of nbdkit. DO NOT USE THIS for
710 dnl normal builds. See fuzzing/README.
711 AC_ARG_ENABLE([libfuzzer],
712 [AS_HELP_STRING([--enable-libfuzzer],
713 [build libFuzzer test binary (developers only)])],
715 [enable_libfuzzer=no])
716 AS_IF([test "x$enable_libfuzzer" = "xyes"],[
717 AC_DEFINE([ENABLE_LIBFUZZER],[1],[Enable special libFuzzer binary])
718 # We have to disable the linker script for libFuzzer because Clang
719 # adds loads of fuzzer and ASAN-related symbols that are required
720 # by the plugins but which our linker script tries to hide.
723 AM_CONDITIONAL([ENABLE_LIBFUZZER],[test "x$enable_libfuzzer" = "xyes"])
725 dnl Should we use the linker script (ld --version-script)? Note
726 dnl some tests above may set this variable.
727 AC_ARG_ENABLE([linker-script],
728 [AS_HELP_STRING([--disable-linker-script],
729 [disable linker script for server (developers only)])],
730 [use_linker_script=$enableval],
732 AM_CONDITIONAL([USE_LINKER_SCRIPT],
733 [test "x$use_linker_script" = "xyes"])
736 PKG_CHECK_MODULES([BASH_COMPLETION], [bash-completion >= 2.0], [
738 AC_MSG_CHECKING([for bash-completions directory])
739 m4_ifdef([PKG_CHECK_VAR],[
740 PKG_CHECK_VAR(bashcompdir, [bash-completion], [completionsdir])
742 AS_IF([test -z "$bashcompdir"], [
743 bashcompdir="${sysconfdir}/bash_completion.d"
745 AC_MSG_RESULT([$bashcompdir])
746 AC_SUBST([bashcompdir])
749 AC_MSG_WARN([bash-completion not installed])
751 AM_CONDITIONAL([HAVE_BASH_COMPLETION],[test "x$bash_completion" = "xyes"])
753 dnl Check we have enough to run podwrapper.
754 AC_CHECK_PROG([PERL],[perl],[perl],[no])
755 AS_IF([test "x$PERL" != "xno"],[
756 AC_MSG_CHECKING([if we have perl Pod::Man and Pod::Simple])
757 AS_IF([$PERL -MPod::Man -MPod::Simple -e 1 >&AS_MESSAGE_LOG_FD 2>&1],[
762 AC_MSG_RESULT([$enable_pod])
764 AM_CONDITIONAL([HAVE_POD],
765 [test "x$PERL" != "xno" && test "x$enable_pod" = "xyes"])
767 dnl Define the path to the podwrapper program.
768 PODWRAPPER="$PERL $(pwd)/podwrapper.pl"
769 AC_SUBST([PODWRAPPER])
771 dnl Allow all plugins and filters to be disabled.
772 AC_ARG_ENABLE([plugins],
773 [AS_HELP_STRING([--disable-plugins],
774 [disable all bundled plugins and filters])])
775 AM_CONDITIONAL([HAVE_PLUGINS], [test "x$enable_plugins" != "xno"])
777 dnl Check for Perl, for embedding in the perl plugin.
778 dnl Note that the perl binary is checked above.
779 AC_ARG_ENABLE([perl],
780 [AS_HELP_STRING([--disable-perl], [disable Perl embed plugin])],
783 AS_IF([test "x$PERL" != "xno" && test "x$enable_perl" != "xno"],[
784 dnl Check for Perl archlib.
785 AC_MSG_CHECKING([for Perl embed archlib])
786 PERL_ARCHLIB="$($PERL -MConfig -e 'print $Config{archlib}')"
787 AS_IF([ test -n "$PERL_ARCHLIB" ],[
788 AC_MSG_RESULT([$PERL_ARCHLIB])
790 AC_MSG_NOTICE([Perl embed module disabled])
794 dnl Check for Perl CFLAGS.
795 AC_MSG_CHECKING([for Perl embed CFLAGS])
796 PERL_CFLAGS="$($PERL -MExtUtils::Embed -e 'ccflags')"
797 AS_IF([ test -n "$PERL_CFLAGS" ],[
798 AC_MSG_RESULT([$PERL_CFLAGS])
800 AC_MSG_NOTICE([Perl embed module disabled])
804 dnl Check for Perl LDOPTS.
805 AC_MSG_CHECKING([for Perl embed LDOPTS])
806 PERL_LDOPTS="$($PERL -MExtUtils::Embed -e 'ldopts')"
807 AC_MSG_RESULT([$PERL_LDOPTS])
809 dnl Check these actually work.
810 AC_MSG_CHECKING([whether Perl modules will compile])
813 CFLAGS="$PERL_CFLAGS -I$PERL_ARCHLIB/CORE $CFLAGS"
814 LIBS="$PERL_LDOPTS $LIBS"
815 AC_CHECK_FUNCS([perl_alloc])
818 if test "x$ac_cv_func_perl_alloc" != xyes; then
822 AM_CONDITIONAL([HAVE_PERL],[test "x$enable_perl" != "xno" && test "x$PERL" != "xno"])
823 AC_SUBST([PERL_ARCHLIB])
824 AC_SUBST([PERL_CFLAGS])
825 AC_SUBST([PERL_LDOPTS])
827 dnl Check for Python 3, for embedding in the python plugin.
828 AC_PATH_PROGS([PYTHON],[python3 python],[no])
829 AC_ARG_ENABLE([python],
830 [AS_HELP_STRING([--disable-python], [disable Python embed plugin])],
833 AS_IF([test "x$PYTHON" != "xno" && test "x$enable_python" != "xno"],[
834 AC_MSG_CHECKING([version of $PYTHON])
835 PYTHON_VERSION_MAJOR=`$PYTHON -c "import sys; print (sys.version_info@<:@0@:>@)"`
836 PYTHON_VERSION_MINOR=`$PYTHON -c "import sys; print (sys.version_info@<:@1@:>@)"`
837 PYTHON_VERSION="$PYTHON_VERSION_MAJOR.$PYTHON_VERSION_MINOR"
838 AS_IF([test -n "$PYTHON_VERSION"],[
839 AC_MSG_RESULT([$PYTHON_VERSION])
841 AC_MSG_NOTICE([Python embed module disabled])
845 AC_MSG_CHECKING([Python major version is 3])
846 AS_IF([test "x$PYTHON_VERSION_MAJOR" = "x3"],[
850 AC_MSG_ERROR([Python $PYTHON_VERSION_MAJOR <> 3 is no longer supported.
852 Python 2 end of life is 2020-01-01 and nbdkit >= 1.16 no longer
855 If you want to use Python 2, you will need to use nbdkit 1.14.])
858 dnl Check for Python CFLAGS, libraries.
859 dnl For Python >= 3.8 we have to use python-<VERSION>-embed.pc, see:
860 dnl https://docs.python.org/3.8/whatsnew/3.8.html#debug-build-uses-the-same-abi-as-release-build
861 dnl The python.pc is called python-<VERSION>.pc on Debian and
862 dnl later versions of Fedora, and python.pc on older versions
864 PKG_CHECK_MODULES([PYTHON], [python-"$PYTHON_VERSION"-embed], [
865 AC_SUBST([PYTHON_CFLAGS])
866 AC_SUBST([PYTHON_LIBS])
867 AC_SUBST([PYTHON_VERSION])
868 AC_DEFINE([HAVE_PYTHON],[1],[Python library found at compile time])
870 PKG_CHECK_MODULES([PYTHON], [python-"$PYTHON_VERSION"], [
871 AC_SUBST([PYTHON_CFLAGS])
872 AC_SUBST([PYTHON_LIBS])
873 AC_SUBST([PYTHON_VERSION])
874 AC_DEFINE([HAVE_PYTHON],[1],[Python library found at compile time])
876 PKG_CHECK_MODULES([PYTHON], [python], [
877 AC_SUBST([PYTHON_CFLAGS])
878 AC_SUBST([PYTHON_LIBS])
879 AC_SUBST([PYTHON_VERSION])
880 AC_DEFINE([HAVE_PYTHON],[1],[Python library found at compile time])
882 AC_MSG_WARN([python $PYTHON_VERSION not found])
886 AM_CONDITIONAL([HAVE_PYTHON],[test "x$enable_python" != "xno" && test "x$PYTHON" != "xno"])
887 AC_SUBST([PYTHON_CFLAGS])
888 AC_SUBST([PYTHON_LIBS])
889 AC_SUBST([PYTHON_LDFLAGS])
891 dnl For the OCaml plugin, you can set OCAMLOPTFLAGS before running
892 dnl ./configure to specify any extra flags you want to pass to
893 dnl ocamlopt. For example to enable OCaml warnings:
894 dnl OCAMLOPTFLAGS="-warn-error +A-3"
895 AC_SUBST([OCAMLOPTFLAGS])
897 dnl Check for OCaml, for embedding in the ocaml plugin.
899 AC_ARG_ENABLE([ocaml],
900 [AS_HELP_STRING([--disable-ocaml], [disable OCaml embed plugin])],
903 AS_IF([test "x$OCAMLOPT" != "xno" && test "x$enable_ocaml" != "xno"],[
904 dnl Check OCaml can create a shared library (see README for details).
905 AC_MSG_CHECKING([if $OCAMLOPT can create a shared library])
906 echo 'print_endline "test"' > conftest.ml
907 AS_IF([$OCAMLOPT $OCAMLOPTFLAGS -output-obj -runtime-variant _pic -o conftest.so conftest.ml >&AS_MESSAGE_LOG_FD 2>&1],[
909 ocaml_link_shared=yes
913 rm -f conftest.ml conftest.cmi conftest.cmx conftest.so conftest.o
915 AM_CONDITIONAL([HAVE_OCAML],[test "x$OCAMLOPT" != "xno" &&
916 test "x$ocaml_link_shared" = "xyes"])
917 AM_CONDITIONAL([HAVE_OCAMLDOC],[test "x$OCAMLDOC" != "xno"])
919 dnl Check if OCaml has caml_alloc_initialized_string (added 2017).
920 AS_IF([test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno" && \
921 test "x$enable_ocaml" = "xyes"],[
922 AC_MSG_CHECKING([for caml_alloc_initialized_string])
923 cat >conftest.c <<'EOF'
924 #include <caml/alloc.h>
925 int main () { char *p = (void *) caml_alloc_initialized_string; return 0; }
927 AS_IF([$OCAMLC conftest.c >&AS_MESSAGE_LOG_FD 2>&1],[
929 AC_DEFINE([HAVE_CAML_ALLOC_INITIALIZED_STRING],[1],
930 [caml_alloc_initialized_string found at compile time.])
934 rm -f conftest.c conftest.o
937 dnl Check if OCaml has caml_shutdown (added 2014).
938 AS_IF([test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno" && \
939 test "x$enable_ocaml" = "xyes"],[
940 AC_MSG_CHECKING([for caml_shutdown])
941 cat >conftest.c <<'EOF'
942 #include <caml/callback.h>
943 int main () { char *p = (void *) caml_shutdown; return 0; }
945 AS_IF([$OCAMLC conftest.c >&AS_MESSAGE_LOG_FD 2>&1],[
947 AC_DEFINE([HAVE_CAML_SHUTDOWN],[1],
948 [caml_shutdown found at compile time.])
952 rm -f conftest.c conftest.o
955 dnl For developing plugins in Rust, optional.
956 dnl Rust does not play nicely with VPATH builds
957 AC_CHECK_PROG([CARGO],[cargo],[cargo],[no])
958 AC_ARG_ENABLE([rust],
959 [AS_HELP_STRING([--disable-rust], [disable Rust plugin])],
961 [if test "x$(realpath $srcdir)" = "x$(realpath .)"; then
966 AM_CONDITIONAL([HAVE_RUST],
967 [test "x$CARGO" != "xno" && test "x$enable_rust" != "xno"])
969 dnl Check for Ruby, for embedding in the Ruby plugin.
970 AC_CHECK_PROG([RUBY],[ruby],[ruby],[no])
971 AC_ARG_ENABLE([ruby],
972 [AS_HELP_STRING([--disable-ruby], [disable Ruby plugin])],
975 AS_IF([test "x$RUBY" != "xno" && test "x$enable_ruby" != "xno"],[
976 PKG_CHECK_MODULES([RUBY], [ruby], [
977 AC_SUBST([RUBY_CFLAGS])
978 AC_SUBST([RUBY_LIBS])
980 AC_MSG_WARN([ruby not found])
984 AM_CONDITIONAL([HAVE_RUBY],[test "x$RUBY" != "xno" &&
985 test "x$enable_ruby" = "xyes"])
987 dnl Check for Tcl, for embedding in the Tcl plugin.
989 [AS_HELP_STRING([--disable-tcl], [disable Tcl plugin])],
992 AS_IF([test "x$enable_tcl" != "xno"],[
993 PKG_CHECK_MODULES([TCL], [tcl], [
994 AC_SUBST([TCL_CFLAGS])
997 AC_MSG_WARN([Tcl not found])
1001 AM_CONDITIONAL([HAVE_TCL],[test "x$enable_tcl" = "xyes"])
1003 dnl Check for Lua, for embedding in the Lua plugin.
1004 AC_ARG_ENABLE([lua],
1005 [AS_HELP_STRING([--disable-lua], [disable Lua plugin])],
1008 AS_IF([test "x$enable_lua" != "xno"],[
1009 PKG_CHECK_MODULES([LUA], [lua], [
1010 AC_SUBST([LUA_CFLAGS])
1011 AC_SUBST([LUA_LIBS])
1013 dnl Lua 5.1 used by RHEL 7 does not have lua_isinteger.
1015 LIBS="$LUA_LIBS $LIBS"
1016 AC_CHECK_FUNCS([lua_isinteger])
1019 AC_MSG_WARN([Lua not found])
1023 AM_CONDITIONAL([HAVE_LUA],[test "x$enable_lua" = "xyes"])
1025 dnl Check for golang.
1026 AC_ARG_ENABLE([golang],
1027 AS_HELP_STRING([--disable-golang], [disable Go language plugin]),
1029 [enable_golang=yes])
1030 AS_IF([test "x$enable_golang" != "xno"],[
1031 AC_CHECK_PROG([GOLANG],[go],[go],[no])
1032 AS_IF([test "x$GOLANG" != "xno"],[
1033 AC_MSG_CHECKING([if $GOLANG is usable])
1034 AS_IF([$GOLANG run $srcdir/plugins/golang/config-test.go 2>&AS_MESSAGE_LOG_FD && \
1035 $GOLANG help modules 2>&AS_MESSAGE_LOG_FD 1>&2],[
1036 AC_MSG_RESULT([yes])
1038 # Substitute some golang environment.
1039 GOOS=`$GOLANG env GOOS`
1040 GOARCH=`$GOLANG env GOARCH`
1041 GOROOT=`$GOLANG env GOROOT`
1047 AC_MSG_WARN([golang ($GOLANG) is installed but not usable])
1052 AM_CONDITIONAL([HAVE_GOLANG],[test "x$GOLANG" != "xno"])
1054 dnl Check for curl (only if you want to compile the curl plugin).
1056 [AS_HELP_STRING([--without-curl],
1057 [disable curl plugin @<:@default=check@:>@])],
1060 AS_IF([test "$with_curl" != "no"],[
1061 PKG_CHECK_MODULES([CURL], [libcurl],[
1062 printf "libcurl version is "; $PKG_CONFIG --modversion libcurl
1063 AC_SUBST([CURL_CFLAGS])
1064 AC_SUBST([CURL_LIBS])
1065 AC_DEFINE([HAVE_CURL],[1],[curl found at compile time.])
1066 AC_CHECK_DECL([CURLOPT_UNIX_SOCKET_PATH], [
1067 AC_DEFINE([HAVE_CURLOPT_UNIX_SOCKET_PATH],[1],
1068 [CURLOPT_UNIX_SOCKET_PATH found at compile time.])
1069 ], [], [#include <curl/curl.h>])
1071 [AC_MSG_WARN([curl not found, curl plugin will be disabled])])
1073 AM_CONDITIONAL([HAVE_CURL],[test "x$CURL_LIBS" != "x"])
1075 dnl Check for libssh (only if you want to compile the ssh plugin).
1077 [AS_HELP_STRING([--without-ssh],
1078 [disable ssh plugin @<:@default=check@:>@])],
1081 AS_IF([test "$with_ssh" != "no"],[
1082 PKG_CHECK_MODULES([SSH], [libssh >= 0.8.0],[
1083 printf "libssh version is "; $PKG_CONFIG --modversion libssh
1084 # Ubuntu 18.04 shipped prerelease of libssh-0.8.0 without
1085 # SSH_OPTIONS_NODELAY
1086 old_CFLAGS="$CFLAGS"
1087 CFLAGS="$CFLAGS $SSH_CFLAGS"
1088 AC_CHECK_DECL([SSH_OPTIONS_NODELAY], [
1089 AC_SUBST([SSH_CFLAGS])
1090 AC_SUBST([SSH_LIBS])
1091 # We don't need this in the code, just in this configure
1092 HAVE_SSH_OPTIONS_NODELAY=1
1094 #include <libssh/libssh.h>
1096 CFLAGS="$old_CFLAGS"
1098 [AC_MSG_WARN([libssh not found, ssh plugin will be disabled])])
1100 AM_CONDITIONAL([HAVE_SSH],[test "x$HAVE_SSH_OPTIONS_NODELAY" != "x"])
1102 dnl Check for xorriso or genisoimage or mkisofs
1103 dnl (only if you want to compile the iso plugin).
1107 [AS_HELP_STRING([--without-iso],
1108 [disable iso plugin @<:@default=check@:>@])],
1111 AS_IF([test "$with_iso" != "no"],[
1112 AC_CHECK_PROG([XORRISO],[xorriso],[xorriso],[no])
1113 AC_CHECK_PROG([GENISOIMAGE],[genisoimage],[genisoimage],[no])
1114 AC_CHECK_PROG([MKISOFS],[mkisofs],[mkisofs],[no])
1115 AS_IF([test "x$XORRISO" != "xno"],[
1119 AS_IF([test "x$GENISOIMAGE" != "xno"],[
1120 ISOPROG="$GENISOIMAGE"
1122 AS_IF([test "x$MKISOFS" != "xno"],[
1127 AS_IF([test "x$ISOPROG" != "xno"],[
1128 printf "picked %s for nbdkit-iso-plugin\n" "$ISOPROG"
1129 AC_DEFINE_UNQUOTED([ISOPROG],["$ISOPROG"],
1130 [Program used by iso plugin to make ISOs.])
1131 AS_IF([test "x$is_xorriso" = "x1"], [
1132 AC_DEFINE([ISOPROG_IS_XORRISO],[1],
1133 [ISO program behaves like xorriso.])
1138 AM_CONDITIONAL([HAVE_ISO],[test "x$ISOPROG" != "xno"])
1140 dnl Check for libvirt (only if you want to compile the libvirt plugin).
1141 AC_ARG_WITH([libvirt],
1142 [AS_HELP_STRING([--without-libvirt],
1143 [disable libvirt plugin @<:@default=check@:>@])],
1145 [with_libvirt=check])
1146 AS_IF([test "$with_libvirt" != "no"],[
1147 PKG_CHECK_MODULES([LIBVIRT], [libvirt],[
1148 AC_SUBST([LIBVIRT_CFLAGS])
1149 AC_SUBST([LIBVIRT_LIBS])
1150 AC_DEFINE([HAVE_LIBVIRT],[1],[libvirt found at compile time.])
1152 [AC_MSG_WARN([libvirt not found, libvirt plugin will be disabled])])
1154 AM_CONDITIONAL([HAVE_LIBVIRT],[test "x$LIBVIRT_LIBS" != "x"])
1156 dnl Check for zlib (only if you want to compile the gzip filter).
1158 [AS_HELP_STRING([--without-zlib],
1159 [disable gzip filter @<:@default=check@:>@])],
1162 AS_IF([test "$with_zlib" != "no"],[
1163 PKG_CHECK_MODULES([ZLIB], [zlib >= 1.2.3.5],[
1164 AC_SUBST([ZLIB_CFLAGS])
1165 AC_SUBST([ZLIB_LIBS])
1166 AC_DEFINE([HAVE_ZLIB],[1],[zlib found at compile time.])
1168 [AC_MSG_WARN([zlib >= 1.2.3.5 not found, gzip filter will be disabled])])
1170 AM_CONDITIONAL([HAVE_ZLIB],[test "x$ZLIB_LIBS" != "x"])
1172 dnl Check for libnbd (only if you want to compile the nbd plugin).
1173 AC_ARG_WITH([libnbd],
1174 [AS_HELP_STRING([--without-libnbd],
1175 [disable nbd plugin @<:@default=check@:>@])],
1177 [with_libnbd=check])
1178 AS_IF([test "$with_libnbd" != "no"],[
1179 PKG_CHECK_MODULES([LIBNBD], [libnbd >= 0.9.8],[
1180 printf "libnbd version is "; $PKG_CONFIG --modversion libnbd
1181 AC_SUBST([LIBNBD_CFLAGS])
1182 AC_SUBST([LIBNBD_LIBS])
1183 AC_DEFINE([HAVE_LIBNBD],[1],[libnbd found at compile time.])
1185 [AC_MSG_WARN([libnbd >= 0.9.8 not found, nbd plugin will be crippled])])
1188 dnl For backwards compatibilty, we have a second way to disable the nbd plugin.
1189 AC_ARG_ENABLE([nbd-plugin],
1190 [AS_HELP_STRING([--disable-nbd-plugin], [disable nbd plugin (deprecated, use --without-libnbd)])],
1192 [enable_nbd_plugin=yes])
1193 AM_CONDITIONAL([HAVE_LIBNBD],
1194 [test "x$LIBNBD_LIBS" != "x" && test "x$enable_nbd_plugin" = "xyes"])
1196 dnl Check for liblzma (only if you want to compile the xz filter).
1197 AC_ARG_WITH([liblzma],
1198 [AS_HELP_STRING([--without-liblzma],
1199 [disable xz filter @<:@default=check@:>@])],
1201 [with_liblzma=check])
1202 AS_IF([test "$with_liblzma" != "no"],[
1203 PKG_CHECK_MODULES([LIBLZMA], [liblzma],[
1204 AC_SUBST([LIBLZMA_CFLAGS])
1205 AC_SUBST([LIBLZMA_LIBS])
1206 AC_DEFINE([HAVE_LIBLZMA],[1],[liblzma found at compile time.])
1208 [AC_MSG_WARN([liblzma not found, xz filter will be disabled])])
1210 AM_CONDITIONAL([HAVE_LIBLZMA],[test "x$LIBLZMA_LIBS" != "x"])
1212 dnl Check for zstd (only if you want to compile allocator=zstd).
1213 AC_ARG_WITH([libzstd],
1214 [AS_HELP_STRING([--without-libzstd],
1215 [disable allocator=zstd @<:@default=check@:>@])],
1217 [with_libzstd=check])
1218 AS_IF([test "$with_libzstd" != "no"],[
1219 PKG_CHECK_MODULES([LIBZSTD], [libzstd],[
1220 AC_SUBST([LIBZSTD_CFLAGS])
1221 AC_SUBST([LIBZSTD_LIBS])
1222 AC_DEFINE([HAVE_LIBZSTD],[1],[libzstd found at compile time.])
1224 [AC_MSG_WARN([libzstd not found, allocator=zstd will be disabled])])
1226 AM_CONDITIONAL([HAVE_LIBZSTD],[test "x$LIBZSTD_LIBS" != "x"])
1228 dnl Check for libguestfs (only for the guestfs plugin and parts of
1229 dnl the test suite).
1230 AC_ARG_WITH([libguestfs],
1231 [AS_HELP_STRING([--without-libguestfs],
1232 [disable guestfs plugin and tests @<:@default=check@:>@])],
1234 [with_libguestfs=check])
1235 AS_IF([test "$with_libguestfs" != "no"],[
1236 PKG_CHECK_MODULES([LIBGUESTFS], [libguestfs],[
1237 # Although the library was found, we want to make sure it supports nbd
1238 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
1239 #include <guestfs.h>
1241 #ifndef GUESTFS_ADD_DRIVE_OPTS_PROTOCOL
1245 AC_SUBST([LIBGUESTFS_CFLAGS])
1246 AC_SUBST([LIBGUESTFS_LIBS])
1247 AC_DEFINE([HAVE_LIBGUESTFS],[1],[libguestfs found at compile time.])
1250 AC_MSG_WARN([libguestfs too old, guestfs plugin and tests will be disabled])])
1252 [AC_MSG_WARN([libguestfs not found, guestfs plugin and tests will be disabled])])
1254 AM_CONDITIONAL([HAVE_LIBGUESTFS],[test "x$LIBGUESTFS_LIBS" != "x"])
1256 dnl Disable tests which need libguestfs.
1257 AC_ARG_ENABLE([libguestfs-tests],
1258 [AS_HELP_STRING([--disable-libguestfs-tests],
1259 [disable tests which need libguestfs])],
1261 [enable_libguestfs_tests=check]
1263 AM_CONDITIONAL([USE_LIBGUESTFS_FOR_TESTS],
1264 [test "x$LIBGUESTFS_LIBS" != "x" && \
1265 test "x$enable_libguestfs_tests" != "xno"])
1267 dnl Check for ext2fs and com_err, for the ext2 filter.
1269 [AS_HELP_STRING([--without-ext2],
1270 [disable ext2 filter @<:@default=check@:>@])],
1273 AS_IF([test "$with_ext2" != "no"], [
1274 PKG_CHECK_MODULES([EXT2FS], [ext2fs], [
1275 AC_SUBST([EXT2FS_CFLAGS])
1276 AC_SUBST([EXT2FS_LIBS])
1277 AC_DEFINE([HAVE_EXT2FS],[1],[ext2fs found at compile time.])
1279 [AC_MSG_WARN([ext2fs not found, ext2 filter will be disabled])])
1280 PKG_CHECK_MODULES([COM_ERR], [com_err], [
1281 AC_SUBST([COM_ERR_CFLAGS])
1282 AC_SUBST([COM_ERR_LIBS])
1283 AC_DEFINE([HAVE_COM_ERR],[1],[com_err found at compile time.])
1285 [AC_MSG_WARN([com_err not found, ext2 filter will be disabled])])
1287 AC_CHECK_MEMBERS([struct struct_io_manager.cache_readahead,
1288 struct struct_io_manager.zeroout])
1290 AM_CONDITIONAL([HAVE_EXT2],
1291 [test "x$EXT2FS_LIBS" != "x" && test "x$COM_ERR_LIBS" != "x"])
1293 dnl libtorrent-rasterbar for the bittorrent plugin.
1294 AC_ARG_ENABLE([torrent],
1295 [AS_HELP_STRING([--disable-torrent],
1296 [disable bittorrent plugin])],
1298 [enable_torrent=check]
1300 AS_IF([test "x$enable_torrent" != "xno"], [
1301 PKG_CHECK_MODULES([LIBTORRENT], [libtorrent-rasterbar], [
1302 AC_SUBST([LIBTORRENT_CFLAGS])
1303 AC_SUBST([LIBTORRENT_LIBS])
1305 [AC_MSG_WARN([libtorrent-rasterbar not found, bittorrent plugin will be disabled])])
1307 AM_CONDITIONAL([HAVE_TORRENT],
1308 [test "x$have_cxx" = "xyes" && test "x$LIBTORRENT_LIBS" != "x"])
1310 dnl Check if the user wants to disable VDDK support.
1311 dnl See plugins/vddk/README.VDDK.
1312 AC_ARG_ENABLE([vddk],
1313 [AS_HELP_STRING([--disable-vddk],
1314 [disable VMware VDDK plugin])],
1317 dnl While VDDK was available on i686 in 5.1.1, we only support
1318 dnl newer versions which are supported only on x86-64. Don't
1319 dnl compile on other platforms.
1320 AC_MSG_CHECKING([if the host CPU is compatible with VDDK])
1321 AS_IF([test "$host_cpu" = "x86_64" && test "$host_os" = "linux-gnu"],[
1322 AC_MSG_RESULT([yes ($host)])
1325 AC_MSG_RESULT([no ($host)])
1329 AM_CONDITIONAL([HAVE_VDDK], [test "x$enable_vddk" = "xyes"])
1331 dnl Expose version information to the public headers
1332 [NBDKIT_]VERSION_MAJOR=NBDKIT_VERSION_MAJOR
1333 [NBDKIT_]VERSION_MINOR=NBDKIT_VERSION_MINOR
1334 [NBDKIT_]VERSION_MICRO=NBDKIT_VERSION_MICRO
1335 AC_SUBST([NBDKIT_VERSION_MAJOR])
1336 AC_SUBST([NBDKIT_VERSION_MINOR])
1337 AC_SUBST([NBDKIT_VERSION_MICRO])
1339 dnl Produce output files.
1340 AC_CONFIG_HEADERS([config.h])
1341 AC_CONFIG_FILES([podwrapper.pl],
1342 [chmod +x,-w podwrapper.pl])
1343 AC_CONFIG_FILES([common/protocol/generate-protostrings.sh],
1344 [chmod +x,-w common/protocol/generate-protostrings.sh])
1345 AC_CONFIG_FILES([tests/make-pki.sh],
1346 [chmod +x,-w tests/make-pki.sh])
1347 AC_CONFIG_FILES([Makefile
1348 bash-completion/Makefile
1349 common/allocators/Makefile
1350 common/bitmap/Makefile
1352 common/include/Makefile
1353 common/protocol/Makefile
1354 common/regions/Makefile
1355 common/replacements/Makefile
1356 common/replacements/win32/Makefile
1357 common/utils/Makefile
1360 include/nbdkit-version.h
1363 plugins/cdi/Makefile
1364 plugins/curl/Makefile
1365 plugins/data/Makefile
1366 plugins/eval/Makefile
1367 plugins/example1/Makefile
1368 plugins/example2/Makefile
1369 plugins/example3/Makefile
1370 plugins/example4/Makefile
1371 plugins/file/Makefile
1372 plugins/floppy/Makefile
1373 plugins/full/Makefile
1374 plugins/golang/Makefile
1375 plugins/guestfs/Makefile
1376 plugins/info/Makefile
1377 plugins/iso/Makefile
1378 plugins/libvirt/Makefile
1379 plugins/linuxdisk/Makefile
1380 plugins/lua/Makefile
1381 plugins/memory/Makefile
1382 plugins/nbd/Makefile
1383 plugins/null/Makefile
1384 plugins/ocaml/Makefile
1385 plugins/ondemand/Makefile
1386 plugins/partitioning/Makefile
1387 plugins/pattern/Makefile
1388 plugins/perl/Makefile
1389 plugins/python/Makefile
1390 plugins/random/Makefile
1391 plugins/ruby/Makefile
1392 plugins/rust/Makefile
1395 plugins/ssh/Makefile
1396 plugins/sparse-random/Makefile
1397 plugins/split/Makefile
1398 plugins/tcl/Makefile
1399 plugins/tmpdisk/Makefile
1400 plugins/torrent/Makefile
1401 plugins/vddk/Makefile
1402 plugins/zero/Makefile
1404 filters/blocksize/Makefile
1405 filters/blocksize-policy/Makefile
1406 filters/cache/Makefile
1407 filters/cacheextents/Makefile
1408 filters/checkwrite/Makefile
1409 filters/cow/Makefile
1410 filters/ddrescue/Makefile
1411 filters/delay/Makefile
1412 filters/error/Makefile
1413 filters/exitlast/Makefile
1414 filters/exitwhen/Makefile
1415 filters/exportname/Makefile
1416 filters/ext2/Makefile
1417 filters/extentlist/Makefile
1418 filters/fua/Makefile
1419 filters/gzip/Makefile
1421 filters/limit/Makefile
1422 filters/log/Makefile
1423 filters/luks/Makefile
1424 filters/multi-conn/Makefile
1425 filters/nocache/Makefile
1426 filters/noextents/Makefile
1427 filters/nofilter/Makefile
1428 filters/noparallel/Makefile
1429 filters/nozero/Makefile
1430 filters/offset/Makefile
1431 filters/partition/Makefile
1432 filters/pause/Makefile
1433 filters/protect/Makefile
1434 filters/rate/Makefile
1435 filters/readahead/Makefile
1436 filters/retry/Makefile
1437 filters/retry-request/Makefile
1438 filters/scan/Makefile
1439 filters/stats/Makefile
1440 filters/swab/Makefile
1441 filters/tar/Makefile
1442 filters/tls-fallback/Makefile
1443 filters/truncate/Makefile
1446 server/local/nbdkit.pc
1458 echo "----------------------------------------------------------------------"
1459 echo "Thank you for downloading $PACKAGE_STRING"
1461 echo "This is how we have configured the optional components for you today:"
1466 printf ' %.40s %s\n' \
1467 "$1 ........................................" "$2"
1481 echo "Optional server features:"
1483 feature "bash-completion" test "x$HAVE_BASH_COMPLETION_TRUE" = "x"
1484 feature "libfuzzer" test "x$ENABLE_LIBFUZZER_TRUE" = "x"
1485 feature "linker script" test "x$USE_LINKER_SCRIPT" = "x"
1486 feature "manual pages" test "x$HAVE_POD_TRUE" = "x"
1487 feature "SELinux" test "x$LIBSELINUX_LIBS" != "x"
1488 feature "TLS" test "x$GNUTLS_LIBS" != "x"
1491 echo "Optional plugins:"
1493 feature "curl" test "x$HAVE_CURL_TRUE" = "x"
1494 feature "example4" test "x$HAVE_PERL_TRUE" = "x"
1495 feature "floppy" test "x$HAVE_ICONV_TRUE" = "x"
1496 feature "guestfs" test "x$HAVE_LIBGUESTFS_TRUE" = "x"
1497 feature "iso" test "x$HAVE_ISO_TRUE" = "x"
1498 feature "libvirt" test "x$HAVE_LIBVIRT_TRUE" = "x"
1499 feature "linuxdisk" test "x$HAVE_MKE2FS_WITH_D_TRUE" = "x"
1500 feature "nbd" test "x$HAVE_LIBNBD_TRUE" = "x"
1501 feature "S3" test "x$HAVE_PYTHON_TRUE" = "x"
1502 feature "ssh" test "x$HAVE_SSH_TRUE" = "x"
1503 feature "torrent" test "x$HAVE_TORRENT_TRUE" = "x"
1504 feature "vddk" test "x$HAVE_VDDK_TRUE" = "x"
1509 feature "go" test "x$HAVE_GOLANG_TRUE" = "x"
1510 feature "lua" test "x$HAVE_LUA_TRUE" = "x"
1511 feature "ocaml" test "x$HAVE_OCAML_TRUE" = "x"
1512 feature "perl" test "x$HAVE_PERL_TRUE" = "x"
1513 feature "python" test "x$HAVE_PYTHON_TRUE" = "x"
1514 feature "ruby" test "x$HAVE_RUBY_TRUE" = "x"
1515 feature "rust" test "x$HAVE_RUST_TRUE" = "x"
1516 feature "tcl" test "x$HAVE_TCL_TRUE" = "x"
1519 echo "Optional filters:"
1521 feature "ext2" test "x$HAVE_EXT2_TRUE" = "x"
1522 feature "gzip" test "x$HAVE_ZLIB_TRUE" = "x"
1523 feature "luks" test "x$HAVE_GNUTLS_PBKDF2_TRUE" = "x"
1524 feature "stats" test "x$HAVE_CXX_TRUE" = "x"
1525 feature "xz" test "x$HAVE_LIBLZMA_TRUE" = "x"
1528 echo "Other optional features:"
1530 feature "allocator=zstd" test "x$HAVE_LIBZSTD_TRUE" = "x"
1531 feature "tests using libguestfs" \
1532 test "x$HAVE_LIBGUESTFS_TRUE" = "x" -a \
1533 "x$USE_LIBGUESTFS_FOR_TESTS_TRUE" = "x"
1536 echo "If any optional component is configured ‘no’ when you expected ‘yes’"
1537 echo "then you should check the preceding messages and README."
1539 echo "Please report bugs back to the mailing list:"
1540 echo "http://www.redhat.com/mailman/listinfo/libguestfs"
1542 echo "Next you should type 'make' to build the package,"
1543 echo "then 'make check' to run the tests."