configure: move LXC driver check to its own file

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
Pavel Hrdina 2016-12-08 10:36:55 +01:00
parent 68649d1007
commit 07b1d80a2a
2 changed files with 77 additions and 46 deletions

View File

@ -407,7 +407,7 @@ LIBVIRT_ARG_WITH([PHYP], [PHYP], [check])
LIBVIRT_ARG_WITH([XENAPI], [XenAPI], [check]) LIBVIRT_ARG_WITH([XENAPI], [XenAPI], [check])
LIBVIRT_ARG_WITH([LIBXL], [libxenlight], [check]) LIBVIRT_ARG_WITH([LIBXL], [libxenlight], [check])
LIBVIRT_ARG_WITH([VBOX], [VirtualBox XPCOMC], [yes]) LIBVIRT_ARG_WITH([VBOX], [VirtualBox XPCOMC], [yes])
LIBVIRT_ARG_WITH([LXC], [Linux Container], [check]) LIBVIRT_DRIVER_ARG_LXC
LIBVIRT_ARG_WITH([ESX], [ESX], [check]) LIBVIRT_ARG_WITH([ESX], [ESX], [check])
LIBVIRT_ARG_WITH([HYPERV], [Hyper-V], [check]) LIBVIRT_ARG_WITH([HYPERV], [Hyper-V], [check])
LIBVIRT_ARG_WITH([TEST], [test driver], [yes]) LIBVIRT_ARG_WITH([TEST], [test driver], [yes])
@ -712,50 +712,7 @@ dnl check for kvm headers
dnl dnl
AC_CHECK_HEADERS([linux/kvm.h]) AC_CHECK_HEADERS([linux/kvm.h])
dnl LIBVIRT_DRIVER_CHECK_LXC
dnl check for sufficient headers for LXC
dnl
if test "$with_libvirtd" = "no" ; then
with_lxc=no
fi
if test "$with_lxc" = "yes" || test "$with_lxc" = "check"; then
AC_LINK_IFELSE([AC_LANG_PROGRAM(
[[
#include <sched.h>
#include <linux/loop.h>
#include <sys/epoll.h>
]], [[
unshare(!(LO_FLAGS_AUTOCLEAR + EPOLL_CLOEXEC));
]])], [
with_lxc=yes
AC_DEFINE([HAVE_DECL_LO_FLAGS_AUTOCLEAR], [1],
[Define to 1 if you have the declaration of `LO_FLAGS_AUTOCLEAR',
and to 0 if you don't.])
], [
if test "$with_lxc" = "check"; then
with_lxc=no
AC_MSG_NOTICE([Required kernel features were not found, disabling LXC])
else
AC_MSG_ERROR([Required kernel features for LXC were not found])
fi
])
AC_LINK_IFELSE([AC_LANG_PROGRAM(
[[
#include <sched.h>
#include <linux/loop.h>
#include <sys/epoll.h>
]], [[
unshare(!(LOOP_CTL_GET_FREE));
]])], [
AC_DEFINE([HAVE_DECL_LOOP_CTL_GET_FREE], [1],
[Define to 1 if you have the declaration of `LOOP_CTL_GET_FREE',
and to 0 if you don't.])
])
fi
if test "$with_lxc" = "yes" ; then
AC_DEFINE_UNQUOTED([WITH_LXC], 1, [whether LXC driver is enabled])
fi
AM_CONDITIONAL([WITH_LXC], [test "$with_lxc" = "yes"])
AM_CONDITIONAL([WITH_SETUID_RPC_CLIENT], [test "$with_lxc$with_login_shell" != "nono"]) AM_CONDITIONAL([WITH_SETUID_RPC_CLIENT], [test "$with_lxc$with_login_shell" != "nono"])
@ -1640,7 +1597,7 @@ LIBVIRT_DRIVER_RESULT_VMWARE
AC_MSG_NOTICE([ VBox: $with_vbox]) AC_MSG_NOTICE([ VBox: $with_vbox])
AC_MSG_NOTICE([ XenAPI: $with_xenapi]) AC_MSG_NOTICE([ XenAPI: $with_xenapi])
AC_MSG_NOTICE([ xenlight: $with_libxl]) AC_MSG_NOTICE([ xenlight: $with_libxl])
AC_MSG_NOTICE([ LXC: $with_lxc]) LIBVIRT_DRIVER_RESULT_LXC
AC_MSG_NOTICE([ PHYP: $with_phyp]) AC_MSG_NOTICE([ PHYP: $with_phyp])
AC_MSG_NOTICE([ ESX: $with_esx]) AC_MSG_NOTICE([ ESX: $with_esx])
AC_MSG_NOTICE([ Hyper-V: $with_hyperv]) AC_MSG_NOTICE([ Hyper-V: $with_hyperv])

74
m4/virt-driver-lxc.m4 Normal file
View File

@ -0,0 +1,74 @@
dnl The LXC 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_LXC], [
LIBVIRT_ARG_WITH([LXC], [Linux Container], [check])
])
AC_DEFUN([LIBVIRT_DRIVER_CHECK_LXC], [
if test "$with_libvirtd" = "no" ; then
with_lxc=no
fi
if test "$with_lxc" = "yes" || test "$with_lxc" = "check"; then
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
#include <sched.h>
#include <linux/loop.h>
#include <sys/epoll.h>
]], [[
unshare(!(LO_FLAGS_AUTOCLEAR + EPOLL_CLOEXEC));
]])
], [
with_lxc=yes
AC_DEFINE([HAVE_DECL_LO_FLAGS_AUTOCLEAR], [1],
[Define to 1 if you have the declaration of `LO_FLAGS_AUTOCLEAR',
and to 0 if you don't.])
], [
if test "$with_lxc" = "check"; then
with_lxc=no
AC_MSG_NOTICE([Required kernel features were not found, disabling LXC])
else
AC_MSG_ERROR([Required kernel features for LXC were not found])
fi
])
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
#include <sched.h>
#include <linux/loop.h>
#include <sys/epoll.h>
]], [[
unshare(!(LOOP_CTL_GET_FREE));
]])
], [
AC_DEFINE([HAVE_DECL_LOOP_CTL_GET_FREE], [1],
[Define to 1 if you have the declaration of `LOOP_CTL_GET_FREE',
and to 0 if you don't.])
])
fi
if test "$with_lxc" = "yes" ; then
AC_DEFINE_UNQUOTED([WITH_LXC], 1, [whether LXC driver is enabled])
fi
AM_CONDITIONAL([WITH_LXC], [test "$with_lxc" = "yes"])
])
AC_DEFUN([LIBVIRT_DRIVER_RESULT_LXC], [
LIBVIRT_RESULT([LXC], [$with_lxc])
])