meson: add nss build option

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Neal Gompa <ngompa13@gmail.com>
This commit is contained in:
Pavel Hrdina 2020-06-24 13:27:59 +02:00
parent d4e394d77f
commit c742687055
4 changed files with 42 additions and 89 deletions

View File

@ -79,7 +79,6 @@ AM_CONDITIONAL([WITH_MACOS], [test "$with_macos" = "yes"])
# Check for compiler and library settings.
LIBVIRT_ARG_NSS
LIBVIRT_ARG_PM_UTILS
LIBVIRT_CHECK_NWFILTER
@ -105,7 +104,6 @@ LIBVIRT_ARG_SYSCTL_CONFIG
LIBVIRT_CHECK_NUMAD
LIBVIRT_CHECK_TLS_PRIORITY
LIBVIRT_CHECK_SYSCTL_CONFIG
LIBVIRT_CHECK_NSS
dnl Need to test if pkg-config exists
@ -164,7 +162,6 @@ AC_MSG_NOTICE([=====================])
AC_MSG_NOTICE([])
AC_MSG_NOTICE([Libraries])
AC_MSG_NOTICE([])
LIBVIRT_RESULT_NSS
LIBVIRT_RESULT_PM_UTILS
AC_MSG_NOTICE([])
AC_MSG_NOTICE([Windows])

View File

@ -1,86 +0,0 @@
dnl The libvirt nsswitch plugin
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_ARG_NSS],[
LIBVIRT_ARG_WITH([NSS_PLUGIN],
[enable Name Service Switch plugin for resolving guest
IP addresses], [check])
])
AC_DEFUN([LIBVIRT_CHECK_NSS],[
bsd_nss=no
fail=0
if test "x$with_nss_plugin" != "xno" ; then
if test "x$with_yajl" != "xyes" ; then
if test "x$with_nss_plugin" = "xyes" ; then
AC_MSG_ERROR([Can't build nss plugin without yajl])
else
with_nss_plugin=no
fi
fi
if test "x$with_network" != "xyes" ; then
if test "x$with_nss_plugin" = "xyes" ; then
AC_MSG_ERROR([Can't build nss plugin without network])
else
with_nss_plugin=no
fi
fi
if test "x$with_nss_plugin" != "xno" ; then
AC_CHECK_HEADERS([nss.h], [
with_nss_plugin=yes
],[
if test "x$with_nss_plugin" = "xyes" ; then
fail = 1
fi
])
if test $fail = 1 ; then
AC_MSG_ERROR([Can't build nss plugin without nss.h])
fi
fi
if test "x$with_nss_plugin" = "xyes" ; then
AC_DEFINE_UNQUOTED([WITH_NSS], 1, [whether nss plugin is enabled])
AC_CHECK_TYPE([struct gaih_addrtuple],
[AC_DEFINE([HAVE_STRUCT_GAIH_ADDRTUPLE], [1],
[Defined if struct gaih_addrtuple exists in nss.h])],
[], [[#include <nss.h>
]])
AC_CHECK_TYPES([ns_mtab, nss_module_unregister_fn],
[AC_DEFINE([HAVE_BSD_NSS],
[1],
[whether using BSD style NSS])
bsd_nss=yes
],
[],
[#include <nsswitch.h>])
fi
fi
AM_CONDITIONAL(WITH_NSS, [test "x$with_nss_plugin" = "xyes"])
AM_CONDITIONAL(WITH_BSD_NSS, [test "x$bsd_nss" = "xyes"])
])
AC_DEFUN([LIBVIRT_RESULT_NSS],[
LIBVIRT_RESULT([nss], [$with_nss_plugin])
])

View File

@ -2126,6 +2126,46 @@ elif get_option('login_shell').enabled()
error('virt-login-shell is supported on Linux only')
endif
if not get_option('nss').disabled()
use_nss = true
if not yajl_dep.found()
if get_option('nss').enabled()
error('Can\'t build nss plugin without yajl')
else
use_nss = false
endif
endif
if use_nss and not conf.has('WITH_NETWORK')
if get_option('nss').enabled()
error('Can\'t build nss plugin without network')
else
use_nss = false
endif
endif
if use_nss and not cc.has_header('nss.h')
if get_option('nss').enabled()
error('Can\'t build nss plugin without nss.h')
else
use_nss = false
endif
endif
if use_nss
conf.set('WITH_NSS', 1)
if cc.has_type('struct gaih_addrtuple', prefix: '#include <nss.h>')
conf.set('HAVE_STRUCT_GAIH_ADDRTUPLE', 1)
endif
if (cc.has_type('ns_mtab', prefix: '#include <nsswitch.h>') and
cc.has_type('nss_module_unregister_fn', prefix: '#include <nsswitch.h>'))
conf.set('WITH_BSD_NSS', 1)
endif
endif
endif
# define top include directory
@ -2220,6 +2260,7 @@ libs_summary = {
'macvtap': conf.has('WITH_MACVTAP'),
'netcf': netcf_dep.found(),
'NLS': have_gnu_gettext_tools,
'nss': conf.has('WITH_NSS'),
'numaclt': numactl_dep.found(),
'openwsman': openwsman_dep.found(),
'pciaccess': pciaccess_dep.found(),

View File

@ -97,3 +97,4 @@ option('host_validate', type: 'feature', value: 'auto', description: 'build virt
option('init_script', type: 'combo', choices: ['systemd', 'openrc', 'check', 'none'], value: 'check', description: 'Style of init script to install')
option('loader_nvram', type: 'string', value: '', description: 'Pass list of pairs of <loader>:<nvram> paths. Both pairs and list items are separated by a colon.')
option('login_shell', type: 'feature', value: 'auto', description: 'build virt-login-shell')
option('nss', type: 'feature', value: 'auto', description: 'enable Name Service Switch plugin for resolving guest IP addresses')