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

D
Daniel Veillard 已提交
3
AC_INIT([libvirt], [0.5.1])
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 64 65 66 67
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)

68
LIBVIRT_COMPILE_WARNINGS([maximum])
69

R
Richard W.M. Jones 已提交
70 71 72 73
dnl Support large files / 64 bit seek offsets.
dnl Use --disable-largefile if you don't want this.
AC_SYS_LARGEFILE

74
dnl Availability of various common functions (non-fatal if missing).
D
Daniel P. Berrange 已提交
75
AC_CHECK_FUNCS([cfmakeraw regexec uname sched_getaffinity getuid getgid])
76 77

dnl Availability of various common headers (non-fatal if missing).
D
Daniel Veillard 已提交
78
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])
79

80 81
dnl Where are the XDR functions?
dnl If portablexdr is installed, prefer that.
J
John Levon 已提交
82 83
dnl Otherwise try -lrpc (Cygwin) -lxdr (some MinGW), -lnsl (Solaris)
dnl or none (most Unix)
84
AC_CHECK_LIB([portablexdr],[xdrmem_create],[],[
J
John Levon 已提交
85
	AC_SEARCH_LIBS([xdrmem_create],[rpc xdr nsl])
86
	])
87

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

90
dnl Do we have rpcgen?
91 92
AC_PATH_PROG([RPCGEN], [rpcgen], [no])
AM_CONDITIONAL([RPCGEN], [test "x$ac_cv_path_RPCGEN" != "xno"])
93
dnl Is this GLIBC's buggy rpcgen?
94
AM_CONDITIONAL([GLIBC_RPCGEN],
95 96
	       [test "x$ac_cv_path_RPCGEN" != "xno" &&
	        $ac_cv_path_RPCGEN -t </dev/null >/dev/null 2>&1])
97

R
Richard W.M. Jones 已提交
98
dnl pthread?
99 100
AC_CHECK_HEADER([pthread.h],
	[AC_CHECK_LIB([pthread],[pthread_join],[
R
Richard W.M. Jones 已提交
101 102
		AC_DEFINE([HAVE_LIBPTHREAD],[],[Define if pthread (-lpthread)])
		AC_DEFINE([HAVE_PTHREAD_H],[],[Define if <pthread.h>])
103
		LIBS="-lpthread $LIBS"
104
	])])
R
Richard W.M. Jones 已提交
105

106
dnl Miscellaneous external programs.
107 108 109 110
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])
111
AC_PATH_PROG([XMLCATALOG], [xmlcatalog], [/usr/bin/xmlcatalog])
112
AC_PATH_PROG([XSLTPROC], [xsltproc], [/usr/bin/xsltproc])
113
AC_PATH_PROG([AUGPARSE], [augparse], [/usr/bin/augparse])
R
Richard W.M. Jones 已提交
114 115
AC_PROG_MKDIR_P

116 117 118 119
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.
120
AC_PATH_PROG([DNSMASQ], [dnsmasq], [dnsmasq],
121
	[/sbin:/usr/sbin:/usr/local/sbin:$PATH])
122
AC_PATH_PROG([BRCTL], [brctl], [brctl],
123
	[/sbin:/usr/sbin:/usr/local/sbin:$PATH])
124 125
AC_PATH_PROG([UDEVADM], [udevadm], [],
	[/sbin:/usr/sbin:/usr/local/sbin:$PATH])
126 127
AC_PATH_PROG([UDEVSETTLE], [udevsettle], [],
	[/sbin:/usr/sbin:/usr/local/sbin:$PATH])
128 129 130 131 132

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)])
133 134 135 136
if test -n "$UDEVADM"; then
  AC_DEFINE_UNQUOTED([UDEVADM],["$UDEVADM"],
        [Location or name of the udevadm program])
fi
137 138 139 140
if test -n "$UDEVSETTLE"; then
  AC_DEFINE_UNQUOTED([UDEVSETTLE],["$UDEVSETTLE"],
        [Location or name of the udevsettle program])
fi
141

142
dnl Specific dir for HTML output ?
143 144
AC_ARG_WITH([html-dir], [AC_HELP_STRING([--with-html-dir=path],
            [path to base html directory, default $datadir/doc/html])],
145 146
            [HTML_DIR=$withval], [HTML_DIR='$(datadir)/doc'])

147 148
AC_ARG_WITH([html-subdir], [AC_HELP_STRING([--with-html-subdir=path],
            [directory used under html-dir, default $PACKAGE-$VERSION/html])],
149 150
            [test "x$withval" != "x" && HTML_DIR="$HTML_DIR/$withval"],
            [HTML_DIR="$HTML_DIR/\$(PACKAGE)-\$(VERSION)/html"])
151
AC_SUBST([HTML_DIR])
152

153 154 155 156
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 已提交
157
if test "$prefix" = "/usr" -a "$localstatedir" = '${prefix}/var' ; then
158 159
    localstatedir='/var'
fi
D
Daniel P. Berrange 已提交
160
if test "$prefix" = "/usr" -a "$sysconfdir" = '${prefix}/etc' ; then
161 162 163 164
    sysconfdir='/etc'
fi


