ncurses 5.8 - patch 20110307
[ncurses.git] / configure.in
index 0cd345e1ba475e6f6e62278344fd9e86a4d3cfba..48b2139f0c6d8f32ab14bec1b6c32ac073cb53a2 100644 (file)
@@ -1,5 +1,5 @@
 dnl***************************************************************************
 dnl***************************************************************************
-dnl Copyright (c) 1998,1999 Free Software Foundation, Inc.                   *
+dnl Copyright (c) 1998-2009,2010 Free Software Foundation, Inc.              *
 dnl                                                                          *
 dnl Permission is hereby granted, free of charge, to any person obtaining a  *
 dnl copy of this software and associated documentation files (the            *
 dnl                                                                          *
 dnl Permission is hereby granted, free of charge, to any person obtaining a  *
 dnl copy of this software and associated documentation files (the            *
@@ -26,51 +26,31 @@ dnl sale, use or other dealings in this Software without prior written       *
 dnl authorization.                                                           *
 dnl***************************************************************************
 dnl
 dnl authorization.                                                           *
 dnl***************************************************************************
 dnl
-dnl Author: Thomas E. Dickey <dickey@clark.net> 1996,1997
+dnl Author: Thomas E. Dickey 1995-on
 dnl
 dnl
-dnl $Id: configure.in,v 1.195 2000/07/05 22:24:29 tom Exp $
+dnl $Id: configure.in,v 1.514 2010/11/28 00:12:45 tom Exp $
 dnl Process this file with autoconf to produce a configure script.
 dnl Process this file with autoconf to produce a configure script.
-AC_PREREQ(2.12.971230)
-AC_REVISION($Revision: 1.195 $)
+dnl
+dnl See http://invisible-island.net/autoconf/ for additional information.
+dnl
+dnl ---------------------------------------------------------------------------
+AC_PREREQ(2.13.20020210)
+AC_REVISION($Revision: 1.514 $)
 AC_INIT(ncurses/base/lib_initscr.c)
 AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
 
 AC_INIT(ncurses/base/lib_initscr.c)
 AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
 
+CF_TOP_BUILDDIR
 CF_SUBST_NCURSES_VERSION
 CF_SUBST_NCURSES_VERSION
-CF_CHECK_CACHE
+
+CF_WITH_REL_VERSION(NCURSES)
+CF_WITH_ABI_VERSION
+
+CF_CHECK_CACHE([AC_CANONICAL_SYSTEM])
 AC_ARG_WITH(system-type,
 [  --with-system-type=XXX  test: override derived host system-type],
 [AC_MSG_WARN(overriding system type to $withval)
  cf_cv_system_name=$withval])
 
 AC_ARG_WITH(system-type,
 [  --with-system-type=XXX  test: override derived host system-type],
 [AC_MSG_WARN(overriding system type to $withval)
  cf_cv_system_name=$withval])
 
-# We need a configure script only when compiling as part of GNU C library.
-# Here we have to generate one of the files we need while compiling.
-#
-# The only problem is that users of the package might think they have to
-# run configure themself and find it irritating when nothing happens.
-#
-# So we try here to find out whether we are called from the glibc configure
-# or by a user.
-#
-dnl Check if we are a drop-in addition to glibc.
-AC_ARG_ENABLE(add-ons, dnl
-[  --enable-add-ons=DIR... used to check if we are a glibc add-on.],
-               [glibc_add_on=yes],
-               [glibc_add_on=])
-
-dnl We need to use [ and ] for other purposes for a while now.
-changequote(,)dnl
-if test x"$glibc_add_on" = "xyes" ; then
-  rm -f $srcdir/Banner
-  # We are in glibc.
-  rm -f $srcdir/Makefile
-  cp $srcdir/Makefile.glibc $srcdir/Makefile
-  echo "ncurses `grep \"^[     ]*ncurses-version[      ]*=.*$\" \
-               $srcdir/Makefile | sed -e \
-               's/^[   ]*ncurses-version[      ]*=[    ]*\([^  ^ ]*\)[         ]*$/\1/'`" > $srcdir/Banner
-  exit 0
-fi
-changequote([,])dnl
-
 ###    Save the given $CFLAGS to allow user-override.
 cf_user_CFLAGS="$CFLAGS"
 
 ###    Save the given $CFLAGS to allow user-override.
 cf_user_CFLAGS="$CFLAGS"
 
@@ -79,28 +59,15 @@ CF_CFG_DEFAULTS
 
 ###    Checks for programs.
 AC_PROG_CC
 
 ###    Checks for programs.
 AC_PROG_CC
-if test -n "$GCC" ; then
-AC_MSG_CHECKING(version of gcc)
-eval "$CC --version"
-fi
-if test $host != $build; then
-  AC_CHECK_PROGS(BUILD_CC, $CC gcc cc)
-fi
+CF_GCC_VERSION
+
 AC_PROG_CPP
 AC_PROG_GCC_TRADITIONAL
 AC_PROG_CPP
 AC_PROG_GCC_TRADITIONAL
+CF_PROG_CC_C_O(CC)
 AC_ISC_POSIX
 CF_ANSI_CC_REQD
 CF_PROG_EXT
 AC_ISC_POSIX
 CF_ANSI_CC_REQD
 CF_PROG_EXT
-
-case "$cf_cv_system_name" in
-freebsd*) #(vi
-  test -z "$LDCONFIG" && LDCONFIG="/sbin/ldconfig -R"
-  ;;
-*) LDPATH=$PATH:/sbin:/usr/sbin
-  AC_PATH_PROG(LDCONFIG,ldconfig,,$LDPATH)
-  ;;
-esac
-AC_SUBST(LDCONFIG)
+CF_PROG_LDCONFIG
 
 dnl DEFECT in autoconf 2.12:   an attempt to set policy, this breaks the
 dnl                            configure script by not letting us test if C++
 
 dnl DEFECT in autoconf 2.12:   an attempt to set policy, this breaks the
 dnl                            configure script by not letting us test if C++
@@ -115,15 +82,31 @@ if test "X$cf_with_cxx" = Xno ; then
        CXX=""
        GXX=""
 else
        CXX=""
        GXX=""
 else
+       # with autoconf 2.13, we can change the error to a warning:
        pushdef([AC_MSG_ERROR],
        pushdef([AC_MSG_ERROR],
-               [AC_MSG_RESULT([You don't have any C++ compiler, too bad]); dnl
+               [AC_MSG_RESULT(no)
+                AC_MSG_WARN([You don't have any C++ compiler, too bad])
                cf_with_cxx=no; CXX=""; GXX="";])dnl
        AC_PROG_CXX
        popdef([AC_MSG_ERROR])dnl
                cf_with_cxx=no; CXX=""; GXX="";])dnl
        AC_PROG_CXX
        popdef([AC_MSG_ERROR])dnl
+       # autoconf 2.5x removed the error - by hardcoding it to g++.
+       if test "$CXX" = "g++" ; then
+               AC_PATH_PROG(CXX,g++)
+       fi
+       if test "$CXX" = "g++" ; then
+               AC_MSG_WARN(ignoring hardcoded g++)
+               cf_with_cxx=no; CXX=""; GXX="";
+       fi
 fi
 fi
-changequote(,)dnl
-if test -n "$GXX" ; then case "`${CXX-g++} --version`" in 1*|2.[0-6]*) GXX=""; CXX=""; ac_cv_prog_gxx=no; cf_cxx_library=no ; echo No: templates do not work;; esac; fi
-changequote([,])dnl
+
+CF_GXX_VERSION
+case $GXX_VERSION in
+1*|2.[[0-6]]*)
+       # GXX=""; CXX=""; ac_cv_prog_gxx=no
+       # cf_cxx_library=no
+       AC_MSG_WARN(templates do not work)
+       ;;
+esac
 
 AC_MSG_CHECKING(if you want to build C++ binding and demo)
 AC_ARG_WITH(cxx-binding,
 
 AC_MSG_CHECKING(if you want to build C++ binding and demo)
 AC_ARG_WITH(cxx-binding,
@@ -139,6 +122,13 @@ AC_ARG_WITH(ada,
        [cf_with_ada=yes])
 AC_MSG_RESULT($cf_with_ada)
 
        [cf_with_ada=yes])
 AC_MSG_RESULT($cf_with_ada)
 
+AC_MSG_CHECKING(if you want to install manpages)
+AC_ARG_WITH(manpages,
+       [  --without-manpages      suppress install of manpages],
+       [cf_with_manpages=$withval],
+       [cf_with_manpages=yes])
+AC_MSG_RESULT($cf_with_manpages)
+
 AC_MSG_CHECKING(if you want to build programs such as tic)
 AC_ARG_WITH(progs,
        [  --without-progs         suppress build with programs (e.g., tic)],
 AC_MSG_CHECKING(if you want to build programs such as tic)
 AC_ARG_WITH(progs,
        [  --without-progs         suppress build with programs (e.g., tic)],
@@ -146,46 +136,108 @@ AC_ARG_WITH(progs,
        [cf_with_progs=yes])
 AC_MSG_RESULT($cf_with_progs)
 
        [cf_with_progs=yes])
 AC_MSG_RESULT($cf_with_progs)
 
+AC_MSG_CHECKING(if you want to build test-programs)
+AC_ARG_WITH(tests,
+       [  --without-tests         suppress build with test-programs],
+       [cf_with_tests=$withval],
+       [cf_with_tests=yes])
+AC_MSG_RESULT($cf_with_tests)
+
+AC_MSG_CHECKING(if you wish to install curses.h)
+AC_ARG_WITH(curses-h,
+       [  --without-curses-h      install curses.h as ncurses.h only],
+       [with_curses_h=$withval],
+       [with_curses_h=yes])
+AC_MSG_RESULT($with_curses_h)
+
 modules_to_build="ncurses"
 if test "X$cf_with_progs" != Xno ; then
 modules_to_build="$modules_to_build progs tack"
 fi
 modules_to_build="$modules_to_build panel menu form"
 
 modules_to_build="ncurses"
 if test "X$cf_with_progs" != Xno ; then
 modules_to_build="$modules_to_build progs tack"
 fi
 modules_to_build="$modules_to_build panel menu form"
 
-AC_PROG_AWK
-AC_PROG_MAKE_SET
+AC_ARG_PROGRAM
+
+CF_PROG_AWK
+CF_PROG_EGREP
 CF_PROG_INSTALL
 CF_PROG_INSTALL
+CF_PROG_LINT
+CF_PROG_LN_S
+
 AC_SYS_LONG_FILE_NAMES
 AC_SYS_LONG_FILE_NAMES
-AC_PROG_LN_S
-AC_PROG_RANLIB
-AC_CHECK_PROGS(LINT, tdlint lint alint)
-AC_CHECK_PROGS(MAN, man man_db)
-AC_SUBST(LINT_OPTS)
 
 
-dnl These are standard among *NIX systems, but not when cross-compiling
-CF_SUBST(loader,LD,ld)
-CF_SUBST(archiver,AR,ar)
-CF_SUBST(archiver options,AR_OPTS,rv)
+# if we find pkg-config, check if we should install the ".pc" files.
+CF_PKG_CONFIG
+
+if test "$PKG_CONFIG" != no ; then
+       AC_MSG_CHECKING(if we should install .pc files for $PKG_CONFIG)
 
 
+       # Leave this as something that can be overridden in the environment.
+       if test -z "$PKG_CONFIG_LIBDIR" ; then
+               PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG" | sed -e 's,/[[^/]]*/[[^/]]*$,,'`/lib/pkgconfig
+       fi
+       PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/^://' -e 's/:.*//'`
+       if test -n "$PKG_CONFIG_LIBDIR" && test -d "$PKG_CONFIG_LIBDIR" ; then
+               AC_ARG_ENABLE(pc-files,
+                       [  --enable-pc-files       generate and install .pc files for pkg-config],
+                       [enable_pc_files=$enableval],
+                       [enable_pc_files=no])
+               AC_MSG_RESULT($enable_pc_files)
+       else
+               AC_MSG_RESULT(no)
+               AC_MSG_WARN(did not find library $PKG_CONFIG_LIBDIR)
+               enable_pc_files=no
+       fi
+fi
+AC_SUBST(PKG_CONFIG_LIBDIR)
+
+AC_MSG_CHECKING(if we should assume mixed-case filenames)
+AC_ARG_ENABLE(mixed-case,
+       [  --enable-mixed-case     tic should assume mixed-case filenames],
+       [enable_mixedcase=$enableval],
+       [enable_mixedcase=auto])
+AC_MSG_RESULT($enable_mixedcase)
+if test "$enable_mixedcase" = "auto" ; then
+    CF_MIXEDCASE_FILENAMES
+else
+    cf_cv_mixedcase=$enable_mixedcase
+    if test "$enable_mixedcase" = "yes" ; then
+        AC_DEFINE(MIXEDCASE_FILENAMES)
+    fi
+fi
+
+# do this after mixed-case option (tags/TAGS is not as important as tic).
+AC_PROG_MAKE_SET
+CF_MAKE_TAGS
 CF_MAKEFLAGS
 
 CF_MAKEFLAGS
 
+dnl These are standard among *NIX systems, but not when cross-compiling
+AC_CHECK_TOOL(RANLIB, ranlib, ':')
+AC_CHECK_TOOL(LD, ld, ld)
+AC_CHECK_TOOL(AR, ar, ar)
+CF_AR_FLAGS
+
 dnl Special option for use by system-builders: the install-prefix is used to
 dnl adjust the location into which the actual install is done, so that an
 dnl archive can be built without modifying the host system's configuration.
 AC_MSG_CHECKING(if you have specified an install-prefix)
 AC_ARG_WITH(install-prefix,
 dnl Special option for use by system-builders: the install-prefix is used to
 dnl adjust the location into which the actual install is done, so that an
 dnl archive can be built without modifying the host system's configuration.
 AC_MSG_CHECKING(if you have specified an install-prefix)
 AC_ARG_WITH(install-prefix,
-       [  --with-install-prefix   prefixes actual install-location],
+       [  --with-install-prefix   prefixes actual install-location ($DESTDIR)],
        [case "$withval" in #(vi
        yes|no) #(vi
                ;;
        [case "$withval" in #(vi
        yes|no) #(vi
                ;;
-       *)      INSTALL_PREFIX="$withval"
+       *)      DESTDIR="$withval"
                ;;
        esac])
                ;;
        esac])
