diff options
author | Jörg Frings-Fürst <debian@jff.email> | 2024-03-24 08:54:48 +0100 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff.email> | 2024-03-24 08:54:48 +0100 |
commit | 163a663518f33bab48b28431972e580b366b4d49 (patch) | |
tree | f518ffabaca4a0b93f0103d617e803792d3b0b43 /gnulib-m4 | |
parent | 1b3a8d5ad2ea2f099d514d9dd51ebf926a628076 (diff) | |
parent | dd0000f7e25abe6c28d4329d324fd7fcab54094f (diff) |
Merge branch 'release/debian/1.2-1'HEADdebian/1.2-1master
Diffstat (limited to 'gnulib-m4')
197 files changed, 5636 insertions, 2012 deletions
diff --git a/gnulib-m4/00gnulib.m4 b/gnulib-m4/00gnulib.m4 index dea34e83..99c99d1b 100644 --- a/gnulib-m4/00gnulib.m4 +++ b/gnulib-m4/00gnulib.m4 @@ -1,5 +1,5 @@ -# 00gnulib.m4 serial 8 -dnl Copyright (C) 2009-2022 Free Software Foundation, Inc. +# 00gnulib.m4 serial 9 +dnl Copyright (C) 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -49,14 +49,14 @@ dnl AC_REQUIRE([gl_COMPILER_CLANG]) [if test $gl_cv_compiler_clang = yes; then dnl Test whether the compiler supports the option dnl '-Werror=implicit-function-declaration'. - save_ac_compile="$ac_compile" + saved_ac_compile="$ac_compile" ac_compile="$ac_compile -Werror=implicit-function-declaration" dnl Use _AC_COMPILE_IFELSE instead of AC_COMPILE_IFELSE, to avoid a dnl warning "AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS". _AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[]])], [gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration'], [gl_cv_compiler_check_decl_option=none]) - ac_compile="$save_ac_compile" + ac_compile="$saved_ac_compile" else gl_cv_compiler_check_decl_option=none fi @@ -71,11 +71,11 @@ dnl Redefine _AC_CHECK_DECL_BODY so that it references ac_compile_for_check_decl dnl instead of ac_compile. If, for whatever reason, the override of AC_PROG_CC dnl in zzgnulib.m4 is inactive, use the original ac_compile. m4_define([_AC_CHECK_DECL_BODY], -[ ac_save_ac_compile="$ac_compile" +[ ac_saved_ac_compile="$ac_compile" if test -n "$ac_compile_for_check_decl"; then ac_compile="$ac_compile_for_check_decl" fi] -m4_defn([_AC_CHECK_DECL_BODY])[ ac_compile="$ac_save_ac_compile" +m4_defn([_AC_CHECK_DECL_BODY])[ ac_compile="$ac_saved_ac_compile" ]) # gl_00GNULIB diff --git a/gnulib-m4/__inline.m4 b/gnulib-m4/__inline.m4 new file mode 100644 index 00000000..992e16f4 --- /dev/null +++ b/gnulib-m4/__inline.m4 @@ -0,0 +1,22 @@ +# Test for __inline keyword +dnl Copyright 2017-2024 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl___INLINE], +[ + AC_CACHE_CHECK([whether the compiler supports the __inline keyword], + [gl_cv_c___inline], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[typedef int foo_t; + static __inline foo_t foo (void) { return 0; }]], + [[return foo ();]])], + [gl_cv_c___inline=yes], + [gl_cv_c___inline=no])]) + if test $gl_cv_c___inline = yes; then + AC_DEFINE([HAVE___INLINE], [1], + [Define to 1 if the compiler supports the keyword '__inline'.]) + fi +]) diff --git a/gnulib-m4/absolute-header.m4 b/gnulib-m4/absolute-header.m4 index 67d6507c..0e9f9ba7 100644 --- a/gnulib-m4/absolute-header.m4 +++ b/gnulib-m4/absolute-header.m4 @@ -1,5 +1,5 @@ -# absolute-header.m4 serial 17 -dnl Copyright (C) 2006-2022 Free Software Foundation, Inc. +# absolute-header.m4 serial 18 +dnl Copyright (C) 2006-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -66,7 +66,7 @@ AC_DEFUN([gl_ABSOLUTE_HEADER_ONE], esac changequote(,) case "$host_os" in - mingw*) + mingw* | windows*) dnl For the sake of native Windows compilers (excluding gcc), dnl treat backslash as a directory separator, like /. dnl Actually, these compilers use a double-backslash as diff --git a/gnulib-m4/alloca.m4 b/gnulib-m4/alloca.m4 index dc6f47e3..90960215 100644 --- a/gnulib-m4/alloca.m4 +++ b/gnulib-m4/alloca.m4 @@ -1,5 +1,5 @@ # alloca.m4 serial 21 -dnl Copyright (C) 2002-2004, 2006-2007, 2009-2022 Free Software Foundation, +dnl Copyright (C) 2002-2004, 2006-2007, 2009-2024 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, diff --git a/gnulib-m4/arpa_inet_h.m4 b/gnulib-m4/arpa_inet_h.m4 index 057e13fc..754b38eb 100644 --- a/gnulib-m4/arpa_inet_h.m4 +++ b/gnulib-m4/arpa_inet_h.m4 @@ -1,5 +1,5 @@ # arpa_inet_h.m4 serial 17 -dnl Copyright (C) 2006, 2008-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2006, 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/assert_h.m4 b/gnulib-m4/assert_h.m4 index c1306dae..d3d4c425 100644 --- a/gnulib-m4/assert_h.m4 +++ b/gnulib-m4/assert_h.m4 @@ -1,5 +1,5 @@ # assert-h.m4 -dnl Copyright (C) 2011-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2011-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -9,16 +9,16 @@ dnl From Paul Eggert. AC_DEFUN([gl_ASSERT_H], [ AC_CACHE_CHECK([for static_assert], [gl_cv_static_assert], - [gl_save_CFLAGS=$CFLAGS + [gl_saved_CFLAGS=$CFLAGS for gl_working in "yes, a keyword" "yes, an <assert.h> macro"; do AS_CASE([$gl_working], - [*assert.h*], [CFLAGS="$gl_save_CFLAGS -DINCLUDE_ASSERT_H"]) + [*assert.h*], [CFLAGS="$gl_saved_CFLAGS -DINCLUDE_ASSERT_H"]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#if defined __clang__ && __STDC_VERSION__ < 202311 #pragma clang diagnostic error "-Wc2x-extensions" - #pragma clang diagnostic error "-Wc++17-extensions" + #pragma clang diagnostic error "-Wc++1z-extensions" #endif #ifdef INCLUDE_ASSERT_H #include <assert.h> @@ -32,7 +32,7 @@ AC_DEFUN([gl_ASSERT_H], ]])], [gl_cv_static_assert=$gl_working], [gl_cv_static_assert=no]) - CFLAGS=$gl_save_CFLAGS + CFLAGS=$gl_saved_CFLAGS test "$gl_cv_static_assert" != no && break done]) @@ -46,10 +46,13 @@ AC_DEFUN([gl_ASSERT_H], gl_NEXT_HEADERS([assert.h])]) dnl The "zz" puts this toward config.h's end, to avoid potential - dnl collisions with other definitions. #undef assert so that - dnl programs are not tempted to use it without specifically - dnl including assert.h. Break the #undef apart with a comment - dnl so that 'configure' does not comment it out. + dnl collisions with other definitions. + dnl #undef assert so that programs are not tempted to use it without + dnl specifically including assert.h. + dnl #undef __ASSERT_H__ so that on IRIX, when programs later include + dnl <assert.h>, this include actually defines assert. + dnl Break the #undef_s apart with a comment so that 'configure' does + dnl not comment them out. AH_VERBATIM([zzstatic_assert], [#if (!defined HAVE_C_STATIC_ASSERT && !defined assert \ && (!defined __cplusplus \ @@ -57,5 +60,14 @@ AC_DEFUN([gl_ASSERT_H], && __GNUG__ < 6 && __clang_major__ < 6))) #include <assert.h> #undef/**/assert + #ifdef __sgi + #undef/**/__ASSERT_H__ + #endif + /* Solaris 11.4 <assert.h> defines static_assert as a macro with 2 arguments. + We need it also to be invocable with a single argument. */ + #if defined __sun && (__STDC_VERSION__ - 0 >= 201112L) && !defined __cplusplus + #undef/**/static_assert + #define static_assert _Static_assert + #endif #endif]) ]) diff --git a/gnulib-m4/btowc.m4 b/gnulib-m4/btowc.m4 index 45a61f5e..8bb55dc8 100644 --- a/gnulib-m4/btowc.m4 +++ b/gnulib-m4/btowc.m4 @@ -1,5 +1,5 @@ -# btowc.m4 serial 12 -dnl Copyright (C) 2008-2022 Free Software Foundation, Inc. +# btowc.m4 serial 14 +dnl Copyright (C) 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -40,12 +40,12 @@ int main () [ changequote(,)dnl case "$host_os" in - # Guess no on Cygwin. - cygwin*) gl_cv_func_btowc_nul="guessing no" ;; - # Guess yes on native Windows. - mingw*) gl_cv_func_btowc_nul="guessing yes" ;; - # Guess yes otherwise. - *) gl_cv_func_btowc_nul="guessing yes" ;; + # Guess no on Cygwin. + cygwin*) gl_cv_func_btowc_nul="guessing no" ;; + # Guess yes on native Windows. + mingw* | windows*) gl_cv_func_btowc_nul="guessing yes" ;; + # Guess yes otherwise. + *) gl_cv_func_btowc_nul="guessing yes" ;; esac changequote([,])dnl ]) @@ -59,12 +59,12 @@ changequote([,])dnl dnl is present. changequote(,)dnl case "$host_os" in - # Guess no on IRIX. - irix*) gl_cv_func_btowc_eof="guessing no" ;; - # Guess yes on native Windows. - mingw*) gl_cv_func_btowc_eof="guessing yes" ;; - # Guess yes otherwise. - *) gl_cv_func_btowc_eof="guessing yes" ;; + # Guess no on IRIX. + irix*) gl_cv_func_btowc_eof="guessing no" ;; + # Guess yes on native Windows. + mingw* | windows*) gl_cv_func_btowc_eof="guessing yes" ;; + # Guess yes otherwise. + *) gl_cv_func_btowc_eof="guessing yes" ;; esac changequote([,])dnl if test $LOCALE_FR != none; then @@ -88,6 +88,50 @@ int main () fi ]) + dnl On mingw, in the C locale, btowc is inconsistent with mbrtowc: + dnl mbrtowc avoids calling MultiByteToWideChar when MB_CUR_MAX is 1 and + dnl ___lc_codepage_func() is 0, but btowc is lacking this special case. + AC_CHECK_FUNCS_ONCE([mbrtowc]) + AC_CACHE_CHECK([whether btowc is consistent with mbrtowc in the C locale], + [gl_cv_func_btowc_consistent], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include <stdlib.h> +#include <string.h> +#include <wchar.h> +int main () +{ +#if HAVE_MBRTOWC + wint_t wc1 = btowc (0x80); + wchar_t wc2 = (wchar_t) 0xbadface; + char buf[1] = { 0x80 }; + mbstate_t state; + memset (&state, 0, sizeof (mbstate_t)); + if (mbrtowc (&wc2, buf, 1, &state) != 1 || wc1 != wc2) + return 1; +#endif + return 0; +}]])], + [gl_cv_func_btowc_consistent=yes], + [gl_cv_func_btowc_consistent=no], + [case "$host_os" in + # Guess no on mingw. + mingw* | windows*) + AC_EGREP_CPP([Problem], [ +#ifdef __MINGW32__ + Problem +#endif + ], + [gl_cv_func_btowc_consistent="guessing no"], + [gl_cv_func_btowc_consistent="guessing yes"]) + ;; + # Guess yes otherwise. + *) gl_cv_func_btowc_consistent="guessing yes" ;; + esac + ]) + ]) + case "$gl_cv_func_btowc_nul" in *yes) ;; *) REPLACE_BTOWC=1 ;; @@ -96,10 +140,22 @@ int main () *yes) ;; *) REPLACE_BTOWC=1 ;; esac + case "$gl_cv_func_btowc_consistent" in + *yes) ;; + *) REPLACE_BTOWC=1 ;; + esac + if test $REPLACE_BTOWC = 0; then + gl_MBRTOWC_C_LOCALE + case "$gl_cv_func_mbrtowc_C_locale_sans_EILSEQ" in + *yes) ;; + *) REPLACE_BTOWC=1 ;; + esac + fi fi ]) # Prerequisites of lib/btowc.c. AC_DEFUN([gl_PREREQ_BTOWC], [ : + AC_CHECK_FUNCS_ONCE([mbrtowc]) ]) diff --git a/gnulib-m4/builtin-expect.m4 b/gnulib-m4/builtin-expect.m4 index b1fb12a3..8faffc50 100644 --- a/gnulib-m4/builtin-expect.m4 +++ b/gnulib-m4/builtin-expect.m4 @@ -1,6 +1,6 @@ dnl Check for __builtin_expect. -dnl Copyright 2016-2022 Free Software Foundation, Inc. +dnl Copyright 2016-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/c-bool.m4 b/gnulib-m4/c-bool.m4 index bb109b77..44fba3c0 100644 --- a/gnulib-m4/c-bool.m4 +++ b/gnulib-m4/c-bool.m4 @@ -1,6 +1,6 @@ # Check for bool that conforms to C2023. -dnl Copyright 2022 Free Software Foundation, Inc. +dnl Copyright 2022-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/c32rtomb.m4 b/gnulib-m4/c32rtomb.m4 new file mode 100644 index 00000000..56faaa57 --- /dev/null +++ b/gnulib-m4/c32rtomb.m4 @@ -0,0 +1,88 @@ +# c32rtomb.m4 serial 7 +dnl Copyright (C) 2020-2024 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_FUNC_C32RTOMB], +[ + AC_REQUIRE([gl_UCHAR_H_DEFAULTS]) + AC_REQUIRE([AC_CANONICAL_HOST]) + + AC_REQUIRE([gl_MBRTOC32_SANITYCHECK]) + + dnl Cf. gl_CHECK_FUNCS_ANDROID + AC_CHECK_DECL([c32rtomb], , , + [[#ifdef __HAIKU__ + #include <stdint.h> + #endif + #include <uchar.h> + ]]) + if test $ac_cv_have_decl_c32rtomb = yes; then + dnl We can't use AC_CHECK_FUNC here, because c32rtomb() is defined as a + dnl static inline function on Haiku 2020. + AC_CACHE_CHECK([for c32rtomb], [gl_cv_func_c32rtomb], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include <stdlib.h> + #ifdef __HAIKU__ + #include <stdint.h> + #endif + #include <uchar.h> + ]], + [[char buf[8]; + return c32rtomb (buf, 0, NULL) == 0; + ]]) + ], + [gl_cv_func_c32rtomb=yes], + [gl_cv_func_c32rtomb=no]) + ]) + else + gl_cv_func_c32rtomb=no + fi + if test $gl_cv_func_c32rtomb = no; then + HAVE_C32RTOMB=0 + else + dnl When we override mbrtoc32, redefining the meaning of the char32_t + dnl values, we need to override c32rtomb as well, for consistency. + if test $HAVE_WORKING_MBRTOC32 = 0; then + REPLACE_C32RTOMB=1 + fi + AC_CACHE_CHECK([whether c32rtomb return value is correct], + [gl_cv_func_c32rtomb_retval], + [ + dnl Initial guess, used when cross-compiling. +changequote(,)dnl + case "$host_os" in + # Guess no on AIX. + aix*) gl_cv_func_c32rtomb_retval="guessing no" ;; + # Guess yes otherwise. + *) gl_cv_func_c32rtomb_retval="guessing yes" ;; + esac +changequote([,])dnl + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include <stddef.h> +#ifdef __HAIKU__ + #include <stdint.h> +#endif +#include <uchar.h> +int main () +{ + int result = 0; + if (c32rtomb (NULL, 0, NULL) != 1) + result |= 1; + return result; +}]])], + [gl_cv_func_c32rtomb_retval=yes], + [gl_cv_func_c32rtomb_retval=no], + [:]) + ]) + case "$gl_cv_func_c32rtomb_retval" in + *yes) ;; + *) AC_DEFINE([C32RTOMB_RETVAL_BUG], [1], + [Define if the c32rtomb function has an incorrect return value.]) + REPLACE_C32RTOMB=1 ;; + esac + fi +]) diff --git a/gnulib-m4/calloc.m4 b/gnulib-m4/calloc.m4 index c01520e5..49303d96 100644 --- a/gnulib-m4/calloc.m4 +++ b/gnulib-m4/calloc.m4 @@ -1,6 +1,6 @@ -# calloc.m4 serial 29 +# calloc.m4 serial 31 -# Copyright (C) 2004-2022 Free Software Foundation, Inc. +# Copyright (C) 2004-2024 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -36,14 +36,14 @@ AC_DEFUN([_AC_FUNC_CALLOC_IF], [ac_cv_func_calloc_0_nonnull=no]) else case "$host_os" in - # Guess yes on glibc systems. - *-gnu* | gnu*) ac_cv_func_calloc_0_nonnull="guessing yes" ;; - # Guess yes on musl systems. - *-musl*) ac_cv_func_calloc_0_nonnull="guessing yes" ;; - # Guess yes on native Windows. - mingw*) ac_cv_func_calloc_0_nonnull="guessing yes" ;; - # If we don't know, obey --enable-cross-guesses. - *) ac_cv_func_calloc_0_nonnull="$gl_cross_guess_normal" ;; + # Guess yes on glibc systems. + *-gnu* | gnu*) ac_cv_func_calloc_0_nonnull="guessing yes" ;; + # Guess yes on musl systems. + *-musl* | midipix*) ac_cv_func_calloc_0_nonnull="guessing yes" ;; + # Guess yes on native Windows. + mingw* | windows*) ac_cv_func_calloc_0_nonnull="guessing yes" ;; + # If we don't know, obey --enable-cross-guesses. + *) ac_cv_func_calloc_0_nonnull="$gl_cross_guess_normal" ;; esac fi ]) diff --git a/gnulib-m4/close.m4 b/gnulib-m4/close.m4 index f95dbc9d..6b6d3821 100644 --- a/gnulib-m4/close.m4 +++ b/gnulib-m4/close.m4 @@ -1,10 +1,10 @@ -# close.m4 serial 9 -dnl Copyright (C) 2008-2022 Free Software Foundation, Inc. +# close.m4 serial 10 +dnl Copyright (C) 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. -AC_DEFUN([gl_FUNC_CLOSE], +AC_DEFUN_ONCE([gl_FUNC_CLOSE], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) m4_ifdef([gl_MSVC_INVAL], [ diff --git a/gnulib-m4/codeset.m4 b/gnulib-m4/codeset.m4 index eb732601..94dccce7 100644 --- a/gnulib-m4/codeset.m4 +++ b/gnulib-m4/codeset.m4 @@ -1,5 +1,5 @@ # codeset.m4 serial 5 (gettext-0.18.2) -dnl Copyright (C) 2000-2002, 2006, 2008-2014, 2016, 2019-2022 Free Software +dnl Copyright (C) 2000-2002, 2006, 2008-2014, 2016, 2019-2024 Free Software dnl Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, diff --git a/gnulib-m4/ctype_h.m4 b/gnulib-m4/ctype_h.m4 index 6f420de3..ef0ee7f2 100644 --- a/gnulib-m4/ctype_h.m4 +++ b/gnulib-m4/ctype_h.m4 @@ -1,5 +1,5 @@ # ctype_h.m4 serial 9 -dnl Copyright (C) 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/double-slash-root.m4 b/gnulib-m4/double-slash-root.m4 index 09ff5f0d..00f23a70 100644 --- a/gnulib-m4/double-slash-root.m4 +++ b/gnulib-m4/double-slash-root.m4 @@ -1,5 +1,5 @@ # double-slash-root.m4 serial 4 -*- Autoconf -*- -dnl Copyright (C) 2006, 2008-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2006, 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/dup2.m4 b/gnulib-m4/dup2.m4 index 7e777cde..f6759b64 100644 --- a/gnulib-m4/dup2.m4 +++ b/gnulib-m4/dup2.m4 @@ -1,5 +1,5 @@ -#serial 27 -dnl Copyright (C) 2002, 2005, 2007, 2009-2022 Free Software Foundation, Inc. +#serial 28 +dnl Copyright (C) 2002, 2005, 2007, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -67,7 +67,7 @@ AC_DEFUN([gl_FUNC_DUP2], ], [gl_cv_func_dup2_works=yes], [gl_cv_func_dup2_works=no], [case "$host_os" in - mingw*) # on this platform, dup2 always returns 0 for success + mingw* | windows*) # on this platform, dup2 always returns 0 for success gl_cv_func_dup2_works="guessing no" ;; cygwin*) # on cygwin 1.5.x, dup2(1,1) returns 0 gl_cv_func_dup2_works="guessing no" ;; diff --git a/gnulib-m4/eealloc.m4 b/gnulib-m4/eealloc.m4 index a6aa2f88..d8862a1e 100644 --- a/gnulib-m4/eealloc.m4 +++ b/gnulib-m4/eealloc.m4 @@ -1,5 +1,5 @@ # eealloc.m4 serial 3 -dnl Copyright (C) 2003, 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2003, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/environ.m4 b/gnulib-m4/environ.m4 index 583dac39..5b9e06b0 100644 --- a/gnulib-m4/environ.m4 +++ b/gnulib-m4/environ.m4 @@ -1,5 +1,5 @@ # environ.m4 serial 8 -dnl Copyright (C) 2001-2004, 2006-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2001-2004, 2006-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/errno_h.m4 b/gnulib-m4/errno_h.m4 index 4be9780a..8900d6c7 100644 --- a/gnulib-m4/errno_h.m4 +++ b/gnulib-m4/errno_h.m4 @@ -1,5 +1,5 @@ # errno_h.m4 serial 14 -dnl Copyright (C) 2004, 2006, 2008-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2004, 2006, 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/error.m4 b/gnulib-m4/error.m4 index 7a103446..5688afcf 100644 --- a/gnulib-m4/error.m4 +++ b/gnulib-m4/error.m4 @@ -1,6 +1,6 @@ -#serial 15 +#serial 16 -# Copyright (C) 1996-1998, 2001-2004, 2009-2022 Free Software Foundation, Inc. +# Copyright (C) 1996-1998, 2001-2004, 2009-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -8,15 +8,6 @@ AC_DEFUN([gl_ERROR], [ - dnl We don't use AC_FUNC_ERROR_AT_LINE any more, because it is no longer - dnl maintained in Autoconf and because it invokes AC_LIBOBJ. - AC_CACHE_CHECK([for error_at_line], [ac_cv_lib_error_at_line], - [AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[#include <error.h>]], - [[error_at_line (0, 0, "", 0, "an error occurred");]])], - [ac_cv_lib_error_at_line=yes], - [ac_cv_lib_error_at_line=no])]) ]) # Prerequisites of lib/error.c. diff --git a/gnulib-m4/error_h.m4 b/gnulib-m4/error_h.m4 new file mode 100644 index 00000000..006770c4 --- /dev/null +++ b/gnulib-m4/error_h.m4 @@ -0,0 +1,124 @@ +# error_h.m4 serial 4 +dnl Copyright (C) 1996-2024 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Provide a working <error.h>. + +AC_DEFUN_ONCE([gl_ERROR_H], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + + gl_CHECK_NEXT_HEADERS([error.h]) + if test $ac_cv_header_error_h = yes; then + HAVE_ERROR_H=1 + else + HAVE_ERROR_H=0 + fi + AC_SUBST([HAVE_ERROR_H]) + + REPLACE_ERROR=0 + + gl_CHECK_FUNCS_ANDROID([error], [[#include <error.h>]]) + if test $ac_cv_func_error = yes; then + HAVE_ERROR=1 + else + HAVE_ERROR=0 + case "$gl_cv_onwards_func_error" in + future*) REPLACE_ERROR=1 ;; + esac + fi + + dnl We don't use AC_FUNC_ERROR_AT_LINE any more, because it is no longer + dnl maintained in Autoconf and because it invokes AC_LIBOBJ. + dnl We need to notice a missing declaration, like gl_CHECK_FUNCS_ANDROID does. + AC_CHECK_DECL([error_at_line], , , [[#include <error.h>]]) + if test $ac_cv_have_decl_error_at_line = yes; then + AC_CACHE_CHECK([for error_at_line], [ac_cv_lib_error_at_line], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include <error.h>]], + [[error_at_line (0, 0, "", 0, "an error occurred");]])], + [ac_cv_lib_error_at_line=yes], + [ac_cv_lib_error_at_line=no])]) + else + ac_cv_lib_error_at_line=no + fi + if test $ac_cv_lib_error_at_line = yes; then + HAVE_ERROR_AT_LINE=1 + else + HAVE_ERROR_AT_LINE=0 + fi + REPLACE_ERROR_AT_LINE=0 + + if test $ac_cv_func_error = yes && test $ac_cv_lib_error_at_line = yes; then + dnl On Android 11, when error_print_progname is set, the output of the + dnl error() function contains an extra space. + AC_CACHE_CHECK([for working error function], + [gl_cv_func_working_error], + [if test $cross_compiling != yes; then + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[ + #include <error.h> + static void print_no_progname (void) {} + ]], [[ + error_print_progname = print_no_progname; + error (0, 0, "foo"); + ]]) + ], + [rm -f conftest.out + if test -s conftest$ac_exeext \ + && ./conftest$ac_exeext 2> conftest.out; then + if grep ' ' conftest.out >/dev/null; then + gl_cv_func_working_error=no + else + gl_cv_func_working_error=yes + fi + else + gl_cv_func_working_error=no + fi + rm -f conftest.out + ], + [gl_cv_func_working_error=no]) + else + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ + #include <error.h> + ]], [[ + error (0, 0, "foo"); + ]]) + ], + [case "$host_os" in + # Guess yes on glibc systems. + *-gnu* | gnu*) gl_cv_func_working_error="guessing yes" ;; + # Guess no on Android. + linux*-android*) gl_cv_func_working_error="guessing no" ;; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_working_error="$gl_cross_guess_normal" ;; + esac + ], + [gl_cv_func_working_error=no]) + fi + ]) + case "$gl_cv_func_working_error" in + *no) + REPLACE_ERROR=1 + REPLACE_ERROR_AT_LINE=1 + ;; + esac + fi + + if test $HAVE_ERROR = 0 || test $REPLACE_ERROR = 1 \ + || test $HAVE_ERROR_AT_LINE = 0 || test $REPLACE_ERROR_AT_LINE = 1; then + COMPILE_ERROR_C=1 + else + COMPILE_ERROR_C=0 + fi + + AC_SUBST([HAVE_ERROR]) + AC_SUBST([HAVE_ERROR_AT_LINE]) + AC_SUBST([REPLACE_ERROR]) + AC_SUBST([REPLACE_ERROR_AT_LINE]) +]) diff --git a/gnulib-m4/exponentd.m4 b/gnulib-m4/exponentd.m4 index 83ac08bf..0a4b1b6c 100644 --- a/gnulib-m4/exponentd.m4 +++ b/gnulib-m4/exponentd.m4 @@ -1,9 +1,9 @@ -# exponentd.m4 serial 3 -dnl Copyright (C) 2007-2008, 2010-2022 Free Software Foundation, Inc. +# exponentd.m4 serial 4 +dnl Copyright (C) 2007-2008, 2010-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. -AC_DEFUN([gl_DOUBLE_EXPONENT_LOCATION], +AC_DEFUN_ONCE([gl_DOUBLE_EXPONENT_LOCATION], [ AC_CACHE_CHECK([where to find the exponent in a 'double'], [gl_cv_cc_double_expbit0], diff --git a/gnulib-m4/exponentf.m4 b/gnulib-m4/exponentf.m4 index 32fdb6a2..a46eee29 100644 --- a/gnulib-m4/exponentf.m4 +++ b/gnulib-m4/exponentf.m4 @@ -1,9 +1,9 @@ -# exponentf.m4 serial 2 -dnl Copyright (C) 2007-2008, 2010-2022 Free Software Foundation, Inc. +# exponentf.m4 serial 3 +dnl Copyright (C) 2007-2008, 2010-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. -AC_DEFUN([gl_FLOAT_EXPONENT_LOCATION], +AC_DEFUN_ONCE([gl_FLOAT_EXPONENT_LOCATION], [ AC_CACHE_CHECK([where to find the exponent in a 'float'], [gl_cv_cc_float_expbit0], diff --git a/gnulib-m4/exponentl.m4 b/gnulib-m4/exponentl.m4 index 653ad5a9..06c8ae3f 100644 --- a/gnulib-m4/exponentl.m4 +++ b/gnulib-m4/exponentl.m4 @@ -1,9 +1,9 @@ -# exponentl.m4 serial 5 -dnl Copyright (C) 2007-2022 Free Software Foundation, Inc. +# exponentl.m4 serial 7 +dnl Copyright (C) 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. -AC_DEFUN([gl_LONG_DOUBLE_EXPONENT_LOCATION], +AC_DEFUN_ONCE([gl_LONG_DOUBLE_EXPONENT_LOCATION], [ AC_REQUIRE([gl_BIGENDIAN]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles @@ -82,8 +82,9 @@ int main () dnl ABI and compiler version. There are too many cases. gl_cv_cc_long_double_expbit0="unknown" case "$host_os" in - mingw*) # On native Windows (little-endian), we know the result - # in two cases: mingw, MSVC. + mingw* | windows*) + # On native Windows (little-endian), we know the result + # in two cases: mingw, MSVC. AC_EGREP_CPP([Known], [ #ifdef __MINGW32__ Known diff --git a/gnulib-m4/extensions.m4 b/gnulib-m4/extensions.m4 index 0b3e4b5a..6fc2e300 100644 --- a/gnulib-m4/extensions.m4 +++ b/gnulib-m4/extensions.m4 @@ -1,7 +1,7 @@ -# serial 22 -*- Autoconf -*- +# serial 23 -*- Autoconf -*- # Enable extensions on systems that normally disable them. -# Copyright (C) 2003, 2006-2022 Free Software Foundation, Inc. +# Copyright (C) 2003, 2006-2024 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -31,7 +31,7 @@ m4_ifndef([AC_CHECK_INCLUDES_DEFAULT], # its dependencies. This will ensure that the gl_USE_SYSTEM_EXTENSIONS # invocation occurs in gl_EARLY, not in gl_INIT. -m4_version_prereq([2.70.1], [], [ +m4_version_prereq([2.72], [], [ # AC_USE_SYSTEM_EXTENSIONS # ------------------------ @@ -113,11 +113,15 @@ AH_VERBATIM([USE_SYSTEM_EXTENSIONS], #ifndef __STDC_WANT_IEC_60559_DFP_EXT__ # undef __STDC_WANT_IEC_60559_DFP_EXT__ #endif +/* Enable extensions specified by C23 Annex F. */ +#ifndef __STDC_WANT_IEC_60559_EXT__ +# undef __STDC_WANT_IEC_60559_EXT__ +#endif /* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ #ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ # undef __STDC_WANT_IEC_60559_FUNCS_EXT__ #endif -/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */ +/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ #ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ # undef __STDC_WANT_IEC_60559_TYPES_EXT__ #endif @@ -187,6 +191,7 @@ dnl it should only be defined when necessary. AC_DEFINE([__STDC_WANT_IEC_60559_ATTRIBS_EXT__]) AC_DEFINE([__STDC_WANT_IEC_60559_BFP_EXT__]) AC_DEFINE([__STDC_WANT_IEC_60559_DFP_EXT__]) + AC_DEFINE([__STDC_WANT_IEC_60559_EXT__]) AC_DEFINE([__STDC_WANT_IEC_60559_FUNCS_EXT__]) AC_DEFINE([__STDC_WANT_IEC_60559_TYPES_EXT__]) AC_DEFINE([__STDC_WANT_LIB_EXT2__]) diff --git a/gnulib-m4/extern-inline.m4 b/gnulib-m4/extern-inline.m4 index 8a12bddd..680250ec 100644 --- a/gnulib-m4/extern-inline.m4 +++ b/gnulib-m4/extern-inline.m4 @@ -1,6 +1,6 @@ dnl 'extern inline' a la ISO C99. -dnl Copyright 2012-2022 Free Software Foundation, Inc. +dnl Copyright 2012-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -79,7 +79,8 @@ AC_DEFUN([gl_EXTERN_INLINE], # define _GL_EXTERN_INLINE_STDHEADER_BUG #endif #if ((__GNUC__ \ - ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ + ? (defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ + && !defined __PCC__) \ : (199901L <= __STDC_VERSION__ \ && !defined __HP_cc \ && !defined __PGI \ @@ -89,6 +90,7 @@ AC_DEFUN([gl_EXTERN_INLINE], # define _GL_EXTERN_INLINE extern inline # define _GL_EXTERN_INLINE_IN_USE #elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ + && !defined __PCC__ \ && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) # if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__ /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ diff --git a/gnulib-m4/fcntl-o.m4 b/gnulib-m4/fcntl-o.m4 index 4dcde9e0..49ab34d8 100644 --- a/gnulib-m4/fcntl-o.m4 +++ b/gnulib-m4/fcntl-o.m4 @@ -1,5 +1,5 @@ -# fcntl-o.m4 serial 7 -dnl Copyright (C) 2006, 2009-2022 Free Software Foundation, Inc. +# fcntl-o.m4 serial 8 +dnl Copyright (C) 2006, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -117,9 +117,9 @@ AC_DEFUN([gl_FCNTL_O_FLAGS], *) gl_cv_header_working_fcntl_h='no';; esac], [case "$host_os" in - # Guess 'no' on native Windows. - mingw*) gl_cv_header_working_fcntl_h='no' ;; - *) gl_cv_header_working_fcntl_h=cross-compiling ;; + # Guess 'no' on native Windows. + mingw* | windows*) gl_cv_header_working_fcntl_h='no' ;; + *) gl_cv_header_working_fcntl_h=cross-compiling ;; esac ]) ]) diff --git a/gnulib-m4/fcntl.m4 b/gnulib-m4/fcntl.m4 index 428e5709..02b93f83 100644 --- a/gnulib-m4/fcntl.m4 +++ b/gnulib-m4/fcntl.m4 @@ -1,5 +1,5 @@ # fcntl.m4 serial 11 -dnl Copyright (C) 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/fcntl_h.m4 b/gnulib-m4/fcntl_h.m4 index 267f98bf..ba4eb449 100644 --- a/gnulib-m4/fcntl_h.m4 +++ b/gnulib-m4/fcntl_h.m4 @@ -1,6 +1,6 @@ # serial 20 # Configure fcntl.h. -dnl Copyright (C) 2006-2007, 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2006-2007, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/fdopen.m4 b/gnulib-m4/fdopen.m4 index 32e0e1d8..5b94047e 100644 --- a/gnulib-m4/fdopen.m4 +++ b/gnulib-m4/fdopen.m4 @@ -1,5 +1,5 @@ -# fdopen.m4 serial 5 -dnl Copyright (C) 2011-2022 Free Software Foundation, Inc. +# fdopen.m4 serial 6 +dnl Copyright (C) 2011-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -36,8 +36,8 @@ main (void) [gl_cv_func_fdopen_works=yes], [gl_cv_func_fdopen_works=no], [case "$host_os" in - mingw*) gl_cv_func_fdopen_works="guessing no" ;; - *) gl_cv_func_fdopen_works="guessing yes" ;; + mingw* | windows*) gl_cv_func_fdopen_works="guessing no" ;; + *) gl_cv_func_fdopen_works="guessing yes" ;; esac ]) ]) diff --git a/gnulib-m4/flexmember.m4 b/gnulib-m4/flexmember.m4 index 3b4237e9..9df6c03c 100644 --- a/gnulib-m4/flexmember.m4 +++ b/gnulib-m4/flexmember.m4 @@ -1,7 +1,7 @@ # serial 5 # Check for flexible array member support. -# Copyright (C) 2006, 2009-2022 Free Software Foundation, Inc. +# Copyright (C) 2006, 2009-2024 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/float_h.m4 b/gnulib-m4/float_h.m4 index 0e845726..60e81447 100644 --- a/gnulib-m4/float_h.m4 +++ b/gnulib-m4/float_h.m4 @@ -1,5 +1,5 @@ -# float_h.m4 serial 13 -dnl Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc. +# float_h.m4 serial 14 +dnl Copyright (C) 2007, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -84,9 +84,11 @@ int main () [gl_cv_func_itold_works="guessing no"], [gl_cv_func_itold_works="guessing yes"]) ;; - # Guess yes on native Windows. - mingw*) gl_cv_func_itold_works="guessing yes" ;; - *) gl_cv_func_itold_works="guessing yes" ;; + # Guess yes on native Windows. + mingw* | windows*) + gl_cv_func_itold_works="guessing yes" ;; + *) + gl_cv_func_itold_works="guessing yes" ;; esac ]) ]) diff --git a/gnulib-m4/fpieee.m4 b/gnulib-m4/fpieee.m4 index c0c23e95..239cf4a7 100644 --- a/gnulib-m4/fpieee.m4 +++ b/gnulib-m4/fpieee.m4 @@ -1,5 +1,5 @@ # fpieee.m4 serial 2 -*- coding: utf-8 -*- -dnl Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2007, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/free.m4 b/gnulib-m4/free.m4 index dfeecd2b..4f6dc2e2 100644 --- a/gnulib-m4/free.m4 +++ b/gnulib-m4/free.m4 @@ -1,5 +1,5 @@ # free.m4 serial 6 -# Copyright (C) 2003-2005, 2009-2022 Free Software Foundation, Inc. +# Copyright (C) 2003-2005, 2009-2024 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/frexp.m4 b/gnulib-m4/frexp.m4 index d8f3cef4..54cbb6d5 100644 --- a/gnulib-m4/frexp.m4 +++ b/gnulib-m4/frexp.m4 @@ -1,5 +1,5 @@ -# frexp.m4 serial 16 -dnl Copyright (C) 2007-2022 Free Software Foundation, Inc. +# frexp.m4 serial 20 +dnl Copyright (C) 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -13,7 +13,7 @@ AC_DEFUN([gl_FUNC_FREXP], AC_CACHE_CHECK([whether frexp() can be used with libm], [gl_cv_func_frexp_in_libm], [ - save_LIBS="$LIBS" + saved_LIBS="$LIBS" LIBS="$LIBS -lm" AC_LINK_IFELSE( [AC_LANG_PROGRAM( @@ -22,7 +22,7 @@ AC_DEFUN([gl_FUNC_FREXP], [[int e; return frexp (x, &e) > 0;]])], [gl_cv_func_frexp_in_libm=yes], [gl_cv_func_frexp_in_libm=no]) - LIBS="$save_LIBS" + LIBS="$saved_LIBS" ]) if test $gl_cv_func_frexp_in_libm = yes; then FREXP_LIBM=-lm @@ -30,10 +30,10 @@ AC_DEFUN([gl_FUNC_FREXP], fi if test $gl_cv_func_frexp_no_libm = yes \ || test $gl_cv_func_frexp_in_libm = yes; then - save_LIBS="$LIBS" + saved_LIBS="$LIBS" LIBS="$LIBS $FREXP_LIBM" gl_FUNC_FREXP_WORKS - LIBS="$save_LIBS" + LIBS="$saved_LIBS" case "$gl_cv_func_frexp_works" in *yes) gl_func_frexp=yes ;; *) gl_func_frexp=no; REPLACE_FREXP=1; FREXP_LIBM= ;; @@ -156,7 +156,8 @@ int main() { int exp; double y = frexp (x, &exp); - if (memcmp (&y, &x, sizeof x)) + double x1 = x; + if (memcmp (&y, &x1, sizeof x1)) result |= 4; } return result; @@ -165,7 +166,11 @@ int main() [gl_cv_func_frexp_works=no], [case "$host_os" in netbsd* | irix*) gl_cv_func_frexp_works="guessing no" ;; - mingw*) # Guess yes with MSVC, no with mingw. + # Guess yes with MSVC, no with mingw. + windows*-msvc*) + gl_cv_func_frexp_works="guessing yes" + ;; + mingw* | windows*) AC_EGREP_CPP([Good], [ #ifdef _MSC_VER Good diff --git a/gnulib-m4/frexpl.m4 b/gnulib-m4/frexpl.m4 index 45576131..c434dea7 100644 --- a/gnulib-m4/frexpl.m4 +++ b/gnulib-m4/frexpl.m4 @@ -1,5 +1,5 @@ -# frexpl.m4 serial 22 -dnl Copyright (C) 2007-2022 Free Software Foundation, Inc. +# frexpl.m4 serial 24 +dnl Copyright (C) 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -23,7 +23,7 @@ AC_DEFUN([gl_FUNC_FREXPL], AC_CACHE_CHECK([whether frexpl() can be used with libm], [gl_cv_func_frexpl_in_libm], [ - save_LIBS="$LIBS" + saved_LIBS="$LIBS" LIBS="$LIBS -lm" AC_LINK_IFELSE( [AC_LANG_PROGRAM( @@ -32,7 +32,7 @@ AC_DEFUN([gl_FUNC_FREXPL], [[int e; return frexpl (x, &e) > 0;]])], [gl_cv_func_frexpl_in_libm=yes], [gl_cv_func_frexpl_in_libm=no]) - LIBS="$save_LIBS" + LIBS="$saved_LIBS" ]) if test $gl_cv_func_frexpl_in_libm = yes; then FREXPL_LIBM=-lm @@ -40,10 +40,10 @@ AC_DEFUN([gl_FUNC_FREXPL], fi if test $gl_cv_func_frexpl_no_libm = yes \ || test $gl_cv_func_frexpl_in_libm = yes; then - save_LIBS="$LIBS" + saved_LIBS="$LIBS" LIBS="$LIBS $FREXPL_LIBM" gl_FUNC_FREXPL_WORKS - LIBS="$save_LIBS" + LIBS="$saved_LIBS" case "$gl_cv_func_frexpl_works" in *yes) gl_func_frexpl=yes ;; *) gl_func_frexpl=no; REPLACE_FREXPL=1 ;; @@ -223,7 +223,7 @@ int main() [ changequote(,)dnl case "$host_os" in - aix | aix[3-6]* | beos* | darwin* | irix* | mingw* | pw*) + aix | aix[3-6]* | beos* | darwin* | irix* | mingw* | windows* | pw*) gl_cv_func_frexpl_works="guessing no";; *) gl_cv_func_frexpl_works="guessing yes";; esac diff --git a/gnulib-m4/fseterr.m4 b/gnulib-m4/fseterr.m4 index 1596bbc0..b43ddc5a 100644 --- a/gnulib-m4/fseterr.m4 +++ b/gnulib-m4/fseterr.m4 @@ -1,10 +1,13 @@ -# fseterr.m4 serial 1 -dnl Copyright (C) 2012-2022 Free Software Foundation, Inc. +# fseterr.m4 serial 2 +dnl Copyright (C) 2012-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_FSETERR], [ - AC_CHECK_FUNCS_ONCE([__fseterr]) + gl_CHECK_FUNCS_ANDROID([__fseterr], + [[#include <stdio.h> + #include <stdio_ext.h> + ]]) ]) diff --git a/gnulib-m4/fstat.m4 b/gnulib-m4/fstat.m4 index 9e61bcce..5e73b4ed 100644 --- a/gnulib-m4/fstat.m4 +++ b/gnulib-m4/fstat.m4 @@ -1,5 +1,5 @@ -# fstat.m4 serial 8 -dnl Copyright (C) 2011-2022 Free Software Foundation, Inc. +# fstat.m4 serial 10 +dnl Copyright (C) 2011-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -10,10 +10,10 @@ AC_DEFUN([gl_FUNC_FSTAT], AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) case "$host_os" in - mingw* | solaris*) + darwin* | mingw* | windows* | solaris*) + dnl macOS and Solaris stat can return a negative tv_nsec. dnl On MinGW, the original stat() returns st_atime, st_mtime, dnl st_ctime values that are affected by the time zone. - dnl Solaris stat can return a negative tv_nsec. REPLACE_FSTAT=1 ;; esac diff --git a/gnulib-m4/ftruncate.m4 b/gnulib-m4/ftruncate.m4 index 2697e0eb..f547a95d 100644 --- a/gnulib-m4/ftruncate.m4 +++ b/gnulib-m4/ftruncate.m4 @@ -1,8 +1,8 @@ -# serial 21 +# serial 24 # See if we need to emulate a missing ftruncate function using _chsize. -# Copyright (C) 2000-2001, 2003-2007, 2009-2022 Free Software Foundation, Inc. +# Copyright (C) 2000-2001, 2003-2007, 2009-2024 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -10,12 +10,12 @@ AC_DEFUN([gl_FUNC_FTRUNCATE], [ AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) - AC_CHECK_FUNCS_ONCE([ftruncate]) + gl_CHECK_FUNCS_ANDROID([ftruncate], [[#include <unistd.h>]]) if test $ac_cv_func_ftruncate = yes; then m4_ifdef([gl_LARGEFILE], [ AC_REQUIRE([AC_CANONICAL_HOST]) case "$host_os" in - mingw*) + mingw* | windows*) dnl Native Windows, and Large File Support is requested. dnl The MSVCRT _chsize() function only accepts a 32-bit file size, dnl and the mingw64 ftruncate64() function is unreliable (it may @@ -30,6 +30,9 @@ AC_DEFUN([gl_FUNC_FTRUNCATE], ]) else HAVE_FTRUNCATE=0 + case "$gl_cv_onwards_func_ftruncate" in + future*) REPLACE_FTRUNCATE=1 ;; + esac fi ]) diff --git a/gnulib-m4/getcwd.m4 b/gnulib-m4/getcwd.m4 index 076ca314..ed3d7b61 100644 --- a/gnulib-m4/getcwd.m4 +++ b/gnulib-m4/getcwd.m4 @@ -1,12 +1,12 @@ # getcwd.m4 - check for working getcwd that is compatible with glibc -# Copyright (C) 2001, 2003-2007, 2009-2022 Free Software Foundation, Inc. +# Copyright (C) 2001, 2003-2007, 2009-2024 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Written by Paul Eggert. -# serial 19 +# serial 22 AC_DEFUN([gl_FUNC_GETCWD_NULL], [ @@ -21,11 +21,8 @@ AC_DEFUN([gl_FUNC_GETCWD_NULL], # else /* on Windows with MSVC */ # include <direct.h> # endif - ]GL_MDA_DEFINES[ -# ifndef getcwd - char *getcwd (); -# endif -]], [[ + ]GL_MDA_DEFINES], + [[ #if defined _WIN32 && ! defined __CYGWIN__ /* mingw cwd does not start with '/', but _getcwd does allocate. However, mingw fails to honor non-zero size. */ @@ -53,6 +50,8 @@ AC_DEFUN([gl_FUNC_GETCWD_NULL], *-gnu* | gnu*) gl_cv_func_getcwd_null="guessing yes";; # Guess yes on musl systems. *-musl*) gl_cv_func_getcwd_null="guessing yes";; + # Guess yes on systems that emulate the Linux system calls. + midipix*) gl_cv_func_getcwd_null="guessing yes";; # Guess yes on Cygwin. cygwin*) gl_cv_func_getcwd_null="guessing yes";; # If we don't know, obey --enable-cross-guesses. @@ -114,7 +113,7 @@ AC_DEFUN([gl_FUNC_GETCWD], gl_abort_bug=no case "$host_os" in - mingw*) + mingw* | windows*) gl_cv_func_getcwd_path_max=yes ;; *) diff --git a/gnulib-m4/getdtablesize.m4 b/gnulib-m4/getdtablesize.m4 index 6134eaac..3b89456b 100644 --- a/gnulib-m4/getdtablesize.m4 +++ b/gnulib-m4/getdtablesize.m4 @@ -1,5 +1,5 @@ # getdtablesize.m4 serial 8 -dnl Copyright (C) 2008-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/getpagesize.m4 b/gnulib-m4/getpagesize.m4 index 19f894ca..35dc257b 100644 --- a/gnulib-m4/getpagesize.m4 +++ b/gnulib-m4/getpagesize.m4 @@ -1,5 +1,5 @@ -# getpagesize.m4 serial 10 -dnl Copyright (C) 2002, 2004-2005, 2007, 2009-2022 Free Software Foundation, +# getpagesize.m4 serial 11 +dnl Copyright (C) 2002, 2004-2005, 2007, 2009-2024 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -22,7 +22,7 @@ AC_DEFUN([gl_FUNC_GETPAGESIZE], fi fi case "$host_os" in - mingw*) + mingw* | windows*) REPLACE_GETPAGESIZE=1 ;; esac diff --git a/gnulib-m4/getprogname.m4 b/gnulib-m4/getprogname.m4 index b26146e9..b8f9f230 100644 --- a/gnulib-m4/getprogname.m4 +++ b/gnulib-m4/getprogname.m4 @@ -1,16 +1,33 @@ # getprogname.m4 - check for getprogname or replacements for it -# Copyright (C) 2016-2022 Free Software Foundation, Inc. +# Copyright (C) 2016-2024 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 4 +# serial 8 AC_DEFUN([gl_FUNC_GETPROGNAME], [ - AC_CHECK_FUNCS_ONCE([getprogname getexecname]) + AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) + gl_CHECK_FUNCS_ANDROID([getprogname], [[#include <stdlib.h>]]) + if test $ac_cv_func_getprogname = no; then + HAVE_GETPROGNAME=0 + case "$gl_cv_onwards_func_getprogname" in + future*) REPLACE_GETPROGNAME=1 ;; + esac + fi + AC_CHECK_DECLS([program_invocation_name], + [], + [HAVE_DECL_PROGRAM_INVOCATION_NAME=0], + [[#include <errno.h>]]) +]) + +AC_DEFUN([gl_PREREQ_GETPROGNAME], +[ + AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) + AC_CHECK_FUNCS_ONCE([getexecname]) ac_found=0 AC_CHECK_DECLS([program_invocation_name], [ac_found=1], [], [#include <errno.h>]) diff --git a/gnulib-m4/gettimeofday.m4 b/gnulib-m4/gettimeofday.m4 index f729601b..35269914 100644 --- a/gnulib-m4/gettimeofday.m4 +++ b/gnulib-m4/gettimeofday.m4 @@ -1,6 +1,6 @@ -# serial 29 +# serial 30 -# Copyright (C) 2001-2003, 2005, 2007, 2009-2022 Free Software Foundation, Inc. +# Copyright (C) 2001-2003, 2005, 2007, 2009-2024 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -57,7 +57,7 @@ int gettimeofday (struct timeval *restrict, struct timezone *restrict); dnl On mingw, the original gettimeofday has only a precision of 15.6 dnl milliseconds. So override it. case "$host_os" in - mingw*) REPLACE_GETTIMEOFDAY=1 ;; + mingw* | windows*) REPLACE_GETTIMEOFDAY=1 ;; esac fi AC_DEFINE_UNQUOTED([GETTIMEOFDAY_TIMEZONE], [$gl_gettimeofday_timezone], diff --git a/gnulib-m4/gnulib-cache.m4 b/gnulib-m4/gnulib-cache.m4 index a28477a8..6fe9820d 100644 --- a/gnulib-m4/gnulib-cache.m4 +++ b/gnulib-m4/gnulib-cache.m4 @@ -1,4 +1,4 @@ -# Copyright (C) 2002-2022 Free Software Foundation, Inc. +# Copyright (C) 2002-2024 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -40,6 +40,7 @@ # --no-conditional-dependencies \ # --libtool \ # --macro-prefix=gl \ +# gitlog-to-changelog \ # relocatable-lib-lgpl \ # unicase/base \ # unicase/empty-prefix-context \ @@ -143,6 +144,7 @@ # unictype/ctype-xdigit \ # unictype/decimal-digit \ # unictype/digit \ +# unictype/incb-all \ # unictype/joininggroup-all \ # unictype/joiningtype-all \ # unictype/mirror \ @@ -176,6 +178,8 @@ # unilbrk/u8-width-linebreaks \ # unilbrk/ulc-possible-linebreaks \ # unilbrk/ulc-width-linebreaks \ +# unimetadata/base \ +# unimetadata/u-version \ # uniname/base \ # uniname/uniname \ # uninorm/base \ @@ -273,6 +277,7 @@ # unistr/u16-mbtoucr \ # unistr/u16-move \ # unistr/u16-next \ +# unistr/u16-pcpy \ # unistr/u16-prev \ # unistr/u16-set \ # unistr/u16-startswith \ @@ -314,6 +319,7 @@ # unistr/u32-mbtoucr \ # unistr/u32-move \ # unistr/u32-next \ +# unistr/u32-pcpy \ # unistr/u32-prev \ # unistr/u32-set \ # unistr/u32-startswith \ @@ -355,6 +361,7 @@ # unistr/u8-mbtoucr \ # unistr/u8-move \ # unistr/u8-next \ +# unistr/u8-pcpy \ # unistr/u8-prev \ # unistr/u8-set \ # unistr/u8-startswith \ @@ -401,6 +408,7 @@ # Specification in the form of a few gnulib-tool.m4 macro invocations: gl_LOCAL_DIR([gnulib-local]) gl_MODULES([ + gitlog-to-changelog relocatable-lib-lgpl unicase/base unicase/empty-prefix-context @@ -504,6 +512,7 @@ gl_MODULES([ unictype/ctype-xdigit unictype/decimal-digit unictype/digit + unictype/incb-all unictype/joininggroup-all unictype/joiningtype-all unictype/mirror @@ -537,6 +546,8 @@ gl_MODULES([ unilbrk/u8-width-linebreaks unilbrk/ulc-possible-linebreaks unilbrk/ulc-width-linebreaks + unimetadata/base + unimetadata/u-version uniname/base uniname/uniname uninorm/base @@ -634,6 +645,7 @@ gl_MODULES([ unistr/u16-mbtoucr unistr/u16-move unistr/u16-next + unistr/u16-pcpy unistr/u16-prev unistr/u16-set unistr/u16-startswith @@ -675,6 +687,7 @@ gl_MODULES([ unistr/u32-mbtoucr unistr/u32-move unistr/u32-next + unistr/u32-pcpy unistr/u32-prev unistr/u32-set unistr/u32-startswith @@ -716,6 +729,7 @@ gl_MODULES([ unistr/u8-mbtoucr unistr/u8-move unistr/u8-next + unistr/u8-pcpy unistr/u8-prev unistr/u8-set unistr/u8-startswith diff --git a/gnulib-m4/gnulib-common.m4 b/gnulib-m4/gnulib-common.m4 index d17cbec5..d8d0904f 100644 --- a/gnulib-m4/gnulib-common.m4 +++ b/gnulib-m4/gnulib-common.m4 @@ -1,5 +1,5 @@ -# gnulib-common.m4 serial 74 -dnl Copyright (C) 2007-2022 Free Software Foundation, Inc. +# gnulib-common.m4 serial 92 +dnl Copyright (C) 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -15,6 +15,10 @@ AC_DEFUN([gl_COMMON], [ AC_REQUIRE([gl_ZZGNULIB]) ]) AC_DEFUN([gl_COMMON_BODY], [ + AH_VERBATIM([0witness], +[/* Witness that <config.h> has been included. */ +#define _GL_CONFIG_H_INCLUDED 1 +]) AH_VERBATIM([_GL_GNUC_PREREQ], [/* True if the compiler says it groks GNU C version MAJOR.MINOR. */ #if defined __GNUC__ && defined __GNUC_MINOR__ @@ -38,6 +42,11 @@ AC_DEFUN([gl_COMMON_BODY], [ AIX system header files and several gnulib header files use precisely this syntax with 'extern'. */ # define _Noreturn [[noreturn]] +# elif (defined __clang__ && __clang_major__ < 16 \ + && defined _GL_WORK_AROUND_LLVM_BUG_59792) + /* Compile with -D_GL_WORK_AROUND_LLVM_BUG_59792 to work around + that rare LLVM bug, though you may get many false-alarm warnings. */ +# define _Noreturn # elif ((!defined __cplusplus || defined __clang__) \ && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \ || (!defined __STRICT_ANSI__ \ @@ -67,54 +76,74 @@ AC_DEFUN([gl_COMMON_BODY], [ #endif]) AH_VERBATIM([attribute], [/* Attributes. */ -#if (defined __has_attribute \ - && (!defined __clang_minor__ \ - || (defined __apple_build_version__ \ - ? 6000000 <= __apple_build_version__ \ - : 3 < __clang_major__ + (5 <= __clang_minor__)))) -# define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__) -#else -# define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr -# define _GL_ATTR_alloc_size _GL_GNUC_PREREQ (4, 3) -# define _GL_ATTR_always_inline _GL_GNUC_PREREQ (3, 2) -# define _GL_ATTR_artificial _GL_GNUC_PREREQ (4, 3) -# define _GL_ATTR_cold _GL_GNUC_PREREQ (4, 3) -# define _GL_ATTR_const _GL_GNUC_PREREQ (2, 95) -# define _GL_ATTR_deprecated _GL_GNUC_PREREQ (3, 1) -# define _GL_ATTR_diagnose_if 0 -# define _GL_ATTR_error _GL_GNUC_PREREQ (4, 3) -# define _GL_ATTR_externally_visible _GL_GNUC_PREREQ (4, 1) -# define _GL_ATTR_fallthrough _GL_GNUC_PREREQ (7, 0) -# define _GL_ATTR_format _GL_GNUC_PREREQ (2, 7) -# define _GL_ATTR_leaf _GL_GNUC_PREREQ (4, 6) -# define _GL_ATTR_malloc _GL_GNUC_PREREQ (3, 0) -# ifdef _ICC -# define _GL_ATTR_may_alias 0 +/* Define _GL_HAS_ATTRIBUTE only once, because on FreeBSD, with gcc < 5, if + <config.h> gets included once again after <sys/cdefs.h>, __has_attribute(x) + expands to 0 always, and redefining _GL_HAS_ATTRIBUTE would turn off all + attributes. */ +#ifndef _GL_HAS_ATTRIBUTE +# if (defined __has_attribute \ + && (!defined __clang_minor__ \ + || (defined __apple_build_version__ \ + ? 7000000 <= __apple_build_version__ \ + : 5 <= __clang_major__))) +# define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__) # else -# define _GL_ATTR_may_alias _GL_GNUC_PREREQ (3, 3) +# define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr +# define _GL_ATTR_alloc_size _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_always_inline _GL_GNUC_PREREQ (3, 2) +# define _GL_ATTR_artificial _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_cold _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_const _GL_GNUC_PREREQ (2, 95) +# define _GL_ATTR_deprecated _GL_GNUC_PREREQ (3, 1) +# define _GL_ATTR_diagnose_if 0 +# define _GL_ATTR_error _GL_GNUC_PREREQ (4, 3) +# define _GL_ATTR_externally_visible _GL_GNUC_PREREQ (4, 1) +# define _GL_ATTR_fallthrough _GL_GNUC_PREREQ (7, 0) +# define _GL_ATTR_format _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_leaf _GL_GNUC_PREREQ (4, 6) +# define _GL_ATTR_malloc _GL_GNUC_PREREQ (3, 0) +# ifdef _ICC +# define _GL_ATTR_may_alias 0 +# else +# define _GL_ATTR_may_alias _GL_GNUC_PREREQ (3, 3) +# endif +# define _GL_ATTR_noinline _GL_GNUC_PREREQ (3, 1) +# define _GL_ATTR_nonnull _GL_GNUC_PREREQ (3, 3) +# define _GL_ATTR_nonstring _GL_GNUC_PREREQ (8, 0) +# define _GL_ATTR_nothrow _GL_GNUC_PREREQ (3, 3) +# define _GL_ATTR_packed _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_pure _GL_GNUC_PREREQ (2, 96) +# define _GL_ATTR_returns_nonnull _GL_GNUC_PREREQ (4, 9) +# define _GL_ATTR_sentinel _GL_GNUC_PREREQ (4, 0) +# define _GL_ATTR_unused _GL_GNUC_PREREQ (2, 7) +# define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4) # endif -# define _GL_ATTR_noinline _GL_GNUC_PREREQ (3, 1) -# define _GL_ATTR_nonnull _GL_GNUC_PREREQ (3, 3) -# define _GL_ATTR_nonstring _GL_GNUC_PREREQ (8, 0) -# define _GL_ATTR_nothrow _GL_GNUC_PREREQ (3, 3) -# define _GL_ATTR_packed _GL_GNUC_PREREQ (2, 7) -# define _GL_ATTR_pure _GL_GNUC_PREREQ (2, 96) -# define _GL_ATTR_returns_nonnull _GL_GNUC_PREREQ (4, 9) -# define _GL_ATTR_sentinel _GL_GNUC_PREREQ (4, 0) -# define _GL_ATTR_unused _GL_GNUC_PREREQ (2, 7) -# define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4) #endif -#ifdef __has_c_attribute -# if ((defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710 \ - && _GL_GNUC_PREREQ (4, 6)) -# pragma GCC diagnostic ignored "-Wpedantic" -# endif -# define _GL_HAS_C_ATTRIBUTE(attr) __has_c_attribute (__##attr##__) +/* Use __has_c_attribute if available. However, do not use with + pre-C23 GCC, which can issue false positives if -Wpedantic. */ +#if (defined __has_c_attribute \ + && ! (_GL_GNUC_PREREQ (4, 6) \ + && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710)) +# define _GL_HAVE___HAS_C_ATTRIBUTE 1 #else -# define _GL_HAS_C_ATTRIBUTE(attr) 0 +# define _GL_HAVE___HAS_C_ATTRIBUTE 0 #endif +/* Define if, in a function declaration, the attributes in bracket syntax + [[...]] must come before the attributes in __attribute__((...)) syntax. + If this is defined, it is best to avoid the bracket syntax, so that the + various _GL_ATTRIBUTE_* can be cumulated on the same declaration in any + order. */ +#ifdef __cplusplus +# if defined __clang__ +# define _GL_BRACKET_BEFORE_ATTRIBUTE 1 +# endif +#else +# if defined __GNUC__ && !defined __clang__ +# define _GL_BRACKET_BEFORE_ATTRIBUTE 1 +# endif +#endif ]dnl There is no _GL_ATTRIBUTE_ALIGNED; use stdalign's alignas instead. [ /* _GL_ATTRIBUTE_ALLOC_SIZE ((N)) declares that the Nth argument of the function @@ -123,29 +152,35 @@ AC_DEFUN([gl_COMMON_BODY], [ by the Nth argument of the function is the size of the returned memory block. */ /* Applies to: function, pointer to function, function types. */ -#if _GL_HAS_ATTRIBUTE (alloc_size) -# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) -#else -# define _GL_ATTRIBUTE_ALLOC_SIZE(args) +#ifndef _GL_ATTRIBUTE_ALLOC_SIZE +# if _GL_HAS_ATTRIBUTE (alloc_size) +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) +# else +# define _GL_ATTRIBUTE_ALLOC_SIZE(args) +# endif #endif /* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the function and report an error if it cannot do so. */ /* Applies to: function. */ -#if _GL_HAS_ATTRIBUTE (always_inline) -# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) -#else -# define _GL_ATTRIBUTE_ALWAYS_INLINE +#ifndef _GL_ATTRIBUTE_ALWAYS_INLINE +# if _GL_HAS_ATTRIBUTE (always_inline) +# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) +# else +# define _GL_ATTRIBUTE_ALWAYS_INLINE +# endif #endif /* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show in stack traces when debugging. The compiler should omit the function from stack traces. */ /* Applies to: function. */ -#if _GL_HAS_ATTRIBUTE (artificial) -# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) -#else -# define _GL_ATTRIBUTE_ARTIFICIAL +#ifndef _GL_ATTRIBUTE_ARTIFICIAL +# if _GL_HAS_ATTRIBUTE (artificial) +# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) +# else +# define _GL_ATTRIBUTE_ARTIFICIAL +# endif #endif /* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ @@ -153,14 +188,16 @@ AC_DEFUN([gl_COMMON_BODY], [ /* Avoid __attribute__ ((cold)) on MinGW; see thread starting at <https://lists.gnu.org/r/emacs-devel/2019-04/msg01152.html>. Also, Oracle Studio 12.6 requires 'cold' not '__cold__'. */ -#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ -# ifndef __SUNPRO_C -# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +#ifndef _GL_ATTRIBUTE_COLD +# if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ +# ifndef __SUNPRO_C +# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) +# else +# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# endif # else -# define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) +# define _GL_ATTRIBUTE_COLD # endif -#else -# define _GL_ATTRIBUTE_COLD #endif /* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate @@ -170,10 +207,12 @@ AC_DEFUN([gl_COMMON_BODY], [ forever, and does not call longjmp. (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (const) -# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) -#else -# define _GL_ATTRIBUTE_CONST +#ifndef _GL_ATTRIBUTE_CONST +# if _GL_HAS_ATTRIBUTE (const) +# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) +# else +# define _GL_ATTRIBUTE_CONST +# endif #endif /* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers @@ -182,16 +221,25 @@ AC_DEFUN([gl_COMMON_BODY], [ _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that can be freed via 'free'; it can be used only after declaring 'free'. */ /* Applies to: functions. Cannot be used on inline functions. */ -#if _GL_GNUC_PREREQ (11, 0) -# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) -#else -# define _GL_ATTRIBUTE_DEALLOC(f, i) +#ifndef _GL_ATTRIBUTE_DEALLOC +# if _GL_GNUC_PREREQ (11, 0) +# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) +# else +# define _GL_ATTRIBUTE_DEALLOC(f, i) +# endif #endif /* If gnulib's <string.h> or <wchar.h> has already defined this macro, continue to use this earlier definition, since <stdlib.h> may not have been included yet. */ #ifndef _GL_ATTRIBUTE_DEALLOC_FREE -# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1) +# if defined __cplusplus && defined __GNUC__ && !defined __clang__ +/* Work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108231> */ +# define _GL_ATTRIBUTE_DEALLOC_FREE \ + _GL_ATTRIBUTE_DEALLOC ((void (*) (void *)) free, 1) +# else +# define _GL_ATTRIBUTE_DEALLOC_FREE \ + _GL_ATTRIBUTE_DEALLOC (free, 1) +# endif #endif /* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. @@ -202,12 +250,20 @@ AC_DEFUN([gl_COMMON_BODY], [ - enumeration, enumeration item, - typedef, in C++ also: namespace, class, template specialization. */ -#if _GL_HAS_C_ATTRIBUTE (deprecated) -# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] -#elif _GL_HAS_ATTRIBUTE (deprecated) -# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GL_ATTRIBUTE_DEPRECATED +#ifndef _GL_ATTRIBUTE_DEPRECATED +# ifndef _GL_BRACKET_BEFORE_ATTRIBUTE +# if _GL_HAVE___HAS_C_ATTRIBUTE +# if __has_c_attribute (__deprecated__) +# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] +# endif +# endif +# endif +# if !defined _GL_ATTRIBUTE_DEPRECATED && _GL_HAS_ATTRIBUTE (deprecated) +# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) +# endif +# ifndef _GL_ATTRIBUTE_DEPRECATED +# define _GL_ATTRIBUTE_DEPRECATED +# endif #endif /* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and @@ -215,24 +271,28 @@ AC_DEFUN([gl_COMMON_BODY], [ _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and the function call is not optimized away. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (error) -# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) -# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) -#elif _GL_HAS_ATTRIBUTE (diagnose_if) -# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) -# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) -#else -# define _GL_ATTRIBUTE_ERROR(msg) -# define _GL_ATTRIBUTE_WARNING(msg) +#if !(defined _GL_ATTRIBUTE_ERROR && defined _GL_ATTRIBUTE_WARNING) +# if _GL_HAS_ATTRIBUTE (error) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) +# elif _GL_HAS_ATTRIBUTE (diagnose_if) +# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) +# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) +# else +# define _GL_ATTRIBUTE_ERROR(msg) +# define _GL_ATTRIBUTE_WARNING(msg) +# endif #endif /* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain visible to debuggers etc., even with '-fwhole-program'. */ /* Applies to: functions, variables. */ -#if _GL_HAS_ATTRIBUTE (externally_visible) -# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) -#else -# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +#ifndef _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +# if _GL_HAS_ATTRIBUTE (externally_visible) +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) +# else +# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE +# endif #endif /* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if @@ -240,12 +300,18 @@ AC_DEFUN([gl_COMMON_BODY], [ 'default' label. The compiler should not warn in this case. */ /* Applies to: Empty statement (;), inside a 'switch' statement. */ /* Always expands to something. */ -#if _GL_HAS_C_ATTRIBUTE (fallthrough) -# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] -#elif _GL_HAS_ATTRIBUTE (fallthrough) -# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) -#else -# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +#ifndef _GL_ATTRIBUTE_FALLTHROUGH +# if _GL_HAVE___HAS_C_ATTRIBUTE +# if __has_c_attribute (__fallthrough__) +# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] +# endif +# endif +# if !defined _GL_ATTRIBUTE_FALLTHROUGH && _GL_HAS_ATTRIBUTE (fallthrough) +# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) +# endif +# ifndef _GL_ATTRIBUTE_FALLTHROUGH +# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) +# endif #endif /* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) @@ -259,10 +325,12 @@ AC_DEFUN([gl_COMMON_BODY], [ If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK are suitable for the format string. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (format) -# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) -#else -# define _GL_ATTRIBUTE_FORMAT(spec) +#ifndef _GL_ATTRIBUTE_FORMAT +# if _GL_HAS_ATTRIBUTE (format) +# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) +# else +# define _GL_ATTRIBUTE_FORMAT(spec) +# endif #endif /* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other @@ -270,19 +338,23 @@ AC_DEFUN([gl_COMMON_BODY], [ exception handling. This declaration lets the compiler optimize that unit more aggressively. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (leaf) -# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) -#else -# define _GL_ATTRIBUTE_LEAF +#ifndef _GL_ATTRIBUTE_LEAF +# if _GL_HAS_ATTRIBUTE (leaf) +# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) +# else +# define _GL_ATTRIBUTE_LEAF +# endif #endif /* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly allocated memory. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (malloc) -# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) -#else -# define _GL_ATTRIBUTE_MALLOC +#ifndef _GL_ATTRIBUTE_MALLOC +# if _GL_HAS_ATTRIBUTE (malloc) +# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) +# else +# define _GL_ATTRIBUTE_MALLOC +# endif #endif /* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the @@ -290,10 +362,12 @@ AC_DEFUN([gl_COMMON_BODY], [ strict aliasing optimization. */ /* Applies to: types. */ /* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ -#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C -# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) -#else -# define _GL_ATTRIBUTE_MAY_ALIAS +#ifndef _GL_ATTRIBUTE_MAY_ALIAS +# if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C +# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) +# else +# define _GL_ATTRIBUTE_MAY_ALIAS +# endif #endif /* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if @@ -305,13 +379,26 @@ AC_DEFUN([gl_COMMON_BODY], [ - enumeration, enumeration item, - typedef, in C++ also: class. */ -/* In C++ and C2x, this is spelled [[__maybe_unused__]]. +/* In C++ and C23, this is spelled [[__maybe_unused__]]. GCC's syntax is __attribute__ ((__unused__)). - clang supports both syntaxes. */ -#if _GL_HAS_C_ATTRIBUTE (maybe_unused) -# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] -#else -# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED + clang supports both syntaxes. Except that with clang ≥ 6, < 10, in C++ mode, + __has_c_attribute (__maybe_unused__) yields true but the use of + [[__maybe_unused__]] nevertheless produces a warning. */ +#ifndef _GL_ATTRIBUTE_MAYBE_UNUSED +# ifndef _GL_BRACKET_BEFORE_ATTRIBUTE +# if defined __clang__ && defined __cplusplus +# if !defined __apple_build_version__ && __clang_major__ >= 10 +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +# endif +# elif _GL_HAVE___HAS_C_ATTRIBUTE +# if __has_c_attribute (__maybe_unused__) +# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] +# endif +# endif +# endif +# ifndef _GL_ATTRIBUTE_MAYBE_UNUSED +# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED +# endif #endif /* Alternative spelling of this macro, for convenience and for compatibility with glibc/include/libc-symbols.h. */ @@ -323,21 +410,40 @@ AC_DEFUN([gl_COMMON_BODY], [ discard the return value. The compiler may warn if the caller does not use the return value, unless the caller uses something like ignore_value. */ /* Applies to: function, enumeration, class. */ -#if _GL_HAS_C_ATTRIBUTE (nodiscard) -# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] -#elif _GL_HAS_ATTRIBUTE (warn_unused_result) -# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) -#else -# define _GL_ATTRIBUTE_NODISCARD +#ifndef _GL_ATTRIBUTE_NODISCARD +# ifndef _GL_BRACKET_BEFORE_ATTRIBUTE +# if defined __clang__ && defined __cplusplus + /* With clang up to 15.0.6 (at least), in C++ mode, [[__nodiscard__]] produces + a warning. + The 1000 below means a yet unknown threshold. When clang++ version X + starts supporting [[__nodiscard__]] without warning about it, you can + replace the 1000 with X. */ +# if __clang_major__ >= 1000 +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +# endif +# elif _GL_HAVE___HAS_C_ATTRIBUTE +# if __has_c_attribute (__nodiscard__) +# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] +# endif +# endif +# endif +# if !defined _GL_ATTRIBUTE_NODISCARD && _GL_HAS_ATTRIBUTE (warn_unused_result) +# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) +# endif +# ifndef _GL_ATTRIBUTE_NODISCARD +# define _GL_ATTRIBUTE_NODISCARD +# endif #endif /* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the function. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (noinline) -# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) -#else -# define _GL_ATTRIBUTE_NOINLINE +#ifndef _GL_ATTRIBUTE_NOINLINE +# if _GL_HAS_ATTRIBUTE (noinline) +# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) +# else +# define _GL_ATTRIBUTE_NOINLINE +# endif #endif /* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... @@ -345,20 +451,24 @@ AC_DEFUN([gl_COMMON_BODY], [ _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be null. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (nonnull) -# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) -#else -# define _GL_ATTRIBUTE_NONNULL(args) +#ifndef _GL_ATTRIBUTE_NONNULL +# if _GL_HAS_ATTRIBUTE (nonnull) +# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) +# else +# define _GL_ATTRIBUTE_NONNULL(args) +# endif #endif /* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is not meant to be NUL-terminated. */ /* Applies to: struct/union members and variables that are arrays of element type '[[un]signed] char'. */ -#if _GL_HAS_ATTRIBUTE (nonstring) -# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) -#else -# define _GL_ATTRIBUTE_NONSTRING +#ifndef _GL_ATTRIBUTE_NONSTRING +# if _GL_HAS_ATTRIBUTE (nonstring) +# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) +# else +# define _GL_ATTRIBUTE_NONSTRING +# endif #endif /* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ @@ -366,10 +476,26 @@ AC_DEFUN([gl_COMMON_BODY], [ /* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus -# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) -#else -# define _GL_ATTRIBUTE_NOTHROW +/* After a function's parameter list, this attribute must come first, before + other attributes. */ +#ifndef _GL_ATTRIBUTE_NOTHROW +# if defined __cplusplus +# if _GL_GNUC_PREREQ (2, 8) || __clang_major >= 4 +# if __cplusplus >= 201103L +# define _GL_ATTRIBUTE_NOTHROW noexcept (true) +# else +# define _GL_ATTRIBUTE_NOTHROW throw () +# endif +# else +# define _GL_ATTRIBUTE_NOTHROW +# endif +# else +# if _GL_HAS_ATTRIBUTE (nothrow) +# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) +# else +# define _GL_ATTRIBUTE_NOTHROW +# endif +# endif #endif /* _GL_ATTRIBUTE_PACKED declares: @@ -378,10 +504,12 @@ AC_DEFUN([gl_COMMON_BODY], [ minimizing the memory required. */ /* Applies to: struct members, struct, union, in C++ also: class. */ -#if _GL_HAS_ATTRIBUTE (packed) -# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) -#else -# define _GL_ATTRIBUTE_PACKED +#ifndef _GL_ATTRIBUTE_PACKED +# if _GL_HAS_ATTRIBUTE (packed) +# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) +# else +# define _GL_ATTRIBUTE_PACKED +# endif #endif /* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate @@ -391,19 +519,23 @@ AC_DEFUN([gl_COMMON_BODY], [ observable state, and always returns exactly once. (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (pure) -# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) -#else -# define _GL_ATTRIBUTE_PURE +#ifndef _GL_ATTRIBUTE_PURE +# if _GL_HAS_ATTRIBUTE (pure) +# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) +# else +# define _GL_ATTRIBUTE_PURE +# endif #endif /* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is a non-NULL pointer. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (returns_nonnull) -# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) -#else -# define _GL_ATTRIBUTE_RETURNS_NONNULL +#ifndef _GL_ATTRIBUTE_RETURNS_NONNULL +# if _GL_HAS_ATTRIBUTE (returns_nonnull) +# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) +# else +# define _GL_ATTRIBUTE_RETURNS_NONNULL +# endif #endif /* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a @@ -411,17 +543,21 @@ AC_DEFUN([gl_COMMON_BODY], [ _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ /* Applies to: functions. */ -#if _GL_HAS_ATTRIBUTE (sentinel) -# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) -#else -# define _GL_ATTRIBUTE_SENTINEL(pos) +#ifndef _GL_ATTRIBUTE_SENTINEL +# if _GL_HAS_ATTRIBUTE (sentinel) +# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) +# else +# define _GL_ATTRIBUTE_SENTINEL(pos) +# endif #endif /* A helper macro. Don't use it directly. */ -#if _GL_HAS_ATTRIBUTE (unused) -# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) -#else -# define _GL_ATTRIBUTE_UNUSED +#ifndef _GL_ATTRIBUTE_UNUSED +# if _GL_HAS_ATTRIBUTE (unused) +# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define _GL_ATTRIBUTE_UNUSED +# endif #endif ]dnl There is no _GL_ATTRIBUTE_VISIBILITY; see m4/visibility.m4 instead. @@ -432,10 +568,24 @@ AC_DEFUN([gl_COMMON_BODY], [ /* Applies to: label (both in C and C++). */ /* Note that g++ < 4.5 does not support the '__attribute__ ((__unused__)) ;' syntax. But clang does. */ -#if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ -# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +#ifndef _GL_UNUSED_LABEL +# if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ +# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED +# else +# define _GL_UNUSED_LABEL +# endif +#endif +]) + AH_VERBATIM([c_linkage], +[/* In C++, there is the concept of "language linkage", that encompasses + name mangling and function calling conventions. + The following macros start and end a block of "C" linkage. */ +#ifdef __cplusplus +# define _GL_BEGIN_C_LINKAGE extern "C" { +# define _GL_END_C_LINKAGE } #else -# define _GL_UNUSED_LABEL +# define _GL_BEGIN_C_LINKAGE +# define _GL_END_C_LINKAGE #endif ]) AH_VERBATIM([async_safe], @@ -493,7 +643,7 @@ AC_DEFUN([gl_COMMON_BODY], [ dnl gl_cross_guess_normal (to be used when 'yes' is good and 'no' is bad), dnl gl_cross_guess_inverted (to be used when 'no' is good and 'yes' is bad). AC_ARG_ENABLE([cross-guesses], - [AS_HELP_STRING([--enable-cross-guesses={conservative|risky}], + [AS_HELP_STRING([[--enable-cross-guesses={conservative|risky}]], [specify policy for cross-compilation guesses])], [if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then AC_MSG_WARN([invalid argument supplied to --enable-cross-guesses]) @@ -930,6 +1080,7 @@ AC_DEFUN([gl_CC_GNULIB_WARNINGS], dnl -Wno-pedantic >= 4.8 >= 3.9 dnl -Wno-sign-compare >= 3 >= 3.9 dnl -Wno-sign-conversion >= 4.3 >= 3.9 + dnl -Wno-tautological-out-of-range-compare - >= 3.9 dnl -Wno-type-limits >= 4.3 >= 3.9 dnl -Wno-undef >= 3 >= 3.9 dnl -Wno-unsuffixed-float-constants >= 4.5 @@ -955,6 +1106,9 @@ AC_DEFUN([gl_CC_GNULIB_WARNINGS], #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) -Wno-pedantic #endif + #if 3 < __clang_major__ + (9 <= __clang_minor__) + -Wno-tautological-constant-out-of-range-compare + #endif #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) -Wno-sign-conversion -Wno-type-limits @@ -1005,6 +1159,238 @@ AC_DEFUN([gl_CONDITIONAL_HEADER], m4_popdef([gl_header_name]) ]) +dnl Preparations for gl_CHECK_FUNCS_MACOS. +AC_DEFUN([gl_PREPARE_CHECK_FUNCS_MACOS], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([gl_COMPILER_CLANG]) + AC_CACHE_CHECK([for compiler option needed when checking for future declarations], + [gl_cv_compiler_check_future_option], + [case "$host_os" in + dnl This is only needed on macOS. + darwin*) + if test $gl_cv_compiler_clang = yes; then + dnl Test whether the compiler supports the option + dnl '-Werror=unguarded-availability-new'. + saved_ac_compile="$ac_compile" + ac_compile="$ac_compile -Werror=unguarded-availability-new" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[]])], + [gl_cv_compiler_check_future_option='-Werror=unguarded-availability-new'], + [gl_cv_compiler_check_future_option=none]) + ac_compile="$saved_ac_compile" + else + gl_cv_compiler_check_future_option=none + fi + ;; + *) gl_cv_compiler_check_future_option=none ;; + esac + ]) +]) + +dnl Pieces of the expansion of +dnl gl_CHECK_FUNCS_ANDROID +dnl gl_CHECK_FUNCS_MACOS +dnl gl_CHECK_FUNCS_ANDROID_MACOS + +AC_DEFUN([gl_CHECK_FUNCS_DEFAULT_CASE], +[ + *) + AC_CHECK_FUNC([$1]) + [gl_cv_onwards_func_][$1]=$[ac_cv_func_][$1] + ;; +]) + +AC_DEFUN([gl_CHECK_FUNCS_CASE_FOR_ANDROID], +[ + linux*-android*) + AC_CHECK_DECL([$1], , , [$2]) + if test $[ac_cv_have_decl_][$1] = yes; then + AC_CHECK_FUNC([[$1]]) + if test $[ac_cv_func_][$1] = yes; then + [gl_cv_onwards_func_][$1]=yes + else + dnl The function is declared but does not exist. This should not + dnl happen normally. But anyway, we know that a future version + dnl of Android will have the function. + [gl_cv_onwards_func_][$1]='future OS version' + fi + else + [gl_cv_onwards_func_][$1]='future OS version' + fi + ;; +]) + +AC_DEFUN([gl_CHECK_FUNCS_CASE_FOR_MACOS], +[ + darwin*) + if test "x$gl_cv_compiler_check_future_option" != "xnone"; then + dnl Use a compile test, not a link test. + saved_ac_compile="$ac_compile" + ac_compile="$ac_compile $gl_cv_compiler_check_future_option" + saved_ac_compile_for_check_decl="$ac_compile_for_check_decl" + ac_compile_for_check_decl="$ac_compile_for_check_decl $gl_cv_compiler_check_future_option" + unset [ac_cv_have_decl_][$1] + AC_CHECK_DECL([$1], , , [$2]) + ac_compile="$saved_ac_compile" + ac_compile_for_check_decl="$saved_ac_compile_for_check_decl" + [ac_cv_func_][$1]="$[ac_cv_have_decl_][$1]" + if test $[ac_cv_func_][$1] = yes; then + [gl_cv_onwards_func_][$1]=yes + else + unset [ac_cv_have_decl_][$1] + AC_CHECK_DECL([$1], , , [$2]) + if test $[ac_cv_have_decl_][$1] = yes; then + [gl_cv_onwards_func_][$1]='future OS version' + else + [gl_cv_onwards_func_][$1]=no + fi + fi + else + AC_CHECK_FUNC([$1]) + [gl_cv_onwards_func_][$1]=$[ac_cv_func_][$1] + fi + ;; +]) + +AC_DEFUN([gl_CHECK_FUNCS_SET_RESULTS], +[ + case "$[gl_cv_onwards_func_][$1]" in + future*) [ac_cv_func_][$1]=no ;; + *) [ac_cv_func_][$1]=$[gl_cv_onwards_func_][$1] ;; + esac + if test $[ac_cv_func_][$1] = yes; then + AC_DEFINE([HAVE_]m4_translit([[$1]], + [abcdefghijklmnopqrstuvwxyz], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ]), + [1], [Define to 1 if you have the `$1' function.]) + fi +]) + +dnl gl_CHECK_FUNCS_ANDROID([func], [[#include <foo.h>]]) +dnl is like AC_CHECK_FUNCS([func]), taking into account a portability problem +dnl on Android. +dnl +dnl When code is compiled on Android, it is in the context of a certain +dnl "Android API level", which indicates the minimum version of Android on +dnl which the app can be installed. In other words, you don't compile for a +dnl specific version of Android. You compile for all versions of Android, +dnl onwards from the given API level. +dnl Thus, the question "does the OS have the function func" has three possible +dnl answers: +dnl - yes, in all versions starting from the given API level, +dnl - no, in no version, +dnl - not in the given API level, but in a later version of Android. +dnl +dnl In detail, this works as follows: +dnl If func was added to Android API level, say, 28, then the libc.so has the +dnl symbol func always, whereas the header file <foo.h> declares func +dnl conditionally: +dnl #if __ANDROID_API__ >= 28 +dnl ... func (...) __INTRODUCED_IN(28); +dnl #endif +dnl Thus, when compiling with "clang -target armv7a-unknown-linux-android28", +dnl the function func is declared and exists in libc. +dnl Whereas when compiling with "clang -target armv7a-unknown-linux-android27", +dnl the function func is not declared but exists in libc. +dnl +dnl This macro sets two variables: +dnl - gl_cv_onwards_func_<func> to yes / no / "future OS version" +dnl - ac_cv_func_<func> to yes / no / no +dnl The first variable allows to distinguish all three cases. +dnl The second variable is set, so that an invocation +dnl gl_CHECK_FUNCS_ANDROID([func], [[#include <foo.h>]]) +dnl can be used as a drop-in replacement for +dnl AC_CHECK_FUNCS([func]). +AC_DEFUN([gl_CHECK_FUNCS_ANDROID], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_CACHE_CHECK([for [$1]], + [[gl_cv_onwards_func_][$1]], + [gl_SILENT([ + case "$host_os" in + gl_CHECK_FUNCS_CASE_FOR_ANDROID([$1], [$2]) + gl_CHECK_FUNCS_DEFAULT_CASE([$1]) + esac + ]) + ]) + gl_CHECK_FUNCS_SET_RESULTS([$1]) +]) + +dnl gl_CHECK_FUNCS_MACOS([func], [[#include <foo.h>]]) +dnl is like AC_CHECK_FUNCS([func]), taking into account a portability problem +dnl on macOS. +dnl +dnl When code is compiled on macOS, it is in the context of a certain minimum +dnl macOS version, that can be set through the option '-mmacosx-version-min='. +dnl In other words, you don't compile for a specific version of macOS. You +dnl compile for all versions of macOS, onwards from the given version. +dnl Thus, the question "does the OS have the function func" has three possible +dnl answers: +dnl - yes, in all versions starting from the given version, +dnl - no, in no version, +dnl - not in the given version, but in a later version of macOS. +dnl +dnl In detail, this works as follows: +dnl If func was added to, say, macOS version 13, then the libc has the +dnl symbol func always, whereas the header file <foo.h> declares func +dnl conditionally with a special availability attribute: +dnl ... func (...) __attribute__((availability(macos,introduced=13.0))); +dnl Thus, when compiling with "clang mmacosx-version-min=13", there is no +dnl warning about the use of func, and the resulting binary +dnl - runs fine on macOS 13, +dnl - aborts with a dyld "Symbol not found" message on macOS 12. +dnl Whereas, when compiling with "clang mmacosx-version-min=12", there is a +dnl warning: 'func' is only available on macOS 13.0 or newer +dnl [-Wunguarded-availability-new], +dnl and the resulting binary +dnl - runs fine on macOS 13, +dnl - crashes with a SIGSEGV (signal 11) on macOS 12. +dnl +dnl This macro sets two variables: +dnl - gl_cv_onwards_func_<func> to yes / no / "future OS version" +dnl - ac_cv_func_<func> to yes / no / no +dnl The first variable allows to distinguish all three cases. +dnl The second variable is set, so that an invocation +dnl gl_CHECK_FUNCS_MACOS([func], [[#include <foo.h>]]) +dnl can be used as a drop-in replacement for +dnl AC_CHECK_FUNCS([func]). +AC_DEFUN([gl_CHECK_FUNCS_MACOS], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([gl_PREPARE_CHECK_FUNCS_MACOS]) + AC_CACHE_CHECK([for [$1]], + [[gl_cv_onwards_func_][$1]], + [gl_SILENT([ + case "$host_os" in + gl_CHECK_FUNCS_CASE_FOR_MACOS([$1], [$2]) + gl_CHECK_FUNCS_DEFAULT_CASE([$1]) + esac + ]) + ]) + gl_CHECK_FUNCS_SET_RESULTS([$1]) +]) + +dnl gl_CHECK_FUNCS_ANDROID_MACOS([func], [[#include <foo.h>]]) +dnl is like AC_CHECK_FUNCS([func]), taking into account a portability problem +dnl on Android and on macOS. +dnl It is the combination of gl_CHECK_FUNCS_ANDROID and gl_CHECK_FUNCS_MACOS. +AC_DEFUN([gl_CHECK_FUNCS_ANDROID_MACOS], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([gl_PREPARE_CHECK_FUNCS_MACOS]) + AC_CACHE_CHECK([for [$1]], + [[gl_cv_onwards_func_][$1]], + [gl_SILENT([ + case "$host_os" in + gl_CHECK_FUNCS_CASE_FOR_ANDROID([$1], [$2]) + gl_CHECK_FUNCS_CASE_FOR_MACOS([$1], [$2]) + gl_CHECK_FUNCS_DEFAULT_CASE([$1]) + esac + ]) + ]) + gl_CHECK_FUNCS_SET_RESULTS([$1]) +]) + dnl Expands to some code for use in .c programs that, on native Windows, defines dnl the Microsoft deprecated alias function names to the underscore-prefixed dnl actual function names. With this macro, these function names are available diff --git a/gnulib-m4/gnulib-comp.m4 b/gnulib-m4/gnulib-comp.m4 index 7bad3983..4947d6c0 100644 --- a/gnulib-m4/gnulib-comp.m4 +++ b/gnulib-m4/gnulib-comp.m4 @@ -1,5 +1,5 @@ # DO NOT EDIT! GENERATED AUTOMATICALLY! -# Copyright (C) 2002-2022 Free Software Foundation, Inc. +# Copyright (C) 2002-2024 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -45,6 +45,8 @@ AC_DEFUN([gl_EARLY], # Code from module absolute-header: # Code from module accept: # Code from module accept-tests: + # Code from module alignasof: + # Code from module alignasof-tests: # Code from module alloca: # Code from module alloca-opt: # Code from module alloca-opt-tests: @@ -61,6 +63,8 @@ AC_DEFUN([gl_EARLY], # Code from module binary-io-tests: # Code from module bind: # Code from module bind-tests: + # Code from module btoc32: + # Code from module btoc32-tests: # Code from module btowc: # Code from module btowc-tests: # Code from module builtin-expect: @@ -69,6 +73,37 @@ AC_DEFUN([gl_EARLY], # Code from module c-strcase: # Code from module c-strcase-tests: # Code from module c-strcaseeq: + # Code from module c32isalnum: + # Code from module c32isalnum-tests: + # Code from module c32isalpha: + # Code from module c32isalpha-tests: + # Code from module c32isblank: + # Code from module c32isblank-tests: + # Code from module c32iscntrl: + # Code from module c32iscntrl-tests: + # Code from module c32isdigit: + # Code from module c32isdigit-tests: + # Code from module c32isgraph: + # Code from module c32isgraph-tests: + # Code from module c32islower: + # Code from module c32islower-tests: + # Code from module c32isprint: + # Code from module c32isprint-tests: + # Code from module c32ispunct: + # Code from module c32ispunct-tests: + # Code from module c32isspace: + # Code from module c32isspace-tests: + # Code from module c32isupper: + # Code from module c32isupper-tests: + # Code from module c32isxdigit: + # Code from module c32isxdigit-tests: + # Code from module c32rtomb: + # Code from module c32rtomb-tests: + # Code from module c32tob: + # Code from module c32tolower: + # Code from module c32tolower-tests: + # Code from module c32width: + # Code from module c32width-tests: # Code from module c99: # Code from module calloc-gnu: # Code from module calloc-gnu-tests: @@ -89,6 +124,8 @@ AC_DEFUN([gl_EARLY], # Code from module errno: # Code from module errno-tests: # Code from module error: + # Code from module error-h: + # Code from module error-tests: # Code from module exitfail: # Code from module extensions: # Code from module extern-inline: @@ -133,6 +170,7 @@ AC_DEFUN([gl_EARLY], # Code from module gettext-h: # Code from module gettimeofday: # Code from module gettimeofday-tests: + # Code from module gitlog-to-changelog: # Code from module gperf: # Code from module hard-locale: # Code from module hard-locale-tests: @@ -169,13 +207,16 @@ AC_DEFUN([gl_EARLY], # Code from module iswblank-tests: # Code from module iswdigit: # Code from module iswdigit-tests: + # Code from module iswpunct: + # Code from module iswpunct-tests: # Code from module iswxdigit: # Code from module iswxdigit-tests: # Code from module langinfo: # Code from module langinfo-tests: # Code from module largefile: - AC_REQUIRE([gl_YEAR2038_EARLY]) AC_REQUIRE([AC_SYS_LARGEFILE]) + # Code from module largefile-tests: + # Code from module libc-config: # Code from module limits-h: # Code from module limits-h-tests: # Code from module listen: @@ -186,6 +227,8 @@ AC_DEFUN([gl_EARLY], # Code from module locale-tests: # Code from module localename: # Code from module localename-tests: + # Code from module localename-unsafe: + # Code from module localename-unsafe-limited: # Code from module lock: # Code from module lock-tests: # Code from module lstat: @@ -198,12 +241,15 @@ AC_DEFUN([gl_EARLY], # Code from module math: # Code from module math-tests: # Code from module mbchar: - # Code from module mbiter: + # Code from module mbiterf: + # Code from module mbrtoc32: + # Code from module mbrtoc32-tests: # Code from module mbrtowc: # Code from module mbrtowc-tests: # Code from module mbsinit: # Code from module mbsinit-tests: # Code from module mbsnlen: + # Code from module mbszero: # Code from module mbtowc: # Code from module memchr: # Code from module memchr-tests: @@ -212,6 +258,7 @@ AC_DEFUN([gl_EARLY], # Code from module msvc-inval: # Code from module msvc-nothrow: # Code from module multiarch: + # Code from module nan: # Code from module nanosleep: # Code from module nanosleep-tests: # Code from module netinet_in: @@ -242,6 +289,10 @@ AC_DEFUN([gl_EARLY], # Code from module putenv: # Code from module raise: # Code from module raise-tests: + # Code from module random: + # Code from module random-tests: + # Code from module random_r: + # Code from module random_r-tests: # Code from module realloc-gnu: # Code from module realloc-gnu-tests: # Code from module realloc-posix: @@ -259,6 +310,8 @@ AC_DEFUN([gl_EARLY], # Code from module setlocale: # Code from module setlocale-null: # Code from module setlocale-null-tests: + # Code from module setlocale-null-unlocked: + # Code from module setlocale-null-unlocked-tests: # Code from module setlocale-tests: # Code from module setsockopt: # Code from module setsockopt-tests: @@ -266,11 +319,14 @@ AC_DEFUN([gl_EARLY], # Code from module signal-h-tests: # Code from module signbit: # Code from module signbit-tests: + # Code from module signed-nan: + # Code from module signed-snan: # Code from module sigprocmask: # Code from module sigprocmask-tests: # Code from module size_max: # Code from module sleep: # Code from module sleep-tests: + # Code from module snan: # Code from module snippet/_Noreturn: # Code from module snippet/arg-nonnull: # Code from module snippet/c++defs: @@ -286,8 +342,6 @@ AC_DEFUN([gl_EARLY], # Code from module stat-time: # Code from module stat-time-tests: # Code from module std-gnu11: - # Code from module stdalign: - # Code from module stdalign-tests: # Code from module stdbool: # Code from module stdbool-tests: # Code from module stdckdint: @@ -297,6 +351,7 @@ AC_DEFUN([gl_EARLY], # Code from module stdint: # Code from module stdint-tests: # Code from module stdio: + gl_STDIO_H_EARLY # Code from module stdio-tests: # Code from module stdlib: # Code from module stdlib-tests: @@ -341,7 +396,11 @@ AC_DEFUN([gl_EARLY], # Code from module threadlib: gl_THREADLIB_EARLY # Code from module time: + # Code from module time-h: + # Code from module time-h-tests: # Code from module time-tests: + # Code from module uchar: + # Code from module uchar-tests: # Code from module unicase/base: # Code from module unicase/cased: # Code from module unicase/cased-tests: @@ -640,6 +699,13 @@ AC_DEFUN([gl_EARLY], # Code from module unictype/decimal-digit-tests: # Code from module unictype/digit: # Code from module unictype/digit-tests: + # Code from module unictype/incb-all: + # Code from module unictype/incb-byname: + # Code from module unictype/incb-byname-tests: + # Code from module unictype/incb-name: + # Code from module unictype/incb-name-tests: + # Code from module unictype/incb-of: + # Code from module unictype/incb-of-tests: # Code from module unictype/joininggroup-all: # Code from module unictype/joininggroup-byname: # Code from module unictype/joininggroup-byname-tests: @@ -757,6 +823,10 @@ AC_DEFUN([gl_EARLY], # Code from module unictype/property-hex-digit-tests: # Code from module unictype/property-hyphen: # Code from module unictype/property-hyphen-tests: + # Code from module unictype/property-id-compat-math-continue: + # Code from module unictype/property-id-compat-math-continue-tests: + # Code from module unictype/property-id-compat-math-start: + # Code from module unictype/property-id-compat-math-start-tests: # Code from module unictype/property-id-continue: # Code from module unictype/property-id-continue-tests: # Code from module unictype/property-id-start: @@ -767,6 +837,8 @@ AC_DEFUN([gl_EARLY], # Code from module unictype/property-ids-binary-operator-tests: # Code from module unictype/property-ids-trinary-operator: # Code from module unictype/property-ids-trinary-operator-tests: + # Code from module unictype/property-ids-unary-operator: + # Code from module unictype/property-ids-unary-operator-tests: # Code from module unictype/property-ignorable-control: # Code from module unictype/property-ignorable-control-tests: # Code from module unictype/property-iso-control: @@ -813,6 +885,8 @@ AC_DEFUN([gl_EARLY], # Code from module unictype/property-pattern-syntax-tests: # Code from module unictype/property-pattern-white-space: # Code from module unictype/property-pattern-white-space-tests: + # Code from module unictype/property-prepended-concatenation-mark: + # Code from module unictype/property-prepended-concatenation-mark-tests: # Code from module unictype/property-private-use: # Code from module unictype/property-private-use-tests: # Code from module unictype/property-punctuation: @@ -908,6 +982,9 @@ AC_DEFUN([gl_EARLY], # Code from module unilbrk/ulc-possible-linebreaks-tests: # Code from module unilbrk/ulc-width-linebreaks: # Code from module unilbrk/ulc-width-linebreaks-tests: + # Code from module unimetadata/base: + # Code from module unimetadata/u-version: + # Code from module unimetadata/u-version-tests: # Code from module uniname/base: # Code from module uniname/uniname: # Code from module uniname/uniname-tests: @@ -1066,6 +1143,8 @@ AC_DEFUN([gl_EARLY], # Code from module unistr/u16-move-tests: # Code from module unistr/u16-next: # Code from module unistr/u16-next-tests: + # Code from module unistr/u16-pcpy: + # Code from module unistr/u16-pcpy-tests: # Code from module unistr/u16-prev: # Code from module unistr/u16-prev-tests: # Code from module unistr/u16-set: @@ -1142,6 +1221,8 @@ AC_DEFUN([gl_EARLY], # Code from module unistr/u32-move-tests: # Code from module unistr/u32-next: # Code from module unistr/u32-next-tests: + # Code from module unistr/u32-pcpy: + # Code from module unistr/u32-pcpy-tests: # Code from module unistr/u32-prev: # Code from module unistr/u32-prev-tests: # Code from module unistr/u32-set: @@ -1218,6 +1299,8 @@ AC_DEFUN([gl_EARLY], # Code from module unistr/u8-move-tests: # Code from module unistr/u8-next: # Code from module unistr/u8-next-tests: + # Code from module unistr/u8-pcpy: + # Code from module unistr/u8-pcpy-tests: # Code from module unistr/u8-prev: # Code from module unistr/u8-prev-tests: # Code from module unistr/u8-set: @@ -1351,6 +1434,90 @@ AC_DEFUN([gl_INIT], gl_CONDITIONAL_HEADER([assert.h]) AC_PROG_MKDIR_P gl___BUILTIN_EXPECT + AC_REQUIRE([gl_UCHAR_H]) + dnl Determine REPLACE_MBSTATE_T, from which GNULIB_defined_mbstate_t is + dnl determined. It describes how mbrtoc32 is implemented. + AC_REQUIRE([gl_MBSTATE_T_BROKEN]) + AC_REQUIRE([gl_MBRTOC32_SANITYCHECK]) + gl_UCHAR_MODULE_INDICATOR([c32isalnum]) + AC_REQUIRE([gl_UCHAR_H]) + dnl Determine REPLACE_MBSTATE_T, from which GNULIB_defined_mbstate_t is + dnl determined. It describes how mbrtoc32 is implemented. + AC_REQUIRE([gl_MBSTATE_T_BROKEN]) + AC_REQUIRE([gl_MBRTOC32_SANITYCHECK]) + gl_UCHAR_MODULE_INDICATOR([c32isalpha]) + AC_REQUIRE([gl_UCHAR_H]) + dnl Determine REPLACE_MBSTATE_T, from which GNULIB_defined_mbstate_t is + dnl determined. It describes how mbrtoc32 is implemented. + AC_REQUIRE([gl_MBSTATE_T_BROKEN]) + AC_REQUIRE([gl_MBRTOC32_SANITYCHECK]) + gl_UCHAR_MODULE_INDICATOR([c32isblank]) + AC_REQUIRE([gl_UCHAR_H]) + dnl Determine REPLACE_MBSTATE_T, from which GNULIB_defined_mbstate_t is + dnl determined. It describes how mbrtoc32 is implemented. + AC_REQUIRE([gl_MBSTATE_T_BROKEN]) + AC_REQUIRE([gl_MBRTOC32_SANITYCHECK]) + gl_UCHAR_MODULE_INDICATOR([c32iscntrl]) + AC_REQUIRE([gl_UCHAR_H]) + dnl Determine REPLACE_MBSTATE_T, from which GNULIB_defined_mbstate_t is + dnl determined. It describes how mbrtoc32 is implemented. + AC_REQUIRE([gl_MBSTATE_T_BROKEN]) + AC_REQUIRE([gl_MBRTOC32_SANITYCHECK]) + gl_UCHAR_MODULE_INDICATOR([c32isdigit]) + AC_REQUIRE([gl_UCHAR_H]) + dnl Determine REPLACE_MBSTATE_T, from which GNULIB_defined_mbstate_t is + dnl determined. It describes how mbrtoc32 is implemented. + AC_REQUIRE([gl_MBSTATE_T_BROKEN]) + AC_REQUIRE([gl_MBRTOC32_SANITYCHECK]) + gl_UCHAR_MODULE_INDICATOR([c32isgraph]) + AC_REQUIRE([gl_UCHAR_H]) + dnl Determine REPLACE_MBSTATE_T, from which GNULIB_defined_mbstate_t is + dnl determined. It describes how mbrtoc32 is implemented. + AC_REQUIRE([gl_MBSTATE_T_BROKEN]) + AC_REQUIRE([gl_MBRTOC32_SANITYCHECK]) + gl_UCHAR_MODULE_INDICATOR([c32islower]) + AC_REQUIRE([gl_UCHAR_H]) + dnl Determine REPLACE_MBSTATE_T, from which GNULIB_defined_mbstate_t is + dnl determined. It describes how mbrtoc32 is implemented. + AC_REQUIRE([gl_MBSTATE_T_BROKEN]) + AC_REQUIRE([gl_MBRTOC32_SANITYCHECK]) + gl_UCHAR_MODULE_INDICATOR([c32isprint]) + AC_REQUIRE([gl_UCHAR_H]) + dnl Determine REPLACE_MBSTATE_T, from which GNULIB_defined_mbstate_t is + dnl determined. It describes how mbrtoc32 is implemented. + AC_REQUIRE([gl_MBSTATE_T_BROKEN]) + AC_REQUIRE([gl_MBRTOC32_SANITYCHECK]) + gl_UCHAR_MODULE_INDICATOR([c32ispunct]) + AC_REQUIRE([gl_UCHAR_H]) + dnl Determine REPLACE_MBSTATE_T, from which GNULIB_defined_mbstate_t is + dnl determined. It describes how mbrtoc32 is implemented. + AC_REQUIRE([gl_MBSTATE_T_BROKEN]) + AC_REQUIRE([gl_MBRTOC32_SANITYCHECK]) + gl_UCHAR_MODULE_INDICATOR([c32isspace]) + AC_REQUIRE([gl_UCHAR_H]) + dnl Determine REPLACE_MBSTATE_T, from which GNULIB_defined_mbstate_t is + dnl determined. It describes how mbrtoc32 is implemented. + AC_REQUIRE([gl_MBSTATE_T_BROKEN]) + AC_REQUIRE([gl_MBRTOC32_SANITYCHECK]) + gl_UCHAR_MODULE_INDICATOR([c32isupper]) + AC_REQUIRE([gl_UCHAR_H]) + dnl Determine REPLACE_MBSTATE_T, from which GNULIB_defined_mbstate_t is + dnl determined. It describes how mbrtoc32 is implemented. + AC_REQUIRE([gl_MBSTATE_T_BROKEN]) + AC_REQUIRE([gl_MBRTOC32_SANITYCHECK]) + gl_UCHAR_MODULE_INDICATOR([c32isxdigit]) + AC_REQUIRE([gl_UCHAR_H]) + dnl Determine REPLACE_MBSTATE_T, from which GNULIB_defined_mbstate_t is + dnl determined. It describes how mbrtoc32 is implemented. + AC_REQUIRE([gl_MBSTATE_T_BROKEN]) + AC_REQUIRE([gl_MBRTOC32_SANITYCHECK]) + gl_UCHAR_MODULE_INDICATOR([c32tolower]) + AC_REQUIRE([gl_UCHAR_H]) + dnl Determine REPLACE_MBSTATE_T, from which GNULIB_defined_mbstate_t is + dnl determined. It describes how mbrtoc32 is implemented. + AC_REQUIRE([gl_MBSTATE_T_BROKEN]) + AC_REQUIRE([gl_MBRTOC32_SANITYCHECK]) + gl_UCHAR_MODULE_INDICATOR([c32width]) gl_HEADER_ERRNO_H gl_CONDITIONAL_HEADER([errno.h]) AC_PROG_MKDIR_P @@ -1380,7 +1547,10 @@ AC_DEFUN([gl_INIT], gl_FUNC_FSETERR gl_CONDITIONAL([GL_COND_OBJ_FSETERR], [test $ac_cv_func___fseterr = no]) AC_REQUIRE([gl_FUNC_SETLOCALE_NULL]) - LIB_HARD_LOCALE="$LIB_SETLOCALE_NULL" + HARD_LOCALE_LIB="$SETLOCALE_NULL_LIB" + AC_SUBST([HARD_LOCALE_LIB]) + dnl For backward compatibility. + LIB_HARD_LOCALE="$HARD_LOCALE_LIB" AC_SUBST([LIB_HARD_LOCALE]) AC_DEFUN([gl_HAVE_MODULE_HAVELIB]) AM_ICONV @@ -1422,6 +1592,10 @@ AC_DEFUN([gl_INIT], gl_CONDITIONAL([GL_COND_OBJ_ISWDIGIT], [! { test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; } && test $REPLACE_ISWDIGIT = 1]) gl_WCTYPE_MODULE_INDICATOR([iswdigit]) + gl_FUNC_ISWPUNCT + gl_CONDITIONAL([GL_COND_OBJ_ISWPUNCT], + [! { test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; } && test $REPLACE_ISWPUNCT = 1]) + gl_WCTYPE_MODULE_INDICATOR([iswpunct]) gl_FUNC_ISWXDIGIT gl_CONDITIONAL([GL_COND_OBJ_ISWXDIGIT], [! { test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; } && test $REPLACE_ISWXDIGIT = 1]) @@ -1439,8 +1613,13 @@ AC_DEFUN([gl_INIT], gl_LOCALE_H gl_LOCALE_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P - gl_LOCALENAME - gl_LOCALE_MODULE_INDICATOR([localename]) + gl_LOCALENAME_UNSAFE + gl_LOCALE_MODULE_INDICATOR([localename-unsafe]) + gl_MUSL_LIBC + gl_LOCALENAME_UNSAFE_LIMITED + AC_REQUIRE([AC_CANONICAL_HOST]) + gl_CONDITIONAL([GL_COND_OBJ_LOCALENAME_UNSAFE_LIMITED], + [case "$host_os" in netbsd* | solaris*) true;; *) false;; esac]) gl_LOCK gl_MODULE_INDICATOR([lock]) AC_REQUIRE([gl_FUNC_MALLOC_POSIX]) @@ -1454,6 +1633,18 @@ AC_DEFUN([gl_INIT], AC_PROG_MKDIR_P gl_MBCHAR gl_MBITER + gl_FUNC_MBRTOC32 + gl_CONDITIONAL([GL_COND_OBJ_MBRTOC32], + [test $HAVE_MBRTOC32 = 0 || test $REPLACE_MBRTOC32 = 1]) + AM_COND_IF([GL_COND_OBJ_MBRTOC32], [ + if test $REPLACE_MBSTATE_T = 1; then + AC_LIBOBJ([lc-charset-dispatch]) + AC_LIBOBJ([mbtowc-lock]) + gl_PREREQ_MBTOWC_LOCK + fi + gl_PREREQ_MBRTOC32 + ]) + gl_UCHAR_MODULE_INDICATOR([mbrtoc32]) gl_FUNC_MBRTOWC gl_CONDITIONAL([GL_COND_OBJ_MBRTOWC], [test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1]) @@ -1474,6 +1665,10 @@ AC_DEFUN([gl_INIT], ]) gl_WCHAR_MODULE_INDICATOR([mbsinit]) gl_STRING_MODULE_INDICATOR([mbsnlen]) + AC_REQUIRE([AC_TYPE_MBSTATE_T]) + gl_MBSTATE_T_BROKEN + gl_MUSL_LIBC + gl_WCHAR_MODULE_INDICATOR([mbszero]) gl_FUNC_MEMCHR gl_CONDITIONAL([GL_COND_OBJ_MEMCHR], [test $REPLACE_MEMCHR = 1]) AM_COND_IF([GL_COND_OBJ_MEMCHR], [ @@ -1549,11 +1744,18 @@ AC_DEFUN([gl_INIT], AC_PROG_MKDIR_P AC_CHECK_HEADERS([sys/single_threaded.h]) AC_REQUIRE([gl_THREADLIB]) - gl_LIBUNISTRING_LIBHEADER([0.9.11], [unicase.h]) + gl_UCHAR_H + gl_UCHAR_H_REQUIRE_DEFAULTS + AC_PROG_MKDIR_P + gl_LIBUNISTRING_LIBHEADER([1.2], [unicase.h]) + gl_UNICASE_H + gl_UNICASE_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.11], [unicase/empty-prefix-context]) - gl_LIBUNISTRING_MODULE([0.9.11], [unicase/empty-suffix-context]) + gl_UNICASE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unicase/empty-prefix-context]) + gl_UNICASE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unicase/empty-suffix-context]) AC_REQUIRE([AC_C_INLINE]) gl_LIBUNISTRING_MODULE([0.9.3], [unicase/locale-language]) AC_PROG_MKDIR_P @@ -1566,17 +1768,17 @@ AC_DEFUN([gl_INIT], gl_LIBUNISTRING_MODULE([1.1], [unicase/u16-casexfrm]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u16-ct-casefold]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u16-ct-tolower]) - gl_LIBUNISTRING_MODULE([1.1], [unicase/u16-ct-totitle]) + gl_LIBUNISTRING_MODULE([1.2], [unicase/u16-ct-totitle]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u16-ct-toupper]) - gl_LIBUNISTRING_MODULE([1.1], [unicase/u16-is-cased]) + gl_LIBUNISTRING_MODULE([1.2], [unicase/u16-is-cased]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u16-is-casefolded]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u16-is-lowercase]) - gl_LIBUNISTRING_MODULE([1.1], [unicase/u16-is-titlecase]) + gl_LIBUNISTRING_MODULE([1.2], [unicase/u16-is-titlecase]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u16-is-uppercase]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u16-prefix-context]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u16-suffix-context]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u16-tolower]) - gl_LIBUNISTRING_MODULE([1.1], [unicase/u16-totitle]) + gl_LIBUNISTRING_MODULE([1.2], [unicase/u16-totitle]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u16-toupper]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u32-casecmp]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u32-casecoll]) @@ -1584,17 +1786,17 @@ AC_DEFUN([gl_INIT], gl_LIBUNISTRING_MODULE([1.1], [unicase/u32-casexfrm]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u32-ct-casefold]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u32-ct-tolower]) - gl_LIBUNISTRING_MODULE([1.1], [unicase/u32-ct-totitle]) + gl_LIBUNISTRING_MODULE([1.2], [unicase/u32-ct-totitle]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u32-ct-toupper]) - gl_LIBUNISTRING_MODULE([1.1], [unicase/u32-is-cased]) + gl_LIBUNISTRING_MODULE([1.2], [unicase/u32-is-cased]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u32-is-casefolded]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u32-is-lowercase]) - gl_LIBUNISTRING_MODULE([1.1], [unicase/u32-is-titlecase]) + gl_LIBUNISTRING_MODULE([1.2], [unicase/u32-is-titlecase]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u32-is-uppercase]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u32-prefix-context]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u32-suffix-context]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u32-tolower]) - gl_LIBUNISTRING_MODULE([1.1], [unicase/u32-totitle]) + gl_LIBUNISTRING_MODULE([1.2], [unicase/u32-totitle]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u32-toupper]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-casecmp]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-casecoll]) @@ -1602,17 +1804,17 @@ AC_DEFUN([gl_INIT], gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-casexfrm]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-ct-casefold]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-ct-tolower]) - gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-ct-totitle]) + gl_LIBUNISTRING_MODULE([1.2], [unicase/u8-ct-totitle]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-ct-toupper]) - gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-is-cased]) + gl_LIBUNISTRING_MODULE([1.2], [unicase/u8-is-cased]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-is-casefolded]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-is-lowercase]) - gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-is-titlecase]) + gl_LIBUNISTRING_MODULE([1.2], [unicase/u8-is-titlecase]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-is-uppercase]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-prefix-context]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-suffix-context]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-tolower]) - gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-totitle]) + gl_LIBUNISTRING_MODULE([1.2], [unicase/u8-totitle]) gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-toupper]) gl_LIBUNISTRING_MODULE([1.1], [unicase/ulc-casecmp]) gl_LIBUNISTRING_MODULE([1.1], [unicase/ulc-casecoll]) @@ -1640,62 +1842,103 @@ AC_DEFUN([gl_INIT], gl_LIBUNISTRING_MODULE([0.9], [uniconv/u8-strconv-from-locale]) gl_LIBUNISTRING_MODULE([0.9], [uniconv/u8-strconv-to-enc]) gl_LIBUNISTRING_MODULE([0.9], [uniconv/u8-strconv-to-locale]) - gl_LIBUNISTRING_LIBHEADER([0.9.11], [unictype.h]) + gl_LIBUNISTRING_LIBHEADER([1.2], [unictype.h]) + gl_UNICTYPE_H + gl_UNICTYPE_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P gl_LIBUNISTRING_MODULE([0.9.11], [unictype/bidiclass-byname]) gl_LIBUNISTRING_MODULE([0.9.11], [unictype/bidiclass-longname]) gl_LIBUNISTRING_MODULE([0.9.11], [unictype/bidiclass-name]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/bidiclass-of]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/bidiclass-test]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/block-list]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/bidiclass-of]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/bidiclass-test]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/block-list]) gl_LIBUNISTRING_MODULE([0.9.11], [unictype/block-test]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-C]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/category-Cc]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-Cf]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-Cn]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/category-Co]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/category-Cs]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-L]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-LC]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-Ll]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-Lm]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-Lo]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/category-Lt]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/category-Lu]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-M]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-Mc]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/category-Me]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-Mn]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-N]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-Nd]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/category-Nl]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-No]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-P]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/category-Pc]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/category-Pd]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/category-Pe]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/category-Pf]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/category-Pi]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-Po]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/category-Ps]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-S]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/category-Sc]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/category-Sk]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/category-Sm]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-So]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/category-Z]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/category-Zl]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/category-Zp]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/category-Zs]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-and]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-and-not]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-byname]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/category-C]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/category-Cc]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/category-Cf]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/category-Cn]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/category-Co]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/category-Cs]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/category-L]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/category-LC]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/category-Ll]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/category-Lm]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/category-Lo]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/category-Lt]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/category-Lu]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/category-M]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/category-Mc]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/category-Me]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/category-Mn]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/category-N]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/category-Nd]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/category-Nl]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/category-No]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/category-P]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/category-Pc]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/category-Pd]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/category-Pe]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/category-Pf]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/category-Pi]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/category-Po]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/category-Ps]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/category-S]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/category-Sc]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/category-Sk]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/category-Sm]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/category-So]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/category-Z]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/category-Zl]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/category-Zp]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/category-Zs]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/category-and]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/category-and-not]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/category-byname]) gl_LIBUNISTRING_MODULE([0.9.8], [unictype/category-longname]) gl_LIBUNISTRING_MODULE([0.9.8], [unictype/category-name]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/category-none]) + dnl Since _UC_CATEGORY_NONE is not exported from an installed libunistring, + dnl don't use gl_LIBUNISTRING_MODULE here. AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-of]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/category-or]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/category-of]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/category-or]) AC_REQUIRE([AC_C_INLINE]) gl_LIBUNISTRING_MODULE([0.9.8], [unictype/category-test]) gl_LIBUNISTRING_MODULE([1.1], [unictype/combining-class]) @@ -1703,9 +1946,9 @@ AC_DEFUN([gl_INIT], gl_LIBUNISTRING_MODULE([0.9.8], [unictype/combining-class-longname]) gl_LIBUNISTRING_MODULE([0.9.8], [unictype/combining-class-name]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/ctype-alnum]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/ctype-alnum]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/ctype-alpha]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/ctype-alpha]) AC_REQUIRE([AC_C_INLINE]) gl_LIBUNISTRING_MODULE([0.9.8], [unictype/ctype-blank]) AC_REQUIRE([AC_C_INLINE]) @@ -1713,13 +1956,13 @@ AC_DEFUN([gl_INIT], AC_REQUIRE([AC_C_INLINE]) gl_LIBUNISTRING_MODULE([0.9.8], [unictype/ctype-digit]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/ctype-graph]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/ctype-graph]) AC_REQUIRE([AC_C_INLINE]) gl_LIBUNISTRING_MODULE([0.9.11], [unictype/ctype-lower]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/ctype-print]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/ctype-print]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/ctype-punct]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/ctype-punct]) AC_REQUIRE([AC_C_INLINE]) gl_LIBUNISTRING_MODULE([0.9.8], [unictype/ctype-space]) AC_REQUIRE([AC_C_INLINE]) @@ -1728,251 +1971,367 @@ AC_DEFUN([gl_INIT], gl_LIBUNISTRING_MODULE([0.9.8], [unictype/ctype-xdigit]) gl_LIBUNISTRING_MODULE([1.1], [unictype/decimal-digit]) gl_LIBUNISTRING_MODULE([1.1], [unictype/digit]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/incb-byname]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/incb-name]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/incb-of]) gl_LIBUNISTRING_MODULE([0.9.11], [unictype/joininggroup-byname]) gl_LIBUNISTRING_MODULE([0.9.11], [unictype/joininggroup-name]) gl_LIBUNISTRING_MODULE([0.9.11], [unictype/joininggroup-of]) gl_LIBUNISTRING_MODULE([0.9.8], [unictype/joiningtype-byname]) gl_LIBUNISTRING_MODULE([0.9.8], [unictype/joiningtype-longname]) gl_LIBUNISTRING_MODULE([0.9.8], [unictype/joiningtype-name]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/joiningtype-of]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/mirror]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/joiningtype-of]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/mirror]) gl_LIBUNISTRING_MODULE([1.1], [unictype/numeric]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-alphabetic]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-alphabetic]) + AC_REQUIRE([AC_C_INLINE]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-ascii-hex-digit]) + AC_REQUIRE([AC_C_INLINE]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-bidi-arabic-digit]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-ascii-hex-digit]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-bidi-arabic-right-to-left]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-bidi-arabic-digit]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-bidi-block-separator]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-bidi-arabic-right-to-left]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-bidi-boundary-neutral]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-bidi-block-separator]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-bidi-common-separator]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-bidi-boundary-neutral]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-bidi-control]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-bidi-common-separator]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-bidi-embedding-or-override]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-bidi-control]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-bidi-eur-num-separator]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-bidi-embedding-or-override]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-bidi-eur-num-terminator]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-bidi-eur-num-separator]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-bidi-european-digit]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-bidi-eur-num-terminator]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-bidi-hebrew-right-to-left]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-bidi-european-digit]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-bidi-left-to-right]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-bidi-hebrew-right-to-left]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-bidi-non-spacing-mark]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-bidi-left-to-right]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-bidi-other-neutral]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-bidi-non-spacing-mark]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-bidi-pdf]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-bidi-other-neutral]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-bidi-segment-separator]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-bidi-pdf]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-bidi-whitespace]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/property-byname]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-bidi-segment-separator]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/property-case-ignorable]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-bidi-whitespace]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-byname]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/property-cased]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-case-ignorable]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/property-changes-when-casefolded]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-cased]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/property-changes-when-casemapped]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-changes-when-casefolded]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/property-changes-when-lowercased]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-changes-when-casemapped]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/property-changes-when-titlecased]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-changes-when-lowercased]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/property-changes-when-uppercased]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-changes-when-titlecased]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/property-combining]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-changes-when-uppercased]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/property-composite]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-combining]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/property-currency-symbol]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-composite]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/property-dash]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-currency-symbol]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/property-decimal-digit]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-dash]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/property-default-ignorable-code-point]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-decimal-digit]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-deprecated]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-default-ignorable-code-point]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/property-diacritic]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-deprecated]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/property-emoji]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-diacritic]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/property-emoji-component]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-emoji]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/property-emoji-modifier]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-emoji-component]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/property-emoji-modifier-base]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-emoji-modifier]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/property-emoji-presentation]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-emoji-modifier-base]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/property-extended-pictographic]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-emoji-presentation]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/property-extender]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-extended-pictographic]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-format-control]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-extender]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-grapheme-base]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-format-control]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/property-grapheme-extend]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-grapheme-base]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/property-grapheme-link]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-grapheme-extend]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-hex-digit]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-grapheme-link]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-hyphen]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-hex-digit]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-id-compat-math-continue]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-hyphen]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-id-compat-math-start]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-id-continue]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-id-continue]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-id-start]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-id-start]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-ideographic]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-ideographic]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-ids-binary-operator]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-ids-binary-operator]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-ids-trinary-operator]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-ids-trinary-operator]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-ignorable-control]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-ids-unary-operator]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-iso-control]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/property-ignorable-control]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-join-control]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-iso-control]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-left-of-pair]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-join-control]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-line-separator]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-left-of-pair]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-logical-order-exception]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-line-separator]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-lowercase]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-logical-order-exception]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-math]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/property-lowercase]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-non-break]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-math]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-not-a-character]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-non-break]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-numeric]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-not-a-character]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-other-alphabetic]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/property-numeric]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-other-default-ignorable-code-point]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/property-other-alphabetic]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-other-grapheme-extend]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-other-default-ignorable-code-point]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-other-id-continue]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/property-other-grapheme-extend]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-other-id-start]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-other-id-continue]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-other-lowercase]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-other-id-start]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-other-math]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/property-other-lowercase]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-other-uppercase]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-other-math]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-paired-punctuation]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-other-uppercase]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-paragraph-separator]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-paired-punctuation]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-pattern-syntax]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-paragraph-separator]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-pattern-white-space]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-pattern-syntax]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-private-use]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-pattern-white-space]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-punctuation]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-prepended-concatenation-mark]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-quotation-mark]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-private-use]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-radical]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/property-punctuation]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-regional-indicator]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-quotation-mark]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-sentence-terminal]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-radical]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-soft-dotted]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/property-regional-indicator]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-space]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-sentence-terminal]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-terminal-punctuation]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/property-soft-dotted]) + AC_REQUIRE([AC_C_INLINE]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-space]) + AC_REQUIRE([AC_C_INLINE]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/property-terminal-punctuation]) gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-test]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-titlecase]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-titlecase]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-unassigned-code-value]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-unassigned-code-value]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-unified-ideograph]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-unified-ideograph]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-uppercase]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/property-uppercase]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-variation-selector]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.11], [unictype/property-variation-selector]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-white-space]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-white-space]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-xid-continue]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-xid-continue]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-xid-start]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unictype/property-xid-start]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/property-zero-width]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/scripts]) + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [unictype/property-zero-width]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/scripts]) AC_REQUIRE([AC_C_INLINE]) gl_LIBUNISTRING_MODULE([0.9.8], [unictype/syntax-c-ident]) gl_LIBUNISTRING_MODULE([0.9.8], [unictype/syntax-c-whitespace]) AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unictype/syntax-java-ident]) + gl_LIBUNISTRING_MODULE([1.2], [unictype/syntax-java-ident]) gl_LIBUNISTRING_MODULE([0.9.8], [unictype/syntax-java-whitespace]) - gl_LIBUNISTRING_LIBHEADER([0.9.11], [unigbrk.h]) + gl_LIBUNISTRING_LIBHEADER([1.2], [unigbrk.h]) AC_PROG_MKDIR_P gl_MODULE_INDICATOR([unigbrk/u16-grapheme-breaks]) - gl_LIBUNISTRING_MODULE([1.1], [unigbrk/u16-grapheme-breaks]) + gl_LIBUNISTRING_MODULE([1.2], [unigbrk/u16-grapheme-breaks]) gl_MODULE_INDICATOR([unigbrk/u16-grapheme-next]) gl_LIBUNISTRING_MODULE([1.1], [unigbrk/u16-grapheme-next]) gl_MODULE_INDICATOR([unigbrk/u16-grapheme-prev]) gl_LIBUNISTRING_MODULE([1.1], [unigbrk/u16-grapheme-prev]) gl_MODULE_INDICATOR([unigbrk/u32-grapheme-breaks]) - gl_LIBUNISTRING_MODULE([1.1], [unigbrk/u32-grapheme-breaks]) + gl_LIBUNISTRING_MODULE([1.2], [unigbrk/u32-grapheme-breaks]) gl_MODULE_INDICATOR([unigbrk/u32-grapheme-next]) gl_LIBUNISTRING_MODULE([1.1], [unigbrk/u32-grapheme-next]) gl_MODULE_INDICATOR([unigbrk/u32-grapheme-prev]) gl_LIBUNISTRING_MODULE([1.1], [unigbrk/u32-grapheme-prev]) gl_MODULE_INDICATOR([unigbrk/u8-grapheme-breaks]) - gl_LIBUNISTRING_MODULE([1.1], [unigbrk/u8-grapheme-breaks]) + gl_LIBUNISTRING_MODULE([1.2], [unigbrk/u8-grapheme-breaks]) gl_MODULE_INDICATOR([unigbrk/u8-grapheme-next]) gl_LIBUNISTRING_MODULE([1.1], [unigbrk/u8-grapheme-next]) gl_MODULE_INDICATOR([unigbrk/u8-grapheme-prev]) gl_LIBUNISTRING_MODULE([1.1], [unigbrk/u8-grapheme-prev]) gl_LIBUNISTRING_MODULE([1.1], [unigbrk/uc-gbrk-prop]) gl_MODULE_INDICATOR([unigbrk/uc-grapheme-breaks]) - gl_LIBUNISTRING_MODULE([1.1], [unigbrk/uc-grapheme-breaks]) + gl_LIBUNISTRING_MODULE([1.2], [unigbrk/uc-grapheme-breaks]) gl_LIBUNISTRING_MODULE([1.1], [unigbrk/uc-is-grapheme-break]) gl_MODULE_INDICATOR([unigbrk/ulc-grapheme-breaks]) - gl_LIBUNISTRING_MODULE([1.1], [unigbrk/ulc-grapheme-breaks]) + gl_LIBUNISTRING_MODULE([1.2], [unigbrk/ulc-grapheme-breaks]) gl_LIBUNISTRING_LIBHEADER([0.9.11], [unilbrk.h]) AC_PROG_MKDIR_P AC_REQUIRE([AC_C_INLINE]) - gl_LIBUNISTRING_MODULE([1.1], [unilbrk/u16-possible-linebreaks]) - gl_LIBUNISTRING_MODULE([1.1], [unilbrk/u16-width-linebreaks]) - gl_LIBUNISTRING_MODULE([1.1], [unilbrk/u32-possible-linebreaks]) - gl_LIBUNISTRING_MODULE([1.1], [unilbrk/u32-width-linebreaks]) - gl_LIBUNISTRING_MODULE([1.1], [unilbrk/u8-possible-linebreaks]) - gl_LIBUNISTRING_MODULE([1.1], [unilbrk/u8-width-linebreaks]) - gl_LIBUNISTRING_MODULE([1.1], [unilbrk/ulc-possible-linebreaks]) - gl_LIBUNISTRING_MODULE([1.1], [unilbrk/ulc-width-linebreaks]) + gl_LIBUNISTRING_MODULE([1.2], [unilbrk/u16-possible-linebreaks]) + gl_LIBUNISTRING_MODULE([1.2], [unilbrk/u16-width-linebreaks]) + gl_LIBUNISTRING_MODULE([1.2], [unilbrk/u32-possible-linebreaks]) + gl_LIBUNISTRING_MODULE([1.2], [unilbrk/u32-width-linebreaks]) + gl_LIBUNISTRING_MODULE([1.2], [unilbrk/u8-possible-linebreaks]) + gl_LIBUNISTRING_MODULE([1.2], [unilbrk/u8-width-linebreaks]) + gl_LIBUNISTRING_MODULE([1.2], [unilbrk/ulc-possible-linebreaks]) + gl_LIBUNISTRING_MODULE([1.2], [unilbrk/ulc-width-linebreaks]) + gl_LIBUNISTRING_LIBHEADER([1.2], [unimetadata.h]) + gl_UNIMETADATA_H + gl_UNIMETADATA_H_REQUIRE_DEFAULTS + AC_PROG_MKDIR_P + gl_UNIMETADATA_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.2], [unimetadata/u-version]) gl_LIBUNISTRING_LIBHEADER([0.9.5], [uniname.h]) AC_PROG_MKDIR_P - gl_LIBUNISTRING_MODULE([1.1], [uniname/uniname]) - gl_LIBUNISTRING_LIBHEADER([0.9.11], [uninorm.h]) + gl_LIBUNISTRING_MODULE([1.2], [uniname/uniname]) + gl_LIBUNISTRING_LIBHEADER([1.2], [uninorm.h]) + gl_UNINORM_H + gl_UNINORM_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P gl_LIBUNISTRING_MODULE([1.1], [uninorm/canonical-decomposition]) gl_LIBUNISTRING_MODULE([0.9.11], [uninorm/composition]) @@ -1980,10 +2339,14 @@ AC_DEFUN([gl_INIT], gl_LIBUNISTRING_MODULE([1.1], [uninorm/decomposition]) AC_REQUIRE([AC_C_INLINE]) gl_LIBUNISTRING_MODULE([1.1], [uninorm/filter]) - gl_LIBUNISTRING_MODULE([1.1], [uninorm/nfc]) - gl_LIBUNISTRING_MODULE([1.1], [uninorm/nfd]) - gl_LIBUNISTRING_MODULE([1.1], [uninorm/nfkc]) - gl_LIBUNISTRING_MODULE([1.1], [uninorm/nfkd]) + gl_UNINORM_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [uninorm/nfc]) + gl_UNINORM_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [uninorm/nfd]) + gl_UNINORM_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [uninorm/nfkc]) + gl_UNINORM_H_REQUIRE_DEFAULTS + gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.1], [uninorm/nfkd]) gl_MODULE_INDICATOR_FOR_TESTS([uninorm/u16-normalize]) gl_LIBUNISTRING_MODULE([1.1], [uninorm/u16-normalize]) gl_LIBUNISTRING_MODULE([1.1], [uninorm/u16-normcmp]) @@ -2005,76 +2368,76 @@ AC_DEFUN([gl_INIT], gl_LIBUNISTRING_LIBHEADER([0.9.11], [unistdio.h]) AC_PROG_MKDIR_P gl_PREREQ_PRINTF_ARGS - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u16-asnprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u16-asprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u16-asnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u16-asprintf]) gl_PREREQ_PRINTF_PARSE - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u16-snprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u16-sprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u16-u16-asnprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u16-u16-asprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u16-u16-snprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u16-u16-sprintf]) - gl_PREREQ_VASNPRINTF_WITH_EXTRAS - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u16-u16-vasnprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u16-u16-vasprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u16-u16-vsnprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u16-u16-vsprintf]) - gl_PREREQ_VASNPRINTF_WITH_EXTRAS - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u16-vasnprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u16-vasprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u16-vsnprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u16-vsprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u32-asnprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u32-asprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u16-snprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u16-sprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u16-u16-asnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u16-u16-asprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u16-u16-snprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u16-u16-sprintf]) + gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u16-u16-vasnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u16-u16-vasprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u16-u16-vsnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u16-u16-vsprintf]) + gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u16-vasnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u16-vasprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u16-vsnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u16-vsprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u32-asnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u32-asprintf]) gl_PREREQ_PRINTF_PARSE - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u32-snprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u32-sprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u32-u32-asnprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u32-u32-asprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u32-u32-snprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u32-u32-sprintf]) - gl_PREREQ_VASNPRINTF_WITH_EXTRAS - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u32-u32-vasnprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u32-u32-vasprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u32-u32-vsnprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u32-u32-vsprintf]) - gl_PREREQ_VASNPRINTF_WITH_EXTRAS - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u32-vasnprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u32-vasprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u32-vsnprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u32-vsprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u8-asnprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u8-asprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u32-snprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u32-sprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u32-u32-asnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u32-u32-asprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u32-u32-snprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u32-u32-sprintf]) + gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u32-u32-vasnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u32-u32-vasprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u32-u32-vsnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u32-u32-vsprintf]) + gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u32-vasnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u32-vasprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u32-vsnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u32-vsprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u8-asnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u8-asprintf]) gl_PREREQ_PRINTF_PARSE - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u8-snprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u8-sprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u8-u8-asnprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u8-u8-asprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u8-u8-snprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u8-u8-sprintf]) - gl_PREREQ_VASNPRINTF_WITH_EXTRAS - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u8-u8-vasnprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u8-u8-vasprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u8-u8-vsnprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u8-u8-vsprintf]) - gl_PREREQ_VASNPRINTF_WITH_EXTRAS - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u8-vasnprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u8-vasprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u8-vsnprintf]) - gl_LIBUNISTRING_MODULE([0.9], [unistdio/u8-vsprintf]) - gl_LIBUNISTRING_MODULE([0.9.11], [unistdio/ulc-asnprintf]) - gl_LIBUNISTRING_MODULE([0.9.11], [unistdio/ulc-asprintf]) - gl_LIBUNISTRING_MODULE([0.9.11], [unistdio/ulc-fprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u8-snprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u8-sprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u8-u8-asnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u8-u8-asprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u8-u8-snprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u8-u8-sprintf]) + gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u8-u8-vasnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u8-u8-vasprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u8-u8-vsnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u8-u8-vsprintf]) + gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u8-vasnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u8-vasprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u8-vsnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/u8-vsprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/ulc-asnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/ulc-asprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/ulc-fprintf]) gl_PREREQ_PRINTF_PARSE - gl_LIBUNISTRING_MODULE([0.9.11], [unistdio/ulc-snprintf]) - gl_LIBUNISTRING_MODULE([0.9.11], [unistdio/ulc-sprintf]) - gl_PREREQ_VASNPRINTF_WITH_EXTRAS - gl_LIBUNISTRING_MODULE([0.9.11], [unistdio/ulc-vasnprintf]) - gl_LIBUNISTRING_MODULE([0.9.11], [unistdio/ulc-vasprintf]) - gl_LIBUNISTRING_MODULE([0.9.11], [unistdio/ulc-vfprintf]) - gl_LIBUNISTRING_MODULE([0.9.11], [unistdio/ulc-vsnprintf]) - gl_LIBUNISTRING_MODULE([0.9.11], [unistdio/ulc-vsprintf]) - gl_LIBUNISTRING_LIBHEADER([0.9.11], [unistr.h]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/ulc-snprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/ulc-sprintf]) + gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS + gl_LIBUNISTRING_MODULE([1.2], [unistdio/ulc-vasnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/ulc-vasprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/ulc-vfprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/ulc-vsnprintf]) + gl_LIBUNISTRING_MODULE([1.2], [unistdio/ulc-vsprintf]) + gl_LIBUNISTRING_LIBHEADER([1.2], [unistr.h]) AC_PROG_MKDIR_P gl_LIBUNISTRING_MODULE([0.9], [unistr/u16-check]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u16-chr]) @@ -2093,6 +2456,7 @@ AC_DEFUN([gl_INIT], gl_LIBUNISTRING_MODULE([0.9], [unistr/u16-mbtoucr]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u16-move]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u16-next]) + gl_LIBUNISTRING_MODULE([1.2], [unistr/u16-pcpy]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u16-prev]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u16-set]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u16-startswith]) @@ -2138,6 +2502,7 @@ AC_DEFUN([gl_INIT], gl_LIBUNISTRING_MODULE([0.9], [unistr/u32-mbtoucr]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u32-move]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u32-next]) + gl_LIBUNISTRING_MODULE([1.2], [unistr/u32-pcpy]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u32-prev]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u32-set]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u32-startswith]) @@ -2174,19 +2539,20 @@ AC_DEFUN([gl_INIT], gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-cpy-alloc]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-endswith]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-mblen]) - gl_LIBUNISTRING_MODULE([0.9.4], [unistr/u8-mbsnlen]) + gl_LIBUNISTRING_MODULE([1.2], [unistr/u8-mbsnlen]) gl_MODULE_INDICATOR([unistr/u8-mbtouc]) - gl_LIBUNISTRING_MODULE([0.9.4], [unistr/u8-mbtouc]) + gl_LIBUNISTRING_MODULE([1.2], [unistr/u8-mbtouc]) gl_MODULE_INDICATOR([unistr/u8-mbtouc-unsafe]) gl_LIBUNISTRING_MODULE([0.9.4], [unistr/u8-mbtouc-unsafe]) gl_MODULE_INDICATOR([unistr/u8-mbtoucr]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-mbtoucr]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-move]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-next]) + gl_LIBUNISTRING_MODULE([1.2], [unistr/u8-pcpy]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-prev]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-set]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-startswith]) - AC_CHECK_FUNCS_ONCE([stpcpy]) + gl_CHECK_FUNCS_ANDROID([stpcpy], [[#include <string.h>]]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-stpcpy]) gl_LIBUNISTRING_MODULE([0.9.3], [unistr/u8-stpncpy]) gl_LIBUNISTRING_MODULE([0.9], [unistr/u8-strcat]) @@ -2232,20 +2598,20 @@ AC_DEFUN([gl_INIT], ]) gl_LIBUNISTRING_LIBHEADER([0.9.11], [uniwbrk.h]) AC_PROG_MKDIR_P - gl_LIBUNISTRING_MODULE([1.1], [uniwbrk/u16-wordbreaks]) - gl_LIBUNISTRING_MODULE([1.1], [uniwbrk/u32-wordbreaks]) - gl_LIBUNISTRING_MODULE([1.1], [uniwbrk/u8-wordbreaks]) - gl_LIBUNISTRING_MODULE([1.1], [uniwbrk/ulc-wordbreaks]) - gl_LIBUNISTRING_MODULE([1.1], [uniwbrk/wordbreak-property]) + gl_LIBUNISTRING_MODULE([1.2], [uniwbrk/u16-wordbreaks]) + gl_LIBUNISTRING_MODULE([1.2], [uniwbrk/u32-wordbreaks]) + gl_LIBUNISTRING_MODULE([1.2], [uniwbrk/u8-wordbreaks]) + gl_LIBUNISTRING_MODULE([1.2], [uniwbrk/ulc-wordbreaks]) + gl_LIBUNISTRING_MODULE([1.2], [uniwbrk/wordbreak-property]) gl_LIBUNISTRING_LIBHEADER([0.9.11], [uniwidth.h]) AC_PROG_MKDIR_P - gl_LIBUNISTRING_MODULE([1.1], [uniwidth/u16-strwidth]) - gl_LIBUNISTRING_MODULE([1.1], [uniwidth/u16-width]) - gl_LIBUNISTRING_MODULE([1.1], [uniwidth/u32-strwidth]) - gl_LIBUNISTRING_MODULE([1.1], [uniwidth/u32-width]) - gl_LIBUNISTRING_MODULE([1.1], [uniwidth/u8-strwidth]) - gl_LIBUNISTRING_MODULE([1.1], [uniwidth/u8-width]) - gl_LIBUNISTRING_MODULE([1.1], [uniwidth/width]) + gl_LIBUNISTRING_MODULE([1.2], [uniwidth/u16-strwidth]) + gl_LIBUNISTRING_MODULE([1.2], [uniwidth/u16-width]) + gl_LIBUNISTRING_MODULE([1.2], [uniwidth/u32-strwidth]) + gl_LIBUNISTRING_MODULE([1.2], [uniwidth/u32-width]) + gl_LIBUNISTRING_MODULE([1.2], [uniwidth/u8-strwidth]) + gl_LIBUNISTRING_MODULE([1.2], [uniwidth/u8-width]) + gl_LIBUNISTRING_MODULE([1.2], [uniwidth/width]) gl_WCHAR_H gl_WCHAR_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P @@ -2261,16 +2627,16 @@ AC_DEFUN([gl_INIT], gl_WCHAR_MODULE_INDICATOR([wcwidth]) AC_REQUIRE([AC_CANONICAL_HOST]) gl_CONDITIONAL([GL_COND_OBJ_WINDOWS_MUTEX], - [case "$host_os" in mingw*) true;; *) false;; esac]) + [case "$host_os" in mingw* | windows*) true;; *) false;; esac]) AC_REQUIRE([AC_CANONICAL_HOST]) gl_CONDITIONAL([GL_COND_OBJ_WINDOWS_ONCE], - [case "$host_os" in mingw*) true;; *) false;; esac]) + [case "$host_os" in mingw* | windows*) true;; *) false;; esac]) AC_REQUIRE([AC_CANONICAL_HOST]) gl_CONDITIONAL([GL_COND_OBJ_WINDOWS_RECMUTEX], - [case "$host_os" in mingw*) true;; *) false;; esac]) + [case "$host_os" in mingw* | windows*) true;; *) false;; esac]) AC_REQUIRE([AC_CANONICAL_HOST]) gl_CONDITIONAL([GL_COND_OBJ_WINDOWS_RWLOCK], - [case "$host_os" in mingw*) true;; *) false;; esac]) + [case "$host_os" in mingw* | windows*) true;; *) false;; esac]) gl_XSIZE # End of code from modules m4_ifval(gl_LIBSOURCES_LIST, [ @@ -2340,12 +2706,16 @@ changequote([, ])dnl AC_REQUIRE([gl_SYS_SOCKET_H]) gl_CONDITIONAL([GL_COND_OBJ_ACCEPT], [test "$ac_cv_header_winsock2_h" = yes]) gl_SYS_SOCKET_MODULE_INDICATOR([accept]) + gl_ALIGNASOF gl_ARPA_INET_H gl_ARPA_INET_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P AC_REQUIRE([gl_SYS_SOCKET_H]) gl_CONDITIONAL([GL_COND_OBJ_BIND], [test "$ac_cv_header_winsock2_h" = yes]) gl_SYS_SOCKET_MODULE_INDICATOR([bind]) + gl_UCHAR_MODULE_INDICATOR([btoc32]) + gt_LOCALE_FR + gt_LOCALE_FR_UTF8 gl_FUNC_BTOWC gl_CONDITIONAL([GL_COND_OBJ_BTOWC], [test $HAVE_BTOWC = 0 || test $REPLACE_BTOWC = 1]) @@ -2357,6 +2727,73 @@ changequote([, ])dnl gt_LOCALE_FR_UTF8 gt_LOCALE_FR gt_LOCALE_TR_UTF8 + gt_LOCALE_FR + gt_LOCALE_FR_UTF8 + gt_LOCALE_JA + gt_LOCALE_ZH_CN + gt_LOCALE_FR + gt_LOCALE_FR_UTF8 + gt_LOCALE_JA + gt_LOCALE_ZH_CN + gl_MUSL_LIBC + gt_LOCALE_FR + gt_LOCALE_FR_UTF8 + gt_LOCALE_JA + gt_LOCALE_ZH_CN + gt_LOCALE_FR + gt_LOCALE_FR_UTF8 + gt_LOCALE_JA + gt_LOCALE_ZH_CN + gl_MUSL_LIBC + gt_LOCALE_FR + gt_LOCALE_FR_UTF8 + gt_LOCALE_JA + gt_LOCALE_ZH_CN + gt_LOCALE_FR + gt_LOCALE_FR_UTF8 + gt_LOCALE_JA + gt_LOCALE_ZH_CN + gl_MUSL_LIBC + gt_LOCALE_FR + gt_LOCALE_FR_UTF8 + gt_LOCALE_JA + gt_LOCALE_ZH_CN + gl_MUSL_LIBC + gt_LOCALE_FR + gt_LOCALE_FR_UTF8 + gt_LOCALE_JA + gt_LOCALE_ZH_CN + gl_MUSL_LIBC + gt_LOCALE_FR + gt_LOCALE_FR_UTF8 + gt_LOCALE_JA + gt_LOCALE_ZH_CN + gt_LOCALE_FR + gt_LOCALE_FR_UTF8 + gt_LOCALE_JA + gt_LOCALE_ZH_CN + gt_LOCALE_FR + gt_LOCALE_FR_UTF8 + gt_LOCALE_JA + gt_LOCALE_ZH_CN + gt_LOCALE_FR + gt_LOCALE_FR_UTF8 + gt_LOCALE_JA + gt_LOCALE_ZH_CN + gl_FUNC_C32RTOMB + gl_CONDITIONAL([GL_COND_OBJ_C32RTOMB], + [test $HAVE_C32RTOMB = 0 || test $REPLACE_C32RTOMB = 1]) + gl_UCHAR_MODULE_INDICATOR([c32rtomb]) + gt_LOCALE_FR + gt_LOCALE_FR_UTF8 + gt_LOCALE_JA + gt_LOCALE_ZH_CN + AC_REQUIRE([gl_MBRTOC32_SANITYCHECK]) + gl_UCHAR_MODULE_INDICATOR([c32tob]) + gt_LOCALE_FR + gt_LOCALE_FR_UTF8 + gt_LOCALE_JA + gt_LOCALE_ZH_CN gl_FUNC_CALLOC_GNU if test $REPLACE_CALLOC_FOR_CALLOC_GNU = 1; then AC_LIBOBJ([calloc]) @@ -2386,14 +2823,17 @@ changequote([, ])dnl gl_UNISTD_MODULE_INDICATOR([dup2]) gl_ENVIRON gl_UNISTD_MODULE_INDICATOR([environ]) + AC_REQUIRE([gl_ERROR_H]) gl_ERROR - gl_CONDITIONAL([GL_COND_OBJ_ERROR], [test "$ac_cv_lib_error_at_line" = no]) + gl_CONDITIONAL([GL_COND_OBJ_ERROR], [test $COMPILE_ERROR_C = 1]) AM_COND_IF([GL_COND_OBJ_ERROR], [ gl_PREREQ_ERROR ]) m4_ifdef([AM_XGETTEXT_OPTION], [AM_][XGETTEXT_OPTION([--flag=error:3:c-format]) AM_][XGETTEXT_OPTION([--flag=error_at_line:5:c-format])]) + gl_ERROR_H + AC_PROG_MKDIR_P gl_FUNC_FCNTL gl_CONDITIONAL([GL_COND_OBJ_FCNTL], [test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1]) @@ -2411,7 +2851,7 @@ changequote([, ])dnl gl_CONDITIONAL([GL_COND_OBJ_FSTAT], [test $REPLACE_FSTAT = 1]) AM_COND_IF([GL_COND_OBJ_FSTAT], [ case "$host_os" in - mingw*) + mingw* | windows*) AC_LIBOBJ([stat-w32]) ;; esac @@ -2439,6 +2879,12 @@ changequote([, ])dnl gl_CONDITIONAL([GL_COND_OBJ_GETPAGESIZE], [test $REPLACE_GETPAGESIZE = 1]) gl_UNISTD_MODULE_INDICATOR([getpagesize]) gl_FUNC_GETPROGNAME + gl_CONDITIONAL([GL_COND_OBJ_GETPROGNAME], + [test $HAVE_GETPROGNAME = 0 || test $REPLACE_GETPROGNAME = 1]) + AM_COND_IF([GL_COND_OBJ_GETPROGNAME], [ + gl_PREREQ_GETPROGNAME + ]) + gl_STDLIB_MODULE_INDICATOR([getprogname]) AC_SUBST([LIBINTL]) AC_SUBST([LTLIBINTL]) gl_FUNC_GETTIMEOFDAY @@ -2450,7 +2896,7 @@ changequote([, ])dnl gl_SYS_TIME_MODULE_INDICATOR([gettimeofday]) gl_MUSL_LIBC dnl Distinguish OpenBSD >= 6.2 from OpenBSD < 6.2. - AC_CHECK_FUNCS_ONCE([duplocale]) + gl_CHECK_FUNCS_ANDROID([duplocale], [[#include <locale.h>]]) gl_FUNC_INET_PTON gl_CONDITIONAL([GL_COND_OBJ_INET_PTON], [test $HAVE_INET_PTON = 0 || test $REPLACE_INET_PTON = 1]) @@ -2468,9 +2914,6 @@ changequote([, ])dnl gl_CONDITIONAL([GL_COND_OBJ_ISBLANK], [test $HAVE_ISBLANK = 0]) gl_MODULE_INDICATOR([isblank]) gl_CTYPE_MODULE_INDICATOR([isblank]) - gl_DOUBLE_EXPONENT_LOCATION - gl_FLOAT_EXPONENT_LOCATION - gl_LONG_DOUBLE_EXPONENT_LOCATION AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) gt_LOCALE_FR gt_LOCALE_FR_UTF8 @@ -2481,11 +2924,13 @@ changequote([, ])dnl gt_LOCALE_JA gt_LOCALE_ZH_CN AC_REQUIRE([gl_LARGEFILE]) + gl___INLINE AC_REQUIRE([gl_SYS_SOCKET_H]) gl_CONDITIONAL([GL_COND_OBJ_LISTEN], [test "$ac_cv_header_winsock2_h" = yes]) gl_SYS_SOCKET_MODULE_INDICATOR([listen]) - AC_CHECK_FUNCS_ONCE([newlocale]) - AC_CHECK_FUNCS_ONCE([newlocale]) + gl_CHECK_FUNCS_ANDROID([newlocale], [[#include <locale.h>]]) + gl_CHECK_FUNCS_ANDROID([newlocale], [[#include <locale.h>]]) + gl_MUSL_LIBC AC_CHECK_HEADERS_ONCE([semaphore.h]) AC_CHECK_DECLS_ONCE([alarm]) AC_REQUIRE([gl_SEMAPHORE]) @@ -2504,6 +2949,10 @@ changequote([, ])dnl gt_LOCALE_FR_UTF8 gt_LOCALE_JA gt_LOCALE_ZH_CN + gt_LOCALE_FR + gt_LOCALE_FR_UTF8 + gt_LOCALE_JA + gt_LOCALE_ZH_CN gt_LOCALE_FR_UTF8 gl_FUNC_MBTOWC gl_CONDITIONAL([GL_COND_OBJ_MBTOWC], @@ -2576,6 +3025,20 @@ changequote([, ])dnl gl_PREREQ_RAISE ]) gl_SIGNAL_MODULE_INDICATOR([raise]) + gl_FUNC_RANDOM + gl_CONDITIONAL([GL_COND_OBJ_RANDOM], + [test $HAVE_RANDOM = 0 || test $REPLACE_RANDOM = 1 || test $REPLACE_INITSTATE = 1 || test $REPLACE_SETSTATE = 1]) + AM_COND_IF([GL_COND_OBJ_RANDOM], [ + gl_PREREQ_RANDOM + ]) + gl_STDLIB_MODULE_INDICATOR([random]) + gl_FUNC_RANDOM_R + gl_CONDITIONAL([GL_COND_OBJ_RANDOM_R], + [test $HAVE_RANDOM_R = 0 || test $REPLACE_RANDOM_R = 1]) + AM_COND_IF([GL_COND_OBJ_RANDOM_R], [ + gl_PREREQ_RANDOM_R + ]) + gl_STDLIB_MODULE_INDICATOR([random_r]) gl_FUNC_REALLOC_GNU if test $REPLACE_REALLOC_FOR_REALLOC_GNU = 1; then AC_LIBOBJ([realloc]) @@ -2626,9 +3089,6 @@ changequote([, ])dnl gl_SIGNAL_H gl_SIGNAL_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P - AC_REQUIRE([gl_FLOAT_EXPONENT_LOCATION]) - AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION]) - AC_REQUIRE([gl_LONG_DOUBLE_EXPONENT_LOCATION]) gl_SIGNALBLOCKING gl_CONDITIONAL([GL_COND_OBJ_SIGPROCMASK], [test $HAVE_POSIX_SIGNALBLOCKING = 0]) AM_COND_IF([GL_COND_OBJ_SIGPROCMASK], [ @@ -2640,6 +3100,8 @@ changequote([, ])dnl [test $HAVE_SLEEP = 0 || test $REPLACE_SLEEP = 1]) gl_UNISTD_MODULE_INDICATOR([sleep]) AC_CHECK_DECLS_ONCE([alarm]) + gl_SNAN + gl_NAN_MIPS AC_REQUIRE([gl_SYS_SOCKET_H]) gl_CONDITIONAL([GL_COND_OBJ_SOCKET], [test "$ac_cv_header_winsock2_h" = yes]) # When this module is used, sockets may actually occur as file descriptors, @@ -2659,7 +3121,7 @@ changequote([, ])dnl gl_CONDITIONAL([GL_COND_OBJ_STAT], [test $REPLACE_STAT = 1]) AM_COND_IF([GL_COND_OBJ_STAT], [ case "$host_os" in - mingw*) + mingw* | windows*) AC_LIBOBJ([stat-w32]) ;; esac @@ -2668,9 +3130,6 @@ changequote([, ])dnl gl_SYS_STAT_MODULE_INDICATOR([stat]) gl_STAT_TIME gl_STAT_BIRTHTIME - gl_STDALIGN_H - gl_CONDITIONAL_HEADER([stdalign.h]) - AC_PROG_MKDIR_P AC_REQUIRE([gt_TYPE_WCHAR_T]) AC_REQUIRE([gt_TYPE_WINT_T]) gl_STDIO_H @@ -2701,6 +3160,7 @@ changequote([, ])dnl gl_STDIO_MODULE_INDICATOR([fputs]) gl_STDIO_MODULE_INDICATOR([puts]) gl_STDIO_MODULE_INDICATOR([fwrite]) + gl_DOUBLE_EXPONENT_LOCATION gl_FUNC_STRERROR gl_CONDITIONAL([GL_COND_OBJ_STRERROR], [test $REPLACE_STRERROR = 1]) gl_MODULE_INDICATOR([strerror]) @@ -2718,7 +3178,7 @@ changequote([, ])dnl gl_PREREQ_STRERROR_R ]) gl_STRING_MODULE_INDICATOR([strerror_r]) - dnl For the modules argp, error. + dnl For the modules argp, error, xstrerror. gl_MODULE_INDICATOR([strerror_r-posix]) gl_FUNC_MMAP_ANON AC_CHECK_HEADERS_ONCE([sys/mman.h]) @@ -2751,6 +3211,12 @@ changequote([, ])dnl gl_SYS_UIO_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P gl_THREAD + gl_FUNC_TIME + gl_CONDITIONAL([GL_COND_OBJ_TIME], [test $REPLACE_TIME = 1]) + AM_COND_IF([GL_COND_OBJ_TIME], [ + gl_PREREQ_TIME + ]) + gl_TIME_MODULE_INDICATOR([time]) gl_TIME_H gl_TIME_H_REQUIRE_DEFAULTS AC_PROG_MKDIR_P @@ -2881,10 +3347,10 @@ changequote([, ])dnl gl_STDLIB_MODULE_INDICATOR([wctomb]) AC_REQUIRE([AC_CANONICAL_HOST]) gl_CONDITIONAL([GL_COND_OBJ_WINDOWS_THREAD], - [case "$host_os" in mingw*) true;; *) false;; esac]) + [case "$host_os" in mingw* | windows*) true;; *) false;; esac]) AC_REQUIRE([AC_CANONICAL_HOST]) gl_CONDITIONAL([GL_COND_OBJ_WINDOWS_TLS], - [case "$host_os" in mingw*) true;; *) false;; esac]) + [case "$host_os" in mingw* | windows*) true;; *) false;; esac]) gl_XALLOC gl_MODULE_INDICATOR([xalloc]) gl_MODULE_INDICATOR([xalloc-die]) @@ -2997,6 +3463,7 @@ AC_DEFUN([gltests_LIBSOURCES], [ # gnulib-tool and may be removed by future gnulib-tool invocations. AC_DEFUN([gl_FILE_LIST], [ build-aux/config.rpath + build-aux/gitlog-to-changelog doc/relocatable.texi lib/_Noreturn.h lib/alloca.in.h @@ -3013,6 +3480,22 @@ AC_DEFUN([gl_FILE_LIST], [ lib/c-strcasecmp.c lib/c-strcaseeq.h lib/c-strncasecmp.c + lib/c32is-impl.h + lib/c32isalnum.c + lib/c32isalpha.c + lib/c32isblank.c + lib/c32iscntrl.c + lib/c32isdigit.c + lib/c32isgraph.c + lib/c32islower.c + lib/c32isprint.c + lib/c32ispunct.c + lib/c32isspace.c + lib/c32isupper.c + lib/c32isxdigit.c + lib/c32to-impl.h + lib/c32tolower.c + lib/c32width.c lib/errno.in.h lib/flexmember.h lib/float+.h @@ -3052,6 +3535,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/isnanl.c lib/iswblank.c lib/iswdigit.c + lib/iswpunct.c lib/iswxdigit.c lib/itold.c lib/langinfo.in.h @@ -3063,6 +3547,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/locale.in.h lib/localename-table.c lib/localename-table.h + lib/localename-unsafe.c lib/localename.c lib/localename.h lib/malloc.c @@ -3072,13 +3557,15 @@ AC_DEFUN([gl_FILE_LIST], [ lib/math.in.h lib/mbchar.c lib/mbchar.h - lib/mbiter.c - lib/mbiter.h + lib/mbiterf.c + lib/mbiterf.h + lib/mbrtoc32.c lib/mbrtowc-impl-utf8.h lib/mbrtowc-impl.h lib/mbrtowc.c lib/mbsinit.c lib/mbsnlen.c + lib/mbszero.c lib/mbtowc-lock.c lib/mbtowc-lock.h lib/memchr.c @@ -3098,6 +3585,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/relocatable.h lib/relocatable.valgrind lib/setlocale-lock.c + lib/setlocale_null-unlocked.c lib/setlocale_null.c lib/setlocale_null.h lib/signbitd.c @@ -3109,7 +3597,6 @@ AC_DEFUN([gl_FILE_LIST], [ lib/stdint.in.h lib/stdio-impl.h lib/stdlib.in.h - lib/str-kmp.h lib/str-two-way.h lib/streq.h lib/striconveh.c @@ -3119,8 +3606,10 @@ AC_DEFUN([gl_FILE_LIST], [ lib/string.in.h lib/strncat.c lib/strstr.c + lib/struniq.h lib/sys_types.in.h lib/thread-optim.h + lib/uchar.in.h lib/unicase.in.h lib/unicase/cased.c lib/unicase/cased.h @@ -3379,6 +3868,12 @@ AC_DEFUN([gl_FILE_LIST], [ lib/unictype/digit.c lib/unictype/digit.h lib/unictype/identsyntaxmap.h + lib/unictype/incb_byname.c + lib/unictype/incb_byname.gperf + lib/unictype/incb_name.c + lib/unictype/incb_name.h + lib/unictype/incb_of.c + lib/unictype/incb_of.h lib/unictype/joininggroup_byname.c lib/unictype/joininggroup_byname.gperf lib/unictype/joininggroup_name.c @@ -3491,6 +3986,10 @@ AC_DEFUN([gl_FILE_LIST], [ lib/unictype/pr_hex_digit.h lib/unictype/pr_hyphen.c lib/unictype/pr_hyphen.h + lib/unictype/pr_id_compat_math_continue.c + lib/unictype/pr_id_compat_math_continue.h + lib/unictype/pr_id_compat_math_start.c + lib/unictype/pr_id_compat_math_start.h lib/unictype/pr_id_continue.c lib/unictype/pr_id_continue.h lib/unictype/pr_id_start.c @@ -3501,6 +4000,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/unictype/pr_ids_binary_operator.h lib/unictype/pr_ids_trinary_operator.c lib/unictype/pr_ids_trinary_operator.h + lib/unictype/pr_ids_unary_operator.c lib/unictype/pr_ignorable_control.c lib/unictype/pr_ignorable_control.h lib/unictype/pr_iso_control.c @@ -3547,6 +4047,8 @@ AC_DEFUN([gl_FILE_LIST], [ lib/unictype/pr_pattern_syntax.h lib/unictype/pr_pattern_white_space.c lib/unictype/pr_pattern_white_space.h + lib/unictype/pr_prepended_concatenation_mark.c + lib/unictype/pr_prepended_concatenation_mark.h lib/unictype/pr_private_use.c lib/unictype/pr_private_use.h lib/unictype/pr_punctuation.c @@ -3624,6 +4126,8 @@ AC_DEFUN([gl_FILE_LIST], [ lib/unilbrk/ulc-common.h lib/unilbrk/ulc-possible-linebreaks.c lib/unilbrk/ulc-width-linebreaks.c + lib/unimetadata.in.h + lib/unimetadata/u-version.c lib/uniname.in.h lib/uniname/gen-uninames.lisp lib/uniname/uniname.c @@ -3744,6 +4248,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/unistr/u-cpy.h lib/unistr/u-endswith.h lib/unistr/u-move.h + lib/unistr/u-pcpy.h lib/unistr/u-set.h lib/unistr/u-startswith.h lib/unistr/u-stpcpy.h @@ -3759,7 +4264,6 @@ AC_DEFUN([gl_FILE_LIST], [ lib/unistr/u-strnlen.h lib/unistr/u-strpbrk.h lib/unistr/u-strspn.h - lib/unistr/u-strstr.h lib/unistr/u-strtok.h lib/unistr/u16-check.c lib/unistr/u16-chr.c @@ -3777,6 +4281,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/unistr/u16-mbtoucr.c lib/unistr/u16-move.c lib/unistr/u16-next.c + lib/unistr/u16-pcpy.c lib/unistr/u16-prev.c lib/unistr/u16-set.c lib/unistr/u16-startswith.c @@ -3819,6 +4324,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/unistr/u32-mbtoucr.c lib/unistr/u32-move.c lib/unistr/u32-next.c + lib/unistr/u32-pcpy.c lib/unistr/u32-prev.c lib/unistr/u32-set.c lib/unistr/u32-startswith.c @@ -3862,6 +4368,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/unistr/u8-mbtoucr.c lib/unistr/u8-move.c lib/unistr/u8-next.c + lib/unistr/u8-pcpy.c lib/unistr/u8-prev.c lib/unistr/u8-set.c lib/unistr/u8-startswith.c @@ -3916,6 +4423,8 @@ AC_DEFUN([gl_FILE_LIST], [ lib/verify.h lib/warn-on-use.h lib/wchar.in.h + lib/wcs-two-way.h + lib/wcsstr-impl.h lib/wctype-h.c lib/wctype.in.h lib/wcwidth.c @@ -3932,6 +4441,7 @@ AC_DEFUN([gl_FILE_LIST], [ lib/xsize.c lib/xsize.h m4/00gnulib.m4 + m4/__inline.m4 m4/absolute-header.m4 m4/alloca.m4 m4/arpa_inet_h.m4 @@ -3939,6 +4449,7 @@ AC_DEFUN([gl_FILE_LIST], [ m4/btowc.m4 m4/builtin-expect.m4 m4/c-bool.m4 + m4/c32rtomb.m4 m4/calloc.m4 m4/close.m4 m4/codeset.m4 @@ -3949,6 +4460,7 @@ AC_DEFUN([gl_FILE_LIST], [ m4/environ.m4 m4/errno_h.m4 m4/error.m4 + m4/error_h.m4 m4/exponentd.m4 m4/exponentf.m4 m4/exponentl.m4 @@ -3992,6 +4504,7 @@ AC_DEFUN([gl_FILE_LIST], [ m4/isnanl.m4 m4/iswblank.m4 m4/iswdigit.m4 + m4/iswpunct.m4 m4/iswxdigit.m4 m4/langinfo_h.m4 m4/largefile.m4 @@ -4017,6 +4530,7 @@ AC_DEFUN([gl_FILE_LIST], [ m4/math_h.m4 m4/mbchar.m4 m4/mbiter.m4 + m4/mbrtoc32.m4 m4/mbrtowc.m4 m4/mbsinit.m4 m4/mbstate_t.m4 @@ -4029,6 +4543,7 @@ AC_DEFUN([gl_FILE_LIST], [ m4/msvc-nothrow.m4 m4/multiarch.m4 m4/musl.m4 + m4/nan-mips.m4 m4/nanosleep.m4 m4/netinet_in_h.m4 m4/nocrash.m4 @@ -4050,6 +4565,8 @@ AC_DEFUN([gl_FILE_LIST], [ m4/pthread_sigmask.m4 m4/putenv.m4 m4/raise.m4 + m4/random.m4 + m4/random_r.m4 m4/realloc.m4 m4/reallocarray.m4 m4/relocatable-lib.m4 @@ -4065,6 +4582,7 @@ AC_DEFUN([gl_FILE_LIST], [ m4/signbit.m4 m4/size_max.m4 m4/sleep.m4 + m4/snan.m4 m4/socketlib.m4 m4/sockets.m4 m4/socklen.m4 @@ -4094,7 +4612,13 @@ AC_DEFUN([gl_FILE_LIST], [ m4/sys_uio_h.m4 m4/thread.m4 m4/threadlib.m4 + m4/time.m4 m4/time_h.m4 + m4/uchar_h.m4 + m4/unicase_h.m4 + m4/unictype_h.m4 + m4/unimetadata_h.m4 + m4/uninorm_h.m4 m4/unistd_h.m4 m4/usleep.m4 m4/vararrays.m4 @@ -4111,7 +4635,6 @@ AC_DEFUN([gl_FILE_LIST], [ m4/wint_t.m4 m4/xalloc.m4 m4/xsize.m4 - m4/year2038.m4 m4/yield.m4 m4/zzgnulib.m4 tests/atomic-int-gnulib.h @@ -4121,12 +4644,12 @@ AC_DEFUN([gl_FILE_LIST], [ tests/locale.c tests/macros.h tests/minus-zero.h - tests/nan.h tests/nap.h tests/randomd.c tests/randoml.c tests/signature.h tests/test-accept.c + tests/test-alignasof.c tests/test-alloca-opt.c tests/test-arpa_inet.c tests/test-array-mergesort.c @@ -4134,13 +4657,55 @@ AC_DEFUN([gl_FILE_LIST], [ tests/test-binary-io.c tests/test-binary-io.sh tests/test-bind.c + tests/test-btoc32-1.sh + tests/test-btoc32-2.sh + tests/test-btoc32-3.sh + tests/test-btoc32.c + tests/test-btowc-1.sh + tests/test-btowc-2.sh + tests/test-btowc-3.sh tests/test-btowc.c - tests/test-btowc1.sh - tests/test-btowc2.sh tests/test-c-ctype.c tests/test-c-strcase.sh tests/test-c-strcasecmp.c tests/test-c-strncasecmp.c + tests/test-c32isalnum.c + tests/test-c32isalnum.sh + tests/test-c32isalpha.c + tests/test-c32isalpha.sh + tests/test-c32isblank.c + tests/test-c32isblank.sh + tests/test-c32iscntrl.c + tests/test-c32iscntrl.sh + tests/test-c32isdigit.c + tests/test-c32isdigit.sh + tests/test-c32isgraph.c + tests/test-c32isgraph.sh + tests/test-c32islower.c + tests/test-c32islower.sh + tests/test-c32isprint.c + tests/test-c32isprint.sh + tests/test-c32ispunct.c + tests/test-c32ispunct.sh + tests/test-c32isspace.c + tests/test-c32isspace.sh + tests/test-c32isupper.c + tests/test-c32isupper.sh + tests/test-c32isxdigit.c + tests/test-c32isxdigit.sh + tests/test-c32rtomb-w32-2.sh + tests/test-c32rtomb-w32-3.sh + tests/test-c32rtomb-w32-4.sh + tests/test-c32rtomb-w32-5.sh + tests/test-c32rtomb-w32-6.sh + tests/test-c32rtomb-w32-7.sh + tests/test-c32rtomb-w32-8.sh + tests/test-c32rtomb-w32.c + tests/test-c32rtomb.c + tests/test-c32rtomb.sh + tests/test-c32tolower.c + tests/test-c32tolower.sh + tests/test-c32width.c tests/test-calloc-gnu.c tests/test-cloexec.c tests/test-close.c @@ -4149,6 +4714,8 @@ AC_DEFUN([gl_FILE_LIST], [ tests/test-dup2.c tests/test-environ.c tests/test-errno.c + tests/test-error.c + tests/test-error.sh tests/test-fcntl-h.c tests/test-fcntl.c tests/test-fdopen.c @@ -4188,9 +4755,12 @@ AC_DEFUN([gl_FILE_LIST], [ tests/test-iswblank.c tests/test-iswdigit.c tests/test-iswdigit.sh + tests/test-iswpunct.c + tests/test-iswpunct.sh tests/test-iswxdigit.c tests/test-iswxdigit.sh tests/test-langinfo.c + tests/test-largefile.c tests/test-limits-h.c tests/test-listen.c tests/test-localcharset.c @@ -4202,20 +4772,34 @@ AC_DEFUN([gl_FILE_LIST], [ tests/test-malloc-gnu.c tests/test-malloca.c tests/test-math.c - tests/test-mbrtowc-w32-1.sh + tests/test-mbrtoc32-1.sh + tests/test-mbrtoc32-2.sh + tests/test-mbrtoc32-3.sh + tests/test-mbrtoc32-4.sh + tests/test-mbrtoc32-5.sh + tests/test-mbrtoc32-w32-2.sh + tests/test-mbrtoc32-w32-3.sh + tests/test-mbrtoc32-w32-4.sh + tests/test-mbrtoc32-w32-5.sh + tests/test-mbrtoc32-w32-6.sh + tests/test-mbrtoc32-w32-7.sh + tests/test-mbrtoc32-w32-8.sh + tests/test-mbrtoc32-w32.c + tests/test-mbrtoc32.c + tests/test-mbrtowc-1.sh + tests/test-mbrtowc-2.sh + tests/test-mbrtowc-3.sh + tests/test-mbrtowc-4.sh + tests/test-mbrtowc-5.sh tests/test-mbrtowc-w32-2.sh tests/test-mbrtowc-w32-3.sh tests/test-mbrtowc-w32-4.sh tests/test-mbrtowc-w32-5.sh tests/test-mbrtowc-w32-6.sh tests/test-mbrtowc-w32-7.sh + tests/test-mbrtowc-w32-8.sh tests/test-mbrtowc-w32.c tests/test-mbrtowc.c - tests/test-mbrtowc1.sh - tests/test-mbrtowc2.sh - tests/test-mbrtowc3.sh - tests/test-mbrtowc4.sh - tests/test-mbrtowc5.sh tests/test-mbsinit.c tests/test-mbsinit.sh tests/test-memchr.c @@ -4237,6 +4821,9 @@ AC_DEFUN([gl_FILE_LIST], [ tests/test-pthread_sigmask1.c tests/test-pthread_sigmask2.c tests/test-raise.c + tests/test-random-mt.c + tests/test-random.c + tests/test-random_r.c tests/test-realloc-gnu.c tests/test-reallocarray.c tests/test-rwlock1.c @@ -4254,6 +4841,7 @@ AC_DEFUN([gl_FILE_LIST], [ tests/test-setlocale2.sh tests/test-setlocale_null-mt-all.c tests/test-setlocale_null-mt-one.c + tests/test-setlocale_null-unlocked.c tests/test-setlocale_null.c tests/test-setsockopt.c tests/test-signal-h.c @@ -4264,7 +4852,6 @@ AC_DEFUN([gl_FILE_LIST], [ tests/test-stat-time.c tests/test-stat.c tests/test-stat.h - tests/test-stdalign.c tests/test-stdbool.c tests/test-stdckdint.c tests/test-stddef.c @@ -4290,7 +4877,9 @@ AC_DEFUN([gl_FILE_LIST], [ tests/test-sys_wait.h tests/test-thread_create.c tests/test-thread_self.c + tests/test-time-h.c tests/test-time.c + tests/test-uchar.c tests/test-unistd.c tests/test-unsetenv.c tests/test-usleep.c @@ -4298,13 +4887,13 @@ AC_DEFUN([gl_FILE_LIST], [ tests/test-verify.c tests/test-verify.sh tests/test-wchar.c - tests/test-wcrtomb-w32-1.sh tests/test-wcrtomb-w32-2.sh tests/test-wcrtomb-w32-3.sh tests/test-wcrtomb-w32-4.sh tests/test-wcrtomb-w32-5.sh tests/test-wcrtomb-w32-6.sh tests/test-wcrtomb-w32-7.sh + tests/test-wcrtomb-w32-8.sh tests/test-wcrtomb-w32.c tests/test-wcrtomb.c tests/test-wcrtomb.sh @@ -4455,6 +5044,10 @@ AC_DEFUN([gl_FILE_LIST], [ tests/unictype/test-decdigit.h tests/unictype/test-digit.c tests/unictype/test-digit.h + tests/unictype/test-incb_byname.c + tests/unictype/test-incb_name.c + tests/unictype/test-incb_of.c + tests/unictype/test-incb_of.h tests/unictype/test-joininggroup_byname.c tests/unictype/test-joininggroup_name.c tests/unictype/test-joininggroup_of.c @@ -4515,11 +5108,14 @@ AC_DEFUN([gl_FILE_LIST], [ tests/unictype/test-pr_grapheme_link.c tests/unictype/test-pr_hex_digit.c tests/unictype/test-pr_hyphen.c + tests/unictype/test-pr_id_compat_math_continue.c + tests/unictype/test-pr_id_compat_math_start.c tests/unictype/test-pr_id_continue.c tests/unictype/test-pr_id_start.c tests/unictype/test-pr_ideographic.c tests/unictype/test-pr_ids_binary_operator.c tests/unictype/test-pr_ids_trinary_operator.c + tests/unictype/test-pr_ids_unary_operator.c tests/unictype/test-pr_ignorable_control.c tests/unictype/test-pr_iso_control.c tests/unictype/test-pr_join_control.c @@ -4543,6 +5139,7 @@ AC_DEFUN([gl_FILE_LIST], [ tests/unictype/test-pr_paragraph_separator.c tests/unictype/test-pr_pattern_syntax.c tests/unictype/test-pr_pattern_white_space.c + tests/unictype/test-pr_prepended_concatenation_mark.c tests/unictype/test-pr_private_use.c tests/unictype/test-pr_punctuation.c tests/unictype/test-pr_quotation_mark.c @@ -4595,6 +5192,7 @@ AC_DEFUN([gl_FILE_LIST], [ tests/unilbrk/test-u8-width-linebreaks.c tests/unilbrk/test-ulc-possible-linebreaks.c tests/unilbrk/test-ulc-width-linebreaks.c + tests/unimetadata/test-u-version.c tests/uniname/HangulSyllableNames.txt tests/uniname/NameAliases.txt tests/uniname/UnicodeData.txt @@ -4692,6 +5290,7 @@ AC_DEFUN([gl_FILE_LIST], [ tests/unistr/test-cpy-alloc.h tests/unistr/test-cpy.h tests/unistr/test-move.h + tests/unistr/test-pcpy.h tests/unistr/test-set.h tests/unistr/test-stpcpy.h tests/unistr/test-stpncpy.h @@ -4720,6 +5319,7 @@ AC_DEFUN([gl_FILE_LIST], [ tests/unistr/test-u16-mbtoucr.c tests/unistr/test-u16-move.c tests/unistr/test-u16-next.c + tests/unistr/test-u16-pcpy.c tests/unistr/test-u16-prev.c tests/unistr/test-u16-set.c tests/unistr/test-u16-stpcpy.c @@ -4757,6 +5357,7 @@ AC_DEFUN([gl_FILE_LIST], [ tests/unistr/test-u32-mbtoucr.c tests/unistr/test-u32-move.c tests/unistr/test-u32-next.c + tests/unistr/test-u32-pcpy.c tests/unistr/test-u32-prev.c tests/unistr/test-u32-set.c tests/unistr/test-u32-stpcpy.c @@ -4794,6 +5395,7 @@ AC_DEFUN([gl_FILE_LIST], [ tests/unistr/test-u8-mbtoucr.c tests/unistr/test-u8-move.c tests/unistr/test-u8-next.c + tests/unistr/test-u8-pcpy.c tests/unistr/test-u8-prev.c tests/unistr/test-u8-set.c tests/unistr/test-u8-stpcpy.c @@ -4845,9 +5447,13 @@ AC_DEFUN([gl_FILE_LIST], [ tests=lib/binary-io.c tests=lib/binary-io.h tests=lib/bind.c + tests=lib/btoc32.c tests=lib/btowc.c tests=lib/c++defs.h + tests=lib/c32rtomb.c + tests=lib/c32tob.c tests=lib/calloc.c + tests=lib/cdefs.h tests=lib/cloexec.c tests=lib/cloexec.h tests=lib/close.c @@ -4855,7 +5461,7 @@ AC_DEFUN([gl_FILE_LIST], [ tests=lib/ctype.in.h tests=lib/dup2.c tests=lib/error.c - tests=lib/error.h + tests=lib/error.in.h tests=lib/exitfail.c tests=lib/exitfail.h tests=lib/fcntl.c @@ -4884,6 +5490,7 @@ AC_DEFUN([gl_FILE_LIST], [ tests=lib/intprops.h tests=lib/ioctl.c tests=lib/isblank.c + tests=lib/libc-config.h tests=lib/listen.c tests=lib/lstat.c tests=lib/malloc.c @@ -4893,6 +5500,7 @@ AC_DEFUN([gl_FILE_LIST], [ tests=lib/msvc-inval.h tests=lib/msvc-nothrow.c tests=lib/msvc-nothrow.h + tests=lib/nan.h tests=lib/nanosleep.c tests=lib/netinet_in.in.h tests=lib/open.c @@ -4905,8 +5513,11 @@ AC_DEFUN([gl_FILE_LIST], [ tests=lib/pthread_sigmask.c tests=lib/putenv.c tests=lib/raise.c + tests=lib/random.c + tests=lib/random_r.c tests=lib/realloc.c tests=lib/reallocarray.c + tests=lib/same-inode.c tests=lib/same-inode.h tests=lib/sched.in.h tests=lib/sched_yield.c @@ -4915,8 +5526,11 @@ AC_DEFUN([gl_FILE_LIST], [ tests=lib/setlocale.c tests=lib/setsockopt.c tests=lib/signal.in.h + tests=lib/signed-nan.h + tests=lib/signed-snan.h tests=lib/sigprocmask.c tests=lib/sleep.c + tests=lib/snan.h tests=lib/socket.c tests=lib/sockets.c tests=lib/sockets.h @@ -4925,7 +5539,6 @@ AC_DEFUN([gl_FILE_LIST], [ tests=lib/stat-w32.c tests=lib/stat-w32.h tests=lib/stat.c - tests=lib/stdalign.in.h tests=lib/stdio-read.c tests=lib/stdio-write.c tests=lib/stdio.in.h @@ -4941,6 +5554,7 @@ AC_DEFUN([gl_FILE_LIST], [ tests=lib/sys_stat.in.h tests=lib/sys_time.in.h tests=lib/sys_uio.in.h + tests=lib/time.c tests=lib/time.in.h tests=lib/unsetenv.c tests=lib/usleep.c diff --git a/gnulib-m4/host-cpu-c-abi.m4 b/gnulib-m4/host-cpu-c-abi.m4 index b9223241..e860a19e 100644 --- a/gnulib-m4/host-cpu-c-abi.m4 +++ b/gnulib-m4/host-cpu-c-abi.m4 @@ -1,5 +1,5 @@ -# host-cpu-c-abi.m4 serial 15 -dnl Copyright (C) 2002-2022 Free Software Foundation, Inc. +# host-cpu-c-abi.m4 serial 17 +dnl Copyright (C) 2002-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -461,217 +461,66 @@ EOF dnl Sets the HOST_CPU_C_ABI_32BIT variable to 'yes' if the C language ABI dnl (application binary interface) is a 32-bit one, to 'no' if it is a 64-bit -dnl one, or to 'unknown' if unknown. +dnl one. dnl This is a simplified variant of gl_HOST_CPU_C_ABI. AC_DEFUN([gl_HOST_CPU_C_ABI_32BIT], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_CACHE_CHECK([32-bit host C ABI], [gl_cv_host_cpu_c_abi_32bit], - [if test -n "$gl_cv_host_cpu_c_abi"; then - case "$gl_cv_host_cpu_c_abi" in - i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc) - gl_cv_host_cpu_c_abi_32bit=yes ;; - x86_64 | alpha | arm64 | hppa64 | ia64 | mips64 | powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 ) - gl_cv_host_cpu_c_abi_32bit=no ;; - *) - gl_cv_host_cpu_c_abi_32bit=unknown ;; - esac - else - case "$host_cpu" in - - # CPUs that only support a 32-bit ABI. - arc \ - | bfin \ - | cris* \ - | csky \ - | epiphany \ - | ft32 \ - | h8300 \ - | m68k \ - | microblaze | microblazeel \ - | nds32 | nds32le | nds32be \ - | nios2 | nios2eb | nios2el \ - | or1k* \ - | or32 \ - | sh | sh[1234] | sh[1234]e[lb] \ - | tic6x \ - | xtensa* ) - gl_cv_host_cpu_c_abi_32bit=yes - ;; + [case "$host_cpu" in - # CPUs that only support a 64-bit ABI. -changequote(,)dnl - alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \ - | mmix ) -changequote([,])dnl - gl_cv_host_cpu_c_abi_32bit=no - ;; + # CPUs that only support a 32-bit ABI. + arc \ + | bfin \ + | cris* \ + | csky \ + | epiphany \ + | ft32 \ + | h8300 \ + | m68k \ + | microblaze | microblazeel \ + | nds32 | nds32le | nds32be \ + | nios2 | nios2eb | nios2el \ + | or1k* \ + | or32 \ + | sh | sh[1234] | sh[1234]e[lb] \ + | tic6x \ + | xtensa* ) + gl_cv_host_cpu_c_abi_32bit=yes + ;; + # CPUs that only support a 64-bit ABI. changequote(,)dnl - i[34567]86 ) + alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \ + | mmix ) changequote([,])dnl - gl_cv_host_cpu_c_abi_32bit=yes - ;; - - x86_64 ) - # On x86_64 systems, the C compiler may be generating code in one of - # these ABIs: - # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64. - # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64 - # with native Windows (mingw, MSVC). - # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32. - # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386. - AC_COMPILE_IFELSE( - [AC_LANG_SOURCE( - [[#if (defined __x86_64__ || defined __amd64__ \ - || defined _M_X64 || defined _M_AMD64) \ - && !(defined __ILP32__ || defined _ILP32) - int ok; - #else - error fail - #endif - ]])], - [gl_cv_host_cpu_c_abi_32bit=no], - [gl_cv_host_cpu_c_abi_32bit=yes]) - ;; - - arm* | aarch64 ) - # Assume arm with EABI. - # On arm64 systems, the C compiler may be generating code in one of - # these ABIs: - # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64. - # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32. - # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf. - AC_COMPILE_IFELSE( - [AC_LANG_SOURCE( - [[#if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32) - int ok; - #else - error fail - #endif - ]])], - [gl_cv_host_cpu_c_abi_32bit=no], - [gl_cv_host_cpu_c_abi_32bit=yes]) - ;; - - hppa1.0 | hppa1.1 | hppa2.0* | hppa64 ) - # On hppa, the C compiler may be generating 32-bit code or 64-bit - # code. In the latter case, it defines _LP64 and __LP64__. - AC_COMPILE_IFELSE( - [AC_LANG_SOURCE( - [[#ifdef __LP64__ - int ok; - #else - error fail - #endif - ]])], - [gl_cv_host_cpu_c_abi_32bit=no], - [gl_cv_host_cpu_c_abi_32bit=yes]) - ;; - - ia64* ) - # On ia64 on HP-UX, the C compiler may be generating 64-bit code or - # 32-bit code. In the latter case, it defines _ILP32. - AC_COMPILE_IFELSE( - [AC_LANG_SOURCE( - [[#ifdef _ILP32 - int ok; - #else - error fail - #endif - ]])], - [gl_cv_host_cpu_c_abi_32bit=yes], - [gl_cv_host_cpu_c_abi_32bit=no]) - ;; - - mips* ) - # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this - # at 32. - AC_COMPILE_IFELSE( - [AC_LANG_SOURCE( - [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64) - int ok; - #else - error fail - #endif - ]])], - [gl_cv_host_cpu_c_abi_32bit=no], - [gl_cv_host_cpu_c_abi_32bit=yes]) - ;; - - powerpc* ) - # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD. - # No need to distinguish them here; the caller may distinguish - # them based on the OS. - # On powerpc64 systems, the C compiler may still be generating - # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may - # be generating 64-bit code. - AC_COMPILE_IFELSE( - [AC_LANG_SOURCE( - [[#if defined __powerpc64__ || defined __LP64__ - int ok; - #else - error fail - #endif - ]])], - [gl_cv_host_cpu_c_abi_32bit=no], - [gl_cv_host_cpu_c_abi_32bit=yes]) - ;; - - rs6000 ) - gl_cv_host_cpu_c_abi_32bit=yes - ;; - - riscv32 | riscv64 ) - # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d. - # Size of 'long' and 'void *': - AC_COMPILE_IFELSE( - [AC_LANG_SOURCE( - [[#if defined __LP64__ - int ok; - #else - error fail - #endif - ]])], - [gl_cv_host_cpu_c_abi_32bit=no], - [gl_cv_host_cpu_c_abi_32bit=yes]) - ;; - - s390* ) - # On s390x, the C compiler may be generating 64-bit (= s390x) code - # or 31-bit (= s390) code. - AC_COMPILE_IFELSE( - [AC_LANG_SOURCE( - [[#if defined __LP64__ || defined __s390x__ - int ok; - #else - error fail - #endif - ]])], - [gl_cv_host_cpu_c_abi_32bit=no], - [gl_cv_host_cpu_c_abi_32bit=yes]) - ;; + gl_cv_host_cpu_c_abi_32bit=no + ;; - sparc | sparc64 ) - # UltraSPARCs running Linux have `uname -m` = "sparc64", but the - # C compiler still generates 32-bit code. + *) + if test -n "$gl_cv_host_cpu_c_abi"; then + dnl gl_HOST_CPU_C_ABI has already been run. Use its result. + case "$gl_cv_host_cpu_c_abi" in + i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc) + gl_cv_host_cpu_c_abi_32bit=yes ;; + x86_64 | alpha | arm64 | aarch64c | hppa64 | ia64 | mips64 | powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 ) + gl_cv_host_cpu_c_abi_32bit=no ;; + *) + gl_cv_host_cpu_c_abi_32bit=unknown ;; + esac + else + gl_cv_host_cpu_c_abi_32bit=unknown + fi + if test $gl_cv_host_cpu_c_abi_32bit = unknown; then AC_COMPILE_IFELSE( [AC_LANG_SOURCE( - [[#if defined __sparcv9 || defined __arch64__ - int ok; - #else - error fail - #endif + [[int test_pointer_size[sizeof (void *) - 5]; ]])], [gl_cv_host_cpu_c_abi_32bit=no], [gl_cv_host_cpu_c_abi_32bit=yes]) - ;; - - *) - gl_cv_host_cpu_c_abi_32bit=unknown - ;; - esac - fi + fi + ;; + esac ]) HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit" diff --git a/gnulib-m4/iconv.m4 b/gnulib-m4/iconv.m4 index 2065c977..2a7edd31 100644 --- a/gnulib-m4/iconv.m4 +++ b/gnulib-m4/iconv.m4 @@ -1,5 +1,5 @@ -# iconv.m4 serial 26 -dnl Copyright (C) 2000-2002, 2007-2014, 2016-2022 Free Software Foundation, +# iconv.m4 serial 27 +dnl Copyright (C) 2000-2002, 2007-2014, 2016-2024 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -38,7 +38,7 @@ AC_DEFUN([AM_ICONV_LINK], dnl because if the user has installed libiconv and not disabled its use dnl via --without-libiconv-prefix, he wants to use it. The first dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed. - am_save_CPPFLAGS="$CPPFLAGS" + gl_saved_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ @@ -55,7 +55,7 @@ AC_DEFUN([AM_ICONV_LINK], iconv_close(cd);]])], [am_cv_func_iconv=yes]) if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" + gl_saved_LIBS="$LIBS" LIBS="$LIBS $LIBICONV" AC_LINK_IFELSE( [AC_LANG_PROGRAM( @@ -68,14 +68,14 @@ AC_DEFUN([AM_ICONV_LINK], iconv_close(cd);]])], [am_cv_lib_iconv=yes] [am_cv_func_iconv=yes]) - LIBS="$am_save_LIBS" + LIBS="$gl_saved_LIBS" fi ]) if test "$am_cv_func_iconv" = yes; then AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, dnl Solaris 10. - am_save_LIBS="$LIBS" + gl_saved_LIBS="$LIBS" if test $am_cv_lib_iconv = yes; then LIBS="$LIBS $LIBICONV" fi @@ -205,7 +205,7 @@ AC_DEFUN([AM_ICONV_LINK], esac]) test "$am_cv_func_iconv_works" = no || break done - LIBS="$am_save_LIBS" + LIBS="$gl_saved_LIBS" ]) case "$am_cv_func_iconv_works" in *no) am_func_iconv=no am_cv_lib_iconv=no ;; @@ -224,7 +224,7 @@ AC_DEFUN([AM_ICONV_LINK], else dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV dnl either. - CPPFLAGS="$am_save_CPPFLAGS" + CPPFLAGS="$gl_saved_CPPFLAGS" LIBICONV= LTLIBICONV= fi diff --git a/gnulib-m4/iconv_h.m4 b/gnulib-m4/iconv_h.m4 index 58465662..7b560887 100644 --- a/gnulib-m4/iconv_h.m4 +++ b/gnulib-m4/iconv_h.m4 @@ -1,5 +1,5 @@ # iconv_h.m4 serial 16 -dnl Copyright (C) 2007-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/iconv_open.m4 b/gnulib-m4/iconv_open.m4 index 1ed26cd8..c6fe346b 100644 --- a/gnulib-m4/iconv_open.m4 +++ b/gnulib-m4/iconv_open.m4 @@ -1,5 +1,5 @@ -# iconv_open.m4 serial 16 -dnl Copyright (C) 2007-2022 Free Software Foundation, Inc. +# iconv_open.m4 serial 17 +dnl Copyright (C) 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -16,7 +16,8 @@ AC_DEFUN([gl_FUNC_ICONV_OPEN], dnl We know that GNU libiconv and GNU libc do. AC_EGREP_CPP([gnu_iconv], [ #include <iconv.h> - #if defined _LIBICONV_VERSION || (defined __GLIBC__ && !defined __UCLIBC__) + #if (defined _LIBICONV_VERSION && !(_LIBICONV_VERSION == 0x10b && defined __APPLE__)) \ + || (defined __GLIBC__ && !defined __UCLIBC__) gnu_iconv #endif ], [gl_func_iconv_gnu=yes], [gl_func_iconv_gnu=no]) diff --git a/gnulib-m4/include_next.m4 b/gnulib-m4/include_next.m4 index a9247f6f..70cb746f 100644 --- a/gnulib-m4/include_next.m4 +++ b/gnulib-m4/include_next.m4 @@ -1,5 +1,5 @@ -# include_next.m4 serial 26 -dnl Copyright (C) 2006-2022 Free Software Foundation, Inc. +# include_next.m4 serial 27 +dnl Copyright (C) 2006-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -74,17 +74,17 @@ EOF #endif #define DEFINED_IN_CONFTESTD2 EOF - gl_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2" + gl_saved_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$gl_saved_CPPFLAGS -Iconftestd1b -Iconftestd2" dnl We intentionally avoid using AC_LANG_SOURCE here. AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include <conftest.h>]], [gl_cv_have_include_next=yes], - [CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2" + [CPPFLAGS="$gl_saved_CPPFLAGS -Iconftestd1a -Iconftestd2" AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include <conftest.h>]], [gl_cv_have_include_next=buggy], [gl_cv_have_include_next=no]) ]) - CPPFLAGS="$gl_save_CPPFLAGS" + CPPFLAGS="$gl_saved_CPPFLAGS" rm -rf conftestd1a conftestd1b conftestd2 ]) PRAGMA_SYSTEM_HEADER= diff --git a/gnulib-m4/inet_pton.m4 b/gnulib-m4/inet_pton.m4 index 9507296d..1e0be330 100644 --- a/gnulib-m4/inet_pton.m4 +++ b/gnulib-m4/inet_pton.m4 @@ -1,5 +1,5 @@ -# inet_pton.m4 serial 19 -dnl Copyright (C) 2006, 2008-2022 Free Software Foundation, Inc. +# inet_pton.m4 serial 20 +dnl Copyright (C) 2006, 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -36,14 +36,14 @@ AC_DEFUN([gl_FUNC_INET_PTON], HAVE_DECL_INET_PTON=0 fi else - gl_save_LIBS=$LIBS + gl_saved_LIBS=$LIBS AC_SEARCH_LIBS([inet_pton], [nsl resolv network], [], [AC_CHECK_FUNCS([inet_pton]) if test $ac_cv_func_inet_pton = no; then HAVE_INET_PTON=0 fi ]) - LIBS=$gl_save_LIBS + LIBS=$gl_saved_LIBS if test "$ac_cv_search_inet_pton" != "no" \ && test "$ac_cv_search_inet_pton" != "none required"; then diff --git a/gnulib-m4/inline.m4 b/gnulib-m4/inline.m4 index 3f072655..208f7423 100644 --- a/gnulib-m4/inline.m4 +++ b/gnulib-m4/inline.m4 @@ -1,5 +1,5 @@ # inline.m4 serial 4 -dnl Copyright (C) 2006, 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2006, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/intl-thread-locale.m4 b/gnulib-m4/intl-thread-locale.m4 index d5d5b26a..63efc44f 100644 --- a/gnulib-m4/intl-thread-locale.m4 +++ b/gnulib-m4/intl-thread-locale.m4 @@ -1,5 +1,5 @@ -# intl-thread-locale.m4 serial 9 -dnl Copyright (C) 2015-2022 Free Software Foundation, Inc. +# intl-thread-locale.m4 serial 12 +dnl Copyright (C) 2015-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -38,6 +38,7 @@ AC_DEFUN([gt_INTL_THREAD_LOCALE_NAME], dnl they did not think about the programs. dnl In this situation, even the HAVE_NAMELESS_LOCALES support does not work. dnl So, define HAVE_FAKE_LOCALES and disable all locale_t support. + dnl Expected result: HAVE_FAKE_LOCALES is defined on OpenBSD ≥ 6.2. case "$gt_cv_func_uselocale_works" in *yes) AC_CHECK_HEADERS_ONCE([xlocale.h]) @@ -81,6 +82,7 @@ int main () ;; esac + dnl Expected result: HAVE_SOLARIS114_LOCALES is defined on Solaris ≥ 11.4. case "$gt_cv_func_uselocale_works" in *yes) AC_CACHE_CHECK([for Solaris 11.4 locale system], @@ -128,6 +130,8 @@ int main () dnl requires the gnulib overrides of 'newlocale', 'duplocale', 'freelocale', dnl which is a problem for GNU libunistring. Therefore try hard to avoid dnl enabling this code! + dnl Expected result: HAVE_NAMELESS_LOCALES is defined on AIX, + dnl and HAVE_AIX72_LOCALES is defined on AIX ≥ 7.2. gt_nameless_locales=no case "$host_os" in dnl It's needed on AIX 7.2. @@ -135,16 +139,38 @@ int main () gt_nameless_locales=yes AC_DEFINE([HAVE_NAMELESS_LOCALES], [1], [Define if the locale_t type does not contain the name of each locale category.]) + dnl In AIX ≥ 7.2, a locale contains at least the name of the LC_MESSSAGES + dnl category (fix of defect 823926). + AC_CACHE_CHECK([for AIX locales with LC_MESSAGES name], + [gt_cv_locale_aix72], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ + #include <locale.h> + /* Include <sys/localedef.h>, which defines __locale_t. */ + #include <stdlib.h> + locale_t x; + ]], + [[return ((__locale_t) x)->locale_name[0];]])], + [gt_cv_locale_aix72=yes], + [gt_cv_locale_aix72=no]) + ]) + if test $gt_cv_locale_aix72 = yes; then + AC_DEFINE([HAVE_AIX72_LOCALES], [1], + [Define if the __locale_t type contains the name of the LC_MESSAGES category.]) + fi ;; esac dnl We cannot support uselocale() on platforms where the locale_t type is dnl fake. So, set dnl gt_good_uselocale = gt_working_uselocale && !gt_fake_locales. + dnl Expected result: HAVE_GOOD_USELOCALE is defined on all platforms except + dnl FreeBSD < 9.1, NetBSD, OpenBSD, Minix, AIX < 7, AIX 7.2, HP-UX, IRIX, + dnl Solaris < 11.4, Cygwin < 2.6, mingw, MSVC 14, Android API level < 21. if test $gt_working_uselocale = yes && test $gt_fake_locales = no; then gt_good_uselocale=yes AC_DEFINE([HAVE_GOOD_USELOCALE], [1], - [Define if the uselocale exists, may be safely called, and returns sufficient information.]) + [Define if the uselocale function exists, may be safely called, and returns sufficient information.]) else gt_good_uselocale=no fi @@ -152,6 +178,8 @@ int main () dnl Set gt_localename_enhances_locale_funcs to indicate whether localename.c dnl overrides newlocale(), duplocale(), freelocale() to keep track of locale dnl names. + dnl Expected result: LOCALENAME_ENHANCE_LOCALE_FUNCS is defined on + dnl AIX 7.1, AIX ≥ 7.3. if test $gt_good_uselocale = yes && test $gt_nameless_locales = yes; then gt_localename_enhances_locale_funcs=yes LOCALENAME_ENHANCE_LOCALE_FUNCS=1 @@ -164,6 +192,9 @@ int main () dnl Tests whether uselocale() exists and is usable. dnl Sets gt_working_uselocale and defines HAVE_WORKING_USELOCALE. +dnl Expected result: HAVE_WORKING_USELOCALE is defined on all platforms except +dnl FreeBSD < 9.1, NetBSD, OpenBSD < 6.2, Minix, AIX < 7, AIX 7.2, HP-UX, IRIX, +dnl Solaris < 11.4, Cygwin < 2.6, mingw, MSVC 14, Android API level < 21. AC_DEFUN([gt_FUNC_USELOCALE], [ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles @@ -171,7 +202,7 @@ AC_DEFUN([gt_FUNC_USELOCALE], dnl Persuade glibc and Solaris <locale.h> to define 'locale_t'. AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) - AC_CHECK_FUNCS_ONCE([uselocale]) + gl_CHECK_FUNCS_ANDROID([uselocale], [[#include <locale.h>]]) dnl On AIX 7.2, the uselocale() function is not documented and leads to dnl crashes in subsequent setlocale() invocations. diff --git a/gnulib-m4/intlmacosx.m4 b/gnulib-m4/intlmacosx.m4 index ecc88d6e..450eb889 100644 --- a/gnulib-m4/intlmacosx.m4 +++ b/gnulib-m4/intlmacosx.m4 @@ -1,5 +1,5 @@ -# intlmacosx.m4 serial 8 (gettext-0.20.2) -dnl Copyright (C) 2004-2014, 2016, 2019-2022 Free Software Foundation, Inc. +# intlmacosx.m4 serial 10 (gettext-0.23) +dnl Copyright (C) 2004-2014, 2016, 2019-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -20,7 +20,7 @@ AC_DEFUN([gt_INTL_MACOSX], dnl Check for API introduced in Mac OS X 10.4. AC_CACHE_CHECK([for CFPreferencesCopyAppValue], [gt_cv_func_CFPreferencesCopyAppValue], - [gt_save_LIBS="$LIBS" + [gt_saved_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_LINK_IFELSE( [AC_LANG_PROGRAM( @@ -28,7 +28,7 @@ AC_DEFUN([gt_INTL_MACOSX], [[CFPreferencesCopyAppValue(NULL, NULL)]])], [gt_cv_func_CFPreferencesCopyAppValue=yes], [gt_cv_func_CFPreferencesCopyAppValue=no]) - LIBS="$gt_save_LIBS"]) + LIBS="$gt_saved_LIBS"]) if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) @@ -43,7 +43,7 @@ AC_DEFUN([gt_INTL_MACOSX], dnl CFPreferencesCopyAppValue still returns, namely ll_CC where ll is the dnl first among the preferred languages and CC is the territory. AC_CACHE_CHECK([for CFLocaleCopyPreferredLanguages], [gt_cv_func_CFLocaleCopyPreferredLanguages], - [gt_save_LIBS="$LIBS" + [gt_saved_LIBS="$LIBS" LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" AC_LINK_IFELSE( [AC_LANG_PROGRAM( @@ -51,7 +51,7 @@ AC_DEFUN([gt_INTL_MACOSX], [[CFLocaleCopyPreferredLanguages();]])], [gt_cv_func_CFLocaleCopyPreferredLanguages=yes], [gt_cv_func_CFLocaleCopyPreferredLanguages=no]) - LIBS="$gt_save_LIBS"]) + LIBS="$gt_saved_LIBS"]) if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then AC_DEFINE([HAVE_CFLOCALECOPYPREFERREDLANGUAGES], [1], [Define to 1 if you have the Mac OS X function CFLocaleCopyPreferredLanguages in the CoreFoundation framework.]) @@ -59,7 +59,11 @@ AC_DEFUN([gt_INTL_MACOSX], INTL_MACOSX_LIBS= if test $gt_cv_func_CFPreferencesCopyAppValue = yes \ || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then - INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + dnl Starting with macOS version 14, CoreFoundation relies on CoreServices, + dnl and we have to link it in explicitly, otherwise an exception + dnl NSInvalidArgumentException "unrecognized selector sent to instance" + dnl occurs. + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation -Wl,-framework -Wl,CoreServices" fi AC_SUBST([INTL_MACOSX_LIBS]) ]) diff --git a/gnulib-m4/intmax_t.m4 b/gnulib-m4/intmax_t.m4 index 8a15dabd..d3d21201 100644 --- a/gnulib-m4/intmax_t.m4 +++ b/gnulib-m4/intmax_t.m4 @@ -1,5 +1,5 @@ # intmax_t.m4 serial 9 -dnl Copyright (C) 1997-2004, 2006-2007, 2009-2022 Free Software Foundation, +dnl Copyright (C) 1997-2004, 2006-2007, 2009-2024 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, diff --git a/gnulib-m4/inttypes.m4 b/gnulib-m4/inttypes.m4 index df25a21e..6abf9dbe 100644 --- a/gnulib-m4/inttypes.m4 +++ b/gnulib-m4/inttypes.m4 @@ -1,5 +1,5 @@ -# inttypes.m4 serial 36 -dnl Copyright (C) 2006-2022 Free Software Foundation, Inc. +# inttypes.m4 serial 37 +dnl Copyright (C) 2006-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -170,6 +170,10 @@ AC_DEFUN([gl_INTTYPES_H_DEFAULTS], HAVE_DECL_STRTOIMAX=1; AC_SUBST([HAVE_DECL_STRTOIMAX]) HAVE_DECL_STRTOUMAX=1; AC_SUBST([HAVE_DECL_STRTOUMAX]) HAVE_IMAXDIV_T=1; AC_SUBST([HAVE_IMAXDIV_T]) + HAVE_IMAXABS=1; AC_SUBST([HAVE_IMAXABS]) + HAVE_IMAXDIV=1; AC_SUBST([HAVE_IMAXDIV]) + REPLACE_IMAXABS=0; AC_SUBST([REPLACE_IMAXABS]) + REPLACE_IMAXDIV=0; AC_SUBST([REPLACE_IMAXDIV]) REPLACE_STRTOIMAX=0; AC_SUBST([REPLACE_STRTOIMAX]) REPLACE_STRTOUMAX=0; AC_SUBST([REPLACE_STRTOUMAX]) INT32_MAX_LT_INTMAX_MAX=1; AC_SUBST([INT32_MAX_LT_INTMAX_MAX]) diff --git a/gnulib-m4/inttypes_h.m4 b/gnulib-m4/inttypes_h.m4 index 6e9eebf1..ae0a00f0 100644 --- a/gnulib-m4/inttypes_h.m4 +++ b/gnulib-m4/inttypes_h.m4 @@ -1,5 +1,5 @@ # inttypes_h.m4 serial 10 -dnl Copyright (C) 1997-2004, 2006, 2008-2022 Free Software Foundation, Inc. +dnl Copyright (C) 1997-2004, 2006, 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/ioctl.m4 b/gnulib-m4/ioctl.m4 index 7c721345..42788830 100644 --- a/gnulib-m4/ioctl.m4 +++ b/gnulib-m4/ioctl.m4 @@ -1,5 +1,5 @@ # ioctl.m4 serial 6 -dnl Copyright (C) 2008-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/isblank.m4 b/gnulib-m4/isblank.m4 index 1d0ed6ce..d07472cd 100644 --- a/gnulib-m4/isblank.m4 +++ b/gnulib-m4/isblank.m4 @@ -1,5 +1,5 @@ # isblank.m4 serial 3 -dnl Copyright (C) 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/isnand.m4 b/gnulib-m4/isnand.m4 index 4eadde7c..c6a54f2f 100644 --- a/gnulib-m4/isnand.m4 +++ b/gnulib-m4/isnand.m4 @@ -1,5 +1,5 @@ -# isnand.m4 serial 12 -dnl Copyright (C) 2007-2022 Free Software Foundation, Inc. +# isnand.m4 serial 14 +dnl Copyright (C) 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -18,8 +18,7 @@ AC_DEFUN([gl_FUNC_ISNAND], fi fi dnl The variable gl_func_isnand set here is used by isnan.m4. - if test $gl_cv_func_isnand_no_libm = yes \ - || test $gl_cv_func_isnand_in_libm = yes; then + if test $gl_cv_func_isnand_no_libm = yes || test -n "$ISNAND_LIBM"; then gl_func_isnand=yes else gl_func_isnand=no @@ -53,7 +52,7 @@ AC_DEFUN([gl_HAVE_ISNAND_IN_LIBM], AC_CACHE_CHECK([whether isnan(double) can be used with libm], [gl_cv_func_isnand_in_libm], [ - save_LIBS="$LIBS" + saved_LIBS="$LIBS" LIBS="$LIBS -lm" AC_LINK_IFELSE( [AC_LANG_PROGRAM( @@ -69,7 +68,7 @@ AC_DEFUN([gl_HAVE_ISNAND_IN_LIBM], [[return isnand (x);]])], [gl_cv_func_isnand_in_libm=yes], [gl_cv_func_isnand_in_libm=no]) - LIBS="$save_LIBS" + LIBS="$saved_LIBS" ]) ]) diff --git a/gnulib-m4/isnanf.m4 b/gnulib-m4/isnanf.m4 index 44c825a1..a53519e7 100644 --- a/gnulib-m4/isnanf.m4 +++ b/gnulib-m4/isnanf.m4 @@ -1,5 +1,5 @@ -# isnanf.m4 serial 18 -dnl Copyright (C) 2007-2022 Free Software Foundation, Inc. +# isnanf.m4 serial 21 +dnl Copyright (C) 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -18,12 +18,11 @@ AC_DEFUN([gl_FUNC_ISNANF], fi fi dnl The variable gl_func_isnanf set here is used by isnan.m4. - if test $gl_cv_func_isnanf_no_libm = yes \ - || test $gl_cv_func_isnanf_in_libm = yes; then - save_LIBS="$LIBS" + if test $gl_cv_func_isnanf_no_libm = yes || test -n "$ISNANF_LIBM"; then + saved_LIBS="$LIBS" LIBS="$LIBS $ISNANF_LIBM" gl_ISNANF_WORKS - LIBS="$save_LIBS" + LIBS="$saved_LIBS" case "$gl_cv_func_isnanf_works" in *yes) gl_func_isnanf=yes ;; *) gl_func_isnanf=no; ISNANF_LIBM= ;; @@ -94,7 +93,7 @@ AC_DEFUN([gl_HAVE_ISNANF_IN_LIBM], AC_CACHE_CHECK([whether isnan(float) can be used with libm], [gl_cv_func_isnanf_in_libm], [ - save_LIBS="$LIBS" + saved_LIBS="$LIBS" LIBS="$LIBS -lm" AC_LINK_IFELSE( [AC_LANG_PROGRAM( @@ -110,7 +109,7 @@ AC_DEFUN([gl_HAVE_ISNANF_IN_LIBM], [[return isnanf (x);]])], [gl_cv_func_isnanf_in_libm=yes], [gl_cv_func_isnanf_in_libm=no]) - LIBS="$save_LIBS" + LIBS="$saved_LIBS" ]) ]) @@ -181,7 +180,7 @@ int main() [gl_cv_func_isnanf_works=no], [case "$host_os" in irix* | solaris*) gl_cv_func_isnanf_works="guessing no" ;; - mingw*) # Guess yes on mingw, no on MSVC. + mingw* | windows*) # Guess yes on mingw, no on MSVC. AC_EGREP_CPP([Known], [ #ifdef __MINGW32__ Known diff --git a/gnulib-m4/isnanl.m4 b/gnulib-m4/isnanl.m4 index fa49a644..9f7a5f13 100644 --- a/gnulib-m4/isnanl.m4 +++ b/gnulib-m4/isnanl.m4 @@ -1,10 +1,10 @@ -# isnanl.m4 serial 22 -dnl Copyright (C) 2007-2022 Free Software Foundation, Inc. +# isnanl.m4 serial 26 +dnl Copyright (C) 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. -AC_DEFUN([gl_FUNC_ISNANL], +AC_DEFUN_ONCE([gl_FUNC_ISNANL], [ AC_REQUIRE([gl_MATH_H_DEFAULTS]) ISNANL_LIBM= @@ -16,12 +16,11 @@ AC_DEFUN([gl_FUNC_ISNANL], fi fi dnl The variable gl_func_isnanl set here is used by isnan.m4. - if test $gl_cv_func_isnanl_no_libm = yes \ - || test $gl_cv_func_isnanl_in_libm = yes; then - save_LIBS="$LIBS" + if test $gl_cv_func_isnanl_no_libm = yes || test -n "$ISNANL_LIBM"; then + saved_LIBS="$LIBS" LIBS="$LIBS $ISNANL_LIBM" gl_FUNC_ISNANL_WORKS - LIBS="$save_LIBS" + LIBS="$saved_LIBS" case "$gl_cv_func_isnanl_works" in *yes) gl_func_isnanl=yes ;; *) gl_func_isnanl=no; ISNANL_LIBM= ;; @@ -88,7 +87,7 @@ AC_DEFUN([gl_HAVE_ISNANL_IN_LIBM], AC_CACHE_CHECK([whether isnan(long double) can be used with libm], [gl_cv_func_isnanl_in_libm], [ - save_LIBS="$LIBS" + saved_LIBS="$LIBS" LIBS="$LIBS -lm" AC_LINK_IFELSE( [AC_LANG_PROGRAM( @@ -104,7 +103,7 @@ AC_DEFUN([gl_HAVE_ISNANL_IN_LIBM], [[return isnanl (x);]])], [gl_cv_func_isnanl_in_libm=yes], [gl_cv_func_isnanl_in_libm=no]) - LIBS="$save_LIBS" + LIBS="$saved_LIBS" ]) ]) @@ -232,7 +231,7 @@ int main () [gl_cv_func_isnanl_works=yes], [gl_cv_func_isnanl_works=no], [case "$host_os" in - mingw*) # Guess yes on mingw, no on MSVC. + mingw* | windows*) # Guess yes on mingw, no on MSVC. AC_EGREP_CPP([Known], [ #ifdef __MINGW32__ Known diff --git a/gnulib-m4/iswblank.m4 b/gnulib-m4/iswblank.m4 index ddecf9b8..e450f0bd 100644 --- a/gnulib-m4/iswblank.m4 +++ b/gnulib-m4/iswblank.m4 @@ -1,5 +1,5 @@ -# iswblank.m4 serial 5 -dnl Copyright (C) 2011-2022 Free Software Foundation, Inc. +# iswblank.m4 serial 7 +dnl Copyright (C) 2011-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -10,14 +10,18 @@ AC_DEFUN([gl_FUNC_ISWBLANK], AC_REQUIRE([gl_WCTYPE_H]) dnl Persuade glibc <wctype.h> to declare iswblank(). AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) - AC_CHECK_FUNCS_ONCE([iswblank]) + gl_CHECK_FUNCS_ANDROID([iswblank], [[#include <wctype.h>]]) AC_CHECK_DECLS([iswblank], , , [[ #include <wchar.h> #include <wctype.h> ]]) if test $ac_cv_func_iswblank = no; then HAVE_ISWBLANK=0 - if test $ac_cv_have_decl_iswblank = yes; then + if test $ac_cv_have_decl_iswblank = yes \ + || case "$gl_cv_onwards_func_iswblank" in \ + future*) true ;; \ + *) false ;; \ + esac; then REPLACE_ISWBLANK=1 fi fi diff --git a/gnulib-m4/iswdigit.m4 b/gnulib-m4/iswdigit.m4 index 643c5b29..d13c1ae9 100644 --- a/gnulib-m4/iswdigit.m4 +++ b/gnulib-m4/iswdigit.m4 @@ -1,5 +1,5 @@ -# iswdigit.m4 serial 3 -dnl Copyright (C) 2020-2022 Free Software Foundation, Inc. +# iswdigit.m4 serial 6 +dnl Copyright (C) 2020-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -12,6 +12,7 @@ AC_DEFUN([gl_FUNC_ISWDIGIT], AC_REQUIRE([gt_LOCALE_JA]) AC_REQUIRE([gt_LOCALE_FR_UTF8]) AC_REQUIRE([gt_LOCALE_ZH_CN]) + AC_REQUIRE([AC_CANONICAL_HOST]) if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then dnl <wctype.h> redefines iswdigit already. @@ -25,7 +26,7 @@ AC_DEFUN([gl_FUNC_ISWDIGIT], changequote(,)dnl case "$host_os" in # Guess no on FreeBSD, NetBSD, Solaris, native Windows. - freebsd* | dragonfly* | netbsd* | solaris* | mingw*) + freebsd* | dragonfly* | netbsd* | solaris* | mingw* | windows*) gl_cv_func_iswdigit_works="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_iswdigit_works="guessing yes" ;; @@ -63,7 +64,8 @@ main (int argc, char *argv[]) int is; int result = 0; - if (setlocale (LC_ALL, "$LOCALE_FR") != NULL) + if (strcmp ("$LOCALE_FR", "none") != 0 + && setlocale (LC_ALL, "$LOCALE_FR") != NULL) { /* This fails on mingw, MSVC 14. */ /* U+00B2 SUPERSCRIPT TWO */ @@ -71,7 +73,8 @@ main (int argc, char *argv[]) if (!(is == 0)) result |= 1; } - if (setlocale (LC_ALL, "$LOCALE_JA") != NULL) + if (strcmp ("$LOCALE_JA", "none") != 0 + && setlocale (LC_ALL, "$LOCALE_JA") != NULL) { /* This fails on NetBSD 8.0. */ /* U+FF11 FULLWIDTH DIGIT ONE */ @@ -79,7 +82,8 @@ main (int argc, char *argv[]) if (!(is == 0)) result |= 2; } - if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) + if (strcmp ("$LOCALE_FR_UTF8", "none") != 0 + && setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) { /* This fails on FreeBSD 13.0, NetBSD 8.0, MSVC 14. */ /* U+0663 ARABIC-INDIC DIGIT THREE */ @@ -92,7 +96,8 @@ main (int argc, char *argv[]) if (!(is == 0)) result |= 8; } - if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) + if (strcmp ("$LOCALE_ZH_CN", "none") != 0 + && setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) { /* This fails on NetBSD 8.0, Solaris 10, Solaris 11.4. */ /* U+FF11 FULLWIDTH DIGIT ONE */ diff --git a/gnulib-m4/iswpunct.m4 b/gnulib-m4/iswpunct.m4 new file mode 100644 index 00000000..2be15aba --- /dev/null +++ b/gnulib-m4/iswpunct.m4 @@ -0,0 +1,48 @@ +# iswpunct.m4 serial 2 +dnl Copyright (C) 2023-2024 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_FUNC_ISWPUNCT], +[ + AC_REQUIRE([gl_WCTYPE_H_DEFAULTS]) + AC_REQUIRE([gl_WCTYPE_H]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + + if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then + dnl <wctype.h> redefines iswpunct already. + REPLACE_ISWPUNCT="$REPLACE_ISWCNTRL" + else + AC_CACHE_CHECK([whether iswpunct is consistent with ispunct], + [gl_cv_func_iswpunct_works], + [AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include <ctype.h> +#include <wchar.h> +#include <wctype.h> +int +main (int argc, char *argv[]) +{ + int result = 0; + /* This fails on Android 11. */ + if ((! iswpunct ('\`')) != (! ispunct ('\`'))) + result |= 1; + return result; +}]])], + [gl_cv_func_iswpunct_works=yes], + [gl_cv_func_iswpunct_works=no], + [case "$host_os" in + # Guess no on Android. + android*) gl_cv_func_iswpunct_works="guessing no" ;; + # Guess yes otherwise. + *) gl_cv_func_iswpunct_works="guessing yes" ;; + esac + ]) + ]) + case "$gl_cv_func_iswpunct_works" in + *yes) ;; + *) REPLACE_ISWPUNCT=1 ;; + esac + fi +]) diff --git a/gnulib-m4/iswxdigit.m4 b/gnulib-m4/iswxdigit.m4 index cc7c1a24..d42f0d13 100644 --- a/gnulib-m4/iswxdigit.m4 +++ b/gnulib-m4/iswxdigit.m4 @@ -1,5 +1,5 @@ -# iswxdigit.m4 serial 3 -dnl Copyright (C) 2020-2022 Free Software Foundation, Inc. +# iswxdigit.m4 serial 6 +dnl Copyright (C) 2020-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -11,6 +11,7 @@ AC_DEFUN([gl_FUNC_ISWXDIGIT], AC_REQUIRE([gt_LOCALE_JA]) AC_REQUIRE([gt_LOCALE_FR_UTF8]) AC_REQUIRE([gt_LOCALE_ZH_CN]) + AC_REQUIRE([AC_CANONICAL_HOST]) if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then dnl <wctype.h> redefines iswxdigit already. @@ -24,7 +25,7 @@ AC_DEFUN([gl_FUNC_ISWXDIGIT], changequote(,)dnl case "$host_os" in # Guess no on FreeBSD, NetBSD, Solaris, native Windows. - freebsd* | dragonfly* | netbsd* | solaris* | mingw*) + freebsd* | dragonfly* | netbsd* | solaris* | mingw* | windows*) gl_cv_func_iswxdigit_works="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_iswxdigit_works="guessing yes" ;; @@ -62,7 +63,8 @@ main (int argc, char *argv[]) int is; int result = 0; - if (setlocale (LC_ALL, "$LOCALE_JA") != NULL) + if (strcmp ("$LOCALE_JA", "none") != 0 + && setlocale (LC_ALL, "$LOCALE_JA") != NULL) { /* This fails on NetBSD 8.0. */ /* U+FF21 FULLWIDTH LATIN CAPITAL LETTER A */ @@ -70,7 +72,8 @@ main (int argc, char *argv[]) if (!(is == 0)) result |= 1; } - if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) + if (strcmp ("$LOCALE_FR_UTF8", "none") != 0 + && setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) { /* This fails on FreeBSD 13.0. */ /* U+0663 ARABIC-INDIC DIGIT THREE */ @@ -83,7 +86,8 @@ main (int argc, char *argv[]) if (!(is == 0)) result |= 4; } - if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) + if (strcmp ("$LOCALE_ZH_CN", "none") != 0 + && setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) { /* This fails on Solaris 10, Solaris 11.4. */ /* U+FF11 FULLWIDTH DIGIT ONE */ diff --git a/gnulib-m4/langinfo_h.m4 b/gnulib-m4/langinfo_h.m4 index 563c8c43..888b1612 100644 --- a/gnulib-m4/langinfo_h.m4 +++ b/gnulib-m4/langinfo_h.m4 @@ -1,5 +1,5 @@ # langinfo_h.m4 serial 12 -dnl Copyright (C) 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/largefile.m4 b/gnulib-m4/largefile.m4 index ec9677c4..cbe9bc1f 100644 --- a/gnulib-m4/largefile.m4 +++ b/gnulib-m4/largefile.m4 @@ -1,7 +1,7 @@ # Enable large files on systems where this is not the default. # Enable support for files on Linux file systems with 64-bit inode numbers. -# Copyright 1992-1996, 1998-2022 Free Software Foundation, Inc. +# Copyright 1992-1996, 1998-2024 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -10,10 +10,9 @@ # It does not set _LARGEFILE_SOURCE=1 on HP-UX/ia64 32-bit, although this # setting of _LARGEFILE_SOURCE is needed so that <stdio.h> declares fseeko # and ftello in C++ mode as well. -# Fixed in Autoconf 2.72, which has AC_SYS_YEAR2038. +# This problem occurs in Autoconf 2.71 and earlier, which lack AC_SYS_YEAR2038. AC_DEFUN([gl_SET_LARGEFILE_SOURCE], -[ - m4_ifndef([AC_SYS_YEAR2038], [ + m4_ifndef([AC_SYS_YEAR2038], [[ AC_REQUIRE([AC_CANONICAL_HOST]) AC_FUNC_FSEEKO case "$host_os" in @@ -22,58 +21,264 @@ AC_DEFUN([gl_SET_LARGEFILE_SOURCE], [Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2).]) ;; esac - ]) + ]]) +) + +m4_ifndef([AC_SYS_YEAR2038_RECOMMENDED], [ +# Support AC_SYS_YEAR2038_RECOMMENDED and related macros, even if +# Autoconf 2.71 or earlier. This code is taken from Autoconf master. + +# _AC_SYS_YEAR2038_TEST_CODE +# -------------------------- +# C code used to probe for time_t that can represent time points more +# than 2**31 - 1 seconds after the epoch. With the usual Unix epoch, +# these correspond to dates after 2038-01-18 22:14:07 +0000 (Gregorian), +# hence the name. +AC_DEFUN([_AC_SYS_YEAR2038_TEST_CODE], +[[ + #include <time.h> + /* Check that time_t can represent 2**32 - 1 correctly. */ + #define LARGE_TIME_T \\ + ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) + int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 + && LARGE_TIME_T % 65537 == 0) + ? 1 : -1]; +]]) + +# _AC_SYS_YEAR2038_OPTIONS +# ------------------------ +# List of known ways to enable support for large time_t. If you change +# this list you probably also need to change the AS_CASE at the end of +# _AC_SYS_YEAR2038_PROBE. +m4_define([_AC_SYS_YEAR2038_OPTIONS], m4_normalize( + ["none needed"] dnl 64-bit and newer 32-bit Unix + ["-D_TIME_BITS=64"] dnl glibc 2.34 with some 32-bit ABIs + ["-D__MINGW_USE_VC2005_COMPAT"] dnl 32-bit MinGW + ["-U_USE_32_BIT_TIME_T -D__MINGW_USE_VC2005_COMPAT"] + dnl 32-bit MinGW (misconfiguration) +)) + +# _AC_SYS_YEAR2038_PROBE +# ---------------------- +# Subroutine of AC_SYS_YEAR2038. Probe for time_t that can represent +# time points more than 2**31 - 1 seconds after the epoch (dates after +# 2038-01-18, see above) and set the cache variable ac_cv_sys_year2038_opts +# to one of the values in the _AC_SYS_YEAR2038_OPTIONS list, or to +# "support not detected" if none of them worked. Then, set compilation +# options and #defines as necessary to enable large time_t support. +# +# Note that we do not test whether mktime, localtime, etc. handle +# large values of time_t correctly, as that would require use of +# AC_TRY_RUN. Note also that some systems only support large time_t +# together with large off_t. +# +# If you change this macro you may also need to change +# _AC_SYS_YEAR2038_OPTIONS. +AC_DEFUN([_AC_SYS_YEAR2038_PROBE], +[AC_CACHE_CHECK([for $CC option for timestamps after 2038], + [ac_cv_sys_year2038_opts], + [ac_save_CPPFLAGS="$CPPFLAGS" + ac_opt_found=no + for ac_opt in _AC_SYS_YEAR2038_OPTIONS; do + AS_IF([test x"$ac_opt" != x"none needed"], + [CPPFLAGS="$ac_save_CPPFLAGS $ac_opt"]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_YEAR2038_TEST_CODE])], + [ac_cv_sys_year2038_opts="$ac_opt" + ac_opt_found=yes]) + test $ac_opt_found = no || break + done + CPPFLAGS="$ac_save_CPPFLAGS" + test $ac_opt_found = yes || ac_cv_sys_year2038_opts="support not detected"]) + +ac_have_year2038=yes +AS_CASE([$ac_cv_sys_year2038_opts], + ["none needed"], [], + ["support not detected"], + [ac_have_year2038=no], + + ["-D_TIME_BITS=64"], + [AC_DEFINE([_TIME_BITS], [64], + [Number of bits in time_t, on hosts where this is settable.])], + + ["-D__MINGW_USE_VC2005_COMPAT"], + [AC_DEFINE([__MINGW_USE_VC2005_COMPAT], [1], + [Define to 1 on platforms where this makes time_t a 64-bit type.])], + + ["-U_USE_32_BIT_TIME_T"*], + [AC_MSG_FAILURE(m4_text_wrap( + [the 'time_t' type is currently forced to be 32-bit. + It will stop working after mid-January 2038. + Remove _USE_32BIT_TIME_T from the compiler flags.], + [], [], [55]))], + + [AC_MSG_ERROR( + [internal error: bad value for \$ac_cv_sys_year2038_opts])]) ]) -# Work around a problem in Autoconf through 2.71 on glibc 2.34+ -# with _TIME_BITS. Also, work around a problem in autoconf <= 2.69: -# AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5, -# or configures them incorrectly in some cases. -m4_version_prereq([2.70], [], [ - -# _AC_SYS_LARGEFILE_TEST_INCLUDES -# ------------------------------- -m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES], -[#include <sys/types.h> - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, +# _AC_SYS_YEAR2038_ENABLE +# ----------------------- +# Depending on which of the YEAR2038 macros was used, add either an +# --enable-year2038 or a --disable-year2038 to +# the configure script. This is expanded very late and +# therefore there cannot be any code in the AC_ARG_ENABLE. The +# default value for 'enable_year2038' is emitted unconditionally +# because the generated code always looks at this variable. +m4_define([_AC_SYS_YEAR2038_ENABLE], +[m4_divert_text([DEFAULTS], + m4_provide_if([AC_SYS_YEAR2038], + [enable_year2038=yes], + [enable_year2038=no]))]dnl +[AC_ARG_ENABLE([year2038], + m4_provide_if([AC_SYS_YEAR2038], + [AS_HELP_STRING([--disable-year2038], + [don't support timestamps after 2038])], + [AS_HELP_STRING([--enable-year2038], + [support timestamps after 2038])]))]) + +# AC_SYS_YEAR2038 +# --------------- +# Attempt to detect and activate support for large time_t. +# On systems where time_t is not always 64 bits, this probe can be +# skipped by passing the --disable-year2038 option to configure. +AC_DEFUN([AC_SYS_YEAR2038], +[AC_REQUIRE([AC_SYS_LARGEFILE])dnl +AS_IF([test "$enable_year2038,$ac_have_year2038,$cross_compiling" = yes,no,no], + [# If we're not cross compiling and 'touch' works with a large + # timestamp, then we can presume the system supports wider time_t + # *somehow* and we just weren't able to detect it. One common + # case that we deliberately *don't* probe for is a system that + # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers + # wide time_t. (It would be inappropriate for us to override an + # intentional use of -m32.) Error out, demanding use of + # --disable-year2038 if this is intentional. + AS_IF([TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null], + [AS_CASE([`TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null`], + [*'Feb 7 2106'* | *'Feb 7 17:10'*], + [AC_MSG_FAILURE(m4_text_wrap( + [this system appears to support timestamps after mid-January 2038, + but no mechanism for enabling wide 'time_t' was detected. + Did you mean to build a 64-bit binary? (E.g., 'CC="${CC} -m64"'.) + To proceed with 32-bit time_t, configure with '--disable-year2038'.], + [], [], [55]))])])])]) + +# AC_SYS_YEAR2038_RECOMMENDED +# --------------------------- +# Same as AC_SYS_YEAR2038, but recommend support for large time_t. +# If we cannot find any way to make time_t capable of representing +# values larger than 2**31 - 1, error out unless --disable-year2038 is given. +AC_DEFUN([AC_SYS_YEAR2038_RECOMMENDED], +[AC_REQUIRE([AC_SYS_YEAR2038])dnl +AS_IF([test "$enable_year2038,$ac_have_year2038" = yes,no], + [AC_MSG_FAILURE(m4_text_wrap( + [could not enable timestamps after mid-January 2038. + This package recommends support for these later timestamps. + However, to proceed with signed 32-bit time_t even though it + will fail then, configure with '--disable-year2038'.], + [], [], [55]))])]) + +# _AC_SYS_LARGEFILE_TEST_CODE +# --------------------------- +# C code used to probe for large file support. +m4_define([_AC_SYS_LARGEFILE_TEST_CODE], +[@%:@include <sys/types.h> +@%:@ifndef FTYPE +@%:@ define FTYPE off_t +@%:@endif + /* Check that FTYPE can represent 2**63 - 1 correctly. + We can't simply define LARGE_FTYPE to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) - int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]];[]dnl +@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31)) + int FTYPE_is_large[[(LARGE_FTYPE % 2147483629 == 721 + && LARGE_FTYPE % 2147483647 == 1) + ? 1 : -1]];[]dnl ]) -])# m4_version_prereq 2.70 - -m4_ifndef([AC_SYS_YEAR2038], [ - -# _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, -# CACHE-VAR, -# DESCRIPTION, -# PROLOGUE, [FUNCTION-BODY]) -# -------------------------------------------------------- -m4_define([_AC_SYS_LARGEFILE_MACRO_VALUE], -[AC_CACHE_CHECK([for $1 value needed for large files], [$3], -[while :; do - m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])( - [AC_LANG_PROGRAM([$5], [$6])], - [$3=no; break]) - m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])( - [AC_LANG_PROGRAM([#undef $1 -#define $1 $2 -$5], [$6])], - [$3=$2; break]) - $3=unknown - break -done]) -case $$3 in #( - no | unknown) ;; - *) AC_DEFINE_UNQUOTED([$1], [$$3], [$4]);; -esac -rm -rf conftest*[]dnl -])# _AC_SYS_LARGEFILE_MACRO_VALUE +# Defined by Autoconf 2.71 and circa 2022 Gnulib unwisely depended on it. +m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES], [_AC_SYS_LARGEFILE_TEST_CODE]) + +# _AC_SYS_LARGEFILE_OPTIONS +# ------------------------- +# List of known ways to enable support for large files. If you change +# this list you probably also need to change the AS_CASE at the end of +# _AC_SYS_LARGEFILE_PROBE. +m4_define([_AC_SYS_LARGEFILE_OPTIONS], m4_normalize( + ["none needed"] dnl Most current systems + ["-D_FILE_OFFSET_BITS=64"] dnl X/Open LFS spec + ["-D_LARGE_FILES=1"] dnl 32-bit AIX 4.2.1+, 32-bit z/OS + ["-n32"] dnl 32-bit IRIX 6, SGI cc (obsolete) +)) + +# _AC_SYS_LARGEFILE_PROBE +# ----------------------- +# Subroutine of AC_SYS_LARGEFILE. Probe for large file support and set +# the cache variable ac_cv_sys_largefile_opts to one of the values in +# the _AC_SYS_LARGEFILE_OPTIONS list, or to "support not detected" if +# none of the options in that list worked. Then, set compilation +# options and #defines as necessary to enable large file support. +# +# If large file support is not detected, the behavior depends on which of +# the top-level AC_SYS_LARGEFILE macros was used (see below). +# +# If you change this macro you may also need to change +# _AC_SYS_LARGEFILE_OPTIONS. +AC_DEFUN([_AC_SYS_LARGEFILE_PROBE], +[AC_CACHE_CHECK([for $CC option to enable large file support], + [ac_cv_sys_largefile_opts], + [ac_save_CC="$CC" + ac_opt_found=no + for ac_opt in _AC_SYS_LARGEFILE_OPTIONS; do + AS_IF([test x"$ac_opt" != x"none needed"], + [CC="$ac_save_CC $ac_opt"]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_CODE])], + [AS_IF([test x"$ac_opt" = x"none needed"], + [# GNU/Linux s390x and alpha need _FILE_OFFSET_BITS=64 for wide ino_t. + CC="$CC -DFTYPE=ino_t" + AC_COMPILE_IFELSE([], [], + [CC="$CC -D_FILE_OFFSET_BITS=64" + AC_COMPILE_IFELSE([], [ac_opt='-D_FILE_OFFSET_BITS=64'])])]) + ac_cv_sys_largefile_opts=$ac_opt + ac_opt_found=yes]) + test $ac_opt_found = no || break + done + CC="$ac_save_CC" + dnl Gnulib implements large file support for native Windows, based on the + dnl variables WINDOWS_64_BIT_OFF_T, WINDOWS_64_BIT_ST_SIZE. + m4_ifdef([gl_LARGEFILE], [ + AC_REQUIRE([AC_CANONICAL_HOST]) + if test $ac_opt_found != yes; then + AS_CASE([$host_os], + [mingw* | windows*], + [ac_cv_sys_largefile_opts="supported through gnulib" + ac_opt_found=yes] + ) + fi + ]) + test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected"]) + +ac_have_largefile=yes +AS_CASE([$ac_cv_sys_largefile_opts], + ["none needed"], [], + ["supported through gnulib"], [], + ["support not detected"], + [ac_have_largefile=no], + + ["-D_FILE_OFFSET_BITS=64"], + [AC_DEFINE([_FILE_OFFSET_BITS], [64], + [Number of bits in a file offset, on hosts where this is settable.])], + + ["-D_LARGE_FILES=1"], + [AC_DEFINE([_LARGE_FILES], [1], + [Define to 1 on platforms where this makes off_t a 64-bit type.])], + + ["-n32"], + [CC="$CC -n32"], + + [AC_MSG_ERROR( + [internal error: bad value for \$ac_cv_sys_largefile_opts])]) +AS_IF([test "$enable_year2038" != no], + [_AC_SYS_YEAR2038_PROBE]) +AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])]) # AC_SYS_LARGEFILE # ---------------- @@ -85,44 +290,12 @@ rm -rf conftest*[]dnl # to have a 64-bit inode number cannot be accessed by 32-bit applications on # Linux x86/x86_64. This can occur with file systems such as XFS and NFS. AC_DEFUN([AC_SYS_LARGEFILE], -[AC_ARG_ENABLE(largefile, - [ --disable-largefile omit support for large files]) -AS_IF([test "$enable_largefile" != no], - [AC_CACHE_CHECK([for special C compiler options needed for large files], - ac_cv_sys_largefile_CC, - [ac_cv_sys_largefile_CC=no - if test "$GCC" != yes; then - ac_save_CC=$CC - while :; do - # IRIX 6.2 and later do not support large files by default, - # so use the C compiler's -n32 option if that helps. - AC_LANG_CONFTEST([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_INCLUDES])]) - AC_COMPILE_IFELSE([], [break]) - CC="$CC -n32" - AC_COMPILE_IFELSE([], [ac_cv_sys_largefile_CC=' -n32'; break]) - break - done - CC=$ac_save_CC - rm -f conftest.$ac_ext - fi]) - if test "$ac_cv_sys_largefile_CC" != no; then - CC=$CC$ac_cv_sys_largefile_CC - fi - - _AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64, - ac_cv_sys_file_offset_bits, - [Number of bits in a file offset, on hosts where this is settable.], - [_AC_SYS_LARGEFILE_TEST_INCLUDES]) - AS_CASE([$ac_cv_sys_file_offset_bits], - [unknown], - [_AC_SYS_LARGEFILE_MACRO_VALUE([_LARGE_FILES], [1], - [ac_cv_sys_large_files], - [Define for large files, on AIX-style hosts.], - [_AC_SYS_LARGEFILE_TEST_INCLUDES])], - [64], - [gl_YEAR2038_BODY([])])]) -])# AC_SYS_LARGEFILE -])# m4_ifndef AC_SYS_YEAR2038 +[AC_ARG_ENABLE([largefile], + [AS_HELP_STRING([--disable-largefile], + [omit support for large files])])dnl +AS_IF([test "$enable_largefile,$enable_year2038" != no,no], + [_AC_SYS_LARGEFILE_PROBE])]) +])# m4_ifndef AC_SYS_YEAR2038_RECOMMENDED # Enable large files on systems where this is implemented by Gnulib, not by the # system headers. @@ -132,7 +305,7 @@ AC_DEFUN([gl_LARGEFILE], [ AC_REQUIRE([AC_CANONICAL_HOST]) case "$host_os" in - mingw*) + mingw* | windows*) dnl Native Windows. dnl mingw64 defines off_t to a 64-bit type already, if dnl _FILE_OFFSET_BITS=64, which is ensured by AC_SYS_LARGEFILE. diff --git a/gnulib-m4/lcmessage.m4 b/gnulib-m4/lcmessage.m4 index 1a3eefe7..7f4646cd 100644 --- a/gnulib-m4/lcmessage.m4 +++ b/gnulib-m4/lcmessage.m4 @@ -1,5 +1,5 @@ # lcmessage.m4 serial 8 -dnl Copyright (C) 1995-2002, 2004-2005, 2008-2014, 2016, 2019-2022 Free +dnl Copyright (C) 1995-2002, 2004-2005, 2008-2014, 2016, 2019-2024 Free dnl Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, diff --git a/gnulib-m4/ldexpl.m4 b/gnulib-m4/ldexpl.m4 index 06d30f71..92fa523c 100644 --- a/gnulib-m4/ldexpl.m4 +++ b/gnulib-m4/ldexpl.m4 @@ -1,5 +1,5 @@ -# ldexpl.m4 serial 17 -dnl Copyright (C) 2007-2022 Free Software Foundation, Inc. +# ldexpl.m4 serial 19 +dnl Copyright (C) 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -24,7 +24,7 @@ AC_DEFUN([gl_FUNC_LDEXPL], AC_CACHE_CHECK([whether ldexpl() can be used with libm], [gl_cv_func_ldexpl_in_libm], [ - save_LIBS="$LIBS" + saved_LIBS="$LIBS" LIBS="$LIBS -lm" AC_LINK_IFELSE( [AC_LANG_PROGRAM( @@ -33,7 +33,7 @@ AC_DEFUN([gl_FUNC_LDEXPL], [[return ldexpl (x, -1) > 0;]])], [gl_cv_func_ldexpl_in_libm=yes], [gl_cv_func_ldexpl_in_libm=no]) - LIBS="$save_LIBS" + LIBS="$saved_LIBS" ]) if test $gl_cv_func_ldexpl_in_libm = yes; then LDEXPL_LIBM=-lm @@ -41,10 +41,10 @@ AC_DEFUN([gl_FUNC_LDEXPL], fi if test $gl_cv_func_ldexpl_no_libm = yes \ || test $gl_cv_func_ldexpl_in_libm = yes; then - save_LIBS="$LIBS" + saved_LIBS="$LIBS" LIBS="$LIBS $LDEXPL_LIBM" gl_FUNC_LDEXPL_WORKS - LIBS="$save_LIBS" + LIBS="$saved_LIBS" case "$gl_cv_func_ldexpl_works" in *yes) gl_func_ldexpl=yes ;; *) gl_func_ldexpl=no; REPLACE_LDEXPL=1 ;; @@ -124,10 +124,10 @@ int main() [ changequote(,)dnl case "$host_os" in - aix | aix[3-6]*) gl_cv_func_ldexpl_works="guessing no" ;; - # Guess yes on native Windows. - mingw*) gl_cv_func_ldexpl_works="guessing yes" ;; - *) gl_cv_func_ldexpl_works="guessing yes" ;; + aix | aix[3-6]*) gl_cv_func_ldexpl_works="guessing no" ;; + # Guess yes on native Windows. + mingw* | windows*) gl_cv_func_ldexpl_works="guessing yes" ;; + *) gl_cv_func_ldexpl_works="guessing yes" ;; esac changequote([,])dnl ]) diff --git a/gnulib-m4/lib-ld.m4 b/gnulib-m4/lib-ld.m4 index 934207a7..b17e0fda 100644 --- a/gnulib-m4/lib-ld.m4 +++ b/gnulib-m4/lib-ld.m4 @@ -1,5 +1,5 @@ -# lib-ld.m4 serial 10 -dnl Copyright (C) 1996-2003, 2009-2022 Free Software Foundation, Inc. +# lib-ld.m4 serial 13 +dnl Copyright (C) 1996-2003, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -29,7 +29,7 @@ AC_DEFUN([AC_LIB_PROG_LD], AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], + [AS_HELP_STRING([[--with-gnu-ld]], [assume the C compiler uses GNU ld [default=no]])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl @@ -67,7 +67,7 @@ else if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. case $host in - *-*-mingw*) + *-*-mingw* | windows*) # gcc leaves a trailing carriage return which upsets mingw acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) @@ -97,9 +97,9 @@ else fi if test -n "$ac_prog"; then # Search for $ac_prog in $PATH. - acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + acl_saved_IFS="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do - IFS="$acl_save_ifs" + IFS="$acl_saved_IFS" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" @@ -116,7 +116,7 @@ else esac fi done - IFS="$acl_save_ifs" + IFS="$acl_saved_IFS" fi case $host in *-*-aix*) diff --git a/gnulib-m4/lib-link.m4 b/gnulib-m4/lib-link.m4 index 3b75bcd0..1a7c1273 100644 --- a/gnulib-m4/lib-link.m4 +++ b/gnulib-m4/lib-link.m4 @@ -1,5 +1,5 @@ -# lib-link.m4 serial 33 -dnl Copyright (C) 2001-2022 Free Software Foundation, Inc. +# lib-link.m4 serial 34 +dnl Copyright (C) 2001-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -69,11 +69,11 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, dnl because if the user has installed lib[]Name and not disabled its use dnl via --without-lib[]Name-prefix, he wants to use it. - ac_save_CPPFLAGS="$CPPFLAGS" + acl_saved_CPPFLAGS="$CPPFLAGS" AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ - ac_save_LIBS="$LIBS" + acl_saved_LIBS="$LIBS" dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS, dnl because these -l options might require -L options that are present in dnl LIBS. -l options benefit only from the -L options listed before it. @@ -89,7 +89,7 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], [AC_LANG_PROGRAM([[$3]], [[$4]])], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])']) - LIBS="$ac_save_LIBS" + LIBS="$acl_saved_LIBS" ]) if test "$ac_cv_lib[]Name" = yes; then HAVE_LIB[]NAME=yes @@ -100,7 +100,7 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], HAVE_LIB[]NAME=no dnl If $LIB[]NAME didn't lead to a usable library, we don't need dnl $INC[]NAME either. - CPPFLAGS="$ac_save_CPPFLAGS" + CPPFLAGS="$acl_saved_CPPFLAGS" LIB[]NAME= LTLIB[]NAME= LIB[]NAME[]_PREFIX= @@ -224,7 +224,7 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY], additional_libdir3= fi dnl Search the library and its dependencies in $additional_libdir and - dnl $LDFLAGS. Using breadth-first-seach. + dnl $LDFLAGS. Use breadth-first search. LIB[]NAME= LTLIB[]NAME= INC[]NAME= @@ -537,12 +537,12 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY], dnl Read the .la file. It defines the variables dnl dlname, library_names, old_library, dependency_libs, current, dnl age, revision, installed, dlopen, dlpreopen, libdir. - save_libdir="$libdir" + saved_libdir="$libdir" case "$found_la" in */* | *\\*) . "$found_la" ;; *) . "./$found_la" ;; esac - libdir="$save_libdir" + libdir="$saved_libdir" dnl We use only dependency_libs. for dep in $dependency_libs; do case "$dep" in @@ -682,18 +682,18 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY], alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" done dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. - acl_save_libdir="$libdir" + acl_saved_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" + libdir="$acl_saved_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" else dnl The -rpath options are cumulative. for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" + acl_saved_libdir="$libdir" libdir="$found_dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" + libdir="$acl_saved_libdir" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" done fi @@ -790,18 +790,18 @@ AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], for dir in $rpathdirs; do alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" done - acl_save_libdir="$libdir" + acl_saved_libdir="$libdir" libdir="$alldirs" eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" + libdir="$acl_saved_libdir" $1="$flag" else dnl The -rpath options are cumulative. for dir in $rpathdirs; do - acl_save_libdir="$libdir" + acl_saved_libdir="$libdir" libdir="$dir" eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" + libdir="$acl_saved_libdir" $1="${$1}${$1:+ }$flag" done fi diff --git a/gnulib-m4/lib-prefix.m4 b/gnulib-m4/lib-prefix.m4 index 999f712f..f327c6ef 100644 --- a/gnulib-m4/lib-prefix.m4 +++ b/gnulib-m4/lib-prefix.m4 @@ -1,5 +1,5 @@ -# lib-prefix.m4 serial 20 -dnl Copyright (C) 2001-2005, 2008-2022 Free Software Foundation, Inc. +# lib-prefix.m4 serial 22 +dnl Copyright (C) 2001-2005, 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -126,10 +126,10 @@ AC_DEFUN([AC_LIB_PREPARE_PREFIX], else acl_final_exec_prefix="$exec_prefix" fi - acl_save_prefix="$prefix" + acl_saved_prefix="$prefix" prefix="$acl_final_prefix" eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" - prefix="$acl_save_prefix" + prefix="$acl_saved_prefix" ]) dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the @@ -137,13 +137,13 @@ dnl variables prefix and exec_prefix bound to the values they will have dnl at the end of the configure script. AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], [ - acl_save_prefix="$prefix" + acl_saved_prefix="$prefix" prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" + acl_saved_exec_prefix="$exec_prefix" exec_prefix="$acl_final_exec_prefix" $1 - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" + exec_prefix="$acl_saved_exec_prefix" + prefix="$acl_saved_prefix" ]) dnl AC_LIB_PREPARE_MULTILIB creates @@ -256,6 +256,15 @@ changequote([,])dnl esac fi ;; + netbsd*) + dnl On NetBSD/sparc64, there is a 'sparc' subdirectory that contains + dnl 32-bit libraries. + if test $HOST_CPU_C_ABI_32BIT != no; then + case "$host_cpu" in + sparc*) acl_libdirstem2=lib/sparc ;; + esac + fi + ;; *) dnl If $CC generates code for a 32-bit ABI, the libraries are dnl surely under $prefix/lib or $prefix/lib32, not $prefix/lib64. @@ -280,7 +289,7 @@ changequote([,])dnl fi fi if test -n "$searchpath"; then - acl_save_IFS="${IFS= }"; IFS=":" + acl_saved_IFS="${IFS= }"; IFS=":" for searchdir in $searchpath; do if test -d "$searchdir"; then case "$searchdir" in @@ -297,7 +306,7 @@ changequote([,])dnl esac fi done - IFS="$acl_save_IFS" + IFS="$acl_saved_IFS" if test $HOST_CPU_C_ABI_32BIT = yes; then # 32-bit ABI. acl_libdirstem3= diff --git a/gnulib-m4/libunistring-base.m4 b/gnulib-m4/libunistring-base.m4 index a0892da4..7c3f65ea 100644 --- a/gnulib-m4/libunistring-base.m4 +++ b/gnulib-m4/libunistring-base.m4 @@ -1,5 +1,5 @@ -# libunistring-base.m4 serial 7 -dnl Copyright (C) 2010-2022 Free Software Foundation, Inc. +# libunistring-base.m4 serial 8 +dnl Copyright (C) 2010-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -18,6 +18,8 @@ dnl You have to bump the VERSION argument to the next projected version dnl number each time you make a change that affects the behaviour of the dnl functions defined in Module (even if the sources of Module itself do not dnl change). +dnl +dnl This macro invocation must not occur in macros that are AC_REQUIREd. AC_DEFUN([gl_LIBUNISTRING_MODULE], [ @@ -28,6 +30,35 @@ AC_DEFUN([gl_LIBUNISTRING_MODULE], [gl_LIBUNISTRING_VERSION_CMP([$1])]) ]) +dnl gl_LIBUNISTRING_MODULE_WITH_VARIABLE([VERSION], [Module]) +dnl is like gl_LIBUNISTRING_MODULE([VERSION], [Module]), except that it also +dnl defines an AC_SUBSTed autoconf variable GNULIB_$MODULE_DLL_VARIABLE. +dnl What's the expansion of this autoconf variable? +dnl - When building libunistring, it expands to LIBUNISTRING_DLL_VARIABLE. +dnl (This is necessary because this token must be present in the .h files +dnl when the .h files get installed.) +dnl - When building gnulib or application code it expands to +dnl - LIBUNISTRING_DLL_VARIABLE by default, +dnl - empty if the automake conditional LIBUNISTRING_COMPILE_$MODULE +dnl evaluates to true. +dnl (This is necessary because when the conditional evaluates to false, +dnl the application code expects to use the declared variable from the +dnl installed libunistring; it's in this case that the +dnl LIBUNISTRING_DLL_VARIABLE macro from the installed +dnl <unistring/woe32dll.h> must be used.) +dnl +dnl This macro invocation must not occur in macros that are AC_REQUIREd. + +AC_DEFUN([gl_LIBUNISTRING_MODULE_WITH_VARIABLE], +[ + gl_LIBUNISTRING_MODULE([$1], [$2]) + m4_ifndef([gl_IN_LIBUNISTRING], + [if test -z "${AS_TR_CPP([LIBUNISTRING_COMPILE_$2])_TRUE}"; then + GL_MODULE_INDICATOR_PREFIX[]_GNULIB_[]AS_TR_CPP([$2_DLL_VARIABLE])= + fi + ]) +]) + dnl gl_LIBUNISTRING_LIBHEADER([VERSION], [HeaderFile]) dnl Declares that HeaderFile should be created, unless we are linking dnl with libunistring and its version is >= the given VERSION. @@ -95,6 +126,26 @@ changequote([,]) LIBUNISTRING_VERSION_MINOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_minor"` LIBUNISTRING_VERSION_SUBMINOR=`echo "$LIBUNISTRING_VERSION" | sed -n -e "$gl_libunistring_sed_extract_subminor"` fi + + dnl Determine whether <unistring/woe32dll.h> from an installed libunistring + dnl is available. + m4_ifdef([gl_IN_LIBUNISTRING], + [dnl In libunistring, all .h files that declare variables need to + dnl #include <unistring/woe32dll.h>. This references the file + dnl unistring/woe32dll.h in libunistring. + HAVE_UNISTRING_WOE32DLL_H=1 + ], + [dnl In gnulib or in applications, we need a #include <unistring/woe32dll.h> + dnl if and only if an installed libunistring is available. + if test "$HAVE_LIBUNISTRING" = yes; then + AC_CHECK_HEADERS([unistring/woe32dll.h], + [HAVE_UNISTRING_WOE32DLL_H=1], + [HAVE_UNISTRING_WOE32DLL_H=0]) + else + HAVE_UNISTRING_WOE32DLL_H=0 + fi + ]) + AC_SUBST([HAVE_UNISTRING_WOE32DLL_H]) ]) dnl gl_LIBUNISTRING_VERSION_CMP([VERSION]) diff --git a/gnulib-m4/limits-h.m4 b/gnulib-m4/limits-h.m4 index 5d5a5bf5..18253283 100644 --- a/gnulib-m4/limits-h.m4 +++ b/gnulib-m4/limits-h.m4 @@ -1,6 +1,6 @@ dnl Check whether limits.h has needed features. -dnl Copyright 2016-2022 Free Software Foundation, Inc. +dnl Copyright 2016-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -23,14 +23,27 @@ AC_DEFUN_ONCE([gl_LIMITS_H], int wb = WORD_BIT; int ullw = ULLONG_WIDTH; int bw = BOOL_WIDTH; + int bm = BOOL_MAX; + int mblm = MB_LEN_MAX; ]])], [gl_cv_header_limits_width=yes], [gl_cv_header_limits_width=no])]) - if test "$gl_cv_header_limits_width" = yes; then - GL_GENERATE_LIMITS_H=false - else - GL_GENERATE_LIMITS_H=true - fi + GL_GENERATE_LIMITS_H=true + AS_IF([test "$gl_cv_header_limits_width" = yes], + [AC_CACHE_CHECK([whether limits.h has SSIZE_MAX], + [gl_cv_header_limits_ssize_max], + [AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#include <limits.h> + #ifndef SSIZE_MAX + #error "SSIZE_MAX is not defined" + #endif + ]])], + [gl_cv_header_limits_ssize_max=yes], + [gl_cv_header_limits_ssize_max=no])]) + if test "$gl_cv_header_limits_ssize_max" = yes; then + GL_GENERATE_LIMITS_H=false + fi]) ]) dnl Unconditionally enables the replacement of <limits.h>. diff --git a/gnulib-m4/localcharset.m4 b/gnulib-m4/localcharset.m4 index f5dbbd4f..abf07dc3 100644 --- a/gnulib-m4/localcharset.m4 +++ b/gnulib-m4/localcharset.m4 @@ -1,5 +1,5 @@ # localcharset.m4 serial 8 -dnl Copyright (C) 2002, 2004, 2006, 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2002, 2004, 2006, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/locale-ar.m4 b/gnulib-m4/locale-ar.m4 index 574311da..e7d23f44 100644 --- a/gnulib-m4/locale-ar.m4 +++ b/gnulib-m4/locale-ar.m4 @@ -1,5 +1,5 @@ -# locale-ar.m4 serial 9 -dnl Copyright (C) 2003, 2005-2022 Free Software Foundation, Inc. +# locale-ar.m4 serial 11 +dnl Copyright (C) 2003, 2005-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -7,7 +7,7 @@ dnl with or without modifications, as long as this notice is preserved. dnl From Ben Pfaff, based on locale-fr.m4 by Bruno Haible. dnl Determine the name of an Arabic locale with traditional encoding. -AC_DEFUN([gt_LOCALE_AR], +AC_DEFUN_ONCE([gt_LOCALE_AR], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AM_LANGINFO_CODESET]) @@ -69,7 +69,7 @@ int main () { # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252", # "ja" as "Japanese" or "Japanese_Japan.932", # and similar. - mingw*) + mingw* | windows*) # Note that on native Windows, the Arabic locale is # "Arabic_Saudi Arabia.1256", and CP1256 is very different from # ISO-8859-6, so we cannot use it here. @@ -100,5 +100,11 @@ int main () { rm -fr conftest* ]) LOCALE_AR=$gt_cv_locale_ar + case $LOCALE_AR in #( + '' | *[[[:space:]\"\$\'*@<:@]]*) + dnl This locale name might cause trouble with sh or make. + AC_MSG_WARN([invalid locale "$LOCALE_AR"; assuming "none"]) + LOCALE_AR=none;; + esac AC_SUBST([LOCALE_AR]) ]) diff --git a/gnulib-m4/locale-fr.m4 b/gnulib-m4/locale-fr.m4 index 3753891f..c9528562 100644 --- a/gnulib-m4/locale-fr.m4 +++ b/gnulib-m4/locale-fr.m4 @@ -1,5 +1,5 @@ -# locale-fr.m4 serial 20 -dnl Copyright (C) 2003, 2005-2022 Free Software Foundation, Inc. +# locale-fr.m4 serial 23 +dnl Copyright (C) 2003, 2005-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -7,7 +7,7 @@ dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Determine the name of a french locale with traditional encoding. -AC_DEFUN([gt_LOCALE_FR], +AC_DEFUN_ONCE([gt_LOCALE_FR], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AM_LANGINFO_CODESET]) @@ -86,7 +86,7 @@ int main () { # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252", # "ja" as "Japanese" or "Japanese_Japan.932", # and similar. - mingw*) + mingw* | windows*) # Test for the native Windows locale name. if (LC_ALL=French_France.1252 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_fr=French_France.1252 @@ -133,15 +133,31 @@ int main () { rm -fr conftest* ]) LOCALE_FR=$gt_cv_locale_fr + case $LOCALE_FR in #( + '' | *[[[:space:]\"\$\'*@<:@]]*) + dnl This locale name might cause trouble with sh or make. + AC_MSG_WARN([invalid locale "$LOCALE_FR"; assuming "none"]) + LOCALE_FR=none;; + esac AC_SUBST([LOCALE_FR]) ]) dnl Determine the name of a french locale with UTF-8 encoding. -AC_DEFUN([gt_LOCALE_FR_UTF8], +AC_DEFUN_ONCE([gt_LOCALE_FR_UTF8], [ + AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AM_LANGINFO_CODESET]) AC_CACHE_CHECK([for a french Unicode locale], [gt_cv_locale_fr_utf8], [ - AC_LANG_CONFTEST([AC_LANG_SOURCE([[ + case "$host_os" in + *-musl* | midipix*) + dnl On musl libc, all kinds of ll_CC.UTF-8 locales exist, even without + dnl any locale file on disk. But they are effectively equivalent to the + dnl C.UTF-8 locale, except for locale categories (such as LC_MESSSAGES) + dnl for which localizations (.mo files) have been installed. + gt_cv_locale_fr_utf8=fr_FR.UTF-8 + ;; + *) + AC_LANG_CONFTEST([AC_LANG_SOURCE([[ #include <locale.h> #include <time.h> #if HAVE_LANGINFO_CODESET @@ -203,51 +219,82 @@ int main () { #endif return 0; } - ]])]) - if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then - case "$host_os" in - # Handle native Windows specially, because there setlocale() interprets - # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256", - # "fr" or "fra" as "French" or "French_France.1252", - # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252", - # "ja" as "Japanese" or "Japanese_Japan.932", - # and similar. - mingw*) - # Test for the hypothetical native Windows locale name. - if (LC_ALL=French_France.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then - gt_cv_locale_fr_utf8=French_France.65001 - else - # None found. - gt_cv_locale_fr_utf8=none - fi - ;; - *) - # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because - # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the - # configure script would override the LC_ALL setting. Likewise for - # LC_CTYPE, which is also set at the beginning of the configure script. - # Test for the usual locale name. - if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then - gt_cv_locale_fr_utf8=fr_FR - else - # Test for the locale name with explicit encoding suffix. - if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then - gt_cv_locale_fr_utf8=fr_FR.UTF-8 - else - # Test for the Solaris 7 locale name. - if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then - gt_cv_locale_fr_utf8=fr.UTF-8 + ]])]) + if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then + case "$host_os" in + # Handle native Windows specially, because there setlocale() interprets + # "ar" as "Arabic" or "Arabic_Saudi Arabia.1256", + # "fr" or "fra" as "French" or "French_France.1252", + # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252", + # "ja" as "Japanese" or "Japanese_Japan.932", + # and similar. + mingw* | windows*) + # Test for the hypothetical native Windows locale name. + if (LC_ALL=French_France.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_fr_utf8=French_France.65001 else # None found. gt_cv_locale_fr_utf8=none fi - fi - fi - ;; - esac - fi - rm -fr conftest* + ;; + *) + # Setting LC_ALL is not enough. Need to set LC_TIME to empty, because + # otherwise on Mac OS X 10.3.5 the LC_TIME=C from the beginning of the + # configure script would override the LC_ALL setting. Likewise for + # LC_CTYPE, which is also set at the beginning of the configure script. + # Test for the usual locale name. + if (LC_ALL=fr_FR LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_fr_utf8=fr_FR + else + # Test for the locale name with explicit encoding suffix. + if (LC_ALL=fr_FR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_fr_utf8=fr_FR.UTF-8 + else + # Test for the Solaris 7 locale name. + if (LC_ALL=fr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then + gt_cv_locale_fr_utf8=fr.UTF-8 + else + # None found. + gt_cv_locale_fr_utf8=none + fi + fi + fi + ;; + esac + fi + rm -fr conftest* + ;; + esac ]) LOCALE_FR_UTF8=$gt_cv_locale_fr_utf8 + case $LOCALE_FR_UTF8 in #( + '' | *[[[:space:]\"\$\'*@<:@]]*) + dnl This locale name might cause trouble with sh or make. + AC_MSG_WARN([invalid locale "$LOCALE_FR_UTF8"; assuming "none"]) + LOCALE_FR_UTF8=none;; + esac AC_SUBST([LOCALE_FR_UTF8]) + + dnl Users of $LOCALE_FR_UTF8 need to know which of the locale categories they + dnl can rely on. + case "$host_os" in + *-musl* | midipix*) + dnl On musl libc, locale categories other than LC_CTYPE and LC_MESSAGES + dnl are effectively unimplemented. + LC_COLLATE_IMPLEMENTED=false + LC_NUMERIC_IMPLEMENTED=false + LC_TIME_IMPLEMENTED=false + LC_MONETARY_IMPLEMENTED=false + ;; + *) + LC_COLLATE_IMPLEMENTED=true + LC_NUMERIC_IMPLEMENTED=true + LC_TIME_IMPLEMENTED=true + LC_MONETARY_IMPLEMENTED=true + ;; + esac + AC_SUBST([LC_COLLATE_IMPLEMENTED]) + AC_SUBST([LC_NUMERIC_IMPLEMENTED]) + AC_SUBST([LC_TIME_IMPLEMENTED]) + AC_SUBST([LC_MONETARY_IMPLEMENTED]) ]) diff --git a/gnulib-m4/locale-ja.m4 b/gnulib-m4/locale-ja.m4 index 73a5d1ae..71a9863b 100644 --- a/gnulib-m4/locale-ja.m4 +++ b/gnulib-m4/locale-ja.m4 @@ -1,5 +1,5 @@ -# locale-ja.m4 serial 15 -dnl Copyright (C) 2003, 2005-2022 Free Software Foundation, Inc. +# locale-ja.m4 serial 18 +dnl Copyright (C) 2003, 2005-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -7,7 +7,7 @@ dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Determine the name of a japanese locale with EUC-JP encoding. -AC_DEFUN([gt_LOCALE_JA], +AC_DEFUN_ONCE([gt_LOCALE_JA], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AM_LANGINFO_CODESET]) @@ -90,7 +90,7 @@ int main () # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252", # "ja" as "Japanese" or "Japanese_Japan.932", # and similar. - mingw*) + mingw* | windows*) # Note that on native Windows, the Japanese locale is # Japanese_Japan.932, and CP932 is very different from EUC-JP, so we # cannot use it here. @@ -139,5 +139,11 @@ int main () rm -fr conftest* ]) LOCALE_JA=$gt_cv_locale_ja + case $LOCALE_JA in #( + '' | *[[[:space:]\"\$\'*@<:@]]*) + dnl This locale name might cause trouble with sh or make. + AC_MSG_WARN([invalid locale "$LOCALE_JA"; assuming "none"]) + LOCALE_JA=none;; + esac AC_SUBST([LOCALE_JA]) ]) diff --git a/gnulib-m4/locale-tr.m4 b/gnulib-m4/locale-tr.m4 index 4b99e67d..b68e429a 100644 --- a/gnulib-m4/locale-tr.m4 +++ b/gnulib-m4/locale-tr.m4 @@ -1,5 +1,5 @@ -# locale-tr.m4 serial 13 -dnl Copyright (C) 2003, 2005-2022 Free Software Foundation, Inc. +# locale-tr.m4 serial 15 +dnl Copyright (C) 2003, 2005-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -7,7 +7,7 @@ dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Determine the name of a turkish locale with UTF-8 encoding. -AC_DEFUN([gt_LOCALE_TR_UTF8], +AC_DEFUN_ONCE([gt_LOCALE_TR_UTF8], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AM_LANGINFO_CODESET]) @@ -83,7 +83,7 @@ int main () { # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252", # "ja" as "Japanese" or "Japanese_Japan.932", # and similar. - mingw*) + mingw* | windows*) # Test for the hypothetical native Windows locale name. if (LC_ALL=Turkish_Turkey.65001 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_tr_utf8=Turkish_Turkey.65001 @@ -122,5 +122,11 @@ int main () { rm -fr conftest* ]) LOCALE_TR_UTF8=$gt_cv_locale_tr_utf8 + case $LOCALE_TR_UTF8 in #( + '' | *[[[:space:]\"\$\'*@<:@]]*) + dnl This locale name might cause trouble with sh or make. + AC_MSG_WARN([invalid locale "$LOCALE_TR_UTF8"; assuming "none"]) + LOCALE_TR_UTF8=none;; + esac AC_SUBST([LOCALE_TR_UTF8]) ]) diff --git a/gnulib-m4/locale-zh.m4 b/gnulib-m4/locale-zh.m4 index c997971f..f1a58c63 100644 --- a/gnulib-m4/locale-zh.m4 +++ b/gnulib-m4/locale-zh.m4 @@ -1,5 +1,5 @@ -# locale-zh.m4 serial 15 -dnl Copyright (C) 2003, 2005-2022 Free Software Foundation, Inc. +# locale-zh.m4 serial 18 +dnl Copyright (C) 2003, 2005-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -7,7 +7,7 @@ dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. dnl Determine the name of a chinese locale with GB18030 encoding. -AC_DEFUN([gt_LOCALE_ZH_CN], +AC_DEFUN_ONCE([gt_LOCALE_ZH_CN], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([AM_LANGINFO_CODESET]) @@ -91,7 +91,7 @@ int main () # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252", # "ja" as "Japanese" or "Japanese_Japan.932", # and similar. - mingw*) + mingw* | windows*) # Test for the hypothetical native Windows locale name. if (LC_ALL=Chinese_China.54936 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then gt_cv_locale_zh_CN=Chinese_China.54936 @@ -133,5 +133,11 @@ int main () rm -fr conftest* ]) LOCALE_ZH_CN=$gt_cv_locale_zh_CN + case $LOCALE_ZH_CN in #( + '' | *[[[:space:]\"\$\'*@<:@]]*) + dnl This locale name might cause trouble with sh or make. + AC_MSG_WARN([invalid locale "$LOCALE_ZH_CN"; assuming "none"]) + LOCALE_ZH_CN=none;; + esac AC_SUBST([LOCALE_ZH_CN]) ]) diff --git a/gnulib-m4/locale_h.m4 b/gnulib-m4/locale_h.m4 index ca5d0d0f..c47e3f6f 100644 --- a/gnulib-m4/locale_h.m4 +++ b/gnulib-m4/locale_h.m4 @@ -1,5 +1,5 @@ -# locale_h.m4 serial 28 -dnl Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc. +# locale_h.m4 serial 31 +dnl Copyright (C) 2007, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -59,7 +59,9 @@ AC_DEFUN_ONCE([gl_LOCALE_H], dnl On native Windows with MSVC, merely define these member names as macros. dnl This avoids trouble in C++ mode. case "$host_os" in - mingw*) + windows*-msvc*) + ;; + mingw* | windows*) AC_EGREP_CPP([Special], [ #ifdef _MSC_VER Special @@ -152,7 +154,7 @@ AC_DEFUN([gl_LOCALE_H_REQUIRE_DEFAULTS], gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETLOCALE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETLOCALE_NULL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUPLOCALE]) - gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOCALENAME]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOCALENAME_UNSAFE]) ]) m4_require(GL_MODULE_INDICATOR_PREFIX[_LOCALE_H_MODULE_INDICATOR_DEFAULTS]) AC_REQUIRE([gl_LOCALE_H_DEFAULTS]) diff --git a/gnulib-m4/localename.m4 b/gnulib-m4/localename.m4 index e0cf8c5c..d91fd5de 100644 --- a/gnulib-m4/localename.m4 +++ b/gnulib-m4/localename.m4 @@ -1,10 +1,10 @@ -# localename.m4 serial 8 -dnl Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc. +# localename.m4 serial 12 +dnl Copyright (C) 2007, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. -AC_DEFUN([gl_LOCALENAME], +AC_DEFUN([gl_LOCALENAME_UNSAFE], [ AC_REQUIRE([gl_LOCALE_H_DEFAULTS]) AC_REQUIRE([gl_LOCALE_T]) @@ -13,25 +13,39 @@ AC_DEFUN([gl_LOCALENAME], AC_REQUIRE([gt_INTL_MACOSX]) AC_CHECK_HEADERS_ONCE([langinfo.h]) if test $HAVE_LOCALE_T = 1; then - AC_CHECK_FUNCS_ONCE([newlocale duplocale freelocale]) + gl_CHECK_FUNCS_ANDROID([newlocale], [[#include <locale.h>]]) + gl_CHECK_FUNCS_ANDROID([duplocale], [[#include <locale.h>]]) + gl_CHECK_FUNCS_ANDROID([freelocale], [[#include <locale.h>]]) gl_func_newlocale="$ac_cv_func_newlocale" gl_func_duplocale="$ac_cv_func_duplocale" gl_func_freelocale="$ac_cv_func_freelocale" else dnl In 2019, some versions of z/OS lack the locale_t type and have broken dnl newlocale, duplocale, freelocale functions. + gl_cv_onwards_func_newlocale='future OS version' + gl_cv_onwards_func_duplocale='future OS version' + gl_cv_onwards_func_freelocale='future OS version' gl_func_newlocale=no gl_func_duplocale=no gl_func_freelocale=no fi if test $gl_func_newlocale != yes; then HAVE_NEWLOCALE=0 + case "$gl_cv_onwards_func_newlocale" in + future*) REPLACE_NEWLOCALE=1 ;; + esac fi if test $gl_func_duplocale != yes; then HAVE_DUPLOCALE=0 + case "$gl_cv_onwards_func_duplocale" in + future*) REPLACE_DUPLOCALE=1 ;; + esac fi if test $gl_func_freelocale != yes; then HAVE_FREELOCALE=0 + case "$gl_cv_onwards_func_freelocale" in + future*) REPLACE_FREELOCALE=1 ;; + esac fi if test $gt_localename_enhances_locale_funcs = yes; then REPLACE_NEWLOCALE=1 @@ -39,3 +53,9 @@ AC_DEFUN([gl_LOCALENAME], REPLACE_FREELOCALE=1 fi ]) + +AC_DEFUN([gl_LOCALENAME_UNSAFE_LIMITED], +[ + AC_REQUIRE([gt_LC_MESSAGES]) + AC_REQUIRE([gt_INTL_THREAD_LOCALE_NAME]) +]) diff --git a/gnulib-m4/lock.m4 b/gnulib-m4/lock.m4 index c4cbf07b..2ca3bf2f 100644 --- a/gnulib-m4/lock.m4 +++ b/gnulib-m4/lock.m4 @@ -1,5 +1,5 @@ # lock.m4 serial 14 -dnl Copyright (C) 2005-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2005-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/lstat.m4 b/gnulib-m4/lstat.m4 index d987060b..48cc8653 100644 --- a/gnulib-m4/lstat.m4 +++ b/gnulib-m4/lstat.m4 @@ -1,6 +1,6 @@ -# serial 33 +# serial 36 -# Copyright (C) 1997-2001, 2003-2022 Free Software Foundation, Inc. +# Copyright (C) 1997-2001, 2003-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -18,7 +18,7 @@ AC_DEFUN([gl_FUNC_LSTAT], if test $ac_cv_func_lstat = yes; then AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK]) case $host_os,$gl_cv_func_lstat_dereferences_slashed_symlink in - solaris* | *no) + darwin* | solaris* | *no) REPLACE_LSTAT=1 ;; esac @@ -56,10 +56,13 @@ AC_DEFUN([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK], linux-* | linux) # Guess yes on Linux systems. gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;; + midipix*) + # Guess yes on systems that emulate the Linux system calls. + gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;; *-gnu* | gnu*) # Guess yes on glibc systems. gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;; - mingw*) + mingw* | windows*) # Guess no on native Windows. gl_cv_func_lstat_dereferences_slashed_symlink="guessing no" ;; *) diff --git a/gnulib-m4/malloc.m4 b/gnulib-m4/malloc.m4 index 6b76c1e6..635d6726 100644 --- a/gnulib-m4/malloc.m4 +++ b/gnulib-m4/malloc.m4 @@ -1,5 +1,5 @@ -# malloc.m4 serial 28 -dnl Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc. +# malloc.m4 serial 31 +dnl Copyright (C) 2007, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -16,7 +16,8 @@ AC_DEFUN([_AC_FUNC_MALLOC_IF], [[#include <stdlib.h> ]], [[void *p = malloc (0); - int result = !p; + void * volatile vp = p; + int result = !vp; free (p); return result;]]) ], @@ -25,8 +26,8 @@ AC_DEFUN([_AC_FUNC_MALLOC_IF], [case "$host_os" in # Guess yes on platforms where we know the result. *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \ - | gnu* | *-musl* | midnightbsd* \ - | hpux* | solaris* | cygwin* | mingw* | msys* ) + | gnu* | *-musl* | midipix* | midnightbsd* \ + | hpux* | solaris* | cygwin* | mingw* | windows* | msys* ) ac_cv_func_malloc_0_nonnull="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. *) ac_cv_func_malloc_0_nonnull="$gl_cross_guess_normal" ;; @@ -128,7 +129,7 @@ AC_DEFUN([gl_CHECK_MALLOC_POSIX], dnl except on those platforms where we have seen 'test-malloc-gnu', dnl 'test-realloc-gnu', 'test-calloc-gnu' fail. case "$host_os" in - mingw*) + mingw* | windows*) gl_cv_func_malloc_posix=no ;; irix* | solaris*) dnl On IRIX 6.5, the three functions return NULL with errno unset diff --git a/gnulib-m4/malloca.m4 b/gnulib-m4/malloca.m4 index 77eb96a0..77e15959 100644 --- a/gnulib-m4/malloca.m4 +++ b/gnulib-m4/malloca.m4 @@ -1,5 +1,5 @@ # malloca.m4 serial 2 -dnl Copyright (C) 2003-2004, 2006-2007, 2009-2022 Free Software Foundation, +dnl Copyright (C) 2003-2004, 2006-2007, 2009-2024 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, diff --git a/gnulib-m4/math_h.m4 b/gnulib-m4/math_h.m4 index a08526a7..7ba3c048 100644 --- a/gnulib-m4/math_h.m4 +++ b/gnulib-m4/math_h.m4 @@ -1,5 +1,5 @@ -# math_h.m4 serial 125 -dnl Copyright (C) 2007-2022 Free Software Foundation, Inc. +# math_h.m4 serial 126 +dnl Copyright (C) 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -50,7 +50,7 @@ AC_DEFUN_ONCE([gl_MATH_H], modf modff modfl powf remainder remainderf remainderl rint rintf rintl round roundf roundl sinf sinl sinhf sqrtf sqrtl - tanf tanl tanhf trunc truncf truncl]) + tanf tanl tanhf totalorder totalorderf totalorderl trunc truncf truncl]) ]) # gl_MATH_MODULE_INDICATOR([modulename]) @@ -125,6 +125,7 @@ AC_DEFUN([gl_MATH_H_REQUIRE_DEFAULTS], gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNANF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNAND]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNANL]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LDEXP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LDEXPF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LDEXPL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG]) @@ -164,6 +165,9 @@ AC_DEFUN([gl_MATH_H_REQUIRE_DEFAULTS], gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TANF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TANL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TANHF]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TOTALORDER]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TOTALORDERF]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TOTALORDERL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNC]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNCF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNCL]) @@ -242,6 +246,9 @@ AC_DEFUN([gl_MATH_H_DEFAULTS], HAVE_TANF=1; AC_SUBST([HAVE_TANF]) HAVE_TANL=1; AC_SUBST([HAVE_TANL]) HAVE_TANHF=1; AC_SUBST([HAVE_TANHF]) + HAVE_TOTALORDER=1; AC_SUBST([HAVE_TOTALORDER]) + HAVE_TOTALORDERF=1; AC_SUBST([HAVE_TOTALORDERF]) + HAVE_TOTALORDERL=1; AC_SUBST([HAVE_TOTALORDERL]) HAVE_DECL_ACOSL=1; AC_SUBST([HAVE_DECL_ACOSL]) HAVE_DECL_ASINL=1; AC_SUBST([HAVE_DECL_ASINL]) HAVE_DECL_ATANL=1; AC_SUBST([HAVE_DECL_ATANL]) @@ -319,6 +326,7 @@ AC_DEFUN([gl_MATH_H_DEFAULTS], REPLACE_ISFINITE=0; AC_SUBST([REPLACE_ISFINITE]) REPLACE_ISINF=0; AC_SUBST([REPLACE_ISINF]) REPLACE_ISNAN=0; AC_SUBST([REPLACE_ISNAN]) + REPLACE_LDEXP=0; AC_SUBST([REPLACE_LDEXP]) REPLACE_LDEXPL=0; AC_SUBST([REPLACE_LDEXPL]) REPLACE_LOG=0; AC_SUBST([REPLACE_LOG]) REPLACE_LOGF=0; AC_SUBST([REPLACE_LOGF]) @@ -354,6 +362,9 @@ AC_DEFUN([gl_MATH_H_DEFAULTS], REPLACE_SQRTL=0; AC_SUBST([REPLACE_SQRTL]) REPLACE_TANF=0; AC_SUBST([REPLACE_TANF]) REPLACE_TANHF=0; AC_SUBST([REPLACE_TANHF]) + REPLACE_TOTALORDER=0; AC_SUBST([REPLACE_TOTALORDER]) + REPLACE_TOTALORDERF=0; AC_SUBST([REPLACE_TOTALORDERF]) + REPLACE_TOTALORDERL=0; AC_SUBST([REPLACE_TOTALORDERL]) REPLACE_TRUNC=0; AC_SUBST([REPLACE_TRUNC]) REPLACE_TRUNCF=0; AC_SUBST([REPLACE_TRUNCF]) REPLACE_TRUNCL=0; AC_SUBST([REPLACE_TRUNCL]) @@ -364,7 +375,7 @@ AC_DEFUN([gl_MATH_H_DEFAULTS], # Sets variable HAVE_SAME_LONG_DOUBLE_AS_DOUBLE to 0 or 1, and defines # HAVE_SAME_LONG_DOUBLE_AS_DOUBLE accordingly. # The currently known platforms where this is the case are: -# Linux/HPPA, Minix 3.1.8, AIX 5, AIX 6 and 7 with xlc, MSVC 9. +# Linux/HPPA, NetBSD/sparc32, Minix 3.1.8, AIX 5, AIX 6 and 7 with xlc, MSVC 9. AC_DEFUN([gl_LONG_DOUBLE_VS_DOUBLE], [ AC_CACHE_CHECK([whether long double and double are the same], diff --git a/gnulib-m4/mbchar.m4 b/gnulib-m4/mbchar.m4 index 22673922..471e8c45 100644 --- a/gnulib-m4/mbchar.m4 +++ b/gnulib-m4/mbchar.m4 @@ -1,5 +1,5 @@ # mbchar.m4 serial 9 -dnl Copyright (C) 2005-2007, 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2005-2007, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/mbiter.m4 b/gnulib-m4/mbiter.m4 index 7815edb0..2f7e7885 100644 --- a/gnulib-m4/mbiter.m4 +++ b/gnulib-m4/mbiter.m4 @@ -1,5 +1,5 @@ # mbiter.m4 serial 7 -dnl Copyright (C) 2005, 2008-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2005, 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/mbrtoc32.m4 b/gnulib-m4/mbrtoc32.m4 new file mode 100644 index 00000000..c1eb126a --- /dev/null +++ b/gnulib-m4/mbrtoc32.m4 @@ -0,0 +1,266 @@ +# mbrtoc32.m4 serial 18 +dnl Copyright (C) 2014-2024 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_FUNC_MBRTOC32], +[ + AC_REQUIRE([gl_UCHAR_H_DEFAULTS]) + + AC_REQUIRE([AC_TYPE_MBSTATE_T]) + dnl Determine REPLACE_MBSTATE_T, from which GNULIB_defined_mbstate_t is + dnl determined. It describes how our overridden mbrtowc is implemented. + dnl We then implement mbrtoc32 accordingly. + AC_REQUIRE([gl_MBSTATE_T_BROKEN]) + + AC_REQUIRE([gl_TYPE_CHAR32_T]) + AC_REQUIRE([gl_MBRTOC32_SANITYCHECK]) + + AC_REQUIRE([gl_CHECK_FUNC_MBRTOC32]) + if test $gl_cv_func_mbrtoc32 = no; then + HAVE_MBRTOC32=0 + else + if test $GNULIBHEADERS_OVERRIDE_CHAR32_T = 1 || test $REPLACE_MBSTATE_T = 1; then + REPLACE_MBRTOC32=1 + else + gl_MBRTOC32_EMPTY_INPUT + gl_MBRTOC32_C_LOCALE + case "$gl_cv_func_mbrtoc32_empty_input" in + *yes) ;; + *) AC_DEFINE([MBRTOC32_EMPTY_INPUT_BUG], [1], + [Define if the mbrtoc32 function does not return (size_t) -2 for empty input.]) + REPLACE_MBRTOC32=1 + ;; + esac + case "$gl_cv_func_mbrtoc32_C_locale_sans_EILSEQ" in + *yes) ;; + *) AC_DEFINE([MBRTOC32_IN_C_LOCALE_MAYBE_EILSEQ], [1], + [Define if the mbrtoc32 function may signal encoding errors in the C locale.]) + REPLACE_MBRTOC32=1 + ;; + esac + fi + if test $HAVE_WORKING_MBRTOC32 = 0; then + REPLACE_MBRTOC32=1 + fi + fi +]) + +AC_DEFUN([gl_CHECK_FUNC_MBRTOC32], +[ + dnl Cf. gl_CHECK_FUNCS_ANDROID + AC_CHECK_DECL([mbrtoc32], , , + [[#ifdef __HAIKU__ + #include <stdint.h> + #endif + #include <uchar.h> + ]]) + if test $ac_cv_have_decl_mbrtoc32 = yes; then + dnl We can't use AC_CHECK_FUNC here, because mbrtoc32() is defined as a + dnl static inline function on Haiku 2020. + AC_CACHE_CHECK([for mbrtoc32], [gl_cv_func_mbrtoc32], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include <stdlib.h> + #ifdef __HAIKU__ + #include <stdint.h> + #endif + #include <uchar.h> + ]], + [[char32_t c; + return mbrtoc32 (&c, "", 1, NULL) == 0; + ]]) + ], + [gl_cv_func_mbrtoc32=yes], + [gl_cv_func_mbrtoc32=no]) + ]) + else + gl_cv_func_mbrtoc32=no + fi +]) + +dnl Test whether mbrtoc32 returns the correct value on empty input. + +AC_DEFUN([gl_MBRTOC32_EMPTY_INPUT], +[ + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CACHE_CHECK([whether mbrtoc32 works on empty input], + [gl_cv_func_mbrtoc32_empty_input], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ + #ifdef __HAIKU__ + #include <stdint.h> + #endif + #include <uchar.h> + static char32_t wc; + static mbstate_t mbs; + int + main (void) + { + return mbrtoc32 (&wc, "", 0, &mbs) != (size_t) -2; + }]])], + [gl_cv_func_mbrtoc32_empty_input=yes], + [gl_cv_func_mbrtoc32_empty_input=no], + [case "$host_os" in + # Guess no on glibc systems. + *-gnu* | gnu*) gl_cv_func_mbrtoc32_empty_input="guessing no" ;; + # Guess no on Android. + linux*-android*) gl_cv_func_mbrtoc32_empty_input="guessing no" ;; + # Guess no on native Windows. + mingw* | windows*) gl_cv_func_mbrtoc32_empty_input="guessing no" ;; + *) gl_cv_func_mbrtoc32_empty_input="guessing yes" ;; + esac + ]) + ]) +]) + +dnl <https://pubs.opengroup.org/onlinepubs/9699919799/functions/mbrtowc.html> +dnl POSIX:2018 says regarding mbrtowc: "In the POSIX locale an [EILSEQ] error +dnl cannot occur since all byte values are valid characters." It is reasonable +dnl to expect mbrtoc32 to behave in the same way. + +AC_DEFUN([gl_MBRTOC32_C_LOCALE], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CACHE_CHECK([whether the C locale is free of encoding errors], + [gl_cv_func_mbrtoc32_C_locale_sans_EILSEQ], + [AC_RUN_IFELSE( + [AC_LANG_PROGRAM( + [[#include <limits.h> + #include <locale.h> + #ifdef __HAIKU__ + #include <stdint.h> + #endif + #include <uchar.h> + ]], [[ + int i; + char *locale = setlocale (LC_ALL, "C"); + if (! locale) + return 2; + for (i = CHAR_MIN; i <= CHAR_MAX; i++) + { + char c = i; + char32_t wc; + mbstate_t mbs = { 0, }; + size_t ss = mbrtoc32 (&wc, &c, 1, &mbs); + if (1 < ss) + return 3; + } + return 0; + ]])], + [gl_cv_func_mbrtoc32_C_locale_sans_EILSEQ=yes], + [gl_cv_func_mbrtoc32_C_locale_sans_EILSEQ=no], + [case "$host_os" in + # Guess yes on native Windows. + mingw* | windows*) gl_cv_func_mbrtoc32_C_locale_sans_EILSEQ="guessing yes" ;; + *) gl_cv_func_mbrtoc32_C_locale_sans_EILSEQ="$gl_cross_guess_normal" ;; + esac + ]) + ]) +]) + +dnl Test whether mbrtoc32 works not worse than mbrtowc. +dnl Result is HAVE_WORKING_MBRTOC32. + +AC_DEFUN([gl_MBRTOC32_SANITYCHECK], +[ + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([gl_TYPE_CHAR32_T]) + AC_REQUIRE([gl_CHECK_FUNC_MBRTOC32]) + AC_REQUIRE([gt_LOCALE_FR]) + AC_REQUIRE([gt_LOCALE_ZH_CN]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + if test $GNULIBHEADERS_OVERRIDE_CHAR32_T = 1 || test $gl_cv_func_mbrtoc32 = no; then + HAVE_WORKING_MBRTOC32=0 + else + AC_CACHE_CHECK([whether mbrtoc32 works as well as mbrtowc], + [gl_cv_func_mbrtoc32_sanitycheck], + [ + dnl Initial guess, used when cross-compiling or when no suitable locale + dnl is present. +changequote(,)dnl + case "$host_os" in + # Guess no on FreeBSD, Solaris, native Windows. + freebsd* | midnightbsd* | solaris* | mingw* | windows*) + gl_cv_func_mbrtoc32_sanitycheck="guessing no" + ;; + # Guess yes otherwise. + *) + gl_cv_func_mbrtoc32_sanitycheck="guessing yes" + ;; + esac +changequote([,])dnl + if test $LOCALE_FR != none || test $LOCALE_ZH_CN != none; then + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include <locale.h> +#include <stdlib.h> +#include <string.h> +#include <wchar.h> +#ifdef __HAIKU__ + #include <stdint.h> +#endif +#include <uchar.h> +int main () +{ + int result = 0; + /* This fails on native Windows: + mbrtoc32 returns (size_t)-1. + mbrtowc returns 1 (correct). */ + if (strcmp ("$LOCALE_FR", "none") != 0 + && setlocale (LC_ALL, "$LOCALE_FR") != NULL) + { + mbstate_t state; + wchar_t wc = (wchar_t) 0xBADFACE; + memset (&state, '\0', sizeof (mbstate_t)); + if (mbrtowc (&wc, "\374", 1, &state) == 1) + { + char32_t c32 = (wchar_t) 0xBADFACE; + memset (&state, '\0', sizeof (mbstate_t)); + if (mbrtoc32 (&c32, "\374", 1, &state) != 1) + result |= 1; + } + } + /* This fails on FreeBSD 13.0 and Solaris 11.4: + mbrtoc32 returns (size_t)-2 or (size_t)-1. + mbrtowc returns 4 (correct). */ + if (strcmp ("$LOCALE_ZH_CN", "none") != 0 + && setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) + { + mbstate_t state; + wchar_t wc = (wchar_t) 0xBADFACE; + memset (&state, '\0', sizeof (mbstate_t)); + if (mbrtowc (&wc, "\224\071\375\067", 4, &state) == 4) + { + char32_t c32 = (wchar_t) 0xBADFACE; + memset (&state, '\0', sizeof (mbstate_t)); + if (mbrtoc32 (&c32, "\224\071\375\067", 4, &state) != 4) + result |= 2; + } + } + return result; +}]])], + [gl_cv_func_mbrtoc32_sanitycheck=yes], + [gl_cv_func_mbrtoc32_sanitycheck=no], + [:]) + fi + ]) + case "$gl_cv_func_mbrtoc32_sanitycheck" in + *yes) + HAVE_WORKING_MBRTOC32=1 + AC_DEFINE([HAVE_WORKING_MBRTOC32], [1], + [Define if the mbrtoc32 function basically works.]) + ;; + *) HAVE_WORKING_MBRTOC32=0 ;; + esac + fi + AC_SUBST([HAVE_WORKING_MBRTOC32]) +]) + +# Prerequisites of lib/mbrtoc32.c and lib/lc-charset-dispatch.c. +AC_DEFUN([gl_PREREQ_MBRTOC32], [ + : +]) diff --git a/gnulib-m4/mbrtowc.m4 b/gnulib-m4/mbrtowc.m4 index ec8716b5..6ff51824 100644 --- a/gnulib-m4/mbrtowc.m4 +++ b/gnulib-m4/mbrtowc.m4 @@ -1,5 +1,5 @@ -# mbrtowc.m4 serial 38 -*- coding: utf-8 -*- -dnl Copyright (C) 2001-2002, 2004-2005, 2008-2022 Free Software Foundation, +# mbrtowc.m4 serial 44 -*- coding: utf-8 -*- +dnl Copyright (C) 2001-2002, 2004-2005, 2008-2024 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -91,20 +91,25 @@ AC_DEFUN([gl_FUNC_MBRTOWC], fi if test $REPLACE_MBSTATE_T = 1; then case "$host_os" in - mingw*) LIB_MBRTOWC= ;; + mingw* | windows*) + MBRTOWC_LIB= + ;; *) gl_WEAK_SYMBOLS case "$gl_cv_have_weak" in - *yes) LIB_MBRTOWC= ;; - *) LIB_MBRTOWC="$LIBPTHREAD" ;; + *yes) MBRTOWC_LIB= ;; + *) MBRTOWC_LIB="$LIBPTHREAD" ;; esac ;; esac else - LIB_MBRTOWC= + MBRTOWC_LIB= fi - dnl LIB_MBRTOWC is expected to be '-pthread' or '-lpthread' on AIX + dnl MBRTOWC_LIB is expected to be '-pthread' or '-lpthread' on AIX dnl with gcc or xlc, and empty otherwise. + AC_SUBST([MBRTOWC_LIB]) + dnl For backward compatibility. + LIB_MBRTOWC="$MBRTOWC_LIB" AC_SUBST([LIB_MBRTOWC]) ]) @@ -114,7 +119,7 @@ dnl Result is REPLACE_MBSTATE_T. dnl When this is set to 1, we replace both mbsinit() and mbrtowc(), in order to dnl avoid inconsistencies. -AC_DEFUN([gl_MBSTATE_T_BROKEN], +AC_DEFUN_ONCE([gl_MBSTATE_T_BROKEN], [ AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) AC_REQUIRE([AC_CANONICAL_HOST]) @@ -126,7 +131,7 @@ AC_DEFUN([gl_MBSTATE_T_BROKEN], dnl to override it, even if - like on MSVC - mbsinit() is only defined as dnl an inline function, not as a global function. if case "$host_os" in - mingw*) true ;; + mingw* | windows*) true ;; *) test $ac_cv_func_mbsinit = yes ;; esac \ && test $ac_cv_func_mbrtowc = yes; then @@ -408,14 +413,16 @@ AC_DEFUN([gl_MBRTOWC_RETVAL], dnl is present. changequote(,)dnl case "$host_os" in - # Guess no on HP-UX, Solaris, native Windows. - hpux* | solaris* | mingw*) gl_cv_func_mbrtowc_retval="guessing no" ;; - # Guess yes otherwise. - *) gl_cv_func_mbrtowc_retval="guessing yes" ;; + # Guess no on HP-UX, Solaris, native Windows. + hpux* | solaris* | mingw* | windows*) + gl_cv_func_mbrtowc_retval="guessing no" ;; + # Guess yes otherwise. + *) + gl_cv_func_mbrtowc_retval="guessing yes" ;; esac changequote([,])dnl if test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none \ - || { case "$host_os" in mingw*) true;; *) false;; esac; }; then + || { case "$host_os" in mingw* | windows*) true;; *) false;; esac; }; then AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include <locale.h> @@ -426,7 +433,8 @@ int main () int result = 0; int found_some_locale = 0; /* This fails on Solaris. */ - if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) + if (strcmp ("$LOCALE_FR_UTF8", "none") != 0 + && setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) { char input[] = "B\303\274\303\237er"; /* "Büßer" */ mbstate_t state; @@ -442,7 +450,8 @@ int main () found_some_locale = 1; } /* This fails on HP-UX 11.11. */ - if (setlocale (LC_ALL, "$LOCALE_JA") != NULL) + if (strcmp ("$LOCALE_JA", "none") != 0 + && setlocale (LC_ALL, "$LOCALE_JA") != NULL) { char input[] = "B\217\253\344\217\251\316er"; /* "Büßer" */ mbstate_t state; @@ -577,13 +586,13 @@ AC_DEFUN([gl_MBRTOWC_STORES_INCOMPLETE], dnl is present. changequote(,)dnl case "$host_os" in - # Guess yes on native Windows. - mingw*) gl_cv_func_mbrtowc_stores_incomplete="guessing yes" ;; - *) gl_cv_func_mbrtowc_stores_incomplete="guessing no" ;; + # Guess yes on native Windows. + mingw* | windows*) gl_cv_func_mbrtowc_stores_incomplete="guessing yes" ;; + *) gl_cv_func_mbrtowc_stores_incomplete="guessing no" ;; esac changequote([,])dnl case "$host_os" in - mingw*) + mingw* | windows*) AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include <locale.h> @@ -677,31 +686,28 @@ AC_DEFUN([gl_MBRTOWC_EMPTY_INPUT], AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether mbrtowc works on empty input], [gl_cv_func_mbrtowc_empty_input], - [ - dnl Initial guess, used when cross-compiling or when no suitable locale - dnl is present. -changequote(,)dnl - case "$host_os" in - # Guess no on AIX and glibc systems. - aix* | *-gnu* | gnu*) gl_cv_func_mbrtowc_empty_input="guessing no" ;; - # Guess yes on native Windows. - mingw*) gl_cv_func_mbrtowc_empty_input="guessing yes" ;; - *) gl_cv_func_mbrtowc_empty_input="guessing yes" ;; - esac -changequote([,])dnl - AC_RUN_IFELSE( - [AC_LANG_SOURCE([[ - #include <wchar.h> - static wchar_t wc; - static mbstate_t mbs; - int - main (void) - { - return mbrtowc (&wc, "", 0, &mbs) != (size_t) -2; - }]])], - [gl_cv_func_mbrtowc_empty_input=yes], - [gl_cv_func_mbrtowc_empty_input=no], - [:]) + [AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ + #include <wchar.h> + static wchar_t wc; + static mbstate_t mbs; + int + main (void) + { + return mbrtowc (&wc, "", 0, &mbs) != (size_t) -2; + }]])], + [gl_cv_func_mbrtowc_empty_input=yes], + [gl_cv_func_mbrtowc_empty_input=no], + [case "$host_os" in + # Guess no on AIX and glibc systems. + aix* | *-gnu* | gnu*) gl_cv_func_mbrtowc_empty_input="guessing no" ;; + # Guess no on Android. + linux*-android*) gl_cv_func_mbrtowc_empty_input="guessing no" ;; + # Guess no on native Windows. + mingw* | windows*) gl_cv_func_mbrtowc_empty_input="guessing no" ;; + *) gl_cv_func_mbrtowc_empty_input="guessing yes" ;; + esac + ]) ]) ]) @@ -709,18 +715,17 @@ dnl Test whether mbrtowc reports encoding errors in the C locale. dnl Although POSIX was never intended to allow this, the GNU C Library dnl and other implementations do it. See: dnl https://sourceware.org/bugzilla/show_bug.cgi?id=19932 +dnl POSIX has now clarified it: +dnl <https://pubs.opengroup.org/onlinepubs/9699919799/functions/mbrtowc.html> +dnl says: "In the POSIX locale an [EILSEQ] error cannot occur since all byte +dnl values are valid characters." AC_DEFUN([gl_MBRTOWC_C_LOCALE], [ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether the C locale is free of encoding errors], [gl_cv_func_mbrtowc_C_locale_sans_EILSEQ], - [ - dnl Initial guess, used when cross-compiling or when no suitable locale - dnl is present. - gl_cv_func_mbrtowc_C_locale_sans_EILSEQ="$gl_cross_guess_normal" - - AC_RUN_IFELSE( + [AC_RUN_IFELSE( [AC_LANG_PROGRAM( [[#include <limits.h> #include <locale.h> @@ -741,13 +746,14 @@ AC_DEFUN([gl_MBRTOWC_C_LOCALE], } return 0; ]])], - [gl_cv_func_mbrtowc_C_locale_sans_EILSEQ=yes], - [gl_cv_func_mbrtowc_C_locale_sans_EILSEQ=no], - [case "$host_os" in - # Guess yes on native Windows. - mingw*) gl_cv_func_mbrtowc_C_locale_sans_EILSEQ="guessing yes" ;; - esac - ]) + [gl_cv_func_mbrtowc_C_locale_sans_EILSEQ=yes], + [gl_cv_func_mbrtowc_C_locale_sans_EILSEQ=no], + [case "$host_os" in + # Guess yes on native Windows. + mingw* | windows*) gl_cv_func_mbrtowc_C_locale_sans_EILSEQ="guessing yes" ;; + *) gl_cv_func_mbrtowc_C_locale_sans_EILSEQ="$gl_cross_guess_normal" ;; + esac + ]) ]) ]) diff --git a/gnulib-m4/mbsinit.m4 b/gnulib-m4/mbsinit.m4 index ebd2d4ff..10a5b619 100644 --- a/gnulib-m4/mbsinit.m4 +++ b/gnulib-m4/mbsinit.m4 @@ -1,5 +1,5 @@ -# mbsinit.m4 serial 9 -dnl Copyright (C) 2008, 2010-2022 Free Software Foundation, Inc. +# mbsinit.m4 serial 10 +dnl Copyright (C) 2008, 2010-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -32,7 +32,7 @@ AC_DEFUN([gl_FUNC_MBSINIT], dnl states produced by mbrtowc() for an incomplete multibyte character dnl in multibyte locales. case "$host_os" in - mingw*) REPLACE_MBSINIT=1 ;; + mingw* | windows*) REPLACE_MBSINIT=1 ;; esac fi fi diff --git a/gnulib-m4/mbstate_t.m4 b/gnulib-m4/mbstate_t.m4 index a6eba1bc..b2bcba45 100644 --- a/gnulib-m4/mbstate_t.m4 +++ b/gnulib-m4/mbstate_t.m4 @@ -1,5 +1,5 @@ # mbstate_t.m4 serial 14 -dnl Copyright (C) 2000-2002, 2008-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2000-2002, 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/mbtowc.m4 b/gnulib-m4/mbtowc.m4 index 2827e833..2bdc879c 100644 --- a/gnulib-m4/mbtowc.m4 +++ b/gnulib-m4/mbtowc.m4 @@ -1,5 +1,5 @@ -# mbtowc.m4 serial 3 -dnl Copyright (C) 2011-2022 Free Software Foundation, Inc. +# mbtowc.m4 serial 5 +dnl Copyright (C) 2011-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -8,9 +8,12 @@ AC_DEFUN([gl_FUNC_MBTOWC], [ AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) - AC_CHECK_FUNCS([mbtowc]) + gl_CHECK_FUNCS_ANDROID([mbtowc], [[#include <stdlib.h>]]) if test $ac_cv_func_mbtowc = no; then HAVE_MBTOWC=0 + case "$gl_cv_onwards_func_mbtowc" in + future*) REPLACE_MBTOWC=1 ;; + esac else if false; then REPLACE_MBTOWC=1 diff --git a/gnulib-m4/memchr.m4 b/gnulib-m4/memchr.m4 index c7489d87..6184ddc8 100644 --- a/gnulib-m4/memchr.m4 +++ b/gnulib-m4/memchr.m4 @@ -1,5 +1,5 @@ -# memchr.m4 serial 18 -dnl Copyright (C) 2002-2004, 2009-2022 Free Software Foundation, Inc. +# memchr.m4 serial 19 +dnl Copyright (C) 2002-2004, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -85,12 +85,12 @@ AC_DEFUN_ONCE([gl_FUNC_MEMCHR], [gl_cv_func_memchr_works=yes], [gl_cv_func_memchr_works=no], [case "$host_os" in - # Guess no on Android. - linux*-android*) gl_cv_func_memchr_works="guessing no" ;; - # Guess yes on native Windows. - mingw*) gl_cv_func_memchr_works="guessing yes" ;; - # If we don't know, obey --enable-cross-guesses. - *) gl_cv_func_memchr_works="$gl_cross_guess_normal" ;; + # Guess no on Android. + linux*-android*) gl_cv_func_memchr_works="guessing no" ;; + # Guess yes on native Windows. + mingw* | windows*) gl_cv_func_memchr_works="guessing yes" ;; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_memchr_works="$gl_cross_guess_normal" ;; esac ]) ]) diff --git a/gnulib-m4/minmax.m4 b/gnulib-m4/minmax.m4 index b9767397..5c0a927d 100644 --- a/gnulib-m4/minmax.m4 +++ b/gnulib-m4/minmax.m4 @@ -1,5 +1,5 @@ # minmax.m4 serial 4 -dnl Copyright (C) 2005, 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2005, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/mmap-anon.m4 b/gnulib-m4/mmap-anon.m4 index a4580ff9..642f07db 100644 --- a/gnulib-m4/mmap-anon.m4 +++ b/gnulib-m4/mmap-anon.m4 @@ -1,5 +1,5 @@ # mmap-anon.m4 serial 12 -dnl Copyright (C) 2005, 2007, 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2005, 2007, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/mode_t.m4 b/gnulib-m4/mode_t.m4 index e08d27a7..af88da51 100644 --- a/gnulib-m4/mode_t.m4 +++ b/gnulib-m4/mode_t.m4 @@ -1,5 +1,5 @@ # mode_t.m4 serial 2 -dnl Copyright (C) 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/msvc-inval.m4 b/gnulib-m4/msvc-inval.m4 index b32cf6eb..b8ba598e 100644 --- a/gnulib-m4/msvc-inval.m4 +++ b/gnulib-m4/msvc-inval.m4 @@ -1,5 +1,5 @@ # msvc-inval.m4 serial 1 -dnl Copyright (C) 2011-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2011-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/msvc-nothrow.m4 b/gnulib-m4/msvc-nothrow.m4 index 16ceb1f1..3e332a09 100644 --- a/gnulib-m4/msvc-nothrow.m4 +++ b/gnulib-m4/msvc-nothrow.m4 @@ -1,5 +1,5 @@ # msvc-nothrow.m4 serial 1 -dnl Copyright (C) 2011-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2011-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/multiarch.m4 b/gnulib-m4/multiarch.m4 index 5d942765..5f8339f5 100644 --- a/gnulib-m4/multiarch.m4 +++ b/gnulib-m4/multiarch.m4 @@ -1,5 +1,5 @@ # multiarch.m4 serial 9 -dnl Copyright (C) 2008-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/musl.m4 b/gnulib-m4/musl.m4 index 111f75d3..34d2c1ff 100644 --- a/gnulib-m4/musl.m4 +++ b/gnulib-m4/musl.m4 @@ -1,5 +1,5 @@ -# musl.m4 serial 3 -dnl Copyright (C) 2019-2022 Free Software Foundation, Inc. +# musl.m4 serial 4 +dnl Copyright (C) 2019-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -13,6 +13,8 @@ AC_DEFUN_ONCE([gl_MUSL_LIBC], [ AC_REQUIRE([AC_CANONICAL_HOST]) case "$host_os" in - *-musl*) AC_DEFINE([MUSL_LIBC], [1], [Define to 1 on musl libc.]) ;; + *-musl* | midipix*) + AC_DEFINE([MUSL_LIBC], [1], [Define to 1 on musl libc.]) + ;; esac ]) diff --git a/gnulib-m4/nan-mips.m4 b/gnulib-m4/nan-mips.m4 new file mode 100644 index 00000000..d5650e19 --- /dev/null +++ b/gnulib-m4/nan-mips.m4 @@ -0,0 +1,89 @@ +# nan-mips.m4 serial 1 +dnl Copyright (C) 2023-2024 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# Extra meta-info mentioned by lib/snan.h. +AC_DEFUN_ONCE([gl_NAN_MIPS], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + case "$host_cpu" in + mips*) + AC_CACHE_CHECK([whether the NaN float encoding is IEEE 754-2008 compliant], + [gl_cv_nan2008_f], + [AC_RUN_IFELSE( + [AC_LANG_PROGRAM([[ + float volatile zero; + /* Assume 'float' has 32 bits, i.e. IEEE single-float. */ + union { float value; unsigned int word; } qnan; + ]], + [[qnan.value = zero / zero; + return !((qnan.word >> 22) & 1); + ]]) + ], + [gl_cv_nan2008_f=yes], + [gl_cv_nan2008_f=no], + [gl_cv_nan2008_f="guessing no"]) + ]) + case "$gl_cv_nan2008_f" in + *yes) gl_mips_nan2008_f=1 ;; + *) gl_mips_nan2008_f=0 ;; + esac + AC_DEFINE_UNQUOTED([MIPS_NAN2008_FLOAT], [$gl_mips_nan2008_f], + [Define to 1 if the encoding of NaN 'float's is as in IEEE 754-2008 § 6.2.1.]) + + AC_CACHE_CHECK([whether the NaN double encoding is IEEE 754-2008 compliant], + [gl_cv_nan2008_d], + [AC_RUN_IFELSE( + [AC_LANG_PROGRAM([[ + double volatile zero; + /* Assume 'double' has 64 bits, i.e. IEEE double-float. */ + union { double value; unsigned long long word; } qnan; + ]], + [[qnan.value = zero / zero; + return !((qnan.word >> 51) & 1); + ]]) + ], + [gl_cv_nan2008_d=yes], + [gl_cv_nan2008_d=no], + [gl_cv_nan2008_d="guessing no"]) + ]) + case "$gl_cv_nan2008_d" in + *yes) gl_mips_nan2008_d=1 ;; + *) gl_mips_nan2008_d=0 ;; + esac + AC_DEFINE_UNQUOTED([MIPS_NAN2008_DOUBLE], [$gl_mips_nan2008_d], + [Define to 1 if the encoding of NaN 'double's is as in IEEE 754-2008 § 6.2.1.]) + + AC_CACHE_CHECK([whether the NaN long double encoding is IEEE 754-2008 compliant], + [gl_cv_nan2008_l], + [AC_RUN_IFELSE( + [AC_LANG_PROGRAM([[ + #include <float.h> + long double volatile zero; + #define NWORDS \ + ((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int)) + union { long double value; unsigned int word[NWORDS]; } qnan; + ]], + [[qnan.value = zero / zero; + #if defined _MIPSEB /* equivalent: __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ */ + return !((qnan.word[0] >> ((LDBL_MANT_DIG - 2) % 32)) & 1); + #else + return !((qnan.word[NWORDS - 1] >> ((LDBL_MANT_DIG - 2) % 32)) & 1); + #endif + ]]) + ], + [gl_cv_nan2008_l=yes], + [gl_cv_nan2008_l=no], + [gl_cv_nan2008_l="guessing no"]) + ]) + case "$gl_cv_nan2008_l" in + *yes) gl_mips_nan2008_l=1 ;; + *) gl_mips_nan2008_l=0 ;; + esac + AC_DEFINE_UNQUOTED([MIPS_NAN2008_LONG_DOUBLE], [$gl_mips_nan2008_l], + [Define to 1 if the encoding of NaN 'long double's is as in IEEE 754-2008 § 6.2.1.]) + ;; + esac +]) diff --git a/gnulib-m4/nanosleep.m4 b/gnulib-m4/nanosleep.m4 index dfe21f56..ff730b67 100644 --- a/gnulib-m4/nanosleep.m4 +++ b/gnulib-m4/nanosleep.m4 @@ -1,11 +1,11 @@ -# serial 42 +# serial 47 dnl From Jim Meyering. dnl Check for the nanosleep function. dnl If not found, use the supplied replacement. dnl -# Copyright (C) 1999-2001, 2003-2022 Free Software Foundation, Inc. +# Copyright (C) 1999-2001, 2003-2024 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -21,15 +21,15 @@ AC_DEFUN([gl_FUNC_NANOSLEEP], AC_CHECK_DECLS_ONCE([alarm]) - nanosleep_save_libs=$LIBS + gl_saved_LIBS=$LIBS # Solaris 2.5.1 needs -lposix4 to get the nanosleep function. # Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4. - LIB_NANOSLEEP= - AC_SUBST([LIB_NANOSLEEP]) + NANOSLEEP_LIB= + AC_SUBST([NANOSLEEP_LIB]) AC_SEARCH_LIBS([nanosleep], [rt posix4], [test "$ac_cv_search_nanosleep" = "none required" || - LIB_NANOSLEEP=$ac_cv_search_nanosleep]) + NANOSLEEP_LIB=$ac_cv_search_nanosleep]) if test "x$ac_cv_search_nanosleep" != xno; then dnl The system has a nanosleep function. @@ -116,19 +116,24 @@ AC_DEFUN([gl_FUNC_NANOSLEEP], *) gl_cv_func_nanosleep=no ;; esac], [case "$host_os" in - linux*) # Guess it halfway works when the kernel is Linux. + # Guess it halfway works when the kernel is Linux. + linux*) gl_cv_func_nanosleep='guessing no (mishandles large arguments)' ;; - mingw*) # Guess no on native Windows. + # Midipix generally emulates the Linux system calls, + # but here it handles large arguments correctly. + midipix*) + gl_cv_func_nanosleep='guessing yes' ;; + # Guess no on native Windows. + mingw* | windows*) gl_cv_func_nanosleep='guessing no' ;; - *) # If we don't know, obey --enable-cross-guesses. + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_nanosleep="$gl_cross_guess_normal" ;; esac ]) ]) case "$gl_cv_func_nanosleep" in - *yes) - REPLACE_NANOSLEEP=0 - ;; + *yes) ;; *) REPLACE_NANOSLEEP=1 case "$gl_cv_func_nanosleep" in @@ -142,5 +147,9 @@ AC_DEFUN([gl_FUNC_NANOSLEEP], else HAVE_NANOSLEEP=0 fi - LIBS=$nanosleep_save_libs + LIBS=$gl_saved_LIBS + + # For backward compatibility. + LIB_NANOSLEEP="$NANOSLEEP_LIB" + AC_SUBST([LIB_NANOSLEEP]) ]) diff --git a/gnulib-m4/netinet_in_h.m4 b/gnulib-m4/netinet_in_h.m4 index de26fe85..9618c0cc 100644 --- a/gnulib-m4/netinet_in_h.m4 +++ b/gnulib-m4/netinet_in_h.m4 @@ -1,5 +1,5 @@ # netinet_in_h.m4 serial 6 -dnl Copyright (C) 2006-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2006-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/nocrash.m4 b/gnulib-m4/nocrash.m4 index 91f00c1b..9730fc09 100644 --- a/gnulib-m4/nocrash.m4 +++ b/gnulib-m4/nocrash.m4 @@ -1,5 +1,5 @@ # nocrash.m4 serial 5 -dnl Copyright (C) 2005, 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2005, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/off_t.m4 b/gnulib-m4/off_t.m4 index 0890adaf..f3259f9c 100644 --- a/gnulib-m4/off_t.m4 +++ b/gnulib-m4/off_t.m4 @@ -1,5 +1,5 @@ # off_t.m4 serial 1 -dnl Copyright (C) 2012-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2012-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/open-cloexec.m4 b/gnulib-m4/open-cloexec.m4 index 16cd5ec4..a2d50329 100644 --- a/gnulib-m4/open-cloexec.m4 +++ b/gnulib-m4/open-cloexec.m4 @@ -1,6 +1,6 @@ # Test whether O_CLOEXEC is defined. -dnl Copyright 2017-2022 Free Software Foundation, Inc. +dnl Copyright 2017-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/open-slash.m4 b/gnulib-m4/open-slash.m4 index 4fbf491a..45310c0c 100644 --- a/gnulib-m4/open-slash.m4 +++ b/gnulib-m4/open-slash.m4 @@ -1,5 +1,5 @@ # open-slash.m4 serial 2 -dnl Copyright (C) 2007-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/open.m4 b/gnulib-m4/open.m4 index f82fd6ca..91e5c31b 100644 --- a/gnulib-m4/open.m4 +++ b/gnulib-m4/open.m4 @@ -1,5 +1,5 @@ -# open.m4 serial 15 -dnl Copyright (C) 2007-2022 Free Software Foundation, Inc. +# open.m4 serial 16 +dnl Copyright (C) 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -9,7 +9,7 @@ AC_DEFUN([gl_FUNC_OPEN], AC_REQUIRE([AC_CANONICAL_HOST]) AC_REQUIRE([gl_PREPROC_O_CLOEXEC]) case "$host_os" in - mingw* | pw*) + mingw* | windows* | pw*) REPLACE_OPEN=1 ;; *) diff --git a/gnulib-m4/pathmax.m4 b/gnulib-m4/pathmax.m4 index 44add990..a0fc296c 100644 --- a/gnulib-m4/pathmax.m4 +++ b/gnulib-m4/pathmax.m4 @@ -1,5 +1,5 @@ # pathmax.m4 serial 11 -dnl Copyright (C) 2002-2003, 2005-2006, 2009-2022 Free Software Foundation, +dnl Copyright (C) 2002-2003, 2005-2006, 2009-2024 Free Software Foundation, dnl Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, diff --git a/gnulib-m4/perror.m4 b/gnulib-m4/perror.m4 index 02d44ca2..6538c252 100644 --- a/gnulib-m4/perror.m4 +++ b/gnulib-m4/perror.m4 @@ -1,5 +1,5 @@ -# perror.m4 serial 10 -dnl Copyright (C) 2008-2022 Free Software Foundation, Inc. +# perror.m4 serial 13 +dnl Copyright (C) 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -10,7 +10,7 @@ AC_DEFUN([gl_FUNC_PERROR], AC_REQUIRE([gl_HEADER_ERRNO_H]) AC_REQUIRE([gl_FUNC_STRERROR_R]) AC_REQUIRE([gl_FUNC_STRERROR_0]) - AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_REQUIRE([AC_CANONICAL_HOST]) dnl We intentionally do not check for the broader REPLACE_STRERROR_R, dnl since on glibc systems, strerror_r is replaced only for signature dnl issues, and perror is just fine. Rather, we only want to @@ -48,12 +48,12 @@ AC_DEFUN([gl_FUNC_PERROR], rm -rf conftest.txt1 conftest.txt2], [gl_cv_func_perror_works=no], [case "$host_os" in - # Guess yes on musl systems. - *-musl*) gl_cv_func_perror_works="guessing yes" ;; - # Guess yes on native Windows. - mingw*) gl_cv_func_perror_works="guessing yes" ;; - # Otherwise obey --enable-cross-guesses. - *) gl_cv_func_perror_works="$gl_cross_guess_normal" ;; + # Guess yes on musl systems. + *-musl* | midipix*) gl_cv_func_perror_works="guessing yes" ;; + # Guess yes on native Windows. + mingw* | windows*) gl_cv_func_perror_works="guessing yes" ;; + # Otherwise obey --enable-cross-guesses. + *) gl_cv_func_perror_works="$gl_cross_guess_normal" ;; esac ]) ]) @@ -68,4 +68,9 @@ AC_DEFUN([gl_FUNC_PERROR], REPLACE_PERROR=1 ;; esac + dnl Does perror clobber the strerror buffer? + case "$host_os" in + # Yes on Android 11. + linux*-android*) REPLACE_PERROR=1 ;; + esac ]) diff --git a/gnulib-m4/pipe.m4 b/gnulib-m4/pipe.m4 index 62871c6d..1d3742eb 100644 --- a/gnulib-m4/pipe.m4 +++ b/gnulib-m4/pipe.m4 @@ -1,5 +1,5 @@ # pipe.m4 serial 2 -dnl Copyright (C) 2010-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2010-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/printf-frexp.m4 b/gnulib-m4/printf-frexp.m4 index 0628b5ab..9a2f767f 100644 --- a/gnulib-m4/printf-frexp.m4 +++ b/gnulib-m4/printf-frexp.m4 @@ -1,5 +1,5 @@ # printf-frexp.m4 serial 5 -dnl Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2007, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/printf-frexpl.m4 b/gnulib-m4/printf-frexpl.m4 index 137c8718..7d3b7bd1 100644 --- a/gnulib-m4/printf-frexpl.m4 +++ b/gnulib-m4/printf-frexpl.m4 @@ -1,5 +1,5 @@ # printf-frexpl.m4 serial 10 -dnl Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2007, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/printf.m4 b/gnulib-m4/printf.m4 index 667452e3..6f917778 100644 --- a/gnulib-m4/printf.m4 +++ b/gnulib-m4/printf.m4 @@ -1,5 +1,5 @@ -# printf.m4 serial 73 -dnl Copyright (C) 2003, 2007-2022 Free Software Foundation, Inc. +# printf.m4 serial 90 +dnl Copyright (C) 2003, 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -63,7 +63,7 @@ changequote(,)dnl # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_printf_sizes_c99="guessing yes";; # Guess yes on musl systems. - *-musl*) gl_cv_func_printf_sizes_c99="guessing yes";; + *-musl* | midipix*) gl_cv_func_printf_sizes_c99="guessing yes";; # Guess yes on FreeBSD >= 5. freebsd[1-4].*) gl_cv_func_printf_sizes_c99="guessing no";; freebsd* | kfreebsd*) gl_cv_func_printf_sizes_c99="guessing yes";; @@ -86,7 +86,8 @@ changequote(,)dnl linux*-android*) gl_cv_func_printf_sizes_c99="guessing yes";; changequote([,])dnl # Guess yes on MSVC, no on mingw. - mingw*) AC_EGREP_CPP([Known], [ + windows*-msvc*) gl_cv_func_printf_sizes_c99="guessing yes" ;; + mingw* | windows*) AC_EGREP_CPP([Known], [ #ifdef _MSC_VER Known #endif @@ -101,6 +102,92 @@ changequote([,])dnl ]) ]) +dnl Test whether the *printf family of functions supports the 'w8', 'w16', +dnl 'w32', 'w64', 'wf8', 'wf16', 'wf32', 'wf64' size specifiers. (ISO C23) +dnl Result is gl_cv_func_printf_sizes_c23. + +AC_DEFUN([gl_PRINTF_SIZES_C23], +[ + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([gl_AC_HEADER_STDINT_H]) + AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CACHE_CHECK([whether printf supports size specifiers as in C23], + [gl_cv_func_printf_sizes_c23], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include <stddef.h> +#include <stdio.h> +#include <string.h> +#include <sys/types.h> +#if HAVE_STDINT_H_WITH_UINTMAX +# include <stdint.h> +#endif +#if HAVE_INTTYPES_H_WITH_UINTMAX +# include <inttypes.h> +#endif +static char buf[100]; +int main () +{ + int result = 0; + buf[0] = '\0'; + if (sprintf (buf, "%w8u %d", (uint8_t) 123, 33, 44, 55) < 0 + || strcmp (buf, "123 33") != 0) + result |= 1; + buf[0] = '\0'; + if (sprintf (buf, "%wf8u %d", (uint_fast8_t) 123, 33, 44, 55) < 0 + || strcmp (buf, "123 33") != 0) + result |= 1; + buf[0] = '\0'; + if (sprintf (buf, "%w16u %d", (uint16_t) 12345, 33, 44, 55) < 0 + || strcmp (buf, "12345 33") != 0) + result |= 2; + buf[0] = '\0'; + if (sprintf (buf, "%wf16u %d", (uint_fast16_t) 12345, 33, 44, 55) < 0 + || strcmp (buf, "12345 33") != 0) + result |= 2; + buf[0] = '\0'; + if (sprintf (buf, "%w32u %d", (uint32_t) 12345671, 33, 44, 55) < 0 + || strcmp (buf, "12345671 33") != 0) + result |= 4; + buf[0] = '\0'; + if (sprintf (buf, "%wf32u %d", (uint_fast32_t) 12345671, 33, 44, 55) < 0 + || strcmp (buf, "12345671 33") != 0) + result |= 4; +#if HAVE_STDINT_H_WITH_UINTMAX || HAVE_INTTYPES_H_WITH_UINTMAX + buf[0] = '\0'; + if (sprintf (buf, "%w64u %d", (uint64_t) 12345671, 33, 44, 55) < 0 + || strcmp (buf, "12345671 33") != 0) + result |= 8; + buf[0] = '\0'; + if (sprintf (buf, "%wf64u %d", (uint_fast64_t) 12345671, 33, 44, 55) < 0 + || strcmp (buf, "12345671 33") != 0) + result |= 8; +#else + result |= 8; +#endif + return result; +}]])], + [gl_cv_func_printf_sizes_c23=yes], + [gl_cv_func_printf_sizes_c23=no], + [ + case "$host_os" in + # Guess no on glibc systems. + *-gnu* | gnu*) gl_cv_func_printf_sizes_c23="guessing no";; + # Guess no on musl systems. + *-musl* | midipix*) gl_cv_func_printf_sizes_c23="guessing no";; + # Guess no on Android. + linux*-android*) gl_cv_func_printf_sizes_c23="guessing no";; + # Guess no on native Windows. + mingw* | windows*) gl_cv_func_printf_sizes_c23="guessing no";; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_printf_sizes_c23="$gl_cross_guess_normal";; + esac + ]) + ]) +]) + dnl Test whether the *printf family of functions supports 'long double' dnl arguments together with the 'L' size specifier. (ISO C99, POSIX:2001) dnl Result is gl_cv_func_printf_long_double. @@ -137,20 +224,21 @@ int main () [gl_cv_func_printf_long_double=yes], [gl_cv_func_printf_long_double=no], [case "$host_os" in - # Guess no on BeOS. - beos*) gl_cv_func_printf_long_double="guessing no";; - # Guess yes on Android. - linux*-android*) gl_cv_func_printf_long_double="guessing yes";; - # Guess yes on MSVC, no on mingw. - mingw*) AC_EGREP_CPP([Known], [ + # Guess no on BeOS. + beos*) gl_cv_func_printf_long_double="guessing no";; + # Guess yes on Android. + linux*-android*) gl_cv_func_printf_long_double="guessing yes";; + # Guess yes on MSVC, no on mingw. + windows*-msvc*) gl_cv_func_printf_long_double="guessing yes" ;; + mingw* | windows*) AC_EGREP_CPP([Known], [ #ifdef _MSC_VER Known #endif - ], - [gl_cv_func_printf_long_double="guessing yes"], - [gl_cv_func_printf_long_double="guessing no"]) - ;; - *) gl_cv_func_printf_long_double="guessing yes";; + ], + [gl_cv_func_printf_long_double="guessing yes"], + [gl_cv_func_printf_long_double="guessing no"]) + ;; + *) gl_cv_func_printf_long_double="guessing yes";; esac ]) ]) @@ -244,7 +332,7 @@ changequote(,)dnl # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on musl systems. - *-musl*) gl_cv_func_printf_infinite="guessing yes";; + *-musl* | midipix*) gl_cv_func_printf_infinite="guessing yes";; # Guess yes on FreeBSD >= 6. freebsd[1-5].*) gl_cv_func_printf_infinite="guessing no";; freebsd* | kfreebsd*) gl_cv_func_printf_infinite="guessing yes";; @@ -268,7 +356,8 @@ changequote(,)dnl linux*-android*) gl_cv_func_printf_infinite="guessing no";; changequote([,])dnl # Guess yes on MSVC, no on mingw. - mingw*) AC_EGREP_CPP([Known], [ + windows*-msvc*) gl_cv_func_printf_infinite="guessing yes" ;; + mingw* | windows*) AC_EGREP_CPP([Known], [ #ifdef _MSC_VER Known #endif @@ -467,7 +556,7 @@ changequote(,)dnl # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_printf_infinite_long_double="guessing yes";; # Guess yes on musl systems. - *-musl*) gl_cv_func_printf_infinite_long_double="guessing yes";; + *-musl* | midipix*) gl_cv_func_printf_infinite_long_double="guessing yes";; # Guess yes on FreeBSD >= 6. freebsd[1-5].*) gl_cv_func_printf_infinite_long_double="guessing no";; freebsd* | kfreebsd*) gl_cv_func_printf_infinite_long_double="guessing yes";; @@ -482,7 +571,8 @@ changequote(,)dnl linux*-android*) gl_cv_func_printf_infinite_long_double="guessing no";; changequote([,])dnl # Guess yes on MSVC, no on mingw. - mingw*) AC_EGREP_CPP([Known], [ + windows*-msvc*) gl_cv_func_printf_infinite_long_double="guessing yes" ;; + mingw* | windows*) AC_EGREP_CPP([Known], [ #ifdef _MSC_VER Known #endif @@ -591,11 +681,11 @@ int main () [gl_cv_func_printf_directive_a="guessing no"]) ;; # Guess yes on musl systems. - *-musl*) gl_cv_func_printf_directive_a="guessing yes";; + *-musl* | midipix*) gl_cv_func_printf_directive_a="guessing yes";; # Guess no on Android. linux*-android*) gl_cv_func_printf_directive_a="guessing no";; # Guess no on native Windows. - mingw*) gl_cv_func_printf_directive_a="guessing no";; + mingw* | windows*) gl_cv_func_printf_directive_a="guessing no";; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_printf_directive_a="$gl_cross_guess_normal";; esac @@ -603,6 +693,116 @@ int main () ]) ]) +dnl Test whether the *printf family of functions supports the 'b' conversion +dnl specifier for binary output of integers. +dnl (ISO C23) +dnl Result is gl_cv_func_printf_directive_b. + +AC_DEFUN([gl_PRINTF_DIRECTIVE_B], +[ + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CACHE_CHECK([whether printf supports the 'b' directive], + [gl_cv_func_printf_directive_b], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include <stdio.h> +#include <string.h> +static char buf[100]; +int main () +{ + int result = 0; + if (sprintf (buf, "%b %d", 12345, 33, 44, 55) < 0 + || strcmp (buf, "11000000111001 33") != 0) + result |= 1; + return result; +}]])], + [gl_cv_func_printf_directive_b=yes], + [gl_cv_func_printf_directive_b=no], + [ + case "$host_os" in + # Guess yes on glibc >= 2.35 systems. + *-gnu* | gnu*) + AC_EGREP_CPP([Lucky], [ + #include <features.h> + #ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 35) || (__GLIBC__ > 2) + Lucky user + #endif + #endif + ], + [gl_cv_func_printf_directive_uppercase_b="guessing yes"], + [gl_cv_func_printf_directive_uppercase_b="guessing no"]) + ;; + # Guess no on musl systems. + *-musl* | midipix*) gl_cv_func_printf_directive_b="guessing no";; + # Guess no on Android. + linux*-android*) gl_cv_func_printf_directive_b="guessing no";; + # Guess no on native Windows. + mingw* | windows*) gl_cv_func_printf_directive_b="guessing no";; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_printf_directive_b="$gl_cross_guess_normal";; + esac + ]) + ]) +]) + +dnl Test whether the *printf family of functions supports the 'B' conversion +dnl specifier for binary output of integers. +dnl (GNU, encouraged by ISO C23 § 7.23.6.1) +dnl Result is gl_cv_func_printf_directive_uppercase_b. + +AC_DEFUN([gl_PRINTF_DIRECTIVE_UPPERCASE_B], +[ + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CACHE_CHECK([whether printf supports the 'B' directive], + [gl_cv_func_printf_directive_uppercase_b], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include <stdio.h> +#include <string.h> +static char buf[100]; +int main () +{ + int result = 0; + if (sprintf (buf, "%#B %d", 12345, 33, 44, 55) < 0 + || strcmp (buf, "0B11000000111001 33") != 0) + result |= 1; + return result; +}]])], + [gl_cv_func_printf_directive_uppercase_b=yes], + [gl_cv_func_printf_directive_uppercase_b=no], + [ + case "$host_os" in + # Guess yes on glibc >= 2.35 systems. + *-gnu* | gnu*) + AC_EGREP_CPP([Lucky], [ + #include <features.h> + #ifdef __GNU_LIBRARY__ + #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 35) || (__GLIBC__ > 2) + Lucky user + #endif + #endif + ], + [gl_cv_func_printf_directive_uppercase_b="guessing yes"], + [gl_cv_func_printf_directive_uppercase_b="guessing no"]) + ;; + # Guess no on musl systems. + *-musl* | midipix*) gl_cv_func_printf_directive_uppercase_b="guessing no";; + # Guess no on Android. + linux*-android*) gl_cv_func_printf_directive_uppercase_b="guessing no";; + # Guess no on native Windows. + mingw* | windows*) gl_cv_func_printf_directive_uppercase_b="guessing no";; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_printf_directive_uppercase_b="$gl_cross_guess_normal";; + esac + ]) + ]) +]) + dnl Test whether the *printf family of functions supports the %F format dnl directive. (ISO C99, POSIX:2001) dnl Result is gl_cv_func_printf_directive_f. @@ -643,7 +843,7 @@ changequote(,)dnl # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_printf_directive_f="guessing yes";; # Guess yes on musl systems. - *-musl*) gl_cv_func_printf_directive_f="guessing yes";; + *-musl* | midipix*) gl_cv_func_printf_directive_f="guessing yes";; # Guess yes on FreeBSD >= 6. freebsd[1-5].*) gl_cv_func_printf_directive_f="guessing no";; freebsd* | kfreebsd*) gl_cv_func_printf_directive_f="guessing yes";; @@ -661,7 +861,8 @@ changequote(,)dnl linux*-android*) gl_cv_func_printf_directive_f="guessing no";; changequote([,])dnl # Guess yes on MSVC, no on mingw. - mingw*) AC_EGREP_CPP([Known], [ + windows*-msvc*) gl_cv_func_printf_directive_f="guessing yes" ;; + mingw* | windows*) AC_EGREP_CPP([Known], [ #ifdef _MSC_VER Known #endif @@ -689,6 +890,7 @@ AC_DEFUN([gl_PRINTF_DIRECTIVE_N], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ +#include <signal.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -706,6 +908,12 @@ invalid_parameter_handler (const wchar_t *expression, exit (1); } #endif +static void +abort_handler (int sig) +{ + (void) sig; + _exit (1); +} static char fmtstring[10]; static char buf[100]; int main () @@ -714,6 +922,7 @@ int main () #ifdef _MSC_VER _set_invalid_parameter_handler (invalid_parameter_handler); #endif + signal (SIGABRT, abort_handler); /* Copy the format string. Some systems (glibc with _FORTIFY_SOURCE=2) support %n in format strings in read-only memory but not in writable memory. */ @@ -727,21 +936,21 @@ int main () [gl_cv_func_printf_directive_n=yes], [gl_cv_func_printf_directive_n=no], [case "$host_os" in - # Guess no on glibc when _FORTIFY_SOURCE >= 2. - *-gnu* | gnu*) AC_COMPILE_IFELSE( - [AC_LANG_SOURCE( - [[#if _FORTIFY_SOURCE >= 2 - error fail - #endif - ]])], - [gl_cv_func_printf_directive_n="guessing yes"], - [gl_cv_func_printf_directive_n="guessing no"]) - ;; - # Guess no on Android. - linux*-android*) gl_cv_func_printf_directive_n="guessing no";; - # Guess no on native Windows. - mingw*) gl_cv_func_printf_directive_n="guessing no";; - *) gl_cv_func_printf_directive_n="guessing yes";; + # Guess no on glibc when _FORTIFY_SOURCE >= 2. + *-gnu* | gnu*) AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[#if _FORTIFY_SOURCE >= 2 + error fail + #endif + ]])], + [gl_cv_func_printf_directive_n="guessing yes"], + [gl_cv_func_printf_directive_n="guessing no"]) + ;; + # Guess no on Android. + linux*-android*) gl_cv_func_printf_directive_n="guessing no";; + # Guess no on native Windows. + mingw* | windows*) gl_cv_func_printf_directive_n="guessing no";; + *) gl_cv_func_printf_directive_n="guessing yes";; esac ]) ]) @@ -811,18 +1020,64 @@ int main () [ changequote(,)dnl case "$host_os" in - # Guess yes on OpenBSD >= 6.0. - openbsd[1-5].*) gl_cv_func_printf_directive_ls="guessing no";; - openbsd*) gl_cv_func_printf_directive_ls="guessing yes";; - irix*) gl_cv_func_printf_directive_ls="guessing no";; - solaris*) gl_cv_func_printf_directive_ls="guessing no";; - cygwin*) gl_cv_func_printf_directive_ls="guessing no";; - beos* | haiku*) gl_cv_func_printf_directive_ls="guessing no";; - # Guess no on Android. - linux*-android*) gl_cv_func_printf_directive_ls="guessing no";; - # Guess yes on native Windows. - mingw*) gl_cv_func_printf_directive_ls="guessing yes";; - *) gl_cv_func_printf_directive_ls="guessing yes";; + # Guess yes on OpenBSD >= 6.0. + openbsd[1-5].*) gl_cv_func_printf_directive_ls="guessing no";; + openbsd*) gl_cv_func_printf_directive_ls="guessing yes";; + irix*) gl_cv_func_printf_directive_ls="guessing no";; + solaris*) gl_cv_func_printf_directive_ls="guessing no";; + cygwin*) gl_cv_func_printf_directive_ls="guessing no";; + beos* | haiku*) gl_cv_func_printf_directive_ls="guessing no";; + # Guess no on Android. + linux*-android*) gl_cv_func_printf_directive_ls="guessing no";; + # Guess yes on native Windows. + mingw* | windows*) gl_cv_func_printf_directive_ls="guessing yes";; + *) gl_cv_func_printf_directive_ls="guessing yes";; + esac +changequote([,])dnl + ]) + ]) +]) + +dnl Test whether the *printf family of functions supports the %lc format +dnl directive and in particular, when the argument is a null wide character, +dnl whether the functions produce a NUL byte, as specified in ISO C 23 +dnl after the issue GB-141 was fixed. +dnl Result is gl_cv_func_printf_directive_lc. + +AC_DEFUN([gl_PRINTF_DIRECTIVE_LC], +[ + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CACHE_CHECK([whether printf supports the 'lc' directive correctly], + [gl_cv_func_printf_directive_lc], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include <stdio.h> +#include <wchar.h> +#include <string.h> +int main () +{ + int result = 0; + char buf[100]; + /* This test fails on musl libc 1.2.4. */ + { + buf[0] = '\0'; + if (sprintf (buf, "%lc%lc%lc", (wint_t) 'a', (wint_t) 0, (wint_t) 'z') < 0 + || memcmp (buf, "a\0z", 4) != 0) + result |= 1; + } + return result; +}]])], + [gl_cv_func_printf_directive_lc=yes], + [gl_cv_func_printf_directive_lc=no], + [ +changequote(,)dnl + case "$host_os" in + # Guess no on musl libc. + *-musl* | midipix*) gl_cv_func_printf_directive_lc="guessing no";; + # Guess yes otherwise. + *) gl_cv_func_printf_directive_lc="guessing yes";; esac changequote([,])dnl ]) @@ -833,7 +1088,7 @@ dnl Test whether the *printf family of functions supports POSIX/XSI format dnl strings with positions. (POSIX:2001) dnl Result is gl_cv_func_printf_positions. -AC_DEFUN([gl_PRINTF_POSITIONS], +AC_DEFUN_ONCE([gl_PRINTF_POSITIONS], [ AC_REQUIRE([AC_PROG_CC]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles @@ -859,13 +1114,17 @@ int main () changequote(,)dnl case "$host_os" in netbsd[1-3]* | netbsdelf[1-3]* | netbsdaout[1-3]* | netbsdcoff[1-3]*) - gl_cv_func_printf_positions="guessing no";; - beos*) gl_cv_func_printf_positions="guessing no";; - # Guess yes on Android. - linux*-android*) gl_cv_func_printf_positions="guessing yes";; - # Guess no on native Windows. - mingw* | pw*) gl_cv_func_printf_positions="guessing no";; - *) gl_cv_func_printf_positions="guessing yes";; + gl_cv_func_printf_positions="guessing no";; + beos*) + gl_cv_func_printf_positions="guessing no";; + # Guess yes on Android. + linux*-android*) + gl_cv_func_printf_positions="guessing yes";; + # Guess no on native Windows. + mingw* | windows* | pw*) + gl_cv_func_printf_positions="guessing no";; + *) + gl_cv_func_printf_positions="guessing yes";; esac changequote([,])dnl ]) @@ -900,13 +1159,13 @@ int main () [ changequote(,)dnl case "$host_os" in - cygwin*) gl_cv_func_printf_flag_grouping="guessing no";; - netbsd*) gl_cv_func_printf_flag_grouping="guessing no";; - # Guess no on Android. - linux*-android*) gl_cv_func_printf_flag_grouping="guessing no";; - # Guess no on native Windows. - mingw* | pw*) gl_cv_func_printf_flag_grouping="guessing no";; - *) gl_cv_func_printf_flag_grouping="guessing yes";; + cygwin*) gl_cv_func_printf_flag_grouping="guessing no";; + netbsd*) gl_cv_func_printf_flag_grouping="guessing no";; + # Guess no on Android. + linux*-android*) gl_cv_func_printf_flag_grouping="guessing no";; + # Guess no on native Windows. + mingw* | windows* | pw*) gl_cv_func_printf_flag_grouping="guessing no";; + *) gl_cv_func_printf_flag_grouping="guessing yes";; esac changequote([,])dnl ]) @@ -943,16 +1202,16 @@ int main () [ changequote(,)dnl case "$host_os" in - # Guess yes on HP-UX 11. - hpux11*) gl_cv_func_printf_flag_leftadjust="guessing yes";; - # Guess no on HP-UX 10 and older. - hpux*) gl_cv_func_printf_flag_leftadjust="guessing no";; - # Guess yes on Android. - linux*-android*) gl_cv_func_printf_flag_leftadjust="guessing yes";; - # Guess yes on native Windows. - mingw*) gl_cv_func_printf_flag_leftadjust="guessing yes";; - # Guess yes otherwise. - *) gl_cv_func_printf_flag_leftadjust="guessing yes";; + # Guess yes on HP-UX 11. + hpux11*) gl_cv_func_printf_flag_leftadjust="guessing yes";; + # Guess no on HP-UX 10 and older. + hpux*) gl_cv_func_printf_flag_leftadjust="guessing no";; + # Guess yes on Android. + linux*-android*) gl_cv_func_printf_flag_leftadjust="guessing yes";; + # Guess yes on native Windows. + mingw* | windows*) gl_cv_func_printf_flag_leftadjust="guessing yes";; + # Guess yes otherwise. + *) gl_cv_func_printf_flag_leftadjust="guessing yes";; esac changequote([,])dnl ]) @@ -990,18 +1249,62 @@ int main () [ changequote(,)dnl case "$host_os" in - # Guess yes on glibc systems. - *-gnu* | gnu*) gl_cv_func_printf_flag_zero="guessing yes";; - # Guess yes on musl systems. - *-musl*) gl_cv_func_printf_flag_zero="guessing yes";; - # Guess yes on BeOS. - beos*) gl_cv_func_printf_flag_zero="guessing yes";; - # Guess no on Android. - linux*-android*) gl_cv_func_printf_flag_zero="guessing no";; - # Guess no on native Windows. - mingw*) gl_cv_func_printf_flag_zero="guessing no";; - # If we don't know, obey --enable-cross-guesses. - *) gl_cv_func_printf_flag_zero="$gl_cross_guess_normal";; + # Guess yes on glibc systems. + *-gnu* | gnu*) gl_cv_func_printf_flag_zero="guessing yes";; + # Guess yes on musl systems. + *-musl* | midipix*) gl_cv_func_printf_flag_zero="guessing yes";; + # Guess yes on BeOS. + beos*) gl_cv_func_printf_flag_zero="guessing yes";; + # Guess no on Android. + linux*-android*) gl_cv_func_printf_flag_zero="guessing no";; + # Guess no on native Windows. + mingw* | windows*) gl_cv_func_printf_flag_zero="guessing no";; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_printf_flag_zero="$gl_cross_guess_normal";; + esac +changequote([,])dnl + ]) + ]) +]) + +dnl Test whether the *printf family of functions supports the # flag with a +dnl zero precision and a zero value in the 'x' and 'X' directives correctly. +dnl ISO C and POSIX specify that for the 'd', 'i', 'b', 'o', 'u', 'x', 'X' +dnl directives: "The result of converting a zero value with a precision of +dnl zero is no characters." But on Mac OS X 10.5, for the 'x', 'X' directives, +dnl when a # flag is present, the output is "0" instead of "". +dnl Result is gl_cv_func_printf_flag_alt_precision_zero. + +AC_DEFUN([gl_PRINTF_FLAG_ALT_PRECISION_ZERO], +[ + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CACHE_CHECK([whether printf supports the alternative flag with a zero precision], + [gl_cv_func_printf_flag_alt_precision_zero], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include <stdio.h> +static char buf[10]; +int main () +{ + int result = 0; + if (sprintf (buf, "%#.0x %d", 0, 33, 44) > 0 + 3) + result |= 1; + return result; +}]])], + [gl_cv_func_printf_flag_alt_precision_zero=yes], + [gl_cv_func_printf_flag_alt_precision_zero=no], + [ +changequote(,)dnl + case "$host_os" in + # Guess no only on macOS 10..12 systems. + darwin[0-9] | darwin[0-9].* | \ + darwin1[0-9] | darwin1[0-9].* | \ + darwin2[0-1] | darwin2[0-1].*) + gl_cv_func_printf_flag_alt_precision_zero="guessing no" ;; + darwin*) gl_cv_func_printf_flag_alt_precision_zero="guessing yes" ;; + *) gl_cv_func_printf_flag_alt_precision_zero="guessing yes" ;; esac changequote([,])dnl ]) @@ -1054,12 +1357,12 @@ int main () changequote(,)dnl case "$host_os" in # Guess no only on Solaris, native Windows, and BeOS systems. - solaris*) gl_cv_func_printf_precision="guessing no" ;; - mingw* | pw*) gl_cv_func_printf_precision="guessing no" ;; - beos*) gl_cv_func_printf_precision="guessing no" ;; - # Guess yes on Android. - linux*-android*) gl_cv_func_printf_precision="guessing yes" ;; - *) gl_cv_func_printf_precision="guessing yes" ;; + solaris*) gl_cv_func_printf_precision="guessing no" ;; + mingw* | windows* | pw*) gl_cv_func_printf_precision="guessing no" ;; + beos*) gl_cv_func_printf_precision="guessing no" ;; + # Guess yes on Android. + linux*-android*) gl_cv_func_printf_precision="guessing yes" ;; + *) gl_cv_func_printf_precision="guessing yes" ;; esac changequote([,])dnl ]) @@ -1239,7 +1542,7 @@ changequote(,)dnl # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on musl systems. - *-musl*) gl_cv_func_snprintf_truncation_c99="guessing yes";; + *-musl* | midipix*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess yes on FreeBSD >= 5. freebsd[1-4].*) gl_cv_func_snprintf_truncation_c99="guessing no";; freebsd* | kfreebsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";; @@ -1275,7 +1578,7 @@ changequote(,)dnl # Guess yes on Android. linux*-android*) gl_cv_func_snprintf_truncation_c99="guessing yes";; # Guess no on native Windows. - mingw*) gl_cv_func_snprintf_truncation_c99="guessing no";; + mingw* | windows*) gl_cv_func_snprintf_truncation_c99="guessing no";; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_snprintf_truncation_c99="$gl_cross_guess_normal";; esac @@ -1344,7 +1647,7 @@ changequote(,)dnl # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on musl systems. - *-musl*) gl_cv_func_snprintf_retval_c99="guessing yes";; + *-musl* | midipix*) gl_cv_func_snprintf_retval_c99="guessing yes";; # Guess yes on FreeBSD >= 5. freebsd[1-4].*) gl_cv_func_snprintf_retval_c99="guessing no";; freebsd* | kfreebsd*) gl_cv_func_snprintf_retval_c99="guessing yes";; @@ -1372,7 +1675,8 @@ changequote(,)dnl linux*-android*) gl_cv_func_snprintf_retval_c99="guessing yes";; changequote([,])dnl # Guess yes on MSVC, no on mingw. - mingw*) AC_EGREP_CPP([Known], [ + windows*-msvc*) gl_cv_func_snprintf_retval_c99="guessing yes" ;; + mingw* | windows*) AC_EGREP_CPP([Known], [ #ifdef _MSC_VER Known #endif @@ -1401,6 +1705,7 @@ AC_DEFUN([gl_SNPRINTF_DIRECTIVE_N], [ AC_RUN_IFELSE( [AC_LANG_SOURCE([[ +#include <signal.h> #include <stdio.h> #include <string.h> #if HAVE_SNPRINTF @@ -1417,11 +1722,18 @@ static int my_snprintf (char *buf, int size, const char *format, ...) return ret; } #endif +static void +abort_handler (int sig) +{ + (void) sig; + _exit (1); +} static char fmtstring[10]; static char buf[100]; int main () { int count = -1; + signal (SIGABRT, abort_handler); /* Copy the format string. Some systems (glibc with _FORTIFY_SOURCE=2) support %n in format strings in read-only memory but not in writable memory. */ @@ -1447,7 +1759,7 @@ int main () ;; changequote(,)dnl # Guess yes on musl systems. - *-musl*) gl_cv_func_snprintf_directive_n="guessing yes";; + *-musl* | midipix*) gl_cv_func_snprintf_directive_n="guessing yes";; # Guess yes on FreeBSD >= 5. freebsd[1-4].*) gl_cv_func_snprintf_directive_n="guessing no";; freebsd* | kfreebsd*) gl_cv_func_snprintf_directive_n="guessing yes";; @@ -1476,7 +1788,7 @@ changequote(,)dnl # Guess no on Android. linux*-android*) gl_cv_func_snprintf_directive_n="guessing no";; # Guess no on native Windows. - mingw*) gl_cv_func_snprintf_directive_n="guessing no";; + mingw* | windows*) gl_cv_func_snprintf_directive_n="guessing no";; # If we don't know, obey --enable-cross-guesses. *) gl_cv_func_snprintf_directive_n="$gl_cross_guess_normal";; changequote([,])dnl @@ -1524,11 +1836,11 @@ int main() [gl_cv_func_snprintf_size1=yes], [gl_cv_func_snprintf_size1=no], [case "$host_os" in - # Guess yes on Android. - linux*-android*) gl_cv_func_snprintf_size1="guessing yes" ;; - # Guess yes on native Windows. - mingw*) gl_cv_func_snprintf_size1="guessing yes" ;; - *) gl_cv_func_snprintf_size1="guessing yes" ;; + # Guess yes on Android. + linux*-android*) gl_cv_func_snprintf_size1="guessing yes" ;; + # Guess yes on native Windows. + mingw* | windows*) gl_cv_func_snprintf_size1="guessing yes" ;; + *) gl_cv_func_snprintf_size1="guessing yes" ;; esac ]) ]) @@ -1601,128 +1913,318 @@ int main() [ changequote(,)dnl case "$host_os" in - # Guess yes on glibc systems. - *-gnu* | gnu*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; - # Guess yes on musl systems. - *-musl*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; - # Guess yes on FreeBSD >= 5. - freebsd[1-4].*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; - freebsd* | kfreebsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; - midnightbsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; - # Guess yes on Mac OS X >= 10.3. - darwin[1-6].*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; - darwin*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; - # Guess yes on Cygwin. - cygwin*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; - # Guess yes on Solaris >= 2.6. + # Guess yes on glibc systems. + *-gnu* | gnu*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; + # Guess yes on musl systems. + *-musl* | midipix*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; + # Guess yes on FreeBSD >= 5. + freebsd[1-4].*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; + freebsd* | kfreebsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; + midnightbsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; + # Guess yes on Mac OS X >= 10.3. + darwin[1-6].*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; + darwin*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; + # Guess yes on Cygwin. + cygwin*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; + # Guess yes on Solaris >= 2.6. solaris2.[0-5] | solaris2.[0-5].*) - gl_cv_func_vsnprintf_zerosize_c99="guessing no";; - solaris*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; - # Guess yes on AIX >= 4. - aix[1-3]*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; - aix*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; - # Guess yes on IRIX >= 6.5. - irix6.5) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; - # Guess yes on NetBSD >= 3. + gl_cv_func_vsnprintf_zerosize_c99="guessing no";; + solaris*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; + # Guess yes on AIX >= 4. + aix[1-3]*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; + aix*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; + # Guess yes on IRIX >= 6.5. + irix6.5) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; + # Guess yes on NetBSD >= 3. netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) - gl_cv_func_vsnprintf_zerosize_c99="guessing no";; - netbsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; - # Guess yes on BeOS. - beos*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; - # Guess yes on Android. - linux*-android*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; - # Guess yes on native Windows. - mingw* | pw*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; - # If we don't know, obey --enable-cross-guesses. - *) gl_cv_func_vsnprintf_zerosize_c99="$gl_cross_guess_normal";; + gl_cv_func_vsnprintf_zerosize_c99="guessing no";; + netbsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; + # Guess yes on BeOS. + beos*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; + # Guess yes on Android. + linux*-android*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; + # Guess yes on native Windows. + mingw* | windows* | pw*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_vsnprintf_zerosize_c99="$gl_cross_guess_normal";; esac changequote([,])dnl ]) ]) ]) +dnl Test whether the swprintf function works correctly when it produces output +dnl that contains null wide characters. +dnl Result is gl_cv_func_swprintf_works. + +AC_DEFUN([gl_SWPRINTF_WORKS], +[ + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CHECK_FUNCS_ONCE([swprintf]) + AC_CACHE_CHECK([whether swprintf works], + [gl_cv_func_swprintf_works], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#ifndef __USE_MINGW_ANSI_STDIO +# define __USE_MINGW_ANSI_STDIO 1 +#endif +#include <stdio.h> +#include <wchar.h> +int main() +{ + int result = 0; + { /* This test fails on musl libc 1.2.3, FreeBSD, NetBSD, OpenBSD, macOS, AIX. */ + wchar_t buf[5] = { 0xBEEF, 0xBEEF, 0xBEEF, 0xBEEF, 0xBEEF }; + int ret = swprintf (buf, 4, L"%cz", '\0'); + /* Expected result: + ret = 2, buf[0] = 0x0, buf[1] = 0x7a, buf[2] = 0x0, buf[3] = 0xbeef + musl libc 1.2.3: + ret = 2, buf[0] = 0x0, buf[1] = 0x0, buf[2] = 0x0, buf[3] = 0x0 + Reported at <https://www.openwall.com/lists/musl/2023/03/22/9>. + FreeBSD 13.1, NetBSD 9.0, OpenBSD 7.2, macOS 12.5, AIX 7.2: + ret = 2, buf[0] = 0x0, buf[1] = 0xbeef, buf[2] = 0xbeef, buf[3] = 0xbeef + */ + if (ret < 0 || buf[1] != 'z') + result |= 1; + } + { /* This test fails on mingw. */ + wchar_t buf[2]; + int ret = swprintf (buf, 2, L"%lc", (wint_t)0); + /* Expected: ret = 1 + mingw: ret = 0 + */ + if (ret != 1) + result |= 2; + } + return result; +}]])], + [gl_cv_func_swprintf_works=yes], + [gl_cv_func_swprintf_works=no], + [case "$host_os" in + # Guess yes on glibc systems. + *-gnu* | gnu*) gl_cv_func_swprintf_works="guessing yes";; + # Guess no on musl systems. + *-musl* | midipix*) gl_cv_func_swprintf_works="guessing no";; + # Guess no on FreeBSD, NetBSD, OpenBSD, macOS, AIX. + freebsd* | midnightbsd* | netbsd* | openbsd* | darwin* | aix*) + gl_cv_func_swprintf_works="guessing no";; + # Guess no on native Windows. + mingw* | windows* | pw*) gl_cv_func_swprintf_works="guessing no";; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_swprintf_works="$gl_cross_guess_normal";; + esac + ]) + ]) +]) + +dnl Test whether the *wprintf family of functions supports the 'a' and 'A' +dnl conversion specifier for hexadecimal output of 'long double' numbers. +dnl (ISO C99, POSIX:2001) +dnl Result is gl_cv_func_swprintf_directive_la. + +AC_DEFUN([gl_SWPRINTF_DIRECTIVE_LA], +[ + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CACHE_CHECK([whether swprintf supports the 'La' and 'LA' directives], + [gl_cv_func_swprintf_directive_la], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include <stdio.h> +#include <wchar.h> +static wchar_t buf[100]; +int main () +{ + int result = 0; + /* This catches a glibc 2.15 and Haiku 2022 bug. */ + if (swprintf (buf, sizeof (buf) / sizeof (wchar_t), + L"%La %d", 3.1416015625L, 33, 44, 55) < 0 + || (wcscmp (buf, L"0x1.922p+1 33") != 0 + && wcscmp (buf, L"0x3.244p+0 33") != 0 + && wcscmp (buf, L"0x6.488p-1 33") != 0 + && wcscmp (buf, L"0xc.91p-2 33") != 0)) + result |= 1; + return result; +}]])], + [gl_cv_func_swprintf_directive_la=yes], + [gl_cv_func_swprintf_directive_la=no], + [case "$host_os" in + # Guess yes on glibc >= 2.17 systems. + *-gnu* | gnu*) + AC_EGREP_CPP([Unlucky], [ + #include <features.h> + #ifdef __GNU_LIBRARY__ + #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 16) || (__GLIBC__ > 2)) && !defined __UCLIBC__ + Unlucky + #endif + #endif + ], + [gl_cv_func_swprintf_directive_la="guessing yes"], + [gl_cv_func_swprintf_directive_la="guessing no"]) + ;; + # Guess yes on musl systems. + *-musl* | midipix*) gl_cv_func_swprintf_directive_la="guessing yes";; + # Guess yes on Android. + linux*-android*) gl_cv_func_swprintf_directive_la="guessing yes";; + # Guess no on native Windows. + mingw* | windows*) gl_cv_func_swprintf_directive_la="guessing no";; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_swprintf_directive_la="$gl_cross_guess_normal";; + esac + ]) + ]) +]) + +dnl Test whether the *wprintf family of functions supports the 'lc' conversion +dnl specifier for all wide characters. +dnl (ISO C11, POSIX:2001) +dnl Result is gl_cv_func_swprintf_directive_lc. + +AC_DEFUN([gl_SWPRINTF_DIRECTIVE_LC], +[ + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CACHE_CHECK([whether swprintf supports the 'lc' directive], + [gl_cv_func_swprintf_directive_lc], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include <stdio.h> +#include <wchar.h> +static wchar_t buf[100]; +static wint_t L_invalid = (wchar_t) 0x76543210; +int main () +{ + int result = 0; + /* This catches a musl libc 1.2.4, Android bug. + Reported at <https://www.openwall.com/lists/musl/2023/06/12/3>. */ + if (swprintf (buf, sizeof (buf) / sizeof (wchar_t), + L"%lc %d", L_invalid, 33, 44, 55) < 0) + result |= 1; + return result; +}]])], + [gl_cv_func_swprintf_directive_lc=yes], + [gl_cv_func_swprintf_directive_lc=no], + [case "$host_os" in + # Guess yes on glibc systems. + *-gnu* | gnu*) gl_cv_func_swprintf_directive_lc="guessing yes";; + # Guess no on musl systems. + *-musl* | midipix*) gl_cv_func_swprintf_directive_lc="guessing no";; + # Guess no on Android. + linux*-android*) gl_cv_func_swprintf_directive_lc="guessing no";; + # Guess yes on native Windows. + mingw* | windows*) gl_cv_func_swprintf_directive_lc="guessing yes";; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_swprintf_directive_lc="$gl_cross_guess_normal";; + esac + ]) + ]) +]) + dnl The results of these tests on various platforms are: dnl dnl 1 = gl_PRINTF_SIZES_C99 -dnl 2 = gl_PRINTF_LONG_DOUBLE -dnl 3 = gl_PRINTF_INFINITE -dnl 4 = gl_PRINTF_INFINITE_LONG_DOUBLE -dnl 5 = gl_PRINTF_DIRECTIVE_A -dnl 6 = gl_PRINTF_DIRECTIVE_F -dnl 7 = gl_PRINTF_DIRECTIVE_N -dnl 8 = gl_PRINTF_DIRECTIVE_LS -dnl 9 = gl_PRINTF_POSITIONS -dnl 10 = gl_PRINTF_FLAG_GROUPING -dnl 11 = gl_PRINTF_FLAG_LEFTADJUST -dnl 12 = gl_PRINTF_FLAG_ZERO -dnl 13 = gl_PRINTF_PRECISION -dnl 14 = gl_PRINTF_ENOMEM -dnl 15 = gl_SNPRINTF_PRESENCE -dnl 16 = gl_SNPRINTF_TRUNCATION_C99 -dnl 17 = gl_SNPRINTF_RETVAL_C99 -dnl 18 = gl_SNPRINTF_DIRECTIVE_N -dnl 19 = gl_SNPRINTF_SIZE1 -dnl 20 = gl_VSNPRINTF_ZEROSIZE_C99 +dnl 2 = gl_PRINTF_SIZES_C23 +dnl 3 = gl_PRINTF_LONG_DOUBLE +dnl 4 = gl_PRINTF_INFINITE +dnl 5 = gl_PRINTF_INFINITE_LONG_DOUBLE +dnl 6 = gl_PRINTF_DIRECTIVE_A +dnl 7 = gl_PRINTF_DIRECTIVE_B +dnl 8 = gl_PRINTF_DIRECTIVE_UPPERCASE_B +dnl 9 = gl_PRINTF_DIRECTIVE_F +dnl 10 = gl_PRINTF_DIRECTIVE_N +dnl 11 = gl_PRINTF_DIRECTIVE_LS +dnl 12 = gl_PRINTF_DIRECTIVE_LC +dnl 13 = gl_PRINTF_POSITIONS +dnl 14 = gl_PRINTF_FLAG_GROUPING +dnl 15 = gl_PRINTF_FLAG_LEFTADJUST +dnl 16 = gl_PRINTF_FLAG_ZERO +dnl 17 = gl_PRINTF_FLAG_ALT_PRECISION_ZERO +dnl 18 = gl_PRINTF_PRECISION +dnl 19 = gl_PRINTF_ENOMEM +dnl 20 = gl_SNPRINTF_PRESENCE +dnl 21 = gl_SNPRINTF_TRUNCATION_C99 +dnl 22 = gl_SNPRINTF_RETVAL_C99 +dnl 23 = gl_SNPRINTF_DIRECTIVE_N +dnl 24 = gl_SNPRINTF_SIZE1 +dnl 25 = gl_VSNPRINTF_ZEROSIZE_C99 +dnl 26 = gl_SWPRINTF_WORKS +dnl 27 = gl_SWPRINTF_DIRECTIVE_LA +dnl 28 = gl_SWPRINTF_DIRECTIVE_LC dnl dnl 1 = checking whether printf supports size specifiers as in C99... -dnl 2 = checking whether printf supports 'long double' arguments... -dnl 3 = checking whether printf supports infinite 'double' arguments... -dnl 4 = checking whether printf supports infinite 'long double' arguments... -dnl 5 = checking whether printf supports the 'a' and 'A' directives... -dnl 6 = checking whether printf supports the 'F' directive... -dnl 7 = checking whether printf supports the 'n' directive... -dnl 8 = checking whether printf supports the 'ls' directive... -dnl 9 = checking whether printf supports POSIX/XSI format strings with positions... -dnl 10 = checking whether printf supports the grouping flag... -dnl 11 = checking whether printf supports the left-adjust flag correctly... -dnl 12 = checking whether printf supports the zero flag correctly... -dnl 13 = checking whether printf supports large precisions... -dnl 14 = checking whether printf survives out-of-memory conditions... -dnl 15 = checking for snprintf... -dnl 16 = checking whether snprintf truncates the result as in C99... -dnl 17 = checking whether snprintf returns a byte count as in C99... -dnl 18 = checking whether snprintf fully supports the 'n' directive... -dnl 19 = checking whether snprintf respects a size of 1... -dnl 20 = checking whether vsnprintf respects a zero size as in C99... +dnl 2 = checking whether printf supports size specifiers as in C23... +dnl 3 = checking whether printf supports 'long double' arguments... +dnl 4 = checking whether printf supports infinite 'double' arguments... +dnl 5 = checking whether printf supports infinite 'long double' arguments... +dnl 6 = checking whether printf supports the 'a' and 'A' directives... +dnl 7 = checking whether printf supports the 'b' directive... +dnl 8 = checking whether printf supports the 'B' directive... +dnl 9 = checking whether printf supports the 'F' directive... +dnl 10 = checking whether printf supports the 'n' directive... +dnl 11 = checking whether printf supports the 'ls' directive... +dnl 12 = checking whether printf supports the 'lc' directive correctly... +dnl 13 = checking whether printf supports POSIX/XSI format strings with positions... +dnl 14 = checking whether printf supports the grouping flag... +dnl 15 = checking whether printf supports the left-adjust flag correctly... +dnl 16 = checking whether printf supports the zero flag correctly... +dnl 17 = checking whether printf supports the alternative flag with a zero precision... +dnl 18 = checking whether printf supports large precisions... +dnl 19 = checking whether printf survives out-of-memory conditions... +dnl 20 = checking for snprintf... +dnl 21 = checking whether snprintf truncates the result as in C99... +dnl 22 = checking whether snprintf returns a byte count as in C99... +dnl 23 = checking whether snprintf fully supports the 'n' directive... +dnl 24 = checking whether snprintf respects a size of 1... +dnl 25 = checking whether vsnprintf respects a zero size as in C99... +dnl 26 = checking whether swprintf works... +dnl 27 = checking whether swprintf supports the 'La' and 'LA' directives... +dnl 28 = checking whether swprintf supports the 'lc' directive... dnl dnl . = yes, # = no. dnl -dnl 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -dnl glibc 2.5 . . . . . . . . . . . . . . . . . . . . -dnl glibc 2.3.6 . . . . # . . . . . . . . . . . . . . . -dnl FreeBSD 13.0 . . . . # . . . . . . . . # . . . . . . -dnl FreeBSD 5.4, 6.1 . . . . # . . . . . . # . # . . . . . . -dnl Mac OS X 10.13.5 . . . # # . # . . . . . . . . . . # . . -dnl Mac OS X 10.5.8 . . . # # . . . . . . # . . . . . . . . -dnl Mac OS X 10.3.9 . . . . # . . . . . . # . # . . . . . . -dnl OpenBSD 6.0, 6.7 . . . . # . . . . . . . . # . . . . . . -dnl OpenBSD 3.9, 4.0 . . # # # # . # . # . # . # . . . . . . -dnl Cygwin 1.7.0 (2009) . . . # . . . ? . . . . . ? . . . . . . -dnl Cygwin 1.5.25 (2008) . . . # # . . # . . . . . # . . . . . . -dnl Cygwin 1.5.19 (2006) # . . # # # . # . # . # # # . . . . . . -dnl Solaris 11.4 . . # # # . . # . . . # . . . . . . . . -dnl Solaris 11.3 . . . . # . . # . . . . . . . . . . . . -dnl Solaris 11.0 . . # # # . . # . . . # . . . . . . . . -dnl Solaris 10 . . # # # . . # . . . # # . . . . . . . -dnl Solaris 2.6 ... 9 # . # # # # . # . . . # # . . . # . . . -dnl Solaris 2.5.1 # . # # # # . # . . . # . . # # # # # # -dnl AIX 7.1 . . # # # . . . . . . # # . . . . . . . -dnl AIX 5.2 . . # # # . . . . . . # . . . . . . . . -dnl AIX 4.3.2, 5.1 # . # # # # . . . . . # . . . . # . . . -dnl HP-UX 11.31 . . . . # . . . . . . # . . . . # # . . -dnl HP-UX 11.{00,11,23} # . . . # # . . . . . # . . . . # # . # -dnl HP-UX 10.20 # . # . # # . ? . . # # . . . . # # ? # -dnl IRIX 6.5 # . # # # # . # . . . # . . . . # . . . -dnl OSF/1 5.1 # . # # # # . . . . . # . . . . # . . # -dnl OSF/1 4.0d # . # # # # . . . . . # . . # # # # # # -dnl NetBSD 9.0 . . . . # . . . . . . . . . . . . . . . -dnl NetBSD 5.0 . . . # # . . . . . . # . # . . . . . . -dnl NetBSD 4.0 . ? ? ? ? ? . ? . ? ? ? ? ? . . . ? ? ? -dnl NetBSD 3.0 . . . . # # . ? # # ? # . # . . . . . . -dnl Haiku . . . # # # . # . . . . . ? . . ? . . . -dnl BeOS # # . # # # . ? # . ? . # ? . . ? . . . -dnl Android 4.3 . . # # # # # # . # . # . # . . . # . . -dnl old mingw / msvcrt # # # # # # . . # # . # # ? . # # # . . -dnl MSVC 9 # # # # # # # . # # . # # ? # # # # . . -dnl mingw 2009-2011 . # . # . . . . # # . . . ? . . . . . . -dnl mingw-w64 2011 # # # # # # . . # # . # # ? . # # # . . +dnl 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 +dnl musl libc 1.2.3 . # . . . . # # . . . # . . . . ? . . . . . . . . # . # +dnl glibc 2.35 . # . . . . . . . . . . . . . . . . . . . . . . . . . . +dnl glibc 2.5 . # . . . . # # . . . . . . . . . . . . . . . . . . # . +dnl glibc 2.3.6 . # . . . # # # . . . . . . . . . . . . . . . . . . # . +dnl FreeBSD 14.0 . . . . . # . . . . . . . . . . . . # . . . . . . # . # +dnl FreeBSD 13.0 . # . . . # # # . . . . . . . . . . # . . . . . . # . # +dnl FreeBSD 5.4, 6.1 . # . . . # # # . . . . . . . # ? . # . . . . . . # ? ? +dnl Mac OS X 10.13.5 . # . . # # # # . # . . . . . . . . . . . . # . . # ? ? +dnl Mac OS X 10.5.8 . # . . # # # # . . . . . . . # # . . . . . . . . # ? ? +dnl Mac OS X 10.3.9 . # . . . # # # . . . . . . . # # . # . . . . . . # ? ? +dnl OpenBSD 6.0, 6.7 . # . . . # # # . . . . . . . . . . # . . . . . . # . # +dnl OpenBSD 3.9, 4.0 . # . # # # # # # . # . . # . # ? . # . . . . . . # ? ? +dnl Cygwin 1.7.0 (2009) . # . . # . # # . . ? ? . . . . ? . ? . . . . . . ? ? ? +dnl Cygwin 1.5.25 (2008) . # . . # # # # . . # ? . . . . ? . # . . . . . . ? ? ? +dnl Cygwin 1.5.19 (2006) # # . . # # # # # . # ? . # . # ? # # . . . . . . ? ? ? +dnl Solaris 11.4 . # . # # # # # . . # . . . . # . . . . . . . . . . # . +dnl Solaris 11.3 . # . . . # # # . . # . . . . . . . . . . . . . . . # . +dnl Solaris 11.0 . # . # # # # # . . # . . . . # . . . . . . . . . ? ? ? +dnl Solaris 10 . # . # # # # # . . # . . . . # . # . . . . . . . . # . +dnl Solaris 2.6 ... 9 # # . # # # # # # . # . . . . # ? # . . . # . . . ? ? ? +dnl Solaris 2.5.1 # # . # # # # # # . # . . . . # ? . . # # # # # # ? ? ? +dnl AIX 7.1 . # . # # # # # . . . . . . . # . # . . . . . . . # . . +dnl AIX 5.2 . # . # # # # # . . . . . . . # ? . . . . . . . . # ? ? +dnl AIX 4.3.2, 5.1 # # . # # # # # # . . . . . . # ? . . . . # . . . # ? ? +dnl HP-UX 11.31 . # . . . # # # . . . ? . . . # ? . . . . # # . . ? ? ? +dnl HP-UX 11.{00,11,23} # # . . . # # # # . . ? . . . # ? . . . . # # . # ? ? ? +dnl HP-UX 10.20 # # . # . # # # # . ? ? . . # # ? . . . . # # ? # ? ? ? +dnl IRIX 6.5 # # . # # # # # # . # . . . . # ? . . . . # . . . # ? ? +dnl OSF/1 5.1 # # . # # # # # # . . ? . . . # ? . . . . # . . # ? ? ? +dnl OSF/1 4.0d # # . # # # # # # . . ? . . . # ? . . # # # # # # ? ? ? +dnl NetBSD 9.0 . # . . . # # # . . . . . . . . . . . . . . . . . # . # +dnl NetBSD 5.0 . # . . # # # # . . . . . . . # ? . # . . . . . . # ? ? +dnl NetBSD 4.0 . # ? ? ? ? # # ? . ? . . ? ? ? ? ? ? . . . ? ? ? # ? ? +dnl NetBSD 3.0 . # . . . # # # # . ? . # # ? # ? . # . . . . . . # ? ? +dnl Haiku . # . . # # # # # . # ? . . . . ? . ? . . ? . . . . # . +dnl BeOS # # # . # # # # # . ? ? # . ? . ? # ? . . ? . . . ? ? ? +dnl Android 4.3 . # . # # # # # # # # ? . # . # ? . # . . . # . . ? ? ? +dnl old mingw / msvcrt # # # # # # # # # . . ? # # . # ? # ? . # # # . . # ? ? +dnl MSVC 9 # # # # # # # # # # . ? # # . # ? # ? # # # # . . # ? ? +dnl mingw 2009-2011 . # # . # . # # . . . ? # # . . ? . ? . . . . . . # ? ? +dnl mingw-w64 2011 # # # # # # # # # . . ? # # . # ? # ? . # # # . . # ? ? diff --git a/gnulib-m4/pselect.m4 b/gnulib-m4/pselect.m4 index 86114416..005b722b 100644 --- a/gnulib-m4/pselect.m4 +++ b/gnulib-m4/pselect.m4 @@ -1,5 +1,5 @@ -# pselect.m4 serial 10 -dnl Copyright (C) 2011-2022 Free Software Foundation, Inc. +# pselect.m4 serial 11 +dnl Copyright (C) 2011-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -54,6 +54,8 @@ AC_DEFUN([gl_FUNC_PSELECT], case "$host_os" in # Guess yes on Linux systems. linux-* | linux) gl_cv_func_pselect_detects_ebadf="guessing yes" ;; + # Guess yes on systems that emulate the Linux system calls. + midipix*) gl_cv_func_pselect_detects_ebadf="guessing yes" ;; # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_pselect_detects_ebadf="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. diff --git a/gnulib-m4/pthread-thread.m4 b/gnulib-m4/pthread-thread.m4 index 969628ea..37855587 100644 --- a/gnulib-m4/pthread-thread.m4 +++ b/gnulib-m4/pthread-thread.m4 @@ -1,5 +1,5 @@ -# pthread-thread.m4 serial 2 -dnl Copyright (C) 2019-2022 Free Software Foundation, Inc. +# pthread-thread.m4 serial 3 +dnl Copyright (C) 2019-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -9,7 +9,7 @@ AC_DEFUN([gl_PTHREAD_THREAD], AC_REQUIRE([gl_PTHREAD_H]) AC_REQUIRE([AC_CANONICAL_HOST]) - if { case "$host_os" in mingw*) true;; *) false;; esac; } \ + if { case "$host_os" in mingw* | windows*) true;; *) false;; esac; } \ && test $gl_threads_api = windows; then dnl Choose function names that don't conflict with the mingw-w64 winpthreads dnl library. diff --git a/gnulib-m4/pthread_h.m4 b/gnulib-m4/pthread_h.m4 index 4146aef3..c33afa0c 100644 --- a/gnulib-m4/pthread_h.m4 +++ b/gnulib-m4/pthread_h.m4 @@ -1,5 +1,5 @@ -# pthread_h.m4 serial 8 -dnl Copyright (C) 2009-2022 Free Software Foundation, Inc. +# pthread_h.m4 serial 9 +dnl Copyright (C) 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -20,7 +20,7 @@ AC_DEFUN_ONCE([gl_PTHREAD_H], dnl ignore the <pthread.h> from the mingw-w64 winpthreads library. m4_ifdef([gl_][THREADLIB], [ AC_REQUIRE([gl_][THREADLIB]) - if { case "$host_os" in mingw*) true;; *) false;; esac; } \ + if { case "$host_os" in mingw* | windows*) true;; *) false;; esac; } \ && test $gl_threads_api = windows; then HAVE_PTHREAD_H=0 fi diff --git a/gnulib-m4/pthread_rwlock_rdlock.m4 b/gnulib-m4/pthread_rwlock_rdlock.m4 index 8ad78392..ddb58318 100644 --- a/gnulib-m4/pthread_rwlock_rdlock.m4 +++ b/gnulib-m4/pthread_rwlock_rdlock.m4 @@ -1,5 +1,5 @@ -# pthread_rwlock_rdlock.m4 serial 4 -dnl Copyright (C) 2017-2022 Free Software Foundation, Inc. +# pthread_rwlock_rdlock.m4 serial 8 +dnl Copyright (C) 2017-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -34,11 +34,11 @@ dnl https://sourceware.org/bugzilla/show_bug.cgi?id=13701 dnl https://bugzilla.redhat.com/show_bug.cgi?id=1410052 AC_DEFUN([gl_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER], [ - AC_REQUIRE([gl_THREADLIB_EARLY]) + AC_REQUIRE([gl_THREADLIB]) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles AC_CACHE_CHECK([whether pthread_rwlock_rdlock prefers a writer to a reader], [gl_cv_pthread_rwlock_rdlock_prefer_writer], - [save_LIBS="$LIBS" + [saved_LIBS="$LIBS" LIBS="$LIBS $LIBMULTITHREAD" AC_RUN_IFELSE( [AC_LANG_SOURCE([[ @@ -156,25 +156,25 @@ main () [gl_cv_pthread_rwlock_rdlock_prefer_writer=yes], [gl_cv_pthread_rwlock_rdlock_prefer_writer=no], [case "$host_os" in - # Guess no on glibc systems. - *-gnu* | gnu*) gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing no" ;; - # Guess no on musl systems. - *-musl*) gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing no" ;; - # Guess no on bionic systems. - *-android*) gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing no" ;; - # Guess yes on native Windows with the mingw-w64 winpthreads library. - # Guess no on native Windows with the gnulib windows-rwlock module. - mingw*) if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then - gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing yes" - else - gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing no" - fi - ;; - # If we don't know, obey --enable-cross-guesses. - *) gl_cv_pthread_rwlock_rdlock_prefer_writer="$gl_cross_guess_normal" ;; + # Guess no on glibc systems. + *-gnu* | gnu*) gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing no" ;; + # Guess no on musl systems. + *-musl* | midipix*) gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing no" ;; + # Guess no on bionic systems. + *-android*) gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing no" ;; + # Guess yes on native Windows with the mingw-w64 winpthreads library. + # Guess no on native Windows with the gnulib windows-rwlock module. + mingw* | windows*) if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then + gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing yes" + else + gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing no" + fi + ;; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_pthread_rwlock_rdlock_prefer_writer="$gl_cross_guess_normal" ;; esac ]) - LIBS="$save_LIBS" + LIBS="$saved_LIBS" ]) case "$gl_cv_pthread_rwlock_rdlock_prefer_writer" in *yes) diff --git a/gnulib-m4/pthread_sigmask.m4 b/gnulib-m4/pthread_sigmask.m4 index 0aa8c53f..cb2ee900 100644 --- a/gnulib-m4/pthread_sigmask.m4 +++ b/gnulib-m4/pthread_sigmask.m4 @@ -1,5 +1,5 @@ -# pthread_sigmask.m4 serial 21 -dnl Copyright (C) 2011-2022 Free Software Foundation, Inc. +# pthread_sigmask.m4 serial 23 +dnl Copyright (C) 2011-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -24,7 +24,7 @@ AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK], [gl_cv_func_pthread_sigmask_macro=no]) ]) - LIB_PTHREAD_SIGMASK= + PTHREAD_SIGMASK_LIB= if test $gl_cv_func_pthread_sigmask_macro = yes; then dnl pthread_sigmask is a dummy macro. @@ -47,7 +47,7 @@ AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK], if test -n "$LIBMULTITHREAD"; then AC_CACHE_CHECK([for pthread_sigmask in $LIBMULTITHREAD], [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD], - [gl_save_LIBS="$LIBS" + [gl_saved_LIBS="$LIBS" LIBS="$LIBS $LIBMULTITHREAD" AC_LINK_IFELSE( [AC_LANG_PROGRAM( @@ -58,11 +58,11 @@ AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK], ], [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=yes], [gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD=no]) - LIBS="$gl_save_LIBS" + LIBS="$gl_saved_LIBS" ]) if test $gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD = yes; then dnl pthread_sigmask is available with -pthread or -lpthread. - LIB_PTHREAD_SIGMASK="$LIBMULTITHREAD" + PTHREAD_SIGMASK_LIB="$LIBMULTITHREAD" else dnl pthread_sigmask is not available at all. HAVE_PTHREAD_SIGMASK=0 @@ -101,6 +101,9 @@ AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK], ]) fi + AC_SUBST([PTHREAD_SIGMASK_LIB]) + dnl For backward compatibility. + LIB_PTHREAD_SIGMASK="$PTHREAD_SIGMASK_LIB" AC_SUBST([LIB_PTHREAD_SIGMASK]) dnl We don't need a variable LTLIB_PTHREAD_SIGMASK, because when dnl "$gl_threads_api" = posix, $LTLIBMULTITHREAD and $LIBMULTITHREAD are the @@ -114,7 +117,7 @@ AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK], dnl On FreeBSD 13.0, MidnightBSD 1.1, HP-UX 11.31, Solaris 9, in programs dnl that are not linked with -lpthread, the pthread_sigmask() function dnl always returns 0 and has no effect. - if test -z "$LIB_PTHREAD_SIGMASK"; then + if test -z "$PTHREAD_SIGMASK_LIB"; then case " $LIBS " in *' -pthread '*) ;; *' -lpthread '*) ;; @@ -161,8 +164,8 @@ AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK], AC_CACHE_CHECK([whether pthread_sigmask returns error numbers], [gl_cv_func_pthread_sigmask_return_works], [ - gl_save_LIBS="$LIBS" - LIBS="$LIBS $LIB_PTHREAD_SIGMASK" + gl_saved_LIBS="$LIBS" + LIBS="$LIBS $PTHREAD_SIGMASK_LIB" AC_RUN_IFELSE( [AC_LANG_SOURCE([[ #include <pthread.h> @@ -185,7 +188,7 @@ int main () gl_cv_func_pthread_sigmask_return_works="guessing yes";; esac ]) - LIBS="$gl_save_LIBS" + LIBS="$gl_saved_LIBS" ]) case "$gl_cv_func_pthread_sigmask_return_works" in *no) @@ -208,13 +211,14 @@ int main () gl_cv_func_pthread_sigmask_unblock_works="guessing yes";; esac m4_ifdef([gl_][THREADLIB], - [dnl Link against $LIBMULTITHREAD, not only $LIB_PTHREAD_SIGMASK. + [dnl Link against $LIBMULTITHREAD, not only $PTHREAD_SIGMASK_LIB. dnl Otherwise we get a false positive on those platforms where dnl $gl_cv_func_pthread_sigmask_in_libc_works is "no". - gl_save_LIBS=$LIBS + gl_saved_LIBS=$LIBS LIBS="$LIBS $LIBMULTITHREAD"]) AC_RUN_IFELSE( [AC_LANG_SOURCE([[ +#include <limits.h> #include <pthread.h> #include <signal.h> #include <stdio.h> @@ -230,14 +234,16 @@ sigint_handler (int sig) int main () { sigset_t set; - int pid = getpid (); + pid_t pid = getpid (); char command[80]; + if (LONG_MAX < pid) + return 6; signal (SIGINT, sigint_handler); sigemptyset (&set); sigaddset (&set, SIGINT); if (!(pthread_sigmask (SIG_BLOCK, &set, NULL) == 0)) return 1; - sprintf (command, "sh -c 'sleep 1; kill -%d %d' &", SIGINT, pid); + sprintf (command, "sh -c 'sleep 1; kill -INT %ld' &", (long) pid); if (!(system (command) == 0)) return 2; sleep (2); @@ -252,7 +258,7 @@ int main () [:], [gl_cv_func_pthread_sigmask_unblock_works=no], [:]) - m4_ifdef([gl_][THREADLIB], [LIBS=$gl_save_LIBS]) + m4_ifdef([gl_][THREADLIB], [LIBS=$gl_saved_LIBS]) ]) case "$gl_cv_func_pthread_sigmask_unblock_works" in *no) diff --git a/gnulib-m4/putenv.m4 b/gnulib-m4/putenv.m4 index c7b45034..da6abec2 100644 --- a/gnulib-m4/putenv.m4 +++ b/gnulib-m4/putenv.m4 @@ -1,5 +1,5 @@ -# putenv.m4 serial 25 -dnl Copyright (C) 2002-2022 Free Software Foundation, Inc. +# putenv.m4 serial 27 +dnl Copyright (C) 2002-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -38,14 +38,14 @@ AC_DEFUN([gl_FUNC_PUTENV], [gl_cv_func_svid_putenv=no], [dnl When crosscompiling, assume putenv is broken. case "$host_os" in - # Guess yes on glibc systems. - *-gnu* | gnu*) gl_cv_func_svid_putenv="guessing yes" ;; - # Guess yes on musl systems. - *-musl*) gl_cv_func_svid_putenv="guessing yes" ;; - # Guess no on native Windows. - mingw*) gl_cv_func_svid_putenv="guessing no" ;; - # If we don't know, obey --enable-cross-guesses. - *) gl_cv_func_svid_putenv="$gl_cross_guess_normal" ;; + # Guess yes on glibc systems. + *-gnu* | gnu*) gl_cv_func_svid_putenv="guessing yes" ;; + # Guess yes on musl systems. + *-musl* | midipix*) gl_cv_func_svid_putenv="guessing yes" ;; + # Guess no on native Windows. + mingw* | windows*) gl_cv_func_svid_putenv="guessing no" ;; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_svid_putenv="$gl_cross_guess_normal" ;; esac ]) ]) diff --git a/gnulib-m4/raise.m4 b/gnulib-m4/raise.m4 index 0c78d095..08b9545b 100644 --- a/gnulib-m4/raise.m4 +++ b/gnulib-m4/raise.m4 @@ -1,5 +1,5 @@ # raise.m4 serial 4 -dnl Copyright (C) 2011-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2011-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/random.m4 b/gnulib-m4/random.m4 new file mode 100644 index 00000000..911c5d0e --- /dev/null +++ b/gnulib-m4/random.m4 @@ -0,0 +1,79 @@ +# random.m4 serial 8 +dnl Copyright (C) 2012-2024 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_FUNC_RANDOM], +[ + AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) + AC_REQUIRE([AC_CANONICAL_HOST]) + + dnl We can't use AC_CHECK_FUNC here, because random() is defined as a + dnl static inline function when compiling for Android 4.4 or older. + AC_CACHE_CHECK([for random], [gl_cv_func_random], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include <stdlib.h>]], + [[return random() == 0;]]) + ], + [gl_cv_func_random=yes], + [gl_cv_func_random=no]) + ]) + gl_CHECK_FUNCS_ANDROID([initstate], [[#include <stdlib.h>]]) + gl_CHECK_FUNCS_ANDROID([setstate], [[#include <stdlib.h>]]) + if test $gl_cv_func_random = no; then + HAVE_RANDOM=0 + HAVE_INITSTATE=0 + HAVE_SETSTATE=0 + else + if test $ac_cv_func_initstate = no; then + HAVE_INITSTATE=0 + fi + if test $ac_cv_func_setstate = no; then + HAVE_SETSTATE=0 + fi + fi + if test $HAVE_INITSTATE = 0; then + case "$gl_cv_onwards_func_initstate" in + future*) REPLACE_INITSTATE=1 ;; + esac + fi + if test $HAVE_SETSTATE = 0; then + case "$gl_cv_onwards_func_setstate" in + future*) REPLACE_SETSTATE=1 ;; + esac + fi + dnl On several platforms, random() is not multithread-safe. + if test $ac_cv_func_initstate = no || test $ac_cv_func_setstate = no \ + || case "$host_os" in \ + darwin* | freebsd* | solaris* | cygwin* | haiku*) true ;; \ + *) false ;; \ + esac + then + dnl In order to define initstate or setstate, we need to define all the + dnl functions at once. + REPLACE_RANDOM=1 + if test $ac_cv_func_initstate = yes; then + REPLACE_INITSTATE=1 + fi + if test $ac_cv_func_setstate = yes; then + REPLACE_SETSTATE=1 + fi + fi + + AC_CHECK_DECLS_ONCE([initstate]) + if test $ac_cv_have_decl_initstate = no; then + HAVE_DECL_INITSTATE=0 + fi + + AC_CHECK_DECLS_ONCE([setstate]) + if test $ac_cv_have_decl_setstate = no; then + HAVE_DECL_SETSTATE=0 + fi +]) + +# Prerequisites of lib/random.c. +AC_DEFUN([gl_PREREQ_RANDOM], [ + : +]) diff --git a/gnulib-m4/random_r.m4 b/gnulib-m4/random_r.m4 new file mode 100644 index 00000000..6c5457e9 --- /dev/null +++ b/gnulib-m4/random_r.m4 @@ -0,0 +1,43 @@ +# serial 5 +dnl Copyright (C) 2008-2024 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN([gl_FUNC_RANDOM_R], +[ + AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) + AC_REQUIRE([AC_CANONICAL_HOST]) + + AC_CHECK_HEADERS([random.h], [], [], [AC_INCLUDES_DEFAULT]) + if test $ac_cv_header_random_h = no; then + HAVE_RANDOM_H=0 + fi + + AC_CHECK_TYPES([struct random_data], + [], [HAVE_STRUCT_RANDOM_DATA=0], + [[#include <stdlib.h> + #if HAVE_RANDOM_H + # include <random.h> + #endif + ]]) + + dnl On AIX and OSF/1, these functions exist, but with different declarations. + dnl Override them all. + case "$host_os" in + aix* | osf*) + REPLACE_RANDOM_R=1 + ;; + *) + AC_CHECK_FUNCS([random_r]) + if test $ac_cv_func_random_r = no; then + HAVE_RANDOM_R=0 + fi + ;; + esac +]) + +# Prerequisites of lib/random_r.c. +AC_DEFUN([gl_PREREQ_RANDOM_R], [ + : +]) diff --git a/gnulib-m4/realloc.m4 b/gnulib-m4/realloc.m4 index 86e57c25..a59af280 100644 --- a/gnulib-m4/realloc.m4 +++ b/gnulib-m4/realloc.m4 @@ -1,5 +1,5 @@ -# realloc.m4 serial 26 -dnl Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc. +# realloc.m4 serial 29 +dnl Copyright (C) 2007, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -16,7 +16,8 @@ AC_DEFUN([_AC_FUNC_REALLOC_IF], [[#include <stdlib.h> ]], [[void *p = realloc (0, 0); - int result = !p; + void * volatile vp = p; + int result = !vp; free (p); return result;]]) ], @@ -25,8 +26,8 @@ AC_DEFUN([_AC_FUNC_REALLOC_IF], [case "$host_os" in # Guess yes on platforms where we know the result. *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \ - | gnu* | *-musl* | midnightbsd* \ - | hpux* | solaris* | cygwin* | mingw* | msys* ) + | gnu* | *-musl* | midipix* | midnightbsd* \ + | hpux* | solaris* | cygwin* | mingw* | windows* | msys* ) ac_cv_func_realloc_0_nonnull="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. *) ac_cv_func_realloc_0_nonnull="$gl_cross_guess_normal" ;; diff --git a/gnulib-m4/reallocarray.m4 b/gnulib-m4/reallocarray.m4 index f39ab6ea..20c4601e 100644 --- a/gnulib-m4/reallocarray.m4 +++ b/gnulib-m4/reallocarray.m4 @@ -1,5 +1,5 @@ -# reallocarray.m4 serial 3 -dnl Copyright (C) 2017-2022 Free Software Foundation, Inc. +# reallocarray.m4 serial 5 +dnl Copyright (C) 2017-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -11,9 +11,12 @@ AC_DEFUN([gl_FUNC_REALLOCARRAY], AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) AC_REQUIRE([gl_CHECK_MALLOC_PTRDIFF]) - AC_CHECK_FUNCS([reallocarray]) + gl_CHECK_FUNCS_ANDROID([reallocarray], [[#include <stdlib.h>]]) if test "$ac_cv_func_reallocarray" = no; then HAVE_REALLOCARRAY=0 + case "$gl_cv_onwards_func_reallocarray" in + future*) REPLACE_REALLOCARRAY=1 ;; + esac elif test "$gl_cv_malloc_ptrdiff" = no; then REPLACE_REALLOCARRAY=1 fi diff --git a/gnulib-m4/relocatable-lib.m4 b/gnulib-m4/relocatable-lib.m4 index b8a33e77..d903069d 100644 --- a/gnulib-m4/relocatable-lib.m4 +++ b/gnulib-m4/relocatable-lib.m4 @@ -1,5 +1,5 @@ -# relocatable-lib.m4 serial 6 -dnl Copyright (C) 2003, 2005-2007, 2009-2022 Free Software Foundation, Inc. +# relocatable-lib.m4 serial 7 +dnl Copyright (C) 2003, 2005-2007, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -34,7 +34,7 @@ AC_DEFUN([gl_RELOCATABLE_NOP], [ AC_MSG_CHECKING([whether to activate relocatable installation]) AC_ARG_ENABLE([relocatable], - [AS_HELP_STRING([--enable-relocatable], + [AS_HELP_STRING([[--enable-relocatable]], [install a package that can be moved in the file system])], [if test "$enableval" != no; then RELOCATABLE=yes diff --git a/gnulib-m4/sched_h.m4 b/gnulib-m4/sched_h.m4 index ce44f7b3..2ff821e4 100644 --- a/gnulib-m4/sched_h.m4 +++ b/gnulib-m4/sched_h.m4 @@ -1,5 +1,5 @@ # sched_h.m4 serial 15 -dnl Copyright (C) 2008-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/sched_yield.m4 b/gnulib-m4/sched_yield.m4 index d463a702..c717c06f 100644 --- a/gnulib-m4/sched_yield.m4 +++ b/gnulib-m4/sched_yield.m4 @@ -1,5 +1,5 @@ -# sched_yield.m4 serial 2 -dnl Copyright (C) 2019-2022 Free Software Foundation, Inc. +# sched_yield.m4 serial 3 +dnl Copyright (C) 2019-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -10,7 +10,7 @@ AC_DEFUN([gl_FUNC_SCHED_YIELD], AC_REQUIRE([gl_PTHREADLIB]) AC_REQUIRE([AC_CANONICAL_HOST]) - if { case "$host_os" in mingw*) true;; *) false;; esac; } \ + if { case "$host_os" in mingw* | windows*) true;; *) false;; esac; } \ && test $gl_threads_api = windows; then dnl Choose function names that don't conflict with the mingw-w64 winpthreads dnl library. diff --git a/gnulib-m4/select.m4 b/gnulib-m4/select.m4 index 163f8fbf..f3f9dcc0 100644 --- a/gnulib-m4/select.m4 +++ b/gnulib-m4/select.m4 @@ -1,5 +1,5 @@ -# select.m4 serial 13 -dnl Copyright (C) 2009-2022 Free Software Foundation, Inc. +# select.m4 serial 16 +dnl Copyright (C) 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -77,6 +77,8 @@ changequote([,])dnl case "$host_os" in # Guess yes on Linux systems. linux-* | linux) gl_cv_func_select_detects_ebadf="guessing yes" ;; + # Guess yes on systems that emulate the Linux system calls. + midipix*) gl_cv_func_select_detects_ebadf="guessing yes" ;; # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_select_detects_ebadf="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. @@ -91,10 +93,10 @@ changequote([,])dnl fi dnl Determine the needed libraries. - LIB_SELECT="$LIBSOCKET" + SELECT_LIB="$LIBSOCKET" if test $REPLACE_SELECT = 1; then case "$host_os" in - mingw*) + mingw* | windows*) dnl On the MSVC platform, the function MsgWaitForMultipleObjects dnl (used in lib/select.c) requires linking with -luser32. On mingw, dnl it is implicit. @@ -109,9 +111,12 @@ main () return 0; }]])], [], - [LIB_SELECT="$LIB_SELECT -luser32"]) + [SELECT_LIB="$SELECT_LIB -luser32"]) ;; esac fi + AC_SUBST([SELECT_LIB]) + dnl For backward compatibility. + LIB_SELECT="$LIB_SELECT" AC_SUBST([LIB_SELECT]) ]) diff --git a/gnulib-m4/semaphore.m4 b/gnulib-m4/semaphore.m4 index c6be7b94..9d434320 100644 --- a/gnulib-m4/semaphore.m4 +++ b/gnulib-m4/semaphore.m4 @@ -1,5 +1,5 @@ -# semaphore.m4 serial 1 -dnl Copyright (C) 2019-2022 Free Software Foundation, Inc. +# semaphore.m4 serial 2 +dnl Copyright (C) 2019-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -19,7 +19,7 @@ AC_DEFUN([gl_SEMAPHORE], dnl $LIBMULTITHREAD. Therefore, the only library we need to test for is -lrt. AC_CACHE_CHECK([for library needed for semaphore functions], [gl_cv_semaphore_lib], - [save_LIBS="$LIBS" + [saved_LIBS="$LIBS" LIBS="$LIBS $LIBMULTITHREAD" AC_LINK_IFELSE( [AC_LANG_PROGRAM( @@ -34,7 +34,7 @@ AC_DEFUN([gl_SEMAPHORE], [gl_cv_semaphore_lib='-lrt'], [gl_cv_semaphore_lib=none]) ]) - LIBS="$save_LIBS" + LIBS="$saved_LIBS" ]) if test "x$gl_cv_semaphore_lib" = xnone; then LIB_SEMAPHORE= diff --git a/gnulib-m4/setenv.m4 b/gnulib-m4/setenv.m4 index 2000039a..21253e65 100644 --- a/gnulib-m4/setenv.m4 +++ b/gnulib-m4/setenv.m4 @@ -1,5 +1,5 @@ -# setenv.m4 serial 30 -dnl Copyright (C) 2001-2004, 2006-2022 Free Software Foundation, Inc. +# setenv.m4 serial 33 +dnl Copyright (C) 2001-2004, 2006-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -35,12 +35,12 @@ AC_DEFUN([gl_FUNC_SETENV], ]])], [gl_cv_func_setenv_works=yes], [gl_cv_func_setenv_works=no], [case "$host_os" in - # Guess yes on glibc systems. - *-gnu* | gnu*) gl_cv_func_setenv_works="guessing yes" ;; - # Guess yes on musl systems. - *-musl*) gl_cv_func_setenv_works="guessing yes" ;; - # If we don't know, obey --enable-cross-guesses. - *) gl_cv_func_setenv_works="$gl_cross_guess_normal" ;; + # Guess yes on glibc systems. + *-gnu* | gnu*) gl_cv_func_setenv_works="guessing yes" ;; + # Guess yes on musl systems. + *-musl* | midipix*) gl_cv_func_setenv_works="guessing yes" ;; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_setenv_works="$gl_cross_guess_normal" ;; esac ])]) case "$gl_cv_func_setenv_works" in @@ -151,11 +151,10 @@ int unsetenv (const char *name); # Prerequisites of lib/setenv.c. AC_DEFUN([gl_PREREQ_SETENV], [ - AC_REQUIRE([AC_FUNC_ALLOCA]) AC_REQUIRE([gl_ENVIRON]) AC_CHECK_HEADERS_ONCE([unistd.h]) AC_CHECK_HEADERS([search.h]) - AC_CHECK_FUNCS([tsearch]) + gl_CHECK_FUNCS_ANDROID([tsearch], [[#include <search.h>]]) ]) # Prerequisites of lib/unsetenv.c. diff --git a/gnulib-m4/setlocale.m4 b/gnulib-m4/setlocale.m4 index c0023d9c..ef26def4 100644 --- a/gnulib-m4/setlocale.m4 +++ b/gnulib-m4/setlocale.m4 @@ -1,5 +1,5 @@ -# setlocale.m4 serial 7 -dnl Copyright (C) 2011-2022 Free Software Foundation, Inc. +# setlocale.m4 serial 10 +dnl Copyright (C) 2011-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -15,7 +15,7 @@ AC_DEFUN([gl_FUNC_SETLOCALE], case "$host_os" in dnl On native Windows systems, setlocale(category,NULL) does not look at dnl the environment variables LC_ALL, category, and LANG. - mingw*) NEED_SETLOCALE_IMPROVED=1 ;; + mingw* | windows*) NEED_SETLOCALE_IMPROVED=1 ;; dnl On Cygwin 1.5.x, setlocale always succeeds but setlocale(LC_CTYPE,NULL) dnl is then still "C". cygwin*) @@ -66,12 +66,15 @@ int main () fi if test $NEED_SETLOCALE_MTSAFE = 1; then - LIB_SETLOCALE="$LIB_SETLOCALE_NULL" + SETLOCALE_LIB="$SETLOCALE_NULL_LIB" else - LIB_SETLOCALE= + SETLOCALE_LIB= fi - dnl LIB_SETLOCALE is expected to be '-pthread' or '-lpthread' on AIX with gcc + dnl SETLOCALE_LIB is expected to be '-pthread' or '-lpthread' on AIX with gcc dnl or xlc, and empty otherwise. + AC_SUBST([SETLOCALE_LIB]) + dnl For backward compatibility. + LIB_SETLOCALE="$SETLOCALE_LIB" AC_SUBST([LIB_SETLOCALE]) ]) diff --git a/gnulib-m4/setlocale_null.m4 b/gnulib-m4/setlocale_null.m4 index 09ea50ea..54d3d46d 100644 --- a/gnulib-m4/setlocale_null.m4 +++ b/gnulib-m4/setlocale_null.m4 @@ -1,5 +1,5 @@ -# setlocale_null.m4 serial 5 -dnl Copyright (C) 2019-2022 Free Software Foundation, Inc. +# setlocale_null.m4 serial 9 +dnl Copyright (C) 2019-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -13,11 +13,25 @@ AC_DEFUN([gl_FUNC_SETLOCALE_NULL], AC_CACHE_CHECK([whether setlocale (LC_ALL, NULL) is multithread-safe], [gl_cv_func_setlocale_null_all_mtsafe], [case "$host_os" in - # Guess no on musl libc, macOS, FreeBSD, NetBSD, OpenBSD, AIX, Haiku, Cygwin. - *-musl* | darwin* | freebsd* | midnightbsd* | netbsd* | openbsd* | aix* | haiku* | cygwin*) + # Guess no on musl libc, macOS, FreeBSD, NetBSD, OpenBSD, AIX, Haiku. + *-musl* | midipix* | darwin* | freebsd* | midnightbsd* | netbsd* | openbsd* | aix* | haiku*) gl_cv_func_setlocale_null_all_mtsafe=no ;; + # Guess no on Cygwin < 3.4.6. + cygwin*) + AC_EGREP_CPP([Lucky user], + [ +#if defined __CYGWIN__ + #include <cygwin/version.h> + #if CYGWIN_VERSION_DLL_COMBINED >= CYGWIN_VERSION_DLL_MAKE_COMBINED (3004, 6) + Lucky user + #endif +#endif + ], + [gl_cv_func_setlocale_null_all_mtsafe=yes], + [gl_cv_func_setlocale_null_all_mtsafe=no]) + ;; # Guess yes on glibc, HP-UX, IRIX, Solaris, native Windows. - *-gnu* | gnu* | hpux* | irix* | solaris* | mingw*) + *-gnu* | gnu* | hpux* | irix* | solaris* | mingw* | windows*) gl_cv_func_setlocale_null_all_mtsafe=yes ;; # If we don't know, obey --enable-cross-guesses. *) @@ -26,7 +40,7 @@ AC_DEFUN([gl_FUNC_SETLOCALE_NULL], ]) dnl On platforms without multithreading, there is no issue. case "$host_os" in - mingw*) ;; + mingw* | windows*) ;; *) if test $gl_pthread_api = no && test $ac_cv_header_threads_h = no; then gl_cv_func_setlocale_null_all_mtsafe="trivially yes" @@ -48,7 +62,7 @@ AC_DEFUN([gl_FUNC_SETLOCALE_NULL], openbsd* | aix*) gl_cv_func_setlocale_null_one_mtsafe=no ;; # Guess yes on glibc, musl libc, macOS, FreeBSD, NetBSD, HP-UX, IRIX, Solaris, Haiku, Cygwin, native Windows. - *-gnu* | gnu* | *-musl* | darwin* | freebsd* | midnightbsd* | netbsd* | hpux* | irix* | solaris* | haiku* | cygwin* | mingw*) + *-gnu* | gnu* | *-musl* | midipix* | darwin* | freebsd* | midnightbsd* | netbsd* | hpux* | irix* | solaris* | haiku* | cygwin* | mingw* | windows*) gl_cv_func_setlocale_null_one_mtsafe=yes ;; # If we don't know, obey --enable-cross-guesses. *) @@ -57,7 +71,7 @@ AC_DEFUN([gl_FUNC_SETLOCALE_NULL], ]) dnl On platforms without multithreading, there is no issue. case "$host_os" in - mingw*) ;; + mingw* | windows*) ;; *) if test $gl_pthread_api = no && test $ac_cv_header_threads_h = no; then gl_cv_func_setlocale_null_one_mtsafe="trivially yes" @@ -74,20 +88,25 @@ AC_DEFUN([gl_FUNC_SETLOCALE_NULL], dnl Determine link dependencies of lib/setlocale_null.c and lib/setlocale-lock.c. if test $SETLOCALE_NULL_ALL_MTSAFE = 0 || test $SETLOCALE_NULL_ONE_MTSAFE = 0; then case "$host_os" in - mingw*) LIB_SETLOCALE_NULL= ;; + mingw* | windows*) + SETLOCALE_NULL_LIB= + ;; *) gl_WEAK_SYMBOLS case "$gl_cv_have_weak" in - *yes) LIB_SETLOCALE_NULL= ;; - *) LIB_SETLOCALE_NULL="$LIBPTHREAD" ;; + *yes) SETLOCALE_NULL_LIB= ;; + *) SETLOCALE_NULL_LIB="$LIBPTHREAD" ;; esac ;; esac else - LIB_SETLOCALE_NULL= + SETLOCALE_NULL_LIB= fi - dnl LIB_SETLOCALE_NULL is expected to be '-pthread' or '-lpthread' on AIX + dnl SETLOCALE_NULL_LIB is expected to be '-pthread' or '-lpthread' on AIX dnl with gcc or xlc, and empty otherwise. + AC_SUBST([SETLOCALE_NULL_LIB]) + dnl For backward compatibility. + LIB_SETLOCALE_NULL="$SETLOCALE_NULL_LIB" AC_SUBST([LIB_SETLOCALE_NULL]) ]) diff --git a/gnulib-m4/signal_h.m4 b/gnulib-m4/signal_h.m4 index 4c05c627..6f7dcc73 100644 --- a/gnulib-m4/signal_h.m4 +++ b/gnulib-m4/signal_h.m4 @@ -1,5 +1,5 @@ # signal_h.m4 serial 22 -dnl Copyright (C) 2007-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/signalblocking.m4 b/gnulib-m4/signalblocking.m4 index b586ef53..f818d5da 100644 --- a/gnulib-m4/signalblocking.m4 +++ b/gnulib-m4/signalblocking.m4 @@ -1,5 +1,5 @@ # signalblocking.m4 serial 17 -dnl Copyright (C) 2001-2002, 2006-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2001-2002, 2006-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/signbit.m4 b/gnulib-m4/signbit.m4 index 8a4114db..4acb0e98 100644 --- a/gnulib-m4/signbit.m4 +++ b/gnulib-m4/signbit.m4 @@ -1,5 +1,5 @@ -# signbit.m4 serial 20 -dnl Copyright (C) 2007-2022 Free Software Foundation, Inc. +# signbit.m4 serial 22 +dnl Copyright (C) 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -29,14 +29,14 @@ AC_DEFUN([gl_SIGNBIT], [gl_cv_func_signbit=yes], [gl_cv_func_signbit=no], [case "$host_os" in - # Guess yes on glibc systems. - *-gnu* | gnu*) gl_cv_func_signbit="guessing yes" ;; - # Guess yes on musl systems. - *-musl*) gl_cv_func_signbit="guessing yes" ;; - # Guess yes on native Windows. - mingw*) gl_cv_func_signbit="guessing yes" ;; - # If we don't know, obey --enable-cross-guesses. - *) gl_cv_func_signbit="$gl_cross_guess_normal" ;; + # Guess yes on glibc systems. + *-gnu* | gnu*) gl_cv_func_signbit="guessing yes" ;; + # Guess yes on musl systems. + *-musl* | midipix*) gl_cv_func_signbit="guessing yes" ;; + # Guess yes on native Windows. + mingw* | windows*) gl_cv_func_signbit="guessing yes" ;; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_signbit="$gl_cross_guess_normal" ;; esac ]) ]) @@ -63,19 +63,19 @@ AC_DEFUN([gl_SIGNBIT], [gl_cv_func_signbit_builtins=yes], [gl_cv_func_signbit_builtins=no], [case "$host_os" in - # Guess yes on glibc systems. - *-gnu* | gnu*) gl_cv_func_signbit_builtins="guessing yes" ;; - # Guess yes on musl systems. - *-musl*) gl_cv_func_signbit_builtins="guessing yes" ;; - # Guess yes on mingw, no on MSVC. - mingw*) if test -n "$GCC"; then - gl_cv_func_signbit_builtins="guessing yes" - else - gl_cv_func_signbit_builtins="guessing no" - fi - ;; - # If we don't know, obey --enable-cross-guesses. - *) gl_cv_func_signbit_builtins="$gl_cross_guess_normal" ;; + # Guess yes on glibc systems. + *-gnu* | gnu*) gl_cv_func_signbit_builtins="guessing yes" ;; + # Guess yes on musl systems. + *-musl* | midipix*) gl_cv_func_signbit_builtins="guessing yes" ;; + # Guess yes on mingw, no on MSVC. + mingw* | windows*) if test -n "$GCC"; then + gl_cv_func_signbit_builtins="guessing yes" + else + gl_cv_func_signbit_builtins="guessing no" + fi + ;; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_signbit_builtins="$gl_cross_guess_normal" ;; esac ]) ]) diff --git a/gnulib-m4/size_max.m4 b/gnulib-m4/size_max.m4 index 1d6abaea..b3f7624f 100644 --- a/gnulib-m4/size_max.m4 +++ b/gnulib-m4/size_max.m4 @@ -1,5 +1,5 @@ # size_max.m4 serial 12 -dnl Copyright (C) 2003, 2005-2006, 2008-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2003, 2005-2006, 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/sleep.m4 b/gnulib-m4/sleep.m4 index e73651f5..2003698c 100644 --- a/gnulib-m4/sleep.m4 +++ b/gnulib-m4/sleep.m4 @@ -1,5 +1,5 @@ -# sleep.m4 serial 11 -dnl Copyright (C) 2007-2022 Free Software Foundation, Inc. +# sleep.m4 serial 13 +dnl Copyright (C) 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -46,14 +46,16 @@ handle_alarm (int sig) ]])], [gl_cv_func_sleep_works=yes], [gl_cv_func_sleep_works=no], [case "$host_os" in - # Guess yes on glibc systems. - *-gnu* | gnu*) gl_cv_func_sleep_works="guessing yes" ;; - # Guess yes on musl systems. - *-musl*) gl_cv_func_sleep_works="guessing yes" ;; - # Guess no on native Windows. - mingw*) gl_cv_func_sleep_works="guessing no" ;; - # If we don't know, obey --enable-cross-guesses. - *) gl_cv_func_sleep_works="$gl_cross_guess_normal" ;; + # Guess yes on glibc systems. + *-gnu* | gnu*) gl_cv_func_sleep_works="guessing yes" ;; + # Guess yes on musl systems. + *-musl*) gl_cv_func_sleep_works="guessing yes" ;; + # Guess yes on systems that emulate the Linux system calls. + midipix*) gl_cv_func_sleep_works="guessing yes" ;; + # Guess no on native Windows. + mingw* | windows*) gl_cv_func_sleep_works="guessing no" ;; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_sleep_works="$gl_cross_guess_normal" ;; esac ])]) case "$gl_cv_func_sleep_works" in diff --git a/gnulib-m4/snan.m4 b/gnulib-m4/snan.m4 new file mode 100644 index 00000000..6a0a7453 --- /dev/null +++ b/gnulib-m4/snan.m4 @@ -0,0 +1,14 @@ +# snan.m4 serial 3 +dnl Copyright (C) 2023-2024 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# Prerequisites for lib/snan.h. +AC_DEFUN_ONCE([gl_SNAN], +[ + gl_FLOAT_EXPONENT_LOCATION + gl_DOUBLE_EXPONENT_LOCATION + gl_LONG_DOUBLE_EXPONENT_LOCATION + AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) +]) diff --git a/gnulib-m4/socketlib.m4 b/gnulib-m4/socketlib.m4 index b8bd0afa..06339696 100644 --- a/gnulib-m4/socketlib.m4 +++ b/gnulib-m4/socketlib.m4 @@ -1,5 +1,5 @@ -# socketlib.m4 serial 3 -dnl Copyright (C) 2008-2022 Free Software Foundation, Inc. +# socketlib.m4 serial 4 +dnl Copyright (C) 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -18,7 +18,7 @@ AC_DEFUN([gl_SOCKETLIB], dnl defined through -lws2_32), we need to call it. AC_CACHE_CHECK([for WSAStartup], [gl_cv_func_wsastartup], [ - gl_save_LIBS="$LIBS" + gl_saved_LIBS="$LIBS" LIBS="$LIBS -lws2_32" AC_LINK_IFELSE( [AC_LANG_PROGRAM([[ @@ -33,7 +33,7 @@ AC_DEFUN([gl_SOCKETLIB], ], [gl_cv_func_wsastartup=yes], [gl_cv_func_wsastartup=no]) - LIBS="$gl_save_LIBS" + LIBS="$gl_saved_LIBS" ]) if test "$gl_cv_func_wsastartup" = "yes"; then AC_DEFINE([WINDOWS_SOCKETS], [1], [Define if WSAStartup is needed.]) @@ -56,8 +56,8 @@ AC_DEFUN([gl_SOCKETLIB], #endif char setsockopt();]], [[setsockopt();]])], [], - [gl_save_LIBS="$LIBS" - LIBS="$gl_save_LIBS -lsocket" + [gl_saved_LIBS="$LIBS" + LIBS="$gl_saved_LIBS -lsocket" AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern #ifdef __cplusplus "C" @@ -65,7 +65,7 @@ char setsockopt();]], [[setsockopt();]])], char setsockopt();]], [[setsockopt();]])], [gl_cv_lib_socket="-lsocket"]) if test -z "$gl_cv_lib_socket"; then - LIBS="$gl_save_LIBS -lnetwork" + LIBS="$gl_saved_LIBS -lnetwork" AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern #ifdef __cplusplus "C" @@ -73,7 +73,7 @@ char setsockopt();]], [[setsockopt();]])], char setsockopt();]], [[setsockopt();]])], [gl_cv_lib_socket="-lnetwork"]) if test -z "$gl_cv_lib_socket"; then - LIBS="$gl_save_LIBS -lnet" + LIBS="$gl_saved_LIBS -lnet" AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern #ifdef __cplusplus "C" @@ -82,7 +82,7 @@ char setsockopt();]], [[setsockopt();]])], [gl_cv_lib_socket="-lnet"]) fi fi - LIBS="$gl_save_LIBS" + LIBS="$gl_saved_LIBS" ]) if test -z "$gl_cv_lib_socket"; then gl_cv_lib_socket="none needed" diff --git a/gnulib-m4/sockets.m4 b/gnulib-m4/sockets.m4 index aa04acc3..7be4dc96 100644 --- a/gnulib-m4/sockets.m4 +++ b/gnulib-m4/sockets.m4 @@ -1,5 +1,5 @@ # sockets.m4 serial 7 -dnl Copyright (C) 2008-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/socklen.m4 b/gnulib-m4/socklen.m4 index 1390ac41..9c46db18 100644 --- a/gnulib-m4/socklen.m4 +++ b/gnulib-m4/socklen.m4 @@ -1,5 +1,5 @@ # socklen.m4 serial 11 -dnl Copyright (C) 2005-2007, 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2005-2007, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/sockpfaf.m4 b/gnulib-m4/sockpfaf.m4 index b1c4068a..390abfe2 100644 --- a/gnulib-m4/sockpfaf.m4 +++ b/gnulib-m4/sockpfaf.m4 @@ -1,5 +1,5 @@ # sockpfaf.m4 serial 10 -dnl Copyright (C) 2004, 2006, 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2004, 2006, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/ssize_t.m4 b/gnulib-m4/ssize_t.m4 index 03b2b895..25b28d77 100644 --- a/gnulib-m4/ssize_t.m4 +++ b/gnulib-m4/ssize_t.m4 @@ -1,23 +1,37 @@ -# ssize_t.m4 serial 5 (gettext-0.18.2) -dnl Copyright (C) 2001-2003, 2006, 2010-2022 Free Software Foundation, Inc. +# ssize_t.m4 serial 6 +dnl Copyright (C) 2001-2003, 2006, 2010-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl From Bruno Haible. -dnl Test whether ssize_t is defined. +dnl Define ssize_t if it does not already exist. AC_DEFUN([gt_TYPE_SSIZE_T], [ - AC_CACHE_CHECK([for ssize_t], [gt_cv_ssize_t], + AC_CACHE_CHECK([for ssize_t], [gl_cv_ssize_t], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include <sys/types.h>]], [[int x = sizeof (ssize_t *) + sizeof (ssize_t); return !x;]])], - [gt_cv_ssize_t=yes], [gt_cv_ssize_t=no])]) - if test $gt_cv_ssize_t = no; then - AC_DEFINE([ssize_t], [int], - [Define as a signed type of the same size as size_t.]) + [gl_cv_ssize_t=yes], [gl_cv_ssize_t=no])]) + if test $gl_cv_ssize_t = no; then + dnl On 64-bit native Windows, ssize_t needs to be defined as 'long long', + dnl for consistency with the 64-bit size_t. + AC_CACHE_CHECK([whether size_t is wider than 'long'], [gl_cv_size_t_large], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include <sys/types.h> + typedef int array [2 * (sizeof (size_t) > sizeof (long)) - 1]; + ]])], + [gl_cv_size_t_large=yes], [gl_cv_size_t_large=no])]) + if test $gl_cv_size_t_large = yes; then + gl_def_ssize_t='long long' + else + gl_def_ssize_t='long' + fi + AC_DEFINE_UNQUOTED([ssize_t], [$gl_def_ssize_t], + [Define as a signed type of the same size as size_t.]) fi ]) diff --git a/gnulib-m4/stat-time.m4 b/gnulib-m4/stat-time.m4 index 342857d3..8bec2f5f 100644 --- a/gnulib-m4/stat-time.m4 +++ b/gnulib-m4/stat-time.m4 @@ -1,6 +1,6 @@ # Checks for stat-related time functions. -# Copyright (C) 1998-1999, 2001, 2003, 2005-2007, 2009-2022 Free Software +# Copyright (C) 1998-1999, 2001, 2003, 2005-2007, 2009-2024 Free Software # Foundation, Inc. # This file is free software; the Free Software Foundation diff --git a/gnulib-m4/stat.m4 b/gnulib-m4/stat.m4 index 916eb886..1d2a9e2c 100644 --- a/gnulib-m4/stat.m4 +++ b/gnulib-m4/stat.m4 @@ -1,6 +1,6 @@ -# serial 18 +# serial 21 -# Copyright (C) 2009-2022 Free Software Foundation, Inc. +# Copyright (C) 2009-2024 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -12,7 +12,7 @@ AC_DEFUN([gl_FUNC_STAT], AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) AC_CHECK_FUNCS_ONCE([lstat]) case "$host_os" in - mingw*) + mingw* | windows*) dnl On this platform, the original stat() returns st_atime, st_mtime, dnl st_ctime values that are affected by the time zone. REPLACE_STAT=1 @@ -45,6 +45,8 @@ AC_DEFUN([gl_FUNC_STAT], [case "$host_os" in # Guess yes on Linux systems. linux-* | linux) gl_cv_func_stat_file_slash="guessing yes" ;; + # Guess yes on systems that emulate the Linux system calls. + midipix*) gl_cv_func_stat_file_slash="guessing yes" ;; # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_stat_file_slash="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. @@ -59,8 +61,8 @@ AC_DEFUN([gl_FUNC_STAT], help when passed a file name with a trailing slash]);; esac case $host_os in - dnl Solaris stat can return a negative tv_nsec. - solaris*) + dnl macOS and Solaris stat can return a negative tv_nsec. + darwin* | solaris*) REPLACE_FSTAT=1 ;; esac ;; @@ -78,7 +80,7 @@ AC_DEFUN([gl_PREREQ_STAT], [ AC_DEFUN([gl_PREREQ_STAT_W32], [ AC_REQUIRE([AC_CANONICAL_HOST]) case "$host_os" in - mingw*) + mingw* | windows*) AC_CHECK_HEADERS([sdkddkver.h]) ;; esac diff --git a/gnulib-m4/stdalign.m4 b/gnulib-m4/stdalign.m4 index 324e91da..e3c1e609 100644 --- a/gnulib-m4/stdalign.m4 +++ b/gnulib-m4/stdalign.m4 @@ -1,20 +1,22 @@ # Check for alignas and alignof that conform to C23. -dnl Copyright 2011-2022 Free Software Foundation, Inc. +dnl Copyright 2011-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. +dnl Written by Paul Eggert and Bruno Haible. + # Prepare for substituting <stdalign.h> if it is not supported. -AC_DEFUN([gl_STDALIGN_H], +AC_DEFUN([gl_ALIGNASOF], [ AC_CACHE_CHECK([for alignas and alignof], [gl_cv_header_working_stdalign_h], - [gl_save_CFLAGS=$CFLAGS + [gl_saved_CFLAGS=$CFLAGS for gl_working in "yes, keywords" "yes, <stdalign.h> macros"; do AS_CASE([$gl_working], - [*stdalign.h*], [CFLAGS="$gl_save_CFLAGS -DINCLUDE_STDALIGN_H"]) + [*stdalign.h*], [CFLAGS="$gl_saved_CFLAGS -DINCLUDE_STDALIGN_H"]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( [[#include <stdint.h> @@ -54,81 +56,151 @@ AC_DEFUN([gl_STDALIGN_H], [gl_cv_header_working_stdalign_h=$gl_working], [gl_cv_header_working_stdalign_h=no]) - CFLAGS=$gl_save_CFLAGS + CFLAGS=$gl_saved_CFLAGS test "$gl_cv_header_working_stdalign_h" != no && break done]) - GL_GENERATE_STDALIGN_H=false AS_CASE([$gl_cv_header_working_stdalign_h], - [no], - [GL_GENERATE_STDALIGN_H=true], [yes*keyword*], [AC_DEFINE([HAVE_C_ALIGNASOF], [1], [Define to 1 if the alignas and alignof keywords work.])]) - AC_CHECK_HEADERS_ONCE([stdalign.h]) - dnl The "zz" puts this toward config.h's end, to avoid potential dnl collisions with other definitions. AH_VERBATIM([zzalignas], -[#if !defined HAVE_C_ALIGNASOF && __cplusplus < 201103 && !defined alignof -# if HAVE_STDALIGN_H +[#if !defined HAVE_C_ALIGNASOF \ + && !(defined __cplusplus && 201103 <= __cplusplus) \ + && !defined alignof +# if defined HAVE_STDALIGN_H # include <stdalign.h> -# else - /* Substitute. Keep consistent with gnulib/lib/stdalign.in.h. */ -# ifndef _GL_STDALIGN_H -# define _GL_STDALIGN_H -# undef _Alignas -# undef _Alignof -# if (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 \ - || (defined __GNUC__ && __GNUC__ < 4 + (__GNUC_MINOR__ < 9) \ - && !defined __clang__) \ - || (defined __clang__ && __clang_major__ < 8)) -# ifdef __cplusplus -# if (201103 <= __cplusplus || defined _MSC_VER) -# define _Alignof(type) alignof (type) +# endif + +/* ISO C23 alignas and alignof for platforms that lack it. + + References: + ISO C23 (latest free draft + <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.pdf>) + sections 6.5.3.4, 6.7.5, 7.15. + C++11 (latest free draft + <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf>) + section 18.10. */ + +/* alignof (TYPE), also known as _Alignof (TYPE), yields the alignment + requirement of a structure member (i.e., slot or field) that is of + type TYPE, as an integer constant expression. + + This differs from GCC's and clang's __alignof__ operator, which can + yield a better-performing alignment for an object of that type. For + example, on x86 with GCC and on Linux/x86 with clang, + __alignof__ (double) and __alignof__ (long long) are 8, whereas + alignof (double) and alignof (long long) are 4 unless the option + '-malign-double' is used. + + The result cannot be used as a value for an 'enum' constant, if you + want to be portable to HP-UX 10.20 cc and AIX 3.2.5 xlc. */ + +/* GCC releases before GCC 4.9 had a bug in _Alignof. See GCC bug 52023 + <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52023>. + clang versions < 8.0.0 have the same bug. */ +# if (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 \ + || (defined __GNUC__ && __GNUC__ < 4 + (__GNUC_MINOR__ < 9) \ + && !defined __clang__) \ + || (defined __clang__ && __clang_major__ < 8)) +# undef/**/_Alignof +# ifdef __cplusplus +# if (201103 <= __cplusplus || defined _MSC_VER) +# define _Alignof(type) alignof (type) +# else + template <class __t> struct __alignof_helper { char __a; __t __b; }; +# if (defined __GNUC__ && 4 <= __GNUC__) || defined __clang__ +# define _Alignof(type) __builtin_offsetof (__alignof_helper<type>, __b) # else - template <class __t> struct __alignof_helper { char __a; __t __b; }; # define _Alignof(type) offsetof (__alignof_helper<type>, __b) -# define _GL_STDALIGN_NEEDS_STDDEF 1 # endif +# define _GL_STDALIGN_NEEDS_STDDEF 1 +# endif +# else +# if (defined __GNUC__ && 4 <= __GNUC__) || defined __clang__ +# define _Alignof(type) __builtin_offsetof (struct { char __a; type __b; }, __b) # else # define _Alignof(type) offsetof (struct { char __a; type __b; }, __b) # define _GL_STDALIGN_NEEDS_STDDEF 1 # endif # endif -# if ! (defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER)) -# define alignof _Alignof -# endif -# define __alignof_is_defined 1 -# if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 -# if defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER) -# define _Alignas(a) alignas (a) -# elif (!defined __attribute__ \ - && ((defined __APPLE__ && defined __MACH__ \ - ? 4 < __GNUC__ + (1 <= __GNUC_MINOR__) \ - : __GNUC__ && !defined __ibmxl__) \ - || (4 <= __clang_major__) \ - || (__ia64 && (61200 <= __HP_cc || 61200 <= __HP_aCC)) \ - || __ICC || 0x590 <= __SUNPRO_C || 0x0600 <= __xlC__)) -# define _Alignas(a) __attribute__ ((__aligned__ (a))) -# elif 1300 <= _MSC_VER -# define _Alignas(a) __declspec (align (a)) -# endif -# endif -# if ((defined _Alignas \ - && !(defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER))) \ - || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__)) -# define alignas _Alignas -# endif -# if (defined alignas \ - || (defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER))) -# define __alignas_is_defined 1 -# endif -# if _GL_STDALIGN_NEEDS_STDDEF -# include <stddef.h> -# endif -# endif /* _GL_STDALIGN_H */ +# endif +# if ! (defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER)) +# undef/**/alignof +# define alignof _Alignof +# endif + +/* alignas (A), also known as _Alignas (A), aligns a variable or type + to the alignment A, where A is an integer constant expression. For + example: + + int alignas (8) foo; + struct s { int a; int alignas (8) bar; }; + + aligns the address of FOO and the offset of BAR to be multiples of 8. + + A should be a power of two that is at least the type's alignment + and at most the implementation's alignment limit. This limit is + 2**28 on typical GNUish hosts, and 2**13 on MSVC. To be portable + to MSVC through at least version 10.0, A should be an integer + constant, as MSVC does not support expressions such as 1 << 3. + To be portable to Sun C 5.11, do not align auto variables to + anything stricter than their default alignment. + + The following C23 requirements are not supported here: + + - If A is zero, alignas has no effect. + - alignas can be used multiple times; the strictest one wins. + - alignas (TYPE) is equivalent to alignas (alignof (TYPE)). + + */ +# if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 +# if defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER) +# define _Alignas(a) alignas (a) +# elif (!defined __attribute__ \ + && ((defined __APPLE__ && defined __MACH__ \ + ? 4 < __GNUC__ + (1 <= __GNUC_MINOR__) \ + : __GNUC__ && !defined __ibmxl__) \ + || (4 <= __clang_major__) \ + || (__ia64 && (61200 <= __HP_cc || 61200 <= __HP_aCC)) \ + || __ICC || 0x590 <= __SUNPRO_C || 0x0600 <= __xlC__)) +# define _Alignas(a) __attribute__ ((__aligned__ (a))) +# elif 1300 <= _MSC_VER +# define _Alignas(a) __declspec (align (a)) +# endif +# endif +# if !defined HAVE_STDALIGN_H +# if ((defined _Alignas \ + && !(defined __cplusplus \ + && (201103 <= __cplusplus || defined _MSC_VER))) \ + || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__)) +# define alignas _Alignas +# endif +# endif + +# if defined _GL_STDALIGN_NEEDS_STDDEF +# include <stddef.h> # endif #endif]) ]) + +AC_DEFUN([gl_STDALIGN_H], +[ + AC_REQUIRE([gl_ALIGNASOF]) + if test "$gl_cv_header_working_stdalign_h" = no; then + GL_GENERATE_STDALIGN_H=true + else + GL_GENERATE_STDALIGN_H=false + fi + + gl_CHECK_NEXT_HEADERS([stdalign.h]) + if test $ac_cv_header_stdalign_h = yes; then + HAVE_STDALIGN_H=1 + else + HAVE_STDALIGN_H=0 + fi + AC_SUBST([HAVE_STDALIGN_H]) +]) diff --git a/gnulib-m4/stddef_h.m4 b/gnulib-m4/stddef_h.m4 index abfd2030..1bf9eb39 100644 --- a/gnulib-m4/stddef_h.m4 +++ b/gnulib-m4/stddef_h.m4 @@ -1,5 +1,5 @@ -# stddef_h.m4 serial 12 -dnl Copyright (C) 2009-2022 Free Software Foundation, Inc. +# stddef_h.m4 serial 14 +dnl Copyright (C) 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -22,7 +22,14 @@ AC_DEFUN_ONCE([gl_STDDEF_H], [gl_cv_type_max_align_t], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM( - [[#include <stddef.h> + [[/* On FreeBSD 12.0/x86, max_align_t defined by <stddef.h> has + the correct alignment with the default (wrong) definition of + _Alignof, but a wrong alignment as soon as we activate an + ISO C compliant _Alignof definition. */ + #if ((defined __GNUC__ && 4 <= __GNUC__) || defined __clang__) && !defined __cplusplus + #define _Alignof(type) __builtin_offsetof (struct { char __a; type __b; }, __b) + #endif + #include <stddef.h> unsigned int s = sizeof (max_align_t); #if defined __GNUC__ || defined __clang__ || defined __IBM__ALIGNOF__ int check1[2 * (__alignof__ (double) <= __alignof__ (max_align_t)) - 1]; @@ -61,6 +68,21 @@ AC_DEFUN_ONCE([gl_STDDEF_H], GL_GENERATE_STDDEF_H=true fi + AC_CACHE_CHECK([for unreachable], + [gl_cv_func_unreachable], + [AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include <stddef.h> + ]], + [[unreachable (); + ]])], + [gl_cv_func_unreachable=yes], + [gl_cv_func_unreachable=no]) + ]) + if test $gl_cv_func_unreachable = no; then + GL_GENERATE_STDDEF_H=true + fi + if $GL_GENERATE_STDDEF_H; then gl_NEXT_HEADERS([stddef.h]) fi diff --git a/gnulib-m4/stdint.m4 b/gnulib-m4/stdint.m4 index c3f08942..4aa25082 100644 --- a/gnulib-m4/stdint.m4 +++ b/gnulib-m4/stdint.m4 @@ -1,5 +1,5 @@ -# stdint.m4 serial 61 -dnl Copyright (C) 2001-2022 Free Software Foundation, Inc. +# stdint.m4 serial 63 +dnl Copyright (C) 2001-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -150,7 +150,10 @@ intmax_t i = INTMAX_MAX; uintmax_t j = UINTMAX_MAX; /* Check that SIZE_MAX has the correct type, if possible. */ -#if 201112 <= __STDC_VERSION__ +/* ISO C 11 mandates _Generic, but GCC versions < 4.9 lack it. */ +#if 201112 <= __STDC_VERSION__ \ + && (!defined __GNUC__ || 4 < __GNUC__ + (9 <= __GNUC_MINOR__) \ + || defined __clang__) int k = _Generic (SIZE_MAX, size_t: 0); #elif (2 <= __GNUC__ || 4 <= __clang_major__ || defined __IBM__TYPEOF__ \ || (0x5110 <= __SUNPRO_C && !__STDC__)) @@ -283,10 +286,10 @@ static const char *macro_values[] = [gl_cv_header_working_stdint_h=yes], [], [case "$host_os" in - # Guess yes on native Windows. - mingw*) gl_cv_header_working_stdint_h="guessing yes" ;; - # In general, assume it works. - *) gl_cv_header_working_stdint_h="guessing yes" ;; + # Guess yes on native Windows. + mingw* | windows*) gl_cv_header_working_stdint_h="guessing yes" ;; + # In general, assume it works. + *) gl_cv_header_working_stdint_h="guessing yes" ;; esac ]) ]) diff --git a/gnulib-m4/stdint_h.m4 b/gnulib-m4/stdint_h.m4 index b8684b61..ee9773a8 100644 --- a/gnulib-m4/stdint_h.m4 +++ b/gnulib-m4/stdint_h.m4 @@ -1,5 +1,5 @@ # stdint_h.m4 serial 9 -dnl Copyright (C) 1997-2004, 2006, 2008-2022 Free Software Foundation, Inc. +dnl Copyright (C) 1997-2004, 2006, 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/stdio_h.m4 b/gnulib-m4/stdio_h.m4 index 42e96071..c19feefe 100644 --- a/gnulib-m4/stdio_h.m4 +++ b/gnulib-m4/stdio_h.m4 @@ -1,12 +1,22 @@ -# stdio_h.m4 serial 59 -dnl Copyright (C) 2007-2022 Free Software Foundation, Inc. +# stdio_h.m4 serial 63 +dnl Copyright (C) 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. -AC_DEFUN_ONCE([gl_STDIO_H], +AC_DEFUN([gl_STDIO_H_EARLY], [ - AC_REQUIRE([gl_STDIO_H_DEFAULTS]) + dnl Defining __USE_MINGW_ANSI_STDIO to 1 must be done early, because + dnl the results of several configure tests depend on it: The tests + dnl - checking whether snprintf returns a byte count as in C99... + dnl - checking whether snprintf truncates the result as in C99... + dnl - checking whether printf supports the 'F' directive... + dnl - checking whether printf supports the grouping flag... + dnl - checking whether printf supports the zero flag correctly... + dnl - checking whether printf supports infinite 'double' arguments... + dnl - checking whether printf supports large precisions... + dnl report 'yes' if __USE_MINGW_ANSI_STDIO is 1 but 'no' if + dnl __USE_MINGW_ANSI_STDIO is not set. AH_VERBATIM([MINGW_ANSI_STDIO], [/* Use GNU style printf and scanf. */ #ifndef __USE_MINGW_ANSI_STDIO @@ -14,6 +24,11 @@ AC_DEFUN_ONCE([gl_STDIO_H], #endif ]) AC_DEFINE([__USE_MINGW_ANSI_STDIO]) +]) + +AC_DEFUN_ONCE([gl_STDIO_H], +[ + AC_REQUIRE([gl_STDIO_H_DEFAULTS]) gl_NEXT_HEADERS([stdio.h]) dnl Determine whether __USE_MINGW_ANSI_STDIO makes printf and @@ -40,6 +55,9 @@ AC_DEFUN_ONCE([gl_STDIO_H], attribute "__gnu_printf__" instead of "__printf__"]) fi + dnl For defining _PRINTF_NAN_LEN_MAX. + gl_MUSL_LIBC + dnl This ifdef is an optimization, to avoid performing a configure check whose dnl result is not used. But it does not make the test of dnl GNULIB_STDIO_H_NONBLOCKING or GNULIB_NONBLOCKING redundant. @@ -82,6 +100,16 @@ AC_DEFUN_ONCE([gl_STDIO_H], if test $ac_cv_have_decl_fcloseall = no; then HAVE_DECL_FCLOSEALL=0 fi + + AC_CHECK_DECLS_ONCE([getw]) + if test $ac_cv_have_decl_getw = no; then + HAVE_DECL_GETW=0 + fi + + AC_CHECK_DECLS_ONCE([putw]) + if test $ac_cv_have_decl_putw = no; then + HAVE_DECL_PUTW=0 + fi ]) # gl_STDIO_MODULE_INDICATOR([modulename]) @@ -178,7 +206,9 @@ AC_DEFUN([gl_STDIO_H_DEFAULTS], HAVE_DECL_FTELLO=1; AC_SUBST([HAVE_DECL_FTELLO]) HAVE_DECL_GETDELIM=1; AC_SUBST([HAVE_DECL_GETDELIM]) HAVE_DECL_GETLINE=1; AC_SUBST([HAVE_DECL_GETLINE]) + HAVE_DECL_GETW=1; AC_SUBST([HAVE_DECL_GETW]) HAVE_DECL_OBSTACK_PRINTF=1; AC_SUBST([HAVE_DECL_OBSTACK_PRINTF]) + HAVE_DECL_PUTW=1; AC_SUBST([HAVE_DECL_PUTW]) HAVE_DECL_SNPRINTF=1; AC_SUBST([HAVE_DECL_SNPRINTF]) HAVE_DECL_VSNPRINTF=1; AC_SUBST([HAVE_DECL_VSNPRINTF]) HAVE_DPRINTF=1; AC_SUBST([HAVE_DPRINTF]) diff --git a/gnulib-m4/stdlib_h.m4 b/gnulib-m4/stdlib_h.m4 index 9e209697..88ccd141 100644 --- a/gnulib-m4/stdlib_h.m4 +++ b/gnulib-m4/stdlib_h.m4 @@ -1,5 +1,5 @@ -# stdlib_h.m4 serial 66 -dnl Copyright (C) 2007-2022 Free Software Foundation, Inc. +# stdlib_h.m4 serial 77 +dnl Copyright (C) 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -23,15 +23,58 @@ AC_DEFUN_ONCE([gl_STDLIB_H], # include <random.h> #endif ]], [_Exit aligned_alloc atoll canonicalize_file_name free - getloadavg getsubopt grantpt - initstate initstate_r mbtowc mkdtemp mkostemp mkostemps mkstemp mkstemps - posix_memalign posix_openpt ptsname ptsname_r qsort_r + getloadavg getprogname getsubopt grantpt + initstate initstate_r mbstowcs mbtowc mkdtemp mkostemp mkostemps mkstemp + mkstemps posix_memalign posix_openpt ptsname ptsname_r qsort_r random random_r reallocarray realpath rpmatch secure_getenv setenv setstate setstate_r srandom srandom_r strtod strtol strtold strtoll strtoul strtoull unlockpt unsetenv]) AC_REQUIRE([AC_C_RESTRICT]) + dnl Test whether MB_CUR_MAX needs to be overridden. + dnl On Solaris 10, in UTF-8 locales, its value is 3 but needs to be 4. + dnl Fortunately, we can do this because on this platform MB_LEN_MAX is 5. + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([gt_LOCALE_FR_UTF8]) + AC_CACHE_CHECK([whether MB_CUR_MAX is correct], + [gl_cv_macro_MB_CUR_MAX_good], + [ + dnl Initial guess, used when cross-compiling or when no suitable locale + dnl is present. +changequote(,)dnl + case "$host_os" in + # Guess no on Solaris. + solaris*) gl_cv_macro_MB_CUR_MAX_good="guessing no" ;; + # Guess yes otherwise. + *) gl_cv_macro_MB_CUR_MAX_good="guessing yes" ;; + esac +changequote([,])dnl + if test $LOCALE_FR_UTF8 != none; then + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#include <locale.h> +#include <stdlib.h> +int main () +{ + int result = 0; + if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) + { + if (MB_CUR_MAX < 4) + result |= 1; + } + return result; +}]])], + [gl_cv_macro_MB_CUR_MAX_good=yes], + [gl_cv_macro_MB_CUR_MAX_good=no], + [:]) + fi + ]) + case "$gl_cv_macro_MB_CUR_MAX_good" in + *yes) ;; + *) REPLACE_MB_CUR_MAX=1 ;; + esac + AC_CHECK_DECLS_ONCE([ecvt]) if test $ac_cv_have_decl_ecvt = no; then HAVE_DECL_ECVT=0 @@ -73,10 +116,12 @@ AC_DEFUN([gl_STDLIB_H_REQUIRE_DEFAULTS], gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CANONICALIZE_FILE_NAME]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREE_POSIX]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOADAVG]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPROGNAME]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETSUBOPT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GRANTPT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MALLOC_GNU]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MALLOC_POSIX]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSTOWCS]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBTOWC]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKDTEMP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKOSTEMP]) @@ -89,6 +134,7 @@ AC_DEFUN([gl_STDLIB_H_REQUIRE_DEFAULTS], gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTSNAME_R]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PUTENV]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_QSORT_R]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RAND]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RANDOM]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RANDOM_R]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALLOCARRAY]) @@ -99,6 +145,7 @@ AC_DEFUN([gl_STDLIB_H_REQUIRE_DEFAULTS], gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SECURE_GETENV]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETENV]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOD]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOF]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOL]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOLD]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOLL]) @@ -130,6 +177,8 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS], HAVE_DECL_FCVT=1; AC_SUBST([HAVE_DECL_FCVT]) HAVE_DECL_GCVT=1; AC_SUBST([HAVE_DECL_GCVT]) HAVE_DECL_GETLOADAVG=1; AC_SUBST([HAVE_DECL_GETLOADAVG]) + HAVE_DECL_PROGRAM_INVOCATION_NAME=1; AC_SUBST([HAVE_DECL_PROGRAM_INVOCATION_NAME]) + HAVE_GETPROGNAME=1; AC_SUBST([HAVE_GETPROGNAME]) HAVE_GETSUBOPT=1; AC_SUBST([HAVE_GETSUBOPT]) HAVE_GRANTPT=1; AC_SUBST([HAVE_GRANTPT]) HAVE_INITSTATE=1; AC_SUBST([HAVE_INITSTATE]) @@ -157,6 +206,7 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS], HAVE_SETSTATE=1; AC_SUBST([HAVE_SETSTATE]) HAVE_DECL_SETSTATE=1; AC_SUBST([HAVE_DECL_SETSTATE]) HAVE_STRTOD=1; AC_SUBST([HAVE_STRTOD]) + HAVE_STRTOF=1; AC_SUBST([HAVE_STRTOF]) HAVE_STRTOL=1; AC_SUBST([HAVE_STRTOL]) HAVE_STRTOLD=1; AC_SUBST([HAVE_STRTOLD]) HAVE_STRTOLL=1; AC_SUBST([HAVE_STRTOLL]) @@ -166,21 +216,31 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS], HAVE_SYS_LOADAVG_H=0; AC_SUBST([HAVE_SYS_LOADAVG_H]) HAVE_UNLOCKPT=1; AC_SUBST([HAVE_UNLOCKPT]) HAVE_DECL_UNSETENV=1; AC_SUBST([HAVE_DECL_UNSETENV]) + REPLACE__EXIT=0; AC_SUBST([REPLACE__EXIT]) REPLACE_ALIGNED_ALLOC=0; AC_SUBST([REPLACE_ALIGNED_ALLOC]) REPLACE_CALLOC_FOR_CALLOC_GNU=0; AC_SUBST([REPLACE_CALLOC_FOR_CALLOC_GNU]) REPLACE_CALLOC_FOR_CALLOC_POSIX=0; AC_SUBST([REPLACE_CALLOC_FOR_CALLOC_POSIX]) REPLACE_CANONICALIZE_FILE_NAME=0; AC_SUBST([REPLACE_CANONICALIZE_FILE_NAME]) REPLACE_FREE=0; AC_SUBST([REPLACE_FREE]) + REPLACE_GETLOADAVG=0; AC_SUBST([REPLACE_GETLOADAVG]) + REPLACE_GETPROGNAME=0; AC_SUBST([REPLACE_GETPROGNAME]) + REPLACE_GETSUBOPT=0; AC_SUBST([REPLACE_GETSUBOPT]) REPLACE_INITSTATE=0; AC_SUBST([REPLACE_INITSTATE]) REPLACE_MALLOC_FOR_MALLOC_GNU=0; AC_SUBST([REPLACE_MALLOC_FOR_MALLOC_GNU]) REPLACE_MALLOC_FOR_MALLOC_POSIX=0; AC_SUBST([REPLACE_MALLOC_FOR_MALLOC_POSIX]) + REPLACE_MB_CUR_MAX=0; AC_SUBST([REPLACE_MB_CUR_MAX]) + REPLACE_MBSTOWCS=0; AC_SUBST([REPLACE_MBSTOWCS]) REPLACE_MBTOWC=0; AC_SUBST([REPLACE_MBTOWC]) + REPLACE_MKOSTEMP=0; AC_SUBST([REPLACE_MKOSTEMP]) + REPLACE_MKOSTEMPS=0; AC_SUBST([REPLACE_MKOSTEMPS]) REPLACE_MKSTEMP=0; AC_SUBST([REPLACE_MKSTEMP]) REPLACE_POSIX_MEMALIGN=0; AC_SUBST([REPLACE_POSIX_MEMALIGN]) + REPLACE_POSIX_OPENPT=0; AC_SUBST([REPLACE_POSIX_OPENPT]) REPLACE_PTSNAME=0; AC_SUBST([REPLACE_PTSNAME]) REPLACE_PTSNAME_R=0; AC_SUBST([REPLACE_PTSNAME_R]) REPLACE_PUTENV=0; AC_SUBST([REPLACE_PUTENV]) REPLACE_QSORT_R=0; AC_SUBST([REPLACE_QSORT_R]) + REPLACE_RAND=0; AC_SUBST([REPLACE_RAND]) REPLACE_RANDOM=0; AC_SUBST([REPLACE_RANDOM]) REPLACE_RANDOM_R=0; AC_SUBST([REPLACE_RANDOM_R]) REPLACE_REALLOC_FOR_REALLOC_GNU=0; AC_SUBST([REPLACE_REALLOC_FOR_REALLOC_GNU]) @@ -190,6 +250,7 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS], REPLACE_SETENV=0; AC_SUBST([REPLACE_SETENV]) REPLACE_SETSTATE=0; AC_SUBST([REPLACE_SETSTATE]) REPLACE_STRTOD=0; AC_SUBST([REPLACE_STRTOD]) + REPLACE_STRTOF=0; AC_SUBST([REPLACE_STRTOF]) REPLACE_STRTOL=0; AC_SUBST([REPLACE_STRTOL]) REPLACE_STRTOLD=0; AC_SUBST([REPLACE_STRTOLD]) REPLACE_STRTOLL=0; AC_SUBST([REPLACE_STRTOLL]) diff --git a/gnulib-m4/strerror.m4 b/gnulib-m4/strerror.m4 index 4716649b..a1d12612 100644 --- a/gnulib-m4/strerror.m4 +++ b/gnulib-m4/strerror.m4 @@ -1,5 +1,5 @@ -# strerror.m4 serial 23 -dnl Copyright (C) 2002, 2007-2022 Free Software Foundation, Inc. +# strerror.m4 serial 25 +dnl Copyright (C) 2002, 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -24,12 +24,12 @@ AC_DEFUN([gl_FUNC_STRERROR], [gl_cv_func_working_strerror=yes], [gl_cv_func_working_strerror=no], [case "$host_os" in - # Guess yes on glibc systems. - *-gnu* | gnu*) gl_cv_func_working_strerror="guessing yes" ;; - # Guess yes on musl systems. - *-musl*) gl_cv_func_working_strerror="guessing yes" ;; - # If we don't know, obey --enable-cross-guesses. - *) gl_cv_func_working_strerror="$gl_cross_guess_normal" ;; + # Guess yes on glibc systems. + *-gnu* | gnu*) gl_cv_func_working_strerror="guessing yes" ;; + # Guess yes on musl systems. + *-musl* | midipix*) gl_cv_func_working_strerror="guessing yes" ;; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_working_strerror="$gl_cross_guess_normal" ;; esac ]) ]) @@ -80,14 +80,14 @@ AC_DEFUN([gl_FUNC_STRERROR_0], [gl_cv_func_strerror_0_works=yes], [gl_cv_func_strerror_0_works=no], [case "$host_os" in - # Guess yes on glibc systems. - *-gnu* | gnu*) gl_cv_func_strerror_0_works="guessing yes" ;; - # Guess yes on musl systems. - *-musl*) gl_cv_func_strerror_0_works="guessing yes" ;; - # Guess yes on native Windows. - mingw*) gl_cv_func_strerror_0_works="guessing yes" ;; - # If we don't know, obey --enable-cross-guesses. - *) gl_cv_func_strerror_0_works="$gl_cross_guess_normal" ;; + # Guess yes on glibc systems. + *-gnu* | gnu*) gl_cv_func_strerror_0_works="guessing yes" ;; + # Guess yes on musl systems. + *-musl* | midipix*) gl_cv_func_strerror_0_works="guessing yes" ;; + # Guess yes on native Windows. + mingw* | windows*) gl_cv_func_strerror_0_works="guessing yes" ;; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_strerror_0_works="$gl_cross_guess_normal" ;; esac ]) ]) diff --git a/gnulib-m4/strerror_r.m4 b/gnulib-m4/strerror_r.m4 index 23c3b423..903d03c3 100644 --- a/gnulib-m4/strerror_r.m4 +++ b/gnulib-m4/strerror_r.m4 @@ -1,5 +1,5 @@ -# strerror_r.m4 serial 24 -dnl Copyright (C) 2002, 2007-2022 Free Software Foundation, Inc. +# strerror_r.m4 serial 26 +dnl Copyright (C) 2002, 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -40,7 +40,7 @@ AC_DEFUN([gl_PREREQ_STRERROR_R], [ AC_REQUIRE([AC_FUNC_STRERROR_R]) dnl glibc >= 2.3.4 and cygwin 1.7.9 have a function __xpg_strerror_r. AC_CHECK_FUNCS_ONCE([__xpg_strerror_r]) - AC_CHECK_FUNCS_ONCE([catgets]) + gl_CHECK_FUNCS_ANDROID([catgets], [[#include <nl_types.h>]]) AC_CHECK_FUNCS_ONCE([snprintf]) ]) @@ -57,7 +57,7 @@ AC_DEFUN([gl_FUNC_STRERROR_R_WORKS], AC_REQUIRE([gl_FUNC_STRERROR_0]) - AC_CHECK_FUNCS_ONCE([strerror_r]) + gl_CHECK_FUNCS_ANDROID([strerror_r], [[#include <string.h>]]) if test $ac_cv_func_strerror_r = yes; then if test "$GL_GENERATE_ERRNO_H:$REPLACE_STRERROR_0" = false:0; then dnl The POSIX prototype is: int strerror_r (int, char *, size_t); @@ -172,5 +172,9 @@ changequote([,])dnl fi fi fi + else + case "$gl_cv_onwards_func_strerror_r" in + future*) REPLACE_STRERROR_R=1 ;; + esac fi ]) diff --git a/gnulib-m4/string_h.m4 b/gnulib-m4/string_h.m4 index 9e09b96e..9ea748cc 100644 --- a/gnulib-m4/string_h.m4 +++ b/gnulib-m4/string_h.m4 @@ -1,11 +1,11 @@ # Configure a GNU-like replacement for <string.h>. -# Copyright (C) 2007-2022 Free Software Foundation, Inc. +# Copyright (C) 2007-2024 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 34 +# serial 39 # Written by Paul Eggert. @@ -21,7 +21,8 @@ AC_DEFUN_ONCE([gl_STRING_H], dnl guaranteed by C89. gl_WARN_ON_USE_PREPARE([[#include <string.h> ]], - [ffsl ffsll memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul + [explicit_bzero ffsl ffsll memmem mempcpy memrchr memset_explicit + rawmemchr stpcpy stpncpy strchrnul strdup strncat strndup strnlen strpbrk strsep strcasestr strtok_r strerror_r strerrorname_np sigabbrev_np sigdescr_np strsignal strverscmp]) @@ -54,6 +55,7 @@ AC_DEFUN([gl_STRING_H_REQUIRE_DEFAULTS], gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMMEM]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMPCPY]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMRCHR]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMSET_EXPLICIT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RAWMEMCHR]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STPCPY]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STPNCPY]) @@ -107,6 +109,7 @@ AC_DEFUN([gl_STRING_H_DEFAULTS], HAVE_FFSLL=1; AC_SUBST([HAVE_FFSLL]) HAVE_DECL_MEMMEM=1; AC_SUBST([HAVE_DECL_MEMMEM]) HAVE_MEMPCPY=1; AC_SUBST([HAVE_MEMPCPY]) + HAVE_MEMSET_EXPLICIT=1; AC_SUBST([HAVE_MEMSET_EXPLICIT]) HAVE_DECL_MEMRCHR=1; AC_SUBST([HAVE_DECL_MEMRCHR]) HAVE_RAWMEMCHR=1; AC_SUBST([HAVE_RAWMEMCHR]) HAVE_STPCPY=1; AC_SUBST([HAVE_STPCPY]) @@ -128,6 +131,9 @@ AC_DEFUN([gl_STRING_H_DEFAULTS], REPLACE_FFSLL=0; AC_SUBST([REPLACE_FFSLL]) REPLACE_MEMCHR=0; AC_SUBST([REPLACE_MEMCHR]) REPLACE_MEMMEM=0; AC_SUBST([REPLACE_MEMMEM]) + REPLACE_MEMPCPY=0; AC_SUBST([REPLACE_MEMPCPY]) + REPLACE_MEMSET_EXPLICIT=0; AC_SUBST([REPLACE_MEMSET_EXPLICIT]) + REPLACE_STPCPY=0; AC_SUBST([REPLACE_STPCPY]) REPLACE_STPNCPY=0; AC_SUBST([REPLACE_STPNCPY]) REPLACE_STRCHRNUL=0; AC_SUBST([REPLACE_STRCHRNUL]) REPLACE_STRDUP=0; AC_SUBST([REPLACE_STRDUP]) @@ -141,5 +147,6 @@ AC_DEFUN([gl_STRING_H_DEFAULTS], REPLACE_STRERROR_R=0; AC_SUBST([REPLACE_STRERROR_R]) REPLACE_STRERRORNAME_NP=0; AC_SUBST([REPLACE_STRERRORNAME_NP]) REPLACE_STRSIGNAL=0; AC_SUBST([REPLACE_STRSIGNAL]) + REPLACE_STRVERSCMP=0; AC_SUBST([REPLACE_STRVERSCMP]) UNDEFINE_STRTOK_R=0; AC_SUBST([UNDEFINE_STRTOK_R]) ]) diff --git a/gnulib-m4/strncat.m4 b/gnulib-m4/strncat.m4 index 627280cf..17550d4a 100644 --- a/gnulib-m4/strncat.m4 +++ b/gnulib-m4/strncat.m4 @@ -1,5 +1,5 @@ -# strncat.m4 serial 6 -dnl Copyright (C) 2002-2004, 2009-2022 Free Software Foundation, Inc. +# strncat.m4 serial 8 +dnl Copyright (C) 2002-2004, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -15,7 +15,7 @@ AC_DEFUN_ONCE([gl_FUNC_STRNCAT], AC_CHECK_HEADERS_ONCE([sys/mman.h]) AC_CHECK_FUNCS_ONCE([mprotect]) - dnl Detect bug in Solaris 8..10 on SPARC and Solaris 11.0 on x86: + dnl Detect bug in Solaris 8..11.4 on SPARC and Solaris 11.0 on x86: dnl strncat should not dereference more than n bytes, but always dereferences dnl n+1 bytes if the first n bytes don't contain a NUL byte. dnl Assume that strncat works on platforms that lack mprotect. @@ -84,12 +84,12 @@ AC_DEFUN_ONCE([gl_FUNC_STRNCAT], ]])], [gl_cv_func_strncat_works=yes], [gl_cv_func_strncat_works=no], [ case "$host_os" in - # Guess no on Solaris. - solaris*) gl_cv_func_strncat_works="guessing no" ;; - # Guess yes on native Windows. - mingw*) gl_cv_func_strncat_works="guessing yes" ;; - # Guess yes otherwise. - *) gl_cv_func_strncat_works="guessing yes" ;; + # Guess no on Solaris. + solaris*) gl_cv_func_strncat_works="guessing no" ;; + # Guess yes on native Windows. + mingw* | windows*) gl_cv_func_strncat_works="guessing yes" ;; + # Guess yes otherwise. + *) gl_cv_func_strncat_works="guessing yes" ;; esac ]) ]) diff --git a/gnulib-m4/strstr.m4 b/gnulib-m4/strstr.m4 index 6cc20727..21d7768b 100644 --- a/gnulib-m4/strstr.m4 +++ b/gnulib-m4/strstr.m4 @@ -1,5 +1,5 @@ # strstr.m4 serial 24 -dnl Copyright (C) 2008-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/symlink.m4 b/gnulib-m4/symlink.m4 index 5be2babb..62062cf1 100644 --- a/gnulib-m4/symlink.m4 +++ b/gnulib-m4/symlink.m4 @@ -1,7 +1,7 @@ -# serial 9 +# serial 10 # See if we need to provide symlink replacement. -dnl Copyright (C) 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -38,6 +38,8 @@ AC_DEFUN([gl_FUNC_SYMLINK], [case "$host_os" in # Guess yes on Linux systems. linux-* | linux) gl_cv_func_symlink_works="guessing yes" ;; + # Guess yes on systems that emulate the Linux system calls. + midipix*) gl_cv_func_symlink_works="guessing yes" ;; # Guess yes on glibc systems. *-gnu* | gnu*) gl_cv_func_symlink_works="guessing yes" ;; # If we don't know, obey --enable-cross-guesses. diff --git a/gnulib-m4/sys_ioctl_h.m4 b/gnulib-m4/sys_ioctl_h.m4 index be653643..3e789f3d 100644 --- a/gnulib-m4/sys_ioctl_h.m4 +++ b/gnulib-m4/sys_ioctl_h.m4 @@ -1,5 +1,5 @@ # sys_ioctl_h.m4 serial 15 -dnl Copyright (C) 2008-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/sys_select_h.m4 b/gnulib-m4/sys_select_h.m4 index 2743cd17..9e279fba 100644 --- a/gnulib-m4/sys_select_h.m4 +++ b/gnulib-m4/sys_select_h.m4 @@ -1,5 +1,5 @@ # sys_select_h.m4 serial 23 -dnl Copyright (C) 2006-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2006-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/sys_socket_h.m4 b/gnulib-m4/sys_socket_h.m4 index ba3ae68e..af524849 100644 --- a/gnulib-m4/sys_socket_h.m4 +++ b/gnulib-m4/sys_socket_h.m4 @@ -1,5 +1,5 @@ # sys_socket_h.m4 serial 29 -dnl Copyright (C) 2005-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2005-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/sys_stat_h.m4 b/gnulib-m4/sys_stat_h.m4 index 2adbfdee..75018537 100644 --- a/gnulib-m4/sys_stat_h.m4 +++ b/gnulib-m4/sys_stat_h.m4 @@ -1,5 +1,5 @@ # sys_stat_h.m4 serial 42 -*- Autoconf -*- -dnl Copyright (C) 2006-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2006-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/sys_time_h.m4 b/gnulib-m4/sys_time_h.m4 index bc5e2b13..dc5353f3 100644 --- a/gnulib-m4/sys_time_h.m4 +++ b/gnulib-m4/sys_time_h.m4 @@ -1,7 +1,7 @@ # Configure a replacement for <sys/time.h>. # serial 12 -# Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc. +# Copyright (C) 2007, 2009-2024 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/sys_types_h.m4 b/gnulib-m4/sys_types_h.m4 index a5bef220..37d0ccad 100644 --- a/gnulib-m4/sys_types_h.m4 +++ b/gnulib-m4/sys_types_h.m4 @@ -1,5 +1,5 @@ # sys_types_h.m4 serial 13 -dnl Copyright (C) 2011-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2011-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/sys_uio_h.m4 b/gnulib-m4/sys_uio_h.m4 index 36f55ead..ce252ed4 100644 --- a/gnulib-m4/sys_uio_h.m4 +++ b/gnulib-m4/sys_uio_h.m4 @@ -1,5 +1,5 @@ # sys_uio_h.m4 serial 3 -dnl Copyright (C) 2011-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2011-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/thread.m4 b/gnulib-m4/thread.m4 index 1a8e543c..a840de6f 100644 --- a/gnulib-m4/thread.m4 +++ b/gnulib-m4/thread.m4 @@ -1,5 +1,5 @@ -# thread.m4 serial 3 -dnl Copyright (C) 2008-2022 Free Software Foundation, Inc. +# thread.m4 serial 5 +dnl Copyright (C) 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -9,9 +9,9 @@ AC_DEFUN([gl_THREAD], AC_REQUIRE([gl_THREADLIB]) if test $gl_threads_api = posix; then - gl_save_LIBS="$LIBS" + gl_saved_LIBS="$LIBS" LIBS="$LIBS $LIBMULTITHREAD" - AC_CHECK_FUNCS([pthread_atfork]) - LIBS="$gl_save_LIBS" + gl_CHECK_FUNCS_ANDROID([pthread_atfork], [[#include <pthread.h>]]) + LIBS="$gl_saved_LIBS" fi ]) diff --git a/gnulib-m4/threadlib.m4 b/gnulib-m4/threadlib.m4 index ecb4970a..6dee893e 100644 --- a/gnulib-m4/threadlib.m4 +++ b/gnulib-m4/threadlib.m4 @@ -1,5 +1,5 @@ -# threadlib.m4 serial 32 -dnl Copyright (C) 2005-2022 Free Software Foundation, Inc. +# threadlib.m4 serial 42 +dnl Copyright (C) 2005-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -85,10 +85,11 @@ AC_DEFUN([gl_WEAK_SYMBOLS], AC_CACHE_CHECK([whether imported symbols can be declared weak], [gl_cv_have_weak], [case "$host_os" in - cygwin*) - dnl On Cygwin 3.2.0 with gcc 10.2, the test below would succeed, but - dnl programs that use pthread_in_use() with weak symbol references - dnl crash miserably at runtime. + cygwin* | mingw* | windows*) + dnl On Cygwin 3.2.0 with gcc 10.2, and likewise on mingw 10.0.0 with + dnl gcc 11.3, the test below would succeed, but programs that use + dnl pthread_in_use() with weak symbol references crash miserably at + dnl runtime. gl_cv_have_weak="guessing no" ;; *) @@ -174,7 +175,7 @@ dnl Sets the variable LIBPMULTITHREAD, for programs that really need dnl multithread functionality. The difference between LIBPTHREAD and dnl LIBPMULTITHREAD is that on platforms supporting weak symbols, typically dnl LIBPTHREAD is empty whereas LIBPMULTITHREAD is not. -dnl Sets the variable LIB_SCHED_YIELD to the linker options needed to use the +dnl Sets the variable SCHED_YIELD_LIB to the linker options needed to use the dnl sched_yield() function. dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for dnl multithread-safe programs. @@ -205,7 +206,7 @@ AC_DEFUN([gl_PTHREADLIB_BODY], # If -pthread works, prefer it to -lpthread, since Ubuntu 14.04 # needs -pthread for some reason. See: # https://lists.gnu.org/r/bug-gnulib/2014-09/msg00023.html - save_LIBS=$LIBS + saved_LIBS="$LIBS" for gl_pthread in '' '-pthread'; do LIBS="$LIBS $gl_pthread" AC_LINK_IFELSE( @@ -219,7 +220,7 @@ AC_DEFUN([gl_PTHREADLIB_BODY], [gl_pthread_api=yes LIBPTHREAD=$gl_pthread LIBPMULTITHREAD=$gl_pthread]) - LIBS=$save_LIBS + LIBS="$saved_LIBS" test $gl_pthread_api = yes && break done echo "$as_me:__oline__: gl_pthread_api=$gl_pthread_api" >&AS_MESSAGE_LOG_FD @@ -261,11 +262,22 @@ AC_DEFUN([gl_PTHREADLIB_BODY], # On Solaris 10 or newer, this test is no longer needed, because # libc contains the fully functional pthread functions. case "$host_os" in +changequote(,)dnl solaris | solaris2.[1-9] | solaris2.[1-9].* | hpux*) +changequote([,])dnl AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1], [Define if the pthread_in_use() detection is hard.]) esac fi + ], + [dnl This is needed on FreeBSD 5.2.1. + AC_CHECK_LIB([thr], [pthread_kill], + [if test $gl_pthread_in_glibc = yes; then + LIBPMULTITHREAD= + else + LIBPMULTITHREAD=-lthr + fi + ]) ]) elif test $gl_pthread_api != yes; then # Some library is needed. Try libpthread and libc_r. @@ -297,13 +309,16 @@ AC_DEFUN([gl_PTHREADLIB_BODY], [AC_LANG_PROGRAM( [[#include <sched.h>]], [[sched_yield ();]])], - [LIB_SCHED_YIELD= + [SCHED_YIELD_LIB= ], [dnl Solaris 7...10 has sched_yield in librt, not in libpthread or libc. - AC_CHECK_LIB([rt], [sched_yield], [LIB_SCHED_YIELD=-lrt], + AC_CHECK_LIB([rt], [sched_yield], [SCHED_YIELD_LIB=-lrt], [dnl Solaris 2.5.1, 2.6 has sched_yield in libposix4, not librt. - AC_CHECK_LIB([posix4], [sched_yield], [LIB_SCHED_YIELD=-lposix4])]) + AC_CHECK_LIB([posix4], [sched_yield], [SCHED_YIELD_LIB=-lposix4])]) ]) + AC_SUBST([SCHED_YIELD_LIB]) + dnl For backward compatibility. + LIB_SCHED_YIELD="$SCHED_YIELD_LIB" AC_SUBST([LIB_SCHED_YIELD]) gl_pthreadlib_body_done=done @@ -338,7 +353,7 @@ AC_DEFUN([gl_STDTHREADLIB_BODY], AC_CHECK_HEADERS_ONCE([threads.h]) case "$host_os" in - mingw*) + mingw* | windows*) LIBSTDTHREAD= ;; *) @@ -349,7 +364,7 @@ AC_DEFUN([gl_STDTHREADLIB_BODY], dnl on libpthread (for the symbol 'pthread_mutexattr_gettype'). dnl glibc >= 2.34, AIX >= 7.1, and Solaris >= 11.4 have thrd_create in dnl libc. - AC_CHECK_FUNCS([thrd_create]) + gl_CHECK_FUNCS_ANDROID([thrd_create], [[#include <threads.h>]]) if test $ac_cv_func_thrd_create = yes; then LIBSTDTHREAD= else @@ -362,7 +377,7 @@ AC_DEFUN([gl_STDTHREADLIB_BODY], fi else dnl Libraries needed by thrd.c, mtx.c, cnd.c, tss.c. - LIBSTDTHREAD="$LIBPMULTITHREAD $LIB_SCHED_YIELD" + LIBSTDTHREAD="$LIBPMULTITHREAD $SCHED_YIELD_LIB" fi ;; esac @@ -433,10 +448,12 @@ AC_DEFUN([gl_THREADLIB_EARLY_BODY], m4_ifdef([gl_THREADLIB_DEFAULT_NO], [m4_divert_text([DEFAULTS], [gl_use_threads_default=no])], [m4_divert_text([DEFAULTS], [gl_use_threads_default=])]) - m4_divert_text([DEFAULTS], [gl_use_winpthreads_default=]) + dnl gl_use_winpthreads_default defaults to 'no', because in mingw 10, like + dnl in mingw 5, the use of libwinpthread still makes test-pthread-tss crash. + m4_divert_text([DEFAULTS], [gl_use_winpthreads_default=no]) AC_ARG_ENABLE([threads], -AS_HELP_STRING([--enable-threads={isoc|posix|isoc+posix|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [ -AS_HELP_STRING([--disable-threads], [build without multithread safety])]), +AS_HELP_STRING([[--enable-threads={isoc|posix|isoc+posix|windows}]], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [ +AS_HELP_STRING([[--disable-threads]], [build without multithread safety])]), [gl_use_threads=$enableval], [if test -n "$gl_use_threads_default"; then gl_use_threads="$gl_use_threads_default" @@ -457,7 +474,7 @@ changequote(,)dnl esac ;; dnl Obey gl_AVOID_WINPTHREAD on mingw. - mingw*) + mingw* | windows*) case "$gl_use_winpthreads_default" in yes) gl_use_threads=posix ;; no) gl_use_threads=windows ;; @@ -556,7 +573,7 @@ AC_DEFUN([gl_THREADLIB_BODY], case "$gl_use_threads" in yes | windows | win32) # The 'win32' is for backward compatibility. if { case "$host_os" in - mingw*) true;; + mingw* | windows*) true;; *) false;; esac }; then @@ -567,6 +584,10 @@ AC_DEFUN([gl_THREADLIB_BODY], ;; esac fi + else + dnl "$gl_use_threads" is "no". + AC_DEFINE([AVOID_ANY_THREADS], [1], + [Define if no multithread safety and no multithreading is desired.]) fi AC_MSG_CHECKING([for multithread API to use]) AC_MSG_RESULT([$gl_threads_api]) @@ -599,7 +620,8 @@ dnl ------------------- dnl Sets the gl_THREADLIB default so that on mingw, a dependency to the dnl libwinpthread DLL (mingw-w64 winpthreads library) is avoided. dnl The user can still override it at installation time, by using the -dnl configure option '--enable-threads'. +dnl configure option '--enable-threads=posix'. +dnl As of 2023, this is now the default. AC_DEFUN([gl_AVOID_WINPTHREAD], [ m4_divert_text([INIT_PREPARE], [gl_use_winpthreads_default=no]) diff --git a/gnulib-m4/time.m4 b/gnulib-m4/time.m4 new file mode 100644 index 00000000..6f2347b2 --- /dev/null +++ b/gnulib-m4/time.m4 @@ -0,0 +1,55 @@ +# time.m4 serial 5 +dnl Copyright (C) 2023-2024 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([gl_FUNC_TIME], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) + dnl glibc has the bug https://sourceware.org/bugzilla/show_bug.cgi?id=30200 . + AC_CACHE_CHECK([whether time() works], + [gl_cv_func_time_works], + [dnl Guess that it works except on + dnl - glibc >= 2.31 with Linux. And binaries produced on glibc < 2.31 + dnl need to run fine on newer glibc versions as well; therefore ignore + dnl __GLIBC_MINOR__. + dnl - FreeBSD/sparc, + dnl - AIX, + dnl - native Windows. + case "$host_os" in + linux*-gnu*) + AC_EGREP_CPP([Unlucky], [ + #include <features.h> + #ifdef __GNU_LIBRARY__ + #if __GLIBC__ == 2 + Unlucky GNU user + #endif + #endif + ], + [gl_cv_func_time_works="guessing no"], + [gl_cv_func_time_works="guessing yes"]) + ;; + freebsd*) + case "$host_cpu" in + sparc*) gl_cv_func_time_works="guessing no";; + *) gl_cv_func_time_works="guessing yes";; + esac + ;; + aix*) gl_cv_func_time_works="guessing no";; + mingw* | windows*) gl_cv_func_time_works="guessing no";; + *) gl_cv_func_time_works="guessing yes";; + esac + ]) + case "$gl_cv_func_time_works" in + *no) REPLACE_TIME=1 ;; + esac +]) + +# Prerequisites of lib/time.c. +AC_DEFUN([gl_PREREQ_TIME], +[ + : +]) diff --git a/gnulib-m4/time_h.m4 b/gnulib-m4/time_h.m4 index 4ac8fd00..32fade0f 100644 --- a/gnulib-m4/time_h.m4 +++ b/gnulib-m4/time_h.m4 @@ -1,8 +1,8 @@ # Configure a more-standard replacement for <time.h>. -# Copyright (C) 2000-2001, 2003-2007, 2009-2022 Free Software Foundation, Inc. +# Copyright (C) 2000-2001, 2003-2007, 2009-2024 Free Software Foundation, Inc. -# serial 20 +# serial 25 # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -23,7 +23,10 @@ AC_DEFUN_ONCE([gl_TIME_H], dnl corresponding gnulib module is not in use. gl_WARN_ON_USE_PREPARE([[ #include <time.h> - ]], [asctime_r ctime_r]) + ]], [ + asctime asctime_r ctime ctime_r gmtime_r localtime localtime_r mktime + nanosleep strftime strptime time timegm timespec_get timespec_getres tzset + ]) AC_REQUIRE([AC_C_RESTRICT]) @@ -137,6 +140,7 @@ AC_DEFUN([gl_TIME_H_REQUIRE_DEFAULTS], gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_NANOSLEEP]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRFTIME]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRPTIME]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIME]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMEGM]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMESPEC_GET]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMESPEC_GETRES]) @@ -161,23 +165,16 @@ AC_DEFUN([gl_TIME_H_DEFAULTS], HAVE_TIMESPEC_GETRES=1; AC_SUBST([HAVE_TIMESPEC_GETRES]) dnl Even GNU libc does not have timezone_t yet. HAVE_TIMEZONE_T=0; AC_SUBST([HAVE_TIMEZONE_T]) - dnl If another module says to replace or to not replace, do that. - dnl Otherwise, replace only if someone compiles with -DGNULIB_PORTCHECK; - dnl this lets maintainers check for portability. - REPLACE_CTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_CTIME]) - REPLACE_LOCALTIME_R=GNULIB_PORTCHECK; AC_SUBST([REPLACE_LOCALTIME_R]) - REPLACE_MKTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_MKTIME]) - REPLACE_NANOSLEEP=GNULIB_PORTCHECK; AC_SUBST([REPLACE_NANOSLEEP]) - REPLACE_STRFTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_STRFTIME]) - REPLACE_TIMEGM=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TIMEGM]) - REPLACE_TZSET=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TZSET]) - - dnl Hack so that the time module doesn't depend on the sys_time module. - dnl First, default GNULIB_GETTIMEOFDAY to 0 if sys_time is absent. - : ${GNULIB_GETTIMEOFDAY=0}; AC_SUBST([GNULIB_GETTIMEOFDAY]) - dnl Second, it's OK to not use GNULIB_PORTCHECK for REPLACE_GMTIME - dnl and REPLACE_LOCALTIME, as portability to Solaris 2.6 and earlier - dnl is no longer a big deal. + REPLACE_CTIME=0; AC_SUBST([REPLACE_CTIME]) REPLACE_GMTIME=0; AC_SUBST([REPLACE_GMTIME]) REPLACE_LOCALTIME=0; AC_SUBST([REPLACE_LOCALTIME]) + REPLACE_LOCALTIME_R=0; AC_SUBST([REPLACE_LOCALTIME_R]) + REPLACE_MKTIME=0; AC_SUBST([REPLACE_MKTIME]) + REPLACE_NANOSLEEP=0; AC_SUBST([REPLACE_NANOSLEEP]) + REPLACE_STRFTIME=0; AC_SUBST([REPLACE_STRFTIME]) + REPLACE_TIME=0; AC_SUBST([REPLACE_TIME]) + REPLACE_TIMEGM=0; AC_SUBST([REPLACE_TIMEGM]) + REPLACE_TIMESPEC_GET=0; AC_SUBST([REPLACE_TIMESPEC_GET]) + REPLACE_TIMESPEC_GETRES=0; AC_SUBST([REPLACE_TIMESPEC_GETRES]) + REPLACE_TZSET=0; AC_SUBST([REPLACE_TZSET]) ]) diff --git a/gnulib-m4/uchar_h.m4 b/gnulib-m4/uchar_h.m4 new file mode 100644 index 00000000..abd4f51f --- /dev/null +++ b/gnulib-m4/uchar_h.m4 @@ -0,0 +1,249 @@ +# uchar_h.m4 serial 31 +dnl Copyright (C) 2019-2024 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Prepare the overridden <uchar.h>. + +AC_DEFUN_ONCE([gl_UCHAR_H], +[ + AC_REQUIRE([gl_UCHAR_H_DEFAULTS]) + + gl_CHECK_NEXT_HEADERS([uchar.h]) + if test $ac_cv_header_uchar_h = yes; then + HAVE_UCHAR_H=1 + else + HAVE_UCHAR_H=0 + fi + AC_SUBST([HAVE_UCHAR_H]) + + gl_TYPE_CHAR8_T + gl_TYPE_CHAR16_T + gl_TYPE_CHAR32_T + + dnl In C++ mode, clang defines 'char16_t' and 'char32_t' as built-in types + dnl on some platforms (e.g. OpenBSD 6.7), and as types defined by many + dnl header files (<limits.h>, <stddef.h>, <stdint.h>, <stdio.h>, <stdlib.h> + dnl and others) on some platforms (e.g. Mac OS X 10.13). + dnl The same thing may also happen for 'char8_t'; so, be prepared for it. + m4_ifdef([gl_ANSI_CXX], [AC_REQUIRE([gl_ANSI_CXX])]) + CXX_HAS_UCHAR_TYPES=0 + if test $HAVE_UCHAR_H = 0; then + if test "$CXX" != no; then + AC_CACHE_CHECK([whether the C++ compiler predefines the <uchar.h> types], + [gl_cv_cxx_has_uchar_types], + [dnl We can't use AC_LANG_PUSH([C++]) and AC_LANG_POP([C++]) here, due to + dnl an autoconf bug <https://savannah.gnu.org/support/?110294>. + cat > conftest.cpp <<\EOF +#include <stddef.h> +char16_t a; +char32_t b; +EOF + gl_command="$CXX $CXXFLAGS $CPPFLAGS -c conftest.cpp" + if AC_TRY_EVAL([gl_command]); then + gl_cv_cxx_has_uchar_types=yes + else + gl_cv_cxx_has_uchar_types=no + fi + rm -fr conftest* + ]) + if test $gl_cv_cxx_has_uchar_types = yes; then + CXX_HAS_UCHAR_TYPES=1 + fi + fi + fi + AC_SUBST([CXX_HAS_UCHAR_TYPES]) + CXX_HAS_CHAR8_TYPE=0 + if test $HAVE_UCHAR_H = 0; then + if test "$CXX" != no; then + AC_CACHE_CHECK([whether the C++ compiler predefines the char8_t types], + [gl_cv_cxx_has_char8_type], + [dnl We can't use AC_LANG_PUSH([C++]) and AC_LANG_POP([C++]) here, due to + dnl an autoconf bug <https://savannah.gnu.org/support/?110294>. + cat > conftest.cpp <<\EOF +#include <stddef.h> +char8_t a; +EOF + gl_command="$CXX $CXXFLAGS $CPPFLAGS -c conftest.cpp" + if AC_TRY_EVAL([gl_command]); then + gl_cv_cxx_has_char8_type=yes + else + gl_cv_cxx_has_char8_type=no + fi + rm -fr conftest* + ]) + if test $gl_cv_cxx_has_char8_type = yes; then + CXX_HAS_CHAR8_TYPE=1 + fi + fi + fi + AC_SUBST([CXX_HAS_CHAR8_TYPE]) + + dnl Test whether a 'char32_t' can hold more characters than a 'wchar_t'. + gl_STDINT_BITSIZEOF([wchar_t], [gl_STDINT_INCLUDES]) + if test $BITSIZEOF_WCHAR_T -lt 32; then + SMALL_WCHAR_T=1 + else + SMALL_WCHAR_T=0 + fi + dnl SMALL_WCHAR_T is expected to be 1 on 32-bit AIX, Cygwin, native Windows. + AC_SUBST([SMALL_WCHAR_T]) + + dnl Check for declarations of anything we want to poison if the + dnl corresponding gnulib module is not in use, and which is not + dnl guaranteed by C11. + gl_WARN_ON_USE_PREPARE([[ + #ifdef __HAIKU__ + #include <stdint.h> + #endif + #include <uchar.h> + ]], [c32rtomb mbrtoc16 mbrtoc32]) +]) + +AC_DEFUN_ONCE([gl_TYPE_CHAR8_T], +[ + dnl Determine whether gnulib's <uchar.h> would, if present, override char8_t. + AC_CACHE_CHECK([whether char8_t is correctly defined], + [gl_cv_type_char8_t_works], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ + #ifdef __HAIKU__ + #include <stdint.h> + #endif + #include <uchar.h> + int verify[(char8_t)(-1) >= 0 && sizeof (char8_t) == sizeof (unsigned char) ? 1 : -1]; + ]]) + ], + [gl_cv_type_char8_t_works=yes], + [gl_cv_type_char8_t_works=no]) + ]) + if test $gl_cv_type_char8_t_works = no; then + GNULIBHEADERS_OVERRIDE_CHAR8_T=1 + else + GNULIBHEADERS_OVERRIDE_CHAR8_T=0 + fi + AC_SUBST([GNULIBHEADERS_OVERRIDE_CHAR8_T]) +]) + +dnl On Haiku 2020, char16_t and char32_t are incorrectly defined. +dnl See <https://dev.haiku-os.org/ticket/15990>. +AC_DEFUN_ONCE([gl_TYPE_CHAR16_T], +[ + dnl Determine whether gnulib's <uchar.h> would, if present, override char16_t. + AC_CACHE_CHECK([whether char16_t is correctly defined], + [gl_cv_type_char16_t_works], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ + #ifdef __HAIKU__ + #include <stdint.h> + #endif + #include <uchar.h> + /* For simplicity, assume that uint16_least_t is equivalent to + 'unsigned short'. */ + int verify[(char16_t)(-1) >= 0 && sizeof (char16_t) == sizeof (unsigned short) ? 1 : -1]; + ]]) + ], + [gl_cv_type_char16_t_works=yes], + [gl_cv_type_char16_t_works=no]) + ]) + if test $gl_cv_type_char16_t_works = no; then + GNULIBHEADERS_OVERRIDE_CHAR16_T=1 + else + GNULIBHEADERS_OVERRIDE_CHAR16_T=0 + fi + AC_SUBST([GNULIBHEADERS_OVERRIDE_CHAR16_T]) +]) +AC_DEFUN_ONCE([gl_TYPE_CHAR32_T], +[ + dnl Determine whether gnulib's <uchar.h> would, if present, override char32_t. + AC_CACHE_CHECK([whether char32_t is correctly defined], + [gl_cv_type_char32_t_works], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ + #ifdef __HAIKU__ + #include <stdint.h> + #endif + #include <uchar.h> + /* For simplicity, assume that uint32_least_t is equivalent to + 'unsigned int'. */ + int verify[(char32_t)(-1) >= 0 && sizeof (char32_t) == sizeof (unsigned int) ? 1 : -1]; + ]]) + ], + [gl_cv_type_char32_t_works=yes], + [gl_cv_type_char32_t_works=no]) + ]) + if test $gl_cv_type_char32_t_works = no; then + GNULIBHEADERS_OVERRIDE_CHAR32_T=1 + else + GNULIBHEADERS_OVERRIDE_CHAR32_T=0 + fi + AC_SUBST([GNULIBHEADERS_OVERRIDE_CHAR32_T]) +]) + +# gl_UCHAR_MODULE_INDICATOR([modulename]) +# sets the shell variable that indicates the presence of the given module +# to a C preprocessor expression that will evaluate to 1. +# This macro invocation must not occur in macros that are AC_REQUIREd. +AC_DEFUN([gl_UCHAR_MODULE_INDICATOR], +[ + dnl Ensure to expand the default settings once only. + gl_UCHAR_H_REQUIRE_DEFAULTS + gl_MODULE_INDICATOR_SET_VARIABLE([$1]) + dnl Define it also as a C macro, for the benefit of the unit tests. + gl_MODULE_INDICATOR_FOR_TESTS([$1]) +]) + +# Initializes the default values for AC_SUBSTed shell variables. +# This macro must not be AC_REQUIREd. It must only be invoked, and only +# outside of macros or in macros that are not AC_REQUIREd. +AC_DEFUN([gl_UCHAR_H_REQUIRE_DEFAULTS], +[ + m4_defun(GL_MODULE_INDICATOR_PREFIX[_UCHAR_H_MODULE_INDICATOR_DEFAULTS], [ + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_BTOC32]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISALNUM]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISALPHA]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISBLANK]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISCNTRL]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISDIGIT]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISGRAPH]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISLOWER]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISPRINT]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISPUNCT]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISSPACE]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISUPPER]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISXDIGIT]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32TOLOWER]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32TOUPPER]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32WIDTH]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32RTOMB]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32SNRTOMBS]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32SRTOMBS]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32STOMBS]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32SWIDTH]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32TOB]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32_APPLY_MAPPING]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32_APPLY_TYPE_TEST]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32_GET_MAPPING]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32_GET_TYPE_TEST]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBRTOC16]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBRTOC32]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSNRTOC32S]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSRTOC32S]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSTOC32S]) + ]) + m4_require(GL_MODULE_INDICATOR_PREFIX[_UCHAR_H_MODULE_INDICATOR_DEFAULTS]) + AC_REQUIRE([gl_UCHAR_H_DEFAULTS]) +]) + +AC_DEFUN([gl_UCHAR_H_DEFAULTS], +[ + dnl Assume proper GNU behavior unless another module says otherwise. + HAVE_C32RTOMB=1; AC_SUBST([HAVE_C32RTOMB]) + HAVE_MBRTOC16=1; AC_SUBST([HAVE_MBRTOC16]) + HAVE_MBRTOC32=1; AC_SUBST([HAVE_MBRTOC32]) + REPLACE_C32RTOMB=0; AC_SUBST([REPLACE_C32RTOMB]) + REPLACE_MBRTOC16=0; AC_SUBST([REPLACE_MBRTOC16]) + REPLACE_MBRTOC32=0; AC_SUBST([REPLACE_MBRTOC32]) +]) diff --git a/gnulib-m4/unicase_h.m4 b/gnulib-m4/unicase_h.m4 new file mode 100644 index 00000000..ad2f6215 --- /dev/null +++ b/gnulib-m4/unicase_h.m4 @@ -0,0 +1,43 @@ +# unicase_h.m4 serial 1 +dnl Copyright (C) 2023-2024 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN_ONCE([gl_UNICASE_H], +[ + dnl Ensure to expand the default settings once only, before all statements + dnl that occur in other macros. + AC_REQUIRE([gl_UNICASE_H_DEFAULTS]) +]) + +# gl_UNICASE_MODULE_INDICATOR([modulename]) +# sets the shell variable that indicates the presence of the given module +# to a C preprocessor expression that will evaluate to 1. +# This macro invocation must not occur in macros that are AC_REQUIREd. +AC_DEFUN([gl_UNICASE_MODULE_INDICATOR], +[ + dnl Ensure to expand the default settings once only. + gl_UNICASE_H_REQUIRE_DEFAULTS + gl_MODULE_INDICATOR_SET_VARIABLE([$1]) + dnl Define it also as a C macro, for the benefit of the unit tests. + gl_MODULE_INDICATOR_FOR_TESTS([$1]) +]) + +# Initializes the default values for AC_SUBSTed shell variables. +# This macro must not be AC_REQUIREd. It must only be invoked, and only +# outside of macros or in macros that are not AC_REQUIREd. +AC_DEFUN([gl_UNICASE_H_REQUIRE_DEFAULTS], +[ + m4_defun(GL_MODULE_INDICATOR_PREFIX[_UNICASE_H_MODULE_INDICATOR_DEFAULTS], [ + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICASE_EMPTY_PREFIX_CONTEXT_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICASE_EMPTY_SUFFIX_CONTEXT_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + ]) + m4_require(GL_MODULE_INDICATOR_PREFIX[_UNICASE_H_MODULE_INDICATOR_DEFAULTS]) + AC_REQUIRE([gl_UNICASE_H_DEFAULTS]) +]) + +AC_DEFUN([gl_UNICASE_H_DEFAULTS], +[ + dnl Assume proper GNU behavior unless another module says otherwise. +]) diff --git a/gnulib-m4/unictype_h.m4 b/gnulib-m4/unictype_h.m4 new file mode 100644 index 00000000..68b864bd --- /dev/null +++ b/gnulib-m4/unictype_h.m4 @@ -0,0 +1,176 @@ +# unictype_h.m4 serial 3 +dnl Copyright (C) 2023-2024 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN_ONCE([gl_UNICTYPE_H], +[ + dnl Ensure to expand the default settings once only, before all statements + dnl that occur in other macros. + AC_REQUIRE([gl_UNICTYPE_H_DEFAULTS]) +]) + +# gl_UNICTYPE_MODULE_INDICATOR([modulename]) +# sets the shell variable that indicates the presence of the given module +# to a C preprocessor expression that will evaluate to 1. +# This macro invocation must not occur in macros that are AC_REQUIREd. +AC_DEFUN([gl_UNICTYPE_MODULE_INDICATOR], +[ + dnl Ensure to expand the default settings once only. + gl_UNICTYPE_H_REQUIRE_DEFAULTS + gl_MODULE_INDICATOR_SET_VARIABLE([$1]) + dnl Define it also as a C macro, for the benefit of the unit tests. + gl_MODULE_INDICATOR_FOR_TESTS([$1]) +]) + +# Initializes the default values for AC_SUBSTed shell variables. +# This macro must not be AC_REQUIREd. It must only be invoked, and only +# outside of macros or in macros that are not AC_REQUIREd. +AC_DEFUN([gl_UNICTYPE_H_REQUIRE_DEFAULTS], +[ + m4_defun(GL_MODULE_INDICATOR_PREFIX[_UNICTYPE_H_MODULE_INDICATOR_DEFAULTS], [ + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_L_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_LC_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_LU_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_LL_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_LT_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_LM_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_LO_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_M_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_MN_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_MC_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_ME_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_N_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_ND_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_NL_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_NO_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_P_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_PC_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_PD_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_PS_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_PE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_PI_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_PF_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_PO_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_S_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_SM_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_SC_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_SK_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_SO_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_Z_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_ZS_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_ZL_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_ZP_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_C_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_CC_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_CF_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_CS_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_CO_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_CATEGORY_CN_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_WHITE_SPACE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_ALPHABETIC_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_OTHER_ALPHABETIC_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_NOT_A_CHARACTER_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_DEFAULT_IGNORABLE_CODE_POINT_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_OTHER_DEFAULT_IGNORABLE_CODE_POINT_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_DEPRECATED_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_LOGICAL_ORDER_EXCEPTION_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_VARIATION_SELECTOR_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_PRIVATE_USE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_UNASSIGNED_CODE_VALUE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_UPPERCASE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_OTHER_UPPERCASE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_LOWERCASE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_OTHER_LOWERCASE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_TITLECASE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_CASED_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_CASE_IGNORABLE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_LOWERCASED_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_UPPERCASED_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_TITLECASED_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_CASEFOLDED_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_CHANGES_WHEN_CASEMAPPED_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_SOFT_DOTTED_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_ID_START_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_OTHER_ID_START_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_ID_CONTINUE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_OTHER_ID_CONTINUE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_XID_START_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_XID_CONTINUE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_ID_COMPAT_MATH_START_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_ID_COMPAT_MATH_CONTINUE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_PATTERN_WHITE_SPACE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_PATTERN_SYNTAX_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_JOIN_CONTROL_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_GRAPHEME_BASE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_GRAPHEME_EXTEND_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_OTHER_GRAPHEME_EXTEND_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_GRAPHEME_LINK_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_BIDI_CONTROL_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_BIDI_LEFT_TO_RIGHT_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_BIDI_HEBREW_RIGHT_TO_LEFT_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_BIDI_ARABIC_RIGHT_TO_LEFT_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_BIDI_EUROPEAN_DIGIT_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_BIDI_EUR_NUM_SEPARATOR_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_BIDI_EUR_NUM_TERMINATOR_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_BIDI_ARABIC_DIGIT_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_BIDI_COMMON_SEPARATOR_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_BIDI_BLOCK_SEPARATOR_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_BIDI_SEGMENT_SEPARATOR_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_BIDI_WHITESPACE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_BIDI_NON_SPACING_MARK_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_BIDI_BOUNDARY_NEUTRAL_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_BIDI_PDF_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_BIDI_EMBEDDING_OR_OVERRIDE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_BIDI_OTHER_NEUTRAL_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_HEX_DIGIT_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_ASCII_HEX_DIGIT_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_IDEOGRAPHIC_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_UNIFIED_IDEOGRAPH_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_RADICAL_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_IDS_UNARY_OPERATOR_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_IDS_BINARY_OPERATOR_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_IDS_TRINARY_OPERATOR_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_EMOJI_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_EMOJI_PRESENTATION_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_EMOJI_MODIFIER_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_EMOJI_MODIFIER_BASE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_EMOJI_COMPONENT_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_EXTENDED_PICTOGRAPHIC_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_ZERO_WIDTH_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_SPACE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_NON_BREAK_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_ISO_CONTROL_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_FORMAT_CONTROL_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_PREPENDED_CONCATENATION_MARK_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_DASH_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_HYPHEN_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_PUNCTUATION_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_LINE_SEPARATOR_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_PARAGRAPH_SEPARATOR_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_QUOTATION_MARK_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_SENTENCE_TERMINAL_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_TERMINAL_PUNCTUATION_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_CURRENCY_SYMBOL_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_MATH_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_OTHER_MATH_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_PAIRED_PUNCTUATION_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_LEFT_OF_PAIR_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_COMBINING_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_COMPOSITE_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_DECIMAL_DIGIT_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_NUMERIC_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_DIACRITIC_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_EXTENDER_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_IGNORABLE_CONTROL_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNICTYPE_PROPERTY_REGIONAL_INDICATOR_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + ]) + m4_require(GL_MODULE_INDICATOR_PREFIX[_UNICTYPE_H_MODULE_INDICATOR_DEFAULTS]) + AC_REQUIRE([gl_UNICTYPE_H_DEFAULTS]) +]) + +AC_DEFUN([gl_UNICTYPE_H_DEFAULTS], +[ + dnl Assume proper GNU behavior unless another module says otherwise. +]) diff --git a/gnulib-m4/unimetadata_h.m4 b/gnulib-m4/unimetadata_h.m4 new file mode 100644 index 00000000..abdc06d8 --- /dev/null +++ b/gnulib-m4/unimetadata_h.m4 @@ -0,0 +1,42 @@ +# unimetadata_h.m4 serial 1 +dnl Copyright (C) 2024 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN_ONCE([gl_UNIMETADATA_H], +[ + dnl Ensure to expand the default settings once only, before all statements + dnl that occur in other macros. + AC_REQUIRE([gl_UNIMETADATA_H_DEFAULTS]) +]) + +# gl_UNIMETADATA_MODULE_INDICATOR([modulename]) +# sets the shell variable that indicates the presence of the given module +# to a C preprocessor expression that will evaluate to 1. +# This macro invocation must not occur in macros that are AC_REQUIREd. +AC_DEFUN([gl_UNIMETADATA_MODULE_INDICATOR], +[ + dnl Ensure to expand the default settings once only. + gl_UNIMETADATA_H_REQUIRE_DEFAULTS + gl_MODULE_INDICATOR_SET_VARIABLE([$1]) + dnl Define it also as a C macro, for the benefit of the unit tests. + gl_MODULE_INDICATOR_FOR_TESTS([$1]) +]) + +# Initializes the default values for AC_SUBSTed shell variables. +# This macro must not be AC_REQUIREd. It must only be invoked, and only +# outside of macros or in macros that are not AC_REQUIREd. +AC_DEFUN([gl_UNIMETADATA_H_REQUIRE_DEFAULTS], +[ + m4_defun(GL_MODULE_INDICATOR_PREFIX[_UNIMETADATA_H_MODULE_INDICATOR_DEFAULTS], [ + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNIMETADATA_UNICODE_VERSION_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + ]) + m4_require(GL_MODULE_INDICATOR_PREFIX[_UNIMETADATA_H_MODULE_INDICATOR_DEFAULTS]) + AC_REQUIRE([gl_UNIMETADATA_H_DEFAULTS]) +]) + +AC_DEFUN([gl_UNIMETADATA_H_DEFAULTS], +[ + dnl Assume proper GNU behavior unless another module says otherwise. +]) diff --git a/gnulib-m4/uninorm_h.m4 b/gnulib-m4/uninorm_h.m4 new file mode 100644 index 00000000..aadf5598 --- /dev/null +++ b/gnulib-m4/uninorm_h.m4 @@ -0,0 +1,45 @@ +# uninorm_h.m4 serial 1 +dnl Copyright (C) 2023-2024 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +AC_DEFUN_ONCE([gl_UNINORM_H], +[ + dnl Ensure to expand the default settings once only, before all statements + dnl that occur in other macros. + AC_REQUIRE([gl_UNINORM_H_DEFAULTS]) +]) + +# gl_UNINORM_MODULE_INDICATOR([modulename]) +# sets the shell variable that indicates the presence of the given module +# to a C preprocessor expression that will evaluate to 1. +# This macro invocation must not occur in macros that are AC_REQUIREd. +AC_DEFUN([gl_UNINORM_MODULE_INDICATOR], +[ + dnl Ensure to expand the default settings once only. + gl_UNINORM_H_REQUIRE_DEFAULTS + gl_MODULE_INDICATOR_SET_VARIABLE([$1]) + dnl Define it also as a C macro, for the benefit of the unit tests. + gl_MODULE_INDICATOR_FOR_TESTS([$1]) +]) + +# Initializes the default values for AC_SUBSTed shell variables. +# This macro must not be AC_REQUIREd. It must only be invoked, and only +# outside of macros or in macros that are not AC_REQUIREd. +AC_DEFUN([gl_UNINORM_H_REQUIRE_DEFAULTS], +[ + m4_defun(GL_MODULE_INDICATOR_PREFIX[_UNINORM_H_MODULE_INDICATOR_DEFAULTS], [ + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNINORM_NFD_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNINORM_NFC_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNINORM_NFKD_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNINORM_NFKC_DLL_VARIABLE], ['LIBUNISTRING_DLL_VARIABLE']) + ]) + m4_require(GL_MODULE_INDICATOR_PREFIX[_UNINORM_H_MODULE_INDICATOR_DEFAULTS]) + AC_REQUIRE([gl_UNINORM_H_DEFAULTS]) +]) + +AC_DEFUN([gl_UNINORM_H_DEFAULTS], +[ + dnl Assume proper GNU behavior unless another module says otherwise. +]) diff --git a/gnulib-m4/unistd_h.m4 b/gnulib-m4/unistd_h.m4 index 4c66ccc0..e078bd61 100644 --- a/gnulib-m4/unistd_h.m4 +++ b/gnulib-m4/unistd_h.m4 @@ -1,5 +1,5 @@ -# unistd_h.m4 serial 90 -dnl Copyright (C) 2006-2022 Free Software Foundation, Inc. +# unistd_h.m4 serial 95 +dnl Copyright (C) 2006-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -225,6 +225,7 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS], REPLACE_COPY_FILE_RANGE=0; AC_SUBST([REPLACE_COPY_FILE_RANGE]) REPLACE_DUP=0; AC_SUBST([REPLACE_DUP]) REPLACE_DUP2=0; AC_SUBST([REPLACE_DUP2]) + REPLACE_DUP3=0; AC_SUBST([REPLACE_DUP3]) REPLACE_EXECL=0; AC_SUBST([REPLACE_EXECL]) REPLACE_EXECLE=0; AC_SUBST([REPLACE_EXECLE]) REPLACE_EXECLP=0; AC_SUBST([REPLACE_EXECLP]) @@ -233,11 +234,14 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS], REPLACE_EXECVP=0; AC_SUBST([REPLACE_EXECVP]) REPLACE_EXECVPE=0; AC_SUBST([REPLACE_EXECVPE]) REPLACE_FACCESSAT=0; AC_SUBST([REPLACE_FACCESSAT]) + REPLACE_FCHDIR=0; AC_SUBST([REPLACE_FCHDIR]) REPLACE_FCHOWNAT=0; AC_SUBST([REPLACE_FCHOWNAT]) + REPLACE_FDATASYNC=0; AC_SUBST([REPLACE_FDATASYNC]) REPLACE_FTRUNCATE=0; AC_SUBST([REPLACE_FTRUNCATE]) REPLACE_GETCWD=0; AC_SUBST([REPLACE_GETCWD]) REPLACE_GETDOMAINNAME=0; AC_SUBST([REPLACE_GETDOMAINNAME]) REPLACE_GETDTABLESIZE=0; AC_SUBST([REPLACE_GETDTABLESIZE]) + REPLACE_GETENTROPY=0; AC_SUBST([REPLACE_GETENTROPY]) REPLACE_GETLOGIN_R=0; AC_SUBST([REPLACE_GETLOGIN_R]) REPLACE_GETGROUPS=0; AC_SUBST([REPLACE_GETGROUPS]) REPLACE_GETPAGESIZE=0; AC_SUBST([REPLACE_GETPAGESIZE]) @@ -248,12 +252,14 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS], REPLACE_LINK=0; AC_SUBST([REPLACE_LINK]) REPLACE_LINKAT=0; AC_SUBST([REPLACE_LINKAT]) REPLACE_LSEEK=0; AC_SUBST([REPLACE_LSEEK]) + REPLACE_PIPE2=0; AC_SUBST([REPLACE_PIPE2]) REPLACE_PREAD=0; AC_SUBST([REPLACE_PREAD]) REPLACE_PWRITE=0; AC_SUBST([REPLACE_PWRITE]) REPLACE_READ=0; AC_SUBST([REPLACE_READ]) REPLACE_READLINK=0; AC_SUBST([REPLACE_READLINK]) REPLACE_READLINKAT=0; AC_SUBST([REPLACE_READLINKAT]) REPLACE_RMDIR=0; AC_SUBST([REPLACE_RMDIR]) + REPLACE_SETHOSTNAME=0; AC_SUBST([REPLACE_SETHOSTNAME]) REPLACE_SLEEP=0; AC_SUBST([REPLACE_SLEEP]) REPLACE_SYMLINK=0; AC_SUBST([REPLACE_SYMLINK]) REPLACE_SYMLINKAT=0; AC_SUBST([REPLACE_SYMLINKAT]) diff --git a/gnulib-m4/usleep.m4 b/gnulib-m4/usleep.m4 index 25d23f51..c688a043 100644 --- a/gnulib-m4/usleep.m4 +++ b/gnulib-m4/usleep.m4 @@ -1,5 +1,5 @@ -# usleep.m4 serial 7 -dnl Copyright (C) 2009-2022 Free Software Foundation, Inc. +# usleep.m4 serial 9 +dnl Copyright (C) 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -29,14 +29,16 @@ AC_DEFUN([gl_FUNC_USLEEP], ]], [[return !!usleep (1000000);]])], [gl_cv_func_usleep_works=yes], [gl_cv_func_usleep_works=no], [case "$host_os" in - # Guess yes on glibc systems. - *-gnu* | gnu*) gl_cv_func_usleep_works="guessing yes" ;; - # Guess yes on musl systems. - *-musl*) gl_cv_func_usleep_works="guessing yes" ;; - # Guess no on native Windows. - mingw*) gl_cv_func_usleep_works="guessing no" ;; - # If we don't know, obey --enable-cross-guesses. - *) gl_cv_func_usleep_works="$gl_cross_guess_normal" ;; + # Guess yes on glibc systems. + *-gnu* | gnu*) gl_cv_func_usleep_works="guessing yes" ;; + # Guess yes on musl systems. + *-musl*) gl_cv_func_usleep_works="guessing yes" ;; + # Guess yes on systems that emulate the Linux system calls. + midipix*) gl_cv_func_usleep_works="guessing yes" ;; + # Guess no on native Windows. + mingw* | windows*) gl_cv_func_usleep_works="guessing no" ;; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_usleep_works="$gl_cross_guess_normal" ;; esac ])]) case "$gl_cv_func_usleep_works" in diff --git a/gnulib-m4/vasnprintf.m4 b/gnulib-m4/vasnprintf.m4 index afdece71..21a85bb1 100644 --- a/gnulib-m4/vasnprintf.m4 +++ b/gnulib-m4/vasnprintf.m4 @@ -1,5 +1,5 @@ -# vasnprintf.m4 serial 38 -dnl Copyright (C) 2002-2004, 2006-2022 Free Software Foundation, Inc. +# vasnprintf.m4 serial 52 +dnl Copyright (C) 2002-2004, 2006-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -29,6 +29,15 @@ AC_DEFUN([gl_REPLACE_VASNPRINTF], gl_PREREQ_ASNPRINTF ]) +AC_DEFUN([gl_FUNC_VASNWPRINTF], +[ + AC_LIBOBJ([printf-args]) + gl_PREREQ_PRINTF_ARGS + gl_PREREQ_PRINTF_PARSE + gl_PREREQ_VASNWPRINTF + gl_PREREQ_ASNPRINTF +]) + # Prerequisites of lib/printf-args.h, lib/printf-args.c. AC_DEFUN([gl_PREREQ_PRINTF_ARGS], [ @@ -37,6 +46,7 @@ AC_DEFUN([gl_PREREQ_PRINTF_ARGS], ]) # Prerequisites of lib/printf-parse.h, lib/printf-parse.c. +# Prerequisites of lib/wprintf-parse.h, lib/wprintf-parse.c. AC_DEFUN([gl_PREREQ_PRINTF_PARSE], [ AC_REQUIRE([gl_FEATURES_H]) @@ -50,19 +60,13 @@ AC_DEFUN([gl_PREREQ_PRINTF_PARSE], AC_REQUIRE([gt_AC_TYPE_INTMAX_T]) ]) -# Prerequisites of lib/vasnprintf.c. +# Prerequisites of lib/vasnprintf.c if !WIDE_CHAR_VERSION. AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF], [ - AC_REQUIRE([AC_FUNC_ALLOCA]) - AC_REQUIRE([gt_TYPE_WCHAR_T]) - AC_REQUIRE([gt_TYPE_WINT_T]) - AC_CHECK_FUNCS([snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb]) + AC_CHECK_FUNCS([snprintf strnlen wcrtomb]) dnl Use the _snprintf function only if it is declared (because on NetBSD it dnl is defined as a weak alias of snprintf; we prefer to use the latter). AC_CHECK_DECLS([_snprintf], , , [[#include <stdio.h>]]) - dnl Knowing DBL_EXPBIT0_WORD and DBL_EXPBIT0_BIT enables an optimization - dnl in the code for NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE. - AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION]) dnl We can avoid a lot of code by assuming that snprintf's return value dnl conforms to ISO C99. So check that. AC_REQUIRE([gl_SNPRINTF_RETVAL_C99]) @@ -84,6 +88,108 @@ AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF], terminated.]) ;; esac + gl_PREREQ_VASNXPRINTF +]) + +# Prerequisites of lib/vasnwprintf.c. +AC_DEFUN_ONCE([gl_PREREQ_VASNWPRINTF], +[ + AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles + AC_CHECK_FUNCS_ONCE([swprintf wcsnlen mbrtowc]) + AC_CHECK_DECLS([_snwprintf], , , [[#include <stdio.h>]]) + AC_CHECK_DECLS([wcsnlen], , , [[#include <wchar.h>]]) + gl_SWPRINTF_WORKS + case "$gl_cv_func_swprintf_works" in + *yes) + AC_DEFINE([HAVE_WORKING_SWPRINTF], [1], + [Define if the swprintf function works correctly when it produces output + that contains null wide characters.]) + ;; + esac + gl_MBRTOWC_C_LOCALE + case "$gl_cv_func_mbrtowc_C_locale_sans_EILSEQ" in + *yes) + AC_CACHE_CHECK([whether swprintf in the C locale is free of encoding errors], + [gl_cv_func_swprintf_C_locale_sans_EILSEQ], + [ + AC_RUN_IFELSE( + [AC_LANG_SOURCE([[ +#ifndef __USE_MINGW_ANSI_STDIO +# define __USE_MINGW_ANSI_STDIO 1 +#endif +#include <stdio.h> +#include <wchar.h> +int main() +{ + int result = 0; + { /* This test fails on glibc 2.35, musl libc 1.2.4, FreeBSD 13.2, NetBSD 9.3, + OpenBSD 7.2, Cygwin 2.9.0. + Reported at <https://www.openwall.com/lists/musl/2023/06/12/2>. */ + wchar_t buf[12]; + int ret = swprintf (buf, 12, L"%c", '\377'); + if (ret < 0) + result |= 1; + } + return result; +}]])], + [gl_cv_func_swprintf_C_locale_sans_EILSEQ=yes], + [gl_cv_func_swprintf_C_locale_sans_EILSEQ=no], + [case "$host_os" in + # Guess no on glibc systems. + *-gnu* | gnu*) gl_cv_func_swprintf_C_locale_sans_EILSEQ="guessing yes";; + # Guess no on musl systems. + *-musl* | midipix*) gl_cv_func_swprintf_C_locale_sans_EILSEQ="guessing no";; + # If we don't know, obey --enable-cross-guesses. + *) gl_cv_func_swprintf_C_locale_sans_EILSEQ="$gl_cross_guess_normal";; + esac + ]) + ]) + ;; + esac + if case "$gl_cv_func_mbrtowc_C_locale_sans_EILSEQ" in + *yes) false ;; + *) true ;; + esac \ + || case "$gl_cv_func_swprintf_C_locale_sans_EILSEQ" in + *yes) false ;; + *) true ;; + esac; then + AC_DEFINE([NEED_WPRINTF_DIRECTIVE_C], [1], + [Define if the vasnwprintf implementation needs special code for + the 'c' directive.]) + fi + gl_SWPRINTF_DIRECTIVE_LA + case "$gl_cv_func_swprintf_directive_la" in + *yes) ;; + *) + AC_DEFINE([NEED_WPRINTF_DIRECTIVE_LA], [1], + [Define if the vasnwprintf implementation needs special code for + the 'a' directive with 'long double' arguments.]) + ;; + esac + gl_SWPRINTF_DIRECTIVE_LC + case "$gl_cv_func_swprintf_directive_lc" in + *yes) ;; + *) + AC_DEFINE([NEED_WPRINTF_DIRECTIVE_LC], [1], + [Define if the vasnwprintf implementation needs special code for + the 'lc' directive.]) + ;; + esac + gl_MUSL_LIBC + gl_PREREQ_VASNXPRINTF +]) + +# Common prerequisites of lib/vasnprintf.c and lib/vasnwprintf.c. +AC_DEFUN_ONCE([gl_PREREQ_VASNXPRINTF], +[ + AC_REQUIRE([AC_FUNC_ALLOCA]) + AC_REQUIRE([gt_TYPE_WCHAR_T]) + AC_REQUIRE([gt_TYPE_WINT_T]) + AC_CHECK_FUNCS([wcslen]) + dnl Knowing DBL_EXPBIT0_WORD and DBL_EXPBIT0_BIT enables an optimization + dnl in the code for NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE. + AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION]) ]) # Extra prerequisites of lib/vasnprintf.c for supporting 'long double' @@ -152,7 +258,22 @@ AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_A], AC_DEFINE([NEED_PRINTF_DIRECTIVE_A], [1], [Define if the vasnprintf implementation needs special code for the 'a' and 'A' directives.]) - AC_CHECK_FUNCS([nl_langinfo]) + gl_CHECK_FUNCS_ANDROID([nl_langinfo], [[#include <langinfo.h>]]) + ;; + esac +]) + +# Extra prerequisites of lib/vasnprintf.c for supporting the 'b' directive. +AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_B], +[ + AC_REQUIRE([gl_PRINTF_DIRECTIVE_B]) + case "$gl_cv_func_printf_directive_b" in + *yes) + ;; + *) + AC_DEFINE([NEED_PRINTF_DIRECTIVE_B], [1], + [Define if the vasnprintf implementation needs special code for + the 'b' directive.]) ;; esac ]) @@ -187,6 +308,21 @@ AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_LS], esac ]) +# Extra prerequisites of lib/vasnprintf.c for supporting the 'lc' directive. +AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_LC], +[ + AC_REQUIRE([gl_PRINTF_DIRECTIVE_LC]) + case "$gl_cv_func_printf_directive_lc" in + *yes) + ;; + *) + AC_DEFINE([NEED_PRINTF_DIRECTIVE_LC], [1], + [Define if the vasnprintf implementation needs special code for + the 'lc' directive.]) + ;; + esac +]) + # Extra prerequisites of lib/vasnprintf.c for supporting the ' flag. AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_GROUPING], [ @@ -232,6 +368,22 @@ AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_ZERO], esac ]) +# Extra prerequisites of lib/vasnprintf.c for supporting the # flag with a +# zero precision and a zero value in the 'x' and 'X' directives. +AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_ALT_PRECISION_ZERO], +[ + AC_REQUIRE([gl_PRINTF_FLAG_ALT_PRECISION_ZERO]) + case "$gl_cv_func_printf_flag_alt_precision_zero" in + *yes) + ;; + *) + AC_DEFINE([NEED_PRINTF_FLAG_ALT_PRECISION_ZERO], [1], + [Define if the vasnprintf implementation needs special code for the + # flag with a zero precision and a zero value in the 'x' and 'X' directives.]) + ;; + esac +]) + # Extra prerequisites of lib/vasnprintf.c for supporting large precisions. AC_DEFUN([gl_PREREQ_VASNPRINTF_PRECISION], [ @@ -276,23 +428,53 @@ AC_DEFUN([gl_PREREQ_VASNPRINTF_ENOMEM], ]) # Prerequisites of lib/vasnprintf.c including all extras for POSIX compliance. -AC_DEFUN([gl_PREREQ_VASNPRINTF_WITH_EXTRAS], +AC_DEFUN([gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS], [ AC_REQUIRE([gl_PREREQ_VASNPRINTF]) gl_PREREQ_VASNPRINTF_LONG_DOUBLE gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE gl_PREREQ_VASNPRINTF_DIRECTIVE_A + gl_PREREQ_VASNPRINTF_DIRECTIVE_B gl_PREREQ_VASNPRINTF_DIRECTIVE_F gl_PREREQ_VASNPRINTF_DIRECTIVE_LS + gl_PREREQ_VASNPRINTF_DIRECTIVE_LC gl_PREREQ_VASNPRINTF_FLAG_GROUPING gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST gl_PREREQ_VASNPRINTF_FLAG_ZERO + gl_PREREQ_VASNPRINTF_FLAG_ALT_PRECISION_ZERO gl_PREREQ_VASNPRINTF_PRECISION gl_PREREQ_VASNPRINTF_ENOMEM ]) +# Extra prerequisites of lib/vasnprintf.c for supporting the 'B' directive. +AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_UPPERCASE_B], +[ + AC_REQUIRE([gl_PRINTF_DIRECTIVE_UPPERCASE_B]) + case "$gl_cv_func_printf_directive_uppercase_b" in + *yes) + ;; + *) + AC_DEFINE([NEED_PRINTF_DIRECTIVE_UPPERCASE_B], [1], + [Define if the vasnprintf implementation needs special code for + the 'B' directive.]) + ;; + esac +]) + +# Prerequisites of lib/vasnprintf.c including all extras for POSIX compliance +# and GNU compatibility. +AC_DEFUN([gl_PREREQ_VASNPRINTF_WITH_GNU_EXTRAS], +[ + gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS + AC_DEFINE([SUPPORT_GNU_PRINTF_DIRECTIVES], [1], + [Define if the vasnprintf implementation should support GNU compatible + printf directives.]) + gl_PREREQ_VASNPRINTF_DIRECTIVE_UPPERCASE_B +]) + # Prerequisites of lib/asnprintf.c. +# Prerequisites of lib/asnwprintf.c. AC_DEFUN([gl_PREREQ_ASNPRINTF], [ ]) diff --git a/gnulib-m4/visibility.m4 b/gnulib-m4/visibility.m4 index 4a212a4e..e091f028 100644 --- a/gnulib-m4/visibility.m4 +++ b/gnulib-m4/visibility.m4 @@ -1,5 +1,5 @@ -# visibility.m4 serial 8 -dnl Copyright (C) 2005, 2008, 2010-2022 Free Software Foundation, Inc. +# visibility.m4 serial 9 +dnl Copyright (C) 2005, 2008, 2010-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -31,18 +31,18 @@ AC_DEFUN([gl_VISIBILITY], dnl user has put into $CC $CFLAGS $CPPFLAGS. AC_CACHE_CHECK([whether the -Werror option is usable], [gl_cv_cc_vis_werror], - [gl_save_CFLAGS="$CFLAGS" + [gl_saved_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Werror" AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[]], [[]])], [gl_cv_cc_vis_werror=yes], [gl_cv_cc_vis_werror=no]) - CFLAGS="$gl_save_CFLAGS" + CFLAGS="$gl_saved_CFLAGS" ]) dnl Now check whether visibility declarations are supported. AC_CACHE_CHECK([for simple visibility declarations], [gl_cv_cc_visibility], - [gl_save_CFLAGS="$CFLAGS" + [gl_saved_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -fvisibility=hidden" dnl We use the option -Werror and a function dummyfunc, because on some dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning @@ -68,7 +68,7 @@ AC_DEFUN([gl_VISIBILITY], [[]])], [gl_cv_cc_visibility=yes], [gl_cv_cc_visibility=no]) - CFLAGS="$gl_save_CFLAGS" + CFLAGS="$gl_saved_CFLAGS" ]) if test $gl_cv_cc_visibility = yes; then CFLAG_VISIBILITY="-fvisibility=hidden" diff --git a/gnulib-m4/warn-on-use.m4 b/gnulib-m4/warn-on-use.m4 index a81731f3..eef3a848 100644 --- a/gnulib-m4/warn-on-use.m4 +++ b/gnulib-m4/warn-on-use.m4 @@ -1,5 +1,5 @@ -# warn-on-use.m4 serial 10 -dnl Copyright (C) 2010-2022 Free Software Foundation, Inc. +# warn-on-use.m4 serial 11 +dnl Copyright (C) 2010-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -36,7 +36,7 @@ AC_DEFUN([gl_WARN_ON_USE_PREPARE], dnl clang (e.g. strndup), reference ac_compile_for_check_decl instead dnl of ac_compile. If, for whatever reason, the override of AC_PROG_CC dnl in zzgnulib.m4 is inactive, use the original ac_compile. - ac_save_ac_compile="$ac_compile" + ac_saved_ac_compile="$ac_compile" if test -n "$ac_compile_for_check_decl"; then ac_compile="$ac_compile_for_check_decl" fi @@ -46,7 +46,7 @@ AC_DEFUN([gl_WARN_ON_USE_PREPARE], [[#undef $gl_func (void) $gl_func;]])], [AS_VAR_SET([gl_Symbol], [yes])], [AS_VAR_SET([gl_Symbol], [no])])]) - ac_compile="$ac_save_ac_compile" + ac_compile="$ac_saved_ac_compile" AS_VAR_IF([gl_Symbol], [yes], [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_RAW_DECL_$gl_func]), [1]) dnl Shortcut for an AC_CHECK_DECL invocation that may come later: diff --git a/gnulib-m4/wchar_h.m4 b/gnulib-m4/wchar_h.m4 index 4baba1af..173f42a4 100644 --- a/gnulib-m4/wchar_h.m4 +++ b/gnulib-m4/wchar_h.m4 @@ -1,13 +1,13 @@ dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues. -dnl Copyright (C) 2007-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl Written by Eric Blake. -# wchar_h.m4 serial 55 +# wchar_h.m4 serial 63 AC_DEFUN_ONCE([gl_WCHAR_H], [ @@ -86,8 +86,8 @@ AC_DEFUN([gl_WCHAR_H_INLINE_OK], dnl z/OS when using the XPLINK object format (due to duplicate dnl CSECT names). Instead, temporarily redefine $ac_compile so dnl that the object file has the latter name from the start. - save_ac_compile="$ac_compile" - ac_compile=`echo "$save_ac_compile" | sed s/conftest/conftest1/` + saved_ac_compile="$ac_compile" + ac_compile=`echo "$saved_ac_compile" | sed s/conftest/conftest1/` if echo '#include "conftest.c"' >conftest1.c \ && AC_TRY_EVAL([ac_compile]); then AC_LANG_CONFTEST([ @@ -97,7 +97,7 @@ AC_DEFUN([gl_WCHAR_H_INLINE_OK], int zero (void) { return 0; } ]])]) dnl See note above about renaming object files. - ac_compile=`echo "$save_ac_compile" | sed s/conftest/conftest2/` + ac_compile=`echo "$saved_ac_compile" | sed s/conftest/conftest2/` if echo '#include "conftest.c"' >conftest2.c \ && AC_TRY_EVAL([ac_compile]); then if $CC -o conftest$ac_exeext $CFLAGS $LDFLAGS conftest1.$ac_objext conftest2.$ac_objext $LIBS >&AS_MESSAGE_LOG_FD 2>&1; then @@ -107,7 +107,7 @@ AC_DEFUN([gl_WCHAR_H_INLINE_OK], fi fi fi - ac_compile="$save_ac_compile" + ac_compile="$saved_ac_compile" rm -f conftest[12].c conftest[12].$ac_objext conftest$ac_exeext ;; esac @@ -147,6 +147,7 @@ AC_DEFUN([gl_WCHAR_H_REQUIRE_DEFAULTS], gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_BTOWC]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTOB]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSINIT]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSZERO]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBRTOWC]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBRLEN]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSRTOWCS]) @@ -185,6 +186,7 @@ AC_DEFUN([gl_WCHAR_H_REQUIRE_DEFAULTS], gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSTOK]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSWIDTH]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSFTIME]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WGETCWD]) dnl Support Microsoft deprecated alias function names by default. gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_WCSDUP], [1]) ]) @@ -253,5 +255,10 @@ AC_DEFUN([gl_WCHAR_H_DEFAULTS], REPLACE_WCWIDTH=0; AC_SUBST([REPLACE_WCWIDTH]) REPLACE_WCSWIDTH=0; AC_SUBST([REPLACE_WCSWIDTH]) REPLACE_WCSFTIME=0; AC_SUBST([REPLACE_WCSFTIME]) + REPLACE_WCSCMP=0; AC_SUBST([REPLACE_WCSCMP]) + REPLACE_WCSNCMP=0; AC_SUBST([REPLACE_WCSNCMP]) + REPLACE_WCSSTR=0; AC_SUBST([REPLACE_WCSSTR]) REPLACE_WCSTOK=0; AC_SUBST([REPLACE_WCSTOK]) + REPLACE_WMEMCMP=0; AC_SUBST([REPLACE_WMEMCMP]) + REPLACE_WMEMPCPY=0; AC_SUBST([REPLACE_WMEMPCPY]) ]) diff --git a/gnulib-m4/wchar_t.m4 b/gnulib-m4/wchar_t.m4 index 268e3e51..94353571 100644 --- a/gnulib-m4/wchar_t.m4 +++ b/gnulib-m4/wchar_t.m4 @@ -1,5 +1,5 @@ # wchar_t.m4 serial 4 (gettext-0.18.2) -dnl Copyright (C) 2002-2003, 2008-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2002-2003, 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/wcrtomb.m4 b/gnulib-m4/wcrtomb.m4 index fee21d7e..f00f6452 100644 --- a/gnulib-m4/wcrtomb.m4 +++ b/gnulib-m4/wcrtomb.m4 @@ -1,5 +1,5 @@ -# wcrtomb.m4 serial 17 -dnl Copyright (C) 2008-2022 Free Software Foundation, Inc. +# wcrtomb.m4 serial 19 +dnl Copyright (C) 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -82,9 +82,11 @@ int main () changequote(,)dnl case "$host_os" in # Guess no on AIX 4, OSF/1, Solaris, native Windows. - aix4* | osf* | solaris* | mingw*) gl_cv_func_wcrtomb_retval="guessing no" ;; + aix4* | osf* | solaris* | mingw* | windows*) + gl_cv_func_wcrtomb_retval="guessing no" ;; # Guess yes otherwise. - *) gl_cv_func_wcrtomb_retval="guessing yes" ;; + *) + gl_cv_func_wcrtomb_retval="guessing yes" ;; esac changequote([,])dnl if test $LOCALE_FR != none || test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none || test $LOCALE_ZH_CN != none; then @@ -97,12 +99,14 @@ changequote([,])dnl int main () { int result = 0; - if (setlocale (LC_ALL, "$LOCALE_FR") != NULL) + if (strcmp ("$LOCALE_FR", "none") != 0 + && setlocale (LC_ALL, "$LOCALE_FR") != NULL) { if (wcrtomb (NULL, 0, NULL) != 1) result |= 1; } - if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) + if (strcmp ("$LOCALE_FR_UTF8", "none") != 0 + && setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) { if (wcrtomb (NULL, 0, NULL) != 1) result |= 2; @@ -113,12 +117,14 @@ int main () result |= 2; } } - if (setlocale (LC_ALL, "$LOCALE_JA") != NULL) + if (strcmp ("$LOCALE_JA", "none") != 0 + && setlocale (LC_ALL, "$LOCALE_JA") != NULL) { if (wcrtomb (NULL, 0, NULL) != 1) result |= 4; } - if (setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) + if (strcmp ("$LOCALE_ZH_CN", "none") != 0 + && setlocale (LC_ALL, "$LOCALE_ZH_CN") != NULL) { if (wcrtomb (NULL, 0, NULL) != 1) result |= 8; diff --git a/gnulib-m4/wctob.m4 b/gnulib-m4/wctob.m4 index af172cd1..323b1ede 100644 --- a/gnulib-m4/wctob.m4 +++ b/gnulib-m4/wctob.m4 @@ -1,5 +1,5 @@ -# wctob.m4 serial 13 -dnl Copyright (C) 2008-2022 Free Software Foundation, Inc. +# wctob.m4 serial 14 +dnl Copyright (C) 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -32,7 +32,7 @@ changequote(,)dnl solaris2.[1-9] | solaris2.[1-9].* | cygwin*) gl_cv_func_wctob_works="guessing no" ;; # Guess no on native Windows. - mingw*) + mingw* | windows*) gl_cv_func_wctob_works="guessing no" ;; # Guess yes otherwise. *) gl_cv_func_wctob_works="guessing yes" ;; diff --git a/gnulib-m4/wctomb.m4 b/gnulib-m4/wctomb.m4 index 12329d8e..d8f36527 100644 --- a/gnulib-m4/wctomb.m4 +++ b/gnulib-m4/wctomb.m4 @@ -1,5 +1,5 @@ # wctomb.m4 serial 2 -dnl Copyright (C) 2011-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2011-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/wctype_h.m4 b/gnulib-m4/wctype_h.m4 index 702cb39c..c8993949 100644 --- a/gnulib-m4/wctype_h.m4 +++ b/gnulib-m4/wctype_h.m4 @@ -1,8 +1,8 @@ -# wctype_h.m4 serial 30 +# wctype_h.m4 serial 33 dnl A placeholder for ISO C99 <wctype.h>, for platforms that lack it. -dnl Copyright (C) 2006-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2006-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -178,6 +178,7 @@ AC_DEFUN([gl_WCTYPE_H_REQUIRE_DEFAULTS], m4_defun(GL_MODULE_INDICATOR_PREFIX[_WCTYPE_H_MODULE_INDICATOR_DEFAULTS], [ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWBLANK]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWDIGIT]) + gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWPUNCT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWXDIGIT]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTYPE]) gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWCTYPE]) @@ -196,5 +197,8 @@ AC_DEFUN([gl_WCTYPE_H_DEFAULTS], HAVE_WCTRANS_T=1; AC_SUBST([HAVE_WCTRANS_T]) REPLACE_ISWBLANK=0; AC_SUBST([REPLACE_ISWBLANK]) REPLACE_ISWDIGIT=0; AC_SUBST([REPLACE_ISWDIGIT]) + REPLACE_ISWPUNCT=0; AC_SUBST([REPLACE_ISWPUNCT]) REPLACE_ISWXDIGIT=0; AC_SUBST([REPLACE_ISWXDIGIT]) + REPLACE_WCTRANS=0; AC_SUBST([REPLACE_WCTRANS]) + REPLACE_WCTYPE=0; AC_SUBST([REPLACE_WCTYPE]) ]) diff --git a/gnulib-m4/wcwidth.m4 b/gnulib-m4/wcwidth.m4 index 9dd59579..53a26c7d 100644 --- a/gnulib-m4/wcwidth.m4 +++ b/gnulib-m4/wcwidth.m4 @@ -1,5 +1,5 @@ -# wcwidth.m4 serial 34 -dnl Copyright (C) 2006-2022 Free Software Foundation, Inc. +# wcwidth.m4 serial 36 +dnl Copyright (C) 2006-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -41,9 +41,9 @@ AC_DEFUN([gl_FUNC_WCWIDTH], if test $ac_cv_func_wcwidth = yes || test $gl_cv_func_wcwidth_macro = yes; then HAVE_WCWIDTH=1 dnl On Mac OS X 10.3, wcwidth(0x0301) (COMBINING ACUTE ACCENT) returns 1. - dnl On NetBSD 9.0, OpenBSD 5.0, MidnightBSD 1.1, + dnl On macOS 12.5, NetBSD 9.0, OpenBSD 5.0, MidnightBSD 1.1, dnl wcwidth(0x05B0) (HEBREW POINT SHEVA) returns 1. - dnl On NetBSD 9.0, MidnightBSD 1.1, OSF/1 5.1, + dnl On macOS 12.5, NetBSD 9.0, MidnightBSD 1.1, OSF/1 5.1, dnl wcwidth(0x200B) (ZERO WIDTH SPACE) returns 1. dnl On OpenBSD 5.8, wcwidth(0xFF1A) (FULLWIDTH COLON) returns 0. dnl This leads to bugs in 'ls' (coreutils). @@ -86,13 +86,13 @@ int main () [ changequote(,)dnl case "$host_os" in - # Guess yes on glibc systems. - *-gnu* | gnu*) gl_cv_func_wcwidth_works="guessing yes";; - # Guess yes on musl systems. - *-musl*) gl_cv_func_wcwidth_works="guessing yes";; - # Guess yes on AIX 7 systems. - aix[7-9]*) gl_cv_func_wcwidth_works="guessing yes";; - *) gl_cv_func_wcwidth_works="$gl_cross_guess_normal";; + # Guess yes on glibc systems. + *-gnu* | gnu*) gl_cv_func_wcwidth_works="guessing yes";; + # Guess yes on musl systems. + *-musl* | midipix*) gl_cv_func_wcwidth_works="guessing yes";; + # Guess yes on AIX 7 systems. + aix[7-9]*) gl_cv_func_wcwidth_works="guessing yes";; + *) gl_cv_func_wcwidth_works="$gl_cross_guess_normal";; esac changequote([,])dnl ]) diff --git a/gnulib-m4/wint_t.m4 b/gnulib-m4/wint_t.m4 index adc58661..21350f56 100644 --- a/gnulib-m4/wint_t.m4 +++ b/gnulib-m4/wint_t.m4 @@ -1,5 +1,5 @@ # wint_t.m4 serial 11 -dnl Copyright (C) 2003, 2007-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2003, 2007-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/xalloc.m4 b/gnulib-m4/xalloc.m4 index 17a9c06d..f60ea3d5 100644 --- a/gnulib-m4/xalloc.m4 +++ b/gnulib-m4/xalloc.m4 @@ -1,5 +1,5 @@ # xalloc.m4 serial 18 -dnl Copyright (C) 2002-2006, 2009-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2002-2006, 2009-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/xsize.m4 b/gnulib-m4/xsize.m4 index 0109049e..6125f9c1 100644 --- a/gnulib-m4/xsize.m4 +++ b/gnulib-m4/xsize.m4 @@ -1,5 +1,5 @@ # xsize.m4 serial 5 -dnl Copyright (C) 2003-2004, 2008-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2003-2004, 2008-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. diff --git a/gnulib-m4/year2038.m4 b/gnulib-m4/year2038.m4 deleted file mode 100644 index 2e4427e6..00000000 --- a/gnulib-m4/year2038.m4 +++ /dev/null @@ -1,132 +0,0 @@ -# year2038.m4 serial 8 -dnl Copyright (C) 2017-2022 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl Attempt to ensure that 'time_t' can go past the year 2038 and that -dnl the functions 'time', 'stat', etc. work with post-2038 timestamps. - -m4_ifdef([AC_SYS_YEAR2038], [ - AC_DEFUN([gl_YEAR2038_EARLY]) - AC_DEFUN([gl_YEAR2038], [AC_SYS_YEAR2038]) - AC_DEFUN([gl_YEAR2038_BODY], [_AC_SYS_YEAR2038]) -], [ - -AC_DEFUN([gl_YEAR2038_EARLY], -[ - AC_REQUIRE([AC_CANONICAL_HOST]) - case "$host_os" in - mingw*) - AC_DEFINE([__MINGW_USE_VC2005_COMPAT], [1], - [For 64-bit time_t on 32-bit mingw.]) - ;; - esac -]) - -# gl_YEAR2038_TEST_INCLUDES -# ------------------------- -AC_DEFUN([gl_YEAR2038_TEST_INCLUDES], -[[ - #include <time.h> - /* Check that time_t can represent 2**32 - 1 correctly. */ - #define LARGE_TIME_T \\ - ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) - int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 - && LARGE_TIME_T % 65537 == 0) - ? 1 : -1]; -]]) - -# gl_YEAR2038_BODY(REQUIRE-YEAR2038-SAFE) ------------------------------------------ -AC_DEFUN([gl_YEAR2038_BODY], -[ - AC_ARG_ENABLE([year2038], - [ --disable-year2038 omit support for timestamps past the year 2038]) - AS_IF([test "$enable_year2038" != no], - [ - dnl On many systems, time_t is already a 64-bit type. - dnl On those systems where time_t is still 32-bit, it requires kernel - dnl and libc support to make it 64-bit. For glibc 2.34 and later on Linux, - dnl defining _TIME_BITS=64 and _FILE_OFFSET_BITS=64 is needed on x86 and ARM. - dnl - dnl On native Windows, the system include files define types __time32_t - dnl and __time64_t. By default, time_t is an alias of - dnl - __time32_t on 32-bit mingw, - dnl - __time64_t on 64-bit mingw and on MSVC (since MSVC 8). - dnl But when compiling with -D__MINGW_USE_VC2005_COMPAT, time_t is an - dnl alias of __time64_t. - dnl And when compiling with -D_USE_32BIT_TIME_T, time_t is an alias of - dnl __time32_t. - AC_CACHE_CHECK([for time_t past the year 2038], [gl_cv_type_time_t_y2038], - [AC_COMPILE_IFELSE( - [AC_LANG_SOURCE([gl_YEAR2038_TEST_INCLUDES])], - [gl_cv_type_time_t_y2038=yes], [gl_cv_type_time_t_y2038=no]) - ]) - if test "$gl_cv_type_time_t_y2038" = no; then - AC_CACHE_CHECK([for 64-bit time_t with _TIME_BITS=64], - [gl_cv_type_time_t_bits_macro], - [AC_COMPILE_IFELSE( - [AC_LANG_SOURCE([[#define _TIME_BITS 64 - #define _FILE_OFFSET_BITS 64 - ]gl_YEAR2038_TEST_INCLUDES])], - [gl_cv_type_time_t_bits_macro=yes], - [gl_cv_type_time_t_bits_macro=no]) - ]) - if test "$gl_cv_type_time_t_bits_macro" = yes; then - AC_DEFINE([_TIME_BITS], [64], - [Number of bits in a timestamp, on hosts where this is settable.]) - dnl AC_SYS_LARGFILE also defines this; it's OK if we do too. - AC_DEFINE([_FILE_OFFSET_BITS], [64], - [Number of bits in a file offset, on hosts where this is settable.]) - gl_cv_type_time_t_y2038=yes - fi - fi - if test $gl_cv_type_time_t_y2038 = no; then - AC_COMPILE_IFELSE( - [AC_LANG_SOURCE( - [[#ifdef _USE_32BIT_TIME_T - int ok; - #else - error fail - #endif - ]])], - [AC_MSG_FAILURE( - [The 'time_t' type stops working after January 2038. - Remove _USE_32BIT_TIME_T from the compiler flags.])], - [# If not cross-compiling and $1 says we should check, - # and 'touch' works with a large timestamp, then evidently wider time_t - # is desired and supported, so fail and ask the builder to fix the - # problem. Otherwise, just warn the builder. - m4_ifval([$1], - [if test $cross_compiling = no \ - && TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null; then - case `TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null` in - *'Feb 7 2106'* | *'Feb 7 17:10'*) - AC_MSG_FAILURE( - [The 'time_t' type stops working after January 2038, - and your system appears to support a wider 'time_t'. - Try configuring with 'CC="${CC} -m64"'. - To build with a 32-bit time_t anyway (not recommended), - configure with '--disable-year2038'.]);; - esac - rm -f conftest.time - fi]) - if test "$gl_warned_about_y2038" != yes; then - AC_MSG_WARN( - [The 'time_t' type stops working after January 2038, - and this package needs a wider 'time_t' type - if there is any way to access timestamps after that. - Configure with 'CC="${CC} -m64"' perhaps?]) - gl_warned_about_y2038=yes - fi - ]) - fi]) -]) - -AC_DEFUN([gl_YEAR2038], -[ - gl_YEAR2038_BODY([require-year2038-safe]) -]) - -]) # m4_ifndef AC_SYS_YEAR2038 diff --git a/gnulib-m4/yield.m4 b/gnulib-m4/yield.m4 index 58bdb519..cbed8725 100644 --- a/gnulib-m4/yield.m4 +++ b/gnulib-m4/yield.m4 @@ -1,5 +1,5 @@ -# yield.m4 serial 4 -dnl Copyright (C) 2005-2022 Free Software Foundation, Inc. +# yield.m4 serial 5 +dnl Copyright (C) 2005-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -10,7 +10,7 @@ AC_DEFUN([gl_YIELD], AC_REQUIRE([gl_THREADLIB]) if test $gl_threads_api = posix; then - YIELD_LIB="$LIB_SCHED_YIELD" + YIELD_LIB="$SCHED_YIELD_LIB" else YIELD_LIB= fi diff --git a/gnulib-m4/zzgnulib.m4 b/gnulib-m4/zzgnulib.m4 index fd73a201..eed5ecbf 100644 --- a/gnulib-m4/zzgnulib.m4 +++ b/gnulib-m4/zzgnulib.m4 @@ -1,5 +1,5 @@ # zzgnulib.m4 serial 1 -dnl Copyright (C) 2020-2022 Free Software Foundation, Inc. +dnl Copyright (C) 2020-2024 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. |