configure / util: Auto-detect the availability of openpty()

Recent versions of Solaris (v11.4) now feature an openpty() function,
too, causing a build failure since we ship our own implementation of
openpty() for Solaris in util/qemu-openpty.c so far. Since there are
now both variants available in the wild, with and without this function
(and illumos is said to not have this function yet), let's introduce a
proper HAVE_OPENPTY define for this to fix the build failure.

Message-Id: <20200702143955.678-1-thuth@redhat.com>
Tested-by: Michele Denber <denber@mindspring.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
Thomas Huth 2020-06-29 14:13:24 +02:00
parent 51b3ca9759
commit 9df8b20d16
2 changed files with 12 additions and 2 deletions

9
configure vendored
View File

@ -5134,10 +5134,14 @@ extern int openpty(int *am, int *as, char *name, void *termp, void *winp);
int main(void) { return openpty(0, 0, 0, 0, 0); } int main(void) { return openpty(0, 0, 0, 0, 0); }
EOF EOF
if ! compile_prog "" "" ; then have_openpty="no"
if compile_prog "" "" ; then
have_openpty="yes"
else
if compile_prog "" "-lutil" ; then if compile_prog "" "-lutil" ; then
libs_softmmu="-lutil $libs_softmmu" libs_softmmu="-lutil $libs_softmmu"
libs_tools="-lutil $libs_tools" libs_tools="-lutil $libs_tools"
have_openpty="yes"
fi fi
fi fi
@ -7380,6 +7384,9 @@ fi
if test "$have_broken_size_max" = "yes" ; then if test "$have_broken_size_max" = "yes" ; then
echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
fi fi
if test "$have_openpty" = "yes" ; then
echo "HAVE_OPENPTY=y" >> $config_host_mak
fi
# Work around a system header bug with some kernel/XFS header # Work around a system header bug with some kernel/XFS header
# versions where they both try to define 'struct fsxattr': # versions where they both try to define 'struct fsxattr':

View File

@ -52,7 +52,9 @@
#endif #endif
#ifdef __sun__ #ifdef __sun__
/* Once Solaris has openpty(), this is going to be removed. */
#if !defined(HAVE_OPENPTY)
/* Once illumos has openpty(), this is going to be removed. */
static int openpty(int *amaster, int *aslave, char *name, static int openpty(int *amaster, int *aslave, char *name,
struct termios *termp, struct winsize *winp) struct termios *termp, struct winsize *winp)
{ {
@ -93,6 +95,7 @@ err:
close(mfd); close(mfd);
return -1; return -1;
} }
#endif
static void cfmakeraw (struct termios *termios_p) static void cfmakeraw (struct termios *termios_p)
{ {