X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fpty.m4;h=d2f8110f139c775ec3fd50ac2346a2cc06ba7652;hb=062cad2d07081f9a60adbb90fc1184a435a1a93f;hp=1d8616d69483c64aea66579c85f826882246cf6e;hpb=b2e2010c7c902235b5efb5bd3c6529f61b093aa4;p=gnulib.git diff --git a/m4/pty.m4 b/m4/pty.m4 index 1d8616d69..d2f8110f1 100644 --- a/m4/pty.m4 +++ b/m4/pty.m4 @@ -1,42 +1,111 @@ -# pty.m4 serial 1 -dnl Copyright (C) 2009, 2010 Free Software Foundation, Inc. +# pty.m4 serial 2 +dnl Copyright (C) 2010 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. -# gl_PTY -# ------ -# Make sure that pty.h provides forkpty, or sets up a replacement header. -# Also define automake variable PTY_LIB to the library needed (if any). -AC_DEFUN([gl_PTY], +# gl_PTY_LIB +# ---------- +# Define automake variable PTY_LIB to the library needed (if any). +AC_DEFUN([gl_PTY_LIB], [ - PTY_H='' - PTY_LIB='' - # First make sure that pty.h provides forkpty, or setup the replacement. - AC_CHECK_HEADERS_ONCE([pty.h]) - if test $ac_cv_header_pty_h != yes; then - AC_CHECK_DECL([forkpty],,, [[#include ]]) - if test $ac_cv_have_decl_forkpty = no; then - AC_CHECK_DECL([forkpty],,, [[#include ]]) - if test $ac_cv_have_decl_forkpty = no; then - AC_MSG_WARN([[Cannot find forkpty, build will likely fail]]) - else - PTY_H='pty.h' - PTY_HEADER='libutil.h' - fi - else - PTY_H='pty.h' - PTY_HEADER='util.h' - fi - fi - # Second check for the library required for forkpty. + # Check for the library required for forkpty. + PTY_LIB= save_LIBS="$LIBS" AC_SEARCH_LIBS([forkpty], [util], [if test "$ac_cv_search_forkpty" != "none required"; then PTY_LIB="$ac_cv_search_forkpty" fi]) LIBS="$save_LIBS" - AC_SUBST([PTY_H]) AC_SUBST([PTY_LIB]) - AC_SUBST([PTY_HEADER]) +]) + +AC_DEFUN([gl_FORKPTY], +[ + AC_REQUIRE([gl_PTY_LIB]) + AC_REQUIRE([gl_PTY]) + + AC_CHECK_DECLS([forkpty],,, [[ +#if HAVE_PTY_H +# include +#endif +#if HAVE_UTIL_H +# include +#endif +#if HAVE_LIBUTIL_H +# include +#endif +]]) + if test $ac_cv_have_decl_forkpty = no; then + AC_MSG_WARN([[Cannot find forkpty, build will likely fail]]) + fi + + dnl Prefer glibc's const-safe prototype, if available. + AC_CACHE_CHECK([for const-safe forkpty signature], + [gl_cv_func_forkpty_const], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ +#if HAVE_PTY_H +# include +#endif +#if HAVE_UTIL_H +# include +#endif +#if HAVE_LIBUTIL_H +# include +#endif + ]], [[ + int forkpty (int *, char *, struct termios const *, + struct winsize const *); + ]])], + [gl_cv_func_forkpty_const=yes], [gl_cv_func_forkpty_const=no])]) + if test $gl_cv_func_forkpty_const != yes; then + REPLACE_FORKPTY=1 + AC_LIBOBJ([forkpty]) + fi +]) + +AC_DEFUN([gl_OPENPTY], +[ + AC_REQUIRE([gl_PTY_LIB]) + AC_REQUIRE([gl_PTY]) + + AC_CHECK_DECLS([openpty],,, [[ +#if HAVE_PTY_H +# include +#endif +#if HAVE_UTIL_H +# include +#endif +#if HAVE_LIBUTIL_H +# include +#endif +]]) + if test $ac_cv_have_decl_openpty = no; then + AC_MSG_WARN([[Cannot find openpty, build will likely fail]]) + fi + + dnl Prefer glibc's const-safe prototype, if available. + AC_CACHE_CHECK([for const-safe openpty signature], + [gl_cv_func_openpty_const], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ +#if HAVE_PTY_H +# include +#endif +#if HAVE_UTIL_H +# include +#endif +#if HAVE_LIBUTIL_H +# include +#endif + ]], [[ + int openpty (int *, int *, char *, struct termios const *, + struct winsize const *); + ]])], + [gl_cv_func_openpty_const=yes], [gl_cv_func_openpty_const=no])]) + if test $gl_cv_func_openpty_const != yes; then + REPLACE_OPENPTY=1 + AC_LIBOBJ([openpty]) + fi ])