gnulib: add getopt module

Unconditionally use gnulib's getopt module. This is needed by the bhyve driver
to provide a reentrant interface for getopt.

Several gnulib headers rely on features.h being included by ctype.h to provide
__GNUC_PREREQ, but on systems without glibc, this is not provided. In these
cases __GNUC_PREREQ gets redefined to 0, which causes build errors from checks
in src/internal.h.
Therefore, define __GNUC_PREREQ as early as possible. config-post.h is probably
the first header that is included, before any other headers.
This commit is contained in:
Fabian Freyer 2016-06-09 00:50:35 +00:00 committed by Roman Bogorodskiy
parent 1edf20a9f8
commit b436a8ae5c
4 changed files with 23 additions and 0 deletions

View File

@ -54,6 +54,7 @@ func
getaddrinfo
getcwd-lgpl
gethostname
getopt-posix
getpass
getpeername
getsockname

View File

@ -69,3 +69,21 @@
# undef WITH_SECDRIVER_APPARMOR
# undef WITH_CAPNG
#endif /* LIBVIRT_NSS */
/*
* Define __GNUC__ to a sane default if it isn't yet defined.
* This is done here so that it's included as early as possible; gnulib relies
* on this to be defined in features.h, which should be included from ctype.h.
* This doesn't happen on many non-glibc systems.
* When __GNUC__ is not defined, gnulib defines it to 0, which breaks things.
*/
#ifdef __GNUC__
# ifndef __GNUC_PREREQ
# if defined __GNUC__ && defined __GNUC_MINOR__
# define __GNUC_PREREQ(maj, min) \
((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
# else
# define __GNUC_PREREQ(maj, min) 0
# endif
# endif
#endif

View File

@ -52,6 +52,9 @@ AC_DEFUN([LIBVIRT_DRIVER_CHECK_BHYVE],[
AM_CONDITIONAL([WITH_BHYVE], [test "$with_bhyve" = "yes"])
])
dnl Build with gnulib's getopt which contains a reentrant interface
AC_DEFUN([gl_REPLACE_GETOPT_ALWAYS], [])
AC_DEFUN([LIBVIRT_DRIVER_RESULT_BHYVE],[
AC_MSG_NOTICE([ Bhyve: $with_bhyve])
])

View File

@ -8,6 +8,7 @@ daemon/remote.c
daemon/remote_dispatch.h
daemon/stream.c
gnulib/lib/gai_strerror.c
gnulib/lib/getopt.c
gnulib/lib/regcomp.c
src/access/viraccessdriverpolkit.c
src/access/viraccessmanager.c