Signed-off-by: Pavel Hrdina <phrdina(a)redhat.com>
---
configure.ac | 84 ++------------------------------------
m4/virt-driver-libxl.m4 | 105 ++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 109 insertions(+), 80 deletions(-)
create mode 100644 m4/virt-driver-libxl.m4
diff --git a/configure.ac b/configure.ac
index 7d45d16ac5..09bf9c4307 100644
--- a/configure.ac
+++ b/configure.ac
@@ -404,7 +404,7 @@ LIBVIRT_DRIVER_ARG_OPENVZ
LIBVIRT_DRIVER_ARG_VMWARE
LIBVIRT_ARG_WITH([PHYP], [PHYP], [check])
LIBVIRT_ARG_WITH([XENAPI], [XenAPI], [check])
-LIBVIRT_ARG_WITH([LIBXL], [libxenlight], [check])
+LIBVIRT_DRIVER_ARG_LIBXL
LIBVIRT_ARG_WITH([VBOX], [VirtualBox XPCOMC], [yes])
LIBVIRT_DRIVER_ARG_LXC
LIBVIRT_ARG_WITH([ESX], [ESX], [check])
@@ -539,79 +539,7 @@ fi
AC_SUBST([LIBXENSERVER_CFLAGS])
AC_SUBST([LIBXENSERVER_LIBS])
-old_LIBS="$LIBS"
-old_CFLAGS="$CFLAGS"
-LIBXL_LIBS=""
-LIBXL_CFLAGS=""
-LIBXL_FIRMWARE_DIR=""
-LIBXL_EXECBIN_DIR=""
-
-dnl search for libxl, aka libxenlight
-dnl Xen > 4.5 introduced a pkgconfig file, check for it first
-fail=0
-if test "$with_libxl" != "no" ; then
- PKG_CHECK_MODULES([LIBXL], [xenlight], [
- LIBXL_FIRMWARE_DIR=`$PKG_CONFIG --variable xenfirmwaredir xenlight`
- LIBXL_EXECBIN_DIR=`$PKG_CONFIG --variable libexec_bin xenlight`
- with_libxl=yes
- ], [LIBXL_FOUND=no])
- if test "$LIBXL_FOUND" = "no"; then
- dnl No xenlight pkg-config file
- if test "$with_libxl" != "yes" && test
"$with_libxl" != "check" ; then
- LIBXL_CFLAGS="-I$with_libxl/include"
- LIBXL_LIBS="-L$with_libxl"
- fi
- CFLAGS="$CFLAGS $LIBXL_CFLAGS"
- LIBS="$LIBS $LIBXL_LIBS"
- AC_CHECK_LIB([xenlight], [libxl_ctx_alloc], [
- with_libxl=yes
- LIBXL_LIBS="$LIBXL_LIBS -lxenlight"
- ],[
- if test "$with_libxl" = "yes"; then
- fail=1
- fi
- with_libxl=no
- ])
- fi
-fi
-
-# LIBXL_API_VERSION 4.4.0 introduced a new parameter to
-# libxl_domain_create_restore for specifying restore parameters.
-# The libxl driver will make use of this new parameter for specifying
-# the Xen migration stream version.
-LIBXL_CFLAGS="$LIBXL_CFLAGS -DLIBXL_API_VERSION=0x040400"
-LIBS="$old_LIBS"
-CFLAGS="$old_CFLAGS"
-
-if test $fail = 1; then
- AC_MSG_ERROR([You must install the libxl Library from Xen >= 4.2 to compile
libxenlight driver with -lxl])
-fi
-
-if test "$with_libxl" = "yes"; then
- dnl If building with libxl, use the libxl utility header and lib too
- AC_CHECK_HEADERS([libxlutil.h])
- LIBXL_LIBS="$LIBXL_LIBS -lxlutil"
- AC_DEFINE_UNQUOTED([WITH_LIBXL], 1, [whether libxenlight driver is enabled])
- if test "x$LIBXL_FIRMWARE_DIR" != "x"; then
- AC_DEFINE_UNQUOTED([LIBXL_FIRMWARE_DIR], ["$LIBXL_FIRMWARE_DIR"],
[directory containing Xen firmware blobs])
- fi
- if test "x$LIBXL_EXECBIN_DIR" != "x"; then
- AC_DEFINE_UNQUOTED([LIBXL_EXECBIN_DIR], ["$LIBXL_EXECBIN_DIR"],
[directory containing Xen libexec binaries])
- fi
- dnl Check if the xtl_* infrastructure is in libxentoollog
- dnl (since Xen 4.7) if not then assume it is in libxenctrl
- dnl (as it was for 4.6 and earler)
- AC_CHECK_LIB([xentoollog], [xtl_createlogger_stdiostream], [
- LIBXL_LIBS="$LIBXL_LIBS -lxentoollog"
- ],[
- LIBXL_LIBS="$LIBXL_LIBS -lxenctrl"
- ])
-fi
-AM_CONDITIONAL([WITH_LIBXL], [test "$with_libxl" = "yes"])
-
-AC_SUBST([LIBXL_CFLAGS])
-AC_SUBST([LIBXL_LIBS])
-
+LIBVIRT_DRIVER_CHECK_LIBXL
LIBVIRT_DRIVER_CHECK_XEN
AM_CONDITIONAL([WITH_XENCONFIG], [test "$with_libxl" = "yes" || test
"$with_xen" = "yes"])
@@ -1505,7 +1433,7 @@ LIBVIRT_DRIVER_RESULT_OPENVZ
LIBVIRT_DRIVER_RESULT_VMWARE
AC_MSG_NOTICE([ VBox: $with_vbox])
AC_MSG_NOTICE([ XenAPI: $with_xenapi])
-AC_MSG_NOTICE([ xenlight: $with_libxl])
+LIBVIRT_DRIVER_RESULT_LIBXL
LIBVIRT_DRIVER_RESULT_LXC
AC_MSG_NOTICE([ PHYP: $with_phyp])
AC_MSG_NOTICE([ ESX: $with_esx])
@@ -1561,6 +1489,7 @@ LIBVIRT_RESULT_HAL
LIBVIRT_RESULT_LIBNL
LIBVIRT_RESULT_LIBPCAP
LIBVIRT_RESULT_LIBSSH
+LIBVIRT_RESULT_LIBXL
LIBVIRT_RESULT_LIBXML
LIBVIRT_RESULT_MACVTAP
LIBVIRT_RESULT_NETCF
@@ -1585,11 +1514,6 @@ AC_MSG_NOTICE([ xenapi: $LIBXENSERVER_CFLAGS $LIBXENSERVER_LIBS])
else
AC_MSG_NOTICE([ xenapi: no])
fi
-if test "$with_libxl" = "yes" ; then
-AC_MSG_NOTICE([xenlight: $LIBXL_CFLAGS $LIBXL_LIBS])
-else
-AC_MSG_NOTICE([xenlight: no])
-fi
if test "$with_storage_rbd" = "yes" ; then
AC_MSG_NOTICE([ rbd: $LIBRBD_LIBS])
else
diff --git a/m4/virt-driver-libxl.m4 b/m4/virt-driver-libxl.m4
new file mode 100644
index 0000000000..8382dc0ec4
--- /dev/null
+++ b/m4/virt-driver-libxl.m4
@@ -0,0 +1,105 @@
+dnl The libxl driver
+dnl
+dnl Copyright (C) 2016 Red Hat, Inc.
+dnl
+dnl This library is free software; you can redistribute it and/or
+dnl modify it under the terms of the GNU Lesser General Public
+dnl License as published by the Free Software Foundation; either
+dnl version 2.1 of the License, or (at your option) any later version.
+dnl
+dnl This library is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+dnl Lesser General Public License for more details.
+dnl
+dnl You should have received a copy of the GNU Lesser General Public
+dnl License along with this library. If not, see
+dnl <
http://www.gnu.org/licenses/>.
+dnl
+
+AC_DEFUN([LIBVIRT_DRIVER_ARG_LIBXL], [
+ LIBVIRT_ARG_WITH([LIBXL], [libxenlight], [check])
+])
+
+AC_DEFUN([LIBVIRT_DRIVER_CHECK_LIBXL], [
+ old_LIBS="$LIBS"
+ old_CFLAGS="$CFLAGS"
+ LIBXL_LIBS=""
+ LIBXL_CFLAGS=""
+ LIBXL_FIRMWARE_DIR=""
+ LIBXL_EXECBIN_DIR=""
+
+ dnl search for libxl, aka libxenlight
+ dnl Xen > 4.5 introduced a pkgconfig file, check for it first
+ fail=0
+ if test "$with_libxl" != "no" ; then
+ PKG_CHECK_MODULES([LIBXL], [xenlight], [
+ LIBXL_FIRMWARE_DIR=`$PKG_CONFIG --variable xenfirmwaredir xenlight`
+ LIBXL_EXECBIN_DIR=`$PKG_CONFIG --variable libexec_bin xenlight`
+ with_libxl=yes
+ ], [LIBXL_FOUND=no])
+ if test "$LIBXL_FOUND" = "no"; then
+ dnl No xenlight pkg-config file
+ if test "$with_libxl" != "yes" && test
"$with_libxl" != "check" ; then
+ LIBXL_CFLAGS="-I$with_libxl/include"
+ LIBXL_LIBS="-L$with_libxl"
+ fi
+ CFLAGS="$CFLAGS $LIBXL_CFLAGS"
+ LIBS="$LIBS $LIBXL_LIBS"
+ AC_CHECK_LIB([xenlight], [libxl_ctx_alloc], [
+ with_libxl=yes
+ LIBXL_LIBS="$LIBXL_LIBS -lxenlight"
+ ],[
+ if test "$with_libxl" = "yes"; then
+ fail=1
+ fi
+ with_libxl=no
+ ])
+ fi
+ fi
+
+ dnl LIBXL_API_VERSION 4.4.0 introduced a new parameter to
+ dnl libxl_domain_create_restore for specifying restore parameters.
+ dnl The libxl driver will make use of this new parameter for specifying
+ dnl the Xen migration stream version.
+ LIBXL_CFLAGS="$LIBXL_CFLAGS -DLIBXL_API_VERSION=0x040400"
+ LIBS="$old_LIBS"
+ CFLAGS="$old_CFLAGS"
+
+ if test $fail = 1; then
+ AC_MSG_ERROR([You must install the libxl Library from Xen >= 4.2 to compile
libxenlight driver with -lxl])
+ fi
+
+ if test "$with_libxl" = "yes"; then
+ dnl If building with libxl, use the libxl utility header and lib too
+ AC_CHECK_HEADERS([libxlutil.h])
+ LIBXL_LIBS="$LIBXL_LIBS -lxlutil"
+ AC_DEFINE_UNQUOTED([WITH_LIBXL], 1, [whether libxenlight driver is enabled])
+ if test "x$LIBXL_FIRMWARE_DIR" != "x"; then
+ AC_DEFINE_UNQUOTED([LIBXL_FIRMWARE_DIR], ["$LIBXL_FIRMWARE_DIR"],
[directory containing Xen firmware blobs])
+ fi
+ if test "x$LIBXL_EXECBIN_DIR" != "x"; then
+ AC_DEFINE_UNQUOTED([LIBXL_EXECBIN_DIR], ["$LIBXL_EXECBIN_DIR"],
[directory containing Xen libexec binaries])
+ fi
+ dnl Check if the xtl_* infrastructure is in libxentoollog
+ dnl (since Xen 4.7) if not then assume it is in libxenctrl
+ dnl (as it was for 4.6 and earler)
+ AC_CHECK_LIB([xentoollog], [xtl_createlogger_stdiostream], [
+ LIBXL_LIBS="$LIBXL_LIBS -lxentoollog"
+ ],[
+ LIBXL_LIBS="$LIBXL_LIBS -lxenctrl"
+ ])
+ fi
+ AM_CONDITIONAL([WITH_LIBXL], [test "$with_libxl" = "yes"])
+
+ AC_SUBST([LIBXL_CFLAGS])
+ AC_SUBST([LIBXL_LIBS])
+])
+
+AC_DEFUN([LIBVIRT_RESULT_LIBXL], [
+ LIBVIRT_RESULT_LIB([LIBXL])
+])
+
+AC_DEFUN([LIBVIRT_DRIVER_RESULT_LIBXL], [
+ LIBVIRT_RESULT([libxl], [$with_libxl])
+])
--
2.11.0