]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - aclocal.m4
ncurses 6.2 - patch 20211009
[ncurses.git] / aclocal.m4
index eaaf235cab576a30e8322c51a020acefe3ca0c7f..df1aebbbd05d8f9a297ecb5dc791a6b80037935b 100644 (file)
@@ -29,7 +29,7 @@ dnl***************************************************************************
 dnl
 dnl Author: Thomas E. Dickey 1995-on
 dnl
-dnl $Id: aclocal.m4,v 1.947 2021/01/09 10:23:08 tom Exp $
+dnl $Id: aclocal.m4,v 1.977 2021/09/05 21:32:31 tom Exp $
 dnl Macros used in NCURSES auto-configuration script.
 dnl
 dnl These macros are maintained separately from NCURSES.  The copyright on
@@ -264,9 +264,9 @@ CXXFLAGS="$CFLAGS"
 CFLAGS="$cf_save_CXXFLAGS"
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_ADD_INCDIR version: 16 updated: 2020/12/31 20:19:42
+dnl CF_ADD_INCDIR version: 17 updated: 2021/09/04 06:35:04
 dnl -------------
-dnl Add an include-directory to $CPPFLAGS.  Don't add /usr/include, since it's
+dnl Add an include-directory to $CPPFLAGS.  Don't add /usr/include, since it is
 dnl redundant.  We don't normally need to add -I/usr/local/include for gcc,
 dnl but old versions (and some misinstalled ones) need that.  To make things
 dnl worse, gcc 3.x may give error messages if -I/usr/local/include is added to
