dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.0)
AC_INIT(ncurses/lib_initscr.c)
AC_PREFIX_DEFAULT(/usr)
AC_PREFIX_PROGRAM(tic)
###	Checks for programs.
AC_PROG_CC
AC_PROG_GCC_TRADITIONAL
AC_PROG_CXX
AC_PROG_AWK
AC_PROG_MAKE_SET
AC_PROG_INSTALL
AC_PROG_RANLIB

NC_MAKEFLAGS

### Options to allow the user to specify the set of libraries which are used.
### Use "--without-normal --with-shared" to allow the default model to be
### shared, for example.
nc_list_models=""
AC_ARG_WITH(normal,
	[  --with-normal           generate normal-libraries (default)],
	[test "$withval" = "yes" && nc_list_models="normal"],
	[nc_list_models="normal"])
AC_ARG_WITH(shared,
	[  --with-shared           generate shared-libraries],
	[test "$withval" = "yes" && nc_list_models="$nc_list_models shared"])
AC_ARG_WITH(debug,
	[  --with-debug            generate debug-libraries],
	[test "$withval" = "yes" && nc_list_models="$nc_list_models debug"],
	[nc_list_models="$nc_list_models debug"])
AC_ARG_WITH(profile,
	[  --with-profile          generate profile-libraries],
	[test "$withval" = "yes" && nc_list_models="$nc_list_models profile"])
test -z "$nc_list_models" && nc_list_models=normal

### Use the first model as the default, and save its suffix for use in building
### up test-applications.
DFT_LWR_MODEL=`echo $nc_list_models | $AWK '{print $1}'`
NC_UPPERCASE($DFT_LWR_MODEL,DFT_UPR_MODEL)dnl
NC_LIB_SUFFIX($DFT_LWR_MODEL,DFT_DEP_SUFFIX)dnl
NC_LIB_TYPE($DFT_LWR_MODEL,DFT_ARG_SUFFIX)dnl
NC_OBJ_SUBDIR($DFT_LWR_MODEL,DFT_OBJ_SUBDIR)dnl
AC_SUBST(DFT_OBJ_SUBDIR)dnl	the default object-directory ("obj")
AC_SUBST(DFT_LWR_MODEL)dnl	the default model ("normal")
AC_SUBST(DFT_UPR_MODEL)dnl	the default model ("NORMAL")
AC_SUBST(DFT_DEP_SUFFIX)dnl	the corresponding library-suffix (".a")
AC_SUBST(DFT_ARG_SUFFIX)dnl	the string to append to "-lncurses" ("")
AC_SUBST(nc_list_models)dnl	the complete list of models ("normal debug")

case $DFT_LWR_MODEL in
normal)  LD_MODEL=''   ;;
debug)   LD_MODEL='-g' ;;
profile) LD_MODEL='-pg';;
shared)  LD_MODEL=''   ;;
esac
AC_SUBST(LD_MODEL)dnl		the type of link (e.g., -g or -pg)
NC_SHARED_OPTS

###	use option --with-datadir=DIR to specify an alternate data-directory
AC_ARG_WITH(datadir,
	[  --with-datadir=DIR      specify alternate terminfo data-directory],
	[datadir=$withval],
	[datadir='$(exec_prefix)/lib/terminfo'])
AC_SUBST(datadir)

###	use option --with-includedir=DIR to specify an alternate includedir
AC_ARG_WITH(includedir,
	[  --with-includedir=DIR   specify alternate include-directory],
	[includedir=$withval],
	[includedir='$(prefix)/include/ncurses'])
AC_SUBST(includedir)

###	use option --disable-termcap to leave out the termcap fallback support
AC_ARG_ENABLE(termcap,
	[  --disable-termcap         leave out the termcap fallback support],
	[with_termcap=$enableval]
	[AC_DEFINE(PURE_TERMINFO)])

