build: Add ./configure --disable-ocaml option.
[libguestfs.git] / configure.ac
index 0f8853d..f0d6ead 100644 (file)
@@ -17,8 +17,8 @@
 
 # major/minor/release must be numbers
 m4_define([libguestfs_major],   [1])
 
 # major/minor/release must be numbers
 m4_define([libguestfs_major],   [1])
-m4_define([libguestfs_minor],   [5])
-m4_define([libguestfs_release], [12])
+m4_define([libguestfs_minor],   [7])
+m4_define([libguestfs_release], [2])
 # extra can be any string
 m4_define([libguestfs_extra],   [])
 
 # extra can be any string
 m4_define([libguestfs_extra],   [])
 
@@ -129,6 +129,9 @@ if test "$gl_gcc_warnings" = yes; then
   # gcc 4.5.0 20090517, and it provokes warnings in cat.c, dd.c, truncate.c
   gl_WARN_ADD([-Wno-logical-op])
 
   # gcc 4.5.0 20090517, and it provokes warnings in cat.c, dd.c, truncate.c
   gl_WARN_ADD([-Wno-logical-op])
 
+  # Work around warning in src/inspect.c.  This seems to be a bug in gcc 4.5.1.
+  gl_WARN_ADD([-Wno-strict-overflow])
+
   gl_WARN_ADD([-fdiagnostics-show-option])
 
   AC_SUBST([WARN_CFLAGS])
   gl_WARN_ADD([-fdiagnostics-show-option])
 
   AC_SUBST([WARN_CFLAGS])
@@ -201,6 +204,16 @@ AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[
         AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl])
         ])
 
         AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl])
         ])
 
+dnl Check for cpio which isn't in the default Pardus install amazingly.
+AC_CHECK_PROG([CPIO],[cpio],[cpio],[no])
+test "x$CPIO" = "xno" &&
+     AC_MSG_ERROR([cpio must be installed])
+
+dnl Check for gperf.
+AC_CHECK_PROG([GPERF],[gperf],[gperf],[no])
+test "x$GPERF" = "xno" &&
+     AC_MSG_ERROR([gperf must be installed])
+
 dnl Check for pod2man and pod2text.
 AC_CHECK_PROG([POD2MAN],[pod2man],[pod2man],[no])
 test "x$POD2MAN" = "xno" &&
 dnl Check for pod2man and pod2text.
 AC_CHECK_PROG([POD2MAN],[pod2man],[pod2man],[no])
 test "x$POD2MAN" = "xno" &&
@@ -220,7 +233,7 @@ AM_CONDITIONAL([HAVE_XMLLINT],[test "x$XMLLINT" != "xno"])
 
 dnl Check for QEMU for running binaries on this $host_cpu, fall
 dnl back to basic 'qemu'.  Allow the user to override it.
 
 dnl Check for QEMU for running binaries on this $host_cpu, fall
 dnl back to basic 'qemu'.  Allow the user to override it.
