fish: Add -c/--connect and -d/--domain options.
[libguestfs.git] / configure.ac
index 69049fb..192e034 100644 (file)
@@ -17,8 +17,8 @@
 
 # major/minor/release must be numbers
 m4_define([libguestfs_major],   [1])
-m4_define([libguestfs_minor],   [0])
-m4_define([libguestfs_release], [87])
+m4_define([libguestfs_minor],   [5])
+m4_define([libguestfs_release], [2])
 # extra can be any string
 m4_define([libguestfs_extra],   [])
 
@@ -37,6 +37,33 @@ 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 ],[
+            AC_MSG_RESULT([stable])
+       ],[
+            AC_MSG_RESULT([unstable])
+            AC_MSG_NOTICE([
+***
+This is a development version of libguestfs. Some APIs may be unstable
+until they appear in a stable release of libguestfs (at which point
+the C API and ABI is guaranteed to remain stable forever).  For
+more information about stable and development branches of libguestfs
+please see the section "LIBGUESTFS VERSION NUMBERS" in guestfs(3).
+***])
+       ])
+
+dnl Die if the user tries to configure as root, see:
+dnl https://www.redhat.com/archives/libguestfs/2010-April/msg00098.html
+AC_MSG_CHECKING([if you are trying to configure as root])
+AS_IF([test "`id -u`" = 0 ],[
+            AC_MSG_RESULT([yes])
+            AC_MSG_FAILURE([Don't run './configure' or 'make' as root.])
+      ],[
+            AC_MSG_RESULT([no])
+      ])
+
+dnl Early gnulib initialization.
 gl_EARLY
 gl_INIT
 
@@ -83,10 +110,11 @@ if test "$gl_gcc_warnings" = yes; then
   nw="$nw -Wmissing-format-attribute" # daemon.h's asprintf_nowarn
   nw="$nw -Winline"                 # daemon.h's asprintf_nowarn
   nw="$nw -Wshadow"                 # numerous, plus we're not unanimous
-  # ?? -Wstrict-overflow
   nw="$nw -Wunsafe-loop-optimizations" # just a warning that an optimization
                                     # was not possible, safe to ignore
   nw="$nw -Wpacked"                 # Allow attribute((packed)) on structs
+  nw="$nw -Wlong-long"              # Allow long long since it's required
+                                    # by Python, Ruby and xstrtoll.
 
   gl_MANYWARN_ALL_GCC([ws])
   gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
@@ -157,6 +185,15 @@ AC_ARG_ENABLE([appliance],
 AM_CONDITIONAL([ENABLE_APPLIANCE],[test "x$enable_appliance" = "xyes"])
 AC_MSG_RESULT([$enable_appliance])
 
+dnl Check for PCRE.
+AC_CHECK_LIB([pcre],[pcre_compile],
+        [AC_SUBST([LIBPCRE], ["-lpcre"])],
+        [AC_MSG_FAILURE(
+             [Perl Compatible Regular Expressions library (PCRE) is required])])
+AC_CHECK_HEADER([pcre.h],[],
+        [AC_MSG_FAILURE(
+             [Perl Compatible Regular Expressions library (PCRE) header file pcre.h is required])])
+
 dnl Check for rpcgen and XDR library.  rpcgen is optional.
 AC_CHECK_PROG([RPCGEN],[rpcgen],[rpcgen],[no])
 AM_CONDITIONAL([HAVE_RPCGEN],[test "x$RPCGEN" != "xno"])
@@ -294,6 +331,10 @@ if test "x$enable_appliance" = "xyes"; then
                     [febootstrap-to-initramfs],[febootstrap-to-initramfs],[no])
       test "x$FEBOOTSTRAP_TO_INITRAMFS" = "xno" && \
           AC_MSG_ERROR([febootstrap-to-initramfs must be installed])
+      AC_CHECK_PROG([FEBOOTSTRAP_TO_SUPERMIN],
+                    [febootstrap-to-supermin],[febootstrap-to-supermin],[no])
+      test "x$FEBOOTSTRAP_TO_SUPERMIN" = "xno" && \
+          AC_MSG_ERROR([febootstrap-to-supermin 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).
@@ -345,9 +386,9 @@ if test "x$enable_appliance" = "xyes"; then
     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@:>@])],
+          [set name of Fedora updates repository @<:@default=updates-released-f12@:>@])],
         [],
-        [with_updates=updates-released-f11])
+        [with_updates=updates-released-f12])
     UPDATES="$with_updates"
     AC_SUBST(UPDATES)
 
@@ -364,9 +405,9 @@ fi
 dnl --with-repo to specify a Fedora repository.
 AC_ARG_WITH([repo],
         [AS_HELP_STRING([--with-repo],
-          [set name of Fedora repository @<:@default=fedora-11@:>@])],
+          [set name of Fedora repository @<:@default=fedora-12@:>@])],
         [],
-        [with_repo=fedora-11])
+        [with_repo=fedora-12])
 REPO="$with_repo"
 AC_SUBST(REPO)
 AC_DEFINE_UNQUOTED([REPO],["$REPO"],[Name of Fedora repository.])