-AC_MSG_RESULT($INSTALL_PREFIX)
-AC_SUBST(INSTALL_PREFIX)
+AC_MSG_RESULT($DESTDIR)
+AC_SUBST(DESTDIR)
 
 ###############################################################################
 
 ###############################################################################
-CF_MAN_PAGES
+CF_HELP_MESSAGE(Build-Tools Needed to Compile Temporary Applications for Cross-compiling:)
+# If we're cross-compiling, allow the user to override the tools and their
+# options.  The configure script is oriented toward identifying the host
+# compiler, etc., but we need a build compiler to generate parts of the source.
+CF_BUILD_CC
 
 ###############################################################################
 CF_HELP_MESSAGE(Options to Specify the Libraries Built/Used:)
 
 ###############################################################################
 CF_HELP_MESSAGE(Options to Specify the Libraries Built/Used:)
@@ -196,6 +248,13 @@ CF_HELP_MESSAGE(Options to Specify the Libraries Built/Used:)
 cf_list_models=""
 AC_SUBST(cf_list_models)dnl    the complete list of models ("normal debug")
 
 cf_list_models=""
 AC_SUBST(cf_list_models)dnl    the complete list of models ("normal debug")
 
+CF_WITH_LIBTOOL
+if test "$with_libtool" != "no" ; then
+
+cf_list_models="$cf_list_models libtool"
+
+else
+
 AC_MSG_CHECKING(if you want to build shared libraries)
 AC_ARG_WITH(shared,
        [  --with-shared           generate shared-libraries],
 AC_MSG_CHECKING(if you want to build shared libraries)
 AC_ARG_WITH(shared,
        [  --with-shared           generate shared-libraries],
@@ -228,16 +287,21 @@ AC_ARG_WITH(profile,
 AC_MSG_RESULT($with_profile)
 test "$with_profile" = "yes" && cf_list_models="$cf_list_models profile"
 
 AC_MSG_RESULT($with_profile)
 test "$with_profile" = "yes" && cf_list_models="$cf_list_models profile"
 
+fi
+
 ###############################################################################
 
 AC_MSG_CHECKING(for specified models)
 test -z "$cf_list_models" && cf_list_models=normal
 ###############################################################################
 
 AC_MSG_CHECKING(for specified models)
 test -z "$cf_list_models" && cf_list_models=normal
+dnl If we use libtool to generate libraries, then it must be the only
+dnl specified model.
+test "$with_libtool" != "no" && cf_list_models=libtool
 AC_MSG_RESULT($cf_list_models)
 
 ### Use the first model as the default, and save its suffix for use in building
 ### up test-applications.
 AC_MSG_CHECKING(for default model)
 AC_MSG_RESULT($cf_list_models)
 
 ### Use the first model as the default, and save its suffix for use in building
 ### up test-applications.
 AC_MSG_CHECKING(for default model)
-DFT_LWR_MODEL=`echo $cf_list_models | $AWK '{print $1}'`
+DFT_LWR_MODEL=`echo "$cf_list_models" | $AWK '{print $1}'`
 AC_MSG_RESULT($DFT_LWR_MODEL)
 
 CF_UPPER(DFT_UPR_MODEL,$DFT_LWR_MODEL)dnl
 AC_MSG_RESULT($DFT_LWR_MODEL)
 
 CF_UPPER(DFT_UPR_MODEL,$DFT_LWR_MODEL)dnl
@@ -245,6 +309,9 @@ CF_UPPER(DFT_UPR_MODEL,$DFT_LWR_MODEL)dnl
 AC_SUBST(DFT_LWR_MODEL)dnl     the default model ("normal")
 AC_SUBST(DFT_UPR_MODEL)dnl     the default model ("NORMAL")
 
 AC_SUBST(DFT_LWR_MODEL)dnl     the default model ("normal")
 AC_SUBST(DFT_UPR_MODEL)dnl     the default model ("NORMAL")
 
+TICS_NAME=tic
+AC_SUBST(TICS_NAME)
+
 TINFO_NAME=tinfo
 AC_SUBST(TINFO_NAME)
 
 TINFO_NAME=tinfo
 AC_SUBST(TINFO_NAME)
 
@@ -252,6 +319,8 @@ LIB_NAME=ncurses
 AC_SUBST(LIB_NAME)
 
 LIB_DIR=../lib
 AC_SUBST(LIB_NAME)
 
 LIB_DIR=../lib
+LIB_2ND=../../lib
+
 CF_LIB_PREFIX(cf_prefix)
 LIB_PREFIX=$cf_prefix
 AC_SUBST(LIB_PREFIX)
 CF_LIB_PREFIX(cf_prefix)
 LIB_PREFIX=$cf_prefix
 AC_SUBST(LIB_PREFIX)
@@ -268,43 +337,43 @@ AC_ARG_WITH(termlib,
        [with_termlib=no])
 AC_MSG_RESULT($with_termlib)
 
        [with_termlib=no])
 AC_MSG_RESULT($with_termlib)
 
-### Checks for special libraries, must be done up-front.
-AC_MSG_CHECKING(if you want to link with dbmalloc for testing)
-AC_ARG_WITH(dbmalloc,
-       [  --with-dbmalloc         test: use Conor Cahill's dbmalloc library],
-       [with_dbmalloc=$withval],
-       [with_dbmalloc=no])
-AC_MSG_RESULT($with_dbmalloc)
-if test $with_dbmalloc = yes ; then
-       AC_CHECK_LIB(dbmalloc,debug_malloc)
-fi
-
-AC_MSG_CHECKING(if you want to link with dmalloc for testing)
-AC_ARG_WITH(dmalloc,
-       [  --with-dmalloc          test: use Gray Watson's dmalloc library],
-       [with_dmalloc=$withval],
-       [with_dmalloc=no])
-AC_MSG_RESULT($with_dmalloc)
-if test $with_dmalloc = yes ; then
-       AC_CHECK_LIB(dmalloc,dmalloc_debug)
-fi
+AC_MSG_CHECKING(if you want to build a separate tic library)
+AC_ARG_WITH(ticlib,
+       [  --with-ticlib           generate separate tic library],
+       [with_ticlib=$withval],
+       [with_ticlib=no])
+AC_MSG_RESULT($with_ticlib)
 
 
+### Checks for special libraries, must be done up-front.
 SHLIB_LIST=""
 SHLIB_LIST=""
-AC_MSG_CHECKING(if you want to link with the gpm mouse library)
-AC_ARG_WITH(gpm,
-       [  --with-gpm              use Alessandro Rubini's GPM library],
-       [with_gpm=$withval],
-       [with_gpm=no])
-AC_MSG_RESULT($with_gpm)
-if test $with_gpm = yes ; then
-       AC_CHECK_LIB(gpm,Gpm_Open,[
-               EXTRA_LIBS="-lgpm -lncurses $EXTRA_LIBS"
+CF_WITH_GPM
+if test "$with_gpm" != no ; then
+       AC_MSG_CHECKING(if you want to load GPM dynamically)
+       AC_ARG_WITH(dlsym,
+               [  --without-dlsym         do not use dlsym() to load GPM dynamically],
+               [with_dlsym=$withval],
+               [with_dlsym=yes])
+       AC_MSG_RESULT($with_dlsym)
+       if test "$with_dlsym" = yes ; then
+               CF_FUNC_DLSYM
+               if test "$with_gpm" != yes ; then
+                       CF_VERBOSE(assuming soname for gpm is $with_gpm)
+                       cf_cv_gpm_soname="$with_gpm"
+               else
+                       CF_LIB_SONAME([#include <gpm.h>],[if (Gpm_Open(0,0)) Gpm_Close();],gpm)
+               fi
+               test "$cf_cv_gpm_soname" != "unknown" && AC_DEFINE_UNQUOTED(LIBGPM_SONAME,"$cf_cv_gpm_soname")
+               SHLIB_LIST="-ldl $SHLIB_LIST"
+       else
                SHLIB_LIST="-lgpm $SHLIB_LIST"
                SHLIB_LIST="-lgpm $SHLIB_LIST"
-               AC_DEFINE(HAVE_LIBGPM)
-               AC_CHECK_HEADERS(gpm.h)
-       ],AC_MSG_WARN(Cannot link with gpm library - read the FAQ))
+               CF_ADD_LIB(gpm,TEST_LIBS)
+       fi
+       AC_DEFINE(HAVE_LIBGPM)
+       CF_CHECK_GPM_WGETCH
 fi
 
 fi
 
+CF_WITH_SYSMOUSE
+
 dnl Not all ports of gcc support the -g option
 
 if test X"$CC_G_OPT" = X"" ; then
 dnl Not all ports of gcc support the -g option
 
 if test X"$CC_G_OPT" = X"" ; then
@@ -321,6 +390,7 @@ AC_SUBST(CXX_G_OPT)
 
 AC_MSG_CHECKING(for default loader flags)
 case $DFT_LWR_MODEL in
 
 AC_MSG_CHECKING(for default loader flags)
 case $DFT_LWR_MODEL in
+libtool) LD_MODEL=''   ;;
 normal)  LD_MODEL=''   ;;
 debug)   LD_MODEL=$CC_G_OPT ;;
 profile) LD_MODEL='-pg';;
 normal)  LD_MODEL=''   ;;
 debug)   LD_MODEL=$CC_G_OPT ;;
 profile) LD_MODEL='-pg';;
@@ -329,12 +399,17 @@ esac
 AC_SUBST(LD_MODEL)dnl          the type of link (e.g., -g or -pg)
 AC_MSG_RESULT($LD_MODEL)
 
 AC_SUBST(LD_MODEL)dnl          the type of link (e.g., -g or -pg)
 AC_MSG_RESULT($LD_MODEL)
 
-AC_MSG_CHECKING(if rpath option should be used)
-AC_ARG_ENABLE(rpath,
-[  --enable-rpath          use rpath option when generating shared libraries],
-[cf_cv_ld_rpath=$enableval],
-[cf_cv_ld_rpath=no])
-AC_MSG_RESULT($cf_cv_ld_rpath)
+case $DFT_LWR_MODEL in
+shared)
+CF_ENABLE_RPATH
+AC_MSG_CHECKING(if shared libraries should be relinked during install)
+AC_ARG_ENABLE(relink,
+[  --disable-relink        relink shared libraries during install],
+[cf_cv_do_relink=$enableval],
+[cf_cv_do_relink=yes])
+AC_MSG_RESULT($cf_cv_do_relink)
+       ;;
+esac
 
 CF_SHARED_OPTS
 if test "$CC_SHARED_OPTS" = "unknown"; then
 
 CF_SHARED_OPTS
 if test "$CC_SHARED_OPTS" = "unknown"; then
@@ -345,6 +420,11 @@ if test "$CC_SHARED_OPTS" = "unknown"; then
        done
 fi
 
        done
 fi
 
+### If we're building with rpath, try to link non-standard libs that way too.
+if test "$DFT_LWR_MODEL" = "shared"; then
+       CF_DISABLE_RPATH_HACK
+fi
+
 ###############################################################################
 CF_HELP_MESSAGE(Fine-Tuning Your Configuration:)
 
 ###############################################################################
 CF_HELP_MESSAGE(Fine-Tuning Your Configuration:)
 
