tests: Split images -> tests/data + tests/guests
[libguestfs.git] / configure.ac
index e24c46d..b0661a0 100644 (file)
 #
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
-# major/minor/release must be numbers
+# The major, minor, and release fields MUST be numbers.  Packagers can
+# add extra information using --with-extra="..." which may be any
+# freeform string.
 m4_define([libguestfs_major],   [1])
-m4_define([libguestfs_minor],   [11])
-m4_define([libguestfs_release], [4])
-# extra can be any string
-m4_define([libguestfs_extra],   [])
+m4_define([libguestfs_minor],   [15])
+m4_define([libguestfs_release], [11])
 
 AC_INIT([libguestfs],libguestfs_major.libguestfs_minor.libguestfs_release)
 AC_CONFIG_AUX_DIR([build-aux])
@@ -31,12 +31,6 @@ AM_SILENT_RULES([yes]) # make --enable-silent-rules the default.
 
 AC_CONFIG_MACRO_DIR([m4])
 
-dnl Split up the version string.
-AC_DEFINE([PACKAGE_VERSION_MAJOR],[libguestfs_major],[Major version number])
-AC_DEFINE([PACKAGE_VERSION_MINOR],[libguestfs_minor],[Minor version number])
-AC_DEFINE([PACKAGE_VERSION_RELEASE],[libguestfs_release],[Release number])
-AC_DEFINE([PACKAGE_VERSION_EXTRA],["libguestfs_extra"],[Extra version string])
-
 dnl Stable or unstable version?
 AC_MSG_CHECKING([if this is a stable or unstable branch of libguestfs])
 AS_IF([test "$((libguestfs_minor % 2))" -eq 0 ],[
@@ -53,12 +47,30 @@ please see the section "LIBGUESTFS VERSION NUMBERS" in guestfs(3).
 ***])
        ])
 
+dnl Extra string, a freeform string defined by packagers.
+AC_ARG_WITH([extra],
+  [AS_HELP_STRING([--with-extra],
+                  [extra version string (for use by packagers)])],
+  [libguestfs_extra="$withval"],
+  [libguestfs_extra=]
+)
+
+AC_MSG_NOTICE([libguestfs version libguestfs_major.libguestfs_minor.libguestfs_release$libguestfs_extra])
+
+dnl Split up the version string.
+AC_DEFINE([PACKAGE_VERSION_MAJOR],[libguestfs_major],[Major version number])
+AC_DEFINE([PACKAGE_VERSION_MINOR],[libguestfs_minor],[Minor version number])
+AC_DEFINE([PACKAGE_VERSION_RELEASE],[libguestfs_release],[Release number])
+AC_DEFINE_UNQUOTED([PACKAGE_VERSION_EXTRA],["$libguestfs_extra"],[Extra version string])
+
 dnl Early gnulib initialization.
 gl_EARLY
 gl_INIT
 
 AC_PROG_LIBTOOL
 
+AC_PROG_SED
+
 dnl Check for basic C environment.
 AC_PROG_CC_STDC
 AC_PROG_INSTALL
@@ -107,6 +119,11 @@ if test "$gl_gcc_warnings" = yes; then
                                     # by Python, Ruby and xstrtoll.
   nw="$nw -Wstack-protector"        # Don't warn about stack-protector
                                     # failures (seen on Ubuntu).
+  nw="$nw -Wmissing-noreturn"       # Don't warn about missed noreturn funcs
+                                    # (seen on Ubuntu).
+  nw="$nw -Wsuggest-attribute=pure" # Don't suggest pure functions.
+  nw="$nw -Wsuggest-attribute=const" # Don't suggest const functions.
+  nw="$nw -Wunsuffixed-float-constants" # Don't care about these.
 
   gl_MANYWARN_ALL_GCC([ws])
   gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
@@ -151,14 +168,72 @@ AC_SYS_LARGEFILE
 dnl Check sizeof long.
 AC_CHECK_SIZEOF([long])
 
