X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=configure.ac;h=69049fb51080812d01fcd9cdebbb9133ef96c97b;hp=88f2a964e4ac0220946a60cc733f1022f5c85f0f;hb=0c43d6378131775fd08626743975c7f2551e1c1e;hpb=792c5283009ed6753239a14df9a6e9c71bea35fd diff --git a/configure.ac b/configure.ac index 88f2a96..69049fb 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ # 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 @@ -18,7 +18,7 @@ # major/minor/release must be numbers m4_define([libguestfs_major], [1]) m4_define([libguestfs_minor], [0]) -m4_define([libguestfs_release], [74]) +m4_define([libguestfs_release], [87]) # extra can be any string m4_define([libguestfs_extra], []) @@ -116,14 +116,46 @@ test "x$U" != "x" && AC_MSG_ERROR([Compiler not ANSI compliant]) 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 Functions. +AC_CHECK_FUNCS([posix_fallocate]) + +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]) @@ -167,7 +199,7 @@ dnl fallback to null vmchannel (still using SLIRP). See the 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 @@ -176,7 +208,7 @@ if test "x$vmchannel_test" != "xno"; then # 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]) @@ -188,7 +220,7 @@ if test "x$vmchannel_test" != "xno"; then 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 @@ -221,13 +253,13 @@ fi 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 @@ -242,59 +274,60 @@ AC_ARG_WITH([net-if], 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 ;; @@ -304,11 +337,29 @@ else *) 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], @@ -320,27 +371,6 @@ REPO="$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], @@ -410,24 +440,41 @@ AS_IF([test "x$with_readline" != xno], AC_MSG_FAILURE( [--with-readline was given, but test for readline failed]) fi - ], -lncurses)]) + ], -lncurses) + old_LIBS="$LIBS" + LIBS="$LIBS $LIBREADLINE" + AC_CHECK_FUNCS([append_history completion_matches rl_completion_matches]) + LIBS="$old_LIBS" + ]) dnl For i18n. 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]) @@ -694,21 +741,19 @@ MAX_PROC_NR=`cat $srcdir/src/MAX_PROC_NR` 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 @@ -728,7 +773,7 @@ AC_CONFIG_FILES([Makefile libguestfs.pc gnulib/lib/Makefile gnulib/tests/Makefile - hivex/Makefile + fuse/Makefile ocaml/META perl/Makefile.PL]) AC_OUTPUT @@ -740,6 +785,8 @@ echo "Thank you for downloading $PACKAGE_STRING" 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 @@ -752,12 +799,13 @@ if test "x$HAVE_RUBY_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."