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], [7])
21 m4_define([libguestfs_release], [19])
22 # extra can be any string
23 m4_define([libguestfs_extra], [])
25 AC_INIT([libguestfs],libguestfs_major.libguestfs_minor.libguestfs_release)
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])
40 dnl Stable or unstable version?
41 AC_MSG_CHECKING([if this is a stable or unstable branch of libguestfs])
42 AS_IF([test "$((libguestfs_minor % 2))" -eq 0 ],[
43 AC_MSG_RESULT([stable])
45 AC_MSG_RESULT([unstable])
48 This is a development version of libguestfs. Some APIs may be unstable
49 until they appear in a stable release of libguestfs (at which point
50 the C API and ABI is guaranteed to remain stable forever). For
51 more information about stable and development branches of libguestfs
52 please see the section "LIBGUESTFS VERSION NUMBERS" in guestfs(3).
56 dnl Die if the user tries to configure as root, see:
57 dnl https://www.redhat.com/archives/libguestfs/2010-April/msg00098.html
58 AC_MSG_CHECKING([if you are trying to configure as root])
59 AS_IF([test "`id -u`" = 0 ],[
61 AC_MSG_FAILURE([Don't run './configure' or 'make' as root.])
66 dnl Early gnulib initialization.
72 dnl Check for basic C environment.
77 AC_ARG_ENABLE([gcc-warnings],
78 [AS_HELP_STRING([--enable-gcc-warnings],
79 [turn on lots of GCC warnings (for developers)])],
82 *) AC_MSG_ERROR([bad value $enableval for gcc-warnings option]) ;;
84 gl_gcc_warnings=$enableval],
88 if test "$gl_gcc_warnings" = yes; then
89 gl_WARN_ADD([-Werror], [WERROR_CFLAGS])
90 AC_SUBST([WERROR_CFLAGS])
93 # This, $nw, is the list of warnings we disable.
94 nw="$nw -Wdeclaration-after-statement" # too useful to forbid
95 nw="$nw -Waggregate-return" # anachronistic
96 nw="$nw -Wc++-compat" # We don't care about C++ compilers
97 nw="$nw -Wundef" # Warns on '#if GNULIB_FOO' etc in gnulib
98 nw="$nw -Wtraditional" # Warns on #elif which we use often
99 nw="$nw -Wcast-qual" # Too many warnings for now
100 nw="$nw -Wconversion" # Too many warnings for now
101 nw="$nw -Wsystem-headers" # Don't let system headers trigger warnings
102 nw="$nw -Wsign-conversion" # Too many warnings for now
103 nw="$nw -Wtraditional-conversion" # Too many warnings for now
104 nw="$nw -Wunreachable-code" # Too many warnings for now
105 nw="$nw -Wpadded" # Our structs are not padded
106 nw="$nw -Wredundant-decls" # openat.h declares e.g., mkdirat
107 nw="$nw -Wlogical-op" # any use of fwrite provokes this
108 nw="$nw -Wvla" # two warnings in mount.c
109 # things I might fix soon:
110 nw="$nw -Wmissing-format-attribute" # daemon.h's asprintf_nowarn
111 nw="$nw -Winline" # daemon.h's asprintf_nowarn
112 nw="$nw -Wshadow" # numerous, plus we're not unanimous
113 nw="$nw -Wunsafe-loop-optimizations" # just a warning that an optimization
114 # was not possible, safe to ignore
115 nw="$nw -Wpacked" # Allow attribute((packed)) on structs
116 nw="$nw -Wlong-long" # Allow long long since it's required
117 # by Python, Ruby and xstrtoll.
118 nw="$nw -Wstack-protector" # Don't warn about stack-protector
119 # failures (seen on Ubuntu).
121 gl_MANYWARN_ALL_GCC([ws])
122 gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
126 gl_WARN_ADD([-Wno-unused-parameter]) # stubs.c
127 gl_WARN_ADD([-Wno-jump-misses-init]) # stubs.c
128 gl_WARN_ADD([-Wno-unused-variable]) # FIXME: only temporary, for guestfs_protocol.c, etc
130 # In spite of excluding -Wlogical-op above, it is enabled, as of
131 # gcc 4.5.0 20090517, and it provokes warnings in cat.c, dd.c, truncate.c
132 gl_WARN_ADD([-Wno-logical-op])
134 # Work around warning in src/inspect.c. This seems to be a bug in gcc 4.5.1.
135 gl_WARN_ADD([-Wno-strict-overflow])
137 gl_WARN_ADD([-fdiagnostics-show-option])
139 AC_SUBST([WARN_CFLAGS])
141 AC_DEFINE([lint], [1], [Define to 1 if the compiler is checking for lint.])
142 AC_DEFINE([_FORTIFY_SOURCE], [2],
143 [enable compile-time and run-time bounds-checking, and some warnings])
144 AC_DEFINE([GNULIB_PORTCHECK], [1], [enable some gnulib portability checks])
148 test "x$U" != "x" && AC_MSG_ERROR([Compiler not ANSI compliant])
152 dnl Work out how to specify the linker script to the linker.
153 VERSION_SCRIPT_FLAGS=-Wl,--version-script=
154 `/usr/bin/ld --help 2>&1 | grep -- --version-script >/dev/null` || \
155 VERSION_SCRIPT_FLAGS="-Wl,-M -Wl,"
156 AC_SUBST(VERSION_SCRIPT_FLAGS)
158 dnl Check support for 64 bit file offsets.
161 dnl Check sizeof long.
162 AC_CHECK_SIZEOF([long])
164 dnl Define a C symbol for the host CPU architecture.
165 AC_DEFINE_UNQUOTED([host_cpu],["$host_cpu"],[Host architecture.])
168 AC_CHECK_HEADERS([errno.h sys/types.h sys/un.h sys/wait.h sys/socket.h endian.h byteswap.h])
171 AC_CHECK_FUNCS([posix_fallocate])
173 dnl Build the daemon?
174 AC_MSG_CHECKING([if we should build the daemon])
175 AC_ARG_ENABLE([daemon],
176 [AS_HELP_STRING([--enable-daemon],
177 [enable building the daemon @<:@default=yes@:>@])],
180 AM_CONDITIONAL([ENABLE_DAEMON],[test "x$enable_daemon" = "xyes"])
181 AC_MSG_RESULT([$enable_daemon])
183 dnl Build the appliance?
184 AC_MSG_CHECKING([if we should build the appliance])
185 AC_ARG_ENABLE([appliance],
186 [AS_HELP_STRING([--enable-appliance],
187 [enable building the appliance @<:@default=yes@:>@])],
189 [enable_appliance=yes])
190 AM_CONDITIONAL([ENABLE_APPLIANCE],[test "x$enable_appliance" = "xyes"])
191 AC_MSG_RESULT([$enable_appliance])
193 if test "x$enable_appliance" = "xyes"; then
194 dnl Check for febootstrap >= 3.0
195 AC_CHECK_PROG([FEBOOTSTRAP],
196 [febootstrap],[febootstrap],[no])
197 test "x$FEBOOTSTRAP" = "xno" &&
198 AC_MSG_ERROR([febootstrap must be installed])
199 dnl febootstrap 2.x did not support the --version parameter
200 $FEBOOTSTRAP --version >/dev/null 2>&1 ||
201 AC_MSG_ERROR([febootstrap >= 3.0 must be installed, your version is too old])
203 dnl Build from local package files, used when building with no network
204 dnl access, ie. under Koji.
205 AC_MSG_CHECKING([if we should build the appliance from local packages])
206 AC_ARG_WITH([local-package-directory],
207 [AS_HELP_STRING([--with-local-package-directory],
208 [build from local packages in dir @<:@default=no@:>@])],
209 [local_package_directory=$withval],
210 [local_package_directory=no])
211 AC_MSG_RESULT([$local_package_directory])
213 test "x$local_package_directory" != "xno" &&
214 PACKAGE_DIRECTORY="$local_package_directory"
215 AC_SUBST([PACKAGE_DIRECTORY])
219 dnl This used to be Very Important but is now just used to select
220 dnl which packages to install in the appliance, since the package
221 dnl names vary slightly across distros. (See appliance/packagelist.in)
222 AC_MSG_CHECKING([which Linux distro for package names])
224 if test -f /etc/debian_version; then
226 if grep -q 'DISTRIB_ID=Ubuntu' /etc/lsb-release 2>/dev/null; then
230 AC_MSG_RESULT([$DISTRO])
234 dnl Check for rpcgen and XDR library. rpcgen is optional.
235 AC_CHECK_PROG([RPCGEN],[rpcgen],[rpcgen],[no])
236 AM_CONDITIONAL([HAVE_RPCGEN],[test "x$RPCGEN" != "xno"])
237 AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[
238 AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl])
241 dnl Check for cpio which isn't in the default Pardus install amazingly.
242 AC_CHECK_PROG([CPIO],[cpio],[cpio],[no])
243 test "x$CPIO" = "xno" &&
244 AC_MSG_ERROR([cpio must be installed])
247 AC_CHECK_PROG([GPERF],[gperf],[gperf],[no])
248 test "x$GPERF" = "xno" &&
249 AC_MSG_ERROR([gperf must be installed])
251 dnl Check for pod2man, pod2text, pod2html.
252 AC_CHECK_PROG([POD2MAN],[pod2man],[pod2man],[no])
253 test "x$POD2MAN" = "xno" &&
254 AC_MSG_ERROR([pod2man must be installed])
255 AC_CHECK_PROG([POD2TEXT],[pod2text],[pod2text],[no])
256 test "x$POD2TEXT" = "xno" &&
257 AC_MSG_ERROR([pod2text must be installed])
258 AC_CHECK_PROG([POD2HTML],[pod2html],[pod2html],[no])
259 test "x$POD2HTML" = "xno" &&
260 AC_MSG_ERROR([pod2html must be installed])
262 dnl Check for mkisofs.
263 AC_PATH_PROGS([MKISOFS],[mkisofs],[no],
264 [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin])
265 test "x$MKISOFS" = "xno" && AC_MSG_ERROR([mkisofs must be installed])
267 dnl Check for optional xmllint.
268 AC_CHECK_PROG([XMLLINT],[xmllint],[xmllint],[no])
269 AM_CONDITIONAL([HAVE_XMLLINT],[test "x$XMLLINT" != "xno"])
271 dnl po4a for translating man pages and POD files (optional).
272 AC_CHECK_PROG([PO4A],[po4a],[po4a],[no])
273 AM_CONDITIONAL([HAVE_PO4A], [test "x$PO4A" != "xno"])
275 dnl Check for db_dump, db_load (optional).
276 AC_CHECK_PROGS([DB_DUMP],
277 [db_dump db4_dump db4.8_dump db4.7_dump db4.6_dump],[no])
278 AC_CHECK_PROGS([DB_LOAD],
279 [db_load db4_load db4.8_load db4.7_load db4.6_load],[no])
280 if test "x$DB_DUMP" != "xno"; then
281 AC_DEFINE_UNQUOTED([DB_DUMP],["$DB_DUMP"],[Name of db_dump program.])
283 if test "x$DB_LOAD" != "xno"; then
284 AC_DEFINE_UNQUOTED([DB_LOAD],["$DB_LOAD"],[Name of db_load program.])
287 dnl Check for QEMU for running binaries on this $host_cpu, fall
288 dnl back to basic 'qemu'. Allow the user to override it.
289 default_qemu="qemu-kvm kvm qemu-system-$host_cpu qemu"
291 [AS_HELP_STRING([--with-qemu],
292 [set default QEMU binary @<:@default=[qemu-kvm] qemu-system-<host> qemu@:>@])],
294 [with_qemu="$default_qemu"])
295 AC_PATH_PROGS([QEMU],[$with_qemu],[no],
296 [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/libexec])
297 test "x$QEMU" = "xno" && AC_MSG_ERROR([qemu must be installed])
298 AC_DEFINE_UNQUOTED([QEMU],["$QEMU"],[Location of qemu binary.])
300 dnl Check that the chosen qemu has virtio-serial support.
301 if test "x$vmchannel_test" != "xno"; then
302 AC_MSG_CHECKING([for virtio-serial support in $QEMU])
303 if $QEMU -nographic -device \? 2>&1 | grep -sq virtio-serial; then
305 vmchannel_guestfwd=guestfwd
309 [I did not find virtio-serial support in
312 virtio-serial support in qemu or KVM is essential for libguestfs
315 Usually this means that you have to install a newer version of qemu
316 and/or KVM. Please read the relevant section in the README file for
317 more information about this.
319 You can override this test by setting the environment variable
320 vmchannel_test=no However if you don't have the right support
321 in your qemu, then this just delays the pain.
323 If I am using the wrong qemu or you want to compile qemu from source
324 and install it in another location, then you should configure with
325 the --with-qemu option.
330 dnl Set default drive interface used by the guestfs_add_drive_opts call
331 dnl ('-drive ...,if=...' option to qemu).
333 dnl If you encounter performance problems with virtio (RHBZ#509383)
334 dnl then try '--with-drive-if=ide'.
335 AC_ARG_WITH([drive-if],
336 [AS_HELP_STRING([--with-drive-if],
337 [set default driver (ide|scsi|virtio) @<:@default=virtio@:>@])],
339 [with_drive_if=virtio])
340 AC_DEFINE_UNQUOTED([DRIVE_IF],["$with_drive_if"],[Default drive interface.])
342 dnl Set interface used by the network. Normally you should
343 dnl leave this at the default (virtio-net-pci) but you can use the
344 dnl alternative (ne2k_pci) because of bugs in virtio networking
345 dnl eg. https://bugzilla.redhat.com/show_bug.cgi?id=516022
346 AC_ARG_WITH([net-if],
347 [AS_HELP_STRING([--with-net-if],
348 [set default net driver (virtio-net-pci|ne2k_pci) @<:@default=virtio-net-pci@:>@])],
350 [with_net_if=virtio-net-pci])
351 AC_DEFINE_UNQUOTED([NET_IF],["$with_net_if"],[Default network interface.])
353 dnl Enable packet dumps when in verbose mode. This generates lots
354 dnl of debug info, only useful for people debugging the RPC mechanism.
355 AC_ARG_ENABLE([packet-dump],
356 [AS_HELP_STRING([--enable-packet-dump],
357 [enable packet dumps in verbose mode @<:@default=no@:>@])],
358 [AC_DEFINE([ENABLE_PACKET_DUMP],[1],[Enable packet dumps in verbose mode.])],
362 AC_ARG_WITH([readline],
363 [AS_HELP_STRING([--with-readline],
364 [support fancy command line editing @<:@default=check@:>@])],
366 [with_readline=check])
369 AS_IF([test "x$with_readline" != xno],
370 [AC_CHECK_LIB([readline], [main],
371 [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
372 AC_DEFINE([HAVE_LIBREADLINE], [1],
373 [Define if you have libreadline])
375 [if test "x$with_readline" != xcheck; then
377 [--with-readline was given, but test for readline failed])
381 LIBS="$LIBS $LIBREADLINE"
382 AC_CHECK_FUNCS([append_history completion_matches rl_completion_matches])
387 AM_GNU_GETTEXT([external])
388 AM_GNU_GETTEXT_VERSION([0.17])
390 dnl libmagic (highly recommended)
391 AC_CHECK_LIB([magic],[magic_file],
392 [AC_CHECK_HEADER([magic.h],
393 [AC_SUBST([MAGIC_LIBS], ["-lmagic"])
394 AC_DEFINE([HAVE_LIBMAGIC],[1],[libmagic found at compile time.])
397 [AC_MSG_WARN([libmagic not found, some core features will be disabled])])
399 dnl Check for PCRE (highly recommended)
400 PKG_CHECK_MODULES([PCRE], [libpcre],
401 [AC_SUBST([PCRE_CFLAGS])
402 AC_SUBST([PCRE_LIBS])
403 AC_DEFINE([HAVE_PCRE],[1],[PCRE found at compile time.])
405 [AC_MSG_WARN([PCRE not found, some core features will be disabled])])
407 dnl libvirt (highly recommended)
408 PKG_CHECK_MODULES([LIBVIRT], [libvirt],
409 [AC_SUBST([LIBVIRT_CFLAGS])
410 AC_SUBST([LIBVIRT_LIBS])
411 AC_DEFINE([HAVE_LIBVIRT],[1],[libvirt found at compile time.])
413 [AC_MSG_WARN([libvirt not found, some core features will be disabled])])
414 AM_CONDITIONAL([HAVE_LIBVIRT],[test "x$LIBVIRT_LIBS" != "x"])
416 dnl libxml2 (highly recommended)
417 PKG_CHECK_MODULES([LIBXML2], [libxml-2.0],
418 [AC_SUBST([LIBXML2_CFLAGS])
419 AC_SUBST([LIBXML2_LIBS])
420 AC_DEFINE([HAVE_LIBXML2],[1],[libxml2 found at compile time.])
422 [AC_MSG_WARN([libxml2 not found, some core features will be disabled])])
423 AM_CONDITIONAL([HAVE_LIBXML2],[test "x$LIBXML2_LIBS" != "x"])
425 dnl hivex library (highly recommended)
426 dnl This used to be a part of libguestfs, but was spun off into its
427 dnl own separate upstream project in libguestfs 1.0.85.
428 PKG_CHECK_MODULES([HIVEX], [hivex],
429 [AC_SUBST([HIVEX_CFLAGS])
430 AC_SUBST([HIVEX_LIBS])
431 AC_DEFINE([HAVE_HIVEX],[1],[hivex library found at compile time.])
433 [AC_MSG_WARN([hivex not found, some core features will be disabled])])
435 dnl FUSE is optional to build the FUSE module.
436 AC_ARG_ENABLE([fuse],
437 AS_HELP_STRING([--disable-fuse], [Disable FUSE (guestmount) support]),
440 AS_IF([test "x$enable_fuse" != "xno"],
441 [PKG_CHECK_MODULES([FUSE],[fuse],,[
443 AC_MSG_WARN([FUSE library and headers are missing, so optional FUSE module won't be built])])])
444 AM_CONDITIONAL([HAVE_FUSE],[test "x$enable_fuse" != "xno"])
446 dnl Check for OCaml (optional, for OCaml bindings).
449 AC_ARG_ENABLE([ocaml],
450 AS_HELP_STRING([--disable-ocaml], [Disable OCaml language bindings]),
453 AS_IF([test "x$enable_ocaml" != "xno"],
454 [dnl OCAMLC and OCAMLFIND have to be unset first, otherwise
455 dnl AC_CHECK_TOOL (inside AC_PROG_OCAML) will not look.
461 AM_CONDITIONAL([HAVE_OCAML],
462 [test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"])
464 dnl Check for Perl (optional, for Perl bindings).
466 AC_ARG_ENABLE([perl],
467 AS_HELP_STRING([--disable-perl], [Disable Perl language bindings]),
470 AS_IF([test "x$enable_perl" != "xno"],
473 AC_CHECK_PROG([PERL],[perl],[perl],[no])
475 dnl Check for Perl modules that must be present to compile and
476 dnl test the Perl bindings.
477 missing_perl_modules=no
478 for pm in Test::More ExtUtils::MakeMaker; do
479 AC_MSG_CHECKING([for $pm])
480 if ! perl -M$pm -e1 >/dev/null 2>&1; then
482 missing_perl_modules=yes
487 if test "x$missing_perl_modules" = "xyes"; then
488 AC_MSG_WARN([some Perl modules required to compile or test the Perl bindings are missing])
491 AM_CONDITIONAL([HAVE_PERL],
492 [test "x$PERL" != "xno" && test "x$missing_perl_modules" != "xyes"])
494 dnl Check for Python (optional, for Python bindings).
498 PYTHON_SITE_PACKAGES=
500 AC_ARG_ENABLE([python],
501 AS_HELP_STRING([--disable-python], [Disable Python language bindings]),
504 AS_IF([test "x$enable_python" != "xno"],
506 AC_CHECK_PROG([PYTHON],[python],[python],[no])
508 if test "x$PYTHON" != "xno"; then
509 PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
510 PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"`
512 $PYTHON_PREFIX/include/python$PYTHON_VERSION \
513 /usr/include/python$PYTHON_VERSION \
514 /usr/local/include/python$PYTHON_VERSION
516 AC_MSG_CHECKING([Python.h in $d])
517 if test -r "$d/Python.h"; then
518 AC_MSG_RESULT([found])
522 AC_MSG_RESULT([not found])
524 if test "x$PYTHON_INCLUDEDIR" = "x"; then
525 AC_MSG_WARN([Python include directory not found])
529 $PYTHON_PREFIX/lib64/python$PYTHON_VERSION/site-packages \
530 $PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages \
531 /usr/lib64/python$PYTHON_VERSION/site-packages \
532 /usr/lib/python$PYTHON_VERSION/site-packages \
533 /usr/local/lib/python$PYTHON_VERSION/site-packages
535 AC_MSG_CHECKING([for $d])
536 if test -d "$d"; then
537 AC_MSG_RESULT([found])
538 PYTHON_SITE_PACKAGES=$d
541 AC_MSG_RESULT([not found])
543 if test "x$PYTHON_SITE_PACKAGES" = "x"; then
544 AC_MSG_WARN([Python site-packages directory not found])
548 LIBS="$LIBS -lpython$PYTHON_VERSION"
549 AC_CHECK_FUNCS([PyCapsule_New])
553 AC_SUBST(PYTHON_PREFIX)
554 AC_SUBST(PYTHON_VERSION)
555 AC_SUBST(PYTHON_INCLUDEDIR)
556 AC_SUBST(PYTHON_SITE_PACKAGES)
558 AM_CONDITIONAL([HAVE_PYTHON],
559 [test "x$PYTHON_INCLUDEDIR" != "x" && test "x$PYTHON_SITE_PACKAGES" != "x"])
561 dnl Check for Ruby and rake (optional, for Ruby bindings).
562 AC_ARG_ENABLE([ruby],
563 AS_HELP_STRING([--disable-ruby], [Disable Ruby language bindings]),
566 AS_IF([test "x$enable_ruby" != "xno"],
568 AC_CHECK_LIB([ruby],[ruby_init],[HAVE_LIBRUBY=1],[HAVE_LIBRUBY=0])
569 AC_CHECK_PROG([RAKE],[rake],[rake],[no])
571 AM_CONDITIONAL([HAVE_RUBY],
572 [test "x$RAKE" != "xno" && test -n "$HAVE_LIBRUBY"])
575 AC_ARG_WITH(java_home,
576 [AS_HELP_STRING([--with-java-home],
577 [specify path to JDK directory @<:@default=check@:>@])],
579 [with_java_home=check])
581 if test "x$with_java_home" != "xno"; then
582 if test "x$with_java_home" != "xyes" && test "x$with_java_home" != "xcheck"
584 # Reject unsafe characters in $JAVA_HOME
588 *[\\\"\#\$\&\'\`$jh_lf\ \ ]*)
589 AC_MSG_FAILURE([unsafe \$JAVA_HOME directory (use --with-java-home=no to disable Java support)]);;
591 if test -d "$with_java_home"; then
592 JAVA_HOME="$with_java_home"
594 AC_MSG_FAILURE([$with_java_home is not a directory (use --with-java-home=no to disable Java support)])
598 if test "x$JAVA_HOME" = "x"; then
599 # Look for Java in some likely locations.
602 /usr/lib/jvm/java-6-openjdk
604 if test -d $d && test -f $d/bin/java; then
611 if test "x$JAVA_HOME" != "x"; then
612 AC_MSG_CHECKING(for JDK in $JAVA_HOME)
613 if test ! -x "$JAVA_HOME/bin/java"; then
614 AC_MSG_ERROR([missing $JAVA_HOME/bin/java binary (use --with-java-home=no to disable Java support)])
616 JAVA="$JAVA_HOME/bin/java"
618 if test ! -x "$JAVA_HOME/bin/javac"; then
619 AC_MSG_ERROR([missing $JAVA_HOME/bin/javac binary])
621 JAVAC="$JAVA_HOME/bin/javac"
623 if test ! -x "$JAVA_HOME/bin/javah"; then
624 AC_MSG_ERROR([missing $JAVA_HOME/bin/javah binary])
626 JAVAH="$JAVA_HOME/bin/javah"
628 if test ! -x "$JAVA_HOME/bin/javadoc"; then
629 AC_MSG_ERROR([missing $JAVA_HOME/bin/javadoc binary])
631 JAVADOC="$JAVA_HOME/bin/javadoc"
633 if test ! -x "$JAVA_HOME/bin/jar"; then
634 AC_MSG_ERROR([missing $JAVA_HOME/bin/jar binary])
636 JAR="$JAVA_HOME/bin/jar"
638 java_version=`$JAVA -version 2>&1 | grep "java version"`
639 AC_MSG_RESULT(found $java_version in $JAVA_HOME)
642 AC_MSG_CHECKING([for jni.h])
643 if test -f "$JAVA_HOME/include/jni.h"; then
644 JNI_CFLAGS="-I$JAVA_HOME/include"
646 if test "`find $JAVA_HOME -name jni.h`" != ""; then
647 head=`find $JAVA_HOME -name jni.h | tail -1`
648 dir=`dirname "$head"`
651 AC_MSG_FAILURE([missing jni.h header file])
654 AC_MSG_RESULT([$JNI_CFLAGS])
657 AC_MSG_CHECKING([for jni_md.h])
659 *linux*) system="linux" ;;
660 *SunOS*) system="solaris" ;;
661 *cygwin*) system="win32" ;;
662 *) system="$build_os" ;;
664 if test -f "$JAVA_HOME/include/$system/jni_md.h"; then
665 JNI_CFLAGS="$JNI_CFLAGS -I$JAVA_HOME/include/$system"
667 if test "`find $JAVA_HOME -name jni_md.h`" != ""; then
668 head=`find $JAVA_HOME -name jni_md.h | tail -1`
669 dir=`dirname "$head"`
670 JNI_CFLAGS="$JNI_CFLAGS -I$dir"
672 AC_MSG_FAILURE([missing jni_md.h header file])
675 AC_MSG_RESULT([$JNI_CFLAGS])
677 dnl Need extra version flag?
678 AC_MSG_CHECKING([extra javac flags])
680 javac_version=`$JAVAC -version 2>&1`
681 case "$javac_version" in
683 JAVAC_FLAGS="-source 1.5" ;;
685 AC_MSG_RESULT([$JAVAC_FLAGS])
687 dnl Where to install jarfiles.
688 dnl XXX How to make it configurable?
689 JAR_INSTALL_DIR=\${prefix}/share/java
690 JNI_INSTALL_DIR=\${libdir}
693 jni_major_version=`echo "$VERSION" | awk -F. '{print $1}'`
694 jni_minor_version=`echo "$VERSION" | awk -F. '{print $2}'`
695 jni_micro_version=`echo "$VERSION" | awk -F. '{print $3}'`
696 JNI_VERSION_INFO=`expr "$jni_major_version" + "$jni_minor_version"`":$jni_micro_version:$jni_minor_version"
707 AC_SUBST(JAVAC_FLAGS)
708 AC_SUBST(JAR_INSTALL_DIR)
709 AC_SUBST(JNI_INSTALL_DIR)
710 AC_SUBST(JNI_VERSION_INFO)
712 AM_CONDITIONAL([HAVE_JAVA],[test -n "$JAVAC"])
714 dnl Check for Haskell (GHC).
716 AC_ARG_ENABLE([haskell],
717 AS_HELP_STRING([--disable-haskell], [Disable Haskell language bindings]),
719 [enable_haskell=yes])
720 AS_IF([test "x$enable_haskell" != "xno"],
723 AC_CHECK_PROG([GHC],[ghc],[ghc],[no])
725 AM_CONDITIONAL([HAVE_HASKELL],
726 [test "x$GHC" != "xno"])
731 AS_HELP_STRING([--disable-php], [Disable PHP language bindings]),
734 AS_IF([test "x$enable_php" != "xno"],
737 AC_CHECK_PROG([PHP],[php],[php],[no])
738 AC_CHECK_PROG([PHPIZE],[phpize],[phpize],[no])
740 AM_CONDITIONAL([HAVE_PHP], [test "x$PHP" != "xno" && test "x$PHPIZE" != "xno"])
742 dnl Check for Perl modules needed by Perl virt tools (virt-df, etc.)
743 AS_IF([test "x$PERL" != "xno"],
745 missing_perl_modules=no
746 for pm in Pod::Usage Getopt::Long Sys::Virt Data::Dumper Locale::TextDomain Win::Hivex Win::Hivex::Regedit String::ShellQuote; do
747 AC_MSG_CHECKING([for $pm])
748 if ! $PERL -M$pm -e1 >/dev/null 2>&1; then
750 missing_perl_modules=yes
755 if test "x$missing_perl_modules" = "xyes"; then
756 AC_MSG_WARN([some Perl modules required to compile the Perl virt-* tools are missing])
760 AM_CONDITIONAL([HAVE_TOOLS],
761 [test "x$PERL" != "xno" && test "x$missing_perl_modules" != "xyes"])
763 dnl Library versioning.
764 MAX_PROC_NR=`cat $srcdir/src/MAX_PROC_NR`
765 AC_SUBST(MAX_PROC_NR)
767 dnl Replace libtool with a wrapper that clobbers dependency_libs in *.la files
768 dnl http://lists.fedoraproject.org/pipermail/devel/2010-November/146343.html
769 LIBTOOL='$(SHELL) $(top_srcdir)/libtool-kill-dependency_libs.sh $(top_builddir)/libtool'
773 if test "x$enable_daemon" = "xyes"; then
774 AC_CONFIG_SUBDIRS([daemon])
777 dnl Produce output files.
778 AC_CONFIG_HEADERS([config.h])
779 dnl http://www.mail-archive.com/automake@gnu.org/msg10204.html
780 AC_CONFIG_FILES([podwrapper.sh],
781 [chmod +x podwrapper.sh])
782 AC_CONFIG_FILES([Makefile
784 src/Makefile fish/Makefile po/Makefile.in examples/Makefile
790 ocaml/Makefile ocaml/examples/Makefile
792 python/Makefile python/examples/Makefile
793 ruby/Makefile ruby/Rakefile ruby/examples/Makefile
800 gnulib/tests/Makefile
809 ocaml/META perl/Makefile.PL])
815 echo "------------------------------------------------------------"
816 echo "Thank you for downloading $PACKAGE_STRING"
818 echo "This is how we have configured the optional components for you today:"
820 echo "Daemon .............................. $enable_daemon"
821 echo "Appliance ........................... $enable_appliance"
822 echo "QEMU ................................ $QEMU"
823 echo -n "OCaml bindings ...................... "
824 if test "x$HAVE_OCAML_TRUE" = "x"; then echo "yes"; else echo "no"; fi
825 echo -n "Perl bindings ....................... "
826 if test "x$HAVE_PERL_TRUE" = "x"; then echo "yes"; else echo "no"; fi
827 echo -n "Python bindings ..................... "
828 if test "x$HAVE_PYTHON_TRUE" = "x"; then echo "yes"; else echo "no"; fi
829 echo -n "Ruby bindings ....................... "
830 if test "x$HAVE_RUBY_TRUE" = "x"; then echo "yes"; else echo "no"; fi
831 echo -n "Java bindings ....................... "
832 if test "x$HAVE_JAVA_TRUE" = "x"; then echo "yes"; else echo "no"; fi
833 echo -n "Haskell bindings .................... "
834 if test "x$HAVE_HASKELL_TRUE" = "x"; then echo "yes"; else echo "no"; fi
835 echo -n "PHP bindings ........................ "
836 if test "x$HAVE_PHP_TRUE" = "x"; then echo "yes"; else echo "no"; fi
837 echo -n "virt-* tools ........................ "
838 if test "x$HAVE_TOOLS_TRUE" = "x"; then echo "yes"; else echo "no"; fi
839 echo "FUSE filesystem ..................... $enable_fuse"
841 echo "If any optional component is configured 'no' when you expected 'yes'"
842 echo "then you should check the preceeding messages."
844 echo "Please report bugs back to the mailing list:"
845 echo "http://www.redhat.com/mailman/listinfo/libguestfs"
847 echo "Next you should type 'make' to build the package,"
848 echo "then 'make check' to run the tests."
849 echo "------------------------------------------------------------"