165
dnl Allow to build without Xen, QEMU/KVM, test or remote driver
166
AC_ARG_WITH([xen],
D
Daniel P. Berrange 已提交
167
[  --with-xen              add XEN support (on)],[],[with_xen=yes])
168 169
AC_ARG_WITH([xen-inotify],
[  --with-xen-inotify      add XEN inotify support (on)],[],[with_xen_inotify=yes])
170
AC_ARG_WITH([qemu],
D
Daniel P. Berrange 已提交
171
[  --with-qemu             add QEMU/KVM support (on)],[],[with_qemu=yes])
172 173
AC_ARG_WITH([uml],
[  --with-uml              add UML support (on)],[],[with_uml=yes])
174
AC_ARG_WITH([openvz],
175
[  --with-openvz           add OpenVZ support (on)],[],[with_openvz=yes])
176
AC_ARG_WITH([lxc],
177
[  --with-lxc              add Linux Container support (on)],[],[with_lxc=yes])
178
AC_ARG_WITH([test],
D
Daniel P. Berrange 已提交
179
[  --with-test             add test driver support (on)],[],[with_test=yes])
180
AC_ARG_WITH([remote],
D
Daniel P. Berrange 已提交
181
[  --with-remote           add remote driver support (on)],[],[with_remote=yes])
182
AC_ARG_WITH([libvirtd],
183
[  --with-libvirtd         add libvirtd support (on)],[],[with_libvirtd=yes])
184

185 186 187
dnl
dnl specific tests to setup DV devel environments with debug etc ...
dnl
188
if [[ "${LOGNAME}" = "veillard" -a "`pwd`" = "/u/veillard/libvirt" ]] ; then
189 190 191 192
    STATIC_BINARIES="-static"
else
    STATIC_BINARIES=
fi
193
AC_SUBST([STATIC_BINARIES])
194

195
dnl --enable-debug=(yes|no)
196 197 198
AC_ARG_ENABLE([debug],
              [AC_HELP_STRING([--enable-debug=no/yes],
                             [enable debugging output])],[],[enable_debug=yes])
199
AM_CONDITIONAL([ENABLE_DEBUG], test x"$enable_debug" = x"yes")
200
if test x"$enable_debug" = x"yes"; then
201
   AC_DEFINE([ENABLE_DEBUG], [], [whether debugging is enabled])
202 203
fi

204

205
AC_MSG_CHECKING([where to write libvirtd PID file])
206
AC_ARG_WITH([remote-pid-file], [AC_HELP_STRING([--with-remote-pid-file=[pidfile|none]], [PID file for libvirtd])])
207 208 209 210 211 212 213
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
214
AC_SUBST([REMOTE_PID_FILE])
215 216
AC_MSG_RESULT($REMOTE_PID_FILE)

217 218 219 220
dnl
dnl init script flavor
dnl
AC_MSG_CHECKING([for init script flavor])
221 222 223
AC_ARG_WITH([init-script],
            [AC_HELP_STRING([--with-init-scripts=[redhat|auto|none]],
		     [Style of init scripts to install (defaults to auto)])])
224 225 226 227 228 229 230
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
231
AM_CONDITIONAL([LIBVIRT_INIT_SCRIPTS_RED_HAT], test x$with_init_scripts = xredhat)
232 233
AC_MSG_RESULT($with_init_scripts)

234 235 236 237
dnl
dnl ensure that Fedora's system-config-firewall knows
dnl about libvirt's iptables rules
dnl
238 239 240
AC_ARG_ENABLE([iptables-lokkit],
              [AC_HELP_STRING([--enable-iptables-lokkit=no/yes/check],
	   [enable registering libvirt's iptables rules with Fedora's lokkit])],
241 242
                             [],[enable_iptables_lokkit=check])
if test x"$enable_iptables_lokkit" != x"no"; then
243
   AC_PATH_PROG([LOKKIT_PATH],[lokkit], [], [/usr/sbin:$PATH])