@@ -353,16 +433,44 @@ AC_MSG_CHECKING(if you wish to install ncurses overwriting curses)
 AC_ARG_ENABLE(overwrite,
        [  --disable-overwrite     leave out the link to -lcurses],
        [with_overwrite=$enableval],
 AC_ARG_ENABLE(overwrite,
        [  --disable-overwrite     leave out the link to -lcurses],
        [with_overwrite=$enableval],
-       [with_overwrite=yes])
+       [if test "$prefix" = "/usr" ; then with_overwrite=yes; else with_overwrite=no; fi])
 AC_MSG_RESULT($with_overwrite)
 
 AC_MSG_CHECKING(if external terminfo-database is used)
 AC_ARG_ENABLE(database,
 AC_MSG_RESULT($with_overwrite)
 
 AC_MSG_CHECKING(if external terminfo-database is used)
 AC_ARG_ENABLE(database,
-       [  --disable-database      use only built-in data],
-       [with_database=$enableval],
-       [with_database=yes])
-AC_MSG_RESULT($with_database)
-test $with_database != no && AC_DEFINE(USE_DATABASE)
+       [  --disable-database      do not use terminfo, only fallbacks/termcap],
+       [use_database=$enableval],
+       [use_database=yes])
+AC_MSG_RESULT($use_database)
+
+case $host_os in #(vi
+os2*) #(vi
+       TERMINFO_SRC='${top_srcdir}/misc/emx.src'
+       ;;
+*) #(vi
+       TERMINFO_SRC='${top_srcdir}/misc/terminfo.src'
+       ;;
+esac
+AC_SUBST(TERMINFO_SRC)
+
+CF_PATHSEP
+if test "$use_database" != no ; then
+       AC_DEFINE(USE_DATABASE)
+
+       AC_MSG_CHECKING(which terminfo source-file will be installed)
+       AC_ARG_WITH(database,
+               [  --with-database=XXX     specify terminfo source to install],
+               [TERMINFO_SRC=$withval])
+       AC_MSG_RESULT($TERMINFO_SRC)
+
+       AC_MSG_CHECKING(whether to use hashed database instead of directory/tree)
+       AC_ARG_WITH(hashed-db,
+               [  --with-hashed-db        specify hashed-database library],,
+               [with_hashed_db=no])
+       AC_MSG_RESULT($with_hashed_db)
+else
+       with_hashed_db=no
+fi
 
 AC_MSG_CHECKING(for list of fallback descriptions)
 AC_ARG_WITH(fallbacks,
 
 AC_MSG_CHECKING(for list of fallback descriptions)
 AC_ARG_WITH(fallbacks,
@@ -370,9 +478,28 @@ AC_ARG_WITH(fallbacks,
        [with_fallback=$withval],
        [with_fallback=])
 AC_MSG_RESULT($with_fallback)
        [with_fallback=$withval],
        [with_fallback=])
 AC_MSG_RESULT($with_fallback)
-FALLBACK_LIST=`echo $with_fallback|sed -e 's/,/ /g'`
+FALLBACK_LIST=`echo "$with_fallback" | sed -e 's/,/ /g'`
 AC_SUBST(FALLBACK_LIST)
 
 AC_SUBST(FALLBACK_LIST)
 
+AC_MSG_CHECKING(if you want modern xterm or antique)
+AC_ARG_WITH(xterm-new,
+       [  --without-xterm-new     specify if xterm terminfo should be old version],
+       [with_xterm_new=$withval],
+       [with_xterm_new=yes])
+case $with_xterm_new in
+no)    with_xterm_new=xterm-old;;
+*)     with_xterm_new=xterm-new;;
+esac
+AC_MSG_RESULT($with_xterm_new)
+WHICH_XTERM=$with_xterm_new
+AC_SUBST(WHICH_XTERM)
+
+MAKE_TERMINFO=
+if test "$use_database" = no ; then
+       TERMINFO="${datadir}/terminfo"
+       MAKE_TERMINFO="#"
+else
+
 AC_MSG_CHECKING(for list of terminfo directories)
 CF_WITH_PATHLIST(terminfo-dirs,
        [  --with-terminfo-dirs=XXX specify list of terminfo directories],
 AC_MSG_CHECKING(for list of terminfo directories)
 CF_WITH_PATHLIST(terminfo-dirs,
        [  --with-terminfo-dirs=XXX specify list of terminfo directories],
@@ -382,12 +509,20 @@ CF_WITH_PATHLIST(terminfo-dirs,
 AC_MSG_RESULT($TERMINFO_DIRS)
 test -n "$TERMINFO_DIRS" && AC_DEFINE_UNQUOTED(TERMINFO_DIRS,"$TERMINFO_DIRS")
 
 AC_MSG_RESULT($TERMINFO_DIRS)
 test -n "$TERMINFO_DIRS" && AC_DEFINE_UNQUOTED(TERMINFO_DIRS,"$TERMINFO_DIRS")
 
-if test $with_database = no ; then
-       if test -z $with_fallback ; then
-               AC_ERROR(You have disabled the database w/o specifying fallbacks)
-       fi
+AC_MSG_CHECKING(for default terminfo directory)
+CF_WITH_PATH(default-terminfo-dir,
+       [  --with-default-terminfo-dir=DIR default terminfo directory],
+       TERMINFO,
+       DATADIR/terminfo,
+       ${datadir}/terminfo)
+AC_MSG_RESULT($TERMINFO)
+AC_DEFINE_UNQUOTED(TERMINFO,"$TERMINFO")
+
 fi
 
 fi
 
+AC_SUBST(TERMINFO)
+AC_SUBST(MAKE_TERMINFO)
+
 ###    use option --disable-big-core to make tic run on small machines
 ###    We need 4Mb, check if we can allocate 50% more than that.
 AC_MSG_CHECKING(if big-core option selected)
 ###    use option --disable-big-core to make tic run on small machines
 ###    We need 4Mb, check if we can allocate 50% more than that.
 AC_MSG_CHECKING(if big-core option selected)
@@ -397,13 +532,33 @@ AC_ARG_ENABLE(big-core,
        [AC_TRY_RUN([
 #include <stdlib.h>
 #include <string.h>
        [AC_TRY_RUN([
 #include <stdlib.h>
 #include <string.h>
-int main() { exit(malloc(6000000L) == 0); }],
+int main() {
+       unsigned long n = 6000000L;
+       char *s = malloc(n);
+       if (s != 0)
+               s[0] = s[n-1] = 0;
+       ${cf_cv_main_return:-return}(s == 0);
+}],
        [with_big_core=yes],
        [with_big_core=no],
        [with_big_core=no])])
 AC_MSG_RESULT($with_big_core)
 test "$with_big_core" = "yes" && AC_DEFINE(HAVE_BIG_CORE)
 
        [with_big_core=yes],
        [with_big_core=no],
        [with_big_core=no])])
 AC_MSG_RESULT($with_big_core)
 test "$with_big_core" = "yes" && AC_DEFINE(HAVE_BIG_CORE)
 
+### ISO C only guarantees 512-char strings, we have tables which load faster
+### when constructed using "big" strings.  More than the C compiler, the awk
+### program is a limit on most vendor UNIX systems.  Check that we can build.
+AC_MSG_CHECKING(if big-strings option selected)
+AC_ARG_ENABLE(big-strings,
+       [  --disable-big-strings   assume compiler has only standard-size strings],
+       [with_big_strings=$enableval],
+       [CF_AWK_BIG_PRINTF(12000,with_big_strings)])
+AC_MSG_RESULT($with_big_strings)
+
+USE_BIG_STRINGS=0
+test "$with_big_strings" = "yes" && USE_BIG_STRINGS=1
+AC_SUBST(USE_BIG_STRINGS)
+
 ###    use option --enable-termcap to compile in the termcap fallback support
 AC_MSG_CHECKING(if you want termcap-fallback support)
 AC_ARG_ENABLE(termcap,
 ###    use option --enable-termcap to compile in the termcap fallback support
 AC_MSG_CHECKING(if you want termcap-fallback support)
 AC_ARG_ENABLE(termcap,
@@ -413,9 +568,27 @@ AC_ARG_ENABLE(termcap,
 AC_MSG_RESULT($with_termcap)
 
 if test "$with_termcap" != "yes" ; then
 AC_MSG_RESULT($with_termcap)
 
 if test "$with_termcap" != "yes" ; then
+       if test "$use_database" = no ; then
+               if test -z "$with_fallback" ; then
+                       AC_ERROR(You have disabled the database w/o specifying fallbacks)
+               fi
+       fi
        AC_DEFINE(PURE_TERMINFO)
 else
 
        AC_DEFINE(PURE_TERMINFO)
 else
 
+if test "$with_ticlib" != no ; then
+       AC_ERROR(Options --with-ticlib and --enable-termcap cannot be combined)
+fi
+
+AC_DEFINE(USE_TERMCAP)
+AC_MSG_CHECKING(for list of termcap files)
+CF_WITH_PATHLIST(termpath,
+       [  --with-termpath=XXX     specify list of termcap files],
+       TERMPATH,
+       /etc/termcap:/usr/share/misc/termcap)
+AC_MSG_RESULT($TERMPATH)
+test -n "$TERMPATH" && AC_DEFINE_UNQUOTED(TERMPATH,"$TERMPATH")
+
 ###    use option --enable-getcap to use a hacked getcap for reading termcaps
 AC_MSG_CHECKING(if fast termcap-loader is needed)
 AC_ARG_ENABLE(getcap,
 ###    use option --enable-getcap to use a hacked getcap for reading termcaps
 AC_MSG_CHECKING(if fast termcap-loader is needed)
 AC_ARG_ENABLE(getcap,
@@ -435,6 +608,23 @@ test "$with_getcap_cache" = "yes" && AC_DEFINE(USE_GETCAP_CACHE)
 
 fi
 
 
 fi
 
+###   Use option --disable-home-terminfo to completely remove ~/.terminfo
+AC_MSG_CHECKING(if ~/.terminfo is wanted)
+AC_ARG_ENABLE(home-terminfo,
+       [  --disable-home-terminfo drop ~/.terminfo from terminfo search-path],
+       [with_home_terminfo=$enableval],
+       [with_home_terminfo=yes])
+AC_MSG_RESULT($with_home_terminfo)
+test "$with_home_terminfo" = "yes" && AC_DEFINE(USE_HOME_TERMINFO)
+
+AC_MSG_CHECKING(if you want to use restricted environment when running as root)
+AC_ARG_ENABLE(root-environ,
+       [  --disable-root-environ  restrict environment when running as root],
+       [with_root_environ=$enableval],
+       [with_root_environ=yes])
+AC_MSG_RESULT($with_root_environ)
+test "$with_root_environ" = yes && AC_DEFINE(USE_ROOT_ENVIRON)
+
 ###   Use option --enable-symlinks to make tic use symlinks, not hard links
 ###   to reduce storage requirements for the terminfo database.
 CF_LINK_FUNCS
 ###   Use option --enable-symlinks to make tic use symlinks, not hard links
 ###   to reduce storage requirements for the terminfo database.
 CF_LINK_FUNCS
@@ -442,29 +632,27 @@ CF_LINK_FUNCS
 with_links=no
 with_symlinks=no
 
 with_links=no
 with_symlinks=no
 
-if test "$ac_cv_func_link" != yes ; then
+# soft links (symbolic links) are useful for some systems where hard links do
+# not work, or to make it simpler to copy terminfo trees around.
+if test "$ac_cv_func_symlink" = yes ; then
     AC_MSG_CHECKING(if tic should use symbolic links)
     AC_MSG_CHECKING(if tic should use symbolic links)
-    if test "$ac_cv_func_symlink" = yes ; then
-       with_symlinks=yes
-    else
-       with_symlinks=no
-    fi
+    AC_ARG_ENABLE(symlinks,
+       [  --enable-symlinks       make tic use symbolic links not hard links],
+       [with_symlinks=$enableval],
+       [with_symlinks=no])
     AC_MSG_RESULT($with_symlinks)
     AC_MSG_RESULT($with_symlinks)
-elif test "$ac_cv_func_symlink" != yes ; then
+fi
+
+# If we have hard links and did not choose to use soft links instead, there is
+# no reason to make this choice optional - use the hard links.
+if test "$with_symlinks" = no ; then
     AC_MSG_CHECKING(if tic should use hard links)
     if test "$ac_cv_func_link" = yes ; then
     AC_MSG_CHECKING(if tic should use hard links)
     if test "$ac_cv_func_link" = yes ; then
-       with_links=yes
+       with_links=yes
     else
     else
-       with_links=no
+       with_links=no
     fi
     AC_MSG_RESULT($with_links)
     fi
     AC_MSG_RESULT($with_links)
-else
-    AC_MSG_CHECKING(if tic should use symbolic links)
-    AC_ARG_ENABLE(symlinks,
-       [  --enable-symlinks       make tic use symbolic links not hard links],
-       [with_symlinks=$enableval],
-       [with_symlinks=no])
-    AC_MSG_RESULT($with_symlinks)
 fi
 
 test "$with_links" = yes && AC_DEFINE(USE_LINKS)
 fi
 
 test "$with_links" = yes && AC_DEFINE(USE_LINKS)
@@ -475,9 +663,23 @@ AC_MSG_CHECKING(if you want broken-linker support code)
 AC_ARG_ENABLE(broken_linker,
        [  --enable-broken_linker  compile with broken-linker support code],
        [with_broken_linker=$enableval],
 AC_ARG_ENABLE(broken_linker,
        [  --enable-broken_linker  compile with broken-linker support code],
        [with_broken_linker=$enableval],
-       [with_broken_linker=$BROKEN_LINKER])
+       [with_broken_linker=${BROKEN_LINKER:-no}])
 AC_MSG_RESULT($with_broken_linker)
 AC_MSG_RESULT($with_broken_linker)
-test "$with_broken_linker" = yes && AC_DEFINE(BROKEN_LINKER)
+
+BROKEN_LINKER=0
+if test "$with_broken_linker" = yes ; then
+       AC_DEFINE(BROKEN_LINKER)
+       BROKEN_LINKER=1
+elif test "$DFT_LWR_MODEL" = shared ; then
+       case $cf_cv_system_name in #(vi
+       cygwin*)
+               AC_DEFINE(BROKEN_LINKER)
+               BROKEN_LINKER=1
+               CF_VERBOSE(cygwin linker is broken anyway)
+               ;;
+       esac
+fi
+AC_SUBST(BROKEN_LINKER)
 
 ###   use option --enable-bsdpad to have tputs process BSD-style prefix padding
 AC_MSG_CHECKING(if tputs should process BSD-style prefix padding)
 
 ###   use option --enable-bsdpad to have tputs process BSD-style prefix padding
 AC_MSG_CHECKING(if tputs should process BSD-style prefix padding)
@@ -488,6 +690,175 @@ AC_ARG_ENABLE(bsdpad,
 AC_MSG_RESULT($with_bsdpad)
 test "$with_bsdpad" = yes && AC_DEFINE(BSD_TPUTS)
 
 AC_MSG_RESULT($with_bsdpad)
 test "$with_bsdpad" = yes && AC_DEFINE(BSD_TPUTS)
 
+###   use option --enable-widec to turn on use of wide-character support
+NCURSES_CH_T=chtype
+NCURSES_LIBUTF8=0
+
+NEED_WCHAR_H=0
+NCURSES_MBSTATE_T=0
+NCURSES_WCHAR_T=0
+NCURSES_WINT_T=0
+
+# Check to define _XOPEN_SOURCE "automatically"
+CF_XOPEN_SOURCE(500)
+
+# Work around breakage on OS X
+CF_SIGWINCH
+
+# Checks for CODESET support.
+AM_LANGINFO_CODESET
+
+# use these variables to work around a defect in gcc's fixincludes.
+NCURSES_OK_WCHAR_T=
+NCURSES_OK_WINT_T=
+
+AC_MSG_CHECKING(if you want wide-character code)
+AC_ARG_ENABLE(widec,
+       [  --enable-widec          compile with wide-char/UTF-8 code],
+       [with_widec=$enableval],
+       [with_widec=no])
+AC_MSG_RESULT($with_widec)
+if test "$with_widec" = yes ; then
+       LIB_SUFFIX="w${LIB_SUFFIX}"
+       AC_DEFINE(USE_WIDEC_SUPPORT)
+
+       case "$CFLAGS $CPPFLAGS" in #(vi
+       *-D_XOPEN_SOURCE=500) #(vi
+               ;;
+       *)
+               CF_PREDEFINE(_XOPEN_SOURCE_EXTENDED)
+               ;;
+       esac
+
+       # with_overwrite=no
+       NCURSES_CH_T=cchar_t
+       AC_CHECK_FUNCS(putwc btowc wctob mbtowc wctomb mblen mbrlen mbrtowc wcsrtombs mbsrtowcs wcstombs mbstowcs)
+       if test "$ac_cv_func_putwc" != yes ; then
+               CF_UTF8_LIB
+               if test "$cf_cv_utf8_lib" != no ; then
+                       NCURSES_LIBUTF8=1
+               fi
+       fi
+       CF_WCHAR_TYPE(mbstate_t, NCURSES_MBSTATE_T)
+       CF_WCHAR_TYPE(wchar_t,   NCURSES_WCHAR_T,   NCURSES_OK_WCHAR_T)
+       CF_WCHAR_TYPE(wint_t,    NCURSES_WINT_T,    NCURSES_OK_WINT_T)
+
+       if test "$NCURSES_MBSTATE_T" != 0; then
+               AC_DEFINE(NEED_MBSTATE_T_DEF)
+       fi
+fi
+AC_SUBST(NCURSES_CH_T)
+AC_SUBST(NCURSES_LIBUTF8)
+
+AC_SUBST(NEED_WCHAR_H)
+AC_SUBST(NCURSES_MBSTATE_T)
+AC_SUBST(NCURSES_WCHAR_T)
+AC_SUBST(NCURSES_WINT_T)
+
+AC_SUBST(NCURSES_OK_WCHAR_T)
+AC_SUBST(NCURSES_OK_WINT_T)
+
+###   use option --disable-lp64 to allow long chtype
+case $cf_cv_abi_version in
+[[345]]*)
+       default_with_lp64=no
+       ;;
+*)
+       default_with_lp64=yes
+       ;;
+esac
+
+AC_MSG_CHECKING(whether to enable _LP64 definition in curses.h)
+AC_ARG_ENABLE(lp64,
+       [  --disable-lp64          allow chtype to be long (ignore _LP64)],
+       [with_lp64=$enableval],
+       [with_lp64=$default_with_lp64])
+AC_MSG_RESULT($with_lp64)
+
+if test "$with_lp64" = yes ; then
+       cf_cv_enable_lp64=1
+else
+       cf_cv_enable_lp64=0
+fi
+AC_SUBST(cf_cv_enable_lp64)
+
+CF_LARGEFILE
+
+###   use option --disable-tparm-varargs to make tparm() conform to X/Open
+AC_MSG_CHECKING(if you want tparm not to use X/Open fixed-parameter list)
+AC_ARG_ENABLE(tparm-varargs,
+       [  --disable-tparm-varargs compile tparm() without varargs interface],
+       [with_tparm_varargs=$enableval],
+       [with_tparm_varargs=yes])
+AC_MSG_RESULT($with_tparm_varargs)
+NCURSES_TPARM_VARARGS=0
+test "$with_tparm_varargs" = yes && NCURSES_TPARM_VARARGS=1
+AC_SUBST(NCURSES_TPARM_VARARGS)
+
+###   use option --disable-tic-depends to make libtic not explicitly depend on ncurses/ncursesw
+if test "$with_ticlib" != no ; then
+AC_MSG_CHECKING(if you want tic library to use explicit dependency on ncurses$LIB_SUFFIX library)
+AC_ARG_ENABLE(tic-depends,
+       [  --disable-tic-depends   link tic library without explicit dependency on ncurses library],
+       [with_tic_depends=$enableval],
+       [with_tic_depends=yes])
+AC_MSG_RESULT($with_tic_depends)
+else
+       with_tic_depends=no
+fi
+
+###   use option --with-bool to override bool's type
+AC_MSG_CHECKING(for type of bool)
+AC_ARG_WITH(bool,
+       [  --with-bool=TYPE        override fallback type of bool variable],
+       [NCURSES_BOOL="$withval"],
+       [NCURSES_BOOL=auto])
+AC_MSG_RESULT($NCURSES_BOOL)
+AC_SUBST(NCURSES_BOOL)
+
+AC_MSG_CHECKING(for alternate terminal capabilities file)
+AC_ARG_WITH(caps,
+       [  --with-caps=alt         compile with alternate Caps file],
+       [TERMINFO_CAPS=Caps.$withval],
+       [TERMINFO_CAPS=Caps])
+test -f "${srcdir}/include/${TERMINFO_CAPS}" || TERMINFO_CAPS=Caps
+AC_MSG_RESULT($TERMINFO_CAPS)
+AC_SUBST(TERMINFO_CAPS)
+
+###   use option --with-chtype to override chtype's type
+AC_MSG_CHECKING(for type of chtype)
+AC_ARG_WITH(chtype,
+       [  --with-chtype=TYPE      override type of chtype],
+       [NCURSES_CHTYPE="$withval"],
+       [NCURSES_CHTYPE=auto])
+AC_MSG_RESULT($NCURSES_CHTYPE)
+
+###   use option --with-ospeed to override ospeed's type
+AC_MSG_CHECKING(for type of ospeed)
+AC_ARG_WITH(ospeed,
+       [  --with-ospeed=TYPE      override type of ospeed variable],
+       [NCURSES_OSPEED="$withval"],
+       [NCURSES_OSPEED=short])
+AC_MSG_RESULT($NCURSES_OSPEED)
+AC_SUBST(NCURSES_OSPEED)
+
+###   use option --with-mmask-t to override mmask_t's type
+AC_MSG_CHECKING(for type of mmask_t)
+AC_ARG_WITH(mmask-t,
+       [  --with-mmask-t=TYPE     override type of mmask_t],
+       [NCURSES_MMASK_T="$withval"],
+       [NCURSES_MMASK_T=auto])
+AC_MSG_RESULT($NCURSES_MMASK_T)
+
+###   use option --with-ccharw-max to override CCHARW_MAX size
+AC_MSG_CHECKING(for size CCHARW_MAX)
+AC_ARG_WITH(ccharw-max,
+       [  --with-ccharw-max=XXX   override size CCHARW_MAX],
+       [NCURSES_CCHARW_MAX="$withval"],
+       [NCURSES_CCHARW_MAX=5])
+AC_MSG_RESULT($NCURSES_CCHARW_MAX)
+AC_SUBST(NCURSES_CCHARW_MAX)
+
 ### Enable compiling-in rcs id's
 AC_MSG_CHECKING(if RCS identifiers should be compiled-in)
 AC_ARG_WITH(rcs-ids,
 ### Enable compiling-in rcs id's
 AC_MSG_CHECKING(if RCS identifiers should be compiled-in)
 AC_ARG_WITH(rcs-ids,
@@ -497,6 +868,9 @@ AC_ARG_WITH(rcs-ids,
 AC_MSG_RESULT($with_rcs_ids)
 test "$with_rcs_ids" = yes && AC_DEFINE(USE_RCS_IDS)
 
 AC_MSG_RESULT($with_rcs_ids)
 test "$with_rcs_ids" = yes && AC_DEFINE(USE_RCS_IDS)
 
+###############################################################################
+CF_MAN_PAGES([ captoinfo clear infocmp infotocap tabs tic toe tput tset ])
+
 ###############################################################################
 CF_HELP_MESSAGE(Extensions:)
 
 ###############################################################################
 CF_HELP_MESSAGE(Extensions:)
 
@@ -508,11 +882,51 @@ AC_ARG_ENABLE(ext-funcs,
        [with_ext_funcs=yes])
 AC_MSG_RESULT($with_ext_funcs)
 if test "$with_ext_funcs" = yes ; then
        [with_ext_funcs=yes])
 AC_MSG_RESULT($with_ext_funcs)
 if test "$with_ext_funcs" = yes ; then
+       NCURSES_EXT_FUNCS=1
+       AC_DEFINE(HAVE_CURSES_VERSION)
        AC_DEFINE(HAVE_HAS_KEY)
        AC_DEFINE(HAVE_RESIZETERM)
        AC_DEFINE(HAVE_HAS_KEY)
        AC_DEFINE(HAVE_RESIZETERM)
+       AC_DEFINE(HAVE_RESIZE_TERM)
+       AC_DEFINE(HAVE_TERM_ENTRY_H)
        AC_DEFINE(HAVE_USE_DEFAULT_COLORS)
        AC_DEFINE(HAVE_WRESIZE)
        AC_DEFINE(NCURSES_EXT_FUNCS)
        AC_DEFINE(HAVE_USE_DEFAULT_COLORS)
        AC_DEFINE(HAVE_WRESIZE)
        AC_DEFINE(NCURSES_EXT_FUNCS)
+       GENERATED_EXT_FUNCS=generated
+else
+       NCURSES_EXT_FUNCS=0
+       GENERATED_EXT_FUNCS=
+fi
+AC_SUBST(NCURSES_EXT_FUNCS)
+AC_SUBST(GENERATED_EXT_FUNCS)
+
+AC_MSG_CHECKING(if you want to build with experimental SCREEN extensions)
+AC_ARG_ENABLE(sp-funcs,
+       [  --enable-sp-funcs       enable experimental SCREEN-extensions],
+       [with_sp_funcs=$enableval],
+       [with_sp_funcs=no])
+AC_MSG_RESULT($with_sp_funcs)
+if test "$with_sp_funcs" = yes ; then
+       NCURSES_SP_FUNCS=1
+       AC_DEFINE(NCURSES_SP_FUNCS)
+       GENERATED_SP_FUNCS=generated
+else
+       NCURSES_SP_FUNCS=0
+       GENERATED_SP_FUNCS=
+fi
+AC_SUBST(NCURSES_SP_FUNCS)
+AC_SUBST(GENERATED_SP_FUNCS)
+
+AC_MSG_CHECKING(if you want to build with experimental terminal-driver)
+AC_ARG_ENABLE(term-driver,
+       [  --enable-term-driver    enable experimental terminal-driver],
+       [with_term_driver=$enableval],
+       [with_term_driver=no])
+AC_MSG_RESULT($with_term_driver)
+if test "$with_term_driver" = yes ; then
+       AC_DEFINE(USE_TERM_DRIVER)
+       if test "$with_sp_funcs" != yes ; then
+               AC_MSG_ERROR(The term-driver option relies upon sp-funcs)
+       fi
 fi
 
 ###   use option --enable-const to turn on use of const beyond that in XSI.
 fi
 
 ###   use option --enable-const to turn on use of const beyond that in XSI.
@@ -522,30 +936,69 @@ AC_ARG_ENABLE(const,
        [with_ext_const=$enableval],
        [with_ext_const=no])
 AC_MSG_RESULT($with_ext_const)
        [with_ext_const=$enableval],
        [with_ext_const=no])
 AC_MSG_RESULT($with_ext_const)
-NCURSES_CONST=""
+NCURSES_CONST='/*nothing*/'
 if test "$with_ext_const" = yes ; then
 if test "$with_ext_const" = yes ; then
-       AC_DEFINE(NCURSES_CONST,const)
        NCURSES_CONST=const
 fi
 AC_SUBST(NCURSES_CONST)
 
        NCURSES_CONST=const
 fi
 AC_SUBST(NCURSES_CONST)
 
-###   use option --enable-hashmap to turn on use of hashmap scrolling logic
-AC_MSG_CHECKING(if you want hashmap scrolling-optimization code)
-AC_ARG_ENABLE(hashmap,
-       [  --enable-hashmap        compile with hashmap scrolling-optimization code],
-       [with_hashmap=$enableval],
-       [with_hashmap=yes])
-AC_MSG_RESULT($with_hashmap)
-test "$with_hashmap" = yes && AC_DEFINE(USE_HASHMAP)
+###   use option --enable-ext-colors to turn on use of colors beyond 16.
+AC_MSG_CHECKING(if you want to use extended colors)
+AC_ARG_ENABLE(ext-colors,
+       [  --enable-ext-colors     compile for 256-color support],
+       [with_ext_colors=$enableval],
+       [with_ext_colors=no])
+AC_MSG_RESULT($with_ext_colors)
+NCURSES_EXT_COLORS=0
+if test "$with_ext_colors" = yes ; then
+       if test "$with_widec" != yes ; then
+               AC_MSG_ERROR(This option applies only to wide-character library)
+       else
+               # cannot be ABI 5 since it changes sizeof(cchar_t)
+               CF_NCURSES_ABI_6
+       fi
+       NCURSES_EXT_COLORS=1
+       AC_DEFINE(NCURSES_EXT_COLORS)
+fi
+AC_SUBST(NCURSES_EXT_COLORS)
+
+###   use option --enable-ext-mouse to modify coding to support 5-button mice
+AC_MSG_CHECKING(if you want to use extended mouse encoding)
+AC_ARG_ENABLE(ext-mouse,
+       [  --enable-ext-mouse      compile for extended mouse-encoding],
+       [with_ext_mouse=$enableval],
+       [with_ext_mouse=no])
+AC_MSG_RESULT($with_ext_mouse)
+NCURSES_MOUSE_VERSION=1
+if test "$with_ext_mouse" = yes ; then
+       NCURSES_MOUSE_VERSION=2
+       CF_NCURSES_ABI_6
+fi
+AC_SUBST(NCURSES_MOUSE_VERSION)
 
 AC_MSG_CHECKING(if you want \$NCURSES_NO_PADDING code)
 AC_ARG_ENABLE(no-padding,
 
 AC_MSG_CHECKING(if you want \$NCURSES_NO_PADDING code)
 AC_ARG_ENABLE(no-padding,
-       [  --enable-no-padding     compile with \$NCURSES_NO_PADDING code],
+       [  --enable-no-padding     compile with $NCURSES_NO_PADDING code],
        [with_no_padding=$enableval],
        [with_no_padding=$with_ext_funcs])
 AC_MSG_RESULT($with_no_padding)
 test "$with_no_padding" = yes && AC_DEFINE(NCURSES_NO_PADDING)
 
        [with_no_padding=$enableval],
        [with_no_padding=$with_ext_funcs])
 AC_MSG_RESULT($with_no_padding)
 test "$with_no_padding" = yes && AC_DEFINE(NCURSES_NO_PADDING)
 
+AC_CHECK_SIZEOF([signed char], 0)
+if test "$ac_cv_sizeof_signed_char" = 1 ; then
+       NCURSES_SBOOL="signed char"
+else
+       NCURSES_SBOOL="char"
+fi
+AC_MSG_CHECKING(if you want to use signed Boolean array in term.h)
+AC_ARG_ENABLE(signed-char,
+       [  --enable-signed-char    compile using signed Boolean's in term.h],
+       [with_signed_char=$enableval],
+       [with_signed_char=no])
+AC_MSG_RESULT($with_signed_char)
+test "$with_signed_char" != yes && NCURSES_SBOOL="char"
+AC_SUBST(NCURSES_SBOOL)
+
 ###   use option --enable-sigwinch to turn on use of SIGWINCH logic
 AC_MSG_CHECKING(if you want SIGWINCH handler)
 AC_ARG_ENABLE(sigwinch,
 ###   use option --enable-sigwinch to turn on use of SIGWINCH logic
 AC_MSG_CHECKING(if you want SIGWINCH handler)
 AC_ARG_ENABLE(sigwinch,
@@ -567,31 +1020,164 @@ test "$with_tcap_names" = yes && NCURSES_XNAMES=1
 AC_SUBST(NCURSES_XNAMES)
 
 ###############################################################################
 AC_SUBST(NCURSES_XNAMES)
 
 ###############################################################################
-CF_HELP_MESSAGE(Experimental Code:)
-AC_MSG_CHECKING(if you want all experimental code)
+# These options are relatively safe to experiment with.
+CF_HELP_MESSAGE(Development Code:)
+AC_MSG_CHECKING(if you want all development code)
 AC_ARG_WITH(develop,
 AC_ARG_WITH(develop,
-       [  --with-develop          enable all experimental options for testing],
+       [  --without-develop       disable development options],
        [with_develop=$withval],
        [with_develop=no])
 AC_MSG_RESULT($with_develop)
 
        [with_develop=$withval],
        [with_develop=no])
 AC_MSG_RESULT($with_develop)
 
-###   use option --enable-colorfgbg to turn on use of $COLORFGBG environment
-AC_MSG_CHECKING(if you want experimental colorfgbg code)
+###   use option --enable-hard-tabs to turn on use of hard-tabs optimize
+AC_MSG_CHECKING(if you want hard-tabs code)
 AC_ARG_ENABLE(hard-tabs,
 AC_ARG_ENABLE(hard-tabs,
-       [  --enable-colorfgbg      compile with experimental \$COLORFGBG code],
+       [  --enable-hard-tabs      compile with hard-tabs code],,
+       [enable_hard_tabs=$with_develop])
+AC_MSG_RESULT($enable_hard_tabs)
+test "$enable_hard_tabs" = yes && AC_DEFINE(USE_HARD_TABS)
+
+###   use option --enable-xmc-glitch to turn on use of magic-cookie optimize
+AC_MSG_CHECKING(if you want limited support for xmc)
+AC_ARG_ENABLE(xmc-glitch,
+       [  --enable-xmc-glitch     compile with support for xmc (magic-cookie)],,
+       [enable_xmc_glitch=$with_develop])
+AC_MSG_RESULT($enable_xmc_glitch)
+test "$enable_xmc_glitch" = yes && AC_DEFINE(USE_XMC_SUPPORT)
+
+###############################################################################
+# These are just experimental, probably should not be in a package:
+CF_HELP_MESSAGE(Experimental Code:)
+
+AC_MSG_CHECKING(if you do not want to assume colors are white-on-black)
+AC_ARG_ENABLE(assumed-color,
+       [  --disable-assumed-color do not assume anything about default-colors],
+       [with_assumed_color=$enableval],
+       [with_assumed_color=yes])
+AC_MSG_RESULT($with_assumed_color)
+test "$with_assumed_color" = yes && AC_DEFINE(USE_ASSUMED_COLOR)
+
+###   use option --enable-hashmap to turn on use of hashmap scrolling logic
+AC_MSG_CHECKING(if you want hashmap scrolling-optimization code)
+AC_ARG_ENABLE(hashmap,
+       [  --disable-hashmap       compile without hashmap scrolling-optimization],
+       [with_hashmap=$enableval],
+       [with_hashmap=yes])
+AC_MSG_RESULT($with_hashmap)
+test "$with_hashmap" = yes && AC_DEFINE(USE_HASHMAP)
+
+###   use option --enable-colorfgbg to turn on use of $COLORFGBG environment
+AC_MSG_CHECKING(if you want colorfgbg code)
+AC_ARG_ENABLE(colorfgbg,
+       [  --enable-colorfgbg      compile-in experimental $COLORFGBG code],
        [with_colorfgbg=$enableval],
        [with_colorfgbg=$enableval],
-       [with_colorfgbg=$with_develop])
+       [with_colorfgbg=no])
 AC_MSG_RESULT($with_colorfgbg)
 test "$with_colorfgbg" = yes && AC_DEFINE(USE_COLORFGBG)
 
 AC_MSG_RESULT($with_colorfgbg)
 test "$with_colorfgbg" = yes && AC_DEFINE(USE_COLORFGBG)
 
-###   use option --enable-hard-tabs to turn on use of hard-tabs optimize
-AC_MSG_CHECKING(if you want experimental hard-tabs code)
-AC_ARG_ENABLE(hard-tabs,
-       [  --enable-hard-tabs      compile with experimental hard-tabs code],
-       [with_hardtabs=$enableval],
-       [with_hardtabs=$with_develop])
-AC_MSG_RESULT($with_hardtabs)
-test "$with_hardtabs" = yes && AC_DEFINE(USE_HARD_TABS)
+###   use option --enable-interop to turn on use of bindings used for interop
+AC_MSG_CHECKING(if you want interop bindings)
+AC_ARG_ENABLE(interop,
+       [  --enable-interop        compile-in experimental interop bindings],
+       [with_exp_interop=$enableval],
+       [with_exp_interop=no])
+AC_MSG_RESULT($with_exp_interop)
+
+NCURSES_INTEROP_FUNCS=0
+test "$with_exp_interop" = yes && NCURSES_INTEROP_FUNCS=1
+AC_SUBST(NCURSES_INTEROP_FUNCS)
+
+# This is still experimental (20080329), but should ultimately be moved to
+# the script-block --with-normal, etc.
+CF_WITH_PTHREAD
+
+if test "x$with_pthread" != xno; then
+       AC_CHECK_FUNC(pthread_kill,[
+               AC_MSG_CHECKING(if you want to allow EINTR in wgetch with pthreads)
+               AC_ARG_ENABLE(pthreads-eintr,
+                       [  --enable-pthreads-eintr enable EINTR in wgetch with pthreads],
+                       [use_pthreads_eintr=$enableval],
+                       [use_pthreads_eintr=no])
+               AC_MSG_RESULT($use_pthreads_eintr)
+               if test $use_pthreads_eintr = yes ; then
+                       AC_DEFINE(USE_PTHREADS_EINTR)
+               fi])
+
+       AC_MSG_CHECKING(if you want to use weak-symbols for pthreads)
+       AC_ARG_ENABLE(weak-symbols,
+               [  --enable-weak-symbols   enable weak-symbols for pthreads],
+               [use_weak_symbols=$enableval],
+               [use_weak_symbols=no])
+       AC_MSG_RESULT($use_weak_symbols)
+       if test "$use_weak_symbols" = yes ; then
+               CF_WEAK_SYMBOLS
+       else
+               cf_cv_weak_symbols=no
+       fi
+
+       if test $cf_cv_weak_symbols = yes ; then
+               AC_DEFINE(USE_WEAK_SYMBOLS)
+       fi
+fi
+
+PTHREAD=
+if test "$with_pthread" = "yes" ; then
+    AC_DEFINE(USE_PTHREADS)
+    enable_reentrant=yes
+    if test $cf_cv_weak_symbols = yes ; then
+        PTHREAD=-lpthread
+    fi
+fi
+AC_SUBST(PTHREAD)
+
+# Reentrant code has to be opaque; there's little advantage to making ncurses
+# opaque outside of that, so there is no --enable-opaque option.  We can use
+# this option without --with-pthreads, but this will be always set for
+# pthreads.
+AC_MSG_CHECKING(if you want experimental reentrant code)
+AC_ARG_ENABLE(reentrant,
+       [  --enable-reentrant      compile with experimental reentrant code],
+       [with_reentrant=$enableval],
+       [with_reentrant=no])
+AC_MSG_RESULT($with_reentrant)
+if test "$with_reentrant" = yes ; then
+       cf_cv_enable_reentrant=1
+       cf_cv_enable_opaque="NCURSES_INTERNALS"
+       NCURSES_OPAQUE=1
+       NCURSES_SIZE_T=int
+       if test $cf_cv_weak_symbols = yes ; then
+               CF_REMOVE_LIB(LIBS,$LIBS,pthread)
+               CF_ADD_LIB(pthread,TEST_LIBS)
+               CF_ADD_LIB(pthread,TEST_LIBS2)
+       else
+               LIB_SUFFIX="t${LIB_SUFFIX}"
+       fi
+       AC_DEFINE(USE_REENTRANT)
+       CF_NCURSES_ABI_6
+else
+       cf_cv_enable_reentrant=0
+       cf_cv_enable_opaque="NCURSES_OPAQUE"
+       NCURSES_OPAQUE=0
+       NCURSES_SIZE_T=short
+fi
+AC_SUBST(cf_cv_enable_reentrant)
+AC_SUBST(cf_cv_enable_opaque)
+AC_SUBST(NCURSES_OPAQUE)
+AC_SUBST(NCURSES_SIZE_T)
+
+### Allow using a different wrap-prefix
+if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then
+       AC_MSG_CHECKING(for prefix used to wrap public variables)
+       AC_ARG_WITH(wrap-prefix,
+               [  --with-wrap-prefix=XXX  override prefix used for public variables],
+               [NCURSES_WRAP_PREFIX=$withval],
+               [NCURSES_WRAP_PREFIX=_nc_])
+       AC_MSG_RESULT($NCURSES_WRAP_PREFIX)
+else
+       NCURSES_WRAP_PREFIX=_nc_
+fi
+AC_SUBST(NCURSES_WRAP_PREFIX)
+AC_DEFINE_UNQUOTED(NCURSES_WRAP_PREFIX,"$NCURSES_WRAP_PREFIX")
 
 AC_MSG_CHECKING(if you want experimental safe-sprintf code)
 AC_ARG_ENABLE(safe-sprintf,
 
 AC_MSG_CHECKING(if you want experimental safe-sprintf code)
 AC_ARG_ENABLE(safe-sprintf,
@@ -613,31 +1199,19 @@ AC_MSG_RESULT($with_scroll_hints)
 test "$with_scroll_hints" = yes && AC_DEFINE(USE_SCROLL_HINTS)
 fi
 
 test "$with_scroll_hints" = yes && AC_DEFINE(USE_SCROLL_HINTS)
 fi
 
-###   use option --enable-widec to turn on use of wide-character support
-AC_MSG_CHECKING(if you want experimental wide-character code)
-AC_ARG_ENABLE(widec,
-       [  --enable-widec          compile with experimental wide-char code],
-       [with_widec=$enableval],
-       [with_widec=no])
-AC_MSG_RESULT($with_widec)
-if test "$with_widec" = yes ; then
-       LIB_SUFFIX="w${LIB_SUFFIX}"
-       AC_DEFINE(USE_WIDEC_SUPPORT)
-fi
-
-###   use option --enable-xmc-glitch to turn on use of magic-cookie optimize
-AC_MSG_CHECKING(if you want experimental xmc code)
-AC_ARG_ENABLE(xmc-glitch,
-       [  --enable-xmc-glitch     compile with experimental xmc code],
-       [with_xmc_glitch=$enableval],
-       [with_xmc_glitch=$with_develop])
-AC_MSG_RESULT($with_xmc_glitch)
-test "$with_xmc_glitch" = yes && AC_DEFINE(USE_XMC_SUPPORT)
+AC_MSG_CHECKING(if you want experimental wgetch-events code)
+AC_ARG_ENABLE(wgetch-events,
+       [  --enable-wgetch-events  compile with experimental wgetch-events code],
+       [with_wgetch_events=$enableval],
+       [with_wgetch_events=no])
+AC_MSG_RESULT($with_wgetch_events)
+test "$with_wgetch_events" = yes && AC_DEFINE(NCURSES_WGETCH_EVENTS)
 
 ###############################################################################
 CF_HELP_MESSAGE(Testing/development Options:)
 
 ###    use option --disable-echo to suppress full display compiling commands
 
 ###############################################################################
 CF_HELP_MESSAGE(Testing/development Options:)
 
 ###    use option --disable-echo to suppress full display compiling commands
+AC_MSG_CHECKING(if you want to display full commands during build)
 AC_ARG_ENABLE(echo,
        [  --enable-echo           build: display "compiling" commands (default)],
        [with_echo=$enableval],
 AC_ARG_ENABLE(echo,
        [  --enable-echo           build: display "compiling" commands (default)],
        [with_echo=$enableval],
@@ -646,58 +1220,100 @@ if test "$with_echo" = yes; then
        ECHO_LINK=
 else
        ECHO_LINK='@ echo linking $@ ... ;'
        ECHO_LINK=
 else
        ECHO_LINK='@ echo linking $@ ... ;'
+       test -n "$LIBTOOL" && LIBTOOL="$LIBTOOL --silent"
+       test -n "$LIBTOOL_CXX" && LIBTOOL_CXX="$LIBTOOL_CXX --silent"
 fi
 fi
+AC_MSG_RESULT($with_echo)
 AC_SUBST(ECHO_LINK)
 
 ###    use option --enable-warnings to turn on all gcc warnings
 AC_SUBST(ECHO_LINK)
 
 ###    use option --enable-warnings to turn on all gcc warnings
+AC_MSG_CHECKING(if you want to see compiler warnings)
 AC_ARG_ENABLE(warnings,
        [  --enable-warnings       build: turn on GCC compiler warnings],
        [with_warnings=$enableval])
 AC_ARG_ENABLE(warnings,
        [  --enable-warnings       build: turn on GCC compiler warnings],
        [with_warnings=$enableval])
-if test -n "$with_warnings"; then
-       ADAFLAGS="$ADAFLAGS -gnatg"
-       CF_GCC_WARNINGS
+AC_MSG_RESULT($with_warnings)
+
+if test "x$with_warnings" = "xyes"; then
+       CF_ADD_ADAFLAGS(-gnatg)
+       CF_GCC_WARNINGS(Wdeclaration-after-statement Wextra Wno-unknown-pragmas Wswitch-enum)
+       if test "$cf_with_cxx" = yes ; then
+               CF_GXX_WARNINGS(Wno-unused)
+       fi
 fi
 CF_GCC_ATTRIBUTES
 
 ###    use option --enable-assertions to turn on generation of assertion code
 fi
 CF_GCC_ATTRIBUTES
 
 ###    use option --enable-assertions to turn on generation of assertion code
+AC_MSG_CHECKING(if you want to enable runtime assertions)
 AC_ARG_ENABLE(assertions,
        [  --enable-assertions     test: turn on generation of assertion code],
        [with_assertions=$enableval],
        [with_assertions=no])
 AC_ARG_ENABLE(assertions,
        [  --enable-assertions     test: turn on generation of assertion code],
        [with_assertions=$enableval],
        [with_assertions=no])
+AC_MSG_RESULT($with_assertions)
 if test -n "$GCC"
 then
 if test -n "$GCC"
 then
-       if test $with_assertions = no
+       if test "$with_assertions" = no
        then
                AC_DEFINE(NDEBUG)
                CPPFLAGS="$CPPFLAGS -DNDEBUG"
        else
        then
                AC_DEFINE(NDEBUG)
                CPPFLAGS="$CPPFLAGS -DNDEBUG"
        else
-               ADAFLAGS="$ADAFLAGS -gnata"
+               CF_ADD_ADAFLAGS(-gnata)
        fi
 fi
 
 ###    use option --disable-leaks to suppress "permanent" leaks, for testing
        fi
 fi
 
 ###    use option --disable-leaks to suppress "permanent" leaks, for testing
-AC_ARG_ENABLE(leaks,
-       [  --disable-leaks         test: suppress permanent memory-leaks],
-       [test $enableval = no && AC_DEFINE(NO_LEAKS)])
+CF_DISABLE_LEAKS
 AC_DEFINE(HAVE_NC_ALLOC_H)
 
 ###    use option --enable-expanded to generate certain macros as functions
 AC_ARG_ENABLE(expanded,
        [  --enable-expanded       test: generate functions for certain macros],
 AC_DEFINE(HAVE_NC_ALLOC_H)
 
 ###    use option --enable-expanded to generate certain macros as functions
 AC_ARG_ENABLE(expanded,
        [  --enable-expanded       test: generate functions for certain macros],
-       [test $enableval = yes && AC_DEFINE(NCURSES_EXPANDED)])
+       [test "$enableval" = yes && AC_DEFINE(NCURSES_EXPANDED)])
 
 ###    use option --disable-macros to suppress macros in favor of functions
 AC_ARG_ENABLE(macros,
        [  --disable-macros        test: use functions rather than macros],
 
 ###    use option --disable-macros to suppress macros in favor of functions
 AC_ARG_ENABLE(macros,
        [  --disable-macros        test: use functions rather than macros],
-       [test $enableval = no && AC_DEFINE(NCURSES_NOMACROS)])
+       [test "$enableval" = no && AC_DEFINE(NCURSES_NOMACROS)])
+
+# Normally we only add trace() to the debug-library.  Allow this to be
+# extended to all models of the ncurses library:
+cf_all_traces=no
+case "$CFLAGS $CPPFLAGS" in
+*-DTRACE*)
+       cf_all_traces=yes
+       ;;
+esac
+
+AC_MSG_CHECKING(whether to add trace feature to all models)
+AC_ARG_WITH(trace,
+[  --with-trace            test: add trace() function to all models of ncurses],
+[cf_with_trace=$withval],
+[cf_with_trace=$cf_all_traces])
+AC_MSG_RESULT($cf_with_trace)
+
+if test "$cf_with_trace" = yes ; then
+       LIB_TRACING=all
+       ADA_TRACE=TRUE
+       CF_ADD_CFLAGS(-DTRACE)
+else
+       LIB_TRACING=DEBUG
+       ADA_TRACE=FALSE
+fi
+
+AC_SUBST(ADA_TRACE)
 
 ###    Checks for libraries.
 
 ###    Checks for libraries.
+case $cf_cv_system_name in #(vi
+*mingw32*) #(vi
+       ;;
+*)
 AC_CHECK_FUNC(gettimeofday,
        AC_DEFINE(HAVE_GETTIMEOFDAY),[
 
 AC_CHECK_LIB(bsd, gettimeofday,
        AC_DEFINE(HAVE_GETTIMEOFDAY)
 AC_CHECK_FUNC(gettimeofday,
        AC_DEFINE(HAVE_GETTIMEOFDAY),[
 
 AC_CHECK_LIB(bsd, gettimeofday,
        AC_DEFINE(HAVE_GETTIMEOFDAY)
-       LIBS="$LIBS -lbsd")])dnl CLIX: bzero, select, gettimeofday
+       CF_ADD_LIB(bsd))])dnl CLIX: bzero, select, gettimeofday
+       ;;
+esac
 
 CF_MATH_LIB(MATH_LIB,sin(x))
 AC_SUBST(MATH_LIB)
 
 CF_MATH_LIB(MATH_LIB,sin(x))
 AC_SUBST(MATH_LIB)
@@ -705,13 +1321,13 @@ AC_SUBST(MATH_LIB)
 ###    Checks for header files.
 AC_STDC_HEADERS
 AC_HEADER_DIRENT
 ###    Checks for header files.
 AC_STDC_HEADERS
 AC_HEADER_DIRENT
+AC_HEADER_TIME
 CF_REGEX
 
 dnl These are some other potentially nonportable headers.
 AC_CHECK_HEADERS( \
 fcntl.h \
 getopt.h \
 CF_REGEX
 
 dnl These are some other potentially nonportable headers.
 AC_CHECK_HEADERS( \
 fcntl.h \
 getopt.h \
-libc.h \
 limits.h \
 locale.h \
 poll.h \
 limits.h \
 locale.h \
 poll.h \
@@ -722,18 +1338,16 @@ sys/poll.h \
 sys/select.h \
 sys/time.h \
 sys/times.h \
 sys/select.h \
 sys/time.h \
 sys/times.h \
-termio.h \
-termios.h \
 ttyent.h \
 unistd.h \
 ttyent.h \
 unistd.h \
+wctype.h \
 )
 
 # check for ISC (this may also define _POSIX_SOURCE)
 # Note: even non-Posix ISC needs <sys/bsdtypes.h> to declare fd_set
 if test "$ISC" = yes ; then
        AC_CHECK_LIB(cposix,main)
 )
 
 # check for ISC (this may also define _POSIX_SOURCE)
 # Note: even non-Posix ISC needs <sys/bsdtypes.h> to declare fd_set
 if test "$ISC" = yes ; then
        AC_CHECK_LIB(cposix,main)
-       AC_CHECK_LIB(inet,bzero,LIBS="$LIBS -linet")dnl also 'select()'
-       AC_CHECK_HEADERS( sys/termio.h )
+       AC_CHECK_LIB(inet,bzero,CF_ADD_LIB(inet))dnl also 'select()'
 fi
 
 CF_SYS_TIME_SELECT
 fi
 
 CF_SYS_TIME_SELECT
@@ -741,24 +1355,42 @@ CF_SYS_TIME_SELECT
 ###    checks for compiler characteristics
 AC_LANG_C
 AC_C_CONST
 ###    checks for compiler characteristics
 AC_LANG_C
 AC_C_CONST
-AC_C_INLINE
-test $ac_cv_c_inline != no && AC_DEFINE(CC_HAS_INLINE_FUNCS)
+CF_C_INLINE(NCURSES_INLINE,1200)
+CF_SIG_ATOMIC_T
 
 
-CF_TYPEOF_CHTYPE
-CF_WIDEC_SHIFT
+if test $NCURSES_CHTYPE = auto ; then
+       CF_TYPEOF_CHTYPE
+else
+       cf_cv_typeof_chtype=$NCURSES_CHTYPE
+fi
+test "$cf_cv_typeof_chtype" = unsigned && cf_cv_typeof_chtype=""
+AC_SUBST(cf_cv_typeof_chtype)
+
+CF_UNSIGNED_LITERALS
+cf_cv_1UL="1"
+test ".$cf_cv_unsigned_literals" = .yes && cf_cv_1UL="${cf_cv_1UL}U"
+test ".$cf_cv_typeof_chtype"    = .long && cf_cv_1UL="${cf_cv_1UL}L"
+AC_SUBST(cf_cv_1UL)
+
+if test $NCURSES_MMASK_T = auto ; then
+       cf_cv_typeof_mmask_t=long
+else
+       cf_cv_typeof_mmask_t=$NCURSES_MMASK_T
+fi
+test "$cf_cv_typeof_mmask_t" = unsigned && cf_cv_typeof_mmask_t=""
+AC_SUBST(cf_cv_typeof_mmask_t)
 
 ###    Checks for external-data
 CF_ERRNO
 CF_LINK_DATAONLY
 
 ###    Checks for external-data
 CF_ERRNO
 CF_LINK_DATAONLY
-CF_SPEED_TYPE
 
 ###    Checks for library functions.
 AC_CHECK_FUNCS( \
 getcwd \
 
 ###    Checks for library functions.
 AC_CHECK_FUNCS( \
 getcwd \
+getegid \
+geteuid \
 getttynam \
 getttynam \
-memccpy \
-mkstemp \
-nanosleep \
+issetugid \
 poll \
 remove \
 select \
 poll \
 remove \
 select \
@@ -769,12 +1401,9 @@ sigaction \
 sigvec \
 strdup \
 strstr \
 sigvec \
 strdup \
 strstr \
-tcgetattr \
 tcgetpgrp \
 times \
 tcgetpgrp \
 times \
-vfscanf \
 vsnprintf \
 vsnprintf \
-vsscanf \
 )
 if test "$with_getcap" = "yes" ; then
        CF_CGETENT
 )
 if test "$with_getcap" = "yes" ; then
        CF_CGETENT
@@ -782,7 +1411,13 @@ fi
 
 CF_ISASCII
 CF_STRUCT_SIGACTION
 
 CF_ISASCII
 CF_STRUCT_SIGACTION
-CF_STRUCT_TERMIOS
+CF_FUNC_NANOSLEEP
+CF_FUNC_TERMIOS
+CF_FUNC_VSSCANF
+CF_MKSTEMP
+
+# setup for prototype of fallback for vsscanf()
+CF_SUBST_IF(["$cf_cv_func_vsscanf" = vsscanf], HAVE_VSSCANF, 1, 0)
 
 dnl FIXME (may need this) AC_SYS_RESTARTABLE_SYSCALLS
 if test "$cross_compiling" = yes ; then
 
 dnl FIXME (may need this) AC_SYS_RESTARTABLE_SYSCALLS
 if test "$cross_compiling" = yes ; then
@@ -795,40 +1430,97 @@ CF_TYPE_SIGACTION
 CF_SIZECHANGE
 CF_FUNC_MEMMOVE
 CF_FUNC_POLL
 CF_SIZECHANGE
 CF_FUNC_MEMMOVE
 CF_FUNC_POLL
+CF_VA_COPY
+AC_FUNC_VFORK
+
+# special check for test/ditto.c
+CF_FUNC_OPENPTY
+if test "$cf_cv_func_openpty" != no ; then
+    AC_DEFINE_UNQUOTED(USE_OPENPTY_HEADER,<$cf_cv_func_openpty>)
+    AC_DEFINE(USE_XTERM_PTY)
+    if test "$cf_cv_lib_util" = yes ; then
+        CF_ADD_LIB(util,TEST_LIBS)
+    fi
+fi
+AC_SUBST(TEST_LIBS)
+AC_SUBST(TEST_LIBS2)
+
+if test "$with_hashed_db" != no ; then
+       AC_DEFINE(USE_HASHED_DB)
+       CF_HASHED_DB($with_hashed_db)
+fi
 
 dnl We'll do our own -g libraries, unless the user's overridden via $CFLAGS
 
 dnl We'll do our own -g libraries, unless the user's overridden via $CFLAGS
-if test -z "$cf_user_CFLAGS" ; then
+if test -z "$cf_user_CFLAGS" && test "$with_no_leaks" = no ; then
        CF_STRIP_G_OPT(CFLAGS)
        CF_STRIP_G_OPT(CXXFLAGS)
 fi
 
        CF_STRIP_G_OPT(CFLAGS)
        CF_STRIP_G_OPT(CXXFLAGS)
 fi
 
-dnl Check for C++ compiler characteristics (and ensure that it's there!)
+# Just in case, check if the C compiler has a bool type.
 CF_BOOL_DECL(cf_cv_cc_bool_type)
 CF_BOOL_DECL(cf_cv_cc_bool_type)
+
+# Check for C++ compiler characteristics (and ensure that it's there!)
 if test -n "$CXX" ; then
        AC_LANG_CPLUSPLUS
        CF_STDCPP_LIBRARY
 if test -n "$CXX" ; then
        AC_LANG_CPLUSPLUS
        CF_STDCPP_LIBRARY
-       case "`${CXX-g++} --version`" in
+       CF_PROG_CC_C_O(CXX)
+
+       case $GXX_VERSION in
        1*|2.[0-6]*)
        1*|2.[0-6]*)
-           cf_cxx_library=yes
-           ;;
-       2.7*)
-           CF_GPP_LIBRARY
-           ;;
+               cf_cxx_library=yes
+               ;;
+       *-2.7*|2.7*)
+               CF_GPP_LIBRARY
+               ;;
        *)
        *)
-           cf_cxx_library=no
-           ;;
+               cf_cxx_library=no
+               ;;
        esac
        esac
-       AC_CHECK_HEADERS(typeinfo)
+
+       AC_CHECK_HEADERS(iostream typeinfo)
+
+    if test x"$ac_cv_header_iostream" = xyes ; then
+        AC_MSG_CHECKING(if iostream uses std-namespace)
+        AC_TRY_COMPILE([
+#include <iostream>
+using std::endl;
+using std::cerr;],[
+cerr << "testing" << endl;
+],[cf_iostream_namespace=yes],[cf_iostream_namespace=no])
+        AC_MSG_RESULT($cf_iostream_namespace)
+        if test "$cf_iostream_namespace" = yes ; then
+            AC_DEFINE(IOSTREAM_NAMESPACE)
+        fi
+    fi
+
        CF_BOOL_DECL
        CF_BOOL_SIZE
        CF_ETIP_DEFINES
        CF_CPP_PARAM_INIT
        CF_BOOL_DECL
        CF_BOOL_SIZE
        CF_ETIP_DEFINES
        CF_CPP_PARAM_INIT
+       CF_CPP_STATIC_CAST
+
+       CXX_AR='$(AR)'
+       CXX_ARFLAGS='$(ARFLAGS)'
        case $cf_cv_system_name in #(vi
        case $cf_cv_system_name in #(vi
-       sco3.2v5*)
+       irix*) #(vi
+           if test "$GXX" != yes ; then
+               CXX_AR='$(CXX)'
+               CXX_ARFLAGS='-ar -o'
+           fi
+           ;;
+       sco3.2v5*) #(vi
            CXXLDFLAGS="-u main"
            ;;
            CXXLDFLAGS="-u main"
            ;;
