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