+dnl Check if dirent (readdir) supports d_type member.
+AC_STRUCT_DIRENT_D_TYPE
+
+dnl Check if stat has the required fields.
+AC_STRUCT_ST_BLOCKS
+AC_CHECK_MEMBER([struct stat.st_blksize],[
+        AC_DEFINE([HAVE_STRUCT_STAT_ST_BLKSIZE],[1],[Define to 1 if 'st_blksize' is a member of 'struct stat'])])
+
 dnl Define a C symbol for the host CPU architecture.
 AC_DEFINE_UNQUOTED([host_cpu],["$host_cpu"],[Host architecture.])
 
 dnl Headers.
-AC_CHECK_HEADERS([errno.h sys/types.h sys/un.h sys/wait.h sys/socket.h endian.h byteswap.h])
+AC_CHECK_HEADERS([\
+        attr/xattr.h \
+        byteswap.h \
+        endian.h \
+        errno.h \
+        printf.h \
+        sys/inotify.h \
+        sys/socket.h \
+        sys/statvfs.h \
+        sys/types.h \
+        sys/un.h \
+        sys/wait.h \
+        windows.h \
+        sys/xattr.h])
 
 dnl Functions.
-AC_CHECK_FUNCS([futimens posix_fallocate])
+AC_CHECK_FUNCS([\
+        futimens \
+        getxattr \
+        htonl \
+        htons \
+        inotify_init1 \
+        lgetxattr \
+        listxattr \
+        llistxattr \
+        lsetxattr \
+        lremovexattr \
+        mknod \
+        ntohl \
+        ntohs \
+        posix_fallocate \
+        realpath \
+        removexattr \
+        setitimer \
+        setxattr \
+        sigaction \
+        statvfs \
+        sync])
+
+dnl For modified printf in the daemon, we need glibc either (old-style)
+dnl register_printf_function or (new-style) register_printf_specifier.
+AC_CHECK_FUNC([register_printf_specifier],[
+        AC_DEFINE([HAVE_REGISTER_PRINTF_SPECIFIER],[1],
+                [Define to 1 if you have new-style register_printf_specifier])
+        ],[
+        AC_CHECK_FUNC([register_printf_function],[
+                AC_DEFINE([HAVE_REGISTER_PRINTF_FUNCTION],[1],
+                        [Define to 1 if you have old-style register_printf_function])
+                ],[
+                AC_MSG_FAILURE(
+[No support for glibc-style extended printf formatters.
+
+This means you either have a very old glibc (pre-2.0) or you
+are using some other libc where this is not supported.])])])
 
 dnl Build the daemon?
 AC_MSG_CHECKING([if we should build the daemon])
@@ -170,6 +245,18 @@ AC_ARG_ENABLE([daemon],
 AM_CONDITIONAL([ENABLE_DAEMON],[test "x$enable_daemon" = "xyes"])
 AC_MSG_RESULT([$enable_daemon])
 
+if test "x$enable_daemon" = "xyes"; then
+       dnl Install the daemon (for libguestfs live service)
+        AC_MSG_CHECKING([if we should install the daemon])
+        AC_ARG_ENABLE([install-daemon],
+                [AS_HELP_STRING([--enable-install-daemon],
+                  [enable installing the daemon under $sbindir @<:@default=no@:>@])],
+                [],
+                [enable_install_daemon=no])
+        AM_CONDITIONAL([INSTALL_DAEMON],[test "x$enable_install_daemon" = "xyes"])
+        AC_MSG_RESULT([$enable_install_daemon])
+fi
+
 dnl Build the appliance?
 AC_MSG_CHECKING([if we should build the appliance])
 AC_ARG_ENABLE([appliance],
@@ -187,7 +274,7 @@ if test "x$enable_appliance" = "xyes"; then
     test "x$FEBOOTSTRAP" = "xno" &&
         AC_MSG_ERROR([febootstrap must be installed])
     dnl febootstrap 2.x did not support the --version parameter
-    $FEBOOTSTRAP --version >/dev/null 2>&1 ||
+    $FEBOOTSTRAP --version >&AS_MESSAGE_LOG_FD 2>&1 ||
         AC_MSG_ERROR([febootstrap >= 3.0 must be installed, your version is too old])
 
     dnl Pass a febootstrap --yum-config option.
@@ -210,7 +297,7 @@ if test "x$enable_appliance" = "xyes"; then
     DISTRO=REDHAT
     if test -f /etc/debian_version; then
         DISTRO=DEBIAN
-       if grep -q 'DISTRIB_ID=Ubuntu' /etc/lsb-release 2>/dev/null; then
+       if grep -q 'DISTRIB_ID=Ubuntu' /etc/lsb-release 2>&AS_MESSAGE_LOG_FD; then
             DISTRO=UBUNTU
        fi
     fi
@@ -228,6 +315,42 @@ AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[
         AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl])
         ])
 
