]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - test/configure.in
ncurses 6.2 - patch 20200321
[ncurses.git] / test / configure.in
index 87b409a02b5816cf78f21262622a859062ee4bdd..87757d041c404c11e6b6d4a62c82d165834a28b0 100644 (file)
@@ -1,5 +1,6 @@
 dnl***************************************************************************
 dnl***************************************************************************
-dnl Copyright (c) 1998-2000,2002 Free Software Foundation, Inc.              *
+dnl Copyright 2018-2019,2020 Thomas E. Dickey                                *
+dnl Copyright 1998-2017,2018 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,9 +27,9 @@ 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 1996, etc.
+dnl Author: Thomas E. Dickey 1996-on
 dnl
 dnl
-dnl $Id: configure.in,v 1.36 2002/09/07 16:55:23 tom Exp $
+dnl $Id: configure.in,v 1.158 2020/03/08 14:12:23 tom Exp $
 dnl This is a simple configuration-script for the ncurses test programs that
 dnl allows the test-directory to be separately configured against a reference
 dnl system (i.e., sysvr4 curses)
 dnl This is a simple configuration-script for the ncurses test programs that
 dnl allows the test-directory to be separately configured against a reference
 dnl system (i.e., sysvr4 curses)
@@ -36,147 +37,213 @@ dnl
 dnl If you're configuring ncurses, you shouldn't need to use this script.
 dnl It's only for testing purposes.
 dnl
 dnl If you're configuring ncurses, you shouldn't need to use this script.
 dnl It's only for testing purposes.
 dnl
-dnl See http://invisible-island.net/autoconf/ for additional information.
+dnl For additional information, see
+dnl            https://invisible-island.net/autoconf/
+dnl            https://invisible-island.net/autoconf/my-autoconf.html
+dnl            https://invisible-island.net/ncurses/ncurses-examples.html
 dnl ---------------------------------------------------------------------------
 dnl ---------------------------------------------------------------------------
-AC_PREREQ(2.13.20000819)
+AC_PREREQ(2.52.20200111)
 AC_INIT(ncurses.c)
 AC_CONFIG_HEADER(ncurses_cfg.h:ncurses_tst.hin)
 
 AC_INIT(ncurses.c)
 AC_CONFIG_HEADER(ncurses_cfg.h:ncurses_tst.hin)
 
-AC_PROG_CC
+CF_INHERIT_SCRIPT(config.guess)
+CF_INHERIT_SCRIPT(config.sub)
+CF_CHECK_CACHE
+
+AC_ARG_PROGRAM
+
+CF_HELP_MESSAGE(General Options:)
+
+AC_PROG_MAKE_SET
+CF_PROG_CC
+AC_C_INLINE
+AC_PROG_CPP
+AC_PROG_AWK
+CF_PROG_INSTALL
+CF_INSTALL_OPTS
+CF_PROG_LINT
+CF_MAKE_TAGS
+
+CF_MATH_LIB(MATH_LIB,pow(sin(x),x))
+AC_SUBST(MATH_LIB)
 
 dnl Things that we don't need (or must override) if we're not building ncurses
 
 dnl Things that we don't need (or must override) if we're not building ncurses
-CC_G_OPT="-g"                          AC_SUBST(CC_G_OPT)
+CF_TOP_BUILDDIR
+CC_G_OPT="-g"                                  AC_SUBST(CC_G_OPT)
 CC_SHARED_OPTS=unknown                 AC_SUBST(CC_SHARED_OPTS)
 CPPFLAGS="$CPPFLAGS"                   AC_SUBST(CPPFLAGS)
 CC_SHARED_OPTS=unknown                 AC_SUBST(CC_SHARED_OPTS)
 CPPFLAGS="$CPPFLAGS"                   AC_SUBST(CPPFLAGS)
