2005-11-02 20:50:21 +08:00
|
|
|
dnl Process this file with autoconf to produce a configure script.
|
2007-09-19 07:46:18 +08:00
|
|
|
|
2010-03-06 00:10:21 +08:00
|
|
|
AC_INIT([libvirt], [0.7.7])
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_CONFIG_SRCDIR([src/libvirt.c])
|
|
|
|
AC_CONFIG_AUX_DIR([build-aux])
|
2010-01-25 23:00:43 +08:00
|
|
|
AC_CONFIG_HEADERS([config.h])
|
2010-02-17 21:45:10 +08:00
|
|
|
AC_CONFIG_MACRO_DIR([m4])
|
2007-09-19 07:46:18 +08:00
|
|
|
dnl Make automake keep quiet about wildcards & other GNUmake-isms
|
|
|
|
AM_INIT_AUTOMAKE([-Wno-portability])
|
2009-07-08 17:51:59 +08:00
|
|
|
|
|
|
|
# Use the silent-rules feature when possible.
|
|
|
|
m4_ifndef([AM_SILENT_RULES], [m4_define([AM_SILENT_RULES],[])])
|
|
|
|
AM_SILENT_RULES([yes])
|
|
|
|
|
2005-11-02 20:50:21 +08:00
|
|
|
AC_CANONICAL_HOST
|
|
|
|
|
2008-03-31 20:13:52 +08:00
|
|
|
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}'`
|
2006-02-15 21:21:17 +08:00
|
|
|
LIBVIRT_VERSION=$LIBVIRT_MAJOR_VERSION.$LIBVIRT_MINOR_VERSION.$LIBVIRT_MICRO_VERSION$LIBVIRT_MICRO_VERSION_SUFFIX
|
|
|
|
LIBVIRT_VERSION_INFO=`expr $LIBVIRT_MAJOR_VERSION + $LIBVIRT_MINOR_VERSION`:$LIBVIRT_MICRO_VERSION:$LIBVIRT_MINOR_VERSION
|
|
|
|
LIBVIRT_VERSION_NUMBER=`expr $LIBVIRT_MAJOR_VERSION \* 1000000 + $LIBVIRT_MINOR_VERSION \* 1000 + $LIBVIRT_MICRO_VERSION`
|
2005-11-02 20:50:21 +08:00
|
|
|
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_SUBST([LIBVIRT_MAJOR_VERSION])
|
|
|
|
AC_SUBST([LIBVIRT_MINOR_VERSION])
|
|
|
|
AC_SUBST([LIBVIRT_MICRO_VERSION])
|
|
|
|
AC_SUBST([LIBVIRT_VERSION])
|
|
|
|
AC_SUBST([LIBVIRT_VERSION_INFO])
|
|
|
|
AC_SUBST([LIBVIRT_VERSION_NUMBER])
|
2005-11-02 20:50:21 +08:00
|
|
|
|
2007-09-19 23:35:00 +08:00
|
|
|
dnl Required minimum versions of all libs we depend on
|
2009-04-03 23:25:38 +08:00
|
|
|
LIBXML_REQUIRED="2.6.0"
|
2007-11-26 19:34:57 +08:00
|
|
|
GNUTLS_REQUIRED="1.0.25"
|
2007-09-19 09:56:55 +08:00
|
|
|
AVAHI_REQUIRED="0.6.0"
|
2007-12-06 02:21:27 +08:00
|
|
|
POLKIT_REQUIRED="0.6"
|
2008-02-20 23:52:17 +08:00
|
|
|
PARTED_REQUIRED="1.8.0"
|
2009-11-21 02:43:59 +08:00
|
|
|
NETCF_REQUIRED="0.1.4"
|
2009-11-13 20:12:09 +08:00
|
|
|
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"
|
nwfilter: Support for learning a VM's IP address
This patch implements support for learning a VM's IP address. It uses
the pcap library to listen on the VM's backend network interface (tap)
or the physical ethernet device (macvtap) and tries to capture packets
with source or destination MAC address of the VM and learn from DHCP
Offers, ARP traffic, or first-sent IPv4 packet what the IP address of
the VM's interface is. This then allows to instantiate the network
traffic filtering rules without the user having to provide the IP
parameter somewhere in the filter description or in the interface
description as a parameter. This only supports to detect the parameter
IP, which is for the assumed single IPv4 address of a VM. There is not
support for interfaces that may have multiple IP addresses (IP
aliasing) or IPv6 that may then require more than one valid IP address
to be detected. A VM can have multiple independent interfaces that each
uses a different IP address and in that case it will be attempted to
detect each one of the address independently.
So, when for example an interface description in the domain XML has
looked like this up to now:
<interface type='bridge'>
<source bridge='mybridge'/>
<model type='virtio'/>
<filterref filter='clean-traffic'>
<parameter name='IP' value='10.2.3.4'/>
</filterref>
</interface>
you may omit the IP parameter:
<interface type='bridge'>
<source bridge='mybridge'/>
<model type='virtio'/>
<filterref filter='clean-traffic'/>
</interface>
Internally I am walking the 'tree' of a VM's referenced network filters
and determine with the given variables which variables are missing. Now,
the above IP parameter may be missing and this causes a libvirt-internal
thread to be started that uses the pcap library's API to listen to the
backend interface (in case of macvtap to the physical interface) in an
attempt to determine the missing IP parameter. If the backend interface
disappears the thread terminates assuming the VM was brought down. In
case of a macvtap device a timeout is being used to wait for packets
from the given VM (filtering by VM's interface MAC address). If the VM's
macvtap device disappeared the thread also terminates. In all other
cases it tries to determine the IP address of the VM and will then apply
the rules late on the given interface, which would have happened
immediately if the IP parameter had been explicitly given. In case an
error happens while the firewall rules are applied, the VM's backend
interface is 'down'ed preventing it to communicate. Reasons for failure
for applying the network firewall rules may that an ebtables/iptables
command failes or OOM errors. Essentially the same failure reasons may
occur as when the firewall rules are applied immediately on VM start,
except that due to the late application of the filtering rules the VM
now is already running and cannot be hindered anymore from starting.
Bringing down the whole VM would probably be considered too drastic.
While a VM's IP address is attempted to be determined only limited
updates to network filters are allowed. In particular it is prevented
that filters are modified in such a way that they would introduce new
variables.
A caveat: The algorithm does not know which one is the appropriate IP
address of a VM. If the VM spoofs an IP address in its first ARP traffic
or IPv4 packets its filtering rules will be instantiated for this IP
address, thus 'locking' it to the found IP address. So, it's still
'safer' to explicitly provide the IP address of a VM's interface in the
filter description if it is known beforehand.
* configure.ac: detect libpcap
* libvirt.spec.in: require libpcap[-devel] if qemu is built
* src/internal.h: add the new ATTRIBUTE_PACKED define
* src/Makefile.am src/libvirt_private.syms: add the new modules and symbols
* src/nwfilter/nwfilter_learnipaddr.[ch]: new module being added
* src/nwfilter/nwfilter_driver.c src/conf/nwfilter_conf.[ch]
src/nwfilter/nwfilter_ebiptables_driver.[ch]
src/nwfilter/nwfilter_gentech_driver.[ch]: plu the new functionality in
* tests/nwfilterxml2xmltest: extend testing
2010-04-08 05:02:18 +08:00
|
|
|
LIBPCAP_REQUIRED="1.0.0"
|
2007-09-19 09:56:55 +08:00
|
|
|
|
2007-11-30 01:41:57 +08:00
|
|
|
dnl Checks for C compiler.
|
2005-11-02 21:19:10 +08:00
|
|
|
AC_PROG_CC
|
|
|
|
AC_PROG_INSTALL
|
|
|
|
AC_PROG_CPP
|
2007-09-21 02:40:36 +08:00
|
|
|
|
2008-10-16 02:39:34 +08:00
|
|
|
AC_OBJEXT
|
|
|
|
|
2007-12-06 07:02:13 +08:00
|
|
|
dnl gl_INIT uses m4_foreach_w, yet that is not defined in autoconf-2.59.
|
|
|
|
dnl In order to accommodate developers with such old tools, here's a
|
|
|
|
dnl replacement definition.
|
|
|
|
m4_ifndef([m4_foreach_w],
|
|
|
|
[m4_define([m4_foreach_w],
|
|
|
|
[m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3])])])
|
|
|
|
|
Use gnulib, starting with its physmem and getaddrinfo modules.
New files go into these directories:
gnulib/lib
gnulib/m4
gnulib/tests
* bootstrap: A wrapper around gnulib-tool.
* configure.in: Invoke gl_EARLY and gl_INIT, being careful to put gl_EARLY
before any macro that uses AC_COMPILE_IFELSE.
(AC_OUTPUT): Add lib/Makefile and gl-tests/Makefile. Remove m4/Makefile.
* Makefile.am (SUBDIRS): Add gnulib/lib and remove m4. Add gnulib/tests
early enough that those tests run before any libvirt unit tests.
* m4/Makefile.am: Remove file. Not needed.
* src/Makefile.am (INCLUDES): Add -I$(top_srcdir)/gnulib/lib -I../gnulib/lib.
(LDADDS, libvirt_la_LIBADD): Add ../gnulib/lib/libgnu.la.
* src/nodeinfo.c: Include "physmem.h".
* qemud/qemud.c, src/remote_internal.c: Include "getaddrinfo.h".
(MEMINFO_PATH, linuxNodeInfoMemPopulate): Remove definitions.
(virNodeInfoPopulate): Use physmem_total, not linuxNodeInfoMemPopulate.
* tests/Makefile.am (INCLUDES): Add -I$(top_srcdir)/gnulib/lib -I../gnulib/lib.
(LDADDS): Add ../gnulib/lib/libgnu.la.
* qemud/Makefile.am (libvirtd_LDADD): Add ../gnulib/lib/libgnu.la.
* tests/nodeinfotest.c (linuxTestCompareFiles): No longer read total
memory from a file.
Update expected output not to include "Memory: NNNN"
* tests/nodeinfodata/linux-nodeinfo-1.txt:
* tests/nodeinfodata/linux-nodeinfo-2.txt:
* tests/nodeinfodata/linux-nodeinfo-3.txt:
* tests/nodeinfodata/linux-nodeinfo-4.txt:
* tests/nodeinfodata/linux-nodeinfo-5.txt:
* tests/nodeinfodata/linux-nodeinfo-6.txt:
* src/test.c [WITH_TEST]: Remove definition of _GNU_SOURCE that
would conflict with the one now in "config.h".
* autogen.sh: Add -I gnulib/m4.
* src/conf.c, src/sexpr.c: Don't define _GNU_SOURCE.
Instead, include "config.h".
* qemud/qemud.c: Remove definition of _GNU_SOURCE.
* src/openvz_driver.c: Likewise.
* src/qemu_driver.c: Likewise.
* src/remote_internal.c: Likewise.
* configure.in: Use AC_CONFIG_AUX_DIR(build-aux), so that a bunch
of gettextize-generated files go into build-aux/, rather than in
the top-level directory.
* .cvsignore: Adjust.
* build-aux/.cvsignore: New file.
Author: Jim Meyering <meyering@redhat.com>
2007-12-06 05:31:07 +08:00
|
|
|
gl_EARLY
|
|
|
|
gl_INIT
|
|
|
|
|
|
|
|
AM_PROG_CC_STDC
|
|
|
|
AC_C_CONST
|
2010-03-15 09:02:10 +08:00
|
|
|
AC_TYPE_UID_T
|
Use gnulib, starting with its physmem and getaddrinfo modules.
New files go into these directories:
gnulib/lib
gnulib/m4
gnulib/tests
* bootstrap: A wrapper around gnulib-tool.
* configure.in: Invoke gl_EARLY and gl_INIT, being careful to put gl_EARLY
before any macro that uses AC_COMPILE_IFELSE.
(AC_OUTPUT): Add lib/Makefile and gl-tests/Makefile. Remove m4/Makefile.
* Makefile.am (SUBDIRS): Add gnulib/lib and remove m4. Add gnulib/tests
early enough that those tests run before any libvirt unit tests.
* m4/Makefile.am: Remove file. Not needed.
* src/Makefile.am (INCLUDES): Add -I$(top_srcdir)/gnulib/lib -I../gnulib/lib.
(LDADDS, libvirt_la_LIBADD): Add ../gnulib/lib/libgnu.la.
* src/nodeinfo.c: Include "physmem.h".
* qemud/qemud.c, src/remote_internal.c: Include "getaddrinfo.h".
(MEMINFO_PATH, linuxNodeInfoMemPopulate): Remove definitions.
(virNodeInfoPopulate): Use physmem_total, not linuxNodeInfoMemPopulate.
* tests/Makefile.am (INCLUDES): Add -I$(top_srcdir)/gnulib/lib -I../gnulib/lib.
(LDADDS): Add ../gnulib/lib/libgnu.la.
* qemud/Makefile.am (libvirtd_LDADD): Add ../gnulib/lib/libgnu.la.
* tests/nodeinfotest.c (linuxTestCompareFiles): No longer read total
memory from a file.
Update expected output not to include "Memory: NNNN"
* tests/nodeinfodata/linux-nodeinfo-1.txt:
* tests/nodeinfodata/linux-nodeinfo-2.txt:
* tests/nodeinfodata/linux-nodeinfo-3.txt:
* tests/nodeinfodata/linux-nodeinfo-4.txt:
* tests/nodeinfodata/linux-nodeinfo-5.txt:
* tests/nodeinfodata/linux-nodeinfo-6.txt:
* src/test.c [WITH_TEST]: Remove definition of _GNU_SOURCE that
would conflict with the one now in "config.h".
* autogen.sh: Add -I gnulib/m4.
* src/conf.c, src/sexpr.c: Don't define _GNU_SOURCE.
Instead, include "config.h".
* qemud/qemud.c: Remove definition of _GNU_SOURCE.
* src/openvz_driver.c: Likewise.
* src/qemu_driver.c: Likewise.
* src/remote_internal.c: Likewise.
* configure.in: Use AC_CONFIG_AUX_DIR(build-aux), so that a bunch
of gettextize-generated files go into build-aux/, rather than in
the top-level directory.
* .cvsignore: Adjust.
* build-aux/.cvsignore: New file.
Author: Jim Meyering <meyering@redhat.com>
2007-12-06 05:31:07 +08:00
|
|
|
|
2005-11-02 21:19:10 +08:00
|
|
|
dnl Make sure we have an ANSI compiler
|
|
|
|
AM_C_PROTOTYPES
|
2008-05-22 23:34:02 +08:00
|
|
|
test "x$U" != "x" && AC_MSG_ERROR([Compiler not ANSI compliant])
|
2005-11-02 21:19:10 +08:00
|
|
|
|
2007-11-30 01:41:57 +08:00
|
|
|
dnl Support building Win32 DLLs (must appear *before* AM_PROG_LIBTOOL)
|
|
|
|
AC_LIBTOOL_WIN32_DLL
|
|
|
|
|
2005-11-02 21:19:10 +08:00
|
|
|
AM_PROG_LIBTOOL
|
2007-03-16 01:24:56 +08:00
|
|
|
AM_PROG_CC_C_O
|
|
|
|
|
2008-12-18 05:39:41 +08:00
|
|
|
VERSION_SCRIPT_FLAGS=-Wl,--version-script=
|
|
|
|
`/usr/bin/ld --help 2>&1 | grep -- --version-script >/dev/null` || \
|
|
|
|
VERSION_SCRIPT_FLAGS="-Wl,-M -Wl,"
|
|
|
|
AC_SUBST(VERSION_SCRIPT_FLAGS)
|
|
|
|
|
2008-05-22 23:34:02 +08:00
|
|
|
LIBVIRT_COMPILE_WARNINGS([maximum])
|
2007-03-02 00:18:55 +08:00
|
|
|
|
Adds CPU selection infrastructure
Each driver supporting CPU selection must fill in host CPU capabilities.
When filling them, drivers for hypervisors running on the same node as
libvirtd can use cpuNodeData() to obtain raw CPU data. Other drivers,
such as VMware, need to implement their own way of getting such data.
Raw data can be decoded into virCPUDefPtr using cpuDecode() function.
When implementing virConnectCompareCPU(), a hypervisor driver can just
call cpuCompareXML() function with host CPU capabilities.
For each guest for which a driver supports selecting CPU models, it must
set the appropriate feature in guest's capabilities:
virCapabilitiesAddGuestFeature(guest, "cpuselection", 1, 0)
Actions needed when a domain is being created depend on whether the
hypervisor understands raw CPU data (currently CPUID for i686, x86_64
architectures) or symbolic names has to be used.
Typical use by hypervisors which prefer CPUID (such as VMware and Xen):
- convert guest CPU configuration from domain's XML into a set of raw
data structures each representing one of the feature policies:
cpuEncode(conn, architecture, guest_cpu_config,
&forced_data, &required_data, &optional_data,
&disabled_data, &forbidden_data)
- create a mask or whatever the hypervisor expects to see and pass it
to the hypervisor
Typical use by hypervisors with symbolic model names (such as QEMU):
- get raw CPU data for a computed guest CPU:
cpuGuestData(conn, host_cpu, guest_cpu_config, &data)
- decode raw data into virCPUDefPtr with a possible restriction on
allowed model names:
cpuDecode(conn, guest, data, n_allowed_models, allowed_models)
- pass guest->model and guest->features to the hypervisor
* src/cpu/cpu.c src/cpu/cpu.h src/cpu/cpu_generic.c
src/cpu/cpu_generic.h src/cpu/cpu_map.c src/cpu/cpu_map.h
src/cpu/cpu_x86.c src/cpu/cpu_x86.h src/cpu/cpu_x86_data.h
* configure.in: check for CPUID instruction
* src/Makefile.am: glue the new files in
* src/libvirt_private.syms: add new private symbols
* po/POTFILES.in: add new cpu files containing translatable strings
2009-12-18 23:02:11 +08:00
|
|
|
AC_MSG_CHECKING([for CPUID instruction])
|
|
|
|
AC_COMPILE_IFELSE(AC_LANG_PROGRAM(
|
|
|
|
[[
|
|
|
|
#include <stdint.h>
|
|
|
|
]],
|
|
|
|
[[
|
|
|
|
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])
|
|
|
|
|
|
|
|
|
virDomainBlockPeek call
* configure.in: Document AC_SYS_LARGEFILE.
* docs/hvsupport.html.in: Document HV support for virDomainBlockPeek.
* include/libvirt/libvirt.h.in, src/driver.h, src/libvirt.c,
src/libvirt_sym.version: Add virDomainBlockPeek infrastructure.
* src/qemu_driver.c, src/test.c: Null versions of this call.
* src/xen_unified.c, src/xend_internal.c, src/xend_internal.h,
src/xm_internal.c, src/xm_internal.h: Xen implementation.
* tests/sexpr2xmldata/sexpr2xml-curmem.xml,
tests/sexpr2xmldata/sexpr2xml-no-source-cdrom.xml: XML output
has been reordered slightly in the Xen driver, but should be
functionally the same.
2008-06-05 21:17:45 +08:00
|
|
|
dnl Support large files / 64 bit seek offsets.
|
|
|
|
dnl Use --disable-largefile if you don't want this.
|
|
|
|
AC_SYS_LARGEFILE
|
|
|
|
|
2007-06-15 23:24:20 +08:00
|
|
|
dnl Availability of various common functions (non-fatal if missing).
|
2009-12-15 15:27:53 +08:00
|
|
|
AC_CHECK_FUNCS([cfmakeraw regexec uname sched_getaffinity getuid getgid posix_fallocate mmap])
|
2007-06-15 23:24:20 +08:00
|
|
|
|
2009-01-21 01:13:33 +08:00
|
|
|
dnl Availability of various not common threadsafe functions
|
2009-01-23 03:41:48 +08:00
|
|
|
AC_CHECK_FUNCS([strerror_r strtok_r getmntent_r getgrnam_r getpwuid_r])
|
2009-01-21 01:13:33 +08:00
|
|
|
|
2007-06-15 23:24:20 +08:00
|
|
|
dnl Availability of various common headers (non-fatal if missing).
|
2010-04-07 23:06:43 +08:00
|
|
|
AC_CHECK_HEADERS([pwd.h paths.h regex.h sys/syslimits.h sys/utsname.h sys/wait.h winsock2.h sched.h termios.h sys/poll.h syslog.h mntent.h net/ethernet.h])
|
2007-06-15 23:24:20 +08:00
|
|
|
|
2008-01-23 22:54:41 +08:00
|
|
|
dnl Where are the XDR functions?
|
|
|
|
dnl If portablexdr is installed, prefer that.
|
2009-01-09 04:42:01 +08:00
|
|
|
dnl Otherwise try -lrpc (Cygwin) -lxdr (some MinGW), -lnsl (Solaris)
|
|
|
|
dnl or none (most Unix)
|
2008-01-23 22:54:41 +08:00
|
|
|
AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[
|
2009-12-22 01:37:15 +08:00
|
|
|
AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl],[],
|
|
|
|
[AC_MSG_ERROR([Cannot find a XDR library])])
|
2008-01-23 22:54:41 +08:00
|
|
|
])
|
2007-11-26 19:43:01 +08:00
|
|
|
|
2008-09-05 20:03:45 +08:00
|
|
|
AC_CHECK_LIB([intl],[gettext],[])
|
|
|
|
|
2007-11-26 19:45:26 +08:00
|
|
|
dnl Do we have rpcgen?
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_PATH_PROG([RPCGEN], [rpcgen], [no])
|
2009-01-29 05:33:56 +08:00
|
|
|
AM_CONDITIONAL([HAVE_RPCGEN], [test "x$ac_cv_path_RPCGEN" != "xno"])
|
2007-12-05 03:14:11 +08:00
|
|
|
dnl Is this GLIBC's buggy rpcgen?
|
2009-01-29 05:33:56 +08:00
|
|
|
AM_CONDITIONAL([HAVE_GLIBC_RPCGEN],
|
2007-12-05 03:14:11 +08:00
|
|
|
[test "x$ac_cv_path_RPCGEN" != "xno" &&
|
|
|
|
$ac_cv_path_RPCGEN -t </dev/null >/dev/null 2>&1])
|
2007-11-26 19:45:26 +08:00
|
|
|
|
2008-04-18 16:33:23 +08:00
|
|
|
dnl pthread?
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_CHECK_HEADER([pthread.h],
|
|
|
|
[AC_CHECK_LIB([pthread],[pthread_join],[
|
2008-04-18 16:33:23 +08:00
|
|
|
AC_DEFINE([HAVE_LIBPTHREAD],[],[Define if pthread (-lpthread)])
|
|
|
|
AC_DEFINE([HAVE_PTHREAD_H],[],[Define if <pthread.h>])
|
2008-08-22 16:32:58 +08:00
|
|
|
LIBS="-lpthread $LIBS"
|
2008-05-22 23:34:02 +08:00
|
|
|
])])
|
2008-04-18 16:33:23 +08:00
|
|
|
|
2007-11-30 01:41:57 +08:00
|
|
|
dnl Miscellaneous external programs.
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_PATH_PROG([RM], [rm], [/bin/rm])
|
|
|
|
AC_PATH_PROG([MV], [mv], [/bin/mv])
|
|
|
|
AC_PATH_PROG([TAR], [tar], [/bin/tar])
|
|
|
|
AC_PATH_PROG([XMLLINT], [xmllint], [/usr/bin/xmllint])
|
2008-08-20 21:16:29 +08:00
|
|
|
AC_PATH_PROG([XMLCATALOG], [xmlcatalog], [/usr/bin/xmlcatalog])
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_PATH_PROG([XSLTPROC], [xsltproc], [/usr/bin/xsltproc])
|
2008-09-04 18:44:23 +08:00
|
|
|
AC_PATH_PROG([AUGPARSE], [augparse], [/usr/bin/augparse])
|
2008-06-10 18:43:28 +08:00
|
|
|
AC_PROG_MKDIR_P
|
|
|
|
|
2007-11-30 01:41:57 +08:00
|
|
|
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.
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_PATH_PROG([DNSMASQ], [dnsmasq], [dnsmasq],
|
2007-11-30 01:41:57 +08:00
|
|
|
[/sbin:/usr/sbin:/usr/local/sbin:$PATH])
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_PATH_PROG([BRCTL], [brctl], [brctl],
|
2007-11-30 01:41:57 +08:00
|
|
|
[/sbin:/usr/sbin:/usr/local/sbin:$PATH])
|
2008-11-28 15:50:20 +08:00
|
|
|
AC_PATH_PROG([UDEVADM], [udevadm], [],
|
|
|
|
[/sbin:/usr/sbin:/usr/local/sbin:$PATH])
|
2008-12-02 20:41:29 +08:00
|
|
|
AC_PATH_PROG([UDEVSETTLE], [udevsettle], [],
|
|
|
|
[/sbin:/usr/sbin:/usr/local/sbin:$PATH])
|
2009-03-03 00:18:11 +08:00
|
|
|
AC_PATH_PROG([MODPROBE], [modprobe], [],
|
|
|
|
[/sbin:/usr/sbin:/usr/local/sbin:$PATH])
|
2007-11-30 01:41:57 +08:00
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([DNSMASQ],["$DNSMASQ"],
|
|
|
|
[Location or name of the dnsmasq program])
|
|
|
|
AC_DEFINE_UNQUOTED([BRCTL],["$BRCTL"],
|
|
|
|
[Location or name of the brctl program (see bridge-utils)])
|
2008-11-28 15:50:20 +08:00
|
|
|
if test -n "$UDEVADM"; then
|
|
|
|
AC_DEFINE_UNQUOTED([UDEVADM],["$UDEVADM"],
|
|
|
|
[Location or name of the udevadm program])
|
|
|
|
fi
|
2008-12-02 20:41:29 +08:00
|
|
|
if test -n "$UDEVSETTLE"; then
|
|
|
|
AC_DEFINE_UNQUOTED([UDEVSETTLE],["$UDEVSETTLE"],
|
|
|
|
[Location or name of the udevsettle program])
|
|
|
|
fi
|
2009-03-03 00:18:11 +08:00
|
|
|
if test -n "$MODPROBE"; then
|
|
|
|
AC_DEFINE_UNQUOTED([MODPROBE],["$MODPROBE"],
|
|
|
|
[Location or name of the modprobe program])
|
|
|
|
fi
|
2007-11-30 01:41:57 +08:00
|
|
|
|
2005-12-07 21:45:20 +08:00
|
|
|
dnl Specific dir for HTML output ?
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_WITH([html-dir], [AC_HELP_STRING([--with-html-dir=path],
|
|
|
|
[path to base html directory, default $datadir/doc/html])],
|
2005-12-07 21:45:20 +08:00
|
|
|
[HTML_DIR=$withval], [HTML_DIR='$(datadir)/doc'])
|
|
|
|
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_WITH([html-subdir], [AC_HELP_STRING([--with-html-subdir=path],
|
|
|
|
[directory used under html-dir, default $PACKAGE-$VERSION/html])],
|
2005-12-07 21:45:20 +08:00
|
|
|
[test "x$withval" != "x" && HTML_DIR="$HTML_DIR/$withval"],
|
|
|
|
[HTML_DIR="$HTML_DIR/\$(PACKAGE)-\$(VERSION)/html"])
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_SUBST([HTML_DIR])
|
2005-12-07 21:45:20 +08:00
|
|
|
|
2007-11-27 22:39:42 +08:00
|
|
|
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
|
|
|
|
|
2010-03-24 16:10:13 +08:00
|
|
|
if test "$prefix" = "/usr" && test "$localstatedir" = '${prefix}/var' ; then
|
2007-11-27 22:39:42 +08:00
|
|
|
localstatedir='/var'
|
|
|
|
fi
|
2010-03-24 16:10:13 +08:00
|
|
|
if test "$prefix" = "/usr" && test "$sysconfdir" = '${prefix}/etc' ; then
|
2007-11-27 22:39:42 +08:00
|
|
|
sysconfdir='/etc'
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
2007-06-11 20:19:46 +08:00
|
|
|
dnl Allow to build without Xen, QEMU/KVM, test or remote driver
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_WITH([xen],
|
2010-01-17 22:48:46 +08:00
|
|
|
AC_HELP_STRING([--with-xen], [add XEN support @<:@default=check@:>@]),[],[with_xen=check])
|
2008-11-25 18:44:52 +08:00
|
|
|
AC_ARG_WITH([xen-inotify],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-xen-inotify], [add XEN inotify support @<:@default=check@:>@]),[],[with_xen_inotify=check])
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_WITH([qemu],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-qemu], [add QEMU/KVM support @<:@default=yes@:>@]),[],[with_qemu=yes])
|
2008-11-20 00:58:23 +08:00
|
|
|
AC_ARG_WITH([uml],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-uml], [add UML support @<:@default=check@:>@]),[],[with_uml=check])
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_WITH([openvz],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-openvz], [add OpenVZ support @<:@default=yes@:>@]),[],[with_openvz=yes])
|
2009-09-04 18:08:47 +08:00
|
|
|
AC_ARG_WITH([libssh2],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-libssh2=@<:@PFX@:>@], [libssh2 location @<:@default=/usr/local/lib@:>@]),[],[with_libssh2=yes])
|
2009-07-24 22:17:06 +08:00
|
|
|
AC_ARG_WITH([phyp],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-phyp], [add PHYP support @<:@default=check@:>@]),[],[with_phyp=check])
|
2010-03-14 19:11:51 +08:00
|
|
|
AC_ARG_WITH([xenapi],
|
|
|
|
AC_HELP_STRING([--with-xenapi], [add XenAPI support @<:@default=check@:>@]),[],[with_xenapi=check])
|
2009-04-18 00:09:07 +08:00
|
|
|
AC_ARG_WITH([vbox],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-vbox], [add VirtualBox support @<:@default=yes@:>@]),[],[with_vbox=yes])
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_WITH([lxc],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-lxc], [add Linux Container support @<:@default=check@:>@]),[],[with_lxc=check])
|
2009-05-25 19:56:00 +08:00
|
|
|
AC_ARG_WITH([one],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-one], [add ONE support @<:@default=check@:>@]),[],[with_one=check])
|
2009-07-24 04:21:08 +08:00
|
|
|
AC_ARG_WITH([esx],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-esx], [add ESX support @<:@default=check@:>@]),[],[with_esx=check])
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_WITH([test],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-test], [add test driver support @<:@default=yes@:>@]),[],[with_test=yes])
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_WITH([remote],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-remote], [add remote driver support @<:@default=yes@:>@]),[],[with_remote=yes])
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_WITH([libvirtd],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-libvirtd], [add libvirtd support @<:@default=yes@:>@]),[],[with_libvirtd=yes])
|
2007-03-15 15:43:16 +08:00
|
|
|
|
2005-12-02 20:11:06 +08:00
|
|
|
dnl
|
|
|
|
dnl specific tests to setup DV devel environments with debug etc ...
|
|
|
|
dnl
|
2010-04-01 04:58:40 +08:00
|
|
|
if test "${LOGNAME}" = "veillard" && test "`pwd`" = "/u/veillard/libvirt" ; then
|
2005-12-02 20:11:06 +08:00
|
|
|
STATIC_BINARIES="-static"
|
|
|
|
else
|
|
|
|
STATIC_BINARIES=
|
|
|
|
fi
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_SUBST([STATIC_BINARIES])
|
2005-12-02 20:11:06 +08:00
|
|
|
|
2007-02-17 02:30:55 +08:00
|
|
|
dnl --enable-debug=(yes|no)
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_ENABLE([debug],
|
2010-01-17 22:48:45 +08:00
|
|
|
[AC_HELP_STRING([--enable-debug=@<:@no|yes@:>@],
|
|
|
|
[enable debugging output @<:@default=yes@:>@])],[],[enable_debug=yes])
|
2009-01-05 22:05:29 +08:00
|
|
|
AM_CONDITIONAL([ENABLE_DEBUG], test x"$enable_debug" = x"yes")
|
2007-02-17 02:30:55 +08:00
|
|
|
if test x"$enable_debug" = x"yes"; then
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_DEFINE([ENABLE_DEBUG], [], [whether debugging is enabled])
|
2007-02-17 02:30:55 +08:00
|
|
|
fi
|
|
|
|
|
2007-08-07 21:02:35 +08:00
|
|
|
|
2007-06-11 20:19:46 +08:00
|
|
|
AC_MSG_CHECKING([where to write libvirtd PID file])
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_ARG_WITH([remote-pid-file], [AC_HELP_STRING([--with-remote-pid-file=@<:@pidfile|none@:>@], [PID file for libvirtd])])
|
2007-06-11 20:19:46 +08:00
|
|
|
if test "x$with_remote_pid_file" == "x" ; then
|
|
|
|
REMOTE_PID_FILE="$localstatedir/run/libvirtd.pid"
|
|
|
|
elif test "x$with_remote_pid_file" == "xnone" ; then
|
|
|
|
REMOTE_PID_FILE=""
|
|
|
|
else
|
|
|
|
REMOTE_PID_FILE="$with_remote_pid_file"
|
|
|
|
fi
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_SUBST([REMOTE_PID_FILE])
|
2007-06-11 20:19:46 +08:00
|
|
|
AC_MSG_RESULT($REMOTE_PID_FILE)
|
|
|
|
|
2007-02-23 20:50:58 +08:00
|
|
|
dnl
|
|
|
|
dnl init script flavor
|
|
|
|
dnl
|
|
|
|
AC_MSG_CHECKING([for init script flavor])
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_WITH([init-script],
|
2010-01-17 22:48:45 +08:00
|
|
|
[AC_HELP_STRING([--with-init-script=@<:@redhat|auto|none@:>@],
|
|
|
|
[Style of init script to install @<:@default=auto@:>@])])
|
2010-03-25 05:31:31 +08:00
|
|
|
if test "x$with_init_script" = "x" || test "x$with_init_script" = "xauto"; then
|
2007-02-23 20:50:58 +08:00
|
|
|
if test -f /etc/redhat-release ; then
|
2009-11-03 00:55:40 +08:00
|
|
|
with_init_script=redhat
|
2007-02-23 20:50:58 +08:00
|
|
|
else
|
2009-11-03 00:55:40 +08:00
|
|
|
with_init_script=none
|
2007-02-23 20:50:58 +08:00
|
|
|
fi
|
|
|
|
fi
|
2009-11-03 00:55:40 +08:00
|
|
|
AM_CONDITIONAL([LIBVIRT_INIT_SCRIPT_RED_HAT], test x$with_init_script = xredhat)
|
|
|
|
AC_MSG_RESULT($with_init_script)
|
2007-02-23 20:50:58 +08:00
|
|
|
|
2009-01-20 01:41:39 +08:00
|
|
|
dnl RHEL-5 has a peculiar version of Xen, which requires some special casing
|
|
|
|
AC_ARG_WITH([rhel5-api],
|
2010-01-17 22:48:45 +08:00
|
|
|
[AC_HELP_STRING([--with-rhel5-api=@<:@ARG@:>@],
|
|
|
|
[build for the RHEL-5 API @<:@default=no@:>@])])
|
2009-01-20 01:41:39 +08:00
|
|
|
if test x"$with_rhel5_api" = x"yes"; then
|
|
|
|
AC_DEFINE([WITH_RHEL5_API], [1], [whether building for the RHEL-5 API])
|
|
|
|
fi
|
|
|
|
|
2010-03-26 01:46:09 +08:00
|
|
|
AC_PATH_PROG([BASH_PATH], [bash], /bin/bash, [/bin:$PATH])
|
|
|
|
AC_DEFINE_UNQUOTED([BASH_PATH], "$BASH_PATH", [path to bash binary])
|
|
|
|
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_PATH_PROG([IPTABLES_PATH], [iptables], /sbin/iptables, [/usr/sbin:$PATH])
|
|
|
|
AC_DEFINE_UNQUOTED([IPTABLES_PATH], "$IPTABLES_PATH", [path to iptables binary])
|
2007-02-15 00:26:42 +08:00
|
|
|
|
2010-03-30 22:36:35 +08:00
|
|
|
AC_PATH_PROG([IP6TABLES_PATH], [ip6tables], /sbin/ip6tables, [/usr/sbin:$PATH])
|
|
|
|
AC_DEFINE_UNQUOTED([IP6TABLES_PATH], "$IP6TABLES_PATH", [path to ip6tables binary])
|
|
|
|
|
2009-11-04 06:11:01 +08:00
|
|
|
AC_PATH_PROG([EBTABLES_PATH], [ebtables], /sbin/ebtables, [/usr/sbin:$PATH])
|
|
|
|
AC_DEFINE_UNQUOTED([EBTABLES_PATH], "$EBTABLES_PATH", [path to ebtables binary])
|
|
|
|
|
2010-03-26 01:46:12 +08:00
|
|
|
AC_PATH_PROG([GREP_PATH], [grep], /bin/grep, [/bin:$PATH])
|
|
|
|
AC_DEFINE_UNQUOTED([GREP_PATH], "$GREP_PATH", [path to grep binary])
|
|
|
|
|
|
|
|
AC_PATH_PROG([GAWK_PATH], [gawk], /bin/gawk, [/bin:$PATH])
|
|
|
|
AC_DEFINE_UNQUOTED([GAWK_PATH], "$GAWK_PATH", [path to gawk binary])
|
|
|
|
|
|
|
|
|
2008-08-21 04:48:35 +08:00
|
|
|
if test "$with_openvz" = "yes"; then
|
2008-11-05 07:37:23 +08:00
|
|
|
AC_DEFINE_UNQUOTED([WITH_OPENVZ], 1, [whether OpenVZ driver is enabled])
|
2007-07-17 21:27:26 +08:00
|
|
|
fi
|
2008-08-21 04:48:35 +08:00
|
|
|
AM_CONDITIONAL([WITH_OPENVZ], [test "$with_openvz" = "yes"])
|
|
|
|
|
2009-04-18 00:09:07 +08:00
|
|
|
if test "x$with_vbox" = "xyes"; then
|
2010-03-04 23:48:10 +08:00
|
|
|
AC_SEARCH_LIBS([dlopen], [dl], [], [AC_MSG_ERROR([Unable to find dlopen()])])
|
|
|
|
case $ac_cv_search_dlopen in
|
|
|
|
no*) DLOPEN_LIBS= ;;
|
|
|
|
*) DLOPEN_LIBS=$ac_cv_search_dlopen ;;
|
|
|
|
esac
|
|
|
|
AC_SUBST([DLOPEN_LIBS])
|
2009-04-18 00:09:07 +08:00
|
|
|
AC_DEFINE_UNQUOTED([WITH_VBOX], 1, [whether VirtualBox driver is enabled])
|
|
|
|
fi
|
|
|
|
AM_CONDITIONAL([WITH_VBOX], [test "$with_vbox" = "yes"])
|
|
|
|
|
2008-11-05 07:37:23 +08:00
|
|
|
if test "$with_libvirtd" = "no" ; then
|
|
|
|
with_qemu=no
|
|
|
|
fi
|
2007-09-19 07:36:30 +08:00
|
|
|
if test "$with_qemu" = "yes" ; then
|
2008-11-05 07:37:23 +08:00
|
|
|
AC_DEFINE_UNQUOTED([WITH_QEMU], 1, [whether QEMU driver is enabled])
|
2007-03-15 15:43:16 +08:00
|
|
|
fi
|
2008-08-21 04:48:35 +08:00
|
|
|
AM_CONDITIONAL([WITH_QEMU], [test "$with_qemu" = "yes"])
|
2007-03-15 15:43:16 +08:00
|
|
|
|
2009-05-25 19:56:00 +08:00
|
|
|
if test "$with_one" = "yes" ; then
|
|
|
|
AC_DEFINE_UNQUOTED([WITH_ONE],1,[whether ONE driver is enabled])
|
|
|
|
fi
|
|
|
|
AM_CONDITIONAL([WITH_ONE],[test "$with_one" = "yes"])
|
|
|
|
|
2007-09-19 07:36:30 +08:00
|
|
|
if test "$with_test" = "yes" ; then
|
2008-11-05 07:37:23 +08:00
|
|
|
AC_DEFINE_UNQUOTED([WITH_TEST], 1, [whether Test driver is enabled])
|
2007-03-15 15:43:16 +08:00
|
|
|
fi
|
2008-08-21 04:48:35 +08:00
|
|
|
AM_CONDITIONAL([WITH_TEST], [test "$with_test" = "yes"])
|
2007-03-15 15:43:16 +08:00
|
|
|
|
2007-09-19 07:36:30 +08:00
|
|
|
if test "$with_remote" = "yes" ; then
|
2008-11-05 07:37:23 +08:00
|
|
|
AC_DEFINE_UNQUOTED([WITH_REMOTE], 1, [whether Remote driver is enabled])
|
2007-06-11 20:19:46 +08:00
|
|
|
fi
|
2008-08-21 04:48:35 +08:00
|
|
|
AM_CONDITIONAL([WITH_REMOTE], [test "$with_remote" = "yes"])
|
2007-06-11 20:19:46 +08:00
|
|
|
|
2008-06-10 23:35:15 +08:00
|
|
|
if test "$with_libvirtd" = "yes" ; then
|
2008-11-05 07:37:23 +08:00
|
|
|
AC_DEFINE_UNQUOTED([WITH_LIBVIRTD], 1, [whether libvirtd daemon is enabled])
|
2008-06-10 23:35:15 +08:00
|
|
|
fi
|
2008-08-21 04:48:35 +08:00
|
|
|
AM_CONDITIONAL([WITH_LIBVIRTD], [test "$with_libvirtd" = "yes"])
|
2008-06-10 23:35:15 +08:00
|
|
|
|
2010-03-14 19:11:51 +08:00
|
|
|
|
|
|
|
old_LIBS="$LIBS"
|
|
|
|
old_CFLAGS="$CFLAGS"
|
|
|
|
LIBXENSERVER_LIBS=""
|
|
|
|
LIBXENSERVER_CFLAGS=""
|
|
|
|
dnl search for the XenServer library
|
|
|
|
if test "$with_xenapi" != "no" ; then
|
2010-03-24 16:10:13 +08:00
|
|
|
if test "$with_xenapi" != "yes" && test "$with_xenapi" != "check" ; then
|
2010-03-14 19:11:51 +08:00
|
|
|
LIBXENSERVER_CFLAGS="-I$with_xenapi/include"
|
|
|
|
LIBXENSERVER_LIBS="-L$with_xenapi"
|
|
|
|
fi
|
|
|
|
fail=0
|
|
|
|
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])
|
|
|
|
|
|
|
|
|
2010-01-17 22:48:46 +08:00
|
|
|
old_LIBS="$LIBS"
|
|
|
|
old_CFLAGS="$CFLAGS"
|
2008-11-05 07:37:23 +08:00
|
|
|
XEN_LIBS=""
|
|
|
|
XEN_CFLAGS=""
|
|
|
|
dnl search for the Xen store library
|
|
|
|
if test "$with_xen" != "no" ; then
|
2010-03-24 16:10:13 +08:00
|
|
|
if test "$with_xen" != "yes" && test "$with_xen" != "check" ; then
|
2008-11-05 07:37:23 +08:00
|
|
|
XEN_CFLAGS="-I$with_xen/include"
|
|
|
|
XEN_LIBS="-L$with_xen/lib64 -L$with_xen/lib"
|
2007-03-15 15:43:16 +08:00
|
|
|
fi
|
2008-11-05 07:37:23 +08:00
|
|
|
fail=0
|
|
|
|
CFLAGS="$CFLAGS $XEN_CFLAGS"
|
|
|
|
LIBS="$LIBS $XEN_LIBS"
|
|
|
|
AC_CHECK_LIB([xenstore], [xs_read], [
|
|
|
|
with_xen=yes
|
|
|
|
XEN_LIBS="$XEN_LIBS -lxenstore"
|
|
|
|
],[
|
2010-01-17 22:48:46 +08:00
|
|
|
if test "$with_xen" = "yes"; then
|
2008-11-05 07:37:23 +08:00
|
|
|
fail=1
|
|
|
|
fi
|
2010-01-17 22:48:46 +08:00
|
|
|
with_xen=no
|
2008-11-05 07:37:23 +08:00
|
|
|
])
|
2010-01-17 22:48:46 +08:00
|
|
|
fi
|
2008-11-05 07:37:23 +08:00
|
|
|
|
2010-01-17 22:48:46 +08:00
|
|
|
if test "$with_xen" != "no" ; then
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_CHECK_HEADERS([xen/xen.h xen/version.h xen/dom0_ops.h],,[
|
2010-01-17 22:48:46 +08:00
|
|
|
if test "$with_xen" = "yes"; then
|
|
|
|
fail=1
|
|
|
|
fi
|
|
|
|
with_xen=no
|
2007-07-19 23:37:54 +08:00
|
|
|
],
|
|
|
|
[#include <stdio.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
])
|
2010-01-17 22:48:46 +08:00
|
|
|
fi
|
2007-07-19 23:37:54 +08:00
|
|
|
|
2010-01-17 22:48:46 +08:00
|
|
|
if test "$with_xen" != "no" ; then
|
2007-07-19 23:37:54 +08:00
|
|
|
dnl Search for the location of <xen/{linux,sys}/privcmd.h>.
|
2010-01-17 22:48:46 +08:00
|
|
|
found=
|
|
|
|
AC_CHECK_HEADERS([xen/sys/privcmd.h xen/linux/privcmd.h], [found=yes; break;], [],
|
|
|
|
[#include <stdio.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <xen/xen.h>
|
|
|
|
])
|
|
|
|
if test "x$found" != "xyes"; then
|
|
|
|
if test "$with_xen" = "yes"; then
|
|
|
|
fail=1
|
|
|
|
fi
|
|
|
|
with_xen=no
|
|
|
|
fi
|
2007-03-15 15:43:16 +08:00
|
|
|
fi
|
2010-01-17 22:48:46 +08:00
|
|
|
|
|
|
|
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
|
|
|
|
|
2008-11-05 07:37:23 +08:00
|
|
|
if test "$with_xen" = "yes"; then
|
|
|
|
AC_DEFINE_UNQUOTED([WITH_XEN], 1, [whether Xen driver is enabled])
|
|
|
|
fi
|
2010-01-17 22:48:46 +08:00
|
|
|
|
2008-11-05 07:37:23 +08:00
|
|
|
AM_CONDITIONAL([WITH_XEN], [test "$with_xen" = "yes"])
|
|
|
|
AC_SUBST([XEN_CFLAGS])
|
|
|
|
AC_SUBST([XEN_LIBS])
|
2005-11-02 21:19:10 +08:00
|
|
|
|
2008-11-25 18:44:52 +08:00
|
|
|
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
|
2009-08-05 16:57:40 +08:00
|
|
|
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 <sys/inotify.h> is required for Xen Inotify support, disabling it])
|
|
|
|
else
|
|
|
|
AC_MSG_ERROR([Header file <sys/inotify.h> is required for Xen Inotify support!])
|
|
|
|
fi
|
|
|
|
0])
|
2008-11-25 18:44:52 +08:00
|
|
|
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"])
|
|
|
|
|
2008-09-17 22:07:49 +08:00
|
|
|
dnl
|
|
|
|
dnl check for kvm headers
|
2008-09-18 16:54:23 +08:00
|
|
|
dnl
|
2008-09-17 22:07:49 +08:00
|
|
|
AC_CHECK_HEADERS([linux/kvm.h])
|
|
|
|
|
2009-08-05 16:52:14 +08:00
|
|
|
dnl
|
|
|
|
dnl check for sufficient headers for LXC
|
|
|
|
dnl
|
2010-03-25 05:31:31 +08:00
|
|
|
if test "$with_lxc" = "yes" || test "$with_lxc" = "check"; then
|
2009-08-05 16:52:14 +08:00
|
|
|
AC_CHECK_HEADER([sched.h],
|
|
|
|
dnl Header is there, check for unshare()
|
|
|
|
[
|
|
|
|
AC_TRY_LINK([#define _GNU_SOURCE
|
|
|
|
#include <sched.h>], [
|
|
|
|
unshare (1);
|
|
|
|
], [
|
|
|
|
with_lxc=yes
|
|
|
|
], [
|
|
|
|
if test "$with_lxc" = "check"; then
|
|
|
|
with_lxc=no
|
|
|
|
AC_MSG_NOTICE([Function unshare() not present in <sched.h> header but required for LXC driver, disabling it])
|
|
|
|
else
|
|
|
|
AC_MSG_ERROR([Function unshare() not present in <sched.h> header, but required for LXC driver])
|
|
|
|
fi
|
|
|
|
|
|
|
|
])
|
|
|
|
|
|
|
|
dnl Header is not there
|
|
|
|
],[
|
|
|
|
if test "$with_lxc" = "check"; then
|
|
|
|
with_lxc=no
|
|
|
|
AC_MSG_NOTICE([Header <sched.h> not found but required for LXC driver, disabling it])
|
|
|
|
else
|
|
|
|
AC_MSG_ERROR([Header <sched.h> not found but required for LXC driver])
|
|
|
|
fi
|
|
|
|
|
|
|
|
])
|
|
|
|
fi
|
2009-08-05 18:59:58 +08:00
|
|
|
if test "$with_libvirtd" = "no" ; then
|
|
|
|
with_lxc=no
|
|
|
|
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 check for kernel headers required by src/bridge.c
|
|
|
|
dnl
|
2010-03-25 05:31:31 +08:00
|
|
|
if test "$with_qemu" = "yes" || test "$with_lxc" = "yes" ; then
|
2009-08-05 18:59:58 +08:00
|
|
|
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]))
|
|
|
|
fi
|
|
|
|
|
2009-08-05 16:52:14 +08:00
|
|
|
|
2009-09-10 21:21:10 +08:00
|
|
|
dnl Need to test if pkg-config exists
|
|
|
|
PKG_PROG_PKG_CONFIG
|
|
|
|
|
2009-05-25 19:56:00 +08:00
|
|
|
dnl OpenNebula driver Compilation setting
|
|
|
|
dnl
|
|
|
|
|
2009-06-25 01:32:56 +08:00
|
|
|
XMLRPC_CFLAGS=
|
|
|
|
XMLRPC_LIBS=
|
2010-03-25 05:31:31 +08:00
|
|
|
if test "x$with_one" = "xyes" || test "x$with_one" = "xcheck"; then
|
2009-06-25 01:32:56 +08:00
|
|
|
PKG_CHECK_MODULES(XMLRPC, xmlrpc_client >= $XMLRPC_REQUIRED,
|
|
|
|
[with_one=yes], [
|
|
|
|
if test "x$with_one" = "xcheck" ; then
|
|
|
|
with_one=no
|
|
|
|
else
|
|
|
|
AC_MSG_ERROR(
|
|
|
|
[You must install XMLRPC-C >= $XMLRPC_REQUIRED to compile libvirt ONE driver])
|
|
|
|
fi
|
|
|
|
])
|
|
|
|
if test "x$with_one" = "xyes" ; then
|
|
|
|
AC_DEFINE_UNQUOTED([HAVE_XMLRPC], 1,
|
|
|
|
[whether One is used to broadcast server presence])
|
|
|
|
fi
|
2009-05-25 19:56:00 +08:00
|
|
|
fi
|
2009-06-25 01:32:56 +08:00
|
|
|
AM_CONDITIONAL([HAVE_XMLRPC], [test "x$with_one" = "xyes"])
|
|
|
|
AM_CONDITIONAL([WITH_ONE], [test "x$with_one" = "xyes"])
|
|
|
|
AC_SUBST([XMLRPC_CFLAGS])
|
|
|
|
AC_SUBST([XMLRPC_LIBS])
|
|
|
|
|
2009-05-25 19:56:00 +08:00
|
|
|
|
2006-02-17 06:50:52 +08:00
|
|
|
dnl ==========================================================================
|
|
|
|
dnl find libxml2 library, borrowed from xmlsec
|
|
|
|
dnl ==========================================================================
|
|
|
|
LIBXML_CONFIG="xml2-config"
|
|
|
|
LIBXML_CFLAGS=""
|
|
|
|
LIBXML_LIBS=""
|
|
|
|
LIBXML_FOUND="no"
|
2007-09-19 23:35:00 +08:00
|
|
|
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_ARG_WITH([libxml], AC_HELP_STRING([--with-libxml=@<:@PFX@:>@], [libxml2 location]))
|
2008-01-23 05:30:05 +08:00
|
|
|
if test "x$with_libxml" = "xno" ; then
|
2007-12-06 07:02:13 +08:00
|
|
|
AC_MSG_CHECKING(for libxml2 libraries >= $LIBXML_REQUIRED)
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_MSG_ERROR([libxml2 >= $LIBXML_REQUIRED is required for libvirt])
|
2010-03-24 16:10:13 +08:00
|
|
|
elif test "x$with_libxml" = "x" && test "x$PKG_CONFIG" != "x" ; then
|
2008-01-23 05:30:05 +08:00
|
|
|
PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= $LIBXML_REQUIRED, [LIBXML_FOUND=yes], [LIBXML_FOUND=no])
|
2006-02-17 06:50:52 +08:00
|
|
|
fi
|
2008-01-23 05:30:05 +08:00
|
|
|
if test "$LIBXML_FOUND" = "no" ; then
|
|
|
|
if test "x$with_libxml" != "x" ; then
|
2006-02-17 06:50:52 +08:00
|
|
|
LIBXML_CONFIG=$with_libxml/bin/$LIBXML_CONFIG
|
|
|
|
fi
|
2007-09-19 23:35:00 +08:00
|
|
|
AC_MSG_CHECKING(libxml2 $LIBXML_CONFIG >= $LIBXML_REQUIRED )
|
2006-02-17 06:50:52 +08:00
|
|
|
if ! $LIBXML_CONFIG --version > /dev/null 2>&1 ; then
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_MSG_ERROR([Could not find libxml2 anywhere (see config.log for details).])
|
2006-02-17 06:50:52 +08:00
|
|
|
fi
|
|
|
|
vers=`$LIBXML_CONFIG --version | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
|
2007-09-19 23:35:00 +08:00
|
|
|
minvers=`echo $LIBXML_REQUIRED | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
|
2006-02-17 06:50:52 +08:00
|
|
|
if test "$vers" -ge "$minvers" ; then
|
|
|
|
LIBXML_LIBS="`$LIBXML_CONFIG --libs`"
|
|
|
|
LIBXML_CFLAGS="`$LIBXML_CONFIG --cflags`"
|
|
|
|
LIBXML_FOUND="yes"
|
2007-09-19 23:35:00 +08:00
|
|
|
AC_MSG_RESULT(yes)
|
2006-02-17 06:50:52 +08:00
|
|
|
else
|
2008-01-23 05:30:05 +08:00
|
|
|
AC_MSG_ERROR(
|
|
|
|
[You need at least libxml2 $LIBXML_REQUIRED for this version of libvirt])
|
2006-02-17 06:50:52 +08:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_SUBST([LIBXML_CFLAGS])
|
|
|
|
AC_SUBST([LIBXML_LIBS])
|
2006-02-17 06:50:52 +08:00
|
|
|
|
2007-06-11 20:19:46 +08:00
|
|
|
dnl xmlURI structure has query_raw?
|
|
|
|
old_cflags="$CFLAGS"
|
2009-12-19 01:34:40 +08:00
|
|
|
old_libs="$LIBS"
|
2007-06-11 20:19:46 +08:00
|
|
|
CFLAGS="$CFLAGS $LIBXML_CFLAGS"
|
2009-12-19 01:34:40 +08:00
|
|
|
LIBS="$LIBS $LIBXML_LIBS"
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_CHECK_MEMBER([struct _xmlURI.query_raw],
|
|
|
|
[AC_DEFINE([HAVE_XMLURI_QUERY_RAW], [], [Have query_raw field in libxml2 xmlURI structure])],,
|
2007-06-11 20:19:46 +08:00
|
|
|
[#include <libxml/uri.h>])
|
|
|
|
CFLAGS="$old_cflags"
|
2009-12-19 01:34:40 +08:00
|
|
|
LIBS="$old_libs"
|
2007-06-11 20:19:46 +08:00
|
|
|
|
|
|
|
dnl GnuTLS library
|
2007-09-20 01:42:40 +08:00
|
|
|
GNUTLS_CFLAGS=
|
|
|
|
GNUTLS_LIBS=
|
2008-01-23 05:30:05 +08:00
|
|
|
GNUTLS_FOUND=no
|
2009-12-22 01:47:12 +08:00
|
|
|
if test -x "$PKG_CONFIG" ; then
|
2008-01-23 05:30:05 +08:00
|
|
|
PKG_CHECK_MODULES(GNUTLS, gnutls >= $GNUTLS_REQUIRED,
|
|
|
|
[GNUTLS_FOUND=yes], [GNUTLS_FOUND=no])
|
|
|
|
fi
|
|
|
|
if test "$GNUTLS_FOUND" = "no"; then
|
2008-05-22 23:40:01 +08:00
|
|
|
fail=0
|
2007-09-20 01:42:40 +08:00
|
|
|
old_libs="$LIBS"
|
2008-05-22 23:40:01 +08:00
|
|
|
AC_CHECK_HEADER([gnutls/gnutls.h], [], [fail=1])
|
|
|
|
AC_CHECK_LIB([gnutls], [gnutls_handshake],[], [fail=1], [-lgcrypt])
|
|
|
|
|
|
|
|
test $fail = 1 &&
|
|
|
|
AC_MSG_ERROR([You must install the GnuTLS library in order to compile and run libvirt])
|
|
|
|
|
2009-07-18 03:20:08 +08:00
|
|
|
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="$LIBS -lgcrypt"
|
2007-09-20 01:42:40 +08:00
|
|
|
LIBS="$old_libs"
|
2009-12-22 01:47:12 +08:00
|
|
|
else
|
|
|
|
GNUTLS_LIBS="$GNUTLS_LIBS -lgcrypt"
|
2007-09-20 01:42:40 +08:00
|
|
|
fi
|
|
|
|
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_SUBST([GNUTLS_CFLAGS])
|
|
|
|
AC_SUBST([GNUTLS_LIBS])
|
2007-06-11 20:19:46 +08:00
|
|
|
|
2007-08-07 21:02:35 +08:00
|
|
|
dnl Old versions of GnuTLS uses types like 'gnutls_session' instead
|
|
|
|
dnl of 'gnutls_session_t'. Try to detect this type if defined so
|
|
|
|
dnl that we can offer backwards compatibility.
|
2007-09-20 01:42:40 +08:00
|
|
|
old_cflags="$CFLAGS"
|
2009-12-19 01:34:40 +08:00
|
|
|
old_libs="$LIBS"
|
2007-09-20 01:42:40 +08:00
|
|
|
CFLAGS="$CFLAGS $GNUTLS_CFLAGS"
|
2009-12-19 01:34:40 +08:00
|
|
|
LIBS="$LIBS $GNUTLS_LIBS"
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_CHECK_TYPE([gnutls_session],
|
|
|
|
AC_DEFINE([GNUTLS_1_0_COMPAT],[],
|
2007-08-07 21:02:35 +08:00
|
|
|
[enable GnuTLS 1.0 compatibility macros]),,
|
|
|
|
[#include <gnutls/gnutls.h>])
|
2007-09-20 01:42:40 +08:00
|
|
|
CFLAGS="$old_cflags"
|
2009-12-19 01:34:40 +08:00
|
|
|
LIBS="$old_libs"
|
2007-08-07 21:02:35 +08:00
|
|
|
|
2007-09-19 09:56:55 +08:00
|
|
|
|
2007-12-05 23:24:15 +08:00
|
|
|
dnl Cyrus SASL
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_WITH([sasl],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-sasl], [use cyrus SASL for authentication @<:@default=check@:>@]),
|
2007-12-05 23:24:15 +08:00
|
|
|
[],
|
2008-01-23 05:30:05 +08:00
|
|
|
[with_sasl=check])
|
2007-12-05 23:24:15 +08:00
|
|
|
|
|
|
|
SASL_CFLAGS=
|
|
|
|
SASL_LIBS=
|
2008-01-23 05:30:05 +08:00
|
|
|
if test "x$with_sasl" != "xno"; then
|
2010-03-24 16:10:13 +08:00
|
|
|
if test "x$with_sasl" != "xyes" && test "x$with_sasl" != "xcheck"; then
|
2007-12-05 23:24:15 +08:00
|
|
|
SASL_CFLAGS="-I$with_sasl"
|
|
|
|
SASL_LIBS="-L$with_sasl"
|
|
|
|
fi
|
2008-05-22 23:40:01 +08:00
|
|
|
fail=0
|
2007-12-05 23:24:15 +08:00
|
|
|
old_cflags="$CFLAGS"
|
|
|
|
old_libs="$LIBS"
|
|
|
|
CFLAGS="$CFLAGS $SASL_CFLAGS"
|
|
|
|
LIBS="$LIBS $SASL_LIBS"
|
2008-01-23 05:30:05 +08:00
|
|
|
AC_CHECK_HEADER([sasl/sasl.h],[],[
|
2009-12-22 01:58:09 +08:00
|
|
|
if test "x$with_sasl" = "xcheck" ; then
|
2008-01-23 05:30:05 +08:00
|
|
|
with_sasl=no
|
|
|
|
else
|
2008-05-22 23:40:01 +08:00
|
|
|
fail=1
|
2008-01-23 05:30:05 +08:00
|
|
|
fi])
|
|
|
|
if test "x$with_sasl" != "xno" ; then
|
2009-04-01 18:40:38 +08:00
|
|
|
AC_CHECK_LIB([sasl2], [sasl_client_init],[
|
|
|
|
SASL_LIBS="$SASL_LIBS -lsasl2"
|
|
|
|
with_sasl=yes
|
|
|
|
],[
|
|
|
|
AC_CHECK_LIB([sasl], [sasl_client_init],[
|
|
|
|
SASL_LIBS="$SASL_LIBS -lsasl"
|
|
|
|
with_sasl=yes
|
|
|
|
],[
|
|
|
|
if test "x$with_sasl" = "xcheck" ; then
|
2008-01-23 05:30:05 +08:00
|
|
|
with_sasl=no
|
2009-04-01 18:40:38 +08:00
|
|
|
else
|
2008-05-22 23:40:01 +08:00
|
|
|
fail=1
|
2009-04-01 18:40:38 +08:00
|
|
|
fi
|
|
|
|
])
|
|
|
|
])
|
2008-01-23 05:30:05 +08:00
|
|
|
fi
|
2008-05-22 23:40:01 +08:00
|
|
|
test $fail = 1 &&
|
|
|
|
AC_MSG_ERROR([You must install the Cyrus SASL development package in order to compile libvirt])
|
2007-12-05 23:24:15 +08:00
|
|
|
CFLAGS="$old_cflags"
|
|
|
|
LIBS="$old_libs"
|
2008-01-23 05:30:05 +08:00
|
|
|
if test "x$with_sasl" = "xyes" ; then
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_DEFINE_UNQUOTED([HAVE_SASL], 1,
|
2008-01-23 05:30:05 +08:00
|
|
|
[whether Cyrus SASL is available for authentication])
|
|
|
|
fi
|
2007-12-05 23:24:15 +08:00
|
|
|
fi
|
2008-05-22 23:34:02 +08:00
|
|
|
AM_CONDITIONAL([HAVE_SASL], [test "x$with_sasl" = "xyes"])
|
|
|
|
AC_SUBST([SASL_CFLAGS])
|
|
|
|
AC_SUBST([SASL_LIBS])
|
2007-12-05 23:24:15 +08:00
|
|
|
|
|
|
|
|
2009-11-04 02:59:18 +08:00
|
|
|
dnl YAJL JSON library http://lloyd.github.com/yajl/
|
|
|
|
AC_ARG_WITH([yajl],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-yajl], [use YAJL for JSON parsing/formatting @<:@default=check@:>@]),
|
2009-11-04 02:59:18 +08:00
|
|
|
[],
|
|
|
|
[with_yajl=check])
|
|
|
|
|
|
|
|
YAJL_CFLAGS=
|
|
|
|
YAJL_LIBS=
|
|
|
|
if test "x$with_yajl" != "xno"; then
|
2010-03-24 16:10:13 +08:00
|
|
|
if test "x$with_yajl" != "xyes" && test "x$with_yajl" != "xcheck"; then
|
2009-11-04 02:59:18 +08:00
|
|
|
YAJL_CFLAGS="-I$with_yajl/include"
|
|
|
|
YAJL_LIBS="-L$with_yajl/lib"
|
|
|
|
fi
|
|
|
|
fail=0
|
|
|
|
old_cppflags="$CPPFLAGS"
|
2009-12-19 01:34:40 +08:00
|
|
|
old_libs="$LIBS"
|
2009-11-04 02:59:18 +08:00
|
|
|
CPPFLAGS="$CPPFLAGS $YAJL_CFLAGS"
|
2009-12-19 01:34:40 +08:00
|
|
|
LIBS="$LIBS $YAJL_LIBS"
|
2009-11-04 02:59:18 +08:00
|
|
|
AC_CHECK_HEADER([yajl/yajl_common.h],[],[
|
2009-12-08 00:51:14 +08:00
|
|
|
if test "x$with_yajl" = "xcheck" ; then
|
2009-11-04 02:59:18 +08:00
|
|
|
with_yajl=no
|
|
|
|
else
|
|
|
|
fail=1
|
|
|
|
fi])
|
|
|
|
if test "x$with_yajl" != "xno" ; then
|
|
|
|
AC_CHECK_LIB([yajl], [yajl_parse],[
|
|
|
|
YAJL_LIBS="$YAJL_LIBS -lyajl"
|
|
|
|
with_yajl=yes
|
|
|
|
],[
|
|
|
|
if test "x$with_yajl" = "xcheck" ; then
|
|
|
|
with_yajl=no
|
|
|
|
else
|
|
|
|
fail=1
|
|
|
|
fi
|
|
|
|
])
|
|
|
|
fi
|
|
|
|
test $fail = 1 &&
|
|
|
|
AC_MSG_ERROR([You must install the YAJL development package in order to compile libvirt])
|
|
|
|
CPPFLAGS="$old_cppflags"
|
2009-12-19 01:34:40 +08:00
|
|
|
LIBS="$old_libs"
|
2009-11-04 02:59:18 +08:00
|
|
|
if test "x$with_yajl" = "xyes" ; then
|
|
|
|
AC_DEFINE_UNQUOTED([HAVE_YAJL], 1,
|
|
|
|
[whether YAJL is available for JSON parsing/formatting])
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
AM_CONDITIONAL([HAVE_YAJL], [test "x$with_yajl" = "xyes"])
|
|
|
|
AC_SUBST([YAJL_CFLAGS])
|
|
|
|
AC_SUBST([YAJL_LIBS])
|
|
|
|
|
|
|
|
|
2007-12-06 02:21:27 +08:00
|
|
|
dnl PolicyKit library
|
|
|
|
POLKIT_CFLAGS=
|
|
|
|
POLKIT_LIBS=
|
2009-08-06 20:54:08 +08:00
|
|
|
PKCHECK_PATH=
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_WITH([polkit],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-polkit], [use PolicyKit for UNIX socket access checks @<:@default=check@:>@]),
|
2007-12-06 02:21:27 +08:00
|
|
|
[],
|
|
|
|
[with_polkit=check])
|
|
|
|
|
2009-08-06 20:54:08 +08:00
|
|
|
with_polkit0=no
|
|
|
|
with_polkit1=no
|
2010-03-25 05:31:31 +08:00
|
|
|
if test "x$with_polkit" = "xyes" || test "x$with_polkit" = "xcheck"; then
|
2009-08-06 20:54:08 +08:00
|
|
|
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])
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_DEFINE_UNQUOTED([HAVE_POLKIT], 1,
|
2009-08-06 20:54:08 +08:00
|
|
|
[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
|
2009-12-19 01:34:40 +08:00
|
|
|
old_LIBS=$LIBS
|
2009-08-06 20:54:08 +08:00
|
|
|
CFLAGS="$CFLAGS $POLKIT_CFLAGS"
|
2009-12-19 01:34:40 +08:00
|
|
|
LIBS="$LIBS $POLKIT_LIBS"
|
2009-08-06 20:54:08 +08:00
|
|
|
AC_CHECK_FUNCS([polkit_context_is_caller_authorized])
|
|
|
|
CFLAGS="$old_CFLAGS"
|
2009-12-19 01:34:40 +08:00
|
|
|
LIBS="$old_LIBS"
|
2009-08-06 20:54:08 +08:00
|
|
|
|
|
|
|
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"
|
2008-02-21 00:54:35 +08:00
|
|
|
fi
|
2008-01-23 05:30:05 +08:00
|
|
|
fi
|
2007-12-06 02:21:27 +08:00
|
|
|
fi
|
2008-05-22 23:34:02 +08:00
|
|
|
AM_CONDITIONAL([HAVE_POLKIT], [test "x$with_polkit" = "xyes"])
|
2009-08-06 20:54:08 +08:00
|
|
|
AM_CONDITIONAL([HAVE_POLKIT0], [test "x$with_polkit0" = "xyes"])
|
|
|
|
AM_CONDITIONAL([HAVE_POLKIT1], [test "x$with_polkit1" = "xyes"])
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_SUBST([POLKIT_CFLAGS])
|
|
|
|
AC_SUBST([POLKIT_LIBS])
|
2007-12-05 23:24:15 +08:00
|
|
|
|
2007-09-19 09:56:55 +08:00
|
|
|
dnl Avahi library
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_WITH([avahi],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-avahi], [use avahi to advertise remote daemon @<:@default=check@:>@]),
|
2007-09-19 09:56:55 +08:00
|
|
|
[],
|
|
|
|
[with_avahi=check])
|
|
|
|
|
|
|
|
AVAHI_CFLAGS=
|
|
|
|
AVAHI_LIBS=
|
2010-03-25 05:31:31 +08:00
|
|
|
if test "x$with_avahi" = "xyes" || test "x$with_avahi" = "xcheck"; then
|
2008-01-23 05:30:05 +08:00
|
|
|
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
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_DEFINE_UNQUOTED([HAVE_AVAHI], 1,
|
2008-01-23 05:30:05 +08:00
|
|
|
[whether Avahi is used to broadcast server presense])
|
|
|
|
fi
|
2007-09-19 09:56:55 +08:00
|
|
|
fi
|
2008-05-22 23:34:02 +08:00
|
|
|
AM_CONDITIONAL([HAVE_AVAHI], [test "x$with_avahi" = "xyes"])
|
|
|
|
AC_SUBST([AVAHI_CFLAGS])
|
|
|
|
AC_SUBST([AVAHI_LIBS])
|
2007-09-19 09:56:55 +08:00
|
|
|
|
2008-02-20 23:38:29 +08:00
|
|
|
dnl SELinux
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_WITH([selinux],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-selinux], [use SELinux to manage security @<:@default=check@:>@]),
|
2008-02-20 23:38:29 +08:00
|
|
|
[],
|
|
|
|
[with_selinux=check])
|
|
|
|
|
|
|
|
SELINUX_CFLAGS=
|
|
|
|
SELINUX_LIBS=
|
|
|
|
if test "$with_selinux" != "no"; then
|
|
|
|
old_cflags="$CFLAGS"
|
|
|
|
old_libs="$LIBS"
|
|
|
|
if test "$with_selinux" = "check"; then
|
|
|
|
AC_CHECK_HEADER([selinux/selinux.h],[],[with_selinux=no])
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_CHECK_LIB([selinux], [fgetfilecon],[],[with_selinux=no])
|
2008-02-20 23:38:29 +08:00
|
|
|
if test "$with_selinux" != "no"; then
|
|
|
|
with_selinux="yes"
|
|
|
|
fi
|
|
|
|
else
|
2008-05-22 23:40:01 +08:00
|
|
|
fail=0
|
|
|
|
AC_CHECK_HEADER([selinux/selinux.h],[],[fail=1])
|
|
|
|
AC_CHECK_LIB([selinux], [fgetfilecon],[],[fail=1])
|
|
|
|
test $fail = 1 &&
|
|
|
|
AC_MSG_ERROR([You must install the SELinux development package in order to compile libvirt])
|
2008-02-20 23:38:29 +08:00
|
|
|
fi
|
|
|
|
CFLAGS="$old_cflags"
|
|
|
|
LIBS="$old_libs"
|
|
|
|
fi
|
|
|
|
if test "$with_selinux" = "yes"; then
|
|
|
|
SELINUX_LIBS="-lselinux"
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_DEFINE_UNQUOTED([HAVE_SELINUX], 1, [whether SELinux is available for security])
|
2008-02-20 23:38:29 +08:00
|
|
|
fi
|
2008-05-22 23:34:02 +08:00
|
|
|
AM_CONDITIONAL([HAVE_SELINUX], [test "$with_selinux" != "no"])
|
|
|
|
AC_SUBST([SELINUX_CFLAGS])
|
|
|
|
AC_SUBST([SELINUX_LIBS])
|
2008-02-20 23:38:29 +08:00
|
|
|
|
2009-03-03 18:06:49 +08:00
|
|
|
|
|
|
|
AC_ARG_WITH([secdriver-selinux],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-secdriver-selinux], [use SELinux security driver @<:@default=check@:>@]),
|
2009-03-03 18:06:49 +08:00
|
|
|
[],
|
|
|
|
[with_secdriver_selinux=check])
|
|
|
|
|
|
|
|
if test "$with_selinux" != "yes" ; then
|
|
|
|
if test "$with_secdriver_selinux" = "check" ; then
|
|
|
|
with_secdriver_selinux=no
|
|
|
|
else
|
|
|
|
AC_MSG_ERROR([You must install the SELinux development package in order to compile libvirt])
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
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])
|
|
|
|
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 the SELinux development package in order to compile libvirt])
|
|
|
|
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"])
|
|
|
|
|
|
|
|
|
2009-10-08 22:34:22 +08:00
|
|
|
dnl AppArmor
|
|
|
|
AC_ARG_WITH([apparmor],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-apparmor], [use AppArmor to manage security @<:@default=check@:>@]),
|
2009-10-08 22:34:22 +08:00
|
|
|
[],
|
|
|
|
[with_apparmor=check])
|
|
|
|
|
|
|
|
APPARMOR_CFLAGS=
|
|
|
|
APPARMOR_LIBS=
|
|
|
|
if test "$with_apparmor" != "no"; then
|
|
|
|
old_cflags="$CFLAGS"
|
|
|
|
old_libs="$LIBS"
|
|
|
|
if test "$with_apparmor" = "check"; then
|
|
|
|
AC_CHECK_HEADER([sys/apparmor.h],[],[with_apparmor=no])
|
|
|
|
AC_CHECK_LIB([apparmor], [aa_change_profile],[],[with_apparmor=no])
|
|
|
|
AC_CHECK_LIB([apparmor], [aa_change_hat],[],[with_apparmor=no])
|
|
|
|
if test "$with_apparmor" != "no"; then
|
|
|
|
with_apparmor="yes"
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
fail=0
|
|
|
|
AC_CHECK_HEADER([sys/apparmor.h],[],[fail=1])
|
|
|
|
AC_CHECK_LIB([apparmor], [aa_change_profile],[],[fail=1])
|
|
|
|
AC_CHECK_LIB([apparmor], [aa_change_hat],[],[fail=1])
|
|
|
|
test $fail = 1 &&
|
|
|
|
AC_MSG_ERROR([You must install the AppArmor development package in order to compile libvirt])
|
|
|
|
fi
|
|
|
|
CFLAGS="$old_cflags"
|
|
|
|
LIBS="$old_libs"
|
|
|
|
fi
|
|
|
|
if test "$with_apparmor" = "yes"; then
|
|
|
|
APPARMOR_LIBS="-lapparmor"
|
|
|
|
AC_DEFINE_UNQUOTED([HAVE_APPARMOR], 1, [whether AppArmor is available for security])
|
|
|
|
AC_DEFINE_UNQUOTED([APPARMOR_DIR], "/etc/apparmor.d", [path to apparmor directory])
|
|
|
|
AC_DEFINE_UNQUOTED([APPARMOR_PROFILES_PATH], "/sys/kernel/security/apparmor/profiles", [path to kernel profiles])
|
|
|
|
fi
|
|
|
|
AM_CONDITIONAL([HAVE_APPARMOR], [test "$with_apparmor" != "no"])
|
|
|
|
AC_SUBST([APPARMOR_CFLAGS])
|
|
|
|
AC_SUBST([APPARMOR_LIBS])
|
|
|
|
|
|
|
|
|
|
|
|
AC_ARG_WITH([secdriver-apparmor],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-secdriver-apparmor], [use AppArmor security driver @<:@default=check@:>@]),
|
2009-10-08 22:34:22 +08:00
|
|
|
[],
|
|
|
|
[with_secdriver_apparmor=check])
|
|
|
|
|
|
|
|
if test "$with_apparmor" != "yes" ; then
|
|
|
|
if test "$with_secdriver_apparmor" = "check" ; then
|
|
|
|
with_secdriver_apparmor=no
|
|
|
|
else
|
|
|
|
AC_MSG_ERROR([You must install the AppArmor development package in order to compile libvirt])
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
old_cflags="$CFLAGS"
|
|
|
|
old_libs="$LIBS"
|
|
|
|
CFLAGS="$CFLAGS $APPARMOR_CFLAGS"
|
|
|
|
LIBS="$CFLAGS $APPARMOR_LIBS"
|
|
|
|
|
|
|
|
fail=0
|
|
|
|
AC_CHECK_FUNC([change_hat], [], [fail=1])
|
|
|
|
AC_CHECK_FUNC([aa_change_profile], [], [fail=1])
|
|
|
|
CFLAGS="$old_cflags"
|
|
|
|
LIBS="$old_libs"
|
|
|
|
|
|
|
|
if test "$fail" = "1" ; then
|
|
|
|
if test "$with_secdriver_apparmor" = "check" ; then
|
|
|
|
with_secdriver_apparmor=no
|
|
|
|
else
|
|
|
|
AC_MSG_ERROR([You must install the AppArmor development package in order to compile libvirt])
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
with_secdriver_apparmor=yes
|
|
|
|
AC_DEFINE_UNQUOTED([WITH_SECDRIVER_APPARMOR], 1, [whether AppArmor security driver is available])
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
AM_CONDITIONAL([WITH_SECDRIVER_APPARMOR], [test "$with_secdriver_apparmor" != "no"])
|
|
|
|
|
|
|
|
|
2009-03-03 18:06:49 +08:00
|
|
|
|
2008-05-22 23:29:50 +08:00
|
|
|
dnl NUMA lib
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_WITH([numactl],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-numactl], [use numactl for host topology info @<:@default=check@:>@]),
|
2008-05-22 23:29:50 +08:00
|
|
|
[],
|
|
|
|
[with_numactl=check])
|
|
|
|
|
|
|
|
NUMACTL_CFLAGS=
|
|
|
|
NUMACTL_LIBS=
|
2010-03-24 16:10:13 +08:00
|
|
|
if test "$with_qemu" = "yes" && test "$with_numactl" != "no"; then
|
2008-05-22 23:29:50 +08:00
|
|
|
old_cflags="$CFLAGS"
|
|
|
|
old_libs="$LIBS"
|
|
|
|
if test "$with_numactl" = "check"; then
|
|
|
|
AC_CHECK_HEADER([numa.h],[],[with_numactl=no])
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_CHECK_LIB([numa], [numa_available],[],[with_numactl=no])
|
2008-05-22 23:29:50 +08:00
|
|
|
if test "$with_numactl" != "no"; then
|
|
|
|
with_numactl="yes"
|
|
|
|
fi
|
|
|
|
else
|
2008-05-22 23:40:01 +08:00
|
|
|
fail=0
|
|
|
|
AC_CHECK_HEADER([numa.h],[],[fail=1])
|
|
|
|
AC_CHECK_LIB([numa], [numa_available],[],[fail=1])
|
|
|
|
test $fail = 1 &&
|
|
|
|
AC_MSG_ERROR([You must install the numactl development package in order to compile and run libvirt])
|
2008-05-22 23:29:50 +08:00
|
|
|
fi
|
|
|
|
CFLAGS="$old_cflags"
|
|
|
|
LIBS="$old_libs"
|
|
|
|
fi
|
|
|
|
if test "$with_numactl" = "yes"; then
|
|
|
|
NUMACTL_LIBS="-lnuma"
|
2008-05-22 23:35:51 +08:00
|
|
|
AC_DEFINE_UNQUOTED([HAVE_NUMACTL], 1, [whether numactl is available for topology info])
|
2008-05-22 23:29:50 +08:00
|
|
|
fi
|
2008-05-22 23:34:02 +08:00
|
|
|
AM_CONDITIONAL([HAVE_NUMACTL], [test "$with_numactl" != "no"])
|
|
|
|
AC_SUBST([NUMACTL_CFLAGS])
|
|
|
|
AC_SUBST([NUMACTL_LIBS])
|
2008-05-22 23:29:50 +08:00
|
|
|
|
2009-08-05 16:47:18 +08:00
|
|
|
|
nwfilter: Support for learning a VM's IP address
This patch implements support for learning a VM's IP address. It uses
the pcap library to listen on the VM's backend network interface (tap)
or the physical ethernet device (macvtap) and tries to capture packets
with source or destination MAC address of the VM and learn from DHCP
Offers, ARP traffic, or first-sent IPv4 packet what the IP address of
the VM's interface is. This then allows to instantiate the network
traffic filtering rules without the user having to provide the IP
parameter somewhere in the filter description or in the interface
description as a parameter. This only supports to detect the parameter
IP, which is for the assumed single IPv4 address of a VM. There is not
support for interfaces that may have multiple IP addresses (IP
aliasing) or IPv6 that may then require more than one valid IP address
to be detected. A VM can have multiple independent interfaces that each
uses a different IP address and in that case it will be attempted to
detect each one of the address independently.
So, when for example an interface description in the domain XML has
looked like this up to now:
<interface type='bridge'>
<source bridge='mybridge'/>
<model type='virtio'/>
<filterref filter='clean-traffic'>
<parameter name='IP' value='10.2.3.4'/>
</filterref>
</interface>
you may omit the IP parameter:
<interface type='bridge'>
<source bridge='mybridge'/>
<model type='virtio'/>
<filterref filter='clean-traffic'/>
</interface>
Internally I am walking the 'tree' of a VM's referenced network filters
and determine with the given variables which variables are missing. Now,
the above IP parameter may be missing and this causes a libvirt-internal
thread to be started that uses the pcap library's API to listen to the
backend interface (in case of macvtap to the physical interface) in an
attempt to determine the missing IP parameter. If the backend interface
disappears the thread terminates assuming the VM was brought down. In
case of a macvtap device a timeout is being used to wait for packets
from the given VM (filtering by VM's interface MAC address). If the VM's
macvtap device disappeared the thread also terminates. In all other
cases it tries to determine the IP address of the VM and will then apply
the rules late on the given interface, which would have happened
immediately if the IP parameter had been explicitly given. In case an
error happens while the firewall rules are applied, the VM's backend
interface is 'down'ed preventing it to communicate. Reasons for failure
for applying the network firewall rules may that an ebtables/iptables
command failes or OOM errors. Essentially the same failure reasons may
occur as when the firewall rules are applied immediately on VM start,
except that due to the late application of the filtering rules the VM
now is already running and cannot be hindered anymore from starting.
Bringing down the whole VM would probably be considered too drastic.
While a VM's IP address is attempted to be determined only limited
updates to network filters are allowed. In particular it is prevented
that filters are modified in such a way that they would introduce new
variables.
A caveat: The algorithm does not know which one is the appropriate IP
address of a VM. If the VM spoofs an IP address in its first ARP traffic
or IPv4 packets its filtering rules will be instantiated for this IP
address, thus 'locking' it to the found IP address. So, it's still
'safer' to explicitly provide the IP address of a VM's interface in the
filter description if it is known beforehand.
* configure.ac: detect libpcap
* libvirt.spec.in: require libpcap[-devel] if qemu is built
* src/internal.h: add the new ATTRIBUTE_PACKED define
* src/Makefile.am src/libvirt_private.syms: add the new modules and symbols
* src/nwfilter/nwfilter_learnipaddr.[ch]: new module being added
* src/nwfilter/nwfilter_driver.c src/conf/nwfilter_conf.[ch]
src/nwfilter/nwfilter_ebiptables_driver.[ch]
src/nwfilter/nwfilter_gentech_driver.[ch]: plu the new functionality in
* tests/nwfilterxml2xmltest: extend testing
2010-04-08 05:02:18 +08:00
|
|
|
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
|
|
|
|
if test "x$with_libpcap" != "xno" ; then
|
|
|
|
if test "x$with_libpcap" != "x" ; then
|
|
|
|
LIBPCAP_CONFIG=$with_libpcap/bin/$LIBPCAP_CONFIG
|
|
|
|
fi
|
|
|
|
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
|
|
|
|
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])
|
|
|
|
|
|
|
|
|
|
|
|
|
2009-08-05 16:47:18 +08:00
|
|
|
dnl
|
|
|
|
dnl Checks for the UML driver
|
|
|
|
dnl
|
|
|
|
|
2010-03-25 05:31:31 +08:00
|
|
|
if test "$with_uml" = "yes" || test "$with_uml" = "check"; then
|
2009-08-05 16:47:18 +08:00
|
|
|
AC_CHECK_HEADER([sys/inotify.h], [
|
|
|
|
with_uml=yes
|
|
|
|
], [
|
|
|
|
if test "$with_uml" = "check"; then
|
|
|
|
with_uml=no
|
|
|
|
AC_MSG_NOTICE([<sys/inotify.h> is required for the UML driver, disabling it])
|
|
|
|
else
|
|
|
|
AC_MSG_ERROR([The <sys/inotify.h> is required for the UML driver. Upgrade your libc6.])
|
|
|
|
fi
|
|
|
|
])
|
|
|
|
fi
|
2009-08-05 18:59:58 +08:00
|
|
|
if test "$with_libvirtd" = "no" ; then
|
|
|
|
with_uml=no
|
|
|
|
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"])
|
|
|
|
|
2009-08-05 16:47:18 +08:00
|
|
|
|
|
|
|
|
|
|
|
dnl
|
|
|
|
dnl libssh checks
|
|
|
|
dnl
|
|
|
|
|
2010-03-24 16:10:13 +08:00
|
|
|
if test "$with_libssh2" != "yes" && test "$with_libssh2" != "no"; then
|
2009-09-04 18:08:47 +08:00
|
|
|
libssh2_path="$with_libssh2"
|
|
|
|
elif test "$with_libssh2" = "yes"; then
|
|
|
|
libssh2_path="/usr/local/lib/"
|
|
|
|
elif test "$with_libssh2" = "no"; then
|
2009-07-24 22:17:06 +08:00
|
|
|
with_phyp="no";
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test "$with_phyp" = "check"; then
|
2009-09-09 22:21:38 +08:00
|
|
|
AC_CHECK_LIB([ssh2],[libssh2_session_startup],[
|
2009-09-04 18:08:47 +08:00
|
|
|
LIBSSH2_LIBS="$LIBSSH2_LIBS -lssh2 -L$libssh2_path"
|
2009-09-09 22:21:38 +08:00
|
|
|
AC_SUBST([LIBSSH2_LIBS])
|
|
|
|
],[
|
2009-07-24 22:17:06 +08:00
|
|
|
with_phyp="no"
|
2009-09-09 22:21:38 +08:00
|
|
|
with_libssh2="no";
|
|
|
|
],[])
|
|
|
|
|
|
|
|
if test "$with_phyp" != "no"; then
|
|
|
|
AC_CHECK_HEADERS([libssh2.h],[
|
|
|
|
with_phyp="yes"
|
|
|
|
LIBSSH2_CFLAGS="-I/usr/local/include"
|
|
|
|
AC_SUBST([LIBSSH2_CFLAGS])
|
|
|
|
],[
|
|
|
|
with_phyp="no"
|
|
|
|
with_libssh2="no";
|
|
|
|
],[
|
|
|
|
])
|
|
|
|
fi
|
2009-07-24 22:17:06 +08:00
|
|
|
|
2009-09-09 22:21:38 +08:00
|
|
|
if test "$with_phyp" != "no"; then
|
|
|
|
saved_libs="$LIBS"
|
2009-11-06 06:38:07 +08:00
|
|
|
LIBS="$LIBS -L$libssh2_path -lssh2"
|
2009-09-09 22:21:38 +08:00
|
|
|
AC_TRY_LINK([#include <libssh2.h>], [
|
|
|
|
(void) libssh2_session_block_directions(NULL);
|
|
|
|
], [
|
|
|
|
AC_DEFINE_UNQUOTED([WITH_PHYP], 1, [whether IBM HMC / IVM driver is enabled])
|
|
|
|
], [
|
|
|
|
with_phyp=no
|
|
|
|
AC_MSG_NOTICE([Function libssh2_session_block_directions() not present in your version of libssh2 but required for Phyp driver, disabling it])
|
|
|
|
])
|
|
|
|
LIBS="$saved_libs"
|
|
|
|
fi
|
2009-07-24 22:17:06 +08:00
|
|
|
elif test "$with_phyp" = "yes"; then
|
2009-09-04 18:08:47 +08:00
|
|
|
AC_CHECK_LIB([ssh2],[libssh2_session_startup],[
|
|
|
|
LIBSSH2_LIBS="$LIBSSH2_LIBS -lssh2 -L$libssh2_path"
|
|
|
|
AC_SUBST([LIBSSH2_LIBS])],[
|
2009-09-09 22:21:38 +08:00
|
|
|
AC_MSG_ERROR([You must install the libssh2 to compile Phyp driver.])
|
2009-07-24 22:17:06 +08:00
|
|
|
])
|
|
|
|
|
2009-09-04 18:08:47 +08:00
|
|
|
AC_CHECK_HEADERS([libssh2.h],[
|
|
|
|
LIBSSH2_CFLAGS="-I/usr/local/include"
|
|
|
|
AC_SUBST([LIBSSH2_CFLAGS])],[
|
2009-09-09 22:21:38 +08:00
|
|
|
AC_MSG_ERROR([Cannot find libssh2 headers. Is libssh2 installed ?])
|
2009-07-24 22:17:06 +08:00
|
|
|
],[])
|
2009-09-09 22:21:38 +08:00
|
|
|
|
|
|
|
saved_libs="$LIBS"
|
|
|
|
LIBS="$LIBS -lssh2"
|
|
|
|
AC_TRY_LINK([#include <libssh2.h>], [
|
|
|
|
(void) libssh2_session_block_directions(NULL);
|
|
|
|
], [], [
|
|
|
|
AC_MSG_ERROR([Function libssh2_session_block_directions() not present in your version of libssh2. Need >= 1.0])
|
|
|
|
])
|
|
|
|
LIBS="$saved_libs"
|
|
|
|
|
2009-07-24 22:17:06 +08:00
|
|
|
AC_DEFINE_UNQUOTED([WITH_PHYP], 1,
|
|
|
|
[whether IBM HMC / IVM driver is enabled])
|
|
|
|
fi
|
|
|
|
AM_CONDITIONAL([WITH_PHYP],[test "$with_phyp" = "yes"])
|
2009-06-29 19:33:13 +08:00
|
|
|
|
|
|
|
dnl libcap-ng
|
|
|
|
AC_ARG_WITH([capng],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-capng], [use libcap-ng to reduce libvirtd privileges @<:@default=check@:>@]),
|
2009-06-29 19:33:13 +08:00
|
|
|
[],
|
|
|
|
[with_capng=check])
|
|
|
|
|
|
|
|
dnl
|
|
|
|
dnl This check looks for 'capng_updatev' since that was
|
|
|
|
dnl introduced in 0.4.0 release which need as minimum
|
|
|
|
dnl
|
|
|
|
CAPNG_CFLAGS=
|
|
|
|
CAPNG_LIBS=
|
2010-03-24 16:10:13 +08:00
|
|
|
if test "$with_qemu" = "yes" && test "$with_capng" != "no"; then
|
2009-06-29 19:33:13 +08:00
|
|
|
old_cflags="$CFLAGS"
|
|
|
|
old_libs="$LIBS"
|
|
|
|
if test "$with_capng" = "check"; then
|
|
|
|
AC_CHECK_HEADER([cap-ng.h],[],[with_capng=no])
|
|
|
|
AC_CHECK_LIB([cap-ng], [capng_updatev],[],[with_capng=no])
|
|
|
|
if test "$with_capng" != "no"; then
|
|
|
|
with_capng="yes"
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
fail=0
|
|
|
|
AC_CHECK_HEADER([cap-ng.h],[],[fail=1])
|
|
|
|
AC_CHECK_LIB([cap-ng], [capng_updatev],[],[fail=1])
|
|
|
|
test $fail = 1 &&
|
|
|
|
AC_MSG_ERROR([You must install the capng >= 0.4.0 development package in order to compile and run libvirt])
|
|
|
|
fi
|
|
|
|
CFLAGS="$old_cflags"
|
|
|
|
LIBS="$old_libs"
|
|
|
|
fi
|
|
|
|
if test "$with_capng" = "yes"; then
|
|
|
|
CAPNG_LIBS="-lcap-ng"
|
|
|
|
AC_DEFINE_UNQUOTED([HAVE_CAPNG], 1, [whether capng is available for privilege reduction])
|
|
|
|
fi
|
|
|
|
AM_CONDITIONAL([HAVE_CAPNG], [test "$with_capng" != "no"])
|
|
|
|
AC_SUBST([CAPNG_CFLAGS])
|
|
|
|
AC_SUBST([CAPNG_LIBS])
|
|
|
|
|
|
|
|
|
|
|
|
|
2005-12-08 18:23:34 +08:00
|
|
|
dnl virsh libraries
|
2007-12-05 02:27:52 +08:00
|
|
|
AC_CHECK_HEADERS([readline/readline.h])
|
2007-12-06 19:42:26 +08:00
|
|
|
|
|
|
|
# Check for readline.
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_CHECK_LIB([readline], [readline],
|
2007-12-06 19:42:26 +08:00
|
|
|
[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=
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_SEARCH_LIBS([tgetent], [ncurses curses termcap termlib])
|
2007-12-06 19:42:26 +08:00
|
|
|
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.
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_CHECK_LIB([readline], [rl_initialize],
|
2007-12-06 19:42:26 +08:00
|
|
|
[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
|
2007-12-06 18:24:52 +08:00
|
|
|
else
|
2007-12-06 19:42:26 +08:00
|
|
|
READLINE_CFLAGS=
|
2007-12-06 18:24:52 +08:00
|
|
|
fi
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_SUBST([READLINE_CFLAGS])
|
|
|
|
AC_SUBST([VIRSH_LIBS])
|
2005-12-08 18:23:34 +08:00
|
|
|
|
2008-02-20 23:42:30 +08:00
|
|
|
|
2008-10-10 21:57:13 +08:00
|
|
|
AC_ARG_WITH([network],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-network], [with virtual network driver @<:@default=yes@:>@]),[],[with_network=yes])
|
2008-10-10 21:57:13 +08:00
|
|
|
if test "$with_libvirtd" = "no" ; 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"])
|
|
|
|
|
2009-02-17 18:23:19 +08:00
|
|
|
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"])
|
2008-10-10 21:57:13 +08:00
|
|
|
|
2009-05-20 22:26:49 +08:00
|
|
|
dnl netcf library
|
|
|
|
AC_ARG_WITH([netcf],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-netcf], [libnetcf support to configure physical host network interfaces @<:@default=check@:>@]),
|
2009-05-20 22:26:49 +08:00
|
|
|
[], [with_netcf=check])
|
|
|
|
|
|
|
|
NETCF_CFLAGS=
|
|
|
|
NETCF_LIBS=
|
2010-03-25 05:31:31 +08:00
|
|
|
if test "$with_netcf" = "yes" || test "$with_netcf" = "check"; then
|
2009-05-20 22:26:49 +08:00
|
|
|
PKG_CHECK_MODULES(NETCF, netcf >= $NETCF_REQUIRED,
|
|
|
|
[with_netcf=yes], [
|
|
|
|
if test "$with_netcf" = "check" ; then
|
|
|
|
with_netcf=no
|
|
|
|
else
|
|
|
|
AC_MSG_ERROR(
|
|
|
|
[You must install libnetcf >= $NETCF_REQUIRED to compile libvirt])
|
|
|
|
fi
|
|
|
|
])
|
|
|
|
if test "$with_netcf" = "yes" ; then
|
|
|
|
AC_DEFINE_UNQUOTED([WITH_NETCF], 1,
|
|
|
|
[whether libnetcf is available to configure physical host network interfaces])
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
AM_CONDITIONAL([WITH_NETCF], [test "$with_netcf" = "yes"])
|
|
|
|
AC_SUBST([NETCF_CFLAGS])
|
|
|
|
AC_SUBST([NETCF_LIBS])
|
2008-02-20 23:42:30 +08:00
|
|
|
|
2009-09-14 20:31:23 +08:00
|
|
|
|
|
|
|
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"])
|
|
|
|
|
2010-03-26 01:46:09 +08:00
|
|
|
with_nwfilter=yes
|
|
|
|
if test "$with_libvirtd" = "no"; 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"])
|
|
|
|
|
2009-09-14 20:31:23 +08:00
|
|
|
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_WITH([storage-fs],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-storage-fs], [with FileSystem backend for the storage driver @<:@default=check@:>@]),[],[with_storage_fs=check])
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_WITH([storage-lvm],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-storage-lvm], [with LVM backend for the storage driver @<:@default=check@:>@]),[],[with_storage_lvm=check])
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_WITH([storage-iscsi],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-storage-iscsi], [with iSCSI backend for the storage driver @<:@default=check@:>@]),[],[with_storage_iscsi=check])
|
2009-04-02 00:03:22 +08:00
|
|
|
AC_ARG_WITH([storage-scsi],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-storage-scsi], [with SCSI backend for the storage driver @<:@default=check@:>@]),[],[with_storage_scsi=check])
|
2009-09-08 21:47:45 +08:00
|
|
|
AC_ARG_WITH([storage-mpath],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-storage-mpath], [with mpath backend for the storage driver @<:@default=check@:>@]),[],[with_storage_mpath=check])
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_WITH([storage-disk],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-storage-disk], [with GPartd Disk backend for the storage driver @<:@default=check@:>@]),[],[with_storage_disk=check])
|
2008-02-20 23:42:30 +08:00
|
|
|
|
2008-09-05 20:03:45 +08:00
|
|
|
with_storage_dir=yes
|
|
|
|
if test "$with_libvirtd" = "no"; then
|
|
|
|
with_storage_dir=no
|
|
|
|
with_storage_fs=no
|
|
|
|
with_storage_lvm=no
|
|
|
|
with_storage_iscsi=no
|
2009-04-02 00:03:22 +08:00
|
|
|
with_storage_scsi=no
|
2009-09-08 21:47:45 +08:00
|
|
|
with_storage_mpath=no
|
2008-09-05 20:03:45 +08:00
|
|
|
with_storage_disk=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"])
|
|
|
|
|
|
|
|
|
2010-03-25 05:31:31 +08:00
|
|
|
if test "$with_storage_fs" = "yes" || test "$with_storage_fs" = "check"; then
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_PATH_PROG([MOUNT], [mount], [], [$PATH:/sbin:/usr/sbin])
|
|
|
|
AC_PATH_PROG([UMOUNT], [umount], [], [$PATH:/sbin:/usr/sbin])
|
2008-02-20 23:42:30 +08:00
|
|
|
if test "$with_storage_fs" = "yes" ; then
|
2008-05-22 23:34:02 +08:00
|
|
|
if test -z "$MOUNT" ; then AC_MSG_ERROR([We need mount for FS storage driver]) ; fi
|
2008-05-22 23:40:01 +08:00
|
|
|
if test -z "$UMOUNT" ; then AC_MSG_ERROR([We need umount for FS storage driver]) ; fi
|
2008-02-20 23:42:30 +08:00
|
|
|
else
|
|
|
|
if test -z "$MOUNT" ; then with_storage_fs=no ; fi
|
|
|
|
if test -z "$UMOUNT" ; 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
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_DEFINE_UNQUOTED([WITH_STORAGE_FS], 1, [whether FS backend for storage driver is enabled])
|
2008-02-20 23:42:30 +08:00
|
|
|
AC_DEFINE_UNQUOTED([MOUNT],["$MOUNT"],
|
|
|
|
[Location or name of the mount program])
|
|
|
|
AC_DEFINE_UNQUOTED([UMOUNT],["$UMOUNT"],
|
|
|
|
[Location or name of the mount program])
|
|
|
|
fi
|
|
|
|
fi
|
2008-05-22 23:34:02 +08:00
|
|
|
AM_CONDITIONAL([WITH_STORAGE_FS], [test "$with_storage_fs" = "yes"])
|
2008-08-28 04:05:58 +08:00
|
|
|
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
|
2008-02-20 23:42:30 +08:00
|
|
|
|
2010-03-25 05:31:31 +08:00
|
|
|
if test "$with_storage_lvm" = "yes" || test "$with_storage_lvm" = "check"; then
|
2008-05-22 23:34:02 +08:00
|
|
|
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([VGCHANGE], [vgchange], [], [$PATH:/sbin:/usr/sbin])
|
2008-11-05 19:41:43 +08:00
|
|
|
AC_PATH_PROG([VGSCAN], [vgscan], [], [$PATH:/sbin:/usr/sbin])
|
2008-05-22 23:34:02 +08:00
|
|
|
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])
|
2008-02-20 23:45:33 +08:00
|
|
|
|
|
|
|
if test "$with_storage_lvm" = "yes" ; then
|
2008-05-22 23:34:02 +08:00
|
|
|
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 "$VGCHANGE" ; then AC_MSG_ERROR([We need vgchange for LVM storage driver]) ; fi
|
2008-11-05 19:41:43 +08:00
|
|
|
if test -z "$VGSCAN" ; then AC_MSG_ERROR([We need vgscan for LVM storage driver]) ; fi
|
2008-05-22 23:34:02 +08:00
|
|
|
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
|
2008-02-20 23:45:33 +08:00
|
|
|
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
|
2008-11-05 19:41:43 +08:00
|
|
|
if test -z "$VGCHANGE" ; then with_storage_lvm=no ; fi
|
|
|
|
if test -z "$VGSCAN" ; then with_storage_lvm=no ; fi
|
2008-02-20 23:45:33 +08:00
|
|
|
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
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_DEFINE_UNQUOTED([WITH_STORAGE_LVM], 1, [whether LVM backend for storage driver is enabled])
|
2008-02-20 23:45:33 +08:00
|
|
|
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 pvcreate program])
|
|
|
|
AC_DEFINE_UNQUOTED([VGREMOVE],["$VGREMOVE"],[Location of vgcreate program])
|
|
|
|
AC_DEFINE_UNQUOTED([LVREMOVE],["$LVREMOVE"],[Location of lvcreate program])
|
|
|
|
AC_DEFINE_UNQUOTED([VGCHANGE],["$VGCHANGE"],[Location of vgchange program])
|
2008-11-05 19:41:43 +08:00
|
|
|
AC_DEFINE_UNQUOTED([VGSCAN],["$VGSCAN"],[Location of vgscan program])
|
2008-02-20 23:45:33 +08:00
|
|
|
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
|
2008-05-22 23:34:02 +08:00
|
|
|
AM_CONDITIONAL([WITH_STORAGE_LVM], [test "$with_storage_lvm" = "yes"])
|
2008-02-20 23:45:33 +08:00
|
|
|
|
|
|
|
|
2008-02-20 23:49:25 +08:00
|
|
|
|
2010-03-25 05:31:31 +08:00
|
|
|
if test "$with_storage_iscsi" = "yes" || test "$with_storage_iscsi" = "check"; then
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_PATH_PROG([ISCSIADM], [iscsiadm], [], [$PATH:/sbin:/usr/sbin])
|
2008-02-20 23:49:25 +08:00
|
|
|
if test "$with_storage_iscsi" = "yes" ; then
|
2008-05-22 23:34:02 +08:00
|
|
|
if test -z "$ISCSIADM" ; then AC_MSG_ERROR([We need iscsiadm for iSCSI storage driver]) ; fi
|
2008-02-20 23:49:25 +08:00
|
|
|
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
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_DEFINE_UNQUOTED([WITH_STORAGE_ISCSI], 1, [whether iSCSI backend for storage driver is enabled])
|
2008-02-20 23:49:25 +08:00
|
|
|
AC_DEFINE_UNQUOTED([ISCSIADM],["$ISCSIADM"],[Location of iscsiadm program])
|
|
|
|
fi
|
|
|
|
fi
|
2008-05-22 23:34:02 +08:00
|
|
|
AM_CONDITIONAL([WITH_STORAGE_ISCSI], [test "$with_storage_iscsi" = "yes"])
|
2008-02-20 23:49:25 +08:00
|
|
|
|
2009-04-02 00:03:22 +08:00
|
|
|
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
|
2009-04-03 02:42:33 +08:00
|
|
|
AM_CONDITIONAL([WITH_STORAGE_SCSI], [test "$with_storage_scsi" = "yes"])
|
2008-02-20 23:49:25 +08:00
|
|
|
|
2009-09-08 21:47:45 +08:00
|
|
|
if test "$with_storage_mpath" = "check"; then
|
|
|
|
with_storage_mpath=yes
|
|
|
|
|
|
|
|
AC_DEFINE_UNQUOTED([WITH_STORAGE_MPATH], 1,
|
|
|
|
[whether mpath backend for storage driver is enabled])
|
|
|
|
fi
|
|
|
|
AM_CONDITIONAL([WITH_STORAGE_MPATH], [test "$with_storage_mpath" = "yes"])
|
|
|
|
|
|
|
|
if test "$with_storage_mpath" = "yes"; then
|
|
|
|
DEVMAPPER_CFLAGS=
|
|
|
|
DEVMAPPER_LIBS=
|
2009-10-30 21:44:50 +08:00
|
|
|
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_HEADER([libdevmapper.h],,[DEVMAPPER_FOUND=no])
|
|
|
|
AC_CHECK_LIB([devmapper], [dm_task_run],,[DEVMAPPER_FOUND=no])
|
|
|
|
DEVMAPPER_LIBS="-ldevmapper"
|
|
|
|
LIBS="$save_LIBS"
|
|
|
|
CFLAGS="$save_CFLAGS"
|
|
|
|
fi
|
|
|
|
if test "$DEVMAPPER_FOUND" = "no" ; then
|
|
|
|
AC_MSG_ERROR([You must install device-mapper-devel/libdevmapper >= $DEVMAPPER_REQUIRED to compile libvirt])
|
|
|
|
fi
|
|
|
|
|
2009-09-08 21:47:45 +08:00
|
|
|
fi
|
|
|
|
AC_SUBST([DEVMAPPER_CFLAGS])
|
|
|
|
AC_SUBST([DEVMAPPER_LIBS])
|
2008-02-20 23:52:17 +08:00
|
|
|
|
|
|
|
LIBPARTED_CFLAGS=
|
|
|
|
LIBPARTED_LIBS=
|
2010-03-25 05:31:31 +08:00
|
|
|
if test "$with_storage_disk" = "yes" || test "$with_storage_disk" = "check"; then
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_PATH_PROG([PARTED], [parted], [], [$PATH:/sbin:/usr/sbin])
|
2008-05-30 03:23:17 +08:00
|
|
|
if test -z "$PARTED" ; then
|
|
|
|
with_storage_disk=no
|
|
|
|
PARTED_FOUND=no
|
|
|
|
else
|
|
|
|
PARTED_FOUND=yes
|
|
|
|
fi
|
2008-02-20 23:52:17 +08:00
|
|
|
|
2010-03-24 16:10:13 +08:00
|
|
|
if test "$with_storage_disk" != "no" && test "x$PKG_CONFIG" != "x" ; then
|
2008-02-20 23:52:17 +08:00
|
|
|
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
|
2008-05-22 23:34:02 +08:00
|
|
|
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])
|
2008-02-20 23:52:17 +08:00
|
|
|
LIBPARTED_LIBS="-luuid -lparted"
|
|
|
|
LIBS="$save_LIBS"
|
|
|
|
CFLAGS="$save_CFLAGS"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test "$PARTED_FOUND" = "no" ; then
|
|
|
|
if test "$with_storage_disk" = "yes" ; then
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_MSG_ERROR([We need parted for disk storage driver])
|
2008-02-20 23:52:17 +08:00
|
|
|
else
|
|
|
|
with_storage_disk=no
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
with_storage_disk=yes
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test "$with_storage_disk" = "yes"; then
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_DEFINE_UNQUOTED([WITH_STORAGE_DISK], 1, [whether Disk backend for storage driver is enabled])
|
2008-02-20 23:52:17 +08:00
|
|
|
AC_DEFINE_UNQUOTED([PARTED],["$PARTED"], [Location or name of the parted program])
|
|
|
|
fi
|
|
|
|
fi
|
2008-05-22 23:34:02 +08:00
|
|
|
AM_CONDITIONAL([WITH_STORAGE_DISK], [test "$with_storage_disk" = "yes"])
|
|
|
|
AC_SUBST([LIBPARTED_CFLAGS])
|
|
|
|
AC_SUBST([LIBPARTED_LIBS])
|
2008-02-20 23:52:17 +08:00
|
|
|
|
2009-07-24 04:21:08 +08:00
|
|
|
dnl
|
2010-03-14 19:11:51 +08:00
|
|
|
dnl check for libcurl (ESX/XenAPI)
|
2009-07-24 04:21:08 +08:00
|
|
|
dnl
|
|
|
|
|
|
|
|
LIBCURL_CFLAGS=""
|
|
|
|
LIBCURL_LIBS=""
|
|
|
|
|
2010-03-25 05:31:31 +08:00
|
|
|
if test "$with_esx" = "yes" || test "$with_esx" = "check" || test "$with_xenapi" = "yes" || test "$with_xenapi" = "check"; then
|
2009-08-05 16:43:37 +08:00
|
|
|
PKG_CHECK_MODULES(LIBCURL, libcurl >= $LIBCURL_REQUIRED, [
|
2010-03-14 19:11:51 +08:00
|
|
|
if test "$with_esx" = "check"; then
|
|
|
|
with_esx=yes
|
|
|
|
fi
|
|
|
|
|
|
|
|
if test "$with_xenapi" = "check"; then
|
|
|
|
with_xenapi=yes
|
|
|
|
fi
|
2009-08-05 16:43:37 +08:00
|
|
|
], [
|
|
|
|
if test "$with_esx" = "check"; then
|
|
|
|
with_esx=no
|
2010-03-14 19:11:51 +08:00
|
|
|
AC_MSG_NOTICE([libcurl is required for the ESX driver, disabling it])
|
|
|
|
elif test "$with_esx" = "yes"; then
|
2009-08-05 16:43:37 +08:00
|
|
|
AC_MSG_ERROR([libcurl >= $LIBCURL_REQUIRED is required for the ESX driver])
|
|
|
|
fi
|
2010-03-14 19:11:51 +08:00
|
|
|
|
|
|
|
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
|
2009-08-05 16:43:37 +08:00
|
|
|
])
|
2009-07-24 04:21:08 +08:00
|
|
|
fi
|
2010-03-14 19:11:51 +08:00
|
|
|
|
|
|
|
|
2009-08-05 18:59:58 +08:00
|
|
|
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"])
|
2009-07-24 04:21:08 +08:00
|
|
|
|
2010-03-14 19:11:51 +08:00
|
|
|
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"])
|
|
|
|
|
|
|
|
|
2009-07-24 04:21:08 +08:00
|
|
|
AC_SUBST([LIBCURL_CFLAGS])
|
|
|
|
AC_SUBST([LIBCURL_LIBS])
|
2008-02-20 23:52:17 +08:00
|
|
|
|
2005-12-20 00:34:11 +08:00
|
|
|
dnl
|
|
|
|
dnl check for python
|
|
|
|
dnl
|
|
|
|
|
2009-10-02 23:19:47 +08:00
|
|
|
AC_ARG_WITH([python],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-python], [Build python bindings @<:@default=yes@:>@]),[],[with_python=yes])
|
2009-10-02 23:19:47 +08:00
|
|
|
|
2010-01-08 04:07:42 +08:00
|
|
|
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
|
|
|
|
|
2005-12-20 00:34:11 +08:00
|
|
|
PYTHON_VERSION=
|
|
|
|
PYTHON_INCLUDES=
|
|
|
|
if test "$with_python" != "no" ; then
|
|
|
|
if test -x "$with_python/bin/python"
|
|
|
|
then
|
2009-12-06 23:05:33 +08:00
|
|
|
AC_MSG_NOTICE(Found python in $with_python/bin/python)
|
2005-12-20 00:34:11 +08:00
|
|
|
PYTHON="$with_python/bin/python"
|
2009-12-06 23:05:33 +08:00
|
|
|
with_python=yes
|
2005-12-20 00:34:11 +08:00
|
|
|
else
|
2009-12-06 23:05:33 +08:00
|
|
|
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
|
2005-12-20 00:34:11 +08:00
|
|
|
fi
|
2009-12-06 23:05:33 +08:00
|
|
|
|
|
|
|
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_NOTICE([Could not find python$PYTHON_VERSION/Python.h, disabling bindings])
|
|
|
|
with_python=no
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
AC_MSG_NOTICE([Could not find python interpreter, disabling bindings])
|
|
|
|
with_python=no
|
|
|
|
fi
|
2005-12-20 00:34:11 +08:00
|
|
|
else
|
2009-12-06 23:05:33 +08:00
|
|
|
AC_MSG_NOTICE([Could not find python in $with_python, disabling bindings])
|
|
|
|
with_python=no
|
2005-12-20 00:34:11 +08:00
|
|
|
fi
|
|
|
|
fi
|
2009-12-06 23:05:33 +08:00
|
|
|
AM_CONDITIONAL([WITH_PYTHON], [test "$with_python" = "yes"])
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_SUBST([PYTHON_VERSION])
|
|
|
|
AC_SUBST([PYTHON_INCLUDES])
|
2009-12-06 23:05:33 +08:00
|
|
|
|
|
|
|
|
2005-12-20 00:34:11 +08:00
|
|
|
|
2007-02-07 21:41:44 +08:00
|
|
|
AC_MSG_CHECKING([whether this host is running a Xen kernel])
|
|
|
|
RUNNING_XEN=
|
|
|
|
if test -d /proc/sys/xen
|
|
|
|
then
|
|
|
|
RUNNING_XEN=yes
|
|
|
|
else
|
|
|
|
RUNNING_XEN=no
|
|
|
|
fi
|
|
|
|
AC_MSG_RESULT($RUNNING_XEN)
|
|
|
|
|
|
|
|
AC_MSG_CHECKING([If XenD UNIX socket /var/run/xend/xmlrpc.sock is accessible])
|
|
|
|
RUNNING_XEND=
|
|
|
|
if test -S /var/run/xend/xmlrpc.sock
|
|
|
|
then
|
|
|
|
RUNNING_XEND=yes
|
|
|
|
else
|
|
|
|
RUNNING_XEND=no
|
|
|
|
fi
|
|
|
|
AC_MSG_RESULT($RUNNING_XEND)
|
|
|
|
|
2010-03-24 16:10:13 +08:00
|
|
|
AM_CONDITIONAL([ENABLE_XEN_TESTS], [test "$RUNNING_XEN" != "no" && test "$RUNNING_XEND" != "no"])
|
2007-02-07 21:41:44 +08:00
|
|
|
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_ENABLE([test-coverage],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--enable-test-coverage], [turn on code coverage instrumentation @<:@default=no@:>@]),
|
2007-02-14 10:12:41 +08:00
|
|
|
[case "${enableval}" in
|
|
|
|
yes|no) ;;
|
|
|
|
*) AC_MSG_ERROR([bad value ${enableval} for test-coverage option]) ;;
|
|
|
|
esac],
|
|
|
|
[enableval=no])
|
2008-05-29 23:13:07 +08:00
|
|
|
enable_coverage=$enableval
|
2007-02-14 10:12:41 +08:00
|
|
|
|
2008-05-29 23:13:07 +08:00
|
|
|
if test "${enable_coverage}" = yes; then
|
2007-02-14 10:12:41 +08:00
|
|
|
gl_COMPILER_FLAGS(-fprofile-arcs)
|
|
|
|
gl_COMPILER_FLAGS(-ftest-coverage)
|
|
|
|
AC_SUBST([COVERAGE_CFLAGS], [$COMPILER_FLAGS])
|
|
|
|
AC_SUBST([COVERAGE_LDFLAGS], [$COMPILER_FLAGS])
|
|
|
|
COMPILER_FLAGS=
|
|
|
|
fi
|
|
|
|
|
2008-05-29 23:13:07 +08:00
|
|
|
AC_ARG_ENABLE([test-oom],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--enable-test-oom], [memory allocation failure checking @<:@default=no@:>@]),
|
2008-05-29 23:13:07 +08:00
|
|
|
[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
|
|
|
|
|
2009-05-19 18:17:17 +08:00
|
|
|
|
|
|
|
AC_ARG_ENABLE([test-locking],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--enable-test-locking], [thread locking tests using CIL @<:@default=no@:>@]),
|
2009-05-19 18:17:17 +08:00
|
|
|
[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"])
|
|
|
|
|
2007-11-26 19:52:38 +08:00
|
|
|
dnl Enable building the proxy?
|
2007-12-06 03:11:01 +08:00
|
|
|
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_ARG_WITH([xen-proxy],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-xen-proxy], [add XEN setuid proxy support @<:@default=auto@:>@]),[],[with_xen_proxy=auto])
|
2007-12-06 03:11:01 +08:00
|
|
|
|
|
|
|
AC_MSG_CHECKING([if Xen setuid proxy is needed])
|
|
|
|
if test "$with_xen_proxy" = "auto"; then
|
|
|
|
if test "$with_polkit" = "yes"; then
|
|
|
|
with_xen_proxy="no"
|
|
|
|
else
|
|
|
|
with_xen_proxy="yes"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
if test "$with_xen" != "yes"; then
|
|
|
|
with_xen_proxy="no"
|
|
|
|
fi
|
|
|
|
AC_MSG_RESULT([$with_xen_proxy])
|
|
|
|
|
2008-05-22 23:34:02 +08:00
|
|
|
AM_CONDITIONAL([WITH_PROXY],[test "$with_xen_proxy" = "yes"])
|
2008-03-18 01:30:48 +08:00
|
|
|
if test "$with_xen_proxy" = "yes"; then
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_DEFINE([WITH_PROXY], 1, [Whether Xen proxy is enabled])
|
2008-03-18 01:30:48 +08:00
|
|
|
fi
|
2007-02-14 10:12:41 +08:00
|
|
|
|
2007-12-07 00:34:48 +08:00
|
|
|
dnl Enable building libvirtd?
|
2008-05-22 23:34:02 +08:00
|
|
|
AM_CONDITIONAL([WITH_LIBVIRTD],[test "x$with_libvirtd" = "xyes"])
|
2007-12-07 00:34:48 +08:00
|
|
|
|
2007-11-26 19:52:38 +08:00
|
|
|
dnl Check for gettext
|
2006-09-21 23:24:37 +08:00
|
|
|
AM_GNU_GETTEXT_VERSION([0.14.1])
|
|
|
|
AM_GNU_GETTEXT([external])
|
2010-02-24 17:53:44 +08:00
|
|
|
dnl Since we're using such an old version of gettext, we must also define
|
|
|
|
dnl this symbol, in order to make the autopoint-supplied Makefile.in.in
|
|
|
|
dnl work properly.
|
|
|
|
AC_SUBST([MKINSTALLDIRS], ["\$(top_builddir)/$ac_aux_dir/mkinstalldirs"])
|
|
|
|
|
2008-10-22 21:55:15 +08:00
|
|
|
ALL_LINGUAS=`cd "$srcdir/po" > /dev/null && ls *.po | sed 's+\.po$++'`
|
2006-09-21 23:24:37 +08:00
|
|
|
|
2007-11-30 01:44:01 +08:00
|
|
|
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=
|
2008-01-06 00:06:36 +08:00
|
|
|
MINGW_EXTRA_LDFLAGS=
|
2010-03-17 06:54:22 +08:00
|
|
|
WIN32_EXTRA_CFLAGS=
|
2007-11-30 01:44:01 +08:00
|
|
|
case "$host" in
|
|
|
|
*-*-cygwin*)
|
|
|
|
CYGWIN_EXTRA_LDFLAGS="-no-undefined"
|
|
|
|
CYGWIN_EXTRA_LIBADD="${INTLLIBS}"
|
|
|
|
if test "x$PYTHON_VERSION" != "x"; then
|
|
|
|
CYGWIN_EXTRA_PYTHON_LIBADD="-L/usr/lib/python${PYTHON_VERSION}/config -lpython${PYTHON_VERSION}"
|
|
|
|
fi
|
|
|
|
;;
|
2008-01-06 00:06:36 +08:00
|
|
|
*-*-mingw*)
|
|
|
|
MINGW_EXTRA_LDFLAGS="-no-undefined"
|
|
|
|
;;
|
2007-11-30 01:44:01 +08:00
|
|
|
esac
|
2010-03-17 06:54:22 +08:00
|
|
|
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
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_SUBST([CYGWIN_EXTRA_LDFLAGS])
|
|
|
|
AC_SUBST([CYGWIN_EXTRA_LIBADD])
|
|
|
|
AC_SUBST([CYGWIN_EXTRA_PYTHON_LIBADD])
|
|
|
|
AC_SUBST([MINGW_EXTRA_LDFLAGS])
|
2010-03-17 06:54:22 +08:00
|
|
|
AC_SUBST([WIN32_EXTRA_CFLAGS])
|
2007-11-30 01:44:01 +08:00
|
|
|
|
2008-10-16 02:39:34 +08:00
|
|
|
|
2010-04-08 17:52:46 +08:00
|
|
|
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" != ""])
|
2008-11-21 20:16:08 +08:00
|
|
|
|
|
|
|
|
|
|
|
dnl Driver-Modules library
|
|
|
|
AC_ARG_WITH([driver-modules],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-driver-modules], [build drivers as loadable modules @<:@default=no@:>@]),
|
2008-11-21 20:16:08 +08:00
|
|
|
[],
|
|
|
|
[with_driver_modules=no])
|
|
|
|
|
2010-02-24 19:04:27 +08:00
|
|
|
DRIVER_MODULE_CFLAGS=
|
|
|
|
DRIVER_MODULE_LIBS=
|
2008-11-21 20:16:08 +08:00
|
|
|
if test "x$with_driver_modules" = "xyes" ; then
|
|
|
|
old_cflags="$CFLAGS"
|
|
|
|
old_libs="$LIBS"
|
|
|
|
fail=0
|
|
|
|
AC_CHECK_HEADER([dlfcn.h],[],[fail=1])
|
2010-03-04 23:45:02 +08:00
|
|
|
AC_SEARCH_LIBS([dlopen], [dl], [], [fail=1])
|
2008-11-21 20:16:08 +08:00
|
|
|
test $fail = 1 &&
|
|
|
|
AC_MSG_ERROR([You must have dlfcn.h / dlopen() support to build driver modules])
|
|
|
|
|
|
|
|
CFLAGS="$old_cflags"
|
|
|
|
LIBS="$old_libs"
|
|
|
|
fi
|
|
|
|
if test "$with_driver_modules" = "yes"; then
|
2010-02-24 19:04:27 +08:00
|
|
|
DRIVER_MODULE_CFLAGS="-export-dynamic"
|
2010-03-04 23:45:02 +08:00
|
|
|
case $ac_cv_search_dlopen in
|
|
|
|
no*) DRIVER_MODULE_LIBS= ;;
|
|
|
|
*) DRIVER_MODULE_LIBS=$ac_cv_search_dlopen ;;
|
|
|
|
esac
|
2008-11-21 20:16:08 +08:00
|
|
|
AC_DEFINE_UNQUOTED([WITH_DRIVER_MODULES], 1, [whether to build drivers as modules])
|
|
|
|
fi
|
|
|
|
AM_CONDITIONAL([WITH_DRIVER_MODULES], [test "$with_driver_modules" != "no"])
|
2010-02-24 19:04:27 +08:00
|
|
|
AC_SUBST([DRIVER_MODULE_CFLAGS])
|
|
|
|
AC_SUBST([DRIVER_MODULE_LIBS])
|
2008-11-21 20:16:08 +08:00
|
|
|
|
|
|
|
|
2008-02-29 01:07:37 +08:00
|
|
|
# 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-.}
|
2008-05-22 23:34:02 +08:00
|
|
|
AC_SUBST([LV_LIBTOOL_OBJDIR])
|
2008-02-29 01:07:37 +08:00
|
|
|
|
2009-11-13 20:12:09 +08:00
|
|
|
dnl HAL library check for host device enumeration
|
2008-11-21 20:27:11 +08:00
|
|
|
HAL_CFLAGS=
|
|
|
|
HAL_LIBS=
|
|
|
|
AC_ARG_WITH([hal],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-hal], [use HAL for host device enumeration @<:@default=check@:>@]),
|
2008-11-21 20:27:11 +08:00
|
|
|
[],
|
|
|
|
[with_hal=check])
|
|
|
|
|
|
|
|
if test "$with_libvirtd" = "no" ; then
|
|
|
|
with_hal=no
|
|
|
|
fi
|
2010-03-25 05:31:31 +08:00
|
|
|
if test "x$with_hal" = "xyes" || test "x$with_hal" = "xcheck"; then
|
2008-11-21 20:27:11 +08:00
|
|
|
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
|
2009-12-19 01:34:40 +08:00
|
|
|
old_LIBS=$LIBS
|
2008-11-21 20:27:11 +08:00
|
|
|
CFLAGS="$CFLAGS $HAL_CFLAGS"
|
2009-12-19 01:34:40 +08:00
|
|
|
LIBS="$LIBS $HAL_LIBS"
|
2008-11-21 20:27:11 +08:00
|
|
|
AC_CHECK_FUNCS([libhal_get_all_devices],,[with_hal=no])
|
2008-12-05 23:05:48 +08:00
|
|
|
AC_CHECK_FUNCS([dbus_watch_get_unix_fd])
|
2008-11-21 20:27:11 +08:00
|
|
|
CFLAGS="$old_CFLAGS"
|
2009-12-19 01:34:40 +08:00
|
|
|
LIBS="$old_LIBS"
|
2008-11-21 20:27:11 +08:00
|
|
|
fi
|
2009-12-19 01:29:13 +08:00
|
|
|
if test "x$with_hal" = "xyes" ; then
|
|
|
|
AC_DEFINE_UNQUOTED([HAVE_HAL], 1,
|
|
|
|
[use HAL for host device enumeration])
|
|
|
|
fi
|
2008-11-21 20:27:11 +08:00
|
|
|
fi
|
|
|
|
AM_CONDITIONAL([HAVE_HAL], [test "x$with_hal" = "xyes"])
|
|
|
|
AC_SUBST([HAL_CFLAGS])
|
|
|
|
AC_SUBST([HAL_LIBS])
|
|
|
|
|
|
|
|
|
2009-11-13 20:12:09 +08:00
|
|
|
dnl udev/libpciaccess library check for alternate host device enumeration
|
2009-11-13 05:48:24 +08:00
|
|
|
UDEV_CFLAGS=
|
|
|
|
UDEV_LIBS=
|
2009-11-13 20:12:09 +08:00
|
|
|
PCIACCESS_CFLAGS=
|
|
|
|
PCIACCESS_LIBS=
|
2009-11-13 05:48:24 +08:00
|
|
|
AC_ARG_WITH([udev],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-udev], [use libudev for host device enumeration @<:@default=check@:>@]),
|
2009-11-13 05:48:24 +08:00
|
|
|
[],
|
|
|
|
[with_udev=check])
|
|
|
|
|
|
|
|
if test "$with_libvirtd" = "no" ; then
|
|
|
|
with_udev=no
|
|
|
|
fi
|
2010-03-25 05:31:31 +08:00
|
|
|
if test "x$with_udev" = "xyes" || test "x$with_udev" = "xcheck"; then
|
2009-11-13 05:48:24 +08:00
|
|
|
PKG_CHECK_MODULES(UDEV, libudev >= $UDEV_REQUIRED,
|
2009-11-13 20:12:09 +08:00
|
|
|
[], [
|
2009-11-13 05:48:24 +08:00
|
|
|
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
|
|
|
|
])
|
2009-11-13 20:12:09 +08:00
|
|
|
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
|
2009-11-13 05:48:24 +08:00
|
|
|
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])
|
2009-11-13 06:22:00 +08:00
|
|
|
AC_SUBST([PCIACCESS_CFLAGS])
|
|
|
|
AC_SUBST([PCIACCESS_LIBS])
|
2009-11-13 05:48:24 +08:00
|
|
|
|
2008-11-21 20:27:11 +08:00
|
|
|
with_nodedev=no;
|
2010-03-25 05:31:31 +08:00
|
|
|
if test "$with_hal" = "yes" || test "$with_udev" = "yes";
|
2008-11-21 20:27:11 +08:00
|
|
|
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"])
|
|
|
|
|
2009-01-05 22:08:26 +08:00
|
|
|
AM_CONDITIONAL([WITH_LINUX], [test `uname -s` = "Linux"])
|
|
|
|
|
2009-07-16 05:25:01 +08:00
|
|
|
|
|
|
|
AC_ARG_WITH([qemu-user],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-qemu-user], [username to run QEMU system instance as @<:@default=root@:>@]),
|
2009-07-16 05:25:01 +08:00
|
|
|
[QEMU_USER=${withval}],
|
|
|
|
[QEMU_USER=root])
|
|
|
|
AC_ARG_WITH([qemu-group],
|
2010-01-17 22:48:45 +08:00
|
|
|
AC_HELP_STRING([--with-qemu-group], [groupname to run QEMU system instance as @<:@default=root@:>@]),
|
2009-07-16 05:25:01 +08:00
|
|
|
[QEMU_GROUP=${withval}],
|
|
|
|
[QEMU_GROUP=root])
|
|
|
|
AC_DEFINE_UNQUOTED([QEMU_USER], ["$QEMU_USER"], [QEMU user account])
|
|
|
|
AC_DEFINE_UNQUOTED([QEMU_GROUP], ["$QEMU_GROUP"], [QEMU group account])
|
|
|
|
|
2010-02-13 01:03:07 +08:00
|
|
|
|
|
|
|
AC_ARG_WITH([macvtap],
|
|
|
|
AC_HELP_STRING([--with-macvtap],[enable macvtap device @<:@default=check@:>@]),
|
|
|
|
[with_macvtap=${withval}],
|
|
|
|
[with_macvtap=check])
|
|
|
|
|
|
|
|
if test "$with_macvtap" != "no" ; then
|
2010-03-09 21:14:48 +08:00
|
|
|
AC_TRY_COMPILE([ #include <sys/socket.h>
|
|
|
|
#include <linux/rtnetlink.h> ],
|
2010-02-13 01:03:07 +08:00
|
|
|
[ int x = MACVLAN_MODE_BRIDGE; ],
|
|
|
|
[ 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"])
|
|
|
|
|
|
|
|
|
2008-11-25 23:36:09 +08:00
|
|
|
# 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
|
2005-12-09 18:37:37 +08:00
|
|
|
|
2005-12-08 23:08:46 +08:00
|
|
|
AC_OUTPUT(Makefile src/Makefile include/Makefile docs/Makefile \
|
2009-01-27 23:29:53 +08:00
|
|
|
docs/schemas/Makefile \
|
2007-12-07 22:35:18 +08:00
|
|
|
gnulib/lib/Makefile \
|
2007-12-11 02:26:56 +08:00
|
|
|
gnulib/tests/Makefile \
|
2008-10-10 19:33:10 +08:00
|
|
|
libvirt.pc libvirt.spec mingw32-libvirt.spec \
|
2008-05-30 03:27:04 +08:00
|
|
|
po/Makefile.in \
|
2006-06-26 23:02:18 +08:00
|
|
|
include/libvirt/Makefile include/libvirt/libvirt.h \
|
2006-05-09 23:35:46 +08:00
|
|
|
python/Makefile python/tests/Makefile \
|
2009-09-15 22:49:29 +08:00
|
|
|
daemon/Makefile \
|
2009-04-19 23:12:33 +08:00
|
|
|
tools/Makefile \
|
2006-08-25 05:46:28 +08:00
|
|
|
tests/Makefile proxy/Makefile \
|
2006-09-12 09:16:22 +08:00
|
|
|
tests/xml2sexprdata/Makefile \
|
|
|
|
tests/sexpr2xmldata/Makefile \
|
2007-01-20 04:30:05 +08:00
|
|
|
tests/xmconfigdata/Makefile \
|
2007-03-27 22:45:17 +08:00
|
|
|
tests/xencapsdata/Makefile \
|
2008-11-24 15:11:26 +08:00
|
|
|
tests/confdata/Makefile \
|
2009-12-14 20:40:42 +08:00
|
|
|
examples/apparmor/Makefile \
|
2009-02-27 00:14:50 +08:00
|
|
|
examples/domain-events/events-c/Makefile \
|
2009-09-16 20:07:48 +08:00
|
|
|
examples/domsuspend/Makefile \
|
|
|
|
examples/dominfo/Makefile \
|
|
|
|
examples/python/Makefile \
|
2010-03-26 01:46:13 +08:00
|
|
|
examples/hellolibvirt/Makefile \
|
|
|
|
examples/xml/nwfilter/Makefile)
|
2007-09-19 07:36:30 +08:00
|
|
|
|
|
|
|
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])
|
2007-12-06 03:11:01 +08:00
|
|
|
AC_MSG_NOTICE([ Proxy: $with_xen_proxy])
|
2007-09-19 07:36:30 +08:00
|
|
|
AC_MSG_NOTICE([ QEMU: $with_qemu])
|
2008-11-20 00:58:23 +08:00
|
|
|
AC_MSG_NOTICE([ UML: $with_uml])
|
2007-09-19 07:36:30 +08:00
|
|
|
AC_MSG_NOTICE([ OpenVZ: $with_openvz])
|
2009-04-18 00:09:07 +08:00
|
|
|
AC_MSG_NOTICE([ VBox: $with_vbox])
|
2010-03-14 19:11:51 +08:00
|
|
|
AC_MSG_NOTICE([ XenAPI: $with_xenapi])
|
2008-03-21 23:03:37 +08:00
|
|
|
AC_MSG_NOTICE([ LXC: $with_lxc])
|
2009-07-24 22:17:06 +08:00
|
|
|
AC_MSG_NOTICE([ PHYP: $with_phyp])
|
2009-05-25 19:56:00 +08:00
|
|
|
AC_MSG_NOTICE([ ONE: $with_one])
|
2009-07-24 04:21:08 +08:00
|
|
|
AC_MSG_NOTICE([ ESX: $with_esx])
|
2007-09-19 07:36:30 +08:00
|
|
|
AC_MSG_NOTICE([ Test: $with_test])
|
|
|
|
AC_MSG_NOTICE([ Remote: $with_remote])
|
2008-10-10 21:57:13 +08:00
|
|
|
AC_MSG_NOTICE([ Network: $with_network])
|
2007-12-07 00:34:48 +08:00
|
|
|
AC_MSG_NOTICE([Libvirtd: $with_libvirtd])
|
2009-05-20 22:26:49 +08:00
|
|
|
AC_MSG_NOTICE([ netcf: $with_netcf])
|
2010-02-13 01:03:07 +08:00
|
|
|
AC_MSG_NOTICE([ macvtap: $with_macvtap])
|
2007-09-19 07:36:30 +08:00
|
|
|
AC_MSG_NOTICE([])
|
2008-02-20 23:42:30 +08:00
|
|
|
AC_MSG_NOTICE([Storage Drivers])
|
|
|
|
AC_MSG_NOTICE([])
|
2008-09-05 20:03:45 +08:00
|
|
|
AC_MSG_NOTICE([ Dir: $with_storage_dir])
|
2008-02-20 23:42:30 +08:00
|
|
|
AC_MSG_NOTICE([ FS: $with_storage_fs])
|
|
|
|
AC_MSG_NOTICE([ NetFS: $with_storage_fs])
|
2008-02-20 23:45:33 +08:00
|
|
|
AC_MSG_NOTICE([ LVM: $with_storage_lvm])
|
2008-02-20 23:49:25 +08:00
|
|
|
AC_MSG_NOTICE([ iSCSI: $with_storage_iscsi])
|
2009-04-02 00:03:22 +08:00
|
|
|
AC_MSG_NOTICE([ SCSI: $with_storage_scsi])
|
2009-09-08 21:47:45 +08:00
|
|
|
AC_MSG_NOTICE([ mpath: $with_storage_mpath])
|
2008-02-20 23:52:17 +08:00
|
|
|
AC_MSG_NOTICE([ Disk: $with_storage_disk])
|
2008-02-20 23:42:30 +08:00
|
|
|
AC_MSG_NOTICE([])
|
2009-03-03 18:06:49 +08:00
|
|
|
AC_MSG_NOTICE([Security Drivers])
|
|
|
|
AC_MSG_NOTICE([])
|
|
|
|
AC_MSG_NOTICE([ SELinux: $with_secdriver_selinux])
|
2009-10-09 17:42:09 +08:00
|
|
|
AC_MSG_NOTICE([AppArmor: $with_secdriver_apparmor])
|
2009-03-03 18:06:49 +08:00
|
|
|
AC_MSG_NOTICE([])
|
2008-11-21 20:16:08 +08:00
|
|
|
AC_MSG_NOTICE([Driver Loadable Modules])
|
|
|
|
AC_MSG_NOTICE([])
|
|
|
|
if test "$with_driver_modules" != "no" ; then
|
2010-02-24 19:04:27 +08:00
|
|
|
AC_MSG_NOTICE([ dlopen: $DRIVER_MODULE_CFLAGS $DRIVER_MODULE_LIBS])
|
2008-11-21 20:16:08 +08:00
|
|
|
else
|
|
|
|
AC_MSG_NOTICE([ dlopen: no])
|
|
|
|
fi
|
2009-08-05 16:43:37 +08:00
|
|
|
AC_MSG_NOTICE([])
|
|
|
|
AC_MSG_NOTICE([Libraries])
|
|
|
|
AC_MSG_NOTICE([])
|
|
|
|
AC_MSG_NOTICE([ libxml: $LIBXML_CFLAGS $LIBXML_LIBS])
|
2009-07-24 04:21:08 +08:00
|
|
|
if test "$with_esx" = "yes" ; then
|
|
|
|
AC_MSG_NOTICE([ libcurl: $LIBCURL_CFLAGS $LIBCURL_LIBS])
|
|
|
|
else
|
|
|
|
AC_MSG_NOTICE([ libcurl: no])
|
|
|
|
fi
|
2009-09-04 18:08:47 +08:00
|
|
|
if test "$with_libssh2" != "no" ; then
|
2009-10-09 17:42:09 +08:00
|
|
|
AC_MSG_NOTICE([ libssh2: $LIBSSH2_CFLAGS $LIBSSH2_LIBS])
|
2009-07-24 22:17:06 +08:00
|
|
|
else
|
2009-10-09 17:42:09 +08:00
|
|
|
AC_MSG_NOTICE([ libssh2: no])
|
2009-07-24 22:17:06 +08:00
|
|
|
fi
|
2007-09-20 01:42:40 +08:00
|
|
|
AC_MSG_NOTICE([ gnutls: $GNUTLS_CFLAGS $GNUTLS_LIBS])
|
2007-12-05 23:24:15 +08:00
|
|
|
if test "$with_sasl" != "no" ; then
|
|
|
|
AC_MSG_NOTICE([ sasl: $SASL_CFLAGS $SASL_LIBS])
|
|
|
|
else
|
|
|
|
AC_MSG_NOTICE([ sasl: no])
|
|
|
|
fi
|
2009-11-04 02:59:18 +08:00
|
|
|
if test "$with_yajl" != "no" ; then
|
|
|
|
AC_MSG_NOTICE([ yajl: $YAJL_CFLAGS $YAJL_LIBS])
|
|
|
|
else
|
|
|
|
AC_MSG_NOTICE([ yajl: no])
|
|
|
|
fi
|
2007-09-19 09:56:55 +08:00
|
|
|
if test "$with_avahi" = "yes" ; then
|
|
|
|
AC_MSG_NOTICE([ avahi: $AVAHI_CFLAGS $AVAHI_LIBS])
|
|
|
|
else
|
|
|
|
AC_MSG_NOTICE([ avahi: no])
|
|
|
|
fi
|
2007-12-06 02:21:27 +08:00
|
|
|
if test "$with_polkit" = "yes" ; then
|
2009-08-06 20:54:08 +08:00
|
|
|
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
|
2007-12-06 02:21:27 +08:00
|
|
|
else
|
|
|
|
AC_MSG_NOTICE([ polkit: no])
|
|
|
|
fi
|
2008-02-20 23:38:29 +08:00
|
|
|
if test "$with_selinux" = "yes" ; then
|
2009-01-20 20:25:40 +08:00
|
|
|
AC_MSG_NOTICE([ selinux: $SELINUX_CFLAGS $SELINUX_LIBS])
|
2008-02-20 23:38:29 +08:00
|
|
|
else
|
2009-01-20 20:25:40 +08:00
|
|
|
AC_MSG_NOTICE([ selinux: no])
|
2008-02-20 23:38:29 +08:00
|
|
|
fi
|
2009-10-08 22:34:22 +08:00
|
|
|
if test "$with_apparmor" = "yes" ; then
|
2009-10-09 17:42:09 +08:00
|
|
|
AC_MSG_NOTICE([apparmor: $APPARMOR_CFLAGS $APPARMOR_LIBS])
|
2009-10-08 22:34:22 +08:00
|
|
|
else
|
2009-10-09 17:42:09 +08:00
|
|
|
AC_MSG_NOTICE([apparmor: no])
|
2009-10-08 22:34:22 +08:00
|
|
|
fi
|
2008-05-22 23:29:50 +08:00
|
|
|
if test "$with_numactl" = "yes" ; then
|
2009-01-20 20:25:40 +08:00
|
|
|
AC_MSG_NOTICE([ numactl: $NUMACTL_CFLAGS $NUMACTL_LIBS])
|
2008-05-22 23:29:50 +08:00
|
|
|
else
|
2009-01-20 20:25:40 +08:00
|
|
|
AC_MSG_NOTICE([ numactl: no])
|
2008-05-22 23:29:50 +08:00
|
|
|
fi
|
2009-06-29 19:33:13 +08:00
|
|
|
if test "$with_capng" = "yes" ; then
|
|
|
|
AC_MSG_NOTICE([ capng: $CAPNG_CFLAGS $CAPNG_LIBS])
|
|
|
|
else
|
|
|
|
AC_MSG_NOTICE([ capng: no])
|
|
|
|
fi
|
2008-11-05 07:37:23 +08:00
|
|
|
if test "$with_xen" = "yes" ; then
|
2009-01-20 20:25:40 +08:00
|
|
|
AC_MSG_NOTICE([ xen: $XEN_CFLAGS $XEN_LIBS])
|
2008-11-05 07:37:23 +08:00
|
|
|
else
|
2009-01-20 20:25:40 +08:00
|
|
|
AC_MSG_NOTICE([ xen: no])
|
2008-11-05 07:37:23 +08:00
|
|
|
fi
|
2010-03-14 19:11:51 +08:00
|
|
|
if test "$with_xenapi" = "yes" ; then
|
|
|
|
AC_MSG_NOTICE([ xenapi: $LIBXENSERVER_CFLAGS $LIBXENSERVER_LIBS])
|
|
|
|
else
|
|
|
|
AC_MSG_NOTICE([ xenapi: no])
|
|
|
|
fi
|
2008-11-21 20:27:11 +08:00
|
|
|
if test "$with_hal" = "yes" ; then
|
2009-01-20 20:25:40 +08:00
|
|
|
AC_MSG_NOTICE([ hal: $HAL_CFLAGS $HAL_LIBS])
|
2008-11-21 20:27:11 +08:00
|
|
|
else
|
2009-01-20 20:25:40 +08:00
|
|
|
AC_MSG_NOTICE([ hal: no])
|
2008-11-21 20:27:11 +08:00
|
|
|
fi
|
2009-11-13 05:48:24 +08:00
|
|
|
if test "$with_udev" = "yes" ; then
|
2009-11-17 00:11:05 +08:00
|
|
|
AC_MSG_NOTICE([ udev: $UDEV_CFLAGS $UDEV_LIBS $PCIACCESS_CFLAGS $PCIACCESS_LIBS])
|
2009-11-13 05:48:24 +08:00
|
|
|
else
|
|
|
|
AC_MSG_NOTICE([ udev: no])
|
|
|
|
fi
|
2009-05-20 22:26:49 +08:00
|
|
|
if test "$with_netcf" = "yes" ; then
|
|
|
|
AC_MSG_NOTICE([ netcf: $NETCF_CFLAGS $NETCF_LIBS])
|
|
|
|
else
|
|
|
|
AC_MSG_NOTICE([ netcf: no])
|
|
|
|
fi
|
2009-06-25 01:32:56 +08:00
|
|
|
if test "$with_one" = "yes" ; then
|
|
|
|
AC_MSG_NOTICE([ xmlrpc: $XMLRPC_CFLAGS $XMLRPC_LIBS])
|
|
|
|
else
|
|
|
|
AC_MSG_NOTICE([ xmlrpc: no])
|
|
|
|
fi
|
nwfilter: Support for learning a VM's IP address
This patch implements support for learning a VM's IP address. It uses
the pcap library to listen on the VM's backend network interface (tap)
or the physical ethernet device (macvtap) and tries to capture packets
with source or destination MAC address of the VM and learn from DHCP
Offers, ARP traffic, or first-sent IPv4 packet what the IP address of
the VM's interface is. This then allows to instantiate the network
traffic filtering rules without the user having to provide the IP
parameter somewhere in the filter description or in the interface
description as a parameter. This only supports to detect the parameter
IP, which is for the assumed single IPv4 address of a VM. There is not
support for interfaces that may have multiple IP addresses (IP
aliasing) or IPv6 that may then require more than one valid IP address
to be detected. A VM can have multiple independent interfaces that each
uses a different IP address and in that case it will be attempted to
detect each one of the address independently.
So, when for example an interface description in the domain XML has
looked like this up to now:
<interface type='bridge'>
<source bridge='mybridge'/>
<model type='virtio'/>
<filterref filter='clean-traffic'>
<parameter name='IP' value='10.2.3.4'/>
</filterref>
</interface>
you may omit the IP parameter:
<interface type='bridge'>
<source bridge='mybridge'/>
<model type='virtio'/>
<filterref filter='clean-traffic'/>
</interface>
Internally I am walking the 'tree' of a VM's referenced network filters
and determine with the given variables which variables are missing. Now,
the above IP parameter may be missing and this causes a libvirt-internal
thread to be started that uses the pcap library's API to listen to the
backend interface (in case of macvtap to the physical interface) in an
attempt to determine the missing IP parameter. If the backend interface
disappears the thread terminates assuming the VM was brought down. In
case of a macvtap device a timeout is being used to wait for packets
from the given VM (filtering by VM's interface MAC address). If the VM's
macvtap device disappeared the thread also terminates. In all other
cases it tries to determine the IP address of the VM and will then apply
the rules late on the given interface, which would have happened
immediately if the IP parameter had been explicitly given. In case an
error happens while the firewall rules are applied, the VM's backend
interface is 'down'ed preventing it to communicate. Reasons for failure
for applying the network firewall rules may that an ebtables/iptables
command failes or OOM errors. Essentially the same failure reasons may
occur as when the firewall rules are applied immediately on VM start,
except that due to the late application of the filtering rules the VM
now is already running and cannot be hindered anymore from starting.
Bringing down the whole VM would probably be considered too drastic.
While a VM's IP address is attempted to be determined only limited
updates to network filters are allowed. In particular it is prevented
that filters are modified in such a way that they would introduce new
variables.
A caveat: The algorithm does not know which one is the appropriate IP
address of a VM. If the VM spoofs an IP address in its first ARP traffic
or IPv4 packets its filtering rules will be instantiated for this IP
address, thus 'locking' it to the found IP address. So, it's still
'safer' to explicitly provide the IP address of a VM's interface in the
filter description if it is known beforehand.
* configure.ac: detect libpcap
* libvirt.spec.in: require libpcap[-devel] if qemu is built
* src/internal.h: add the new ATTRIBUTE_PACKED define
* src/Makefile.am src/libvirt_private.syms: add the new modules and symbols
* src/nwfilter/nwfilter_learnipaddr.[ch]: new module being added
* src/nwfilter/nwfilter_driver.c src/conf/nwfilter_conf.[ch]
src/nwfilter/nwfilter_ebiptables_driver.[ch]
src/nwfilter/nwfilter_gentech_driver.[ch]: plu the new functionality in
* tests/nwfilterxml2xmltest: extend testing
2010-04-08 05:02:18 +08:00
|
|
|
if test "$with_qemu" = "yes" ; then
|
|
|
|
AC_MSG_NOTICE([ pcap: $LIBPCAP_CFLAGS $LIBPCAP_LIBS])
|
|
|
|
else
|
|
|
|
AC_MSG_NOTICE([ pcap: no])
|
|
|
|
fi
|
2007-09-19 07:36:30 +08:00
|
|
|
AC_MSG_NOTICE([])
|
2008-05-29 23:13:07 +08:00
|
|
|
AC_MSG_NOTICE([Test suite])
|
|
|
|
AC_MSG_NOTICE([])
|
2009-01-20 20:25:40 +08:00
|
|
|
AC_MSG_NOTICE([ Coverage: $enable_coverage])
|
2008-05-29 23:13:07 +08:00
|
|
|
AC_MSG_NOTICE([ Alloc OOM: $enable_oom])
|
|
|
|
AC_MSG_NOTICE([])
|
2007-09-19 07:36:30 +08:00
|
|
|
AC_MSG_NOTICE([Miscellaneous])
|
|
|
|
AC_MSG_NOTICE([])
|
2009-01-20 20:25:40 +08:00
|
|
|
AC_MSG_NOTICE([ Debug: $enable_debug])
|
2008-01-20 02:36:01 +08:00
|
|
|
AC_MSG_NOTICE([ Warnings: $enable_compile_warnings])
|
2007-12-06 19:42:26 +08:00
|
|
|
AC_MSG_NOTICE([ Readline: $lv_use_readline])
|
2009-10-02 23:19:47 +08:00
|
|
|
AC_MSG_NOTICE([ Python: $with_python])
|
2007-09-19 07:36:30 +08:00
|
|
|
AC_MSG_NOTICE([])
|
2009-07-16 05:25:01 +08:00
|
|
|
AC_MSG_NOTICE([Privileges])
|
|
|
|
AC_MSG_NOTICE([])
|
|
|
|
AC_MSG_NOTICE([ QEMU: $QEMU_USER:$QEMU_GROUP])
|
2009-07-24 22:17:06 +08:00
|
|
|
AC_MSG_NOTICE([])
|