+dnl Check for Augeas (optional).
+PKG_CHECK_MODULES([AUGEAS], [augeas],
+        [AC_SUBST([AUGEAS_CFLAGS])
+         AC_SUBST([AUGEAS_LIBS])
+         AC_DEFINE([HAVE_AUGEAS],[1],[Define to 1 if you have Augeas])
+
+         old_LIBS="$LIBS"
+         LIBS="$LIBS $AUGEAS_LIBS"
+         dnl Check for functions not available in earlier versions of Augeas.
+         AC_CHECK_FUNCS([aug_load aug_defvar aug_defnode])
+         LIBS="$old_LIBS"
+        ],
+        [AC_MSG_WARN([augeas not found, some core features will be disabled])])
+
+dnl Check for libselinux (optional).
+AC_CHECK_HEADERS([selinux/selinux.h])
+AC_CHECK_LIB([selinux],[setexeccon],[
+        have_libselinux="$ac_cv_header_selinux_selinux_h"
+        SELINUX_LIB="-lselinux"
+
+        old_LIBS="$LIBS"
+        LIBS="$LIBS $SELINUX_LIB"
+        AC_CHECK_FUNCS([setcon getcon])
+        LIBS="$old_LIBS"
+
+        ],[have_libselinux=no])
+if test "x$have_libselinux" = "xyes"; then
+        AC_DEFINE([HAVE_LIBSELINUX],[1],[Define to 1 if you have libselinux])
+fi
+AC_SUBST([SELINUX_LIB])
+
+dnl Check for systemtap/DTrace userspace probes (optional).
+dnl http://sourceware.org/systemtap/wiki/AddingUserSpaceProbingToApps
+AC_CHECK_HEADERS([sys/sdt.h])
+dnl AC_CHECK_PROG([DTRACE],[dtrace],[dtrace],[no])
+
 dnl Check for cpio which isn't in the default Pardus install amazingly.
 AC_CHECK_PROG([CPIO],[cpio],[cpio],[no])
 test "x$CPIO" = "xno" &&
@@ -251,7 +374,7 @@ test "x$POD2HTML" = "xno" &&
 
 dnl Check if pod2man, pod2text take --stderr and -u options (not in RHEL 5).
 AC_MSG_CHECKING([if pod2man takes --stderr option])
-if "$POD2MAN" --stderr >/dev/null 2>&1; then
+if "$POD2MAN" --stderr >&AS_MESSAGE_LOG_FD 2>&1; then
     AC_MSG_RESULT([yes])
     POD2_STDERR_OPTION="--stderr"
 else
@@ -261,7 +384,7 @@ fi
 AC_SUBST([POD2_STDERR_OPTION])
 
 AC_MSG_CHECKING([if pod2man takes -u option])
-if "$POD2MAN" -u >/dev/null 2>&1; then
+if "$POD2MAN" -u >&AS_MESSAGE_LOG_FD 2>&1; then
     AC_MSG_RESULT([yes])
     POD2_UTF8_OPTION="-u"
 else
@@ -310,8 +433,66 @@ AC_DEFINE_UNQUOTED([QEMU],["$QEMU"],[Location of qemu binary.])
 
 dnl Check that the chosen qemu has virtio-serial support.
 if test "x$vmchannel_test" != "xno"; then