+       solaris2*)
+           if test "$GXX" != yes ; then
+               CXX_AR='$(CXX)'
+               CXX_ARFLAGS='-xar -o'
+           fi
+           ;;
        esac
        AC_SUBST(CXXLDFLAGS)
        esac
        AC_SUBST(CXXLDFLAGS)
+       AC_SUBST(CXX_AR)
+       AC_SUBST(CXX_ARFLAGS)
 else
        cf_cxx_library=no
        cf_cv_builtin_bool=1
 else
        cf_cxx_library=no
        cf_cv_builtin_bool=1
@@ -842,120 +1534,134 @@ else
        # Caveat: since the storage of the bool type is not standardized, it
        # may change.
 
        # Caveat: since the storage of the bool type is not standardized, it
        # may change.
 
-       AC_MSG_CHECKING(for fallback type of bool)
-       case "$host_cpu" in #(vi
-       i?86)   cf_cv_type_of_bool=char ;; #(vi
-       *)      cf_cv_type_of_bool=int  ;;
-       esac
-       AC_MSG_RESULT($cf_cv_type_of_bool)
+       if test "$NCURSES_BOOL" != auto ; then
+               cf_cv_type_of_bool=$NCURSES_BOOL
+               cf_cv_header_stdbool_h=0
+       else
+               if test "$cf_cv_header_stdbool_h" = 1 ; then
+                       CF_BOOL_SIZE
+               else
+                       AC_MSG_CHECKING(for fallback type of bool)
+                       case "$host_cpu" in #(vi
+                       i?86)   cf_cv_type_of_bool=char ;; #(vi
+                       *)      cf_cv_type_of_bool=int  ;;
+                       esac
+                       AC_MSG_RESULT($cf_cv_type_of_bool)
+               fi
+       fi
 fi
 AC_SUBST(CXXLIBS)
 
 fi
 AC_SUBST(CXXLIBS)
 