-DFT_DEP_SUFFIX=""                      AC_SUBST(DFT_DEP_SUFFIX)
+DFT_DEP_SUFFIX=""                              AC_SUBST(DFT_DEP_SUFFIX)
 DFT_OBJ_SUBDIR=`pwd|sed -e's:.*/::'`   AC_SUBST(DFT_OBJ_SUBDIR)
 DFT_UPR_MODEL="NORMAL"                 AC_SUBST(DFT_UPR_MODEL)
 DFT_OBJ_SUBDIR=`pwd|sed -e's:.*/::'`   AC_SUBST(DFT_OBJ_SUBDIR)
 DFT_UPR_MODEL="NORMAL"                 AC_SUBST(DFT_UPR_MODEL)
-ECHO_LINK='@ echo linking $@ ... ;'    AC_SUBST(ECHO_LINK)
-EXTRA_LIBS=""                          AC_SUBST(EXTRA_LIBS)
-LD="ld"                                        AC_SUBST(LD)
-LDFLAGS_SHARED=""                      AC_SUBST(LDFLAGS_SHARED)
-LD_MODEL=""                            AC_SUBST(LD_MODEL)
-LD_SHARED_OPTS=""                      AC_SUBST(LD_SHARED_OPTS)
-LIBTOOL=""                             AC_SUBST(LIBTOOL)
-LIB_NAME=curses                                AC_SUBST(LIB_NAME)
-LIB_PREFIX="-l"                                AC_SUBST(LIB_PREFIX)
-LINK_TESTS=""                          AC_SUBST(LINK_TESTS)
-LINT=lint                              AC_SUBST(LINT)
-LINT_OPTS=""                           AC_SUBST(LINT_OPTS)
-LOCAL_LDFLAGS=""                       AC_SUBST(LOCAL_LDFLAGS)
-MATH_LIB="-lm"                         AC_SUBST(MATH_LIB)
-PROG_EXT=""                            AC_SUBST(PROG_EXT)
-TEST_ARGS=""                           AC_SUBST(TEST_ARGS)
-TEST_DEPS=""                           AC_SUBST(TEST_DEPS)
+LD="ld"                                                        AC_SUBST(LD)
+LDFLAGS_SHARED=""                              AC_SUBST(LDFLAGS_SHARED)
+LDFLAGS_STATIC=""                              AC_SUBST(LDFLAGS_STATIC)
+LD_MODEL=""                                            AC_SUBST(LD_MODEL)
+LD_SHARED_OPTS=""                              AC_SUBST(LD_SHARED_OPTS)
+LIBTOOL=""                                             AC_SUBST(LIBTOOL)
+LIBTOOL_OPTS=""                                        AC_SUBST(LIBTOOL_OPTS)
+LIB_CLEAN=""                                   AC_SUBST(LIB_CLEAN)
+LIB_COMPILE=""                                 AC_SUBST(LIB_COMPILE)
+LIB_LINK='${CC}'                               AC_SUBST(LIB_LINK)
+LINK_TESTS=""                                  AC_SUBST(LINK_TESTS)
+LOCAL_LDFLAGS=""                               AC_SUBST(LOCAL_LDFLAGS)
+PACKAGE="ncurses-examples"             AC_SUBST(PACKAGE)
+PTHREAD="-lm"                                  AC_SUBST(PTHREAD)
+TEST_ARGS=""                                   AC_SUBST(TEST_ARGS)
+TEST_DEPS=""                                   AC_SUBST(TEST_DEPS)
+TEST_LIBS=""                                   AC_SUBST(TEST_LIBS)
+TINFO_LDFLAGS=''                               AC_SUBST(TINFO_LDFLAGS)
+TINFO_LIBS='$(LIBS_CURSES)'            AC_SUBST(TINFO_LIBS)
 cf_cv_abi_version=""                   AC_SUBST(cf_cv_abi_version)
 cf_cv_rel_version=""                   AC_SUBST(cf_cv_rel_version)
 cf_cv_abi_version=""                   AC_SUBST(cf_cv_abi_version)
 cf_cv_rel_version=""                   AC_SUBST(cf_cv_rel_version)