+    AC_MSG_CHECKING([that $QEMU -help works])
+    if $QEMU -help >&AS_MESSAGE_LOG_FD 2>&1; then
+        AC_MSG_RESULT([yes])
+    else
+        AC_MSG_RESULT([no])
+        AC_MSG_FAILURE(
+[$QEMU -help: command failed.
+
+This could be a very old version of qemu, or qemu might not be
+working.
+])
+    fi
+
+    dnl qemu 0.15 was released with broken support for '-machine',
+    dnl requiring you to add the machine type: '-machine pc,[...]'.
+    dnl The problem is that 'pc' is only applicable for PC-like
+    dnl hardware, so we cannot do this as a general solution.  Since
+    dnl qemu 0.15, this problem has been fixed so now the default
+    dnl machine type is chosen (qemu commit 2645c6dcaf6ea2a51a).
+    dnl
+    dnl We need to work out if this qemu is the broken version, so we
+    dnl can add 'pc' just for this broken version.
+    dnl
+    dnl Note that old qemu didn't support the '-machine' option at all.
+    dnl
+    dnl We use the -kernel option for testing this, because this option
+    dnl is processed very late, after qemu has set up the machine.
+    AC_MSG_CHECKING([for broken '-machine accel=tcg' option in $QEMU])
+    LC_ALL=C $QEMU -nographic -machine accel=tcg -kernel /NO_SUCH_FILE \
+             > config1.tmp 2>&1
+    LC_ALL=C $QEMU -nographic -machine pc,accel=tcg -kernel /NO_SUCH_FILE \
+             > config2.tmp 2>&1
+    if cmp -s config1.tmp config2.tmp; then
+        AC_MSG_RESULT([no])
+    else
+        AC_MSG_RESULT([yes])
+        AC_DEFINE([QEMU_MACHINE_TYPE_IS_BROKEN],[1],[qemu -machine accel=tcg option is broken (in qemu 0.15 only)])
+    fi
+    rm config1.tmp config2.tmp
+
+    dnl See if the '-machine [pc,]accel=tcg' option is required in
+    dnl order to run the virtio-serial test below.  This happens when
+    dnl we run qemu-kvm inside a VM without forcing TCG:
+    dnl
+    dnl   Could not access KVM kernel module: No such file or directory
+    dnl   failed to initialize KVM: No such file or directory
+    dnl   No accelerator found!
+    AC_MSG_CHECKING([if -machine @<:@pc,@:>@accel=tcg option is required to test virtio-serial feature])
+    if $QEMU -nographic -device \? >/dev/null 2>&1; then
+        :
+    elif $QEMU -machine accel=tcg -nographic -device \? >/dev/null 2>&1; then
+        QEMU_EXTRA_OPTIONS_FOR_TEST="-machine accel=tcg"
+    elif $QEMU -machine pc,accel=tcg -nographic -device \? >/dev/null 2>&1; then
+        QEMU_EXTRA_OPTIONS_FOR_TEST="-machine pc,accel=tcg"
+    # else nothing ... it'll fail below.
+    fi
+    AC_MSG_RESULT([$QEMU_EXTRA_OPTIONS_FOR_TEST])
+
     AC_MSG_CHECKING([for virtio-serial support in $QEMU])
-    if $QEMU -nographic -device \? 2>&1 | grep -sq virtio-serial; then
+    if $QEMU $QEMU_EXTRA_OPTIONS_FOR_TEST -nographic -device \? 2>&1 | grep -sq virtio-serial; then
         AC_MSG_RESULT([yes])
     else
         AC_MSG_RESULT([no])
