Generate a dummy 'Fedora' fedora.img in images directory for use by tests.
[libguestfs.git] / configure.ac
index f0d6ead..2594369 100644 (file)
@@ -18,7 +18,7 @@
 # major/minor/release must be numbers
 m4_define([libguestfs_major],   [1])
 m4_define([libguestfs_minor],   [7])
-m4_define([libguestfs_release], [2])
+m4_define([libguestfs_release], [3])
 # extra can be any string
 m4_define([libguestfs_extra],   [])
 
@@ -188,15 +188,6 @@ 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"])
@@ -445,37 +436,49 @@ 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 libmagic (highly recommended)
+AC_CHECK_LIB([magic],[magic_file],
+        [AC_CHECK_HEADER([magic.h],
+                [AC_SUBST([MAGIC_LIBS], ["-lmagic"])
+                 AC_DEFINE([HAVE_LIBMAGIC],[1],[libmagic found at compile time.])
+                ], [])
+        ],
+        [AC_MSG_WARN([libmagic not found, some core features will be disabled])])
 
-dnl libxml2 (required)
-PKG_CHECK_MODULES([LIBXML2], [libxml-2.0])
-AC_SUBST([LIBXML2_CFLAGS])
-AC_SUBST([LIBXML2_LIBS])
+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 Augeas (required)
-PKG_CHECK_MODULES([AUGEAS], [augeas])
-AC_SUBST([AUGEAS_CFLAGS])
-AC_SUBST([AUGEAS_LIBS])
+dnl libvirt (highly recommended)
+PKG_CHECK_MODULES([LIBVIRT], [libvirt],
+        [AC_SUBST([LIBVIRT_CFLAGS])
+         AC_SUBST([LIBVIRT_LIBS])
+         AC_DEFINE([HAVE_LIBVIRT],[1],[libvirt found at compile time.])
+        ],
+        [AC_MSG_WARN([libvirt not found, some core features will be disabled])])
+AM_CONDITIONAL([HAVE_LIBVIRT],[test "x$LIBVIRT_LIBS" != "x"])
+
+dnl libxml2 (highly recommended)
+PKG_CHECK_MODULES([LIBXML2], [libxml-2.0],
+        [AC_SUBST([LIBXML2_CFLAGS])
+         AC_SUBST([LIBXML2_LIBS])
+         AC_DEFINE([HAVE_LIBXML2],[1],[libxml2 found at compile time.])
+        ],
+        [AC_MSG_WARN([libxml2 not found, some core features will be disabled])])
 