+includesubdir=""                               AC_SUBST(includesubdir)
+
+cf_cv_screen=curses
+cf_cv_libtype=
+
+AC_EXEEXT
+AC_OBJEXT
 
 
-dnl SunOS 4.x
-AC_ARG_WITH(5lib,
-       [  --with-5lib             use SunOS sysv-libraries],
-       [LIBS="-L/usr/5lib $LIBS"
-        CPPFLAGS="$CPPFLAGS -I/usr/5include"])
+CF_GCC_ATTRIBUTES
+CF_ENABLE_STRING_HACKS
+CF_XOPEN_SOURCE(600)
+CF_SIG_ATOMIC_T
+
+# Work around breakage on OS X
+CF_SIGWINCH
+
+# Checks for CODESET support.
+AM_LANGINFO_CODESET
 
 dnl ---------------------------------------------------------------------------
 
 dnl ---------------------------------------------------------------------------
-dnl Check for libutf8
-AC_DEFUN([CF_LIBUTF8],
-[
-AC_CACHE_CHECK(for putwc in libutf8,cf_cv_libutf8,[
-       cf_save_LIBS="$LIBS"
-       LIBS="-lutf8 $LIBS"
-AC_TRY_LINK([
-#include <libutf8.h>],[putwc(0,0);],
-       [cf_cv_libutf8=yes],
-       [cf_cv_libutf8=no])
-       LIBS="$cf_save_LIBS"
-])
+CF_PKG_CONFIG
+CF_DISABLE_ECHO
 
 
-if test "$cf_cv_libutf8" = yes ; then
-       AC_DEFINE(HAVE_LIBUTF8_H)
-       LIBS="-lutf8 $LIBS"
-fi
-])dnl
+dnl ---------------------------------------------------------------------------
+CF_HELP_MESSAGE(Curses Version-dependent Options:)
+CF_NCURSES_WRAP_PREFIX
+
+AC_MSG_CHECKING(if you want to check for wide-character functions)
+CF_ARG_DISABLE(widec,
+       [  --disable-widec         disable checks for wide-character functions],
+       cf_enable_widec=no,
+       cf_enable_widec=yes,
+       yes)
+AC_MSG_RESULT($cf_enable_widec)
 
 dnl ---------------------------------------------------------------------------
 
 dnl ---------------------------------------------------------------------------
-dnl NcursesW, installed in conventional location
-AC_ARG_WITH(ncursesw,
-       [  --with-ncursesw         use wide ncurses-libraries (installed)],
-       [
-        AC_DEFINE(_GNU_SOURCE)
-        AC_DEFINE(_XOPEN_SOURCE_EXTENDED)
-        AC_CHECK_FUNC(initscr,,[
-        AC_CHECK_LIB(gpm,Gpm_Open)
-        LIB_NAME=ncursesw
-        AC_CHECK_FUNC(putwc,,[CF_LIBUTF8])
-        for p in $HOME /usr/local /usr
-        do
-               if test -f $p/include/ncursesw/curses.h
-               then
-                       CPPFLAGS="$CPPFLAGS -I$p/include/ncursesw"
-                       test $p != /usr && CPPFLAGS="$CPPFLAGS -I$p/include"
-                       test $p != /usr && LIBS="-L$p/lib $LIBS"
-                       break
-               elif test $p != /usr
-               then
-                       if test -f $p/include/curses.h
-                       then
-                               CPPFLAGS="$CPPFLAGS -I$p/include"
-                               LIBS="-L$p/lib $LIBS"
-                               break
-                       fi
-               fi
-        done
-       ],[test -d /usr/ccs/lib && LIBS="-L/usr/ccs/lib $LIBS"])])
-
-dnl Ncurses, installed in conventional location
-AC_ARG_WITH(ncurses,
-       [  --with-ncurses          use ncurses-libraries (installed)],
-       [AC_CHECK_FUNC(initscr,,[
-        AC_CHECK_LIB(gpm,Gpm_Open)
-        LIB_NAME=ncurses
-        for p in $HOME /usr/local /usr
-        do
-               if test -f $p/include/ncurses/curses.h
-               then
-                       CPPFLAGS="$CPPFLAGS -I$p/include/ncurses"
-                       test $p != /usr && CPPFLAGS="$CPPFLAGS -I$p/include"
-                       test $p != /usr && LIBS="-L$p/lib $LIBS"
-                       break
-               elif test $p != /usr
-               then
-                       if test -f $p/include/curses.h
-                       then
-                               CPPFLAGS="$CPPFLAGS -I$p/include"
-                               LIBS="-L$p/lib $LIBS"
-                               break
-                       fi
-               fi
-        done
-       ],[test -d /usr/ccs/lib && LIBS="-L/usr/ccs/lib $LIBS"])])
+CF_HELP_MESSAGE(Curses Version-dependent Options:)
+CF_WITH_NCURSES_ETC
+
+case $cf_cv_screen in
+(ncurses*)
+       cf_cv_libtype=`echo "$cf_cv_screen" | sed -e 's/^ncurses//'`
+       ;;
+esac
+
+CF_WITH_X11_RGB
 
 dnl If we've not specified a library, assume we're using sysvr4 libraries
 dnl installed conventionally (e.g., SunOS 5.x - solaris).
 
 dnl Autoconf builds up the $LIBS in reverse order
 
 
 dnl If we've not specified a library, assume we're using sysvr4 libraries
 dnl installed conventionally (e.g., SunOS 5.x - solaris).
 
 dnl Autoconf builds up the $LIBS in reverse order
 
-AC_CHECK_FUNC(initscr,,[
-AC_CHECK_LIB($LIB_NAME,initscr)])
-AC_CHECK_LIB(form,form_driver)
-AC_CHECK_LIB(menu,menu_driver)
-AC_CHECK_LIB(panel,new_panel)
+cf_curses_headers=
+
+case $cf_cv_screen in
+(pdcurses)
+       cf_default_panel=no
+       cf_default_form=no
+       cf_default_menu=no
+       cf_default_tinfo=no
+       ;;
+(xcurses|bsdcurses)
+       cf_default_panel=no
+       cf_default_form=no
+       cf_default_menu=no
+       cf_default_tinfo=yes
+       ;;
+(*)
+       cf_default_panel=yes
+       cf_default_form=yes
+       cf_default_menu=yes
+       cf_default_tinfo=yes
+       case $cf_cv_screen in
+       (ncurses*)
+               cf_curses_headers="nc_alloc.h nomacros.h term_entry.h"
+               ;;
+       esac
+       ;;
+esac
 
 
-AC_TYPE_SIGNAL
+CF_WITH_LIB_BASENAME(FORM_NAME,form)
+CF_WITH_LIB_BASENAME(MENU_NAME,menu)
+CF_WITH_LIB_BASENAME(PANEL_NAME,panel)
+
+AC_MSG_CHECKING(if you want to check for panel functions)
+CF_ARG_DISABLE(panel,
+       [  --disable-panel         disable checks for panel functions],
+       cf_enable_panel=no,
+       cf_enable_panel=$cf_default_panel,
+       yes)
+AC_MSG_RESULT($cf_enable_panel)
+if test $cf_enable_panel = yes
+then
+       CF_CHECK_CURSES_LIB($PANEL_NAME,$cf_cv_libtype,new_panel,0)
+       cf_curses_headers="$cf_curses_headers panel.h"
+fi
+
+AC_MSG_CHECKING(if you want to check for menu functions)
+CF_ARG_DISABLE(menu,
+       [  --disable-menu          disable checks for menu functions],
+       cf_enable_menu=no,
+       cf_enable_menu=$cf_default_menu,
+       yes)
+AC_MSG_RESULT($cf_enable_menu)
+if test $cf_enable_menu = yes
+then
+       case $cf_cv_screen in
+       (ncurses*)
+               ;;
+       (curses*)
+               CF_NETBSD_MENU_H
+               ;;
+       esac
+       CF_CHECK_CURSES_LIB($MENU_NAME,$cf_cv_libtype,menu_driver,[0,0])
+       cf_curses_headers="$cf_curses_headers menu.h"
+fi
+
+AC_MSG_CHECKING(if you want to check for form functions)
+CF_ARG_DISABLE(form,
+       [  --disable-form          disable checks for form functions],
+       cf_enable_form=no,
+       cf_enable_form=$cf_default_form,
+       yes)
+AC_MSG_RESULT($cf_enable_form)
+if test $cf_enable_form = yes
+then
+       case $cf_cv_screen in
+       (ncurses*)
+               ;;
+       (curses*)
+               CF_NETBSD_FORM_H
+               ;;
+       esac
+       CF_CHECK_CURSES_LIB($FORM_NAME,$cf_cv_libtype,form_driver,[0,0])
+       cf_curses_headers="$cf_curses_headers form.h"
+fi
+
+# look for curses-related headers
+AC_CHECK_HEADERS( $cf_curses_headers )
 
 AC_STDC_HEADERS
 AC_HEADER_TIME
 AC_CHECK_HEADERS( \
 
 AC_STDC_HEADERS
 AC_HEADER_TIME
 AC_CHECK_HEADERS( \
-form.h \
 getopt.h \
 locale.h \
 getopt.h \
 locale.h \
-menu.h \
-nc_alloc.h \
-nomacros.h \
-panel.h \
+math.h \
+stdarg.h \
+stdint.h \
 sys/ioctl.h \
 sys/select.h \
 sys/time.h \
 sys/ioctl.h \
 sys/select.h \
 sys/time.h \
@@ -184,144 +251,282 @@ termios.h \
 unistd.h \
 )
 
 unistd.h \
 )
 
+CF_GETOPT_HEADER
+
 AC_CHECK_FUNCS( \
 AC_CHECK_FUNCS( \
-getnstr \
+getopt \
 gettimeofday \
 gettimeofday \
+strstr \
+tsearch \
+)
+
+# use a compile-check to work with ncurses*-config and subdirectory includes
+AC_CACHE_CHECK(if we can use termcap.h,cf_cv_have_termcap_h,[
+       AC_TRY_COMPILE([
+#include <curses.h>
+#ifdef NCURSES_VERSION
+#undef NCURSES_VERSION
+#endif
+#include <termcap.h>
+#ifndef NCURSES_VERSION
+#error wrong header
+#endif
+],
+       [return 0;],
+       [cf_cv_have_termcap_h=yes],
+       [cf_cv_have_termcap_h=no])])
+if test "x$cf_cv_have_termcap_h" = xyes
+then
+       AC_DEFINE(HAVE_TERMCAP_H,1,[Define to 1 if we can use termcap.h])
+else
+AC_CACHE_CHECK(if we can use ncurses/termcap.h,cf_cv_have_ncurses_termcap_h,[
+       AC_TRY_COMPILE([
+#include <ncurses/curses.h>
+#ifdef NCURSES_VERSION
+#undef NCURSES_VERSION
+#endif
+#include <ncurses/termcap.h>
+#ifndef NCURSES_VERSION
+#error wrong header
+#endif
+],
+       [return 0;],
+       [cf_cv_have_ncurses_termcap_h=yes],
+       [cf_cv_have_ncurses_termcap_h=no])])
+test "x$cf_cv_have_ncurses_termcap_h" = xyes && AC_DEFINE(HAVE_NCURSES_TERMCAP_H,1,[Define to 1 if we can use ncurses/termcap.h])
+fi
+
+if test "x$ac_cv_func_getopt" = xno; then
+       AC_MSG_ERROR(getopt is required for building programs)
+fi
+
+if test "$cf_enable_widec" = yes; then
+AC_CHECK_FUNCS( \
+mblen \
+mbrlen \
+mbrtowc \
+mbsrtowcs \
+mbstowcs \
+mbtowc \
+wcsrtombs \
+wcstombs \
+)
+fi
+
+CF_CURSES_FUNCS( \
+alloc_pair \
+assume_default_colors \
+chgat \
+color_content \
+color_set \
+copywin \
+delscreen \
+dupwin \
+filter \
+getbegx \
+getcurx \
+getmaxx \
+getnstr \
+getparx \
+getwin \
+halfdelay \
+init_extended_color \
+mvderwin \
+mvvline \
+mvwin \
+mvwvline \
 napms \
 napms \
+newpad \
+putwin \
+reset_color_pairs \
 resize_term \
 resizeterm \
 resize_term \
 resizeterm \
-strdup \
+restartterm \
+ripoffline \
+scr_dump \
+setupterm \
+slk_color \
+slk_init \
+termattrs \
+tgetent \
+tigetnum \
+tigetstr \
+tputs_sp \
+typeahead \
 use_default_colors \
 use_default_colors \
+use_env \
+use_extended_names \
+use_screen \
+use_window \
+vid_puts \
+vidputs \
 vsscanf \
 vsscanf \
+vw_printw \
+wchgat \
+winsdelln \
+winsstr \
 wresize \
 wresize \
+wsyncdown \
+_tracef \
 )
 
 )
 
-dnl ---------------------------------------------------------------------------
-dnl Solaris has a data item 'curses_version', which confuses AC_CHECK_FUNCS.
-dnl It's a character string "SVR4", not documented.
-AC_CACHE_CHECK(for function curses_version, cf_cv_func_curses_version,[
-AC_TRY_RUN([
-#include <curses.h>
-int main()
-{
-       char temp[1024];
-       sprintf(temp, "%s\n", curses_version());
-       exit(0);
-}]
-,[cf_cv_func_curses_version=yes]
-,[cf_cv_func_curses_version=no]
-,[cf_cv_func_curses_version=unknown])
-rm -f core])
-test "$cf_cv_func_curses_version" = yes && AC_DEFINE(HAVE_CURSES_VERSION)
+CF_TPUTS_PROTO
+CF_NCURSES_EXT_FUNCS
 
 
-dnl ---------------------------------------------------------------------------
-dnl Check for likely values of acs_map[]:
-AC_CACHE_CHECK(for alternate character set array, cf_cv_curses_acs_map,[
-cf_cv_curses_acs_map=unknown
-for name in acs_map _acs_map __acs_map _nc_acs_map
-do
-AC_TRY_LINK([
-#include <curses.h>
-],[
-$name['k'] = ACS_PLUS
-],[cf_cv_curses_acs_map=$name; break])
-done
-])
+if test "$cf_enable_widec" = yes
+then
+       # workaround for systems with ncurses before 20111029, due to change of
+       # feature test macro from _XPG5 to _XOPEN_SOURCE
+       if test -n "$cf_cv_ncurses_version" && test "x$cf_cv_ncurses_version" != xno
+       then
+               cf_define_xpg5=no
+               AC_MSG_CHECKING(if _XPG5 should be defined to enable wide-characters)
 
 
-test "$cf_cv_curses_acs_map" != unknown && AC_DEFINE_UNQUOTED(CURSES_ACS_ARRAY,$cf_cv_curses_acs_map)
+               AC_TRY_COMPILE([
+#include <${cf_cv_ncurses_header:-curses.h}>],
+                       [int x = _XPG5],,
+                       [cf_save_cppflags="$CPPFLAGS"
+                        CPPFLAGS="$CPPFLAGS -D_XPG5"
+                        AC_TRY_COMPILE([
+#include <${cf_cv_ncurses_header:-curses.h}>],
+                               [int x = _XPG5],
+                               [cf_define_xpg5=yes])
+                        CPPFLAGS="$cf_save_cppflags"])
+               AC_MSG_RESULT($cf_define_xpg5)
 
 
-dnl ---------------------------------------------------------------------------
-dnl Check for likely values of wacs_map[]:
-AC_CACHE_CHECK(for wide alternate character set array, cf_cv_curses_wacs_map,[
-cf_cv_curses_wacs_map=unknown
-for name in wacs_map _wacs_map __wacs_map _nc_wacs
-do
+               if test "$cf_define_xpg5" = yes
+               then
+                       CPPFLAGS="$CPPFLAGS -D_XPG5"
+               fi
+       fi
+
+       AC_CACHE_CHECK(for wide-character functions,cf_cv_widechar_funcs,[
+       AC_TRY_LINK([
+#include <${cf_cv_ncurses_header:-curses.h}>],
+       [
+               static wchar_t src_wchar[2];
+               static cchar_t dst_cchar;
+               setcchar(&dst_cchar, src_wchar, A_NORMAL, 0, (void *) 0);
+               ],
+               [cf_cv_widechar_funcs=yes],
+               [cf_cv_widechar_funcs=no])
+       ])
+       if test "$cf_cv_widechar_funcs" != no ; then
+               AC_DEFINE(USE_WIDEC_SUPPORT,1,[Define to 1 to enable wide-character support in (n)curses])
+       else
+               AC_DEFINE(USE_WIDEC_SUPPORT,0)
+       fi
+else
+       AC_DEFINE(USE_WIDEC_SUPPORT,0)
+fi
+
+AC_CACHE_CHECK(if $cf_cv_screen library uses pthreads,cf_cv_use_pthreads,[
 AC_TRY_LINK([
 AC_TRY_LINK([
-#ifndef _XOPEN_SOURCE_EXTENDED
-#define _XOPEN_SOURCE_EXTENDED
-#endif
-#include <curses.h>
-],[
-$name['k'] = *WACS_PLUS        
-],[cf_cv_curses_wacs_map=$name; break])
-done
+#include <${cf_cv_ncurses_header:-curses.h}>
+extern void _nc_init_pthreads(void);
+],
+[
+       initscr();
+       _nc_init_pthreads();
+       ],
+       [cf_cv_use_pthreads=yes],
+       [cf_cv_use_pthreads=no])
 ])
 ])
+test $cf_cv_use_pthreads = yes && AC_DEFINE(USE_PTHREADS,1,[Define to 1 if $cf_cv_screen library uses pthreads])
 
 
-test "$cf_cv_curses_wacs_map" != unknown && AC_DEFINE_UNQUOTED(CURSES_WACS_ARRAY,$cf_cv_curses_wacs_map)
+CF_SYS_TIME_SELECT
 
 
-dnl --------------------------------------------------------------------------- 
-dnl Make an uppercase version of a variable 
-dnl $1=uppercase($2) 
-AC_DEFUN([CF_UPPER], 
-[ 
-$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
-])dnl 
+# 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>,[Define to actual header for openpty function])
+       AC_DEFINE(USE_XTERM_PTY,1,[Define to 1 if we should assume xterm pseudoterminal interface])
+       if test "x$cf_cv_lib_util" = xyes ; then
+               CF_ADD_LIB(util,TEST_LIBS)
+       fi
+fi
 
 
-dnl ---------------------------------------------------------------------------
-dnl Check if curses.h defines the given type
-AC_DEFUN([CF_CURSES_TYPE],
-[
-AC_MSG_CHECKING(for type $1 in curses.h)
-AC_TRY_COMPILE([
-#ifndef _XOPEN_SOURCE_EXTENDED
-#define _XOPEN_SOURCE_EXTENDED
-#endif
-#include <curses.h>],[
-$1 foo
-],cf_result=yes,cf_result=no)
-AC_MSG_RESULT($cf_result)
-if test $cf_result = yes ; then
-       CF_UPPER(cf_result,have_type_$1)
-       AC_DEFINE_UNQUOTED($cf_result)
-else
-       AC_DEFINE_UNQUOTED($1,$2)
+CF_FUNC_CURSES_VERSION
+
+CF_CURSES_ACS_MAP
+if test "$cf_enable_widec" = yes; then
+       CF_CURSES_WACS_MAP
+       CF_CURSES_WACS_SYMBOLS
 fi
 fi
-])dnl
 
 
-CF_CURSES_TYPE(attr_t,long)
-CF_CURSES_TYPE(mbstate_t,long)
+CF_CURSES_CHECK_TYPE(attr_t,long)
+
+if test "$cf_enable_widec" = yes; then
+       CF_WCHAR_TYPE(mbstate_t, NCURSES_MBSTATE_T, NCURSES_OK_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_OK_MBSTATE_T" = 0 ; then
+               CF_CURSES_CHECK_TYPE(mbstate_t,long)
+       fi
+
+       if test "$NCURSES_OK_WCHAR_T" = 0 ; then
+               CF_CURSES_CHECK_TYPE(wchar_t,long)
+       fi
+
+       if test "$NCURSES_OK_WINT_T" = 0 ; then
+               CF_CURSES_CHECK_TYPE(wint_t,long)
+       fi
+fi
+
+CF_CURSES_CHECK_DATA(\
+TABSIZE \
+curscr \
+ospeed \
+boolnames \
+boolfnames \
+ttytype)
 
 dnl ---------------------------------------------------------------------------
 
 dnl ---------------------------------------------------------------------------
-dnl Check if we can include <sys/time.h> with <sys/select.h>; this breaks on
-dnl older SCO configurations.
-dnl [CF_SYS_TIME_SELECT]
-
-AC_MSG_CHECKING(if sys/time.h works with sys/select.h)
-AC_CACHE_VAL(cf_cv_sys_time_select,[
-AC_TRY_COMPILE([
-#include <sys/types.h>
-#ifdef HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#ifdef HAVE_SYS_SELECT_H
-#include <sys/select.h>
-#endif
-],[],[cf_cv_sys_time_select=yes],
-     [cf_cv_sys_time_select=no])
-     ])
-AC_MSG_RESULT($cf_cv_sys_time_select)
-test "$cf_cv_sys_time_select" = yes && AC_DEFINE(HAVE_SYS_TIME_SELECT)
+CF_HELP_MESSAGE(Testing/development Options:)
+CF_ENABLE_WARNINGS(Wno-unknown-pragmas)
+CF_DISABLE_LEAKS
+CF_DISABLE_RPATH_HACK
+
+TEST_ARGS="$LIBS"
+LIBS=
 
 dnl ---------------------------------------------------------------------------
 
 AC_OUTPUT(Makefile,[
 
 dnl ---------------------------------------------------------------------------
 
 AC_OUTPUT(Makefile,[
+CF_PRG_RULES([$srcdir/mk-test.awk INSTALL=yes ECHO_LINK="$ECHO_LD"], .)
        cat >>Makefile <<TEST_EOF
 
 # These rules are generated so we do not rely on suffix rules, which do not
 # work consistently for different make-programs (the '\$(MODEL)/' confuses
 # some, and the '\$x' confuses others).
 TEST_EOF
        cat >>Makefile <<TEST_EOF
 
 # These rules are generated so we do not rely on suffix rules, which do not
 # work consistently for different make-programs (the '\$(MODEL)/' confuses
 # some, and the '\$x' confuses others).
 TEST_EOF
-LIST=`make echo_tests`
-LAST=`make echo_suffix`
-for n in $LIST
+
+LIST=`sed -e 's/[[     ]].*//' -e '/^[[#@]]/d' $srcdir/modules`
+for N in $LIST
 do
 do
-       N=`echo $n | sed -e s/${LAST}\$//`
        cat >>Makefile <<TEST_EOF
 
        cat >>Makefile <<TEST_EOF
 
-\$(MODEL)/$N.o : $N.c \\
-       test.priv.h \\
+\$(MODEL)/$N.o : \$(srcdir)/$N.c \\
+       \$(srcdir)/test.priv.h \\
        ncurses_cfg.h
        ncurses_cfg.h
-       @echo compiling $N; \$(CC) -c \$(CFLAGS_DEFAULT) $N.c
+       $SHOW_CC
+       $ECHO_CC\$(CC) -c \$(CFLAGS_DEFAULT) -DMODULE_NAME="$N" \$(srcdir)/$N.c
 TEST_EOF
 done
 TEST_EOF
 done
-],[],sort)
+
+if test -f ../config.guess && test -f ../config.sub
+then
+       cat >>Makefile <<TEST_EOF
+
+# if we used CF_INHERIT for getting these files, we can remove them
+distclean::
+       rm -f config.guess config.sub
+TEST_EOF
+fi
+],[
+AWK="$AWK"
+ECHO_CC="$ECHO_CC"
+ECHO_LD="$ECHO_LD"
+SHOW_CC="$SHOW_LD"
+],cat)