dnl Process this file with autoconf to produce a configure script. AC_INIT(libvirt, 0.3.3) AC_CONFIG_SRCDIR(src/libvirt.c) AM_CONFIG_HEADER(config.h) dnl Make automake keep quiet about wildcards & other GNUmake-isms AM_INIT_AUTOMAKE([-Wno-portability]) AC_CANONICAL_HOST LIBVIRT_MAJOR_VERSION=`echo $VERSION | awk -F . '{print $1}'` LIBVIRT_MINOR_VERSION=`echo $VERSION | awk -F . '{print $2}'` LIBVIRT_MICRO_VERSION=`echo $VERSION | awk -F . '{print $3}'` LIBVIRT_VERSION=$LIBVIRT_MAJOR_VERSION.$LIBVIRT_MINOR_VERSION.$LIBVIRT_MICRO_VERSION$LIBVIRT_MICRO_VERSION_SUFFIX LIBVIRT_VERSION_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` 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) dnl Required minimum versions of all libs we depend on LIBXML_REQUIRED="2.5.0" GNUTLS_REQUIRED="1.0.25" AVAHI_REQUIRED="0.6.0" dnl Checks for programs. AC_PROG_CC AC_PROG_INSTALL AC_PROG_CPP 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) AC_PATH_PROG(XSLTPROC, xsltproc, /usr/bin/xsltproc) dnl External programs that we can use if they are available. dnl We will hard-code paths to these programs unless we cannot dnl detect them, in which case we'll search for the program dnl along the $PATH at runtime and fail if it's not there. AC_PATH_PROG(DNSMASQ, dnsmasq, dnsmasq, [/sbin:/usr/sbin:/usr/local/sbin:$PATH]) AC_PATH_PROG(BRCTL, brctl, brctl, [/sbin:/usr/sbin:/usr/local/sbin:$PATH]) 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)]) dnl Make sure we have an ANSI compiler AM_C_PROTOTYPES test "x$U" != "x" && AC_MSG_ERROR(Compiler not ANSI compliant) AM_PROG_LIBTOOL AM_PROG_CC_C_O LIBVIRT_COMPILE_WARNINGS(maximum) dnl Availability of various common functions (non-fatal if missing). AC_CHECK_FUNCS([regexec cfmakeraw]) dnl Availability of various common headers (non-fatal if missing). AC_CHECK_HEADERS([paths.h sys/syslimits.h]) dnl Need -lrpc? (Cygwin needs this) AC_SEARCH_LIBS(xdrmem_create,rpc) dnl Do we have rpcgen? AC_PATH_PROG(RPCGEN, rpcgen, no) AM_CONDITIONAL(RPCGEN, [test "x$ac_cv_path_RPCGEN" != "xno"]) if test "x$ac_cv_path_RPCGEN" != "xno"; then dnl Is this GLIBC's buggy rpcgen? AM_CONDITIONAL(GLIBC_RPCGEN, [$ac_cv_path_RPCGEN -t /dev/null 2>&1]) fi dnl Specific dir for HTML output ? AC_ARG_WITH(html-dir, AC_HELP_STRING([--with-html-dir=path], [path to base html directory, default $datadir/doc/html]), [HTML_DIR=$withval], [HTML_DIR='$(datadir)/doc']) AC_ARG_WITH(html-subdir, AC_HELP_STRING([--with-html-subdir=path], [directory used under html-dir, default $PACKAGE-$VERSION/html]), [test "x$withval" != "x" && HTML_DIR="$HTML_DIR/$withval"], [HTML_DIR="$HTML_DIR/\$(PACKAGE)-\$(VERSION)/html"]) AC_SUBST(HTML_DIR) dnl Allow to build without Xen, QEMU/KVM, test or remote driver AC_ARG_WITH(xen, [ --with-xen add XEN support (on)],[],[with_xen=yes]) AC_ARG_WITH(qemu, [ --with-qemu add QEMU/KVM support (on)],[],[with_qemu=yes]) AC_ARG_WITH(openvz, [ --with-openvz add OpenVZ support (off)],[],[with_openvz=no]) AC_ARG_WITH(test, [ --with-test add test driver support (on)],[],[with_test=yes]) AC_ARG_WITH(remote, [ --with-remote add remote driver support (on)],[],[with_remote=yes]) dnl dnl specific tests to setup DV devel environments with debug etc ... dnl if [[ "${LOGNAME}" = "veillard" -a "`pwd`" = "/u/veillard/libvirt" ]] ; then STATIC_BINARIES="-static" else STATIC_BINARIES= fi AC_SUBST(STATIC_BINARIES) dnl --enable-debug=(yes|no) AC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug=no/yes], [enable debugging output]),[],[enable_debug=no]) if test x"$enable_debug" = x"yes"; then AC_DEFINE(ENABLE_DEBUG, [], [whether debugging is enabled]) fi AC_MSG_CHECKING([where to write libvirtd PID file]) AC_ARG_WITH(remote-pid-file, AC_HELP_STRING([--with-remote-pid-file=[pidfile|none]], [PID file for libvirtd])) 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 AC_SUBST(REMOTE_PID_FILE) AC_MSG_RESULT($REMOTE_PID_FILE) dnl dnl init script flavor dnl AC_MSG_CHECKING([for init script flavor]) AC_ARG_WITH(init-script, AC_HELP_STRING([--with-init-scripts=[redhat|auto|none]], [Style of init scripts to install (defaults to auto)])) if test "x$with_init_scripts" = "x" -o "x$with_init_scripts" = "xauto"; then if test -f /etc/redhat-release ; then with_init_scripts=redhat else with_init_scripts=none fi fi AM_CONDITIONAL(LIBVIRT_INIT_SCRIPTS_RED_HAT, test x$with_init_scripts = xredhat) AC_MSG_RESULT($with_init_scripts) dnl dnl allow the creation of iptables rules in chains with a dnl specific prefix rather than in the standard toplevel chains dnl AC_ARG_WITH(iptables-prefix, AC_HELP_STRING([--with-iptables-prefix=prefix], [prefix used for iptables chains, default is to use standard toplevel chains]), [IPTABLES_PREFIX=$withval]) AC_DEFINE_UNQUOTED(IPTABLES_PREFIX, "$IPTABLES_PREFIX", [prefix used for iptables chains]) dnl dnl also support saving the various chains to files dnl in e.g. /etc/sysconfig/iptables.d dnl AC_ARG_WITH(iptables-dir, AC_HELP_STRING([--with-iptables-dir=path], [directory used to save iptables chains, defaults to not saving]), [IPTABLES_DIR=$withval]) if test x"$IPTABLES_DIR" != "x"; then AC_DEFINE_UNQUOTED(IPTABLES_DIR, "$IPTABLES_DIR", [directory used for saving iptables chains]) fi AC_PATH_PROG(IPTABLES_PATH, iptables, /sbin/iptables) AC_DEFINE_UNQUOTED(IPTABLES_PATH, "$IPTABLES_PATH", [path to iptables binary]) dnl dnl Specify the xen-distribution directory to be able to compile on a dnl non-xenified host dnl AC_ARG_WITH(xen-distdir, AC_HELP_STRING([--with-xen-distdir=path], [distribution directory of Xen, default /usr])) if test "x$with_xen_distdir" != "x" then CPPFLAGS="$CPPFLAGS -I$withval/install/usr/include" LDFLAGS="$LDFLAGS -L$withval/install/usr/lib" fi dnl dnl To be able to make dist on a non-xenified host dnl AC_ARG_WITH(depends, [ --with-depends check for dependancies (on)]) LIBVIRT_FEATURES= WITH_XEN=0 if test "$with_openvz" = "yes" ; then LIBVIRT_FEATURES="$LIBVIRT_FEATURES -DWITH_OPENVZ" fi if test "$with_qemu" = "yes" ; then LIBVIRT_FEATURES="$LIBVIRT_FEATURES -DWITH_QEMU" fi if test "$with_test" = "yes" ; then LIBVIRT_FEATURES="$LIBVIRT_FEATURES -DWITH_TEST" fi if test "$with_remote" = "yes" ; then LIBVIRT_FEATURES="$LIBVIRT_FEATURES -DWITH_REMOTE" fi if test "$with_depends" != "no" then if test "$with_xen" = "yes" ; then dnl search for the Xen store library AC_SEARCH_LIBS(xs_read, [xenstore], [WITH_XEN=1], [AC_MSG_RESULT([Xen store library not found])]) if test "$WITH_XEN" != "0" ; then LIBVIRT_FEATURES="$LIBVIRT_FEATURES -DWITH_XEN" fi AC_CHECK_HEADERS(xen/xen.h xen/version.h xen/dom0_ops.h,,[ AC_MSG_ERROR([Cannot find standard Xen headers. Is xen-devel installed?]) ], [#include #include ]) dnl Search for the location of . AC_CHECK_HEADERS(xen/sys/privcmd.h,,[ AC_CHECK_HEADERS(xen/linux/privcmd.h,,[ AC_MSG_ERROR([Cannot find header file or . Is xen-devel installed?]) ], [#include #include #include ]) ], [#include #include #include ]) fi dnl dnl check for kernel headers required by qemud/bridge.c dnl if test "$with_qemu" = "yes" ; then AC_CHECK_HEADERS(linux/param.h linux/sockios.h linux/if_bridge.h linux/if_tun.h,, AC_MSG_ERROR([You must install kernel-headers in order to compile libvirt])) fi dnl Need to test if pkg-config exists PKG_PROG_PKG_CONFIG dnl ========================================================================== dnl find libxml2 library, borrowed from xmlsec dnl ========================================================================== LIBXML_CONFIG="xml2-config" LIBXML_CFLAGS="" LIBXML_LIBS="" LIBXML_FOUND="no" AC_ARG_WITH(libxml, [ --with-libxml=[PFX] libxml2 location]) if test "z$with_libxml" = "zno" ; then AC_MSG_CHECKING(for libxml2 libraries >= $LIBXML_REQUIRED) AC_MSG_ERROR(libxml2 >= $LIBXML_REQUIRED is required for libvirt) elif test "z$with_libxml" = "z" -a "x$PKG_CONFIG" != "x" ; then PKG_CHECK_EXISTS(libxml-2.0,[LIBXML_FOUND=yes]) if test "$LIBXML_FOUND" != "no" ; then PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= $LIBXML_REQUIRED) fi fi if test "z$LIBXML_FOUND" = "zno" ; then if test "z$with_libxml" != "z" ; then LIBXML_CONFIG=$with_libxml/bin/$LIBXML_CONFIG fi AC_MSG_CHECKING(libxml2 $LIBXML_CONFIG >= $LIBXML_REQUIRED ) if ! $LIBXML_CONFIG --version > /dev/null 2>&1 ; then AC_MSG_ERROR(Could not find libxml2 anywhere (see config.log for details).) fi vers=`$LIBXML_CONFIG --version | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'` minvers=`echo $LIBXML_REQUIRED | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'` if test "$vers" -ge "$minvers" ; then LIBXML_LIBS="`$LIBXML_CONFIG --libs`" LIBXML_CFLAGS="`$LIBXML_CONFIG --cflags`" LIBXML_FOUND="yes" AC_MSG_RESULT(yes) else AC_MSG_ERROR(You need at least libxml2 $LIBXML_REQUIRED for this version of libvirt) fi fi AC_SUBST(LIBXML_CFLAGS) AC_SUBST(LIBXML_LIBS) dnl xmlURI structure has query_raw? old_cflags="$CFLAGS" old_ldflags="$LDFLAGS" CFLAGS="$CFLAGS $LIBXML_CFLAGS" LDFLAGS="$LDFLAGS $LIBXML_LIBS" AC_CHECK_MEMBER(struct _xmlURI.query_raw, [AC_DEFINE(HAVE_XMLURI_QUERY_RAW, [], [Have query_raw field in libxml2 xmlURI structure])],, [#include ]) CFLAGS="$old_cflags" LDFLAGS="$old_ldflags" dnl GnuTLS library GNUTLS_CFLAGS= GNUTLS_LIBS= if test "x$PKG_CONFIG" != "x" ; then PKG_CHECK_MODULES(GNUTLS, gnutls >= $GNUTLS_REQUIRED) else AC_CHECK_HEADER([gnutls/gnutls.h], [], AC_MSG_ERROR([You must install the GnuTLS development package in order to compile libvirt])) old_libs="$LIBS" AC_CHECK_LIB(gnutls, gnutls_handshake, [], [AC_MSG_ERROR([You must install the GnuTLS library in order to compile and run libvirt])]) GNUTLS_LIBS=$LIBS LIBS="$old_libs" fi AC_SUBST(GNUTLS_CFLAGS) AC_SUBST(GNUTLS_LIBS) 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. old_cflags="$CFLAGS" old_ldflags="$LDFLAGS" CFLAGS="$CFLAGS $GNUTLS_CFLAGS" LDFLAGS="$LDFLAGS $GNUTLS_LIBS" AC_CHECK_TYPE(gnutls_session, AC_DEFINE(GNUTLS_1_0_COMPAT,[], [enable GnuTLS 1.0 compatibility macros]),, [#include ]) CFLAGS="$old_cflags" LDFLAGS="$old_ldflags" dnl Avahi library AC_ARG_WITH(avahi, [ --with-avahi use avahi to advertise remote daemon], [], [with_avahi=check]) if test "$with_avahi" = "check" -a "x$PKG_CONFIG" != "x" ; then PKG_CHECK_EXISTS(avahi-client >= $AVAHI_REQUIRED, [with_avahi=yes], [with_avahi=no]) fi AVAHI_CFLAGS= AVAHI_LIBS= if test "$with_avahi" = "yes"; then PKG_CHECK_MODULES(AVAHI, avahi-client >= $AVAHI_REQUIRED) AC_DEFINE_UNQUOTED(HAVE_AVAHI, 1, [whether Avahi is used to broadcast server presense]) fi AM_CONDITIONAL(HAVE_AVAHI, [test "$with_avahi" = "yes"]) AC_SUBST(AVAHI_CFLAGS) AC_SUBST(AVAHI_LIBS) dnl virsh libraries AC_CHECK_LIB(curses, initscr, [VIRSH_LIBS="$VIRSH_LIBS -lcurses"], [AC_CHECK_LIB(ncurses, initscr, [VIRSH_LIBS="$VIRSH_LIBS -lncurses"], [AC_MSG_ERROR([curses/ncurses library not found])], [$VIRSH_LIBS])], [$VIRSH_LIBS]) AC_CHECK_LIB(readline, main, [VIRSH_LIBS="$VIRSH_LIBS -lreadline"], [AC_MSG_ERROR([readline library not found])], [$VIRSH_LIBS]) AC_SUBST(VIRSH_LIBS) # end of if with_depends fi AC_SUBST(WITH_XEN) AC_SUBST(LIBVIRT_FEATURES) dnl dnl check for python dnl PYTHON_VERSION= PYTHON_INCLUDES= PYTHON_SITE_PACKAGES= PYTHON_TESTS= pythondir= if test "$with_python" != "no" ; then if test -x "$with_python/bin/python" then echo Found python in $with_python/bin/python PYTHON="$with_python/bin/python" else if test -x "$with_python" then echo Found python in $with_python PYTHON="$with_python" else if test -x "$PYTHON" then echo Found python in environment PYTHON=$PYTHON with_python=`$PYTHON -c "import sys; print sys.exec_prefix"` else AC_PATH_PROG(PYTHON, python python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5) fi fi fi if test "$PYTHON" != "" then PYTHON_VERSION=`$PYTHON -c "import sys; print sys.version[[0:3]]"` echo Found Python version $PYTHON_VERSION fi if test "$PYTHON_VERSION" != "" then if test -r $with_python/include/python$PYTHON_VERSION/Python.h -a \ -d $with_python/lib/python$PYTHON_VERSION/site-packages then PYTHON_INCLUDES=$with_python/include/python$PYTHON_VERSION PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages else if test -r $prefix/include/python$PYTHON_VERSION/Python.h then PYTHON_INCLUDES=$prefix/include/python$PYTHON_VERSION PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages else if test -r /usr/include/python$PYTHON_VERSION/Python.h then PYTHON_INCLUDES=/usr/include/python$PYTHON_VERSION PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages else echo could not find python$PYTHON_VERSION/Python.h fi fi if test ! -d "$PYTHON_SITE_PACKAGES" then PYTHON_SITE_PACKAGES=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib()"` fi fi fi if test "$with_python" != "" then pythondir='$(PYTHON_SITE_PACKAGES)' else pythondir='$(libdir)/python$(PYTHON_VERSION)/site-packages' fi else PYTHON= fi AM_CONDITIONAL(WITH_PYTHON, test "$PYTHON_INCLUDES" != "") if test "$PYTHON_INCLUDES" != "" then PYTHON_SUBDIR=python else PYTHON_SUBDIR= fi AC_SUBST(pythondir) AC_SUBST(PYTHON_SUBDIR) AC_SUBST(PYTHON_VERSION) AC_SUBST(PYTHON_INCLUDES) AC_SUBST(PYTHON_SITE_PACKAGES) 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) AM_CONDITIONAL(ENABLE_XEN_TESTS, [test "$RUNNING_XEN" != "no" -a "$RUNNING_XEND" != "no"]) AC_ARG_ENABLE(test-coverage, [ --enable-test-coverage turn on code coverage instrumentation], [case "${enableval}" in yes|no) ;; *) AC_MSG_ERROR([bad value ${enableval} for test-coverage option]) ;; esac], [enableval=no]) if test "${enableval}" = yes; then 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 dnl Enable building the proxy? AM_CONDITIONAL(WITH_PROXY,[test "x$with_xen" = "xyes"]) dnl Check for gettext AM_GNU_GETTEXT_VERSION([0.14.1]) AM_GNU_GETTEXT([external]) if test -d po then ALL_LINGUAS=`(cd po > /dev/null && ls *.po) | sed 's+\.po$++'` else ALL_LINGUAS="af am ar as be bg bn_IN bn ca cs cy da de el en_GB es et eu_ES fa fi fr gl gu he hi hr hu hy id is it ja ka kn ko ku lo lt lv mk ml mr ms my nb nl nn no nso or pa pl pt_BR pt ro ru si sk sl sq sr@Latn sr sv ta te th tr uk ur vi zh_CN zh_TW zu" fi # very annoying rm -f COPYING cp COPYING.LIB COPYING AC_OUTPUT(Makefile src/Makefile include/Makefile docs/Makefile \ docs/examples/Makefile docs/devhelp/Makefile \ docs/examples/python/Makefile \ libvirt.pc libvirt.spec \ po/Makefile.in scripts/Makefile \ include/libvirt/Makefile include/libvirt/libvirt.h \ python/Makefile python/tests/Makefile \ qemud/Makefile m4/Makefile \ tests/Makefile proxy/Makefile \ tests/xml2sexprdata/Makefile \ tests/sexpr2xmldata/Makefile \ tests/xmconfigdata/Makefile \ tests/xencapsdata/Makefile \ tests/virshdata/Makefile tests/confdata/Makefile) AC_MSG_NOTICE([]) AC_MSG_NOTICE([Configuration summary]) AC_MSG_NOTICE([=====================]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([Drivers]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Xen: $with_xen]) AC_MSG_NOTICE([ QEMU: $with_qemu]) AC_MSG_NOTICE([ OpenVZ: $with_openvz]) AC_MSG_NOTICE([ Test: $with_test]) AC_MSG_NOTICE([ Remote: $with_remote]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([Libraries]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ libxml: $LIBXML_CFLAGS $LIBXML_LIBS]) AC_MSG_NOTICE([ gnutls: $GNUTLS_CFLAGS $GNUTLS_LIBS]) if test "$with_avahi" = "yes" ; then AC_MSG_NOTICE([ avahi: $AVAHI_CFLAGS $AVAHI_LIBS]) else AC_MSG_NOTICE([ avahi: no]) fi AC_MSG_NOTICE([]) AC_MSG_NOTICE([Miscellaneous]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Debug: $enable_debug]) AC_MSG_NOTICE([])