+# If the C compiler did not declare bool, and we did not determine that the C++
+# compiler does not declare bool, turn on an ifdef in curses.h that makes the
+# ncurses library use the same type as C++ bool.  Note that this allows one to
+# specify the type of bool in a configure-script option and postpone
+# integration with the C++ compiler provided that the types are compatible.
+USE_CXX_BOOL=1
+if test $cf_cv_cc_bool_type = 1
+then
+       # oops: C has a bool.  Unlikely, but C++ could differ.
+       USE_CXX_BOOL=0
+elif test $cf_cv_builtin_bool = 0
+then
+       # C++ has no bool
+       USE_CXX_BOOL=0
+else
+       # this is the normal case
+       USE_CXX_BOOL='defined(__cplusplus)'
+fi
+AC_SUBST(USE_CXX_BOOL)
+
 CF_HELP_MESSAGE(Ada95 Binding Options:)
 
 CF_HELP_MESSAGE(Ada95 Binding Options:)
 
+dnl If the Ada95 source-tree is present, add that to the build unless it will
+dnl not work, or was not requested.
+if test -f "${srcdir}/Ada95/Makefile.in" ; then
+
+dnl libtool does not know anything about GNAT, though a change made in 1998
+dnl provided for it "someday".  Disable the ada subtree if we are using
+dnl libtool -TD 20070714
+       if test "$cf_with_ada" != "no" ; then
+               if test "$with_libtool" != "no"; then
+                       AC_MSG_WARN(libtool does not support Ada - disabling feature)
+                       cf_with_ada=no
+               fi
+       fi
+
 dnl Check for availability of GNU Ada Translator (GNAT).
 dnl At the moment we support no other Ada95 compiler.
 dnl Check for availability of GNU Ada Translator (GNAT).
 dnl At the moment we support no other Ada95 compiler.