244 245 246 247 248 249 250
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
251 252
   AC_DEFINE([ENABLE_IPTABLES_LOKKIT], [], [whether support for Fedora's lokkit is enabled])
   AC_DEFINE_UNQUOTED([LOKKIT_PATH], "$LOKKIT_PATH", [path to lokkit binary])
253 254
fi

255 256
AC_PATH_PROG([IPTABLES_PATH], [iptables], /sbin/iptables, [/usr/sbin:$PATH])
AC_DEFINE_UNQUOTED([IPTABLES_PATH], "$IPTABLES_PATH", [path to iptables binary])
257

258
if test "$with_openvz" = "yes"; then
259
    AC_DEFINE_UNQUOTED([WITH_OPENVZ], 1, [whether OpenVZ driver is enabled])
260
fi
261 262
AM_CONDITIONAL([WITH_OPENVZ], [test "$with_openvz" = "yes"])

263 264 265
if test "$with_libvirtd" = "no" ; then
  with_lxc=no
fi
D
Daniel Veillard 已提交
266
if test "$with_lxc" = "yes" ; then
267
    AC_DEFINE_UNQUOTED([WITH_LXC], 1, [whether LXC driver is enabled])
D
Daniel Veillard 已提交
268
fi
269 270
AM_CONDITIONAL([WITH_LXC], [test "$with_lxc" = "yes"])

271 272 273
if test "$with_libvirtd" = "no" ; then
  with_qemu=no
fi
D
Daniel P. Berrange 已提交
274
if test "$with_qemu" = "yes" ; then
275
    AC_DEFINE_UNQUOTED([WITH_QEMU], 1, [whether QEMU driver is enabled])
276
fi
277
AM_CONDITIONAL([WITH_QEMU], [test "$with_qemu" = "yes"])
278

279 280 281 282 283 284 285
with_bridge=no
if test "$with_qemu" = "yes" -o "$with_lxc" = "yes"; then
    with_bridge=yes
    AC_DEFINE_UNQUOTED([WITH_BRIDGE], 1, [whether bridge code is needed])
fi
AM_CONDITIONAL([WITH_BRIDGE], [test "$with_bridge" = "yes"])

286 287 288 289 290
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 已提交
291
if test "$with_test" = "yes" ; then
292
    AC_DEFINE_UNQUOTED([WITH_TEST], 1, [whether Test driver is enabled])
293
fi
294
AM_CONDITIONAL([WITH_TEST], [test "$with_test" = "yes"])
295

D
Daniel P. Berrange 已提交
296
if test "$with_remote" = "yes" ; then
297
    AC_DEFINE_UNQUOTED([WITH_REMOTE], 1, [whether Remote driver is enabled])
298
fi
299
AM_CONDITIONAL([WITH_REMOTE], [test "$with_remote" = "yes"])
300

301
if test "$with_libvirtd" = "yes" ; then
302
    AC_DEFINE_UNQUOTED([WITH_LIBVIRTD], 1, [whether libvirtd daemon is enabled])
303
fi
304
AM_CONDITIONAL([WITH_LIBVIRTD], [test "$with_libvirtd" = "yes"])
305

306 307 308 309 310 311 312
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"
313
    fi
314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332
    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])
333

