ncurses 5.7 - patch 20090124
[ncurses.git] / test / configure.in
index f28ce772df6f6339eabe626183e1ba60b8d3b640..66985a4e15b2b238a60ffb95f8613d85c11fa837 100644 (file)
@@ -1,23 +1,34 @@
-dnl*****************************************************************************
-dnl Copyright 1996,1997 by Thomas E. Dickey <dickey@clark.net>                 *
-dnl All Rights Reserved.                                                       *
-dnl                                                                            *
-dnl Permission to use, copy, modify, and distribute this software and its      *
-dnl documentation for any purpose and without fee is hereby granted, provided  *
-dnl that the above copyright notice appear in all copies and that both that    *
-dnl copyright notice and this permission notice appear in supporting           *
-dnl documentation, and that the name of the above listed copyright holder(s)   *
-dnl not be used in advertising or publicity pertaining to distribution of the  *
-dnl software without specific, written prior permission. THE ABOVE LISTED      *
-dnl COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,  *
-dnl INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO     *
-dnl EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY         *
-dnl SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER       *
-dnl RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF       *
-dnl CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN        *
-dnl CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.                   *
-dnl*****************************************************************************
-dnl $Id: configure.in,v 1.15 1997/05/06 00:36:02 tom Exp $
+dnl***************************************************************************
+dnl Copyright (c) 1998-2007,2008 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 "Software"), to deal in the Software without restriction, including      *
+dnl without limitation the rights to use, copy, modify, merge, publish,      *
+dnl distribute, distribute with modifications, sublicense, and/or sell       *
+dnl copies of the Software, and to permit persons to whom the Software is    *
+dnl furnished to do so, subject to the following conditions:                 *
+dnl                                                                          *
+dnl The above copyright notice and this permission notice shall be included  *
+dnl in all copies or substantial portions of the Software.                   *
+dnl                                                                          *
+dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+dnl                                                                          *
+dnl Except as contained in this notice, the name(s) of the above copyright   *
+dnl holders shall not be used in advertising or otherwise to promote the     *
+dnl sale, use or other dealings in this Software without prior written       *
+dnl authorization.                                                           *
+dnl***************************************************************************
+dnl
+dnl Author: Thomas E. Dickey 1996, etc.
+dnl
+dnl $Id: configure.in,v 1.67 2008/09/06 22:10: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)
@@ -25,22 +36,66 @@ 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.13.20020210)
 AC_INIT(ncurses.c)
 AC_INIT(ncurses.c)
+AC_CONFIG_HEADER(ncurses_cfg.h:ncurses_tst.hin)
+
+CF_INHERIT_SCRIPT(config.guess)
+CF_INHERIT_SCRIPT(config.sub)
+CF_CHECK_CACHE
 
 
+AC_PROG_MAKE_SET
 AC_PROG_CC
 AC_PROG_CC
+AC_PROG_CPP
+AC_PROG_AWK
 
 
-CC_G_OPT="-g"                          AC_SUBST(CC_G_OPT)
+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)
 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_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)