-if test "$cf_with_ada" != "no" ; then
-cf_ada_make=gnatmake
-AC_CHECK_PROG(gnat_exists, $cf_ada_make, yes, no)
-if test "$ac_cv_prog_gnat_exists" = no; then
-   cf_ada_make=
-else
-   CF_GNAT_VERSION
-   AC_CHECK_PROG(m4_exists, m4, yes, no)
-   if test "$ac_cv_prog_m4_exists" = no; then
-      cf_cv_prog_gnat_correct=no
-      echo Ada95 binding required program m4 not found. Ada95 binding disabled.
-   fi
-   if test "$cf_cv_prog_gnat_correct" = yes; then
-      AC_MSG_CHECKING(if GNAT works)
-      CF_GNAT_TRY_RUN([procedure conftest;],
-[with Text_IO;
-with GNAT.OS_Lib;
-procedure conftest is
-begin
-   Text_IO.Put ("Hello World");
-   Text_IO.New_Line;
-   GNAT.OS_Lib.OS_Exit (0);
-end conftest;],[cf_cv_prog_gnat_correct=yes],[cf_cv_prog_gnat_correct=no])
-      AC_MSG_RESULT($cf_cv_prog_gnat_correct)
-   fi
-fi
-if test        "$cf_cv_prog_gnat_correct" = yes; then
-   ADAFLAGS="-O3 -gnatpn $ADAFLAGS"
-
-   AC_ARG_WITH(ada-compiler,
-       [  --with-ada-compiler=CMD Specify Ada95 compiler command (default gnatmake)],
-       [cf_ada_compiler=$withval],
-       [cf_ada_compiler=gnatmake])
-
-   cf_ada_package=terminal_interface
-
-   AC_SUBST(cf_ada_make)
-   AC_SUBST(cf_ada_compiler)
-   AC_SUBST(cf_ada_package)
-   AC_SUBST(ADAFLAGS)
-   AC_SUBST(cf_compile_generics)
-   AC_SUBST(cf_generic_objects)
-
-   CF_WITH_PATH(ada-include,
-       [  --with-ada-include=DIR  Ada includes are in DIR],
-       ADA_INCLUDE,
-       PREFIX/lib/ada/adainclude,
-       [$]prefix/lib/ada/adainclude)
-   AC_SUBST(ADA_INCLUDE)
-
-   CF_WITH_PATH(ada-objects,
-       [  --with-ada-objects=DIR  Ada objects are in DIR],
-       ADA_OBJECTS,
-       PREFIX/lib/ada/adalib,
-       [$]prefix/lib/ada/adalib)
-   AC_SUBST(ADA_OBJECTS)
-
-# This has been fixed!
-#   if test $with_shared = no
-#   then
-#      AC_MSG_WARN(Ada95 applications will not link properly with static libraries)
-#   fi
-fi
-fi
-
-### It's not possible to appease gcc 2.6.3's conversion-warnings if we're
-### using a 'char' for bools.  gcc 2.7.0's conversion-warnings are broken too
-### badly to consider using for development purposes, but 2.5.8 is okay.
-if test -n "$with_warnings"; then
-       if test -n "$GCC"; then
-               case "`$CC --version`" in
-               2.6.3)
-                       if test "$cf_cv_type_of_bool" != "char"; then
-                               EXTRA_CFLAGS="$EXTRA_CFLAGS -Wconversion"
-                       fi
-                       ;;
-               2.5*)
-                       EXTRA_CFLAGS="$EXTRA_CFLAGS -Wconversion"
-                       ;;
-               esac
+       if test "$cf_with_ada" != "no" ; then
+               CF_PROG_GNAT
+               if test "$cf_cv_prog_gnat_correct" = yes; then
+                       CF_ADD_ADAFLAGS(-O3 -gnatpn)
+
+                       CF_GNAT_PRAGMA_UNREF
+
+                       CF_WITH_ADA_COMPILER
+
+                       cf_ada_package=terminal_interface
+                       AC_SUBST(cf_ada_package)
+
+                       CF_WITH_ADA_INCLUDE
+                       CF_WITH_ADA_OBJECTS
+                       CF_WITH_ADA_SHAREDLIB
+               fi
        fi
        fi
