summaryrefslogtreecommitdiff
path: root/configure.in
diff options
context:
space:
mode:
Diffstat (limited to 'configure.in')
-rwxr-xr-xconfigure.in1059
1 files changed, 1059 insertions, 0 deletions
diff --git a/configure.in b/configure.in
new file mode 100755
index 0000000..fcb6c06
--- /dev/null
+++ b/configure.in
@@ -0,0 +1,1059 @@
+dnl
+dnl Process this file with autoconf to produce a configure script.
+dnl
+AC_REVISION($Id: configure.in,v 5.80 2010/08/27 21:51:53 hobbs Exp $)
+
+AC_INIT([expect],[5.45])
+
+TEA_INIT([3.9])
+
+AC_CONFIG_AUX_DIR(tclconfig)
+
+#--------------------------------------------------------------------
+# Configure script for package 'Expect'.
+# TEA compliant.
+#--------------------------------------------------------------------
+
+#--------------------------------------------------------------------
+# Load the tclConfig.sh file
+#--------------------------------------------------------------------
+
+TEA_PATH_TCLCONFIG
+TEA_LOAD_TCLCONFIG
+
+# expectk has been removed from the distribution as Tcl has supported
+# dynamic extensions everywhere for a while. We still allow 'expect'
+# to be built for the die-hard users, but expectk is just wish with
+# package require Expect
+if test "${with_tk+set}" = set ; then
+ AC_MSG_WARN([With Tk request ignored - use package require Tk & Expect])
+fi
+
+#-----------------------------------------------------------------------
+# Handle the --prefix=... option by defaulting to what Tcl gave.
+# Must be called after TEA_LOAD_TCLCONFIG and before TEA_SETUP_COMPILER.
+#-----------------------------------------------------------------------
+
+TEA_PREFIX
+
+#-----------------------------------------------------------------------
+# Standard compiler checks.
+# This sets up CC by using the CC env var, or looks for gcc otherwise.
+# This also calls AC_PROG_CC, AC_PROG_INSTALL and a few others to create
+# the basic setup necessary to compile executables.
+#-----------------------------------------------------------------------
+
+TEA_SETUP_COMPILER
+
+#--------------------------------------------------------------------
+# __CHANGE__
+# Choose which headers you need. Extension authors should try very
+# hard to only rely on the Tcl public header files. Internal headers
+# contain private data structures and are subject to change without
+# notice.
+# This MUST be called after TEA_LOAD_TCLCONFIG / TEA_LOAD_TKCONFIG
+#--------------------------------------------------------------------
+
+#TEA_PUBLIC_TCL_HEADERS
+TEA_PRIVATE_TCL_HEADERS
+
+#--------------------------------------------------------------------
+# You can add more files to clean if your extension creates any extra
+# files by extending CLEANFILES.
+# Add pkgIndex.tcl if it is generated in the Makefile instead of ./configure
+# and change Makefile.in to move it from CONFIG_CLEAN_FILES to BINARIES var.
+#
+# A few miscellaneous platform-specific items:
+# TEA_ADD_* any platform specific compiler/build info here.
+#--------------------------------------------------------------------
+
+TEA_ADD_CLEANFILES([pkgIndex.tcl])
+
+#--------------------------------------------------------------------
+# Check whether --enable-threads or --disable-threads was given.
+# So far only Tcl responds to this one.
+#
+# Hook for when threading is supported in Expect. The --enable-threads
+# flag currently has no effect.
+#------------------------------------------------------------------------
+
+TEA_ENABLE_THREADS
+
+#--------------------------------------------------------------------
+# The statement below defines a collection of symbols related to
+# building as a shared library instead of a static library.
+#--------------------------------------------------------------------
+
+TEA_ENABLE_SHARED
+
+#--------------------------------------------------------------------
+# This macro figures out what flags to use with the compiler/linker
+# when building shared/static debug/optimized objects. This information
+# can be taken from the tclConfig.sh file, but this figures it all out.
+#--------------------------------------------------------------------
+
+TEA_CONFIG_CFLAGS
+
+#--------------------------------------------------------------------
+# Set the default compiler switches based on the --enable-symbols option.
+#--------------------------------------------------------------------
+
+TEA_ENABLE_SYMBOLS
+
+#--------------------------------------------------------------------
+# Everyone should be linking against the Tcl stub library. If you
+# can't for some reason, remove this definition. If you aren't using
+# stubs, you also need to modify the SHLIB_LD_LIBS setting below to
+# link against the non-stubbed Tcl library.
+#--------------------------------------------------------------------
+
+AC_DEFINE(USE_TCL_STUBS)
+AC_DEFINE(USE_TCL_STUBS, 1, [Use Tcl stubs])
+
+#-------------------------------------------------------------------------
+# Check for system header files.
+#-------------------------------------------------------------------------
+
+AC_CHECK_HEADER(sys/select.h, AC_DEFINE(HAVE_SYS_SELECT_H))
+AC_CHECK_HEADER(sys/sysmacros.h, AC_DEFINE(HAVE_SYSMACROS_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))
+
+# 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/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))
+
+AC_MSG_CHECKING([for sys/bsdtypes.h])
+if test "ISC_${ISC}" = "ISC_1" ; then
+ AC_MSG_RESULT(yes)
+ # if on ISC 1, we need <sys/bsdtypes.h> to get FD_SET macros
+ AC_HAVE_HEADERS(sys/bsdtypes.h)
+else
+ AC_MSG_RESULT(no)
+fi
+
+#-------------------------------------------------------------------------
+# What type do signals return?
+#-------------------------------------------------------------------------
+
+AC_TYPE_SIGNAL
+
+#-------------------------------------------------------------------------
+# Find out all about time handling differences.
+#-------------------------------------------------------------------------
+
+TEA_TIME_HANDLER
+
+#--------------------------------------------------------------------
+# The check below checks whether <sys/wait.h> 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_CACHE_VAL(tcl_cv_union_wait,
+ AC_TRY_LINK([#include <sys/types.h>
+#include <sys/wait.h>], [
+union wait x;
+WIFEXITED(x); /* Generates compiler error if WIFEXITED uses an int. */
+ ], tcl_cv_union_wait=yes, tcl_cv_union_wait=no))
+AC_MSG_RESULT($tcl_cv_union_wait)
+if test $tcl_cv_union_wait = no; then
+ AC_DEFINE(NO_UNION_WAIT)
+fi
+
+######################################################################
+# required by Sequent ptx2
+
+AC_CHECK_FUNC(gethostname, gethostname=1 , gethostname=0)
+if test $gethostname -eq 0 ; then
+ AC_CHECK_LIB(inet, gethostname, LIBS="$LIBS -linet")
+fi
+
+######################################################################
+# required by Fischman's ISC 4.0
+
+AC_CHECK_FUNC(socket, socket=1 , socket=0)
+if test $socket -eq 0 ; then
+ AC_CHECK_LIB(inet, socket, LIBS="$LIBS -linet")
+fi
+
+######################################################################
+
+AC_CHECK_FUNC(select, select=1 , select=0)
+if test $select -eq 0 ; then
+ AC_CHECK_LIB(inet, select, LIBS="$LIBS -linet")
+fi
+
+######################################################################
+
+AC_CHECK_FUNC(getpseudotty, getpseudotty=1 , getpseudotty=0)
+if test $getpseudotty -eq 0 ; then
+ AC_CHECK_LIB(seq, getpseudotty)
+fi
+
+######################################################################
+# Check for FreeBSD/NetBSD openpty()
+unset ac_cv_func_openpty
+
+AC_CHECK_FUNC(openpty, AC_DEFINE(HAVE_OPENPTY) openpty=1 , openpty=0)
+if test $openpty -eq 0 ; then
+ 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
+
+######################################################################
+# End of library/func checking
+######################################################################
+
+# Hand patches to library/func checking.
+dnl From: Michael Kuhl <mkuhl@legato.com>
+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
+ LIBS="-lnsl -lsocket -lm"
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_RESULT(no)
+fi
+
+#--------------------------------------------------------------------
+#--------------------------------------------------------------------
+#--------------------------------------------------------------------
+#--------------------------------------------------------------------
+# From here on comes original expect configure code.
+# At the end we will have another section of TEA 3.2 code.
+#
+# Note specialities
+#
+# - Runs a sub configure (Dbgconfigure) for the expect tcl debugger
+#
+#--------------------------------------------------------------------
+#--------------------------------------------------------------------
+
+dnl AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..)
+AC_CANONICAL_SYSTEM
+
+# 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, one for Expect and Tcl, and 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 periodically. When we
+# are swapping out the one for Expect's shared library, we save it in
+# EXP_LIBS. Sigh.
+
+eval "LIBS=\"$TCL_LIBS\""
+
+if test "${with_tcl+set}" = set ; then
+ case "${with_tcl}" in
+ ..*)
+ AC_MSG_WARN([Specify absolute path to --with-tcl for subdir configuration])
+ ;;
+ esac
+fi
+
+# these are the other subdirectories we need to configure
+AC_CONFIG_SUBDIRS(testsuite)
+
+AC_TYPE_PID_T
+
+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([stty to use])
+if test -r /usr/local/bin/stty ; then
+ STTY_BIN=/usr/local/bin/stty
+else
+ STTY_BIN=/bin/stty
+fi
+AC_MSG_RESULT($STTY_BIN)
+
+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 ;;
+ *-*-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
+ $STTY_BIN > /dev/null 2> /dev/null ; a=$?
+ $STTY_BIN < /dev/tty > /dev/null 2> /dev/null ; b=$?
+ if test $a -ne 0 -a $b -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 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
+ AC_CHECK_FUNC(strftime, , [
+ LIBS="${LIBS} -Xp"
+ ])
+fi
+
+######################################################################
+#
+# Look for various header files
+#
+
+#
+# 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 <sys/wait.h>
+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 <stdio.h>
+#include <sys/wait.h>
+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])
+)
+
+#
+# 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)
+ AC_DEFINE(SELECT_MASK_TYPE, fd_set)
+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 <signal.h>
+#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 <rtor@ansa.co.uk> 29Mar93
+SEDDEFS="${SEDDEFS}CONFEOF
+cat >> conftest.sed <<CONFEOF
+"
+#
+
+# There are multiple versions of getpty, alas.
+# I don't remember who has the first one, but Convex just added one
+# so check for it. Unfortunately, there is no header so the only
+# reasonable way to make sure is to look it we are on a Convex.
+AC_MSG_CHECKING([if on Convex])
+convex=0
+case "${host}" in
+ c[[12]]-*-*) convex=1;;
+esac
+
+if test $convex -eq 1 ; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(CONVEX)
+else
+ AC_MSG_RESULT(no)
+fi
+
+
+AC_MSG_CHECKING([if on HP])
+if test "x`(uname) 2>/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")
+else
+ AC_MSG_RESULT(no)
+fi
+
+# In OSF/1 case, SVR4 are somewhat different.
+# Gregory Depp <depp@osf.org> 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 <sgtty.h>
+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 <termio.h>
+ 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 <inttypes.h>
+# endif
+# include <termios.h>
+ 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 <inttypes.h>
+#endif
+#include <termios.h>
+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 <inttypes.h>
+#endif
+#include <termios.h>
+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])
+)
+
+
+# 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.
+
+PACKAGE_VERSION_NODOTS="`echo $PACKAGE_VERSION | sed -e 's/\.//g'`"
+
+if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
+ EXP_LIB_VERSION=$PACKAGE_VERSION
+else
+ EXP_LIB_VERSION=$PACKAGE_VERSION_NODOTS
+fi
+if test $iunix -eq 1 ; then
+ EXP_LIB_VERSION=$PACKAGE_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=$PACKAGE_VERSION_NODOTS
+fi
+
+if test "$FRAMEWORK_BUILD" = "1" ; then
+ EXP_BUILD_LIB_SPEC="-F`pwd` -framework Expect"
+ EXP_LIB_SPEC="-framework Expect"
+ EXP_LIB_FILE="Expect"
+ AC_DEFINE(EXP_FRAMEWORK)
+else
+ if test "${TCL_LIB_VERSIONS_OK}" = "ok"; then
+ EXP_LIB_FLAG="-lexpect${EXP_LIB_VERSION}"
+ else
+ EXP_LIB_FLAG="-lexpect`echo ${EXP_LIB_VERSION} | tr -d .`"
+ fi
+ EXP_BUILD_LIB_SPEC="-L`pwd` ${EXP_LIB_FLAG}"
+ EXP_LIB_SPEC="-L${libdir} ${EXP_LIB_FLAG}"
+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}/${PACKAGE_NAME}${PACKAGE_VERSION}'
+
+# If Tcl and Expect are installed in different places, adjust the library
+# search path to reflect this.
+
+if test "$TCL_EXEC_PREFIX" != "$exec_prefix"; then
+ LIB_RUNTIME_DIR="${LIB_RUNTIME_DIR}:${TCL_EXEC_PREFIX}/lib"
+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.
+
+eval "EXP_CC_SEARCH_FLAGS=\"$TCL_CC_SEARCH_FLAGS\""
+
+# now broken out into EXP_AND_TCL_LIBS. Had to do this
+# in order to avoid repeating lib specs to which some systems object.
+
+LIBS="$LIBS $LD_SEARCH_FLAGS"
+
+#
+# Set up makefile substitutions
+#
+AC_SUBST(EXP_BUILD_LIB_SPEC)
+AC_SUBST(EXP_CC_SEARCH_FLAGS)
+AC_SUBST(SETUID)
+AC_SUBST(SETPGRP_VOID)
+AC_SUBST(DEFAULT_STTY_ARGS)
+# Expect uses these from tclConfig.sh to make the main executable
+AC_SUBST(TCL_DL_LIBS)
+AC_SUBST(TCL_CC_SEARCH_FLAGS)
+
+#--------------------------------------------------------------------
+# More TEA code based on data we got from the original expect
+# configure code.
+#--------------------------------------------------------------------
+
+#-----------------------------------------------------------------------
+# Specify the C source files to compile in TEA_ADD_SOURCES,
+# public headers that need to be installed in TEA_ADD_HEADERS,
+# stub library C source files to compile in TEA_ADD_STUB_SOURCES,
+# and runtime Tcl library files in TEA_ADD_TCL_SOURCES.
+# This defines PKG(_STUB)_SOURCES, PKG(_STUB)_OBJECTS, PKG_HEADERS
+# and PKG_TCL_SOURCES.
+#-----------------------------------------------------------------------
+
+TEA_ADD_SOURCES([
+ exp_command.c expect.c exp_inter.c exp_regexp.c exp_tty.c
+ exp_log.c exp_main_sub.c exp_pty.c exp_trap.c exp_strf.c
+ exp_console.c exp_glob.c exp_win.c exp_clib.c exp_closetcl.c
+ exp_memmove.c exp_tty_comm.c exp_chan.c Dbg.c
+])
+
+# Variant sources. Comments in the Makefile indicate that the
+# event_type/able stuff can be overidden in the Makefile, and should
+# be for particular systems. IMHO this requires a configure option.
+#
+# See at the end, where we select the sources based on the collect
+# information.
+
+TEA_ADD_SOURCES([
+ pty_${PTY_TYPE}.c
+ exp_${EVENT_TYPE}.c
+ exp_${EVENT_ABLE}.c
+])
+
+TEA_ADD_HEADERS([expect.h expect_tcl.h expect_comm.h tcldbg.h])
+
+TEA_ADD_INCLUDES([-I.])
+TEA_ADD_INCLUDES([-I\"`\${CYGPATH} \${srcdir}`\"])
+
+TEA_ADD_LIBS([])
+TEA_ADD_CFLAGS([-DTCL_DEBUGGER -DUSE_NON_CONST])
+TEA_ADD_CFLAGS([-DSCRIPTDIR=\\\"\${DESTDIR}\${prefix}/lib/\${PKG_DIR}\\\"])
+TEA_ADD_CFLAGS([-DEXECSCRIPTDIR=\\\"\${DESTDIR}\${pkglibdir}\\\"])
+TEA_ADD_CFLAGS([-DSTTY_BIN=\\\"${STTY_BIN}\\\"])
+TEA_ADD_CFLAGS([-DDFLT_STTY=\"\\\"$DEFAULT_STTY_ARGS\\\"\"])
+
+TEA_ADD_STUB_SOURCES([])
+TEA_ADD_TCL_SOURCES([])
+
+#--------------------------------------------------------------------
+# This macro generates a line to use when building a library. It
+# depends on values set by the TEA_ENABLE_SHARED, TEA_ENABLE_SYMBOLS,
+# and TEA_LOAD_TCLCONFIG macros above.
+#--------------------------------------------------------------------
+
+TEA_MAKE_LIB
+
+#--------------------------------------------------------------------
+# Find tclsh so that we can run pkg_mkIndex to generate the pkgIndex.tcl
+# file during the install process. Don't run the TCLSH_PROG through
+# ${CYGPATH} because it's being used directly by make.
+# Require that we use a tclsh shell version 8.2 or later since earlier
+# versions have bugs in the pkg_mkIndex routine.
+# Add WISH as well if this is a Tk extension.
+#--------------------------------------------------------------------
+
+TEA_PROG_TCLSH
+
+#--------------------------------------------------------------------
+# Finally, substitute all of the various values into the Makefile.
+# You may alternatively have a special pkgIndex.tcl.in or other files
+# which require substituting th AC variables in. Include these here.
+#--------------------------------------------------------------------
+
+touch expect_cf.h
+AC_OUTPUT([Makefile], chmod +x ${srcdir}/install-sh)