334
    AC_CHECK_HEADERS([xen/xen.h xen/version.h xen/dom0_ops.h],,[
335 336 337 338 339 340 341
	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>.
342 343
    AC_CHECK_HEADERS([xen/sys/privcmd.h],,[
	AC_CHECK_HEADERS([xen/linux/privcmd.h],,[
344 345 346 347 348 349 350 351 352 353 354
	    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>
])
355 356
    LIBS="$old_LIBS"
    CFLAGS="$old_CFLAGS"
357
fi
358 359 360 361 362 363
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])
364

365 366 367 368 369 370 371 372 373 374 375 376 377 378
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"])

379
dnl
380
dnl check for kernel headers required by src/bridge.c
381
dnl
382
if test "$with_qemu" = "yes" -o "$with_lxc" = "yes" ; then
383
  AC_CHECK_HEADERS([linux/param.h linux/sockios.h linux/if_bridge.h linux/if_tun.h],,
384 385
                   AC_MSG_ERROR([You must install kernel-headers in order to compile libvirt]))
fi
386

387 388
dnl
dnl check for kvm headers
389
dnl
390 391
AC_CHECK_HEADERS([linux/kvm.h])

392 393 394
dnl Need to test if pkg-config exists
PKG_PROG_PKG_CONFIG

395 396 397 398 399 400 401
dnl ==========================================================================
dnl find libxml2 library, borrowed from xmlsec
dnl ==========================================================================
LIBXML_CONFIG="xml2-config"
LIBXML_CFLAGS=""
LIBXML_LIBS=""
LIBXML_FOUND="no"
402

403
AC_ARG_WITH([libxml], [  --with-libxml=[PFX]       libxml2 location])
404
if test "x$with_libxml" = "xno" ; then
405
    AC_MSG_CHECKING(for libxml2 libraries >= $LIBXML_REQUIRED)
406
    AC_MSG_ERROR([libxml2 >= $LIBXML_REQUIRED is required for libvirt])
R
Richard W.M. Jones 已提交
407
elif test "x$with_libxml" = "x" -a "x$PKG_CONFIG" != "x" ; then
408
    PKG_CHECK_MODULES(LIBXML, libxml-2.0 >= $LIBXML_REQUIRED, [LIBXML_FOUND=yes], [LIBXML_FOUND=no])
409
fi
410 411
if test "$LIBXML_FOUND" = "no" ; then
    if test "x$with_libxml" != "x" ; then
412 413
	LIBXML_CONFIG=$with_libxml/bin/$LIBXML_CONFIG
    fi
414
    AC_MSG_CHECKING(libxml2 $LIBXML_CONFIG >= $LIBXML_REQUIRED )
415
    if ! $LIBXML_CONFIG --version > /dev/null 2>&1 ; then
416
	AC_MSG_ERROR([Could not find libxml2 anywhere (see config.log for details).])
417 418
    fi
    vers=`$LIBXML_CONFIG --version | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
419
    minvers=`echo $LIBXML_REQUIRED | awk -F. '{ printf "%d", ($1 * 1000 + $2) * 1000 + $3;}'`
420 421 422 423
    if test "$vers" -ge "$minvers" ; then
        LIBXML_LIBS="`$LIBXML_CONFIG --libs`"
        LIBXML_CFLAGS="`$LIBXML_CONFIG --cflags`"
	LIBXML_FOUND="yes"
424
        AC_MSG_RESULT(yes)
425
    else
426 427
        AC_MSG_ERROR(
          [You need at least libxml2 $LIBXML_REQUIRED for this version of libvirt])
428 429 430
    fi
fi

431 432
AC_SUBST([LIBXML_CFLAGS])
AC_SUBST([LIBXML_LIBS])
433

434 435
dnl xmlURI structure has query_raw?
old_cflags="$CFLAGS"
436
old_ldflags="$LDFLAGS"
437
CFLAGS="$CFLAGS $LIBXML_CFLAGS"
438
LDFLAGS="$LDFLAGS $LIBXML_LIBS"
439 440
AC_CHECK_MEMBER([struct _xmlURI.query_raw],
		[AC_DEFINE([HAVE_XMLURI_QUERY_RAW], [], [Have query_raw field in libxml2 xmlURI structure])],,
441 442
		[#include <libxml/uri.h>])
CFLAGS="$old_cflags"
443
LDFLAGS="$old_ldflags"
444 445

dnl GnuTLS library
446 447
GNUTLS_CFLAGS=
GNUTLS_LIBS=
448 449 450 451 452 453
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
454
  fail=0
455
  old_libs="$LIBS"
456 457 458 459 460 461
  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])

462 463 464 465
  GNUTLS_LIBS=$LIBS
  LIBS="$old_libs"
fi

466 467
AC_SUBST([GNUTLS_CFLAGS])
AC_SUBST([GNUTLS_LIBS])
468

469 470 471
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.
472 473 474 475
old_cflags="$CFLAGS"
old_ldflags="$LDFLAGS"
CFLAGS="$CFLAGS $GNUTLS_CFLAGS"
LDFLAGS="$LDFLAGS $GNUTLS_LIBS"
476 477
AC_CHECK_TYPE([gnutls_session],
	AC_DEFINE([GNUTLS_1_0_COMPAT],[],
478 479
		[enable GnuTLS 1.0 compatibility macros]),,
	[#include <gnutls/gnutls.h>])
480 481
CFLAGS="$old_cflags"
LDFLAGS="$old_ldflags"
482

483

484
dnl Cyrus SASL
485
AC_ARG_WITH([sasl],
486 487
  [  --with-sasl         use cyrus SASL for authentication],
  [],
488
  [with_sasl=check])
489 490 491

SASL_CFLAGS=
SASL_LIBS=
492 493
if test "x$with_sasl" != "xno"; then
  if test "x$with_sasl" != "xyes" -a "x$with_sasl" != "xcheck"; then
494 495 496
    SASL_CFLAGS="-I$with_sasl"
    SASL_LIBS="-L$with_sasl"
  fi
497
  fail=0
498 499 500 501
  old_cflags="$CFLAGS"
  old_libs="$LIBS"
  CFLAGS="$CFLAGS $SASL_CFLAGS"
  LIBS="$LIBS $SASL_LIBS"
502 503 504 505
  AC_CHECK_HEADER([sasl/sasl.h],[],[
    if test "x$with_sasl" != "xcheck" ; then
        with_sasl=no
    else
506
        fail=1
507 508
    fi])
  if test "x$with_sasl" != "xno" ; then
509
    AC_CHECK_LIB([sasl2], [sasl_client_init],[with_sasl=yes],[
510 511 512
      if test "x$with_sasl" = "xcheck" ; then
          with_sasl=no
      else
513
          fail=1
514 515
      fi])
  fi
516 517
  test $fail = 1 &&
    AC_MSG_ERROR([You must install the Cyrus SASL development package in order to compile libvirt])
518 519 520
  CFLAGS="$old_cflags"
  LIBS="$old_libs"
  SASL_LIBS="$SASL_LIBS -lsasl2"
521
  if test "x$with_sasl" = "xyes" ; then
522
    AC_DEFINE_UNQUOTED([HAVE_SASL], 1,
523 524
      [whether Cyrus SASL is available for authentication])
  fi
525
fi
526 527 528
AM_CONDITIONAL([HAVE_SASL], [test "x$with_sasl" = "xyes"])
AC_SUBST([SASL_CFLAGS])
AC_SUBST([SASL_LIBS])
529 530


531 532 533
dnl PolicyKit library
POLKIT_CFLAGS=
POLKIT_LIBS=
534
AC_ARG_WITH([polkit],
535 536 537 538
  [  --with-polkit         use PolicyKit for UNIX socket access checks],
  [],
  [with_polkit=check])

539 540 541 542 543 544 545 546 547 548 549
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
550
    AC_DEFINE_UNQUOTED([HAVE_POLKIT], 1,
551
      [use PolicyKit for UNIX socket access checks])
552 553 554 555 556

    old_CFLAGS=$CFLAGS
    old_LDFLAGS=$LDFLAGS
    CFLAGS="$CFLAGS $POLKIT_CFLAGS"
    LDFLAGS="$LDFLAGS $POLKIT_LIBS"
557
    AC_CHECK_FUNCS([polkit_context_is_caller_authorized])
558 559 560
    CFLAGS="$old_CFLAGS"
    LDFLAGS="$old_LDFLAGS"

561
    AC_PATH_PROG([POLKIT_AUTH], [polkit-auth])
562 563 564
    if test "x$POLKIT_AUTH" != "x"; then
      AC_DEFINE_UNQUOTED([POLKIT_AUTH],["$POLKIT_AUTH"],[Location of polkit-auth program])
    fi
565
  fi
566
fi
567 568 569
AM_CONDITIONAL([HAVE_POLKIT], [test "x$with_polkit" = "xyes"])
AC_SUBST([POLKIT_CFLAGS])
AC_SUBST([POLKIT_LIBS])
570

571
dnl Avahi library
572
AC_ARG_WITH([avahi],
573 574 575 576 577 578
  [  --with-avahi         use avahi to advertise remote daemon],
  [],
  [with_avahi=check])

AVAHI_CFLAGS=
AVAHI_LIBS=
579 580 581 582 583 584 585 586 587 588 589
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
590
    AC_DEFINE_UNQUOTED([HAVE_AVAHI], 1,
591 592
      [whether Avahi is used to broadcast server presense])
  fi
593
fi
594 595 596
AM_CONDITIONAL([HAVE_AVAHI], [test "x$with_avahi" = "xyes"])
AC_SUBST([AVAHI_CFLAGS])
AC_SUBST([AVAHI_LIBS])
597

598
dnl SELinux
599
AC_ARG_WITH([selinux],
600 601 602 603 604 605 606 607 608 609 610
  [  --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])
611
    AC_CHECK_LIB([selinux], [fgetfilecon],[],[with_selinux=no])
612 613 614 615
    if test "$with_selinux" != "no"; then
      with_selinux="yes"
    fi
  else
616 617 618 619 620
    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])
621 622 623 624 625 626
  fi
  CFLAGS="$old_cflags"
  LIBS="$old_libs"
fi
if test "$with_selinux" = "yes"; then
  SELINUX_LIBS="-lselinux"
627
  AC_DEFINE_UNQUOTED([HAVE_SELINUX], 1, [whether SELinux is available for security])
628
fi
629 630 631
AM_CONDITIONAL([HAVE_SELINUX], [test "$with_selinux" != "no"])
AC_SUBST([SELINUX_CFLAGS])
AC_SUBST([SELINUX_LIBS])
632

633
dnl NUMA lib
634
AC_ARG_WITH([numactl],
635 636 637 638 639 640 641 642 643 644 645
  [  --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])
646
    AC_CHECK_LIB([numa], [numa_available],[],[with_numactl=no])
647 648 649 650
    if test "$with_numactl" != "no"; then
      with_numactl="yes"
    fi
  else
651 652 653 654 655
    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])
656 657 658 659 660 661
  fi
  CFLAGS="$old_cflags"
  LIBS="$old_libs"
fi
if test "$with_numactl" = "yes"; then
  NUMACTL_LIBS="-lnuma"
662
  AC_DEFINE_UNQUOTED([HAVE_NUMACTL], 1, [whether numactl is available for topology info])
663
fi
664 665 666
AM_CONDITIONAL([HAVE_NUMACTL], [test "$with_numactl" != "no"])
AC_SUBST([NUMACTL_CFLAGS])
AC_SUBST([NUMACTL_LIBS])
667

K
Karel Zak 已提交
668
dnl virsh libraries
669
AC_CHECK_HEADERS([readline/readline.h])
670 671

# Check for readline.
672
AC_CHECK_LIB([readline], [readline],
673 674 675 676 677 678 679 680 681
	[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=
682
    AC_SEARCH_LIBS([tgetent], [ncurses curses termcap termlib])
683 684 685 686 687 688
    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.
689
	AC_CHECK_LIB([readline], [rl_initialize],
690 691 692 693 694 695 696 697 698 699 700 701 702 703
		[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
704
else
705
    READLINE_CFLAGS=
706
fi
707 708
AC_SUBST([READLINE_CFLAGS])
AC_SUBST([VIRSH_LIBS])
K
Karel Zak 已提交
709

710

711 712 713 714 715 716 717 718 719 720 721
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"])


722 723 724 725
dnl
dnl Storage driver checks
dnl

726
AC_ARG_WITH([storage-fs],
727
[  --with-storage-fs           with FileSystem backend for the storage driver (on)],[],[with_storage_fs=check])
728
AC_ARG_WITH([storage-lvm],
729
[  --with-storage-lvm          with LVM backend for the storage driver (on)],[],[with_storage_lvm=check])
730
AC_ARG_WITH([storage-iscsi],
731
[  --with-storage-iscsi        with iSCSI backend for the storage driver (on)],[],[with_storage_iscsi=check])
732
AC_ARG_WITH([storage-disk],
733
[  --with-storage-disk         with GPartd Disk backend for the storage driver (on)],[],[with_storage_disk=check])
734

D
Daniel P. Berrange 已提交
735 736 737 738 739 740 741 742 743 744 745 746 747 748
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"])


749
if test "$with_storage_fs" = "yes" -o "$with_storage_fs" = "check"; then
750 751
  AC_PATH_PROG([MOUNT], [mount], [], [$PATH:/sbin:/usr/sbin])
  AC_PATH_PROG([UMOUNT], [umount], [], [$PATH:/sbin:/usr/sbin])
752
  if test "$with_storage_fs" = "yes" ; then
753
    if test -z "$MOUNT" ; then AC_MSG_ERROR([We need mount for FS storage driver]) ; fi
754
    if test -z "$UMOUNT" ; then AC_MSG_ERROR([We need umount for FS storage driver]) ; fi
755 756 757 758 759 760 761 762
  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
763
    AC_DEFINE_UNQUOTED([WITH_STORAGE_FS], 1, [whether FS backend for storage driver is enabled])
764 765 766 767 768 769
    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
770
AM_CONDITIONAL([WITH_STORAGE_FS], [test "$with_storage_fs" = "yes"])
771 772 773 774 775
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
776

777
AC_PATH_PROG([QEMU_IMG], [qemu-img], [], [$PATH:/sbin:/usr/sbin:/bin:/usr/bin])
778
if test -n "$QEMU_IMG" ; then
779
  AC_DEFINE_UNQUOTED([HAVE_QEMU_IMG], 1, [whether qemu-img is available for non-raw files])
780 781 782 783
  AC_DEFINE_UNQUOTED([QEMU_IMG],["$QEMU_IMG"],
      [Location or name of the qemu-img program])
fi

784
AC_PATH_PROG([QCOW_CREATE], [qcow-create], [], [$PATH:/sbin:/usr/sbin:/bin:/usr/bin])
785
if test -n "$QCOW_CREATE" ; then
786
  AC_DEFINE_UNQUOTED([HAVE_QCOW_CREATE], 1, [whether qcow-create is available for non-raw files])
787 788 789 790 791
  AC_DEFINE_UNQUOTED([QCOW_CREATE],["$QCOW_CREATE"],
      [Location or name of the qcow-create program])
fi


792
if test "$with_storage_lvm" = "yes" -o "$with_storage_lvm" = "check"; then
793 794 795 796 797 798 799
  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])
800
  AC_PATH_PROG([VGSCAN], [vgscan], [], [$PATH:/sbin:/usr/sbin])
801 802 803
  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])
804 805

  if test "$with_storage_lvm" = "yes" ; then
806 807 808 809 810 811 812
    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
813
    if test -z "$VGSCAN" ; then AC_MSG_ERROR([We need vgscan for LVM storage driver]) ; fi
814 815 816
    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
817 818 819 820 821 822 823
  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
824 825
    if test -z "$VGCHANGE" ; then with_storage_lvm=no ; fi
    if test -z "$VGSCAN" ; then with_storage_lvm=no ; fi
826 827 828 829 830 831 832 833
    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
834
    AC_DEFINE_UNQUOTED([WITH_STORAGE_LVM], 1, [whether LVM backend for storage driver is enabled])
835 836 837 838 839 840 841
    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])
842
    AC_DEFINE_UNQUOTED([VGSCAN],["$VGSCAN"],[Location of vgscan program])
843 844 845 846 847
    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
848
AM_CONDITIONAL([WITH_STORAGE_LVM], [test "$with_storage_lvm" = "yes"])
849 850


851 852

if test "$with_storage_iscsi" = "yes" -o "$with_storage_iscsi" = "check"; then
853
  AC_PATH_PROG([ISCSIADM], [iscsiadm], [], [$PATH:/sbin:/usr/sbin])
854
  if test "$with_storage_iscsi" = "yes" ; then
855
    if test -z "$ISCSIADM" ; then AC_MSG_ERROR([We need iscsiadm for iSCSI storage driver]) ; fi
856 857 858 859 860 861 862
  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
863
    AC_DEFINE_UNQUOTED([WITH_STORAGE_ISCSI], 1, [whether iSCSI backend for storage driver is enabled])
864 865 866
    AC_DEFINE_UNQUOTED([ISCSIADM],["$ISCSIADM"],[Location of iscsiadm program])
  fi
fi
867
AM_CONDITIONAL([WITH_STORAGE_ISCSI], [test "$with_storage_iscsi" = "yes"])
868 869


870 871 872 873

LIBPARTED_CFLAGS=
LIBPARTED_LIBS=
if test "$with_storage_disk" = "yes" -o "$with_storage_disk" = "check"; then
874
  AC_PATH_PROG([PARTED], [parted], [], [$PATH:/sbin:/usr/sbin])
875 876 877 878 879 880
  if test -z "$PARTED" ; then
    with_storage_disk=no
    PARTED_FOUND=no
  else
    PARTED_FOUND=yes
  fi
881 882 883 884 885 886 887 888 889

  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
890 891 892
    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])
893 894 895 896 897 898 899
    LIBPARTED_LIBS="-luuid -lparted"
    LIBS="$save_LIBS"
    CFLAGS="$save_CFLAGS"
  fi

  if test "$PARTED_FOUND" = "no" ; then
    if test "$with_storage_disk" = "yes" ; then
900
      AC_MSG_ERROR([We need parted for disk storage driver])
901 902 903 904 905 906 907 908
    else
      with_storage_disk=no
    fi
  else
    with_storage_disk=yes
  fi

  if test "$with_storage_disk" = "yes"; then
909
    AC_DEFINE_UNQUOTED([WITH_STORAGE_DISK], 1, [whether Disk backend for storage driver is enabled])
910 911 912
    AC_DEFINE_UNQUOTED([PARTED],["$PARTED"], [Location or name of the parted program])
  fi
fi
913 914 915
AM_CONDITIONAL([WITH_STORAGE_DISK], [test "$with_storage_disk" = "yes"])
AC_SUBST([LIBPARTED_CFLAGS])
AC_SUBST([LIBPARTED_LIBS])
916 917


918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940
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
941
		with_python=`$PYTHON -c "import sys; print sys.exec_prefix"`
942
	    else
943
		AC_PATH_PROG([PYTHON], [python python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 python1.6 python1.5])
944 945 946 947 948 949 950 951 952 953 954 955 956 957
	    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
958
	    PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
959 960 961
	else
	    if test -r $prefix/include/python$PYTHON_VERSION/Python.h
	    then
962 963
	        PYTHON_INCLUDES=$prefix/include/python$PYTHON_VERSION
	        PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
964 965 966 967
	    else
		if test -r /usr/include/python$PYTHON_VERSION/Python.h
		then
		    PYTHON_INCLUDES=/usr/include/python$PYTHON_VERSION
968
	            PYTHON_SITE_PACKAGES=$libdir/python$PYTHON_VERSION/site-packages
969 970 971 972 973 974 975 976 977 978 979 980 981 982
		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
983
        pythondir='$(libdir)/python$(PYTHON_VERSION)/site-packages'
984 985 986 987
    fi
else
    PYTHON=
fi
988 989 990 991 992
AM_CONDITIONAL([WITH_PYTHON], test "$PYTHON_INCLUDES" != "")
AC_SUBST([pythondir])
AC_SUBST([PYTHON_VERSION])
AC_SUBST([PYTHON_INCLUDES])
AC_SUBST([PYTHON_SITE_PACKAGES])
993

994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013
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)

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

1016
AC_ARG_ENABLE([test-coverage],
D
Daniel P. Berrange 已提交
1017
[  --enable-test-coverage  turn on code coverage instrumentation],
1018 1019 1020 1021 1022
[case "${enableval}" in
   yes|no) ;;
   *)      AC_MSG_ERROR([bad value ${enableval} for test-coverage option]) ;;
 esac],
              [enableval=no])
D
Daniel P. Berrange 已提交
1023
enable_coverage=$enableval
1024

D
Daniel P. Berrange 已提交
1025
if test "${enable_coverage}" = yes; then
1026 1027 1028 1029 1030 1031 1032
  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 已提交
1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051
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

1052
dnl Enable building the proxy?
1053

1054
AC_ARG_WITH([xen-proxy],
1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069
[  --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])

1070
AM_CONDITIONAL([WITH_PROXY],[test "$with_xen_proxy" = "yes"])
1071
if test "$with_xen_proxy" = "yes"; then
1072
  AC_DEFINE([WITH_PROXY], 1, [Whether Xen proxy is enabled])
1073
fi
1074

1075
dnl Enable building libvirtd?
1076
AM_CONDITIONAL([WITH_LIBVIRTD],[test "x$with_libvirtd" = "xyes"])
1077

1078
dnl Check for gettext
1079 1080
AM_GNU_GETTEXT_VERSION([0.14.1])
AM_GNU_GETTEXT([external])
1081
ALL_LINGUAS=`cd "$srcdir/po" > /dev/null && ls *.po | sed 's+\.po$++'`
1082

1083 1084 1085 1086 1087 1088
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=
1089
MINGW_EXTRA_LDFLAGS=
1090 1091 1092 1093 1094 1095 1096 1097
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
    ;;
1098 1099 1100
  *-*-mingw*)
    MINGW_EXTRA_LDFLAGS="-no-undefined"
    ;;
1101
esac
1102 1103 1104 1105
AC_SUBST([CYGWIN_EXTRA_LDFLAGS])
AC_SUBST([CYGWIN_EXTRA_LIBADD])
AC_SUBST([CYGWIN_EXTRA_PYTHON_LIBADD])
AC_SUBST([MINGW_EXTRA_LDFLAGS])
1106

1107 1108 1109 1110
dnl Look for windres to build a Windows icon resource.
AC_CHECK_TOOL([WINDRES], [windres], [no])
AM_CONDITIONAL([WITH_WIN_ICON], [test "$WINDRES" != "no"])

1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142


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


1143 1144 1145 1146 1147
# 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-.}
1148
AC_SUBST([LV_LIBTOOL_OBJDIR])
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
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])
1181
    AC_CHECK_FUNCS([dbus_watch_get_unix_fd])
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 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251
    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"])

1252 1253
AM_CONDITIONAL([WITH_LINUX], [test `uname -s` = "Linux"])

1254 1255 1256 1257 1258 1259
# 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
1260

1261
AC_OUTPUT(Makefile src/Makefile include/Makefile docs/Makefile \
1262
          docs/examples/Makefile docs/devhelp/Makefile \
1263
	  docs/examples/python/Makefile \
1264
	  gnulib/lib/Makefile \
J
Jim Meyering 已提交
1265
	  gnulib/tests/Makefile \
R
Richard W.M. Jones 已提交
1266
          libvirt.pc libvirt.spec mingw32-libvirt.spec \
1267
          po/Makefile.in \
1268
	  include/libvirt/Makefile include/libvirt/libvirt.h \
K
Karel Zak 已提交
1269
	  python/Makefile python/tests/Makefile \
1270
          qemud/Makefile \
1271
          tests/Makefile proxy/Makefile \
1272 1273
          tests/xml2sexprdata/Makefile \
          tests/sexpr2xmldata/Makefile \
1274
          tests/xmconfigdata/Makefile \
1275
          tests/xencapsdata/Makefile \
1276
          tests/confdata/Makefile \
1277
          examples/domain-events/events-c/Makefile)
D
Daniel P. Berrange 已提交
1278 1279 1280 1281 1282 1283 1284 1285

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])
1286
AC_MSG_NOTICE([   Proxy: $with_xen_proxy])
D
Daniel P. Berrange 已提交
1287
AC_MSG_NOTICE([    QEMU: $with_qemu])
1288
AC_MSG_NOTICE([     UML: $with_uml])
D
Daniel P. Berrange 已提交
1289
AC_MSG_NOTICE([  OpenVZ: $with_openvz])
D
Daniel Veillard 已提交
1290
AC_MSG_NOTICE([     LXC: $with_lxc])
D
Daniel P. Berrange 已提交
1291 1292
AC_MSG_NOTICE([    Test: $with_test])
AC_MSG_NOTICE([  Remote: $with_remote])
1293
AC_MSG_NOTICE([ Network: $with_network])
1294
AC_MSG_NOTICE([Libvirtd: $with_libvirtd])
D
Daniel P. Berrange 已提交
1295
AC_MSG_NOTICE([])
1296 1297
AC_MSG_NOTICE([Storage Drivers])
AC_MSG_NOTICE([])
D
Daniel P. Berrange 已提交
1298
AC_MSG_NOTICE([     Dir: $with_storage_dir])
1299 1300
AC_MSG_NOTICE([      FS: $with_storage_fs])
AC_MSG_NOTICE([   NetFS: $with_storage_fs])
1301
AC_MSG_NOTICE([     LVM: $with_storage_lvm])
1302
AC_MSG_NOTICE([   iSCSI: $with_storage_iscsi])
1303
AC_MSG_NOTICE([    Disk: $with_storage_disk])
1304
AC_MSG_NOTICE([])
1305 1306 1307 1308 1309 1310 1311 1312
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 已提交
1313 1314 1315
AC_MSG_NOTICE([Libraries])
AC_MSG_NOTICE([])
AC_MSG_NOTICE([  libxml: $LIBXML_CFLAGS $LIBXML_LIBS])
1316
AC_MSG_NOTICE([  gnutls: $GNUTLS_CFLAGS $GNUTLS_LIBS])
1317 1318 1319 1320 1321
if test "$with_sasl" != "no" ; then
AC_MSG_NOTICE([    sasl: $SASL_CFLAGS $SASL_LIBS])
else
AC_MSG_NOTICE([    sasl: no])
fi
1322 1323 1324 1325 1326
if test "$with_avahi" = "yes" ; then
AC_MSG_NOTICE([   avahi: $AVAHI_CFLAGS $AVAHI_LIBS])
else
AC_MSG_NOTICE([   avahi: no])
fi
1327 1328 1329 1330 1331
if test "$with_polkit" = "yes" ; then
AC_MSG_NOTICE([  polkit: $POLKIT_CFLAGS $POLKIT_LIBS])
else
AC_MSG_NOTICE([  polkit: no])
fi
1332 1333 1334 1335 1336
if test "$with_selinux" = "yes" ; then
AC_MSG_NOTICE([  selinux: $SELINUX_CFLAGS $SELINUX_LIBS])
else
AC_MSG_NOTICE([  selinux: no])
fi
1337 1338 1339 1340 1341
if test "$with_numactl" = "yes" ; then
AC_MSG_NOTICE([  numactl: $NUMACTL_CFLAGS $NUMACTL_LIBS])
else
AC_MSG_NOTICE([  numactl: no])
fi
1342 1343 1344 1345 1346
if test "$with_xen" = "yes" ; then
AC_MSG_NOTICE([  xen: $XEN_CFLAGS $XEN_LIBS])
else
AC_MSG_NOTICE([  xen: no])
fi
1347 1348 1349 1350 1351 1352 1353 1354 1355 1356
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 已提交
1357
AC_MSG_NOTICE([])
D
Daniel P. Berrange 已提交
1358 1359 1360 1361 1362
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 已提交
1363 1364 1365
AC_MSG_NOTICE([Miscellaneous])
AC_MSG_NOTICE([])
AC_MSG_NOTICE([  Debug: $enable_debug])
1366
AC_MSG_NOTICE([  Warnings: $enable_compile_warnings])
1367
AC_MSG_NOTICE([  Readline: $lv_use_readline])
D
Daniel P. Berrange 已提交
1368
AC_MSG_NOTICE([])