dnl Process this file with autoconf to produce a configure script.
dnl $Id: configure.in,v 1.2 1997/09/16 05:01:43 law Exp $
AC_PREREQ(2.5)
AC_INIT(texinfo.texi)

dnl Checks for programs.
dnl AC_PROG_GCC_TRADITIONAL
EGCS_PROG_INSTALL
AC_PROG_RANLIB

AC_ISC_POSIX
AC_MINIX

AM_CYGWIN32
AM_EXEEXT

dnl Checks for libraries.
# Needed on sysV68 for sigblock, sigsetmask.
AC_CHECK_LIB(bsd, sigblock)

TERMLIBS=
for termlib in curses ncurses termcap terminfo termlib ; do
   AC_CHECK_LIB(${termlib}, tputs,
     [TERMLIBS="${TERMLIBS} -l${termlib}"; break])
done
AC_SUBST(TERMLIBS)

dnl Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS(unistd.h termios.h termio.h strings.h string.h varargs.h \
  sys/time.h sys/fcntl.h sys/ttold.h sys/ptem.h sys/file.h)

dnl Checks for typedefs, structures, and compiler characteristics.
AC_TYPE_OFF_T
AC_C_CONST
AC_STRUCT_TM

dnl Checks for library functions.
AC_FUNC_ALLOCA
if test "$ac_cv_c_cross" = no; then
  AC_FUNC_SETVBUF_REVERSED
fi
AC_CHECK_FUNCS(setvbuf getcwd memset bzero strchr strcasecmp \
  vfprintf vsprintf strerror sigprocmask sigsetmask)
dnl strcasecmp, strerror, xmalloc, xrealloc, probably others should be added.
AC_REPLACE_FUNCS(memcpy memmove strdup)

AC_OUTPUT(Makefile libtxi/Makefile makeinfo/Makefile info/Makefile util/Makefile emacs/Makefile)
