[libvirt] [PATCH 59/89] configure: move libxl driver check to its own file

Pavel Hrdina phrdina at redhat.com
Fri Dec 16 09:11:27 UTC 2016


Signed-off-by: Pavel Hrdina <phrdina at 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




More information about the libvir-list mailing list