diff -durN expect-5.39.orig/configure.in expect-5.39/configure.in --- expect-5.39.orig/configure.in 2004-12-28 16:49:51.000000000 +0000 +++ expect-5.39/configure.in 2004-12-28 16:53:24.019681264 +0000 @@ -1132,7 +1132,7 @@ fi EXP_BUILD_LIB_SPEC="-L`pwd` -lexpect${EXP_LIB_VERSION}${DBGX}" -EXP_LIB_SPEC="-L\${INSTALL_ROOT}\${exec_prefix}/lib -lexpect${EXP_LIB_VERSION}${DBGX}" +EXP_LIB_SPEC="-L\${INSTALL_ROOT}\${exec_prefix}/lib64 -lexpect${EXP_LIB_VERSION}${DBGX}" EXP_UNSHARED_LIB_FILE=libexpect${EXP_LIB_VERSION}${DBGX}.a # The TCL_SHARED_LIB_SUFFIX macro below relies on the DBGX macro, diff -durN expect-5.39.orig/configure.in~ expect-5.39/configure.in~ --- expect-5.39.orig/configure.in~ 1970-01-01 00:00:00.000000000 +0000 +++ expect-5.39/configure.in~ 2004-12-28 16:49:51.223031272 +0000 @@ -0,0 +1,1255 @@ +# Process this file with autoconf to produce a configure script. + +# while Expect is in alpha/beta, disable caching so as not to confuse +# people trying to fix configure bugs +define([AC_CACHE_LOAD], ) +define([AC_CACHE_SAVE], ) + +AC_INIT(expect.h) + +# note when updating version numbers here, also update pkgIndex.in (see +# comments in Makefile) +EXP_MAJOR_VERSION=5 +EXP_MINOR_VERSION=39 +EXP_MICRO_VERSION=0 +EXP_VERSION=$EXP_MAJOR_VERSION.$EXP_MINOR_VERSION +EXP_VERSION_NODOTS=$EXP_MAJOR_VERSION$EXP_MINOR_VERSION +EXP_VERSION_FULL=$EXP_VERSION.$EXP_MICRO_VERSION +# Tcl's handling of shared_lib_suffix requires this symbol exist +VERSION=$EXP_MAJOR_VERSION.$EXP_MINOR_VERSION + +# Too many people send me configure output without identifying the version. +# This forced identification should reduce my pain significantly. +echo "configuring Expect $EXP_MAJOR_VERSION.$EXP_MINOR_VERSION.$EXP_MICRO_VERSION" + +# People (when downloading Expect from CVS archive) sometimes run into +# Make thinking configure is old and needs to be rebuilt. If they +# don't have a clue about autoconf, they get confused. This is +# particular irritating because the problem only crops up after +# configure has successfully completed. Help them out by checking it +# right now and giving some advice. Alas, we cannot summarily fix the +# problem because it might conceivably be someone doing real +# development. +# Test if configure is older than configure.in and explain if no autoconf +AC_CHECK_PROG(found,autoconf,yes,no,) +AC_MSG_CHECKING([configure up to date]) +for i in `ls -tr ${srcdir}/configure ${srcdir}/configure.in ${srcdir}/Makefile.in` ; do + newest=$i +done +if test "$srcdir/configure" = "$newest" ; then + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi +if test $found = "no" -a "$newest" != "$srcdir/configure" ; then + AC_MSG_WARN([$srcdir/configure appears to be old ($srcdir/configure.in and/or $srcdir/Makefile.in are newer) and the autoconf program to fix this situation was not found. If you've no idea what this means, enter the command \"touch $srcdir/configure\" and restart $srcdir/configure.]) + exit +fi + +dnl AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..) +AC_CANONICAL_SYSTEM + +AC_CONFIG_HEADER(expect_cf.h) + +# /bin/sh on some systems is too deficient (in particular, Ultrix 4.3 +# sh lacks unset and we *need* that), but all these systems come with +# alternatives, so take user's choice or whatever we're using here and +# allow it to be seen by Make. +AC_MSG_CHECKING([shell to use within Make]) +EXP_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} +AC_MSG_RESULT($CONFIG_SHELL) + +# If `configure' is invoked (in)directly via `make', ensure that it +# encounters no `make' conflicts. +# +dnl unset MFLAGS MAKEFLAGS +MFLAGS= +MAKEFLAGS= + +# An explanation is in order for the strange things going on with the +# various LIBS. There are three separate definitions for LIBS. The +# reason is that some systems require shared libraries include +# references to their dependent libraries, i.e., any additional +# libraries that must be linked to. And some systems get upset if the +# references are repeated on the link line. So therefore, we create +# one for Expect and Tk (EXP_AND_TK_LIBS), one for Expect and Tcl +# (EXP_AND_TCL_LIBS), and finally, one for building Expect's own +# shared library. Tcl's tclConfig.sh insists that any shared libs +# that it "helps" build must pass the libraries as LIBS (see comment +# near end of this configure file). I would do but since we're close +# to hitting config's max symbols, we take one short cut and pack the +# LIBS into EXP_SHLIB_LD_LIBS (which is basically what Tcl wants to do +# for us). The point, however, is that there's no separate LIBS or +# EXP_LIBS symbol passed out of configure. One additional point for +# confusion is that LIBS is what configure uses to do all library +# tests, so we have to swap definitions of LIBS peridically. When we +# are swapping out the one for Expect's shared library, we save it in +# EXP_LIBS. Sigh. + +dnl AC_PROG_CC insists on sticking crap -g and -O in CFLAGS +dnl but I want to control it. Can't just throw it out at the +dnl end alas, because the user might have defined CFLAGS. +OLD_CFLAGS=$CFLAGS +AC_PROG_CC +CFLAGS=$OLD_CFLAGS + +#------------------------------------------------------------------------ +# Hook for when threading is supported in Expect. The --enable-threads +# flag currently has no effect. +#------------------------------------------------------------------------ + +SC_ENABLE_THREADS + +CY_AC_PATH_TCLCONFIG +CY_AC_LOAD_TCLCONFIG +CC=$TCL_CC +EXP_AND_TCL_LIBS=$TCL_LIBS +CY_AC_PATH_TKCONFIG +CY_AC_LOAD_TKCONFIG +EXP_AND_TK_LIBS=$TK_LIBS + + +CY_AC_C_WORKS + +# this'll use a BSD compatible install or our included install-sh +AC_PROG_INSTALL + +# Tcl sets TCL_RANLIB appropriately for shared library if --enable-shared +AC_PROG_RANLIB +UNSHARED_RANLIB=$RANLIB + +# these are the other subdirectories we need to configure +AC_CONFIG_SUBDIRS(testsuite) + +# This is for LynxOS, which needs a flag to force true POSIX when +# building. The flag varies depending how old the compiler is. +# -X is for the old "cc" and "gcc" (based on 1.42) +# -mposix is for the new gcc (at least 2.5.8) +# This modifies the value of $CC to have the POSIX flag added +# so it'll configure correctly +CY_AC_TCL_LYNX_POSIX + +AC_TYPE_PID_T +AC_RETSIGTYPE +dnl AC_TIME_WITH_SYS_TIME +AC_HEADER_TIME +AC_HEADER_SYS_WAIT + +AC_ARG_ENABLE(symbols, + [ --enable-symbols allow use of symbols if available], + [enable_symbols=$enableval], [enable_symbols=no]) +if test "$enable_symbols" = "no"; then + EXP_CFLAGS="$TCL_EXTRA_CFLAGS" +else + EXP_CFLAGS="-g $TCL_EXTRA_CFLAGS" + # This is always "g" for unix. + DBGX=g +fi +case "${host}" in + # Use -g on all systems but Linux where it upsets the dynamic X libraries. + i[[3456]]86-*-linux*) EXP_CFLAGS="" ;; +esac + +AC_MSG_CHECKING([if running Mach]) +mach=0 +case "${host}" in + # Both Next and pure Mach behave identically with respect + # to a few things, so just lump them together as "mach" + *-*-mach*) mach=1 ;; + *-*-next*) mach=1 ; next=1 ;; +esac + +if test $mach -eq 1 ; then + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +AC_MSG_CHECKING([if running MachTen]) +# yet another Mach clone +if test -r /MachTen ; then + AC_MSG_RESULT(yes) + mach=1 +else + AC_MSG_RESULT(no) +fi + +AC_MSG_CHECKING([if on Pyramid]) +if test -r /bin/pyr ; then + AC_MSG_RESULT(yes) + pyr=1 +else + AC_MSG_RESULT(no) + pyr=0 +fi + +AC_MSG_CHECKING([if on Apollo]) +if test -r /usr/apollo/bin ; then + AC_MSG_RESULT(yes) + apollo=1 +else + AC_MSG_RESULT(no) + apollo=0 +fi + +AC_MSG_CHECKING([if on Interactive]) +if test "x`(uname -s) 2>/dev/null`" = xIUNIX; then + AC_MSG_RESULT(yes) + iunix=1 +else + AC_MSG_RESULT(no) + iunix=0 +fi + +AC_MSG_CHECKING([if stty reads stdout]) + +# On some systems stty can't be run in the background (svr4) or get it +# wrong because they fail to complain (next, mach), so don't attempt +# the test on some systems. + +stty_reads_stdout="" +case "${host}" in + *-*-solaris*) stty_reads_stdout=0 ;; + *-*-irix*) stty_reads_stdout=0 ;; + *-*-sco3.2v[[45]]*) stty_reads_stdout=1 ;; + i[[3456]]86-*-sysv4.2MP) stty_reads_stdout=0 ;; + i[[3456]]86-*-linux*) stty_reads_stdout=0 ;; + # Not sure about old convex but 5.2 definitely reads from stdout + c[[12]]-*-*) stty_reads_stdout=1 ;; + *-*-aix[[34]]*) stty_reads_stdout=0 ;; + *-*-hpux9*) stty_reads_stdout=0 ;; + *-*-hpux10*) stty_reads_stdout=0 ;; + *-*-osf[[234]]*) stty_reads_stdout=0 ;; + *-*-ultrix4.4) stty_reads_stdout=0 ;; + *-*-dgux*) stty_reads_stdout=0 ;; +esac + +if test $mach -eq 1 ; then + stty_reads_stdout=1 +fi +if test $apollo -eq 1 ; then + stty_reads_stdout=1 +fi +if test $pyr -eq 1 ; then + stty_reads_stdout=1 +fi + +# if we still don't know, test +if test x"${stty_reads_stdout}" = x"" ; then + /bin/stty > /dev/null 2> /dev/null + if test $? -ne 0 ; then + stty_reads_stdout=1 + else + stty_reads_stdout=0 + fi +fi + +if test ${stty_reads_stdout} -eq 1 ; then + AC_MSG_RESULT(yes) + AC_DEFINE(STTY_READS_STDOUT) +else + AC_MSG_RESULT(no) +fi + +# Solaris 2.4 and later requires __EXTENSIONS__ in order to see all sorts +# of traditional but nonstandard stuff in header files. +AC_MSG_CHECKING([if running Solaris]) +solaris=0 +case "${host}" in + *-*-solaris*) solaris=1;; +esac + +if test $solaris -eq 1 ; then + AC_MSG_RESULT(yes) + AC_DEFINE(SOLARIS) +else + AC_MSG_RESULT(no) +fi + + +# On a few systems, libm.a is the same as libc.a +# Don't bother to test against Tcl and Tk libs, they always include -lm +AC_CHECK_FUNC(sin, , LIBS="${LIBS} -lm" ) + +# On Interactive UNIX, -Xp must be added to LIBS in order to find strftime. +# This test should really be done by Tcl. So just check Tcl's definition. +# If defective, add to all three LIBS. (It's not actually necessary for +# EXP_LIBS since -Xp will just be ignored the way that EXP_LIBS is used in +# the Makefile, but we include it for consistency.) +if test $iunix -eq 1 ; then + EXP_LIBS=$LIBS + LIBS=$EXP_AND_TCL_LIBS + AC_CHECK_FUNC(strftime, , [ + EXP_LIBS="${LIBS} -Xp" + EXP_AND_TCL_LIBS="${LIBS} -Xp" + EXP_AND_TK_LIBS="${LIBS} -Xp" + ]) + LIBS=EXP_LIBS +fi + +# +# Ok, lets find the tcl source trees so we can use the headers +# +CY_AC_PATH_TCLH +if test x"$no_tcl" = x"true" ; then + echo " ERROR: Can't find Tcl headers or library." + echo " See README for information on how to obtain Tcl." + echo " If Tcl is installed, see INSTALL on how to tell" + echo " configure where Tcl is installed." + exit 1 +fi + +# have to know whether we're generating shared libs before configuring debugger +AC_MSG_CHECKING([type of library to build]) +AC_ARG_ENABLE(shared, + [ --enable-shared build libexpect as a shared library], + [enable_shared=$enableval], [enable_shared=no]) +if test "$enable_shared" = "yes" && test "x${TCL_SHLIB_SUFFIX}" != "x" ; then + AC_MSG_RESULT(both shared and unshared) +else + AC_MSG_RESULT(unshared) +fi + +# +# Now that we've found the Tcl sources, configure the debugger +# this is a little tricky because it has its own configure script +# which produces a Makefile and cf file. We only want the cf file, +# so switch to a temporary directory and run the debugger's configure. +# Then save the cf file and delete the rest. +# +# Incidentally, the debugger can't depend on Expect's cf file, because +# the debugger is designed to be independent of Expect. +# + +test -n "$verbose" && echo "configuring Tcl debugger" +tmpdir=./Dbg$$ +mkdir ${tmpdir} + +#if test "${enable_shared+set}" = set; then +if test "${enable_shared}" = "yes"; then + dbg_config_flags='--enable-shared' +else + dbg_config_flags='--disable-shared' +fi +# (cd;pwd) in next several commands converts relative dirs to absolute. +# This is required because the debugger src is at a different level in +# the filesystem than Expect src (where we are presently), thereby +# making the relative pathnames incorrect. +if test "x$with_tclconfig" != "x" ; then + dbg_config_flags="$dbg_config_flags --with-tclconfig=`(cd ${with_tclconfig}; pwd)`" +fi +if test "x$with_tcllibdir" != "x" ; then + dbg_config_flags="$dbg_config_flags --with-tcllibdir=`(cd ${with_tcllibdir}; pwd)`" +fi +if test "x$with_tcllib" != "x" ; then + dbg_config_flags="$dbg_config_flags --with-tcllib=`(cd ${with_tcllib}; pwd)`" +fi +if test "x$with_tclinclude" != "x" ; then + dbg_config_flags="$dbg_config_flags --with-tclinclude=`(cd ${with_tclinclude}; pwd)`" +fi +case "$cache_file" in + /*) + dbg_config_flags="$dbg_config_flags --cache-file=$cache_file" + ;; + *) + dbg_config_flags="$dbg_config_flags --cache-file=../$cache_file" + ;; +esac + +cp ${srcdir}/Dbgconfigure ${srcdir}/tcldbg.h ${srcdir}/tcldbgcf.h.in ${srcdir}/install-sh ${tmpdir} +cp $srcdir/DbgMkfl.in ${tmpdir}/Makefile.in +cp $srcdir/DbgpkgInd.in ${tmpdir}/pkgIndex.in +(cd $tmpdir; ${CONFIG_SHELL-/bin/sh} Dbgconfigure --with-tclinclude=$TCLHDIR $dbg_config_flags) +cp ${tmpdir}/tcldbgcf.h . +rm -rf $tmpdir +test -n "$verbose" && echo "configured Tcl debugger" + +# some people would complain if this explanation wasn't provided... + +echo "Begin tests for function/library dependencies. Tests may be repeated" +echo "up to three times. First test is for building Expect's shared library." +echo "Second set is for building with Tcl. Third is for building with Tk." + +###################################################################### +# required by Sequent ptx2 +unset ac_cv_func_gethostname +AC_CHECK_FUNC(gethostname, gethostname=1 , gethostname=0) +if test $gethostname -eq 0 ; then + unset ac_cv_lib_inet_gethostname + AC_CHECK_LIB(inet, gethostname, LIBS="$LIBS -linet") +fi +# save results and retry for Tcl +EXP_LIBS=$LIBS +LIBS=$EXP_AND_TCL_LIBS +unset ac_cv_func_gethostname +AC_CHECK_FUNC(gethostname, gethostname=1 , gethostname=0) +if test $gethostname -eq 0 ; then + unset ac_cv_lib_inet_gethostname + AC_CHECK_LIB(inet, gethostname, LIBS="$LIBS -linet") +fi +# save Tcl results and retry for Tk +EXP_AND_TCL_LIBS=$LIBS +LIBS=$EXP_AND_TK_LIBS +unset ac_cv_func_gethostname +AC_CHECK_FUNC(gethostname, gethostname=1 , gethostname=0) +if test $gethostname -eq 0 ; then + unset ac_cv_lib_inet_gethostname + AC_CHECK_LIB(inet, gethostname, LIBS="$LIBS -linet") +fi +# save Tk results and reset for Expect +EXP_AND_TK_LIBS=$LIBS +LIBS=$EXP_LIBS + +###################################################################### +# required by Fischman's ISC 4.0 +unset ac_cv_func_socket +AC_CHECK_FUNC(socket, socket=1 , socket=0) +if test $socket -eq 0 ; then + unset ac_cv_lib_inet_socket + AC_CHECK_LIB(inet, socket, LIBS="$LIBS -linet") +fi +# save results and retry for Tcl +EXP_LIBS=$LIBS +LIBS=$EXP_AND_TCL_LIBS +unset ac_cv_func_socket +AC_CHECK_FUNC(socket, socket=1 , socket=0) +if test $socket -eq 0 ; then + unset ac_cv_lib_inet_socket + AC_CHECK_LIB(inet, socket, LIBS="$LIBS -linet") +fi +# save Tcl results and retry for Tk +EXP_AND_TCL_LIBS=$LIBS +LIBS=$EXP_AND_TK_LIBS +unset ac_cv_func_socket +AC_CHECK_FUNC(socket, socket=1 , socket=0) +if test $socket -eq 0 ; then + unset ac_cv_lib_inet_socket + AC_CHECK_LIB(inet, socket, LIBS="$LIBS -linet") +fi +# save Tk results and reset for Expect +EXP_AND_TK_LIBS=$LIBS +LIBS=$EXP_LIBS + +###################################################################### +unset ac_cv_func_select +AC_CHECK_FUNC(select, select=1 , select=0) +if test $select -eq 0 ; then + unset ac_cv_lib_inet_select + AC_CHECK_LIB(inet, select, LIBS="$LIBS -linet") +fi +# save results and retry for Tcl +EXP_LIBS=$LIBS +LIBS=$EXP_AND_TCL_LIBS +unset ac_cv_func_select +AC_CHECK_FUNC(select, select=1 , select=0) +if test $select -eq 0 ; then + unset ac_cv_lib_inet_select + AC_CHECK_LIB(inet, select, LIBS="$LIBS -linet") +fi +# save Tcl results and retry for Tk +EXP_AND_TCL_LIBS=$LIBS +LIBS=$EXP_AND_TK_LIBS +unset ac_cv_func_select +AC_CHECK_FUNC(select, select=1 , select=0) +if test $select -eq 0 ; then + unset ac_cv_lib_inet_select + AC_CHECK_LIB(inet, select, LIBS="$LIBS -linet") +fi +# save Tk results and reset for Expect +EXP_AND_TK_LIBS=$LIBS +LIBS=$EXP_LIBS + +###################################################################### +unset ac_cv_func_getpseudotty +AC_CHECK_FUNC(getpseudotty, getpseudotty=1 , getpseudotty=0) +if test $getpseudotty -eq 0 ; then + unset ac_cv_lib_seq_getpseudotty + AC_CHECK_LIB(seq, getpseudotty) +fi +# save results and retry for Tcl +EXP_LIBS=$LIBS +LIBS=$EXP_AND_TCL_LIBS +unset ac_cv_func_getpseudotty +AC_CHECK_FUNC(getpseudotty, getpseudotty=1 , getpseudotty=0) +if test $getpseudotty -eq 0 ; then + unset ac_cv_lib_seq_getpseudotty + AC_CHECK_LIB(seq, getpseudotty) +fi +# save Tcl results and retry for Tk +EXP_AND_TCL_LIBS=$LIBS +LIBS=$EXP_AND_TK_LIBS +unset ac_cv_func_getpseudotty +AC_CHECK_FUNC(getpseudotty, getpseudotty=1 , getpseudotty=0) +if test $getpseudotty -eq 0 ; then + unset ac_cv_lib_seq_getpseudotty + AC_CHECK_LIB(seq, getpseudotty) +fi +# save Tk results and reset for Expect +EXP_AND_TK_LIBS=$LIBS +LIBS=$EXP_LIBS + +###################################################################### +# Check for FreeBSD/NetBSD openpty() +unset ac_cv_func_openpty +AC_CHECK_FUNC(openpty, openpty=1 , openpty=0) +if test $openpty -eq 0 ; then + unset ac_cv_lib_util_openpty + AC_CHECK_LIB(util, openpty, [ + # we only need to define OPENPTY once, but since we are overriding + # the default behavior, we must also handle augment LIBS too. + # This needn't be done in the 2nd and 3rd tests. + AC_DEFINE(HAVE_OPENPTY) + LIBS="$LIBS -lutil" + ]) +fi +# save results and retry for Tcl +EXP_LIBS=$LIBS +LIBS=$EXP_AND_TCL_LIBS +unset ac_cv_func_openpty +AC_CHECK_FUNC(openpty, openpty=1 , openpty=0) +if test $openpty -eq 0 ; then + unset ac_cv_lib_util_openpty + AC_CHECK_LIB(util, openpty, [ + AC_DEFINE(HAVE_OPENPTY) + LIBS="$LIBS -lutil" + ]) +fi +# save Tcl results and retry for Tk +EXP_AND_TCL_LIBS=$LIBS +LIBS=$EXP_AND_TK_LIBS +unset ac_cv_func_openpty +AC_CHECK_FUNC(openpty, openpty=1 , openpty=0) +if test $openpty -eq 0 ; then + unset ac_cv_lib_util_openpty + AC_CHECK_LIB(util, openpty, [ + AC_DEFINE(HAVE_OPENPTY) + LIBS="$LIBS -lutil" + ]) +fi +# save Tk results and reset for Expect +EXP_AND_TK_LIBS=$LIBS +LIBS=$EXP_LIBS + +###################################################################### +# End of library/func checking +###################################################################### + +# Hand patches to library/func checking. + +dnl From: Michael Kuhl +dnl To get expect to compile on a Sequent NUMA-Q running DYNIX/ptx v4.4.2. +AC_MSG_CHECKING([if running Sequent running SVR4]) +if test "$host_alias" = "i386-sequent-sysv4" ; then + EXP_AND_TCL_LIBS="-lnsl -lsocket -lm" + dnl if there's something similar required for Tk, no one's told me! + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +###################################################################### +# +# Look for various header files +# +AC_CHECK_HEADER(sys/sysmacros.h, AC_DEFINE(HAVE_SYSMACROS_H)) +AC_CHECK_HEADER(stdlib.h, ,AC_DEFINE(NO_STDLIB_H)) +AC_CHECK_HEADER(inttypes.h, AC_DEFINE(HAVE_INTTYPES_H)) + +# Oddly, some systems have stdarg but don't support prototypes +# Tcl avoids the whole issue by not using stdarg on UNIX at all! +dnl AC_CHECK_HEADER(stdarg.h, AC_DEFINE(HAVE_STDARG_H)) + +AC_CHECK_HEADER(varargs.h, AC_DEFINE(HAVE_VARARGS_H)) +AC_CHECK_HEADER(unistd.h, AC_DEFINE(HAVE_UNISTD_H)) +# If no stropts.h, then the svr4 implementation is broken. +# At least it is on my Debian "potato" system. - Rob Savoye +AC_CHECK_HEADER(sys/stropts.h, AC_DEFINE(HAVE_STROPTS_H), svr4_ptys_broken=1) +AC_CHECK_HEADER(sys/sysconfig.h, AC_DEFINE(HAVE_SYSCONF_H)) +AC_CHECK_HEADER(sys/fcntl.h, AC_DEFINE(HAVE_SYS_FCNTL_H)) +AC_CHECK_HEADER(sys/select.h, AC_DEFINE(HAVE_SYS_SELECT_H)) +AC_CHECK_HEADER(sys/time.h, AC_DEFINE(HAVE_SYS_TIME_H)) +AC_CHECK_HEADER(sys/ptem.h, AC_DEFINE(HAVE_SYS_PTEM_H)) +AC_CHECK_HEADER(sys/strredir.h, AC_DEFINE(HAVE_STRREDIR_H)) +AC_CHECK_HEADER(sys/strpty.h, AC_DEFINE(HAVE_STRPTY_H)) + +dnl #echo checking for ucbinclude/sys/ioctl.h (ucb-style ioctl.h under SV) +dnl #if test -f /usr/ucbinclude/sys/ioctl.h ; then +dnl # AC_DEFINE(HAVE_UCB_IOCTL_H) +dnl #fi + +AC_MSG_CHECKING([for sys/bsdtypes.h]) +if test "ISC_${ISC}" = "ISC_1" ; then + AC_MSG_RESULT(yes) + # if on ISC 1, we need to get FD_SET macros + AC_HAVE_HEADERS(sys/bsdtypes.h) +else + AC_MSG_RESULT(no) +fi + +# +# Look for functions that may be missing +# +dnl AC_CHECK_FUNC(memcpy, AC_DEFINE(HAVE_MEMCPY)) +AC_CHECK_FUNC(memmove, AC_DEFINE(HAVE_MEMMOVE)) +AC_CHECK_FUNC(sysconf, AC_DEFINE(HAVE_SYSCONF)) +AC_CHECK_FUNC(strftime, AC_DEFINE(HAVE_STRFTIME)) +AC_CHECK_FUNC(strchr, AC_DEFINE(HAVE_STRCHR)) +AC_CHECK_FUNC(timezone, AC_DEFINE(HAVE_TIMEZONE)) +AC_CHECK_FUNC(siglongjmp, AC_DEFINE(HAVE_SIGLONGJMP)) + +# dnl check for memcpy by hand +# because Unixware 2.0 handles it specially and refuses to compile +# autoconf's automatic test that is a call with no arguments +AC_MSG_CHECKING([for memcpy]) +AC_TRY_LINK(,[ +char *s1, *s2; +memcpy(s1,s2,0); +], + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_MEMCPY) + , + AC_MSG_RESULT(no) +) + +# Some systems only define WNOHANG if _POSIX_SOURCE is defined +# The following merely tests that sys/wait.h can be included +# and if so that WNOHANG is not defined. The only place I've +# seen this is ISC. +AC_MSG_CHECKING([if WNOHANG requires _POSIX_SOURCE]) +AC_TRY_RUN([ +#include +main() { +#ifndef WNOHANG + return 0; +#else + return 1; +#endif +}], + AC_MSG_RESULT(yes) + AC_DEFINE(WNOHANG_REQUIRES_POSIX_SOURCE) +, + AC_MSG_RESULT(no) +, + AC_MSG_ERROR([Expect can't be cross compiled]) +) + +AC_MSG_CHECKING([if any value exists for WNOHANG]) +rm -rf wnohang +AC_TRY_RUN([ +#include +#include +main() { +#ifdef WNOHANG + FILE *fp = fopen("wnohang","w"); + fprintf(fp,"%d",WNOHANG); + fclose(fp); + return 0; +#else + return 1; +#endif +}], + AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED(WNOHANG_BACKUP_VALUE, `cat wnohang`) + rm -f wnohang +, + AC_MSG_RESULT(no) + AC_DEFINE(WNOHANG_BACKUP_VALUE, 1) +, + AC_MSG_ERROR([Expect can't be cross compiled]) +) + +#-----Stolen from Tcl's configure file------------------------------- +# The check below checks whether defines the type +# "union wait" correctly. It's needed because of weirdness in +# HP-UX where "union wait" is defined in both the BSD and SYS-V +# environments. Checking the usability of WIFEXITED seems to do +# the trick. +#-------------------------------------------------------------------- + +AC_MSG_CHECKING([union wait]) +AC_TRY_LINK([#include +#include ], [ +union wait x; +WIFEXITED(x); /* Generates compiler error if WIFEXITED + * uses an int. */ +], tcl_ok=yes, tcl_ok=no) +AC_MSG_RESULT($tcl_ok) +if test $tcl_ok = no; then + AC_DEFINE(NO_UNION_WAIT) +fi + + + +# +# check how signals work +# + +# Check for the data type of the mask used in select(). +# This picks up HP braindamage which defines fd_set and then +# proceeds to ignore it and use int. +# Pattern matching on int could be loosened. +# Can't use ac_header_egrep since that doesn't see prototypes with K&R cpp. +AC_MSG_CHECKING([mask type of select]) +if egrep "select\(size_t, int" /usr/include/sys/time.h >/dev/null 2>&1; then + AC_MSG_RESULT(int) + AC_DEFINE(SELECT_MASK_TYPE, int) +else + AC_MSG_RESULT(none) +fi + +dnl # Check for the data type of the function used in signal(). This +dnl # must be before the test for rearming. +dnl # echo checking return type of signal handlers +dnl AC_HEADER_EGREP([(void|sighandler_t).*signal], signal.h, retsigtype=void,AC_DEFINE(RETSIGTYPE, int) retsigtype=int) + +# FIXME: check if alarm exists +AC_MSG_CHECKING([if signals need to be re-armed]) +AC_TRY_RUN([ +#include +#define RETSIGTYPE $retsigtype + +int signal_rearms = 0; + +RETSIGTYPE +child_sigint_handler(n) +int n; +{ +} + +RETSIGTYPE +parent_sigint_handler(n) +int n; +{ +signal_rearms++; +} + +main() +{ + signal(SIGINT,parent_sigint_handler); + + if (0 == fork()) { + signal(SIGINT,child_sigint_handler); + kill(getpid(),SIGINT); + kill(getpid(),SIGINT); + kill(getppid(),SIGINT); + } else { + int status; + + wait(&status); + unlink("core"); + exit(signal_rearms); + } +}], + AC_MSG_RESULT(yes) + AC_DEFINE(REARM_SIG) +, + AC_MSG_RESULT(no) +, AC_MSG_WARN([Expect can't be cross compiled]) +) + +# HPUX7 has trouble with the big cat so split it +# Owen Rees 29Mar93 +SEDDEFS="${SEDDEFS}CONFEOF +cat >> conftest.sed </dev/null`" = xHP-UX; then + AC_MSG_RESULT(yes) + hp=1 +else + AC_MSG_RESULT(no) + hp=0 +fi + +AC_MSG_CHECKING([sane default stty arguments]) +DEFAULT_STTY_ARGS="sane" + +if test $mach -eq 1 ; then + DEFAULT_STTY_ARGS="cooked" +fi + +if test $hp -eq 1 ; then + DEFAULT_STTY_ARGS="sane kill " +fi + +AC_MSG_RESULT($DEFAULT_STTY_ARG) + +# Look for various features to determine what kind of pty +# we have. For some weird reason, ac_compile_check would not +# work, but ac_test_program does. +# +AC_MSG_CHECKING([for HP style pty allocation]) +# following test fails on DECstations and other things that don't grok -c +# but that's ok, since they don't have PTYMs anyway +if test -r /dev/ptym/ptyp0 2>/dev/null ; then + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_PTYM) +else + AC_MSG_RESULT(no) +fi + +AC_MSG_CHECKING([for HP style pty trapping]) +AC_HEADER_EGREP([struct.*request_info], sys/ptyio.h, + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_PTYTRAP) +, + AC_MSG_RESULT(no) +) + +AC_MSG_CHECKING([for AIX new-style pty allocation]) +if test -r /dev/ptc -a -r /dev/pts ; then + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_PTC_PTS) +else + AC_MSG_RESULT(no) +fi + +AC_MSG_CHECKING([for SGI old-style pty allocation]) +if test -r /dev/ptc -a ! -r /dev/pts ; then + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_PTC) +else + AC_MSG_RESULT(no) +fi + +# On SCO OpenServer, two types of ptys are available: SVR4 streams and c-list. +# The library routines to open the SVR4 ptys are broken on certain systems and +# the SCO command to increase the number of ptys only configure c-list ones +# anyway. So we chose these, which have a special numbering scheme. +# +AC_MSG_CHECKING([for SCO style pty allocation]) +sco_ptys="" +case "${host}" in + *-sco3.2v[[45]]*) sco_clist_ptys=1 svr4_ptys_broken=1;; +esac + +if test x"${sco_clist_ptys}" != x"" ; then + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_SCO_CLIST_PTYS) +else + AC_MSG_RESULT(no) +fi + +AC_MSG_CHECKING([for SVR4 style pty allocation]) +if test -r /dev/ptmx -a "x$svr4_ptys_broken" = x ; then + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_PTMX) + # aargg. Some systems need libpt.a to use /dev/ptmx + AC_CHECK_LIB(pt, libpts="-lpt", libpts="") + AC_CHECK_FUNC(ptsname, , LIBS="${LIBS} $libpts") + # I've never seen Tcl or Tk include -lpt so don't bother with explicit test + AC_CHECK_FUNC(ptsname, , EXP_AND_TCL_LIBS="${EXP_AND_TCL_LIBS} $libpts") + AC_CHECK_FUNC(ptsname, , EXP_AND_TK_LIBS="${EXP_AND_TK_LIBS} $libpts") +else + AC_MSG_RESULT(no) +fi + +# In OSF/1 case, SVR4 are somewhat different. +# Gregory Depp 17Aug93 +AC_MSG_CHECKING([for OSF/1 style pty allocation]) +if test -r /dev/ptmx_bsd ; then + AC_DEFINE(HAVE_PTMX_BSD) + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +tcgetattr=0 +tcsetattr=0 +AC_CHECK_FUNC(tcgetattr, tcgetattr=1) +AC_CHECK_FUNC(tcsetattr, tcsetattr=1) +if test $tcgetattr -eq 1 -a $tcsetattr -eq 1 ; then + AC_DEFINE(HAVE_TCSETATTR) + AC_DEFINE(POSIX) +fi + +# first check for the pure bsd +AC_MSG_CHECKING([for struct sgttyb]) +AC_TRY_RUN([ +#include +main() +{ + struct sgttyb tmp; + exit(0); +}], + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_SGTTYB) + PTY_TYPE=sgttyb +, + AC_MSG_RESULT(no) +, + AC_MSG_ERROR([Expect can't be cross compiled]) +) + +# mach systems have include files for unimplemented features +# so avoid doing following test on those systems +if test $mach -eq 0 ; then + + # next check for the older style ttys + # note that if we detect termio.h (only), we still set PTY_TYPE=termios + # since that just controls which of pty_XXXX.c file is use and + # pty_termios.c is set up to handle pty_termio. + AC_MSG_CHECKING([for struct termio]) + AC_TRY_RUN([#include + main() + { + struct termio tmp; + exit(0); + }], + AC_DEFINE(HAVE_TERMIO) + PTY_TYPE=termios + AC_MSG_RESULT(yes) +, + AC_MSG_RESULT(no) +, + AC_MSG_ERROR([Expect can't be cross compiled]) +) + + # now check for the new style ttys (not yet posix) + AC_MSG_CHECKING([for struct termios]) + AC_TRY_RUN([ + /* including termios.h on Solaris 5.6 fails unless inttypes.h included */ +# ifdef HAVE_INTTYPES_H +# include +# endif +# include + main() + { + struct termios tmp; + exit(0); + }], + AC_DEFINE(HAVE_TERMIOS) + PTY_TYPE=termios + AC_MSG_RESULT(yes) + , + AC_MSG_RESULT(no) + , + AC_MSG_ERROR([Expect can't be cross compiled]) + ) +fi + +AC_MSG_CHECKING([if TCGETS or TCGETA in termios.h]) +AC_TRY_RUN([ +/* including termios.h on Solaris 5.6 fails unless inttypes.h included */ +#ifdef HAVE_INTTYPES_H +#include +#endif +#include +main() { +#if defined(TCGETS) || defined(TCGETA) + return 0; +#else + return 1; +#endif +}], + AC_DEFINE(HAVE_TCGETS_OR_TCGETA_IN_TERMIOS_H) + AC_MSG_RESULT(yes) +, + AC_MSG_RESULT(no) +, + AC_MSG_ERROR([Expect can't be cross compiled]) +) + +AC_MSG_CHECKING([if TIOCGWINSZ in termios.h]) +AC_TRY_RUN([ +/* including termios.h on Solaris 5.6 fails unless inttypes.h included */ +#ifdef HAVE_INTTYPES_H +#include +#endif +#include +main() { +#ifdef TIOCGWINSZ + return 0; +#else + return 1; +#endif +}], + AC_DEFINE(HAVE_TIOCGWINSZ_IN_TERMIOS_H) + AC_MSG_RESULT(yes) +, + AC_MSG_RESULT(no) +, + AC_MSG_ERROR([Expect can't be cross compiled]) +) + +# finally check for Cray style ttys +AC_MSG_CHECKING([for Cray-style ptys]) +SETUID=":" +AC_TRY_RUN([ +main(){ +#ifdef CRAY + return 0; +#else + return 1; +#endif +} +], + PTY_TYPE=unicos + SETUID="chmod u+s" + AC_MSG_RESULT(yes) +, + AC_MSG_RESULT(no) +, + AC_MSG_ERROR([Expect can't be cross compiled]) +) + +# +# Check for select and/or poll. If both exist, we prefer select. +# if neither exists, define SIMPLE_EVENT. +# +select=0 +poll=0 +unset ac_cv_func_select +AC_CHECK_FUNC(select, select=1) +AC_CHECK_FUNC(poll, poll=1) +AC_MSG_CHECKING([event handling]) +if test $select -eq 1 ; then + EVENT_TYPE=select + EVENT_ABLE=event + AC_MSG_RESULT(via select) +elif test $poll -eq 1 ; then + EVENT_TYPE=poll + EVENT_ABLE=event + AC_MSG_RESULT(via poll) +else + EVENT_TYPE=simple + EVENT_ABLE=noevent + AC_MSG_RESULT(none) + AC_DEFINE(SIMPLE_EVENT) +fi + +AC_HAVE_FUNCS(_getpty) +AC_HAVE_FUNCS(getpty) + +# following test sets SETPGRP_VOID if setpgrp takes 0 args, else takes 2 +AC_FUNC_SETPGRP + +# +# check for timezones +# +AC_MSG_CHECKING([for SV-style timezone]) +AC_TRY_RUN([ +extern char *tzname[2]; +extern int daylight; +main() +{ + int *x = &daylight; + char **y = tzname; + + exit(0); +}], + AC_DEFINE(HAVE_SV_TIMEZONE) + AC_MSG_RESULT(yes), + AC_MSG_RESULT(no) +, + AC_MSG_ERROR([Expect can't be cross compiled]) +) + +# only look for Tk stuff if we have X11 and user doesn't say not to +AC_ARG_WITH(x, [ --with-x whether or not to use X (default yes)], , with_x=yes) +if test "$with_x" = "no"; then + no_tk=true +else + CY_AC_PATH_TKH +fi +if test x"$no_tk" != x"true" ; then +# libexpectk no longer exists +# X_PROGS="expectk \$(LIBEXPECTK)" + X_PROGS=expectk +# should really generate following symbol, but I'm hitting configure's limit on substs. + X_PROGS_INSTALLED=expectk_installed +else + X_PROGS="# no X support on this system" + AC_MSG_WARN([No X based programs will be built]) + echo " WARNING: Can't find Tk headers or library. You can still" + echo " build expect, but not expectk. See Expect's README for" + echo " information on how to obtain Tk. If Tk is installed, see" + echo " Expect's INSTALL on how to tell configure where Tk is" + echo " installed." +fi + +# consume these flags so that user can invoke Expect's configure with +# the same command as Tcl's configure +AC_ARG_ENABLE(load, + [ --disable-load disallow dynamic loading], + [disable_dl=$enableval], [disable_dl=no]) + +AC_ARG_ENABLE(gcc, + [ --enable-gcc allow use of gcc if available], + [enable_gcc=$enableval], [enable_gcc=no]) + +# Following comment stolen from Tcl's configure.in: +# Note: in the following variable, it's important to use the absolute +# path name of the Tcl directory rather than "..": this is because +# AIX remembers this path and will attempt to use it at run-time to look +# up the Tcl library. + +if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then + EXP_LIB_VERSION=$EXP_VERSION +else + EXP_LIB_VERSION=$EXP_VERSION_NODOTS +fi +if test $iunix -eq 1 ; then + EXP_LIB_VERSION=$EXP_VERSION_NODOTS +fi + +# also remove dots on systems that don't support filenames > 14 +# (are there systems which support shared libs and restrict filename lengths!?) +AC_SYS_LONG_FILE_NAMES +if test $ac_cv_sys_long_file_names = no; then + EXP_LIB_VERSION=$EXP_VERSION_NODOTS +fi + +EXP_BUILD_LIB_SPEC="-L`pwd` -lexpect${EXP_LIB_VERSION}${DBGX}" +EXP_LIB_SPEC="-L\${INSTALL_ROOT}\${exec_prefix}/lib -lexpect${EXP_LIB_VERSION}${DBGX}" +EXP_UNSHARED_LIB_FILE=libexpect${EXP_LIB_VERSION}${DBGX}.a + +# The TCL_SHARED_LIB_SUFFIX macro below relies on the DBGX macro, +# which is set way far above here. Don't set it to the value of +# TCL_DBGX, or you'll run into problems if you build Tcl with symbols +# and expect without (and vice versa?) + +AC_MSG_CHECKING([for type of library to build]) +if test "$enable_shared" = "yes" && test "x${TCL_SHLIB_SUFFIX}" != "x" ; then + EXP_SHLIB_CFLAGS=$TCL_SHLIB_CFLAGS + eval "EXP_SHARED_LIB_FILE=libexpect${TCL_SHARED_LIB_SUFFIX}" + EXP_LIB_FILE=$EXP_SHARED_LIB_FILE + EXP_LIB_FILES="$EXP_SHARED_LIB_FILE $EXP_UNSHARED_LIB_FILE" + AC_MSG_RESULT(both shared and unshared) +else + EXP_SHLIB_CFLAGS= + EXP_SHARED_LIB_FILE="reconfigure_Tcl_for_shared_library" + EXP_LIB_FILE=$EXP_UNSHARED_LIB_FILE + EXP_LIB_FILES="$EXP_UNSHARED_LIB_FILE" + AC_MSG_RESULT(unshared) +fi + +# Sigh - Tcl defines SHLIB_LD_LIBS to be either empty or ${LIBS} and +# LIBS is intended to be expanded by Make. But since we're too close +# to hitting config's max symbols, pack everything together here and +# do test ourselves. Ugh. +# +if test "x$TCL_SHLIB_LD_LIBS" = "x" ; then + EXP_SHLIB_LD_LIBS="$LIBS" +else + # seems a little strange to build in Tcl's build-lib, but + # that's what Tk does. + EXP_SHLIB_LD_LIBS="$TCL_BUILD_LIB_SPEC $TCL_DL_LIBS $LIBS -lc" +fi + +#-------------------------------------------------------------------- +# This section is based on analogous thing in Tk installation. - DEL +# Various manipulations on the search path used at runtime to +# find shared libraries: +# 2. On systems such as AIX and Ultrix that use "-L" as the +# search path option, colons cannot be used to separate +# directories from each other. Change colons to " -L". +# 3. Create two sets of search flags, one for use in cc lines +# and the other for when the linker is invoked directly. In +# the second case, '-Wl,' must be stripped off and commas must +# be replaced by spaces. +#-------------------------------------------------------------------- + +LIB_RUNTIME_DIR='${LIB_RUNTIME_DIR}' + +# If Tcl and Expect are installed in different places, adjust the library +# search path to reflect this. + +if test x"$no_tk" = x"true" ; then + if test "$TCL_EXEC_PREFIX" != "$exec_prefix"; then + LIB_RUNTIME_DIR="${LIB_RUNTIME_DIR}:${TCL_EXEC_PREFIX}/lib" + fi +else + if test "$TK_EXEC_PREFIX" != "$exec_prefix"; then + LIB_RUNTIME_DIR="${LIB_RUNTIME_DIR}:${TK_EXEC_PREFIX}/lib" + # no need to include TCL's search path, because TK does it already + # (it is actually appended later, via TK_LD_SEARCH_FLAGS trick below) + fi +fi + +if test "${TCL_LD_SEARCH_FLAGS}" = '-L${LIB_RUNTIME_DIR}'; then + LIB_RUNTIME_DIR=`echo ${LIB_RUNTIME_DIR} |sed -e 's/:/ -L/g'` +fi + +# The eval below is tricky! It *evaluates* the string in +# ..._CC_SEARCH_FLAGS, which causes a substitution of the +# variable LIB_RUNTIME_DIR. + +if test x"$no_tk" = x"true" ; then + eval "EXP_CC_SEARCH_FLAGS=\"$TCL_CC_SEARCH_FLAGS\"" + EXP_LD_SEARCH_FLAGS=${TCL_LD_SEARCH_FLAGS} +else + eval "EXP_CC_SEARCH_FLAGS=\"$TK_CC_SEARCH_FLAGS\"" + EXP_LD_SEARCH_FLAGS=${TK_LD_SEARCH_FLAGS} +fi + +# now broken out into EXP_AND_TCL_LIBS and EXP_AND_TK_LIBS. Had to do this +# in order to avoid repeating lib specs to which some systems object. +EXP_AND_TCL_LIBS="$EXP_AND_TCL_LIBS" +EXP_AND_TK_LIBS="$EXP_AND_TK_LIBS" + +# +# Set up makefile substitutions +# +AC_SUBST(EXP_MAJOR_VERSION) +AC_SUBST(EXP_MINOR_VERSION) +AC_SUBST(EXP_MICRO_VERSION) +AC_SUBST(EXP_VERSION_FULL) +AC_SUBST(EXP_VERSION) +AC_SUBST(CC) +AC_SUBST(EXP_CONFIG_SHELL) +AC_SUBST(EXP_SHARED_LIB_FILE) +AC_SUBST(EXP_UNSHARED_LIB_FILE) +AC_SUBST(EXP_SHLIB_CFLAGS) +AC_SUBST(EXP_LIB_FILE) +AC_SUBST(EXP_LIB_FILES) +AC_SUBST(EXP_BUILD_LIB_SPEC) +AC_SUBST(EXP_LIB_SPEC) +AC_SUBST(EXP_CFLAGS) +AC_SUBST(EXP_LDFLAGS) +AC_SUBST(EXP_LD_SEARCH_FLAGS) +AC_SUBST(TCL_LD_SEARCH_FLAGS) +AC_SUBST(EXP_AND_TCL_LIBS) +AC_SUBST(EXP_AND_TK_LIBS) +AC_SUBST(EXP_SHLIB_LD_LIBS) +AC_SUBST(X_PROGS) +AC_SUBST(PTY_TYPE) +AC_SUBST(EVENT_TYPE) +AC_SUBST(EVENT_ABLE) +AC_SUBST(SETUID) +AC_SUBST(UNSHARED_RANLIB) +AC_SUBST(DEFAULT_STTY_ARGS) +AC_OUTPUT([Makefile \ + pkgIndex], + chmod +x ${srcdir}/install-sh ${srcdir}/mkinstalldirs)