+else
+       cf_with_ada=no
 fi
 
 fi
 
-### Construct the library-subsets, if any, from this set of keywords:
-### none, base, ext_funcs, termlib.
+### Construct the ncurses library-subsets, if any, from this set of keywords:
+###    none, base, ext_funcs, ext_tinfo, ticlib, termlib, widechar
+###
+### ticlib modules may be a separate library, otherwise contained in termlib.
+### termlib modules may be a separate library, otherwise contained in ncurses.
+###
+### The of "+" or " " between the tokens controls the way the script
+### chooses to split module lists into libraries.
+###
+### (see CF_LIB_RULES).
 AC_MSG_CHECKING(for library subsets)
 AC_MSG_CHECKING(for library subsets)
-if test "$with_termlib" = yes ; then
-       LIB_SUBSETS="termlib "
+LIB_SUBSETS=
+
+if test "$cf_with_progs" = yes || test "$with_ticlib" != no || test "$with_termcap" != no; then
+       LIB_SUBSETS="${LIB_SUBSETS}ticlib"
+       if test "$with_ticlib" != no ; then
+               LIB_SUBSETS="${LIB_SUBSETS} "
+       else
+               LIB_SUBSETS="${LIB_SUBSETS}+"
+       fi
+fi
+
+LIB_SUBSETS="${LIB_SUBSETS}termlib"
+test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}+ext_tinfo"
+
+if test "$with_termlib" != no ; then
+       LIB_SUBSETS="${LIB_SUBSETS} "
 else
 else
-       LIB_SUBSETS="termlib+"
+       LIB_SUBSETS="${LIB_SUBSETS}+"
 fi
 fi
+
 LIB_SUBSETS="${LIB_SUBSETS}base"
 LIB_SUBSETS="${LIB_SUBSETS}base"
+
+# Most term-driver calls are to tinfo, but some like init_pair are to the
+# base library (so it resides in base).
+if test "$with_term_driver" != no ; then
+       LIB_SUBSETS="${LIB_SUBSETS}+port_drivers"
+       case $cf_cv_system_name in #(vi
+       *mingw32*) #(vi
+               LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo+port_win32con"
+               ;;
+       *) #(vi
+               LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo"
+               ;;
+       esac
+fi
+
+test "$with_widec"     = yes && LIB_SUBSETS="${LIB_SUBSETS}+widechar"
 test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}+ext_funcs"
 test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}+ext_funcs"
-AC_MSG_RESULT($LIB_SUBSETS)
 
 
-LIB_TRACING=DEBUG
-case "$CFLAGS" in
-*-DTRACE*)
-       LIB_TRACING=all
-       ;;
-esac
+AC_MSG_RESULT($LIB_SUBSETS)
 
 ### Construct the list of include-directories to be generated
 CF_INCLUDE_DIRS
 
 ### Construct the list of include-directories to be generated
 CF_INCLUDE_DIRS
@@ -968,7 +1674,7 @@ AC_SUBST(DFT_ARG_SUFFIX)dnl the string to append to "-lncurses" ("")
 AC_MSG_RESULT($DFT_ARG_SUFFIX)
 
 AC_MSG_CHECKING(default library-dependency suffix)
 AC_MSG_RESULT($DFT_ARG_SUFFIX)
 
 AC_MSG_CHECKING(default library-dependency suffix)
-CF_LIB_SUFFIX($DFT_LWR_MODEL,DFT_DEP_SUFFIX)dnl
+CF_LIB_SUFFIX($DFT_LWR_MODEL,DFT_LIB_SUFFIX,DFT_DEP_SUFFIX)dnl
 AC_SUBST(DFT_DEP_SUFFIX)dnl the corresponding library-suffix (".a")
 AC_MSG_RESULT($DFT_DEP_SUFFIX)
 
 AC_SUBST(DFT_DEP_SUFFIX)dnl the corresponding library-suffix (".a")
 AC_MSG_RESULT($DFT_DEP_SUFFIX)
 
@@ -977,70 +1683,301 @@ CF_OBJ_SUBDIR($DFT_LWR_MODEL,DFT_OBJ_SUBDIR)dnl
 AC_SUBST(DFT_OBJ_SUBDIR)dnl the default object-directory ("obj")
 AC_MSG_RESULT($DFT_OBJ_SUBDIR)
 
 AC_SUBST(DFT_OBJ_SUBDIR)dnl the default object-directory ("obj")
 AC_MSG_RESULT($DFT_OBJ_SUBDIR)
 
