2 # Copyright (C) 2009-2011 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 # The major, minor, and release fields MUST be numbers. Packagers can
19 # add extra information using --with-extra="..." which may be any
21 m4_define([libguestfs_major], [1])
22 m4_define([libguestfs_minor], [12])
23 m4_define([libguestfs_release], [5])
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 Stable or unstable version?
35 AC_MSG_CHECKING([if this is a stable or unstable branch of libguestfs])
36 AS_IF([test "$((libguestfs_minor % 2))" -eq 0 ],[
37 AC_MSG_RESULT([stable])
39 AC_MSG_RESULT([unstable])
42 This is a development version of libguestfs. Some APIs may be unstable
43 until they appear in a stable release of libguestfs (at which point
44 the C API and ABI is guaranteed to remain stable forever). For
45 more information about stable and development branches of libguestfs
46 please see the section "LIBGUESTFS VERSION NUMBERS" in guestfs(3).
50 dnl Extra string, a freeform string defined by packagers.
52 [AS_HELP_STRING([--with-extra],
53 [extra version string (for use by packagers)])],
54 [libguestfs_extra="$withval"],
58 AC_MSG_NOTICE([libguestfs version libguestfs_major.libguestfs_minor.libguestfs_release$libguestfs_extra])
60 dnl Split up the version string.
61 AC_DEFINE([PACKAGE_VERSION_MAJOR],[libguestfs_major],[Major version number])
62 AC_DEFINE([PACKAGE_VERSION_MINOR],[libguestfs_minor],[Minor version number])
63 AC_DEFINE([PACKAGE_VERSION_RELEASE],[libguestfs_release],[Release number])
64 AC_DEFINE_UNQUOTED([PACKAGE_VERSION_EXTRA],["$libguestfs_extra"],[Extra version string])
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).
120 nw="$nw -Wmissing-noreturn" # Don't warn about missed noreturn funcs
123 gl_MANYWARN_ALL_GCC([ws])
124 gl_MANYWARN_COMPLEMENT([ws], [$ws], [$nw])
128 gl_WARN_ADD([-Wno-unused-parameter]) # stubs.c
129 gl_WARN_ADD([-Wno-jump-misses-init]) # stubs.c
130 gl_WARN_ADD([-Wno-unused-variable]) # FIXME: only temporary, for guestfs_protocol.c, etc
132 # In spite of excluding -Wlogical-op above, it is enabled, as of
133 # gcc 4.5.0 20090517, and it provokes warnings in cat.c, dd.c, truncate.c
134 gl_WARN_ADD([-Wno-logical-op])
136 # Work around warning in src/inspect.c. This seems to be a bug in gcc 4.5.1.
137 gl_WARN_ADD([-Wno-strict-overflow])
139 gl_WARN_ADD([-fdiagnostics-show-option])
141 AC_SUBST([WARN_CFLAGS])
143 AC_DEFINE([lint], [1], [Define to 1 if the compiler is checking for lint.])
144 AC_DEFINE([_FORTIFY_SOURCE], [2],
145 [enable compile-time and run-time bounds-checking, and some warnings])
146 AC_DEFINE([GNULIB_PORTCHECK], [1], [enable some gnulib portability checks])
150 test "x$U" != "x" && AC_MSG_ERROR([Compiler not ANSI compliant])
154 dnl Work out how to specify the linker script to the linker.
155 VERSION_SCRIPT_FLAGS=-Wl,--version-script=
156 `/usr/bin/ld --help 2>&1 | grep -- --version-script >/dev/null` || \
157 VERSION_SCRIPT_FLAGS="-Wl,-M -Wl,"
158 AC_SUBST(VERSION_SCRIPT_FLAGS)
160 dnl Check support for 64 bit file offsets.
163 dnl Check sizeof long.
164 AC_CHECK_SIZEOF([long])
166 dnl Define a C symbol for the host CPU architecture.
167 AC_DEFINE_UNQUOTED([host_cpu],["$host_cpu"],[Host architecture.])
170 AC_CHECK_HEADERS([errno.h sys/types.h sys/un.h sys/wait.h sys/socket.h endian.h byteswap.h])
173 AC_CHECK_FUNCS([futimens posix_fallocate])
175 dnl Build the daemon?
176 AC_MSG_CHECKING([if we should build the daemon])
177 AC_ARG_ENABLE([daemon],
178 [AS_HELP_STRING([--enable-daemon],
179 [enable building the daemon @<:@default=yes@:>@])],
182 AM_CONDITIONAL([ENABLE_DAEMON],[test "x$enable_daemon" = "xyes"])
183 AC_MSG_RESULT([$enable_daemon])
185 dnl Build the appliance?
186 AC_MSG_CHECKING([if we should build the appliance])
187 AC_ARG_ENABLE([appliance],
188 [AS_HELP_STRING([--enable-appliance],
189 [enable building the appliance @<:@default=yes@:>@])],
191 [enable_appliance=yes])
192 AM_CONDITIONAL([ENABLE_APPLIANCE],[test "x$enable_appliance" = "xyes"])
193 AC_MSG_RESULT([$enable_appliance])
195 if test "x$enable_appliance" = "xyes"; then
196 dnl Check for febootstrap >= 3.0
197 AC_CHECK_PROG([FEBOOTSTRAP],
198 [febootstrap],[febootstrap],[no])
199 test "x$FEBOOTSTRAP" = "xno" &&
200 AC_MSG_ERROR([febootstrap must be installed])
201 dnl febootstrap 2.x did not support the --version parameter
202 $FEBOOTSTRAP --version >&AS_MESSAGE_LOG_FD 2>&1 ||
203 AC_MSG_ERROR([febootstrap >= 3.0 must be installed, your version is too old])
205 dnl Pass a febootstrap --yum-config option.
206 AC_MSG_CHECKING([if user requested febootstrap --yum-config option])
207 AC_ARG_WITH([febootstrap-yum-config],
208 [AS_HELP_STRING([--with-febootstrap-yum-config=FILE],
209 [pass febootstrap --yum-config option @<:@default=no@:>@])],
210 [FEBOOTSTRAP_YUM_CONFIG="$withval"],
211 [FEBOOTSTRAP_YUM_CONFIG=no])
212 AC_MSG_RESULT([$FEBOOTSTRAP_YUM_CONFIG])
213 AC_SUBST([FEBOOTSTRAP_YUM_CONFIG])
217 dnl This used to be Very Important but is now just used to select
218 dnl which packages to install in the appliance, since the package
219 dnl names vary slightly across distros. (See
220 dnl appliance/packagelist.in and appliance/excludelist.in)
221 AC_MSG_CHECKING([which Linux distro for package names])
223 if test -f /etc/debian_version; then
225 if grep -q 'DISTRIB_ID=Ubuntu' /etc/lsb-release 2>&AS_MESSAGE_LOG_FD; then
229 if test -f /etc/arch-release; then
232 AC_MSG_RESULT([$DISTRO])
236 dnl Check for rpcgen and XDR library. rpcgen is optional.
237 AC_CHECK_PROG([RPCGEN],[rpcgen],[rpcgen],[no])
238 AM_CONDITIONAL([HAVE_RPCGEN],[test "x$RPCGEN" != "xno"])
239 AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[
240 AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl])
243 dnl Check for cpio which isn't in the default Pardus install amazingly.
244 AC_CHECK_PROG([CPIO],[cpio],[cpio],[no])
245 test "x$CPIO" = "xno" &&
246 AC_MSG_ERROR([cpio must be installed])
249 AC_CHECK_PROG([GPERF],[gperf],[gperf],[no])
250 test "x$GPERF" = "xno" &&
251 AC_MSG_ERROR([gperf must be installed])
253 dnl Check for pod2man, pod2text, pod2html.
254 AC_CHECK_PROG([POD2MAN],[pod2man],[pod2man],[no])
255 test "x$POD2MAN" = "xno" &&
256 AC_MSG_ERROR([pod2man must be installed])
257 AC_CHECK_PROG([POD2TEXT],[pod2text],[pod2text],[no])
258 test "x$POD2TEXT" = "xno" &&
259 AC_MSG_ERROR([pod2text must be installed])
260 AC_CHECK_PROG([POD2HTML],[pod2html],[pod2html],[no])
261 test "x$POD2HTML" = "xno" &&
262 AC_MSG_ERROR([pod2html must be installed])
264 dnl Check if pod2man, pod2text take --stderr and -u options (not in RHEL 5).
265 AC_MSG_CHECKING([if pod2man takes --stderr option])
266 if "$POD2MAN" --stderr >&AS_MESSAGE_LOG_FD 2>&1; then
268 POD2_STDERR_OPTION="--stderr"
271 POD2_STDERR_OPTION=""
273 AC_SUBST([POD2_STDERR_OPTION])
275 AC_MSG_CHECKING([if pod2man takes -u option])
276 if "$POD2MAN" -u >&AS_MESSAGE_LOG_FD 2>&1; then
278 POD2_UTF8_OPTION="-u"
283 AC_SUBST([POD2_UTF8_OPTION])
285 dnl Check for genisoimage.
286 AC_PATH_PROGS([GENISOIMAGE],[genisoimage],[no],
287 [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin])
288 test "x$GENISOIMAGE" = "xno" && AC_MSG_ERROR([genisoimage must be installed])
290 dnl Check for optional xmllint.
291 AC_CHECK_PROG([XMLLINT],[xmllint],[xmllint],[no])
292 AM_CONDITIONAL([HAVE_XMLLINT],[test "x$XMLLINT" != "xno"])
294 dnl po4a for translating man pages and POD files (optional).
295 AC_CHECK_PROG([PO4A],[po4a],[po4a],[no])
296 AM_CONDITIONAL([HAVE_PO4A], [test "x$PO4A" != "xno"])
298 dnl Check for db_dump, db_load (optional).
299 AC_CHECK_PROGS([DB_DUMP],
300 [db_dump db4_dump db4.8_dump db4.7_dump db4.6_dump],[no])
301 AC_CHECK_PROGS([DB_LOAD],
302 [db_load db4_load db4.8_load db4.7_load db4.6_load],[no])
303 if test "x$DB_DUMP" != "xno"; then
304 AC_DEFINE_UNQUOTED([DB_DUMP],["$DB_DUMP"],[Name of db_dump program.])
306 if test "x$DB_LOAD" != "xno"; then
307 AC_DEFINE_UNQUOTED([DB_LOAD],["$DB_LOAD"],[Name of db_load program.])
310 dnl Check for QEMU for running binaries on this $host_cpu, fall
311 dnl back to basic 'qemu'. Allow the user to override it.
312 default_qemu="qemu-kvm kvm qemu-system-$host_cpu qemu"
314 [AS_HELP_STRING([--with-qemu],
315 [set default QEMU binary @<:@default=[qemu-kvm] qemu-system-<host> qemu@:>@])],
317 [with_qemu="$default_qemu"])
318 AC_PATH_PROGS([QEMU],[$with_qemu],[no],
319 [$PATH$PATH_SEPARATOR/usr/sbin$PATH_SEPARATOR/sbin$PATH_SEPARATOR/usr/libexec])
320 test "x$QEMU" = "xno" && AC_MSG_ERROR([qemu must be installed])
321 AC_DEFINE_UNQUOTED([QEMU],["$QEMU"],[Location of qemu binary.])
323 dnl Check that the chosen qemu has virtio-serial support.
324 if test "x$vmchannel_test" != "xno"; then
325 AC_MSG_CHECKING([that $QEMU -help works])
326 if $QEMU -help >&AS_MESSAGE_LOG_FD 2>&1; then
331 [$QEMU -help: command failed.
333 This could be a very old version of qemu, or qemu might not be
338 AC_MSG_CHECKING([for virtio-serial support in $QEMU])
339 if $QEMU -nographic -device \? 2>&1 | grep -sq virtio-serial; then
344 [I did not find virtio-serial support in
347 virtio-serial support in qemu or KVM is essential for libguestfs
350 Usually this means that you have to install a newer version of qemu
351 and/or KVM. Please read the relevant section in the README file for
352 more information about this.
354 You can override this test by setting the environment variable
355 vmchannel_test=no However if you don't have the right support
356 in your qemu, then this just delays the pain.
358 If I am using the wrong qemu or you want to compile qemu from source
359 and install it in another location, then you should configure with
360 the --with-qemu option.
365 dnl Set default drive interface used by the guestfs_add_drive_opts call
366 dnl ('-drive ...,if=...' option to qemu).
368 dnl If you encounter performance problems with virtio (RHBZ#509383)
369 dnl then try '--with-drive-if=ide'.
370 AC_ARG_WITH([drive-if],
371 [AS_HELP_STRING([--with-drive-if],
372 [set default driver (ide|scsi|virtio) @<:@default=virtio@:>@])],
374 [with_drive_if=virtio])
375 AC_DEFINE_UNQUOTED([DRIVE_IF],["$with_drive_if"],[Default drive interface.])
377 dnl Set interface used by the network. Normally you should
378 dnl leave this at the default (virtio-net-pci) but you can use the
379 dnl alternative (ne2k_pci) because of bugs in virtio networking
380 dnl eg. https://bugzilla.redhat.com/show_bug.cgi?id=516022
381 AC_ARG_WITH([net-if],
382 [AS_HELP_STRING([--with-net-if],
383 [set default net driver (virtio-net-pci|ne2k_pci) @<:@default=virtio-net-pci@:>@])],
385 [with_net_if=virtio-net-pci])
386 AC_DEFINE_UNQUOTED([NET_IF],["$with_net_if"],[Default network interface.])
388 dnl Enable packet dumps when in verbose mode. This generates lots
389 dnl of debug info, only useful for people debugging the RPC mechanism.
390 AC_ARG_ENABLE([packet-dump],
391 [AS_HELP_STRING([--enable-packet-dump],
392 [enable packet dumps in verbose mode @<:@default=no@:>@])],
393 [AC_DEFINE([ENABLE_PACKET_DUMP],[1],[Enable packet dumps in verbose mode.])],
397 AC_ARG_WITH([readline],
398 [AS_HELP_STRING([--with-readline],
399 [support fancy command line editing @<:@default=check@:>@])],
401 [with_readline=check])
404 AS_IF([test "x$with_readline" != xno],
405 [AC_CHECK_LIB([readline], [main],
406 [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
407 AC_DEFINE([HAVE_LIBREADLINE], [1],
408 [Define if you have libreadline])
410 [if test "x$with_readline" != xcheck; then
412 [--with-readline was given, but test for readline failed])
416 LIBS="$LIBS $LIBREADLINE"
417 AC_CHECK_FUNCS([append_history completion_matches rl_completion_matches])
422 AM_GNU_GETTEXT([external])
424 dnl Check for PCRE (required)
425 PKG_CHECK_MODULES([PCRE], [libpcre])
427 dnl libmagic (highly recommended)
428 AC_CHECK_LIB([magic],[magic_file],
429 [AC_CHECK_HEADER([magic.h],
430 [AC_SUBST([MAGIC_LIBS], ["-lmagic"])
431 AC_DEFINE([HAVE_LIBMAGIC],[1],[libmagic found at compile time.])
434 [AC_MSG_WARN([libmagic not found, some core features will be disabled])])
436 dnl libvirt (highly recommended)
437 PKG_CHECK_MODULES([LIBVIRT], [libvirt],
438 [AC_SUBST([LIBVIRT_CFLAGS])
439 AC_SUBST([LIBVIRT_LIBS])
440 AC_DEFINE([HAVE_LIBVIRT],[1],[libvirt found at compile time.])
442 [AC_MSG_WARN([libvirt not found, some core features will be disabled])])
443 AM_CONDITIONAL([HAVE_LIBVIRT],[test "x$LIBVIRT_LIBS" != "x"])
445 dnl libxml2 (highly recommended)
446 PKG_CHECK_MODULES([LIBXML2], [libxml-2.0],
447 [AC_SUBST([LIBXML2_CFLAGS])
448 AC_SUBST([LIBXML2_LIBS])
449 AC_DEFINE([HAVE_LIBXML2],[1],[libxml2 found at compile time.])
451 [AC_MSG_WARN([libxml2 not found, some core features will be disabled])])
452 AM_CONDITIONAL([HAVE_LIBXML2],[test "x$LIBXML2_LIBS" != "x"])
454 dnl libconfig (highly recommended)
455 PKG_CHECK_MODULES([LIBCONFIG], [libconfig],
456 [AC_SUBST([LIBCONFIG_CFLAGS])
457 AC_SUBST([LIBCONFIG_LIBS])
458 AC_DEFINE([HAVE_LIBCONFIG],[1],[libconfig found at compile time.])
460 [AC_MSG_WARN([libconfig not found, some features will be disabled])])
461 AM_CONDITIONAL([HAVE_LIBCONFIG],[test "x$LIBCONFIG_LIBS" != "x"])
463 dnl hivex library (highly recommended)
464 dnl This used to be a part of libguestfs, but was spun off into its
465 dnl own separate upstream project in libguestfs 1.0.85.
466 PKG_CHECK_MODULES([HIVEX], [hivex],
467 [AC_SUBST([HIVEX_CFLAGS])
468 AC_SUBST([HIVEX_LIBS])
469 AC_DEFINE([HAVE_HIVEX],[1],[hivex library found at compile time.])
471 [AC_MSG_WARN([hivex not found, some core features will be disabled])])
472 AM_CONDITIONAL([HAVE_HIVEX],[test "x$HIVEX_LIBS" != "x"])
474 dnl FUSE is optional to build the FUSE module.
475 AC_ARG_ENABLE([fuse],
476 AS_HELP_STRING([--disable-fuse], [Disable FUSE (guestmount) support]),
479 AS_IF([test "x$enable_fuse" != "xno"],
480 [PKG_CHECK_MODULES([FUSE],[fuse],,[
482 AC_MSG_WARN([FUSE library and headers are missing, so optional FUSE module won't be built])])])
483 AM_CONDITIONAL([HAVE_FUSE],[test "x$enable_fuse" != "xno"])
485 dnl Check for OCaml (optional, for OCaml bindings).
488 AC_ARG_ENABLE([ocaml],
489 AS_HELP_STRING([--disable-ocaml], [Disable OCaml language bindings]),
492 AS_IF([test "x$enable_ocaml" != "xno"],
493 [dnl OCAMLC and OCAMLFIND have to be unset first, otherwise
494 dnl AC_CHECK_TOOL (inside AC_PROG_OCAML) will not look.
500 AS_IF([test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"],
501 [AC_CHECK_OCAML_PKG([pcre])])
503 AM_CONDITIONAL([HAVE_OCAML],
504 [test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno"])
505 AM_CONDITIONAL([HAVE_OCAML_PCRE],
506 [test "x$OCAMLC" != "xno" && test "x$OCAMLFIND" != "xno" && test "x$OCAML_PKG_pcre" != "xno"])
507 AM_CONDITIONAL([HAVE_OCAMLDOC],
508 [test "x$OCAMLDOC" != "xno"])
510 dnl Check for Perl (optional, for Perl bindings).
512 AC_ARG_ENABLE([perl],
513 AS_HELP_STRING([--disable-perl], [Disable Perl language bindings]),
516 AS_IF([test "x$enable_perl" != "xno"],
519 AC_CHECK_PROG([PERL],[perl],[perl],[no])
521 dnl Check for Perl modules that must be present to compile and
522 dnl test the Perl bindings.
523 missing_perl_modules=no
524 for pm in Test::More ExtUtils::MakeMaker; do
525 AC_MSG_CHECKING([for $pm])
526 if ! perl -M$pm -e1 >&AS_MESSAGE_LOG_FD 2>&1; then
528 missing_perl_modules=yes
533 if test "x$missing_perl_modules" = "xyes"; then
534 AC_MSG_WARN([some Perl modules required to compile or test the Perl bindings are missing])
537 AM_CONDITIONAL([HAVE_PERL],
538 [test "x$PERL" != "xno" && test "x$missing_perl_modules" != "xyes"])
540 dnl Check for Python (optional, for Python bindings).
546 AC_ARG_ENABLE([python],
547 AS_HELP_STRING([--disable-python], [Disable Python language bindings]),
550 AS_IF([test "x$enable_python" != "xno"],
552 AC_CHECK_PROG([PYTHON],[python],[python],[no])
554 if test "x$PYTHON" != "xno"; then
555 AC_MSG_CHECKING([Python prefix])
556 PYTHON_PREFIX=`$PYTHON -c "import sys; print (sys.prefix)"`
557 AC_MSG_RESULT([$PYTHON_PREFIX])
559 AC_MSG_CHECKING([Python version])
560 PYTHON_VERSION=`$PYTHON -c "import sys; print (sys.version[[0:3]])"`
561 AC_MSG_RESULT([$PYTHON_VERSION])
563 AC_MSG_CHECKING([for Python include path])
564 if test -z "$PYTHON_INCLUDEDIR"; then
565 python_path=`$PYTHON -c "import distutils.sysconfig; \
566 print (distutils.sysconfig.get_python_inc ());"`
567 PYTHON_INCLUDEDIR=$python_path
569 AC_MSG_RESULT([$PYTHON_INCLUDEDIR])
571 AC_ARG_WITH([python-installdir],
572 [AS_HELP_STRING([--with-python-installdir],
573 [directory to install python modules @<:@default=check@:>@])],
574 [PYTHON_INSTALLDIR="$withval"
575 AC_MSG_NOTICE([Python install dir $PYTHON_INSTALLDIR])],
576 [PYTHON_INSTALLDIR=check])
578 if test "x$PYTHON_INSTALLDIR" = "xcheck"; then
580 AC_MSG_CHECKING([for Python site-packages path])
581 if test -z "$PYTHON_INSTALLDIR"; then
582 PYTHON_INSTALLDIR=`$PYTHON -c "import distutils.sysconfig; \
583 print (distutils.sysconfig.get_python_lib(1,0));"`
585 AC_MSG_RESULT([$PYTHON_INSTALLDIR])
589 LIBS="$LIBS -lpython$PYTHON_VERSION"
590 AC_CHECK_FUNCS([PyCapsule_New])
594 AC_SUBST(PYTHON_PREFIX)
595 AC_SUBST(PYTHON_VERSION)
596 AC_SUBST(PYTHON_INCLUDEDIR)
597 AC_SUBST(PYTHON_INSTALLDIR)
599 AM_CONDITIONAL([HAVE_PYTHON],
600 [test "x$PYTHON" != "xno" && test "x$PYTHON_INCLUDEDIR" != "x" && test "x$PYTHON_INSTALLDIR" != "x"])
602 dnl Check for Ruby and rake (optional, for Ruby bindings).
603 AC_ARG_ENABLE([ruby],
604 AS_HELP_STRING([--disable-ruby], [Disable Ruby language bindings]),
607 AS_IF([test "x$enable_ruby" != "xno"],
609 AC_CHECK_LIB([ruby],[ruby_init],[HAVE_LIBRUBY=1],[HAVE_LIBRUBY=0])
610 AC_CHECK_PROG([RAKE],[rake],[rake],[no])
612 AM_CONDITIONAL([HAVE_RUBY],
613 [test "x$RAKE" != "xno" && test -n "$HAVE_LIBRUBY"])
616 AC_ARG_WITH(java_home,
617 [AS_HELP_STRING([--with-java-home],
618 [specify path to JDK directory @<:@default=check@:>@])],
620 [with_java_home=check])
622 if test "x$with_java_home" != "xno"; then
623 if test "x$with_java_home" != "xyes" && test "x$with_java_home" != "xcheck"
625 # Reject unsafe characters in $JAVA_HOME
629 *[\\\"\#\$\&\'\`$jh_lf\ \ ]*)
630 AC_MSG_FAILURE([unsafe \$JAVA_HOME directory (use --with-java-home=no to disable Java support)]);;
632 if test -d "$with_java_home"; then
633 JAVA_HOME="$with_java_home"
635 AC_MSG_FAILURE([$with_java_home is not a directory (use --with-java-home=no to disable Java support)])
639 if test "x$JAVA_HOME" = "x"; then
640 # Look for Java in some likely locations.
643 /usr/lib/jvm/java-6-openjdk
645 if test -d $d && test -f $d/bin/java; then
652 if test "x$JAVA_HOME" != "x"; then
653 AC_MSG_CHECKING(for JDK in $JAVA_HOME)
654 if test ! -x "$JAVA_HOME/bin/java"; then
655 AC_MSG_ERROR([missing $JAVA_HOME/bin/java binary (use --with-java-home=no to disable Java support)])
657 JAVA="$JAVA_HOME/bin/java"
659 if test ! -x "$JAVA_HOME/bin/javac"; then
660 AC_MSG_ERROR([missing $JAVA_HOME/bin/javac binary])
662 JAVAC="$JAVA_HOME/bin/javac"
664 if test ! -x "$JAVA_HOME/bin/javah"; then
665 AC_MSG_ERROR([missing $JAVA_HOME/bin/javah binary])
667 JAVAH="$JAVA_HOME/bin/javah"
669 if test ! -x "$JAVA_HOME/bin/javadoc"; then
670 AC_MSG_ERROR([missing $JAVA_HOME/bin/javadoc binary])
672 JAVADOC="$JAVA_HOME/bin/javadoc"
674 if test ! -x "$JAVA_HOME/bin/jar"; then
675 AC_MSG_ERROR([missing $JAVA_HOME/bin/jar binary])
677 JAR="$JAVA_HOME/bin/jar"
679 java_version=`$JAVA -version 2>&1 | grep "java version"`
680 AC_MSG_RESULT(found $java_version in $JAVA_HOME)
683 AC_MSG_CHECKING([for jni.h])
684 if test -f "$JAVA_HOME/include/jni.h"; then
685 JNI_CFLAGS="-I$JAVA_HOME/include"
687 if test "`find $JAVA_HOME -name jni.h`" != ""; then
688 head=`find $JAVA_HOME -name jni.h | tail -1`
689 dir=`dirname "$head"`
692 AC_MSG_FAILURE([missing jni.h header file])
695 AC_MSG_RESULT([$JNI_CFLAGS])
698 AC_MSG_CHECKING([for jni_md.h])
700 *linux*) system="linux" ;;
701 *SunOS*) system="solaris" ;;
702 *cygwin*) system="win32" ;;
703 *) system="$build_os" ;;
705 if test -f "$JAVA_HOME/include/$system/jni_md.h"; then
706 JNI_CFLAGS="$JNI_CFLAGS -I$JAVA_HOME/include/$system"
708 if test "`find $JAVA_HOME -name jni_md.h`" != ""; then
709 head=`find $JAVA_HOME -name jni_md.h | tail -1`
710 dir=`dirname "$head"`
711 JNI_CFLAGS="$JNI_CFLAGS -I$dir"
713 AC_MSG_FAILURE([missing jni_md.h header file])
716 AC_MSG_RESULT([$JNI_CFLAGS])
718 dnl Need extra version flag?
719 AC_MSG_CHECKING([extra javac flags])
721 javac_version=`$JAVAC -version 2>&1`
722 case "$javac_version" in
724 JAVAC_FLAGS="-source 1.5" ;;
726 AC_MSG_RESULT([$JAVAC_FLAGS])
728 dnl Where to install jarfiles.
729 dnl XXX How to make it configurable?
730 JAR_INSTALL_DIR=\${prefix}/share/java
731 JNI_INSTALL_DIR=\${libdir}
734 jni_major_version=`echo "$VERSION" | awk -F. '{print $1}'`
735 jni_minor_version=`echo "$VERSION" | awk -F. '{print $2}'`
736 jni_micro_version=`echo "$VERSION" | awk -F. '{print $3}'`
737 JNI_VERSION_INFO=`expr "$jni_major_version" + "$jni_minor_version"`":$jni_micro_version:$jni_minor_version"
748 AC_SUBST(JAVAC_FLAGS)
749 AC_SUBST(JAR_INSTALL_DIR)
750 AC_SUBST(JNI_INSTALL_DIR)
751 AC_SUBST(JNI_VERSION_INFO)
753 AM_CONDITIONAL([HAVE_JAVA],[test -n "$JAVAC"])
755 dnl Check for Haskell (GHC).
757 AC_ARG_ENABLE([haskell],
758 AS_HELP_STRING([--disable-haskell], [Disable Haskell language bindings]),
760 [enable_haskell=yes])
761 AS_IF([test "x$enable_haskell" != "xno"],
764 AC_CHECK_PROG([GHC],[ghc],[ghc],[no])
766 AM_CONDITIONAL([HAVE_HASKELL],
767 [test "x$GHC" != "xno"])
772 AS_HELP_STRING([--disable-php], [Disable PHP language bindings]),
775 AS_IF([test "x$enable_php" != "xno"],
778 AC_CHECK_PROG([PHP],[php],[php],[no])
779 AC_CHECK_PROG([PHPIZE],[phpize],[phpize],[no])
781 AM_CONDITIONAL([HAVE_PHP], [test "x$PHP" != "xno" && test "x$PHPIZE" != "xno"])
783 dnl Check for Perl modules needed by Perl virt tools (virt-df, etc.)
784 AS_IF([test "x$PERL" != "xno"],
786 missing_perl_modules=no
787 for pm in Pod::Usage Getopt::Long Sys::Virt Data::Dumper Locale::TextDomain Win::Hivex Win::Hivex::Regedit String::ShellQuote; do
788 AC_MSG_CHECKING([for $pm])
789 if ! $PERL -M$pm -e1 >&AS_MESSAGE_LOG_FD 2>&1; then
791 missing_perl_modules=yes
796 if test "x$missing_perl_modules" = "xyes"; then
797 AC_MSG_WARN([some Perl modules required to compile the Perl virt-* tools are missing])
801 AM_CONDITIONAL([HAVE_TOOLS],
802 [test "x$PERL" != "xno" && test "x$missing_perl_modules" != "xyes"])
804 dnl Library versioning.
805 MAX_PROC_NR=`cat $srcdir/src/MAX_PROC_NR`
806 AC_SUBST(MAX_PROC_NR)
808 dnl Replace libtool with a wrapper that clobbers dependency_libs in *.la files
809 dnl http://lists.fedoraproject.org/pipermail/devel/2010-November/146343.html
810 LIBTOOL='bash $(top_srcdir)/libtool-kill-dependency_libs.sh $(top_builddir)/libtool'
814 if test "x$enable_daemon" = "xyes"; then
815 AC_CONFIG_SUBDIRS([daemon])
818 dnl Produce output files.
819 AC_CONFIG_HEADERS([config.h])
820 dnl http://www.mail-archive.com/automake@gnu.org/msg10204.html
821 AC_CONFIG_FILES([podwrapper.sh],
822 [chmod +x podwrapper.sh])
823 AC_CONFIG_FILES([run],
825 AC_CONFIG_FILES([Makefile
839 gnulib/tests/Makefile
844 java/examples/Makefile
848 ocaml/examples/Makefile
851 perl/examples/Makefile
858 python/examples/Makefile
864 ruby/examples/Makefile
873 echo "------------------------------------------------------------"
874 echo "Thank you for downloading $PACKAGE_STRING"
876 echo "This is how we have configured the optional components for you today:"
878 echo "Daemon .............................. $enable_daemon"
879 echo "Appliance ........................... $enable_appliance"
880 echo "QEMU ................................ $QEMU"
881 echo -n "OCaml bindings ...................... "
882 if test "x$HAVE_OCAML_TRUE" = "x"; then echo "yes"; else echo "no"; fi
883 echo -n "Perl bindings ....................... "
884 if test "x$HAVE_PERL_TRUE" = "x"; then echo "yes"; else echo "no"; fi
885 echo -n "Python bindings ..................... "
886 if test "x$HAVE_PYTHON_TRUE" = "x"; then echo "yes"; else echo "no"; fi
887 echo -n "Ruby bindings ....................... "
888 if test "x$HAVE_RUBY_TRUE" = "x"; then echo "yes"; else echo "no"; fi
889 echo -n "Java bindings ....................... "
890 if test "x$HAVE_JAVA_TRUE" = "x"; then echo "yes"; else echo "no"; fi
891 echo -n "Haskell bindings .................... "
892 if test "x$HAVE_HASKELL_TRUE" = "x"; then echo "yes"; else echo "no"; fi
893 echo -n "PHP bindings ........................ "
894 if test "x$HAVE_PHP_TRUE" = "x"; then echo "yes"; else echo "no"; fi
895 echo "guestfish and C virt tools .......... yes"
896 echo -n "Perl virt tools ..................... "
897 if test "x$HAVE_TOOLS_TRUE" = "x"; then echo "yes"; else echo "no"; fi
898 echo -n "virt-resize ......................... "
899 if test "x$HAVE_OCAML_TRUE" = "x" && test "x$HAVE_OCAML_PCRE_TRUE" = "x"; then echo "yes"; else echo "no"; fi
900 echo "FUSE filesystem ..................... $enable_fuse"
902 echo "If any optional component is configured 'no' when you expected 'yes'"
903 echo "then you should check the preceeding messages."
905 echo "Please report bugs back to the mailing list:"
906 echo "http://www.redhat.com/mailman/listinfo/libguestfs"
908 echo "Next you should type 'make' to build the package,"
909 echo "then 'make check' to run the tests."
910 echo "------------------------------------------------------------"