@@ -415,6 +415,25 @@ ifelse([$5],NONE,,[{ test -z "$5" || test "x$5" = xNONE || test "x$4" != "x$5";
 }
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl CF_APPEND_CFLAGS version: 3 updated: 2021/09/05 17:25:40
+dnl ----------------
+dnl Use CF_ADD_CFLAGS after first checking for potential redefinitions.
+dnl $1 = flags to add
+dnl $2 = if given makes this macro verbose.
+define([CF_APPEND_CFLAGS],
+[
+for cf_add_cflags in $1
+do
+       case "x$cf_add_cflags" in
+       (x-[[DU]]*)
+               CF_REMOVE_CFLAGS($cf_add_cflags,CFLAGS,[$2])
+               CF_REMOVE_CFLAGS($cf_add_cflags,CPPFLAGS,[$2])
+               ;;
+       esac
+       CF_ADD_CFLAGS([$cf_add_cflags],[$2])
+done
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl CF_APPEND_TEXT version: 1 updated: 2017/02/25 18:58:55
 dnl --------------
 dnl use this macro for appending text without introducing an extra blank at
@@ -604,10 +623,10 @@ else      AC_MSG_RESULT(no)
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_BOOL_SIZE version: 17 updated: 2020/10/24 19:48:55
+dnl CF_BOOL_SIZE version: 18 updated: 2021/09/04 06:35:04
 dnl ------------
 dnl Test for the size of 'bool' in the configured C++ compiler (e.g., a type).
-dnl Don't bother looking for bool.h, since it's been deprecated.
+dnl Don't bother looking for bool.h, since it has been deprecated.
 dnl
 dnl If the current compiler is C rather than C++, we get the bool definition
 dnl from <stdbool.h>.
@@ -794,6 +813,45 @@ AC_SUBST(BUILD_EXEEXT)
 AC_SUBST(BUILD_OBJEXT)
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl CF_C11_NORETURN version: 3 updated: 2021/03/28 11:36:23
+dnl ---------------
+AC_DEFUN([CF_C11_NORETURN],
+[
+AC_MSG_CHECKING(if you want to use C11 _Noreturn feature)
+CF_ARG_ENABLE(stdnoreturn,
+       [  --enable-stdnoreturn    enable C11 _Noreturn feature for diagnostics],
+       [enable_stdnoreturn=yes],
+       [enable_stdnoreturn=no])
+AC_MSG_RESULT($enable_stdnoreturn)
+
+if test $enable_stdnoreturn = yes; then
+AC_CACHE_CHECK([for C11 _Noreturn feature], cf_cv_c11_noreturn,
+       [AC_TRY_COMPILE([
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdnoreturn.h>
+static _Noreturn void giveup(void) { exit(0); }
+       ],
+       [if (feof(stdin)) giveup()],
+       cf_cv_c11_noreturn=yes,
+       cf_cv_c11_noreturn=no)
+       ])
+else
+       cf_cv_c11_noreturn=no,
+fi
+
+if test "$cf_cv_c11_noreturn" = yes; then
+       AC_DEFINE(HAVE_STDNORETURN_H, 1,[Define if <stdnoreturn.h> header is available and working])
+       AC_DEFINE_UNQUOTED(STDC_NORETURN,_Noreturn,[Define if C11 _Noreturn keyword is supported])
+       HAVE_STDNORETURN_H=1
+else
+       HAVE_STDNORETURN_H=0
+fi
+
+AC_SUBST(HAVE_STDNORETURN_H)
+AC_SUBST(STDC_NORETURN)
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl CF_CC_ENV_FLAGS version: 10 updated: 2020/12/31 18:40:20
 dnl ---------------
 dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content
@@ -1054,10 +1112,10 @@ fi
 CF_CHECK_EXTERN_DATA($1,ifelse([$2],,int,[$2]))
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_CHECK_EXTERN_DATA version: 4 updated: 2015/04/18 08:56:57
+dnl CF_CHECK_EXTERN_DATA version: 5 updated: 2021/09/04 06:35:04
 dnl --------------------
 dnl Check for existence of external data in the current set of libraries.  If
-dnl we can modify it, it's real enough.
+dnl we can modify it, it is real enough.
 dnl $1 = the name to check
 dnl $2 = its type
 AC_DEFUN([CF_CHECK_EXTERN_DATA],
@@ -1289,21 +1347,34 @@ if test "$cf_cv_check_gpm_wgetch" != yes ; then
 fi
 ])])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_CHECK_LIBTOOL_VERSION version: 1 updated: 2013/04/06 18:03:09
+dnl CF_CHECK_LIBTOOL_VERSION version: 2 updated: 2021/05/01 16:24:34
 dnl ------------------------
 dnl Show the version of libtool
 dnl
 dnl Save the version in a cache variable - this is not entirely a good thing,
 dnl but the version string from libtool is very ugly, and for bug reports it
 dnl might be useful to have the original string.
+dnl
+dnl There is an imitation in OpenBSD, which has no apparent use other than to
+dnl deny that it is GNU libtool.  Just ignore it.
 AC_DEFUN([CF_CHECK_LIBTOOL_VERSION],[
 if test -n "$LIBTOOL" && test "$LIBTOOL" != none
 then
        AC_MSG_CHECKING(version of $LIBTOOL)
        CF_LIBTOOL_VERSION
        AC_MSG_RESULT($cf_cv_libtool_version)
-       if test -z "$cf_cv_libtool_version" ; then
-               AC_MSG_ERROR(This is not GNU libtool)
+       if test -n "$cf_cv_libtool_version"
+       then
+               cf_check_libtool_version=`$LIBTOOL --version 2>&1 | sed -e '/^$/d' -e 's,[[()]],...,g' -e 's,[[ ]],-,g' -e '2,$d'`
+               case "x$cf_check_libtool_version" in
+               (*...GNU-libtool...*)
+                       ;;
+               (*)
+                       AC_MSG_ERROR(This is not GNU libtool)
+                       ;;
+               esac
+       else
+               AC_MSG_ERROR(No version found for $LIBTOOL)
        fi
 else
        AC_MSG_ERROR(GNU libtool has not been found)
@@ -1551,7 +1622,7 @@ if test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then
 fi
 ])
 dnl ---------------------------------------------------------------------------
-dnl CF_CONST_X_STRING version: 6 updated: 2021/01/01 13:31:04
+dnl CF_CONST_X_STRING version: 7 updated: 2021/06/07 17:39:17
 dnl -----------------
 dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most
 dnl character-strings.
@@ -1581,7 +1652,7 @@ AC_TRY_COMPILE(
 #include <stdlib.h>
 #include <X11/Intrinsic.h>
 ],
-[String foo = malloc(1); (void)foo],[
+[String foo = malloc(1); free((void*)foo)],[
 
 AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[
        AC_TRY_COMPILE(
@@ -1812,9 +1883,9 @@ done
 AC_SUBST(DIRS_TO_MAKE)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_DISABLE_ECHO version: 13 updated: 2015/04/18 08:56:57
+dnl CF_DISABLE_ECHO version: 14 updated: 2021/09/04 06:35:04
 dnl ---------------
-dnl You can always use "make -n" to see the actual options, but it's hard to
+dnl You can always use "make -n" to see the actual options, but it is hard to
 dnl pick out/analyze warning messages when the compile-line is long.
 dnl
 dnl Sets:
@@ -1860,7 +1931,7 @@ CF_ARG_DISABLE(gnat-projects,
 AC_MSG_RESULT($enable_gnat_projects)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_DISABLE_LEAKS version: 8 updated: 2021/01/05 20:05:09
+dnl CF_DISABLE_LEAKS version: 9 updated: 2021/04/03 16:41:50
 dnl ----------------
 dnl Combine no-leak checks with the libraries or tools that are used for the
 dnl checks.
@@ -1873,9 +1944,9 @@ AC_REQUIRE([CF_WITH_VALGRIND])
 AC_MSG_CHECKING(if you want to perform memory-leak testing)
 AC_ARG_ENABLE(leaks,
        [  --disable-leaks         test: free permanent memory, analyze leaks],
-       [enable_leaks=no],
+       [enable_leaks=$enableval],
        [enable_leaks=yes])
-dnl TODO - drop with_no_leaks
+dnl with_no_leaks is more readable...
 if test "x$enable_leaks" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi
 AC_MSG_RESULT($with_no_leaks)
 
@@ -2669,13 +2740,14 @@ esac
 
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_GCC_ATTRIBUTES version: 23 updated: 2021/01/03 18:30:50
+dnl CF_GCC_ATTRIBUTES version: 24 updated: 2021/03/20 12:00:25
 dnl -----------------
 dnl Test for availability of useful gcc __attribute__ directives to quiet
 dnl compiler warnings.  Though useful, not all are supported -- and contrary
 dnl to documentation, unrecognized directives cause older compilers to barf.
 AC_DEFUN([CF_GCC_ATTRIBUTES],
 [AC_REQUIRE([AC_PROG_FGREP])dnl
+AC_REQUIRE([CF_C11_NORETURN])dnl
 
 if test "$GCC" = yes || test "$GXX" = yes
 then
@@ -2712,8 +2784,8 @@ cat > "conftest.$ac_ext" <<EOF
 #define GCC_SCANFLIKE(fmt,var)  /*nothing*/
 #endif
 extern void wow(char *,...) GCC_SCANFLIKE(1,2);
-extern void oops(char *,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
-extern void foo(void) GCC_NORETURN;
+extern GCC_NORETURN void oops(char *,...) GCC_PRINTFLIKE(1,2);
+extern GCC_NORETURN void foo(void);
 int main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { (void)argc; (void)argv; return 0; }
 EOF
        cf_printf_attribute=no
@@ -2911,7 +2983,7 @@ rm -rf ./conftest*
 AC_SUBST(EXTRA_CFLAGS)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_GETOPT_HEADER version: 7 updated: 2021/01/01 13:31:04
+dnl CF_GETOPT_HEADER version: 8 updated: 2021/06/19 19:16:16
 dnl ----------------
 dnl Check for getopt's variables which are commonly defined in stdlib.h,
 dnl unistd.h or (nonstandard) in getopt.h
@@ -2924,7 +2996,7 @@ for cf_header in stdio.h stdlib.h unistd.h getopt.h
 do
 AC_TRY_COMPILE([
 #include <$cf_header>],
-[int x = optind; char *y = optarg],
+[int x = optind; char *y = optarg; (void)x; (void)y],
 [cf_cv_getopt_header=$cf_header
  break])
 done
@@ -4090,7 +4162,7 @@ then
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_LD_SEARCHPATH version: 2 updated: 2019/09/26 20:34:14
+dnl CF_LD_SEARCHPATH version: 3 updated: 2021/03/05 19:13:35
 dnl ----------------
 dnl Try to obtain the linker's search-path, for use in scripts.
 dnl
@@ -4106,14 +4178,14 @@ cf_pathlist=`ld --verbose 2>/dev/null | grep SEARCH_DIR | sed -e 's,SEARCH_DIR[[
 # The -NX options tell newer versions of Linux ldconfig to not attempt to
 # update the cache, which makes it run faster.
 test -z "$cf_pathlist" && \
-       cf_pathlist=`ldconfig -NX -v 2>/dev/null | sed -e '/^[[         ]]/d' -e 's/:$//' | sort -u`
+       cf_pathlist=`(ldconfig -NX -v) 2>/dev/null | sed -e '/^[[       ]]/d' -e 's/:$//' | sort -u`
 
 test -z "$cf_pathlist" &&
-       cf_pathlist=`ldconfig -v 2>/dev/null | sed -n -e '/^[[  ]]/d' -e 's/:$//p' | sort -u`
+       cf_pathlist=`(ldconfig -v) 2>/dev/null | sed -n -e '/^[[        ]]/d' -e 's/:$//p' | sort -u`
 
 # This works with OpenBSD 6.5, which lists only filenames
 test -z "$cf_pathlist" &&
-       cf_pathlist=`ldconfig -v 2>/dev/null | sed -n -e 's,^Adding \(.*\)/.*[$],\1,p' | sort -u`
+       cf_pathlist=`(ldconfig -v) 2>/dev/null | sed -n -e 's,^Adding \(.*\)/.*[$],\1,p' | sort -u`
 
 if test -z "$cf_pathlist"
 then
@@ -4128,13 +4200,37 @@ fi
 
 if test -z "$cf_pathlist"
 then
-       # Solaris is hardcoded
-       if test -d /opt/SUNWspro/lib
+       # Solaris is "SunOS"
+       if test -f /usr/bin/isainfo && test "x`uname -s`" = xSunOS
        then
-               cf_pathlist="/opt/SUNWspro/lib /usr/ccs/lib /usr/lib"
-       elif test -d /usr/ccs/lib
+               case x`(isainfo -b)` in
+               (x64)
+                       cf_pathlist="$cf_pathlist /lib/64 /usr/lib/64"
+                       ;;
+               (x32)
+                       test -d /usr/ccs/lib && cf_pathlist="$cf_pathlist /usr/ccs/lib"
+                       cf_pathlist="$cf_pathlist /lib /usr/lib"
+                       ;;
+               (*)
+                       AC_MSG_WARN(problem with Solaris architecture)
+                       ;;
+               esac
+       fi
+fi
+
+if test -z "$cf_pathlist"
+then
+       # HP-UX
+       if test x"`uname -s`" = xHP-UX
        then
-               cf_pathlist="/usr/ccs/lib /usr/lib"
+               case x`getconf LONG_BIT` in
+               (x64)
+                       cf_pathlist="/usr/lib/hpux64"
+                       ;;
+               (x*)
+                       cf_pathlist="/usr/lib/hpux32"
+                       ;;
+               esac
        fi
 fi
 
@@ -4225,7 +4321,7 @@ ifelse($1,,,[$1=$LIB_PREFIX])
        AC_SUBST(LIB_PREFIX)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_LIB_RULES version: 93 updated: 2021/01/04 18:48:01
+dnl CF_LIB_RULES version: 97 updated: 2021/07/17 13:10:54
 dnl ------------
 dnl Append definitions and rules for the given models to the subdirectory
 dnl Makefiles, and the recursion rule for the top-level Makefile.  If the
@@ -4242,6 +4338,7 @@ dnl
 dnl Note: Libs_To_Make is mixed case, since it is not a pure autoconf variable.
 AC_DEFUN([CF_LIB_RULES],
 [AC_REQUIRE([AC_PROG_FGREP])dnl
+AC_REQUIRE([CF_MAKE_PHONY])dnl
 
 cf_prefix=$LIB_PREFIX
 AC_REQUIRE([CF_SUBST_NCURSES_VERSION])
@@ -4562,6 +4659,9 @@ CF_EOF
                                traces=$LIB_TRACING \
                                MODEL=$cf_ITEM \
                                CXX_MODEL=$CXX_MODEL \
+                               LIB_SUFFIX=$LIB_SUFFIX \
+                               USE_LIB_SUFFIX=$USE_LIB_SUFFIX \
+                               make_phony="${cf_cv_make_PHONY:-no}" \
                                model=$cf_subdir \
                                prefix=$cf_prefix \
                                suffix=$cf_suffix \
@@ -4606,9 +4706,24 @@ CF_EOF
                done
        fi
 
-       echo '  cd '$cf_dir' && ${MAKE} ${TOP_MFLAGS} [$]@' >>Makefile
+       echo '  ( cd '$cf_dir' && ${MAKE} ${TOP_MFLAGS} [$]@ )' >>Makefile
 done
 
+echo >> Makefile
+echo '# generated by CF_LIB_RULES' >> Makefile
+
+if test "x$cf_cv_make_PHONY" = xyes ; then
+       cat >> Makefile <<-CF_EOF
+
+       .PHONY :        libs
+       .PHONY :        lintlib
+       .PHONY :        install.includes
+       .PHONY :        uninstall.includes
+       .PHONY :        install.libs
+       .PHONY :        uninstall.libs
+CF_EOF
+fi
+
 for cf_dir in $SRC_SUBDIRS
 do
        if test ! -d "$srcdir/$cf_dir" ; then
@@ -4621,12 +4736,21 @@ do
                        echo 'libs \' >> Makefile
                        echo 'install.libs \' >> Makefile
                        echo 'uninstall.libs ::' >> Makefile
-                       echo '  cd '$cf_dir' && ${MAKE} ${TOP_MFLAGS} [$]@' >> Makefile
+                       echo '  ( cd '$cf_dir' && ${MAKE} ${TOP_MFLAGS} [$]@ )' >> Makefile
                        ;;
                esac
        fi
 
        if test -f "$srcdir/$cf_dir/modules" ; then
+
+               if test "x$cf_cv_make_PHONY" = xyes ; then
+                       cat >> Makefile <<-CF_EOF
+
+                       .PHONY :        install.$cf_dir
+                       .PHONY :        uninstall.$cf_dir
+CF_EOF
+               fi
+
                echo >> Makefile
                if test -f "$srcdir/$cf_dir/headers" ; then
 cat >> Makefile <<CF_EOF
@@ -4634,17 +4758,16 @@ install.includes \\
 uninstall.includes \\
 CF_EOF
                fi
-if test "$cf_dir" != "c++" ; then
-echo 'lint \' >> Makefile
-fi
+
 cat >> Makefile <<CF_EOF
+lint \\
 libs \\
 lintlib \\
 install.libs \\
 uninstall.libs \\
 install.$cf_dir \\
 uninstall.$cf_dir ::
-       cd "$cf_dir" && \${MAKE} \${TOP_MFLAGS} \[$]@
+       ( cd "$cf_dir" && \${MAKE} \${TOP_MFLAGS} \[$]@ )
 CF_EOF
        elif test -f "$srcdir/$cf_dir/headers" ; then
 cat >> Makefile <<CF_EOF
@@ -4654,32 +4777,49 @@ install.libs \\
 uninstall.libs \\
 install.includes \\
 uninstall.includes ::
-       cd "$cf_dir" && \${MAKE} \${TOP_MFLAGS} \[$]@
+       ( cd "$cf_dir" && \${MAKE} \${TOP_MFLAGS} \[$]@ )
 CF_EOF
 fi
 done
 
+if test "x$cf_cv_make_PHONY" = xyes ; then
+       cat >> Makefile <<-CF_EOF
+
+       .PHONY :        install.data
+       .PHONY :        uninstall.data
+CF_EOF
+fi
+
 if test "x$cf_with_db_install" = xyes; then
 cat >> Makefile <<CF_EOF
 
 install.libs uninstall.libs \\
 install.data uninstall.data ::
-$MAKE_TERMINFO cd misc && \${MAKE} \${TOP_MFLAGS} \[$]@
+$MAKE_TERMINFO ( cd misc && \${MAKE} \${TOP_MFLAGS} \[$]@ )
 CF_EOF
 else
 cat >> Makefile <<CF_EOF
 
 install.libs uninstall.libs ::
-       cd misc && \${MAKE} \${TOP_MFLAGS} \[$]@
+       ( cd misc && \${MAKE} \${TOP_MFLAGS} \[$]@ )
 CF_EOF
 fi
 
 if test "x$cf_with_manpages" = xyes; then
+
+if test "x$cf_cv_make_PHONY" = xyes ; then
+       cat >> Makefile <<-CF_EOF
+
+       .PHONY :        install.man
+       .PHONY :        uninstall.man
+CF_EOF
+fi
+
 cat >> Makefile <<CF_EOF
 
 install.man \\
 uninstall.man ::
-       cd man && \${MAKE} \${TOP_MFLAGS} \[$]@
+       ( cd man && \${MAKE} \${TOP_MFLAGS} \[$]@ )
 CF_EOF
 fi
 
@@ -4699,7 +4839,7 @@ cat >> Makefile <<CF_EOF
 
 install.man \\
 uninstall.man ::
-       cd tack && \${MAKE} \${TOP_MFLAGS} \[$]@
+       ( cd tack && \${MAKE} \${TOP_MFLAGS} \[$]@ )
 CF_EOF
 fi
 fi
@@ -4807,6 +4947,13 @@ do
 
        if test -f "$srcdir/$cf_dir/modules" ; then
                if test "$cf_dir" != "c++" ; then
+                       if test "x$cf_cv_make_PHONY" = xyes ; then
+                               cat >> $cf_dir/Makefile <<-CF_EOF
+
+                               .PHONY :        depend
+CF_EOF
+                       fi
+
                        cat >>$cf_dir/Makefile <<"CF_EOF"
 depend : ${AUTO_SRC}
        makedepend -- ${CPPFLAGS} -- ${C_SRC}
@@ -5030,11 +5177,14 @@ AC_SUBST(BROKEN_LINKER)
 
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_LINK_FUNCS version: 9 updated: 2017/01/21 11:11:02
+dnl CF_LINK_FUNCS version: 11 updated: 2021/04/18 14:08:47
 dnl -------------
 dnl Most Unix systems have both link and symlink, a few don't have symlink.
 dnl A few non-Unix systems implement symlink, but not link.
 dnl A few non-systems implement neither (or have nonfunctional versions).
+dnl
+dnl This allows for a 2-second difference in modification times to allow for
+dnl some marginal NFS implementations.
 AC_DEFUN([CF_LINK_FUNCS],
 [
 AC_CHECK_HEADERS( \
@@ -5053,6 +5203,7 @@ else
                cf_cv_link_funcs=
                for cf_func in link symlink ; do
                        AC_TRY_RUN([
+#include <stdio.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #ifdef HAVE_UNISTD_H
@@ -5061,19 +5212,26 @@ else
 int main(void)
 {
        int fail = 0;
-       char *src = "config.log";
+       char *src = "conftest.tmp";
        char *dst = "conftest.chk";
-       struct stat src_sb;
-       struct stat dst_sb;
-
-       stat(src, &src_sb);
-       fail = ($cf_func("config.log", "conftest.chk") < 0)
-           || (stat(dst, &dst_sb) < 0)
-           || (dst_sb.st_mtime != src_sb.st_mtime);
+       struct stat src_sb, dst_sb;
+       FILE *fp = fopen(src, "w");
+       if (fp == 0) { fail = 3; } else {
+               fclose(fp); stat(src, &src_sb);
+               if ($cf_func(src, dst) < 0) {
+                       fail = 1;
+               } else if (stat(dst, &dst_sb) < 0) {
+                       fail = 2;
+               } else {
+                       long diff = (dst_sb.st_mtime - src_sb.st_mtime);
+                       if (diff < 0) diff = -diff;
+                       if (diff > 2) fail = 3;
+               }
+       }
 #ifdef HAVE_UNLINK
-       unlink(dst);
+       unlink(dst); unlink(src);
 #else
-       remove(dst);
+       remove(dst); remove(src);
 #endif
        ${cf_cv_main_return:-return} (fail);
 }
@@ -5090,10 +5248,10 @@ int main(void)
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_MAKEFLAGS version: 20 updated: 2021/01/03 19:29:49
+dnl CF_MAKEFLAGS version: 21 updated: 2021/09/04 06:47:34
 dnl ------------
 dnl Some 'make' programs support ${MAKEFLAGS}, some ${MFLAGS}, to pass 'make'
-dnl options to lower-levels.  It's very useful for "make -n" -- if we have it.
+dnl options to lower-levels.  It is very useful for "make -n" -- if we have it.
 dnl (GNU 'make' does both, something POSIX 'make', which happens to make the
 dnl ${MAKEFLAGS} variable incompatible because it adds the assignments :-)
 AC_DEFUN([CF_MAKEFLAGS],
@@ -5133,6 +5291,89 @@ CF_EOF
 AC_SUBST(cf_cv_makeflags)
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl CF_MAKE_PHONY version: 3 updated: 2021/01/08 16:08:21
+dnl -------------
+dnl Check if the make-program handles a ".PHONY" target, e.g,. a target which
+dnl acts as a placeholder.
+dnl
+dnl The ".PHONY" feature was proposed in 2011 here
+dnl     https://www.austingroupbugs.net/view.php?id=523
+dnl and is scheduled for release in P1003.1 Issue 8 (late 2022).
+dnl
+dnl This is not supported by SVr4 make (or SunOS 4, 4.3SD, etc), but works with
+dnl a few others (i.e., GNU make and the non-POSIX "BSD" make):
+dnl
+dnl + This is a GNU make feature (since April 1988, but in turn from binutils,
+dnl   date unspecified).
+dnl
+dnl + It was adopted in NetBSD make in June 1995.
+dnl
+dnl + The other BSD make programs are derived from the NetBSD make (and for
+dnl   that reason are not actually different "implementations").
+dnl
+dnl + Some features of NetBSD make were actually adapted from pmake, which
+dnl   began as a modified GNU make starting in 1993.
+dnl
+dnl + Version 3.8 of the dmake program in January 1992 also implemented this
+dnl   GNU make extension, but is less well known than the BSD make.
+AC_DEFUN([CF_MAKE_PHONY],[
+AC_CACHE_CHECK(for \".PHONY\" make-support, cf_cv_make_PHONY,[
+       rm -rf conftest*
+       (
+               mkdir conftest || exit 1
+               cd conftest
+               cat >makefile <<'CF_EOF'
+.PHONY: always
+DATA=0
+always:        always.out
+       @echo "** making [$]@ [$](DATA)"
+once: once.out
+       @echo "** making [$]@ [$](DATA)"
+always.out:
+       @echo "** making [$]@ [$](DATA)"
+       echo [$](DATA) > [$]@
+once.out:
+       @echo "** making [$]@ [$](DATA)"
+       echo [$](DATA) > [$]@
+CF_EOF
+               for cf_data in 1 2 3
+               do
+                       ${MAKE:-make} always DATA=$cf_data
+                       ${MAKE:-make} once   DATA=$cf_data
+                       ${MAKE:-make} -t always once
+                       if test -f always ; then
+                               echo "no (case 1)" > ../conftest.tmp
+                       elif test ! -f always.out ; then
+                               echo "no (case 2)" > ../conftest.tmp
+                       elif test ! -f once.out ; then
+                               echo "no (case 3)" > ../conftest.tmp
+                       elif ! cmp -s always.out once.out ; then
+                               echo "no (case 4)" > ../conftest.tmp
+                               diff always.out once.out
+                       else
+                               cf_check="`cat always.out`"
+                               if test "x$cf_check" != "x$cf_data" ; then
+                                       echo "no (case 5)" > ../conftest.tmp
+                               else
+                                       echo yes > ../conftest.tmp
+                                       rm -f ./*.out
+                                       continue
+                               fi
+                       fi
+                       break
+               done
+       ) >&AC_FD_CC 2>&1
+       cf_cv_make_PHONY="`cat conftest.tmp`"
+       rm -rf conftest*
+])
+MAKE_NO_PHONY="#"
+MAKE_PHONY="#"
+test "x$cf_cv_make_PHONY" = xyes && MAKE_PHONY=
+test "x$cf_cv_make_PHONY" != xyes && MAKE_NO_PHONY=
+AC_SUBST(MAKE_NO_PHONY)
+AC_SUBST(MAKE_PHONY)
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32
 dnl ------------
 dnl Generate tags/TAGS targets for makefiles.  Do not generate TAGS if we have
@@ -5170,7 +5411,7 @@ AC_SUBST(MAKE_UPPER_TAGS)
 AC_SUBST(MAKE_LOWER_TAGS)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_MANPAGE_FORMAT version: 14 updated: 2021/01/02 17:09:14
+dnl CF_MANPAGE_FORMAT version: 15 updated: 2021/09/04 06:35:04
 dnl -----------------
 dnl Option to allow user to override automatic configuration of manpage format.
 dnl There are several special cases:
@@ -5206,7 +5447,7 @@ case "$MANPAGE_FORMAT" in
                MANPATH="/usr/man:/usr/share/man"
        fi
 
-       # look for the 'date' man-page (it's most likely to be installed!)
+       # look for the 'date' man-page (it is most likely to be installed!)
        MANPAGE_FORMAT=
        cf_preform="no"
        cf_catonly="yes"
@@ -5898,19 +6139,29 @@ then
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_NO_LEAKS_OPTION version: 8 updated: 2021/01/05 20:05:09
+dnl CF_NO_LEAKS_OPTION version: 9 updated: 2021/06/13 19:45:41
 dnl ------------------
 dnl see CF_WITH_NO_LEAKS
+dnl
+dnl $1 = option/name
+dnl $2 = help-text
+dnl $3 = symbol to define if the option is set
+dnl $4 = additional actions to take if the option is set
 AC_DEFUN([CF_NO_LEAKS_OPTION],[
 AC_MSG_CHECKING(if you want to use $1 for testing)
 AC_ARG_WITH($1,
        [$2],
-       [AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[
+       [case "x$withval" in
+       (x|xno) ;;
+       (*)
+               : "${with_cflags:=-g}"
+               : "${enable_leaks:=no}"
+               with_$1=yes
+               AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[
         $4
 ])
-       : "${with_cflags:=-g}"
-       : "${enable_leaks:=no}"
-        with_$1=yes],
+               ;;
+       esac],
        [with_$1=])
 AC_MSG_RESULT(${with_$1:-no})
 
@@ -6611,6 +6862,24 @@ case "$cf_cv_regex_hdrs" in
 esac
 ])dnl
 dnl ---------------------------------------------------------------------------
+dnl CF_REMOVE_CFLAGS version: 3 updated: 2021/09/05 17:25:40
+dnl ----------------
+dnl Remove a given option from CFLAGS/CPPFLAGS
+dnl $1 = option to remove
+dnl $2 = variable to update
+dnl $3 = nonempty to allow verbose message
+define([CF_REMOVE_CFLAGS],
+[
+cf_tmp_cflag=`echo "x$1" | sed -e 's/^.//' -e 's/=.*//'`
+while true
+do
+       cf_old_cflag=`echo "x[$]$2" | sed -e 's/^.//' -e 's/[[  ]][[    ]]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[[^   ]][[^   ]]*\\)\?%%" -e 's/^[[   ]]*//' -e 's%[[ ]][[ ]]*-D% -D%g' -e 's%[[ ]][[ ]]*-I% -I%g'`
+       test "[$]$2" != "$cf_old_cflag" || break
+       ifelse([$3],,,[CF_VERBOSE(removing old option $1 from $2)])
+       $2="$cf_old_cflag"
+done
+])dnl
+dnl ---------------------------------------------------------------------------
 dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50
 dnl ----------------
 dnl Remove all -U and -D options that refer to the given symbol from a list
@@ -6795,7 +7064,7 @@ do
 done
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_SHARED_OPTS version: 105 updated: 2021/01/02 17:09:14
+dnl CF_SHARED_OPTS version: 107 updated: 2021/09/04 06:47:34
 dnl --------------
 dnl --------------
 dnl Attempt to determine the appropriate CC/LD options for creating a shared
@@ -6819,7 +7088,7 @@ dnl The variable 'cf_cv_shlib_version_infix' controls whether shared library
 dnl version numbers are infix (ex: libncurses.<ver>.dylib) or postfix
 dnl (ex: libncurses.so.<ver>).
 dnl
-dnl Some loaders leave 'so_locations' lying around.  It's nice to clean up.
+dnl Some loaders leave 'so_locations' lying around.  It is nice to clean up.
 AC_DEFUN([CF_SHARED_OPTS],
 [
        AC_REQUIRE([CF_LD_RPATH_OPT])
@@ -6966,6 +7235,10 @@ CF_EOF
                        LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
                fi
                ;;
+       (haiku*)
+               CF_SHARED_SONAME
+               MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]'
+               ;;
        (hpux[[7-8]]*)
                # HP-UX 8.07 ld lacks "+b" option used for libdir search-list
                if test "$GCC" != yes; then
@@ -7465,7 +7738,7 @@ AC_MSG_RESULT($cf_cv_sig_atomic_t)
 test "$cf_cv_sig_atomic_t" != no && AC_DEFINE_UNQUOTED(SIG_ATOMIC_T, $cf_cv_sig_atomic_t,[Define to signal global datatype])
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_SIZECHANGE version: 17 updated: 2021/01/01 13:31:04
+dnl CF_SIZECHANGE version: 18 updated: 2021/09/04 06:35:04
 dnl -------------
 dnl Check for definitions & structures needed for window size-changing
 dnl
@@ -7496,7 +7769,7 @@ do
 
 #ifdef NEED_PTEM_H
 /* This is a workaround for SCO:  they neglected to define struct winsize in
- * termios.h -- it's only in termio.h and ptem.h
+ * termios.h -- it is only in termio.h and ptem.h
  */
 #include <sys/stream.h>
 #include <sys/ptem.h>
@@ -7922,7 +8195,7 @@ else
 fi
 ])
 dnl ---------------------------------------------------------------------------
-dnl CF_TRY_XOPEN_SOURCE version: 2 updated: 2018/06/20 20:23:13
+dnl CF_TRY_XOPEN_SOURCE version: 3 updated: 2021/08/28 15:20:37
 dnl -------------------
 dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we
 dnl can define it successfully.
@@ -7957,7 +8230,7 @@ if test "$cf_cv_xopen_source" != no ; then
        CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE)
        CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE)
        cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source"
-       CF_ADD_CFLAGS($cf_temp_xopen_source)
+       CF_APPEND_CFLAGS($cf_temp_xopen_source)
 fi
 ])
 dnl ---------------------------------------------------------------------------
@@ -8053,15 +8326,21 @@ AC_DEFUN([CF_UPPER],
 $1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%`
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_UTF8_LIB version: 8 updated: 2012/10/06 08:57:51
+dnl CF_UTF8_LIB version: 9 updated: 2021/05/19 19:35:25
 dnl -----------
 dnl Check for multibyte support, and if not found, utf8 compatibility library
 AC_DEFUN([CF_UTF8_LIB],
 [
+AC_HAVE_HEADERS(wchar.h)
 AC_CACHE_CHECK(for multibyte character support,cf_cv_utf8_lib,[
        cf_save_LIBS="$LIBS"
        AC_TRY_LINK([
-#include <stdlib.h>],[putwc(0,0);],
+#include <stdlib.h>
+#include <stdio.h>
+#ifdef HAVE_WCHAR_H
+#include <wchar.h>
+#endif
+],[putwc(0,0);],
        [cf_cv_utf8_lib=yes],
        [CF_FIND_LINKAGE([
 #include <libutf8.h>],[putwc(0,0);],utf8,
@@ -8780,7 +9059,7 @@ else
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_PATH version: 11 updated: 2012/09/29 15:04:19
+dnl CF_WITH_PATH version: 12 updated: 2021/09/04 06:35:04
 dnl ------------
 dnl Wrapper for AC_ARG_WITH to ensure that user supplies a pathname, not just
 dnl defaulting to yes/no.
@@ -8789,7 +9068,7 @@ dnl $1 = option name
 dnl $2 = help-text
 dnl $3 = environment variable to set
 dnl $4 = default value, shown in the help-message, must be a constant
-dnl $5 = default value, if it's an expression & cannot be in the help-message
+dnl $5 = default value, if it is an expression & cannot be in the help-message
 dnl
 AC_DEFUN([CF_WITH_PATH],
 [AC_ARG_WITH($1,[$2 ](default: ifelse([$4],,empty,[$4])),,
@@ -8801,7 +9080,7 @@ eval $3="$withval"
 AC_SUBST($3)dnl
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_PATHLIST version: 12 updated: 2021/01/01 13:31:04
+dnl CF_WITH_PATHLIST version: 13 updated: 2021/09/04 06:35:04
 dnl ----------------
 dnl Process an option specifying a list of colon-separated paths.
 dnl
@@ -8809,7 +9088,7 @@ dnl $1 = option name
 dnl $2 = help-text
 dnl $3 = environment variable to set
 dnl $4 = default value, shown in the help-message, must be a constant
-dnl $5 = default value, if it's an expression & cannot be in the help-message
+dnl $5 = default value, if it is an expression & cannot be in the help-message
 dnl $6 = flag to tell if we want to define or substitute
 dnl
 AC_DEFUN([CF_WITH_PATHLIST],[
@@ -8879,7 +9158,7 @@ AC_ARG_WITH($2-path,
        ])
 ])
 dnl ---------------------------------------------------------------------------
-dnl CF_WITH_PCRE2 version: 4 updated: 2021/01/01 16:53:59
+dnl CF_WITH_PCRE2 version: 6 updated: 2021/08/11 20:35:34
 dnl -------------
 dnl Add PCRE2 (Perl-compatible regular expressions v2) to the build if it is
 dnl available and the user requests it.  Assume the application will otherwise
@@ -8897,9 +9176,12 @@ test -z "$with_pcre2" && with_pcre2=no
 AC_MSG_RESULT($with_pcre2)
 
 if test "x$with_pcre2" != xno ; then
-       CF_TRY_PKG_CONFIG(libpcre2,,[
-       CF_TRY_PKG_CONFIG(libpcre,,[
-                       AC_MSG_ERROR(Cannot find PCRE2 library)])])
+       cf_with_pcre2_ok=no
+       for cf_with_pcre2 in libpcre2 libpcre2-posix libpcre
+       do
+               CF_TRY_PKG_CONFIG($cf_with_pcre2,[cf_with_pcre2_ok=yes; break])
+       done
+       cf_with_pcre2_ok=yes || AC_MSG_ERROR(Cannot find PCRE2 library)
 
        AC_DEFINE(HAVE_LIB_PCRE2,1,[Define to 1 if we can/should compile with the PCRE2 library])
 
@@ -8918,6 +9200,7 @@ if test "x$with_pcre2" != xno ; then
 
        # either way, check for the library header files
        AC_CHECK_HEADERS(pcre2posix.h pcreposix.h)
+       AC_CHECK_FUNCS(PCRE2regcomp)
 fi
 ])dnl
 dnl ---------------------------------------------------------------------------
@@ -9352,7 +9635,7 @@ fi
 AC_SUBST(no_x11_rgb)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_XOPEN_SOURCE version: 57 updated: 2021/01/01 16:53:59
+dnl CF_XOPEN_SOURCE version: 59 updated: 2021/08/28 15:20:37
 dnl ---------------
 dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions,
 dnl or adapt to the vendor's definitions to get equivalent functionality,
@@ -9417,7 +9700,15 @@ case "$host_os" in
 (netbsd*)
        cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw
        ;;
-(openbsd[[4-9]]*)
+(openbsd[[6-9]]*)
+       # OpenBSD 6.x has broken locale support, both compile-time and runtime.
+       # see https://www.mail-archive.com/bugs@openbsd.org/msg13200.html
+       # Abusing the conformance level is a workaround.
+       AC_MSG_WARN(this system does not provide usable locale support)
+       cf_xopen_source="-D_BSD_SOURCE"
+       cf_XOPEN_SOURCE=700
+       ;;
+(openbsd[[4-5]]*)
        # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw
        cf_xopen_source="-D_BSD_SOURCE"
        cf_XOPEN_SOURCE=600
@@ -9449,7 +9740,7 @@ case "$host_os" in
 esac
 
 if test -n "$cf_xopen_source" ; then
-       CF_ADD_CFLAGS($cf_xopen_source,true)
+       CF_APPEND_CFLAGS($cf_xopen_source,true)
 fi
 
 dnl In anything but the default case, we may have system-specific setting