@@ -380,40 +421,6 @@ AC_ARG_ENABLE([supermin],
         [enable_supermin=no])
 AM_CONDITIONAL([SUPERMIN],[test "x$enable_supermin" = "xyes"])
 
-if test "x$enable_supermin" = "xyes"; then
-    dnl Check febootstrap-to-initramfs accepts the --files option
-    dnl (febootstrap >= 2.2).
-    AC_MSG_CHECKING([for --files support in $FEBOOTSTRAP_TO_INITRAMFS])
-    out=`$FEBOOTSTRAP_TO_INITRAMFS 2>&1 ||:`
-    echo "febootstrap_to_initramfs test command output: $out" >&AS_MESSAGE_LOG_FD
-    if ! echo "$out" | grep -sq -e --files ; then
-        AC_MSG_RESULT([no])
-        AC_MSG_FAILURE(
-[febootstrap-to-initramfs does not support the --files option.
-
-To build the supermin appliance, you need to upgrade to the latest
-version of febootstrap.
-])
-    fi
-    AC_MSG_RESULT([yes])
-
-    dnl Check febootstrap-to-initramfs accepts the --nocompress option
-    dnl (febootstrap >= 2.3).
-    AC_MSG_CHECKING([for --nocompress support in $FEBOOTSTRAP_TO_INITRAMFS])
-    out=`$FEBOOTSTRAP_TO_INITRAMFS 2>&1 ||:`
-    echo "febootstrap_to_initramfs test command output: $out" >&AS_MESSAGE_LOG_FD
-    if ! echo "$out" | grep -sq -e --nocompress ; then
-        AC_MSG_RESULT([no])
-        AC_MSG_FAILURE(
-[febootstrap-to-initramfs does not support the --nocompress option.
-
-To build the supermin appliance, you need to upgrade to the latest
-version of febootstrap.
-])
-    fi
-    AC_MSG_RESULT([yes])
-fi
-
 dnl Enable packet dumps when in verbose mode.  This generates lots
 dnl of debug info, only useful for people debugging the RPC mechanism.
 AC_ARG_ENABLE([packet-dump],
@@ -451,6 +458,26 @@ dnl For i18n.
 AM_GNU_GETTEXT([external])
 AM_GNU_GETTEXT_VERSION([0.17])
 
+dnl libmagic (required)
+AC_CHECK_LIB([magic],[magic_file],[
+        AC_SUBST([LIBMAGIC], ["-lmagic"])
+    ],[
+        AC_MSG_FAILURE([libmagic is required])
+    ])
+AC_CHECK_HEADER([magic.h],[],[
+        AC_MSG_FAILURE([magic.h header file is required])
+    ])
+
+dnl libvirt (required)
+PKG_CHECK_MODULES([LIBVIRT], [libvirt])
+AC_SUBST([LIBVIRT_CFLAGS])
+AC_SUBST([LIBVIRT_LIBS])
+
+dnl libxml2 (required)
+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.
@@ -498,7 +525,7 @@ AC_CHECK_PROG([PERL],[perl],[perl],[no])
 dnl Check for Perl modules that must be present to compile and
 dnl test the Perl bindings.
 missing_perl_modules=no
-for pm in Test::More Test::Pod Test::Pod::Coverage ExtUtils::MakeMaker; do
+for pm in Test::More ExtUtils::MakeMaker; do
     AC_MSG_CHECKING([for $pm])
     if ! perl -M$pm -e1 >/dev/null 2>&1; then
         AC_MSG_RESULT([no])
@@ -553,6 +580,11 @@ if test "x$PYTHON" != "xno"; then
         fi
         AC_MSG_RESULT([not found])
     done
+
+    old_LIBS="$LIBS"
+    LIBS="$LIBS -lpython$PYTHON_VERSION"
+    AC_CHECK_FUNCS([PyCapsule_New])
+    LIBS="$old_LIBS"
 fi
 
 AC_SUBST(PYTHON_PREFIX)
@@ -718,7 +750,7 @@ AM_CONDITIONAL([HAVE_HASKELL],
 
 dnl Check for Perl modules needed by virt-df, inspector, etc.
 missing_perl_modules=no
-for pm in Pod::Usage Getopt::Long Sys::Virt Data::Dumper XML::Writer Locale::TextDomain; do
+for pm in Pod::Usage Getopt::Long Sys::Virt Data::Dumper XML::Writer Locale::TextDomain Win::Hivex Win::Hivex::Regedit; do
     AC_MSG_CHECKING([for $pm])
     if ! perl -M$pm -e1 >/dev/null 2>&1; then
         AC_MSG_RESULT([no])
@@ -750,10 +782,6 @@ AC_CONFIG_HEADERS([config.h])
 dnl http://www.mail-archive.com/automake@gnu.org/msg10204.html
 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([Makefile
                  src/Makefile fish/Makefile po/Makefile.in examples/Makefile
                  appliance/Makefile