-TINFO_LIST="$SHLIB_LIST"
-test $with_termlib = yes && SHLIB_LIST="$SHLIB_LIST -ltinfo${LIB_SUFFIX}"
+# libtool thinks it can make c++ shared libraries (perhaps only g++)
+if test "$cf_with_cxx" = yes ; then
+AC_MSG_CHECKING(c++ library-dependency suffix)
+if test "$with_libtool" != "no"; then
+       CXX_LIB_SUFFIX=$DFT_DEP_SUFFIX
+else
+       CF_LIB_SUFFIX(normal,CXX_LIB_SUFFIX,CXX_DEP_SUFFIX)dnl we normally make a static library
+fi
+AC_MSG_RESULT($CXX_LIB_SUFFIX)
+AC_SUBST(CXX_LIB_SUFFIX)
+fi
+
+# do not want -ldl in build except as needed for -lncurses dependency
+if test "$with_dlsym" = yes ; then
+if test $DFT_LWR_MODEL = shared || \
+   test $DFT_LWR_MODEL = libtool ; then
+       CF_REMOVE_LIB(LIBS,$LIBS,dl)
+fi
+fi
+### Set up low-level terminfo dependencies for makefiles.
+
+# TICS_LIST and TINFO_LIST are needed to build libtic.so and libterm.so, but
+# do not need libdl
+TICS_LIST=
+if test "$with_dlsym" = yes ; then
+       CF_REMOVE_LIB(TINFO_LIST,$SHLIB_LIST,dl)
+fi
+
+if test "$with_ticlib" != no ; then
+
+       if test "$with_ticlib" != yes ; then
+               TICS_NAME=$with_ticlib
+               TICS_ARG_SUFFIX="${with_ticlib}`echo ${DFT_ARG_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
+               TICS_DEP_SUFFIX="${with_ticlib}`echo ${DFT_DEP_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
+               TICS_LIB_SUFFIX="${with_ticlib}"
+       else
+               TICS_ARG_SUFFIX="${TICS_NAME}${DFT_ARG_SUFFIX}"
+               TICS_DEP_SUFFIX="${TICS_NAME}${DFT_DEP_SUFFIX}"
+               TICS_LIB_SUFFIX="${TICS_NAME}${LIB_SUFFIX}"
+       fi
+       TICS_ARGS="-L${LIB_DIR} -l${TICS_LIB_SUFFIX}"
+else
+       TICS_ARGS="-L${LIB_DIR} -l${LIB_NAME}${DFT_ARG_SUFFIX}"
+fi
+AC_SUBST(TICS_ARG_SUFFIX)
+AC_SUBST(TICS_DEP_SUFFIX)
+AC_SUBST(TICS_LIB_SUFFIX)
+AC_SUBST(TICS_ARGS)
+
+if test "$with_termlib" != no ; then
+
+       if test "$with_termlib" != yes ; then
+               TINFO_NAME=$with_termlib
+               TINFO_SUFFIX="`echo ${DFT_LIB_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
+               TINFO_ARG_SUFFIX="${with_termlib}`echo ${DFT_ARG_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
+               TINFO_DEP_SUFFIX="${with_termlib}`echo ${DFT_DEP_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`"
+               TINFO_LIB_SUFFIX="${with_termlib}"
+       else
+               TINFO_SUFFIX=${DFT_LIB_SUFFIX}
+               TINFO_ARG_SUFFIX="${TINFO_NAME}${DFT_ARG_SUFFIX}"
+               TINFO_DEP_SUFFIX="${TINFO_NAME}${DFT_DEP_SUFFIX}"
+               TINFO_LIB_SUFFIX="${TINFO_NAME}${LIB_SUFFIX}"
+       fi
+
+       TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TINFO_DEP_SUFFIX}"
+       TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${TINFO_DEP_SUFFIX}"
+       if test "$DFT_LWR_MODEL" = "libtool"; then
+               TEST_ARGS="${TEST_DEPS}"
+               TEST_ARG2="${TEST_DEP2}"
+               TINFO_ARGS="-L${LIB_DIR} $TEST_ARGS"
+               TICS_LIST="$SHLIB_LIST $TEST_ARGS"
+               SHLIB_LIST="${SHLIB_LIST} $TEST_ARGS"
+       else
+               TEST_ARGS="-l${TINFO_ARG_SUFFIX}"
+               TEST_ARG2="-l${TINFO_ARG_SUFFIX}"
+               TICS_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}"
+               TINFO_ARGS="-L${LIB_DIR} $TEST_ARGS"
+               SHLIB_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}"
+       fi
+else
+       # the next lines are needed for linking libtic over libncurses
+       TINFO_NAME=${LIB_NAME}
+       TINFO_SUFFIX=${DFT_LIB_SUFFIX}
+       TINFO_ARG_SUFFIX=${LIB_NAME}${DFT_ARG_SUFFIX}
+       if test "$with_tic_depends" = yes ; then
+               TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${DFT_ARG_SUFFIX}"
+       else
+               TICS_LIST="$SHLIB_LIST"
+       fi
+
+       TINFO_ARGS="-L${LIB_DIR} -l${LIB_NAME}${DFT_ARG_SUFFIX}"
+fi
+
+if test "$DFT_LWR_MODEL" = shared ; then
+       case $cf_cv_system_name in #(vi
+       cygwin*)
+               # "lib" files have ".dll.a" suffix, "cyg" files have ".dll"
+               TINFO_SUFFIX=.dll
+               ;;
+       esac
+fi
+
+AC_SUBST(TINFO_ARG_SUFFIX)
+AC_SUBST(TINFO_DEP_SUFFIX)
+AC_SUBST(TINFO_LIB_SUFFIX)
+AC_SUBST(TINFO_ARGS)
+
+if test "$with_dlsym" = yes ; then
+       CF_REMOVE_LIB(TICS_LIST,$TICS_LIST,dl)
+fi
+
+if test "$DFT_LWR_MODEL" = "libtool"; then
+    OBJEXT=lo
+fi
+
+# needed for Ada95
+TINFO_ARGS2=`echo "$TINFO_ARGS" | sed -e 's,-L\.\./,-L../../,'`
+AC_SUBST(TINFO_ARGS2)
+
+case $DFT_LWR_MODEL in
+normal|debug|profile)
+       CF_LDFLAGS_STATIC
+       ;;
+esac
 
 AC_MSG_CHECKING(where we will install curses.h)
 test "$with_overwrite" = no && \
 test "x$includedir" = 'x${prefix}/include' && \
 
 AC_MSG_CHECKING(where we will install curses.h)
 test "$with_overwrite" = no && \
 test "x$includedir" = 'x${prefix}/include' && \
-       includedir='$(prefix)/include/ncurses'${LIB_SUFFIX}
+       includedir='${prefix}/include/ncurses'${LIB_SUFFIX}
 AC_MSG_RESULT($includedir)
 
 AC_MSG_RESULT($includedir)
 
-AC_SUBST(EXTRA_LIBS)
+### Resolve a conflict between normal and wide-curses by forcing applications
+### that will need libutf8 to add it to their configure script.
+if test "$with_overwrite" != no ; then
+if test "$NCURSES_LIBUTF8" = 1 ; then
+       NCURSES_LIBUTF8='defined(HAVE_LIBUTF8_H)'
+       AC_MSG_WARN(Wide-character applications must define HAVE_LIBUTF8_H to include curses.h)
+fi
+fi
+WITH_OVERWRITE=$with_overwrite
+
+AC_SUBST(WITH_OVERWRITE)
+AC_SUBST(TICS_LIST)
 AC_SUBST(TINFO_LIST)
 AC_SUBST(SHLIB_LIST)
 
 AC_SUBST(TINFO_LIST)
 AC_SUBST(SHLIB_LIST)
 
-### Set up low-level terminfo dependencies for makefiles.  Note that we
-### could override this.
-if test "$with_termlib" = yes ; then
-       TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TINFO_NAME}${DFT_DEP_SUFFIX}"
-       TEST_ARGS="-l${TINFO_NAME}${DFT_ARG_SUFFIX}"
-fi
-PROG_DEPS="$TEST_DEPS"
-PROG_ARGS="$TEST_ARGS"
+# used to separate tack out of the tree
+NCURSES_TREE=
+AC_SUBST(NCURSES_TREE)
+
+### predefined stuff for the test programs
+AC_DEFINE(HAVE_SLK_COLOR)
 
 ### Construct the list of subdirectories for which we'll customize makefiles
 ### with the appropriate compile-rules.
 
 CF_SRC_MODULES($modules_to_build)
 
 ### Construct the list of subdirectories for which we'll customize makefiles
 ### with the appropriate compile-rules.
 
 CF_SRC_MODULES($modules_to_build)
+
+if test "$cf_with_ada" != "no" && test "$cf_cv_prog_gnat_correct" != "no"; then
+   SUB_MAKEFILES="$SUB_MAKEFILES Ada95/gen/adacurses${DFT_ARG_SUFFIX}-config:Ada95/gen/adacurses-config.in"
+   SUB_MAKEFILES="$SUB_MAKEFILES man/adacurses${DFT_ARG_SUFFIX}-config.1:man/MKada_config.in"
+fi
+
 CF_DIRS_TO_MAKE
 
 CF_DIRS_TO_MAKE
 
+# symbols that differ when compiling Ada95 by itself.
+NCURSES_SHLIB2='sh $(top_srcdir)/misc/shlib'
+AC_SUBST(NCURSES_SHLIB2)
+
+# values to use as strings
+AC_DEFINE_UNQUOTED(NCURSES_PATHSEP,'$PATH_SEPARATOR')
+
+AC_DEFINE_UNQUOTED(NCURSES_VERSION_STRING, "${NCURSES_MAJOR}.${NCURSES_MINOR}.${NCURSES_PATCH}")
+
 ### Now that we're done running tests, add the compiler-warnings, if any
 ### Now that we're done running tests, add the compiler-warnings, if any
-CFLAGS="$CFLAGS $EXTRA_CFLAGS"
+CF_ADD_CFLAGS($EXTRA_CFLAGS)
+
+### Define substitutions for header files to avoid name-pollution
+CF_SUBST_IF(["$cf_cv_have_tcgetattr" = yes], HAVE_TCGETATTR, 1, 0)
+CF_SUBST_IF(["$ac_cv_header_termio_h" = yes], HAVE_TERMIO_H, 1, 0)
+CF_SUBST_IF(["$ac_cv_header_termios_h" = yes], HAVE_TERMIOS_H, 1, 0)
 
 ################################################################################
 
 ################################################################################
+test "$use_database" = yes && \
+SUB_MAKEFILES="$SUB_MAKEFILES misc/run_tic.sh:misc/run_tic.in"
+
+SUB_MAKEFILES="$SUB_MAKEFILES misc/ncurses-config:misc/ncurses-config.in"
+SUB_MAKEFILES="$SUB_MAKEFILES man/ncurses${DFT_ARG_SUFFIX}${cf_cv_abi_version}-config.1:man/MKncu_config.in"
+
+if test x"$enable_pc_files" = xyes ; then \
+SUB_MAKEFILES="$SUB_MAKEFILES misc/gen-pkgconfig:misc/gen-pkgconfig.in"
+MAKE_PC_FILES=
+else
+MAKE_PC_FILES="#"
+fi
+AC_SUBST(MAKE_PC_FILES)
+AC_SUBST(cross_compiling)
+
+AC_PATH_PROG(TIC_PATH,tic,unknown,$PATH:/usr/local/ncurses/bin)
+if test -n "$FALLBACK_LIST"
+then
+       if test "$TIC_PATH" = unknown
+       then
+               AC_MSG_WARN(no tic program found for fallbacks)
+       fi
+fi
+AC_SUBST(TIC_PATH)
+
+if test "x$cf_with_tests" != xno ; then
+       MAKE_TESTS=
+else
+       MAKE_TESTS="#"
+fi
+AC_SUBST(MAKE_TESTS)
+
+SUB_SCRIPTS=
+case $cf_cv_system_name in #(vi
+*mingw32*) #(vi
+       SUB_SCRIPTS="mk-dlls.sh"
+       ;;
+esac
+
 AC_OUTPUT( \
        include/MKterm.h.awk \
 AC_OUTPUT( \
        include/MKterm.h.awk \
-       include/curses.h \
+       include/curses.head:include/curses.h.in \
+       include/ncurses_dll.h \
        include/termcap.h \
        include/unctrl.h \
        include/termcap.h \
        include/unctrl.h \
+       $SUB_SCRIPTS \
        $SUB_MAKEFILES \
        Makefile,[
        $SUB_MAKEFILES \
        Makefile,[
-CF_LIB_RULES
+if test "x$cf_with_tests" != xno ; then
+       CF_PRG_RULES([$srcdir/test/mk-test.awk INSTALL=no ECHO_LINK="$ECHO_LINK"], test)
+fi
+CF_LIB_RULES($SRC_SUBDIRS)
+
+if test "x$cf_with_ada" != xno ; then
+if test -z "$USE_OLD_MAKERULES" ; then
+       $AWK -f $srcdir/Ada95/mk-1st.awk <$srcdir/Ada95/src/modules >>Ada95/src/Makefile
+fi
+fi
 ],[
 ### Special initialization commands, used to pass information from the
 ### configuration-run into config.status
 
 AWK="$AWK"
 ],[
 ### Special initialization commands, used to pass information from the
 ### configuration-run into config.status
 
 AWK="$AWK"
-CF_LIST_MODELS="$cf_list_models"
+DFT_ARG_SUFFIX="$DFT_ARG_SUFFIX"
 DFT_LWR_MODEL="$DFT_LWR_MODEL"
 DFT_LWR_MODEL="$DFT_LWR_MODEL"
+ECHO_LINK="$ECHO_LINK"
 LDCONFIG="$LDCONFIG"
 LDCONFIG="$LDCONFIG"
+LIBTOOL_VERSION="$LIBTOOL_VERSION"
 LIB_NAME="$LIB_NAME"
 LIB_NAME="$LIB_NAME"
-LIB_SUFFIX="$LIB_SUFFIX"
 LIB_SUBSETS="$LIB_SUBSETS"
 LIB_SUBSETS="$LIB_SUBSETS"
+LIB_SUFFIX="$LIB_SUFFIX"
 LIB_TRACING="$LIB_TRACING"
 LIB_TRACING="$LIB_TRACING"
+LN_S="$LN_S"
+MAKE_TERMINFO="$MAKE_TERMINFO"
+NCURSES_MAJOR="$NCURSES_MAJOR"
+NCURSES_MINOR="$NCURSES_MINOR"
+NCURSES_OSPEED="$NCURSES_OSPEED"
+NCURSES_PATCH="$NCURSES_PATCH"
 SRC_SUBDIRS="$SRC_SUBDIRS"
 SRC_SUBDIRS="$SRC_SUBDIRS"
+TERMINFO="$TERMINFO"
+TICS_ARG_SUFFIX="$TICS_ARG_SUFFIX"
+TICS_LIB_SUFFIX="$TICS_LIB_SUFFIX"
+TICS_NAME="$TICS_NAME"
+TIC_PATH="$TIC_PATH"
+TINFO_ARG_SUFFIX="$TINFO_ARG_SUFFIX"
+TINFO_LIB_SUFFIX="$TINFO_LIB_SUFFIX"
 TINFO_NAME="$TINFO_NAME"
 TINFO_NAME="$TINFO_NAME"
+TINFO_SUFFIX="$TINFO_SUFFIX"
+USE_OLD_MAKERULES="$USE_OLD_MAKERULES"
+WITH_CURSES_H="$with_curses_h"
 WITH_ECHO="$with_echo"
 WITH_OVERWRITE="$with_overwrite"
 WITH_ECHO="$with_echo"
 WITH_OVERWRITE="$with_overwrite"
+cf_LIST_MODELS="$cf_list_models"
 cf_cv_abi_version="$cf_cv_abi_version"
 cf_cv_abi_version="$cf_cv_abi_version"
+cf_cv_do_relink="$cf_cv_do_relink"
 cf_cv_do_symlinks="$cf_cv_do_symlinks"
 cf_cv_do_symlinks="$cf_cv_do_symlinks"
+cf_cv_enable_lp64="$cf_cv_enable_lp64"
+cf_cv_enable_opaque="$cf_cv_enable_opaque"
+cf_cv_prog_CC_c_o=$cf_cv_prog_CC_c_o
+cf_cv_prog_CXX_c_o=$cf_cv_prog_CXX_c_o
 cf_cv_rel_version="$cf_cv_rel_version"
 cf_cv_rm_so_locs="$cf_cv_rm_so_locs"
 cf_cv_rel_version="$cf_cv_rel_version"
 cf_cv_rm_so_locs="$cf_cv_rm_so_locs"
+cf_cv_shared_soname='$cf_cv_shared_soname'
+cf_cv_shlib_version="$cf_cv_shlib_version"
+cf_cv_shlib_version_infix="$cf_cv_shlib_version_infix"
 cf_cv_system_name="$cf_cv_system_name"
 cf_cv_system_name="$cf_cv_system_name"
+cf_with_ada="$cf_with_ada"
 cf_with_cxx_binding="$cf_with_cxx_binding"
 cf_with_cxx_binding="$cf_with_cxx_binding"
-cf_cv_shlib_version="$cf_cv_shlib_version"
+cf_with_manpages="$cf_with_manpages"
+cf_with_tests="$cf_with_tests"
+host="$host"
 target="$target"
 
 target="$target"
 
-],sort)dnl
-${MAKE-make} preinstall
+],cat)dnl
+${MAKE:-make} preinstall