-dnl hivex library (required)
+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.
-PKG_CHECK_MODULES([HIVEX], [hivex])
-AC_SUBST([HIVEX_CFLAGS])
-AC_SUBST([HIVEX_LIBS])
+PKG_CHECK_MODULES([HIVEX], [hivex],
+        [AC_SUBST([HIVEX_CFLAGS])
+         AC_SUBST([HIVEX_LIBS])
+         AC_DEFINE([HAVE_HIVEX],[1],[hivex library found at compile time.])
+        ],
+        [AC_MSG_WARN([hivex not found, some core features will be disabled])])
 
 dnl FUSE is optional to build the FUSE module.
 AC_ARG_ENABLE([fuse],
@@ -512,97 +515,113 @@ AM_CONDITIONAL([HAVE_OCAML],
                [test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"])
 AM_CONDITIONAL([HAVE_XML_LIGHT],[test "x$OCAML_PKG_xml_light" != "xno"])
 
-dnl Build the OCaml viewer example.  This has a lengthy list of
-dnl dependencies and we don't attempt to detect them all.  Read
-dnl the top of ocaml/examples/viewer.ml before enabling this.
-AC_ARG_ENABLE([ocaml-viewer],
-        [AS_HELP_STRING([--enable-ocaml-viewer],
-          [enable OCaml viewer (see ocaml/examples) @<:@default=no@:>@])],
-        [],
-        [enable_ocaml_viewer=no])
-AM_CONDITIONAL([BUILD_OCAML_VIEWER],[test "x$enable_ocaml_viewer" = "xyes"])
-
 dnl Check for Perl (optional, for Perl bindings).
-dnl XXX This isn't quite right, we should check for Perl devel library.
-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 ExtUtils::MakeMaker; do
-    AC_MSG_CHECKING([for $pm])
-    if ! perl -M$pm -e1 >/dev/null 2>&1; then
-        AC_MSG_RESULT([no])
-        missing_perl_modules=yes
-    else
-        AC_MSG_RESULT([yes])
-    fi
-done
-if test "x$missing_perl_modules" = "xyes"; then
-    AC_MSG_WARN([some Perl modules required to compile or test the Perl bindings are missing])
-fi
-
+PERL=no
+AC_ARG_ENABLE([perl],
+        AS_HELP_STRING([--disable-perl], [Disable Perl language bindings]),
+        [],
+        [enable_perl=yes])
+AS_IF([test "x$enable_perl" != "xno"],
+        [
+        PERL=
+        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 ExtUtils::MakeMaker; do
+            AC_MSG_CHECKING([for $pm])
+            if ! perl -M$pm -e1 >/dev/null 2>&1; then
+                AC_MSG_RESULT([no])
+                missing_perl_modules=yes
+            else
+                AC_MSG_RESULT([yes])
+            fi
+        done
+        if test "x$missing_perl_modules" = "xyes"; then
+            AC_MSG_WARN([some Perl modules required to compile or test the Perl bindings are missing])
+        fi
+        ])
 AM_CONDITIONAL([HAVE_PERL],
     [test "x$PERL" != "xno" && test "x$missing_perl_modules" != "xyes"])
 
 dnl Check for Python (optional, for Python bindings).
-AC_CHECK_PROG([PYTHON],[python],[python],[no])
-
 PYTHON_PREFIX=
 PYTHON_VERSION=
 PYTHON_INCLUDEDIR=
 PYTHON_SITE_PACKAGES=
 
-if test "x$PYTHON" != "xno"; then
-    PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
-    PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"`
-    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
-    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_SITE_PACKAGES=$d
-            break
-        fi
-        AC_MSG_RESULT([not found])
-    done
+AC_ARG_ENABLE([python],
+        AS_HELP_STRING([--disable-python], [Disable Python language bindings]),
+        [],
+        [enable_python=yes])
+AS_IF([test "x$enable_python" != "xno"],
+        [
+        AC_CHECK_PROG([PYTHON],[python],[python],[no])
+
+        if test "x$PYTHON" != "xno"; then
+            PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
+            PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"`
+            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])
+            fi
 
-    old_LIBS="$LIBS"
-    LIBS="$LIBS -lpython$PYTHON_VERSION"
-    AC_CHECK_FUNCS([PyCapsule_New])
-    LIBS="$old_LIBS"
-fi
+            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_SITE_PACKAGES=$d
+                    break
+                fi
+                AC_MSG_RESULT([not found])
+            done
+            if test "x$PYTHON_SITE_PACKAGES" = "x"; then
+                AC_MSG_WARN([Python site-packages directory not found])
+            fi
 
-AC_SUBST(PYTHON_PREFIX)
-AC_SUBST(PYTHON_VERSION)
-AC_SUBST(PYTHON_INCLUDEDIR)
-AC_SUBST(PYTHON_SITE_PACKAGES)
+            old_LIBS="$LIBS"
+            LIBS="$LIBS -lpython$PYTHON_VERSION"
+            AC_CHECK_FUNCS([PyCapsule_New])
+            LIBS="$old_LIBS"
+        fi
 
+        AC_SUBST(PYTHON_PREFIX)
+        AC_SUBST(PYTHON_VERSION)
+        AC_SUBST(PYTHON_INCLUDEDIR)
+        AC_SUBST(PYTHON_SITE_PACKAGES)
+        ])
 AM_CONDITIONAL([HAVE_PYTHON],
     [test "x$PYTHON_INCLUDEDIR" != "x" && test "x$PYTHON_SITE_PACKAGES" != "x"])
 
 dnl Check for Ruby and rake (optional, for Ruby bindings).
-AC_CHECK_LIB([ruby],[ruby_init],[HAVE_LIBRUBY=1],[HAVE_LIBRUBY=0])
-AC_CHECK_PROG([RAKE],[rake],[rake],[no])
-
+AC_ARG_ENABLE([ruby],
+        AS_HELP_STRING([--disable-ruby], [Disable Ruby language bindings]),
+        [],
+        [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([RAKE],[rake],[rake],[no])
+        ])
 AM_CONDITIONAL([HAVE_RUBY],
     [test "x$RAKE" != "xno" && test -n "$HAVE_LIBRUBY"])
 
@@ -747,25 +766,50 @@ AC_SUBST(JNI_VERSION_INFO)
 AM_CONDITIONAL([HAVE_JAVA],[test -n "$JAVAC"])
 
 dnl Check for Haskell (GHC).
-AC_CHECK_PROG([GHC],[ghc],[ghc],[no])
-
+GHC=no
+AC_ARG_ENABLE([haskell],
+        AS_HELP_STRING([--disable-haskell], [Disable Haskell language bindings]),
+        [],
+        [enable_haskell=yes])
+AS_IF([test "x$enable_haskell" != "xno"],
+        [
+        GHC=
+        AC_CHECK_PROG([GHC],[ghc],[ghc],[no])
+        ])
 AM_CONDITIONAL([HAVE_HASKELL],
     [test "x$GHC" != "xno"])
 
+dnl PHP
+PHP=no
+AC_ARG_ENABLE([php],
+        AS_HELP_STRING([--disable-php], [Disable PHP language bindings]),
+        [],
+        [enable_php=yes])
+AS_IF([test "x$enable_php" != "xno"],
+        [
+        PHP=
+        AC_CHECK_PROG([PHP],[php],[php],[no])
+        AC_CHECK_PROG([PHPIZE],[phpize],[phpize],[no])
+        ])
+AM_CONDITIONAL([HAVE_PHP], [test "x$PHP" != "xno" && test "x$PHPIZE" != "xno"])
+
 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 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])