@@ -396,6 +577,9 @@ AS_IF([test "x$with_readline" != xno],
 dnl For i18n.
 AM_GNU_GETTEXT([external])
 
+dnl Check for PCRE (required)
+PKG_CHECK_MODULES([PCRE], [libpcre])
+
 dnl libmagic (highly recommended)
 AC_CHECK_LIB([magic],[magic_file],
         [AC_CHECK_HEADER([magic.h],
@@ -405,14 +589,6 @@ AC_CHECK_LIB([magic],[magic_file],
         ],
         [AC_MSG_WARN([libmagic not found, some core features will be disabled])])
 
-dnl Check for PCRE (highly recommended)
-PKG_CHECK_MODULES([PCRE], [libpcre],
-        [AC_SUBST([PCRE_CFLAGS])
-         AC_SUBST([PCRE_LIBS])
-         AC_DEFINE([HAVE_PCRE],[1],[PCRE found at compile time.])
-        ],
-        [AC_MSG_WARN([PCRE not found, some core features will be disabled])])
-
 dnl libvirt (highly recommended)
 PKG_CHECK_MODULES([LIBVIRT], [libvirt],
         [AC_SUBST([LIBVIRT_CFLAGS])
@@ -476,14 +652,11 @@ AS_IF([test "x$enable_ocaml" != "xno"],
          OCAMLFIND=
          AC_PROG_OCAML
          AC_PROG_FINDLIB
-
-         AS_IF([test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"],
-               [AC_CHECK_OCAML_PKG([pcre])])
         ])
 AM_CONDITIONAL([HAVE_OCAML],
                [test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"])
-AM_CONDITIONAL([HAVE_OCAML_PCRE],
-               [test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno" && test "x$OCAML_PKG_pcre" != "xno"])
+AM_CONDITIONAL([HAVE_OCAMLDOC],
+               [test "x$OCAMLDOC" != "xno"])
 
 dnl Check for Perl (optional, for Perl bindings).
 PERL=no
@@ -501,7 +674,7 @@ AS_IF([test "x$enable_perl" != "xno"],
         missing_perl_modules=no
         for pm in Test::More ExtUtils::MakeMaker; do
             AC_MSG_CHECKING([for $pm])
-            if ! perl -M$pm -e1 >/dev/null 2>&1; then
+            if ! perl -M$pm -e1 >&AS_MESSAGE_LOG_FD 2>&1; then
                 AC_MSG_RESULT([no])
                 missing_perl_modules=yes
             else
@@ -531,29 +704,22 @@ AS_IF([test "x$enable_python" != "xno"],
 
         if test "x$PYTHON" != "xno"; then
            AC_MSG_CHECKING([Python prefix])
-            PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
+            PYTHON_PREFIX=`$PYTHON -c "import sys; print (sys.prefix)"`
            AC_MSG_RESULT([$PYTHON_PREFIX])
 
            AC_MSG_CHECKING([Python version])
-            PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"`
+            PYTHON_VERSION_MAJOR=`$PYTHON -c "import sys; print (sys.version_info@<:@0@:>@)"`
+            PYTHON_VERSION_MINOR=`$PYTHON -c "import sys; print (sys.version_info@<:@1@:>@)"`
+            PYTHON_VERSION="$PYTHON_VERSION_MAJOR.$PYTHON_VERSION_MINOR"
            AC_MSG_RESULT([$PYTHON_VERSION])
 
-            for d in \
-                $PYTHON_PREFIX/include/python$PYTHON_VERSION \
-                /usr/include/python$PYTHON_VERSION \
-                /usr/local/include/python$PYTHON_VERSION
-            do
-                AC_MSG_CHECKING([Python.h in $d])
-                if test -r "$d/Python.h"; then
-                    AC_MSG_RESULT([found])
-                    PYTHON_INCLUDEDIR=$d
-                    break
-                fi
-                AC_MSG_RESULT([not found])
-            done
-            if test "x$PYTHON_INCLUDEDIR" = "x"; then
-                AC_MSG_WARN([Python include directory not found])
+            AC_MSG_CHECKING([for Python include path])
+            if test -z "$PYTHON_INCLUDEDIR"; then
+                python_path=`$PYTHON -c "import distutils.sysconfig; \
+                                         print (distutils.sysconfig.get_python_inc ());"`
+                PYTHON_INCLUDEDIR=$python_path
             fi
+            AC_MSG_RESULT([$PYTHON_INCLUDEDIR])
 
             AC_ARG_WITH([python-installdir],
                         [AS_HELP_STRING([--with-python-installdir],
@@ -564,29 +730,27 @@ AS_IF([test "x$enable_python" != "xno"],
 
            if test "x$PYTHON_INSTALLDIR" = "xcheck"; then
                PYTHON_INSTALLDIR=
-                for d in \
-                    $PYTHON_PREFIX/lib64/python$PYTHON_VERSION/site-packages \
-                    $PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages \
-                    /usr/lib64/python$PYTHON_VERSION/site-packages \
-                    /usr/lib/python$PYTHON_VERSION/site-packages \
-                    /usr/local/lib/python$PYTHON_VERSION/site-packages
-                do
-                    AC_MSG_CHECKING([for $d])
-                    if test -d "$d"; then
-                        AC_MSG_RESULT([found])
-                        PYTHON_INSTALLDIR=$d
-                        break
-                    fi
-                    AC_MSG_RESULT([not found])
-                done
-                if test "x$PYTHON_INSTALLDIR" = "x"; then
-                    AC_MSG_WARN([Python site-packages directory not found])
+                AC_MSG_CHECKING([for Python site-packages path])
+                if test -z "$PYTHON_INSTALLDIR"; then
+                    PYTHON_INSTALLDIR=`$PYTHON -c "import distutils.sysconfig; \
+                                                   print (distutils.sysconfig.get_python_lib(1,0));"`
                 fi
+                AC_MSG_RESULT([$PYTHON_INSTALLDIR])
             fi
 
+            dnl Look for libpython and some optional symbols in it.
             old_LIBS="$LIBS"
-            LIBS="$LIBS -lpython$PYTHON_VERSION"
-            AC_CHECK_FUNCS([PyCapsule_New])
+            if test "x$PYTHON_VERSION_MAJOR" = "x3"; then
+                dnl libpython3 is called "libpython3.Xmu.so"
+                LIBPYTHON="python${PYTHON_VERSION}mu"
+            else
+                LIBPYTHON="python$PYTHON_VERSION"
+            fi
+            AC_CHECK_LIB([$LIBPYTHON], [PyList_Size], [],
+                         [AC_MSG_FAILURE([$LIBPYTHON is not installed])])
+
+            AC_CHECK_FUNCS([PyCapsule_New \
+                            PyString_AsString])
             LIBS="$old_LIBS"
         fi
 
@@ -605,8 +769,10 @@ AC_ARG_ENABLE([ruby],
         [enable_ruby=yes])
 AS_IF([test "x$enable_ruby" != "xno"],
         [
-        AC_CHECK_LIB([ruby],[ruby_init],[HAVE_LIBRUBY=1],[HAVE_LIBRUBY=0])
+        AC_CHECK_PROG([RUBY],[ruby],[ruby],[no])
         AC_CHECK_PROG([RAKE],[rake],[rake],[no])
+        AC_CHECK_LIB([ruby],[ruby_init],[HAVE_LIBRUBY=1],[HAVE_LIBRUBY=0])
+        AC_SUBST([RAKE])
         ])
 AM_CONDITIONAL([HAVE_RUBY],
     [test "x$RAKE" != "xno" && test -n "$HAVE_LIBRUBY"])
@@ -779,13 +945,32 @@ AS_IF([test "x$enable_php" != "xno"],
         ])
 AM_CONDITIONAL([HAVE_PHP], [test "x$PHP" != "xno" && test "x$PHPIZE" != "xno"])
 
+dnl Erlang
+ERLANG=no
+AC_ARG_ENABLE([erlang],
+    AS_HELP_STRING([--disable-erlang], [Disable Erlang language bindings]),
+         [],
+         [enable_erlang=yes])
+# NB: Don't use AS_IF here: it doesn't work.
+if test "x$enable_erlang" != "xno"; then
+        ERLANG=
+        AC_ERLANG_PATH_ERLC([no])
+
+        if test "x$ERLC" != "xno"; then
+            AC_ERLANG_CHECK_LIB([erl_interface], [],
+                                [AC_MSG_FAILURE([Erlang erl_interface library not installed.  Use --disable-erlang to disable.])])
+            AC_ERLANG_SUBST_LIB_DIR
+        fi
+fi
+AM_CONDITIONAL([HAVE_ERLANG], [test "x$ERLANG" != "xno" && test "x$ERLC" != "xno"])
+
 dnl Check for Perl modules needed by Perl virt tools (virt-df, etc.)
 AS_IF([test "x$PERL" != "xno"],
         [
         missing_perl_modules=no
         for pm in Pod::Usage Getopt::Long Sys::Virt Data::Dumper Locale::TextDomain Win::Hivex Win::Hivex::Regedit String::ShellQuote; do
             AC_MSG_CHECKING([for $pm])
-            if ! $PERL -M$pm -e1 >/dev/null 2>&1; then
+            if ! $PERL -M$pm -e1 >&AS_MESSAGE_LOG_FD 2>&1; then
                 AC_MSG_RESULT([no])
                 missing_perl_modules=yes
             else
@@ -806,27 +991,30 @@ AC_SUBST(MAX_PROC_NR)
 
 dnl Replace libtool with a wrapper that clobbers dependency_libs in *.la files
 dnl http://lists.fedoraproject.org/pipermail/devel/2010-November/146343.html
-LIBTOOL='$(SHELL) $(top_srcdir)/libtool-kill-dependency_libs.sh $(top_builddir)/libtool'
+LIBTOOL='bash $(top_srcdir)/libtool-kill-dependency_libs.sh $(top_builddir)/libtool'
 AC_SUBST([LIBTOOL])
 
-dnl Run in subdirs.
-if test "x$enable_daemon" = "xyes"; then
-    AC_CONFIG_SUBDIRS([daemon])
-fi
-
 dnl Produce output files.
 AC_CONFIG_HEADERS([config.h])
 dnl http://www.mail-archive.com/automake@gnu.org/msg10204.html
+AC_CONFIG_FILES([clone/virt-sysprep],
+                [chmod +x clone/virt-sysprep])
 AC_CONFIG_FILES([podwrapper.sh],
                 [chmod +x podwrapper.sh])
+AC_CONFIG_FILES([run],
+                [chmod +x run])
 AC_CONFIG_FILES([Makefile
+                 align/Makefile
                  appliance/Makefile
-                 capitests/Makefile
                  cat/Makefile
+                 clone/Makefile
                  csharp/Makefile
+                 daemon/Makefile
                  debian/changelog
                  df/Makefile
                  edit/Makefile
+                 erlang/Makefile
+                 erlang/examples/Makefile
                  examples/Makefile
                  fish/Makefile
                  fuse/Makefile
@@ -834,9 +1022,9 @@ AC_CONFIG_FILES([Makefile
                  gnulib/lib/Makefile
                  gnulib/tests/Makefile
                  haskell/Makefile
-                 images/Makefile
                  inspector/Makefile
                  java/Makefile
+                 java/examples/Makefile
                  libguestfs.pc
                  ocaml/META
                  ocaml/Makefile
@@ -851,14 +1039,24 @@ AC_CONFIG_FILES([Makefile
                  po/Makefile.in
                  python/Makefile
                  python/examples/Makefile
-                 regressions/Makefile
                  rescue/Makefile
                  resize/Makefile
                  ruby/Makefile
                  ruby/Rakefile
                  ruby/examples/Makefile
+                 sparsify/Makefile
                  src/Makefile
                  test-tool/Makefile
+                 tests/c-api/Makefile
+                 tests/data/Makefile
+                 tests/extra/Makefile
+                 tests/guests/Makefile
+                 tests/luks/Makefile
+                 tests/lvm/Makefile
+                 tests/md/Makefile
+                 tests/protocol/Makefile
+                 tests/qemu/Makefile
+                 tests/regressions/Makefile
                  tools/Makefile])
 AC_OUTPUT
 
@@ -887,11 +1085,13 @@ echo -n "Haskell bindings .................... "
 if test "x$HAVE_HASKELL_TRUE" = "x"; then echo "yes"; else echo "no"; fi
 echo -n "PHP bindings ........................ "
 if test "x$HAVE_PHP_TRUE" = "x"; then echo "yes"; else echo "no"; fi
+echo -n "Erlang bindings ..................... "
+if test "x$HAVE_ERLANG_TRUE" = "x"; then echo "yes"; else echo "no"; fi
 echo    "guestfish and C virt tools .......... yes"
 echo -n "Perl virt tools ..................... "
 if test "x$HAVE_TOOLS_TRUE" = "x"; then echo "yes"; else echo "no"; fi
 echo -n "virt-resize ......................... "
-if test "x$HAVE_OCAML" = "x" && test "x$HAVE_OCAML_PCRE" = "x"; then echo "yes"; else echo "no"; fi
+if test "x$HAVE_OCAML_TRUE" = "x"; then echo "yes"; else echo "no"; fi
 echo "FUSE filesystem ..................... $enable_fuse"
 echo
 echo "If any optional component is configured 'no' when you expected 'yes'"