# libguestfs
-# Copyright (C) 2009 Red Hat Inc.
+# Copyright (C) 2009-2010 Red Hat Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# major/minor/release must be numbers
m4_define([libguestfs_major], [1])
m4_define([libguestfs_minor], [0])
-m4_define([libguestfs_release], [75])
+m4_define([libguestfs_release], [86])
# extra can be any string
m4_define([libguestfs_extra], [])
AM_PROG_CC_C_O
+dnl Work out how to specify the linker script to the linker.
+VERSION_SCRIPT_FLAGS=-Wl,--version-script=
+`/usr/bin/ld --help 2>&1 | grep -- --version-script >/dev/null` || \
+ VERSION_SCRIPT_FLAGS="-Wl,-M -Wl,"
+AC_SUBST(VERSION_SCRIPT_FLAGS)
+
dnl Check support for 64 bit file offsets.
AC_SYS_LARGEFILE
dnl Check sizeof long.
AC_CHECK_SIZEOF([long])
+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])
+AC_CHECK_HEADERS([errno.h sys/types.h sys/un.h sys/wait.h sys/socket.h endian.h byteswap.h])
+
+dnl Build the daemon?
+AC_MSG_CHECKING([if we should build the daemon])
+AC_ARG_ENABLE([daemon],
+ [AS_HELP_STRING([--enable-daemon],
+ [enable building the daemon @<:@default=yes@:>@])],
+ [],
+ [enable_daemon=yes])
+AM_CONDITIONAL([ENABLE_DAEMON],[test "x$enable_daemon" = "xyes"])
+AC_MSG_RESULT([$enable_daemon])
+
+dnl Build the appliance?
+AC_MSG_CHECKING([if we should build the appliance])
+AC_ARG_ENABLE([appliance],
+ [AS_HELP_STRING([--enable-appliance],
+ [enable building the appliance @<:@default=yes@:>@])],
+ [],
+ [enable_appliance=yes])
+AM_CONDITIONAL([ENABLE_APPLIANCE],[test "x$enable_appliance" = "xyes"])
+AC_MSG_RESULT([$enable_appliance])
dnl Check for rpcgen and XDR library. rpcgen is optional.
AC_CHECK_PROG([RPCGEN],[rpcgen],[rpcgen],[no])
dnl discussion in the README file.
if test "x$vmchannel_test" != "xno"; then
AC_MSG_CHECKING([for guestfwd support in $QEMU])
- if $QEMU --help | grep -sq guestfwd; then
+ if $QEMU -nographic --help | grep -sq guestfwd; then
AC_MSG_RESULT([yes])
vmchannel_guestfwd=guestfwd
else
# test failing. This is because recent qemu will throw
# up an SDL window and hang if we try to run this test.
AC_MSG_CHECKING([for "-net channel" (old guestfwd) support in $QEMU])
- vmchannelout=`$QEMU -net channel /dev/zero 2>&1 ||:`
+ vmchannelout=`$QEMU -nographic -net channel /dev/zero 2>&1 ||:`
echo "vmchannel test command output: $vmchannelout" >&AS_MESSAGE_LOG_FD
if echo "$vmchannelout" | grep -sq "vmchannel wrong port number" ; then
AC_MSG_RESULT([yes])
fi
AC_MSG_CHECKING([for "-net user" (user mode network) support in $QEMU])
- if $QEMU --help | grep -sq -- "-net user"; then
+ if $QEMU -nographic --help | grep -sq -- "-net user"; then
AC_MSG_RESULT([yes])
vmchannel_net_user=yes
else
dnl Set drive interface used by the guestfs_add_drive{,_ro} calls
dnl ('-drive ...,if=...' option to qemu).
dnl
-dnl NB. We will change the default in future to virtio, but at the
-dnl moment this causes a performance problem, RHBZ#509383.
+dnl If you encounter performance problems with virtio (RHBZ#509383)
+dnl then try '--with-drive-if=ide'.
AC_ARG_WITH([drive-if],
[AS_HELP_STRING([--with-drive-if],
- [set default driver (ide|scsi|virtio) @<:@default=ide@:>@])],
+ [set default driver (ide|scsi|virtio) @<:@default=virtio@:>@])],
[],
- [with_drive_if=ide])
+ [with_drive_if=virtio])
AC_DEFINE_UNQUOTED([DRIVE_IF],["$with_drive_if"],[Default drive interface.])
dnl Set interface used by the network. Normally you should
AC_DEFINE_UNQUOTED([NET_IF],["$with_net_if"],[Default network interface.])
dnl Check for febootstrap etc.
-AC_CHECK_PROG([FEBOOTSTRAP],
- [febootstrap],[febootstrap],[no])
-if test "x$FEBOOTSTRAP" != "xno"; then
- AC_CHECK_PROG([FEBOOTSTRAP_RUN],
- [febootstrap-run],[febootstrap-run],[no])
- test "x$FEBOOTSTRAP_RUN" = "xno" && \
- AC_MSG_ERROR([febootstrap-run must be installed])
- AC_CHECK_PROG([FEBOOTSTRAP_INSTALL],
- [febootstrap-install],[febootstrap-install],[no])
- test "x$FEBOOTSTRAP_INSTALL" = "xno" && \
- AC_MSG_ERROR([febootstrap-install must be installed])
- AC_CHECK_PROG([FEBOOTSTRAP_MINIMIZE],
- [febootstrap-minimize],[febootstrap-minimize],[no])
- test "x$FEBOOTSTRAP_MINIMIZE" = "xno" && \
- AC_MSG_ERROR([febootstrap-minimize must be installed])
- AC_CHECK_PROG([FEBOOTSTRAP_TO_INITRAMFS],
- [febootstrap-to-initramfs],[febootstrap-to-initramfs],[no])
- test "x$FEBOOTSTRAP_TO_INITRAMFS" = "xno" && \
- AC_MSG_ERROR([febootstrap-to-initramfs must be installed])
-
- dnl Check we have fakechroot >= 2.9 (it's an indirect requirement
- dnl of febootstrap, but old versions will fail with yum).
- AC_CHECK_PROG([FAKECHROOT],
- [fakechroot],[fakechroot],[no])
- test "x$FAKECHROOT" = "xno" && \
- AC_MSG_ERROR([fakechroot must be installed])
-
- AC_MSG_CHECKING([fakechroot version])
- fakechroot_version=`$FAKECHROOT --version | awk '{print $3}'`
- if test -z "$fakechroot_version"; then
- AC_MSG_RESULT([failed])
- AC_MSG_WARN([fakechroot --version command failed, proceeding anyway])
- else
- AC_MSG_RESULT([$fakechroot_version])
- fakechroot_major=`echo "$fakechroot_version" | awk -F. '{print $1}'`
- fakechroot_minor=`echo "$fakechroot_version" | awk -F. '{print $2}'`
- if test "$fakechroot_major" -lt 2 -o \
+if test "x$enable_appliance" = "xyes"; then
+ AC_CHECK_PROG([FEBOOTSTRAP],
+ [febootstrap],[febootstrap],[no])
+ if test "x$FEBOOTSTRAP" != "xno"; then
+ AC_CHECK_PROG([FEBOOTSTRAP_RUN],
+ [febootstrap-run],[febootstrap-run],[no])
+ test "x$FEBOOTSTRAP_RUN" = "xno" && \
+ AC_MSG_ERROR([febootstrap-run must be installed])
+ AC_CHECK_PROG([FEBOOTSTRAP_INSTALL],
+ [febootstrap-install],[febootstrap-install],[no])
+ test "x$FEBOOTSTRAP_INSTALL" = "xno" && \
+ AC_MSG_ERROR([febootstrap-install must be installed])
+ AC_CHECK_PROG([FEBOOTSTRAP_MINIMIZE],
+ [febootstrap-minimize],[febootstrap-minimize],[no])
+ test "x$FEBOOTSTRAP_MINIMIZE" = "xno" && \
+ AC_MSG_ERROR([febootstrap-minimize must be installed])
+ AC_CHECK_PROG([FEBOOTSTRAP_TO_INITRAMFS],
+ [febootstrap-to-initramfs],[febootstrap-to-initramfs],[no])
+ test "x$FEBOOTSTRAP_TO_INITRAMFS" = "xno" && \
+ AC_MSG_ERROR([febootstrap-to-initramfs must be installed])
+
+ dnl Check we have fakechroot >= 2.9 (it's an indirect requirement
+ dnl of febootstrap, but old versions will fail with yum).
+ AC_CHECK_PROG([FAKECHROOT],
+ [fakechroot],[fakechroot],[no])
+ test "x$FAKECHROOT" = "xno" && \
+ AC_MSG_ERROR([fakechroot must be installed])
+
+ AC_MSG_CHECKING([fakechroot version])
+ fakechroot_version=`$FAKECHROOT --version | awk '{print $3}'`
+ if test -z "$fakechroot_version"; then
+ AC_MSG_RESULT([failed])
+ AC_MSG_WARN([fakechroot --version command failed, proceeding anyway])
+ else
+ AC_MSG_RESULT([$fakechroot_version])
+ fakechroot_major=`echo "$fakechroot_version" | awk -F. '{print $1}'`
+ fakechroot_minor=`echo "$fakechroot_version" | awk -F. '{print $2}'`
+ if test "$fakechroot_major" -lt 2 -o \
\( "$fakechroot_major" -eq 2 -a "$fakechroot_minor" -lt 9 \); then
- AC_MSG_ERROR([fakechroot version must be >= 2.9])
- fi
- fi
- DIST="REDHAT"
-else
- # check for debootstrap and debirf
- AC_CHECK_PROG([DEBOOTSTRAP],
- [debootstrap],[debootstrap],[no])
- test "x$DEBOOTSTRAP" = "xno" && \
- AC_MSG_ERROR([Either febootstrap or debootstrap must be installed])
- AC_CHECK_PROG([DEBIRF],[debirf],[debirf],[no])
- test "x$DEBIRF" = "xno" &&
- AC_MSG_ERROR([debirf must be installed])
- DIST="DEBIAN"
- case "$host_cpu" in
+ AC_MSG_ERROR([fakechroot version must be >= 2.9])
+ fi
+ fi
+ DIST="REDHAT"
+ else
+ # check for debootstrap and debirf
+ AC_CHECK_PROG([DEBOOTSTRAP],
+ [debootstrap],[debootstrap],[no])
+ test "x$DEBOOTSTRAP" = "xno" && \
+ AC_MSG_ERROR([Either febootstrap or debootstrap must be installed])
+ AC_CHECK_PROG([DEBIRF],[debirf],[debirf],[no])
+ test "x$DEBIRF" = "xno" &&
+ AC_MSG_ERROR([debirf must be installed])
+ DIST="DEBIAN"
+ case "$host_cpu" in
*86)
DEBIAN_KERNEL_ARCH=486
;;
*)
DEBIAN_KERNEL_ARCH=$host_cpu
;;
- esac
- AC_SUBST(DEBIAN_KERNEL_ARCH)
-fi
-AC_SUBST(DIST)
+ esac
+ AC_SUBST(DEBIAN_KERNEL_ARCH)
+ fi
+ AC_SUBST(DIST)
+ dnl --with-updates to specify a Fedora updates repository.
+ AC_ARG_WITH([updates],
+ [AS_HELP_STRING([--with-updates],
+ [set name of Fedora updates repository @<:@default=updates-released-f11@:>@])],
+ [],
+ [with_updates=updates-released-f11])
+ UPDATES="$with_updates"
+ AC_SUBST(UPDATES)
+
+ dnl --with-mirror to specify a local Fedora mirror.
+ AC_ARG_WITH([mirror],
+ [AS_HELP_STRING([--with-mirror],
+ [set URI of a local Fedora mirror])],
+ [],
+ [with_mirror=])
+ MIRROR="$with_mirror"
+ AC_SUBST(MIRROR)
+fi
dnl --with-repo to specify a Fedora repository.
AC_ARG_WITH([repo],
AC_SUBST(REPO)
AC_DEFINE_UNQUOTED([REPO],["$REPO"],[Name of Fedora repository.])
-dnl --with-updates to specify a Fedora updates repository.
-AC_ARG_WITH([updates],
- [AS_HELP_STRING([--with-updates],
- [set name of Fedora updates repository @<:@default=updates-released-f11@:>@])],
- [],
- [with_updates=updates-released-f11])
-UPDATES="$with_updates"
-AC_SUBST(UPDATES)
-
-dnl Define a symbol for the host CPU architecture.
-AC_DEFINE_UNQUOTED([host_cpu],["$host_cpu"],[Host architecture.])
-
-dnl --with-mirror to specify a local Fedora mirror.
-AC_ARG_WITH([mirror],
- [AS_HELP_STRING([--with-mirror],
- [set URI of a local Fedora mirror])],
- [],
- [with_mirror=])
-MIRROR="$with_mirror"
-AC_SUBST(MIRROR)
-
dnl Build the supermin appliance? Please see README file before
dnl enabling this option.
AC_ARG_ENABLE([supermin],
AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([0.17])
-dnl libxml2 is used by the hivex library.
-PKG_CHECK_MODULES([LIBXML2], [libxml-2.0])
-AC_SUBST([LIBXML2_CFLAGS])
-AC_SUBST([LIBXML2_LIBS])
+dnl hivex library (highly recommended).
+dnl This used to be a part of libguestfs, but was spun off into its
+dnl own separate upstream project in libguestfs 1.0.85.
+HAVE_HIVEX=yes
+PKG_CHECK_MODULES([HIVEX], [hivex],,[
+ HAVE_HIVEX=no
+ AC_MSG_WARN([Hivex library and headers are missing, so optional Windows Registry tools won't be built])])
+AM_CONDITIONAL([HAVE_HIVEX],[test "x$HAVE_HIVEX" = "xyes"])
+AC_SUBST([HIVEX_CFLAGS])
+AC_SUBST([HIVEX_LIBS])
+
+dnl FUSE is optional to build the FUSE module.
+HAVE_FUSE=yes
+PKG_CHECK_MODULES([FUSE],[fuse],,[
+ HAVE_FUSE=no
+ AC_MSG_WARN([FUSE library and headers are missing, so optional FUSE module won't be built])])
+AM_CONDITIONAL([HAVE_FUSE],[test "x$HAVE_FUSE" = "xyes"])
dnl Check for OCaml (optional, for OCaml bindings).
AC_PROG_OCAML
AC_PROG_FINDLIB
AM_CONDITIONAL([HAVE_OCAML],[test "x$OCAMLC" != "xno" -a "x$OCAMLFIND" != "xno"])
-dnl Optional xml-light for building virt-inspector language bindings
-dnl from the virt-inspector.rng file.
+dnl Optional xml-light for running the generator.
OCAML_PKG_xml_light=no
if test "x$OCAMLC" != "xno" -a "x$OCAMLFIND" != "xno"; then
AC_CHECK_OCAML_PKG([xml-light])
AC_SUBST(MAX_PROC_NR)
dnl Run in subdirs.
-AC_CONFIG_SUBDIRS([daemon])
+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([appliance/make.sh],
- [chmod +x appliance/make.sh])
AC_CONFIG_FILES([appliance/update.sh],
[chmod +x appliance/update.sh])
AC_CONFIG_FILES([appliance/supermin-split.sh],
[chmod +x appliance/supermin-split.sh])
AC_CONFIG_FILES([appliance/supermin-make.sh],
[chmod +x appliance/supermin-make.sh])
-AC_CONFIG_FILES([appliance/libguestfs-supermin-helper],
- [chmod +x appliance/libguestfs-supermin-helper])
AC_CONFIG_FILES([Makefile
src/Makefile fish/Makefile po/Makefile.in examples/Makefile
appliance/Makefile
libguestfs.pc
gnulib/lib/Makefile
gnulib/tests/Makefile
- hivex/Makefile
+ fuse/Makefile
ocaml/META perl/Makefile.PL])
AC_OUTPUT
echo
echo "This is how we have configured the optional components for you today:"
echo
+echo "Daemon .............................. $enable_daemon"
+echo "Appliance ........................... $enable_appliance"
echo "QEMU ................................ $QEMU"
echo -n "OCaml bindings ...................... "
if test "x$HAVE_OCAML_TRUE" = "x"; then echo "yes"; else echo "no"; fi
echo -n "Java bindings ....................... "
if test "x$HAVE_JAVA_TRUE" = "x"; then echo "yes"; else echo "no"; fi
echo -n "Haskell bindings .................... "
-if test "x$HAVE_HASKELL" = "x"; then echo "yes"; else echo "no"; fi
+if test "x$HAVE_HASKELL_TRUE" = "x"; then echo "yes"; else echo "no"; fi
echo -n "virt-inspector ...................... "
-if test "x$HAVE_INSPECTOR" = "x"; then echo "yes"; else echo "no"; fi
+if test "x$HAVE_INSPECTOR_TRUE" = "x"; then echo "yes"; else echo "no"; fi
echo -n "virt-* tools ........................ "
-if test "x$HAVE_TOOLS" = "x"; then echo "yes"; else echo "no"; fi
+if test "x$HAVE_TOOLS_TRUE" = "x"; then echo "yes"; else echo "no"; fi
echo "supermin appliance .................. $enable_supermin"
+echo "FUSE filesystem ..................... $HAVE_FUSE"
echo
echo "If any optional component is configured 'no' when you expected 'yes'"
echo "then you should check the preceeding messages."