###	use option --disable-echo to suppress full display compiling commands
AC_ARG_ENABLE(echo,
	[  --enable-echo           display \"compiling\" commands (default)],
	[with_echo=$enableval],
	[with_echo=yes])

###	use option --with-warnings to turn on all gcc warnings
AC_ARG_ENABLE(warnings,
	[  --enable-warnings       turn on GCC compiler warnings],
	[with_warnings=$enableval])
if test -n "$GCC"
then
	# gcc 2.5.8 doesn't recognize some other useful options that could
	# be configured if you have gcc 2.6.3:
	# -Wbad-function-cast
	# -Wmissing-declarations
	if test -n "$with_warnings"
	then
		CFLAGS="$CFLAGS -Wall -Winline -Wshadow -Wstrict-prototypes -Wmissing-prototypes"
	fi
fi

###	Checks for libraries.
AC_CHECK_LIB(bsd, gettimeofday)dnl CLIX: bzero, select, gettimeofday

###	Checks for header files.
AC_STDC_HEADERS

dnl These are some other potentially nonportable headers.
dnl AC_CHECK_HEADERS(fcntl.h sys/time.h)
AC_CHECK_HEADERS(termios.h sys/ioctl.h sys/select.h libc.h unistd.h values.h getopt.h)

###	checks for compiler characteristics
AC_LANG_C
AC_C_CONST
AC_C_INLINE

###	Checks for external-data
NC_ERRNO
NC_SYS_ERRLIST
NC_LINK_DATAONLY

###	Checks for library functions.
AC_CHECK_FUNCS(sigaction usleep strerror setvbuf setbuffer vsscanf)

if test $ac_cv_func_sigaction = yes; then
AC_MSG_CHECKING(whether sigaction needs _POSIX_SOURCE)
AC_TRY_COMPILE([#include <sys/types.h>
#include <signal.h>], [struct sigaction act;],
  sigact_bad=no, sigact_bad=yes AC_DEFINE(SVR4_ACTION))
fi
AC_MSG_RESULT($sigact_bad)

NC_TYPE_SIGACTION
NC_TIOCGWINSZ

dnl FIXME checks we don't do (but neither does the old Configure script):
dnl -DGOOD_SELECT

dnl We'll do our own -g libraries
CFLAGS=`echo ${CFLAGS} | sed -e s/-g//`

dnl Check for C++ compiler characteristics (and ensure that it's there!)
AC_CHECK_PROG(CXX_EXISTS, $CXX, yes, no)
if test "$ac_cv_prog_CXX_EXISTS" = yes; then
	AC_LANG_CPLUSPLUS
	NC_CXX_LIBRARY
	NC_BOOL_DECL
	NC_BOOL_SIZE
else
	nc_cxx_library=no
fi

### It's not possible to appease gcc 2.6.3's conversion-warnings if we're
### using a 'char' for bools.
if test -n "$with_warnings"; then
	if test -n "$GCC"; then
		if test "$nc_cv_sizeof_bool" != "char"; then
			CFLAGS="$CFLAGS -Wconversion"
		fi
	fi
fi

### Construct the list of include-directories to be generated
NC_INCLUDE_DIRS

### Construct the list of subdirectories for which we'll customize makefiles
### with the appropriate compile-rules.
NC_SRC_MODULES(ncurses progs panel menu forms)
NC_DIRS_TO_MAKE

################################################################################
changequote({,})dnl
AC_OUTPUT(include/config_h $SUB_MAKEFILES Makefile,{

NC_LIB_RULES

### Special editing.  We generate config.h directly to allow all filenames
### to be MSDOS-compatible, as well as to make the list of definitions be
### dynamically determined by the configuration script -- a consideration when
### doing type-clean development testing.

echo creating include/config.h
rm -f include/config.h
echo "/* generated by configure-script
 * On host: $SYS_NAME
 */
#ifndef NC_CONFIG_H
#define NC_CONFIG_H" >include/config.h
sed	-e '/^ -D/!d' \
	-e 's/ -D/\
#define /g' \
	-e 's/\(#define [A-Za-z_][A-Za-z0-9_]*\)=/\1	/g' \
	-e 's@\\@@g' \
	include/config_h | sort >>include/config.h
echo "
#endif /* NC_CONFIG_H */" >> include/config.h
### We comment-out rather than remove, just so config.h shows what we did
echo commenting-out CXX_BOOL defs
sed -e 's/^\(#define CXX_[A-Z][A-Z_]*[        ]*.*\)/\/* curses.h: \1 *\//' include/config.h > include/config.tmp
if cmp -s include/config.h include/config.tmp 2>/dev/null; then
	echo include/config.h is unchanged
	rm -f include/config.tmp
else
	echo updating include/config.h
	rm include/config.h
	mv include/config.tmp include/config.h
fi
echo removing include/config_h
rm include/config_h

### Edit curses.h in-place
sed \
	-e "s/#\\(define\\)[ 	][ 	]*\\(CXX_BUILTIN_BOOL\\).*/#\\1 \\2 $BUILTIN_BOOL/" \
	-e "s/#\\(define\\)[ 	][ 	]*\\(CXX_TYPE_OF_BOOL\\).*/#\\1 \\2 $TYPE_OF_BOOL/" \
	$ac_given_srcdir/include/curses.h.in >conftest.tmp
if test `cd $ac_given_srcdir;pwd` != `pwd`; then
	echo creating include/curses.h
	rm -f include/curses.h~
	if test -f include/curses.h; then mv include/curses.h include/curses.h~; fi
	mv conftest.tmp include/curses.h
elif cmp -s $ac_given_srcdir/include/curses.h conftest.tmp 2>/dev/null; then
	echo include/curses.h is unchanged
	rm -f conftest.tmp
else
	echo updating include/curses.h
	rm -f include/curses.h~
	if test -f include/curses.h; then mv include/curses.h include/curses.h~; fi
	mv conftest.tmp include/curses.h
fi
},{
### Special initialization commands, used to pass information from the
### configuration-run into config.status

if test ".$nc_cv_builtin_bool" = ".yes"; then BUILTIN_BOOL=1;else BUILTIN_BOOL=0;fi
TYPE_OF_BOOL=${nc_cv_sizeof_bool-unsigned}

SYS_NAME="`(uname -a || hostname) 2>/dev/null | sed 1q`"
if test -z "\$SYS_NAME"; then SYS_NAME=unknown;fi

AWK=$AWK
NC_LIST_MODELS="$nc_list_models"
WITH_ECHO="$with_echo"
SRC_SUBDIRS="$SRC_SUBDIRS"
nc_cxx_library="$nc_cxx_library"

})
changequote([,])dnl
