configure.in 43.3 KB
Newer Older
D
Daniel Veillard 已提交
1
dnl Process this file with autoconf to produce a configure script.
2

3
AC_INIT([libvirt], [0.4.6])
4 5 6
AC_CONFIG_SRCDIR([src/libvirt.c])
AC_CONFIG_AUX_DIR([build-aux])
AM_CONFIG_HEADER([config.h])
7 8
dnl Make automake keep quiet about wildcards & other GNUmake-isms
AM_INIT_AUTOMAKE([-Wno-portability])
D
Daniel Veillard 已提交
9 10
AC_CANONICAL_HOST

11 12 13
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}'`
14 15 16
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`
D
Daniel Veillard 已提交
17

18 19 20 21 22 23
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])
D
Daniel Veillard 已提交
24

25 26
dnl Required minimum versions of all libs we depend on
LIBXML_REQUIRED="2.5.0"
27
GNUTLS_REQUIRED="1.0.25"
28
AVAHI_REQUIRED="0.6.0"
29
POLKIT_REQUIRED="0.6"
30
PARTED_REQUIRED="1.8.0"
31

32
dnl Checks for C compiler.
33 34 35
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_CPP
36

37 38
AC_OBJEXT

39 40 41 42 43 44 45
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])])])

46 47 48 49 50 51
gl_EARLY
gl_INIT

AM_PROG_CC_STDC
AC_C_CONST

52 53
dnl Make sure we have an ANSI compiler
AM_C_PROTOTYPES
54
test "x$U" != "x" && AC_MSG_ERROR([Compiler not ANSI compliant])
55

56 57 58
dnl Support building Win32 DLLs (must appear *before* AM_PROG_LIBTOOL)
AC_LIBTOOL_WIN32_DLL

59 60
AM_PROG_LIBTOOL

61 62
AM_PROG_CC_C_O

63
LIBVIRT_COMPILE_WARNINGS([maximum])
64

R
Richard W.M. Jones 已提交
65 66 67 68
dnl Support large files / 64 bit seek offsets.
dnl Use --disable-largefile if you don't want this.
AC_SYS_LARGEFILE

69
dnl Availability of various common functions (non-fatal if missing).
D
Daniel P. Berrange 已提交
70
AC_CHECK_FUNCS([cfmakeraw regexec uname sched_getaffinity getuid getgid])
71 72

dnl Availability of various common headers (non-fatal if missing).
73
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])
74

75 76 77 78 79 80
dnl Where are the XDR functions?
dnl If portablexdr is installed, prefer that.
dnl Otherwise try -lrpc (Cygwin) -lxdr (some MinGW) or none (most Unix)
AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[
	AC_SEARCH_LIBS([xdrmem_create],[rpc xdr])
	])
81

D
Daniel P. Berrange 已提交
82 83
AC_CHECK_LIB([intl],[gettext],[])

84
dnl Do we have rpcgen?
85 86
AC_PATH_PROG([RPCGEN], [rpcgen], [no])
AM_CONDITIONAL([RPCGEN], [test "x$ac_cv_path_RPCGEN" != "xno"])
87
dnl Is this GLIBC's buggy rpcgen?
88
AM_CONDITIONAL([GLIBC_RPCGEN],
89 90
	       [test "x$ac_cv_path_RPCGEN" != "xno" &&
	        $ac_cv_path_RPCGEN -t </dev/null >/dev/null 2>&1])
91

R
Richard W.M. Jones 已提交
92
dnl pthread?
93 94
AC_CHECK_HEADER([pthread.h],
	[AC_CHECK_LIB([pthread],[pthread_join],[
R
Richard W.M. Jones 已提交
95 96
		AC_DEFINE([HAVE_LIBPTHREAD],[],[Define if pthread (-lpthread)])
		AC_DEFINE([HAVE_PTHREAD_H],[],[Define if <pthread.h>])
97
		LIBS="-lpthread $LIBS"
98
	])])
R
Richard W.M. Jones 已提交
99

100
dnl Miscellaneous external programs.
101 102 103 104
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])
105
AC_PATH_PROG([XMLCATALOG], [xmlcatalog], [/usr/bin/xmlcatalog])
106
AC_PATH_PROG([XSLTPROC], [xsltproc], [/usr/bin/xsltproc])
107
AC_PATH_PROG([AUGPARSE], [augparse], [/usr/bin/augparse])
R
Richard W.M. Jones 已提交
108 109
AC_PROG_MKDIR_P

110 111 112 113
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.
114
AC_PATH_PROG([DNSMASQ], [dnsmasq], [dnsmasq],
115
	[/sbin:/usr/sbin:/usr/local/sbin:$PATH])
116
AC_PATH_PROG([BRCTL], [brctl], [brctl],
117 118 119 120 121 122 123
	[/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)])

124
dnl Specific dir for HTML output ?
125 126
AC_ARG_WITH([html-dir], [AC_HELP_STRING([--with-html-dir=path],
            [path to base html directory, default $datadir/doc/html])],
127 128
            [HTML_DIR=$withval], [HTML_DIR='$(datadir)/doc'])

129 130
AC_ARG_WITH([html-subdir], [AC_HELP_STRING([--with-html-subdir=path],
            [directory used under html-dir, default $PACKAGE-$VERSION/html])],
131 132
            [test "x$withval" != "x" && HTML_DIR="$HTML_DIR/$withval"],
            [HTML_DIR="$HTML_DIR/\$(PACKAGE)-\$(VERSION)/html"])
133
AC_SUBST([HTML_DIR])
134

135 136 137 138
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

D
Daniel P. Berrange 已提交
139
if test "$prefix" = "/usr" -a "$localstatedir" = '${prefix}/var' ; then
140 141
    localstatedir='/var'
fi
D
Daniel P. Berrange 已提交
142
if test "$prefix" = "/usr" -a "$sysconfdir" = '${prefix}/etc' ; then
143 144 145 146
    sysconfdir='/etc'
fi


147
dnl Allow to build without Xen, QEMU/KVM, test or remote driver
148
AC_ARG_WITH([xen],
D
Daniel P. Berrange 已提交
149
[  --with-xen              add XEN support (on)],[],[with_xen=yes])
150 151
AC_ARG_WITH([xen-inotify],
[  --with-xen-inotify      add XEN inotify support (on)],[],[with_xen_inotify=yes])
152
AC_ARG_WITH([qemu],
D
Daniel P. Berrange 已提交
153
[  --with-qemu             add QEMU/KVM support (on)],[],[with_qemu=yes])
154 155
AC_ARG_WITH([uml],
[  --with-uml              add UML support (on)],[],[with_uml=yes])
156
AC_ARG_WITH([openvz],
157
[  --with-openvz           add OpenVZ support (on)],[],[with_openvz=yes])
158
AC_ARG_WITH([lxc],
159
[  --with-lxc              add Linux Container support (on)],[],[with_lxc=yes])
160
AC_ARG_WITH([test],
D
Daniel P. Berrange 已提交
161
[  --with-test             add test driver support (on)],[],[with_test=yes])
162
AC_ARG_WITH([remote],
D
Daniel P. Berrange 已提交
163
[  --with-remote           add remote driver support (on)],[],[with_remote=yes])
164
AC_ARG_WITH([libvirtd],
165
[  --with-libvirtd         add libvirtd support (on)],[],[with_libvirtd=yes])
166

167 168 169
dnl
dnl specific tests to setup DV devel environments with debug etc ...
dnl
170
if [[ "${LOGNAME}" = "veillard" -a "`pwd`" = "/u/veillard/libvirt" ]] ; then
171 172 173 174
    STATIC_BINARIES="-static"
else
    STATIC_BINARIES=
fi
175
AC_SUBST([STATIC_BINARIES])
176

177
dnl --enable-debug=(yes|no)
178 179 180
AC_ARG_ENABLE([debug],
              [AC_HELP_STRING([--enable-debug=no/yes],
                             [enable debugging output])],[],[enable_debug=yes])
181
if test x"$enable_debug" = x"yes"; then
182
   AC_DEFINE([ENABLE_DEBUG], [], [whether debugging is enabled])
183 184
fi

185

186
AC_MSG_CHECKING([where to write libvirtd PID file])
187
AC_ARG_WITH([remote-pid-file], [AC_HELP_STRING([--with-remote-pid-file=[pidfile|none]], [PID file for libvirtd])])
188 189 190 191 192 193 194
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
195
AC_SUBST([REMOTE_PID_FILE])
196 197
AC_MSG_RESULT($REMOTE_PID_FILE)

198 199 200 201
dnl
dnl init script flavor
dnl
AC_MSG_CHECKING([for init script flavor])
202 203 204
AC_ARG_WITH([init-script],
            [AC_HELP_STRING([--with-init-scripts=[redhat|auto|none]],
		     [Style of init scripts to install (defaults to auto)])])
205 206 207 208 209 210 211
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
212
AM_CONDITIONAL([LIBVIRT_INIT_SCRIPTS_RED_HAT], test x$with_init_scripts = xredhat)
213 214
AC_MSG_RESULT($with_init_scripts)

215 216 217 218
dnl
dnl ensure that Fedora's system-config-firewall knows
dnl about libvirt's iptables rules
dnl
219 220 221
AC_ARG_ENABLE([iptables-lokkit],
              [AC_HELP_STRING([--enable-iptables-lokkit=no/yes/check],
	   [enable registering libvirt's iptables rules with Fedora's lokkit])],
222 223
                             [],[enable_iptables_lokkit=check])
if test x"$enable_iptables_lokkit" != x"no"; then
224
   AC_PATH_PROG([LOKKIT_PATH],[lokkit], [], [/usr/sbin:$PATH])
225 226 227 228 229 230 231
fi

if test x"$enable_iptables_lokkit" = x"yes" -a x"$LOKKIT_PATH" = x; then
   AC_MSG_ERROR([Cannot find lokkit and --enable-iptables-lokkit specified])
fi

if test x"$LOKKIT_PATH" != x; then
232 233
   AC_DEFINE([ENABLE_IPTABLES_LOKKIT], [], [whether support for Fedora's lokkit is enabled])
   AC_DEFINE_UNQUOTED([LOKKIT_PATH], "$LOKKIT_PATH", [path to lokkit binary])
234 235
fi

236 237
AC_PATH_PROG([IPTABLES_PATH], [iptables], /sbin/iptables, [/usr/sbin:$PATH])
AC_DEFINE_UNQUOTED([IPTABLES_PATH], "$IPTABLES_PATH", [path to iptables binary])
238

239
if test "$with_openvz" = "yes"; then
240
    AC_DEFINE_UNQUOTED([WITH_OPENVZ], 1, [whether OpenVZ driver is enabled])
241
fi
242 243
AM_CONDITIONAL([WITH_OPENVZ], [test "$with_openvz" = "yes"])

244 245 246
if test "$with_libvirtd" = "no" ; then
  with_lxc=no
fi
D
Daniel Veillard 已提交
247
if test "$with_lxc" = "yes" ; then
248
    AC_DEFINE_UNQUOTED([WITH_LXC], 1, [whether LXC driver is enabled])
D
Daniel Veillard 已提交
249
fi
250 251
AM_CONDITIONAL([WITH_LXC], [test "$with_lxc" = "yes"])

252 253 254
if test "$with_libvirtd" = "no" ; then
  with_qemu=no
fi
D
Daniel P. Berrange 已提交
255
if test "$with_qemu" = "yes" ; then
256
    AC_DEFINE_UNQUOTED([WITH_QEMU], 1, [whether QEMU driver is enabled])
257
fi
258
AM_CONDITIONAL([WITH_QEMU], [test "$with_qemu" = "yes"])
259

260 261 262 263 264
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"])

D
Daniel P. Berrange 已提交
265
if test "$with_test" = "yes" ; then
266
    AC_DEFINE_UNQUOTED([WITH_TEST], 1, [whether Test driver is enabled])
267
fi
268
AM_CONDITIONAL([WITH_TEST], [test "$with_test" = "yes"])
269

D
Daniel P. Berrange 已提交
270
if test "$with_remote" = "yes" ; then
271
    AC_DEFINE_UNQUOTED([WITH_REMOTE], 1, [whether Remote driver is enabled])
272
fi
273
AM_CONDITIONAL([WITH_REMOTE], [test "$with_remote" = "yes"])
274

275
if test "$with_libvirtd" = "yes" ; then
276
    AC_DEFINE_UNQUOTED([WITH_LIBVIRTD], 1, [whether libvirtd daemon is enabled])
277
fi
278
AM_CONDITIONAL([WITH_LIBVIRTD], [test "$with_libvirtd" = "yes"])
279

280 281 282 283 284 285 286
XEN_LIBS=""
XEN_CFLAGS=""
dnl search for the Xen store library
if test "$with_xen" != "no" ; then
    if test "$with_xen" != "yes" -a "$with_xen" != "check" ; then
        XEN_CFLAGS="-I$with_xen/include"
        XEN_LIBS="-L$with_xen/lib64 -L$with_xen/lib"
287
    fi
288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306
    fail=0
    old_LIBS="$LIBS"
    old_CFLAGS="$CFLAGS"
    CFLAGS="$CFLAGS $XEN_CFLAGS"
    LIBS="$LIBS $XEN_LIBS"
    AC_CHECK_LIB([xenstore], [xs_read], [
           with_xen=yes
           XEN_LIBS="$XEN_LIBS -lxenstore"
       ],[
           if test "$with_xen" = "check" ; then
               with_xen=no
           else
               with_xen=no
               fail=1
           fi
       ])

    test $fail = 1 &&
      AC_MSG_ERROR([You must install the Xen development package to compile Xen driver with -lxenstore])
307

308
    AC_CHECK_HEADERS([xen/xen.h xen/version.h xen/dom0_ops.h],,[
309 310 311 312 313 314 315
	AC_MSG_ERROR([Cannot find standard Xen headers. Is xen-devel installed?])
    ],
[#include <stdio.h>
#include <stdint.h>
])

    dnl Search for the location of <xen/{linux,sys}/privcmd.h>.
316 317
    AC_CHECK_HEADERS([xen/sys/privcmd.h],,[
	AC_CHECK_HEADERS([xen/linux/privcmd.h],,[
318 319 320 321 322 323 324 325 326 327 328
	    AC_MSG_ERROR([Cannot find header file <xen/linux/privcmd.h> or <xen/sys/privcmd.h>.  Is xen-devel installed?])
	],
[#include <stdio.h>
#include <stdint.h>
#include <xen/xen.h>
])
    ],
[#include <stdio.h>
#include <stdint.h>
#include <xen/xen.h>
])
329 330
    LIBS="$old_LIBS"
    CFLAGS="$old_CFLAGS"
331
fi
332 333 334 335 336 337
if test "$with_xen" = "yes"; then
    AC_DEFINE_UNQUOTED([WITH_XEN], 1, [whether Xen driver is enabled])
fi
AM_CONDITIONAL([WITH_XEN], [test "$with_xen" = "yes"])
AC_SUBST([XEN_CFLAGS])
AC_SUBST([XEN_LIBS])
338

339 340 341 342 343 344 345 346 347 348 349 350 351 352
dnl
dnl check for kernel headers required by xen_inotify
dnl
if test "$with_xen" != "yes"; then
    with_xen_inotify=no
fi
if test "$with_xen_inotify" != "no"; then
    AC_CHECK_HEADER([linux/inotify.h],[],[with_xen_inotify=no])
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"])

353
dnl
354
dnl check for kernel headers required by src/bridge.c
355
dnl
356
if test "$with_qemu" = "yes" -o "$with_lxc" = "yes" ; then
357
  AC_CHECK_HEADERS([linux/param.h linux/sockios.h linux/if_bridge.h linux/if_tun.h],,
358 359
                   AC_MSG_ERROR([You must install kernel-headers in order to compile libvirt]))
fi
360

361 362
dnl
dnl check for kvm headers
363
dnl
364 365
AC_CHECK_HEADERS([linux/kvm.h])

366 367 368
dnl Need to test if pkg-config exists
PKG_PROG_PKG_CONFIG

369 370 371 372 373 374 375
dnl ==========================================================================
dnl find libxml2 library, borrowed from xmlsec
dnl ==========================================================================
LIBXML_CONFIG="xml2-config"
LIBXML_CFLAGS=""
LIBXML_LIBS=""
LIBXML_FOUND="no"
376

377
AC_ARG_WITH([libxml], [  --with-libxml=[PFX]       libxml2 location])
378
if test "x$with_libxml" = "xno" ; then
379
    AC_MSG_CHECKING(for libxml2 libraries >= $LIBXML_REQUIRED)
380
    AC_MSG_ERROR([libxml2 >= $LIBXML_REQUIRED is required for libvirt])
R
Richard W.M. Jones 已提交
381
elif test "x$with_libxml" = "x" -a "x$PKG_CONFIG" != "x" ; then
382
    PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= $LIBXML_REQUIRED, [LIBXML_FOUND=yes], [LIBXML_FOUND=no])
383
fi
384 385
if test "$LIBXML_FOUND" = "no" ; then
    if test "x$with_libxml" != "x" ; then
386 387
	LIBXML_CONFIG=$with_libxml/bin/$LIBXML_CONFIG
    fi
388
    AC_MSG_CHECKING(libxml2 $LIBXML_CONFIG >= $LIBXML_REQUIRED )
389
    if ! $LIBXML_CONFIG --version > /dev/null 2>&1 ; then
390
	AC_MSG_ERROR([Could not find libxml2 anywhere (see config.log for details).])
391 392
    fi
    vers=`$LIBXML_CONFIG --version | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
