X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=configure.in;h=b71ad8efe406f96c78771ebefed4c89e99cc24bc;hp=01ad5f911874f5805ff17e37912845a3827a7313;hb=HEAD;hpb=b0bdfbb1c78346047c54d8e516a104fcff586e52 diff --git a/configure.in b/configure.in index 01ad5f91..2d6836cb 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,6 @@ dnl*************************************************************************** -dnl Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. * +dnl Copyright 2018-2023,2024 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 * @@ -28,17 +29,21 @@ dnl*************************************************************************** dnl dnl Author: Thomas E. Dickey 1995-on dnl -dnl $Id: configure.in,v 1.649 2017/12/26 22:23:59 tom Exp $ +dnl $Id: configure.in,v 1.779 2024/04/10 08:04:00 tom Exp $ dnl Process this file with autoconf to produce a configure script. 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 dnl --------------------------------------------------------------------------- -AC_PREREQ(2.52.20170501) -AC_REVISION($Revision: 1.649 $) +AC_PREREQ(2.52.20210101) +AC_REVISION($Revision: 1.779 $) AC_INIT(ncurses/base/lib_initscr.c) AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin) +AC_DEFUN([AC_PATH_XTRA],[])dnl ignore dependencies on this + CF_TOP_BUILDDIR CF_SUBST_NCURSES_VERSION CF_VERSION_INFO(NCURSES,ncurses) @@ -56,19 +61,22 @@ CF_CFG_DEFAULTS ### Defaults for ncurses ABI CF_ABI_DEFAULTS +### override ABI version, e.g., packagers +CF_WITH_ABI_ALTERED + ### Checks for programs. AC_ARG_WITH(ada, - [ --without-ada suppress check for Ada95, don't build demo], + [ --without-ada suppress check for Ada compiler, don't build demo], [cf_with_ada=$withval], [cf_with_ada=yes]) + if test "x$cf_with_ada" = xyes then - cf_PROG_CC="gnatgcc gcc cc" + cf_prog_cc="gnatgcc gcc cc" else - cf_PROG_CC="gcc cc" + cf_prog_cc="gcc cc" fi - -CF_PROG_CC($cf_PROG_CC) +CF_PROG_CC($cf_prog_cc) AC_PROG_CPP AC_PROG_GCC_TRADITIONAL @@ -139,10 +147,10 @@ else fi CF_GXX_VERSION -case $GXX_VERSION in -(1*|2.[[0-6]]*) - # GXX=""; CXX=""; ac_cv_prog_gxx=no - # cf_cxx_library=no +case "$GXX_VERSION" in +([[1-9]][[0-9]].*) + ;; +(1.*|2.[[0-6]]*) AC_MSG_WARN(templates do not work) ;; esac @@ -154,7 +162,7 @@ AC_ARG_WITH(cxx-binding, [cf_with_cxx_binding=$cf_with_cxx]) AC_MSG_RESULT($cf_with_cxx_binding) -AC_MSG_CHECKING(if you want to build with Ada95) +AC_MSG_CHECKING(if you want to build with Ada) AC_MSG_RESULT($cf_with_ada) AC_MSG_CHECKING(if you want to install terminal database) @@ -178,22 +186,6 @@ AC_ARG_WITH(progs, [cf_with_progs=yes]) AC_MSG_RESULT($cf_with_progs) -if test -f $srcdir/tack/tack.h; then - if test "x$cross_compiling" = xyes ; then - CF_VERBOSE(ignoring tack because we are cross-compiling) - cf_with_tack=no - else - AC_MSG_CHECKING(if you want to build the tack program) - AC_ARG_WITH(tack, - [ --without-tack suppress build/install with tack program], - [cf_with_tack=$withval], - [cf_with_tack=$cf_with_progs]) - AC_MSG_RESULT($cf_with_tack) - fi -else - cf_with_tack=no -fi - AC_MSG_CHECKING(if you want to build test-programs) AC_ARG_WITH(tests, [ --without-tests suppress build/install with test-programs], @@ -210,13 +202,11 @@ AC_MSG_RESULT($with_curses_h) modules_to_build="ncurses" test "X$cf_with_progs" != Xno && modules_to_build="$modules_to_build progs" -test "X$cf_with_tack" != Xno && modules_to_build="$modules_to_build tack" modules_to_build="$modules_to_build panel menu form" AC_ARG_PROGRAM CF_PROG_AWK -CF_PROG_EGREP CF_PROG_INSTALL CF_PROG_LINT CF_PROG_LN_S @@ -227,7 +217,7 @@ AC_SYS_LONG_FILE_NAMES # of package conflict. cf_config_suffix= AC_ARG_WITH(config-suffix, - [ --with-config-suffix=X suffixes pc-files], + [ --with-config-suffix=X name ncurses*X-config file with X], [case "x$withval" in (xyes|xno) AC_MSG_WARN(expected a value for config-suffix option) @@ -243,9 +233,9 @@ CF_WITH_PKG_CONFIG_LIBDIR CF_ENABLE_PC_FILES if test -z "$MAKE_PC_FILES" then - AC_MSG_CHECKING(for suffix to add to pc-files) + AC_MSG_CHECKING(for suffix to add to pkg-config files) AC_ARG_WITH(pc-suffix, - [ --with-pc-suffix suffixes pc-files], + [[ --with-pc-suffix[=XXX] suffix pkg-config files with XXX]], [case "x$withval" in (xyes|xno) PC_MODULE_SUFFIX= @@ -276,6 +266,7 @@ fi # do this after mixed-case option (tags/TAGS is not as important as tic). AC_PROG_MAKE_SET +CF_MAKE_PHONY CF_MAKE_TAGS CF_MAKEFLAGS @@ -289,16 +280,16 @@ 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_MSG_CHECKING(for an installation directory prefix) AC_ARG_WITH(install-prefix, - [ --with-install-prefix prefixes actual install-location ($DESTDIR)], + [ --with-install-prefix=DESTDIR use DESTDIR as installation directory prefix], [case "x$withval" in (xyes|xno) ;; (*) DESTDIR="$withval" ;; esac]) -AC_MSG_RESULT($DESTDIR) +AC_MSG_RESULT([${DESTDIR:-(none)}]) AC_SUBST(DESTDIR) ############################################################################### @@ -306,6 +297,14 @@ CF_HELP_MESSAGE(Build-Tools Needed to Compile Temporary Applications for Cross-c # 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. + +case "$cf_cv_system_name" in +(*-msvc*) + LDFLAGS="$LDFLAGS user32.lib" + export LDFLAGS + ;; +esac + CF_BUILD_CC ############################################################################### @@ -407,6 +406,10 @@ LIB_SUFFIX= AC_SUBST(LIB_SUFFIX) CF_PATHSEP +# headers needed for checks... +AC_CHECK_DECL(exit) +AC_HEADER_DIRENT + ############################################################################### AC_MSG_CHECKING(if you want to build a separate terminfo library) @@ -423,36 +426,6 @@ AC_ARG_WITH(ticlib, [with_ticlib=no]) AC_MSG_RESULT($with_ticlib) -### Checks for special libraries, must be done up-front. -SHLIB_LIST="" -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 "x$with_dlsym" = xyes ; then - CF_FUNC_DLSYM - if test "x$with_gpm" != xyes ; then - CF_VERBOSE(assuming soname for gpm is $with_gpm) - cf_cv_gpm_soname="$with_gpm" - else - CF_LIB_SONAME([#include ],[if (Gpm_Open(0,0)) Gpm_Close();],gpm) - fi - test "$cf_cv_gpm_soname" != "unknown" && AC_DEFINE_UNQUOTED(LIBGPM_SONAME,"$cf_cv_gpm_soname",[Define as needed to set the gpm share library soname]) - SHLIB_LIST="-ldl $SHLIB_LIST" - else - SHLIB_LIST="-lgpm $SHLIB_LIST" - CF_ADD_LIB(gpm,TEST_LIBS) - fi - AC_DEFINE(HAVE_LIBGPM,1,[Define to 1 if we have the gpm library]) - CF_CHECK_GPM_WGETCH -fi - -CF_WITH_SYSMOUSE - dnl Not all ports of gcc support the -g option if test X"$CC_G_OPT" = X"" ; then @@ -468,7 +441,7 @@ fi AC_SUBST(CXX_G_OPT) AC_MSG_CHECKING(for default loader flags) -case $DFT_LWR_MODEL in +case "$DFT_LWR_MODEL" in (libtool) LD_MODEL='' ;; (normal) LD_MODEL='' ;; (debug) LD_MODEL=$CC_G_OPT ;; @@ -476,9 +449,9 @@ case $DFT_LWR_MODEL in (shared) LD_MODEL='' ;; esac AC_SUBST(LD_MODEL)dnl the type of link (e.g., -g or -pg) -AC_MSG_RESULT($LD_MODEL) +AC_MSG_RESULT([${LD_MODEL:-(none)}]) -case $DFT_LWR_MODEL in +case "$DFT_LWR_MODEL" in (shared) CF_ENABLE_RPATH AC_MSG_CHECKING(if shared libraries should be relinked during install) @@ -493,8 +466,8 @@ esac # we will build libraries one-level down. rel_builddir=.. CF_SHARED_OPTS -for model in $cf_list_models; do - case $model in +for model in $cf_list_models ; do + case "$model" in (libtool) CF_WITH_LIBTOOL_OPTS CF_WITH_EXPORT_SYMS @@ -507,7 +480,7 @@ for model in $cf_list_models; do AC_MSG_CHECKING(if current CFLAGS link properly) AC_TRY_LINK( [#include ], - [printf("Hello work\n");], + [printf("Hello work\\n");], [cf_cflags_work=yes], [cf_cflags_work=no]) AC_MSG_RESULT($cf_cflags_work) @@ -521,6 +494,39 @@ for model in $cf_list_models; do esac done +### Checks for special libraries, must be done up-front. +SHLIB_LIST="" +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 "x$with_dlsym" = xyes ; then + CF_FUNC_DLSYM + if test "x$with_gpm" != xyes ; then + CF_VERBOSE(assuming soname for gpm is $with_gpm) + cf_cv_gpm_soname="$with_gpm" + else + CF_LIB_SONAME([#include ],[if (Gpm_Open(0,0)) Gpm_Close();],gpm) + fi + test "$cf_cv_gpm_soname" != "unknown" && AC_DEFINE_UNQUOTED(LIBGPM_SONAME,"$cf_cv_gpm_soname",[Define as needed to set the gpm share library soname]) + SHLIB_LIST="-ldl $SHLIB_LIST" + CF_ADD_LIB(dl,PRIVATE_LIBS) + else + SHLIB_LIST="-lgpm $SHLIB_LIST" + CF_ADD_LIB(gpm,TEST_LIBS) + CF_ADD_LIB(gpm,PRIVATE_LIBS) + fi + AC_DEFINE(HAVE_LIBGPM,1,[Define to 1 if we have the gpm library]) + CF_CHECK_GPM_WGETCH +fi + +CF_WITH_PCRE2 +CF_WITH_SYSMOUSE + # pretend that ncurses==ncursesw==ncursest AC_MSG_CHECKING(if you want to disable library suffixes) CF_ARG_DISABLE(lib-suffixes, @@ -531,20 +537,37 @@ CF_ARG_DISABLE(lib-suffixes, AC_MSG_RESULT($disable_lib_suffixes) ### If we're building with rpath, try to link non-standard libs that way too. -if test "$DFT_LWR_MODEL" = "shared"; then +if test "$DFT_LWR_MODEL" = "shared" && test "x$cf_cv_enable_rpath" != xno; then CF_DISABLE_RPATH_HACK fi +### Depending on the system, someone may use rpath to build ncurses but not +# want users of the package to rely upon that feature. Give those people an +# option to suppress that detail from EXTRA_LDFLAGS. +EXTRA_PKG_LDFLAGS="$LDFLAGS $EXTRA_LDFLAGS" +if test -n "$EXTRA_PKG_LDFLAGS" +then + AC_MSG_CHECKING(if you want to disable extra LDFLAGS for package-scripts) + CF_ARG_DISABLE(pkg-ldflags, + [ --disable-pkg-ldflags disable extra LDFLAGS for package-scripts], + [disable_pkg_ldflags=yes], + [disable_pkg_ldflags=no], + no) + AC_MSG_RESULT($disable_pkg_ldflags) + test "$disable_pkg_ldflags" = yes && EXTRA_PKG_LDFLAGS= +fi +AC_SUBST(EXTRA_PKG_LDFLAGS) + ############################################################################### CF_HELP_MESSAGE(Fine-Tuning Your Configuration:) ### use option --with-extra-suffix to append suffix to headers and libraries -AC_MSG_CHECKING(if you wish to append extra suffix to header/library paths) +AC_MSG_CHECKING(for extra suffix to append to header/library paths) EXTRA_SUFFIX= AC_ARG_WITH(extra-suffix, - [ --with-extra-suffix=X append extra suffix to header/library paths], + [[ --with-extra-suffix[=X] append extra suffix X to header/library paths]], [case x$withval in - (no) + (xno) ;; (xyes|x) EXTRA_SUFFIX=$cf_cv_abi_version @@ -554,7 +577,7 @@ AC_ARG_WITH(extra-suffix, ;; esac ]) -AC_MSG_RESULT($EXTRA_SUFFIX) +AC_MSG_RESULT([${EXTRA_SUFFIX:-(none)}]) AC_SUBST(EXTRA_SUFFIX) ### use option --disable-overwrite to leave out the link to -lcurses @@ -572,7 +595,7 @@ AC_ARG_ENABLE(database, [use_database=yes]) AC_MSG_RESULT($use_database) -case $host_os in +case "$host_os" in (os2*) TERMINFO_SRC='${top_srcdir}/misc/emx.src' ;; @@ -602,21 +625,57 @@ else fi AC_SUBST(NCURSES_USE_DATABASE) -AC_MSG_CHECKING(for list of fallback descriptions) +AC_MSG_CHECKING(for list of fallback terminal descriptions) AC_ARG_WITH(fallbacks, [ --with-fallbacks=XXX specify list of fallback terminal descriptions], [with_fallback=$withval], [with_fallback=]) -AC_MSG_RESULT($with_fallback) -FALLBACK_LIST=`test "$with_fallback" != no && echo "$with_fallback" | sed -e 's/,/ /g'` +AC_MSG_RESULT([${with_fallback:-(none)}]) + +case ".$with_fallback" in +(.|.no) + FALLBACK_LIST= + ;; +(.yes) + AC_MSG_WARN(expected a list of terminal descriptions) + ;; +(*) + FALLBACK_LIST=`echo "$with_fallback" | sed -e 's/,/ /g'` + ;; +esac + +# The fallback feature in ncurses relies upon tic/infocmp outside the build +# tree for generating the terminal descriptions that will be compiled into the +# library. If your toolchain is old, it may not handle current terminal +# databases. Use configure-options to point to the tools which will be used, +# rather than the first ones found on the $PATH. +AC_CHECK_TOOL(TIC, tic) +AC_CHECK_TOOL(INFOCMP, infocmp) +if test -n "$FALLBACK_LIST" +then + CF_WITH_PATH_PROG(TIC, tic, [for fallbacks], $PATH:/usr/local/ncurses/bin) + CF_WITH_PATH_PROG(INFOCMP, infocmp, [for fallbacks], $PATH:/usr/local/ncurses/bin) + test -z "$TIC" && FALLBACK_LIST= + test -z "$INFOCMP" && FALLBACK_LIST= + if test -z "$FALLBACK_LIST" + then + AC_MSG_WARN(ignoring fallback option because tic/infocmp are not available) + fi +fi +AC_SUBST(TIC) +AC_SUBST(INFOCMP) + +USE_FALLBACKS= +test -z "$FALLBACK_LIST" && USE_FALLBACKS="#" AC_SUBST(FALLBACK_LIST) +AC_SUBST(USE_FALLBACKS) 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 +case "$with_xterm_new" in (no) with_xterm_new=xterm-old;; (*) with_xterm_new=xterm-new;; esac @@ -624,11 +683,20 @@ AC_MSG_RESULT($with_xterm_new) WHICH_XTERM=$with_xterm_new AC_SUBST(WHICH_XTERM) +case $host_os in +(*linux-gnu|*cygwin|*mingw32|*msys) + want_xterm_kbs=DEL + ;; +(*) + want_xterm_kbs=BS + ;; +esac + AC_MSG_CHECKING(if xterm backspace sends BS or DEL) AC_ARG_WITH(xterm-kbs, - [ --with-xterm-kbs=XXX specify if xterm backspace sends BS or DEL], + [[ --with-xterm-kbs[=XXX] specify if xterm backspace sends BS or DEL]], [with_xterm_kbs=$withval], - [with_xterm_kbs=BS]) + [with_xterm_kbs=auto]) case x$with_xterm_kbs in (xyes|xno|xBS|xbs|x8) with_xterm_kbs=BS @@ -636,6 +704,9 @@ case x$with_xterm_kbs in (xDEL|xdel|x127) with_xterm_kbs=DEL ;; +(xauto) + with_xterm_kbs=$want_xterm_kbs + ;; (*) with_xterm_kbs=$withval ;; @@ -644,6 +715,11 @@ AC_MSG_RESULT($with_xterm_kbs) XTERM_KBS=$with_xterm_kbs AC_SUBST(XTERM_KBS) +if test "x$with_xterm_kbs" != "x$want_xterm_kbs" +then + AC_MSG_WARN([expected --with-xterm-kbs=$want_xterm_kbs for $host_os, have $with_xterm_kbs]) +fi + MAKE_TERMINFO= if test "$use_database" = no ; then TERMINFO="${datadir}/terminfo" @@ -659,6 +735,13 @@ CF_WITH_PATHLIST(terminfo-dirs, AC_MSG_RESULT($TERMINFO_DIRS) test -n "$TERMINFO_DIRS" && AC_DEFINE_UNQUOTED(TERMINFO_DIRS,"$TERMINFO_DIRS",[Define as needed to predefine the TERMINFO_DIR searchlist]) +case "x$TERMINFO" in +x???:*) + AC_MSG_WARN(ignoring non-directory/file TERMINFO value) + unset TERMINFO + ;; +esac + AC_MSG_CHECKING(for default terminfo directory) CF_WITH_PATH(default-terminfo-dir, [ --with-default-terminfo-dir=DIR default terminfo directory], @@ -682,7 +765,7 @@ AC_ARG_ENABLE(big-core, [AC_TRY_RUN([ #include #include -int main() { +int main(void) { unsigned long n = 6000000L; char *s = malloc(n); if (s != 0) @@ -769,13 +852,29 @@ AC_ARG_ENABLE(home-terminfo, AC_MSG_RESULT($with_home_terminfo) test "x$with_home_terminfo" = "xyes" && AC_DEFINE(USE_HOME_TERMINFO,1,[Define to 1 if $HOME/.terminfo feature is wanted]) -AC_MSG_CHECKING(if you want to use restricted environment when running as root) +AC_MSG_CHECKING(if you want to permit root to use ncurses environment variables) AC_ARG_ENABLE(root-environ, - [ --disable-root-environ restrict environment when running as root], + [ --disable-root-environ restrict root use of ncurses environment variables], [with_root_environ=$enableval], [with_root_environ=yes]) AC_MSG_RESULT($with_root_environ) -test "x$with_root_environ" = xyes && AC_DEFINE(USE_ROOT_ENVIRON,1,[Define to 1 if environment should be restricted for root user]) +test "x$with_root_environ" = xyes && AC_DEFINE(USE_ROOT_ENVIRON,1,[Define to 1 if root/setuid application is allowed to use ncurses environment]) + +AC_MSG_CHECKING(if you want to permit setuid programs to access all files) +AC_ARG_ENABLE(root-access, + [ --disable-root-access restrict file-access when running setuid], + [with_root_access=$enableval], + [with_root_access=yes]) +AC_MSG_RESULT($with_root_access) +test "x$with_root_access" = xyes && AC_DEFINE(USE_ROOT_ACCESS,1,[Define to 1 if setuid is allowed all file-access]) + +AC_MSG_CHECKING(if you want to permit setuid use of ncurses environment variables) +AC_ARG_ENABLE(setuid-environ, + [ --disable-setuid-environ restrict setuid use of ncurses environment variables], + [with_setuid_environ=$enableval], + [with_setuid_environ=$with_root_environ]) +AC_MSG_RESULT($with_setuid_environ) +test "x$with_setuid_environ" = xyes && AC_DEFINE(USE_SETUID_ENVIRON,1,[Define to 1 if setuid/setgid application is allowed to use ncurses environment]) ### Use option --enable-symlinks to make tic use symlinks, not hard links ### to reduce storage requirements for the terminfo database. @@ -811,27 +910,7 @@ test "x$with_links" = xyes && AC_DEFINE(USE_LINKS,1,[Define to 1 if hardlinks sh test "x$with_symlinks" = xyes && AC_DEFINE(USE_SYMLINKS,1,[Define to 1 if symbolic links should be used in terminfo database]) ### use option --enable-broken-linker to force on use of broken-linker support -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], - [with_broken_linker=${BROKEN_LINKER:-no}]) -AC_MSG_RESULT($with_broken_linker) - -BROKEN_LINKER=0 -if test "x$with_broken_linker" = xyes ; then - AC_DEFINE(BROKEN_LINKER,1,[Define to 1 to work around linkers which cannot link data-only modules]) - BROKEN_LINKER=1 -elif test "$DFT_LWR_MODEL" = shared ; then - case $cf_cv_system_name in - (cygwin*) - AC_DEFINE(BROKEN_LINKER,1,[Define to 1 to work around linkers which cannot link data-only modules]) - BROKEN_LINKER=1 - CF_VERBOSE(cygwin linker is broken anyway) - ;; - esac -fi -AC_SUBST(BROKEN_LINKER) +CF_ENABLE_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) @@ -853,7 +932,7 @@ NCURSES_WINT_T=0 # Check to define _XOPEN_SOURCE "automatically" CPPFLAGS_before_XOPEN="$CPPFLAGS" -CF_XOPEN_SOURCE(500) +CF_XOPEN_SOURCE(600) CPPFLAGS_after_XOPEN="$CPPFLAGS" # Work around breakage on OS X @@ -868,9 +947,9 @@ 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], + [ --disable-widec compile without wide character and UTF-8 support], [with_widec=$enableval], - [with_widec=no]) + [with_widec=$cf_dft_widec]) AC_MSG_RESULT($with_widec) NCURSES_WCWIDTH_GRAPHICS=1 @@ -880,8 +959,17 @@ if test "x$with_widec" = xyes ; then if test "x$disable_lib_suffixes" = xno ; then LIB_SUFFIX="w${LIB_SUFFIX}" fi - AC_DEFINE(USE_WIDEC_SUPPORT,1,[Define to 1 to compile with wide-char/UTF-8 code]) - AC_DEFINE(NCURSES_WIDECHAR,1,[Define to 1 to compile with wide-char/UTF-8 code]) + AC_DEFINE(USE_WIDEC_SUPPORT,1,[Define to 1 to compile with wide character and UTF-8 support]) + AC_DEFINE(NCURSES_WIDECHAR,1,[Define to 1 to compile with wide character and UTF-8 support]) + case "$CPPFLAGS" in + (*_XOPEN_SOURCE=*) + ;; + (*) + AC_MSG_WARN(_XOPEN_SOURCE feature test macro appears to be predefined) + # CPPFLAGS="$CPPFLAGS -DNCURSES_WIDECHAR" + CPPFLAGS_after_XOPEN="$CPPFLAGS_after_XOPEN -DNCURSES_WIDECHAR" + ;; + esac CF_CHECK_WCHAR_H CF_CHECK_WCWIDTH_GRAPHICS @@ -889,7 +977,7 @@ if test "x$with_widec" = xyes ; then # with_overwrite=no NCURSES_CH_T=cchar_t - AC_CHECK_FUNCS(putwc btowc wctob mbtowc wctomb mblen mbrlen mbrtowc wcsrtombs mbsrtowcs wcstombs mbstowcs) + AC_CHECK_FUNCS(putwc btowc wctob wmemchr mbtowc wctomb mblen mbrlen mbrtowc wcsrtombs mbsrtowcs wcstombs mbstowcs) if test "x$ac_cv_func_putwc" != xyes ; then CF_UTF8_LIB if test "$cf_cv_utf8_lib" != no ; then @@ -955,83 +1043,89 @@ else with_tic_depends=no fi -### use option --disable-wattr-macros to suppress wattr* macros from curses.h -AC_MSG_CHECKING(if you want to suppress wattr* macros to help with ncurses5/ncurses6 transition) +### use option --enable-wattr-macros to enable wattr* macros in curses.h +AC_MSG_CHECKING(if you want to enable wattr* macros) AC_ARG_ENABLE(wattr-macros, - [ --disable-wattr-macros suppress wattr* macros to help with ncurses5/ncurses6 transition], + [ --enable-wattr-macros enable wattr* macros], [with_wattr_macros=$enableval], - [with_wattr_macros=yes]) + [with_wattr_macros=no]) if [[ "x$with_wattr_macros" != xyes ]]; then NCURSES_WATTR_MACROS=0 - AC_MSG_RESULT(yes) + AC_MSG_RESULT(no) else NCURSES_WATTR_MACROS=1 - AC_MSG_RESULT(no) + AC_MSG_RESULT(yes) fi AC_SUBST(NCURSES_WATTR_MACROS) CF_WITH_X11_RGB ### 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) +CF_WITH_TYPE(bool, + [ --with-bool=TYPE fall back to TYPE for curses 'bool' typedef], + NCURSES_BOOL, + auto) 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 +if test ! -f "${srcdir}/include/${TERMINFO_CAPS}" +then + AC_MSG_WARN(file not found: "${srcdir}/include/${TERMINFO_CAPS}") + TERMINFO_CAPS=Caps +fi 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, +CF_WITH_TYPE(chtype, [ --with-chtype=TYPE override type of chtype], - [NCURSES_CHTYPE="$withval"], - [NCURSES_CHTYPE=$cf_dft_chtype]) -AC_MSG_RESULT($NCURSES_CHTYPE) + NCURSES_CHTYPE, + $cf_dft_chtype) ### use option --with-ospeed to override ospeed's type -AC_MSG_CHECKING(for type of ospeed) -AC_ARG_WITH(ospeed, +CF_WITH_TYPE(ospeed, [ --with-ospeed=TYPE override type of ospeed variable], - [NCURSES_OSPEED="$withval"], - [NCURSES_OSPEED=short]) -AC_MSG_RESULT($NCURSES_OSPEED) -AC_SUBST(NCURSES_OSPEED) + NCURSES_OSPEED, + short) ### use option --with-mmask-t to override mmask_t's type -AC_MSG_CHECKING(for type of mmask_t) -AC_ARG_WITH(mmask-t, +CF_WITH_TYPE(mmask-t, [ --with-mmask-t=TYPE override type of mmask_t], - [NCURSES_MMASK_T="$withval"], - [NCURSES_MMASK_T=$cf_dft_mmask_t]) -AC_MSG_RESULT($NCURSES_MMASK_T) + NCURSES_MMASK_T, + $cf_dft_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]) + [NCURSES_CCHARW_MAX=$cf_dft_ccharw_max]) AC_MSG_RESULT($NCURSES_CCHARW_MAX) AC_SUBST(NCURSES_CCHARW_MAX) +AC_CHECK_SIZEOF([signed char]) +if test "$ac_cv_sizeof_signed_char" = 1 ; then + NCURSES_SBOOL="signed char" +else + NCURSES_SBOOL="char" +fi +AC_MSG_CHECKING(whether to use signed chars for Boolean array in term.h) +AC_ARG_ENABLE(signed-char, + [ --enable-signed-char use signed chars for Boolean array in term.h], + [with_signed_char=$enableval], + [with_signed_char=$cf_dft_signed_char]) +AC_MSG_RESULT($with_signed_char) +test "x$with_signed_char" != xyes && NCURSES_SBOOL="char" +AC_SUBST(NCURSES_SBOOL) + ### use option --with-tparm-arg to override tparm's argument type -AC_MSG_CHECKING(for type of tparm args) -AC_ARG_WITH(tparm-arg, +CF_WITH_TYPE(tparm-arg, [ --with-tparm-arg=TYPE override parameter type of tparm], - [NCURSES_TPARM_ARG="$withval"], - [NCURSES_TPARM_ARG=$cf_dft_tparm_arg]) -AC_MSG_RESULT($NCURSES_TPARM_ARG) -AC_SUBST(NCURSES_TPARM_ARG) + NCURSES_TPARM_ARG, + $cf_dft_tparm_arg) ### Enable compiling-in rcs id's AC_MSG_CHECKING(if RCS identifiers should be compiled-in) @@ -1065,7 +1159,6 @@ if test "x$with_ext_funcs" = xyes ; then AC_DEFINE(HAVE_RESIZE_TERM,1,[Define to 1 to enable resize_term() function in test-programs]) AC_DEFINE(HAVE_TERM_ENTRY_H,1,[Define to 1 to enable term_entry() function in test-programs]) AC_DEFINE(HAVE_USE_DEFAULT_COLORS,1,[Define to 1 to enable use_default_colors() function in test-programs]) - AC_DEFINE(HAVE_USE_EXTENDED_NAMES,1,[Define to 1 to enable use_extended_names() function in test-programs]) AC_DEFINE(HAVE_USE_SCREEN,1,[Define to 1 to enable use_screen() function in test-programs]) AC_DEFINE(HAVE_USE_WINDOW,1,[Define to 1 to enable use_window() function in test-programs]) AC_DEFINE(HAVE_WRESIZE,1,[Define to 1 to enable wresize() function in test-programs]) @@ -1155,11 +1248,18 @@ AC_ARG_ENABLE(ext-mouse, [with_ext_mouse=$enableval], [with_ext_mouse=$cf_dft_ext_mouse]) AC_MSG_RESULT($with_ext_mouse) -NCURSES_MOUSE_VERSION=1 if test "x$with_ext_mouse" = xyes ; then - NCURSES_MOUSE_VERSION=2 CF_NCURSES_ABI_6 fi + +if test $cf_cv_abi_default -le 5 ; then + NCURSES_MOUSE_VERSION=1 +elif test $cf_cv_abi_default -le 6 ; then + NCURSES_MOUSE_VERSION=2 +else + NCURSES_MOUSE_VERSION=3 +fi + AC_SUBST(NCURSES_MOUSE_VERSION) ### use option --enable-ext-putwin to turn on extended screendumps @@ -1181,21 +1281,6 @@ AC_ARG_ENABLE(no-padding, AC_MSG_RESULT($with_no_padding) test "x$with_no_padding" = xyes && AC_DEFINE(NCURSES_NO_PADDING,1,[Define to 1 to compile with $NCURSES_NO_PADDING code]) -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 "x$with_signed_char" != xyes && 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, @@ -1203,7 +1288,14 @@ AC_ARG_ENABLE(sigwinch, [with_sigwinch=$enableval], [with_sigwinch=$with_ext_funcs]) AC_MSG_RESULT($with_sigwinch) -test "x$with_sigwinch" = xyes && AC_DEFINE(USE_SIGWINCH,1,[Define to 1 to compile with SIGWINCH handler]) +if test "x$with_sigwinch" = xyes +then + AC_DEFINE(USE_SIGWINCH,1,[Define to 1 to compile with SIGWINCH handler]) + cf_cv_enable_sigwinch=1 +else + cf_cv_enable_sigwinch=0 +fi +AC_SUBST(cf_cv_enable_sigwinch) ### use option --enable-tcap-names to allow user to define new capabilities AC_MSG_CHECKING(if you want user-definable terminal capabilities like termcap) @@ -1213,10 +1305,14 @@ AC_ARG_ENABLE(tcap-names, [with_tcap_names=$with_ext_funcs]) AC_MSG_RESULT($with_tcap_names) NCURSES_XNAMES=0 -test "x$with_tcap_names" = xyes && NCURSES_XNAMES=1 +if test "x$with_tcap_names" = xyes; then + NCURSES_XNAMES=1 + AC_DEFINE(NCURSES_XNAMES,1,[Define to 1 to compile with user-definable terminal capabilities]) +fi AC_SUBST(NCURSES_XNAMES) ############################################################################## +CF_HELP_MESSAGE(Reentrant Code:) CF_WITH_PTHREAD if test "x$with_pthread" != xno; then @@ -1254,6 +1350,7 @@ if test "x$with_pthread" = "xyes" ; then enable_reentrant=yes if test "x$cf_cv_weak_symbols" = xyes ; then PTHREAD=-lpthread + CF_ADD_LIB(pthread,PRIVATE_LIBS) fi fi AC_SUBST(PTHREAD) @@ -1276,6 +1373,7 @@ if test "x$with_reentrant" = xyes ; then CF_REMOVE_LIB(LIBS,$LIBS,pthread) CF_ADD_LIB(pthread,TEST_LIBS) CF_ADD_LIB(pthread,TEST_LIBS2) + CF_ADD_LIB(pthread,PRIVATE_LIBS) else # when not using weak symbols but with_reentrant, # add 't' to the library suffix on all platforms @@ -1300,19 +1398,19 @@ if test "x$with_reentrant" = xyes ; then else cf_cv_enable_reentrant=0 cf_cv_enable_opaque="NCURSES_OPAQUE" - NCURSES_SIZE_T=short + NCURSES_SIZE_T=$cf_dft_ordinate_type fi AC_SUBST(cf_cv_enable_reentrant) AC_SUBST(cf_cv_enable_opaque) AC_SUBST(NCURSES_SIZE_T) -AC_MSG_CHECKING(if you want opaque curses-library structures) -CF_ARG_ENABLE(opaque-curses, - [ --enable-opaque-curses make curses WINDOW, etc., "opaque"], - [enable_opaque_curses=yes],[ +AC_MSG_CHECKING(whether curses library structures should be opaque) +CF_ARG_DISABLE(opaque-curses, + [ --disable-opaque-curses do not make WINDOW, etc., structures opaque], + [enable_opaque_curses=no],[ test "$cf_cv_enable_reentrant" = 1 && enable_opaque_curses=yes - test "$cf_cv_enable_reentrant" = 1 || enable_opaque_curses=no + test "$cf_cv_enable_reentrant" = 1 || enable_opaque_curses=$cf_dft_opaque_curses ]) AC_MSG_RESULT($enable_opaque_curses) @@ -1320,22 +1418,22 @@ test "$cf_cv_enable_reentrant" = 1 && \ test "$enable_opaque_curses" = no && \ AC_MSG_ERROR(reentrant configuration requires opaque library) -AC_MSG_CHECKING(if you want opaque form-library structures) -AC_ARG_ENABLE(opaque-form, - [ --enable-opaque-form make form-library structures "opaque"], - [enable_opaque_form=yes],[enable_opaque_form=no]) +AC_MSG_CHECKING(whether form library structures should be opaque) +CF_ARG_DISABLE(opaque-form, + [ --disable-opaque-form do not make form library structures opaque], + [enable_opaque_form=no],[enable_opaque_form=$cf_dft_opaque_curses]) AC_MSG_RESULT($enable_opaque_form) -AC_MSG_CHECKING(if you want opaque menu-library structures) -AC_ARG_ENABLE(opaque-menu, - [ --enable-opaque-menu make menu-library structures "opaque"], - [enable_opaque_menu=yes],[enable_opaque_menu=no]) +AC_MSG_CHECKING(whether menu library structures should be opaque) +CF_ARG_DISABLE(opaque-menu, + [ --disable-opaque-menu do not make menu library structures opaque], + [enable_opaque_menu=no],[enable_opaque_menu=$cf_dft_opaque_curses]) AC_MSG_RESULT($enable_opaque_menu) -AC_MSG_CHECKING(if you want opaque panel-library structures) -AC_ARG_ENABLE(opaque-panel, - [ --enable-opaque-panel make panel-library structures "opaque"], - [enable_opaque_panel=yes],[enable_opaque_panel=no]) +AC_MSG_CHECKING(whether panel library structures should be opaque) +CF_ARG_DISABLE(opaque-panel, + [ --disable-opaque-panel do not make panel library structures opaque], + [enable_opaque_panel=no],[enable_opaque_panel=$cf_dft_opaque_curses]) AC_MSG_RESULT($enable_opaque_panel) NCURSES_OPAQUE=0; test "$enable_opaque_curses" = yes && NCURSES_OPAQUE=1 @@ -1372,6 +1470,14 @@ AC_ARG_WITH(develop, [with_develop=no]) AC_MSG_RESULT($with_develop) +### use option --enable-check-size to detect screensize with CPR +AC_MSG_CHECKING(if you want to check screensize of serial terminals) +AC_ARG_ENABLE(check-size, + [ --enable-check-size compile-in code to detect screensize of serial terminals],, + [enable_check_size=$with_develop]) +AC_MSG_RESULT($enable_check_size) +test "x$enable_check_size" = xyes && AC_DEFINE(USE_CHECK_SIZE,1,[Define to 1 to compile-in code to detect screensize]) + ### 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, @@ -1418,6 +1524,38 @@ AC_ARG_ENABLE(colorfgbg, AC_MSG_RESULT($with_colorfgbg) test "x$with_colorfgbg" = xyes && AC_DEFINE(USE_COLORFGBG,1,[Define to 1 to compile-in experimental $COLORFGBG code]) +### use option --enable-fvisibility to turn on use of gcc-specific feature +AC_MSG_CHECKING(if you want to use gcc -fvisibility option) +AC_ARG_ENABLE(fvisibility, + [ --enable-fvisibility compile with -fvisibility=hidden], + [cf_with_fvisibility=$enableval], + [cf_with_fvisibility=no]) +AC_MSG_RESULT($cf_with_fvisibility) + +NCURSES_IMPEXP= +NCURSES_CXX_IMPEXP= +if test "x$cf_with_fvisibility" = xyes; then + CF_CHECK_FVISIBILITY($CC,CFLAGS,cf_cv_fvisibility_hidden) + if test "x$cf_cv_fvisibility_hidden" = xyes + then + CF_ADD_CFLAGS([-fvisibility=hidden]) + NCURSES_IMPEXP="__attribute__ ((visibility(\"default\")))" + fi + if test -n "$CXX" + then + AC_LANG_PUSH(C++) + CF_CHECK_FVISIBILITY($CXX,CXXFLAGS,cf_cv_fvisibility_hidden2) + if test "x$cf_cv_fvisibility_hidden2" = xyes + then + CF_ADD_CXXFLAGS([-fvisibility=hidden]) + NCURSES_CXX_IMPEXP="__attribute__ ((visibility(\"default\")))" + fi + AC_LANG_POP + fi +fi +AC_SUBST(NCURSES_IMPEXP) +AC_SUBST(NCURSES_CXX_IMPEXP) + ### 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, @@ -1437,7 +1575,6 @@ AC_ARG_ENABLE(safe-sprintf, [with_safe_sprintf=$enableval], [with_safe_sprintf=no]) AC_MSG_RESULT($with_safe_sprintf) -test "x$with_safe_sprintf" = xyes && AC_DEFINE(USE_SAFE_SPRINTF,1,[Define to 1 to compile with experimental safe-sprintf code]) ### use option --disable-scroll-hints to turn off use of scroll-hints scrolling logic # when hashmap is used scroll hints are useless @@ -1457,7 +1594,39 @@ AC_ARG_ENABLE(wgetch-events, [with_wgetch_events=$enableval], [with_wgetch_events=no]) AC_MSG_RESULT($with_wgetch_events) -test "x$with_wgetch_events" = xyes && AC_DEFINE(NCURSES_WGETCH_EVENTS,1,[Define to 1 to compile with wgetch-events code]) +if test "x$with_wgetch_events" = xyes ; then + AC_DEFINE(NCURSES_WGETCH_EVENTS,1,[Define to 1 to compile with wgetch-events code]) + NCURSES_WGETCH_EVENTS=1 +else + NCURSES_WGETCH_EVENTS=0 +fi +AC_SUBST(NCURSES_WGETCH_EVENTS) + +case "$cf_cv_system_name" in +(*mingw32*|*mingw64*|*-msvc*) + AC_MSG_CHECKING(if you want experimental-Windows driver) + AC_ARG_ENABLE(exp-win32, + [ --enable-exp-win32 compile with experimental-Windows driver], + [with_exp_win32=$enableval], + [with_exp_win32=no]) + AC_MSG_RESULT($with_exp_win32) + if test "x$with_exp_win32" = xyes + then + AC_DEFINE(EXP_WIN32_DRIVER,1,[Define to 1 to compile with experimental win32 driver]) + EXP_WIN32_DRIVER=1 + INTERNALS_HDR='[$](INCDIR)/nc_win32.h' + else + INTERNALS_HDR='[$](INCDIR)/nc_mingw.h' + EXP_WIN32_DRIVER=0 + fi + ;; +(*) + EXP_WIN32_DRIVER=0 + INTERNALS_HDR= + ;; +esac +AC_SUBST(EXP_WIN32_DRIVER) +AC_SUBST(INTERNALS_HDR) ############################################################################### CF_HELP_MESSAGE(Testing/development Options:) @@ -1473,21 +1642,33 @@ else fi AC_SUBST(ECHO_LINK) +# --disable-stripping is used for debugging +CF_INSTALL_OPTS + +# If we're avoiding relinking of shared libraries during install, that is to +# avoid modifying the build-tree. For the same reason, avoid doing ranlib if +# the install program has "-p" (for preserving timestamps). +cf_cv_do_reranlib=yes +if test "x$cf_cv_install_p" = xyes +then + if test "x$cf_cv_do_relink" != xyes + then + cf_cv_do_reranlib=no + INSTALL_OPT_P="-p" + INSTALL_LIB="$INSTALL_LIB $INSTALL_OPT_P" + fi +fi +AC_SUBST(INSTALL_OPT_P) + ### 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_MSG_RESULT($with_warnings) - -if test "x$with_warnings" = "xyes"; then - CF_ADD_ADAFLAGS(-gnatg) - CF_GCC_WARNINGS(Wno-unknown-pragmas Wswitch-enum) +CF_ENABLE_WARNINGS(Wno-unknown-pragmas Wswitch-enum,yes) + +if test "x$enable_warnings" = "xyes"; then + CF_ADD_ADAFLAGS(-gnatwa -gnatyg) if test "x$cf_with_cxx" = xyes ; then CF_GXX_WARNINGS(Wno-unused) fi fi -CF_GCC_ATTRIBUTES CF_ENABLE_STRING_HACKS ### use option --enable-assertions to turn on generation of assertion code @@ -1552,18 +1733,17 @@ AC_SUBST(ADA_TRACE) CF_DISABLE_GNAT_PROJECTS ### Checks for libraries. -case $cf_cv_system_name in +case "$cf_cv_system_name" in (*mingw32*|*mingw64*) - CPPFLAGS="$CPPFLAGS -DWINVER=0x0501 -DWIN32_LEAN_AND_MEAN" - LIBS=" -lpsapi $LIBS" + # Note: WINVER may be a problem with Windows 10 + if test "x$with_exp_win32" = xyes ; then + CPPFLAGS="$CPPFLAGS -DWINVER=0x0600 -DWIN32_LEAN_AND_MEAN" + else + CPPFLAGS="$CPPFLAGS -DWINVER=0x0501 -DWIN32_LEAN_AND_MEAN" + fi + CF_CHECK_LIBSSP ;; (*) -AC_CHECK_FUNC(gettimeofday, - AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function]),[ - -AC_CHECK_LIB(bsd, gettimeofday, - AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function]) - CF_ADD_LIB(bsd))])dnl CLIX: bzero, select, gettimeofday ;; esac @@ -1571,8 +1751,6 @@ CF_MATH_LIB(MATH_LIB,pow(sin(x),x)) AC_SUBST(MATH_LIB) ### Checks for header files. -AC_STDC_HEADERS -AC_HEADER_DIRENT AC_HEADER_TIME CF_REGEX @@ -1584,25 +1762,25 @@ limits.h \ locale.h \ math.h \ poll.h \ -sys/bsdtypes.h \ +sys/auxv.h \ sys/ioctl.h \ sys/param.h \ sys/poll.h \ sys/select.h \ sys/time.h \ sys/times.h \ -ttyent.h \ unistd.h \ wctype.h \ ) CF_GETOPT_HEADER -# check for ISC (this may also define _POSIX_SOURCE) -# Note: even non-Posix ISC needs to declare fd_set -if test "x$ISC" = xyes ; then - AC_CHECK_LIB(cposix,main) - AC_CHECK_LIB(inet,bzero,CF_ADD_LIB(inet))dnl also 'select()' +CF_CHECK_ENVIRON(environ) +CF_CHECK_GETENV +if test "x$cf_cv_consistent_getenv" = xno && \ + test "x$cf_with_trace" = xyes +then + AC_MSG_WARN(The NCURSES_TRACE environment variable is not supported with this configuration) fi CF_SYS_TIME_SELECT @@ -1613,7 +1791,7 @@ AC_C_CONST CF_C_INLINE(NCURSES_INLINE,1200) CF_SIG_ATOMIC_T -if test $NCURSES_CHTYPE = auto ; then +if test "$NCURSES_CHTYPE" = auto ; then CF_TYPEOF_CHTYPE else cf_cv_typeof_chtype=$NCURSES_CHTYPE @@ -1627,7 +1805,7 @@ 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 +if test "$NCURSES_MMASK_T" = auto ; then cf_cv_typeof_mmask_t=long else cf_cv_typeof_mmask_t=$NCURSES_MMASK_T @@ -1640,37 +1818,53 @@ CF_ERRNO CF_LINK_DATAONLY ### Checks for library functions. +CF_FUNC_GETTIME AC_CHECK_FUNCS( \ +fpathconf \ getcwd \ +getauxval \ getegid \ geteuid \ getopt \ -getttynam \ +getuid \ issetugid \ +localeconv \ poll \ -putenv \ remove \ select \ setbuf \ setbuffer \ -setenv \ +setfsuid \ setvbuf \ sigaction \ sigvec \ +snprintf \ strdup \ strstr \ +sysconf \ tcgetpgrp \ -tdestroy \ times \ tsearch \ vsnprintf \ ) +CF_FUNC_GETTTYNAM + if test "x$ac_cv_func_getopt" = xno && \ test "x$cf_with_progs$cf_with_tests" != xnono; then AC_MSG_ERROR(getopt is required for building programs) fi +if test "x$with_safe_sprintf" = xyes +then + if test "x$ac_cv_func_vsnprintf" = xyes + then + AC_MSG_WARN(will use vsnprintf instead of safe-sprintf option) + else + AC_DEFINE(USE_SAFE_SPRINTF,1,[Define to 1 to compile with experimental safe-sprintf code]) + fi +fi + if test "x$with_getcap" = "xyes" ; then CF_CGETENT fi @@ -1697,8 +1891,10 @@ CF_TYPE_SIGACTION CF_SIZECHANGE CF_FUNC_MEMMOVE CF_FUNC_POLL +CF_MB_LEN_MAX CF_VA_COPY AC_FUNC_VFORK +CF_FOPEN_BIN_R # special check for test/ditto.c CF_FUNC_OPENPTY @@ -1718,7 +1914,7 @@ if test "$with_hashed_db" != no ; then fi dnl We'll do our own -g libraries, unless the user's overridden via $CFLAGS -if test -z "$cf_user_CFLAGS" && test "$with_no_leaks" = no ; then +if test -z "$cf_user_CFLAGS" && test "$enable_leaks" = yes ; then CF_STRIP_G_OPT(CFLAGS) CF_STRIP_G_OPT(CXXFLAGS) fi @@ -1732,8 +1928,8 @@ if test -n "$CXX" ; then CF_STDCPP_LIBRARY CF_PROG_CC_C_O(CXX,[$CXXFLAGS $CPPFLAGS]) - case $GXX_VERSION in - (1*|2.[0-6]*) + case "$GXX_VERSION" in + (1.*|2.[[0-6]]*|[[1-9]][[0-9]].*) cf_cxx_library=yes ;; (*-2.7*|2.7*) @@ -1749,6 +1945,7 @@ if test -n "$CXX" ; then CF_BOOL_DECL CF_BOOL_SIZE CF_ETIP_DEFINES + CF_CPP_OVERRIDE CF_CPP_PARAM_INIT CF_CPP_STATIC_CAST CF_CXX_AR_FLAGS @@ -1789,11 +1986,11 @@ AC_SUBST(CXXLIBS) # 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 +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 +elif test "$cf_cv_builtin_bool" = 0 then # C++ has no bool USE_CXX_BOOL=0 @@ -1803,7 +2000,7 @@ else fi AC_SUBST(USE_CXX_BOOL) -CF_HELP_MESSAGE(Ada95 Binding Options:) +CF_HELP_MESSAGE(Ada 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. @@ -1820,7 +2017,7 @@ dnl libtool -TD 20070714 fi dnl Check for availability of GNU Ada Translator (GNAT). -dnl At the moment we support no other Ada95 compiler. +dnl At the moment we support no other Ada compiler. if test "$cf_with_ada" != "no" ; then CF_PROG_GNAT if test "x$cf_cv_prog_gnat_correct" = xyes; then @@ -1841,6 +2038,9 @@ dnl At the moment we support no other Ada95 compiler. CF_WITH_ADA_INCLUDE CF_WITH_ADA_OBJECTS CF_WITH_ADA_SHAREDLIB + + # allow the Ada binding to be renamed + CF_WITH_ADA_LIBNAME(AdaCurses) fi fi else @@ -1850,6 +2050,16 @@ fi # do this "late" to avoid conflict with header-checks if test "x$with_widec" = xyes ; then AC_CHECK_SIZEOF(wchar_t) + # cross-compiling to mingw can run into the problem that attempting to + # link with the regex library fails, causing the test to not set this to + # a number. "recent" autoconf does not address this problem either -TD + if test -z "$ac_cv_sizeof_wchar_t" + then + CF_VERBOSE(test failed (assume 2)) + sed /SIZEOF_WCHAR_T/d confdefs.h >confdefs.tmp + mv confdefs.tmp confdefs.h + echo "#define SIZEOF_WCHAR_T 2" >>confdefs.h + fi fi ### Construct the ncurses library-subsets, if any, from this set of keywords: @@ -1889,15 +2099,27 @@ LIB_SUBSETS="${LIB_SUBSETS}base" # 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 + case "$cf_cv_system_name" in (*mingw32*|*mingw64*) - LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo+port_win32con" + if test "x$with_exp_win32" = xyes ; then + LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo+port_win32" + else + LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo+port_win32con" + fi CPPFLAGS="$CPPFLAGS -DUSE_WIN32CON_DRIVER" ;; (*) LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo" ;; esac +elif test "x$with_exp_win32" = xyes ; then + case "$cf_cv_system_name" in + (*mingw32*|*mingw64*) + LIB_SUBSETS="${LIB_SUBSETS}+port_win32" + ;; + (*) + ;; + esac fi test "x$with_widec" = xyes && LIB_SUBSETS="${LIB_SUBSETS}+widechar" @@ -1943,8 +2165,8 @@ fi # do not want -ldl in build except as needed for -lncurses dependency if test "x$with_dlsym" = xyes ; then -if test $DFT_LWR_MODEL = shared || \ - test $DFT_LWR_MODEL = libtool ; then +if test "$DFT_LWR_MODEL" = shared || \ + test "$DFT_LWR_MODEL" = libtool ; then CF_REMOVE_LIB(LIBS,$LIBS,dl) fi fi @@ -1972,9 +2194,9 @@ if test "$with_ticlib" != no ; then if test "x$with_ticlib" != xyes ; then TICS_NAME=$with_ticlib - TICS_SUFFIX="`echo ${DFT_LIB_SUFFIX}|sed -e "s/^${USE_LIB_SUFFIX}//"`" - TICS_ARG_SUFFIX="${with_ticlib}`echo ${USE_ARG_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`" - TICS_DEP_SUFFIX="${with_ticlib}`echo ${DFT_DEP_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`" + TICS_SUFFIX="`echo "${DFT_LIB_SUFFIX}" |sed -e "s/^${USE_LIB_SUFFIX}//"`" + TICS_ARG_SUFFIX="${with_ticlib}`echo "${USE_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_SUFFIX=${DFT_LIB_SUFFIX} @@ -1999,9 +2221,9 @@ if test "$with_termlib" != no ; then if test "x$with_termlib" != xyes ; then TINFO_NAME=$with_termlib - TINFO_SUFFIX="`echo ${DFT_LIB_SUFFIX}|sed -e "s/^${USE_LIB_SUFFIX}//"`" - TINFO_ARG_SUFFIX="${with_termlib}`echo ${USE_ARG_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`" - TINFO_DEP_SUFFIX="${with_termlib}`echo ${DFT_DEP_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`" + TINFO_SUFFIX="`echo "${DFT_LIB_SUFFIX}" |sed -e "s/^${USE_LIB_SUFFIX}//"`" + TINFO_ARG_SUFFIX="${with_termlib}`echo "${USE_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} @@ -2049,7 +2271,7 @@ else fi if test "$DFT_LWR_MODEL" = shared ; then - case $cf_cv_system_name in + case "$cf_cv_system_name" in (cygwin*|msys*) # "lib" files have ".dll.a" suffix, "cyg"or "msys-" files have ".dll" TINFO_SUFFIX=.dll @@ -2075,7 +2297,7 @@ fi TINFO_LDFLAGS2=`echo "$TINFO_LDFLAGS" | sed -e 's,-L\.\./,-L../../,'` AC_SUBST(TINFO_LDFLAGS2) -case $DFT_LWR_MODEL in +case "$DFT_LWR_MODEL" in (normal|debug|profile) CF_LDFLAGS_STATIC ;; @@ -2085,8 +2307,8 @@ AC_MSG_CHECKING(where we will install curses.h) AC_SUBST(includesubdir) includesubdir= if test "$with_overwrite" = no && \ - ( test "x$includedir" = 'x${prefix}/include' || \ - test "x$includedir" = "x${prefix}/include" ) + { test "x$includedir" = 'x${prefix}/include' || \ + test "x$includedir" = "x${prefix}/include"; } then includesubdir="/ncurses${USE_LIB_SUFFIX}" fi @@ -2102,24 +2324,39 @@ fi fi WITH_OVERWRITE=$with_overwrite +### At least on MinGW a shared library build without libtool +### requires adding the additional libs to the link list. +case "$cf_cv_system_name" in +(*mingw32*|*mingw64*) + if test "$DFT_LWR_MODEL" != "libtool"; then + SHLIB_LIST="$SHLIB_LIST ${LIBS}" + fi + ;; +*) ;; +esac + AC_SUBST(WITH_OVERWRITE) AC_SUBST(TICS_LIST) AC_SUBST(TINFO_LIST) AC_SUBST(SHLIB_LIST) -# 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,1,[Define to 1 if we have slk_color for test-programs]) +# pkgsrc uses these +CF_HELP_MESSAGE(Library basenames for pkgsrc:) +CF_WITH_LIB_BASENAME(FORM_NAME,form) +CF_WITH_LIB_BASENAME(MENU_NAME,menu) +CF_WITH_LIB_BASENAME(PANEL_NAME,panel) +CF_WITH_LIB_BASENAME(CXX_NAME,cxx,ncurses++) + ### Construct the list of subdirectories for which we'll customize makefiles ### with the appropriate compile-rules. CF_SRC_MODULES($modules_to_build) if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = "xyes"; then + SUB_MAKEFILES="$SUB_MAKEFILES Ada95/src/library.gpr:Ada95/src/library.gpr.in" SUB_MAKEFILES="$SUB_MAKEFILES Ada95/gen/adacurses${USE_CFG_SUFFIX}-config:Ada95/gen/adacurses-config.in" SUB_MAKEFILES="$SUB_MAKEFILES man/adacurses${USE_CFG_SUFFIX}-config.1:man/MKada_config.in" fi @@ -2135,9 +2372,6 @@ AC_DEFINE_UNQUOTED(NCURSES_PATHSEP,'$PATH_SEPARATOR',[Define to override ':' as AC_DEFINE_UNQUOTED(NCURSES_VERSION_STRING, "${NCURSES_MAJOR}.${NCURSES_MINOR}.${NCURSES_PATCH}",[Define to 1 if machine has ample memory for tic]) -### Now that we're done running tests, add the compiler-warnings, if any -CF_ADD_CFLAGS($EXTRA_CFLAGS) - ### Define substitutions for header files to avoid name-pollution CF_SUBST_IF(["x$cf_cv_have_tcgetattr" = xyes], HAVE_TCGETATTR, 1, 0) CF_SUBST_IF(["x$ac_cv_header_stdint_h" = xyes], HAVE_STDINT_H, 1, 0) @@ -2156,16 +2390,6 @@ SUB_MAKEFILES="$SUB_MAKEFILES misc/gen-pkgconfig:misc/gen-pkgconfig.in" fi 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 @@ -2176,19 +2400,8 @@ AC_SUBST(MAKE_TESTS) ADAHTML_DIR=../../doc/html/ada AC_SUBST(ADAHTML_DIR) -# these could be configurable, but are not currently -PANEL_NAME=panel -MENU_NAME=menu -FORM_NAME=form -CXX_NAME=ncurses++ - -AC_SUBST(PANEL_NAME) -AC_SUBST(MENU_NAME) -AC_SUBST(FORM_NAME) -AC_SUBST(CXX_NAME) - # workaround for OS/2 (20151017) -case $cf_cv_system_name in +case "$cf_cv_system_name" in (os2*) LIBTOOL_OPTS_CXX="-os2dllname ncurs++" ;; @@ -2199,7 +2412,7 @@ esac AC_SUBST(LIBTOOL_OPTS_CXX) # workaround for g++ versus Solaris (20131116) -case $cf_cv_system_name in +case "$cf_cv_system_name" in (solaris2*) case "x$CPPFLAGS" in (*-D_XOPEN_SOURCE_EXTENDED*) @@ -2213,7 +2426,7 @@ esac # Help to automatically enable the extended curses features when using either # the *-config or the ".pc" files by adding defines. -AC_MSG_CHECKING(for defines to add to ncurses${USE_CFG_SUFFIX}-config script) +AC_MSG_CHECKING(for defines to add to ncurses${USE_CFG_SUFFIX}${cf_config_suffix}-config script) PKG_CFLAGS= for cf_loop1 in $CPPFLAGS_after_XOPEN do @@ -2267,7 +2480,12 @@ fi AC_SUBST(MISC_INSTALL_DATA) AC_SUBST(MISC_UNINSTALL_DATA) -SUB_SCRIPTS= +if test "x$cf_with_db_install" = "xno" || test "x$TERMINFO_SRC" = "xno"; then + MAKE_DATABASE="#" +else + MAKE_DATABASE="$MAKE_TERMINFO" +fi +AC_SUBST(MAKE_DATABASE) dnl Override the package used for exported symbols if test -n "$PACKAGE" @@ -2283,7 +2501,7 @@ cf_filter_syms=no if test -n "$RESULTING_SYMS" then cf_filter_syms=$cf_dft_filter_syms - CF_VERBOSE(will map symbols to ABI=$cf_cv_abi_version) + CF_VERBOSE(will map symbols to ABI=$cf_cv_abi_default) fi if test "x$WILDCARD_SYMS" = xno @@ -2294,7 +2512,7 @@ fi test "x$cf_with_trace" = xyes && NCURSES_INLINE= UNALTERED_SYMS=`echo "$RESULTING_SYMS" | sed -e 's/\\$/\\\\$/g'` -if test $cf_filter_syms = yes +if test "$cf_filter_syms" = yes then RESULTING_SYMS=resulting.map fi @@ -2309,8 +2527,10 @@ else fi AC_SUBST(ADAGEN_LDFLAGS) AC_SUBST(CHECK_BUILD) +AC_SUBST(PRIVATE_LIBS) -AC_DEFINE(HAVE_CURSES_DATA_BOOLNAMES,1,[definition needed for in-tree build of tack]) +# This is used for the *-config script and *.pc data files. +CF_LD_SEARCHPATH AC_OUTPUT( \ include/MKterm.h.awk \ @@ -2318,29 +2538,32 @@ AC_OUTPUT( \ include/ncurses_dll.h \ include/termcap.h \ include/unctrl.h \ - $SUB_SCRIPTS \ + man/man_db.renames \ $SUB_MAKEFILES \ Makefile,[ if test "x$cf_with_tests" != xno ; then - CF_PRG_RULES([$srcdir/test/mk-test.awk INSTALL=no ECHO_LINK="$ECHO_LD"], test) + CF_PRG_RULES(["$srcdir/test/mk-test.awk" INSTALL=no ECHO_LINK="$ECHO_LD"], test) fi CF_LIB_RULES($SRC_SUBDIRS) +CF_OUTPUT_MANPAGE_RENAMES if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = "xyes"; then if test -z "$USE_OLD_MAKERULES" ; then - $AWK -f $srcdir/Ada95/mk-1st.awk <$srcdir/Ada95/src/modules >>Ada95/src/Makefile + $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" ALTERNATE_SYMS="$ALTERNATE_SYMS" +AWK="$AWK" +CXX_NAME="$CXX_NAME" DFT_ARG_SUFFIX="$DFT_ARG_SUFFIX" DFT_LWR_MODEL="$DFT_LWR_MODEL" ECHO_LD="$ECHO_LD" EXTRA_SUFFIX="$EXTRA_SUFFIX" +FORM_NAME="$FORM_NAME" LDCONFIG="$LDCONFIG" LIBTOOL_VERSION="$LIBTOOL_VERSION" LIB_NAME="$LIB_NAME" @@ -2350,10 +2573,13 @@ LIB_SUFFIX="$LIB_SUFFIX" LIB_TRACING="$LIB_TRACING" LN_S="$LN_S" MAKE_TERMINFO="$MAKE_TERMINFO" +MANPAGE_RENAMES="$MANPAGE_RENAMES" +MENU_NAME="$MENU_NAME" NCURSES_MAJOR="$NCURSES_MAJOR" NCURSES_MINOR="$NCURSES_MINOR" NCURSES_OSPEED="$NCURSES_OSPEED" NCURSES_PATCH="$NCURSES_PATCH" +PANEL_NAME="$PANEL_NAME" SRC_SUBDIRS="$SRC_SUBDIRS" TERMINFO="$TERMINFO" TICS_ARG_SUFFIX="$TICS_ARG_SUFFIX" @@ -2375,11 +2601,16 @@ WITH_CURSES_H="$with_curses_h" WITH_ECHO="${enable_echo:=yes}" WITH_OVERWRITE="$with_overwrite" cf_LIST_MODELS="$cf_list_models" +cf_cv_VERSION_GNATMAKE=$cf_cv_VERSION_GNATMAKE +cf_cv_VERSION_GPRBUILD=$cf_cv_VERSION_GPRBUILD +cf_cv_abi_default="$cf_cv_abi_default" cf_cv_abi_version="$cf_cv_abi_version" cf_cv_do_relink="$cf_cv_do_relink" +cf_cv_do_reranlib="$cf_cv_do_reranlib" 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_make_PHONY="$cf_cv_make_PHONY" 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_prog_gnat_correct=$cf_cv_prog_gnat_correct @@ -2397,6 +2628,7 @@ cf_with_manpages="$cf_with_manpages" cf_with_tests="$cf_with_tests" host="$host" target="$target" +verbose="$verbose" with_shared_cxx="$with_shared_cxx" ],cat)dnl