119304Speterdnl	@(#)configure.in	8.134 (Berkeley) 10/15/96
219304Speter
319304Speterdnl Process this file with autoconf to produce a configure script.
419304SpeterAC_INIT(../common/main.c)
519304SpeterAC_CONFIG_HEADER(config.h)
619304Speter
719304Speterdnl Configure setup.
819304SpeterAC_PROG_INSTALL()
919304SpeterAC_CANONICAL_HOST
1019304SpeterAC_ARG_PROGRAM()
1119304Speter
1219304Speterdnl If the user wants a debugging environment, set OPTFLAG now.  (Some
1319304Speterdnl compilers won't mix optimizing and debug flags.)
1419304SpeterAC_MSG_CHECKING(if --enable-debug option specified)
1519304SpeterAC_ARG_ENABLE(debug,
1619304Speter	[  --enable-debug          Build a debugging version.],
1719304Speter	[vi_cv_debug="yes"], [vi_cv_debug="no"])
1819304Speterif test "$vi_cv_debug" = yes; then
1919304Speter	AC_DEFINE(DEBUG)
2019304Speter	OPTFLAG=${OPTFLAG-"-g"}
2119304Speter	no_op_OPTFLAG=${no_op_OPTFLAG-"-g"}
2219304Speterfi
2319304SpeterAC_MSG_RESULT($vi_cv_debug)
2419304Speter
2519304Speterdnl This is where we handle stuff that autoconf can't handle.
2619304Speterdnl XXX
2719304Speterdnl Don't override anything if it's already set from the environment.
2819304Speter
2919304Speterdnl Compiler, preprocessor and load flags.
3019304Speterdnl AUX:	-ZP disables _BSD_SOURCE et al, but enables POSIX at link time.
3119304Speterdnl LynxOS:	We check for gcc 2.x or better, the gcc 1 that was shipped with
3219304Speterdnl		LynxOS historically wasn't good enough.
3319304SpeterAC_SUBST(CPPFLAGS)
3419304Spetercase "$host_os" in
3519304Speteraix3.2.5)  OPTFLAG=${OPTFLAG-"-O"};;
3619304Speteraix4.1*)   CFLAGS=${CFLAGS-"-qstrict"}
3719304Speter	   OPTFLAG=${OPTFLAG-"-O3"};;
3819304Speteraux*)	   CPPFLAGS=${CPPFLAGS-"-ZP -D_BSD_SOURCE -D_SYSV_SOURCE -D_AUX_SOURCE"}
3919304Speter	   LDFLAGS=${LDFLAGS-"-ZP"}
4019304Speter	   OPTFLAG=${OPTFLAG-"-O"};;
4119304Speterbsd4.4)    OPTFLAG=${OPTFLAG-"-O2"};;
4219304Speterbsdi*)	   CC=${CC-"shlicc"}
4319304Speter	   OPTFLAG=${OPTFLAG-"-O2"};;
4419304Speteririx6*)	   OPTFLAG=${OPTFLAG-"-O2"};;
4519304Speteririx*)	   OPTFLAG=${OPTFLAG-"-O2"};;
4619304Speterlynxos*)   AC_PROG_CC()
4719304Speter	   AC_MSG_CHECKING([for GNU C (gcc) version 2.x])
4819304Speter	   ac_cv_gcc_vers=`${CC-cc} -v 2>&1 | \
4919304Speter		grep "gcc version " | sed 's/.*version //'`
5019304Speter	   ac_cv_gcc_major=`echo "$ac_cv_gcc_vers" | sed 's/\..*//'`
5119304Speter	   if test "$ac_cv_gcc_major" = "2" ; then
5219304Speter		AC_MSG_RESULT(yes)
5319304Speter	   else
5419304Speter		AC_MSG_RESULT(no)
5519304Speter		echo "Fatal error: Nvi requires gcc 2.x to build on LynxOS."
5619304Speter		echo "See build/README.LynxOS for more information."
5719304Speter		exit 1
5819304Speter	   fi;;
5919304Speternextstep3) CPPFLAGS=${CPPFLAGS-"-w -pipe -posix"}
6019304Speter	   LDFLAGS=${LDFLAGS-"-posix"}
6119304Speter	   OPTFLAG=${OPTFLAG-"-O9"};;
6219304Speterosf*)	   CFLAGS=${CFLAGS-"-Olimit 1000"};;
6319304Spetersolaris*)  no_op_OPTFLAG=${no_op_OPTFLAG-""};;
6419304Spetersunos*)	   no_op_OPTFLAG=${no_op_OPTFLAG-""};;
6519304Speteresac
6619304Speter
6719304Speterdnl The default compiler is cc.
6819304SpeterAC_SUBST(CC)
6919304SpeterCC=${CC-cc}
7019304Speter
7119304Speterdnl The default OPTFLAG is -O
7219304SpeterAC_SUBST(OPTFLAG)
7319304SpeterOPTFLAG=${OPTFLAG-"-O"}
7419304Speter
7519304Speterdnl The SunOS/Solaris compiler can't optimize vi/v_txt.c; the symptom is
7619304Speterdnl that the command 35i==<esc> turns into an infinite loop.
7719304SpeterAC_SUBST(no_op_OPTFLAG)
7819304Speterno_op_OPTFLAG=${no_op_OPTFLAG-"$OPTFLAG"}
7919304Speter
8019304Speterdnl Libraries.
8119304Spetercase "$host_os" in
8219304Speterbsdi2.1)   LIBS=${LIBS-"-lipc"};;
8319304Speterdgux*)	   LIBS=${LIBS-"-ldgc"};;
8419304Speteririx6*)	   LIBS=${LIBS-"-lbsd"};;
8519304Speteririx*)	   LIBS=${LIBS-"-lc_s -lbsd"};;
8619304Speterisc*)	   LIBS=${LIBS-"-lcposix -linet"};;
8719304Speternetbsd1*)  LIBS=${LIBS-"-lcrypt"};;
8819304Speterptx*)	   LIBS=${LIBS-"-lseq -linet -lsocket"};;
8919304Spetersco3.2*)   LIBS=${LIBS-"-lsocket"};;
9019304Spetersinix*)	   LIBS=${LIBS-"-lelf -lc"};;
9119304Spetersolaris*)  LIBS=${LIBS-"-lsocket -lnsl -ldl"}
9219304Speter	   RLIBS=yes;;
9319304Speterwgs*)	   LIBS=${LIBS-"-lnsl"};;
9419304Speteresac
9519304Speter
9619304Speterdnl A/UX has a broken getopt(3), strpbrk(3).
9719304Spetercase "$host_os" in
9819304Speteraux*)	   LIBOBJS="getopt.o strpbrk.o $LIBOBJS";;
9919304Speteresac
10019304Speter
10119304Speterdnl Ultrix has a broken POSIX.1 VDISABLE value.
10219304Spetercase "$host_os" in
10319304Speterultrix*)   AC_DEFINE(HAVE_BROKEN_VDISABLE);;
10419304Speteresac
10519304Speter
10619304Speterdnl The user may have additional CPP information.
10719304SpeterCPPFLAGS="$ADDCPPFLAGS $CPPFLAGS"
10819304Speter
10919304Speterdnl The user may have additional load line information.
11019304SpeterLDFLAGS="$ADDLDFLAGS $LDFLAGS"
11119304Speter
11219304Speterdnl The user may have additional library information.
11319304SpeterLIBS="$ADDLIBS $LIBS"
11419304Speter
11519304Speterdnl Check to see if it's going to work.
11619304SpeterAM_SANITY_CHECK_CC
11719304Speter
11819304Speterdnl Checks for programs.
11919304SpeterPATH="$PATH:/usr/bin:/usr/sbin:/sbin:/etc:/usr/etc:/usr/lib:/usr/ucblib:"
12019304Speter
12119304Speterdnl Check for the shell path.
12219304SpeterAC_PATH_PROG(vi_cv_path_shell, sh, no)
12319304Speterif test "$vi_cv_path_shell" = no; then
12419304Speter	echo "Fatal error: the shell utility not found."
12519304Speter	exit 1
12619304Speterfi
12719304Speter
12819304Speterdnl Check for the sendmail path.
12919304SpeterAC_PATH_PROG(vi_cv_path_sendmail, sendmail, no)
13019304Speterif test "$vi_cv_path_sendmail" = no; then
13119304Speter	echo "WARNING: The sendmail utility was not found!"
13219304Speter	echo "WARNING: Users will not be told of saved files."
13319304Speterfi
13419304Speter
13519304Speterdnl Check for the perl5/perl path.
13619304SpeterAC_SUBST(vi_cv_path_perl)
13719304SpeterAC_PATH_PROGS(vi_cv_path_perl, perl5 perl, no)
13819304Speter
13919304Speterdnl Check for the "preserve" path.
14019304Speterdnl Historically, nvi has used /var/tmp/vi.recover.  The Linux filesystem
14119304Speterdnl standard (FSSTND) uses /var/preserve; we add the vi.recover directory
14219304Speterdnl beneath it so that we don't have name collisions with other editors.
14319304Speterdnl Other systems have /var/preserve as well, so we test first for an already
14419304Speterdnl existing name, and then use the first one that's writeable.
14519304SpeterAC_SUBST(vi_cv_path_preserve)
14619304SpeterAC_MSG_CHECKING(for preserve directory)
14719304SpeterAC_CACHE_VAL(vi_cv_path_preserve, [dnl
14819304Speter	dirlist="/var/preserve /var/tmp /usr/tmp"
14919304Speter	vi_cv_path_preserve=no
15019304Speter	for i in $dirlist; do
15119304Speter		if test -d $i/vi.recover; then
15219304Speter			vi_cv_path_preserve=$i/vi.recover
15319304Speter			break;
15419304Speter		fi
15519304Speter	done
15619304Speter	if test "$vi_cv_path_preserve" = no; then
15719304Speter		for i in $dirlist; do
15819304Speter			if test -d $i -a -w $i; then
15919304Speter				vi_cv_path_preserve=$i/vi.recover
16019304Speter				break;
16119304Speter			fi
16219304Speter		done
16319304Speter
16419304Speter	fi])
16519304Speterif test "$vi_cv_path_preserve" = no; then
16619304Speter	echo "Fatal error: no writeable preserve directory found."
16719304Speter	exit 1
16819304Speterfi
16919304SpeterAC_MSG_RESULT($vi_cv_path_preserve)
17019304Speter
17119304Speterdnl Check for programs used for installation
17219304SpeterAC_PATH_PROG(vi_cv_path_chmod, chmod, missing_chmod)
17319304SpeterAC_PATH_PROG(vi_cv_path_cp, cp, missing_cp)
17419304SpeterAC_PATH_PROG(vi_cv_path_ln, ln, missing_ln)
17519304SpeterAC_PATH_PROG(vi_cv_path_mkdir, mkdir, missing_mkdir)
17619304SpeterAC_PATH_PROG(vi_cv_path_rm, rm, missing_rm)
17719304SpeterAC_PATH_PROG(vi_cv_path_strip, strip, missing_strip)
17819304Speter
17919304Speterdnl Checks for libraries.
18019304Speterdnl Find the X libraries and includes.
18119304SpeterAC_PATH_X
18219304SpeterAC_SUBST(XINCS)
18319304Speterif test "$no_x" != yes; then
18419304Speter	if test "X$x_libraries" != "X"; then
18519304Speter		if test "X$RLIBS" = "Xyes"; then
18619304Speter			XLIBS="-R$x_libraries -L$x_libraries $XLIBS"
18719304Speter		else
18819304Speter			XLIBS="-L$x_libraries $XLIBS"
18919304Speter		fi
19019304Speter	fi
19119304Speter	XLIBS="$XLIBS -lX11"
19219304Speter	if test "X$x_includes" != "X"; then
19319304Speter		XINCS="-I$x_includes"
19419304Speter	fi
19519304Speterfi
19619304Speter
19719304Speterdnl If the user wants a Perl interpreter in nvi, load it.
19819304SpeterAC_SUBST(shrpenv)
19919304SpeterAC_SUBST(vi_cv_perllib)
20019304SpeterAC_MSG_CHECKING(if --enable-perlinterp option specified)
20119304SpeterAC_ARG_ENABLE(perlinterp,
20219304Speter	[  --enable-perlinterp     Include a Perl interpreter in vi.],
20319304Speter	[vi_cv_perlinterp="yes"], [vi_cv_perlinterp="no"])
20419304SpeterAC_MSG_RESULT($vi_cv_perlinterp)
20519304Speterif test "$vi_cv_perlinterp" = "yes"; then
20619304Speter	if test "$vi_cv_path_perl" = no; then
20719304Speter		echo "Fatal error: no perl5 utility found."
20819304Speter		exit 1
20919304Speter	fi
21019304Speter	$vi_cv_path_perl -e 'require 5.002' || {
21119304Speter		echo "Fatal error: perl5 must be version 5.002 or later."
21219304Speter		exit 1
21319304Speter	}
21419304Speter	$vi_cv_path_perl -e 'close(STDERR);require 5.003_01' &&
21519304Speter	    AC_DEFINE(HAVE_PERL_5_003_01)
21619304Speter
21719304Speter	eval `$vi_cv_path_perl -V:shrpenv`
21819304Speter	if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
21919304Speter	    shrpenv=""
22019304Speter	fi
22119304Speter	vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlib}'`
22219304Speter	perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
22319304Speter        	-e 'ccflags;perl_inc'`
22419304Speter	if test "X$perlcppflags" != "X"; then
22519304Speter		CPPFLAGS="$perlcppflags $CPPFLAGS"
22619304Speter	fi
22719304Speter	perllibs=`cd $srcdir;$vi_cv_path_perl -MExtUtils::Embed \
22819304Speter        	-e 'ldopts'`
22919304Speter	if test "X$perllibs" != "X"; then
23019304Speter		LIBS="$perllibs $LIBS"
23119304Speter	fi
23219304Speter	perlldflags=`cd $srcdir;$vi_cv_path_perl -MExtUtils::Embed \
23319304Speter        	-e 'ccdlflags'`
23419304Speter	if test "X$perlldflags" != "X"; then
23519304Speter		LDFLAGS="$perlldflags $LDFLAGS"
23619304Speter	fi
23719304Speter	LIBOBJS="perl.o perlsfio.o $LIBOBJS"
23819304Speter	AC_DEFINE(HAVE_PERL_INTERP)
23919304Speterfi
24019304Speter
24119304Speterdnl If the user wants a Tk/Tcl front-end for nvi, build it.
24219304SpeterAC_SUBST(tknvi)
24319304SpeterAC_SUBST(TKLIBS)
24419304SpeterAC_MSG_CHECKING(if --enable-tknvi option specified)
24519304SpeterAC_ARG_ENABLE(tknvi,
24619304Speter	[  --enable-tknvi          Build a Tk/Tcl front-end for vi.],
24719304Speter	[vi_cv_tknvi="yes"], [vi_cv_tknvi="no"])
24819304SpeterAC_MSG_RESULT($vi_cv_tknvi)
24919304Speterif test "$vi_cv_tknvi" = "yes"; then
25019304Speter	tknvi=tknvi
25119304Speter	TKLIBS="-ltk -ltcl -lm $XLIBS $LIBS"
25219304Speterfi
25319304Speter
25419304Speterdnl If the user wants a Tk/Tcl interpreter in nvi, load it.
25519304SpeterAC_MSG_CHECKING(if --enable-tclinterp option specified)
25619304SpeterAC_ARG_ENABLE(tclinterp,
25719304Speter	[  --enable-tclinterp      Include a Tk/Tcl interpreter in vi.],
25819304Speter	[vi_cv_tclinterp="yes"], [vi_cv_tclinterp="no"])
25919304SpeterAC_MSG_RESULT($vi_cv_tclinterp)
26019304Speterif test "$vi_cv_tclinterp" = "yes"; then
26119304Speter	LIBOBJS="tcl.o $LIBOBJS"
26219304Speter	LIBS="-ltk -ltcl -lm $XLIBS $LIBS"
26319304Speter	AC_DEFINE(HAVE_TCL_INTERP)
26419304Speterfi
26519304Speter
26619304Speterdnl Make sure that we can find a Tk/Tcl library.
26719304Speterif test "$vi_cv_tknvi" = "yes" || test "$vi_cv_tclinterp" = "yes"; then
26819304Speter	AC_CHECK_LIB(tcl, main,
26919304Speter		[vi_cv_tkfatal="no"], [vi_cv_tkfatal="yes"], -ltk -lm)
27019304Speter	if test "$vi_cv_tkfatal" = "yes"; then
27119304Speter		echo "Fatal error: no Tk/Tcl library; see the section"
27219304Speter		echo "ADDING LIBRARIES AND INCLUDE FILES in the README file."
27319304Speter		exit 1
27419304Speter	fi
27519304Speterfi
27619304Speter
27719304Speterdnl Both Tcl/Tk and Perl interpreters need the vi api code.
27819304Speterif test "$vi_cv_tclinterp" = yes || test "$vi_cv_perlinterp" = yes; then
27919304Speter	LIBOBJS="api.o $LIBOBJS"
28019304Speterfi
28119304Speter
28219304Speterdnl Check for the termcap/termlib library.  Compile in nvi's curses routines
28319304Speterdnl unless the user specifies otherwise.  These two checks must occur in the
28419304Speterdnl current order, and -lcurses must be loaded before -ltermcap/-ltermlib.
28519304SpeterAC_CHECK_LIB(termlib, tgetent,
28619304Speter	[vi_cv_termlib=-ltermlib], [vi_cv_termlib=no])
28719304Speterif test "$vi_cv_termlib" = no; then
28819304Speter	AC_CHECK_LIB(termcap, tgetent,
28919304Speter		[vi_cv_termlib=-ltermcap], [vi_cv_termlib=no])
29019304Speterfi
29119304Speterif test "$vi_cv_termlib" != no; then
29219304Speter	LIBS="$vi_cv_termlib $LIBS"
29319304Speterfi
29419304SpeterAC_SUBST(cobjs)
29519304SpeterAC_MSG_CHECKING(if --disable-curses option specified)
29619304SpeterAC_ARG_ENABLE(curses,
29719304Speter	[  --disable-curses        DON'T use the nvi-provided curses routines.],
29819304Speter	[vi_cv_curses="other curses"], [vi_cv_curses="bundled curses"])
29919304SpeterAC_MSG_RESULT($vi_cv_curses)
30019304Spetercase "$vi_cv_curses" in
30119304Speter"bundled curses")
30219304Speter	CPPFLAGS="-I\$(srcdir)/curses $CPPFLAGS"
30319304Speter	cobjs="\$(COBJS)";;
30419304Speter"other curses")
30519304Speter	LIBS="-lcurses $LIBS";;
30619304Speteresac
30719304Speter
30819304Speterdnl Checks for header files.
30919304SpeterAC_MSG_CHECKING(for sys/mman.h)
31019304SpeterAC_CACHE_VAL(vi_cv_include_sys_mman, [dnl
31119304SpeterAC_TRY_CPP([#include <sys/mman.h>],
31219304Speter	[vi_cv_include_sys_mman=yes], [vi_cv_include_sys_mman=no])])
31319304Speterif test "$vi_cv_include_sys_mman" = yes; then
31419304Speter	AC_DEFINE(HAVE_SYS_MMAN_H)
31519304Speterfi
31619304SpeterAC_MSG_RESULT($vi_cv_include_sys_mman)
31719304Speter
31819304SpeterAC_MSG_CHECKING(for sys/select.h)
31919304SpeterAC_CACHE_VAL(vi_cv_include_sys_select, [dnl
32019304SpeterAC_TRY_CPP([#include <sys/select.h>],
32119304Speter	[vi_cv_include_sys_select=yes], [vi_cv_include_sys_select=no])])
32219304Speterif test "$vi_cv_include_sys_select" = yes; then
32319304Speter	AC_DEFINE(HAVE_SYS_SELECT_H)
32419304Speterfi
32519304SpeterAC_MSG_RESULT($vi_cv_include_sys_select)
32619304Speter
32719304Speterdnl Checks for typedefs, structures, and compiler characteristics.
32819304SpeterAC_CHECK_TYPE(ssize_t, int)
32919304SpeterAC_C_BIGENDIAN
33019304SpeterAC_C_CONST
33119304SpeterAC_STRUCT_ST_BLKSIZE
33219304SpeterAC_TYPE_MODE_T
33319304SpeterAC_TYPE_OFF_T
33419304SpeterAC_TYPE_PID_T
33519304SpeterAC_TYPE_SIZE_T
33619304SpeterAC_STRUCT_TM
33719304Speter
33819304Speterdnl Checks for library functions.
33919304Speter  AC_CHECK_FUNCS(bsearch gethostname getopt memchr memcpy memmove memset)
34019304SpeterAC_REPLACE_FUNCS(bsearch gethostname getopt memchr memcpy memmove memset)
34119304Speter  AC_CHECK_FUNCS(mkstemp mmap snprintf strdup strerror strpbrk strtol)
34219304SpeterAC_REPLACE_FUNCS(mkstemp mmap snprintf strdup strerror strpbrk strtol)
34319304Speter  AC_CHECK_FUNCS(strtoul vsnprintf)
34419304SpeterAC_REPLACE_FUNCS(strtoul vsnprintf)
34519304Speter
34619304SpeterAC_CHECK_FUNCS(select)
34719304SpeterAC_CHECK_FUNCS(setenv, [need_env=no], [need_env=yes])
34819304SpeterAC_CHECK_FUNCS(strsep, [need_strsep=no], [need_strsep=yes])
34919304SpeterAC_CHECK_FUNCS(unsetenv,, [need_env=yes])
35019304Speter
35119304SpeterAC_FUNC_MMAP
35219304SpeterAC_FUNC_VFORK
35319304Speter
35419304Speterdnl If we needed setenv or unsetenv, add in the clib/env.c replacement file.
35519304Speterif test "$need_env" = yes; then
35619304Speter	LIBOBJS="env.o $LIBOBJS"
35719304Speterfi
35819304Speter
35919304Speterdnl If we need strsep, add it and define it so we get a prototype.
36019304Speterif test "$need_strsep" = yes; then
36119304Speter	LIBOBJS="strsep.o $LIBOBJS"
36219304Speterfi
36319304Speter
36419304Speterdnl Check for fcntl/flock
36519304Speterdnl Use flock preferentially, since it has cleaner semantics and won't
36619304Speterdnl hang up the editor.
36719304Speterdnl XXX
36819304Speterdnl Ultrix has a broken fcntl, but a working flock.
36919304Speterdnl IRIX and DGUX have a broken flock, but working fcntl.
37019304SpeterAC_MSG_CHECKING(for fcntl/flock)
37119304SpeterAC_CACHE_VAL(vi_cv_lock, [dnl
37219304Speter	vi_cv_lock=none
37319304Speter	case "$host_os" in
37419304Speter	dgux*);;
37519304Speter	irix*);;
37619304Speter	*)
37719304Speter		AC_TRY_LINK([#include <fcntl.h>], [flock(0, 0);],
37819304Speter		    [vi_cv_lock=flock]);;
37919304Speter	esac
38019304Speter	if test "$vi_cv_lock" = none; then
38119304Speter		AC_TRY_LINK([#include <fcntl.h>], [fcntl(0, F_SETLK, 0);],
38219304Speter		    [vi_cv_lock=fcntl])
38319304Speter	fi])
38419304Speter
38519304Speterif test "$vi_cv_lock" = flock; then
38619304Speter	AC_DEFINE(HAVE_LOCK_FLOCK)
38719304Speterfi
38819304Speterif test "$vi_cv_lock" = fcntl; then
38919304Speter	AC_DEFINE(HAVE_LOCK_FCNTL)
39019304Speterfi
39119304SpeterAC_MSG_RESULT($vi_cv_lock)
39219304Speter
39319304Speterdnl Check for ftruncate/chsize
39419304SpeterAC_MSG_CHECKING(for ftruncate/chsize)
39519304SpeterAC_CACHE_VAL(vi_cv_ftruncate, [dnl
39619304SpeterAC_TRY_LINK([#include <unistd.h>], [ftruncate(0, 0);],
39719304Speter	[vi_cv_ftruncate=ftruncate],
39819304SpeterAC_TRY_LINK([#include <unistd.h>], [chsize(0, 0);],
39919304Speter	[vi_cv_ftruncate=chsize], [vi_cv_ftruncate=no]))])
40019304Speterif test "$vi_cv_ftruncate" = ftruncate; then
40119304Speter	AC_DEFINE(HAVE_FTRUNCATE_FTRUNCATE)
40219304Speterfi
40319304Speterif test "$vi_cv_ftruncate" = chsize; then
40419304Speter	AC_DEFINE(HAVE_FTRUNCATE_CHSIZE)
40519304Speterfi
40619304Speterif test "$vi_cv_ftruncate" = no; then
40719304Speter	echo
40819304Speter	echo "Fatal error: no file truncation system call."
40919304Speter	exit 1
41019304Speterfi
41119304SpeterAC_MSG_RESULT($vi_cv_ftruncate)
41219304Speter
41319304Speterdnl Check for the tigetstr/tigetnum functions.
41419304SpeterAC_MSG_CHECKING(for tigetstr/tigetnum)
41519304SpeterAC_CACHE_VAL(vi_cv_have_curses_tigetstr, [dnl
41619304SpeterAC_TRY_LINK([#include <curses.h>], [tigetstr(0);],
41719304Speter	[vi_cv_have_curses_tigetstr=yes],
41819304Speter	[vi_cv_have_curses_tigetstr=no])])
41919304Speterif test "$vi_cv_have_curses_tigetstr" = yes; then
42019304Speter	AC_DEFINE(HAVE_CURSES_TIGETSTR)
42119304Speterfi
42219304SpeterAC_MSG_RESULT($vi_cv_have_curses_tigetstr)
42319304Speter
42419304Speterdnl Check for potentially missing curses functions in system or user-specified
42519304Speterdnl libraries.  We also have to guess at whether the specified library is a
42619304Speterdnl BSD or System V style curses.  Use the newterm function, all System V
42719304Speterdnl curses implementations have it, none, as far as I know, of the BSD ones do.
42819304Speterif test "$vi_cv_curses" = "bundled curses"; then
42919304Speter	AC_DEFINE(HAVE_BSD_CURSES)
43019304Speter	AC_DEFINE(HAVE_CURSES_ADDNSTR)
43119304Speter	AC_DEFINE(HAVE_CURSES_IDLOK)
43219304Speterelse
43319304Speter	dnl Check for the addnstr function.
43419304Speter	AC_MSG_CHECKING(for addnstr)
43519304Speter	AC_CACHE_VAL(vi_cv_have_curses_addnstr, [dnl
43619304Speter	AC_TRY_LINK([#include <curses.h>], [addnstr(0, 0);],
43719304Speter		[vi_cv_have_curses_addnstr=yes],
43819304Speter		[vi_cv_have_curses_addnstr=no])])
43919304Speter	if test "$vi_cv_have_curses_addnstr" = yes; then
44019304Speter		AC_DEFINE(HAVE_CURSES_ADDNSTR)
44119304Speter	fi
44219304Speter	AC_MSG_RESULT($vi_cv_have_curses_addnstr)
44319304Speter
44419304Speter	dnl Check for the beep function.
44519304Speter	AC_MSG_CHECKING(for beep)
44619304Speter	AC_CACHE_VAL(vi_cv_have_curses_beep, [dnl
44719304Speter	AC_TRY_LINK([#include <curses.h>], [beep();],
44819304Speter		[vi_cv_have_curses_beep=yes],
44919304Speter		[vi_cv_have_curses_beep=no])])
45019304Speter	if test "$vi_cv_have_curses_beep" = yes; then
45119304Speter		AC_DEFINE(HAVE_CURSES_BEEP)
45219304Speter	fi
45319304Speter	AC_MSG_RESULT($vi_cv_have_curses_beep)
45419304Speter
45519304Speter	dnl Check for the flash function.
45619304Speter	AC_MSG_CHECKING(for flash)
45719304Speter	AC_CACHE_VAL(vi_cv_have_curses_flash, [dnl
45819304Speter	AC_TRY_LINK([#include <curses.h>], [flash();],
45919304Speter		[vi_cv_have_curses_flash=yes],
46019304Speter		[vi_cv_have_curses_flash=no])])
46119304Speter	if test "$vi_cv_have_curses_flash" = yes; then
46219304Speter		AC_DEFINE(HAVE_CURSES_FLASH)
46319304Speter	fi
46419304Speter	AC_MSG_RESULT($vi_cv_have_curses_flash)
46519304Speter
46619304Speter	dnl Check for the idlok function.
46719304Speter	AC_MSG_CHECKING(for idlok)
46819304Speter	AC_CACHE_VAL(vi_cv_have_curses_idlok, [dnl
46919304Speter	AC_TRY_LINK([#include <curses.h>], [idlok(0, 0);],
47019304Speter		[vi_cv_have_curses_idlok=yes],
47119304Speter		[vi_cv_have_curses_idlok=no])])
47219304Speter	if test "$vi_cv_have_curses_idlok" = yes; then
47319304Speter		AC_DEFINE(HAVE_CURSES_IDLOK)
47419304Speter	fi
47519304Speter	AC_MSG_RESULT($vi_cv_have_curses_idlok)
47619304Speter
47719304Speter	dnl Check for the keypad function.
47819304Speter	AC_MSG_CHECKING(for keypad)
47919304Speter	AC_CACHE_VAL(vi_cv_have_curses_keypad, [dnl
48019304Speter	AC_TRY_LINK([#include <curses.h>], [keypad(0, 0);],
48119304Speter		[vi_cv_have_curses_keypad=yes],
48219304Speter		[vi_cv_have_curses_keypad=no])])
48319304Speter	if test "$vi_cv_have_curses_keypad" = yes; then
48419304Speter		AC_DEFINE(HAVE_CURSES_KEYPAD)
48519304Speter	fi
48619304Speter	AC_MSG_RESULT($vi_cv_have_curses_keypad)
48719304Speter
48819304Speter	dnl Check for the newterm function.
48919304Speter	AC_MSG_CHECKING(for newterm)
49019304Speter	AC_CACHE_VAL(vi_cv_have_curses_newterm, [dnl
49119304Speter	AC_TRY_LINK([#include <curses.h>], [newterm(0, 0, 0);],
49219304Speter		[vi_cv_have_curses_newterm=yes],
49319304Speter		[vi_cv_have_curses_newterm=no])])
49419304Speter	if test "$vi_cv_have_curses_newterm" = yes; then
49519304Speter		AC_DEFINE(HAVE_CURSES_NEWTERM)
49619304Speter	fi
49719304Speter	AC_MSG_RESULT($vi_cv_have_curses_newterm)
49819304Speter
49919304Speter	if test "$vi_cv_have_curses_newterm" = no; then
50019304Speter		AC_DEFINE(HAVE_BSD_CURSES)
50119304Speter	fi
50219304Speterfi
50319304Speter
50419304Speterdnl Check for the setupterm function.  We make this check regardless of
50519304Speterdnl using the system library, because it may be part of the underlying
50619304Speterdnl termcap/termlib support, and we want to use the local one.
50719304SpeterAC_MSG_CHECKING(for setupterm)
50819304SpeterAC_CACHE_VAL(vi_cv_have_curses_setupterm, [dnl
50919304SpeterAC_TRY_LINK([#include <curses.h>], [setupterm(0, 0, 0);],
51019304Speter	[vi_cv_have_curses_setupterm=yes],
51119304Speter	[vi_cv_have_curses_setupterm=no])])
51219304Speterif test "$vi_cv_have_curses_setupterm" = yes; then
51319304Speter	AC_DEFINE(HAVE_CURSES_SETUPTERM)
51419304Speterfi
51519304SpeterAC_MSG_RESULT($vi_cv_have_curses_setupterm)
51619304Speter
51719304Speterdnl Some moron decided to drop off an argument from the gettimeofday call,
51819304Speterdnl without changing the name.
51919304SpeterAC_MSG_CHECKING(for broken gettimeofday system call)
52019304SpeterAC_CACHE_VAL(vi_cv_gettimeofday, [dnl
52119304SpeterAC_TRY_LINK([#include <sys/types.h>
52219304Speter#include <sys/time.h>], [gettimeofday(0, 0);],
52319304Speter	[vi_cv_gettimeofday=okay], [vi_cv_gettimeofday=broken])])
52419304Speterif test "$vi_cv_gettimeofday" = broken; then
52519304Speter	AC_DEFINE(HAVE_BROKEN_GETTIMEOFDAY)
52619304Speterfi
52719304SpeterAC_MSG_RESULT($vi_cv_gettimeofday)
52819304Speter
52919304Speterdnl Check for which version of openpty to use, System V or Berkeley.
53019304SpeterAC_MSG_CHECKING(for System V pty calls)
53119304SpeterAC_CACHE_VAL(vi_cv_sys5_pty, [dnl
53219304SpeterAC_TRY_LINK(, [grantpt(0);],
53319304Speter	[vi_cv_sys5_pty=yes], [vi_cv_sys5_pty=no])])
53419304Speterif test "$vi_cv_sys5_pty" = yes; then
53519304Speter	AC_DEFINE(HAVE_SYS5_PTY)
53619304Speterfi
53719304SpeterAC_MSG_RESULT($vi_cv_sys5_pty)
53819304Speter
53919304Speterdnl Check for the revoke system call.
54019304SpeterAC_MSG_CHECKING(for revoke system call)
54119304SpeterAC_CACHE_VAL(vi_cv_revoke, [dnl
54219304SpeterAC_TRY_LINK(, [revoke("a");],
54319304Speter	[vi_cv_revoke=yes], [vi_cv_revoke=no])])
54419304Speterif test "$vi_cv_revoke" = yes; then
54519304Speter	AC_DEFINE(HAVE_REVOKE)
54619304Speterfi
54719304SpeterAC_MSG_RESULT($vi_cv_revoke)
54819304Speter
54919304Speterdnl Some versions of sprintf return a pointer to the first argument instead
55019304Speterdnl of a character count.  We assume that the return value of snprintf and
55119304Speterdnl vsprintf etc. will be the same as sprintf, and check the easy one.
55219304SpeterAC_MSG_CHECKING(for int type sprintf return value)
55319304SpeterAC_CACHE_VAL(vi_cv_sprintf_count, [dnl
55419304SpeterAC_TRY_RUN([main(){char buf[20]; exit(sprintf(buf, "XXX") != 3);}],
55519304Speter	[vi_cv_sprintf_count=yes], [vi_cv_sprintf_count=no])])
55619304Speterif test "$vi_cv_sprintf_count" = no; then
55719304Speter	AC_DEFINE(SPRINTF_RET_CHARPNT)
55819304Speterfi
55919304SpeterAC_MSG_RESULT($vi_cv_sprintf_count)
56019304Speter
56119304Speterdnl We compile in nvi's DB routines unless the user specifies otherwise.
56219304SpeterAC_MSG_CHECKING(if --disable-db option specified)
56319304SpeterAC_ARG_ENABLE(db,
56419304Speter	[  --disable-db            DON'T use the nvi-provided DB routines.],
56519304Speter	[vi_cv_db_lib="other DB"], [vi_cv_db_lib="bundled DB"])
56619304SpeterAC_MSG_RESULT($vi_cv_db_lib)
56719304Spetercase "$vi_cv_db_lib" in
56819304Speter"bundled DB")
56919304Speter	CPPFLAGS="-I\$(srcdir)/db/include $CPPFLAGS"
57019304Speter	LIBOBJS="\$(DBOBJS) $LIBOBJS";;
57119304Speter"other DB")
57219304Speter	;;
57319304Speteresac
57419304Speter
57519304Speterdnl We compile in nvi's RE routines unless the user specifies otherwise.
57619304SpeterAC_MSG_CHECKING(if --disable-re option specified)
57719304SpeterAC_ARG_ENABLE(re,
57819304Speter	[  --disable-re            DON'T use the nvi-provided RE routines.],
57919304Speter	[vi_cv_re_lib="other RE"], [vi_cv_re_lib="bundled RE"])
58019304SpeterAC_MSG_RESULT($vi_cv_re_lib)
58119304Spetercase "$vi_cv_re_lib" in
58219304Speter"bundled RE")
58319304Speter	CPPFLAGS="-I\$(srcdir)/regex $CPPFLAGS"
58419304Speter	LIBOBJS="\$(REOBJS) $LIBOBJS";;
58519304Speter"other RE")
58619304Speter	;;
58719304Speteresac
58819304Speter
58919304Speterdnl Check for the standard shorthand types.
59019304SpeterAC_SUBST(u_char_decl)
59119304SpeterAC_MSG_CHECKING(for u_char)
59219304SpeterAC_CACHE_VAL(vi_cv_uchar, [dnl
59319304SpeterAC_TRY_COMPILE([#include <sys/types.h>], u_char foo;,
59419304Speter	[vi_cv_uchar=yes], [vi_cv_uchar=no])])
59519304SpeterAC_MSG_RESULT($vi_cv_uchar)
59619304Speterif test "$vi_cv_uchar" = no; then
59719304Speter	u_char_decl="typedef unsigned char u_char;"
59819304Speterfi
59919304Speter
60019304SpeterAC_SUBST(u_short_decl)
60119304SpeterAC_MSG_CHECKING(for u_short)
60219304SpeterAC_CACHE_VAL(vi_cv_ushort, [dnl
60319304SpeterAC_TRY_COMPILE([#include <sys/types.h>], u_short foo;,
60419304Speter	[vi_cv_ushort=yes], [vi_cv_ushort=no])])
60519304SpeterAC_MSG_RESULT($vi_cv_ushort)
60619304Speterif test "$vi_cv_ushort" = no; then
60719304Speter	u_short_decl="typedef unsigned short u_short;"
60819304Speterfi
60919304Speter
61019304SpeterAC_SUBST(u_int_decl)
61119304SpeterAC_MSG_CHECKING(for u_int)
61219304SpeterAC_CACHE_VAL(vi_cv_uint, [dnl
61319304SpeterAC_TRY_COMPILE([#include <sys/types.h>], u_int foo;,
61419304Speter	[vi_cv_uint=yes], [vi_cv_uint=no])])
61519304SpeterAC_MSG_RESULT($vi_cv_uint)
61619304Speterif test "$vi_cv_uint" = no; then
61719304Speter	u_int_decl="typedef unsigned int u_int;"
61819304Speterfi
61919304Speter
62019304SpeterAC_SUBST(u_long_decl)
62119304SpeterAC_MSG_CHECKING(for u_long)
62219304SpeterAC_CACHE_VAL(vi_cv_ulong, [dnl
62319304SpeterAC_TRY_COMPILE([#include <sys/types.h>], u_long foo;,
62419304Speter	[vi_cv_ulong=yes], [vi_cv_ulong=no])])
62519304SpeterAC_MSG_RESULT($vi_cv_ulong)
62619304Speterif test "$vi_cv_ulong" = no; then
62719304Speter	u_long_decl="typedef unsigned long u_long;"
62819304Speterfi
62919304Speter
63019304Speterdnl DB/Vi use specific integer sizes.
63119304SpeterAC_SUBST(u_int8_decl)
63219304SpeterAC_MSG_CHECKING(for u_int8_t)
63319304SpeterAC_CACHE_VAL(vi_cv_uint8, [dnl
63419304SpeterAC_TRY_COMPILE([#include <sys/types.h>], u_int8_t foo;,
63519304Speter	[vi_cv_uint8=yes],
63619304SpeterAC_TRY_RUN([main(){exit(sizeof(unsigned char) != 1);}],
63719304Speter	[vi_cv_uint8="unsigned char"], [vi_cv_uint8=no]))])
63819304SpeterAC_MSG_RESULT($vi_cv_uint8)
63919304Speterif test "$vi_cv_uint8" = no; then
64019304Speter	echo
64119304Speter	echo "Fatal error: no unsigned, 8-bit integral type."
64219304Speter	exit 1
64319304Speterfi
64419304Speterif test "$vi_cv_uint8" != yes; then
64519304Speter	u_int8_decl="typedef $vi_cv_uint8 u_int8_t;"
64619304Speterfi
64719304Speter
64819304SpeterAC_SUBST(u_int16_decl)
64919304SpeterAC_MSG_CHECKING(for u_int16_t)
65019304SpeterAC_CACHE_VAL(vi_cv_uint16, [dnl
65119304SpeterAC_TRY_COMPILE([#include <sys/types.h>], u_int16_t foo;,
65219304Speter	[vi_cv_uint16=yes],
65319304SpeterAC_TRY_RUN([main(){exit(sizeof(unsigned short) != 2);}],
65419304Speter	[vi_cv_uint16="unsigned short"],
65519304SpeterAC_TRY_RUN([main(){exit(sizeof(unsigned int) != 2);}],
65619304Speter	[vi_cv_uint16="unsigned int"], [vi_cv_uint16=no])))])
65719304SpeterAC_MSG_RESULT($vi_cv_uint16)
65819304Speterif test "$vi_cv_uint16" = no; then
65919304Speter	echo
66019304Speter	echo "Fatal error: no unsigned, 16-bit integral type."
66119304Speter	exit 1
66219304Speterfi
66319304Speterif test "$vi_cv_uint16" != yes; then
66419304Speter	u_int16_decl="typedef $vi_cv_uint16 u_int16_t;"
66519304Speterfi
66619304Speter
66719304SpeterAC_SUBST(int16_decl)
66819304SpeterAC_MSG_CHECKING(for int16_t)
66919304SpeterAC_CACHE_VAL(vi_cv_int16, [dnl
67019304SpeterAC_TRY_COMPILE([#include <sys/types.h>], int16_t foo;,
67119304Speter	[vi_cv_int16=yes],
67219304SpeterAC_TRY_RUN([main(){exit(sizeof(short) != 2);}],
67319304Speter	[vi_cv_int16="short"],
67419304SpeterAC_TRY_RUN([main(){exit(sizeof(int) != 2);}],
67519304Speter	[vi_cv_int16="int"], [vi_cv_int16=no])))])
67619304SpeterAC_MSG_RESULT($vi_cv_int16)
67719304Speterif test "$vi_cv_int16" = no; then
67819304Speter	echo
67919304Speter	echo "Fatal error: no signed, 16-bit integral type."
68019304Speter	exit 1
68119304Speterfi
68219304Speterif test "$vi_cv_int16" != yes; then
68319304Speter	int16_decl="typedef $vi_cv_int16 int16_t;"
68419304Speterfi
68519304Speter
68619304SpeterAC_SUBST(u_int32_decl)
68719304SpeterAC_MSG_CHECKING(for u_int32_t)
68819304SpeterAC_CACHE_VAL(vi_cv_uint32, [dnl
68919304SpeterAC_TRY_COMPILE([#include <sys/types.h>], u_int32_t foo;,
69019304Speter	[vi_cv_uint32=yes],
69119304SpeterAC_TRY_RUN([main(){exit(sizeof(unsigned int) != 4);}],
69219304Speter	[vi_cv_uint32="unsigned int"],
69319304SpeterAC_TRY_RUN([main(){exit(sizeof(unsigned long) != 4);}],
69419304Speter	[vi_cv_uint32="unsigned long"], [vi_cv_uint32=no])))])
69519304SpeterAC_MSG_RESULT($vi_cv_uint32)
69619304Speterif test "$vi_cv_uint32" = no; then
69719304Speter	echo
69819304Speter	echo "Fatal error: no unsigned, 32-bit integral type."
69919304Speter	exit 1
70019304Speterfi
70119304Speterif test "$vi_cv_uint32" != yes; then
70219304Speter	u_int32_decl="typedef $vi_cv_uint32 u_int32_t;"
70319304Speterfi
70419304Speter
70519304SpeterAC_SUBST(int32_decl)
70619304SpeterAC_MSG_CHECKING(for int32_t)
70719304SpeterAC_CACHE_VAL(vi_cv_int32, [dnl
70819304SpeterAC_TRY_COMPILE([#include <sys/types.h>], int32_t foo;,
70919304Speter	[vi_cv_int32=yes],
71019304SpeterAC_TRY_RUN([main(){exit(sizeof(int) != 4);}],
71119304Speter	[vi_cv_int32="int"],
71219304SpeterAC_TRY_RUN([main(){exit(sizeof(long) != 4);}],
71319304Speter	[vi_cv_int32="long"], [vi_cv_int32=no])))])
71419304SpeterAC_MSG_RESULT($vi_cv_int32)
71519304Speterif test "$vi_cv_int32" = no; then
71619304Speter	echo
71719304Speter	echo "Fatal error: no signed, 32-bit integral type."
71819304Speter	exit 1
71919304Speterfi
72019304Speterif test "$vi_cv_int32" != yes; then
72119304Speter	int32_decl="typedef $vi_cv_int32 int32_t;"
72219304Speterfi
72319304Speter
72419304SpeterAC_OUTPUT(Makefile port.h:port.h.in
72519304Speter    pathnames.h:pathnames.h.in recover:recover.in)
726