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], [16])
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.
119 gl_MANYWARN_ALL_GCC([ws])
120 gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
124 gl_WARN_ADD([-Wno-unused-parameter]) # stubs.c
125 gl_WARN_ADD([-Wno-jump-misses-init]) # stubs.c
126 gl_WARN_ADD([-Wno-unused-variable]) # FIXME: only temporary, for guestfs_protocol.c, etc
128 # In spite of excluding -Wlogical-op above, it is enabled, as of
129 # gcc 4.5.0 20090517, and it provokes warnings in cat.c, dd.c, truncate.c
130 gl_WARN_ADD([-Wno-logical-op])
132 # Work around warning in src/inspect.c. This seems to be a bug in gcc 4.5.1.
133 gl_WARN_ADD([-Wno-strict-overflow])
135 gl_WARN_ADD([-fdiagnostics-show-option])
137 AC_SUBST([WARN_CFLAGS])
139 AC_DEFINE([lint], [1], [Define to 1 if the compiler is checking for lint.])
140 AC_DEFINE([_FORTIFY_SOURCE], [2],
141 [enable compile-time and run-time bounds-checking, and some warnings])
142 AC_DEFINE([GNULIB_PORTCHECK], [1], [enable some gnulib portability checks])
146 test "x$U" != "x" && AC_MSG_ERROR([Compiler not ANSI compliant])
150 dnl Work out how to specify the linker script to the linker.
151 VERSION_SCRIPT_FLAGS=-Wl,--version-script=
152 `/usr/bin/ld --help 2>&1 | grep -- --version-script >/dev/null` || \
153 VERSION_SCRIPT_FLAGS="-Wl,-M -Wl,"
154 AC_SUBST(VERSION_SCRIPT_FLAGS)
156 dnl Check support for 64 bit file offsets.
159 dnl Check sizeof long.
160 AC_CHECK_SIZEOF([long])
162 dnl Define a C symbol for the host CPU architecture.
163 AC_DEFINE_UNQUOTED([host_cpu],["$host_cpu"],[Host architecture.])
166 AC_CHECK_HEADERS([errno.h sys/types.h sys/un.h sys/wait.h sys/socket.h endian.h byteswap.h])
169 AC_CHECK_FUNCS([posix_fallocate])
171 dnl Build the daemon?
172 AC_MSG_CHECKING([if we should build the daemon])
173 AC_ARG_ENABLE([daemon],
174 [AS_HELP_STRING([--enable-daemon],
175 [enable building the daemon @<:@default=yes@:>@])],
178 AM_CONDITIONAL([ENABLE_DAEMON],[test "x$enable_daemon" = "xyes"])
179 AC_MSG_RESULT([$enable_daemon])
181 dnl Build the appliance?
182 AC_MSG_CHECKING([if we should build the appliance])
183 AC_ARG_ENABLE([appliance],
184 [AS_HELP_STRING([--enable-appliance],
185 [enable building the appliance @<:@default=yes@:>@])],
187 [enable_appliance=yes])
188 AM_CONDITIONAL([ENABLE_APPLIANCE],[test "x$enable_appliance" = "xyes"])
189 AC_MSG_RESULT([$enable_appliance])
191 dnl Check for rpcgen and XDR library. rpcgen is optional.
192 AC_CHECK_PROG([RPCGEN],[rpcgen],[rpcgen],[no])
193 AM_CONDITIONAL([HAVE_RPCGEN],[test "x$RPCGEN" != "xno"])
194 AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[
195 AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl])
198 dnl Check for cpio which isn't in the default Pardus install amazingly.
199 AC_CHECK_PROG([CPIO],[cpio],[cpio],[no])
200 test "x$CPIO" = "xno" &&
201 AC_MSG_ERROR([cpio must be installed])
204 AC_CHECK_PROG([GPERF],[gperf],[gperf],[no])
205 test "x$GPERF" = "xno" &&
206 AC_MSG_ERROR([gperf must be installed])
208 dnl Check for pod2man, pod2text, pod2html.
209 AC_CHECK_PROG([POD2MAN],[pod2man],[pod2man],[no])
210 test "x$POD2MAN" = "xno" &&
211 AC_MSG_ERROR([pod2man must be installed])
212 AC_CHECK_PROG([POD2TEXT],[pod2text],[pod2text],[no])
213 test "x$POD2TEXT" = "xno" &&
214 AC_MSG_ERROR([pod2text must be installed])
215 AC_CHECK_PROG([POD2HTML],[pod2html],[pod2html],[no])
216 test "x$POD2HTML" = "xno" &&
217 AC_MSG_ERROR([pod2html must be installed])
219 dnl Check for mkisofs.
220 AC_PATH_PROGS([MKISOFS],[mkisofs],[no],
221 [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin])
222 test "x$MKISOFS" = "xno" && AC_MSG_ERROR([mkisofs must be installed])
224 dnl Check for optional xmllint.
225 AC_CHECK_PROG([XMLLINT],[xmllint],[xmllint],[no])
226 AM_CONDITIONAL([HAVE_XMLLINT],[test "x$XMLLINT" != "xno"])
228 dnl po4a for translating man pages and POD files (optional).
229 AC_CHECK_PROG([PO4A],[po4a],[po4a],[no])
230 AM_CONDITIONAL([HAVE_PO4A], [test "x$PO4A" != "xno"])
232 dnl Check for db_dump, db_load (optional).
233 AC_CHECK_PROGS([DB_DUMP],[db_dump db4_dump db4.8_dump],[no])
234 AC_CHECK_PROGS([DB_LOAD],[db_load db4_load db4.8_load],[no])
235 if test "x$DB_DUMP" != "xno"; then
236 AC_DEFINE_UNQUOTED([DB_DUMP],["$DB_DUMP"],[Name of db_dump program.])
238 if test "x$DB_LOAD" != "xno"; then
239 AC_DEFINE_UNQUOTED([DB_LOAD],["$DB_LOAD"],[Name of db_load program.])
242 dnl Check for QEMU for running binaries on this $host_cpu, fall
243 dnl back to basic 'qemu'. Allow the user to override it.
244 default_qemu="qemu-kvm kvm qemu-system-$host_cpu qemu"
246 [AS_HELP_STRING([--with-qemu],
247 [set default QEMU binary @<:@default=[qemu-kvm] qemu-system-<host> qemu@:>@])],
249 [with_qemu="$default_qemu"])
250 AC_PATH_PROGS([QEMU],[$with_qemu],[no],
251 [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/libexec])
252 test "x$QEMU" = "xno" && AC_MSG_ERROR([qemu must be installed])
253 AC_DEFINE_UNQUOTED([QEMU],["$QEMU"],[Location of qemu binary.])
255 dnl Check that the chosen qemu has virtio-serial support.
256 if test "x$vmchannel_test" != "xno"; then
257 AC_MSG_CHECKING([for virtio-serial support in $QEMU])
258 if $QEMU -nographic -device \? 2>&1 | grep -sq virtio-serial; then
260 vmchannel_guestfwd=guestfwd
264 [I did not find virtio-serial support in
267 virtio-serial support in qemu or KVM is essential for libguestfs
270 Usually this means that you have to install a newer version of qemu
271 and/or KVM. Please read the relevant section in the README file for
272 more information about this.
274 You can override this test by setting the environment variable
275 vmchannel_test=no However if you don't have the right support
276 in your qemu, then this just delays the pain.
278 If I am using the wrong qemu or you want to compile qemu from source
279 and install it in another location, then you should configure with
280 the --with-qemu option.
285 dnl Set default drive interface used by the guestfs_add_drive_opts call
286 dnl ('-drive ...,if=...' option to qemu).
288 dnl If you encounter performance problems with virtio (RHBZ#509383)
289 dnl then try '--with-drive-if=ide'.
290 AC_ARG_WITH([drive-if],
291 [AS_HELP_STRING([--with-drive-if],
292 [set default driver (ide|scsi|virtio) @<:@default=virtio@:>@])],
294 [with_drive_if=virtio])
295 AC_DEFINE_UNQUOTED([DRIVE_IF],["$with_drive_if"],[Default drive interface.])
297 dnl Set interface used by the network. Normally you should
298 dnl leave this at the default (virtio-net-pci) but you can use the
299 dnl alternative (ne2k_pci) because of bugs in virtio networking
300 dnl eg. https://bugzilla.redhat.com/show_bug.cgi?id=516022
301 AC_ARG_WITH([net-if],
302 [AS_HELP_STRING([--with-net-if],
303 [set default net driver (virtio-net-pci|ne2k_pci) @<:@default=virtio-net-pci@:>@])],
305 [with_net_if=virtio-net-pci])
306 AC_DEFINE_UNQUOTED([NET_IF],["$with_net_if"],[Default network interface.])
308 dnl Check for febootstrap etc.
309 if test "x$enable_appliance" = "xyes"; then
310 AC_CHECK_PROG([FEBOOTSTRAP],
311 [febootstrap],[febootstrap],[no])
312 if test "x$FEBOOTSTRAP" != "xno"; then
313 AC_CHECK_PROG([FEBOOTSTRAP_RUN],
314 [febootstrap-run],[febootstrap-run],[no])
315 test "x$FEBOOTSTRAP_RUN" = "xno" && \
316 AC_MSG_ERROR([febootstrap-run must be installed])
317 AC_CHECK_PROG([FEBOOTSTRAP_INSTALL],
318 [febootstrap-install],[febootstrap-install],[no])
319 test "x$FEBOOTSTRAP_INSTALL" = "xno" && \
320 AC_MSG_ERROR([febootstrap-install must be installed])
321 AC_CHECK_PROG([FEBOOTSTRAP_MINIMIZE],
322 [febootstrap-minimize],[febootstrap-minimize],[no])
323 test "x$FEBOOTSTRAP_MINIMIZE" = "xno" && \
324 AC_MSG_ERROR([febootstrap-minimize must be installed])
325 AC_CHECK_PROG([FEBOOTSTRAP_TO_INITRAMFS],
326 [febootstrap-to-initramfs],[febootstrap-to-initramfs],[no])
327 test "x$FEBOOTSTRAP_TO_INITRAMFS" = "xno" && \
328 AC_MSG_ERROR([febootstrap-to-initramfs must be installed])
329 AC_CHECK_PROG([FEBOOTSTRAP_TO_SUPERMIN],
330 [febootstrap-to-supermin],[febootstrap-to-supermin],[no])
331 test "x$FEBOOTSTRAP_TO_SUPERMIN" = "xno" && \
332 AC_MSG_ERROR([febootstrap-to-supermin must be installed])
334 dnl Check we have fakechroot >= 2.9 (it's an indirect requirement
335 dnl of febootstrap, but old versions will fail with yum).
336 AC_CHECK_PROG([FAKECHROOT],
337 [fakechroot],[fakechroot],[no])
338 test "x$FAKECHROOT" = "xno" && \
339 AC_MSG_ERROR([fakechroot must be installed])
341 AC_MSG_CHECKING([fakechroot version])
342 fakechroot_version=`$FAKECHROOT --version | awk '{print $3}'`
343 if test -z "$fakechroot_version"; then
344 AC_MSG_RESULT([failed])
345 AC_MSG_WARN([fakechroot --version command failed, proceeding anyway])
347 AC_MSG_RESULT([$fakechroot_version])
348 fakechroot_major=`echo "$fakechroot_version" | awk -F. '{print $1}'`
349 fakechroot_minor=`echo "$fakechroot_version" | awk -F. '{print $2}'`
350 if test "$fakechroot_major" -lt 2 || \
351 ( test "$fakechroot_major" -eq 2 && test "$fakechroot_minor" -lt 9 ); then
352 AC_MSG_ERROR([fakechroot version must be >= 2.9])
357 # check for debootstrap and debirf
358 AC_CHECK_PROG([DEBOOTSTRAP],
359 [debootstrap],[debootstrap],[no])
360 test "x$DEBOOTSTRAP" = "xno" && \
361 AC_MSG_ERROR([Either febootstrap or debootstrap must be installed])
362 AC_CHECK_PROG([DEBIRF],[debirf],[debirf],[no])
363 test "x$DEBIRF" = "xno" &&
364 AC_MSG_ERROR([debirf must be installed])
368 DEBIAN_KERNEL_ARCH=486
371 DEBIAN_KERNEL_ARCH=amd64
374 DEBIAN_KERNEL_ARCH=$host_cpu
377 AC_SUBST(DEBIAN_KERNEL_ARCH)
381 dnl --with-updates to specify a Fedora updates repository.
382 AC_ARG_WITH([updates],
383 [AS_HELP_STRING([--with-updates],
384 [set name of Fedora updates repository @<:@default=updates-released-f12@:>@])],
386 [with_updates=updates-released-f12])
387 UPDATES="$with_updates"
390 dnl --with-mirror to specify a local Fedora mirror.
391 AC_ARG_WITH([mirror],
392 [AS_HELP_STRING([--with-mirror],
393 [set URI of a local Fedora mirror])],
396 MIRROR="$with_mirror"
400 dnl --with-repo to specify a repository.
402 [AS_HELP_STRING([--with-repo],
403 [set name of Fedora repository @<:@default=fedora-13@:>@])],
405 [with_repo=fedora-13])
408 AC_DEFINE_UNQUOTED([REPO],["$REPO"],[Name of software repository.])
410 dnl Build the supermin appliance? Please see README file before
411 dnl enabling this option.
412 AC_ARG_ENABLE([supermin],
413 [AS_HELP_STRING([--enable-supermin],
414 [enable supermin appliance (see README) @<:@default=no@:>@])],
415 [AC_DEFINE([ENABLE_SUPERMIN],[1],[Supermin appliance enabled.])],
416 [enable_supermin=no])
417 AM_CONDITIONAL([SUPERMIN],[test "x$enable_supermin" = "xyes"])
419 dnl Enable packet dumps when in verbose mode. This generates lots
420 dnl of debug info, only useful for people debugging the RPC mechanism.
421 AC_ARG_ENABLE([packet-dump],
422 [AS_HELP_STRING([--enable-packet-dump],
423 [enable packet dumps in verbose mode @<:@default=no@:>@])],
424 [AC_DEFINE([ENABLE_PACKET_DUMP],[1],[Enable packet dumps in verbose mode.])],
428 AC_ARG_WITH([readline],
429 [AS_HELP_STRING([--with-readline],
430 [support fancy command line editing @<:@default=check@:>@])],
432 [with_readline=check])
435 AS_IF([test "x$with_readline" != xno],
436 [AC_CHECK_LIB([readline], [main],
437 [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
438 AC_DEFINE([HAVE_LIBREADLINE], [1],
439 [Define if you have libreadline])
441 [if test "x$with_readline" != xcheck; then
443 [--with-readline was given, but test for readline failed])
447 LIBS="$LIBS $LIBREADLINE"
448 AC_CHECK_FUNCS([append_history completion_matches rl_completion_matches])
453 AM_GNU_GETTEXT([external])
454 AM_GNU_GETTEXT_VERSION([0.17])
456 dnl libmagic (highly recommended)
457 AC_CHECK_LIB([magic],[magic_file],
458 [AC_CHECK_HEADER([magic.h],
459 [AC_SUBST([MAGIC_LIBS], ["-lmagic"])
460 AC_DEFINE([HAVE_LIBMAGIC],[1],[libmagic found at compile time.])
463 [AC_MSG_WARN([libmagic not found, some core features will be disabled])])
465 dnl Check for PCRE (highly recommended)
466 PKG_CHECK_MODULES([PCRE], [libpcre],
467 [AC_SUBST([PCRE_CFLAGS])
468 AC_SUBST([PCRE_LIBS])
469 AC_DEFINE([HAVE_PCRE],[1],[PCRE found at compile time.])
471 [AC_MSG_WARN([PCRE not found, some core features will be disabled])])
473 dnl libvirt (highly recommended)
474 PKG_CHECK_MODULES([LIBVIRT], [libvirt],
475 [AC_SUBST([LIBVIRT_CFLAGS])
476 AC_SUBST([LIBVIRT_LIBS])
477 AC_DEFINE([HAVE_LIBVIRT],[1],[libvirt found at compile time.])
479 [AC_MSG_WARN([libvirt not found, some core features will be disabled])])
480 AM_CONDITIONAL([HAVE_LIBVIRT],[test "x$LIBVIRT_LIBS" != "x"])
482 dnl libxml2 (highly recommended)
483 PKG_CHECK_MODULES([LIBXML2], [libxml-2.0],
484 [AC_SUBST([LIBXML2_CFLAGS])
485 AC_SUBST([LIBXML2_LIBS])
486 AC_DEFINE([HAVE_LIBXML2],[1],[libxml2 found at compile time.])
488 [AC_MSG_WARN([libxml2 not found, some core features will be disabled])])
489 AM_CONDITIONAL([HAVE_LIBXML2],[test "x$LIBXML2_LIBS" != "x"])
491 dnl hivex library (highly recommended)
492 dnl This used to be a part of libguestfs, but was spun off into its
493 dnl own separate upstream project in libguestfs 1.0.85.
494 PKG_CHECK_MODULES([HIVEX], [hivex],
495 [AC_SUBST([HIVEX_CFLAGS])
496 AC_SUBST([HIVEX_LIBS])
497 AC_DEFINE([HAVE_HIVEX],[1],[hivex library found at compile time.])
499 [AC_MSG_WARN([hivex not found, some core features will be disabled])])
501 dnl FUSE is optional to build the FUSE module.
502 AC_ARG_ENABLE([fuse],
503 AS_HELP_STRING([--disable-fuse], [Disable FUSE (guestmount) support]),
506 AS_IF([test "x$enable_fuse" != "xno"],
507 [PKG_CHECK_MODULES([FUSE],[fuse],,[
509 AC_MSG_WARN([FUSE library and headers are missing, so optional FUSE module won't be built])])])
510 AM_CONDITIONAL([HAVE_FUSE],[test "x$enable_fuse" != "xno"])
512 dnl Check for OCaml (optional, for OCaml bindings).
515 AC_ARG_ENABLE([ocaml],
516 AS_HELP_STRING([--disable-ocaml], [Disable OCaml language bindings]),
519 AS_IF([test "x$enable_ocaml" != "xno"],
520 [dnl OCAMLC and OCAMLFIND have to be unset first, otherwise
521 dnl AC_CHECK_TOOL (inside AC_PROG_OCAML) will not look.
527 AM_CONDITIONAL([HAVE_OCAML],
528 [test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"])
530 dnl Check for Perl (optional, for Perl bindings).
532 AC_ARG_ENABLE([perl],
533 AS_HELP_STRING([--disable-perl], [Disable Perl language bindings]),
536 AS_IF([test "x$enable_perl" != "xno"],
539 AC_CHECK_PROG([PERL],[perl],[perl],[no])
541 dnl Check for Perl modules that must be present to compile and
542 dnl test the Perl bindings.
543 missing_perl_modules=no
544 for pm in Test::More ExtUtils::MakeMaker; do
545 AC_MSG_CHECKING([for $pm])
546 if ! perl -M$pm -e1 >/dev/null 2>&1; then
548 missing_perl_modules=yes
553 if test "x$missing_perl_modules" = "xyes"; then
554 AC_MSG_WARN([some Perl modules required to compile or test the Perl bindings are missing])
557 AM_CONDITIONAL([HAVE_PERL],
558 [test "x$PERL" != "xno" && test "x$missing_perl_modules" != "xyes"])
560 dnl Check for Python (optional, for Python bindings).
564 PYTHON_SITE_PACKAGES=
566 AC_ARG_ENABLE([python],
567 AS_HELP_STRING([--disable-python], [Disable Python language bindings]),
570 AS_IF([test "x$enable_python" != "xno"],
572 AC_CHECK_PROG([PYTHON],[python],[python],[no])
574 if test "x$PYTHON" != "xno"; then
575 PYTHON_PREFIX=`$PYTHON -c "import sys; print sys.prefix"`
576 PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"`
578 $PYTHON_PREFIX/include/python$PYTHON_VERSION \
579 /usr/include/python$PYTHON_VERSION \
580 /usr/local/include/python$PYTHON_VERSION
582 AC_MSG_CHECKING([Python.h in $d])
583 if test -r "$d/Python.h"; then
584 AC_MSG_RESULT([found])
588 AC_MSG_RESULT([not found])
590 if test "x$PYTHON_INCLUDEDIR" = "x"; then
591 AC_MSG_WARN([Python include directory not found])
595 $PYTHON_PREFIX/lib64/python$PYTHON_VERSION/site-packages \
596 $PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages \
597 /usr/lib64/python$PYTHON_VERSION/site-packages \
598 /usr/lib/python$PYTHON_VERSION/site-packages \
599 /usr/local/lib/python$PYTHON_VERSION/site-packages
601 AC_MSG_CHECKING([for $d])
602 if test -d "$d"; then
603 AC_MSG_RESULT([found])
604 PYTHON_SITE_PACKAGES=$d
607 AC_MSG_RESULT([not found])
609 if test "x$PYTHON_SITE_PACKAGES" = "x"; then
610 AC_MSG_WARN([Python site-packages directory not found])
614 LIBS="$LIBS -lpython$PYTHON_VERSION"
615 AC_CHECK_FUNCS([PyCapsule_New])
619 AC_SUBST(PYTHON_PREFIX)
620 AC_SUBST(PYTHON_VERSION)
621 AC_SUBST(PYTHON_INCLUDEDIR)
622 AC_SUBST(PYTHON_SITE_PACKAGES)
624 AM_CONDITIONAL([HAVE_PYTHON],
625 [test "x$PYTHON_INCLUDEDIR" != "x" && test "x$PYTHON_SITE_PACKAGES" != "x"])
627 dnl Check for Ruby and rake (optional, for Ruby bindings).
628 AC_ARG_ENABLE([ruby],
629 AS_HELP_STRING([--disable-ruby], [Disable Ruby language bindings]),
632 AS_IF([test "x$enable_ruby" != "xno"],
634 AC_CHECK_LIB([ruby],[ruby_init],[HAVE_LIBRUBY=1],[HAVE_LIBRUBY=0])
635 AC_CHECK_PROG([RAKE],[rake],[rake],[no])
637 AM_CONDITIONAL([HAVE_RUBY],
638 [test "x$RAKE" != "xno" && test -n "$HAVE_LIBRUBY"])
641 AC_ARG_WITH(java_home,
642 [AS_HELP_STRING([--with-java-home],
643 [specify path to JDK directory @<:@default=check@:>@])],
645 [with_java_home=check])
647 if test "x$with_java_home" != "xno"; then
648 if test "x$with_java_home" != "xyes" && test "x$with_java_home" != "xcheck"
650 # Reject unsafe characters in $JAVA_HOME
654 *[\\\"\#\$\&\'\`$jh_lf\ \ ]*)
655 AC_MSG_FAILURE([unsafe \$JAVA_HOME directory (use --with-java-home=no to disable Java support)]);;
657 if test -d "$with_java_home"; then
658 JAVA_HOME="$with_java_home"
660 AC_MSG_FAILURE([$with_java_home is not a directory (use --with-java-home=no to disable Java support)])
664 if test "x$JAVA_HOME" = "x"; then
665 # Look for Java in some likely locations.
668 /usr/lib/jvm/java-6-openjdk
670 if test -d $d && test -f $d/bin/java; then
677 if test "x$JAVA_HOME" != "x"; then
678 AC_MSG_CHECKING(for JDK in $JAVA_HOME)
679 if test ! -x "$JAVA_HOME/bin/java"; then
680 AC_MSG_ERROR([missing $JAVA_HOME/bin/java binary (use --with-java-home=no to disable Java support)])
682 JAVA="$JAVA_HOME/bin/java"
684 if test ! -x "$JAVA_HOME/bin/javac"; then
685 AC_MSG_ERROR([missing $JAVA_HOME/bin/javac binary])
687 JAVAC="$JAVA_HOME/bin/javac"
689 if test ! -x "$JAVA_HOME/bin/javah"; then
690 AC_MSG_ERROR([missing $JAVA_HOME/bin/javah binary])
692 JAVAH="$JAVA_HOME/bin/javah"
694 if test ! -x "$JAVA_HOME/bin/javadoc"; then
695 AC_MSG_ERROR([missing $JAVA_HOME/bin/javadoc binary])
697 JAVADOC="$JAVA_HOME/bin/javadoc"
699 if test ! -x "$JAVA_HOME/bin/jar"; then
700 AC_MSG_ERROR([missing $JAVA_HOME/bin/jar binary])
702 JAR="$JAVA_HOME/bin/jar"
704 java_version=`$JAVA -version 2>&1 | grep "java version"`
705 AC_MSG_RESULT(found $java_version in $JAVA_HOME)
708 AC_MSG_CHECKING([for jni.h])
709 if test -f "$JAVA_HOME/include/jni.h"; then
710 JNI_CFLAGS="-I$JAVA_HOME/include"
712 if test "`find $JAVA_HOME -name jni.h`" != ""; then
713 head=`find $JAVA_HOME -name jni.h | tail -1`
714 dir=`dirname "$head"`
717 AC_MSG_FAILURE([missing jni.h header file])
720 AC_MSG_RESULT([$JNI_CFLAGS])
723 AC_MSG_CHECKING([for jni_md.h])
725 *linux*) system="linux" ;;
726 *SunOS*) system="solaris" ;;
727 *cygwin*) system="win32" ;;
728 *) system="$build_os" ;;
730 if test -f "$JAVA_HOME/include/$system/jni_md.h"; then
731 JNI_CFLAGS="$JNI_CFLAGS -I$JAVA_HOME/include/$system"
733 if test "`find $JAVA_HOME -name jni_md.h`" != ""; then
734 head=`find $JAVA_HOME -name jni_md.h | tail -1`
735 dir=`dirname "$head"`
736 JNI_CFLAGS="$JNI_CFLAGS -I$dir"
738 AC_MSG_FAILURE([missing jni_md.h header file])
741 AC_MSG_RESULT([$JNI_CFLAGS])
743 dnl Need extra version flag?
744 AC_MSG_CHECKING([extra javac flags])
746 javac_version=`$JAVAC -version 2>&1`
747 case "$javac_version" in
749 JAVAC_FLAGS="-source 1.5" ;;
751 AC_MSG_RESULT([$JAVAC_FLAGS])
753 dnl Where to install jarfiles.
754 dnl XXX How to make it configurable?
755 JAR_INSTALL_DIR=\${prefix}/share/java
756 JNI_INSTALL_DIR=\${libdir}
759 jni_major_version=`echo "$VERSION" | awk -F. '{print $1}'`
760 jni_minor_version=`echo "$VERSION" | awk -F. '{print $2}'`
761 jni_micro_version=`echo "$VERSION" | awk -F. '{print $3}'`
762 JNI_VERSION_INFO=`expr "$jni_major_version" + "$jni_minor_version"`":$jni_micro_version:$jni_minor_version"
773 AC_SUBST(JAVAC_FLAGS)
774 AC_SUBST(JAR_INSTALL_DIR)
775 AC_SUBST(JNI_INSTALL_DIR)
776 AC_SUBST(JNI_VERSION_INFO)
778 AM_CONDITIONAL([HAVE_JAVA],[test -n "$JAVAC"])
780 dnl Check for Haskell (GHC).
782 AC_ARG_ENABLE([haskell],
783 AS_HELP_STRING([--disable-haskell], [Disable Haskell language bindings]),
785 [enable_haskell=yes])
786 AS_IF([test "x$enable_haskell" != "xno"],
789 AC_CHECK_PROG([GHC],[ghc],[ghc],[no])
791 AM_CONDITIONAL([HAVE_HASKELL],
792 [test "x$GHC" != "xno"])
797 AS_HELP_STRING([--disable-php], [Disable PHP language bindings]),
800 AS_IF([test "x$enable_php" != "xno"],
803 AC_CHECK_PROG([PHP],[php],[php],[no])
804 AC_CHECK_PROG([PHPIZE],[phpize],[phpize],[no])
806 AM_CONDITIONAL([HAVE_PHP], [test "x$PHP" != "xno" && test "x$PHPIZE" != "xno"])
808 dnl Check for Perl modules needed by Perl virt tools (virt-df, etc.)
809 AS_IF([test "x$PERL" != "xno"],
811 missing_perl_modules=no
812 for pm in Pod::Usage Getopt::Long Sys::Virt Data::Dumper Locale::TextDomain Win::Hivex Win::Hivex::Regedit String::ShellQuote; do
813 AC_MSG_CHECKING([for $pm])
814 if ! $PERL -M$pm -e1 >/dev/null 2>&1; then
816 missing_perl_modules=yes
821 if test "x$missing_perl_modules" = "xyes"; then
822 AC_MSG_WARN([some Perl modules required to compile the Perl virt-* tools are missing])
826 AM_CONDITIONAL([HAVE_TOOLS],
827 [test "x$PERL" != "xno" && test "x$missing_perl_modules" != "xyes"])
829 dnl Library versioning.
830 MAX_PROC_NR=`cat $srcdir/src/MAX_PROC_NR`
831 AC_SUBST(MAX_PROC_NR)
833 dnl Replace libtool with a wrapper that clobbers dependency_libs in *.la files
834 dnl http://lists.fedoraproject.org/pipermail/devel/2010-November/146343.html
835 LIBTOOL='$(SHELL) $(top_srcdir)/libtool-kill-dependency_libs.sh $(top_builddir)/libtool'
839 if test "x$enable_daemon" = "xyes"; then
840 AC_CONFIG_SUBDIRS([daemon])
843 dnl Produce output files.
844 AC_CONFIG_HEADERS([config.h])
845 dnl http://www.mail-archive.com/automake@gnu.org/msg10204.html
846 AC_CONFIG_FILES([appliance/update.sh],
847 [chmod +x appliance/update.sh])
848 AC_CONFIG_FILES([podwrapper.sh],
849 [chmod +x podwrapper.sh])
850 AC_CONFIG_FILES([Makefile
852 src/Makefile fish/Makefile po/Makefile.in examples/Makefile
854 appliance/debian/debirf.conf
859 ocaml/Makefile ocaml/examples/Makefile
861 python/Makefile python/examples/Makefile
862 ruby/Makefile ruby/Rakefile ruby/examples/Makefile
869 gnulib/tests/Makefile
878 ocaml/META perl/Makefile.PL])
884 echo "------------------------------------------------------------"
885 echo "Thank you for downloading $PACKAGE_STRING"
887 echo "This is how we have configured the optional components for you today:"
889 echo "Daemon .............................. $enable_daemon"
890 echo "Appliance ........................... $enable_appliance"
891 echo "QEMU ................................ $QEMU"
892 echo -n "OCaml bindings ...................... "
893 if test "x$HAVE_OCAML_TRUE" = "x"; then echo "yes"; else echo "no"; fi
894 echo -n "Perl bindings ....................... "
895 if test "x$HAVE_PERL_TRUE" = "x"; then echo "yes"; else echo "no"; fi
896 echo -n "Python bindings ..................... "
897 if test "x$HAVE_PYTHON_TRUE" = "x"; then echo "yes"; else echo "no"; fi
898 echo -n "Ruby bindings ....................... "
899 if test "x$HAVE_RUBY_TRUE" = "x"; then echo "yes"; else echo "no"; fi
900 echo -n "Java bindings ....................... "
901 if test "x$HAVE_JAVA_TRUE" = "x"; then echo "yes"; else echo "no"; fi
902 echo -n "Haskell bindings .................... "
903 if test "x$HAVE_HASKELL_TRUE" = "x"; then echo "yes"; else echo "no"; fi
904 echo -n "PHP bindings ........................ "
905 if test "x$HAVE_PHP_TRUE" = "x"; then echo "yes"; else echo "no"; fi
906 echo -n "virt-* tools ........................ "
907 if test "x$HAVE_TOOLS_TRUE" = "x"; then echo "yes"; else echo "no"; fi
908 echo "supermin appliance .................. $enable_supermin"
909 echo "FUSE filesystem ..................... $enable_fuse"
911 echo "If any optional component is configured 'no' when you expected 'yes'"
912 echo "then you should check the preceeding messages."
914 echo "Please report bugs back to the mailing list:"
915 echo "http://www.redhat.com/mailman/listinfo/libguestfs"
917 echo "Next you should type 'make' to build the package,"
918 echo "then 'make check' to run the tests."
919 echo "------------------------------------------------------------"