-default_qemu="qemu-kvm qemu-system-$host_cpu qemu"
+default_qemu="qemu-kvm kvm qemu-system-$host_cpu qemu"
 AC_ARG_WITH([qemu],
         [AS_HELP_STRING([--with-qemu],
           [set default QEMU binary @<:@default=[qemu-kvm] qemu-system-<host> qemu@:>@])],
 AC_ARG_WITH([qemu],
         [AS_HELP_STRING([--with-qemu],
           [set default QEMU binary @<:@default=[qemu-kvm] qemu-system-<host> qemu@:>@])],
@@ -231,50 +244,24 @@ AC_PATH_PROGS([QEMU],[$with_qemu],[no],
 test "x$QEMU" = "xno" && AC_MSG_ERROR([qemu must be installed])
 AC_DEFINE_UNQUOTED([QEMU],["$QEMU"],[Location of qemu binary.])
 
 test "x$QEMU" = "xno" && AC_MSG_ERROR([qemu must be installed])
 AC_DEFINE_UNQUOTED([QEMU],["$QEMU"],[Location of qemu binary.])
 
-dnl Check that the chosen qemu has vmchannel support or we can
-dnl fallback to null vmchannel (still using SLIRP).  See the
-dnl discussion in the README file.
+dnl Check that the chosen qemu has virtio-serial support.
 if test "x$vmchannel_test" != "xno"; then
 if test "x$vmchannel_test" != "xno"; then
-    AC_MSG_CHECKING([for guestfwd support in $QEMU])
-    if $QEMU -nographic --help | grep -sq guestfwd; then
+    AC_MSG_CHECKING([for virtio-serial support in $QEMU])
+    if $QEMU -nographic -device \? 2>&1 | grep -sq virtio-serial; then
         AC_MSG_RESULT([yes])
         vmchannel_guestfwd=guestfwd
     else
         AC_MSG_RESULT([no])
         AC_MSG_RESULT([yes])
         vmchannel_guestfwd=guestfwd
     else
         AC_MSG_RESULT([no])
-        # Note that this test must be conditional on the previous
-        # 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 -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])
-            vmchannel_guestfwd=net_channel
-        else
-            AC_MSG_RESULT([no])
-            vmchannel_guestfwd=no
-        fi
-    fi
-
-    AC_MSG_CHECKING([for "-net user" (user mode network) support in $QEMU])
-    if $QEMU -nographic --help | grep -sq -- "-net user"; then
-        AC_MSG_RESULT([yes])
-        vmchannel_net_user=yes
-    else
-        AC_MSG_RESULT([no])
-        vmchannel_net_user=no
-    fi
-
-    if test "x$vmchannel_net_user" = "xno" && test "x$vmchannel_guestfwd" = "xno"; then
         AC_MSG_FAILURE(
         AC_MSG_FAILURE(
-[I did not find user mode network or vmchannel support in
+[I did not find virtio-serial support in
 $QEMU.
 
 $QEMU.
 
-Either user mode networking or vmchannel support is vital for
-libguestfs to operate.
+virtio-serial support in qemu or KVM is essential for libguestfs
+to operate.
 
 
-Please read the relevant section in the README file for more
-information about this.
+Usually this means that you have to install a newer version of qemu
+and/or KVM.  Please read the relevant section in the README file for
+more information about this.
 
 You can override this test by setting the environment variable
 vmchannel_test=no  However if you don't have the right support
 
 You can override this test by setting the environment variable
 vmchannel_test=no  However if you don't have the right support
@@ -287,7 +274,7 @@ the --with-qemu option.
     fi
 fi
 
     fi
 fi
 
-dnl Set drive interface used by the guestfs_add_drive{,_ro} calls
+dnl Set default drive interface used by the guestfs_add_drive_opts call
 dnl ('-drive ...,if=...' option to qemu).
 dnl
 dnl If you encounter performance problems with virtio (RHBZ#509383)
 dnl ('-drive ...,if=...' option to qemu).
 dnl
 dnl If you encounter performance problems with virtio (RHBZ#509383)
@@ -402,22 +389,22 @@ if test "x$enable_appliance" = "xyes"; then
     AC_SUBST(MIRROR)
 fi
 
     AC_SUBST(MIRROR)
 fi
 
-dnl --with-repo to specify a Fedora repository.
+dnl --with-repo to specify a repository.
 AC_ARG_WITH([repo],
         [AS_HELP_STRING([--with-repo],
 AC_ARG_WITH([repo],
         [AS_HELP_STRING([--with-repo],
-          [set name of Fedora repository @<:@default=fedora-12@:>@])],
+          [set name of Fedora repository @<:@default=fedora-13@:>@])],
         [],
         [],
-        [with_repo=fedora-12])
+        [with_repo=fedora-13])
 REPO="$with_repo"
 AC_SUBST(REPO)
 REPO="$with_repo"
 AC_SUBST(REPO)
-AC_DEFINE_UNQUOTED([REPO],["$REPO"],[Name of Fedora repository.])
+AC_DEFINE_UNQUOTED([REPO],["$REPO"],[Name of software repository.])
 
 dnl Build the supermin appliance?  Please see README file before
 dnl enabling this option.
 AC_ARG_ENABLE([supermin],
         [AS_HELP_STRING([--enable-supermin],
           [enable supermin appliance (see README) @<:@default=no@:>@])],
 
 dnl Build the supermin appliance?  Please see README file before
 dnl enabling this option.
 AC_ARG_ENABLE([supermin],
         [AS_HELP_STRING([--enable-supermin],
           [enable supermin appliance (see README) @<:@default=no@:>@])],
-        [],
+        [AC_DEFINE([ENABLE_SUPERMIN],[1],[Supermin appliance enabled.])],
         [enable_supermin=no])
 AM_CONDITIONAL([SUPERMIN],[test "x$enable_supermin" = "xyes"])
 
         [enable_supermin=no])
 AM_CONDITIONAL([SUPERMIN],[test "x$enable_supermin" = "xyes"])
 
@@ -483,34 +470,46 @@ PKG_CHECK_MODULES([AUGEAS], [augeas])
 AC_SUBST([AUGEAS_CFLAGS])
 AC_SUBST([AUGEAS_LIBS])
 
 AC_SUBST([AUGEAS_CFLAGS])
 AC_SUBST([AUGEAS_LIBS])
 
-dnl hivex library (highly recommended).
+dnl hivex library (required)
 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.
 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"])
+PKG_CHECK_MODULES([HIVEX], [hivex])
 AC_SUBST([HIVEX_CFLAGS])
 AC_SUBST([HIVEX_LIBS])
 
 dnl FUSE is optional to build the FUSE module.
 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"])
+AC_ARG_ENABLE([fuse],
+        AS_HELP_STRING([--disable-fuse], [Disable FUSE (guestmount) support]),
+        [],
+        [enable_fuse=yes])
+AS_IF([test "x$enable_fuse" != "xno"],
+        [PKG_CHECK_MODULES([FUSE],[fuse],,[
+                enable_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$enable_fuse" != "xno"])
 
 dnl Check for OCaml (optional, for OCaml bindings).
 
 dnl Check for OCaml (optional, for OCaml bindings).
-AC_PROG_OCAML
-AC_PROG_FINDLIB
-AM_CONDITIONAL([HAVE_OCAML],[test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"])
-
-dnl Optional xml-light for running the generator.
+OCAMLC=no
+OCAMLFIND=no
 OCAML_PKG_xml_light=no
 OCAML_PKG_xml_light=no
-if test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"; then
-    AC_CHECK_OCAML_PKG([xml-light])
-fi
+AC_ARG_ENABLE([ocaml],
+        AS_HELP_STRING([--disable-ocaml], [Disable OCaml language bindings]),
+        [],
+        [enable_ocaml=yes])
+AS_IF([test "x$enable_ocaml" != "xno"],
+        [dnl OCAMLC and OCAMLFIND have to be unset first, otherwise
+         dnl AC_CHECK_TOOL (inside AC_PROG_OCAML) will not look.
+         OCAMLC=
+         OCAMLFIND=
+         AC_PROG_OCAML
+         AC_PROG_FINDLIB
+
+         dnl Optional xml-light for running the generator.
+         if test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"; then
+             AC_CHECK_OCAML_PKG([xml-light])
+         fi])
+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
 AM_CONDITIONAL([HAVE_XML_LIGHT],[test "x$OCAML_PKG_xml_light" != "xno"])
 
 dnl Build the OCaml viewer example.  This has a lengthy list of
@@ -820,6 +819,7 @@ AC_CONFIG_FILES([Makefile
                  po-docs/Makefile
                  po-docs/ja/Makefile
                  php/Makefile
                  po-docs/Makefile
                  po-docs/ja/Makefile
                  php/Makefile
+                 csharp/Makefile
                  ocaml/META perl/Makefile.PL])
 AC_OUTPUT
 
                  ocaml/META perl/Makefile.PL])
 AC_OUTPUT
 
@@ -853,7 +853,7 @@ if test "x$HAVE_INSPECTOR_TRUE" = "x"; then echo "yes"; else echo "no"; fi
 echo -n "virt-* tools ........................ "
 if test "x$HAVE_TOOLS_TRUE" = "x"; then echo "yes"; else echo "no"; fi
 echo "supermin appliance .................. $enable_supermin"
 echo -n "virt-* tools ........................ "
 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 "FUSE filesystem ..................... $enable_fuse"
 echo
 echo "If any optional component is configured 'no' when you expected 'yes'"
 echo "then you should check the preceeding messages."
 echo
 echo "If any optional component is configured 'no' when you expected 'yes'"
 echo "then you should check the preceeding messages."