dnl***************************************************************************
-dnl Copyright 2018-2019,2020 Thomas E. Dickey *
+dnl Copyright 2018-2021,2022 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
dnl Author: Thomas E. Dickey 1995-on
dnl
-dnl $Id: configure.in,v 1.726 2020/12/05 21:29:46 tom Exp $
+dnl $Id: configure.in,v 1.748 2022/09/10 18:17:55 tom Exp $
dnl Process this file with autoconf to produce a configure script.
dnl
dnl For additional information, see
dnl https://invisible-island.net/autoconf/my-autoconf.html
dnl
dnl ---------------------------------------------------------------------------
-AC_PREREQ(2.52.20200111)
-AC_REVISION($Revision: 1.726 $)
+AC_PREREQ(2.52.20210101)
+AC_REVISION($Revision: 1.748 $)
AC_INIT(ncurses/base/lib_initscr.c)
AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
fi
CF_GXX_VERSION
-case $GXX_VERSION in
+case "$GXX_VERSION" in
([[1-9]][[0-9]].*)
;;
(1.*|2.[[0-6]]*)
[cf_with_progs=yes])
AC_MSG_RESULT($cf_with_progs)
-if test -f $srcdir/tack/tack.h; then
+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
AC_ARG_PROGRAM
CF_PROG_AWK
-CF_PROG_EGREP
CF_PROG_INSTALL
CF_PROG_LINT
CF_PROG_LN_S
# 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
# 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
+case "$cf_cv_system_name" in
(*-msvc*)
LDFLAGS="$LDFLAGS user32.lib"
export LDFLAGS
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 ;;
AC_SUBST(LD_MODEL)dnl the type of link (e.g., -g or -pg)
AC_MSG_RESULT($LD_MODEL)
-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)
# 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
AC_MSG_CHECKING(if current CFLAGS link properly)
AC_TRY_LINK(
[#include <stdio.h>],
- [printf("Hello work\n");],
+ [printf("Hello work\\n");],
[cf_cflags_work=yes],
[cf_cflags_work=no])
AC_MSG_RESULT($cf_cflags_work)
### 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="$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)
AC_ARG_WITH(extra-suffix,
[ --with-extra-suffix=X append extra suffix to header/library paths],
[case x$withval in
- (no)
+ (xno)
;;
(xyes|x)
EXTRA_SUFFIX=$cf_cv_abi_version
[use_database=yes])
AC_MSG_RESULT($use_database)
-case $host_os in
+case "$host_os" in
(os2*)
TERMINFO_SRC='${top_srcdir}/misc/emx.src'
;;
[ --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
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],
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)
+fi
+
MAKE_TERMINFO=
if test "$use_database" = no ; then
TERMINFO="${datadir}/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 is allowed to use ncurses environment])
+
+AC_MSG_CHECKING(if you want to permit setuid programs to access all files)
+AC_ARG_ENABLE(root-environ,
+ [ --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])
### Use option --enable-symlinks to make tic use symlinks, not hard links
### to reduce storage requirements for the terminfo database.
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])
+ 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
# 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
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)
[ --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)
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_ARG_ENABLE(signed-char,
[ --enable-signed-char compile using signed Boolean's in term.h],
[with_signed_char=$enableval],
- [with_signed_char=no])
+ [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)
[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
+
+case $cf_cv_abi_version in
+(5)
+ NCURSES_MOUSE_VERSION=1
+ ;;
+(6)
+ NCURSES_MOUSE_VERSION=2
+ ;;
+([789])
+ NCURSES_MOUSE_VERSION=3
+ ;;
+esac
+
AC_SUBST(NCURSES_MOUSE_VERSION)
### use option --enable-ext-putwin to turn on extended screendumps
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)
[ --enable-opaque-curses make curses WINDOW, etc., "opaque"],
[enable_opaque_curses=yes],[
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)
fi
AC_SUBST(NCURSES_WGETCH_EVENTS)
-case $cf_cv_system_name in
+case "$cf_cv_system_name" in
(*mingw32*|*mingw64*|*-msvc*)
AC_MSG_CHECKING(if you want experimental-Windows driver)
AC_ARG_ENABLE(exp-win32,
### use option --enable-warnings to turn on all gcc warnings
CF_ENABLE_WARNINGS(Wno-unknown-pragmas Wswitch-enum,yes)
-if test "x$with_warnings" = "xyes"; then
- CF_ADD_ADAFLAGS(-gnatg)
+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
CF_DISABLE_GNAT_PROJECTS
### Checks for libraries.
-case $cf_cv_system_name in
+case "$cf_cv_system_name" in
(*mingw32*|*mingw64*)
+ # 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"
+ CPPFLAGS="$CPPFLAGS -DWINVER=0x0600 -DWIN32_LEAN_AND_MEAN"
else
- CPPFLAGS="$CPPFLAGS -DWINVER=0x0501 -DWIN32_LEAN_AND_MEAN"
+ CPPFLAGS="$CPPFLAGS -DWINVER=0x0501 -DWIN32_LEAN_AND_MEAN"
fi
- # Note: WINVER may be a problem with Windows 10
+ CF_CHECK_LIBSSP
;;
(*)
AC_CHECK_FUNC(gettimeofday,
sys/select.h \
sys/time.h \
sys/times.h \
-ttyent.h \
unistd.h \
wctype.h \
)
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
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
### Checks for library functions.
AC_CHECK_FUNCS( \
+fpathconf \
getcwd \
getegid \
geteuid \
getopt \
-getttynam \
issetugid \
localeconv \
poll \
setbuf \
setbuffer \
setenv \
+setfsuid \
setvbuf \
sigaction \
sigvec \
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
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
CF_STDCPP_LIBRARY
CF_PROG_CC_C_O(CXX,[$CXXFLAGS $CPPFLAGS])
- case $GXX_VERSION in
+ case "$GXX_VERSION" in
(1.*|2.[[0-6]]*|[[1-9]][[0-9]].*)
cf_cxx_library=yes
;;
CF_BOOL_DECL
CF_BOOL_SIZE
CF_ETIP_DEFINES
+ CF_CPP_OVERRIDE
CF_CPP_PARAM_INIT
CF_CPP_STATIC_CAST
CF_CXX_AR_FLAGS
# 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
# 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*)
if test "x$with_exp_win32" = xyes ; then
LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo+port_win32"
;;
esac
elif test "x$with_exp_win32" = xyes ; then
- case $cf_cv_system_name in
+ case "$cf_cv_system_name" in
(*mingw32*|*mingw64*)
LIB_SUBSETS="${LIB_SUBSETS}+port_win32"
;;
# 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
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}
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}
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
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
;;
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
### 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
+case "$cf_cv_system_name" in
(*mingw32*|*mingw64*)
if test "$DFT_LWR_MODEL" != "libtool"; then
SHLIB_LIST="$SHLIB_LIST ${LIBS}"
AC_SUBST(ADAHTML_DIR)
# workaround for OS/2 (20151017)
-case $cf_cv_system_name in
+case "$cf_cv_system_name" in
(os2*)
LIBTOOL_OPTS_CXX="-os2dllname ncurs++"
;;
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*)
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
$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)
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
],[
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