2 # Copyright (C) 2009 Red Hat Inc.
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.
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.
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.
18 # major/minor/release must be numbers
19 m4_define([libguestfs_major], [1])
20 m4_define([libguestfs_minor], [0])
21 m4_define([libguestfs_release], [80])
22 # extra can be any string
23 m4_define([libguestfs_extra], [])
25 AC_INIT([libguestfs],libguestfs_major.libguestfs_minor.libguestfs_release[]libguestfs_extra)
26 AC_CONFIG_AUX_DIR([build-aux])
27 AM_INIT_AUTOMAKE([foreign])
29 m4_ifndef([AM_SILENT_RULES], [m4_define([AM_SILENT_RULES],[])])
30 AM_SILENT_RULES([yes]) # make --enable-silent-rules the default.
32 AC_CONFIG_MACRO_DIR([m4])
34 dnl Split up the version string.
35 AC_DEFINE([PACKAGE_VERSION_MAJOR],[libguestfs_major],[Major version number])
36 AC_DEFINE([PACKAGE_VERSION_MINOR],[libguestfs_minor],[Minor version number])
37 AC_DEFINE([PACKAGE_VERSION_RELEASE],[libguestfs_release],[Release number])
38 AC_DEFINE([PACKAGE_VERSION_EXTRA],["libguestfs_extra"],[Extra version string])
45 dnl Check for basic C environment.
50 AC_ARG_ENABLE([gcc-warnings],
51 [AS_HELP_STRING([--enable-gcc-warnings],
52 [turn on lots of GCC warnings (for developers)])],
55 *) AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;;
57 gl_gcc_warnings=$enableval],
61 if test "$gl_gcc_warnings" = yes; then
62 gl_WARN_ADD([-Werror], [WERROR_CFLAGS])
63 AC_SUBST([WERROR_CFLAGS])
66 # This, $nw, is the list of warnings we disable.
67 nw="$nw -Wdeclaration-after-statement" # too useful to forbid
68 nw="$nw -Waggregate-return" # anachronistic
69 nw="$nw -Wc++-compat" # We don't care about C++ compilers
70 nw="$nw -Wundef" # Warns on '#if GNULIB_FOO' etc in gnulib
71 nw="$nw -Wtraditional" # Warns on #elif which we use often
72 nw="$nw -Wcast-qual" # Too many warnings for now
73 nw="$nw -Wconversion" # Too many warnings for now
74 nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings
75 nw="$nw -Wsign-conversion" # Too many warnings for now
76 nw="$nw -Wtraditional-conversion" # Too many warnings for now
77 nw="$nw -Wunreachable-code" # Too many warnings for now
78 nw="$nw -Wpadded" # Our structs are not padded
79 nw="$nw -Wredundant-decls" # openat.h declares e.g., mkdirat
80 nw="$nw -Wlogical-op" # any use of fwrite provokes this
81 nw="$nw -Wvla" # two warnings in mount.c
82 # things I might fix soon:
83 nw="$nw -Wmissing-format-attribute" # daemon.h's asprintf_nowarn
84 nw="$nw -Winline" # daemon.h's asprintf_nowarn
85 nw="$nw -Wshadow" # numerous, plus we're not unanimous
86 # ?? -Wstrict-overflow
87 nw="$nw -Wunsafe-loop-optimizations" # just a warning that an optimization
88 # was not possible, safe to ignore
89 nw="$nw -Wpacked" # Allow attribute((packed)) on structs
91 gl_MANYWARN_ALL_GCC([ws])
92 gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
96 gl_WARN_ADD([-Wno-unused-parameter]) # stubs.c
97 gl_WARN_ADD([-Wno-jump-misses-init]) # stubs.c
98 gl_WARN_ADD([-Wno-unused-variable]) # FIXME: only temporary, for guestfs_protocol.c, etc
100 # In spite of excluding -Wlogical-op above, it is enabled, as of
101 # gcc 4.5.0 20090517, and it provokes warnings in cat.c, dd.c, truncate.c
102 gl_WARN_ADD([-Wno-logical-op])
104 gl_WARN_ADD([-fdiagnostics-show-option])
106 AC_SUBST([WARN_CFLAGS])
108 AC_DEFINE([lint], [1], [Define to 1 if the compiler is checking for lint.])
109 AC_DEFINE([_FORTIFY_SOURCE], [2],
110 [enable compile-time and run-time bounds-checking, and some warnings])
111 AC_DEFINE([GNULIB_PORTCHECK], [1], [enable some gnulib portability checks])
115 test "x$U" != "x" && AC_MSG_ERROR([Compiler not ANSI compliant])
119 dnl Work out how to specify the linker script to the linker.
120 VERSION_SCRIPT_FLAGS=-Wl,--version-script=
121 `/usr/bin/ld --help 2>&1 | grep -- --version-script >/dev/null` || \
122 VERSION_SCRIPT_FLAGS="-Wl,-M -Wl,"
123 AC_SUBST(VERSION_SCRIPT_FLAGS)
125 dnl Check support for 64 bit file offsets.
128 dnl Check sizeof long.
129 AC_CHECK_SIZEOF([long])
132 AC_CHECK_HEADERS([errno.h sys/types.h sys/un.h sys/wait.h sys/socket.h endian.h byteswap.h])
134 dnl Check for rpcgen and XDR library. rpcgen is optional.
135 AC_CHECK_PROG([RPCGEN],[rpcgen],[rpcgen],[no])
136 AM_CONDITIONAL([HAVE_RPCGEN],[test "x$RPCGEN" != "xno"])
137 AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[
138 AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl])
141 dnl Check for pod2man and pod2text.
142 AC_CHECK_PROG([POD2MAN],[pod2man],[pod2man],[no])
143 test "x$POD2MAN" = "xno" &&
144 AC_MSG_ERROR([pod2man must be installed])
145 AC_CHECK_PROG([POD2TEXT],[pod2text],[pod2text],[no])
146 test "x$POD2TEXT" = "xno" &&
147 AC_MSG_ERROR([pod2text must be installed])
149 dnl Check for mkisofs.
150 AC_PATH_PROGS([MKISOFS],[mkisofs],[no],
151 [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin])
152 test "x$MKISOFS" = "xno" && AC_MSG_ERROR([mkisofs must be installed])
154 dnl Check for optional xmllint.
155 AC_CHECK_PROG([XMLLINT],[xmllint],[xmllint],[no])
156 AM_CONDITIONAL([HAVE_XMLLINT],[test "x$XMLLINT" != "xno"])
158 dnl Check for QEMU for running binaries on this $host_cpu, fall
159 dnl back to basic 'qemu'. Allow the user to override it.
160 default_qemu="qemu-kvm qemu-system-$host_cpu qemu"
162 [AS_HELP_STRING([--with-qemu],
163 [set default QEMU binary @<:@default=[qemu-kvm] qemu-system-<host> qemu@:>@])],
165 [with_qemu="$default_qemu"])
166 AC_PATH_PROGS([QEMU],[$with_qemu],[no],
167 [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/libexec])
168 test "x$QEMU" = "xno" && AC_MSG_ERROR([qemu must be installed])
169 AC_DEFINE_UNQUOTED([QEMU],["$QEMU"],[Location of qemu binary.])
171 dnl Check that the chosen qemu has vmchannel support or we can
172 dnl fallback to null vmchannel (still using SLIRP). See the
173 dnl discussion in the README file.
174 if test "x$vmchannel_test" != "xno"; then
175 AC_MSG_CHECKING([for guestfwd support in $QEMU])
176 if $QEMU --help | grep -sq guestfwd; then
178 vmchannel_guestfwd=guestfwd
181 # Note that this test must be conditional on the previous
182 # test failing. This is because recent qemu will throw
183 # up an SDL window and hang if we try to run this test.
184 AC_MSG_CHECKING([for "-net channel" (old guestfwd) support in $QEMU])
185 vmchannelout=`$QEMU -net channel /dev/zero 2>&1 ||:`
186 echo "vmchannel test command output: $vmchannelout" >&AS_MESSAGE_LOG_FD
187 if echo "$vmchannelout" | grep -sq "vmchannel wrong port number" ; then
189 vmchannel_guestfwd=net_channel
192 vmchannel_guestfwd=no
196 AC_MSG_CHECKING([for "-net user" (user mode network) support in $QEMU])
197 if $QEMU --help | grep -sq -- "-net user"; then
199 vmchannel_net_user=yes
202 vmchannel_net_user=no
205 if test "x$vmchannel_net_user" = "xno" -a "x$vmchannel_guestfwd" = "xno"; then
207 [I did not find user mode network or vmchannel support in
210 Either user mode networking or vmchannel support is vital for
211 libguestfs to operate.
213 Please read the relevant section in the README file for more
214 information about this.
216 You can override this test by setting the environment variable
217 vmchannel_test=no However if you don't have the right support
218 in your qemu, then this just delays the pain.
220 If I am using the wrong qemu or you want to compile qemu from source
221 and install it in another location, then you should configure with
222 the --with-qemu option.
227 dnl Set drive interface used by the guestfs_add_drive{,_ro} calls
228 dnl ('-drive ...,if=...' option to qemu).
230 dnl NB. We will change the default in future to virtio, but at the
231 dnl moment this causes a performance problem, RHBZ#509383.
232 AC_ARG_WITH([drive-if],
233 [AS_HELP_STRING([--with-drive-if],
234 [set default driver (ide|scsi|virtio) @<:@default=ide@:>@])],
237 AC_DEFINE_UNQUOTED([DRIVE_IF],["$with_drive_if"],[Default drive interface.])
239 dnl Set interface used by the network. Normally you should
240 dnl leave this at the default (virtio) but you can use the
241 dnl alternative (ne2k_pci) because of bugs in virtio networking
242 dnl eg. https://bugzilla.redhat.com/show_bug.cgi?id=516022
243 AC_ARG_WITH([net-if],
244 [AS_HELP_STRING([--with-net-if],
245 [set default net driver (virtio|ne2k_pci) @<:@default=virtio@:>@])],
247 [with_net_if=virtio])
248 AC_DEFINE_UNQUOTED([NET_IF],["$with_net_if"],[Default network interface.])
250 dnl Check for febootstrap etc.
251 AC_CHECK_PROG([FEBOOTSTRAP],
252 [febootstrap],[febootstrap],[no])
253 if test "x$FEBOOTSTRAP" != "xno"; then
254 AC_CHECK_PROG([FEBOOTSTRAP_RUN],
255 [febootstrap-run],[febootstrap-run],[no])
256 test "x$FEBOOTSTRAP_RUN" = "xno" && \
257 AC_MSG_ERROR([febootstrap-run must be installed])
258 AC_CHECK_PROG([FEBOOTSTRAP_INSTALL],
259 [febootstrap-install],[febootstrap-install],[no])
260 test "x$FEBOOTSTRAP_INSTALL" = "xno" && \
261 AC_MSG_ERROR([febootstrap-install must be installed])
262 AC_CHECK_PROG([FEBOOTSTRAP_MINIMIZE],
263 [febootstrap-minimize],[febootstrap-minimize],[no])
264 test "x$FEBOOTSTRAP_MINIMIZE" = "xno" && \
265 AC_MSG_ERROR([febootstrap-minimize must be installed])
266 AC_CHECK_PROG([FEBOOTSTRAP_TO_INITRAMFS],
267 [febootstrap-to-initramfs],[febootstrap-to-initramfs],[no])
268 test "x$FEBOOTSTRAP_TO_INITRAMFS" = "xno" && \
269 AC_MSG_ERROR([febootstrap-to-initramfs must be installed])
271 dnl Check we have fakechroot >= 2.9 (it's an indirect requirement
272 dnl of febootstrap, but old versions will fail with yum).
273 AC_CHECK_PROG([FAKECHROOT],
274 [fakechroot],[fakechroot],[no])
275 test "x$FAKECHROOT" = "xno" && \
276 AC_MSG_ERROR([fakechroot must be installed])
278 AC_MSG_CHECKING([fakechroot version])
279 fakechroot_version=`$FAKECHROOT --version | awk '{print $3}'`
280 if test -z "$fakechroot_version"; then
281 AC_MSG_RESULT([failed])
282 AC_MSG_WARN([fakechroot --version command failed, proceeding anyway])
284 AC_MSG_RESULT([$fakechroot_version])
285 fakechroot_major=`echo "$fakechroot_version" | awk -F. '{print $1}'`
286 fakechroot_minor=`echo "$fakechroot_version" | awk -F. '{print $2}'`
287 if test "$fakechroot_major" -lt 2 -o \
288 \( "$fakechroot_major" -eq 2 -a "$fakechroot_minor" -lt 9 \); then
289 AC_MSG_ERROR([fakechroot version must be >= 2.9])
294 # check for debootstrap and debirf
295 AC_CHECK_PROG([DEBOOTSTRAP],
296 [debootstrap],[debootstrap],[no])
297 test "x$DEBOOTSTRAP" = "xno" && \
298 AC_MSG_ERROR([Either febootstrap or debootstrap must be installed])
299 AC_CHECK_PROG([DEBIRF],[debirf],[debirf],[no])
300 test "x$DEBIRF" = "xno" &&
301 AC_MSG_ERROR([debirf must be installed])
305 DEBIAN_KERNEL_ARCH=486
308 DEBIAN_KERNEL_ARCH=amd64
311 DEBIAN_KERNEL_ARCH=$host_cpu
314 AC_SUBST(DEBIAN_KERNEL_ARCH)
319 dnl --with-repo to specify a Fedora repository.
321 [AS_HELP_STRING([--with-repo],
322 [set name of Fedora repository @<:@default=fedora-11@:>@])],
324 [with_repo=fedora-11])
327 AC_DEFINE_UNQUOTED([REPO],["$REPO"],[Name of Fedora repository.])
329 dnl --with-updates to specify a Fedora updates repository.
330 AC_ARG_WITH([updates],
331 [AS_HELP_STRING([--with-updates],
332 [set name of Fedora updates repository @<:@default=updates-released-f11@:>@])],
334 [with_updates=updates-released-f11])
335 UPDATES="$with_updates"
338 dnl Define a symbol for the host CPU architecture.
339 AC_DEFINE_UNQUOTED([host_cpu],["$host_cpu"],[Host architecture.])
341 dnl --with-mirror to specify a local Fedora mirror.
342 AC_ARG_WITH([mirror],
343 [AS_HELP_STRING([--with-mirror],
344 [set URI of a local Fedora mirror])],
347 MIRROR="$with_mirror"
350 dnl Build the supermin appliance? Please see README file before
351 dnl enabling this option.
352 AC_ARG_ENABLE([supermin],
353 [AS_HELP_STRING([--enable-supermin],
354 [enable supermin appliance (see README) @<:@default=no@:>@])],
356 [enable_supermin=no])
357 AM_CONDITIONAL([SUPERMIN],[test "x$enable_supermin" = "xyes"])
359 if test "x$enable_supermin" = "xyes"; then
360 dnl Check febootstrap-to-initramfs accepts the --files option
361 dnl (febootstrap >= 2.2).
362 AC_MSG_CHECKING([for --files support in $FEBOOTSTRAP_TO_INITRAMFS])
363 out=`$FEBOOTSTRAP_TO_INITRAMFS 2>&1 ||:`
364 echo "febootstrap_to_initramfs test command output: $out" >&AS_MESSAGE_LOG_FD
365 if ! echo "$out" | grep -sq -e --files ; then
368 [febootstrap-to-initramfs does not support the --files option.
370 To build the supermin appliance, you need to upgrade to the latest
371 version of febootstrap.
376 dnl Check febootstrap-to-initramfs accepts the --nocompress option
377 dnl (febootstrap >= 2.3).
378 AC_MSG_CHECKING([for --nocompress support in $FEBOOTSTRAP_TO_INITRAMFS])
379 out=`$FEBOOTSTRAP_TO_INITRAMFS 2>&1 ||:`
380 echo "febootstrap_to_initramfs test command output: $out" >&AS_MESSAGE_LOG_FD
381 if ! echo "$out" | grep -sq -e --nocompress ; then
384 [febootstrap-to-initramfs does not support the --nocompress option.
386 To build the supermin appliance, you need to upgrade to the latest
387 version of febootstrap.
393 dnl Enable packet dumps when in verbose mode. This generates lots
394 dnl of debug info, only useful for people debugging the RPC mechanism.
395 AC_ARG_ENABLE([packet-dump],
396 [AS_HELP_STRING([--enable-packet-dump],
397 [enable packet dumps in verbose mode @<:@default=no@:>@])],
398 [AC_DEFINE([ENABLE_PACKET_DUMP],[1],[Enable packet dumps in verbose mode.])],
402 AC_ARG_WITH([readline],
403 [AS_HELP_STRING([--with-readline],
404 [support fancy command line editing @<:@default=check@:>@])],
406 [with_readline=check])
409 AS_IF([test "x$with_readline" != xno],
410 [AC_CHECK_LIB([readline], [main],
411 [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
412 AC_DEFINE([HAVE_LIBREADLINE], [1],
413 [Define if you have libreadline])
415 [if test "x$with_readline" != xcheck; then
417 [--with-readline was given, but test for readline failed])
422 AM_GNU_GETTEXT([external])
423 AM_GNU_GETTEXT_VERSION([0.17])
425 dnl libxml2 is used by the hivex library.
426 PKG_CHECK_MODULES([LIBXML2], [libxml-2.0])
427 AC_SUBST([LIBXML2_CFLAGS])
428 AC_SUBST([LIBXML2_LIBS])
430 dnl FUSE is optional to build the FUSE module.
432 PKG_CHECK_MODULES([FUSE],[fuse],,[
434 AC_MSG_WARN([FUSE library and headers are missing, so optional FUSE module won't be built])])
435 AM_CONDITIONAL([HAVE_FUSE],[test "x$HAVE_FUSE" = "xyes"])
437 dnl Check for OCaml (optional, for OCaml bindings).
440 AM_CONDITIONAL([HAVE_OCAML],[test "x$OCAMLC" != "xno" -a "x$OCAMLFIND" != "xno"])
442 dnl Optional xml-light for running the generator.
443 OCAML_PKG_xml_light=no
444 if test "x$OCAMLC" != "xno" -a "x$OCAMLFIND" != "xno"; then
445 AC_CHECK_OCAML_PKG([xml-light])
447 AM_CONDITIONAL([HAVE_XML_LIGHT],[test "x$OCAML_PKG_xml_light" != "xno"])
449 dnl Build the OCaml viewer example. This has a lengthy list of
450 dnl dependencies and we don't attempt to detect them all. Read
451 dnl the top of ocaml/examples/viewer.ml before enabling this.
452 AC_ARG_ENABLE([ocaml-viewer],
453 [AS_HELP_STRING([--enable-ocaml-viewer],
454 [enable OCaml viewer (see ocaml/examples) @<:@default=no@:>@])],
456 [enable_ocaml_viewer=no])
457 AM_CONDITIONAL([BUILD_OCAML_VIEWER],[test "x$enable_ocaml_viewer" = "xyes"])
459 dnl Check for Perl (optional, for Perl bindings).
460 dnl XXX This isn't quite right, we should check for Perl devel library.
461 AC_CHECK_PROG([PERL],[perl],[perl],[no])
463 dnl Check for Perl modules that must be present to compile and
464 dnl test the Perl bindings.
465 missing_perl_modules=no
466 for pm in Test::More Test::Pod Test::Pod::Coverage ExtUtils::MakeMaker; do
467 AC_MSG_CHECKING([for $pm])
468 if ! perl -M$pm -e1 >/dev/null 2>&1; then
470 missing_perl_modules=yes
475 if test "x$missing_perl_modules" = "xyes"; then
476 AC_MSG_WARN([some Perl modules required to compile or test the Perl bindings are missing])
479 AM_CONDITIONAL([HAVE_PERL],
480 [test "x$PERL" != "xno" -a "x$missing_perl_modules" != "xyes"])
482 dnl Check for Python (optional, for Python bindings).
483 AC_CHECK_PROG([PYTHON],[python],[python],[no])
488 PYTHON_SITE_PACKAGES=
490 if test "x$PYTHON" != "xno"; then
491 PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
492 PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"`
494 $PYTHON_PREFIX/include/python$PYTHON_VERSION \
495 /usr/include/python$PYTHON_VERSION \
496 /usr/local/include/python$PYTHON_VERSION
498 AC_MSG_CHECKING([Python.h in $d])
499 if test -r "$d/Python.h"; then
500 AC_MSG_RESULT([found])
504 AC_MSG_RESULT([not found])
507 $PYTHON_PREFIX/lib64/python$PYTHON_VERSION/site-packages \
508 $PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages \
509 /usr/lib64/python$PYTHON_VERSION/site-packages \
510 /usr/lib/python$PYTHON_VERSION/site-packages \
511 /usr/local/lib/python$PYTHON_VERSION/site-packages
513 AC_MSG_CHECKING([for $d])
514 if test -d "$d"; then
515 AC_MSG_RESULT([found])
516 PYTHON_SITE_PACKAGES=$d
519 AC_MSG_RESULT([not found])
523 AC_SUBST(PYTHON_PREFIX)
524 AC_SUBST(PYTHON_VERSION)
525 AC_SUBST(PYTHON_INCLUDEDIR)
526 AC_SUBST(PYTHON_SITE_PACKAGES)
528 AM_CONDITIONAL([HAVE_PYTHON],
529 [test "x$PYTHON_INCLUDEDIR" != "x" -a "x$PYTHON_SITE_PACKAGES" != "x"])
531 dnl Check for Ruby and rake (optional, for Ruby bindings).
532 AC_CHECK_LIB([ruby],[ruby_init],[HAVE_LIBRUBY=1],[HAVE_LIBRUBY=0])
533 AC_CHECK_PROG([RAKE],[rake],[rake],[no])
535 AM_CONDITIONAL([HAVE_RUBY],
536 [test "x$RAKE" != "xno" -a -n "$HAVE_LIBRUBY"])
539 AC_ARG_WITH(java_home,
540 [AS_HELP_STRING([--with-java-home],
541 [specify path to JDK directory @<:@default=check@:>@])],
543 [with_java_home=check])
545 if test "x$with_java_home" != "xno"; then
546 if test "x$with_java_home" != "xyes" -a "x$with_java_home" != "xcheck"
548 # Reject unsafe characters in $JAVA_HOME
552 *[\\\"\#\$\&\'\`$jh_lf\ \ ]*)
553 AC_MSG_FAILURE([unsafe \$JAVA_HOME directory (use --with-java-home=no to disable Java support)]);;
555 if test -d "$with_java_home"; then
556 JAVA_HOME="$with_java_home"
558 AC_MSG_FAILURE([$with_java_home is not a directory (use --with-java-home=no to disable Java support)])
562 if test "x$JAVA_HOME" = "x"; then
563 # Look for Java in some likely locations.
566 /usr/lib/jvm/java-6-openjdk
568 if test -d $d -a -f $d/bin/java; then
575 if test "x$JAVA_HOME" != "x"; then
576 AC_MSG_CHECKING(for JDK in $JAVA_HOME)
577 if test ! -x "$JAVA_HOME/bin/java"; then
578 AC_MSG_ERROR([missing $JAVA_HOME/bin/java binary (use --with-java-home=no to disable Java support)])
580 JAVA="$JAVA_HOME/bin/java"
582 if test ! -x "$JAVA_HOME/bin/javac"; then
583 AC_MSG_ERROR([missing $JAVA_HOME/bin/javac binary])
585 JAVAC="$JAVA_HOME/bin/javac"
587 if test ! -x "$JAVA_HOME/bin/javah"; then
588 AC_MSG_ERROR([missing $JAVA_HOME/bin/javah binary])
590 JAVAH="$JAVA_HOME/bin/javah"
592 if test ! -x "$JAVA_HOME/bin/javadoc"; then
593 AC_MSG_ERROR([missing $JAVA_HOME/bin/javadoc binary])
595 JAVADOC="$JAVA_HOME/bin/javadoc"
597 if test ! -x "$JAVA_HOME/bin/jar"; then
598 AC_MSG_ERROR([missing $JAVA_HOME/bin/jar binary])
600 JAR="$JAVA_HOME/bin/jar"
602 java_version=`$JAVA -version 2>&1 | grep "java version"`
603 AC_MSG_RESULT(found $java_version in $JAVA_HOME)
606 AC_MSG_CHECKING([for jni.h])
607 if test -f "$JAVA_HOME/include/jni.h"; then
608 JNI_CFLAGS="-I$JAVA_HOME/include"
610 if test "`find $JAVA_HOME -name jni.h`" != ""; then
611 head=`find $JAVA_HOME -name jni.h | tail -1`
612 dir=`dirname "$head"`
615 AC_MSG_FAILURE([missing jni.h header file])
618 AC_MSG_RESULT([$JNI_CFLAGS])
621 AC_MSG_CHECKING([for jni_md.h])
623 *linux*) system="linux" ;;
624 *SunOS*) system="solaris" ;;
625 *cygwin*) system="win32" ;;
626 *) system="$build_os" ;;
628 if test -f "$JAVA_HOME/include/$system/jni_md.h"; then
629 JNI_CFLAGS="$JNI_CFLAGS -I$JAVA_HOME/include/$system"
631 if test "`find $JAVA_HOME -name jni_md.h`" != ""; then
632 head=`find $JAVA_HOME -name jni_md.h | tail -1`
633 dir=`dirname "$head"`
634 JNI_CFLAGS="$JNI_CFLAGS -I$dir"
636 AC_MSG_FAILURE([missing jni_md.h header file])
639 AC_MSG_RESULT([$JNI_CFLAGS])
641 dnl Need extra version flag?
642 AC_MSG_CHECKING([extra javac flags])
644 javac_version=`$JAVAC -version 2>&1`
645 case "$javac_version" in
647 JAVAC_FLAGS="-source 1.5" ;;
649 AC_MSG_RESULT([$JAVAC_FLAGS])
651 dnl Where to install jarfiles.
652 dnl XXX How to make it configurable?
653 JAR_INSTALL_DIR=\${prefix}/share/java
654 JNI_INSTALL_DIR=\${libdir}
657 jni_major_version=`echo "$VERSION" | awk -F. '{print $1}'`
658 jni_minor_version=`echo "$VERSION" | awk -F. '{print $2}'`
659 jni_micro_version=`echo "$VERSION" | awk -F. '{print $3}'`
660 JNI_VERSION_INFO=`expr "$jni_major_version" + "$jni_minor_version"`":$jni_micro_version:$jni_minor_version"
671 AC_SUBST(JAVAC_FLAGS)
672 AC_SUBST(JAR_INSTALL_DIR)
673 AC_SUBST(JNI_INSTALL_DIR)
674 AC_SUBST(JNI_VERSION_INFO)
676 AM_CONDITIONAL([HAVE_JAVA],[test -n "$JAVAC"])
678 dnl Check for Haskell (GHC).
679 AC_CHECK_PROG([GHC],[ghc],[ghc],[no])
681 AM_CONDITIONAL([HAVE_HASKELL],
682 [test "x$GHC" != "xno"])
684 dnl Check for Perl modules needed by virt-df, inspector, etc.
685 missing_perl_modules=no
686 for pm in Pod::Usage Getopt::Long Sys::Virt Data::Dumper XML::Writer Locale::TextDomain; do
687 AC_MSG_CHECKING([for $pm])
688 if ! perl -M$pm -e1 >/dev/null 2>&1; then
690 missing_perl_modules=yes
695 if test "x$missing_perl_modules" = "xyes"; then
696 AC_MSG_WARN([some Perl modules required to compile virt-inspector and the other virt-* tools are missing])
699 AM_CONDITIONAL([HAVE_INSPECTOR],
700 [test "x$PERL" != "xno" -a "x$missing_perl_modules" != "xyes"])
701 AM_CONDITIONAL([HAVE_TOOLS],
702 [test "x$PERL" != "xno" -a "x$missing_perl_modules" != "xyes"])
704 dnl Library versioning.
705 MAX_PROC_NR=`cat $srcdir/src/MAX_PROC_NR`
706 AC_SUBST(MAX_PROC_NR)
709 AC_CONFIG_SUBDIRS([daemon])
711 dnl Produce output files.
712 AC_CONFIG_HEADERS([config.h])
713 dnl http://www.mail-archive.com/automake@gnu.org/msg10204.html
714 AC_CONFIG_FILES([appliance/update.sh],
715 [chmod +x appliance/update.sh])
716 AC_CONFIG_FILES([appliance/supermin-split.sh],
717 [chmod +x appliance/supermin-split.sh])
718 AC_CONFIG_FILES([appliance/supermin-make.sh],
719 [chmod +x appliance/supermin-make.sh])
720 AC_CONFIG_FILES([appliance/libguestfs-supermin-helper],
721 [chmod +x appliance/libguestfs-supermin-helper])
722 AC_CONFIG_FILES([Makefile
723 src/Makefile fish/Makefile po/Makefile.in examples/Makefile
725 appliance/debian/debirf.conf
730 ocaml/Makefile ocaml/examples/Makefile
733 ruby/Makefile ruby/Rakefile
740 gnulib/tests/Makefile
743 ocaml/META perl/Makefile.PL])
749 echo "------------------------------------------------------------"
750 echo "Thank you for downloading $PACKAGE_STRING"
752 echo "This is how we have configured the optional components for you today:"
754 echo "QEMU ................................ $QEMU"
755 echo -n "OCaml bindings ...................... "
756 if test "x$HAVE_OCAML_TRUE" = "x"; then echo "yes"; else echo "no"; fi
757 echo -n "Perl bindings ....................... "
758 if test "x$HAVE_PERL_TRUE" = "x"; then echo "yes"; else echo "no"; fi
759 echo -n "Python bindings ..................... "
760 if test "x$HAVE_PYTHON_TRUE" = "x"; then echo "yes"; else echo "no"; fi
761 echo -n "Ruby bindings ....................... "
762 if test "x$HAVE_RUBY_TRUE" = "x"; then echo "yes"; else echo "no"; fi
763 echo -n "Java bindings ....................... "
764 if test "x$HAVE_JAVA_TRUE" = "x"; then echo "yes"; else echo "no"; fi
765 echo -n "Haskell bindings .................... "
766 if test "x$HAVE_HASKELL_TRUE" = "x"; then echo "yes"; else echo "no"; fi
767 echo -n "virt-inspector ...................... "
768 if test "x$HAVE_INSPECTOR_TRUE" = "x"; then echo "yes"; else echo "no"; fi
769 echo -n "virt-* tools ........................ "
770 if test "x$HAVE_TOOLS_TRUE" = "x"; then echo "yes"; else echo "no"; fi
771 echo "supermin appliance .................. $enable_supermin"
772 echo "FUSE filesystem ..................... $HAVE_FUSE"
774 echo "If any optional component is configured 'no' when you expected 'yes'"
775 echo "then you should check the preceeding messages."
777 echo "Please report bugs back to the mailing list:"
778 echo "http://www.redhat.com/mailman/listinfo/libguestfs"
780 echo "Next you should type 'make' to build the package,"
781 echo "then 'make check' to run the tests."
782 echo "------------------------------------------------------------"