always include <config.h>
[libguestfs.git] / configure.ac
1 # libguestfs
2 # Copyright (C) 2009 Red Hat Inc.
3 #
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 2 of the License, or
7 # (at your option) any later version.
8 #
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
18 # major/minor/release must be numbers
19 m4_define([libguestfs_major],   [1])
20 m4_define([libguestfs_minor],   [0])
21 m4_define([libguestfs_release], [65])
22 # extra can be any string
23 m4_define([libguestfs_extra],   [])
24
25 AC_INIT([libguestfs],libguestfs_major.libguestfs_minor.libguestfs_release[]libguestfs_extra)
26 AM_INIT_AUTOMAKE([foreign])
27
28 AC_CONFIG_MACRO_DIR([m4])
29
30 AC_PROG_LIBTOOL
31
32 dnl Split up the version string.
33 AC_DEFINE([PACKAGE_VERSION_MAJOR],[libguestfs_major],[Major version number])
34 AC_DEFINE([PACKAGE_VERSION_MINOR],[libguestfs_minor],[Minor version number])
35 AC_DEFINE([PACKAGE_VERSION_RELEASE],[libguestfs_release],[Release number])
36 AC_DEFINE([PACKAGE_VERSION_EXTRA],["libguestfs_extra"],[Extra version string])
37
38 dnl Check for basic C environment.
39 AC_PROG_CC_STDC
40 AC_PROG_INSTALL
41 AC_PROG_CPP
42
43 AC_C_PROTOTYPES
44 test "x$U" != "x" && AC_MSG_ERROR([Compiler not ANSI compliant])
45
46 AM_PROG_CC_C_O
47
48 dnl Check support for 64 bit file offsets.
49 AC_SYS_LARGEFILE
50
51 dnl Check sizeof long.
52 AC_CHECK_SIZEOF([long])
53
54 dnl Headers.
55 AC_CHECK_HEADERS([errno.h sys/types.h sys/un.h sys/wait.h sys/socket.h])
56
57 dnl Check for rpcgen and XDR library.  rpcgen is optional.
58 AC_CHECK_PROG([RPCGEN],[rpcgen],[rpcgen],[no])
59 AM_CONDITIONAL([HAVE_RPCGEN],[test "x$RPCGEN" != "xno"])
60 AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[
61         AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl])
62         ])
63
64 dnl Check for pod2man and pod2text.
65 AC_CHECK_PROG([POD2MAN],[pod2man],[pod2man],[no])
66 test "x$POD2MAN" = "xno" &&
67      AC_MSG_ERROR([pod2man must be installed])
68 AC_CHECK_PROG([POD2TEXT],[pod2text],[pod2text],[no])
69 test "x$POD2TEXT" = "xno" &&
70      AC_MSG_ERROR([pod2text must be installed])
71
72 dnl Check for mksquashfs.
73 AC_PATH_PROGS([MKSQUASHFS],[mksquashfs],[no],
74         [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin])
75 test "x$MKSQUASHFS" = "xno" && AC_MSG_ERROR([mksquashfs must be installed])
76
77 dnl Check for QEMU for running binaries on this $host_cpu, fall
78 dnl back to basic 'qemu'.  Allow the user to override it.
79 default_qemu="qemu-kvm qemu-system-$host_cpu qemu"
80 AC_ARG_WITH([qemu],
81         [AS_HELP_STRING([--with-qemu],
82           [set default QEMU binary @<:@default=[qemu-kvm] qemu-system-<host> qemu@:>@])],
83         [],
84         [with_qemu="$default_qemu"])
85 AC_PATH_PROGS([QEMU],[$with_qemu],[no],
86         [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/libexec])
87 test "x$QEMU" = "xno" && AC_MSG_ERROR([qemu must be installed])
88 AC_DEFINE_UNQUOTED([QEMU],["$QEMU"],[Location of qemu binary.])
89
90 dnl Check that the chosen qemu has vmchannel support.
91 dnl http://lists.gnu.org/archive/html/qemu-devel/2009-02/msg01042.html
92 if test "x$vmchannel_test" != "xno"; then
93     AC_MSG_CHECKING([for "guestfwd" support in $QEMU])
94     if $QEMU --help | grep -sq guestfwd; then
95         AC_MSG_RESULT([yes])
96     else
97         AC_MSG_RESULT([no])
98         AC_MSG_CHECKING([for "-net channel" support in $QEMU])
99         vmchannelout=`$QEMU -net channel /dev/zero 2>&1 ||:`
100         echo "vmchannel test command output: $vmchannelout" >&AS_MESSAGE_LOG_FD
101         if echo "$vmchannelout" | grep -sq "vmchannel wrong port number" ; then
102             AC_MSG_RESULT([yes])
103         else
104             AC_MSG_RESULT([no])
105             AC_MSG_FAILURE(
106 [I did not find vmchannel support in $QEMU.
107
108 vmchannel support is vital for libguestfs to operate.  You need a version
109 of qemu >= 0.10, or the following patch backported to earlier versions:
110
111 http://lists.gnu.org/archive/html/qemu-devel/2009-02/msg01042.html
112
113 You can override this test by setting the environment variable
114 vmchannel_test=no  However if you don't have vmchannel support
115 in your qemu, then this just delays the pain.
116
117 If I am using the wrong qemu or you want to compile qemu from source
118 and install it in another location, then you should configure with
119 the --with-qemu option.
120 ])
121         fi
122     fi
123 fi
124
125 dnl Set drive interface used by the guestfs_add_drive{,_ro} calls
126 dnl ('-drive ...,if=...' option to qemu).
127 dnl
128 dnl NB. We will change the default in future to virtio, but at the
129 dnl moment this causes a performance problem, RHBZ#509383.
130 AC_ARG_WITH([drive-if],
131         [AS_HELP_STRING([--with-drive-if],
132           [set default driver (ide|scsi|virtio) @<:@default=ide@:>@])],
133         [],
134         [with_drive_if=ide])
135 AC_DEFINE_UNQUOTED([DRIVE_IF],["$with_drive_if"],[Default drive interface.])
136
137 dnl Check for febootstrap etc.
138 AC_CHECK_PROG([FEBOOTSTRAP],
139         [febootstrap],[febootstrap],[no])
140 if test "x$FEBOOTSTRAP" != "xno"; then
141   AC_CHECK_PROG([FEBOOTSTRAP_RUN],
142         [febootstrap-run],[febootstrap-run],[no])
143   test "x$FEBOOTSTRAP_RUN" = "xno" && \
144      AC_MSG_ERROR([febootstrap-run must be installed])
145   AC_CHECK_PROG([FEBOOTSTRAP_INSTALL],
146         [febootstrap-install],[febootstrap-install],[no])
147   test "x$FEBOOTSTRAP_INSTALL" = "xno" && \
148      AC_MSG_ERROR([febootstrap-install must be installed])
149   AC_CHECK_PROG([FEBOOTSTRAP_MINIMIZE],
150         [febootstrap-minimize],[febootstrap-minimize],[no])
151   test "x$FEBOOTSTRAP_MINIMIZE" = "xno" && \
152      AC_MSG_ERROR([febootstrap-minimize must be installed])
153   AC_CHECK_PROG([FEBOOTSTRAP_TO_INITRAMFS],
154         [febootstrap-to-initramfs],[febootstrap-to-initramfs],[no])
155   test "x$FEBOOTSTRAP_TO_INITRAMFS" = "xno" && \
156      AC_MSG_ERROR([febootstrap-to-initramfs must be installed])
157
158   dnl Check we have fakechroot >= 2.9 (it's an indirect requirement
159   dnl of febootstrap, but old versions will fail with yum).
160   AC_CHECK_PROG([FAKECHROOT],
161         [fakechroot],[fakechroot],[no])
162   test "x$FAKECHROOT" = "xno" && \
163     AC_MSG_ERROR([fakechroot must be installed])
164
165   AC_MSG_CHECKING([fakechroot version])
166   fakechroot_version=`$FAKECHROOT --version | awk '{print $3}'`
167   if test -z "$fakechroot_version"; then
168     AC_MSG_RESULT([failed])
169     AC_MSG_WARN([fakechroot --version command failed, proceeding anyway])
170   else
171     AC_MSG_RESULT([$fakechroot_version])
172     fakechroot_major=`echo "$fakechroot_version" | awk -F. '{print $1}'`
173     fakechroot_minor=`echo "$fakechroot_version" | awk -F. '{print $2}'`
174     if test "$fakechroot_major" -lt 2 -o \
175             \( "$fakechroot_major" -eq 2 -a "$fakechroot_minor" -lt 9 \); then
176         AC_MSG_ERROR([fakechroot version must be >= 2.9])
177     fi
178   fi
179   DIST="REDHAT"
180 else
181   # check for debootstrap and debirf
182   AC_CHECK_PROG([DEBOOTSTRAP],
183         [debootstrap],[debootstrap],[no])
184   test "x$DEBOOTSTRAP" = "xno" && \
185         AC_MSG_ERROR([Either febootstrap or debootstrap must be installed])
186   AC_CHECK_PROG([DEBIRF],[debirf],[debirf],[no])
187   test "x$DEBIRF" = "xno" &&
188         AC_MSG_ERROR([debirf must be installed])
189   DIST="DEBIAN"
190   case "$host_cpu" in
191       *86)
192           DEBIAN_KERNEL_ARCH=486
193           ;;
194       x86_64)
195           DEBIAN_KERNEL_ARCH=amd64
196           ;;
197       *)
198          DEBIAN_KERNEL_ARCH=$host_cpu
199          ;;
200    esac
201    AC_SUBST(DEBIAN_KERNEL_ARCH)
202 fi
203 AC_SUBST(DIST)
204
205
206 dnl --with-repo to specify a Fedora repository.
207 AC_ARG_WITH([repo],
208         [AS_HELP_STRING([--with-repo],
209           [set name of Fedora repository @<:@default=fedora-11@:>@])],
210         [],
211         [with_repo=fedora-11])
212 REPO="$with_repo"
213 AC_SUBST(REPO)
214 AC_DEFINE_UNQUOTED([REPO],["$REPO"],[Name of Fedora repository.])
215
216 dnl --with-updates to specify a Fedora updates repository.
217 AC_ARG_WITH([updates],
218         [AS_HELP_STRING([--with-updates],
219           [set name of Fedora updates repository @<:@default=updates-released-f11@:>@])],
220         [],
221         [with_updates=updates-released-f11])
222 UPDATES="$with_updates"
223 AC_SUBST(UPDATES)
224
225 dnl Define a symbol for the host CPU architecture.
226 AC_DEFINE_UNQUOTED([host_cpu],["$host_cpu"],[Host architecture.])
227
228 dnl --with-mirror to specify a local Fedora mirror.
229 AC_ARG_WITH([mirror],
230         [AS_HELP_STRING([--with-mirror],
231           [set URI of a local Fedora mirror])],
232         [],
233         [with_mirror=])
234 MIRROR="$with_mirror"
235 AC_SUBST(MIRROR)
236
237 dnl Build the supermin appliance?  Please see README file before
238 dnl enabling this option.
239 AC_ARG_ENABLE([supermin],
240         [AS_HELP_STRING([--enable-supermin],
241           [enable supermin appliance (see README) @<:@default=no@:>@])],
242         [],
243         [enable_supermin=no])
244 AM_CONDITIONAL([SUPERMIN],[test "x$enable_supermin" = "xyes"])
245
246 if test "x$enable_supermin" = "xyes"; then
247     dnl Check febootstrap-to-initramfs accepts the --files option
248     dnl (febootstrap >= 2.2).
249     AC_MSG_CHECKING([for --files support in $FEBOOTSTRAP_TO_INITRAMFS])
250     out=`$FEBOOTSTRAP_TO_INITRAMFS 2>&1 ||:`
251     echo "febootstrap_to_initramfs test command output: $out" >&AS_MESSAGE_LOG_FD
252     if ! echo "$out" | grep -sq -e --files ; then
253         AC_MSG_RESULT([no])
254         AC_MSG_FAILURE(
255 [febootstrap-to-initramfs does not support the --files option.
256
257 To build the supermin appliance, you need to upgrade to the latest
258 version of febootstrap.
259 ])
260     fi
261     AC_MSG_RESULT([yes])
262
263     dnl Check febootstrap-to-initramfs accepts the --nocompress option
264     dnl (febootstrap >= 2.3).
265     AC_MSG_CHECKING([for --nocompress support in $FEBOOTSTRAP_TO_INITRAMFS])
266     out=`$FEBOOTSTRAP_TO_INITRAMFS 2>&1 ||:`
267     echo "febootstrap_to_initramfs test command output: $out" >&AS_MESSAGE_LOG_FD
268     if ! echo "$out" | grep -sq -e --nocompress ; then
269         AC_MSG_RESULT([no])
270         AC_MSG_FAILURE(
271 [febootstrap-to-initramfs does not support the --nocompress option.
272
273 To build the supermin appliance, you need to upgrade to the latest
274 version of febootstrap.
275 ])
276     fi
277     AC_MSG_RESULT([yes])
278 fi
279
280 dnl Readline.
281 AC_ARG_WITH([readline],
282     [AS_HELP_STRING([--with-readline],
283         [support fancy command line editing @<:@default=check@:>@])],
284     [],
285     [with_readline=check])
286
287 LIBREADLINE=
288 AS_IF([test "x$with_readline" != xno],
289     [AC_CHECK_LIB([readline], [main],
290         [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
291          AC_DEFINE([HAVE_LIBREADLINE], [1],
292                    [Define if you have libreadline])
293         ],
294         [if test "x$with_readline" != xcheck; then
295          AC_MSG_FAILURE(
296              [--with-readline was given, but test for readline failed])
297          fi
298         ], -lncurses)])
299
300 dnl For i18n.
301 AM_GNU_GETTEXT([external])
302 AM_GNU_GETTEXT_VERSION([0.14])
303
304 dnl Check for OCaml (optional, for OCaml bindings).
305 AC_PROG_OCAML
306 AC_PROG_FINDLIB
307 AM_CONDITIONAL([HAVE_OCAML],[test "x$OCAMLC" != "xno" -a "x$OCAMLFIND" != "xno"])
308
309 dnl Check for Perl (optional, for Perl bindings).
310 dnl XXX This isn't quite right, we should check for Perl devel library.
311 AC_CHECK_PROG([PERL],[perl],[perl],[no])
312
313 dnl Check for Perl modules that must be present to compile and
314 dnl test the Perl bindings.
315 missing_perl_modules=no
316 for pm in Test::More Test::Pod Test::Pod::Coverage ExtUtils::MakeMaker; do
317     AC_MSG_CHECKING([for $pm])
318     if ! perl -M$pm -e1 >/dev/null 2>&1; then
319         AC_MSG_RESULT([no])
320         missing_perl_modules=yes
321     else
322         AC_MSG_RESULT([yes])
323     fi
324 done
325 if test "x$missing_perl_modules" = "xyes"; then
326     AC_MSG_WARN([some Perl modules required to compile or test the Perl bindings are missing])
327 fi
328
329 AM_CONDITIONAL([HAVE_PERL],
330     [test "x$PERL" != "xno" -a "x$missing_perl_modules" != "xyes"])
331
332 dnl Check for Python (optional, for Python bindings).
333 AC_CHECK_PROG([PYTHON],[python],[python],[no])
334
335 PYTHON_PREFIX=
336 PYTHON_VERSION=
337 PYTHON_INCLUDEDIR=
338 PYTHON_SITE_PACKAGES=
339
340 if test "x$PYTHON" != "xno"; then
341     PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
342     PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"`
343     for d in \
344         $PYTHON_PREFIX/include/python$PYTHON_VERSION \
345         /usr/include/python$PYTHON_VERSION \
346         /usr/local/include/python$PYTHON_VERSION
347     do
348         AC_MSG_CHECKING([Python.h in $d])
349         if test -r "$d/Python.h"; then
350             AC_MSG_RESULT([found])
351             PYTHON_INCLUDEDIR=$d
352             break
353         fi
354         AC_MSG_RESULT([not found])
355     done
356     for d in \
357         $PYTHON_PREFIX/lib64/python$PYTHON_VERSION/site-packages \
358         $PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages \
359         /usr/lib64/python$PYTHON_VERSION/site-packages \
360         /usr/lib/python$PYTHON_VERSION/site-packages \
361         /usr/local/lib/python$PYTHON_VERSION/site-packages
362     do
363         AC_MSG_CHECKING([for $d])
364         if test -d "$d"; then
365             AC_MSG_RESULT([found])
366             PYTHON_SITE_PACKAGES=$d
367             break
368         fi
369         AC_MSG_RESULT([not found])
370     done
371 fi
372
373 AC_SUBST(PYTHON_PREFIX)
374 AC_SUBST(PYTHON_VERSION)
375 AC_SUBST(PYTHON_INCLUDEDIR)
376 AC_SUBST(PYTHON_SITE_PACKAGES)
377
378 AM_CONDITIONAL([HAVE_PYTHON],
379     [test "x$PYTHON_INCLUDEDIR" != "x" -a "x$PYTHON_SITE_PACKAGES" != "x"])
380
381 dnl Check for Ruby and rake (optional, for Ruby bindings).
382 AC_CHECK_LIB([ruby],[ruby_init],[HAVE_LIBRUBY=1],[HAVE_LIBRUBY=0])
383 AC_CHECK_PROG([RAKE],[rake],[rake],[no])
384
385 AM_CONDITIONAL([HAVE_RUBY],
386     [test "x$RAKE" != "xno" -a -n "$HAVE_LIBRUBY"])
387
388 dnl Check for Java.
389 AC_ARG_WITH(java_home,
390     [AS_HELP_STRING([--with-java-home],
391         [specify path to JDK directory @<:@default=check@:>@])],
392     [],
393     [with_java_home=check])
394
395 if test "x$with_java_home" != "xno"; then
396     if test "x$with_java_home" != "xyes" -a "x$with_java_home" != "xcheck"
397     then
398         # Reject unsafe characters in $JAVA_HOME
399         jh_lf='
400 '
401         case $JAVA_HOME in
402           *[\\\"\#\$\&\'\`$jh_lf\ \     ]*)
403             AC_MSG_FAILURE([unsafe \$JAVA_HOME directory (use --with-java-home=no to disable Java support)]);;
404         esac
405         if test -d "$with_java_home"; then
406             JAVA_HOME="$with_java_home"
407         else
408             AC_MSG_FAILURE([$with_java_home is not a directory (use --with-java-home=no to disable Java support)])
409         fi
410     fi
411
412     if test "x$JAVA_HOME" = "x"; then
413         # Look for Java in some likely locations.
414         for d in \
415             /usr/lib/jvm/java \
416             /usr/lib/jvm/java-6-openjdk
417         do
418             if test -d $d -a -f $d/bin/java; then
419                 JAVA_HOME=$d
420                 break
421             fi
422         done
423     fi
424
425     if test "x$JAVA_HOME" != "x"; then
426         AC_MSG_CHECKING(for JDK in $JAVA_HOME)
427         if test ! -x "$JAVA_HOME/bin/java"; then
428             AC_MSG_ERROR([missing $JAVA_HOME/bin/java binary (use --with-java-home=no to disable Java support)])
429         else
430             JAVA="$JAVA_HOME/bin/java"
431         fi
432         if test ! -x "$JAVA_HOME/bin/javac"; then
433             AC_MSG_ERROR([missing $JAVA_HOME/bin/javac binary])
434         else
435             JAVAC="$JAVA_HOME/bin/javac"
436         fi
437         if test ! -x "$JAVA_HOME/bin/javah"; then
438             AC_MSG_ERROR([missing $JAVA_HOME/bin/javah binary])
439         else
440             JAVAH="$JAVA_HOME/bin/javah"
441         fi
442         if test ! -x "$JAVA_HOME/bin/javadoc"; then
443             AC_MSG_ERROR([missing $JAVA_HOME/bin/javadoc binary])
444         else
445             JAVADOC="$JAVA_HOME/bin/javadoc"
446         fi
447         if test ! -x "$JAVA_HOME/bin/jar"; then
448             AC_MSG_ERROR([missing $JAVA_HOME/bin/jar binary])
449         else
450             JAR="$JAVA_HOME/bin/jar"
451         fi
452         java_version=`$JAVA -version 2>&1 | grep "java version"`
453         AC_MSG_RESULT(found $java_version in $JAVA_HOME)
454
455         dnl Find jni.h.
456         AC_MSG_CHECKING([for jni.h])
457         if test -f "$JAVA_HOME/include/jni.h"; then
458             JNI_CFLAGS="-I$JAVA_HOME/include"
459         else
460             if test "`find $JAVA_HOME -name jni.h`" != ""; then
461                 head=`find $JAVA_HOME -name jni.h | tail -1`
462                 dir=`dirname "$head"`
463                 JNI_CFLAGS="-I$dir"
464             else
465                 AC_MSG_FAILURE([missing jni.h header file])
466             fi
467         fi
468         AC_MSG_RESULT([$JNI_CFLAGS])
469
470         dnl Find jni_md.h.
471         AC_MSG_CHECKING([for jni_md.h])
472         case "$build_os" in
473         *linux*) system="linux" ;;
474         *SunOS*) system="solaris" ;;
475         *cygwin*) system="win32" ;;
476         *) system="$build_os" ;;
477         esac
478         if test -f "$JAVA_HOME/include/$system/jni_md.h"; then
479             JNI_CFLAGS="$JNI_CFLAGS -I$JAVA_HOME/include/$system"
480         else
481             if test "`find $JAVA_HOME -name jni_md.h`" != ""; then
482                 head=`find $JAVA_HOME -name jni_md.h | tail -1`
483                 dir=`dirname "$head"`
484                 JNI_CFLAGS="$JNI_CFLAGS -I$dir"
485             else
486                 AC_MSG_FAILURE([missing jni_md.h header file])
487             fi
488         fi
489         AC_MSG_RESULT([$JNI_CFLAGS])
490
491         dnl Need extra version flag?
492         AC_MSG_CHECKING([extra javac flags])
493         JAVAC_FLAGS=
494         javac_version=`$JAVAC -version 2>&1`
495         case "$javac_version" in
496         *Eclipse*)
497             JAVAC_FLAGS="-source 1.5" ;;
498         esac
499         AC_MSG_RESULT([$JAVAC_FLAGS])
500
501         dnl Where to install jarfiles.
502         dnl XXX How to make it configurable?
503         JAR_INSTALL_DIR=\${prefix}/share/java
504         JNI_INSTALL_DIR=\${libdir}
505
506         dnl JNI version.
507         jni_major_version=`echo "$VERSION" | awk -F. '{print $1}'`
508         jni_minor_version=`echo "$VERSION" | awk -F. '{print $2}'`
509         jni_micro_version=`echo "$VERSION" | awk -F. '{print $3}'`
510         JNI_VERSION_INFO=`expr "$jni_major_version" + "$jni_minor_version"`":$jni_micro_version:$jni_minor_version"
511     fi
512 fi
513
514 AC_SUBST(JAVA_HOME)
515 AC_SUBST(JAVA)
516 AC_SUBST(JAVAC)
517 AC_SUBST(JAVAH)
518 AC_SUBST(JAVADOC)
519 AC_SUBST(JAR)
520 AC_SUBST(JNI_CFLAGS)
521 AC_SUBST(JAVAC_FLAGS)
522 AC_SUBST(JAR_INSTALL_DIR)
523 AC_SUBST(JNI_INSTALL_DIR)
524 AC_SUBST(JNI_VERSION_INFO)
525
526 AM_CONDITIONAL([HAVE_JAVA],[test -n "$JAVAC"])
527
528 dnl Check for Haskell (GHC).
529 AC_CHECK_PROG([GHC],[ghc],[ghc],[no])
530
531 AM_CONDITIONAL([HAVE_HASKELL],
532     [test "x$GHC" != "xno"])
533
534 dnl Check for Perl modules needed by virt-df, inspector, V2V etc.
535 missing_perl_modules=no
536 for pm in Pod::Usage Getopt::Long Sys::Virt Data::Dumper XML::Writer Locale::TextDomain; do
537     AC_MSG_CHECKING([for $pm])
538     if ! perl -M$pm -e1 >/dev/null 2>&1; then
539         AC_MSG_RESULT([no])
540         missing_perl_modules=yes
541     else
542         AC_MSG_RESULT([yes])
543     fi
544 done
545 if test "x$missing_perl_modules" = "xyes"; then
546     AC_MSG_WARN([some Perl modules required to compile virt-cat, virt-df, virt-inspector and virt-v2v are missing])
547 fi
548
549 AM_CONDITIONAL([HAVE_CAT],
550     [test "x$PERL" != "xno" -a "x$missing_perl_modules" != "xyes"])
551 AM_CONDITIONAL([HAVE_DF],
552     [test "x$PERL" != "xno" -a "x$missing_perl_modules" != "xyes"])
553 AM_CONDITIONAL([HAVE_INSPECTOR],
554     [test "x$PERL" != "xno" -a "x$missing_perl_modules" != "xyes"])
555 AM_CONDITIONAL([HAVE_V2V],
556     [test "x$PERL" != "xno" -a "x$missing_perl_modules" != "xyes"])
557
558 dnl Library versioning.
559 MAX_PROC_NR=`cat $srcdir/src/MAX_PROC_NR`
560 AC_SUBST(MAX_PROC_NR)
561
562 dnl Run in subdirs.
563 AC_CONFIG_SUBDIRS([daemon])
564
565 dnl Produce output files.
566 AC_CONFIG_HEADERS([config.h])
567 dnl http://www.mail-archive.com/automake@gnu.org/msg10204.html
568 AC_CONFIG_FILES([appliance/make.sh],
569                 [chmod +x appliance/make.sh])
570 AC_CONFIG_FILES([appliance/update.sh],
571                 [chmod +x appliance/update.sh])
572 AC_CONFIG_FILES([appliance/supermin-split.sh],
573                 [chmod +x appliance/supermin-split.sh])
574 AC_CONFIG_FILES([appliance/supermin-make.sh],
575                 [chmod +x appliance/supermin-make.sh])
576 AC_CONFIG_FILES([appliance/libguestfs-supermin-helper],
577                 [chmod +x appliance/libguestfs-supermin-helper])
578 AC_CONFIG_FILES([Makefile
579                  src/Makefile fish/Makefile po/Makefile.in examples/Makefile
580                  appliance/Makefile
581                  appliance/debian/debirf.conf
582                  images/Makefile
583                  capitests/Makefile
584                  regressions/Makefile
585                  test-tool/Makefile
586                  ocaml/Makefile ocaml/examples/Makefile
587                  perl/Makefile
588                  python/Makefile
589                  ruby/Makefile ruby/Rakefile
590                  java/Makefile
591                  haskell/Makefile
592                  cat/Makefile
593                  df/Makefile
594                  inspector/Makefile
595                  v2v/Makefile
596                  libguestfs.pc
597                  ocaml/META perl/Makefile.PL])
598 AC_OUTPUT
599
600 dnl Produce summary.
601 echo
602 echo
603 echo "------------------------------------------------------------"
604 echo "Thank you for downloading $PACKAGE_STRING"
605 echo
606 echo "This is how we have configured the optional components for you today:"
607 echo
608 echo    "QEMU ................................ $QEMU"
609 echo -n "OCaml bindings ...................... "
610 if test "x$HAVE_OCAML_TRUE" = "x"; then echo "yes"; else echo "no"; fi
611 echo -n "Perl bindings ....................... "
612 if test "x$HAVE_PERL_TRUE" = "x"; then echo "yes"; else echo "no"; fi
613 echo -n "Python bindings ..................... "
614 if test "x$HAVE_PYTHON_TRUE" = "x"; then echo "yes"; else echo "no"; fi
615 echo -n "Ruby bindings ....................... "
616 if test "x$HAVE_RUBY_TRUE" = "x"; then echo "yes"; else echo "no"; fi
617 echo -n "Java bindings ....................... "
618 if test "x$HAVE_JAVA_TRUE" = "x"; then echo "yes"; else echo "no"; fi
619 echo -n "Haskell bindings .................... "
620 if test "x$HAVE_HASKELL" = "x"; then echo "yes"; else echo "no"; fi
621 echo -n "virt-cat ............................ "
622 if test "x$HAVE_CAT" = "x"; then echo "yes"; else echo "no"; fi
623 echo -n "virt-df ............................. "
624 if test "x$HAVE_DF" = "x"; then echo "yes"; else echo "no"; fi
625 echo -n "virt-inspector ...................... "
626 if test "x$HAVE_INSPECTOR" = "x"; then echo "yes"; else echo "no"; fi
627 echo -n "virt-v2v ............................ "
628 if test "x$HAVE_V2V" = "x"; then echo "yes"; else echo "no"; fi
629 echo "supermin appliance .................. $enable_supermin"
630 echo
631 echo "If any optional component is configured 'no' when you expected 'yes'"
632 echo "then you should check the preceeding messages."
633 echo
634 echo "Please report bugs back to the mailing list:"
635 echo "http://www.redhat.com/mailman/listinfo/libguestfs"
636 echo
637 echo "Next you should type 'make' to build the package,"
638 echo "then 'make check' to run the tests."
639 echo "------------------------------------------------------------"