ncurses 6.0 - patch 20151226
[ncurses.git] / test / configure.in
index 35e2b47cb9aec6920f3cf8f0d803834e15514fb5..d5d3a671451033cf0127d1b9a50becc456502892 100644 (file)
@@ -1,5 +1,5 @@
 dnl***************************************************************************
 dnl***************************************************************************
-dnl Copyright (c) 1998,1999 Free Software Foundation, Inc.                   *
+dnl Copyright (c) 1998-2014,2015 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 +26,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 <dickey@clark.net> 1996,1997,1998
+dnl Author: Thomas E. Dickey 1996, etc.
 dnl
 dnl
-dnl $Id: configure.in,v 1.29 1999/12/19 03:12:13 tom Exp $
+dnl $Id: configure.in,v 1.125 2015/10/10 20:23:49 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,91 +36,134 @@ 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 dickey@clark.net (Thomas Dickey)
-AC_PREREQ(2.12)
+dnl See http://invisible-island.net/autoconf/ for additional information.
+dnl ---------------------------------------------------------------------------
+AC_PREREQ(2.52.20030208)
 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
+
+AC_PROG_MAKE_SET
+CF_PROG_CC
+AC_PROG_CPP
+AC_PROG_AWK
+CF_PROG_INSTALL
+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)
-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)
 
 
-dnl SunOS 4.x
-AC_ARG_WITH(5lib,
-       [  --with-5lib             use SunOS sysv-libraries],
-       [LIBS="-L/usr/5lib $LIBS"
-        CPPFLAGS="$CPPFLAGS -I/usr/5include"])
-
-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 && 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_cv_screen=curses
+cf_cv_libtype=
+
+AC_EXEEXT
+AC_OBJEXT
+
+CF_GCC_ATTRIBUTES
+CF_XOPEN_SOURCE
+CF_SIG_ATOMIC_T
+
+dnl ---------------------------------------------------------------------------
+CF_HELP_MESSAGE(General Options:)
+CF_PKG_CONFIG
+CF_DISABLE_ECHO
+
+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 ---------------------------------------------------------------------------
+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//'`
+       ;;
+(curses|curses_*)
+       CF_NETBSD_FORM_H
+       CF_NETBSD_MENU_H
+       ;;
+esac
 
 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)
+case $cf_cv_screen in
+(pdcurses)
+       ;;
+(*)
+       # look for curses-related libraries
+       CF_CHECK_CURSES_LIB(panel,$cf_cv_libtype,new_panel)
+       CF_CHECK_CURSES_LIB(menu,$cf_cv_libtype,menu_driver)
+       CF_CHECK_CURSES_LIB(form,$cf_cv_libtype,form_driver)
 
 
-AC_TYPE_SIGNAL
+       # look for curses-related headers
+       AC_CHECK_HEADERS( \
+               nc_alloc.h \
+               nomacros.h \
+               form.h \
+               menu.h \
+               panel.h \
+               term_entry.h \
+               )
+       ;;
+esac
 
 AC_STDC_HEADERS
 AC_HEADER_TIME
 AC_CHECK_HEADERS( \
 
 AC_STDC_HEADERS
 AC_HEADER_TIME
 AC_CHECK_HEADERS( \
-form.h \
 getopt.h \
 getopt.h \
-menu.h \
-nc_alloc.h \
-panel.h \
+locale.h \
+math.h \
+stdarg.h \
 sys/ioctl.h \
 sys/select.h \
 sys/time.h \
 sys/ioctl.h \
 sys/select.h \
 sys/time.h \
@@ -128,69 +171,225 @@ termios.h \
 unistd.h \
 )
 
 unistd.h \
 )
 
+CF_GETOPT_HEADER
+
 AC_CHECK_FUNCS( \
 AC_CHECK_FUNCS( \
+getopt \
 gettimeofday \
 gettimeofday \
+)
+
+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( \
+assume_default_colors \
+chgat \
+color_set \
+filter \
+getbegx \
+getcurx \
+getmaxx \
+getnstr \
+getparx \
+getwin \
+mvvline \
+mvwvline \
 napms \
 napms \
+putwin \
+resize_term \
 resizeterm \
 resizeterm \
-strdup \
+ripoffline \
+scr_dump \
+setupterm \
+slk_color \
+slk_init \
+termattrs \
+tgetent \
+tigetnum \
+tigetstr \
+typeahead \
 use_default_colors \
 use_default_colors \
+use_env \
+use_extended_names \
+use_screen \
+use_window \
+vid_puts \
+vidputs \
 vsscanf \
 vsscanf \
+vw_printw \
+wchgat \
+winsstr \
 wresize \
 wresize \
+wsyncdown \
 )
 
 )
 
-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
+
+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)
+
+               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)
+
+               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([
+#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)
+
+CF_SYS_TIME_SELECT
+
+# 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
+
+CF_FUNC_CURSES_VERSION
+
+CF_CURSES_ACS_MAP
+if test "$cf_enable_widec" = yes; then
+       CF_CURSES_WACS_MAP
+       CF_CURSES_WACS_SYMBOLS
+fi
+
+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(ospeed)
+CF_CURSES_CHECK_DATA(boolnames)
+CF_CURSES_CHECK_DATA(boolfnames)
 
 dnl ---------------------------------------------------------------------------
 
 dnl ---------------------------------------------------------------------------
-dnl [CF_SYS_TIME_SELECT]
-AC_MSG_CHECKING(if sys/time.h conflicts with sys/select.h)
-AC_CACHE_VAL(cf_cv_sys_time_select,[
-AC_TRY_COMPILE([
-#if HAVE_SYS_TIME_H
-#include <sys/time.h>
-#endif
-#if 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
+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) \$(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)