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