-        missing_perl_modules=yes
-    else
-        AC_MSG_RESULT([yes])
-    fi
-done
-if test "x$missing_perl_modules" = "xyes"; then
-    AC_MSG_WARN([some Perl modules required to compile virt-inspector and the other virt-* tools are missing])
-fi
+AS_IF([test "x$PERL" != "xno"],
+        [
+        missing_perl_modules=no
+        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])
+                missing_perl_modules=yes
+            else
+                AC_MSG_RESULT([yes])
+            fi
+        done
+        if test "x$missing_perl_modules" = "xyes"; then
+            AC_MSG_WARN([some Perl modules required to compile virt-inspector and the other virt-* tools are missing])
+        fi
+        ])
 
 AM_CONDITIONAL([HAVE_INSPECTOR],
     [test "x$PERL" != "xno" && test "x$missing_perl_modules" != "xyes"])
@@ -776,11 +820,6 @@ dnl po4a for translating man pages and POD files (optional).
 AC_CHECK_PROG([PO4A],[po4a],[po4a],[no])
 AM_CONDITIONAL([HAVE_PO4A], [test "x$PO4A" != "xno"])
 
-dnl PHP
-AC_CHECK_PROG([PHP],[php],[php],[no])
-AC_CHECK_PROG([PHPIZE],[phpize],[phpize],[no])
-AM_CONDITIONAL([HAVE_PHP], [test "x$PHP" != "xno" && test "x$PHPIZE" != "xno"])
-
 dnl Library versioning.
 MAX_PROC_NR=`cat $srcdir/src/MAX_PROC_NR`
 AC_SUBST(MAX_PROC_NR)