Commit 9df8b20d authored by Thomas Huth's avatar Thomas Huth
Browse files

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: default avatarMichele Denber <denber@mindspring.com>
Signed-off-by: default avatarThomas Huth <thuth@redhat.com>
parent 51b3ca97
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -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); }
EOF

if ! compile_prog "" "" ; then
have_openpty="no"
if compile_prog "" "" ; then
  have_openpty="yes"
else
  if compile_prog "" "-lutil" ; then
    libs_softmmu="-lutil $libs_softmmu"
    libs_tools="-lutil $libs_tools"
    have_openpty="yes"
  fi
fi

@@ -7380,6 +7384,9 @@ fi
if test "$have_broken_size_max" = "yes" ; then
    echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
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
# versions where they both try to define 'struct fsxattr':
+4 −1
Original line number Diff line number Diff line
@@ -52,7 +52,9 @@
#endif

#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,
                   struct termios *termp, struct winsize *winp)
{
@@ -93,6 +95,7 @@ err:
        close(mfd);
        return -1;
}
#endif

static void cfmakeraw (struct termios *termios_p)
{