-EXTRA_LIBS=""                          AC_SUBST(EXTRA_LIBS)
-LIB_NAME=curses                                AC_SUBST(LIB_NAME)
-LINT=lint                              AC_SUBST(LINT)
-LINT_OPTS=""                           AC_SUBST(LINT_OPTS)
-TEST_ARGS=""                           AC_SUBST(TEST_ARGS)
+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)
+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)
+LINT=lint                                              AC_SUBST(LINT)
+LINT_OPTS=""                                   AC_SUBST(LINT_OPTS)
+LOCAL_LDFLAGS=""                               AC_SUBST(LOCAL_LDFLAGS)
+MATH_LIB="-lm"                                 AC_SUBST(MATH_LIB)
+PTHREAD="-lm"                                  AC_SUBST(PTHREAD)
+TEST_ARGS=""                                   AC_SUBST(TEST_ARGS)
+TEST_DEPS=""                                   AC_SUBST(TEST_DEPS)
+TEST_LIBS=""                                   AC_SUBST(TEST_LIBS)
+TINFO_ARGS='$(LIBS_CURSES)'            AC_SUBST(TINFO_ARGS)
+cf_cv_abi_version=""                   AC_SUBST(cf_cv_abi_version)
+cf_cv_rel_version=""                   AC_SUBST(cf_cv_rel_version)
+
+cf_cv_screen=curses
+cf_cv_libtype=
+
+AC_EXEEXT
+AC_OBJEXT
+
+CF_ANSI_CC_REQD
+CF_GCC_ATTRIBUTES
+CF_XOPEN_SOURCE
+AC_C_CONST
+CF_SIG_ATOMIC_T
+
+CF_DISABLE_ECHO
+CF_ENABLE_WARNINGS
+
+CF_WITH_CURSES_DIR
 
 dnl SunOS 4.x
 AC_ARG_WITH(5lib,
 
 dnl SunOS 4.x
 AC_ARG_WITH(5lib,
@@ -48,50 +103,75 @@ AC_ARG_WITH(5lib,
        [LIBS="-L/usr/5lib $LIBS"
         CPPFLAGS="$CPPFLAGS -I/usr/5include"])
 
        [LIBS="-L/usr/5lib $LIBS"
         CPPFLAGS="$CPPFLAGS -I/usr/5include"])
 
+dnl ---------------------------------------------------------------------------
+dnl NcursesW, installed in conventional location
+AC_ARG_WITH(ncursesw,
+       [  --with-ncursesw         use wide ncurses-libraries (installed)],
+       [cf_cv_screen=ncursesw],[
+
 dnl Ncurses, installed in conventional location
 AC_ARG_WITH(ncurses,
        [  --with-ncurses          use ncurses-libraries (installed)],
 dnl Ncurses, installed in conventional location
 AC_ARG_WITH(ncurses,
        [  --with-ncurses          use ncurses-libraries (installed)],
-       [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=ncurses],[
+
+AC_ARG_WITH(pdcurses,
+       [  --with-pdcurses         compile/link with pdcurses X11 library],
+       [cf_cv_screen=pdcurses])])])
+
+case $cf_cv_screen in
+curses)
+       CF_CURSES_CPPFLAGS
+       CF_NCURSES_VERSION
+       CF_CURSES_LIBS
+       ;;
+ncurses)
+       CF_NCURSES_CPPFLAGS
+       CF_NCURSES_LIBS
+       ;;
+ncursesw)
+       cf_cv_libtype=w
+       CF_UTF8_LIB
+       CF_NCURSES_CPPFLAGS(ncursesw)
+       CF_NCURSES_LIBS(ncursesw)
+       ;;
+pdcurses) #(vi
+       CF_PDCURSES_X11
+       ;;
+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_LIB($LIB_NAME,initscr)
-AC_CHECK_LIB(form,form_driver,,,-lcurses)
-AC_CHECK_LIB(menu,menu_driver,,,-lcurses)
-AC_CHECK_LIB(panel,new_panel,,,-lcurses)
+case $cf_cv_screen in #(vi
+pdcurses) #(vi
+       ;;
+*)
+       # look for curses-related libraries
+       AC_CHECK_LIB(panel$cf_cv_libtype,new_panel)
+       AC_CHECK_LIB(menu$cf_cv_libtype,menu_driver)
+       AC_CHECK_LIB(form$cf_cv_libtype,form_driver)
+
+       # look for curses-related headers
+       AC_CHECK_HEADERS( \
+               nc_alloc.h \
+               nomacros.h \
+               form.h \
+               menu.h \
+               panel.h \
+               )
+       ;;
+esac
 
 AC_TYPE_SIGNAL
 
 AC_STDC_HEADERS
 AC_HEADER_TIME
 AC_CHECK_HEADERS( \
 
 AC_TYPE_SIGNAL
 
 AC_STDC_HEADERS
 AC_HEADER_TIME
 AC_CHECK_HEADERS( \
-form.h \
 getopt.h \
 getopt.h \
-menu.h \
-nc_alloc.h \
-panel.h \
+locale.h \
+stdarg.h \
 sys/ioctl.h \
 sys/select.h \
 sys/time.h \
 sys/ioctl.h \
 sys/select.h \
 sys/time.h \
@@ -101,82 +181,119 @@ unistd.h \
 
 AC_CHECK_FUNCS( \
 gettimeofday \
 
 AC_CHECK_FUNCS( \
 gettimeofday \
+mblen \
+mbrlen \
+mbrtowc \
+mbsrtowcs \
+mbstowcs \
+mbtowc \
+strdup \
+wcsrtombs \
+wcstombs \
+)
+
+CF_CURSES_FUNCS( \
+chgat \
+color_set \
+filter \
+getbegx \
+getcurx \
+getmaxx \
+getnstr \
+getparx \
+getwin \
+mvvline \
+mvwvline \
 napms \
 napms \
+putwin \
+resize_term \
 resizeterm \
 resizeterm \
-strdup \
+ripoffline \
+setupterm \
+slk_color \
+slk_init \
+termattrs \
+tgetent \
+tigetnum \
+tigetstr \
+typeahead \
+use_default_colors \
 vsscanf \
 vsscanf \
+wchgat \
+winsstr \
+wresize \
 )
 
 )
 
-AC_CHECKING([for SCO by checking on /usr/bin/scosh])
-AC_PROGRAM_CHECK(COULD_BE_SCO, [scosh], maybe, maybenot)
-if test "$COULD_BE_SCO" = "maybe"
-then
-       AC_DEFINE(SYSTEM_LOOKS_LIKE_SCO)
+AC_CACHE_CHECK(for ncurses extended functions,cf_cv_ncurses_ext_funcs,[
+AC_TRY_LINK([
+#include <${cf_cv_ncurses_header-curses.h}>],
+[
+       (void) assume_default_colors (0, 0);
+       (void) curses_version ();
+       (void) define_key (0, 0);
+       (void) is_term_resized (0, 0);
+       (void) key_defined (0);
+       (void) keybound (0, 0);
+       (void) keyok (0, 0);
+       (void) resize_term (0, 0);
+       (void) resizeterm (0, 0);
+       (void) use_default_colors ();
+       (void) use_extended_names (0);
+       (void) wresize (0, 0, 0);],
+       [cf_cv_ncurses_ext_funcs=yes],
+       [cf_cv_ncurses_ext_funcs=no])
+])
+test "$cf_cv_ncurses_ext_funcs" != no && AC_DEFINE(NCURSES_EXT_FUNCS)
+
+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)
+else
+       AC_DEFINE(USE_WIDEC_SUPPORT,0)
 fi
 
 fi
 
-dnl Things that we don't need (or must override) if we're not building ncurses
-ECHO_LINK='@ echo linking $@ ... ;'
-AC_SUBST(ECHO_LINK)
-
-LD_MODEL=""
-AC_SUBST(LD_MODEL)
-
-LOCAL_LDFLAGS=""
-AC_SUBST(LOCAL_LDFLAGS)
-
-nc_cv_abi_version=""
-AC_SUBST(nc_cv_abi_version)
-
-TEST_DEPS=""
-AC_SUBST(TEST_DEPS)
-
-LIB_PREFIX="-l"
-AC_SUBST(LIB_PREFIX)
-
-DFT_DEP_SUFFIX=""
-AC_SUBST(DFT_DEP_SUFFIX)
-
-rm -f config_h.in
-echo '@DEFS@' >config_h.in
-
-changequote({,})dnl
-AC_OUTPUT(config_h Makefile,{
-
-### Special editing.  We generate ncurses_cfg.h directly to allow all filenames
-### to be MSDOS-compatible, as well as to make the list of definitions be
-### dynamically determined by the configuration script -- a consideration when
-### doing type-clean development testing.
-
-echo creating ncurses_cfg.h
-rm -f ncurses_cfg.h
-echo "/* generated by configure-script
- * On host: $SYS_NAME
- */
-#ifndef NC_CONFIG_H
-#define NC_CONFIG_H" >ncurses_cfg.h
-sed    -e '/^ -D/!d' \
-       -e 's/ -D/\
-#define /g' \
-       -e 's/\(#define [A-Za-z_][A-Za-z0-9_]*\)=/\1    /g' \
-       -e 's@\\@@g' \
-       config_h | sort >>ncurses_cfg.h
-echo "
-       /* The C compiler may not treat these properly, but C++ has to */
-#ifdef __cplusplus
-#undef const
-#undef inline
-#endif
-
-#endif /* NC_CONFIG_H */" >> ncurses_cfg.h
-echo removing config_h
-rm config_h
-},{
-### Special initialization commands, used to pass information from the
-### configuration-run into config.status
-
-SYS_NAME="`(uname -a || hostname) 2>/dev/null | sed 1q`"
-if test -z "\$SYS_NAME"; then SYS_NAME=unknown;fi
-})
-changequote([,])dnl
-
-rm -f config_h.in
+CF_SYS_TIME_SELECT
+CF_FUNC_CURSES_VERSION
+CF_CURSES_ACS_MAP
+CF_CURSES_WACS_MAP
+CF_CURSES_CHECK_TYPE(attr_t,long)
+CF_CURSES_CHECK_TYPE(mbstate_t,long)
+
+TEST_ARGS="$LIBS"
+LIBS=
+
+dnl ---------------------------------------------------------------------------
+
+AC_OUTPUT(Makefile,[
+CF_PRG_RULES([$srcdir/mk-test.awk 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
+LIST=`sed -e 's/[[     ]].*//' -e '/^[[#@]]/d' $srcdir/modules`
+for N in $LIST
+do
+       cat >>Makefile <<TEST_EOF
+
+\$(MODEL)/$N.o : $N.c \\
+       test.priv.h \\
+       ncurses_cfg.h
+       @echo compiling $N; \$(CC) -c \$(CFLAGS_DEFAULT) $N.c
+TEST_EOF
+done
+],[
+AWK="$AWK"
+ECHO_LD="$ECHO_LD"
+],cat)