393
    minvers=`echo $LIBXML_REQUIRED | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
394 395 396 397
    if test "$vers" -ge "$minvers" ; then
        LIBXML_LIBS="`$LIBXML_CONFIG --libs`"
        LIBXML_CFLAGS="`$LIBXML_CONFIG --cflags`"
	LIBXML_FOUND="yes"
398
        AC_MSG_RESULT(yes)
399
    else
400 401
        AC_MSG_ERROR(
          [You need at least libxml2 $LIBXML_REQUIRED for this version of libvirt])
402 403 404
    fi
fi

405 406
AC_SUBST([LIBXML_CFLAGS])
AC_SUBST([LIBXML_LIBS])
407

408 409
dnl xmlURI structure has query_raw?
old_cflags="$CFLAGS"
410
old_ldflags="$LDFLAGS"
411
CFLAGS="$CFLAGS $LIBXML_CFLAGS"
412
LDFLAGS="$LDFLAGS $LIBXML_LIBS"
413 414
AC_CHECK_MEMBER([struct _xmlURI.query_raw],
		[AC_DEFINE([HAVE_XMLURI_QUERY_RAW], [], [Have query_raw field in libxml2 xmlURI structure])],,
415 416
		[#include <libxml/uri.h>])
CFLAGS="$old_cflags"
417
LDFLAGS="$old_ldflags"
418 419

dnl GnuTLS library
420 421
GNUTLS_CFLAGS=
GNUTLS_LIBS=
422 423 424 425 426 427
GNUTLS_FOUND=no
if test -z "$PKG_CONFIG" ; then
  PKG_CHECK_MODULES(GNUTLS, gnutls >= $GNUTLS_REQUIRED,
     [GNUTLS_FOUND=yes], [GNUTLS_FOUND=no])
fi
if test "$GNUTLS_FOUND" = "no"; then
428
  fail=0
429
  old_libs="$LIBS"
430 431 432 433 434 435
  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])

436 437 438 439
  GNUTLS_LIBS=$LIBS
  LIBS="$old_libs"
fi

440 441
AC_SUBST([GNUTLS_CFLAGS])
AC_SUBST([GNUTLS_LIBS])
442

443 444 445
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.
446 447 448 449
old_cflags="$CFLAGS"
old_ldflags="$LDFLAGS"
CFLAGS="$CFLAGS $GNUTLS_CFLAGS"
LDFLAGS="$LDFLAGS $GNUTLS_LIBS"
450 451
AC_CHECK_TYPE([gnutls_session],
	AC_DEFINE([GNUTLS_1_0_COMPAT],[],
452 453
		[enable GnuTLS 1.0 compatibility macros]),,
	[#include <gnutls/gnutls.h>])
454 455
CFLAGS="$old_cflags"
LDFLAGS="$old_ldflags"
456

457

458
dnl Cyrus SASL
459
AC_ARG_WITH([sasl],
460 461
  [  --with-sasl         use cyrus SASL for authentication],
  [],
462
  [with_sasl=check])
463 464 465

SASL_CFLAGS=
SASL_LIBS=
466 467
if test "x$with_sasl" != "xno"; then
  if test "x$with_sasl" != "xyes" -a "x$with_sasl" != "xcheck"; then
468 469 470
    SASL_CFLAGS="-I$with_sasl"
    SASL_LIBS="-L$with_sasl"
  fi
471
  fail=0
472 473 474 475
  old_cflags="$CFLAGS"
  old_libs="$LIBS"
  CFLAGS="$CFLAGS $SASL_CFLAGS"
  LIBS="$LIBS $SASL_LIBS"
476 477 478 479
  AC_CHECK_HEADER([sasl/sasl.h],[],[
    if test "x$with_sasl" != "xcheck" ; then
        with_sasl=no
    else
480
        fail=1
481 482
    fi])
  if test "x$with_sasl" != "xno" ; then
483
    AC_CHECK_LIB([sasl2], [sasl_client_init],[with_sasl=yes],[
484 485 486
      if test "x$with_sasl" = "xcheck" ; then
          with_sasl=no
      else
487
          fail=1
488 489
      fi])
  fi
490 491
  test $fail = 1 &&
    AC_MSG_ERROR([You must install the Cyrus SASL development package in order to compile libvirt])
492 493 494
  CFLAGS="$old_cflags"
  LIBS="$old_libs"
  SASL_LIBS="$SASL_LIBS -lsasl2"
495
  if test "x$with_sasl" = "xyes" ; then
496
    AC_DEFINE_UNQUOTED([HAVE_SASL], 1,
497 498
      [whether Cyrus SASL is available for authentication])
  fi
499
fi
500 501 502
AM_CONDITIONAL([HAVE_SASL], [test "x$with_sasl" = "xyes"])
AC_SUBST([SASL_CFLAGS])
AC_SUBST([SASL_LIBS])
503 504


505 506 507
dnl PolicyKit library
POLKIT_CFLAGS=
POLKIT_LIBS=
508
AC_ARG_WITH([polkit],
509 510 511 512
  [  --with-polkit         use PolicyKit for UNIX socket access checks],
  [],
  [with_polkit=check])

513 514 515 516 517 518 519 520 521 522 523
if test "x$with_polkit" = "xyes" -o "x$with_polkit" = "xcheck"; then
  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
524
    AC_DEFINE_UNQUOTED([HAVE_POLKIT], 1,
525
      [use PolicyKit for UNIX socket access checks])
526 527 528 529 530

    old_CFLAGS=$CFLAGS
    old_LDFLAGS=$LDFLAGS
    CFLAGS="$CFLAGS $POLKIT_CFLAGS"
    LDFLAGS="$LDFLAGS $POLKIT_LIBS"
531
    AC_CHECK_FUNCS([polkit_context_is_caller_authorized])
532 533 534
    CFLAGS="$old_CFLAGS"
    LDFLAGS="$old_LDFLAGS"

535
    AC_PATH_PROG([POLKIT_AUTH], [polkit-auth])
536 537 538
    if test "x$POLKIT_AUTH" != "x"; then
      AC_DEFINE_UNQUOTED([POLKIT_AUTH],["$POLKIT_AUTH"],[Location of polkit-auth program])
    fi
539
  fi
540
fi
541 542 543
AM_CONDITIONAL([HAVE_POLKIT], [test "x$with_polkit" = "xyes"])
AC_SUBST([POLKIT_CFLAGS])
AC_SUBST([POLKIT_LIBS])
544

545
dnl Avahi library
546
AC_ARG_WITH([avahi],
547 548 549 550 551 552
  [  --with-avahi         use avahi to advertise remote daemon],
  [],
  [with_avahi=check])

AVAHI_CFLAGS=
AVAHI_LIBS=
553 554 555 556 557 558 559 560 561 562 563
if test "x$with_avahi" = "xyes" -o "x$with_avahi" = "xcheck"; then
  PKG_CHECK_MODULES(AVAHI, avahi-client >= $AVAHI_REQUIRED,
    [with_avahi=yes], [
    if test "x$with_avahi" = "xcheck" ; then
       with_avahi=no
    else
       AC_MSG_ERROR(
         [You must install Avahi >= $AVAHI_REQUIRED to compile libvirt])
    fi
  ])
  if test "x$with_avahi" = "xyes" ; then
564
    AC_DEFINE_UNQUOTED([HAVE_AVAHI], 1,
565 566
      [whether Avahi is used to broadcast server presense])
  fi
567
fi
568 569 570
AM_CONDITIONAL([HAVE_AVAHI], [test "x$with_avahi" = "xyes"])
AC_SUBST([AVAHI_CFLAGS])
AC_SUBST([AVAHI_LIBS])
571

572
dnl SELinux
573
AC_ARG_WITH([selinux],
574 575 576 577 578 579 580 581 582 583 584
  [  --with-selinux         use SELinux to manage security],
  [],
  [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])
585
    AC_CHECK_LIB([selinux], [fgetfilecon],[],[with_selinux=no])
586 587 588 589
    if test "$with_selinux" != "no"; then
      with_selinux="yes"
    fi
  else
590 591 592 593 594
    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])
595 596 597 598 599 600
  fi
  CFLAGS="$old_cflags"
  LIBS="$old_libs"
fi
if test "$with_selinux" = "yes"; then
  SELINUX_LIBS="-lselinux"
601
  AC_DEFINE_UNQUOTED([HAVE_SELINUX], 1, [whether SELinux is available for security])
602
fi
603 604 605
AM_CONDITIONAL([HAVE_SELINUX], [test "$with_selinux" != "no"])
AC_SUBST([SELINUX_CFLAGS])
AC_SUBST([SELINUX_LIBS])
606

607
dnl NUMA lib
608
AC_ARG_WITH([numactl],
609 610 611 612 613 614 615 616 617 618 619
  [  --with-numactl         use numactl for host topology info],
  [],
  [with_numactl=check])

NUMACTL_CFLAGS=
NUMACTL_LIBS=
if test "$with_qemu" = "yes" -a "$with_numactl" != "no"; then
  old_cflags="$CFLAGS"
  old_libs="$LIBS"
  if test "$with_numactl" = "check"; then
    AC_CHECK_HEADER([numa.h],[],[with_numactl=no])
620
    AC_CHECK_LIB([numa], [numa_available],[],[with_numactl=no])
621 622 623 624
    if test "$with_numactl" != "no"; then
      with_numactl="yes"
    fi
  else
625 626 627 628 629
    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])
630 631 632 633 634 635
  fi
  CFLAGS="$old_cflags"
  LIBS="$old_libs"
fi
if test "$with_numactl" = "yes"; then
  NUMACTL_LIBS="-lnuma"
636
  AC_DEFINE_UNQUOTED([HAVE_NUMACTL], 1, [whether numactl is available for topology info])
637
fi
638 639 640
AM_CONDITIONAL([HAVE_NUMACTL], [test "$with_numactl" != "no"])
AC_SUBST([NUMACTL_CFLAGS])
AC_SUBST([NUMACTL_LIBS])
641

K
Karel Zak 已提交
642
dnl virsh libraries
643
AC_CHECK_HEADERS([readline/readline.h])
644 645

# Check for readline.
646
AC_CHECK_LIB([readline], [readline],
647 648 649 650 651 652 653 654 655
	[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=
656
    AC_SEARCH_LIBS([tgetent], [ncurses curses termcap termlib])
657 658 659 660 661 662
    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.
663
	AC_CHECK_LIB([readline], [rl_initialize],
664 665 666 667 668 669 670 671 672 673 674 675 676 677
		[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
678
else
679
    READLINE_CFLAGS=
680
fi
681 682
AC_SUBST([READLINE_CFLAGS])
AC_SUBST([VIRSH_LIBS])
K
Karel Zak 已提交
683

684

685 686 687 688 689 690 691 692 693 694 695
AC_ARG_WITH([network],
[  --with-network              with virtual network driver (on)],[],[with_network=yes])
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"])


696 697 698 699
dnl
dnl Storage driver checks
dnl

700
AC_ARG_WITH([storage-fs],
701
[  --with-storage-fs           with FileSystem backend for the storage driver (on)],[],[with_storage_fs=check])
702
AC_ARG_WITH([storage-lvm],
703
[  --with-storage-lvm          with LVM backend for the storage driver (on)],[],[with_storage_lvm=check])
704
AC_ARG_WITH([storage-iscsi],
705
[  --with-storage-iscsi        with iSCSI backend for the storage driver (on)],[],[with_storage_iscsi=check])
706
AC_ARG_WITH([storage-disk],
707
[  --with-storage-disk         with GPartd Disk backend for the storage driver (on)],[],[with_storage_disk=check])
708

D
Daniel P. Berrange 已提交
709 710 711 712 713 714 715 716 717 718 719 720 721 722
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
  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"])


723
if test "$with_storage_fs" = "yes" -o "$with_storage_fs" = "check"; then
724 725
  AC_PATH_PROG([MOUNT], [mount], [], [$PATH:/sbin:/usr/sbin])
  AC_PATH_PROG([UMOUNT], [umount], [], [$PATH:/sbin:/usr/sbin])
726
  if test "$with_storage_fs" = "yes" ; then
727
    if test -z "$MOUNT" ; then AC_MSG_ERROR([We need mount for FS storage driver]) ; fi
728
    if test -z "$UMOUNT" ; then AC_MSG_ERROR([We need umount for FS storage driver]) ; fi
729 730 731 732 733 734 735 736
  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
737
    AC_DEFINE_UNQUOTED([WITH_STORAGE_FS], 1, [whether FS backend for storage driver is enabled])
738 739 740 741 742 743
    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
744
AM_CONDITIONAL([WITH_STORAGE_FS], [test "$with_storage_fs" = "yes"])
745 746 747 748 749
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
750

751
AC_PATH_PROG([QEMU_IMG], [qemu-img], [], [$PATH:/sbin:/usr/sbin:/bin:/usr/bin])
752
if test -n "$QEMU_IMG" ; then
753
  AC_DEFINE_UNQUOTED([HAVE_QEMU_IMG], 1, [whether qemu-img is available for non-raw files])
754 755 756 757
  AC_DEFINE_UNQUOTED([QEMU_IMG],["$QEMU_IMG"],
      [Location or name of the qemu-img program])
fi

758
AC_PATH_PROG([QCOW_CREATE], [qcow-create], [], [$PATH:/sbin:/usr/sbin:/bin:/usr/bin])
759
if test -n "$QCOW_CREATE" ; then
760
  AC_DEFINE_UNQUOTED([HAVE_QCOW_CREATE], 1, [whether qcow-create is available for non-raw files])
761 762 763 764 765
  AC_DEFINE_UNQUOTED([QCOW_CREATE],["$QCOW_CREATE"],
      [Location or name of the qcow-create program])
fi


766
if test "$with_storage_lvm" = "yes" -o "$with_storage_lvm" = "check"; then
767 768 769 770 771 772 773
  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])
774
  AC_PATH_PROG([VGSCAN], [vgscan], [], [$PATH:/sbin:/usr/sbin])
775 776 777
  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])
778 779

  if test "$with_storage_lvm" = "yes" ; then
780 781 782 783 784 785 786
    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
787
    if test -z "$VGSCAN" ; then AC_MSG_ERROR([We need vgscan for LVM storage driver]) ; fi
788 789 790
    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
791 792 793 794 795 796 797
  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
798 799
    if test -z "$VGCHANGE" ; then with_storage_lvm=no ; fi
    if test -z "$VGSCAN" ; then with_storage_lvm=no ; fi
800 801 802 803 804 805 806 807
    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
808
    AC_DEFINE_UNQUOTED([WITH_STORAGE_LVM], 1, [whether LVM backend for storage driver is enabled])
809 810 811 812 813 814 815
    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])
816
    AC_DEFINE_UNQUOTED([VGSCAN],["$VGSCAN"],[Location of vgscan program])
817 818 819 820 821
    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
822
AM_CONDITIONAL([WITH_STORAGE_LVM], [test "$with_storage_lvm" = "yes"])
823 824


825 826

if test "$with_storage_iscsi" = "yes" -o "$with_storage_iscsi" = "check"; then
827
  AC_PATH_PROG([ISCSIADM], [iscsiadm], [], [$PATH:/sbin:/usr/sbin])
828
  if test "$with_storage_iscsi" = "yes" ; then
829
    if test -z "$ISCSIADM" ; then AC_MSG_ERROR([We need iscsiadm for iSCSI storage driver]) ; fi
830 831 832 833 834 835 836
  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
837
    AC_DEFINE_UNQUOTED([WITH_STORAGE_ISCSI], 1, [whether iSCSI backend for storage driver is enabled])
838 839 840
    AC_DEFINE_UNQUOTED([ISCSIADM],["$ISCSIADM"],[Location of iscsiadm program])
  fi
fi
841
AM_CONDITIONAL([WITH_STORAGE_ISCSI], [test "$with_storage_iscsi" = "yes"])
842 843


844 845 846 847

LIBPARTED_CFLAGS=
LIBPARTED_LIBS=
if test "$with_storage_disk" = "yes" -o "$with_storage_disk" = "check"; then
848
  AC_PATH_PROG([PARTED], [parted], [], [$PATH:/sbin:/usr/sbin])
849 850 851 852 853 854
  if test -z "$PARTED" ; then
    with_storage_disk=no
    PARTED_FOUND=no
  else
    PARTED_FOUND=yes
  fi
855 856 857 858 859 860 861 862 863

  if test "$with_storage_disk" != "no" -a "x$PKG_CONFIG" != "x" ; then
    PKG_CHECK_MODULES(LIBPARTED, libparted >= $PARTED_REQUIRED, [], [PARTED_FOUND=no])
  fi
  if test "$PARTED_FOUND" = "no"; then
    # RHEL-5 vintage parted is missing pkg-config files
    save_LIBS="$LIBS"
    save_CFLAGS="$CFLAGS"
    PARTED_FOUND=yes
864 865 866
    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])
867 868 869 870 871 872 873
    LIBPARTED_LIBS="-luuid -lparted"
    LIBS="$save_LIBS"
    CFLAGS="$save_CFLAGS"
  fi

  if test "$PARTED_FOUND" = "no" ; then
    if test "$with_storage_disk" = "yes" ; then
874
      AC_MSG_ERROR([We need parted for disk storage driver])
875 876 877 878 879 880 881 882
    else
      with_storage_disk=no
    fi
  else
    with_storage_disk=yes
  fi

  if test "$with_storage_disk" = "yes"; then
883
    AC_DEFINE_UNQUOTED([WITH_STORAGE_DISK], 1, [whether Disk backend for storage driver is enabled])
884 885 886
    AC_DEFINE_UNQUOTED([PARTED],["$PARTED"], [Location or name of the parted program])
  fi
fi
887 888 889
AM_CONDITIONAL([WITH_STORAGE_DISK], [test "$with_storage_disk" = "yes"])
AC_SUBST([LIBPARTED_CFLAGS])
AC_SUBST([LIBPARTED_LIBS])
890 891


892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914
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
915
		with_python=`$PYTHON -c "import sys; print sys.exec_prefix"`
916
	    else
917
		AC_PATH_PROG([PYTHON], [python python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5])
918 919 920 921 922 923 924 925 926 927 928 929 930 931
	    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
932
	    PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
933 934 935
	else
	    if test -r $prefix/include/python$PYTHON_VERSION/Python.h
	    then
936 937
	        PYTHON_INCLUDES=$prefix/include/python$PYTHON_VERSION
	        PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
938 939 940 941
	    else
		if test -r /usr/include/python$PYTHON_VERSION/Python.h
		then
		    PYTHON_INCLUDES=/usr/include/python$PYTHON_VERSION
942
	            PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
943 944 945 946 947 948 949 950 951 952 953 954 955 956
		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
957
        pythondir='$(libdir)/python$(PYTHON_VERSION)/site-packages'
958 959 960 961
    fi
else
    PYTHON=
fi
962 963 964 965 966
AM_CONDITIONAL([WITH_PYTHON], test "$PYTHON_INCLUDES" != "")
AC_SUBST([pythondir])
AC_SUBST([PYTHON_VERSION])
AC_SUBST([PYTHON_INCLUDES])
AC_SUBST([PYTHON_SITE_PACKAGES])
967

968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987
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)

988
AM_CONDITIONAL([ENABLE_XEN_TESTS], [test "$RUNNING_XEN" != "no" -a "$RUNNING_XEND" != "no"])
989

990
AC_ARG_ENABLE([test-coverage],
D
Daniel P. Berrange 已提交
991
[  --enable-test-coverage  turn on code coverage instrumentation],
992 993 994 995 996
[case "${enableval}" in
   yes|no) ;;
   *)      AC_MSG_ERROR([bad value ${enableval} for test-coverage option]) ;;
 esac],
              [enableval=no])
D
Daniel P. Berrange 已提交
997
enable_coverage=$enableval
998

D
Daniel P. Berrange 已提交
999
if test "${enable_coverage}" = yes; then
1000 1001 1002 1003 1004 1005 1006
  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

D
Daniel P. Berrange 已提交
1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025
AC_ARG_ENABLE([test-oom],
[  --enable-test-oom       memory allocation failure checking],
[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

1026
dnl Enable building the proxy?
1027

1028
AC_ARG_WITH([xen-proxy],
1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043
[  --with-xen-proxy              add XEN setuid proxy support (on)],[],[with_xen_proxy=auto])

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])

1044
AM_CONDITIONAL([WITH_PROXY],[test "$with_xen_proxy" = "yes"])
1045
if test "$with_xen_proxy" = "yes"; then
1046
  AC_DEFINE([WITH_PROXY], 1, [Whether Xen proxy is enabled])
1047
fi
1048

1049
dnl Enable building libvirtd?
1050
AM_CONDITIONAL([WITH_LIBVIRTD],[test "x$with_libvirtd" = "xyes"])
1051

1052
dnl Check for gettext
1053 1054
AM_GNU_GETTEXT_VERSION([0.14.1])
AM_GNU_GETTEXT([external])
1055
ALL_LINGUAS=`cd "$srcdir/po" > /dev/null && ls *.po | sed 's+\.po$++'`
1056

1057 1058 1059 1060 1061 1062
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=
1063
MINGW_EXTRA_LDFLAGS=
1064 1065 1066 1067 1068 1069 1070 1071
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
    ;;
1072 1073 1074
  *-*-mingw*)
    MINGW_EXTRA_LDFLAGS="-no-undefined"
    ;;
1075
esac
1076 1077 1078 1079
AC_SUBST([CYGWIN_EXTRA_LDFLAGS])
AC_SUBST([CYGWIN_EXTRA_LIBADD])
AC_SUBST([CYGWIN_EXTRA_PYTHON_LIBADD])
AC_SUBST([MINGW_EXTRA_LDFLAGS])
1080

1081 1082 1083 1084
dnl Look for windres to build a Windows icon resource.
AC_CHECK_TOOL([WINDRES], [windres], [no])
AM_CONDITIONAL([WITH_WIN_ICON], [test "$WINDRES" != "no"])

1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116


dnl Driver-Modules library
AC_ARG_WITH([driver-modules],
  [  --with-driver-modules       build drivers as loadable modules],
  [],
  [with_driver_modules=no])

DRIVER_MODULES_CFLAGS=
DRIVER_MODULES_LIBS=
if test "x$with_driver_modules" = "xyes" ; then
  old_cflags="$CFLAGS"
  old_libs="$LIBS"
  fail=0
  AC_CHECK_HEADER([dlfcn.h],[],[fail=1])
  AC_CHECK_LIB([dl], [dlopen],[],[fail=1])
  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
  DRIVER_MODULES_CFLAGS="-export-dynamic"
  DRIVER_MODULES_LIBS="-ldl"
  AC_DEFINE_UNQUOTED([WITH_DRIVER_MODULES], 1, [whether to build drivers as modules])
fi
AM_CONDITIONAL([WITH_DRIVER_MODULES], [test "$with_driver_modules" != "no"])
AC_SUBST([DRIVER_MODULES_CFLAGS])
AC_SUBST([DRIVER_MODULES_LIBS])


1117 1118 1119 1120 1121
# 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-.}
1122
AC_SUBST([LV_LIBTOOL_OBJDIR])
1123

1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225
dnl HAL or DeviceKit library for host device enumeration
HAL_REQUIRED=0.0
HAL_CFLAGS=
HAL_LIBS=
AC_ARG_WITH([hal],
  [  --with-hal         use HAL for host device enumeration],
  [],
  [with_hal=check])

if test "$with_libvirtd" = "no" ; then
  with_hal=no
fi
if test "x$with_hal" = "xyes" -o "x$with_hal" = "xcheck"; then
  PKG_CHECK_MODULES(HAL, hal >= $HAL_REQUIRED,
    [with_hal=yes], [
    if test "x$with_hal" = "xcheck" ; then
       with_hal=no
    else
       AC_MSG_ERROR(
         [You must install hal-devel >= $HAL_REQUIRED to compile libvirt])
    fi
  ])
  if test "x$with_hal" = "xyes" ; then
    AC_DEFINE_UNQUOTED([HAVE_HAL], 1,
      [use HAL for host device enumeration])

    old_CFLAGS=$CFLAGS
    old_LDFLAGS=$LDFLAGS
    CFLAGS="$CFLAGS $HAL_CFLAGS"
    LDFLAGS="$LDFLAGS $HAL_LIBS"
    AC_CHECK_FUNCS([libhal_get_all_devices],,[with_hal=no])
    CFLAGS="$old_CFLAGS"
    LDFLAGS="$old_LDFLAGS"
  fi
fi
AM_CONDITIONAL([HAVE_HAL], [test "x$with_hal" = "xyes"])
AC_SUBST([HAL_CFLAGS])
AC_SUBST([HAL_LIBS])

DEVKIT_REQUIRED=0.0
DEVKIT_CFLAGS=
DEVKIT_LIBS=
AC_ARG_WITH([devkit],
  [  --with-devkit      use DeviceKit for host device enumeration],
  [],
  [with_devkit=no])

if test "$with_libvirtd" = "no" ; then
  with_devkit=no
fi

dnl Extra check needed while devkit pkg-config info missing glib2 dependency
PKG_CHECK_MODULES(GLIB2, glib-2.0 >= 0.0,,[
  if test "x$with_devkit" = "xcheck"; then
    with_devkit=no
  elif test "x$with_devkit" = "xyes"; then
    AC_MSG_ERROR([required package DeviceKit requires package glib-2.0])
  fi])

if test "x$with_devkit" = "xyes" -o "x$with_devkit" = "xcheck"; then
  PKG_CHECK_MODULES(DEVKIT, devkit-gobject >= $DEVKIT_REQUIRED,
    [with_devkit=yes], [
    if test "x$with_devkit" = "xcheck" ; then
       with_devkit=no
    else
       AC_MSG_ERROR(
         [You must install DeviceKit-devel >= $DEVKIT_REQUIRED to compile libvirt])
    fi
  ])
  if test "x$with_devkit" = "xyes" ; then
    AC_DEFINE_UNQUOTED([HAVE_DEVKIT], 1,
      [use DeviceKit for host device enumeration])

    dnl Add glib2 flags explicitly while devkit pkg-config info missing glib2 dependency
    DEVKIT_CFLAGS="$GLIB2_CFLAGS $DEVKIT_CFLAGS"
    DEVKIT_LIBS="$GLIB2_LIBS $DEVKIT_LIBS"

    dnl Add more flags apparently required for devkit to work properly
    DEVKIT_CFLAGS="$DEVKIT_CFLAGS -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT"

    old_CFLAGS=$CFLAGS
    old_LDFLAGS=$LDFLAGS
    CFLAGS="$CFLAGS $DEVKIT_CFLAGS"
    LDFLAGS="$LDFLAGS $DEVKIT_LIBS"
    AC_CHECK_FUNCS([devkit_client_connect],,[with_devkit=no])
    CFLAGS="$old_CFLAGS"
    LDFLAGS="$old_LDFLAGS"
  fi
fi
AM_CONDITIONAL([HAVE_DEVKIT], [test "x$with_devkit" = "xyes"])
AC_SUBST([DEVKIT_CFLAGS])
AC_SUBST([DEVKIT_LIBS])

with_nodedev=no;
if test "$with_devkit" = "yes" -o "$with_hal" = "yes";
then
  with_nodedev=yes
  AC_DEFINE_UNQUOTED([WITH_NODE_DEVICES], 1, [with node device driver])
fi
AM_CONDITIONAL([WITH_NODE_DEVICES], [test "$with_nodedev" = "yes"])


1226 1227
# very annoying
rm -f COPYING
1228
cp COPYING.LIB COPYING
1229

1230
AC_OUTPUT(Makefile src/Makefile include/Makefile docs/Makefile \
1231
          docs/examples/Makefile docs/devhelp/Makefile \
1232
	  docs/examples/python/Makefile \
1233
	  gnulib/lib/Makefile \
J
Jim Meyering 已提交
1234
	  gnulib/tests/Makefile \
R
Richard W.M. Jones 已提交
1235
          libvirt.pc libvirt.spec mingw32-libvirt.spec \
D
Daniel P. Berrange 已提交
1236
          src/libvirt_sym.version \
1237
          po/Makefile.in \
1238
	  include/libvirt/Makefile include/libvirt/libvirt.h \
K
Karel Zak 已提交
1239
	  python/Makefile python/tests/Makefile \
1240
          qemud/Makefile \
1241
          tests/Makefile proxy/Makefile \
1242 1243
          tests/xml2sexprdata/Makefile \
          tests/sexpr2xmldata/Makefile \
1244
          tests/xmconfigdata/Makefile \
1245
          tests/xencapsdata/Makefile \
1246
          tests/confdata/Makefile \
1247
          examples/domain-events/events-c/Makefile)
D
Daniel P. Berrange 已提交
1248 1249 1250 1251 1252 1253 1254 1255

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])
1256
AC_MSG_NOTICE([   Proxy: $with_xen_proxy])
D
Daniel P. Berrange 已提交
1257
AC_MSG_NOTICE([    QEMU: $with_qemu])
1258
AC_MSG_NOTICE([     UML: $with_uml])
D
Daniel P. Berrange 已提交
1259
AC_MSG_NOTICE([  OpenVZ: $with_openvz])
D
Daniel Veillard 已提交
1260
AC_MSG_NOTICE([     LXC: $with_lxc])
D
Daniel P. Berrange 已提交
1261 1262
AC_MSG_NOTICE([    Test: $with_test])
AC_MSG_NOTICE([  Remote: $with_remote])
1263
AC_MSG_NOTICE([ Network: $with_network])
1264
AC_MSG_NOTICE([Libvirtd: $with_libvirtd])
D
Daniel P. Berrange 已提交
1265
AC_MSG_NOTICE([])
1266 1267
AC_MSG_NOTICE([Storage Drivers])
AC_MSG_NOTICE([])
D
Daniel P. Berrange 已提交
1268
AC_MSG_NOTICE([     Dir: $with_storage_dir])
1269 1270
AC_MSG_NOTICE([      FS: $with_storage_fs])
AC_MSG_NOTICE([   NetFS: $with_storage_fs])
1271
AC_MSG_NOTICE([     LVM: $with_storage_lvm])
1272
AC_MSG_NOTICE([   iSCSI: $with_storage_iscsi])
1273
AC_MSG_NOTICE([    Disk: $with_storage_disk])
1274
AC_MSG_NOTICE([])
1275 1276 1277 1278 1279 1280 1281 1282
AC_MSG_NOTICE([Driver Loadable Modules])
AC_MSG_NOTICE([])
if test "$with_driver_modules" != "no" ; then
AC_MSG_NOTICE([  dlopen: $DRIVER_MODULES_CFLAGS $DRIVER_MODULES_LIBS])
else
AC_MSG_NOTICE([  dlopen: no])
fi
AC_MSG_NOTICE([])
D
Daniel P. Berrange 已提交
1283 1284 1285
AC_MSG_NOTICE([Libraries])
AC_MSG_NOTICE([])
AC_MSG_NOTICE([  libxml: $LIBXML_CFLAGS $LIBXML_LIBS])
1286
AC_MSG_NOTICE([  gnutls: $GNUTLS_CFLAGS $GNUTLS_LIBS])
1287 1288 1289 1290 1291
if test "$with_sasl" != "no" ; then
AC_MSG_NOTICE([    sasl: $SASL_CFLAGS $SASL_LIBS])
else
AC_MSG_NOTICE([    sasl: no])
fi
1292 1293 1294 1295 1296
if test "$with_avahi" = "yes" ; then
AC_MSG_NOTICE([   avahi: $AVAHI_CFLAGS $AVAHI_LIBS])
else
AC_MSG_NOTICE([   avahi: no])
fi
1297 1298 1299 1300 1301
if test "$with_polkit" = "yes" ; then
AC_MSG_NOTICE([  polkit: $POLKIT_CFLAGS $POLKIT_LIBS])
else
AC_MSG_NOTICE([  polkit: no])
fi
1302 1303 1304 1305 1306
if test "$with_selinux" = "yes" ; then
AC_MSG_NOTICE([  selinux: $SELINUX_CFLAGS $SELINUX_LIBS])
else
AC_MSG_NOTICE([  selinux: no])
fi
1307 1308 1309 1310 1311
if test "$with_numactl" = "yes" ; then
AC_MSG_NOTICE([  numactl: $NUMACTL_CFLAGS $NUMACTL_LIBS])
else
AC_MSG_NOTICE([  numactl: no])
fi
1312 1313 1314 1315 1316
if test "$with_xen" = "yes" ; then
AC_MSG_NOTICE([  xen: $XEN_CFLAGS $XEN_LIBS])
else
AC_MSG_NOTICE([  xen: no])
fi
1317 1318 1319 1320 1321 1322 1323 1324 1325 1326
if test "$with_hal" = "yes" ; then
AC_MSG_NOTICE([  hal: $HAL_CFLAGS $HAL_LIBS])
else
AC_MSG_NOTICE([  hal: no])
fi
if test "$with_devkit" = "yes" ; then
AC_MSG_NOTICE([  devkit: $DEVKIT_CFLAGS $DEVKIT_LIBS])
else
AC_MSG_NOTICE([  devkit: no])
fi
D
Daniel P. Berrange 已提交
1327
AC_MSG_NOTICE([])
D
Daniel P. Berrange 已提交
1328 1329 1330 1331 1332
AC_MSG_NOTICE([Test suite])
AC_MSG_NOTICE([])
AC_MSG_NOTICE([  Coverage: $enable_coverage])
AC_MSG_NOTICE([  Alloc OOM: $enable_oom])
AC_MSG_NOTICE([])
D
Daniel P. Berrange 已提交
1333 1334 1335
AC_MSG_NOTICE([Miscellaneous])
AC_MSG_NOTICE([])
AC_MSG_NOTICE([  Debug: $enable_debug])
1336
AC_MSG_NOTICE([  Warnings: $enable_compile_warnings])
1337
AC_MSG_NOTICE([  Readline: $lv_use_readline])
D
Daniel P. Berrange 已提交
1338
AC_MSG_NOTICE([])