2 # Copyright (C) 2009-2010 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], [86])
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])
131 dnl Define a C symbol for the host CPU architecture.
132 AC_DEFINE_UNQUOTED([host_cpu],["$host_cpu"],[Host architecture.])
135 AC_CHECK_HEADERS([errno.h sys/types.h sys/un.h sys/wait.h sys/socket.h endian.h byteswap.h])
137 dnl Build the daemon?
138 AC_MSG_CHECKING([if we should build the daemon])
139 AC_ARG_ENABLE([daemon],
140 [AS_HELP_STRING([--enable-daemon],
141 [enable building the daemon @<:@default=yes@:>@])],
144 AM_CONDITIONAL([ENABLE_DAEMON],[test "x$enable_daemon" = "xyes"])
145 AC_MSG_RESULT([$enable_daemon])
147 dnl Build the appliance?
148 AC_MSG_CHECKING([if we should build the appliance])
149 AC_ARG_ENABLE([appliance],
150 [AS_HELP_STRING([--enable-appliance],
151 [enable building the appliance @<:@default=yes@:>@])],
153 [enable_appliance=yes])
154 AM_CONDITIONAL([ENABLE_APPLIANCE],[test "x$enable_appliance" = "xyes"])
155 AC_MSG_RESULT([$enable_appliance])
157 dnl Check for rpcgen and XDR library. rpcgen is optional.
158 AC_CHECK_PROG([RPCGEN],[rpcgen],[rpcgen],[no])
159 AM_CONDITIONAL([HAVE_RPCGEN],[test "x$RPCGEN" != "xno"])
160 AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[
161 AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl])
164 dnl Check for pod2man and pod2text.
165 AC_CHECK_PROG([POD2MAN],[pod2man],[pod2man],[no])
166 test "x$POD2MAN" = "xno" &&
167 AC_MSG_ERROR([pod2man must be installed])
168 AC_CHECK_PROG([POD2TEXT],[pod2text],[pod2text],[no])
169 test "x$POD2TEXT" = "xno" &&
170 AC_MSG_ERROR([pod2text must be installed])
172 dnl Check for mkisofs.
173 AC_PATH_PROGS([MKISOFS],[mkisofs],[no],
174 [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin])
175 test "x$MKISOFS" = "xno" && AC_MSG_ERROR([mkisofs must be installed])
177 dnl Check for optional xmllint.
178 AC_CHECK_PROG([XMLLINT],[xmllint],[xmllint],[no])
179 AM_CONDITIONAL([HAVE_XMLLINT],[test "x$XMLLINT" != "xno"])
181 dnl Check for QEMU for running binaries on this $host_cpu, fall
182 dnl back to basic 'qemu'. Allow the user to override it.
183 default_qemu="qemu-kvm qemu-system-$host_cpu qemu"
185 [AS_HELP_STRING([--with-qemu],
186 [set default QEMU binary @<:@default=[qemu-kvm] qemu-system-<host> qemu@:>@])],
188 [with_qemu="$default_qemu"])
189 AC_PATH_PROGS([QEMU],[$with_qemu],[no],
190 [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/libexec])
191 test "x$QEMU" = "xno" && AC_MSG_ERROR([qemu must be installed])
192 AC_DEFINE_UNQUOTED([QEMU],["$QEMU"],[Location of qemu binary.])
194 dnl Check that the chosen qemu has vmchannel support or we can
195 dnl fallback to null vmchannel (still using SLIRP). See the
196 dnl discussion in the README file.
197 if test "x$vmchannel_test" != "xno"; then
198 AC_MSG_CHECKING([for guestfwd support in $QEMU])
199 if $QEMU -nographic --help | grep -sq guestfwd; then
201 vmchannel_guestfwd=guestfwd
204 # Note that this test must be conditional on the previous
205 # test failing. This is because recent qemu will throw
206 # up an SDL window and hang if we try to run this test.
207 AC_MSG_CHECKING([for "-net channel" (old guestfwd) support in $QEMU])
208 vmchannelout=`$QEMU -nographic -net channel /dev/zero 2>&1 ||:`
209 echo "vmchannel test command output: $vmchannelout" >&AS_MESSAGE_LOG_FD
210 if echo "$vmchannelout" | grep -sq "vmchannel wrong port number" ; then
212 vmchannel_guestfwd=net_channel
215 vmchannel_guestfwd=no
219 AC_MSG_CHECKING([for "-net user" (user mode network) support in $QEMU])
220 if $QEMU -nographic --help | grep -sq -- "-net user"; then
222 vmchannel_net_user=yes
225 vmchannel_net_user=no
228 if test "x$vmchannel_net_user" = "xno" -a "x$vmchannel_guestfwd" = "xno"; then
230 [I did not find user mode network or vmchannel support in
233 Either user mode networking or vmchannel support is vital for
234 libguestfs to operate.
236 Please read the relevant section in the README file for more
237 information about this.
239 You can override this test by setting the environment variable
240 vmchannel_test=no However if you don't have the right support
241 in your qemu, then this just delays the pain.
243 If I am using the wrong qemu or you want to compile qemu from source
244 and install it in another location, then you should configure with
245 the --with-qemu option.
250 dnl Set drive interface used by the guestfs_add_drive{,_ro} calls
251 dnl ('-drive ...,if=...' option to qemu).
253 dnl If you encounter performance problems with virtio (RHBZ#509383)
254 dnl then try '--with-drive-if=ide'.
255 AC_ARG_WITH([drive-if],
256 [AS_HELP_STRING([--with-drive-if],
257 [set default driver (ide|scsi|virtio) @<:@default=virtio@:>@])],
259 [with_drive_if=virtio])
260 AC_DEFINE_UNQUOTED([DRIVE_IF],["$with_drive_if"],[Default drive interface.])
262 dnl Set interface used by the network. Normally you should
263 dnl leave this at the default (virtio) but you can use the
264 dnl alternative (ne2k_pci) because of bugs in virtio networking
265 dnl eg. https://bugzilla.redhat.com/show_bug.cgi?id=516022
266 AC_ARG_WITH([net-if],
267 [AS_HELP_STRING([--with-net-if],
268 [set default net driver (virtio|ne2k_pci) @<:@default=virtio@:>@])],
270 [with_net_if=virtio])
271 AC_DEFINE_UNQUOTED([NET_IF],["$with_net_if"],[Default network interface.])
273 dnl Check for febootstrap etc.
274 if test "x$enable_appliance" = "xyes"; then
275 AC_CHECK_PROG([FEBOOTSTRAP],
276 [febootstrap],[febootstrap],[no])
277 if test "x$FEBOOTSTRAP" != "xno"; then
278 AC_CHECK_PROG([FEBOOTSTRAP_RUN],
279 [febootstrap-run],[febootstrap-run],[no])
280 test "x$FEBOOTSTRAP_RUN" = "xno" && \
281 AC_MSG_ERROR([febootstrap-run must be installed])
282 AC_CHECK_PROG([FEBOOTSTRAP_INSTALL],
283 [febootstrap-install],[febootstrap-install],[no])
284 test "x$FEBOOTSTRAP_INSTALL" = "xno" && \
285 AC_MSG_ERROR([febootstrap-install must be installed])
286 AC_CHECK_PROG([FEBOOTSTRAP_MINIMIZE],
287 [febootstrap-minimize],[febootstrap-minimize],[no])
288 test "x$FEBOOTSTRAP_MINIMIZE" = "xno" && \
289 AC_MSG_ERROR([febootstrap-minimize must be installed])
290 AC_CHECK_PROG([FEBOOTSTRAP_TO_INITRAMFS],
291 [febootstrap-to-initramfs],[febootstrap-to-initramfs],[no])
292 test "x$FEBOOTSTRAP_TO_INITRAMFS" = "xno" && \
293 AC_MSG_ERROR([febootstrap-to-initramfs must be installed])
295 dnl Check we have fakechroot >= 2.9 (it's an indirect requirement
296 dnl of febootstrap, but old versions will fail with yum).
297 AC_CHECK_PROG([FAKECHROOT],
298 [fakechroot],[fakechroot],[no])
299 test "x$FAKECHROOT" = "xno" && \
300 AC_MSG_ERROR([fakechroot must be installed])
302 AC_MSG_CHECKING([fakechroot version])
303 fakechroot_version=`$FAKECHROOT --version | awk '{print $3}'`
304 if test -z "$fakechroot_version"; then
305 AC_MSG_RESULT([failed])
306 AC_MSG_WARN([fakechroot --version command failed, proceeding anyway])
308 AC_MSG_RESULT([$fakechroot_version])
309 fakechroot_major=`echo "$fakechroot_version" | awk -F. '{print $1}'`
310 fakechroot_minor=`echo "$fakechroot_version" | awk -F. '{print $2}'`
311 if test "$fakechroot_major" -lt 2 -o \
312 \( "$fakechroot_major" -eq 2 -a "$fakechroot_minor" -lt 9 \); then
313 AC_MSG_ERROR([fakechroot version must be >= 2.9])
318 # check for debootstrap and debirf
319 AC_CHECK_PROG([DEBOOTSTRAP],
320 [debootstrap],[debootstrap],[no])
321 test "x$DEBOOTSTRAP" = "xno" && \
322 AC_MSG_ERROR([Either febootstrap or debootstrap must be installed])
323 AC_CHECK_PROG([DEBIRF],[debirf],[debirf],[no])
324 test "x$DEBIRF" = "xno" &&
325 AC_MSG_ERROR([debirf must be installed])
329 DEBIAN_KERNEL_ARCH=486
332 DEBIAN_KERNEL_ARCH=amd64
335 DEBIAN_KERNEL_ARCH=$host_cpu
338 AC_SUBST(DEBIAN_KERNEL_ARCH)
342 dnl --with-updates to specify a Fedora updates repository.
343 AC_ARG_WITH([updates],
344 [AS_HELP_STRING([--with-updates],
345 [set name of Fedora updates repository @<:@default=updates-released-f11@:>@])],
347 [with_updates=updates-released-f11])
348 UPDATES="$with_updates"
351 dnl --with-mirror to specify a local Fedora mirror.
352 AC_ARG_WITH([mirror],
353 [AS_HELP_STRING([--with-mirror],
354 [set URI of a local Fedora mirror])],
357 MIRROR="$with_mirror"
361 dnl --with-repo to specify a Fedora repository.
363 [AS_HELP_STRING([--with-repo],
364 [set name of Fedora repository @<:@default=fedora-11@:>@])],
366 [with_repo=fedora-11])
369 AC_DEFINE_UNQUOTED([REPO],["$REPO"],[Name of Fedora repository.])
371 dnl Build the supermin appliance? Please see README file before
372 dnl enabling this option.
373 AC_ARG_ENABLE([supermin],
374 [AS_HELP_STRING([--enable-supermin],
375 [enable supermin appliance (see README) @<:@default=no@:>@])],
377 [enable_supermin=no])
378 AM_CONDITIONAL([SUPERMIN],[test "x$enable_supermin" = "xyes"])
380 if test "x$enable_supermin" = "xyes"; then
381 dnl Check febootstrap-to-initramfs accepts the --files option
382 dnl (febootstrap >= 2.2).
383 AC_MSG_CHECKING([for --files support in $FEBOOTSTRAP_TO_INITRAMFS])
384 out=`$FEBOOTSTRAP_TO_INITRAMFS 2>&1 ||:`
385 echo "febootstrap_to_initramfs test command output: $out" >&AS_MESSAGE_LOG_FD
386 if ! echo "$out" | grep -sq -e --files ; then
389 [febootstrap-to-initramfs does not support the --files option.
391 To build the supermin appliance, you need to upgrade to the latest
392 version of febootstrap.
397 dnl Check febootstrap-to-initramfs accepts the --nocompress option
398 dnl (febootstrap >= 2.3).
399 AC_MSG_CHECKING([for --nocompress support in $FEBOOTSTRAP_TO_INITRAMFS])
400 out=`$FEBOOTSTRAP_TO_INITRAMFS 2>&1 ||:`
401 echo "febootstrap_to_initramfs test command output: $out" >&AS_MESSAGE_LOG_FD
402 if ! echo "$out" | grep -sq -e --nocompress ; then
405 [febootstrap-to-initramfs does not support the --nocompress option.
407 To build the supermin appliance, you need to upgrade to the latest
408 version of febootstrap.
414 dnl Enable packet dumps when in verbose mode. This generates lots
415 dnl of debug info, only useful for people debugging the RPC mechanism.
416 AC_ARG_ENABLE([packet-dump],
417 [AS_HELP_STRING([--enable-packet-dump],
418 [enable packet dumps in verbose mode @<:@default=no@:>@])],
419 [AC_DEFINE([ENABLE_PACKET_DUMP],[1],[Enable packet dumps in verbose mode.])],
423 AC_ARG_WITH([readline],
424 [AS_HELP_STRING([--with-readline],
425 [support fancy command line editing @<:@default=check@:>@])],
427 [with_readline=check])
430 AS_IF([test "x$with_readline" != xno],
431 [AC_CHECK_LIB([readline], [main],
432 [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
433 AC_DEFINE([HAVE_LIBREADLINE], [1],
434 [Define if you have libreadline])
436 [if test "x$with_readline" != xcheck; then
438 [--with-readline was given, but test for readline failed])
443 AM_GNU_GETTEXT([external])
444 AM_GNU_GETTEXT_VERSION([0.17])
446 dnl hivex library (highly recommended).
447 dnl This used to be a part of libguestfs, but was spun off into its
448 dnl own separate upstream project in libguestfs 1.0.85.
450 PKG_CHECK_MODULES([HIVEX], [hivex],,[
452 AC_MSG_WARN([Hivex library and headers are missing, so optional Windows Registry tools won't be built])])
453 AM_CONDITIONAL([HAVE_HIVEX],[test "x$HAVE_HIVEX" = "xyes"])
454 AC_SUBST([HIVEX_CFLAGS])
455 AC_SUBST([HIVEX_LIBS])
457 dnl FUSE is optional to build the FUSE module.
459 PKG_CHECK_MODULES([FUSE],[fuse],,[
461 AC_MSG_WARN([FUSE library and headers are missing, so optional FUSE module won't be built])])
462 AM_CONDITIONAL([HAVE_FUSE],[test "x$HAVE_FUSE" = "xyes"])
464 dnl Check for OCaml (optional, for OCaml bindings).
467 AM_CONDITIONAL([HAVE_OCAML],[test "x$OCAMLC" != "xno" -a "x$OCAMLFIND" != "xno"])
469 dnl Optional xml-light for running the generator.
470 OCAML_PKG_xml_light=no
471 if test "x$OCAMLC" != "xno" -a "x$OCAMLFIND" != "xno"; then
472 AC_CHECK_OCAML_PKG([xml-light])
474 AM_CONDITIONAL([HAVE_XML_LIGHT],[test "x$OCAML_PKG_xml_light" != "xno"])
476 dnl Build the OCaml viewer example. This has a lengthy list of
477 dnl dependencies and we don't attempt to detect them all. Read
478 dnl the top of ocaml/examples/viewer.ml before enabling this.
479 AC_ARG_ENABLE([ocaml-viewer],
480 [AS_HELP_STRING([--enable-ocaml-viewer],
481 [enable OCaml viewer (see ocaml/examples) @<:@default=no@:>@])],
483 [enable_ocaml_viewer=no])
484 AM_CONDITIONAL([BUILD_OCAML_VIEWER],[test "x$enable_ocaml_viewer" = "xyes"])
486 dnl Check for Perl (optional, for Perl bindings).
487 dnl XXX This isn't quite right, we should check for Perl devel library.
488 AC_CHECK_PROG([PERL],[perl],[perl],[no])
490 dnl Check for Perl modules that must be present to compile and
491 dnl test the Perl bindings.
492 missing_perl_modules=no
493 for pm in Test::More Test::Pod Test::Pod::Coverage ExtUtils::MakeMaker; do
494 AC_MSG_CHECKING([for $pm])
495 if ! perl -M$pm -e1 >/dev/null 2>&1; then
497 missing_perl_modules=yes
502 if test "x$missing_perl_modules" = "xyes"; then
503 AC_MSG_WARN([some Perl modules required to compile or test the Perl bindings are missing])
506 AM_CONDITIONAL([HAVE_PERL],
507 [test "x$PERL" != "xno" -a "x$missing_perl_modules" != "xyes"])
509 dnl Check for Python (optional, for Python bindings).
510 AC_CHECK_PROG([PYTHON],[python],[python],[no])
515 PYTHON_SITE_PACKAGES=
517 if test "x$PYTHON" != "xno"; then
518 PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
519 PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"`
521 $PYTHON_PREFIX/include/python$PYTHON_VERSION \
522 /usr/include/python$PYTHON_VERSION \
523 /usr/local/include/python$PYTHON_VERSION
525 AC_MSG_CHECKING([Python.h in $d])
526 if test -r "$d/Python.h"; then
527 AC_MSG_RESULT([found])
531 AC_MSG_RESULT([not found])
534 $PYTHON_PREFIX/lib64/python$PYTHON_VERSION/site-packages \
535 $PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages \
536 /usr/lib64/python$PYTHON_VERSION/site-packages \
537 /usr/lib/python$PYTHON_VERSION/site-packages \
538 /usr/local/lib/python$PYTHON_VERSION/site-packages
540 AC_MSG_CHECKING([for $d])
541 if test -d "$d"; then
542 AC_MSG_RESULT([found])
543 PYTHON_SITE_PACKAGES=$d
546 AC_MSG_RESULT([not found])
550 AC_SUBST(PYTHON_PREFIX)
551 AC_SUBST(PYTHON_VERSION)
552 AC_SUBST(PYTHON_INCLUDEDIR)
553 AC_SUBST(PYTHON_SITE_PACKAGES)
555 AM_CONDITIONAL([HAVE_PYTHON],
556 [test "x$PYTHON_INCLUDEDIR" != "x" -a "x$PYTHON_SITE_PACKAGES" != "x"])
558 dnl Check for Ruby and rake (optional, for Ruby bindings).
559 AC_CHECK_LIB([ruby],[ruby_init],[HAVE_LIBRUBY=1],[HAVE_LIBRUBY=0])
560 AC_CHECK_PROG([RAKE],[rake],[rake],[no])
562 AM_CONDITIONAL([HAVE_RUBY],
563 [test "x$RAKE" != "xno" -a -n "$HAVE_LIBRUBY"])
566 AC_ARG_WITH(java_home,
567 [AS_HELP_STRING([--with-java-home],
568 [specify path to JDK directory @<:@default=check@:>@])],
570 [with_java_home=check])
572 if test "x$with_java_home" != "xno"; then
573 if test "x$with_java_home" != "xyes" -a "x$with_java_home" != "xcheck"
575 # Reject unsafe characters in $JAVA_HOME
579 *[\\\"\#\$\&\'\`$jh_lf\ \ ]*)
580 AC_MSG_FAILURE([unsafe \$JAVA_HOME directory (use --with-java-home=no to disable Java support)]);;
582 if test -d "$with_java_home"; then
583 JAVA_HOME="$with_java_home"
585 AC_MSG_FAILURE([$with_java_home is not a directory (use --with-java-home=no to disable Java support)])
589 if test "x$JAVA_HOME" = "x"; then
590 # Look for Java in some likely locations.
593 /usr/lib/jvm/java-6-openjdk
595 if test -d $d -a -f $d/bin/java; then
602 if test "x$JAVA_HOME" != "x"; then
603 AC_MSG_CHECKING(for JDK in $JAVA_HOME)
604 if test ! -x "$JAVA_HOME/bin/java"; then
605 AC_MSG_ERROR([missing $JAVA_HOME/bin/java binary (use --with-java-home=no to disable Java support)])
607 JAVA="$JAVA_HOME/bin/java"
609 if test ! -x "$JAVA_HOME/bin/javac"; then
610 AC_MSG_ERROR([missing $JAVA_HOME/bin/javac binary])
612 JAVAC="$JAVA_HOME/bin/javac"
614 if test ! -x "$JAVA_HOME/bin/javah"; then
615 AC_MSG_ERROR([missing $JAVA_HOME/bin/javah binary])
617 JAVAH="$JAVA_HOME/bin/javah"
619 if test ! -x "$JAVA_HOME/bin/javadoc"; then
620 AC_MSG_ERROR([missing $JAVA_HOME/bin/javadoc binary])
622 JAVADOC="$JAVA_HOME/bin/javadoc"
624 if test ! -x "$JAVA_HOME/bin/jar"; then
625 AC_MSG_ERROR([missing $JAVA_HOME/bin/jar binary])
627 JAR="$JAVA_HOME/bin/jar"
629 java_version=`$JAVA -version 2>&1 | grep "java version"`
630 AC_MSG_RESULT(found $java_version in $JAVA_HOME)
633 AC_MSG_CHECKING([for jni.h])
634 if test -f "$JAVA_HOME/include/jni.h"; then
635 JNI_CFLAGS="-I$JAVA_HOME/include"
637 if test "`find $JAVA_HOME -name jni.h`" != ""; then
638 head=`find $JAVA_HOME -name jni.h | tail -1`
639 dir=`dirname "$head"`
642 AC_MSG_FAILURE([missing jni.h header file])
645 AC_MSG_RESULT([$JNI_CFLAGS])
648 AC_MSG_CHECKING([for jni_md.h])
650 *linux*) system="linux" ;;
651 *SunOS*) system="solaris" ;;
652 *cygwin*) system="win32" ;;
653 *) system="$build_os" ;;
655 if test -f "$JAVA_HOME/include/$system/jni_md.h"; then
656 JNI_CFLAGS="$JNI_CFLAGS -I$JAVA_HOME/include/$system"
658 if test "`find $JAVA_HOME -name jni_md.h`" != ""; then
659 head=`find $JAVA_HOME -name jni_md.h | tail -1`
660 dir=`dirname "$head"`
661 JNI_CFLAGS="$JNI_CFLAGS -I$dir"
663 AC_MSG_FAILURE([missing jni_md.h header file])
666 AC_MSG_RESULT([$JNI_CFLAGS])
668 dnl Need extra version flag?
669 AC_MSG_CHECKING([extra javac flags])
671 javac_version=`$JAVAC -version 2>&1`
672 case "$javac_version" in
674 JAVAC_FLAGS="-source 1.5" ;;
676 AC_MSG_RESULT([$JAVAC_FLAGS])
678 dnl Where to install jarfiles.
679 dnl XXX How to make it configurable?
680 JAR_INSTALL_DIR=\${prefix}/share/java
681 JNI_INSTALL_DIR=\${libdir}
684 jni_major_version=`echo "$VERSION" | awk -F. '{print $1}'`
685 jni_minor_version=`echo "$VERSION" | awk -F. '{print $2}'`
686 jni_micro_version=`echo "$VERSION" | awk -F. '{print $3}'`
687 JNI_VERSION_INFO=`expr "$jni_major_version" + "$jni_minor_version"`":$jni_micro_version:$jni_minor_version"
698 AC_SUBST(JAVAC_FLAGS)
699 AC_SUBST(JAR_INSTALL_DIR)
700 AC_SUBST(JNI_INSTALL_DIR)
701 AC_SUBST(JNI_VERSION_INFO)
703 AM_CONDITIONAL([HAVE_JAVA],[test -n "$JAVAC"])
705 dnl Check for Haskell (GHC).
706 AC_CHECK_PROG([GHC],[ghc],[ghc],[no])
708 AM_CONDITIONAL([HAVE_HASKELL],
709 [test "x$GHC" != "xno"])
711 dnl Check for Perl modules needed by virt-df, inspector, etc.
712 missing_perl_modules=no
713 for pm in Pod::Usage Getopt::Long Sys::Virt Data::Dumper XML::Writer Locale::TextDomain; do
714 AC_MSG_CHECKING([for $pm])
715 if ! perl -M$pm -e1 >/dev/null 2>&1; then
717 missing_perl_modules=yes
722 if test "x$missing_perl_modules" = "xyes"; then
723 AC_MSG_WARN([some Perl modules required to compile virt-inspector and the other virt-* tools are missing])
726 AM_CONDITIONAL([HAVE_INSPECTOR],
727 [test "x$PERL" != "xno" -a "x$missing_perl_modules" != "xyes"])
728 AM_CONDITIONAL([HAVE_TOOLS],
729 [test "x$PERL" != "xno" -a "x$missing_perl_modules" != "xyes"])
731 dnl Library versioning.
732 MAX_PROC_NR=`cat $srcdir/src/MAX_PROC_NR`
733 AC_SUBST(MAX_PROC_NR)
736 if test "x$enable_daemon" = "xyes"; then
737 AC_CONFIG_SUBDIRS([daemon])
740 dnl Produce output files.
741 AC_CONFIG_HEADERS([config.h])
742 dnl http://www.mail-archive.com/automake@gnu.org/msg10204.html
743 AC_CONFIG_FILES([appliance/update.sh],
744 [chmod +x appliance/update.sh])
745 AC_CONFIG_FILES([appliance/supermin-split.sh],
746 [chmod +x appliance/supermin-split.sh])
747 AC_CONFIG_FILES([appliance/supermin-make.sh],
748 [chmod +x appliance/supermin-make.sh])
749 AC_CONFIG_FILES([Makefile
750 src/Makefile fish/Makefile po/Makefile.in examples/Makefile
752 appliance/debian/debirf.conf
757 ocaml/Makefile ocaml/examples/Makefile
760 ruby/Makefile ruby/Rakefile
767 gnulib/tests/Makefile
769 ocaml/META perl/Makefile.PL])
775 echo "------------------------------------------------------------"
776 echo "Thank you for downloading $PACKAGE_STRING"
778 echo "This is how we have configured the optional components for you today:"
780 echo "Daemon .............................. $enable_daemon"
781 echo "Appliance ........................... $enable_appliance"
782 echo "QEMU ................................ $QEMU"
783 echo -n "OCaml bindings ...................... "
784 if test "x$HAVE_OCAML_TRUE" = "x"; then echo "yes"; else echo "no"; fi
785 echo -n "Perl bindings ....................... "
786 if test "x$HAVE_PERL_TRUE" = "x"; then echo "yes"; else echo "no"; fi
787 echo -n "Python bindings ..................... "
788 if test "x$HAVE_PYTHON_TRUE" = "x"; then echo "yes"; else echo "no"; fi
789 echo -n "Ruby bindings ....................... "
790 if test "x$HAVE_RUBY_TRUE" = "x"; then echo "yes"; else echo "no"; fi
791 echo -n "Java bindings ....................... "
792 if test "x$HAVE_JAVA_TRUE" = "x"; then echo "yes"; else echo "no"; fi
793 echo -n "Haskell bindings .................... "
794 if test "x$HAVE_HASKELL_TRUE" = "x"; then echo "yes"; else echo "no"; fi
795 echo -n "virt-inspector ...................... "
796 if test "x$HAVE_INSPECTOR_TRUE" = "x"; then echo "yes"; else echo "no"; fi
797 echo -n "virt-* tools ........................ "
798 if test "x$HAVE_TOOLS_TRUE" = "x"; then echo "yes"; else echo "no"; fi
799 echo "supermin appliance .................. $enable_supermin"
800 echo "FUSE filesystem ..................... $HAVE_FUSE"
802 echo "If any optional component is configured 'no' when you expected 'yes'"
803 echo "then you should check the preceeding messages."
805 echo "Please report bugs back to the mailing list:"
806 echo "http://www.redhat.com/mailman/listinfo/libguestfs"
808 echo "Next you should type 'make' to build the package,"
809 echo "then 'make check' to run the tests."
810 echo "------------------------------------------------------------"