dnl Process this file with autoconf to produce a configure script. dnl Copyright (C) 2005-2013 Red Hat, Inc. dnl See COPYING.LIB for the License of this software AC_INIT([libvirt], [1.0.1], [libvir-list@redhat.com], [], [http://libvirt.org]) AC_CONFIG_SRCDIR([src/libvirt.c]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_MACRO_DIR([m4]) dnl Make automake keep quiet about wildcards & other GNUmake-isms AM_INIT_AUTOMAKE([-Wno-portability tar-ustar]) AM_MAINTAINER_MODE([enable]) # Maintainer note - comment this line out if you plan to rerun # GNULIB_POSIXCHECK testing to see if libvirt should be using more modules. # Leave it uncommented for normal releases, for faster ./configure. gl_ASSERT_NO_GNULIB_POSIXCHECK # Use the silent-rules feature when possible. m4_ifndef([AM_SILENT_RULES], [m4_define([AM_SILENT_RULES],[])]) AM_SILENT_RULES([yes]) AC_CANONICAL_HOST # First extract pieces from the version number string LIBVIRT_MAJOR_VERSION=`echo $VERSION | awk -F. '{print $1}'` LIBVIRT_MINOR_VERSION=`echo $VERSION | awk -F. '{print $2}'` LIBVIRT_MICRO_VERSION=`echo $VERSION | awk -F. '{print $3}'` LIBVIRT_VERSION=$LIBVIRT_MAJOR_VERSION.$LIBVIRT_MINOR_VERSION.$LIBVIRT_MICRO_VERSION$LIBVIRT_MICRO_VERSION_SUFFIX LIBVIRT_VERSION_NUMBER=`expr $LIBVIRT_MAJOR_VERSION \* 1000000 + $LIBVIRT_MINOR_VERSION \* 1000 + $LIBVIRT_MICRO_VERSION` # In libtool terminology we need to figure out: # # CURRENT # The most recent interface number that this library implements. # # REVISION # The implementation number of the CURRENT interface. # # AGE # The difference between the newest and oldest interfaces that this # library implements. # # In other words, the library implements all the interface numbers # in the range from number `CURRENT - AGE' to `CURRENT'. # # Libtool assigns the soname version from `CURRENT - AGE', and we # don't want that to ever change in libvirt. ie it must always be # zero, to produce libvirt.so.0. # # We would, however, like the libvirt version number reflected # in the so version'd symlinks, and this is based on AGE.REVISION # eg libvirt.so.0.AGE.REVISION # # Assuming we do ever want to break soname version, this can # toggled. But seriously, don't ever touch this. LIBVIRT_SONUM=0 # The following examples show what libtool will do # # Input: 0.9.14 -> libvirt.so.0.9.14 # Input: 1.0.0 -> libvirt.so.0.1000.0 # Input: 2.5.8 -> libvirt.so.0.2005.8 # AGE=`expr $LIBVIRT_MAJOR_VERSION '*' 1000 + $LIBVIRT_MINOR_VERSION` REVISION=$LIBVIRT_MICRO_VERSION CURRENT=`expr $LIBVIRT_SONUM + $AGE` LIBVIRT_VERSION_INFO=$CURRENT:$REVISION:$AGE AC_SUBST([LIBVIRT_MAJOR_VERSION]) AC_SUBST([LIBVIRT_MINOR_VERSION]) AC_SUBST([LIBVIRT_MICRO_VERSION]) AC_SUBST([LIBVIRT_SONUM]) AC_SUBST([LIBVIRT_VERSION]) AC_SUBST([LIBVIRT_VERSION_INFO]) AC_SUBST([LIBVIRT_VERSION_NUMBER]) AC_ARG_WITH([packager], [AS_HELP_STRING([--with-packager], [Extra packager name])], [],[with_packager=no]) AC_ARG_WITH([packager-version], [AS_HELP_STRING([--with-packager-version], [Extra packager version])], [],[with_packager_version=no]) if test "x$with_packager" != "xno" then AC_DEFINE_UNQUOTED([PACKAGER], ["$with_packager"], [Extra package name]) fi if test "x$with_packager_version" != "xno" then AC_DEFINE_UNQUOTED([PACKAGER_VERSION], ["$with_packager_version"], [Extra package version]) fi dnl Required minimum versions of all libs we depend on LIBXML_REQUIRED="2.6.0" GNUTLS_REQUIRED="1.0.25" AVAHI_REQUIRED="0.6.0" POLKIT_REQUIRED="0.6" PARTED_REQUIRED="1.8.0" UDEV_REQUIRED=145 PCIACCESS_REQUIRED=0.10.0 XMLRPC_REQUIRED=1.14.0 HAL_REQUIRED=0.5.0 DEVMAPPER_REQUIRED=1.0.0 LIBCURL_REQUIRED="7.18.0" OPENWSMAN_REQUIRED="2.2.3" LIBPCAP_REQUIRED="1.0.0" LIBNL_REQUIRED="1.1" LIBSSH2_REQUIRED="1.0" LIBSSH2_TRANSPORT_REQUIRED="1.3" LIBBLKID_REQUIRED="2.17" DBUS_REQUIRED="1.0.0" FUSE_REQUIRED="2.8.6" dnl Checks for C compiler. AC_PROG_CC AC_PROG_INSTALL AC_PROG_CPP dnl Setting AB_VERSION makes the 'autobuild' lines of configure output dnl slightly more useful if test -d $srcdir/.git && git --version >/dev/null 2>&1 ; then AB_VERSION=`cd $srcdir && git describe --match 'v[[0-9]]*' 2>/dev/null` fi gl_EARLY gl_INIT AC_TYPE_UID_T dnl Support building Win32 DLLs (must appear *before* AM_PROG_LIBTOOL) AC_LIBTOOL_WIN32_DLL AM_PROG_LIBTOOL AM_PROG_CC_C_O AM_PROG_LD AC_MSG_CHECKING([for how to mark DSO non-deletable at runtime]) LIBVIRT_NODELETE= `$LD --help 2>&1 | grep -- "-z nodelete" >/dev/null` && \ LIBVIRT_NODELETE="-Wl,-z -Wl,nodelete" AC_MSG_RESULT([$LIBVIRT_NODELETE]) AC_SUBST([LIBVIRT_NODELETE]) AC_MSG_CHECKING([for how to set DSO symbol versions]) VERSION_SCRIPT_FLAGS=-Wl,--version-script= `$LD --help 2>&1 | grep -- --version-script >/dev/null` || \ VERSION_SCRIPT_FLAGS="-Wl,-M -Wl," AC_MSG_RESULT([$VERSION_SCRIPT_FLAGS]) LIBVIRT_COMPILE_WARNINGS LIBVIRT_CHECK_APPARMOR LIBVIRT_CHECK_AUDIT LIBVIRT_CHECK_CAPNG LIBVIRT_CHECK_NETCF LIBVIRT_CHECK_NUMACTL LIBVIRT_CHECK_SANLOCK LIBVIRT_CHECK_SASL LIBVIRT_CHECK_SELINUX LIBVIRT_CHECK_YAJL AC_MSG_CHECKING([for CPUID instruction]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM( [[ #include ]], [[ uint32_t eax, ebx, ecx, edx; asm volatile ( "cpuid" : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) : "a" (eax)); ]])], [have_cpuid=yes], [have_cpuid=no]) if test "x$have_cpuid" = xyes; then AC_DEFINE_UNQUOTED([HAVE_CPUID], 1, [whether CPUID instruction is supported]) fi AC_MSG_RESULT([$have_cpuid]) AC_CHECK_SIZEOF([long]) dnl Availability of various common functions (non-fatal if missing), dnl and various less common threadsafe functions AC_CHECK_FUNCS_ONCE([cfmakeraw geteuid getgid getgrnam_r getmntent_r \ getpwuid_r getuid initgroups kill mmap newlocale posix_fallocate \ posix_memalign regexec sched_getaffinity setns]) dnl Availability of pthread functions (if missing, win32 threading is dnl assumed). Because of $LIB_PTHREAD, we cannot use AC_CHECK_FUNCS_ONCE. dnl LIB_PTHREAD and LIBMULTITHREAD were set during gl_INIT by gnulib. old_LIBS=$LIBS LIBS="$LIBS $LIB_PTHREAD $LIBMULTITHREAD" AC_CHECK_FUNCS([pthread_mutexattr_init]) LIBS=$old_libs dnl Availability of various common headers (non-fatal if missing). AC_CHECK_HEADERS([pwd.h paths.h regex.h sys/un.h \ sys/poll.h syslog.h mntent.h net/ethernet.h linux/magic.h \ sys/un.h sys/syscall.h netinet/tcp.h ifaddrs.h libtasn1.h \ sys/ucred.h]) dnl Check whether endian provides handy macros. AC_CHECK_DECLS([htole64], [], [], [[#include ]]) dnl We need to decide at configure time if libvirt will use real atomic dnl operations ("lock free") or emulated ones with a mutex. dnl Note that the atomic ops are only available with GCC on x86 when dnl using -march=i486 or higher. If we detect that the atomic ops are dnl not available but would be available given the right flags, we want dnl to abort and advise the user to fix their CFLAGS. It's better to do dnl that then to silently fall back on emulated atomic ops just because dnl the user had the wrong build environment. atomic_ops= AC_MSG_CHECKING([for atomic ops implementation]) AC_TRY_COMPILE([], [__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;],[ atomic_ops=gcc ],[]) if test "$atomic_ops" = "" ; then SAVE_CFLAGS="${CFLAGS}" CFLAGS="-march=i486" AC_TRY_COMPILE([], [__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;], [AC_MSG_ERROR([Libvirt must be built with -march=i486 or later.])], []) CFLAGS="${SAVE_CFLAGS}" case "$host" in *-*-mingw* | *-*-msvc* ) atomic_ops=win32 ;; *) if test "$ac_cv_header_pthread_h" = "yes" ; then atomic_ops=pthread else AC_MSG_ERROR([Libvirt must be built with GCC or have pthread.h on non-Win32 platforms]) fi ;; esac fi case "$atomic_ops" in gcc) AC_DEFINE([VIR_ATOMIC_OPS_GCC],[1],[Use GCC atomic ops]) ;; win32) AC_DEFINE([VIR_ATOMIC_OPS_WIN32],[1],[Use Win32 atomic ops]) ;; pthread) AC_DEFINE([VIR_ATOMIC_OPS_PTHREAD],[1],[Use pthread atomic ops emulation]) ;; esac AM_CONDITIONAL([WITH_ATOMIC_OPS_PTHREAD],[test "$atomic_ops" = "pthread"]) AC_MSG_RESULT([$atomic_ops]) AC_CHECK_TYPE([struct ifreq], [AC_DEFINE([HAVE_STRUCT_IFREQ],[1], [Defined if struct ifreq exists in net/if.h])], [], [[#include #include ]]) dnl Our only use of libtasn1.h is in the testsuite, and can be skipped dnl if the header is not present. Assume -ltasn1 is present if the dnl header could be found. AM_CONDITIONAL([HAVE_LIBTASN1], [test "x$ac_cv_header_libtasn1_h" = "xyes"]) AC_CHECK_LIB([intl],[gettext],[]) dnl Do we have rpcgen? AC_PATH_PROG([RPCGEN], [rpcgen], [no]) AM_CONDITIONAL([HAVE_RPCGEN], [test "x$ac_cv_path_RPCGEN" != "xno"]) dnl Is this GLIBC's buggy rpcgen? AM_CONDITIONAL([HAVE_GLIBC_RPCGEN], [test "x$ac_cv_path_RPCGEN" != "xno" && $ac_cv_path_RPCGEN -t /dev/null 2>&1]) dnl Miscellaneous external programs. AC_PATH_PROG([XMLLINT], [xmllint], [/usr/bin/xmllint]) AC_PATH_PROG([XMLCATALOG], [xmlcatalog], [/usr/bin/xmlcatalog]) AC_PATH_PROG([XSLTPROC], [xsltproc], [/usr/bin/xsltproc]) AC_PATH_PROG([AUGPARSE], [augparse], [/usr/bin/augparse]) AC_PROG_MKDIR_P dnl External programs that we can use if they are available. dnl We will hard-code paths to these programs unless we cannot dnl detect them, in which case we'll search for the program dnl along the $PATH at runtime and fail if it's not there. AC_PATH_PROG([DNSMASQ], [dnsmasq], [dnsmasq], [/sbin:/usr/sbin:/usr/local/sbin:$PATH]) AC_PATH_PROG([RADVD], [radvd], [radvd], [/sbin:/usr/sbin:/usr/local/sbin:$PATH]) AC_PATH_PROG([BRCTL], [brctl], [brctl], [/sbin:/usr/sbin:/usr/local/sbin:$PATH]) AC_PATH_PROG([TC], [tc], [tc], [/sbin:/usr/sbin:/usr/local/sbin:$PATH]) AC_PATH_PROG([UDEVADM], [udevadm], [], [/sbin:/usr/sbin:/usr/local/sbin:$PATH]) AC_PATH_PROG([UDEVSETTLE], [udevsettle], [], [/sbin:/usr/sbin:/usr/local/sbin:$PATH]) AC_PATH_PROG([MODPROBE], [modprobe], [modprobe], [/sbin:/usr/sbin:/usr/local/sbin:$PATH]) AC_PATH_PROG([OVSVSCTL], [ovs-vsctl], [ovs-vsctl], [/sbin:/usr/sbin:/usr/local/sbin:$PATH]) AC_PATH_PROG([SCRUB], [scrub], [scrub], [/sbin:/usr/sbin:/usr/local/sbin:$PATH]) AC_DEFINE_UNQUOTED([DNSMASQ],["$DNSMASQ"], [Location or name of the dnsmasq program]) AC_DEFINE_UNQUOTED([RADVD],["$RADVD"], [Location or name of the radvd program]) AC_DEFINE_UNQUOTED([TC],["$TC"], [Location or name of the tc profram (see iproute2)]) AC_DEFINE_UNQUOTED([OVSVSCTL],["$OVSVSCTL"], [Location or name of the ovs-vsctl program]) if test -n "$UDEVADM"; then AC_DEFINE_UNQUOTED([UDEVADM],["$UDEVADM"], [Location or name of the udevadm program]) fi if test -n "$UDEVSETTLE"; then AC_DEFINE_UNQUOTED([UDEVSETTLE],["$UDEVSETTLE"], [Location or name of the udevsettle program]) fi if test -n "$MODPROBE"; then AC_DEFINE_UNQUOTED([MODPROBE],["$MODPROBE"], [Location or name of the modprobe program]) fi AC_DEFINE_UNQUOTED([SCRUB],["$SCRUB"], [Location or name of the scrub program (for wiping algorithms)]) dnl Specific dir for HTML output ? AC_ARG_WITH([html-dir], [AC_HELP_STRING([--with-html-dir=path], [path to base html directory, default $datadir/doc/html])], [HTML_DIR=$withval], [HTML_DIR='$(datadir)/doc']) AC_ARG_WITH([html-subdir], [AC_HELP_STRING([--with-html-subdir=path], [directory used under html-dir, default $PACKAGE-$VERSION/html])], [test "x$withval" != "x" && HTML_DIR="$HTML_DIR/$withval"], [HTML_DIR="$HTML_DIR/\$(PACKAGE)-\$(VERSION)/html"]) AC_SUBST([HTML_DIR]) dnl Specific XML catalog file for validation of generated html AC_ARG_WITH([xml-catalog-file], [AC_HELP_STRING([--with-xml-catalog-file=path], [path to XML catalog file for validating generated html, default /etc/xml/catalog])], [XML_CATALOG_FILE=$withval], [XML_CATALOG_FILE='/etc/xml/catalog']) AC_SUBST([XML_CATALOG_FILE]) dnl if --prefix is /usr, don't use /usr/var for localstatedir dnl or /usr/etc for sysconfdir dnl as this makes a lot of things break in testing situations if test "$prefix" = "/usr" && test "$localstatedir" = '${prefix}/var' ; then localstatedir='/var' fi if test "$prefix" = "/usr" && test "$sysconfdir" = '${prefix}/etc' ; then sysconfdir='/etc' fi dnl Make some notes about which OS we're compiling for, as the lxc and qemu dnl drivers require linux headers, and storage_mpath, dtrace, and nwfilter dnl are also linux specific. The "network" and storage_fs drivers are known dnl to not work on MacOS X presently, so we also make a note if compiling dnl for that with_linux=no with_osx=no with_freebsd=no case $host in *-*-linux*) with_linux=yes ;; *-*-darwin*) with_osx=yes ;; *-*-freebsd*) with_freebsd=yes ;; esac if test $with_linux = no; then if test "x$with_lxc" != xyes then with_lxc=no fi with_dtrace=no fi if test $with_freebsd = yes; then with_firewalld=no fi if test $with_osx = yes; then with_qemu=no fi AM_CONDITIONAL([WITH_LINUX], [test "$with_linux" = "yes"]) AM_CONDITIONAL([WITH_FREEBSD], [test "$with_freebsd" = "yes"]) dnl Allow to build without Xen, QEMU/KVM, test or remote driver AC_ARG_WITH([xen], AC_HELP_STRING([--with-xen], [add XEN support @<:@default=check@:>@]),[],[with_xen=check]) AC_ARG_WITH([xen-inotify], AC_HELP_STRING([--with-xen-inotify], [add XEN inotify support @<:@default=check@:>@]),[],[with_xen_inotify=check]) AC_ARG_WITH([qemu], AC_HELP_STRING([--with-qemu], [add QEMU/KVM support @<:@default=yes@:>@]),[],[with_qemu=yes]) AC_ARG_WITH([uml], AC_HELP_STRING([--with-uml], [add UML support @<:@default=check@:>@]),[],[with_uml=check]) AC_ARG_WITH([openvz], AC_HELP_STRING([--with-openvz], [add OpenVZ support @<:@default=check@:>@]),[],[with_openvz=check]) AC_ARG_WITH([vmware], AC_HELP_STRING([--with-vmware], [add VMware support @<:@default=yes@:>@]),[],[with_vmware=yes]) AC_ARG_WITH([libssh2], AC_HELP_STRING([--with-libssh2], [libssh2 location @<:@default=check@:>@]),[],[with_libssh2=check]) AC_ARG_WITH([phyp], AC_HELP_STRING([--with-phyp], [add PHYP support @<:@default=check@:>@]),[],[with_phyp=check]) AC_ARG_WITH([xenapi], AC_HELP_STRING([--with-xenapi], [add XenAPI support @<:@default=check@:>@]),[],[with_xenapi=check]) AC_ARG_WITH([libxl], AC_HELP_STRING([--with-libxl], [add libxenlight support @<:@default=check@:>@]),[],[with_libxl=check]) AC_ARG_WITH([vbox], AC_HELP_STRING([--with-vbox=@<:@PFX@:>@], [VirtualBox XPCOMC location @<:@default=yes@:>@]),[], [with_vbox=yes]) AC_ARG_WITH([lxc], AC_HELP_STRING([--with-lxc], [add Linux Container support @<:@default=check@:>@]),[],[with_lxc=check]) AC_ARG_WITH([esx], AC_HELP_STRING([--with-esx], [add ESX support @<:@default=check@:>@]),[],[with_esx=check]) AC_ARG_WITH([hyperv], AC_HELP_STRING([--with-hyperv], [add Hyper-V support @<:@default=check@:>@]),[],[with_hyperv=check]) AC_ARG_WITH([parallels], AC_HELP_STRING([--with-parallels], [add Parallels Cloud Server support @<:@default=check@:>@]),[],[with_parallels=check]) AC_ARG_WITH([test], AC_HELP_STRING([--with-test], [add test driver support @<:@default=yes@:>@]),[],[with_test=yes]) AC_ARG_WITH([remote], AC_HELP_STRING([--with-remote], [add remote driver support @<:@default=yes@:>@]),[],[with_remote=yes]) AC_ARG_WITH([libvirtd], AC_HELP_STRING([--with-libvirtd], [add libvirtd support @<:@default=yes@:>@]),[],[with_libvirtd=yes]) AC_ARG_WITH([chrdev-lock-files], AC_HELP_STRING([--with-chrdev-lock-files], [location for UUCP style lock files for character devices (use auto for default paths on some platforms) @<:@default=auto@:>@]), [],[with_chrdev_lock_files=auto]) AC_ARG_WITH([libssh2_transport], AC_HELP_STRING([--with-libssh2_transport], [libssh2 location @<:@default=check@:>@]),[],[with_libssh2_transport=check]) dnl dnl in case someone want to build static binaries dnl STATIC_BINARIES="-static" dnl STATIC_BINARIES= AC_SUBST([STATIC_BINARIES]) dnl --enable-debug=(yes|no) AC_ARG_ENABLE([debug], [AC_HELP_STRING([--enable-debug=@<:@no|yes@:>@], [enable debugging output @<:@default=yes@:>@])],[],[enable_debug=yes]) AM_CONDITIONAL([ENABLE_DEBUG], test x"$enable_debug" = x"yes") if test x"$enable_debug" = x"yes"; then AC_DEFINE([ENABLE_DEBUG], [], [whether debugging is enabled]) fi dnl dnl init script flavor dnl AC_MSG_CHECKING([for init script flavor]) AC_ARG_WITH([init-script], [AC_HELP_STRING([--with-init-script@<:@=STYLE@:>@], [Style of init script to install: redhat, systemd, systemd+redhat, upstart, check, none @<:@default=check@:>@])],[],[with_init_script=check]) init_redhat=no init_systemd=no init_upstart=no case "$with_init_script" in systemd+redhat) init_redhat=yes init_systemd=yes ;; systemd) init_systemd=yes ;; upstart) init_upstart=yes ;; redhat) init_redhat=yes ;; none) ;; check) if test "$cross_compiling" != yes && test -f /etc/redhat-release; then init_redhat=yes with_init_script=redhat fi ;; *) AC_MSG_ERROR([Unknown initscript flavour $with_init_script]) ;; esac AM_CONDITIONAL([LIBVIRT_INIT_SCRIPT_RED_HAT], test "$init_redhat" = "yes") AM_CONDITIONAL([LIBVIRT_INIT_SCRIPT_UPSTART], test "$init_upstart" = "yes") AM_CONDITIONAL([LIBVIRT_INIT_SCRIPT_SYSTEMD], test "$init_systemd" = "yes") AC_MSG_RESULT($with_init_script) AC_MSG_CHECKING([for whether to install sysctl config]) AC_ARG_WITH([sysctl], [AC_HELP_STRING([--with-sysctl@<:@=yes/no@:>@], [Whether to install sysctl configs @<:@default=check@:>@])], [],[with_sysctl=check]) if test "$with_sysctl" = "yes" || test "$with_sysctl" = "check" then case $host in *-*-linux*) with_sysctl=yes ;; **) if test "$with_sysctl" = "yes"; then AC_MSG_ERROR([No sysctl configuration supported for $host]) else with_sysctl=no fi ;; esac fi AM_CONDITIONAL([WITH_SYSCTL], test "$with_sysctl" = "yes") AC_MSG_RESULT($with_sysctl) dnl RHEL-5 has a peculiar version of Xen, which requires some special casing AC_ARG_WITH([rhel5-api], [AC_HELP_STRING([--with-rhel5-api=@<:@ARG@:>@], [build for the RHEL-5 API @<:@default=no@:>@])]) if test x"$with_rhel5_api" = x"yes"; then AC_DEFINE([WITH_RHEL5_API], [1], [whether building for the RHEL-5 API]) fi AC_PATH_PROG([IP_PATH], [ip], /sbin/ip, [/usr/sbin:$PATH]) AC_DEFINE_UNQUOTED([IP_PATH], "$IP_PATH", [path to ip binary]) AC_PATH_PROG([IPTABLES_PATH], [iptables], /sbin/iptables, [/usr/sbin:$PATH]) AC_DEFINE_UNQUOTED([IPTABLES_PATH], "$IPTABLES_PATH", [path to iptables binary]) AC_PATH_PROG([IP6TABLES_PATH], [ip6tables], /sbin/ip6tables, [/usr/sbin:$PATH]) AC_DEFINE_UNQUOTED([IP6TABLES_PATH], "$IP6TABLES_PATH", [path to ip6tables binary]) AC_PATH_PROG([EBTABLES_PATH], [ebtables], /sbin/ebtables, [/usr/sbin:$PATH]) AC_DEFINE_UNQUOTED([EBTABLES_PATH], "$EBTABLES_PATH", [path to ebtables binary]) dnl dnl Checks for the OpenVZ driver dnl if test "$with_openvz" = "check"; then with_openvz=$with_linux fi if test "$with_openvz" = "yes" && test "$with_linux" = "no"; then AC_MSG_ERROR([The OpenVZ driver can be enabled on Linux only.]) fi if test "$with_openvz" = "yes"; then AC_DEFINE_UNQUOTED([WITH_OPENVZ], 1, [whether OpenVZ driver is enabled]) fi AM_CONDITIONAL([WITH_OPENVZ], [test "$with_openvz" = "yes"]) dnl dnl Checks for the VMware Workstation/Player driver dnl if test "$with_vmware" = "yes"; then AC_DEFINE_UNQUOTED([WITH_VMWARE], 1, [whether VMware driver is enabled]) fi AM_CONDITIONAL([WITH_VMWARE], [test "$with_vmware" = "yes"]) dnl dnl check for XDR dnl if test x"$with_remote" = x"yes" || test x"$with_libvirtd" = x"yes"; then dnl Where are the XDR functions? dnl If portablexdr is installed, prefer that. dnl Otherwise try -lrpc (Cygwin) -lxdr (some MinGW), -lnsl (Solaris) dnl -ltirpc (glibc 2.13.90 or newer) or none (most Unix) AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[ AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl tirpc],[], [AC_MSG_ERROR([Cannot find a XDR library])]) ]) dnl check for cygwin's variation in xdr function names AC_CHECK_FUNCS([xdr_u_int64_t],[],[],[#include ]) dnl Cygwin/recent glibc requires -I/usr/include/tirpc for old_CFLAGS=$CFLAGS AC_CACHE_CHECK([where to find ], [lv_cv_xdr_cflags], [ for add_CFLAGS in '' '-I/usr/include/tirpc' 'missing'; do if test x"$add_CFLAGS" = xmissing; then lv_cv_xdr_cflags=missing; break fi CFLAGS="$old_CFLAGS $add_CFLAGS" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]])], [lv_cv_xdr_cflags=${add_CFLAGS:-none}; break]) done ]) CFLAGS=$old_CFLAGS case $lv_cv_xdr_cflags in none) XDR_CFLAGS= ;; missing) AC_MSG_ERROR([Unable to find ]) ;; *) XDR_CFLAGS=$lv_cv_xdr_cflags ;; esac AC_SUBST([XDR_CFLAGS]) fi dnl dnl check for libdl dnl dlfcn_found=yes dlopen_found=yes AC_CHECK_HEADER([dlfcn.h],, [dlfcn_found=no]) AC_SEARCH_LIBS([dlopen], [dl],, [dlopen_found=no]) case $ac_cv_search_dlopen:$host_os in 'none required'* | *:mingw* | *:msvc*) DLOPEN_LIBS= ;; no*) AC_MSG_ERROR([Unable to find dlopen()]) ;; *) if test "x$dlfcn_found" != "xyes"; then AC_MSG_ERROR([Unable to find dlfcn.h]) fi DLOPEN_LIBS=$ac_cv_search_dlopen ;; esac AC_SUBST([DLOPEN_LIBS]) dnl dnl check for VirtualBox XPCOMC location dnl vbox_xpcomc_dir= if test "x$with_vbox" != "xyes" && test "x$with_vbox" != "xno"; then # intentionally don't do any further checks here on the provided path vbox_xpcomc_dir=$with_vbox with_vbox=yes fi AC_DEFINE_UNQUOTED([VBOX_XPCOMC_DIR], ["$vbox_xpcomc_dir"], [Location of directory containing VirtualBox XPCOMC library]) if test "x$with_vbox" = "xyes"; then AC_DEFINE_UNQUOTED([WITH_VBOX], 1, [whether VirtualBox driver is enabled]) fi AM_CONDITIONAL([WITH_VBOX], [test "$with_vbox" = "yes"]) if test "$with_libvirtd" = "no" ; then with_qemu=no fi if test "$with_qemu" = "yes" ; then AC_DEFINE_UNQUOTED([WITH_QEMU], 1, [whether QEMU driver is enabled]) fi AM_CONDITIONAL([WITH_QEMU], [test "$with_qemu" = "yes"]) if test "$with_test" = "yes" ; then AC_DEFINE_UNQUOTED([WITH_TEST], 1, [whether Test driver is enabled]) fi AM_CONDITIONAL([WITH_TEST], [test "$with_test" = "yes"]) if test "$with_remote" = "yes" ; then AC_DEFINE_UNQUOTED([WITH_REMOTE], 1, [whether Remote driver is enabled]) fi AM_CONDITIONAL([WITH_REMOTE], [test "$with_remote" = "yes"]) if test "$with_libvirtd" = "yes" ; then AC_DEFINE_UNQUOTED([WITH_LIBVIRTD], 1, [whether libvirtd daemon is enabled]) fi AM_CONDITIONAL([WITH_LIBVIRTD], [test "$with_libvirtd" = "yes"]) old_LIBS="$LIBS" old_CFLAGS="$CFLAGS" LIBXENSERVER_LIBS="" LIBXENSERVER_CFLAGS="" dnl search for the XenServer library fail=0 if test "$with_xenapi" != "no" ; then if test "$with_xenapi" != "yes" && test "$with_xenapi" != "check" ; then LIBXENSERVER_CFLAGS="-I$with_xenapi/include" LIBXENSERVER_LIBS="-L$with_xenapi" fi CFLAGS="$CFLAGS $LIBXENSERVER_CFLAGS" LIBS="$LIBS $LIBXENSERVER_LIBS" AC_CHECK_LIB([xenserver], [xen_vm_start], [ with_xenapi=yes LIBXENSERVER_LIBS="$LIBXENSERVER_LIBS -lxenserver" ],[ if test "$with_xenapi" = "yes"; then fail=1 fi with_xenapi=no ]) fi LIBS="$old_LIBS" CFLAGS="$old_CFLAGS" if test $fail = 1; then AC_MSG_ERROR([You must install the XenServer Library to compile XenAPI driver with -lxenserver]) fi if test "$with_xenapi" = "yes"; then AC_DEFINE_UNQUOTED([WITH_XENAPI], 1, [whether XenAPI driver is enabled]) fi AC_SUBST([LIBXENSERVER_CFLAGS]) AC_SUBST([LIBXENSERVER_LIBS]) old_LIBS="$LIBS" old_CFLAGS="$CFLAGS" LIBXL_LIBS="" LIBXL_CFLAGS="" dnl search for libxl, aka libxenlight fail=0 if test "$with_libxl" != "no" ; then if test "$with_libxl" != "yes" && test "$with_libxl" != "check" ; then LIBXL_CFLAGS="-I$with_libxl/include" LIBXL_LIBS="-L$with_libxl" fi CFLAGS="$CFLAGS $LIBXL_CFLAGS" LIBS="$LIBS $LIBXL_LIBS" AC_CHECK_LIB([xenlight], [libxl_ctx_alloc], [ with_libxl=yes LIBXL_LIBS="$LIBXL_LIBS -lxenlight -lxenctrl" ],[ if test "$with_libxl" = "yes"; then fail=1 fi with_libxl=no ]) fi LIBS="$old_LIBS" CFLAGS="$old_CFLAGS" if test $fail = 1; then AC_MSG_ERROR([You must install the libxl Library from Xen >= 4.2 to compile libxenlight driver with -lxl]) fi if test "$with_libxl" = "yes"; then AC_DEFINE_UNQUOTED([WITH_LIBXL], 1, [whether libxenlight driver is enabled]) fi AM_CONDITIONAL([WITH_LIBXL], [test "$with_libxl" = "yes"]) AC_SUBST([LIBXL_CFLAGS]) AC_SUBST([LIBXL_LIBS]) old_LIBS="$LIBS" old_CFLAGS="$CFLAGS" XEN_LIBS="" XEN_CFLAGS="" dnl search for the Xen store library if test "$with_xen" != "no" ; then if test "$with_xen" != "yes" && test "$with_xen" != "check" ; then XEN_CFLAGS="-I$with_xen/include" XEN_LIBS="-L$with_xen/lib64 -L$with_xen/lib" fi fail=0 CFLAGS="$CFLAGS $XEN_CFLAGS" LIBS="$LIBS $XEN_LIBS" AC_CHECK_LIB([xenstore], [xs_read], [ with_xen=yes XEN_LIBS="$XEN_LIBS -lxenstore" ],[ if test "$with_xen" = "yes"; then fail=1 fi with_xen=no ]) fi if test "$with_xen" != "no" ; then dnl In Xen 4.2, xs.h is deprecated in favor of xenstore.h. AC_CHECK_HEADERS([xenstore.h]) AC_CHECK_HEADERS([xen/xen.h xen/version.h xen/dom0_ops.h],,[ if test "$with_xen" = "yes"; then fail=1 fi with_xen=no ], [#include #include ]) fi if test "$with_xen" != "no" ; then dnl Search for the location of . found= AC_CHECK_HEADERS([xen/sys/privcmd.h xen/linux/privcmd.h], [found=yes; break;], [], [#include #include #include ]) if test "x$found" != "xyes"; then if test "$with_xen" = "yes"; then fail=1 fi with_xen=no fi fi LIBS="$old_LIBS" CFLAGS="$old_CFLAGS" if test $fail = 1; then AC_MSG_ERROR([You must install the Xen development package to compile Xen driver with -lxenstore]) fi if test "$with_xen" = "yes"; then AC_DEFINE_UNQUOTED([WITH_XEN], 1, [whether Xen driver is enabled]) fi AM_CONDITIONAL([WITH_XEN], [test "$with_xen" = "yes"]) AC_SUBST([XEN_CFLAGS]) AC_SUBST([XEN_LIBS]) AM_CONDITIONAL([WITH_XENXS], [test "$with_libxl" = "yes" || test "$with_xen" = "yes"]) dnl dnl check for kernel headers required by xen_inotify dnl if test "$with_xen" != "yes"; then with_xen_inotify=no fi if test "$with_xen_inotify" != "no"; then AC_CHECK_HEADER([sys/inotify.h], [ with_xen_inotify=yes ], [ if test "$with_xen_inotify" = "check"; then with_xen_inotify=no AC_MSG_NOTICE([Header file is required for Xen Inotify support, disabling it]) else AC_MSG_ERROR([Header file is required for Xen Inotify support!]) fi 0]) fi if test "$with_xen_inotify" = "yes"; then AC_DEFINE_UNQUOTED([WITH_XEN_INOTIFY], 1,[whether Xen inotify sub-driver is enabled]) fi AM_CONDITIONAL([WITH_XEN_INOTIFY], [test "$with_xen_inotify" = "yes"]) dnl dnl check for kvm headers dnl AC_CHECK_HEADERS([linux/kvm.h]) dnl dnl check for sufficient headers for LXC dnl if test "$with_libvirtd" = "no" ; then with_lxc=no fi if test "$with_lxc" = "yes" || test "$with_lxc" = "check"; then AC_TRY_LINK([ #include #include #include ], [ unshare (!(LO_FLAGS_AUTOCLEAR + EPOLL_CLOEXEC)); ], [ with_lxc=yes AC_DEFINE([HAVE_DECL_LO_FLAGS_AUTOCLEAR], [1], [Define to 1 if you have the declaration of `LO_FLAGS_AUTOCLEAR', and to 0 if you don't.]) ], [ if test "$with_lxc" = "check"; then with_lxc=no AC_MSG_NOTICE([Required kernel features were not found, disabling LXC]) else AC_MSG_ERROR([Required kernel features for LXC were not found]) fi ]) fi if test "$with_lxc" = "yes" ; then AC_DEFINE_UNQUOTED([WITH_LXC], 1, [whether LXC driver is enabled]) fi AM_CONDITIONAL([WITH_LXC], [test "$with_lxc" = "yes"]) dnl dnl Checks for the Parallels driver dnl if test "$with_parallels" = "check"; then with_parallels=$with_linux if test ! $host_cpu = 'x86_64'; then with_parallels=no fi fi if test "$with_parallels" = "yes" && test "$with_linux" = "no"; then AC_MSG_ERROR([The Parallels driver can be enabled on Linux only.]) fi if test "$with_parallels" = "yes"; then AC_DEFINE_UNQUOTED([WITH_PARALLELS], 1, [whether Parallels driver is enabled]) fi AM_CONDITIONAL([WITH_PARALLELS], [test "$with_parallels" = "yes"]) dnl dnl check for shell that understands <> redirection without truncation, dnl needed by src/qemu/qemu_monitor_{text,json}.c. dnl if test "$with_qemu" = yes; then lv_wrapper_shell= AC_CACHE_CHECK([for shell that supports <> redirection], [lv_cv_wrapper_shell], [ # If cross-compiling, guess that /bin/sh is good enough except for # Linux, where it might be dash 0.5.5 which is known broken; and on # Linux, we have a good chance that /bin/bash will exist. # If we guess wrong, a user can override the cache variable. # Going through /bin/bash is a slight slowdown if /bin/sh works. if test "$cross_compiling" = yes; then case $host_os in linux*) lv_cv_wrapper_shell=/bin/bash ;; *) lv_cv_wrapper_shell=/bin/sh ;; esac else for lv_cv_wrapper_shell in /bin/sh bash ksh zsh none; do test $lv_cv_wrapper_shell = none && AC_MSG_ERROR([could not find decent shell]) echo a > conftest.a ($lv_cv_wrapper_shell -c ': 1<>conftest.a') 2>/dev/null && case `cat conftest.a`.$lv_cv_wrapper_shell in a./*) break;; dnl /bin/sh is good enough a.*) dnl bash, ksh, and zsh all understand 'command', use that dnl to determine the absolute path of the shell lv_cv_wrapper_shell=`$lv_cv_wrapper_shell -c \ "command -v $lv_cv_wrapper_shell"` case $lv_cv_wrapper_shell in /*) break;; esac ;; esac done rm -f conftest.a fi ]) if test "x$lv_cv_wrapper_shell" != x/bin/sh; then lv_wrapper_shell=$lv_cv_wrapper_shell fi if test "x$lv_wrapper_shell" != x; then AC_DEFINE_UNQUOTED([VIR_WRAPPER_SHELL], ["$lv_wrapper_shell"], [Define to the absolute path of a shell that does not truncate on <> redirection, if /bin/sh does not fit the bill]) fi fi dnl dnl check for kernel headers required by src/bridge.c dnl if test "$with_linux" = "yes"; then if test "$with_qemu" = "yes" || test "$with_lxc" = "yes" ; then AC_CHECK_HEADERS([linux/param.h linux/sockios.h linux/if_bridge.h linux/if_tun.h],, AC_MSG_ERROR([You must install kernel-headers in order to compile libvirt with QEMU or LXC support])) fi fi dnl Need to test if pkg-config exists PKG_PROG_PKG_CONFIG dnl ========================================================================== dnl find libxml2 library, borrowed from xmlsec dnl ========================================================================== LIBXML_CONFIG="xml2-config" LIBXML_CFLAGS="" LIBXML_LIBS="" LIBXML_FOUND="no" AC_ARG_WITH([libxml], AC_HELP_STRING([--with-libxml=@<:@PFX@:>@], [libxml2 location])) if test "x$with_libxml" = "xno" ; then AC_MSG_CHECKING(for libxml2 libraries >= $LIBXML_REQUIRED) AC_MSG_ERROR([libxml2 >= $LIBXML_REQUIRED is required for libvirt]) elif test "x$with_libxml" = "x" && test "x$PKG_CONFIG" != "x" ; then PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= $LIBXML_REQUIRED, [LIBXML_FOUND=yes], [LIBXML_FOUND=no]) fi if test "$LIBXML_FOUND" = "no" ; then if test "x$with_libxml" != "x" ; then LIBXML_CONFIG=$with_libxml/bin/$LIBXML_CONFIG fi AC_MSG_CHECKING(libxml2 $LIBXML_CONFIG >= $LIBXML_REQUIRED ) if ! $LIBXML_CONFIG --version > /dev/null 2>&1 ; then AC_MSG_ERROR([Could not find libxml2 anywhere (see config.log for details).]) fi vers=`$LIBXML_CONFIG --version | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'` minvers=`echo $LIBXML_REQUIRED | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'` if test "$vers" -ge "$minvers" ; then LIBXML_LIBS="`$LIBXML_CONFIG --libs`" LIBXML_CFLAGS="`$LIBXML_CONFIG --cflags`" LIBXML_FOUND="yes" AC_MSG_RESULT(yes) else AC_MSG_ERROR( [You need at least libxml2 $LIBXML_REQUIRED for this version of libvirt]) fi fi AC_SUBST([LIBXML_CFLAGS]) AC_SUBST([LIBXML_LIBS]) dnl xmlURI structure has query_raw? old_cflags="$CFLAGS" old_libs="$LIBS" CFLAGS="$CFLAGS $LIBXML_CFLAGS" LIBS="$LIBS $LIBXML_LIBS" AC_CHECK_MEMBER([struct _xmlURI.query_raw], [AC_DEFINE([HAVE_XMLURI_QUERY_RAW], [], [Have query_raw field in libxml2 xmlURI structure])],, [#include ]) CFLAGS="$old_cflags" LIBS="$old_libs" dnl GnuTLS library AC_ARG_WITH([gnutls], AC_HELP_STRING([--with-gnutls], [use GNUTLS for encryption @<:@default=check@:>@]), [], [with_gnutls=check]) if test "x$with_gnutls" != "xno"; then if test "x$with_gnutls" != "xyes" && test "x$with_gnutls" != "xcheck"; then GNUTLS_CFLAGS="-I$with_gnutls/include" GNUTLS_LIBS="-L$with_gnutls/lib" fi fail=0 old_cflags="$CFLAGS" old_libs="$LIBS" CFLAGS="$CFLAGS $GNUTLS_CFLAGS" LIBS="$LIBS $GNUTLS_LIBS" GNUTLS_FOUND=no if test -x "$PKG_CONFIG" ; then PKG_CHECK_MODULES(GNUTLS, gnutls >= $GNUTLS_REQUIRED, [GNUTLS_FOUND=yes], [GNUTLS_FOUND=no]) fi if test "$GNUTLS_FOUND" = "no"; then fail=0 AC_CHECK_HEADER([gnutls/gnutls.h], [], [fail=1]) AC_CHECK_LIB([gnutls], [gnutls_handshake],[], [fail=1], [-lgcrypt]) test $fail = 0 && GNUTLS_FOUND=yes GNUTLS_LIBS="$GNUTLS_LIBS -lgnutls" fi if test "$GNUTLS_FOUND" = "no"; then if test "$with_gnutls" = "check"; then with_gnutls=no GNUTLS_LIBS= GNUTLS_CFLAGS= else AC_MSG_ERROR([You must install the GnuTLS library in order to compile and run libvirt]) fi else dnl Not all versions of gnutls include -lgcrypt, and so we add dnl it explicitly for the calls to gcry_control/check_version GNUTLS_LIBS="$GNUTLS_LIBS -lgcrypt" with_gnutls=yes fi LIBS="$old_libs" CFLAGS="$old_CFLAGS" fi if test "x$with_gnutls" = "xyes" ; then AC_DEFINE_UNQUOTED([HAVE_GNUTLS], 1, [whether GNUTLS is available for encryption]) fi AM_CONDITIONAL([HAVE_GNUTLS], [test "x$with_gnutls" = "xyes"]) AC_SUBST([GNUTLS_CFLAGS]) AC_SUBST([GNUTLS_LIBS]) dnl DBus library DBUS_CFLAGS= DBUS_LIBS= AC_ARG_WITH([dbus], AC_HELP_STRING([--with-dbus], [enable communication with DBus @<:@default=check@:>@]), [], [with_dbus=check]) if test "$with_dbus" = "yes" || test "$with_dbus" = "check" ; then PKG_CHECK_MODULES(DBUS, dbus-1 >= $DBUS_REQUIRED, [with_dbus=yes], [ if test "$with_dbus" = "check" ; then with_dbus=no else AC_MSG_ERROR([You must install DBus >= $DBUS_REQUIRED to compile libvirt]) fi]) fi if test "$with_dbus" = "yes" ; then AC_DEFINE_UNQUOTED([HAVE_DBUS], 1, [enable communication with DBus]) save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$LIBS $DBUS_LIBS" CFLAGS="$CFLAGS $DBUS_CFLAGS" AC_CHECK_FUNCS([dbus_watch_get_unix_fd]) LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi AM_CONDITIONAL([HAVE_DBUS], [test "$with_dbus" = "yes"]) dnl PolicyKit library POLKIT_CFLAGS= POLKIT_LIBS= PKCHECK_PATH= AC_ARG_WITH([polkit], AC_HELP_STRING([--with-polkit], [use PolicyKit for UNIX socket access checks @<:@default=check@:>@]), [], [with_polkit=check]) with_polkit0=no with_polkit1=no if test "x$with_polkit" = "xyes" || test "x$with_polkit" = "xcheck"; then dnl Check for new polkit first - just a binary AC_PATH_PROG([PKCHECK_PATH],[pkcheck], [], [/usr/sbin:$PATH]) if test "x$PKCHECK_PATH" != "x" ; then AC_DEFINE_UNQUOTED([PKCHECK_PATH],["$PKCHECK_PATH"],[Location of pkcheck program]) AC_DEFINE_UNQUOTED([HAVE_POLKIT], 1, [use PolicyKit for UNIX socket access checks]) AC_DEFINE_UNQUOTED([HAVE_POLKIT1], 1, [use PolicyKit for UNIX socket access checks]) with_polkit="yes" with_polkit1="yes" else dnl Check for old polkit second - library + binary PKG_CHECK_MODULES(POLKIT, polkit-dbus >= $POLKIT_REQUIRED, [with_polkit=yes], [ if test "x$with_polkit" = "xcheck" ; then with_polkit=no else AC_MSG_ERROR( [You must install PolicyKit >= $POLKIT_REQUIRED to compile libvirt]) fi ]) if test "x$with_polkit" = "xyes" ; then AC_DEFINE_UNQUOTED([HAVE_POLKIT], 1, [use PolicyKit for UNIX socket access checks]) AC_DEFINE_UNQUOTED([HAVE_POLKIT0], 1, [use PolicyKit for UNIX socket access checks]) old_CFLAGS=$CFLAGS old_LIBS=$LIBS CFLAGS="$CFLAGS $POLKIT_CFLAGS" LIBS="$LIBS $POLKIT_LIBS" AC_CHECK_FUNCS([polkit_context_is_caller_authorized]) CFLAGS="$old_CFLAGS" LIBS="$old_LIBS" AC_PATH_PROG([POLKIT_AUTH], [polkit-auth]) if test "x$POLKIT_AUTH" != "x"; then AC_DEFINE_UNQUOTED([POLKIT_AUTH],["$POLKIT_AUTH"],[Location of polkit-auth program]) fi with_polkit0="yes" fi fi fi AM_CONDITIONAL([HAVE_POLKIT], [test "x$with_polkit" = "xyes"]) AM_CONDITIONAL([HAVE_POLKIT0], [test "x$with_polkit0" = "xyes"]) AM_CONDITIONAL([HAVE_POLKIT1], [test "x$with_polkit1" = "xyes"]) AC_SUBST([POLKIT_CFLAGS]) AC_SUBST([POLKIT_LIBS]) dnl firewalld AC_ARG_WITH([firewalld], AC_HELP_STRING([--with-firewalld], [enable firewalld support @<:@default=check@:>@]), [], [with_firewalld=check]) if test "x$with_firewalld" = "xcheck" ; then with_firewalld=$with_dbus fi if test "x$with_firewalld" == "xyes" ; then if test "x$with_dbus" != "xyes" ; then AC_MSG_ERROR([You must have dbus enabled for firewalld support]) fi AC_DEFINE_UNQUOTED([HAVE_FIREWALLD], [1], [whether firewalld support is enabled]) fi AM_CONDITIONAL([HAVE_FIREWALLD], [test "x$with_firewalld" != "xno"]) dnl Avahi library AC_ARG_WITH([avahi], AC_HELP_STRING([--with-avahi], [use avahi to advertise remote daemon @<:@default=check@:>@]), [], [with_avahi=check]) AVAHI_CFLAGS= AVAHI_LIBS= if test "x$with_avahi" = "xyes" || test "x$with_avahi" = "xcheck"; then PKG_CHECK_MODULES(AVAHI, avahi-client >= $AVAHI_REQUIRED, [with_avahi=yes], [ if test "x$with_avahi" = "xcheck" ; then with_avahi=no else AC_MSG_ERROR( [You must install Avahi >= $AVAHI_REQUIRED to compile libvirt]) fi ]) if test "x$with_avahi" = "xyes" ; then AC_DEFINE_UNQUOTED([HAVE_AVAHI], 1, [whether Avahi is used to broadcast server presence]) fi fi AC_SUBST([AVAHI_CFLAGS]) AC_SUBST([AVAHI_LIBS]) dnl UUCP style file locks for character devices if test "$with_chrdev_lock_files" != "no"; then case $with_chrdev_lock_files in yes | auto) dnl Default locations for platforms, or disable if unknown if test "$with_linux" = "yes"; then with_chrdev_lock_files=/var/lock elif test "$with_chrdev_lock_files" = "auto"; then with_chrdev_lock_files=no fi ;; esac if test "$with_chrdev_lock_files" = "yes"; then AC_MSG_ERROR([You must specify path for the lock files on this platform]) fi AC_DEFINE_UNQUOTED([VIR_CHRDEV_LOCK_FILE_PATH], "$with_chrdev_lock_files", [path to directory containing UUCP device lock files]) fi AM_CONDITIONAL([VIR_CHRDEV_LOCK_FILE_PATH], [test "$with_chrdev_lock_files" != "no"]) AC_ARG_WITH([secdriver-selinux], AC_HELP_STRING([--with-secdriver-selinux], [use SELinux security driver @<:@default=check@:>@]), [], [with_secdriver_selinux=check]) if test "$with_selinux" != "yes" ; then if test "$with_secdriver_selinux" = "check" ; then with_secdriver_selinux=no fi if test "$with_secdriver_selinux" != "no"; then AC_MSG_ERROR([You must install the libselinux development package and enable SELinux with the --with-selinux=yes in order to compile libvirt --with-secdriver-selinux=yes]) fi elif test "$with_secdriver_selinux" != "no"; then old_cflags="$CFLAGS" old_libs="$LIBS" CFLAGS="$CFLAGS $SELINUX_CFLAGS" LIBS="$CFLAGS $SELINUX_LIBS" fail=0 AC_CHECK_FUNC([selinux_virtual_domain_context_path], [], [fail=1]) AC_CHECK_FUNC([selinux_virtual_image_context_path], [], [fail=1]) AC_CHECK_FUNCS([selinux_lxc_contexts_path]) CFLAGS="$old_cflags" LIBS="$old_libs" if test "$fail" = "1" ; then if test "$with_secdriver_selinux" = "check" ; then with_secdriver_selinux=no else AC_MSG_ERROR([You must install libselinux development package >= 2.0.82 in order to compile libvirt --with-secdriver-selinux=yes]) fi else with_secdriver_selinux=yes AC_DEFINE_UNQUOTED([WITH_SECDRIVER_SELINUX], 1, [whether SELinux security driver is available]) fi fi AM_CONDITIONAL([WITH_SECDRIVER_SELINUX], [test "$with_secdriver_selinux" != "no"]) AC_ARG_WITH([secdriver-apparmor], AC_HELP_STRING([--with-secdriver-apparmor], [use AppArmor security driver @<:@default=check@:>@]), [], [with_secdriver_apparmor=check]) if test "$with_apparmor" != "yes" ; then if test "$with_secdriver_apparmor" = "check" ; then with_secdriver_apparmor=no fi if test "$with_secdriver_apparmor" != "no" ; then AC_MSG_ERROR([You must install the AppArmor development package in order to compile libvirt]) fi elif test "with_secdriver_apparmor" != "no" ; then with_secdriver_apparmor=yes AC_DEFINE_UNQUOTED([WITH_SECDRIVER_APPARMOR], 1, [whether AppArmor security driver is available]) fi AM_CONDITIONAL([WITH_SECDRIVER_APPARMOR], [test "$with_secdriver_apparmor" != "no"]) dnl DTrace static probes AC_ARG_WITH([dtrace], AC_HELP_STRING([--with-dtrace], [use dtrace for static probing @<:@default=check@:>@]), [], [with_dtrace=check]) if test "$with_dtrace" != "no" ; then AC_PATH_PROG([DTRACE], [dtrace], [], [/bin:/usr/bin]) if test -z "$DTRACE" ; then if test "$with_dtrace" = "check"; then with_dtrace=no else AC_MSG_ERROR([You must install the 'dtrace' binary to enable libvirt static probes]) fi else with_dtrace=yes fi if test "$with_dtrace" = "yes"; then AC_DEFINE_UNQUOTED([WITH_DTRACE_PROBES], 1, [whether DTrace static probes are available]) fi fi AM_CONDITIONAL([WITH_DTRACE_PROBES], [test "$with_dtrace" != "no"]) dnl numad AC_ARG_WITH([numad], AC_HELP_STRING([--with-numad], [use numad to manage CPU placement dynamically @<:@default=check@:>@]), [], [with_numad=check]) if test "$with_numad" != "no" ; then fail=0 AC_PATH_PROG([NUMAD], [numad], [], [/bin:/usr/bin]) if test "$with_numad" = "check"; then test "$with_numactl" = "yes" || fail=1 if test -z "$NUMAD" || test $fail = 1; then with_numad="no" else with_numad="yes" fi else test -z "$NUMAD" && AC_MSG_ERROR([You must install numad package to manage CPU and memory placement dynamically]) test "$with_numactl" = "yes" || fail=1 test $fail = 1 && AC_MSG_ERROR([You must install the numactl development package in order to compile and run libvirt]) fi fi if test "$with_numad" = "yes"; then AC_DEFINE_UNQUOTED([HAVE_NUMAD], 1, [whether numad is available]) AC_DEFINE_UNQUOTED([NUMAD],["$NUMAD"], [Location or name of the numad program]) fi AM_CONDITIONAL([HAVE_NUMAD], [test "$with_numad" != "no"]) dnl pcap lib LIBPCAP_CONFIG="pcap-config" LIBPCAP_CFLAGS="" LIBPCAP_LIBS="" LIBPCAP_FOUND="no" AC_ARG_WITH([libpcap], AC_HELP_STRING([--with-libpcap=@<:@PFX@:>@], [libpcap location])) if test "$with_qemu" = "yes"; then case $with_libpcap in no) LIBPCAP_CONFIG= ;; ''|yes) LIBPCAP_CONFIG="pcap-config" ;; *) LIBPCAP_CONFIG="$with_libpcap/bin/pcap-config" ;; esac AS_IF([test "x$LIBPCAP_CONFIG" != "x"], [ AC_MSG_CHECKING(libpcap $LIBPCAP_CONFIG >= $LIBPCAP_REQUIRED ) if ! $LIBPCAP_CONFIG --libs > /dev/null 2>&1 ; then AC_MSG_RESULT(no) else LIBPCAP_LIBS="`$LIBPCAP_CONFIG --libs`" LIBPCAP_CFLAGS="`$LIBPCAP_CONFIG --cflags`" LIBPCAP_FOUND="yes" AC_MSG_RESULT(yes) fi ]) fi if test "x$LIBPCAP_FOUND" = "xyes"; then AC_DEFINE_UNQUOTED([HAVE_LIBPCAP], 1, [whether libpcap can be used]) fi AC_SUBST([LIBPCAP_CFLAGS]) AC_SUBST([LIBPCAP_LIBS]) dnl dnl Checks for the UML driver dnl if test "$with_libvirtd" = "no" ; then with_uml=no fi if test "$with_uml" = "yes" || test "$with_uml" = "check"; then AC_CHECK_HEADER([sys/inotify.h], [ with_uml=yes ], [ if test "$with_uml" = "check"; then with_uml=no AC_MSG_NOTICE([ is required for the UML driver, disabling it]) else AC_MSG_ERROR([The is required for the UML driver. Upgrade your libc6.]) fi ]) fi if test "$with_uml" = "yes" ; then AC_DEFINE_UNQUOTED([WITH_UML], 1, [whether UML driver is enabled]) fi AM_CONDITIONAL([WITH_UML], [test "$with_uml" = "yes"]) dnl dnl check for libssh2 (PHYP and libssh2 transport) dnl LIBSSH2_CFLAGS="" LIBSSH2_LIBS="" if test "$with_phyp" = "yes" || test "$with_phyp" = "check" || test "$with_libssh2_transport" = "yes" || test "$with_libssh2_transport" = "check"; then PKG_CHECK_MODULES([LIBSSH2], [libssh2 >= $LIBSSH2_REQUIRED], [ if test "$with_phyp" = "check"; then with_phyp=yes fi if $PKG_CONFIG "libssh2 >= $LIBSSH2_TRANSPORT_REQUIRED"; then if test "$with_libssh2_transport" = "check"; then with_libssh2_transport=yes fi else if test "$with_libssh2_transport" = "check"; then with_libssh2_transport=no AC_MSG_NOTICE([libssh2 >= $LIBSSH2_TRANSPORT_REQUIRED is required for libssh2 transport]) fi if test "$with_libssh2_transport" = "yes"; then AC_MSG_ERROR([libssh2 >= $LIBSSH2_TRANSPORT_REQUIRED is required for libssh2 transport]) fi fi ], [ if test "$with_phyp" = "check"; then with_phyp=no AC_MSG_NOTICE([libssh2 is required for Phyp driver, disabling it]) fi if test "$with_phyp" = "yes"; then AC_MSG_ERROR([libssh2 >= $LIBSSH2_REQUIRED is required for Phyp driver]) fi if test "$with_libssh2_transport" = "check"; then with_libssh2_transport=no AC_MSG_NOTICE([libssh2 >= $LIBSSH2_TRANSPORT_REQUIRED is required for libssh2 transport]) fi if test "$with_libssh2_transport" = "yes"; then AC_MSG_ERROR([libssh2 >= $LIBSSH2_TRANSPORT_REQUIRED is required for libssh2 transport]) fi ]) fi if test "$with_phyp" = "yes"; then AC_DEFINE_UNQUOTED([WITH_PHYP], 1, [whether IBM HMC / IVM driver is enabled]) fi if test "$with_libssh2_transport" = "yes"; then AC_DEFINE_UNQUOTED([HAVE_LIBSSH2], 1, [whether libssh2 transport is enabled]) fi AM_CONDITIONAL([WITH_PHYP],[test "$with_phyp" = "yes"]) AM_CONDITIONAL([HAVE_LIBSSH2], [test "$with_libssh2_transport" = "yes"]) AC_SUBST([LIBSSH2_CFLAGS]) AC_SUBST([LIBSSH2_LIBS]) dnl libfuse AC_ARG_WITH([fuse], AC_HELP_STRING([--with-fuse], [use libfuse to proivde fuse filesystem support for libvirt lxc]), [], [with_fuse=check]) dnl dnl This check looks for 'fuse' dnl AS_IF([test "x$with_fuse" != "xno"], [PKG_CHECK_MODULES([FUSE], [fuse >= $FUSE_REQUIRED], [with_fuse=yes AC_SUBST([FUSE_CFLAGS]) AC_SUBST([FUSE_LIBS]) AC_DEFINE_UNQUOTED([HAVE_FUSE], 1, [whether fuse is available for libvirt lxc]) ], [if test "x$with_fuse" = "xyes" ; then AC_MSG_ERROR([You must install fuse library to compile libvirt]) else with_fuse=no fi ]) ]) AM_CONDITIONAL([HAVE_FUSE], [test "x$with_fuse" = "xyes"]) dnl virsh libraries AC_CHECK_HEADERS([readline/readline.h]) # Check for readline. AC_CHECK_LIB([readline], [readline], [lv_use_readline=yes; VIRSH_LIBS="$VIRSH_LIBS -lreadline"], [lv_use_readline=no]) # If the above test failed, it may simply be that -lreadline requires # some termcap-related code, e.g., from one of the following libraries. # See if adding one of them to LIBS helps. if test $lv_use_readline = no; then lv_saved_libs=$LIBS LIBS= AC_SEARCH_LIBS([tgetent], [ncurses curses termcap termlib]) case $LIBS in no*) ;; # handle "no" and "none required" *) # anything else is a -lLIBRARY # Now, check for -lreadline again, also using $LIBS. # Note: this time we use a different function, so that # we don't get a cached "no" result. AC_CHECK_LIB([readline], [rl_initialize], [lv_use_readline=yes VIRSH_LIBS="$VIRSH_LIBS -lreadline $LIBS"],, [$LIBS]) ;; esac test $lv_use_readline = no && AC_MSG_WARN([readline library not found]) LIBS=$lv_saved_libs fi if test $lv_use_readline = yes; then AC_DEFINE_UNQUOTED([USE_READLINE], 1, [whether virsh can use readline]) READLINE_CFLAGS=-DUSE_READLINE else READLINE_CFLAGS= fi AC_SUBST([READLINE_CFLAGS]) AC_SUBST([VIRSH_LIBS]) dnl check if the network driver should be compiled AC_ARG_WITH([network], AC_HELP_STRING([--with-network], [with virtual network driver @<:@default=yes@:>@]),[],[with_network=yes]) dnl there's no use compiling the network driver without the libvirt dnl daemon, nor compiling it for MacOS X, where it breaks the compile if test "$with_libvirtd" = "no" || test "$with_osx" = "yes"; then with_network=no fi if test "$with_network" = "yes" ; then AC_DEFINE_UNQUOTED([WITH_NETWORK], 1, [whether network driver is enabled]) fi AM_CONDITIONAL([WITH_NETWORK], [test "$with_network" = "yes"]) with_bridge=no if test "$with_qemu:$with_lxc:$with_network" != "no:no:no"; then with_bridge=yes AC_DEFINE_UNQUOTED([WITH_BRIDGE], 1, [whether bridge code is needed]) fi AM_CONDITIONAL([WITH_BRIDGE], [test "$with_bridge" = "yes"]) AC_ARG_WITH([secrets], AC_HELP_STRING([--with-secrets], [with local secrets management driver @<:@default=yes@:>@]),[],[with_secrets=yes]) if test "$with_libvirtd" = "no"; then with_secrets=no fi if test "$with_secrets" = "yes" ; then AC_DEFINE_UNQUOTED([WITH_SECRETS], 1, [whether local secrets management driver is available]) fi AM_CONDITIONAL([WITH_SECRETS], [test "$with_secrets" = "yes"]) AC_ARG_WITH([storage-dir], AC_HELP_STRING([--with-storage-dir], [with directory backend for the storage driver @<:@default=yes@:>@]),[],[with_storage_dir=yes]) AC_ARG_WITH([storage-fs], AC_HELP_STRING([--with-storage-fs], [with FileSystem backend for the storage driver @<:@default=check@:>@]),[],[with_storage_fs=check]) AC_ARG_WITH([storage-lvm], AC_HELP_STRING([--with-storage-lvm], [with LVM backend for the storage driver @<:@default=check@:>@]),[],[with_storage_lvm=check]) AC_ARG_WITH([storage-iscsi], AC_HELP_STRING([--with-storage-iscsi], [with iSCSI backend for the storage driver @<:@default=check@:>@]),[],[with_storage_iscsi=check]) AC_ARG_WITH([storage-scsi], AC_HELP_STRING([--with-storage-scsi], [with SCSI backend for the storage driver @<:@default=check@:>@]),[],[with_storage_scsi=check]) AC_ARG_WITH([storage-mpath], AC_HELP_STRING([--with-storage-mpath], [with mpath backend for the storage driver @<:@default=check@:>@]),[],[with_storage_mpath=check]) AC_ARG_WITH([storage-disk], AC_HELP_STRING([--with-storage-disk], [with GPartd Disk backend for the storage driver @<:@default=check@:>@]),[],[with_storage_disk=check]) AC_ARG_WITH([storage-rbd], AC_HELP_STRING([--with-storage-rbd], [with RADOS Block Device backend for the storage driver @<:@default=check@:>@]),[],[with_storage_rbd=check]) AC_ARG_WITH([storage-sheepdog], AC_HELP_STRING([--with-storage-sheepdog], [with Sheepdog backend for the storage driver @<:@default=check@:>@]),[],[with_storage_sheepdog=check]) if test "$with_libvirtd" = "no"; then with_storage_dir=no with_storage_fs=no with_storage_lvm=no with_storage_iscsi=no with_storage_scsi=no with_storage_mpath=no with_storage_disk=no with_storage_rbd=no with_storage_sheepdog=no fi if test "$with_storage_dir" = "yes" ; then AC_DEFINE_UNQUOTED([WITH_STORAGE_DIR], 1, [whether directory backend for storage driver is enabled]) fi AM_CONDITIONAL([WITH_STORAGE_DIR], [test "$with_storage_dir" = "yes"]) dnl storage-fs does not work on MacOS X if test "$with_osx" = "yes"; then with_storage_fs=no fi if test "$with_storage_fs" = "yes" || test "$with_storage_fs" = "check"; then AC_CHECK_HEADER([mntent.h],, [ if test "$with_storage_fs" = "check"; then with_storage_fs=no AC_MSG_NOTICE([ is required for the FS storage driver, disabling it]) else AC_MSG_ERROR([ is required for the FS storage driver]) fi ]) fi if test "$with_storage_fs" = "yes" || test "$with_storage_fs" = "check"; then AC_PATH_PROG([MOUNT], [mount], [], [$PATH:/sbin:/usr/sbin]) AC_PATH_PROG([UMOUNT], [umount], [], [$PATH:/sbin:/usr/sbin]) AC_PATH_PROG([MKFS], [mkfs], [], [$PATH:/sbin:/usr/sbin]) if test "$with_storage_fs" = "yes" ; then if test -z "$MOUNT" ; then AC_MSG_ERROR([We need mount for FS storage driver]) ; fi if test -z "$UMOUNT" ; then AC_MSG_ERROR([We need umount for FS storage driver]) ; fi if test -z "$MKFS" ; then AC_MSG_ERROR([We need mkfs for FS storage driver]) ; fi else if test -z "$MOUNT" ; then with_storage_fs=no ; fi if test -z "$UMOUNT" ; then with_storage_fs=no ; fi if test -z "$MKFS" ; then with_storage_fs=no ; fi if test "$with_storage_fs" = "check" ; then with_storage_fs=yes ; fi fi if test "$with_storage_fs" = "yes" ; then AC_DEFINE_UNQUOTED([WITH_STORAGE_FS], 1, [whether FS backend for storage driver is enabled]) AC_DEFINE_UNQUOTED([MOUNT],["$MOUNT"], [Location or name of the mount program]) AC_DEFINE_UNQUOTED([UMOUNT],["$UMOUNT"], [Location or name of the mount program]) AC_DEFINE_UNQUOTED([MKFS],["$MKFS"], [Location or name of the mkfs program]) fi fi AM_CONDITIONAL([WITH_STORAGE_FS], [test "$with_storage_fs" = "yes"]) if test "$with_storage_fs" = "yes"; then AC_PATH_PROG([SHOWMOUNT], [showmount], [], [$PATH:/sbin:/usr/sbin]) AC_DEFINE_UNQUOTED([SHOWMOUNT], ["$SHOWMOUNT"], [Location or name of the showmount program]) fi if test "$with_storage_lvm" = "yes" || test "$with_storage_lvm" = "check"; then AC_PATH_PROG([PVCREATE], [pvcreate], [], [$PATH:/sbin:/usr/sbin]) AC_PATH_PROG([VGCREATE], [vgcreate], [], [$PATH:/sbin:/usr/sbin]) AC_PATH_PROG([LVCREATE], [lvcreate], [], [$PATH:/sbin:/usr/sbin]) AC_PATH_PROG([PVREMOVE], [pvremove], [], [$PATH:/sbin:/usr/sbin]) AC_PATH_PROG([VGREMOVE], [vgremove], [], [$PATH:/sbin:/usr/sbin]) AC_PATH_PROG([LVREMOVE], [lvremove], [], [$PATH:/sbin:/usr/sbin]) AC_PATH_PROG([LVCHANGE], [lvchange], [], [$PATH:/sbin:/usr/sbin]) AC_PATH_PROG([VGCHANGE], [vgchange], [], [$PATH:/sbin:/usr/sbin]) AC_PATH_PROG([VGSCAN], [vgscan], [], [$PATH:/sbin:/usr/sbin]) AC_PATH_PROG([PVS], [pvs], [], [$PATH:/sbin:/usr/sbin]) AC_PATH_PROG([VGS], [vgs], [], [$PATH:/sbin:/usr/sbin]) AC_PATH_PROG([LVS], [lvs], [], [$PATH:/sbin:/usr/sbin]) if test "$with_storage_lvm" = "yes" ; then if test -z "$PVCREATE" ; then AC_MSG_ERROR([We need pvcreate for LVM storage driver]) ; fi if test -z "$VGCREATE" ; then AC_MSG_ERROR([We need vgcreate for LVM storage driver]) ; fi if test -z "$LVCREATE" ; then AC_MSG_ERROR([We need lvcreate for LVM storage driver]) ; fi if test -z "$PVREMOVE" ; then AC_MSG_ERROR([We need pvremove for LVM storage driver]) ; fi if test -z "$VGREMOVE" ; then AC_MSG_ERROR([We need vgremove for LVM storage driver]) ; fi if test -z "$LVREMOVE" ; then AC_MSG_ERROR([We need lvremove for LVM storage driver]) ; fi if test -z "$LVCHANGE" ; then AC_MSG_ERROR([We need lvchange for LVM storage driver]) ; fi if test -z "$VGCHANGE" ; then AC_MSG_ERROR([We need vgchange for LVM storage driver]) ; fi if test -z "$VGSCAN" ; then AC_MSG_ERROR([We need vgscan for LVM storage driver]) ; fi if test -z "$PVS" ; then AC_MSG_ERROR([We need pvs for LVM storage driver]) ; fi if test -z "$VGS" ; then AC_MSG_ERROR([We need vgs for LVM storage driver]) ; fi if test -z "$LVS" ; then AC_MSG_ERROR([We need lvs for LVM storage driver]) ; fi else if test -z "$PVCREATE" ; then with_storage_lvm=no ; fi if test -z "$VGCREATE" ; then with_storage_lvm=no ; fi if test -z "$LVCREATE" ; then with_storage_lvm=no ; fi if test -z "$PVREMOVE" ; then with_storage_lvm=no ; fi if test -z "$VGREMOVE" ; then with_storage_lvm=no ; fi if test -z "$LVREMOVE" ; then with_storage_lvm=no ; fi if test -z "$LVCHANGE" ; then with_storage_lvm=no ; fi if test -z "$VGCHANGE" ; then with_storage_lvm=no ; fi if test -z "$VGSCAN" ; then with_storage_lvm=no ; fi if test -z "$PVS" ; then with_storage_lvm=no ; fi if test -z "$VGS" ; then with_storage_lvm=no ; fi if test -z "$LVS" ; then with_storage_lvm=no ; fi if test "$with_storage_lvm" = "check" ; then with_storage_lvm=yes ; fi fi if test "$with_storage_lvm" = "yes" ; then AC_DEFINE_UNQUOTED([WITH_STORAGE_LVM], 1, [whether LVM backend for storage driver is enabled]) AC_DEFINE_UNQUOTED([PVCREATE],["$PVCREATE"],[Location of pvcreate program]) AC_DEFINE_UNQUOTED([VGCREATE],["$VGCREATE"],[Location of vgcreate program]) AC_DEFINE_UNQUOTED([LVCREATE],["$LVCREATE"],[Location of lvcreate program]) AC_DEFINE_UNQUOTED([PVREMOVE],["$PVREMOVE"],[Location of pvremove program]) AC_DEFINE_UNQUOTED([VGREMOVE],["$VGREMOVE"],[Location of vgremove program]) AC_DEFINE_UNQUOTED([LVREMOVE],["$LVREMOVE"],[Location of lvremove program]) AC_DEFINE_UNQUOTED([LVCHANGE],["$LVCHANGE"],[Location of lvchange program]) AC_DEFINE_UNQUOTED([VGCHANGE],["$VGCHANGE"],[Location of vgchange program]) AC_DEFINE_UNQUOTED([VGSCAN],["$VGSCAN"],[Location of vgscan program]) AC_DEFINE_UNQUOTED([PVS],["$PVS"],[Location of pvs program]) AC_DEFINE_UNQUOTED([VGS],["$VGS"],[Location of vgs program]) AC_DEFINE_UNQUOTED([LVS],["$LVS"],[Location of lvs program]) fi fi AM_CONDITIONAL([WITH_STORAGE_LVM], [test "$with_storage_lvm" = "yes"]) if test "$with_storage_iscsi" = "yes" || test "$with_storage_iscsi" = "check"; then AC_PATH_PROG([ISCSIADM], [iscsiadm], [], [$PATH:/sbin:/usr/sbin]) if test "$with_storage_iscsi" = "yes" ; then if test -z "$ISCSIADM" ; then AC_MSG_ERROR([We need iscsiadm for iSCSI storage driver]) ; fi else if test -z "$ISCSIADM" ; then with_storage_iscsi=no ; fi if test "$with_storage_iscsi" = "check" ; then with_storage_iscsi=yes ; fi fi if test "$with_storage_iscsi" = "yes" ; then AC_DEFINE_UNQUOTED([WITH_STORAGE_ISCSI], 1, [whether iSCSI backend for storage driver is enabled]) AC_DEFINE_UNQUOTED([ISCSIADM],["$ISCSIADM"],[Location of iscsiadm program]) fi fi AM_CONDITIONAL([WITH_STORAGE_ISCSI], [test "$with_storage_iscsi" = "yes"]) if test "$with_storage_scsi" = "check"; then with_storage_scsi=yes AC_DEFINE_UNQUOTED([WITH_STORAGE_SCSI], 1, [whether SCSI backend for storage driver is enabled]) fi AM_CONDITIONAL([WITH_STORAGE_SCSI], [test "$with_storage_scsi" = "yes"]) if test "$with_storage_mpath" = "check"; then if test "$with_linux" = "yes"; then with_storage_mpath=yes AC_DEFINE_UNQUOTED([WITH_STORAGE_MPATH], 1, [whether mpath backend for storage driver is enabled]) else with_storage_mpath=no fi fi AM_CONDITIONAL([WITH_STORAGE_MPATH], [test "$with_storage_mpath" = "yes"]) LIBRBD_LIBS= if test "$with_storage_rbd" = "yes" || test "$with_storage_rbd" = "check"; then AC_CHECK_HEADER([rbd/librbd.h], [LIBRBD_FOUND=yes; break;]) if test "$LIBRBD_FOUND" = "yes"; then with_storage_rbd=yes LIBRBD_LIBS="-lrbd -lrados" AC_DEFINE_UNQUOTED([WITH_STORAGE_RBD], [1], [whether RBD backend for storage driver is enabled]) else with_storage_rbd=no fi fi AM_CONDITIONAL([WITH_STORAGE_RBD], [test "$with_storage_rbd" = "yes"]) AC_SUBST([LIBRBD_LIBS]) if test "$with_storage_sheepdog" = "yes" || test "$with_storage_sheepdog" = "check"; then AC_PATH_PROG([COLLIE], [collie], [], [$PATH:/sbin:/usr/sbin]) if test "$with_storage_sheepdog" = "yes"; then if test -z "$COLLIE"; then AC_MSG_ERROR([We need collie for Sheepdog storage driver]) fi else if test -z "$COLLIE"; then with_storage_sheepdog=no fi if test "$with_storage_sheepdog" = "check"; then with_storage_sheepdog=yes fi fi if test "$with_storage_sheepdog" = "yes"; then AC_DEFINE_UNQUOTED([WITH_STORAGE_SHEEPDOG], 1, [whether Sheepdog backend for storage driver is enabled]) AC_DEFINE_UNQUOTED([COLLIE],["$COLLIE"],[Location of collie program]) fi fi AM_CONDITIONAL([WITH_STORAGE_SHEEPDOG], [test "$with_storage_sheepdog" = "yes"]) LIBPARTED_CFLAGS= LIBPARTED_LIBS= if test "$with_storage_disk" = "yes" || test "$with_storage_disk" = "check"; then AC_PATH_PROG([PARTED], [parted], [], [$PATH:/sbin:/usr/sbin]) AC_PATH_PROG([DMSETUP], [dmsetup], [], [$PATH:/sbin:/usr/sbin]) if test -z "$PARTED" ; then PARTED_FOUND=no else PARTED_FOUND=yes fi if test -z "$DMSETUP" ; then DMSETUP_FOUND=no else DMSETUP_FOUND=yes fi if test "$PARTED_FOUND" = "yes" && test "x$PKG_CONFIG" != "x" ; then PKG_CHECK_MODULES([LIBPARTED], [libparted >= $PARTED_REQUIRED], [], [PARTED_FOUND=no]) fi if test "$PARTED_FOUND" = "no"; then # RHEL-5 vintage parted is missing pkg-config files save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" PARTED_FOUND=yes AC_CHECK_HEADER([parted/parted.h],,[PARTED_FOUND=no]) AC_CHECK_LIB([uuid], [uuid_generate],,[PARTED_FOUND=no]) AC_CHECK_LIB([parted], [ped_device_read],,[PARTED_FOUND=no]) LIBPARTED_LIBS="-luuid -lparted" LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi if test "$with_storage_disk" = "yes" && test "$PARTED_FOUND:$DMSETUP_FOUND" != "yes:yes"; then AC_MSG_ERROR([Need both parted and dmsetup for disk storage driver]) fi if test "$with_storage_disk" = "check"; then if test "$PARTED_FOUND:$DMSETUP_FOUND" != "yes:yes"; then with_storage_disk=no else with_storage_disk=yes fi fi if test "$with_storage_disk" = "yes"; then AC_DEFINE_UNQUOTED([WITH_STORAGE_DISK], 1, [whether Disk backend for storage driver is enabled]) AC_DEFINE_UNQUOTED([PARTED],["$PARTED"], [Location or name of the parted program]) AC_DEFINE_UNQUOTED([DMSETUP],["$DMSETUP"], [Location or name of the dmsetup program]) fi fi AM_CONDITIONAL([WITH_STORAGE_DISK], [test "$with_storage_disk" = "yes"]) AC_SUBST([LIBPARTED_CFLAGS]) AC_SUBST([LIBPARTED_LIBS]) if test "$with_storage_mpath" = "yes" || test "$with_storage_disk" = "yes"; then DEVMAPPER_CFLAGS= DEVMAPPER_LIBS= PKG_CHECK_MODULES([DEVMAPPER], [devmapper >= $DEVMAPPER_REQUIRED], [], [DEVMAPPER_FOUND=no]) if test "$DEVMAPPER_FOUND" = "no"; then # devmapper is missing pkg-config files in ubuntu, suse, etc save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" DEVMAPPER_FOUND=yes AC_CHECK_LIB([devmapper], [dm_task_run],,[DEVMAPPER_FOUND=no]) DEVMAPPER_LIBS="-ldevmapper" LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi AC_CHECK_HEADERS([libdevmapper.h],,[DEVMAPPER_FOUND=no]) if test "$DEVMAPPER_FOUND" = "no" ; then AC_MSG_ERROR([You must install device-mapper-devel/libdevmapper >= $DEVMAPPER_REQUIRED to compile libvirt]) fi fi AC_SUBST([DEVMAPPER_CFLAGS]) AC_SUBST([DEVMAPPER_LIBS]) with_storage=no for backend in dir fs lvm iscsi scsi mpath rbd disk; do if eval test \$with_storage_$backend = yes; then with_storage=yes break fi done if test $with_storage = yes; then AC_DEFINE([WITH_STORAGE], [1], [Define to 1 if at least one storage backend is in use]) fi AM_CONDITIONAL([WITH_STORAGE], [test "$with_storage" = "yes"]) dnl dnl check for libcurl (ESX/XenAPI) dnl LIBCURL_CFLAGS="" LIBCURL_LIBS="" have_curl=no if test "$with_esx" = "yes" || test "$with_esx" = "check" || test "$with_xenapi" = "yes" || test "$with_xenapi" = "check"; then PKG_CHECK_MODULES(LIBCURL, libcurl >= $LIBCURL_REQUIRED, [ have_curl=yes if test "$with_esx" = "check"; then with_esx=yes fi if test "$with_xenapi" = "check"; then with_xenapi=yes fi ], [ if test "$with_esx" = "check"; then with_esx=no AC_MSG_NOTICE([libcurl is required for the ESX driver, disabling it]) elif test "$with_esx" = "yes"; then AC_MSG_ERROR([libcurl >= $LIBCURL_REQUIRED is required for the ESX driver]) fi if test "$with_xenapi" = "check"; then with_xenapi=no AC_MSG_NOTICE([libcurl is required for the XenAPI driver, disabling it]) elif test "$with_xenapi" = "yes"; then AC_MSG_ERROR([libcurl >= $LIBCURL_REQUIRED is required for the XenAPI driver]) fi ]) fi if test "$have_curl" = "yes" ; then AC_DEFINE_UNQUOTED([HAVE_LIBCURL], 1, [whether libcurl is available]) fi AM_CONDITIONAL([HAVE_LIBCURL], [test "$have_curl" = "yes"]) if test "$with_esx" = "yes" ; then AC_DEFINE_UNQUOTED([WITH_ESX], 1, [whether ESX driver is enabled]) fi AM_CONDITIONAL([WITH_ESX], [test "$with_esx" = "yes"]) with_vmx=yes if test "$with_esx" != "yes" && test "$with_vmware" != "yes"; then with_vmx=no fi if test "$with_vmx" = "yes" ; then AC_DEFINE_UNQUOTED([WITH_VMX], 1, [whether VMware VMX config handling is enabled]) fi AM_CONDITIONAL([WITH_VMX], [test "$with_vmx" = "yes"]) if test "$with_xenapi" = "yes" ; then AC_DEFINE_UNQUOTED([WITH_XENAPI], 1, [whether XenAPI driver is enabled]) fi AM_CONDITIONAL([WITH_XENAPI], [test "$with_xenapi" = "yes"]) # XXX as of libcurl-devel-7.20.1-3.fc13.x86_64, curl ships a version # of that #defines several wrapper macros around underlying # functions to add type safety for gcc only. However, these macros # spuriously trip gcc's -Wlogical-op warning. Avoid the warning by # disabling the wrappers; even if it removes some type-check safety. LIBCURL_CFLAGS="-DCURL_DISABLE_TYPECHECK $LIBCURL_CFLAGS" AC_SUBST([LIBCURL_CFLAGS]) AC_SUBST([LIBCURL_LIBS]) dnl dnl check for openwsman (Hyper-V) dnl OPENWSMAN_CFLAGS="" OPENWSMAN_LIBS="" if test "$with_hyperv" = "yes" || test "$with_hyperv" = "check"; then PKG_CHECK_MODULES([OPENWSMAN], [openwsman >= $OPENWSMAN_REQUIRED], [ if test "$with_hyperv" = "check"; then with_hyperv=yes fi ], [ if test "$with_hyperv" = "check"; then with_hyperv=no AC_MSG_NOTICE([openwsman is required for the Hyper-V driver, disabling it]) elif test "$with_hyperv" = "yes"; then AC_MSG_ERROR([openwsman >= $OPENWSMAN_REQUIRED is required for the Hyper-V driver]) fi ]) fi if test "$with_hyperv" = "yes" ; then AC_DEFINE_UNQUOTED([WITH_HYPERV], 1, [whether Hyper-V driver is enabled]) fi AM_CONDITIONAL([WITH_HYPERV], [test "$with_hyperv" = "yes"]) dnl dnl check for python dnl AC_ARG_WITH([python], AC_HELP_STRING([--with-python], [Build python bindings @<:@default=yes@:>@]),[],[with_python=yes]) if test "$enable_shared:$with_python" = no:yes; then AC_MSG_WARN([Disabling shared libraries is incompatible with building Python extensions.]) AC_MSG_WARN([Ignoring --with-python.]) with_python=no fi PYTHON_VERSION= PYTHON_INCLUDES= if test "$with_python" != "no" ; then if test -x "$with_python/bin/python" then AC_MSG_NOTICE(Found python in $with_python/bin/python) PYTHON="$with_python/bin/python" with_python=yes else if test -x "$with_python" then AC_MSG_NOTICE(Found python in $with_python) PYTHON="$with_python" with_python=yes else if test -x "$PYTHON" then AC_MSG_NOTICE(Found python in environment PYTHON=$PYTHON) with_python=yes fi fi fi if test "$with_python" = "yes" ; then AM_PATH_PYTHON(,, [:]) if test "$PYTHON" != : ; then PYTHON_CONFIG="$PYTHON-config" if test -x "$PYTHON_CONFIG" then PYTHON_INCLUDES=`$PYTHON_CONFIG --includes` else if test -r $PYTHON_EXEC_PREFIX/include/python$PYTHON_VERSION/Python.h then PYTHON_INCLUDES=-I$PYTHON_EXEC_PREFIX/include/python$PYTHON_VERSION else if test -r $prefix/include/python$PYTHON_VERSION/Python.h then PYTHON_INCLUDES=-I$prefix/include/python$PYTHON_VERSION else if test -r /usr/include/python$PYTHON_VERSION/Python.h then PYTHON_INCLUDES=-I/usr/include/python$PYTHON_VERSION else AC_MSG_ERROR([You must install python-devel to build Python bindings]) fi fi fi fi else AC_MSG_ERROR([You must install python to build Python bindings]) fi else AC_MSG_NOTICE([Could not find python in $with_python, disabling bindings]) with_python=no fi fi AM_CONDITIONAL([WITH_PYTHON], [test "$with_python" = "yes"]) AC_SUBST([PYTHON_VERSION]) AC_SUBST([PYTHON_INCLUDES]) dnl Allow perl overrides AC_PATH_PROG([PERL], [perl]) AC_ARG_ENABLE([with-test-suite], AC_HELP_STRING([--with-test-suite], [build test suite by default @<:@default=check@:>@]), [case "${withval}" in yes|no|check) ;; *) AC_MSG_ERROR([bad value ${withval} for tests option]) ;; esac], [withval=check]) AC_MSG_CHECKING([Whether to build test suite by default]) if test "$withval" = "check" ; then if test -d $srcdir/.git ; then withval=yes else withval=no fi fi AC_MSG_RESULT([$withval]) AM_CONDITIONAL([WITH_TESTS], [test "$withval" = "yes"]) AC_ARG_ENABLE([test-coverage], AC_HELP_STRING([--enable-test-coverage], [turn on code coverage instrumentation @<:@default=no@:>@]), [case "${enableval}" in yes|no) ;; *) AC_MSG_ERROR([bad value ${enableval} for test-coverage option]) ;; esac], [enableval=no]) enable_coverage=$enableval if test "${enable_coverage}" = yes; then save_WARN_CFLAGS=$WARN_CFLAGS WARN_CFLAGS= gl_WARN_ADD([-fprofile-arcs]) gl_WARN_ADD([-ftest-coverage]) COVERAGE_FLAGS=$WARN_CFLAGS AC_SUBST([COVERAGE_CFLAGS], [$COVERAGE_FLAGS]) AC_SUBST([COVERAGE_LDFLAGS], [$COVERAGE_FLAGS]) WARN_CFLAGS=$save_WARN_CFLAGS fi AC_ARG_ENABLE([test-oom], AC_HELP_STRING([--enable-test-oom], [memory allocation failure checking @<:@default=no@:>@]), [case "${enableval}" in yes|no) ;; *) AC_MSG_ERROR([bad value ${enableval} for test-oom option]) ;; esac], [enableval=no]) enable_oom=$enableval if test "${enable_oom}" = yes; then have_trace=yes AC_CHECK_HEADER([execinfo.h],[],[have_trace=no]) AC_CHECK_FUNC([backtrace],[],[have_trace=no]) if test "$have_trace" = "yes"; then AC_DEFINE([TEST_OOM_TRACE], 1, [Whether backtrace() is available]) fi AC_DEFINE([TEST_OOM], 1, [Whether malloc OOM checking is enabled]) fi AC_ARG_ENABLE([test-locking], AC_HELP_STRING([--enable-test-locking], [thread locking tests using CIL @<:@default=no@:>@]), [case "${enableval}" in yes|no) ;; *) AC_MSG_ERROR([bad value ${enableval} for test-locking option]) ;; esac], [enableval=no]) enable_locking=$enableval if test "$enable_locking" = "yes"; then LOCK_CHECKING_CFLAGS="-Dbool=char -D_Bool=char -save-temps" AC_SUBST([LOCK_CHECKING_CFLAGS]) fi AM_CONDITIONAL([WITH_CIL],[test "$enable_locking" = "yes"]) dnl Enable building libvirtd? AM_CONDITIONAL([WITH_LIBVIRTD],[test "x$with_libvirtd" = "xyes"]) dnl Check for gettext - don't go any newer than what RHEL 5 supports dnl dnl save and restore CPPFLAGS around gettext check as the internal iconv dnl check might leave -I/usr/local/include in CPPFLAGS on FreeBSD resulting dnl in the build picking up previously installed libvirt/libvirt.h instead dnl of the correct one from the source tree. dnl compute the difference between save_CPPFLAGS and CPPFLAGS and append it dnl to INCLUDES in order to preserve changes made by gettext but in a place dnl that does not break the build save_CPPFLAGS="$CPPFLAGS" AM_GNU_GETTEXT_VERSION([0.17]) AM_GNU_GETTEXT([external]) GETTEXT_CPPFLAGS= if test "x$save_CPPFLAGS" != "x$CPPFLAGS"; then set dummy $CPPFLAGS; shift for var do case " $var " in " $save_CPPFLAGS ") ;; *) GETTEXT_CPPFLAGS="$GETTEXT_CPPFLAGS $var" ;; esac done fi CPPFLAGS="$save_CPPFLAGS" AC_SUBST([GETTEXT_CPPFLAGS]) ALL_LINGUAS=`cd "$srcdir/po" > /dev/null && ls *.po | sed 's+\.po$++'` dnl Extra link-time flags for Cygwin. dnl Copied from libxml2 configure.in, but I removed mingw changes dnl for now since I'm not supporting mingw at present. - RWMJ CYGWIN_EXTRA_LDFLAGS= CYGWIN_EXTRA_LIBADD= CYGWIN_EXTRA_PYTHON_LIBADD= MINGW_EXTRA_LDFLAGS= WIN32_EXTRA_CFLAGS= dnl libvirt.syms is generated in builddir, but libvirt_qemu.syms is in git; dnl hence the asymmetric naming of these two symbol files. LIBVIRT_SYMBOL_FILE=libvirt.syms LIBVIRT_QEMU_SYMBOL_FILE='$(srcdir)/libvirt_qemu.syms' MSCOM_LIBS= case "$host" in *-*-cygwin*) CYGWIN_EXTRA_LDFLAGS="-no-undefined" CYGWIN_EXTRA_LIBADD="${INTLLIBS}" MSCOM_LIBS="-lole32 -loleaut32" if test "x$PYTHON_VERSION" != "x"; then CYGWIN_EXTRA_PYTHON_LIBADD="-L/usr/lib/python${PYTHON_VERSION}/config -lpython${PYTHON_VERSION}" fi ;; *-*-mingw*) MINGW_EXTRA_LDFLAGS="-no-undefined" MSCOM_LIBS="-lole32 -loleaut32" ;; *-*-msvc*) MSCOM_LIBS="-lole32 -loleaut32" ;; esac case "$host" in *-*-mingw* | *-*-cygwin* | *-*-msvc* ) # If the host is Windows, and shared libraries are disabled, we # need to add -DLIBVIRT_STATIC to the CFLAGS for proper linking if test "x$enable_shared" = "xno"; then WIN32_EXTRA_CFLAGS="-DLIBVIRT_STATIC" fi esac case "$host" in *-*-mingw* | *-*-msvc* ) # Also set the symbol file to .def, so src/Makefile generates libvirt.def # from libvirt.syms and passes libvirt.def instead of libvirt.syms to the linker LIBVIRT_SYMBOL_FILE=libvirt.def LIBVIRT_QEMU_SYMBOL_FILE=libvirt_qemu.def # mingw's ld has the --version-script parameter, but it requires a .def file # instead to work properly, therefore clear --version-script here and use # -Wl, to pass the .def file to the linker # cygwin's ld has the --version-script parameter too, but for some reason # it's working there as expected VERSION_SCRIPT_FLAGS="-Wl," ;; esac AC_SUBST([CYGWIN_EXTRA_LDFLAGS]) AC_SUBST([CYGWIN_EXTRA_LIBADD]) AC_SUBST([CYGWIN_EXTRA_PYTHON_LIBADD]) AC_SUBST([MINGW_EXTRA_LDFLAGS]) AC_SUBST([WIN32_EXTRA_CFLAGS]) AC_SUBST([LIBVIRT_SYMBOL_FILE]) AC_SUBST([LIBVIRT_QEMU_SYMBOL_FILE]) AC_SUBST([VERSION_SCRIPT_FLAGS]) AC_SUBST([MSCOM_LIBS]) dnl Look for windres to build a Windows icon resource. case "$host" in *-*-mingw* | *-*-cygwin* | *-*-msvc* ) AC_CHECK_TOOL([WINDRES], [windres], []) ;; esac AM_CONDITIONAL([WITH_WIN_ICON], [test "$WINDRES" != ""]) dnl Driver-Modules library AC_ARG_WITH([driver-modules], AC_HELP_STRING([--with-driver-modules], [build drivers as loadable modules @<:@default=check@:>@]), [], [with_driver_modules=check]) if test "$with_libvirtd" = "no" ; then with_driver_modules=no fi DRIVER_MODULE_CFLAGS= DRIVER_MODULE_LIBS= if test "$with_driver_modules" = "yes" || test "$with_driver_modules" = "check"; then if test "$dlfcn_found" != "yes" || test "$dlopen_found" != "yes"; then if test "$with_driver_modules" = "yes" ; then AC_MSG_ERROR([You must have dlfcn.h / dlopen() support to build driver modules]) else with_driver_modules=no fi else with_driver_modules=yes fi fi if test "$with_driver_modules" = "yes" ; then DRIVER_MODULE_CFLAGS="-export-dynamic" case $ac_cv_search_dlopen in no*) DRIVER_MODULE_LIBS= ;; *) DRIVER_MODULE_LIBS=$ac_cv_search_dlopen ;; esac AC_DEFINE_UNQUOTED([WITH_DRIVER_MODULES], 1, [whether to build drivers as modules]) fi AM_CONDITIONAL([WITH_DRIVER_MODULES], [test "$with_driver_modules" != "no"]) AC_SUBST([DRIVER_MODULE_CFLAGS]) AC_SUBST([DRIVER_MODULE_LIBS]) # Set LV_LIBTOOL_OBJDIR to "." or $lt_cv_objdir, depending on whether # we're building shared libraries. This is the name of the directory # in which .o files will be created. test "$enable_shared" = no && lt_cv_objdir=. LV_LIBTOOL_OBJDIR=${lt_cv_objdir-.} AC_SUBST([LV_LIBTOOL_OBJDIR]) dnl HAL library check for host device enumeration HAL_CFLAGS= HAL_LIBS= AC_ARG_WITH([hal], AC_HELP_STRING([--with-hal], [use HAL for host device enumeration @<:@default=check@:>@]), [], [with_hal=check]) if test "$with_libvirtd" = "no" ; then with_hal=no fi if test "x$with_hal" = "xyes" || test "x$with_hal" = "xcheck"; then PKG_CHECK_MODULES(HAL, hal >= $HAL_REQUIRED, [with_hal=yes], [ if test "x$with_hal" = "xcheck" ; then with_hal=no else AC_MSG_ERROR( [You must install hal-devel >= $HAL_REQUIRED to compile libvirt]) fi ]) if test "x$with_hal" = "xyes" ; then old_CFLAGS=$CFLAGS old_LIBS=$LIBS CFLAGS="$CFLAGS $HAL_CFLAGS" LIBS="$LIBS $HAL_LIBS" AC_CHECK_FUNCS([libhal_get_all_devices],,[with_hal=no]) CFLAGS="$old_CFLAGS" LIBS="$old_LIBS" fi if test "x$with_hal" = "xyes" ; then AC_DEFINE_UNQUOTED([HAVE_HAL], 1, [use HAL for host device enumeration]) fi fi AM_CONDITIONAL([HAVE_HAL], [test "x$with_hal" = "xyes"]) AC_SUBST([HAL_CFLAGS]) AC_SUBST([HAL_LIBS]) dnl udev/libpciaccess library check for alternate host device enumeration UDEV_CFLAGS= UDEV_LIBS= PCIACCESS_CFLAGS= PCIACCESS_LIBS= AC_ARG_WITH([udev], AC_HELP_STRING([--with-udev], [use libudev for host device enumeration @<:@default=check@:>@]), [], [with_udev=check]) if test "$with_libvirtd" = "no" ; then with_udev=no fi if test "x$with_udev" = "xyes" || test "x$with_udev" = "xcheck"; then PKG_CHECK_MODULES(UDEV, libudev >= $UDEV_REQUIRED, [], [ if test "x$with_udev" = "xcheck" ; then with_udev=no else AC_MSG_ERROR( [You must install libudev-devel >= $UDEV_REQUIRED to compile libvirt]) fi ]) if test "x$with_udev" != "xno"; then PKG_CHECK_MODULES(PCIACCESS, pciaccess >= $PCIACCESS_REQUIRED, [with_udev=yes], [ if test "x$with_udev" = "xcheck" ; then with_udev=no else AC_MSG_ERROR( [You must install libpciaccess-devel >= $PCIACCESS_REQUIRED to compile libvirt]) fi ]) fi if test "x$with_udev" = "xyes" ; then AC_DEFINE_UNQUOTED([HAVE_UDEV], 1, [use UDEV for host device enumeration]) fi fi AM_CONDITIONAL([HAVE_UDEV], [test "x$with_udev" = "xyes"]) AC_SUBST([UDEV_CFLAGS]) AC_SUBST([UDEV_LIBS]) AC_SUBST([PCIACCESS_CFLAGS]) AC_SUBST([PCIACCESS_LIBS]) with_nodedev=no; if test "$with_hal" = "yes" || test "$with_udev" = "yes"; then with_nodedev=yes AC_DEFINE_UNQUOTED([WITH_NODE_DEVICES], 1, [with node device driver]) fi AM_CONDITIONAL([WITH_NODE_DEVICES], [test "$with_nodedev" = "yes"]) dnl nwfilter should only be compiled for linux, and only if the dnl libvirt daemon is also being compiled with_nwfilter=yes if test "$with_libvirtd" = "no" || test "$with_linux" != "yes"; then with_nwfilter=no fi if test "$with_nwfilter" = "yes" ; then AC_DEFINE([WITH_NWFILTER], 1, [whether local network filter management driver is available]) fi AM_CONDITIONAL([WITH_NWFILTER], [test "$with_nwfilter" = "yes"]) dnl check if the interface driver should be compiled AC_ARG_WITH([interface], AC_HELP_STRING([--with-interface], [with host interface driver @<:@default=check@:>@]), [], [with_interface=check]) dnl Don't compile the interface driver without libvirtd if test "$with_libvirtd" = "no" ; then with_interface=no fi dnl The interface driver depends on the netcf library or udev library case $with_interface:$with_netcf:$with_udev in check:*yes*) with_interface=yes ;; check:no:no) with_interface=no ;; yes:no:no) AC_MSG_ERROR([Requested the Interface driver without netcf or udev support]) ;; esac if test "$with_interface" = "yes" ; then AC_DEFINE_UNQUOTED([WITH_INTERFACE], [1], [whether the interface driver is enabled]) fi AM_CONDITIONAL([WITH_INTERFACE], [test "$with_interface" = "yes"]) dnl libblkid is used by several storage drivers; therefore we probe dnl for it unconditionally. AC_ARG_WITH([libblkid], [AS_HELP_STRING([--with-libblkid], [use libblkid to scan for filesystems and partitions @<:@default=check@:>@])], [], [with_libblkid=check]) if test "x$with_libblkid" = "xyes" || test "x$with_libblkid" = "xcheck"; then PKG_CHECK_MODULES([BLKID], [blkid >= $LIBBLKID_REQUIRED], [with_libblkid="yes"], [with_libblkid="no"]) fi if test "x$with_libblkid" = "xyes"; then AC_DEFINE([HAVE_LIBBLKID], [1], [libblkid is present]) fi AM_CONDITIONAL([HAVE_LIBBLKID], [test "x$with_libblkid" = "xyes"]) if test $with_freebsd = yes; then default_qemu_user=root default_qemu_group=wheel else default_qemu_user=root default_qemu_group=root fi AC_ARG_WITH([qemu-user], AC_HELP_STRING([--with-qemu-user], [username to run QEMU system instance as @<:@default=platform dependent@:>@]), [QEMU_USER=${withval}], [QEMU_USER=${default_qemu_user}]) AC_ARG_WITH([qemu-group], AC_HELP_STRING([--with-qemu-group], [groupname to run QEMU system instance as @<:@default=platform dependent@:>@]), [QEMU_GROUP=${withval}], [QEMU_GROUP=${default_qemu_group}]) AC_DEFINE_UNQUOTED([QEMU_USER], ["$QEMU_USER"], [QEMU user account]) AC_DEFINE_UNQUOTED([QEMU_GROUP], ["$QEMU_GROUP"], [QEMU group account]) AC_ARG_WITH([macvtap], AC_HELP_STRING([--with-macvtap],[enable macvtap device @<:@default=check@:>@]), [with_macvtap=${withval}], [with_macvtap=check]) AC_MSG_CHECKING([whether to compile with macvtap support]) if test "$with_macvtap" != "no" ; then AC_TRY_COMPILE([ #include #include ], [ int x = MACVLAN_MODE_BRIDGE; int y = IFLA_VF_MAX; ], [ with_macvtap=yes ], [ if test "$with_macvtap" = "yes" ; then AC_MSG_ERROR([Installed linux headers don't show support for macvtap device.]) fi with_macvtap=no ]) if test "$with_macvtap" = "yes" ; then val=1 else val=0 fi AC_DEFINE_UNQUOTED([WITH_MACVTAP], $val, [whether macvtap support is enabled]) fi AM_CONDITIONAL([WITH_MACVTAP], [test "$with_macvtap" = "yes"]) AC_MSG_RESULT([$with_macvtap]) if test "$with_macvtap" = yes; then AC_CHECK_DECLS([MACVLAN_MODE_PASSTHRU], [], [], [[ #include #include ]]) fi AC_ARG_WITH([virtualport], AC_HELP_STRING([--with-virtualport],[enable virtual port support @<:@default=check@:>@]), [with_virtualport=${withval}], [with_virtualport=check]) dnl Warn the user and error out if they requested virtualport support with configure dnl options, but the required macvtap support isn't available if test "$with_virtualport" = "yes"; then if test "$with_macvtap" = "no"; then AC_MSG_ERROR([--with-virtualport requires --with-macvtap]) fi fi dnl virtualport checks if test "$with_macvtap" != "yes"; then with_virtualport=no fi if test "$with_virtualport" != "no"; then AC_MSG_CHECKING([whether to compile with virtual port support]) AC_TRY_COMPILE([ #include #include ], [ int x = IFLA_PORT_MAX; ], [ with_virtualport=yes ], [ if test "$with_virtualport" = "yes" ; then AC_MSG_ERROR([Installed linux headers don't show support for virtual port support.]) fi with_virtualport=no ]) if test "$with_virtualport" = "yes"; then val=1 else val=0 fi AC_DEFINE_UNQUOTED([WITH_VIRTUALPORT], $val, [whether vsi vepa support is enabled]) AC_MSG_RESULT([$with_virtualport]) fi AM_CONDITIONAL([WITH_VIRTUALPORT], [test "$with_virtualport" = "yes"]) dnl netlink library have_libnl=no if test "$with_linux" = "yes"; then # When linking with netcf, we must ensure that we pick the same version # of libnl that netcf picked. Prefer libnl-3 unless we can prove # netcf linked against libnl-1, or unless the user set LIBNL_CFLAGS. # (Setting LIBNL_CFLAGS is already used by PKG_CHECK_MODULES to # override any probing, so if it set, you know which libnl is in use.) libnl_ldd= for dir in /usr/lib64 /usr/lib /usr/lib/*-linux-gnu*; do if test -f $dir/libnetcf.so; then libnl_ldd=`(ldd $dir/libnetcf.so) 2>&1` break fi done case $libnl_ldd:${LIBNL_CFLAGS+set} in *libnl.so.1*:) ;; *) PKG_CHECK_MODULES([LIBNL], [libnl-3.0], [ have_libnl=yes AC_DEFINE([HAVE_LIBNL3], [1], [Use libnl-3.0]) AC_DEFINE([HAVE_LIBNL], [1], [whether the netlink library is available]) PKG_CHECK_MODULES([LIBNL_ROUTE3], [libnl-route-3.0]) LIBNL_CFLAGS="$LIBNL_CFLAGS $LIBNL_ROUTE3_CFLAGS" LIBNL_LIBS="$LIBNL_LIBS $LIBNL_ROUTE3_LIBS" ], [:]) ;; esac if test "$have_libnl" = no; then PKG_CHECK_MODULES([LIBNL], [libnl-1 >= $LIBNL_REQUIRED], [ have_libnl=yes AC_DEFINE_UNQUOTED([HAVE_LIBNL], [1], [whether the netlink library is available]) AC_DEFINE_UNQUOTED([HAVE_LIBNL1], [1], [whether the netlink v1 library is available]) ], [ if test "$with_macvtap" = "yes"; then AC_MSG_ERROR([libnl-devel >= $LIBNL_REQUIRED is required for macvtap support]) fi ]) fi fi AM_CONDITIONAL([HAVE_LIBNL], [test "$have_libnl" = "yes"]) AC_SUBST([LIBNL_CFLAGS]) AC_SUBST([LIBNL_LIBS]) # Only COPYING.LIB is under version control, yet COPYING # is included as part of the distribution tarball. # Copy one to the other, but only if this is a srcdir-build. # You are unlikely to be doing distribution-related things in a non-srcdir build test "x$srcdir" = x. && ! test -f COPYING && cp -f COPYING.LIB COPYING # Detect when running under the clang static analyzer's scan-build driver # or Coverity-prevent's cov-build. Define STATIC_ANALYSIS accordingly. AC_CACHE_CHECK([whether this build is done by a static analysis tool], [lv_cv_static_analysis], [ lv_cv_static_analysis=no if test -n "${CCC_ANALYZER_ANALYSIS+set}" || \ test -n "$COVERITY_BUILD_COMMAND$COVERITY_LD_PRELOAD"; then lv_cv_static_analysis=yes fi ]) t=0 test "x$lv_cv_static_analysis" = xyes && t=1 AC_DEFINE_UNQUOTED([STATIC_ANALYSIS], [$t], [Define to 1 when performing static analysis.]) # Some GNULIB base64 symbols clash with a kerberos library AC_DEFINE_UNQUOTED([isbase64],[libvirt_gl_isbase64],[Hack to avoid symbol clash]) AC_DEFINE_UNQUOTED([base64_encode],[libvirt_gl_base64_encode],[Hack to avoid symbol clash]) AC_DEFINE_UNQUOTED([base64_encode_alloc],[libvirt_gl_base64_encode_alloc],[Hack to avoid symbol clash]) AC_CONFIG_FILES([run], [chmod +x,-w run]) AC_OUTPUT(Makefile src/Makefile include/Makefile docs/Makefile \ docs/schemas/Makefile \ gnulib/lib/Makefile \ gnulib/tests/Makefile \ libvirt.pc libvirt.spec mingw-libvirt.spec \ po/Makefile.in \ include/libvirt/Makefile include/libvirt/libvirt.h \ python/Makefile python/tests/Makefile \ daemon/Makefile \ tools/Makefile \ tests/Makefile \ examples/apparmor/Makefile \ examples/domain-events/events-c/Makefile \ examples/domsuspend/Makefile \ examples/dominfo/Makefile \ examples/openauth/Makefile \ examples/python/Makefile \ examples/hellolibvirt/Makefile \ examples/systemtap/Makefile \ examples/xml/nwfilter/Makefile) AC_MSG_NOTICE([]) AC_MSG_NOTICE([Configuration summary]) AC_MSG_NOTICE([=====================]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([Drivers]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Xen: $with_xen]) AC_MSG_NOTICE([ QEMU: $with_qemu]) AC_MSG_NOTICE([ UML: $with_uml]) AC_MSG_NOTICE([ OpenVZ: $with_openvz]) AC_MSG_NOTICE([ VMware: $with_vmware]) AC_MSG_NOTICE([ VBox: $with_vbox]) AC_MSG_NOTICE([ XenAPI: $with_xenapi]) AC_MSG_NOTICE([ xenlight: $with_libxl]) AC_MSG_NOTICE([ LXC: $with_lxc]) AC_MSG_NOTICE([ PHYP: $with_phyp]) AC_MSG_NOTICE([ ESX: $with_esx]) AC_MSG_NOTICE([ Hyper-V: $with_hyperv]) AC_MSG_NOTICE([Parallels: $with_parallels]) AC_MSG_NOTICE([ Test: $with_test]) AC_MSG_NOTICE([ Remote: $with_remote]) AC_MSG_NOTICE([ Network: $with_network]) AC_MSG_NOTICE([ Libvirtd: $with_libvirtd]) AC_MSG_NOTICE([Interface: $with_interface]) AC_MSG_NOTICE([ macvtap: $with_macvtap]) AC_MSG_NOTICE([ virtport: $with_virtualport]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([Storage Drivers]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Dir: $with_storage_dir]) AC_MSG_NOTICE([ FS: $with_storage_fs]) AC_MSG_NOTICE([ NetFS: $with_storage_fs]) AC_MSG_NOTICE([ LVM: $with_storage_lvm]) AC_MSG_NOTICE([ iSCSI: $with_storage_iscsi]) AC_MSG_NOTICE([ SCSI: $with_storage_scsi]) AC_MSG_NOTICE([ mpath: $with_storage_mpath]) AC_MSG_NOTICE([ Disk: $with_storage_disk]) AC_MSG_NOTICE([ RBD: $with_storage_rbd]) AC_MSG_NOTICE([Sheepdog: $with_storage_sheepdog]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([Security Drivers]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ SELinux: $with_secdriver_selinux ($SELINUX_MOUNT)]) AC_MSG_NOTICE([AppArmor: $with_secdriver_apparmor]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([Driver Loadable Modules]) AC_MSG_NOTICE([]) if test "$with_driver_modules" != "no" ; then AC_MSG_NOTICE([ dlopen: $DRIVER_MODULE_CFLAGS $DRIVER_MODULE_LIBS]) else AC_MSG_NOTICE([ dlopen: no]) fi AC_MSG_NOTICE([]) AC_MSG_NOTICE([Libraries]) AC_MSG_NOTICE([]) LIBVIRT_RESULT_APPARMOR LIBVIRT_RESULT_AUDIT LIBVIRT_RESULT_CAPNG LIBVIRT_RESULT_NETCF LIBVIRT_RESULT_NUMACTL LIBVIRT_RESULT_SANLOCK LIBVIRT_RESULT_SASL LIBVIRT_RESULT_SELINUX LIBVIRT_RESULT_YAJL AC_MSG_NOTICE([ libxml: $LIBXML_CFLAGS $LIBXML_LIBS]) AC_MSG_NOTICE([ dlopen: $DLOPEN_LIBS]) if test "$have_curl" = "yes" ; then AC_MSG_NOTICE([ libcurl: $LIBCURL_CFLAGS $LIBCURL_LIBS]) else AC_MSG_NOTICE([ libcurl: no]) fi if test "$with_hyperv" = "yes" ; then AC_MSG_NOTICE([openwsman: $OPENWSMAN_CFLAGS $OPENWSMAN_LIBS]) else AC_MSG_NOTICE([openwsman: no]) fi if test "$with_libssh2" != "no" ; then AC_MSG_NOTICE([ libssh2: $LIBSSH2_CFLAGS $LIBSSH2_LIBS]) else AC_MSG_NOTICE([ libssh2: no]) fi if test "$with_gnutls" != "no" ; then AC_MSG_NOTICE([ gnutls: $GNUTLS_CFLAGS $GNUTLS_LIBS]) else AC_MSG_NOTICE([ gnutls: no]) fi AC_MSG_NOTICE([firewalld: $with_firewalld]) if test "$with_avahi" = "yes" ; then AC_MSG_NOTICE([ avahi: $AVAHI_CFLAGS $AVAHI_LIBS]) else AC_MSG_NOTICE([ avahi: no]) fi if test "$with_polkit" = "yes" ; then if test "$with_polkit0" = "yes" ; then AC_MSG_NOTICE([ polkit: $POLKIT_CFLAGS $POLKIT_LIBS (version 0)]) else AC_MSG_NOTICE([ polkit: $PKCHECK_PATH (version 1)]) fi else AC_MSG_NOTICE([ polkit: no]) fi if test "$with_fuse" = "yes" ; then AC_MSG_NOTICE([ fuse: $FUSE_CFLAGS $FUSE_LIBS]) else AC_MSG_NOTICE([ fuse: no]) fi if test "$with_xen" = "yes" ; then AC_MSG_NOTICE([ xen: $XEN_CFLAGS $XEN_LIBS]) else AC_MSG_NOTICE([ xen: no]) fi if test "$with_xenapi" = "yes" ; then AC_MSG_NOTICE([ xenapi: $LIBXENSERVER_CFLAGS $LIBXENSERVER_LIBS]) else AC_MSG_NOTICE([ xenapi: no]) fi if test "$with_libxl" = "yes" ; then AC_MSG_NOTICE([xenlight: $LIBXL_CFLAGS $LIBXL_LIBS]) else AC_MSG_NOTICE([xenlight: no]) fi if test "$with_hal" = "yes" ; then AC_MSG_NOTICE([ hal: $HAL_CFLAGS $HAL_LIBS]) else AC_MSG_NOTICE([ hal: no]) fi if test "$with_udev" = "yes" ; then AC_MSG_NOTICE([ udev: $UDEV_CFLAGS $UDEV_LIBS $PCIACCESS_CFLAGS $PCIACCESS_LIBS]) else AC_MSG_NOTICE([ udev: no]) fi if test "$with_qemu" = "yes" && test "$LIBPCAP_FOUND" != "no"; then AC_MSG_NOTICE([ pcap: $LIBPCAP_CFLAGS $LIBPCAP_LIBS]) else AC_MSG_NOTICE([ pcap: no]) fi if test "$have_libnl" = "yes" ; then AC_MSG_NOTICE([ nl: $LIBNL_CFLAGS $LIBNL_LIBS]) else AC_MSG_NOTICE([ nl: no]) fi if test "$with_vbox" = "yes" && test -n "$MSCOM_LIBS" ; then AC_MSG_NOTICE([ mscom: $MSCOM_LIBS]) else AC_MSG_NOTICE([ mscom: no]) fi if test "$with_remote" = "yes" || test "$with_libvirtd" = "yes" ; then AC_MSG_NOTICE([ xdr: $XDR_CFLAGS]) else AC_MSG_NOTICE([ xdr: no]) fi if test "$with_storage_rbd" = "yes" ; then AC_MSG_NOTICE([ rbd: $LIBRBD_LIBS]) else AC_MSG_NOTICE([ rbd: no]) fi AC_MSG_NOTICE([]) AC_MSG_NOTICE([Test suite]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Coverage: $enable_coverage]) AC_MSG_NOTICE([ Alloc OOM: $enable_oom]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([Miscellaneous]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Debug: $enable_debug]) AC_MSG_NOTICE([ Use -Werror: $set_werror]) AC_MSG_NOTICE([ Warning Flags: $WARN_CFLAGS]) AC_MSG_NOTICE([ Readline: $lv_use_readline]) AC_MSG_NOTICE([ Python: $with_python]) AC_MSG_NOTICE([ DTrace: $with_dtrace]) AC_MSG_NOTICE([ numad: $with_numad]) AC_MSG_NOTICE([ XML Catalog: $XML_CATALOG_FILE]) AC_MSG_NOTICE([ Init script: $with_init_script]) AC_MSG_NOTICE([Char device locks: $with_chrdev_lock_files]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([Privileges]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ QEMU: $QEMU_USER:$QEMU_GROUP]) AC_MSG_NOTICE([])