summaryrefslogtreecommitdiff
path: root/gnulib-m4
diff options
context:
space:
mode:
Diffstat (limited to 'gnulib-m4')
-rw-r--r--gnulib-m4/00gnulib.m413
-rw-r--r--gnulib-m4/__inline.m425
-rw-r--r--gnulib-m4/absolute-header.m47
-rw-r--r--gnulib-m4/alloca.m45
-rw-r--r--gnulib-m4/arpa_inet_h.m49
-rw-r--r--gnulib-m4/assert_h.m433
-rw-r--r--gnulib-m4/btowc.m485
-rw-r--r--gnulib-m4/build-to-host.m4273
-rw-r--r--gnulib-m4/builtin-expect.m48
-rw-r--r--gnulib-m4/c-bool.m48
-rw-r--r--gnulib-m4/c32rtomb.m4186
-rw-r--r--gnulib-m4/calloc.m433
-rw-r--r--gnulib-m4/chdir-long.m430
-rw-r--r--gnulib-m4/close.m47
-rw-r--r--gnulib-m4/closedir.m432
-rw-r--r--gnulib-m4/codeset.m45
-rw-r--r--gnulib-m4/ctype_h.m45
-rw-r--r--gnulib-m4/d-ino.m459
-rw-r--r--gnulib-m4/dirent_h.m498
-rw-r--r--gnulib-m4/dirfd.m488
-rw-r--r--gnulib-m4/double-slash-root.m45
-rw-r--r--gnulib-m4/dup.m455
-rw-r--r--gnulib-m4/dup2.m47
-rw-r--r--gnulib-m4/eealloc.m45
-rw-r--r--gnulib-m4/environ.m45
-rw-r--r--gnulib-m4/errno_h.m413
-rw-r--r--gnulib-m4/error.m422
-rw-r--r--gnulib-m4/error_h.m4128
-rw-r--r--gnulib-m4/exponentd.m47
-rw-r--r--gnulib-m4/exponentf.m47
-rw-r--r--gnulib-m4/exponentl.m412
-rw-r--r--gnulib-m4/extensions-aix.m425
-rw-r--r--gnulib-m4/extensions.m433
-rw-r--r--gnulib-m4/extern-inline.m412
-rw-r--r--gnulib-m4/fchdir.m477
-rw-r--r--gnulib-m4/fcntl-o.m411
-rw-r--r--gnulib-m4/fcntl.m47
-rw-r--r--gnulib-m4/fcntl_h.m46
-rw-r--r--gnulib-m4/fdopen.m49
-rw-r--r--gnulib-m4/fdopendir.m468
-rw-r--r--gnulib-m4/filenamecat.m417
-rw-r--r--gnulib-m4/flexmember.m411
-rw-r--r--gnulib-m4/float_h.m438
-rw-r--r--gnulib-m4/fpieee.m45
-rw-r--r--gnulib-m4/free.m411
-rw-r--r--gnulib-m4/frexp.m422
-rw-r--r--gnulib-m4/frexpl.m415
-rw-r--r--gnulib-m4/fseterr.m410
-rw-r--r--gnulib-m4/fstat.m49
-rw-r--r--gnulib-m4/fstatat.m466
-rw-r--r--gnulib-m4/ftruncate.m419
-rw-r--r--gnulib-m4/getcwd-abort-bug.m4148
-rw-r--r--gnulib-m4/getcwd-path-max.m4254
-rw-r--r--gnulib-m4/getcwd.m426
-rw-r--r--gnulib-m4/getdtablesize.m45
-rw-r--r--gnulib-m4/getpagesize.m449
-rw-r--r--gnulib-m4/getprogname.m433
-rw-r--r--gnulib-m4/gettimeofday.m414
-rw-r--r--gnulib-m4/gnulib-cache.m419
-rw-r--r--gnulib-m4/gnulib-common.m41056
-rw-r--r--gnulib-m4/gnulib-comp.m41894
-rw-r--r--gnulib-m4/host-cpu-c-abi.m4248
-rw-r--r--gnulib-m4/iconv.m456
-rw-r--r--gnulib-m4/iconv_h.m45
-rw-r--r--gnulib-m4/iconv_open.m48
-rw-r--r--gnulib-m4/include_next.m413
-rw-r--r--gnulib-m4/inet_pton.m49
-rw-r--r--gnulib-m4/inline.m45
-rw-r--r--gnulib-m4/intl-thread-locale.m440
-rw-r--r--gnulib-m4/intlmacosx.m419
-rw-r--r--gnulib-m4/intmax_t.m45
-rw-r--r--gnulib-m4/inttypes.m49
-rw-r--r--gnulib-m4/inttypes_h.m45
-rw-r--r--gnulib-m4/ioctl.m45
-rw-r--r--gnulib-m4/isblank.m45
-rw-r--r--gnulib-m4/isnand.m414
-rw-r--r--gnulib-m4/isnanf.m418
-rw-r--r--gnulib-m4/isnanl.m420
-rw-r--r--gnulib-m4/iswblank.m413
-rw-r--r--gnulib-m4/iswdigit.m434
-rw-r--r--gnulib-m4/iswpunct.m449
-rw-r--r--gnulib-m4/iswxdigit.m429
-rw-r--r--gnulib-m4/langinfo_h.m45
-rw-r--r--gnulib-m4/largefile.m4368
-rw-r--r--gnulib-m4/lcmessage.m45
-rw-r--r--gnulib-m4/ldexpl.m421
-rw-r--r--gnulib-m4/lib-ld.m415
-rw-r--r--gnulib-m4/lib-link.m435
-rw-r--r--gnulib-m4/lib-prefix.m432
-rw-r--r--gnulib-m4/libunistring-base.m462
-rw-r--r--gnulib-m4/limits-h.m431
-rw-r--r--gnulib-m4/localcharset.m45
-rw-r--r--gnulib-m4/locale-ar.m422
-rw-r--r--gnulib-m4/locale-en.m4137
-rw-r--r--gnulib-m4/locale-fr.m4158
-rw-r--r--gnulib-m4/locale-ja.m422
-rw-r--r--gnulib-m4/locale-tr.m422
-rw-r--r--gnulib-m4/locale-zh.m434
-rw-r--r--gnulib-m4/locale_h.m411
-rw-r--r--gnulib-m4/localename.m429
-rw-r--r--gnulib-m4/lock.m45
-rw-r--r--gnulib-m4/lstat.m420
-rw-r--r--gnulib-m4/malloc.m419
-rw-r--r--gnulib-m4/malloca.m45
-rw-r--r--gnulib-m4/math_h.m468
-rw-r--r--gnulib-m4/mbchar.m45
-rw-r--r--gnulib-m4/mbiter.m45
-rw-r--r--gnulib-m4/mbrtoc32.m4325
-rw-r--r--gnulib-m4/mbrtowc.m4151
-rw-r--r--gnulib-m4/mbsinit.m47
-rw-r--r--gnulib-m4/mbstate_t.m45
-rw-r--r--gnulib-m4/mbtowc.m410
-rw-r--r--gnulib-m4/memchr.m419
-rw-r--r--gnulib-m4/mempcpy.m430
-rw-r--r--gnulib-m4/memrchr.m424
-rw-r--r--gnulib-m4/minmax.m45
-rw-r--r--gnulib-m4/mmap-anon.m45
-rw-r--r--gnulib-m4/mode_t.m45
-rw-r--r--gnulib-m4/msvc-inval.m45
-rw-r--r--gnulib-m4/msvc-nothrow.m45
-rw-r--r--gnulib-m4/multiarch.m45
-rw-r--r--gnulib-m4/musl.m49
-rw-r--r--gnulib-m4/nan-mips.m490
-rw-r--r--gnulib-m4/nanosleep.m445
-rw-r--r--gnulib-m4/netinet_in_h.m45
-rw-r--r--gnulib-m4/nocrash.m45
-rw-r--r--gnulib-m4/off64_t.m431
-rw-r--r--gnulib-m4/off_t.m45
-rw-r--r--gnulib-m4/once.m413
-rw-r--r--gnulib-m4/open-cloexec.m48
-rw-r--r--gnulib-m4/open-slash.m45
-rw-r--r--gnulib-m4/open.m47
-rw-r--r--gnulib-m4/openat.m439
-rw-r--r--gnulib-m4/opendir.m432
-rw-r--r--gnulib-m4/pathmax.m45
-rw-r--r--gnulib-m4/perror.m424
-rw-r--r--gnulib-m4/pipe.m45
-rw-r--r--gnulib-m4/printf-frexp.m45
-rw-r--r--gnulib-m4/printf-frexpl.m45
-rw-r--r--gnulib-m4/printf.m4964
-rw-r--r--gnulib-m4/pselect.m47
-rw-r--r--gnulib-m4/pthread-cond.m437
-rw-r--r--gnulib-m4/pthread-mutex.m472
-rw-r--r--gnulib-m4/pthread-once.m436
-rw-r--r--gnulib-m4/pthread-rwlock.m4461
-rw-r--r--gnulib-m4/pthread-spin.m471
-rw-r--r--gnulib-m4/pthread-thread.m47
-rw-r--r--gnulib-m4/pthread_h.m417
-rw-r--r--gnulib-m4/pthread_mutex_timedlock.m448
-rw-r--r--gnulib-m4/pthread_rwlock_rdlock.m443
-rw-r--r--gnulib-m4/pthread_sigmask.m437
-rw-r--r--gnulib-m4/putenv.m423
-rw-r--r--gnulib-m4/raise.m45
-rw-r--r--gnulib-m4/random.m480
-rw-r--r--gnulib-m4/random_r.m444
-rw-r--r--gnulib-m4/readdir.m423
-rw-r--r--gnulib-m4/realloc.m417
-rw-r--r--gnulib-m4/reallocarray.m410
-rw-r--r--gnulib-m4/relocatable-lib.m411
-rw-r--r--gnulib-m4/rewinddir.m423
-rw-r--r--gnulib-m4/save-cwd.m412
-rw-r--r--gnulib-m4/sched_h.m415
-rw-r--r--gnulib-m4/sched_yield.m47
-rw-r--r--gnulib-m4/select.m416
-rw-r--r--gnulib-m4/semaphore.m49
-rw-r--r--gnulib-m4/setenv.m422
-rw-r--r--gnulib-m4/setlocale.m416
-rw-r--r--gnulib-m4/setlocale_null.m446
-rw-r--r--gnulib-m4/signal_h.m411
-rw-r--r--gnulib-m4/signalblocking.m45
-rw-r--r--gnulib-m4/signbit.m447
-rw-r--r--gnulib-m4/size_max.m45
-rw-r--r--gnulib-m4/sleep.m425
-rw-r--r--gnulib-m4/snan.m415
-rw-r--r--gnulib-m4/socketlib.m419
-rw-r--r--gnulib-m4/sockets.m45
-rw-r--r--gnulib-m4/socklen.m45
-rw-r--r--gnulib-m4/sockpfaf.m415
-rw-r--r--gnulib-m4/ssize_t.m431
-rw-r--r--gnulib-m4/stat-time.m414
-rw-r--r--gnulib-m4/stat.m423
-rw-r--r--gnulib-m4/stdalign.m4196
-rw-r--r--gnulib-m4/stddef_h.m468
-rw-r--r--gnulib-m4/stdint.m418
-rw-r--r--gnulib-m4/stdint_h.m45
-rw-r--r--gnulib-m4/stdio_h.m451
-rw-r--r--gnulib-m4/stdlib_h.m476
-rw-r--r--gnulib-m4/stpcpy.m429
-rw-r--r--gnulib-m4/strdup.m433
-rw-r--r--gnulib-m4/strerror.m433
-rw-r--r--gnulib-m4/strerror_r.m413
-rw-r--r--gnulib-m4/string_h.m423
-rw-r--r--gnulib-m4/strncat.m421
-rw-r--r--gnulib-m4/strstr.m47
-rw-r--r--gnulib-m4/symlink.m411
-rw-r--r--gnulib-m4/sys_cdefs_h.m425
-rw-r--r--gnulib-m4/sys_ioctl_h.m45
-rw-r--r--gnulib-m4/sys_select_h.m45
-rw-r--r--gnulib-m4/sys_socket_h.m45
-rw-r--r--gnulib-m4/sys_stat_h.m45
-rw-r--r--gnulib-m4/sys_time_h.m411
-rw-r--r--gnulib-m4/sys_types_h.m48
-rw-r--r--gnulib-m4/sys_uio_h.m45
-rw-r--r--gnulib-m4/thread.m411
-rw-r--r--gnulib-m4/threadlib.m465
-rw-r--r--gnulib-m4/time.m451
-rw-r--r--gnulib-m4/time_h.m454
-rw-r--r--gnulib-m4/uchar_h.m4250
-rw-r--r--gnulib-m4/unicase_h.m444
-rw-r--r--gnulib-m4/unictype_h.m4178
-rw-r--r--gnulib-m4/unimetadata_h.m443
-rw-r--r--gnulib-m4/uninorm_h.m446
-rw-r--r--gnulib-m4/unistd-safer.m411
-rw-r--r--gnulib-m4/unistd_h.m412
-rw-r--r--gnulib-m4/usleep.m423
-rw-r--r--gnulib-m4/vasnprintf.m4242
-rw-r--r--gnulib-m4/visibility.m413
-rw-r--r--gnulib-m4/warn-on-use.m49
-rw-r--r--gnulib-m4/wchar_h.m425
-rw-r--r--gnulib-m4/wchar_t.m424
-rw-r--r--gnulib-m4/wcrtomb.m427
-rw-r--r--gnulib-m4/wctob.m47
-rw-r--r--gnulib-m4/wctomb.m45
-rw-r--r--gnulib-m4/wctype_h.m49
-rw-r--r--gnulib-m4/wcwidth.m424
-rw-r--r--gnulib-m4/wint_t.m45
-rw-r--r--gnulib-m4/xalloc.m45
-rw-r--r--gnulib-m4/xgetcwd.m411
-rw-r--r--gnulib-m4/xsize.m45
-rw-r--r--gnulib-m4/year2038.m4132
-rw-r--r--gnulib-m4/yield.m47
-rw-r--r--gnulib-m4/zzgnulib.m45
232 files changed, 9866 insertions, 2462 deletions
diff --git a/gnulib-m4/00gnulib.m4 b/gnulib-m4/00gnulib.m4
index dea34e83..cd167718 100644
--- a/gnulib-m4/00gnulib.m4
+++ b/gnulib-m4/00gnulib.m4
@@ -1,5 +1,6 @@
-# 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 +50,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 +72,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..20baf164
--- /dev/null
+++ b/gnulib-m4/__inline.m4
@@ -0,0 +1,25 @@
+# __inline.m4
+# serial 1
+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.
+
+# Test for __inline keyword
+
+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..0abd6d90 100644
--- a/gnulib-m4/absolute-header.m4
+++ b/gnulib-m4/absolute-header.m4
@@ -1,5 +1,6 @@
-# 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 +67,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..dc78dc19 100644
--- a/gnulib-m4/alloca.m4
+++ b/gnulib-m4/alloca.m4
@@ -1,5 +1,6 @@
-# alloca.m4 serial 21
-dnl Copyright (C) 2002-2004, 2006-2007, 2009-2022 Free Software Foundation,
+# alloca.m4
+# serial 21
+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..dc0d5919 100644
--- a/gnulib-m4/arpa_inet_h.m4
+++ b/gnulib-m4/arpa_inet_h.m4
@@ -1,5 +1,6 @@
-# arpa_inet_h.m4 serial 17
-dnl Copyright (C) 2006, 2008-2022 Free Software Foundation, Inc.
+# arpa_inet_h.m4
+# serial 18
+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.
@@ -67,8 +68,12 @@ AC_DEFUN([gl_ARPA_INET_H_REQUIRE_DEFAULTS],
AC_DEFUN([gl_ARPA_INET_H_DEFAULTS],
[
dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_DECL_HTONL=1; AC_SUBST([HAVE_DECL_HTONL])
+ HAVE_DECL_HTONS=1; AC_SUBST([HAVE_DECL_HTONS])
HAVE_DECL_INET_NTOP=1; AC_SUBST([HAVE_DECL_INET_NTOP])
HAVE_DECL_INET_PTON=1; AC_SUBST([HAVE_DECL_INET_PTON])
+ HAVE_DECL_NTOHL=1; AC_SUBST([HAVE_DECL_NTOHL])
+ HAVE_DECL_NTOHS=1; AC_SUBST([HAVE_DECL_NTOHS])
REPLACE_INET_NTOP=0; AC_SUBST([REPLACE_INET_NTOP])
REPLACE_INET_PTON=0; AC_SUBST([REPLACE_INET_PTON])
])
diff --git a/gnulib-m4/assert_h.m4 b/gnulib-m4/assert_h.m4
index c1306dae..b90d0f19 100644
--- a/gnulib-m4/assert_h.m4
+++ b/gnulib-m4/assert_h.m4
@@ -1,5 +1,6 @@
-# assert-h.m4
-dnl Copyright (C) 2011-2022 Free Software Foundation, Inc.
+# assert_h.m4
+# serial 1
+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 +10,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 +33,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 +47,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 +61,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..d9dd7036 100644
--- a/gnulib-m4/btowc.m4
+++ b/gnulib-m4/btowc.m4
@@ -1,5 +1,6 @@
-# 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 +41,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 +60,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 +89,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 +141,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/build-to-host.m4 b/gnulib-m4/build-to-host.m4
new file mode 100644
index 00000000..c416bca3
--- /dev/null
+++ b/gnulib-m4/build-to-host.m4
@@ -0,0 +1,273 @@
+# build-to-host.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 Written by Bruno Haible.
+
+dnl When the build environment ($build_os) is different from the target runtime
+dnl environment ($host_os), file names may need to be converted from the build
+dnl environment syntax to the target runtime environment syntax. This is
+dnl because the Makefiles are executed (mostly) by build environment tools and
+dnl therefore expect file names in build environment syntax, whereas the runtime
+dnl expects file names in target runtime environment syntax.
+dnl
+dnl For example, if $build_os = cygwin and $host_os = mingw32, filenames need
+dnl be converted from Cygwin syntax to native Windows syntax:
+dnl /cygdrive/c/foo/bar -> C:\foo\bar
+dnl /usr/local/share -> C:\cygwin64\usr\local\share
+dnl
+dnl gl_BUILD_TO_HOST([somedir])
+dnl This macro takes as input an AC_SUBSTed variable 'somedir', which must
+dnl already have its final value assigned, and produces two additional
+dnl AC_SUBSTed variables 'somedir_c' and 'somedir_c_make', that designate the
+dnl same file name value, just in different syntax:
+dnl - somedir_c is the file name in target runtime environment syntax,
+dnl as a C string (starting and ending with a double-quote,
+dnl and with escaped backslashes and double-quotes in
+dnl between).
+dnl - somedir_c_make is the same thing, escaped for use in a Makefile.
+
+AC_DEFUN([gl_BUILD_TO_HOST],
+[
+ AC_REQUIRE([AC_CANONICAL_BUILD])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([gl_BUILD_TO_HOST_INIT])
+
+ dnl Define somedir_c.
+ gl_final_[$1]="$[$1]"
+ dnl Translate it from build syntax to host syntax.
+ case "$build_os" in
+ cygwin*)
+ case "$host_os" in
+ mingw* | windows*)
+ gl_final_[$1]=`cygpath -w "$gl_final_[$1]"` ;;
+ esac
+ ;;
+ esac
+ dnl Convert it to C string syntax.
+ [$1]_c=`printf '%s\n' "$gl_final_[$1]" | sed -e "$gl_sed_double_backslashes" -e "$gl_sed_escape_doublequotes" | tr -d "$gl_tr_cr"`
+ [$1]_c='"'"$[$1]_c"'"'
+ AC_SUBST([$1_c])
+
+ dnl Define somedir_c_make.
+ [$1]_c_make=`printf '%s\n' "$[$1]_c" | sed -e "$gl_sed_escape_for_make_1" -e "$gl_sed_escape_for_make_2" | tr -d "$gl_tr_cr"`
+ dnl Use the substituted somedir variable, when possible, so that the user
+ dnl may adjust somedir a posteriori when there are no special characters.
+ if test "$[$1]_c_make" = '\"'"${gl_final_[$1]}"'\"'; then
+ [$1]_c_make='\"$([$1])\"'
+ fi
+ AC_SUBST([$1_c_make])
+])
+
+dnl Some initializations for gl_BUILD_TO_HOST.
+AC_DEFUN([gl_BUILD_TO_HOST_INIT],
+[
+ gl_sed_double_backslashes='s/\\/\\\\/g'
+ gl_sed_escape_doublequotes='s/"/\\"/g'
+changequote(,)dnl
+ gl_sed_escape_for_make_1="s,\\([ \"&'();<>\\\\\`|]\\),\\\\\\1,g"
+changequote([,])dnl
+ gl_sed_escape_for_make_2='s,\$,\\$$,g'
+ dnl Find out how to remove carriage returns from output. Solaris /usr/ucb/tr
+ dnl does not understand '\r'.
+ case `echo r | tr -d '\r'` in
+ '') gl_tr_cr='\015' ;;
+ *) gl_tr_cr='\r' ;;
+ esac
+])
+
+
+dnl The following macros are convenience invocations of gl_BUILD_TO_HOST
+dnl for some of the variables that are defined by Autoconf.
+dnl To do so for _all_ the possible variables, use the module 'configmake'.
+
+dnl Defines bindir_c and bindir_c_make.
+AC_DEFUN_ONCE([gl_BUILD_TO_HOST_BINDIR],
+[
+ dnl Find the final value of bindir.
+ gl_saved_prefix="${prefix}"
+ gl_saved_exec_prefix="${exec_prefix}"
+ gl_saved_bindir="${bindir}"
+ dnl Unfortunately, prefix and exec_prefix get only finally determined
+ dnl at the end of configure.
+ if test "X$prefix" = "XNONE"; then
+ prefix="$ac_default_prefix"
+ fi
+ if test "X$exec_prefix" = "XNONE"; then
+ exec_prefix='${prefix}'
+ fi
+ eval exec_prefix="$exec_prefix"
+ eval bindir="$bindir"
+ gl_BUILD_TO_HOST([bindir])
+ bindir="${gl_saved_bindir}"
+ exec_prefix="${gl_saved_exec_prefix}"
+ prefix="${gl_saved_prefix}"
+])
+
+dnl Defines datadir_c and datadir_c_make,
+dnl where datadir = $(datarootdir)
+AC_DEFUN_ONCE([gl_BUILD_TO_HOST_DATADIR],
+[
+ dnl Find the final value of datadir.
+ gl_saved_prefix="${prefix}"
+ gl_saved_datarootdir="${datarootdir}"
+ gl_saved_datadir="${datadir}"
+ dnl Unfortunately, prefix gets only finally determined at the end of
+ dnl configure.
+ if test "X$prefix" = "XNONE"; then
+ prefix="$ac_default_prefix"
+ fi
+ eval datarootdir="$datarootdir"
+ eval datadir="$datadir"
+ gl_BUILD_TO_HOST([datadir])
+ datadir="${gl_saved_datadir}"
+ datarootdir="${gl_saved_datarootdir}"
+ prefix="${gl_saved_prefix}"
+])
+
+dnl Defines libdir_c and libdir_c_make.
+AC_DEFUN_ONCE([gl_BUILD_TO_HOST_LIBDIR],
+[
+ dnl Find the final value of libdir.
+ gl_saved_prefix="${prefix}"
+ gl_saved_exec_prefix="${exec_prefix}"
+ gl_saved_libdir="${libdir}"
+ dnl Unfortunately, prefix and exec_prefix get only finally determined
+ dnl at the end of configure.
+ if test "X$prefix" = "XNONE"; then
+ prefix="$ac_default_prefix"
+ fi
+ if test "X$exec_prefix" = "XNONE"; then
+ exec_prefix='${prefix}'
+ fi
+ eval exec_prefix="$exec_prefix"
+ eval libdir="$libdir"
+ gl_BUILD_TO_HOST([libdir])
+ libdir="${gl_saved_libdir}"
+ exec_prefix="${gl_saved_exec_prefix}"
+ prefix="${gl_saved_prefix}"
+])
+
+dnl Defines libexecdir_c and libexecdir_c_make.
+AC_DEFUN_ONCE([gl_BUILD_TO_HOST_LIBEXECDIR],
+[
+ dnl Find the final value of libexecdir.
+ gl_saved_prefix="${prefix}"
+ gl_saved_exec_prefix="${exec_prefix}"
+ gl_saved_libexecdir="${libexecdir}"
+ dnl Unfortunately, prefix and exec_prefix get only finally determined
+ dnl at the end of configure.
+ if test "X$prefix" = "XNONE"; then
+ prefix="$ac_default_prefix"
+ fi
+ if test "X$exec_prefix" = "XNONE"; then
+ exec_prefix='${prefix}'
+ fi
+ eval exec_prefix="$exec_prefix"
+ eval libexecdir="$libexecdir"
+ gl_BUILD_TO_HOST([libexecdir])
+ libexecdir="${gl_saved_libexecdir}"
+ exec_prefix="${gl_saved_exec_prefix}"
+ prefix="${gl_saved_prefix}"
+])
+
+dnl Defines localedir_c and localedir_c_make.
+AC_DEFUN_ONCE([gl_BUILD_TO_HOST_LOCALEDIR],
+[
+ dnl Find the final value of localedir.
+ gl_saved_prefix="${prefix}"
+ gl_saved_datarootdir="${datarootdir}"
+ gl_saved_localedir="${localedir}"
+ dnl Unfortunately, prefix gets only finally determined at the end of
+ dnl configure.
+ if test "X$prefix" = "XNONE"; then
+ prefix="$ac_default_prefix"
+ fi
+ eval datarootdir="$datarootdir"
+ eval localedir="$localedir"
+ gl_BUILD_TO_HOST([localedir])
+ localedir="${gl_saved_localedir}"
+ datarootdir="${gl_saved_datarootdir}"
+ prefix="${gl_saved_prefix}"
+])
+
+dnl Defines pkgdatadir_c and pkgdatadir_c_make,
+dnl where pkgdatadir = $(datadir)/$(PACKAGE)
+AC_DEFUN_ONCE([gl_BUILD_TO_HOST_PKGDATADIR],
+[
+ dnl Find the final value of pkgdatadir.
+ gl_saved_prefix="${prefix}"
+ gl_saved_datarootdir="${datarootdir}"
+ gl_saved_datadir="${datadir}"
+ gl_saved_pkgdatadir="${pkgdatadir}"
+ dnl Unfortunately, prefix gets only finally determined at the end of
+ dnl configure.
+ if test "X$prefix" = "XNONE"; then
+ prefix="$ac_default_prefix"
+ fi
+ eval datarootdir="$datarootdir"
+ eval datadir="$datadir"
+ eval pkgdatadir="$pkgdatadir"
+ gl_BUILD_TO_HOST([pkgdatadir])
+ pkgdatadir="${gl_saved_pkgdatadir}"
+ datadir="${gl_saved_datadir}"
+ datarootdir="${gl_saved_datarootdir}"
+ prefix="${gl_saved_prefix}"
+])
+
+dnl Defines pkglibdir_c and pkglibdir_c_make,
+dnl where pkglibdir = $(libdir)/$(PACKAGE)
+AC_DEFUN_ONCE([gl_BUILD_TO_HOST_PKGLIBDIR],
+[
+ dnl Find the final value of pkglibdir.
+ gl_saved_prefix="${prefix}"
+ gl_saved_exec_prefix="${exec_prefix}"
+ gl_saved_libdir="${libdir}"
+ gl_saved_pkglibdir="${pkglibdir}"
+ dnl Unfortunately, prefix and exec_prefix get only finally determined
+ dnl at the end of configure.
+ if test "X$prefix" = "XNONE"; then
+ prefix="$ac_default_prefix"
+ fi
+ if test "X$exec_prefix" = "XNONE"; then
+ exec_prefix='${prefix}'
+ fi
+ eval exec_prefix="$exec_prefix"
+ eval libdir="$libdir"
+ eval pkglibdir="$pkglibdir"
+ gl_BUILD_TO_HOST([pkglibdir])
+ pkglibdir="${gl_saved_pkglibdir}"
+ libdir="${gl_saved_libdir}"
+ exec_prefix="${gl_saved_exec_prefix}"
+ prefix="${gl_saved_prefix}"
+])
+
+dnl Defines pkglibexecdir_c and pkglibexecdir_c_make,
+dnl where pkglibexecdir = $(libexecdir)/$(PACKAGE)
+AC_DEFUN_ONCE([gl_BUILD_TO_HOST_PKGLIBEXECDIR],
+[
+ dnl Find the final value of pkglibexecdir.
+ gl_saved_prefix="${prefix}"
+ gl_saved_exec_prefix="${exec_prefix}"
+ gl_saved_libexecdir="${libexecdir}"
+ gl_saved_pkglibexecdir="${pkglibexecdir}"
+ dnl Unfortunately, prefix and exec_prefix get only finally determined
+ dnl at the end of configure.
+ if test "X$prefix" = "XNONE"; then
+ prefix="$ac_default_prefix"
+ fi
+ if test "X$exec_prefix" = "XNONE"; then
+ exec_prefix='${prefix}'
+ fi
+ eval exec_prefix="$exec_prefix"
+ eval libexecdir="$libexecdir"
+ eval pkglibexecdir="$pkglibexecdir"
+ gl_BUILD_TO_HOST([pkglibexecdir])
+ pkglibexecdir="${gl_saved_pkglibexecdir}"
+ libexecdir="${gl_saved_libexecdir}"
+ exec_prefix="${gl_saved_exec_prefix}"
+ prefix="${gl_saved_prefix}"
+])
diff --git a/gnulib-m4/builtin-expect.m4 b/gnulib-m4/builtin-expect.m4
index b1fb12a3..33f255e9 100644
--- a/gnulib-m4/builtin-expect.m4
+++ b/gnulib-m4/builtin-expect.m4
@@ -1,10 +1,12 @@
-dnl Check for __builtin_expect.
-
-dnl Copyright 2016-2022 Free Software Foundation, Inc.
+# builtin-expect.m4
+# serial 2
+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.
+dnl Provide a GCC-compatible __builtin_expect macro in <config.h>.
+
dnl Written by Paul Eggert.
AC_DEFUN([gl___BUILTIN_EXPECT],
diff --git a/gnulib-m4/c-bool.m4 b/gnulib-m4/c-bool.m4
index bb109b77..0fb0de3b 100644
--- a/gnulib-m4/c-bool.m4
+++ b/gnulib-m4/c-bool.m4
@@ -1,10 +1,12 @@
-# Check for bool that conforms to C2023.
-
-dnl Copyright 2022 Free Software Foundation, Inc.
+# c-bool.m4
+# serial 1
+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.
+# Check for bool that conforms to C2023.
+
AC_DEFUN([gl_C_BOOL],
[
AC_CACHE_CHECK([for bool, true, false], [gl_cv_c_bool],
diff --git a/gnulib-m4/c32rtomb.m4 b/gnulib-m4/c32rtomb.m4
new file mode 100644
index 00000000..cf7ff69d
--- /dev/null
+++ b/gnulib-m4/c32rtomb.m4
@@ -0,0 +1,186 @@
+# c32rtomb.m4
+# serial 8
+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])
+ AC_REQUIRE([gl_C32RTOMB_SANITYCHECK])
+
+ AC_REQUIRE([gl_CHECK_FUNC_C32RTOMB])
+ 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
+ if test $HAVE_WORKING_C32RTOMB = 0; then
+ REPLACE_C32RTOMB=1
+ fi
+ fi
+])
+
+AC_DEFUN([gl_CHECK_FUNC_C32RTOMB],
+[
+ 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
+])
+
+dnl Test whether c32rtomb works not worse than wcrtomb.
+dnl Result is HAVE_WORKING_C32RTOMB.
+
+AC_DEFUN([gl_C32RTOMB_SANITYCHECK],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([gl_TYPE_CHAR32_T])
+ AC_REQUIRE([gl_CHECK_FUNC_C32RTOMB])
+ AC_REQUIRE([gt_LOCALE_ZH_CN])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ if test $GNULIBHEADERS_OVERRIDE_CHAR32_T = 1 || test $gl_cv_func_c32rtomb = no; then
+ HAVE_WORKING_C32RTOMB=0
+ else
+ AC_CACHE_CHECK([whether c32rtomb works as well as wcrtomb],
+ [gl_cv_func_c32rtomb_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 Solaris derivatives.
+ solaris*)
+ if test -f /etc/release && grep 'Oracle Solaris' /etc/release >/dev/null; then
+ gl_cv_func_c32rtomb_sanitycheck="guessing yes"
+ else
+ gl_cv_func_c32rtomb_sanitycheck="guessing no"
+ fi
+ ;;
+ # Guess yes otherwise.
+ *)
+ gl_cv_func_c32rtomb_sanitycheck="guessing yes"
+ ;;
+ esac
+changequote([,])dnl
+ if 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 Solaris 11 OmniOS:
+ c32rtomb returns (size_t)-1.
+ wcrtomb 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;
+ char buf[16];
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtowc (&wc, "\201\060\211\070", 4, &state) == 4
+ && wcrtomb (buf, wc, NULL) == 4
+ && memcmp (buf, "\201\060\211\070", 4) == 0)
+ {
+ char32_t c32 = (wchar_t) 0xBADFACE;
+ memset (&state, '\0', sizeof (mbstate_t));
+ if (mbrtoc32 (&c32, "\201\060\211\070", 4, &state) == 4
+ && c32rtomb (buf, c32, NULL) != 4)
+ result |= 1;
+ }
+ }
+ return result;
+}]])],
+ [gl_cv_func_c32rtomb_sanitycheck=yes],
+ [gl_cv_func_c32rtomb_sanitycheck=no],
+ [:])
+ fi
+ ])
+ case "$gl_cv_func_c32rtomb_sanitycheck" in
+ *yes)
+ HAVE_WORKING_C32RTOMB=1
+ AC_DEFINE([HAVE_WORKING_C32RTOMB], [1],
+ [Define if the c32rtomb function basically works.])
+ ;;
+ *) HAVE_WORKING_C32RTOMB=0 ;;
+ esac
+ fi
+ AC_SUBST([HAVE_WORKING_C32RTOMB])
+])
diff --git a/gnulib-m4/calloc.m4 b/gnulib-m4/calloc.m4
index c01520e5..c69ce414 100644
--- a/gnulib-m4/calloc.m4
+++ b/gnulib-m4/calloc.m4
@@ -1,9 +1,9 @@
-# calloc.m4 serial 29
-
-# Copyright (C) 2004-2022 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.
+# calloc.m4
+# serial 34
+dnl Copyright (C) 2004-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.
# Written by Jim Meyering.
@@ -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
])
@@ -58,6 +58,11 @@ AC_DEFUN([gl_FUNC_CALLOC_GNU],
[
AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
AC_REQUIRE([gl_FUNC_CALLOC_POSIX])
+
+ dnl Through the dependency on module extensions-aix, _LINUX_SOURCE_COMPAT
+ dnl gets defined already before this macro gets invoked. This helps
+ dnl if !(__VEC__ || __AIXVEC), and doesn't hurt otherwise.
+
REPLACE_CALLOC_FOR_CALLOC_GNU="$REPLACE_CALLOC_FOR_CALLOC_POSIX"
if test $REPLACE_CALLOC_FOR_CALLOC_GNU = 0; then
_AC_FUNC_CALLOC_IF([], [REPLACE_CALLOC_FOR_CALLOC_GNU=1])
diff --git a/gnulib-m4/chdir-long.m4 b/gnulib-m4/chdir-long.m4
new file mode 100644
index 00000000..292c2c18
--- /dev/null
+++ b/gnulib-m4/chdir-long.m4
@@ -0,0 +1,30 @@
+# chdir-long.m4
+# serial 17
+dnl Copyright (C) 2004-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.
+
+# Use Gnulib's robust chdir function.
+# It can handle arbitrarily long directory names, which means
+# that when it is given the name of an existing directory, it
+# never fails with ENAMETOOLONG.
+# Arrange to compile chdir-long.c only on systems that define PATH_MAX.
+
+# Written by Jim Meyering.
+
+AC_DEFUN([gl_FUNC_CHDIR_LONG],
+[
+ AC_REQUIRE([gl_PATHMAX_SNIPPET_PREREQ])
+ AC_CACHE_CHECK([whether this system supports file names of any length],
+ [gl_cv_have_unlimited_file_name_length],
+ [AC_EGREP_CPP([have_arbitrary_file_name_length_limit],
+ gl_PATHMAX_SNIPPET[
+#ifdef PATH_MAX
+have_arbitrary_file_name_length_limit
+#endif],
+ [gl_cv_have_unlimited_file_name_length=no],
+ [gl_cv_have_unlimited_file_name_length=yes])])
+])
+
+AC_DEFUN([gl_PREREQ_CHDIR_LONG], [:])
diff --git a/gnulib-m4/close.m4 b/gnulib-m4/close.m4
index f95dbc9d..88c37fab 100644
--- a/gnulib-m4/close.m4
+++ b/gnulib-m4/close.m4
@@ -1,10 +1,11 @@
-# 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/closedir.m4 b/gnulib-m4/closedir.m4
new file mode 100644
index 00000000..111baf5f
--- /dev/null
+++ b/gnulib-m4/closedir.m4
@@ -0,0 +1,32 @@
+# closedir.m4
+# serial 8
+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.
+
+AC_DEFUN([gl_FUNC_CLOSEDIR],
+[
+ AC_REQUIRE([gl_DIRENT_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+ AC_CHECK_FUNCS([closedir])
+ if test $ac_cv_func_closedir = no; then
+ HAVE_CLOSEDIR=0
+ else
+ dnl Replace closedir() on native Windows and OS/2 kLIBC,
+ dnl to support fdopendir().
+ AC_REQUIRE([gl_DIRENT_DIR])
+ if test $DIR_HAS_FD_MEMBER = 0; then
+ REPLACE_CLOSEDIR=1
+ fi
+ dnl Replace closedir() for supporting the gnulib-defined fchdir() function,
+ dnl to keep fchdir's bookkeeping up-to-date.
+ m4_ifdef([gl_FUNC_FCHDIR], [
+ gl_TEST_FCHDIR
+ if test $HAVE_FCHDIR = 0; then
+ REPLACE_CLOSEDIR=1
+ fi
+ ])
+ fi
+])
diff --git a/gnulib-m4/codeset.m4 b/gnulib-m4/codeset.m4
index eb732601..e69b7402 100644
--- a/gnulib-m4/codeset.m4
+++ b/gnulib-m4/codeset.m4
@@ -1,5 +1,6 @@
-# codeset.m4 serial 5 (gettext-0.18.2)
-dnl Copyright (C) 2000-2002, 2006, 2008-2014, 2016, 2019-2022 Free Software
+# codeset.m4
+# serial 5 (gettext-0.18.2)
+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..79085e40 100644
--- a/gnulib-m4/ctype_h.m4
+++ b/gnulib-m4/ctype_h.m4
@@ -1,5 +1,6 @@
-# ctype_h.m4 serial 9
-dnl Copyright (C) 2009-2022 Free Software Foundation, Inc.
+# ctype_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.
diff --git a/gnulib-m4/d-ino.m4 b/gnulib-m4/d-ino.m4
new file mode 100644
index 00000000..40399372
--- /dev/null
+++ b/gnulib-m4/d-ino.m4
@@ -0,0 +1,59 @@
+# d-ino.m4
+# serial 22
+dnl Copyright (C) 1997, 1999-2001, 2003-2004, 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.
+
+dnl From Jim Meyering.
+dnl
+dnl Check whether struct dirent has a member named d_ino.
+
+AC_DEFUN([gl_CHECK_TYPE_STRUCT_DIRENT_D_INO],
+ [AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([for d_ino member in directory struct],
+ [gl_cv_struct_dirent_d_ino],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <sys/types.h>
+ #include <sys/stat.h>
+ #include <dirent.h>
+ ]],
+ [[DIR *dp = opendir (".");
+ struct dirent *e;
+ struct stat st;
+ if (! dp)
+ return 1;
+ e = readdir (dp);
+ if (! e)
+ { closedir (dp); return 2; }
+ if (lstat (e->d_name, &st) != 0)
+ { closedir (dp); return 3; }
+ if (e->d_ino != st.st_ino)
+ { closedir (dp); return 4; }
+ closedir (dp);
+ return 0;
+ ]])],
+ [gl_cv_struct_dirent_d_ino=yes],
+ [gl_cv_struct_dirent_d_ino=no],
+ [case "$host_os" in
+ # Guess yes on glibc systems with Linux kernel.
+ linux*-gnu*) gl_cv_struct_dirent_d_ino="guessing yes" ;;
+ # Guess yes on musl systems with Linux kernel.
+ linux*-musl*) gl_cv_struct_dirent_d_ino="guessing yes" ;;
+ # Guess yes on systems that emulate the Linux system calls.
+ midipix*) gl_cv_struct_dirent_d_ino="guessing yes" ;;
+ # Guess no on native Windows.
+ mingw* | windows*) gl_cv_struct_dirent_d_ino="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_struct_dirent_d_ino="$gl_cross_guess_normal" ;;
+ esac
+ ])])
+ case "$gl_cv_struct_dirent_d_ino" in
+ *yes)
+ AC_DEFINE([D_INO_IN_DIRENT], [1],
+ [Define if struct dirent has a member d_ino that actually works.])
+ ;;
+ esac
+ ]
+)
diff --git a/gnulib-m4/dirent_h.m4 b/gnulib-m4/dirent_h.m4
new file mode 100644
index 00000000..037ae369
--- /dev/null
+++ b/gnulib-m4/dirent_h.m4
@@ -0,0 +1,98 @@
+# dirent_h.m4
+# serial 22
+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.
+
+dnl Written by Bruno Haible.
+
+AC_DEFUN_ONCE([gl_DIRENT_H],
+[
+ dnl Ensure to expand the default settings once only, before all statements
+ dnl that occur in other macros.
+ AC_REQUIRE([gl_DIRENT_H_DEFAULTS])
+
+ dnl <dirent.h> is always overridden, because of GNULIB_POSIXCHECK.
+ gl_CHECK_NEXT_HEADERS([dirent.h])
+ if test $ac_cv_header_dirent_h = yes; then
+ HAVE_DIRENT_H=1
+ else
+ HAVE_DIRENT_H=0
+ fi
+ AC_SUBST([HAVE_DIRENT_H])
+
+ gl_DIRENT_DIR
+
+ dnl Check for declarations of anything we want to poison if the
+ dnl corresponding gnulib module is not in use.
+ gl_WARN_ON_USE_PREPARE([[#include <dirent.h>
+ ]], [alphasort closedir dirfd fdopendir opendir readdir rewinddir scandir])
+])
+
+dnl Determine whether <dirent.h> needs to override the DIR type.
+AC_DEFUN_ONCE([gl_DIRENT_DIR],
+[
+ dnl Set DIR_HAS_FD_MEMBER if dirfd() works, i.e. not always returns -1.
+ dnl We could use the findings from gl_FUNC_DIRFD and gl_PREREQ_DIRFD, but
+ dnl it's simpler since we know the affected platforms.
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ case "$host_os" in
+ mingw* | windows* | os2*) DIR_HAS_FD_MEMBER=0 ;;
+ *) DIR_HAS_FD_MEMBER=1 ;;
+ esac
+ AC_SUBST([DIR_HAS_FD_MEMBER])
+])
+
+# gl_DIRENT_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_DIRENT_MODULE_INDICATOR],
+[
+ dnl Ensure to expand the default settings once only.
+ gl_DIRENT_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_DIRENT_H_REQUIRE_DEFAULTS],
+[
+ m4_defun(GL_MODULE_INDICATOR_PREFIX[_DIRENT_H_MODULE_INDICATOR_DEFAULTS], [
+ gl_UNISTD_H_REQUIRE_DEFAULTS dnl for REPLACE_FCHDIR
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OPENDIR])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_READDIR])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REWINDDIR])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CLOSEDIR])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DIRFD])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FDOPENDIR])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SCANDIR])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ALPHASORT])
+ ])
+ m4_require(GL_MODULE_INDICATOR_PREFIX[_DIRENT_H_MODULE_INDICATOR_DEFAULTS])
+ AC_REQUIRE([gl_DIRENT_H_DEFAULTS])
+])
+
+AC_DEFUN([gl_DIRENT_H_DEFAULTS],
+[
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_OPENDIR=1; AC_SUBST([HAVE_OPENDIR])
+ HAVE_READDIR=1; AC_SUBST([HAVE_READDIR])
+ HAVE_REWINDDIR=1; AC_SUBST([HAVE_REWINDDIR])
+ HAVE_CLOSEDIR=1; AC_SUBST([HAVE_CLOSEDIR])
+ HAVE_DECL_DIRFD=1; AC_SUBST([HAVE_DECL_DIRFD])
+ HAVE_DECL_FDOPENDIR=1;AC_SUBST([HAVE_DECL_FDOPENDIR])
+ HAVE_FDOPENDIR=1; AC_SUBST([HAVE_FDOPENDIR])
+ HAVE_SCANDIR=1; AC_SUBST([HAVE_SCANDIR])
+ HAVE_ALPHASORT=1; AC_SUBST([HAVE_ALPHASORT])
+ REPLACE_OPENDIR=0; AC_SUBST([REPLACE_OPENDIR])
+ REPLACE_READDIR=0; AC_SUBST([REPLACE_READDIR])
+ REPLACE_REWINDDIR=0; AC_SUBST([REPLACE_REWINDDIR])
+ REPLACE_CLOSEDIR=0; AC_SUBST([REPLACE_CLOSEDIR])
+ REPLACE_DIRFD=0; AC_SUBST([REPLACE_DIRFD])
+ REPLACE_FDOPENDIR=0; AC_SUBST([REPLACE_FDOPENDIR])
+])
diff --git a/gnulib-m4/dirfd.m4 b/gnulib-m4/dirfd.m4
new file mode 100644
index 00000000..605cb706
--- /dev/null
+++ b/gnulib-m4/dirfd.m4
@@ -0,0 +1,88 @@
+# dirfd.m4
+# serial 30 -*- Autoconf -*-
+dnl Copyright (C) 2001-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.
+
+dnl Find out how to get the file descriptor associated with an open DIR*.
+
+dnl From Jim Meyering
+
+AC_DEFUN([gl_FUNC_DIRFD],
+[
+ AC_REQUIRE([gl_DIRENT_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+
+ dnl Persuade glibc <dirent.h> to declare dirfd().
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+ AC_CHECK_FUNCS([dirfd])
+ AC_CHECK_DECLS([dirfd], , ,
+ [[#include <sys/types.h>
+ #include <dirent.h>]])
+ if test $ac_cv_have_decl_dirfd = no; then
+ HAVE_DECL_DIRFD=0
+ fi
+
+ AC_CACHE_CHECK([whether dirfd is a macro],
+ [gl_cv_func_dirfd_macro],
+ [AC_EGREP_CPP([dirent_header_defines_dirfd], [
+#include <sys/types.h>
+#include <dirent.h>
+#ifdef dirfd
+ dirent_header_defines_dirfd
+#endif],
+ [gl_cv_func_dirfd_macro=yes],
+ [gl_cv_func_dirfd_macro=no])])
+
+ if test $ac_cv_func_dirfd = no && test $gl_cv_func_dirfd_macro = no; then
+ HAVE_DIRFD=0
+ else
+ HAVE_DIRFD=1
+ dnl Replace dirfd() on native Windows and OS/2 kLIBC,
+ dnl to support fdopendir().
+ AC_REQUIRE([gl_DIRENT_DIR])
+ if test $DIR_HAS_FD_MEMBER = 0; then
+ REPLACE_DIRFD=1
+ fi
+ fi
+])
+
+dnl Prerequisites of lib/dirfd.c.
+AC_DEFUN([gl_PREREQ_DIRFD],
+[
+ AC_CACHE_CHECK([how to get the file descriptor associated with an open DIR*],
+ [gl_cv_sys_dir_fd_member_name],
+ [
+ gl_saved_CFLAGS=$CFLAGS
+ for ac_expr in d_fd dd_fd; do
+
+ CFLAGS="$CFLAGS -DDIR_FD_MEMBER_NAME=$ac_expr"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #include <sys/types.h>
+ #include <dirent.h>]],
+ [[DIR *dir_p = opendir("."); (void) dir_p->DIR_FD_MEMBER_NAME;]])],
+ [dir_fd_found=yes]
+ )
+ CFLAGS=$gl_saved_CFLAGS
+ test "$dir_fd_found" = yes && break
+ done
+ test "$dir_fd_found" = yes || ac_expr=no_such_member
+
+ gl_cv_sys_dir_fd_member_name=$ac_expr
+ ]
+ )
+ if test $gl_cv_sys_dir_fd_member_name != no_such_member; then
+ AC_DEFINE_UNQUOTED([DIR_FD_MEMBER_NAME],
+ [$gl_cv_sys_dir_fd_member_name],
+ [the name of the file descriptor member of DIR])
+ fi
+ AH_VERBATIM([DIR_TO_FD],
+ [#ifdef DIR_FD_MEMBER_NAME
+# define DIR_TO_FD(Dir_p) ((Dir_p)->DIR_FD_MEMBER_NAME)
+#else
+# define DIR_TO_FD(Dir_p) -1
+#endif
+])
+])
diff --git a/gnulib-m4/double-slash-root.m4 b/gnulib-m4/double-slash-root.m4
index 09ff5f0d..3437c699 100644
--- a/gnulib-m4/double-slash-root.m4
+++ b/gnulib-m4/double-slash-root.m4
@@ -1,5 +1,6 @@
-# double-slash-root.m4 serial 4 -*- Autoconf -*-
-dnl Copyright (C) 2006, 2008-2022 Free Software Foundation, Inc.
+# double-slash-root.m4
+# serial 4 -*- Autoconf -*-
+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/dup.m4 b/gnulib-m4/dup.m4
new file mode 100644
index 00000000..b3d74d68
--- /dev/null
+++ b/gnulib-m4/dup.m4
@@ -0,0 +1,55 @@
+# dup.m4
+# serial 8
+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.
+
+AC_DEFUN([gl_FUNC_DUP],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ m4_ifdef([gl_MSVC_INVAL], [
+ AC_REQUIRE([gl_MSVC_INVAL])
+ if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+ REPLACE_DUP=1
+ fi
+ ])
+ dnl Replace dup() for supporting the gnulib-defined fchdir() function,
+ dnl to keep fchdir's bookkeeping up-to-date.
+ m4_ifdef([gl_FUNC_FCHDIR], [
+ gl_TEST_FCHDIR
+ if test $HAVE_FCHDIR = 0; then
+ REPLACE_DUP=1
+ fi
+ ])
+ AC_CACHE_CHECK([whether dup works], [gl_cv_func_dup_works],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM([[#include <unistd.h>
+ #include <fcntl.h>
+ #include <errno.h>
+ ]GL_MDA_DEFINES],
+ [[/* On OS/2 kLIBC, dup does not work on a directory fd. */
+ int fd = open (".", O_RDONLY);
+ return fd < 0 ? 1 : dup (fd) < 0 ? 2 : 0;
+ ]])
+ ],
+ [gl_cv_func_dup_works=yes],
+ [gl_cv_func_dup_works=no],
+ [case "$host_os" in
+ # Guess no on native Windows.
+ mingw* | windows*) gl_cv_func_dup_works="guessing no" ;;
+ *) gl_cv_func_dup_works="guessing yes" ;;
+ esac
+ ])
+ ])
+ case "$gl_cv_func_dup_works" in
+ *yes) ;;
+ *)
+ REPLACE_DUP=1
+ ;;
+ esac
+])
+
+# Prerequisites of lib/dup.c.
+AC_DEFUN([gl_PREREQ_DUP], [:])
diff --git a/gnulib-m4/dup2.m4 b/gnulib-m4/dup2.m4
index 7e777cde..786121fd 100644
--- a/gnulib-m4/dup2.m4
+++ b/gnulib-m4/dup2.m4
@@ -1,5 +1,6 @@
-#serial 27
-dnl Copyright (C) 2002, 2005, 2007, 2009-2022 Free Software Foundation, Inc.
+# dup2.m4
+# 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 +68,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..8a15e705 100644
--- a/gnulib-m4/eealloc.m4
+++ b/gnulib-m4/eealloc.m4
@@ -1,5 +1,6 @@
-# eealloc.m4 serial 3
-dnl Copyright (C) 2003, 2009-2022 Free Software Foundation, Inc.
+# eealloc.m4
+# serial 3
+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..107960b2 100644
--- a/gnulib-m4/environ.m4
+++ b/gnulib-m4/environ.m4
@@ -1,5 +1,6 @@
-# environ.m4 serial 8
-dnl Copyright (C) 2001-2004, 2006-2022 Free Software Foundation, Inc.
+# environ.m4
+# serial 8
+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..920ea6cc 100644
--- a/gnulib-m4/errno_h.m4
+++ b/gnulib-m4/errno_h.m4
@@ -1,5 +1,6 @@
-# errno_h.m4 serial 14
-dnl Copyright (C) 2004, 2006, 2008-2022 Free Software Foundation, Inc.
+# errno_h.m4
+# serial 18
+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.
@@ -9,6 +10,11 @@ AC_PREREQ([2.61])
AC_DEFUN_ONCE([gl_HEADER_ERRNO_H],
[
AC_REQUIRE([AC_PROG_CC])
+
+ dnl Through the dependency on module extensions-aix, _LINUX_SOURCE_COMPAT
+ dnl gets defined already before this macro gets invoked. This persuades
+ dnl AIX 7.3 errno.h to assign ENOTEMPTY a value different than EEXIST.
+
AC_CACHE_CHECK([for complete errno.h], [gl_cv_header_errno_h_complete], [
AC_EGREP_CPP([booboo],[
#include <errno.h>
@@ -63,6 +69,9 @@ booboo
#if !defined EILSEQ
booboo
#endif
+#if !defined ESOCKTNOSUPPORT
+booboo
+#endif
],
[gl_cv_header_errno_h_complete=no],
[gl_cv_header_errno_h_complete=yes])
diff --git a/gnulib-m4/error.m4 b/gnulib-m4/error.m4
index 7a103446..273b636b 100644
--- a/gnulib-m4/error.m4
+++ b/gnulib-m4/error.m4
@@ -1,22 +1,12 @@
-#serial 15
-
-# Copyright (C) 1996-1998, 2001-2004, 2009-2022 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.
+# error.m4
+# serial 16
+dnl Copyright (C) 1996-1998, 2001-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.
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..91a8fc68
--- /dev/null
+++ b/gnulib-m4/error_h.m4
@@ -0,0 +1,128 @@
+# error_h.m4
+# serial 5
+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
+
+ m4_ifdef([gl_HAVE_MODULE_VERROR],
+ [COMPILE_ERROR_C=1],
+ [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..db597afc 100644
--- a/gnulib-m4/exponentd.m4
+++ b/gnulib-m4/exponentd.m4
@@ -1,9 +1,10 @@
-# 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..55d875d4 100644
--- a/gnulib-m4/exponentf.m4
+++ b/gnulib-m4/exponentf.m4
@@ -1,9 +1,10 @@
-# 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..eb7fcb44 100644
--- a/gnulib-m4/exponentl.m4
+++ b/gnulib-m4/exponentl.m4
@@ -1,9 +1,10 @@
-# 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 +83,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-aix.m4 b/gnulib-m4/extensions-aix.m4
new file mode 100644
index 00000000..990a7ac3
--- /dev/null
+++ b/gnulib-m4/extensions-aix.m4
@@ -0,0 +1,25 @@
+# extensions-aix.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.
+
+# On AIX, most extensions are already enabled through the _ALL_SOURCE macro,
+# defined by gl_USE_SYSTEM_EXTENSIONS. gl_USE_AIX_EXTENSIONS additionally
+# activates more GNU and Linux-like behaviours, affecting
+# - the time_t type,
+# - errno values in <errno.h>: ENOTEMPTY
+# - functions in <stdlib.h>: malloc calloc realloc valloc
+# <https://www.ibm.com/docs/en/aix/7.3?topic=m-malloc-free-realloc-calloc-mallopt-mallinfo-mallinfo-heap-alloca-valloc-posix-memalign-subroutine>
+# - functions in <string.h>: strerror_r (returns 'char *', like glibc)
+# - functions in <dirent.h>: scandir, alphasort, readdir_r
+# - functions in <netdb.h>: gethostbyname_r gethostbyaddr_r
+# - declarations in <unistd.h>: sbrk
+# and a couple of secondary <sys/*> header files.
+
+AC_DEFUN_ONCE([gl_USE_AIX_EXTENSIONS],
+[
+ AC_DEFINE([_LINUX_SOURCE_COMPAT], [1],
+ [Define so that AIX headers are more compatible with GNU/Linux.])
+])
diff --git a/gnulib-m4/extensions.m4 b/gnulib-m4/extensions.m4
index 0b3e4b5a..1fb68956 100644
--- a/gnulib-m4/extensions.m4
+++ b/gnulib-m4/extensions.m4
@@ -1,10 +1,11 @@
-# serial 22 -*- Autoconf -*-
-# Enable extensions on systems that normally disable them.
+# extensions.m4
+# serial 25 -*- Autoconf -*-
+dnl Copyright (C) 2003, 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.
-# Copyright (C) 2003, 2006-2022 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.
+# Enable extensions on systems that normally disable them.
dnl Define to empty for the benefit of Autoconf 2.69 and earlier, so that
dnl AC_USE_SYSTEM_EXTENSIONS (below) can be used unchanged from Autoconf 2.70+.
@@ -31,7 +32,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 +114,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 +192,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__])
@@ -224,4 +230,15 @@ AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS],
[Define to enable the declarations of ISO C 11 types and functions.])
;;
esac
+
+ dnl On OpenSolaris derivatives, the include files contains a couple of
+ dnl declarations that are only activated with an explicit
+ dnl -D__STDC_WANT_LIB_EXT1__.
+ AH_VERBATIM([USE_ISO_C_23_ANNEX_K_EXTENSIONS],
+[/* Define to enable the declarations of ISO C 23 Annex K types and functions. */
+#if !(defined __STDC_WANT_LIB_EXT1__ && __STDC_WANT_LIB_EXT1__)
+#undef/**/__STDC_WANT_LIB_EXT1__
+#define __STDC_WANT_LIB_EXT1__ 1
+#endif
+])
])
diff --git a/gnulib-m4/extern-inline.m4 b/gnulib-m4/extern-inline.m4
index 8a12bddd..547da82a 100644
--- a/gnulib-m4/extern-inline.m4
+++ b/gnulib-m4/extern-inline.m4
@@ -1,10 +1,12 @@
-dnl 'extern inline' a la ISO C99.
-
-dnl Copyright 2012-2022 Free Software Foundation, Inc.
+# extern-inline.m4
+# serial 1
+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.
+dnl 'extern inline' a la ISO C99.
+
AC_DEFUN([gl_EXTERN_INLINE],
[
AC_CACHE_CHECK([whether ctype.h defines __header_inline],
@@ -79,7 +81,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 +92,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/fchdir.m4 b/gnulib-m4/fchdir.m4
new file mode 100644
index 00000000..7eb12c2e
--- /dev/null
+++ b/gnulib-m4/fchdir.m4
@@ -0,0 +1,77 @@
+# fchdir.m4
+# serial 32
+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.
+
+AC_DEFUN([gl_FUNC_FCHDIR],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ AC_REQUIRE([gl_DIRENT_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+ AC_CHECK_DECLS_ONCE([fchdir])
+ if test $ac_cv_have_decl_fchdir = no; then
+ HAVE_DECL_FCHDIR=0
+ fi
+
+ AC_REQUIRE([gl_TEST_FCHDIR])
+ if test $HAVE_FCHDIR = 1; then
+ AC_REQUIRE([gl_DIRENT_DIR])
+ if test $DIR_HAS_FD_MEMBER = 0; then
+ dnl fchdir() should be replaced if dirfd() does not work.
+ REPLACE_FCHDIR=1
+ fi
+ fi
+
+ if test $HAVE_FCHDIR = 0 || test $REPLACE_FCHDIR = 1; then
+ AC_DEFINE([REPLACE_FCHDIR], [1],
+ [Define to 1 if gnulib's fchdir() replacement is used.])
+ dnl We must also replace anything that can manipulate a directory fd,
+ dnl to keep our bookkeeping up-to-date. We don't have to replace
+ dnl fstatat, since no platform has fstatat but lacks fchdir.
+ AC_CACHE_CHECK([whether open can visit directories],
+ [gl_cv_func_open_directory_works],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <fcntl.h>
+ ]GL_MDA_DEFINES],
+ [[return open(".", O_RDONLY) < 0;]])],
+ [gl_cv_func_open_directory_works=yes],
+ [gl_cv_func_open_directory_works=no],
+ [case "$host_os" in
+ # Guess yes on Linux systems.
+ linux-* | linux) gl_cv_func_open_directory_works="guessing yes" ;;
+ # Guess yes on systems that emulate the Linux system calls.
+ midipix*) gl_cv_func_open_directory_works="guessing yes" ;;
+ # Guess yes on glibc systems.
+ *-gnu* | gnu*) gl_cv_func_open_directory_works="guessing yes" ;;
+ # Guess no on native Windows.
+ mingw* | windows*) gl_cv_func_open_directory_works="guessing no" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_open_directory_works="$gl_cross_guess_normal" ;;
+ esac
+ ])])
+ case "$gl_cv_func_open_directory_works" in
+ *yes) ;;
+ *)
+ AC_DEFINE([REPLACE_OPEN_DIRECTORY], [1], [Define to 1 if open() should
+work around the inability to open a directory.])
+ ;;
+ esac
+ fi
+])
+
+# Determine whether to use the overrides in lib/fchdir.c.
+AC_DEFUN([gl_TEST_FCHDIR],
+[
+ AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
+ AC_CHECK_FUNCS_ONCE([fchdir])
+ if test $ac_cv_func_fchdir = no; then
+ HAVE_FCHDIR=0
+ fi
+])
+
+# Prerequisites of lib/fchdir.c.
+AC_DEFUN([gl_PREREQ_FCHDIR], [:])
diff --git a/gnulib-m4/fcntl-o.m4 b/gnulib-m4/fcntl-o.m4
index 4dcde9e0..43aa1325 100644
--- a/gnulib-m4/fcntl-o.m4
+++ b/gnulib-m4/fcntl-o.m4
@@ -1,5 +1,6 @@
-# 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 +118,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..f6d0f377 100644
--- a/gnulib-m4/fcntl.m4
+++ b/gnulib-m4/fcntl.m4
@@ -1,5 +1,6 @@
-# fcntl.m4 serial 11
-dnl Copyright (C) 2009-2022 Free Software Foundation, Inc.
+# fcntl.m4
+# serial 12
+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.
@@ -82,7 +83,7 @@ AC_DEFUN([gl_FUNC_FCNTL],
esac
dnl Many systems lack F_DUPFD_CLOEXEC.
- dnl NetBSD 9.0 declares F_DUPFD_CLOEXEC but it works only like F_DUPFD.
+ dnl NetBSD 10.0 declares F_DUPFD_CLOEXEC but it works only like F_DUPFD.
AC_CACHE_CHECK([whether fcntl understands F_DUPFD_CLOEXEC],
[gl_cv_func_fcntl_f_dupfd_cloexec],
[AC_RUN_IFELSE(
diff --git a/gnulib-m4/fcntl_h.m4 b/gnulib-m4/fcntl_h.m4
index 267f98bf..b69f7a0c 100644
--- a/gnulib-m4/fcntl_h.m4
+++ b/gnulib-m4/fcntl_h.m4
@@ -1,10 +1,12 @@
+# fcntl_h.m4
# 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.
+# Configure fcntl.h.
+
dnl Written by Paul Eggert.
AC_DEFUN_ONCE([gl_FCNTL_H],
diff --git a/gnulib-m4/fdopen.m4 b/gnulib-m4/fdopen.m4
index 32e0e1d8..aae447d3 100644
--- a/gnulib-m4/fdopen.m4
+++ b/gnulib-m4/fdopen.m4
@@ -1,5 +1,6 @@
-# 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 +37,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/fdopendir.m4 b/gnulib-m4/fdopendir.m4
new file mode 100644
index 00000000..e9268378
--- /dev/null
+++ b/gnulib-m4/fdopendir.m4
@@ -0,0 +1,68 @@
+# fdopendir.m4
+# serial 15
+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.
+
+# See if we need to provide fdopendir.
+
+# Written by Eric Blake.
+
+AC_DEFUN([gl_FUNC_FDOPENDIR],
+[
+ AC_REQUIRE([gl_DIRENT_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+
+ dnl FreeBSD 7.3 has the function, but failed to declare it.
+ AC_CHECK_DECLS([fdopendir], [], [HAVE_DECL_FDOPENDIR=0], [[
+#include <dirent.h>
+ ]])
+ AC_CHECK_FUNCS_ONCE([fdopendir])
+ if test $ac_cv_func_fdopendir = no; then
+ HAVE_FDOPENDIR=0
+ else
+ AC_CACHE_CHECK([whether fdopendir works],
+ [gl_cv_func_fdopendir_works],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM([[
+#include <dirent.h>
+#include <fcntl.h>
+#include <unistd.h>
+]GL_MDA_DEFINES[
+#if !HAVE_DECL_FDOPENDIR
+extern
+# ifdef __cplusplus
+"C"
+# endif
+DIR *fdopendir (int);
+#endif
+]],
+ [[int result = 0;
+ int fd = open ("conftest.c", O_RDONLY);
+ if (fd < 0) result |= 1;
+ if (fdopendir (fd)) result |= 2;
+ if (close (fd)) result |= 4;
+ return result;
+ ]])],
+ [gl_cv_func_fdopendir_works=yes],
+ [gl_cv_func_fdopendir_works=no],
+ [case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_fdopendir_works="guessing yes" ;;
+ # Guess yes on musl systems.
+ *-musl* | midipix*) gl_cv_func_fdopendir_works="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_fdopendir_works="$gl_cross_guess_normal" ;;
+ esac
+ ])])
+ case "$gl_cv_func_fdopendir_works" in
+ *yes) ;;
+ *)
+ REPLACE_FDOPENDIR=1
+ ;;
+ esac
+ fi
+])
diff --git a/gnulib-m4/filenamecat.m4 b/gnulib-m4/filenamecat.m4
new file mode 100644
index 00000000..ded32771
--- /dev/null
+++ b/gnulib-m4/filenamecat.m4
@@ -0,0 +1,17 @@
+# filenamecat.m4
+# serial 12
+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.
+
+AC_DEFUN([gl_FILE_NAME_CONCAT],
+[
+ AC_REQUIRE([gl_FILE_NAME_CONCAT_LGPL])
+])
+
+AC_DEFUN([gl_FILE_NAME_CONCAT_LGPL],
+[
+ dnl Prerequisites of lib/filenamecat-lgpl.c.
+ gl_CHECK_FUNCS_ANDROID([mempcpy], [[#include <string.h>]])
+])
diff --git a/gnulib-m4/flexmember.m4 b/gnulib-m4/flexmember.m4
index 3b4237e9..73fb6142 100644
--- a/gnulib-m4/flexmember.m4
+++ b/gnulib-m4/flexmember.m4
@@ -1,10 +1,11 @@
+# flexmember.m4
# serial 5
-# Check for flexible array member support.
+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.
-# Copyright (C) 2006, 2009-2022 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.
+# Check for flexible array member support.
# Written by Paul Eggert.
diff --git a/gnulib-m4/float_h.m4 b/gnulib-m4/float_h.m4
index 0e845726..12c0eb67 100644
--- a/gnulib-m4/float_h.m4
+++ b/gnulib-m4/float_h.m4
@@ -1,5 +1,6 @@
-# float_h.m4 serial 13
-dnl Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+# float_h.m4
+# serial 15
+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.
@@ -53,6 +54,31 @@ changequote([,])dnl
;;
esac
+ dnl Test for completeness w.r.t. ISO C 23.
+ REPLACE_FLOAT_SNAN=0
+ AC_CACHE_CHECK([whether float.h conforms to ISO C23],
+ [gl_cv_header_float_h_isoc23],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <float.h>
+ int x[] = { FLT_DECIMAL_DIG, DBL_DECIMAL_DIG, LDBL_DECIMAL_DIG };
+ float maxf = FLT_NORM_MAX;
+ double maxd = DBL_NORM_MAX;
+ long double maxl = LDBL_NORM_MAX;
+ ]],
+ [[float sf = FLT_SNAN;
+ double sd = DBL_SNAN;
+ long double sl = LDBL_SNAN;
+ return (sf != 0) + (sd != 0) + (sl != 0);
+ ]])],
+ [gl_cv_header_float_h_isoc23=yes],
+ [gl_cv_header_float_h_isoc23=no])
+ ])
+ if test $gl_cv_header_float_h_isoc23 != yes; then
+ GL_GENERATE_FLOAT_H=true
+ REPLACE_FLOAT_SNAN=1
+ fi
+
dnl Test against glibc-2.7 Linux/SPARC64 bug.
REPLACE_ITOLD=0
AC_CACHE_CHECK([whether conversion from 'int' to 'long double' works],
@@ -84,9 +110,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..086d51dd 100644
--- a/gnulib-m4/fpieee.m4
+++ b/gnulib-m4/fpieee.m4
@@ -1,5 +1,6 @@
-# fpieee.m4 serial 2 -*- coding: utf-8 -*-
-dnl Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+# fpieee.m4
+# serial 2
+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..a2b596d6 100644
--- a/gnulib-m4/free.m4
+++ b/gnulib-m4/free.m4
@@ -1,8 +1,9 @@
-# free.m4 serial 6
-# Copyright (C) 2003-2005, 2009-2022 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.
+# free.m4
+# serial 6
+dnl Copyright (C) 2003-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.
# Written by Paul Eggert and Bruno Haible.
diff --git a/gnulib-m4/frexp.m4 b/gnulib-m4/frexp.m4
index d8f3cef4..6eea5f92 100644
--- a/gnulib-m4/frexp.m4
+++ b/gnulib-m4/frexp.m4
@@ -1,5 +1,6 @@
-# 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 +14,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 +23,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 +31,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 +157,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 +167,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..ddc49918 100644
--- a/gnulib-m4/frexpl.m4
+++ b/gnulib-m4/frexpl.m4
@@ -1,5 +1,6 @@
-# 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 +24,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 +33,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 +41,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 +224,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..9cdd385e 100644
--- a/gnulib-m4/fseterr.m4
+++ b/gnulib-m4/fseterr.m4
@@ -1,10 +1,14 @@
-# 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..47777b0c 100644
--- a/gnulib-m4/fstat.m4
+++ b/gnulib-m4/fstat.m4
@@ -1,5 +1,6 @@
-# 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 +11,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/fstatat.m4 b/gnulib-m4/fstatat.m4
new file mode 100644
index 00000000..c5ef7dfb
--- /dev/null
+++ b/gnulib-m4/fstatat.m4
@@ -0,0 +1,66 @@
+# fstatat.m4
+# serial 5
+dnl Copyright (C) 2004-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.
+
+# Written by Jim Meyering.
+
+# If we have the fstatat function, and it has the bug (in AIX 7.1)
+# that it does not fill in st_size correctly, use the replacement function.
+AC_DEFUN([gl_FUNC_FSTATAT],
+[
+ AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_CHECK_FUNCS_ONCE([fstatat])
+
+ if test $ac_cv_func_fstatat = no; then
+ HAVE_FSTATAT=0
+ else
+ dnl Test for an AIX 7.1 bug; see
+ dnl <https://lists.gnu.org/r/bug-tar/2011-09/msg00015.html>.
+ AC_CACHE_CHECK([whether fstatat (..., 0) works],
+ [gl_cv_func_fstatat_zero_flag],
+ [AC_RUN_IFELSE(
+ [AC_LANG_SOURCE(
+ [[
+ #include <fcntl.h>
+ #include <sys/stat.h>
+ int
+ main (void)
+ {
+ struct stat a;
+ return fstatat (AT_FDCWD, ".", &a, 0) != 0;
+ }
+ ]])],
+ [gl_cv_func_fstatat_zero_flag=yes],
+ [gl_cv_func_fstatat_zero_flag=no],
+ [case "$host_os" in
+ aix*) gl_cv_func_fstatat_zero_flag="guessing no";;
+ *) gl_cv_func_fstatat_zero_flag="guessing yes";;
+ esac
+ ])
+ ])
+
+ case $gl_cv_func_fstatat_zero_flag+$gl_cv_func_lstat_dereferences_slashed_symlink in
+ *yes+*yes) ;;
+ *) REPLACE_FSTATAT=1 ;;
+ esac
+
+ case $host_os in
+ darwin* | solaris*)
+ REPLACE_FSTATAT=1 ;;
+ esac
+
+ case $REPLACE_FSTATAT,$gl_cv_func_fstatat_zero_flag in
+ 1,*yes)
+ AC_DEFINE([HAVE_WORKING_FSTATAT_ZERO_FLAG], [1],
+ [Define to 1 if fstatat (..., 0) works.
+ For example, it does not work in AIX 7.1.])
+ ;;
+ esac
+ fi
+])
diff --git a/gnulib-m4/ftruncate.m4 b/gnulib-m4/ftruncate.m4
index 2697e0eb..0ecc0b3e 100644
--- a/gnulib-m4/ftruncate.m4
+++ b/gnulib-m4/ftruncate.m4
@@ -1,21 +1,21 @@
-# serial 21
+# ftruncate.m4
+# serial 24
+dnl Copyright (C) 2000-2001, 2003-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.
# See if we need to emulate a missing ftruncate function using _chsize.
-# Copyright (C) 2000-2001, 2003-2007, 2009-2022 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.
-
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-abort-bug.m4 b/gnulib-m4/getcwd-abort-bug.m4
new file mode 100644
index 00000000..0fce7922
--- /dev/null
+++ b/gnulib-m4/getcwd-abort-bug.m4
@@ -0,0 +1,148 @@
+# getcwd-abort-bug.m4
+# serial 18
+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.
+
+# Determine whether getcwd aborts when the length of the working directory
+# name is unusually large. Any length between 4k and 16k trigger the bug
+# when using glibc-2.4.90-9 or older.
+
+# From Jim Meyering
+
+# gl_FUNC_GETCWD_ABORT_BUG([ACTION-IF-BUGGY[, ACTION-IF-WORKS]])
+AC_DEFUN([gl_FUNC_GETCWD_ABORT_BUG],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CHECK_DECLS_ONCE([getcwd])
+ AC_CHECK_HEADERS_ONCE([unistd.h])
+ AC_REQUIRE([gl_PATHMAX_SNIPPET_PREREQ])
+
+ AC_CACHE_CHECK([whether getcwd succeeds when 4k < cwd_length < 16k],
+ [gl_cv_func_getcwd_succeeds_beyond_4k],
+ [# Remove any remnants of a previous test.
+ rm -rf confdir-14B---
+ # Arrange for deletion of the temporary directory this test creates.
+ ac_clean_files="$ac_clean_files confdir-14B---"
+ dnl Please keep this in sync with tests/test-getcwd.c.
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE(
+ [[
+#include <errno.h>
+#include <stdlib.h>
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#else /* on Windows with MSVC */
+# include <direct.h>
+#endif
+#include <string.h>
+#include <sys/stat.h>
+
+]gl_PATHMAX_SNIPPET[
+]GL_MDA_DEFINES[
+
+#ifndef S_IRWXU
+# define S_IRWXU 0700
+#endif
+
+/* This size is chosen to be larger than PATH_MAX (4k), yet smaller than
+ the 16kB pagesize on ia64 linux. Those conditions make the code below
+ trigger a bug in glibc's getcwd implementation before 2.4.90-10. */
+#define TARGET_LEN (5 * 1024)
+
+int
+main ()
+{
+ char *cwd;
+ size_t initial_cwd_len;
+ int fail = 0;
+
+ /* The bug is triggered when PATH_MAX < page size, so skip
+ this relatively expensive and invasive test if that's not true. */
+#if defined PATH_MAX && defined _SC_PAGESIZE
+ int bug_possible = PATH_MAX < sysconf (_SC_PAGESIZE);
+#else
+ int bug_possible = 0;
+#endif
+ if (! bug_possible)
+ return 0;
+
+ cwd = getcwd (NULL, 0);
+ if (cwd == NULL)
+ return 2;
+
+ initial_cwd_len = strlen (cwd);
+ free (cwd);
+
+ if (1)
+ {
+ static char const dir_name[] = "confdir-14B---";
+ size_t desired_depth = ((TARGET_LEN - 1 - initial_cwd_len)
+ / sizeof dir_name);
+ size_t d;
+ for (d = 0; d < desired_depth; d++)
+ {
+ if (mkdir (dir_name, S_IRWXU) < 0 || chdir (dir_name) < 0)
+ {
+ if (! (errno == ERANGE || errno == ENAMETOOLONG
+ || errno == ENOENT))
+ fail = 3; /* Unable to construct deep hierarchy. */
+ break;
+ }
+ }
+
+ /* If libc has the bug in question, this invocation of getcwd
+ results in a failed assertion. */
+ cwd = getcwd (NULL, 0);
+ if (cwd == NULL)
+ fail = 4; /* getcwd didn't assert, but it failed for a long name
+ where the answer could have been learned. */
+ free (cwd);
+
+ /* Call rmdir first, in case the above chdir failed. */
+ rmdir (dir_name);
+ while (0 < d--)
+ {
+ if (chdir ("..") < 0)
+ {
+ fail = 5;
+ break;
+ }
+ rmdir (dir_name);
+ }
+ }
+
+ return fail;
+}
+ ]])],
+ [gl_cv_func_getcwd_succeeds_beyond_4k=yes],
+ [dnl An abort will provoke an exit code of something like 134 (128 + 6).
+ dnl An exit code of 4 can also occur (for example in
+ dnl musl libc 1.2.2/powerpc64le, NetBSD 10.0, OpenBSD 6.7:
+ dnl getcwd (NULL, 0) fails rather than returning a string longer than
+ dnl PATH_MAX. This may be POSIX compliant (in some interpretations of
+ dnl POSIX). But gnulib's getcwd module wants to provide a non-NULL
+ dnl value in this case.
+ ret=$?
+ if test $ret -ge 128 || test $ret = 4; then
+ gl_cv_func_getcwd_succeeds_beyond_4k=no
+ else
+ gl_cv_func_getcwd_succeeds_beyond_4k=yes
+ fi
+ ],
+ [case "$host_os" in
+ # Guess no otherwise, even on glibc systems and musl systems.
+ *) gl_cv_func_getcwd_succeeds_beyond_4k="guessing no"
+ esac
+ ])
+ ])
+ case "$gl_cv_func_getcwd_succeeds_beyond_4k" in
+ *no)
+ $1
+ ;;
+ *)
+ $2
+ ;;
+ esac
+])
diff --git a/gnulib-m4/getcwd-path-max.m4 b/gnulib-m4/getcwd-path-max.m4
new file mode 100644
index 00000000..e9c52d90
--- /dev/null
+++ b/gnulib-m4/getcwd-path-max.m4
@@ -0,0 +1,254 @@
+# getcwd-path-max.m4
+# serial 26
+dnl Copyright (C) 2003-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.
+
+# Check for several getcwd bugs with long file names.
+# If so, arrange to compile the wrapper function.
+
+# This is necessary for at least GNU libc on linux-2.4.19 and 2.4.20.
+# I've heard that this is due to a Linux kernel bug, and that it has
+# been fixed between 2.4.21-pre3 and 2.4.21-pre4.
+
+# From Jim Meyering
+
+AC_DEFUN([gl_FUNC_GETCWD_PATH_MAX],
+[
+ AC_CHECK_DECLS_ONCE([getcwd, alarm])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_CHECK_HEADERS_ONCE([unistd.h])
+ AC_REQUIRE([gl_PATHMAX_SNIPPET_PREREQ])
+ AC_CACHE_CHECK([whether getcwd handles long file names properly],
+ [gl_cv_func_getcwd_path_max],
+ [# Arrange for deletion of the temporary directory this test creates.
+ ac_clean_files="$ac_clean_files confdir3"
+ dnl Please keep this in sync with tests/test-getcwd.c.
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE(
+ [[
+#include <errno.h>
+#include <stdlib.h>
+#if HAVE_UNISTD_H
+# include <unistd.h>
+#else
+# include <direct.h>
+#endif
+#if HAVE_DECL_ALARM
+# include <signal.h>
+#endif
+#include <string.h>
+#include <limits.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+
+]gl_PATHMAX_SNIPPET[
+
+#ifndef AT_FDCWD
+# define AT_FDCWD 0
+#endif
+#ifdef ENAMETOOLONG
+# define is_ENAMETOOLONG(x) ((x) == ENAMETOOLONG)
+#else
+# define is_ENAMETOOLONG(x) 0
+#endif
+
+/* Use the getcwd function, not any macro. */
+#undef getcwd
+
+]GL_MDA_DEFINES[
+
+#ifndef S_IRWXU
+# define S_IRWXU 0700
+#endif
+
+/* The length of this name must be 8. */
+#define DIR_NAME "confdir3"
+#define DIR_NAME_LEN 8
+#define DIR_NAME_SIZE (DIR_NAME_LEN + 1)
+
+/* The length of "../". */
+#define DOTDOTSLASH_LEN 3
+
+/* Leftover bytes in the buffer, to work around library or OS bugs. */
+#define BUF_SLOP 20
+
+int
+main ()
+{
+#ifndef PATH_MAX
+ /* The Hurd doesn't define this, so getcwd can't exhibit the bug --
+ at least not on a local file system. And if we were to start worrying
+ about remote file systems, we'd have to enable the wrapper function
+ all of the time, just to be safe. That's not worth the cost. */
+ exit (0);
+#elif ((INT_MAX / (DIR_NAME_SIZE / DOTDOTSLASH_LEN + 1) \
+ - DIR_NAME_SIZE - BUF_SLOP) \
+ <= PATH_MAX)
+ /* FIXME: Assuming there's a system for which this is true,
+ this should be done in a compile test. */
+ exit (0);
+#else
+ char buf[PATH_MAX * (DIR_NAME_SIZE / DOTDOTSLASH_LEN + 1)
+ + DIR_NAME_SIZE + BUF_SLOP];
+ char *cwd;
+ size_t initial_cwd_len;
+ size_t cwd_len;
+ int fail;
+ size_t n_chdirs;
+
+# if HAVE_DECL_ALARM
+ /* This test makes some buggy getcwd implementations take a long time, e.g.
+ on NAS devices
+ <https://lists.gnu.org/archive/html/bug-gnulib/2024-03/msg00444.html>
+ and in sandboxed environments <https://bugs.gentoo.org/447970>.
+ Give up after 5 seconds; a getcwd slower than that isn't worth using
+ anyway. */
+ signal (SIGALRM, SIG_DFL);
+ alarm (5);
+# endif
+
+ cwd = getcwd (buf, PATH_MAX);
+ if (cwd == NULL)
+ exit (10);
+
+ cwd_len = initial_cwd_len = strlen (cwd);
+ fail = 0;
+ n_chdirs = 0;
+
+ while (1)
+ {
+ size_t dotdot_max = PATH_MAX * (DIR_NAME_SIZE / DOTDOTSLASH_LEN);
+ char *c = NULL;
+
+ cwd_len += DIR_NAME_SIZE;
+ /* If mkdir or chdir fails, it could be that this system cannot create
+ any file with an absolute name longer than PATH_MAX, such as cygwin.
+ If so, leave fail as 0, because the current working directory can't
+ be too long for getcwd if it can't even be created. On Linux with
+ the 9p file system, mkdir fails with error EINVAL when cwd_len gets
+ too long; ignore this failure because the getcwd() system call
+ produces good results whereas the gnulib substitute calls getdents64
+ which fails with error EPROTO.
+ For other errors, be pessimistic and consider that as a failure,
+ too. */
+ if (mkdir (DIR_NAME, S_IRWXU) < 0 || chdir (DIR_NAME) < 0)
+ {
+ if (! (errno == ERANGE || is_ENAMETOOLONG (errno)))
+ #ifdef __linux__
+ if (! (errno == EINVAL))
+ #endif
+ fail = 20;
+ break;
+ }
+
+ if (PATH_MAX <= cwd_len && cwd_len < PATH_MAX + DIR_NAME_SIZE)
+ {
+ struct stat sb;
+
+ c = getcwd (buf, PATH_MAX);
+ if (!c && errno == ENOENT)
+ {
+ fail = 11;
+ break;
+ }
+ if (c)
+ {
+ fail = 31;
+ break;
+ }
+ if (! (errno == ERANGE || is_ENAMETOOLONG (errno)))
+ {
+ fail = 21;
+ break;
+ }
+
+ /* Our replacement needs to be able to stat() long ../../paths,
+ so generate a path larger than PATH_MAX to check,
+ avoiding the replacement if we can't stat(). */
+ c = getcwd (buf, cwd_len + 1);
+ if (c && !AT_FDCWD && stat (c, &sb) != 0 && is_ENAMETOOLONG (errno))
+ {
+ fail = 32;
+ break;
+ }
+ }
+
+ if (dotdot_max <= cwd_len - initial_cwd_len)
+ {
+ if (dotdot_max + DIR_NAME_SIZE < cwd_len - initial_cwd_len)
+ break;
+ c = getcwd (buf, cwd_len + 1);
+ if (!c)
+ {
+ if (! (errno == ERANGE || errno == ENOENT
+ || is_ENAMETOOLONG (errno)))
+ {
+ fail = 22;
+ break;
+ }
+ if (AT_FDCWD || errno == ERANGE || errno == ENOENT)
+ {
+ fail = 12;
+ break;
+ }
+ }
+ }
+
+ if (c && strlen (c) != cwd_len)
+ {
+ fail = 23;
+ break;
+ }
+ ++n_chdirs;
+ }
+
+ /* Leaving behind such a deep directory is not polite.
+ So clean up here, right away, even though the driving
+ shell script would also clean up. */
+ {
+ size_t i;
+
+ /* Try rmdir first, in case the chdir failed. */
+ rmdir (DIR_NAME);
+ for (i = 0; i <= n_chdirs; i++)
+ {
+ if (chdir ("..") < 0)
+ break;
+ if (rmdir (DIR_NAME) != 0)
+ break;
+ }
+ }
+
+ exit (fail);
+#endif
+}
+ ]])],
+ [gl_cv_func_getcwd_path_max=yes],
+ [case $? in
+ 10|11|12) gl_cv_func_getcwd_path_max='no, but it is partly working';;
+ 31) gl_cv_func_getcwd_path_max='no, it has the AIX bug';;
+ 32) gl_cv_func_getcwd_path_max='yes, but with shorter paths';;
+ *) gl_cv_func_getcwd_path_max=no;;
+ esac],
+ [# Cross-compilation guesses:
+ case "$host_os" in
+ aix*) # On AIX, it has the AIX bug.
+ gl_cv_func_getcwd_path_max='guessing no, it has the AIX bug' ;;
+ gnu*) # On Hurd, it is 'yes'.
+ gl_cv_func_getcwd_path_max='guessing yes' ;;
+ linux* | kfreebsd*)
+ # On older Linux+glibc it's 'no, but it is partly working',
+ # on newer Linux+glibc it's 'yes'.
+ # On Linux+musl libc, it's 'no, but it is partly working'.
+ # On kFreeBSD+glibc, it's 'no, but it is partly working'.
+ gl_cv_func_getcwd_path_max='guessing no, but it is partly working' ;;
+ *) # If we don't know, obey --enable-cross-guesses.
+ gl_cv_func_getcwd_path_max="$gl_cross_guess_normal" ;;
+ esac
+ ])
+ ])
+])
diff --git a/gnulib-m4/getcwd.m4 b/gnulib-m4/getcwd.m4
index 076ca314..46f46a2f 100644
--- a/gnulib-m4/getcwd.m4
+++ b/gnulib-m4/getcwd.m4
@@ -1,12 +1,13 @@
-# getcwd.m4 - check for working getcwd that is compatible with glibc
-
-# Copyright (C) 2001, 2003-2007, 2009-2022 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.
+# getcwd.m4
+# serial 22
+dnl Copyright (C) 2001, 2003-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.
# Written by Paul Eggert.
-# serial 19
+
+# Check for working getcwd that is compatible with glibc
AC_DEFUN([gl_FUNC_GETCWD_NULL],
[
@@ -21,11 +22,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 +51,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 +114,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..aaefe9b2 100644
--- a/gnulib-m4/getdtablesize.m4
+++ b/gnulib-m4/getdtablesize.m4
@@ -1,5 +1,6 @@
-# getdtablesize.m4 serial 8
-dnl Copyright (C) 2008-2022 Free Software Foundation, Inc.
+# getdtablesize.m4
+# serial 8
+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
deleted file mode 100644
index 19f894ca..00000000
--- a/gnulib-m4/getpagesize.m4
+++ /dev/null
@@ -1,49 +0,0 @@
-# getpagesize.m4 serial 10
-dnl Copyright (C) 2002, 2004-2005, 2007, 2009-2022 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,
-dnl with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([gl_FUNC_GETPAGESIZE],
-[
- AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
- AC_REQUIRE([AC_CANONICAL_HOST])
- gl_CHECK_FUNC_GETPAGESIZE
- if test $gl_cv_func_getpagesize = no; then
- HAVE_GETPAGESIZE=0
- AC_CHECK_HEADERS([OS.h])
- if test $ac_cv_header_OS_h = yes; then
- HAVE_OS_H=1
- fi
- AC_CHECK_HEADERS([sys/param.h])
- if test $ac_cv_header_sys_param_h = yes; then
- HAVE_SYS_PARAM_H=1
- fi
- fi
- case "$host_os" in
- mingw*)
- REPLACE_GETPAGESIZE=1
- ;;
- esac
- dnl Also check whether it's declared.
- dnl mingw has getpagesize() in libgcc.a but doesn't declare it.
- AC_CHECK_DECL([getpagesize], , [HAVE_DECL_GETPAGESIZE=0])
-])
-
-dnl Tests whether the function getpagesize() exists.
-dnl Sets gl_cv_func_getpagesize.
-AC_DEFUN([gl_CHECK_FUNC_GETPAGESIZE],
-[
- dnl We can't use AC_CHECK_FUNC here, because getpagesize() is defined as a
- dnl static inline function when compiling for Android 4.4 or older.
- AC_CACHE_CHECK([for getpagesize], [gl_cv_func_getpagesize],
- [AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <unistd.h>]],
- [[return getpagesize();]])
- ],
- [gl_cv_func_getpagesize=yes],
- [gl_cv_func_getpagesize=no])
- ])
-])
diff --git a/gnulib-m4/getprogname.m4 b/gnulib-m4/getprogname.m4
index b26146e9..b24f4480 100644
--- a/gnulib-m4/getprogname.m4
+++ b/gnulib-m4/getprogname.m4
@@ -1,16 +1,33 @@
-# getprogname.m4 - check for getprogname or replacements for it
+# getprogname.m4
+# serial 8
+dnl Copyright (C) 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.
-# Copyright (C) 2016-2022 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
+# Check for getprogname or replacements for it
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..8135f89e 100644
--- a/gnulib-m4/gettimeofday.m4
+++ b/gnulib-m4/gettimeofday.m4
@@ -1,9 +1,9 @@
-# serial 29
-
-# Copyright (C) 2001-2003, 2005, 2007, 2009-2022 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.
+# gettimeofday.m4
+# serial 30
+dnl Copyright (C) 2001-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.
dnl From Jim Meyering.
@@ -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..5cac436c 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
@@ -27,7 +27,8 @@
# Specification in the form of a command-line invocation:
-# gnulib-tool --import --local-dir=gnulib-local \
+# gnulib-tool --import \
+# --local-dir=gnulib-local \
# --lib=libunistring \
# --source-base=lib \
# --m4-base=gnulib-m4 \
@@ -40,6 +41,7 @@
# --no-conditional-dependencies \
# --libtool \
# --macro-prefix=gl \
+# gitlog-to-changelog \
# relocatable-lib-lgpl \
# unicase/base \
# unicase/empty-prefix-context \
@@ -143,6 +145,7 @@
# unictype/ctype-xdigit \
# unictype/decimal-digit \
# unictype/digit \
+# unictype/incb-all \
# unictype/joininggroup-all \
# unictype/joiningtype-all \
# unictype/mirror \
@@ -176,6 +179,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 +278,7 @@
# unistr/u16-mbtoucr \
# unistr/u16-move \
# unistr/u16-next \
+# unistr/u16-pcpy \
# unistr/u16-prev \
# unistr/u16-set \
# unistr/u16-startswith \
@@ -314,6 +320,7 @@
# unistr/u32-mbtoucr \
# unistr/u32-move \
# unistr/u32-next \
+# unistr/u32-pcpy \
# unistr/u32-prev \
# unistr/u32-set \
# unistr/u32-startswith \
@@ -355,6 +362,7 @@
# unistr/u8-mbtoucr \
# unistr/u8-move \
# unistr/u8-next \
+# unistr/u8-pcpy \
# unistr/u8-prev \
# unistr/u8-set \
# unistr/u8-startswith \
@@ -401,6 +409,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 +513,7 @@ gl_MODULES([
unictype/ctype-xdigit
unictype/decimal-digit
unictype/digit
+ unictype/incb-all
unictype/joininggroup-all
unictype/joiningtype-all
unictype/mirror
@@ -537,6 +547,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 +646,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 +688,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 +730,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..1fec5c5c 100644
--- a/gnulib-m4/gnulib-common.m4
+++ b/gnulib-m4/gnulib-common.m4
@@ -1,5 +1,6 @@
-# gnulib-common.m4 serial 74
-dnl Copyright (C) 2007-2022 Free Software Foundation, Inc.
+# gnulib-common.m4
+# serial 105
+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,11 +16,27 @@ 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__
+[/* True if the compiler says it groks GNU C version MAJOR.MINOR.
+ Except that
+ - clang groks GNU C 4.2, even on Windows, where it does not define
+ __GNUC__.
+ - The OpenMandriva-modified clang compiler pretends that it groks
+ GNU C version 13.1, but it doesn't: It does not support
+ __attribute__ ((__malloc__ (f, i))), nor does it support
+ __attribute__ ((__warning__ (message))) on a function redeclaration.
+ - Users can make clang lie as well, through the -fgnuc-version option. */
+#if defined __GNUC__ && defined __GNUC_MINOR__ && !defined __clang__
# define _GL_GNUC_PREREQ(major, minor) \
((major) < __GNUC__ + ((minor) <= __GNUC_MINOR__))
+#elif defined __clang__
+ /* clang really only groks GNU C 4.2. */
+# define _GL_GNUC_PREREQ(major, minor) \
+ ((major) < 4 + ((minor) <= 2))
#else
# define _GL_GNUC_PREREQ(major, minor) 0
#endif
@@ -38,6 +55,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 +89,263 @@ 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_reproducible 0 /* not yet supported, as of GCC 14 */
+# define _GL_ATTR_returns_nonnull _GL_GNUC_PREREQ (4, 9)
+# define _GL_ATTR_sentinel _GL_GNUC_PREREQ (4, 0)
+# define _GL_ATTR_unsequenced 0 /* not yet supported, as of GCC 14 */
+# 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"
+/* 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_HAVE___HAS_C_ATTRIBUTE 0
+#endif
+
+/* Attributes in bracket syntax [[...]] vs. attributes in __attribute__((...))
+ syntax, in function declarations. There are two problems here.
+ (Last tested with gcc/g++ 14 and clang/clang++ 18.)
+
+ 1) We want that the _GL_ATTRIBUTE_* can be cumulated on the same declaration
+ in any order.
+ =========================== foo.c = foo.cc ===========================
+ __attribute__ ((__deprecated__)) [[__nodiscard__]] int bar1 (int);
+ [[__nodiscard__]] __attribute__ ((__deprecated__)) int bar2 (int);
+ ======================================================================
+ This gives a syntax error
+ - in C mode with gcc
+ <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108796>, and
+ - in C++ mode with clang++ version < 16, and
+ - in C++ mode, inside extern "C" {}, still in newer clang++ versions
+ <https://github.com/llvm/llvm-project/issues/101990>.
+ */
+/* 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
-# define _GL_HAS_C_ATTRIBUTE(attr) __has_c_attribute (__##attr##__)
#else
-# define _GL_HAS_C_ATTRIBUTE(attr) 0
+# if defined __GNUC__ && !defined __clang__
+# define _GL_BRACKET_BEFORE_ATTRIBUTE 1
+# endif
#endif
+/*
+ 2) We want that the _GL_ATTRIBUTE_* can be placed in a declaration
+ - without 'extern', in C as well as in C++,
+ - with 'extern', in C,
+ - with 'extern "C"', in C++
+ in the same position. That is, we don't want to be forced to use a
+ macro which arranges for the attribute to come before 'extern' in
+ one case and after 'extern' in the other case, because such a macro
+ would make the source code of .h files pretty ugly.
+ =========================== foo.c = foo.cc ===========================
+ #ifdef __cplusplus
+ # define CC "C"
+ #else
+ # define CC
+ #endif
+
+ #define ND [[__nodiscard__]]
+ #define WUR __attribute__((__warn_unused_result__))
+
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ // gcc clang g++ clang++
+
+ ND int foo (int);
+ int ND foo (int); // warn error warn error
+ int foo ND (int);
+ int foo (int) ND; // warn error warn error
+
+ WUR int foo (int);
+ int WUR foo (int);
+ int fo1 WUR (int); // error error error error
+ int foo (int) WUR;
+
+ #ifdef __cplusplus
+ }
+ #endif
+
+ // gcc clang g++ clang++
+
+ ND extern CC int foo (int); // error error
+ extern CC ND int foo (int); // error error
+ extern CC int ND foo (int); // warn error warn error
+ extern CC int foo ND (int);
+ extern CC int foo (int) ND; // warn error warn error
+
+ WUR extern CC int foo (int); // warn
+ extern CC WUR int foo (int);
+ extern CC int WUR foo (int);
+ extern CC int foo WUR (int); // error error error error
+ extern CC int foo (int) WUR;
+
+ ND EXTERN_C_FUNC int foo (int); // error error
+ EXTERN_C_FUNC ND int foo (int);
+ EXTERN_C_FUNC int ND foo (int); // warn error warn error
+ EXTERN_C_FUNC int foo ND (int);
+ EXTERN_C_FUNC int foo (int) ND; // warn error warn error
+ WUR EXTERN_C_FUNC int foo (int); // warn
+ EXTERN_C_FUNC WUR int foo (int);
+ EXTERN_C_FUNC int WUR foo (int);
+ EXTERN_C_FUNC int fo2 WUR (int); // error error error error
+ EXTERN_C_FUNC int foo (int) WUR;
+ ======================================================================
+ So, if we insist on using the 'extern' keyword ('extern CC' idiom):
+ * If _GL_ATTRIBUTE_* expands to bracket syntax [[...]]
+ in both C and C++, there is one available position:
+ - between the function name and the parameter list.
+ * If _GL_ATTRIBUTE_* expands to __attribute__((...)) syntax
+ in both C and C++, there are several available positions:
+ - before the return type,
+ - between return type and function name,
+ - at the end of the declaration.
+ * If _GL_ATTRIBUTE_* expands to bracket syntax [[...]] in C and to
+ __attribute__((...)) syntax in C++, there is no available position:
+ it would need to come before 'extern' in C but after 'extern "C"'
+ in C++.
+ * If _GL_ATTRIBUTE_* expands to __attribute__((...)) syntax in C and
+ to bracket syntax [[...]] in C++, there is one available position:
+ - before the return type.
+ Whereas, if we use the 'EXTERN_C_FUNC' idiom, which conditionally
+ omits the 'extern' keyword:
+ * If _GL_ATTRIBUTE_* expands to bracket syntax [[...]]
+ in both C and C++, there are two available positions:
+ - before the return type,
+ - between the function name and the parameter list.
+ * If _GL_ATTRIBUTE_* expands to __attribute__((...)) syntax
+ in both C and C++, there are several available positions:
+ - before the return type,
+ - between return type and function name,
+ - at the end of the declaration.
+ * If _GL_ATTRIBUTE_* expands to bracket syntax [[...]] in C and to
+ __attribute__((...)) syntax in C++, there is one available position:
+ - before the return type.
+ * If _GL_ATTRIBUTE_* expands to __attribute__((...)) syntax in C and
+ to bracket syntax [[...]] in C++, there is one available position:
+ - before the return type.
+ The best choice is therefore to use the 'EXTERN_C_FUNC' idiom and
+ put the attributes before the return type. This works regardless
+ to what the _GL_ATTRIBUTE_* macros expand.
+ */
+
+/* Attributes in bracket syntax [[...]] vs. attributes in __attribute__((...))
+ syntax, in static/inline function definitions.
+
+ There are similar constraints as for function declarations. However, here,
+ we cannot omit the storage-class specifier. Therefore, the following rule
+ applies:
+ * The macros
+ _GL_ATTRIBUTE_CONST
+ _GL_ATTRIBUTE_DEPRECATED
+ _GL_ATTRIBUTE_MAYBE_UNUSED
+ _GL_ATTRIBUTE_NODISCARD
+ _GL_ATTRIBUTE_PURE
+ _GL_ATTRIBUTE_REPRODUCIBLE
+ _GL_ATTRIBUTE_UNSEQUENCED
+ which may expand to bracket syntax [[...]], must come first, before the
+ storage-class specifier.
+ * Other _GL_ATTRIBUTE_* macros, that expand to __attribute__((...)) syntax,
+ are better placed between the storage-class specifier and the return
+ type.
+ */
+
+/* Attributes in bracket syntax [[...]] vs. attributes in __attribute__((...))
+ syntax, in variable declarations.
+
+ At which position can they be placed?
+ (Last tested with gcc/g++ 14 and clang/clang++ 18.)
+
+ =========================== foo.c = foo.cc ===========================
+ #ifdef __cplusplus
+ # define CC "C"
+ #else
+ # define CC
+ #endif
+
+ #define BD [[__deprecated__]]
+ #define AD __attribute__ ((__deprecated__))
+
+ // gcc clang g++ clang++
+
+ BD extern CC int var; // error error
+ extern CC BD int var; // error error
+ extern CC int BD var; // warn error warn error
+ extern CC int var BD;
+
+ AD extern CC int var; // warn
+ extern CC AD int var;
+ extern CC int AD var;
+ extern CC int var AD;
+
+ BD extern CC int z[]; // error error
+ extern CC BD int z[]; // error error
+ extern CC int BD z[]; // warn error warn error
+ extern CC int z1 BD [];
+ extern CC int z[] BD; // warn error error
+
+ AD extern CC int z[]; // warn
+ extern CC AD int z[];
+ extern CC int AD z[];
+ extern CC int z2 AD []; // error error error error
+ extern CC int z[] AD;
+ ======================================================================
+
+ * For non-array variables, the only good position is after the variable name,
+ that is, at the end of the declaration.
+ * For array variables, you will need to distinguish C and C++:
+ - In C, before the 'extern' keyword.
+ - In C++, between the 'extern "C"' and the variable's type.
+ */
]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
@@ -122,30 +353,36 @@ AC_DEFUN([gl_COMMON_BODY], [
_GL_ATTRIBUTE_ALLOC_SIZE ((M, N)) declares that the Mth argument multiplied
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)
+/* Applies to: functions, pointer to functions, function types. */
+#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
+/* Applies to: functions. */
+#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
+/* Applies to: functions. */
+#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,27 +390,36 @@ 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
- calls to the function with the same arguments.
- This attribute is safe for a function that neither depends on nor affects
- observable state, and always returns exactly once - e.g., does not loop
- forever, and does not call longjmp.
- (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */
+/* _GL_ATTRIBUTE_CONST declares:
+ It is OK for a compiler to move calls to the function and to omit
+ calls to the function if another call has the same arguments or the
+ result is not used.
+ This attribute is safe for a function that neither depends on
+ nor affects state, and always returns exactly once -
+ e.g., does not raise an exception, call longjmp, or loop forever.
+ (This attribute is stricter than _GL_ATTRIBUTE_PURE because the
+ function cannot observe state. It is stricter than
+ _GL_ATTRIBUTE_UNSEQUENCED because the function must return exactly
+ once and cannot depend on state addressed by its arguments.) */
/* 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 _GL_ATTRIBUTE_UNSEQUENCED
+# endif
#endif
/* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers
@@ -182,16 +428,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 +457,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 +478,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 +507,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 +532,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 +545,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 +569,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 +586,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 +617,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 +658,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 +683,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,32 +711,71 @@ 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
+/* Oracle Studio 12.6 miscompiles code with __attribute__ ((__packed__)) despite
+ __has_attribute OK. */
+# if _GL_HAS_ATTRIBUTE (packed) && !defined __SUNPRO_C
+# 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
- calls to the function with the same arguments if observable state is not
- changed between calls.
- This attribute is safe for a function that does not affect
- observable state, and always returns exactly once.
- (This attribute is looser than _GL_ATTRIBUTE_CONST.) */
+/* _GL_ATTRIBUTE_PURE declares:
+ It is OK for a compiler to move calls to the function and to omit
+ calls to the function if another call has the same arguments or the
+ result is not used, and if observable state is the same.
+ This attribute is safe for a function that does not affect observable state
+ and always returns exactly once.
+ (This attribute is looser than _GL_ATTRIBUTE_CONST because the function
+ can depend on observable state. It is stricter than
+ _GL_ATTRIBUTE_REPRODUCIBLE because the function must return exactly
+ once and cannot affect state addressed by its arguments.) */
/* 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 _GL_ATTRIBUTE_REPRODUCIBLE
+# endif
+#endif
+
+/* _GL_ATTRIBUTE_REPRODUCIBLE declares:
+ It is OK for a compiler to move calls to the function and to omit duplicate
+ calls to the function with the same arguments, so long as the state
+ addressed by its arguments is the same and is updated in time for
+ the rest of the program.
+ This attribute is safe for a function that is effectless and idempotent; see
+ ISO C 23 § 6.7.12.7 for a definition of these terms.
+ (This attribute is looser than _GL_ATTRIBUTE_UNSEQUENCED because
+ the function need not be stateless and idempotent. It is looser
+ than _GL_ATTRIBUTE_PURE because the function need not return
+ exactly once and can affect state addressed by its arguments.)
+ See also <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2956.htm> and
+ <https://stackoverflow.com/questions/76847905/>. */
+/* Applies to: functions, pointer to functions, function types. */
+#ifndef _GL_ATTRIBUTE_REPRODUCIBLE
+/* This may be revisited when gcc and clang support [[reproducible]] or possibly
+ __attribute__ ((__reproducible__)). */
+# ifndef _GL_BRACKET_BEFORE_ATTRIBUTE
+# if _GL_HAS_ATTRIBUTE (reproducible)
+# define _GL_ATTRIBUTE_REPRODUCIBLE [[reproducible]]
+# endif
+# endif
+# ifndef _GL_ATTRIBUTE_REPRODUCIBLE
+# define _GL_ATTRIBUTE_REPRODUCIBLE
+# 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 +783,48 @@ 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
+
+/* _GL_ATTRIBUTE_UNSEQUENCED declares:
+ It is OK for a compiler to move calls to the function and to omit duplicate
+ calls to the function with the same arguments, so long as the state
+ addressed by its arguments is the same.
+ This attribute is safe for a function that is effectless, idempotent,
+ stateless, and independent; see ISO C 23 § 6.7.12.7 for a definition of
+ these terms.
+ (This attribute is stricter than _GL_ATTRIBUTE_REPRODUCIBLE because
+ the function must be stateless and independent. It is looser than
+ _GL_ATTRIBUTE_CONST because the function need not return exactly
+ once and can depend on state addressed by its arguments.)
+ See also <https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2956.htm> and
+ <https://stackoverflow.com/questions/76847905/>. */
+/* Applies to: functions, pointer to functions, function types. */
+#ifndef _GL_ATTRIBUTE_UNSEQUENCED
+/* This may be revisited when gcc and clang support [[unsequenced]] or possibly
+ __attribute__ ((__unsequenced__)). */
+# ifndef _GL_BRACKET_BEFORE_ATTRIBUTE
+# if _GL_HAS_ATTRIBUTE (unsequenced)
+# define _GL_ATTRIBUTE_UNSEQUENCED [[unsequenced]]
+# endif
+# endif
+# ifndef _GL_ATTRIBUTE_UNSEQUENCED
+# define _GL_ATTRIBUTE_UNSEQUENCED
+# 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 +835,53 @@ 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
+
+/* The following attributes enable detection of multithread-safety problems
+ and resource leaks at compile-time, by clang ≥ 15, when the warning option
+ -Wthread-safety is enabled. For usage, see
+ <https://clang.llvm.org/docs/ThreadSafetyAnalysis.html>. */
+#ifndef _GL_ATTRIBUTE_CAPABILITY_TYPE
+# if __clang_major__ >= 15
+# define _GL_ATTRIBUTE_CAPABILITY_TYPE(concept) \
+ __attribute__ ((__capability__ (concept)))
+#else
+# define _GL_ATTRIBUTE_CAPABILITY_TYPE(concept)
+# endif
+#endif
+#ifndef _GL_ATTRIBUTE_ACQUIRE_CAPABILITY
+# if __clang_major__ >= 15
+# define _GL_ATTRIBUTE_ACQUIRE_CAPABILITY(resource) \
+ __attribute__ ((__acquire_capability__ (resource)))
+# else
+# define _GL_ATTRIBUTE_ACQUIRE_CAPABILITY(resource)
+# endif
+#endif
+#ifndef _GL_ATTRIBUTE_RELEASE_CAPABILITY
+# if __clang_major__ >= 15
+# define _GL_ATTRIBUTE_RELEASE_CAPABILITY(resource) \
+ __attribute__ ((__release_capability__ (resource)))
+# else
+# define _GL_ATTRIBUTE_RELEASE_CAPABILITY(resource)
+# 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 +939,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,14 +1376,16 @@ 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
+ dnl -Wno-unused-const-variable >= 4.4 >= 3.9
dnl -Wno-unused-function >= 3 >= 3.9
dnl -Wno-unused-parameter >= 3 >= 3.9
dnl
cat > conftest.c <<\EOF
- #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3)
+ #if (__GNUC__ >= 3 && !defined __clang__) || (__clang_major__ + (__clang_minor__ >= 9) > 3)
-Wno-cast-qual
-Wno-conversion
-Wno-float-equal
@@ -946,20 +1394,26 @@ AC_DEFUN([gl_CC_GNULIB_WARNINGS],
-Wno-unused-function
-Wno-unused-parameter
#endif
- #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3)
+ #if (__GNUC__ + (__GNUC_MINOR__ >= 9) > 4 && !defined __clang__) || (__clang_major__ + (__clang_minor__ >= 9) > 3)
-Wno-float-conversion
#endif
- #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3)
+ #if (__GNUC__ >= 7 && !defined __clang__) || (__clang_major__ + (__clang_minor__ >= 9) > 3)
-Wimplicit-fallthrough
#endif
- #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3)
+ #if (__GNUC__ + (__GNUC_MINOR__ >= 8) > 4 && !defined __clang__) || (__clang_major__ + (__clang_minor__ >= 9) > 3)
-Wno-pedantic
#endif
- #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3)
+ #if 3 < __clang_major__ + (9 <= __clang_minor__)
+ -Wno-tautological-constant-out-of-range-compare
+ #endif
+ #if (__GNUC__ + (__GNUC_MINOR__ >= 3) > 4 && !defined __clang__) || (__clang_major__ + (__clang_minor__ >= 9) > 3)
-Wno-sign-conversion
-Wno-type-limits
#endif
- #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4
+ #if (__GNUC__ + (__GNUC_MINOR__ >= 4) > 4 && !defined __clang__) || (__clang_major__ + (__clang_minor__ >= 9) > 3)
+ -Wno-unused-const-variable
+ #endif
+ #if (__GNUC__ + (__GNUC_MINOR__ >= 5) > 4 && !defined __clang__)
-Wno-unsuffixed-float-constants
#endif
EOF
@@ -1005,6 +1459,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..1fa89b27 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:
@@ -55,12 +57,16 @@ AC_DEFUN([gl_EARLY],
# Code from module array-mergesort-tests:
# Code from module assert-h:
# Code from module assert-h-tests:
+ # Code from module assure:
+ # Code from module at-internal:
# Code from module attribute:
# Code from module basename-lgpl:
# Code from module binary-io:
# 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,19 +75,62 @@ 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:
# Code from module calloc-posix:
+ # Code from module chdir:
+ # Code from module chdir-long:
+ # Code from module chdir-tests:
# Code from module cloexec:
# Code from module cloexec-tests:
# Code from module close:
# Code from module close-tests:
+ # Code from module closedir:
+ # Code from module concat-filename:
# Code from module connect:
# Code from module connect-tests:
# Code from module ctype:
# Code from module ctype-tests:
+ # Code from module d-ino:
+ # Code from module dirent:
+ # Code from module dirent-tests:
+ # Code from module dirfd:
+ # Code from module dirfd-tests:
# Code from module double-slash-root:
+ # Code from module dup:
+ # Code from module dup-tests:
# Code from module dup2:
# Code from module dup2-tests:
# Code from module environ:
@@ -89,18 +138,30 @@ 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:
+ # This is actually already done in the pre-early phase.
+ # AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ # Code from module extensions-aix:
+ AC_REQUIRE([gl_USE_AIX_EXTENSIONS])
# Code from module extern-inline:
+ # Code from module fchdir:
+ # Code from module fchdir-tests:
# Code from module fcntl:
# Code from module fcntl-h:
# Code from module fcntl-h-tests:
# Code from module fcntl-tests:
# Code from module fd-hook:
+ # Code from module fd-safer-flag:
# Code from module fdopen:
# Code from module fdopen-tests:
+ # Code from module fdopendir:
+ # Code from module fdopendir-tests:
# Code from module fgetc-tests:
# Code from module filename:
+ # Code from module filenamecat-lgpl:
# Code from module flexmember:
# Code from module float:
# Code from module float-tests:
@@ -119,20 +180,24 @@ AC_DEFUN([gl_EARLY],
# Code from module fseterr-tests:
# Code from module fstat:
# Code from module fstat-tests:
+ # Code from module fstatat:
+ # Code from module fstatat-tests:
# Code from module ftruncate:
# Code from module ftruncate-tests:
# Code from module fwrite-tests:
# Code from module gen-header:
+ # Code from module getcwd:
# Code from module getcwd-lgpl:
# Code from module getcwd-lgpl-tests:
+ # Code from module getcwd-tests:
# Code from module getdtablesize:
# Code from module getdtablesize-tests:
- # Code from module getpagesize:
# Code from module getprogname:
# Code from module getprogname-tests:
# 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 +234,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 +254,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,27 +268,43 @@ 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 mbsnlen-tests:
+ # Code from module mbszero:
# Code from module mbtowc:
# Code from module memchr:
# Code from module memchr-tests:
# Code from module memcmp2:
+ # Code from module mempcpy:
+ # Code from module memrchr:
+ # Code from module memrchr-tests:
# Code from module minmax:
+ # Code from module mixin/printf-posix:
# 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:
# Code from module netinet_in-tests:
# Code from module nocrash:
+ # Code from module once:
+ # Code from module once-tests:
# Code from module open:
# Code from module open-tests:
+ # Code from module openat:
+ # Code from module openat-die:
+ # Code from module openat-h:
+ # Code from module openat-tests:
+ # Code from module opendir:
# Code from module pathmax:
# Code from module pathmax-tests:
# Code from module perror:
@@ -232,23 +318,40 @@ AC_DEFUN([gl_EARLY],
# Code from module printf-safe:
# Code from module pselect:
# Code from module pselect-tests:
+ # Code from module pthread-cond:
+ # Code from module pthread-cond-tests:
# Code from module pthread-h:
gl_ANYTHREADLIB_EARLY
# Code from module pthread-h-tests:
+ # Code from module pthread-mutex:
+ # Code from module pthread-mutex-tests:
+ # Code from module pthread-once:
+ # Code from module pthread-once-tests:
+ # Code from module pthread-rwlock:
+ # Code from module pthread-rwlock-tests:
# Code from module pthread-thread:
# Code from module pthread-thread-tests:
+ # Code from module pthread_mutex_timedlock:
# Code from module pthread_sigmask:
# Code from module pthread_sigmask-tests:
- # Code from module putenv:
+ # Code from module putenv-gnu:
+ # Code from module putenv-gnu-tests:
# 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 readdir:
# Code from module realloc-gnu:
# Code from module realloc-gnu-tests:
# Code from module realloc-posix:
# Code from module reallocarray:
# Code from module reallocarray-tests:
# Code from module relocatable-lib-lgpl:
+ # Code from module rewinddir:
# Code from module same-inode:
+ # Code from module save-cwd:
# Code from module sched:
# Code from module sched-tests:
# Code from module sched_yield:
@@ -259,6 +362,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 +371,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 +394,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,9 +403,12 @@ 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:
+ # Code from module stpcpy:
+ # Code from module strdup-posix:
# Code from module streq:
# Code from module strerror:
# Code from module strerror-override:
@@ -330,18 +439,24 @@ AC_DEFUN([gl_EARLY],
# Code from module sys_time:
# Code from module sys_time-tests:
# Code from module sys_types:
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
# Code from module sys_types-tests:
# Code from module sys_uio:
# Code from module sys_uio-tests:
# Code from module test-framework-sh:
# Code from module test-framework-sh-tests:
+ # Code from module test-xfail:
# Code from module thread:
# Code from module thread-optim:
# Code from module thread-tests:
# 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 +755,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 +879,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 +893,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:
@@ -783,6 +911,8 @@ AC_DEFUN([gl_EARLY],
# Code from module unictype/property-lowercase-tests:
# Code from module unictype/property-math:
# Code from module unictype/property-math-tests:
+ # Code from module unictype/property-modifier-combining-mark:
+ # Code from module unictype/property-modifier-combining-mark-tests:
# Code from module unictype/property-non-break:
# Code from module unictype/property-non-break-tests:
# Code from module unictype/property-not-a-character:
@@ -813,6 +943,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 +1040,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:
@@ -953,6 +1088,8 @@ AC_DEFUN([gl_EARLY],
# Code from module uninorm/u8-normcoll-tests:
# Code from module uninorm/u8-normxfrm:
# Code from module unistd:
+ # Code from module unistd-safer:
+ # Code from module unistd-safer-tests:
# Code from module unistd-tests:
# Code from module unistdio/base:
# Code from module unistdio/u-printf-args:
@@ -1066,6 +1203,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 +1281,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 +1359,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:
@@ -1311,16 +1454,26 @@ AC_DEFUN([gl_EARLY],
# Code from module wctype-h-tests:
# Code from module wcwidth:
# Code from module wcwidth-tests:
+ # Code from module windows-cond:
# Code from module windows-mutex:
+ # Code from module windows-mutex-tests:
# Code from module windows-once:
# Code from module windows-recmutex:
+ # Code from module windows-recmutex-tests:
# Code from module windows-rwlock:
# Code from module windows-thread:
+ # Code from module windows-timedmutex:
+ # Code from module windows-timedmutex-tests:
+ # Code from module windows-timedrecmutex:
+ # Code from module windows-timedrecmutex-tests:
+ # Code from module windows-timedrwlock:
# Code from module windows-tls:
# Code from module xalloc:
# Code from module xalloc-die:
# Code from module xalloc-die-tests:
# Code from module xalloc-oversized:
+ # Code from module xconcat-filename:
+ # Code from module xgetcwd:
# Code from module xsize:
# Code from module yield:
])
@@ -1351,6 +1504,104 @@ 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])
+ AC_REQUIRE([gl_C32RTOMB_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])
+ AC_REQUIRE([gl_C32RTOMB_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])
+ AC_REQUIRE([gl_C32RTOMB_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])
+ AC_REQUIRE([gl_C32RTOMB_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])
+ AC_REQUIRE([gl_C32RTOMB_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])
+ AC_REQUIRE([gl_C32RTOMB_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])
+ AC_REQUIRE([gl_C32RTOMB_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])
+ AC_REQUIRE([gl_C32RTOMB_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])
+ AC_REQUIRE([gl_C32RTOMB_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])
+ AC_REQUIRE([gl_C32RTOMB_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])
+ AC_REQUIRE([gl_C32RTOMB_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])
+ AC_REQUIRE([gl_C32RTOMB_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])
+ AC_REQUIRE([gl_C32RTOMB_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])
+ AC_REQUIRE([gl_C32RTOMB_SANITYCHECK])
+ gl_UCHAR_MODULE_INDICATOR([c32width])
gl_HEADER_ERRNO_H
gl_CONDITIONAL_HEADER([errno.h])
AC_PROG_MKDIR_P
@@ -1359,8 +1610,11 @@ AC_DEFUN([gl_INIT],
gl_FLOAT_H
gl_CONDITIONAL_HEADER([float.h])
AC_PROG_MKDIR_P
- gl_CONDITIONAL([GL_COND_OBJ_FLOAT], [test $REPLACE_FLOAT_LDBL = 1])
+ gl_CONDITIONAL([GL_COND_OBJ_FLOAT],
+ [test $REPLACE_FLOAT_LDBL = 1 || test $REPLACE_FLOAT_SNAN = 1])
gl_CONDITIONAL([GL_COND_OBJ_ITOLD], [test $REPLACE_ITOLD = 1])
+ dnl Prerequisites of lib/float.c.
+ AC_REQUIRE([gl_BIGENDIAN])
gl_FUNC_FREE
gl_CONDITIONAL([GL_COND_OBJ_FREE], [test $REPLACE_FREE = 1])
AM_COND_IF([GL_COND_OBJ_FREE], [
@@ -1380,7 +1634,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 +1679,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 +1700,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 +1720,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 +1752,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], [
@@ -1481,14 +1763,26 @@ AC_DEFUN([gl_INIT],
])
gl_STRING_MODULE_INDICATOR([memchr])
gl_MINMAX
+ # Conditionally invoke gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS.
gl_MULTIARCH
+ gl_ONCE
gl_FUNC_PRINTF_FREXP
gl_FUNC_PRINTF_FREXPL
m4_divert_text([INIT_PREPARE], [gl_printf_safe=yes])
+ gl_PTHREAD_H
+ gl_PTHREAD_H_REQUIRE_DEFAULTS
+ AC_PROG_MKDIR_P
+ gl_PTHREAD_ONCE
+ gl_CONDITIONAL([GL_COND_OBJ_PTHREAD_ONCE],
+ [test $HAVE_PTHREAD_ONCE = 0 || test $REPLACE_PTHREAD_ONCE = 1])
+ gl_PTHREAD_MODULE_INDICATOR([pthread-once])
gl_RELOCATABLE_LIBRARY
if test $RELOCATABLE = yes; then
AC_LIBOBJ([relocatable])
fi
+ gl_SCHED_H
+ gl_SCHED_H_REQUIRE_DEFAULTS
+ AC_PROG_MKDIR_P
gl_FUNC_SETLOCALE_NULL
gl_CONDITIONAL([GL_COND_OBJ_SETLOCALE_LOCK],
[test $SETLOCALE_NULL_ALL_MTSAFE = 0 || test $SETLOCALE_NULL_ONE_MTSAFE = 0])
@@ -1549,74 +1843,84 @@ 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_TIME_H
+ gl_TIME_H_REQUIRE_DEFAULTS
+ AC_PROG_MKDIR_P
+ 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
- gl_LIBUNISTRING_MODULE([0.9.11], [unicase/tolower])
- gl_LIBUNISTRING_MODULE([0.9.11], [unicase/totitle])
- gl_LIBUNISTRING_MODULE([0.9.11], [unicase/toupper])
- gl_LIBUNISTRING_MODULE([1.1], [unicase/u16-casecmp])
- gl_LIBUNISTRING_MODULE([1.1], [unicase/u16-casecoll])
- gl_LIBUNISTRING_MODULE([1.1], [unicase/u16-casefold])
- 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.1], [unicase/u16-ct-toupper])
- gl_LIBUNISTRING_MODULE([1.1], [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.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.1], [unicase/u16-toupper])
- gl_LIBUNISTRING_MODULE([1.1], [unicase/u32-casecmp])
- gl_LIBUNISTRING_MODULE([1.1], [unicase/u32-casecoll])
- gl_LIBUNISTRING_MODULE([1.1], [unicase/u32-casefold])
- 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.1], [unicase/u32-ct-toupper])
- gl_LIBUNISTRING_MODULE([1.1], [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.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.1], [unicase/u32-toupper])
- gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-casecmp])
- gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-casecoll])
- gl_LIBUNISTRING_MODULE([1.1], [unicase/u8-casefold])
- 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.1], [unicase/u8-ct-toupper])
- gl_LIBUNISTRING_MODULE([1.1], [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.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.1], [unicase/u8-toupper])
- gl_LIBUNISTRING_MODULE([1.1], [unicase/ulc-casecmp])
- gl_LIBUNISTRING_MODULE([1.1], [unicase/ulc-casecoll])
- gl_LIBUNISTRING_MODULE([1.1], [unicase/ulc-casexfrm])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/tolower])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/totitle])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/toupper])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u16-casecmp])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u16-casecoll])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u16-casefold])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u16-casexfrm])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u16-ct-casefold])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u16-ct-tolower])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u16-ct-totitle])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u16-ct-toupper])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u16-is-cased])
+ gl_LIBUNISTRING_MODULE([1.2], [unicase/u16-is-casefolded])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u16-is-lowercase])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u16-is-titlecase])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u16-is-uppercase])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u16-prefix-context])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u16-suffix-context])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u16-tolower])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u16-totitle])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u16-toupper])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u32-casecmp])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u32-casecoll])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u32-casefold])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u32-casexfrm])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u32-ct-casefold])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u32-ct-tolower])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u32-ct-totitle])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u32-ct-toupper])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u32-is-cased])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u32-is-casefolded])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u32-is-lowercase])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u32-is-titlecase])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u32-is-uppercase])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u32-prefix-context])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u32-suffix-context])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u32-tolower])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u32-totitle])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u32-toupper])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u8-casecmp])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u8-casecoll])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u8-casefold])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u8-casexfrm])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u8-ct-casefold])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u8-ct-tolower])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u8-ct-totitle])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u8-ct-toupper])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u8-is-cased])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u8-is-casefolded])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u8-is-lowercase])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u8-is-titlecase])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u8-is-uppercase])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u8-prefix-context])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u8-suffix-context])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u8-tolower])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u8-totitle])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/u8-toupper])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/ulc-casecmp])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/ulc-casecoll])
+ gl_LIBUNISTRING_MODULE([1.3], [unicase/ulc-casexfrm])
gl_LIBUNISTRING_LIBHEADER([0.9.11], [uniconv.h])
AC_PROG_MKDIR_P
AC_REQUIRE([gl_BIGENDIAN])
@@ -1640,72 +1944,113 @@ 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.3], [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.3], [unictype/bidiclass-of])
+ gl_LIBUNISTRING_MODULE([1.3], [unictype/bidiclass-test])
+ gl_LIBUNISTRING_MODULE([1.3], [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.3], [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.3], [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.3], [unictype/category-L])
+ gl_UNICTYPE_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [unictype/category-LC])
+ gl_UNICTYPE_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [unictype/category-Ll])
+ gl_UNICTYPE_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [unictype/category-Lm])
+ gl_UNICTYPE_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [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([1.3], [unictype/category-Lu])
+ gl_UNICTYPE_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [unictype/category-M])
+ gl_UNICTYPE_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [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.3], [unictype/category-Mn])
+ gl_UNICTYPE_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [unictype/category-N])
+ gl_UNICTYPE_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [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.3], [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([1.3], [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.3], [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.3], [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([1.3], [unictype/category-Sm])
+ gl_UNICTYPE_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [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.3], [unictype/category-and])
+ gl_LIBUNISTRING_MODULE([1.3], [unictype/category-and-not])
+ gl_LIBUNISTRING_MODULE([1.3], [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.3], [unictype/category-of])
+ gl_LIBUNISTRING_MODULE([1.3], [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])
+ gl_LIBUNISTRING_MODULE([1.3], [unictype/combining-class])
gl_LIBUNISTRING_MODULE([0.9.8], [unictype/combining-class-byname])
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.3], [unictype/ctype-alnum])
AC_REQUIRE([AC_C_INLINE])
- gl_LIBUNISTRING_MODULE([1.1], [unictype/ctype-alpha])
+ gl_LIBUNISTRING_MODULE([1.3], [unictype/ctype-alpha])
AC_REQUIRE([AC_C_INLINE])
gl_LIBUNISTRING_MODULE([0.9.8], [unictype/ctype-blank])
AC_REQUIRE([AC_C_INLINE])
@@ -1713,368 +2058,491 @@ 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.3], [unictype/ctype-graph])
AC_REQUIRE([AC_C_INLINE])
- gl_LIBUNISTRING_MODULE([0.9.11], [unictype/ctype-lower])
+ gl_LIBUNISTRING_MODULE([1.3], [unictype/ctype-lower])
AC_REQUIRE([AC_C_INLINE])
- gl_LIBUNISTRING_MODULE([1.1], [unictype/ctype-print])
+ gl_LIBUNISTRING_MODULE([1.3], [unictype/ctype-print])
AC_REQUIRE([AC_C_INLINE])
- gl_LIBUNISTRING_MODULE([1.1], [unictype/ctype-punct])
+ gl_LIBUNISTRING_MODULE([1.3], [unictype/ctype-punct])
AC_REQUIRE([AC_C_INLINE])
gl_LIBUNISTRING_MODULE([0.9.8], [unictype/ctype-space])
AC_REQUIRE([AC_C_INLINE])
- gl_LIBUNISTRING_MODULE([0.9.11], [unictype/ctype-upper])
+ gl_LIBUNISTRING_MODULE([1.3], [unictype/ctype-upper])
AC_REQUIRE([AC_C_INLINE])
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([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([1.3], [unictype/decimal-digit])
+ gl_LIBUNISTRING_MODULE([1.3], [unictype/digit])
+ gl_LIBUNISTRING_MODULE([1.2], [unictype/incb-byname])
+ gl_LIBUNISTRING_MODULE([1.2], [unictype/incb-name])
+ gl_LIBUNISTRING_MODULE([1.3], [unictype/incb-of])
+ gl_LIBUNISTRING_MODULE([1.3], [unictype/joininggroup-byname])
+ gl_LIBUNISTRING_MODULE([1.3], [unictype/joininggroup-name])
+ gl_LIBUNISTRING_MODULE([1.3], [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.1], [unictype/numeric])
+ gl_LIBUNISTRING_MODULE([1.3], [unictype/joiningtype-of])
+ gl_LIBUNISTRING_MODULE([1.3], [unictype/mirror])
+ gl_LIBUNISTRING_MODULE([1.3], [unictype/numeric])
+ AC_REQUIRE([AC_C_INLINE])
+ gl_UNICTYPE_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [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.3], [unictype/property-bidi-arabic-digit])
AC_REQUIRE([AC_C_INLINE])
- gl_LIBUNISTRING_MODULE([1.1], [unictype/property-alphabetic])
+ gl_UNICTYPE_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [unictype/property-bidi-arabic-right-to-left])
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.3], [unictype/property-bidi-block-separator])
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.3], [unictype/property-bidi-boundary-neutral])
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.3], [unictype/property-bidi-common-separator])
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.3], [unictype/property-bidi-control])
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.3], [unictype/property-bidi-embedding-or-override])
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.3], [unictype/property-bidi-eur-num-separator])
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.3], [unictype/property-bidi-eur-num-terminator])
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.3], [unictype/property-bidi-european-digit])
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.3], [unictype/property-bidi-hebrew-right-to-left])
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.3], [unictype/property-bidi-left-to-right])
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.3], [unictype/property-bidi-non-spacing-mark])
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.3], [unictype/property-bidi-other-neutral])
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.3], [unictype/property-bidi-pdf])
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.3], [unictype/property-bidi-segment-separator])
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.3], [unictype/property-bidi-whitespace])
+ gl_LIBUNISTRING_MODULE([1.3], [unictype/property-byname])
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.3], [unictype/property-case-ignorable])
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.3], [unictype/property-cased])
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.3], [unictype/property-changes-when-casefolded])
AC_REQUIRE([AC_C_INLINE])
- gl_LIBUNISTRING_MODULE([1.1], [unictype/property-case-ignorable])
+ gl_UNICTYPE_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [unictype/property-changes-when-casemapped])
AC_REQUIRE([AC_C_INLINE])
- gl_LIBUNISTRING_MODULE([1.1], [unictype/property-cased])
+ gl_UNICTYPE_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [unictype/property-changes-when-lowercased])
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([1.3], [unictype/property-changes-when-titlecased])
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([1.3], [unictype/property-changes-when-uppercased])
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([1.3], [unictype/property-combining])
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.3], [unictype/property-composite])
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-currency-symbol])
AC_REQUIRE([AC_C_INLINE])
- gl_LIBUNISTRING_MODULE([1.1], [unictype/property-combining])
+ gl_UNICTYPE_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [unictype/property-dash])
AC_REQUIRE([AC_C_INLINE])
- gl_LIBUNISTRING_MODULE([0.9.11], [unictype/property-composite])
+ gl_UNICTYPE_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [unictype/property-decimal-digit])
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([0.9.11], [unictype/property-default-ignorable-code-point])
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.8], [unictype/property-deprecated])
AC_REQUIRE([AC_C_INLINE])
- gl_LIBUNISTRING_MODULE([1.1], [unictype/property-decimal-digit])
+ gl_UNICTYPE_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [unictype/property-diacritic])
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.3], [unictype/property-emoji])
AC_REQUIRE([AC_C_INLINE])
- gl_LIBUNISTRING_MODULE([0.9.8], [unictype/property-deprecated])
+ 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-diacritic])
+ 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([1.1], [unictype/property-emoji])
+ 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-component])
+ gl_UNICTYPE_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [unictype/property-emoji-presentation])
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([0.9.11], [unictype/property-extended-pictographic])
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([1.3], [unictype/property-extender])
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.8], [unictype/property-format-control])
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([1.3], [unictype/property-grapheme-base])
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.3], [unictype/property-grapheme-extend])
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.3], [unictype/property-grapheme-link])
AC_REQUIRE([AC_C_INLINE])
- gl_LIBUNISTRING_MODULE([1.1], [unictype/property-grapheme-base])
+ 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-extend])
+ gl_UNICTYPE_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([0.9.8], [unictype/property-hyphen])
AC_REQUIRE([AC_C_INLINE])
- gl_LIBUNISTRING_MODULE([1.1], [unictype/property-grapheme-link])
+ 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-hex-digit])
+ 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([0.9.8], [unictype/property-hyphen])
+ gl_UNICTYPE_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [unictype/property-id-continue])
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.3], [unictype/property-id-start])
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.3], [unictype/property-ideographic])
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-ids-binary-operator])
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([0.9.8], [unictype/property-ids-trinary-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([1.2], [unictype/property-ids-unary-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.1], [unictype/property-ignorable-control])
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([0.9.8], [unictype/property-iso-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-join-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-left-of-pair])
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-line-separator])
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-logical-order-exception])
AC_REQUIRE([AC_C_INLINE])
- gl_LIBUNISTRING_MODULE([1.1], [unictype/property-lowercase])
+ gl_UNICTYPE_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [unictype/property-lowercase])
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.3], [unictype/property-math])
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([1.3], [unictype/property-modifier-combining-mark])
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.3], [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.3], [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([1.3], [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.3], [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.3], [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.3], [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.3], [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([1.3], [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.3], [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.3], [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.3], [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.3], [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.3], [unigbrk/u16-grapheme-breaks])
gl_MODULE_INDICATOR([unigbrk/u16-grapheme-next])
- gl_LIBUNISTRING_MODULE([1.1], [unigbrk/u16-grapheme-next])
+ gl_LIBUNISTRING_MODULE([1.3], [unigbrk/u16-grapheme-next])
gl_MODULE_INDICATOR([unigbrk/u16-grapheme-prev])
- gl_LIBUNISTRING_MODULE([1.1], [unigbrk/u16-grapheme-prev])
+ gl_LIBUNISTRING_MODULE([1.3], [unigbrk/u16-grapheme-prev])
gl_MODULE_INDICATOR([unigbrk/u32-grapheme-breaks])
- gl_LIBUNISTRING_MODULE([1.1], [unigbrk/u32-grapheme-breaks])
+ gl_LIBUNISTRING_MODULE([1.3], [unigbrk/u32-grapheme-breaks])
gl_MODULE_INDICATOR([unigbrk/u32-grapheme-next])
- gl_LIBUNISTRING_MODULE([1.1], [unigbrk/u32-grapheme-next])
+ gl_LIBUNISTRING_MODULE([1.3], [unigbrk/u32-grapheme-next])
gl_MODULE_INDICATOR([unigbrk/u32-grapheme-prev])
- gl_LIBUNISTRING_MODULE([1.1], [unigbrk/u32-grapheme-prev])
+ gl_LIBUNISTRING_MODULE([1.3], [unigbrk/u32-grapheme-prev])
gl_MODULE_INDICATOR([unigbrk/u8-grapheme-breaks])
- gl_LIBUNISTRING_MODULE([1.1], [unigbrk/u8-grapheme-breaks])
+ gl_LIBUNISTRING_MODULE([1.3], [unigbrk/u8-grapheme-breaks])
gl_MODULE_INDICATOR([unigbrk/u8-grapheme-next])
- gl_LIBUNISTRING_MODULE([1.1], [unigbrk/u8-grapheme-next])
+ gl_LIBUNISTRING_MODULE([1.3], [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_LIBUNISTRING_MODULE([1.3], [unigbrk/u8-grapheme-prev])
+ gl_LIBUNISTRING_MODULE([1.3], [unigbrk/uc-gbrk-prop])
gl_MODULE_INDICATOR([unigbrk/uc-grapheme-breaks])
- gl_LIBUNISTRING_MODULE([1.1], [unigbrk/uc-grapheme-breaks])
- gl_LIBUNISTRING_MODULE([1.1], [unigbrk/uc-is-grapheme-break])
+ gl_LIBUNISTRING_MODULE([1.3], [unigbrk/uc-grapheme-breaks])
+ gl_LIBUNISTRING_MODULE([1.3], [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.3], [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.3], [unilbrk/u16-possible-linebreaks])
+ gl_LIBUNISTRING_MODULE([1.3], [unilbrk/u16-width-linebreaks])
+ gl_LIBUNISTRING_MODULE([1.3], [unilbrk/u32-possible-linebreaks])
+ gl_LIBUNISTRING_MODULE([1.3], [unilbrk/u32-width-linebreaks])
+ gl_LIBUNISTRING_MODULE([1.3], [unilbrk/u8-possible-linebreaks])
+ gl_LIBUNISTRING_MODULE([1.3], [unilbrk/u8-width-linebreaks])
+ gl_LIBUNISTRING_MODULE([1.3], [unilbrk/ulc-possible-linebreaks])
+ gl_LIBUNISTRING_MODULE([1.3], [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.3], [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.3], [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])
+ gl_LIBUNISTRING_MODULE([1.3], [uninorm/canonical-decomposition])
+ gl_LIBUNISTRING_MODULE([1.3], [uninorm/composition])
gl_LIBUNISTRING_MODULE([0.9.11], [uninorm/decomposing-form])
- gl_LIBUNISTRING_MODULE([1.1], [uninorm/decomposition])
+ gl_LIBUNISTRING_MODULE([1.3], [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_LIBUNISTRING_MODULE([1.3], [uninorm/filter])
+ gl_UNINORM_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [uninorm/nfc])
+ gl_UNINORM_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [uninorm/nfd])
+ gl_UNINORM_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [uninorm/nfkc])
+ gl_UNINORM_H_REQUIRE_DEFAULTS
+ gl_LIBUNISTRING_MODULE_WITH_VARIABLE([1.3], [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])
- gl_LIBUNISTRING_MODULE([1.1], [uninorm/u16-normcoll])
- gl_LIBUNISTRING_MODULE([1.1], [uninorm/u16-normxfrm])
+ gl_LIBUNISTRING_MODULE([1.3], [uninorm/u16-normalize])
+ gl_LIBUNISTRING_MODULE([1.3], [uninorm/u16-normcmp])
+ gl_LIBUNISTRING_MODULE([1.3], [uninorm/u16-normcoll])
+ gl_LIBUNISTRING_MODULE([1.3], [uninorm/u16-normxfrm])
gl_MODULE_INDICATOR_FOR_TESTS([uninorm/u32-normalize])
- gl_LIBUNISTRING_MODULE([1.1], [uninorm/u32-normalize])
- gl_LIBUNISTRING_MODULE([1.1], [uninorm/u32-normcmp])
- gl_LIBUNISTRING_MODULE([1.1], [uninorm/u32-normcoll])
- gl_LIBUNISTRING_MODULE([1.1], [uninorm/u32-normxfrm])
+ gl_LIBUNISTRING_MODULE([1.3], [uninorm/u32-normalize])
+ gl_LIBUNISTRING_MODULE([1.3], [uninorm/u32-normcmp])
+ gl_LIBUNISTRING_MODULE([1.3], [uninorm/u32-normcoll])
+ gl_LIBUNISTRING_MODULE([1.3], [uninorm/u32-normxfrm])
gl_MODULE_INDICATOR_FOR_TESTS([uninorm/u8-normalize])
- gl_LIBUNISTRING_MODULE([1.1], [uninorm/u8-normalize])
- gl_LIBUNISTRING_MODULE([1.1], [uninorm/u8-normcmp])
- gl_LIBUNISTRING_MODULE([1.1], [uninorm/u8-normcoll])
- gl_LIBUNISTRING_MODULE([1.1], [uninorm/u8-normxfrm])
+ gl_LIBUNISTRING_MODULE([1.3], [uninorm/u8-normalize])
+ gl_LIBUNISTRING_MODULE([1.3], [uninorm/u8-normcmp])
+ gl_LIBUNISTRING_MODULE([1.3], [uninorm/u8-normcoll])
+ gl_LIBUNISTRING_MODULE([1.3], [uninorm/u8-normxfrm])
gl_UNISTD_H
gl_UNISTD_H_REQUIRE_DEFAULTS
AC_PROG_MKDIR_P
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(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u16-asnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[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(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u16-snprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u16-sprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u16-u16-asnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u16-u16-asprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u16-u16-snprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u16-u16-sprintf])
+ gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u16-u16-vasnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u16-u16-vasprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u16-u16-vsnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u16-u16-vsprintf])
+ gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u16-vasnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u16-vasprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u16-vsnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u16-vsprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u32-asnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[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(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u32-snprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u32-sprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u32-u32-asnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u32-u32-asprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u32-u32-snprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u32-u32-sprintf])
+ gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u32-u32-vasnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u32-u32-vasprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u32-u32-vsnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u32-u32-vsprintf])
+ gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u32-vasnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u32-vasprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u32-vsnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u32-vsprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u8-asnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[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(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u8-snprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u8-sprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u8-u8-asnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u8-u8-asprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u8-u8-snprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u8-u8-sprintf])
+ gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u8-u8-vasnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u8-u8-vasprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u8-u8-vsnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u8-u8-vsprintf])
+ gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u8-vasnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u8-vasprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u8-vsnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.2]), [unistdio/u8-vsprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.3]), [unistdio/ulc-asnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.3]), [unistdio/ulc-asprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.3]), [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(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.3]), [unistdio/ulc-snprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.3]), [unistdio/ulc-sprintf])
+ gl_PREREQ_VASNPRINTF_WITH_POSIX_EXTRAS
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.3]), [unistdio/ulc-vasnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.3]), [unistdio/ulc-vasprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.3]), [unistdio/ulc-vfprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.3]), [unistdio/ulc-vsnprintf])
+ gl_LIBUNISTRING_MODULE(m4_ifdef([gl_PRINTF_SUPPORT_N_DIRECTIVE],[999.9],[1.3]), [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 +2561,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 +2607,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 +2644,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 +2703,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.3], [uniwbrk/u16-wordbreaks])
+ gl_LIBUNISTRING_MODULE([1.3], [uniwbrk/u32-wordbreaks])
+ gl_LIBUNISTRING_MODULE([1.3], [uniwbrk/u8-wordbreaks])
+ gl_LIBUNISTRING_MODULE([1.3], [uniwbrk/ulc-wordbreaks])
+ gl_LIBUNISTRING_MODULE([1.3], [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.3], [uniwidth/u16-strwidth])
+ gl_LIBUNISTRING_MODULE([1.3], [uniwidth/u16-width])
+ gl_LIBUNISTRING_MODULE([1.3], [uniwidth/u32-strwidth])
+ gl_LIBUNISTRING_MODULE([1.3], [uniwidth/u32-width])
+ gl_LIBUNISTRING_MODULE([1.3], [uniwidth/u8-strwidth])
+ gl_LIBUNISTRING_MODULE([1.3], [uniwidth/u8-width])
+ gl_LIBUNISTRING_MODULE([1.3], [uniwidth/width])
gl_WCHAR_H
gl_WCHAR_H_REQUIRE_DEFAULTS
AC_PROG_MKDIR_P
@@ -2261,16 +2732,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 +2811,20 @@ 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_MODULE_INDICATOR([accept])
+ gl_ALIGNASOF
gl_ARPA_INET_H
gl_ARPA_INET_H_REQUIRE_DEFAULTS
AC_PROG_MKDIR_P
+ AC_REQUIRE([AC_CANONICAL_HOST])
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_MODULE_INDICATOR([bind])
+ gl_UCHAR_MODULE_INDICATOR([btoc32])
+ gt_LOCALE_EN_UTF8
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
gl_FUNC_BTOWC
gl_CONDITIONAL([GL_COND_OBJ_BTOWC],
[test $HAVE_BTOWC = 0 || test $REPLACE_BTOWC = 1])
@@ -2353,10 +2832,93 @@ changequote([, ])dnl
gl_PREREQ_BTOWC
])
gl_WCHAR_MODULE_INDICATOR([btowc])
+ gt_LOCALE_EN_UTF8
gt_LOCALE_FR
gt_LOCALE_FR_UTF8
gt_LOCALE_FR
gt_LOCALE_TR_UTF8
+ gt_LOCALE_EN_UTF8
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_JA
+ gt_LOCALE_ZH_CN
+ gt_LOCALE_EN_UTF8
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_JA
+ gt_LOCALE_ZH_CN
+ gl_MUSL_LIBC
+ gt_LOCALE_EN_UTF8
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_JA
+ gt_LOCALE_ZH_CN
+ gt_LOCALE_EN_UTF8
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_JA
+ gt_LOCALE_ZH_CN
+ gl_MUSL_LIBC
+ gt_LOCALE_EN_UTF8
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_JA
+ gt_LOCALE_ZH_CN
+ gt_LOCALE_EN_UTF8
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_JA
+ gt_LOCALE_ZH_CN
+ gl_MUSL_LIBC
+ gt_LOCALE_EN_UTF8
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_JA
+ gt_LOCALE_ZH_CN
+ gl_MUSL_LIBC
+ gt_LOCALE_EN_UTF8
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_JA
+ gt_LOCALE_ZH_CN
+ gl_MUSL_LIBC
+ gt_LOCALE_EN_UTF8
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_JA
+ gt_LOCALE_ZH_CN
+ gt_LOCALE_EN_UTF8
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_JA
+ gt_LOCALE_ZH_CN
+ gt_LOCALE_EN_UTF8
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_JA
+ gt_LOCALE_ZH_CN
+ gt_LOCALE_EN_UTF8
+ 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_EN_UTF8
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_JA
+ gt_LOCALE_ZH_CN
+ AC_REQUIRE([gl_MBRTOC32_SANITYCHECK])
+ AC_REQUIRE([gl_C32RTOMB_SANITYCHECK])
+ gl_UCHAR_MODULE_INDICATOR([c32tob])
+ gt_LOCALE_EN_UTF8
+ 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])
@@ -2367,17 +2929,47 @@ changequote([, ])dnl
AC_LIBOBJ([calloc])
fi
gl_STDLIB_MODULE_INDICATOR([calloc-posix])
+ gl_UNISTD_MODULE_INDICATOR([chdir])
+ gl_FUNC_CHDIR_LONG
+ gl_CONDITIONAL([GL_COND_OBJ_CHDIR_LONG],
+ [test $gl_cv_have_unlimited_file_name_length = no])
+ AM_COND_IF([GL_COND_OBJ_CHDIR_LONG], [
+ gl_PREREQ_CHDIR_LONG
+ ])
gl_MODULE_INDICATOR_FOR_TESTS([cloexec])
gl_FUNC_CLOSE
gl_CONDITIONAL([GL_COND_OBJ_CLOSE], [test $REPLACE_CLOSE = 1])
gl_UNISTD_MODULE_INDICATOR([close])
+ gl_MODULE_INDICATOR([close])
+ gl_FUNC_CLOSEDIR
+ gl_CONDITIONAL([GL_COND_OBJ_CLOSEDIR],
+ [test $HAVE_CLOSEDIR = 0 || test $REPLACE_CLOSEDIR = 1])
+ gl_DIRENT_MODULE_INDICATOR([closedir])
AC_REQUIRE([gl_SYS_SOCKET_H])
gl_CONDITIONAL([GL_COND_OBJ_CONNECT], [test "$ac_cv_header_winsock2_h" = yes])
gl_SYS_SOCKET_MODULE_INDICATOR([connect])
+ gl_MODULE_INDICATOR([connect])
gl_CTYPE_H
gl_CTYPE_H_REQUIRE_DEFAULTS
AC_PROG_MKDIR_P
+ gl_CHECK_TYPE_STRUCT_DIRENT_D_INO
+ gl_DIRENT_H
+ gl_DIRENT_H_REQUIRE_DEFAULTS
+ AC_PROG_MKDIR_P
+ gl_FUNC_DIRFD
+ gl_CONDITIONAL([GL_COND_OBJ_DIRFD],
+ [test $HAVE_DIRFD = 0 || test $REPLACE_DIRFD = 1])
+ AM_COND_IF([GL_COND_OBJ_DIRFD], [
+ gl_PREREQ_DIRFD
+ ])
+ gl_DIRENT_MODULE_INDICATOR([dirfd])
gl_DOUBLE_SLASH_ROOT
+ gl_FUNC_DUP
+ gl_CONDITIONAL([GL_COND_OBJ_DUP], [test $REPLACE_DUP = 1])
+ AM_COND_IF([GL_COND_OBJ_DUP], [
+ gl_PREREQ_DUP
+ ])
+ gl_UNISTD_MODULE_INDICATOR([dup])
gl_FUNC_DUP2
gl_CONDITIONAL([GL_COND_OBJ_DUP2], [test $REPLACE_DUP2 = 1])
AM_COND_IF([GL_COND_OBJ_DUP2], [
@@ -2386,14 +2978,24 @@ 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_FCHDIR
+ gl_CONDITIONAL([GL_COND_OBJ_FCHDIR],
+ [test $HAVE_FCHDIR = 0 || test $REPLACE_FCHDIR = 1])
+ AM_COND_IF([GL_COND_OBJ_FCHDIR], [
+ gl_PREREQ_FCHDIR
+ ])
+ gl_UNISTD_MODULE_INDICATOR([fchdir])
gl_FUNC_FCNTL
gl_CONDITIONAL([GL_COND_OBJ_FCNTL],
[test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1])
@@ -2401,23 +3003,36 @@ changequote([, ])dnl
gl_FCNTL_H
gl_FCNTL_H_REQUIRE_DEFAULTS
AC_PROG_MKDIR_P
+ gl_MODULE_INDICATOR([fd-safer-flag])
gl_FUNC_FDOPEN
gl_CONDITIONAL([GL_COND_OBJ_FDOPEN], [test $REPLACE_FDOPEN = 1])
AM_COND_IF([GL_COND_OBJ_FDOPEN], [
gl_PREREQ_FDOPEN
])
gl_STDIO_MODULE_INDICATOR([fdopen])
+ gl_FUNC_FDOPENDIR
+ gl_CONDITIONAL([GL_COND_OBJ_FDOPENDIR],
+ [test $HAVE_FDOPENDIR = 0 || test $REPLACE_FDOPENDIR = 1])
+ gl_DIRENT_MODULE_INDICATOR([fdopendir])
+ gl_MODULE_INDICATOR([fdopendir])
+ gl_FILE_NAME_CONCAT_LGPL
gl_FUNC_FSTAT
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
gl_PREREQ_FSTAT
])
gl_SYS_STAT_MODULE_INDICATOR([fstat])
+ gl_MODULE_INDICATOR([fstat])
+ gl_FUNC_FSTATAT
+ gl_CONDITIONAL([GL_COND_OBJ_FSTATAT],
+ [test $HAVE_FSTATAT = 0 || test $REPLACE_FSTATAT = 1])
+ gl_SYS_STAT_MODULE_INDICATOR([fstatat])
+ gl_MODULE_INDICATOR([fstatat])
gl_FUNC_FTRUNCATE
gl_CONDITIONAL([GL_COND_OBJ_FTRUNCATE],
[test $HAVE_FTRUNCATE = 0 || test $REPLACE_FTRUNCATE = 1])
@@ -2425,6 +3040,13 @@ changequote([, ])dnl
gl_PREREQ_FTRUNCATE
])
gl_UNISTD_MODULE_INDICATOR([ftruncate])
+ gl_FUNC_GETCWD
+ gl_CONDITIONAL([GL_COND_OBJ_GETCWD], [test $REPLACE_GETCWD = 1])
+ AM_COND_IF([GL_COND_OBJ_GETCWD], [
+ gl_PREREQ_GETCWD
+ ])
+ gl_MODULE_INDICATOR([getcwd])
+ gl_UNISTD_MODULE_INDICATOR([getcwd])
gl_FUNC_GETCWD_LGPL
gl_CONDITIONAL([GL_COND_OBJ_GETCWD_LGPL], [test $REPLACE_GETCWD = 1])
gl_UNISTD_MODULE_INDICATOR([getcwd])
@@ -2435,10 +3057,14 @@ changequote([, ])dnl
gl_PREREQ_GETDTABLESIZE
])
gl_UNISTD_MODULE_INDICATOR([getdtablesize])
- gl_FUNC_GETPAGESIZE
- gl_CONDITIONAL([GL_COND_OBJ_GETPAGESIZE], [test $REPLACE_GETPAGESIZE = 1])
- gl_UNISTD_MODULE_INDICATOR([getpagesize])
+ AC_REQUIRE([AC_CANONICAL_HOST])
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 +3076,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])
@@ -2464,28 +3090,31 @@ changequote([, ])dnl
gl_CONDITIONAL([GL_COND_OBJ_IOCTL],
[test $HAVE_IOCTL = 0 || test $REPLACE_IOCTL = 1])
gl_SYS_IOCTL_MODULE_INDICATOR([ioctl])
+ gl_MODULE_INDICATOR([ioctl])
gl_FUNC_ISBLANK
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_EN_UTF8
gt_LOCALE_FR
gt_LOCALE_FR_UTF8
gt_LOCALE_JA
gt_LOCALE_ZH_CN
+ gt_LOCALE_EN_UTF8
gt_LOCALE_FR
gt_LOCALE_FR_UTF8
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_MODULE_INDICATOR([listen])
+ 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])
@@ -2495,15 +3124,25 @@ changequote([, ])dnl
gl_PREREQ_LSTAT
])
gl_SYS_STAT_MODULE_INDICATOR([lstat])
+ gl_MODULE_INDICATOR([lstat])
gl_FUNC_MALLOC_GNU
if test $REPLACE_MALLOC_FOR_MALLOC_GNU = 1; then
AC_LIBOBJ([malloc])
fi
gl_STDLIB_MODULE_INDICATOR([malloc-gnu])
+ gt_LOCALE_EN_UTF8
gt_LOCALE_FR
gt_LOCALE_FR_UTF8
gt_LOCALE_JA
gt_LOCALE_ZH_CN
+ gt_LOCALE_EN_UTF8
+ gt_LOCALE_FR
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_JA
+ gt_LOCALE_ZH_CN
+ gt_LOCALE_EN_UTF8
+ gt_LOCALE_FR_UTF8
+ gt_LOCALE_EN_UTF8
gt_LOCALE_FR_UTF8
gl_FUNC_MBTOWC
gl_CONDITIONAL([GL_COND_OBJ_MBTOWC],
@@ -2516,6 +3155,22 @@ changequote([, ])dnl
gl_FUNC_MMAP_ANON
AC_CHECK_HEADERS_ONCE([sys/mman.h])
AC_CHECK_FUNCS_ONCE([mprotect])
+ gl_FUNC_MEMPCPY
+ gl_CONDITIONAL([GL_COND_OBJ_MEMPCPY],
+ [test $HAVE_MEMPCPY = 0 || test $REPLACE_MEMPCPY = 1])
+ AM_COND_IF([GL_COND_OBJ_MEMPCPY], [
+ gl_PREREQ_MEMPCPY
+ ])
+ gl_STRING_MODULE_INDICATOR([mempcpy])
+ gl_FUNC_MEMRCHR
+ gl_CONDITIONAL([GL_COND_OBJ_MEMRCHR], [test $ac_cv_func_memrchr = no])
+ AM_COND_IF([GL_COND_OBJ_MEMRCHR], [
+ gl_PREREQ_MEMRCHR
+ ])
+ gl_STRING_MODULE_INDICATOR([memrchr])
+ gl_FUNC_MMAP_ANON
+ AC_CHECK_HEADERS_ONCE([sys/mman.h])
+ AC_CHECK_FUNCS_ONCE([mprotect])
AC_REQUIRE([gl_MSVC_INVAL])
gl_CONDITIONAL([GL_COND_OBJ_MSVC_INVAL],
[test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1])
@@ -2537,6 +3192,18 @@ changequote([, ])dnl
gl_PREREQ_OPEN
])
gl_FCNTL_MODULE_INDICATOR([open])
+ gl_FUNC_OPENAT
+ gl_CONDITIONAL([GL_COND_OBJ_OPENAT],
+ [test $HAVE_OPENAT = 0 || test $REPLACE_OPENAT = 1])
+ AM_COND_IF([GL_COND_OBJ_OPENAT], [
+ gl_PREREQ_OPENAT
+ ])
+ gl_MODULE_INDICATOR([openat]) dnl for lib/getcwd.c
+ gl_FCNTL_MODULE_INDICATOR([openat])
+ gl_FUNC_OPENDIR
+ gl_CONDITIONAL([GL_COND_OBJ_OPENDIR],
+ [test $HAVE_OPENDIR = 0 || test $REPLACE_OPENDIR = 1])
+ gl_DIRENT_MODULE_INDICATOR([opendir])
gl_PATHMAX
gl_FUNC_PERROR
gl_CONDITIONAL([GL_COND_OBJ_PERROR], [test $REPLACE_PERROR = 1])
@@ -2549,13 +3216,34 @@ changequote([, ])dnl
[test $HAVE_PSELECT = 0 || test $REPLACE_PSELECT = 1])
gl_SYS_SELECT_MODULE_INDICATOR([pselect])
AC_CHECK_HEADERS_ONCE([sys/wait.h])
- gl_PTHREAD_H
- gl_PTHREAD_H_REQUIRE_DEFAULTS
- AC_PROG_MKDIR_P
+ gl_PTHREAD_COND
+ gl_CONDITIONAL([GL_COND_OBJ_PTHREAD_COND],
+ [test $HAVE_PTHREAD_COND_INIT = 0 || test $REPLACE_PTHREAD_COND_INIT = 1])
+ gl_PTHREAD_MODULE_INDICATOR([pthread-cond])
+ AC_CHECK_DECLS_ONCE([alarm])
+ gl_PTHREAD_MUTEX
+ gl_CONDITIONAL([GL_COND_OBJ_PTHREAD_MUTEX],
+ [test $HAVE_PTHREAD_MUTEX_INIT = 0 || test $REPLACE_PTHREAD_MUTEX_INIT = 1 || test $HAVE_PTHREAD_MUTEXATTR_GETROBUST = 0 || test $REPLACE_PTHREAD_MUTEXATTR_GETROBUST = 1])
+ gl_PTHREAD_MODULE_INDICATOR([pthread-mutex])
+ AC_CHECK_HEADERS_ONCE([semaphore.h])
+ AC_CHECK_DECLS_ONCE([alarm])
+ AC_REQUIRE([gl_SEMAPHORE])
+ AC_CHECK_DECLS_ONCE([alarm])
+ gl_PTHREAD_RWLOCK
+ gl_CONDITIONAL([GL_COND_OBJ_PTHREAD_RWLOCK],
+ [test $REPLACE_PTHREAD_RWLOCK_INIT = 1 || test $HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK = 0 || test $REPLACE_PTHREAD_RWLOCK_TIMEDRDLOCK = 1])
+ gl_PTHREAD_MODULE_INDICATOR([pthread-rwlock])
+ AC_CHECK_HEADERS_ONCE([semaphore.h])
+ AC_CHECK_DECLS_ONCE([alarm])
+ AC_REQUIRE([gl_SEMAPHORE])
gl_PTHREAD_THREAD
gl_CONDITIONAL([GL_COND_OBJ_PTHREAD_THREAD],
[test $HAVE_PTHREAD_CREATE = 0 || test $REPLACE_PTHREAD_CREATE = 1])
gl_PTHREAD_MODULE_INDICATOR([pthread-thread])
+ gl_FUNC_PTHREAD_MUTEX_TIMEDLOCK
+ gl_CONDITIONAL([GL_COND_OBJ_PTHREAD_MUTEX_TIMEDLOCK],
+ [test $HAVE_PTHREAD_T = 1 && test $HAVE_PTHREAD_MUTEX_TIMEDLOCK = 0])
+ gl_PTHREAD_MODULE_INDICATOR([pthread_mutex_timedlock])
gl_FUNC_PTHREAD_SIGMASK
gl_CONDITIONAL([GL_COND_OBJ_PTHREAD_SIGMASK],
[test $HAVE_PTHREAD_SIGMASK = 0 || test $REPLACE_PTHREAD_SIGMASK = 1])
@@ -2576,6 +3264,24 @@ 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_READDIR
+ gl_CONDITIONAL([GL_COND_OBJ_READDIR],
+ [test $HAVE_READDIR = 0 || test $REPLACE_READDIR = 1])
+ gl_DIRENT_MODULE_INDICATOR([readdir])
gl_FUNC_REALLOC_GNU
if test $REPLACE_REALLOC_FOR_REALLOC_GNU = 1; then
AC_LIBOBJ([realloc])
@@ -2594,9 +3300,11 @@ changequote([, ])dnl
])
gl_MODULE_INDICATOR([reallocarray])
gl_STDLIB_MODULE_INDICATOR([reallocarray])
- gl_SCHED_H
- gl_SCHED_H_REQUIRE_DEFAULTS
- AC_PROG_MKDIR_P
+ gl_FUNC_REWINDDIR
+ gl_CONDITIONAL([GL_COND_OBJ_REWINDDIR],
+ [test $HAVE_REWINDDIR = 0 || test $REPLACE_REWINDDIR = 1])
+ gl_DIRENT_MODULE_INDICATOR([rewinddir])
+ gl_SAVE_CWD
gl_FUNC_SCHED_YIELD
gl_CONDITIONAL([GL_COND_OBJ_SCHED_YIELD],
[test $HAVE_SCHED_YIELD = 0 || test $REPLACE_SCHED_YIELD = 1])
@@ -2604,6 +3312,7 @@ changequote([, ])dnl
gl_FUNC_SELECT
gl_CONDITIONAL([GL_COND_OBJ_SELECT], [test $REPLACE_SELECT = 1])
gl_SYS_SELECT_MODULE_INDICATOR([select])
+ gl_MODULE_INDICATOR([select])
AC_CHECK_HEADERS_ONCE([sys/wait.h])
gl_FUNC_SETENV
gl_CONDITIONAL([GL_COND_OBJ_SETENV],
@@ -2623,12 +3332,10 @@ changequote([, ])dnl
gl_CONDITIONAL([GL_COND_OBJ_SETSOCKOPT],
[test "$ac_cv_header_winsock2_h" = yes])
gl_SYS_SOCKET_MODULE_INDICATOR([setsockopt])
+ gl_MODULE_INDICATOR([setsockopt])
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 +3347,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,
@@ -2652,6 +3361,7 @@ changequote([, ])dnl
SYS_IOCTL_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=1
fi
gl_SYS_SOCKET_MODULE_INDICATOR([socket])
+ gl_MODULE_INDICATOR([socket])
AC_REQUIRE([gl_SOCKETLIB])
AC_REQUIRE([gl_SOCKETS])
gl_TYPE_SOCKLEN_T
@@ -2659,19 +3369,16 @@ 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
gl_PREREQ_STAT
])
gl_SYS_STAT_MODULE_INDICATOR([stat])
+ gl_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
gl_STDIO_H_REQUIRE_DEFAULTS
@@ -2701,6 +3408,20 @@ changequote([, ])dnl
gl_STDIO_MODULE_INDICATOR([fputs])
gl_STDIO_MODULE_INDICATOR([puts])
gl_STDIO_MODULE_INDICATOR([fwrite])
+ gl_DOUBLE_EXPONENT_LOCATION
+ gl_FUNC_STPCPY
+ gl_CONDITIONAL([GL_COND_OBJ_STPCPY],
+ [test $HAVE_STPCPY = 0 || test $REPLACE_STPCPY = 1])
+ AM_COND_IF([GL_COND_OBJ_STPCPY], [
+ gl_PREREQ_STPCPY
+ ])
+ gl_STRING_MODULE_INDICATOR([stpcpy])
+ gl_FUNC_STRDUP_POSIX
+ gl_CONDITIONAL([GL_COND_OBJ_STRDUP], [test $REPLACE_STRDUP = 1])
+ AM_COND_IF([GL_COND_OBJ_STRDUP], [
+ gl_PREREQ_STRDUP
+ ])
+ gl_STRING_MODULE_INDICATOR([strdup])
gl_FUNC_STRERROR
gl_CONDITIONAL([GL_COND_OBJ_STRERROR], [test $REPLACE_STRERROR = 1])
gl_MODULE_INDICATOR([strerror])
@@ -2718,7 +3439,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])
@@ -2741,6 +3462,8 @@ changequote([, ])dnl
gl_SYS_SOCKET_H_REQUIRE_DEFAULTS
AC_PROG_MKDIR_P
AC_CHECK_FUNCS_ONCE([shutdown])
+ gl_SOCKET_FAMILIES
+ gl_SOCKET_FAMILY_UNIX
gl_SYS_STAT_H
gl_SYS_STAT_H_REQUIRE_DEFAULTS
AC_PROG_MKDIR_P
@@ -2750,10 +3473,57 @@ changequote([, ])dnl
gl_SYS_UIO_H
gl_SYS_UIO_H_REQUIRE_DEFAULTS
AC_PROG_MKDIR_P
+ gl_MUSL_LIBC
+ gl_CONDITIONAL([LIBC_IS_GNU],
+ [case "$host_os" in *-gnu* | gnu*) true ;; *) false ;; esac])
+ gl_CONDITIONAL([LIBC_IS_MUSL],
+ [case "$host_os" in *-musl* | midipix*) true ;; *) false ;; esac])
+ gl_CONDITIONAL([OS_IS_MACOS],
+ [case "$host_os" in darwin*) true ;; *) false ;; esac])
+ gl_CONDITIONAL([OS_IS_MACOS11],
+ [case "$host_os" in darwin20.*) true ;; *) false ;; esac])
+ gl_CONDITIONAL([OS_IS_MACOS12],
+ [case "$host_os" in darwin21.*) true ;; *) false ;; esac])
+ gl_CONDITIONAL([OS_IS_MACOS13],
+ [case "$host_os" in darwin22.*) true ;; *) false ;; esac])
+ gl_CONDITIONAL([OS_IS_MACOS14],
+ [case "$host_os" in darwin23.*) true ;; *) false ;; esac])
+ gl_CONDITIONAL([OS_IS_FREEBSD],
+ [case "$host_os" in freebsd* | dragonfly*) true ;; *) false ;; esac])
+ gl_CONDITIONAL([OS_IS_NETBSD],
+ [case "$host_os" in netbsd*) true ;; *) false ;; esac])
+ gl_CONDITIONAL([OS_IS_OPENBSD],
+ [case "$host_os" in openbsd*) true ;; *) false ;; esac])
+ gl_CONDITIONAL([OS_IS_AIX],
+ [case "$host_os" in aix*) true ;; *) false ;; esac])
+ gl_CONDITIONAL([OS_IS_SOLARIS11],
+ [case "$host_os" in solaris2.11*) true ;; *) false ;; esac])
+ gl_CONDITIONAL([OS_IS_CYGWIN],
+ [case "$host_os" in cygwin*) true ;; *) false ;; esac])
+ gl_CONDITIONAL([OS_IS_NATIVE_WINDOWS],
+ [case "$host_os" in mingw* | windows*) true ;; *) false ;; esac])
+ is_mingw=false; is_msvc=false
+ case "$host_os" in
+ windows*-msvc*) is_msvc=true ;;
+ mingw* | windows*)
+ AC_EGREP_CPP([Special], [
+ #ifdef _MSC_VER
+ Special
+ #endif
+ ], [is_msvc=true], [is_mingw=true])
+ ;;
+ esac
+ gl_CONDITIONAL([PLATFORM_IS_MINGW], [$is_mingw])
+ gl_CONDITIONAL([PLATFORM_IS_MSVC], [$is_msvc])
+ gl_CONDITIONAL([OS_IS_ANDROID],
+ [case "$host_os" in linux-androideabi*) true ;; *) false ;; esac])
gl_THREAD
- gl_TIME_H
- gl_TIME_H_REQUIRE_DEFAULTS
- AC_PROG_MKDIR_P
+ 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])
gt_LOCALE_FR
gt_LOCALE_FR_UTF8
gt_LOCALE_JA
@@ -2768,6 +3538,7 @@ changequote([, ])dnl
AC_CHECK_DECLS_ONCE([alarm])
AC_CHECK_DECLS_ONCE([alarm])
AC_CHECK_DECLS_ONCE([alarm])
+ gl_UNISTD_SAFER
gt_LOCALE_FR
gt_LOCALE_FR_UTF8
gt_LOCALE_FR
@@ -2862,6 +3633,7 @@ changequote([, ])dnl
gl_PREREQ_WCRTOMB
])
gl_WCHAR_MODULE_INDICATOR([wcrtomb])
+ gt_LOCALE_EN_UTF8
gt_LOCALE_FR
gt_LOCALE_FR_UTF8
gt_LOCALE_JA
@@ -2880,14 +3652,27 @@ changequote([, ])dnl
])
gl_STDLIB_MODULE_INDICATOR([wctomb])
AC_REQUIRE([AC_CANONICAL_HOST])
+ gl_CONDITIONAL([GL_COND_OBJ_WINDOWS_COND],
+ [case "$host_os" in mingw* | windows*) true;; *) false;; esac])
+ 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_TIMEDMUTEX],
+ [case "$host_os" in mingw* | windows*) true;; *) false;; esac])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ gl_CONDITIONAL([GL_COND_OBJ_WINDOWS_TIMEDRECMUTEX],
+ [case "$host_os" in mingw* | windows*) true;; *) false;; esac])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ gl_CONDITIONAL([GL_COND_OBJ_WINDOWS_TIMEDRWLOCK],
+ [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])
+ gl_XGETCWD
AC_REQUIRE([gl_YIELD])
m4_popdef([gl_MODULE_INDICATOR_CONDITION])
m4_ifval(gltests_LIBSOURCES_LIST, [
@@ -2997,6 +3782,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 +3799,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
@@ -3026,6 +3828,8 @@ AC_DEFUN([gl_FILE_LIST], [
lib/fseterr.h
lib/glthread/lock.c
lib/glthread/lock.h
+ lib/glthread/once.c
+ lib/glthread/once.h
lib/glthread/threadlib.c
lib/hard-locale.c
lib/hard-locale.h
@@ -3052,6 +3856,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 +3868,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 +3878,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
@@ -3094,10 +3902,14 @@ AC_DEFUN([gl_FILE_LIST], [
lib/printf-frexpl.h
lib/printf-parse.c
lib/printf-parse.h
+ lib/pthread-once.c
+ lib/pthread.in.h
lib/relocatable.c
lib/relocatable.h
lib/relocatable.valgrind
+ lib/sched.in.h
lib/setlocale-lock.c
+ lib/setlocale_null-unlocked.c
lib/setlocale_null.c
lib/setlocale_null.h
lib/signbitd.c
@@ -3109,7 +3921,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 +3930,11 @@ 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/time.in.h
+ lib/uchar.in.h
lib/unicase.in.h
lib/unicase/cased.c
lib/unicase/cased.h
@@ -3379,6 +4193,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 +4311,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 +4325,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
@@ -3517,6 +4342,8 @@ AC_DEFUN([gl_FILE_LIST], [
lib/unictype/pr_lowercase.h
lib/unictype/pr_math.c
lib/unictype/pr_math.h
+ lib/unictype/pr_modifier_combining_mark.c
+ lib/unictype/pr_modifier_combining_mark.h
lib/unictype/pr_non_break.c
lib/unictype/pr_non_break.h
lib/unictype/pr_not_a_character.c
@@ -3547,6 +4374,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 +4453,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
@@ -3631,6 +4462,7 @@ AC_DEFUN([gl_FILE_LIST], [
lib/uninorm.in.h
lib/uninorm/canonical-decomposition.c
lib/uninorm/compat-decomposition.c
+ lib/uninorm/composition-table-bounds.h
lib/uninorm/composition-table.gperf
lib/uninorm/composition.c
lib/uninorm/decompose-internal.c
@@ -3744,6 +4576,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 +4592,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 +4609,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 +4652,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 +4696,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 +4751,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,32 +4769,46 @@ 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
m4/assert_h.m4
m4/btowc.m4
+ m4/build-to-host.m4
m4/builtin-expect.m4
m4/c-bool.m4
+ m4/c32rtomb.m4
m4/calloc.m4
+ m4/chdir-long.m4
m4/close.m4
+ m4/closedir.m4
m4/codeset.m4
m4/ctype_h.m4
+ m4/d-ino.m4
+ m4/dirent_h.m4
+ m4/dirfd.m4
m4/double-slash-root.m4
+ m4/dup.m4
m4/dup2.m4
m4/eealloc.m4
m4/environ.m4
m4/errno_h.m4
m4/error.m4
+ m4/error_h.m4
m4/exponentd.m4
m4/exponentf.m4
m4/exponentl.m4
+ m4/extensions-aix.m4
m4/extensions.m4
m4/extern-inline.m4
+ m4/fchdir.m4
m4/fcntl-o.m4
m4/fcntl.m4
m4/fcntl_h.m4
m4/fdopen.m4
+ m4/fdopendir.m4
+ m4/filenamecat.m4
m4/flexmember.m4
m4/float_h.m4
m4/fpieee.m4
@@ -3966,10 +4817,12 @@ AC_DEFUN([gl_FILE_LIST], [
m4/frexpl.m4
m4/fseterr.m4
m4/fstat.m4
+ m4/fstatat.m4
m4/ftruncate.m4
+ m4/getcwd-abort-bug.m4
+ m4/getcwd-path-max.m4
m4/getcwd.m4
m4/getdtablesize.m4
- m4/getpagesize.m4
m4/getprogname.m4
m4/gettimeofday.m4
m4/gnulib-common.m4
@@ -3992,6 +4845,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
@@ -4004,6 +4858,7 @@ AC_DEFUN([gl_FILE_LIST], [
m4/limits-h.m4
m4/localcharset.m4
m4/locale-ar.m4
+ m4/locale-en.m4
m4/locale-fr.m4
m4/locale-ja.m4
m4/locale-tr.m4
@@ -4017,11 +4872,14 @@ 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
m4/mbtowc.m4
m4/memchr.m4
+ m4/mempcpy.m4
+ m4/memrchr.m4
m4/minmax.m4
m4/mmap-anon.m4
m4/mode_t.m4
@@ -4029,13 +4887,18 @@ 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
+ m4/off64_t.m4
m4/off_t.m4
+ m4/once.m4
m4/open-cloexec.m4
m4/open-slash.m4
m4/open.m4
+ m4/openat.m4
+ m4/opendir.m4
m4/pathmax.m4
m4/perror.m4
m4/pid_t.m4
@@ -4044,15 +4907,26 @@ AC_DEFUN([gl_FILE_LIST], [
m4/printf-frexpl.m4
m4/printf.m4
m4/pselect.m4
+ m4/pthread-cond.m4
+ m4/pthread-mutex.m4
+ m4/pthread-once.m4
+ m4/pthread-rwlock.m4
+ m4/pthread-spin.m4
m4/pthread-thread.m4
m4/pthread_h.m4
+ m4/pthread_mutex_timedlock.m4
m4/pthread_rwlock_rdlock.m4
m4/pthread_sigmask.m4
m4/putenv.m4
m4/raise.m4
+ m4/random.m4
+ m4/random_r.m4
+ m4/readdir.m4
m4/realloc.m4
m4/reallocarray.m4
m4/relocatable-lib.m4
+ m4/rewinddir.m4
+ m4/save-cwd.m4
m4/sched_h.m4
m4/sched_yield.m4
m4/select.m4
@@ -4065,6 +4939,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
@@ -4079,12 +4954,15 @@ AC_DEFUN([gl_FILE_LIST], [
m4/stdint_h.m4
m4/stdio_h.m4
m4/stdlib_h.m4
+ m4/stpcpy.m4
+ m4/strdup.m4
m4/strerror.m4
m4/strerror_r.m4
m4/string_h.m4
m4/strncat.m4
m4/strstr.m4
m4/symlink.m4
+ m4/sys_cdefs_h.m4
m4/sys_ioctl_h.m4
m4/sys_select_h.m4
m4/sys_socket_h.m4
@@ -4094,7 +4972,14 @@ 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-safer.m4
m4/unistd_h.m4
m4/usleep.m4
m4/vararrays.m4
@@ -4102,7 +4987,6 @@ AC_DEFUN([gl_FILE_LIST], [
m4/visibility.m4
m4/warn-on-use.m4
m4/wchar_h.m4
- m4/wchar_t.m4
m4/wcrtomb.m4
m4/wctob.m4
m4/wctomb.m4
@@ -4110,23 +4994,25 @@ AC_DEFUN([gl_FILE_LIST], [
m4/wcwidth.m4
m4/wint_t.m4
m4/xalloc.m4
+ m4/xgetcwd.m4
m4/xsize.m4
- m4/year2038.m4
m4/yield.m4
m4/zzgnulib.m4
tests/atomic-int-gnulib.h
+ tests/atomic-int-posix.h
tests/iconvsupport.c
tests/infinity.h
tests/init.sh
tests/locale.c
tests/macros.h
tests/minus-zero.h
- tests/nan.h
tests/nap.h
+ tests/qemu.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,24 +5020,75 @@ 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-chdir.c
tests/test-cloexec.c
tests/test-close.c
tests/test-connect.c
tests/test-ctype.c
+ tests/test-dirent.c
+ tests/test-dirfd.c
+ tests/test-dup-safer.c
+ tests/test-dup.c
tests/test-dup2.c
tests/test-environ.c
tests/test-errno.c
+ tests/test-error.c
+ tests/test-error.sh
+ tests/test-fchdir.c
tests/test-fcntl-h.c
tests/test-fcntl.c
tests/test-fdopen.c
+ tests/test-fdopendir.c
tests/test-fgetc.c
tests/test-float.c
tests/test-fputc.c
@@ -4162,10 +5099,13 @@ AC_DEFUN([gl_FILE_LIST], [
tests/test-frexpl.c
tests/test-fseterr.c
tests/test-fstat.c
+ tests/test-fstatat.c
tests/test-ftruncate.c
tests/test-ftruncate.sh
tests/test-fwrite.c
tests/test-getcwd-lgpl.c
+ tests/test-getcwd.c
+ tests/test-getcwd.sh
tests/test-getdtablesize.c
tests/test-getprogname.c
tests/test-gettimeofday.c
@@ -4188,9 +5128,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,28 +5145,46 @@ 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-mbsnlen.c
+ tests/test-mbsnlen.sh
tests/test-memchr.c
+ tests/test-memrchr.c
tests/test-nanosleep.c
tests/test-netinet_in.c
tests/test-once.c
tests/test-open.c
tests/test-open.h
+ tests/test-openat.c
tests/test-pathmax.c
tests/test-perror.c
tests/test-perror.sh
@@ -4232,11 +5193,21 @@ AC_DEFUN([gl_FILE_LIST], [
tests/test-printf-frexp.c
tests/test-printf-frexpl.c
tests/test-pselect.c
+ tests/test-pthread-cond.c
+ tests/test-pthread-mutex-type.c
+ tests/test-pthread-mutex.c
+ tests/test-pthread-once1.c
+ tests/test-pthread-once2.c
+ tests/test-pthread-rwlock.c
tests/test-pthread-thread.c
tests/test-pthread.c
tests/test-pthread_sigmask1.c
tests/test-pthread_sigmask2.c
+ tests/test-putenv.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 +5225,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 +5236,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 +5261,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,18 +5271,22 @@ 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
tests/test-wctype-h.c
tests/test-wcwidth.c
+ tests/test-windows-mutex-type.c
+ tests/test-windows-recmutex-type.c
+ tests/test-windows-timedmutex-type.c
+ tests/test-windows-timedrecmutex-type.c
tests/test-xalloc-die.c
tests/test-xalloc-die.sh
tests/unicase/test-casecmp.h
@@ -4455,6 +5432,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 +5496,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
@@ -4528,6 +5512,7 @@ AC_DEFUN([gl_FILE_LIST], [
tests/unictype/test-pr_logical_order_exception.c
tests/unictype/test-pr_lowercase.c
tests/unictype/test-pr_math.c
+ tests/unictype/test-pr_modifier_combining_mark.c
tests/unictype/test-pr_non_break.c
tests/unictype/test-pr_not_a_character.c
tests/unictype/test-pr_numeric.c
@@ -4543,6 +5528,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
@@ -4587,14 +5573,18 @@ AC_DEFUN([gl_FILE_LIST], [
tests/unigbrk/test-uc-is-grapheme-break.sh
tests/unigbrk/test-ulc-grapheme-breaks.c
tests/unigbrk/test-ulc-grapheme-breaks.sh
+ tests/unilbrk/LineBreakTest.txt
tests/unilbrk/test-u16-possible-linebreaks.c
tests/unilbrk/test-u16-width-linebreaks.c
tests/unilbrk/test-u32-possible-linebreaks.c
tests/unilbrk/test-u32-width-linebreaks.c
tests/unilbrk/test-u8-possible-linebreaks.c
tests/unilbrk/test-u8-width-linebreaks.c
+ tests/unilbrk/test-uc-possible-linebreaks.c
+ tests/unilbrk/test-uc-possible-linebreaks.sh
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 +5682,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 +5711,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 +5749,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 +5787,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
@@ -4834,41 +5828,67 @@ AC_DEFUN([gl_FILE_LIST], [
tests/uniwidth/test-uc_width.c
tests/uniwidth/test-uc_width2.c
tests/uniwidth/test-uc_width2.sh
+ tests/virtualbox.h
tests/zerosize-ptr.h
tests=lib/_Noreturn.h
tests=lib/accept.c
tests=lib/alloca.c
tests=lib/arg-nonnull.h
+ tests=lib/arpa_inet.c
tests=lib/arpa_inet.in.h
+ tests=lib/assure.h
+ tests=lib/at-func.c
tests=lib/basename-lgpl.c
tests=lib/basename-lgpl.h
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/chdir-long.c
+ tests=lib/chdir-long.h
tests=lib/cloexec.c
tests=lib/cloexec.h
tests=lib/close.c
+ tests=lib/closedir.c
+ tests=lib/concat-filename.c
+ tests=lib/concat-filename.h
tests=lib/connect.c
tests=lib/ctype.in.h
+ tests=lib/dirent-private.h
+ tests=lib/dirent.in.h
+ tests=lib/dirfd.c
+ tests=lib/dup-safer-flag.c
+ tests=lib/dup-safer.c
+ tests=lib/dup.c
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/fchdir.c
tests=lib/fcntl.c
tests=lib/fcntl.in.h
tests=lib/fd-hook.c
tests=lib/fd-hook.h
+ tests=lib/fd-safer-flag.c
+ tests=lib/fd-safer.c
tests=lib/fdopen.c
+ tests=lib/fdopendir.c
tests=lib/filename.h
+ tests=lib/filenamecat-lgpl.c
+ tests=lib/filenamecat.h
tests=lib/fstat.c
+ tests=lib/fstatat.c
tests=lib/ftruncate.c
tests=lib/getcwd-lgpl.c
+ tests=lib/getcwd.c
tests=lib/getdtablesize.c
- tests=lib/getpagesize.c
tests=lib/getprogname.c
tests=lib/getprogname.h
tests=lib/gettext.h
@@ -4884,39 +5904,62 @@ 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
tests=lib/mbtowc-impl.h
tests=lib/mbtowc.c
+ tests=lib/mempcpy.c
+ tests=lib/memrchr.c
tests=lib/msvc-inval.c
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
+ tests=lib/openat-die.c
+ tests=lib/openat-priv.h
+ tests=lib/openat-proc.c
+ tests=lib/openat.c
+ tests=lib/openat.h
+ tests=lib/opendir.c
tests=lib/pathmax.h
tests=lib/perror.c
+ tests=lib/pipe-safer.c
tests=lib/pipe.c
tests=lib/pselect.c
+ tests=lib/pthread-cond.c
+ tests=lib/pthread-mutex.c
+ tests=lib/pthread-rwlock.c
tests=lib/pthread-thread.c
- tests=lib/pthread.in.h
+ tests=lib/pthread_mutex_timedlock.c
tests=lib/pthread_sigmask.c
tests=lib/putenv.c
tests=lib/raise.c
+ tests=lib/random.c
+ tests=lib/random_r.c
+ tests=lib/readdir.c
tests=lib/realloc.c
tests=lib/reallocarray.c
+ tests=lib/rewinddir.c
+ tests=lib/same-inode.c
tests=lib/same-inode.h
- tests=lib/sched.in.h
+ tests=lib/save-cwd.c
+ tests=lib/save-cwd.h
tests=lib/sched_yield.c
tests=lib/select.c
tests=lib/setenv.c
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,10 +5968,11 @@ 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
+ tests=lib/stpcpy.c
+ tests=lib/strdup.c
tests=lib/strerror-override.c
tests=lib/strerror-override.h
tests=lib/strerror.c
@@ -4941,7 +5985,9 @@ 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.in.h
+ tests=lib/time.c
+ tests=lib/unistd--.h
+ tests=lib/unistd-safer.h
tests=lib/unsetenv.c
tests=lib/usleep.c
tests=lib/verify.h
@@ -4951,11 +5997,23 @@ AC_DEFUN([gl_FILE_LIST], [
tests=lib/wctob.c
tests=lib/wctomb-impl.h
tests=lib/wctomb.c
+ tests=lib/windows-cond.c
+ tests=lib/windows-cond.h
+ tests=lib/windows-initguard.h
tests=lib/windows-thread.c
tests=lib/windows-thread.h
+ tests=lib/windows-timedmutex.c
+ tests=lib/windows-timedmutex.h
+ tests=lib/windows-timedrecmutex.c
+ tests=lib/windows-timedrecmutex.h
+ tests=lib/windows-timedrwlock.c
+ tests=lib/windows-timedrwlock.h
tests=lib/windows-tls.c
tests=lib/windows-tls.h
tests=lib/xalloc-die.c
tests=lib/xalloc.h
+ tests=lib/xconcat-filename.c
+ tests=lib/xgetcwd.c
+ tests=lib/xgetcwd.h
tests=lib/xmalloc.c
])
diff --git a/gnulib-m4/host-cpu-c-abi.m4 b/gnulib-m4/host-cpu-c-abi.m4
index b9223241..80a83668 100644
--- a/gnulib-m4/host-cpu-c-abi.m4
+++ b/gnulib-m4/host-cpu-c-abi.m4
@@ -1,5 +1,6 @@
-# host-cpu-c-abi.m4 serial 15
-dnl Copyright (C) 2002-2022 Free Software Foundation, Inc.
+# host-cpu-c-abi.m4
+# serial 18
+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.
@@ -35,7 +36,7 @@ dnl * The same canonical name is used for different endiannesses. You can
dnl determine the endianness through preprocessor symbols:
dnl - 'arm': test __ARMEL__.
dnl - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL.
-dnl - 'powerpc64': test _BIG_ENDIAN vs. _LITTLE_ENDIAN.
+dnl - 'powerpc64': test __BIG_ENDIAN__ vs. __LITTLE_ENDIAN__.
dnl * The same name 'i386' is used for CPUs of type i386, i486, i586
dnl (Pentium), AMD K7, Pentium II, Pentium IV, etc., because
dnl - Instructions that do not exist on all of these CPUs (cmpxchg,
@@ -461,217 +462,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..b414bfca 100644
--- a/gnulib-m4/iconv.m4
+++ b/gnulib-m4/iconv.m4
@@ -1,5 +1,6 @@
-# iconv.m4 serial 26
-dnl Copyright (C) 2000-2002, 2007-2014, 2016-2022 Free Software Foundation,
+# iconv.m4
+# serial 28
+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 +39,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 +56,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 +69,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"
+ dnl Solaris 10, macOS 14.4.
+ gl_saved_LIBS="$LIBS"
if test $am_cv_lib_iconv = yes; then
LIBS="$LIBS $LIBICONV"
fi
@@ -113,6 +114,35 @@ AC_DEFUN([AM_ICONV_LINK],
iconv_close (cd_utf8_to_88591);
}
}
+ /* Test against macOS 14.4 bug: Failures are not distinguishable from
+ successful returns.
+ POSIX:2018 says: "The iconv() function shall ... return the number of
+ non-identical conversions performed."
+ But here, the conversion always does transliteration (the suffixes
+ "//TRANSLIT" and "//IGNORE" have no effect, nor does iconvctl()) and
+ does not report when it does a non-identical conversion. */
+ {
+ iconv_t cd_utf8_to_88591 = iconv_open ("ISO-8859-1", "UTF-8");
+ if (cd_utf8_to_88591 != (iconv_t)(-1))
+ {
+ static ICONV_CONST char input[] = "\305\202"; /* LATIN SMALL LETTER L WITH STROKE */
+ char buf[10];
+ ICONV_CONST char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_utf8_to_88591,
+ &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ /* Here:
+ With glibc, GNU libiconv (including macOS up to 13): res == (size_t)-1, errno == EILSEQ.
+ With musl libc, NetBSD 10, Solaris 11: res == 1.
+ With macOS 14.4: res == 0, output is "l". */
+ if (res == 0)
+ result |= 2;
+ iconv_close (cd_utf8_to_88591);
+ }
+ }
/* Test against Solaris 10 bug: Failures are not distinguishable from
successful returns. */
{
@@ -129,7 +159,7 @@ AC_DEFUN([AM_ICONV_LINK],
&inptr, &inbytesleft,
&outptr, &outbytesleft);
if (res == 0)
- result |= 2;
+ result |= 4;
iconv_close (cd_ascii_to_88591);
}
}
@@ -148,7 +178,7 @@ AC_DEFUN([AM_ICONV_LINK],
&inptr, &inbytesleft,
&outptr, &outbytesleft);
if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
- result |= 4;
+ result |= 8;
iconv_close (cd_88591_to_utf8);
}
}
@@ -168,7 +198,7 @@ AC_DEFUN([AM_ICONV_LINK],
&inptr, &inbytesleft,
&outptr, &outbytesleft);
if ((int)res > 0)
- result |= 8;
+ result |= 16;
iconv_close (cd_88591_to_utf8);
}
}
@@ -186,7 +216,7 @@ AC_DEFUN([AM_ICONV_LINK],
iconv_t cd4 = iconv_open ("utf8", "eucJP");
if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1)
&& cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1))
- result |= 16;
+ result |= 32;
if (cd1 != (iconv_t)(-1))
iconv_close (cd1);
if (cd2 != (iconv_t)(-1))
@@ -205,7 +235,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 +254,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..08ecb8c6 100644
--- a/gnulib-m4/iconv_h.m4
+++ b/gnulib-m4/iconv_h.m4
@@ -1,5 +1,6 @@
-# iconv_h.m4 serial 16
-dnl Copyright (C) 2007-2022 Free Software Foundation, Inc.
+# iconv_h.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.
diff --git a/gnulib-m4/iconv_open.m4 b/gnulib-m4/iconv_open.m4
index 1ed26cd8..61e62ece 100644
--- a/gnulib-m4/iconv_open.m4
+++ b/gnulib-m4/iconv_open.m4
@@ -1,5 +1,6 @@
-# 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 +17,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..03e85251 100644
--- a/gnulib-m4/include_next.m4
+++ b/gnulib-m4/include_next.m4
@@ -1,5 +1,6 @@
-# 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 +75,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..28ae9c06 100644
--- a/gnulib-m4/inet_pton.m4
+++ b/gnulib-m4/inet_pton.m4
@@ -1,5 +1,6 @@
-# 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 +37,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..f962bde1 100644
--- a/gnulib-m4/inline.m4
+++ b/gnulib-m4/inline.m4
@@ -1,5 +1,6 @@
-# inline.m4 serial 4
-dnl Copyright (C) 2006, 2009-2022 Free Software Foundation, Inc.
+# inline.m4
+# serial 4
+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..970c89bf 100644
--- a/gnulib-m4/intl-thread-locale.m4
+++ b/gnulib-m4/intl-thread-locale.m4
@@ -1,5 +1,6 @@
-# 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 +39,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 +83,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 +131,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 +140,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 +179,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 +193,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 +203,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..36b4eb62 100644
--- a/gnulib-m4/intlmacosx.m4
+++ b/gnulib-m4/intlmacosx.m4
@@ -1,5 +1,6 @@
-# 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 +21,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 +29,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 +44,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 +52,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 +60,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..72858ea8 100644
--- a/gnulib-m4/intmax_t.m4
+++ b/gnulib-m4/intmax_t.m4
@@ -1,5 +1,6 @@
-# intmax_t.m4 serial 9
-dnl Copyright (C) 1997-2004, 2006-2007, 2009-2022 Free Software Foundation,
+# intmax_t.m4
+# serial 9
+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..c43cd162 100644
--- a/gnulib-m4/inttypes.m4
+++ b/gnulib-m4/inttypes.m4
@@ -1,5 +1,6 @@
-# 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 +171,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..3b9da5b0 100644
--- a/gnulib-m4/inttypes_h.m4
+++ b/gnulib-m4/inttypes_h.m4
@@ -1,5 +1,6 @@
-# inttypes_h.m4 serial 10
-dnl Copyright (C) 1997-2004, 2006, 2008-2022 Free Software Foundation, Inc.
+# inttypes_h.m4
+# serial 10
+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..f4592e1e 100644
--- a/gnulib-m4/ioctl.m4
+++ b/gnulib-m4/ioctl.m4
@@ -1,5 +1,6 @@
-# ioctl.m4 serial 6
-dnl Copyright (C) 2008-2022 Free Software Foundation, Inc.
+# ioctl.m4
+# serial 6
+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..43bdd94f 100644
--- a/gnulib-m4/isblank.m4
+++ b/gnulib-m4/isblank.m4
@@ -1,5 +1,6 @@
-# isblank.m4 serial 3
-dnl Copyright (C) 2009-2022 Free Software Foundation, Inc.
+# isblank.m4
+# serial 3
+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..7f7d88d8 100644
--- a/gnulib-m4/isnand.m4
+++ b/gnulib-m4/isnand.m4
@@ -1,12 +1,13 @@
-# isnand.m4 serial 12
-dnl Copyright (C) 2007-2022 Free Software Foundation, Inc.
+# isnand.m4
+# serial 15
+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 Check how to get or define isnand().
-AC_DEFUN([gl_FUNC_ISNAND],
+AC_DEFUN_ONCE([gl_FUNC_ISNAND],
[
AC_REQUIRE([gl_MATH_H_DEFAULTS])
ISNAND_LIBM=
@@ -18,8 +19,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 +53,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 +69,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..c71e40fd 100644
--- a/gnulib-m4/isnanf.m4
+++ b/gnulib-m4/isnanf.m4
@@ -1,5 +1,6 @@
-# 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 +19,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 +94,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 +110,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 +181,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..dbdf9482 100644
--- a/gnulib-m4/isnanl.m4
+++ b/gnulib-m4/isnanl.m4
@@ -1,10 +1,11 @@
-# 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 +17,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 +88,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 +104,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 +232,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..4dc12d9a 100644
--- a/gnulib-m4/iswblank.m4
+++ b/gnulib-m4/iswblank.m4
@@ -1,5 +1,6 @@
-# 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 +11,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..f07feae4 100644
--- a/gnulib-m4/iswdigit.m4
+++ b/gnulib-m4/iswdigit.m4
@@ -1,5 +1,6 @@
-# iswdigit.m4 serial 3
-dnl Copyright (C) 2020-2022 Free Software Foundation, Inc.
+# iswdigit.m4
+# serial 9
+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.
@@ -10,8 +11,9 @@ AC_DEFUN([gl_FUNC_ISWDIGIT],
AC_REQUIRE([gl_WCTYPE_H])
AC_REQUIRE([gt_LOCALE_FR])
AC_REQUIRE([gt_LOCALE_JA])
- AC_REQUIRE([gt_LOCALE_FR_UTF8])
+ AC_REQUIRE([gt_LOCALE_EN_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.
@@ -24,14 +26,14 @@ AC_DEFUN([gl_FUNC_ISWDIGIT],
dnl is present.
changequote(,)dnl
case "$host_os" in
- # Guess no on FreeBSD, NetBSD, Solaris, native Windows.
- freebsd* | dragonfly* | netbsd* | solaris* | mingw*)
+ # Guess no on FreeBSD, NetBSD, OpenBSD, Solaris, native Windows, Haiku, Android.
+ freebsd* | dragonfly* | netbsd* | openbsd* | solaris* | mingw* | windows* | haiku* | *-android*)
gl_cv_func_iswdigit_works="guessing no" ;;
# Guess yes otherwise.
*) gl_cv_func_iswdigit_works="guessing yes" ;;
esac
changequote([,])dnl
- if test $LOCALE_FR != none || test $LOCALE_JA != none || test $LOCALE_FR_UTF8 != none || test $LOCALE_ZH_CN != none; then
+ if test $LOCALE_FR != none || test $LOCALE_JA != none || test "$LOCALE_EN_UTF8" != none || test $LOCALE_ZH_CN != none; then
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <locale.h>
@@ -63,7 +65,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,30 +74,33 @@ 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. */
+ /* This fails on NetBSD 10.0. */
/* U+FF11 FULLWIDTH DIGIT ONE */
is = for_character ("\243\261", 2);
if (!(is == 0))
result |= 2;
}
- if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+ if (strcmp ("$LOCALE_EN_UTF8", "none") != 0
+ && setlocale (LC_ALL, "$LOCALE_EN_UTF8") != NULL)
{
- /* This fails on FreeBSD 13.0, NetBSD 8.0, MSVC 14. */
+ /* This fails on FreeBSD 13.0, NetBSD 10.0, OpenBSD 7.5, MSVC 14, Haiku, Android. */
/* U+0663 ARABIC-INDIC DIGIT THREE */
is = for_character ("\331\243", 2);
if (!(is == 0))
result |= 4;
- /* This fails on FreeBSD 13.0, NetBSD 8.0, MSVC 14. */
+ /* This fails on FreeBSD 13.0, NetBSD 10.0, OpenBSD 7.5, MSVC 14, Haiku, Android. */
/* U+FF11 FULLWIDTH DIGIT ONE */
is = for_character ("\357\274\221", 3);
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. */
+ /* This fails on NetBSD 10.0, Solaris 10, Solaris 11.4. */
/* U+FF11 FULLWIDTH DIGIT ONE */
is = for_character ("\243\261", 2);
if (!(is == 0))
diff --git a/gnulib-m4/iswpunct.m4 b/gnulib-m4/iswpunct.m4
new file mode 100644
index 00000000..1edf58aa
--- /dev/null
+++ b/gnulib-m4/iswpunct.m4
@@ -0,0 +1,49 @@
+# 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..1a8e57b0 100644
--- a/gnulib-m4/iswxdigit.m4
+++ b/gnulib-m4/iswxdigit.m4
@@ -1,5 +1,6 @@
-# iswxdigit.m4 serial 3
-dnl Copyright (C) 2020-2022 Free Software Foundation, Inc.
+# iswxdigit.m4
+# serial 9
+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.
@@ -9,8 +10,9 @@ AC_DEFUN([gl_FUNC_ISWXDIGIT],
AC_REQUIRE([gl_WCTYPE_H_DEFAULTS])
AC_REQUIRE([gl_WCTYPE_H])
AC_REQUIRE([gt_LOCALE_JA])
- AC_REQUIRE([gt_LOCALE_FR_UTF8])
+ AC_REQUIRE([gt_LOCALE_EN_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.
@@ -23,14 +25,14 @@ AC_DEFUN([gl_FUNC_ISWXDIGIT],
dnl is present.
changequote(,)dnl
case "$host_os" in
- # Guess no on FreeBSD, NetBSD, Solaris, native Windows.
- freebsd* | dragonfly* | netbsd* | solaris* | mingw*)
+ # Guess no on FreeBSD, NetBSD, OpenBSD, Solaris, native Windows, Haiku, Android.
+ freebsd* | dragonfly* | netbsd* | openbsd* | solaris* | mingw* | windows* | haiku* | *-android*)
gl_cv_func_iswxdigit_works="guessing no" ;;
# Guess yes otherwise.
*) gl_cv_func_iswxdigit_works="guessing yes" ;;
esac
changequote([,])dnl
- if test $LOCALE_JA != none || test $LOCALE_FR_UTF8 != none || test $LOCALE_ZH_CN != none; then
+ if test $LOCALE_JA != none || test "$LOCALE_EN_UTF8" != none || test $LOCALE_ZH_CN != none; then
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <locale.h>
@@ -62,28 +64,31 @@ 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. */
+ /* This fails on NetBSD 10.0. */
/* U+FF21 FULLWIDTH LATIN CAPITAL LETTER A */
is = for_character ("\243\301", 2);
if (!(is == 0))
result |= 1;
}
- if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+ if (strcmp ("$LOCALE_EN_UTF8", "none") != 0
+ && setlocale (LC_ALL, "$LOCALE_EN_UTF8") != NULL)
{
- /* This fails on FreeBSD 13.0. */
+ /* This fails on FreeBSD 13.0, Haiku, Android. */
/* U+0663 ARABIC-INDIC DIGIT THREE */
is = for_character ("\331\243", 2);
if (!(is == 0))
result |= 2;
- /* This fails on MSVC 14. */
+ /* This fails on NetBSD 10.0, OpenBSD 7.5, MSVC 14, Haiku, Android. */
/* U+FF21 FULLWIDTH LATIN CAPITAL LETTER A */
is = for_character ("\357\274\241", 3);
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..5eee8a71 100644
--- a/gnulib-m4/langinfo_h.m4
+++ b/gnulib-m4/langinfo_h.m4
@@ -1,5 +1,6 @@
-# langinfo_h.m4 serial 12
-dnl Copyright (C) 2009-2022 Free Software Foundation, Inc.
+# langinfo_h.m4
+# serial 12
+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..28813483 100644
--- a/gnulib-m4/largefile.m4
+++ b/gnulib-m4/largefile.m4
@@ -1,19 +1,20 @@
+# largefile.m4
+# serial 2
+dnl Copyright 1992-1996, 1998-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.
+
# 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.
-# 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.
-
# The following macro works around a problem in Autoconf's AC_FUNC_FSEEKO:
# 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 +23,271 @@ AC_DEFUN([gl_SET_LARGEFILE_SOURCE],
[Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2).])
;;
esac
- ])
+ ]])
+)
+
+dnl Remove AC_SYS_YEAR2038_RECOMMENDED if unpatched Autoconf 2.72 or earlier.
+dnl Autoconf 2.72 still uses -n32, which is not a C preprocessor option,
+dnl and which was useful only on IRIX which is no longer supported.
+dnl This should be fixed in Autoconf 2.73.
+m4_ifdef([AC_SYS_YEAR2038_RECOMMENDED],
+ [m4_bmatch(m4_ifdef([_AC_SYS_LARGEFILE_OPTIONS],
+ [m4_defn([_AC_SYS_LARGEFILE_OPTIONS])],
+ ["-n32"]),
+ ["-n32"],
+ [m4_undefine([AC_SYS_YEAR2038_RECOMMENDED])])])
+
+m4_ifndef([AC_SYS_YEAR2038_RECOMMENDED], [
+# Fix up AC_SYS_YEAR2038_RECOMMENDED and related macros, even if
+# unpatched Autoconf 2.72 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 to support 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
+))
+
+# _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 support large files],
+ [ac_cv_sys_largefile_opts],
+ [ac_save_CPPFLAGS=$CPPFLAGS
+ ac_opt_found=no
+ for ac_opt in _AC_SYS_LARGEFILE_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_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.
+ CPPFLAGS="$CPPFLAGS -DFTYPE=ino_t"
+ AC_COMPILE_IFELSE([], [],
+ [CPPFLAGS="$CPPFLAGS -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
+ CPPFLAGS=$ac_save_CPPFLAGS
+ 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.])],
+
+ [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 +299,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 +314,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..35b14fe9 100644
--- a/gnulib-m4/lcmessage.m4
+++ b/gnulib-m4/lcmessage.m4
@@ -1,5 +1,6 @@
-# lcmessage.m4 serial 8
-dnl Copyright (C) 1995-2002, 2004-2005, 2008-2014, 2016, 2019-2022 Free
+# lcmessage.m4
+# serial 8
+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..aadc2bf4 100644
--- a/gnulib-m4/ldexpl.m4
+++ b/gnulib-m4/ldexpl.m4
@@ -1,5 +1,6 @@
-# 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 +25,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 +34,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 +42,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 +125,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..5da3eecf 100644
--- a/gnulib-m4/lib-ld.m4
+++ b/gnulib-m4/lib-ld.m4
@@ -1,5 +1,6 @@
-# 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 +30,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 +68,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 +98,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 +117,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..fb764d32 100644
--- a/gnulib-m4/lib-link.m4
+++ b/gnulib-m4/lib-link.m4
@@ -1,5 +1,6 @@
-# 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 +70,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 +90,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 +101,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 +225,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 +538,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 +683,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 +791,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..6277f72d 100644
--- a/gnulib-m4/lib-prefix.m4
+++ b/gnulib-m4/lib-prefix.m4
@@ -1,5 +1,6 @@
-# lib-prefix.m4 serial 20
-dnl Copyright (C) 2001-2005, 2008-2022 Free Software Foundation, Inc.
+# lib-prefix.m4
+# serial 23
+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 +127,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 +138,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
@@ -174,7 +175,7 @@ AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
AC_CACHE_CHECK([for ELF binary format], [gl_cv_elf],
[AC_EGREP_CPP([Extensible Linking Format],
- [#if defined __ELF__ || (defined __linux__ && defined __EDG__)
+ [#if defined __ELF__ || (defined __linux__ && (defined __EDG__ || defined __SUNPRO_C))
Extensible Linking Format
#endif
],
@@ -256,6 +257,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 +290,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 +307,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..21e0e442 100644
--- a/gnulib-m4/libunistring-base.m4
+++ b/gnulib-m4/libunistring-base.m4
@@ -1,5 +1,6 @@
-# libunistring-base.m4 serial 7
-dnl Copyright (C) 2010-2022 Free Software Foundation, Inc.
+# libunistring-base.m4
+# serial 9
+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 +19,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 +31,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,12 +127,36 @@ 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])
dnl Expands to a shell statement that evaluates to true if LIBUNISTRING_VERSION
dnl is less than the VERSION argument.
AC_DEFUN([gl_LIBUNISTRING_VERSION_CMP],
+[dnl VERSION = 999.9 means to evaluates to true always, i.e. to ignore
+dnl the installed libunistring regardless of its version.
+m4_if([$1], [999.9],
+[true],
[ { test "$HAVE_LIBUNISTRING" != yes \
|| {
dnl AS_LITERAL_IF exists and works fine since autoconf-2.59 at least.
@@ -138,7 +194,7 @@ AC_DEFUN([gl_LIBUNISTRING_VERSION_CMP],
}
])
}
- }])
+ }])])
dnl gl_LIBUNISTRING_ARG_OR_ZERO([ARG], [ORIG]) expands to ARG if it is not the
dnl same as ORIG, otherwise to 0.
diff --git a/gnulib-m4/limits-h.m4 b/gnulib-m4/limits-h.m4
index 5d5a5bf5..1b619e1e 100644
--- a/gnulib-m4/limits-h.m4
+++ b/gnulib-m4/limits-h.m4
@@ -1,10 +1,12 @@
-dnl Check whether limits.h has needed features.
-
-dnl Copyright 2016-2022 Free Software Foundation, Inc.
+# limits-h.m4
+# serial 1
+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.
+dnl Check whether limits.h has needed features.
+
dnl From Paul Eggert.
AC_DEFUN_ONCE([gl_LIMITS_H],
@@ -23,14 +25,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..807a5eed 100644
--- a/gnulib-m4/localcharset.m4
+++ b/gnulib-m4/localcharset.m4
@@ -1,5 +1,6 @@
-# localcharset.m4 serial 8
-dnl Copyright (C) 2002, 2004, 2006, 2009-2022 Free Software Foundation, Inc.
+# localcharset.m4
+# serial 8
+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..2dffa1df 100644
--- a/gnulib-m4/locale-ar.m4
+++ b/gnulib-m4/locale-ar.m4
@@ -1,5 +1,6 @@
-# locale-ar.m4 serial 9
-dnl Copyright (C) 2003, 2005-2022 Free Software Foundation, Inc.
+# locale-ar.m4
+# serial 12
+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 +8,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])
@@ -64,12 +65,13 @@ int main () {
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",
+ # "ar" or "ara" as "Arabic" or "Arabic_Saudi Arabia.1256",
+ # "en" or "eng" as "English" or "English_United States.1252",
# "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",
+ # "ja" or "jpn" 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.
@@ -84,7 +86,7 @@ int main () {
# - The usual locale name: ar_SA
# - The locale name with explicit encoding suffix: ar_SA.ISO-8859-6
# - The HP-UX locale name: ar_SA.iso88596
- # - The Solaris 7 locale name: ar
+ # - The Solaris 10 locale name: ar
# Also try ar_EG instead of ar_SA because Egypt is a large country too.
for gt_cv_locale_ar in ar_SA ar_SA.ISO-8859-6 ar_SA.iso88596 ar_EG ar_EG.ISO-8859-6 ar_EG.iso88596 ar none; do
if test $gt_cv_locale_ar = none; then
@@ -100,5 +102,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-en.m4 b/gnulib-m4/locale-en.m4
new file mode 100644
index 00000000..39d08a23
--- /dev/null
+++ b/gnulib-m4/locale-en.m4
@@ -0,0 +1,137 @@
+# locale-en.m4
+# serial 1
+dnl Copyright (C) 2003-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 Determine the name of an English (or American English) locale with
+dnl UTF-8 encoding.
+AC_DEFUN_ONCE([gt_LOCALE_EN_UTF8],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([AM_LANGINFO_CODESET])
+ AC_CACHE_CHECK([for an english Unicode locale], [gt_cv_locale_en_utf8], [
+ 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_en_utf8=en_US.UTF-8
+ ;;
+ *)
+ AC_LANG_CONFTEST([AC_LANG_SOURCE([[
+#include <locale.h>
+#include <time.h>
+#if HAVE_LANGINFO_CODESET
+# include <langinfo.h>
+#endif
+#include <stdlib.h>
+#include <string.h>
+struct tm t;
+char buf[16];
+int main () {
+ /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl
+ imitates locale dependent behaviour by looking at the environment
+ variables, and all locales use the UTF-8 encoding. */
+#if !(defined __BEOS__ || defined __HAIKU__)
+ /* Check whether the given locale name is recognized by the system. */
+# if defined _WIN32 && !defined __CYGWIN__
+ /* On native Windows, setlocale(category, "") looks at the system settings,
+ not at the environment variables. Also, when an encoding suffix such
+ as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE
+ category of the locale to "C". */
+ if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL
+ || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0)
+ return 1;
+# else
+ if (setlocale (LC_ALL, "") == NULL) return 1;
+# endif
+ /* Check whether nl_langinfo(CODESET) is "UTF-8" or equivalent. */
+# if HAVE_LANGINFO_CODESET
+ {
+ const char *cs = nl_langinfo (CODESET);
+ if (!(strcmp (cs, "UTF-8") == 0 || strcmp (cs, "UTF8") == 0
+ || strcmp (cs, "utf-8") == 0 || strcmp (cs, "utf8") == 0))
+ return 1;
+ }
+# endif
+# ifdef __CYGWIN__
+ /* On Cygwin, avoid locale names without encoding suffix, because the
+ locale_charset() function relies on the encoding suffix. Note that
+ LC_ALL is set on the command line. */
+ if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1;
+# endif
+ /* Check the third month name. */
+ t.tm_year = 1975 - 1900; t.tm_mon = 3 - 1; t.tm_mday = 24;
+ if (strftime (buf, sizeof (buf), "%B", &t) < 5 || strcmp (buf, "March") != 0)
+ return 1;
+#endif
+#if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy. */
+ /* Check whether the decimal separator is a dot. */
+ if (localeconv () ->decimal_point[0] != '.') return 1;
+#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" or "ara" as "Arabic" or "Arabic_Saudi Arabia.1256",
+ # "en" or "eng" as "English" or "English_United States.1252",
+ # "fr" or "fra" as "French" or "French_France.1252",
+ # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+ # "ja" or "jpn" as "Japanese" or "Japanese_Japan.932",
+ # and similar.
+ mingw* | windows*)
+ # Test for the hypothetical native Windows locale name.
+ if (LC_ALL='English_United States.65001' LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_en_utf8='English_United States.65001'
+ else
+ # None found.
+ gt_cv_locale_en_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 locale name with explicit encoding suffix first
+ # (this is necessary on Haiku).
+ if (LC_ALL=en_US.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_en_utf8=en_US.UTF-8
+ else
+ # Test for the locale name without encoding suffix.
+ if (LC_ALL=en_US LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_en_utf8=en_US
+ else
+ # Test for the Solaris 10 locale name.
+ if (LC_ALL=en.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
+ gt_cv_locale_en_utf8=en.UTF-8
+ else
+ # None found.
+ gt_cv_locale_en_utf8=none
+ fi
+ fi
+ fi
+ ;;
+ esac
+ fi
+ rm -fr conftest*
+ ;;
+ esac
+ ])
+ LOCALE_EN_UTF8="$gt_cv_locale_en_utf8"
+ case "$LOCALE_EN_UTF8" in #(
+ '' | *[[\"\$\'*@<:@]]*)
+ dnl The empty value occurs when the conftest.c program above could not
+ dnl be compiled. The other values might cause trouble with sh or make.
+ AC_MSG_WARN([invalid locale "$LOCALE_EN_UTF8"; assuming "none"])
+ LOCALE_EN_UTF8=none;;
+ esac
+ AC_SUBST([LOCALE_EN_UTF8])
+])
diff --git a/gnulib-m4/locale-fr.m4 b/gnulib-m4/locale-fr.m4
index 3753891f..3832c10d 100644
--- a/gnulib-m4/locale-fr.m4
+++ b/gnulib-m4/locale-fr.m4
@@ -1,5 +1,6 @@
-# locale-fr.m4 serial 20
-dnl Copyright (C) 2003, 2005-2022 Free Software Foundation, Inc.
+# locale-fr.m4
+# serial 24
+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 +8,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])
@@ -70,8 +71,9 @@ int main () {
if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1;
# if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy. */
/* Check whether the decimal separator is a comma.
- On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
- are nl_langinfo(RADIXCHAR) are both ".". */
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale
+ and on Haiku in the fr_FR.UTF-8 locale,
+ localeconv()->decimal_point are nl_langinfo(RADIXCHAR) are both ".". */
if (localeconv () ->decimal_point[0] != ',') return 1;
# endif
return 0;
@@ -81,12 +83,13 @@ int main () {
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",
+ # "ar" or "ara" as "Arabic" or "Arabic_Saudi Arabia.1256",
+ # "en" or "eng" as "English" or "English_United States.1252",
# "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",
+ # "ja" or "jpn" 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
@@ -116,7 +119,7 @@ int main () {
if (LC_ALL=fr_FR.iso88591 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
gt_cv_locale_fr=fr_FR.iso88591
else
- # Test for the Solaris 7 locale name.
+ # Test for the Solaris 10 locale name.
if (LC_ALL=fr LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
gt_cv_locale_fr=fr
else
@@ -133,15 +136,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
@@ -197,57 +216,90 @@ int main () {
#endif
#if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy. */
/* Check whether the decimal separator is a comma.
- On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point
- are nl_langinfo(RADIXCHAR) are both ".". */
+ On NetBSD 3.0 in the fr_FR.ISO8859-1 locale
+ and on Haiku in the fr_FR.UTF-8 locale,
+ localeconv()->decimal_point are nl_langinfo(RADIXCHAR) are both ".". */
if (localeconv () ->decimal_point[0] != ',') return 1;
#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" or "ara" as "Arabic" or "Arabic_Saudi Arabia.1256",
+ # "en" or "eng" as "English" or "English_United States.1252",
+ # "fr" or "fra" as "French" or "French_France.1252",
+ # "ge"(!) or "deu"(!) as "German" or "German_Germany.1252",
+ # "ja" or "jpn" 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 10 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..b94cd7ae 100644
--- a/gnulib-m4/locale-ja.m4
+++ b/gnulib-m4/locale-ja.m4
@@ -1,5 +1,6 @@
-# locale-ja.m4 serial 15
-dnl Copyright (C) 2003, 2005-2022 Free Software Foundation, Inc.
+# locale-ja.m4
+# serial 19
+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 +8,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])
@@ -85,12 +86,13 @@ int main ()
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",
+ # "ar" or "ara" as "Arabic" or "Arabic_Saudi Arabia.1256",
+ # "en" or "eng" as "English" or "English_United States.1252",
# "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",
+ # "ja" or "jpn" 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.
@@ -117,7 +119,7 @@ int main ()
if (LC_ALL=ja_JP.EUC LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
gt_cv_locale_ja=ja_JP.EUC
else
- # Test for the Solaris 7 locale name.
+ # Test for the Solaris 10 locale name.
if (LC_ALL=ja LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
gt_cv_locale_ja=ja
else
@@ -139,5 +141,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..a3ead69b 100644
--- a/gnulib-m4/locale-tr.m4
+++ b/gnulib-m4/locale-tr.m4
@@ -1,5 +1,6 @@
-# locale-tr.m4 serial 13
-dnl Copyright (C) 2003, 2005-2022 Free Software Foundation, Inc.
+# locale-tr.m4
+# serial 16
+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 +8,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])
@@ -78,12 +79,13 @@ int main () {
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",
+ # "ar" or "ara" as "Arabic" or "Arabic_Saudi Arabia.1256",
+ # "en" or "eng" as "English" or "English_United States.1252",
# "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",
+ # "ja" or "jpn" 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
@@ -105,7 +107,7 @@ int main () {
if (LC_ALL=tr_TR.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
gt_cv_locale_tr_utf8=tr_TR.UTF-8
else
- # Test for the Solaris 7 locale name.
+ # Test for the Solaris 10 locale name.
if (LC_ALL=tr.UTF-8 LC_TIME= LC_CTYPE= ./conftest; exit) 2>/dev/null; then
gt_cv_locale_tr_utf8=tr.UTF-8
else
@@ -122,5 +124,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..040cab0c 100644
--- a/gnulib-m4/locale-zh.m4
+++ b/gnulib-m4/locale-zh.m4
@@ -1,5 +1,6 @@
-# locale-zh.m4 serial 15
-dnl Copyright (C) 2003, 2005-2022 Free Software Foundation, Inc.
+# locale-zh.m4
+# serial 20
+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 +8,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])
@@ -21,6 +22,7 @@ AC_DEFUN([gt_LOCALE_ZH_CN],
#endif
#include <stdlib.h>
#include <string.h>
+#include <wchar.h>
struct tm t;
char buf[16];
int main ()
@@ -79,6 +81,19 @@ int main ()
single wide character. This excludes the GB2312 and GBK encodings. */
if (mblen ("\203\062\332\066", 5) != 4)
return 1;
+ /* Check whether mbrtowc accept this character one byte at a time.
+ This excludes NetBSD 10.0. */
+ if (sizeof (wchar_t) > 2)
+ {
+ wchar_t wc;
+ mbstate_t state;
+ memset (&state, 0, sizeof (state));
+ if (!(mbrtowc (&wc, "\203", 1, &state) == (size_t)(-2)
+ && mbrtowc (&wc, "\062", 1, &state) == (size_t)(-2)
+ && mbrtowc (&wc, "\332", 1, &state) == (size_t)(-2)
+ && mbrtowc (&wc, "\066", 1, &state) == 1))
+ return 1;
+ }
return 0;
#endif
}
@@ -86,12 +101,13 @@ int main ()
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",
+ # "ar" or "ara" as "Arabic" or "Arabic_Saudi Arabia.1256",
+ # "en" or "eng" as "English" or "English_United States.1252",
# "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",
+ # "ja" or "jpn" 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 +149,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..cd1c81ec 100644
--- a/gnulib-m4/locale_h.m4
+++ b/gnulib-m4/locale_h.m4
@@ -1,5 +1,6 @@
-# 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 +60,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 +155,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..d28dfe45 100644
--- a/gnulib-m4/localename.m4
+++ b/gnulib-m4/localename.m4
@@ -1,10 +1,11 @@
-# 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 +14,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 +54,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..eb0fc6a1 100644
--- a/gnulib-m4/lock.m4
+++ b/gnulib-m4/lock.m4
@@ -1,5 +1,6 @@
-# lock.m4 serial 14
-dnl Copyright (C) 2005-2022 Free Software Foundation, Inc.
+# lock.m4
+# serial 14
+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..f838e2cc 100644
--- a/gnulib-m4/lstat.m4
+++ b/gnulib-m4/lstat.m4
@@ -1,10 +1,9 @@
-# serial 33
-
-# Copyright (C) 1997-2001, 2003-2022 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.
+# lstat.m4
+# serial 36
+dnl Copyright (C) 1997-2001, 2003-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 Jim Meyering.
@@ -18,7 +17,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 +55,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..ee6df5c3 100644
--- a/gnulib-m4/malloc.m4
+++ b/gnulib-m4/malloc.m4
@@ -1,5 +1,6 @@
-# malloc.m4 serial 28
-dnl Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+# malloc.m4
+# serial 34
+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 +17,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 +27,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" ;;
@@ -43,6 +45,11 @@ AC_DEFUN([gl_FUNC_MALLOC_GNU],
[
AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
AC_REQUIRE([gl_FUNC_MALLOC_POSIX])
+
+ dnl Through the dependency on module extensions-aix, _LINUX_SOURCE_COMPAT
+ dnl gets defined already before this macro gets invoked. This helps
+ dnl if !(__VEC__ || __AIXVEC), and doesn't hurt otherwise.
+
REPLACE_MALLOC_FOR_MALLOC_GNU="$REPLACE_MALLOC_FOR_MALLOC_POSIX"
if test $REPLACE_MALLOC_FOR_MALLOC_GNU = 0; then
_AC_FUNC_MALLOC_IF([], [REPLACE_MALLOC_FOR_MALLOC_GNU=1])
@@ -128,7 +135,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..9e09d22c 100644
--- a/gnulib-m4/malloca.m4
+++ b/gnulib-m4/malloca.m4
@@ -1,5 +1,6 @@
-# malloca.m4 serial 2
-dnl Copyright (C) 2003-2004, 2006-2007, 2009-2022 Free Software Foundation,
+# malloca.m4
+# serial 2
+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..7e69629c 100644
--- a/gnulib-m4/math_h.m4
+++ b/gnulib-m4/math_h.m4
@@ -1,5 +1,6 @@
-# math_h.m4 serial 125
-dnl Copyright (C) 2007-2022 Free Software Foundation, Inc.
+# math_h.m4
+# serial 140
+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.
@@ -42,15 +43,21 @@ AC_DEFUN_ONCE([gl_MATH_H],
cbrt cbrtf cbrtl ceilf ceill copysign copysignf copysignl cosf cosl coshf
expf expl exp2 exp2f exp2l expm1 expm1f expm1l
fabsf fabsl floorf floorl fma fmaf fmal
- fmod fmodf fmodl frexpf frexpl hypotf hypotl
+ fmod fmodf fmodl frexpf frexpl
+ getpayload getpayloadf getpayloadl
+ hypotf hypotl
ilogb ilogbf ilogbl
ldexpf ldexpl
log logf logl log10 log10f log10l log1p log1pf log1pl log2 log2f log2l
- logb logbf logbl
+ logb logbf logbl logp1 log1pf logp1l
modf modff modfl powf
remainder remainderf remainderl
- rint rintf rintl round roundf roundl sinf sinl sinhf sqrtf sqrtl
- tanf tanl tanhf trunc truncf truncl])
+ rint rintf rintl round roundf roundl
+ setpayload setpayloadf setpayloadl
+ setpayloadsig setpayloadsigf setpayloadsigl
+ sinf sinl sinhf sqrtf sqrtl
+ tanf tanl tanhf totalorder totalorderf totalorderl totalordermag
+ totalordermagf totalordermagl trunc truncf truncl])
])
# gl_MATH_MODULE_INDICATOR([modulename])
@@ -113,6 +120,9 @@ AC_DEFUN([gl_MATH_H_REQUIRE_DEFAULTS],
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREXPF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREXP])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREXPL])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPAYLOAD])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPAYLOADF])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPAYLOADL])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_HYPOT])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_HYPOTF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_HYPOTL])
@@ -125,6 +135,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])
@@ -142,6 +153,9 @@ AC_DEFUN([gl_MATH_H_REQUIRE_DEFAULTS],
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGB])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGBF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGBL])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGP1])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGP1F])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGP1L])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MODF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MODFF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MODFL])
@@ -155,6 +169,12 @@ AC_DEFUN([gl_MATH_H_REQUIRE_DEFAULTS],
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ROUND])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ROUNDF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ROUNDL])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETPAYLOAD])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETPAYLOADF])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETPAYLOADL])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETPAYLOADSIG])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETPAYLOADSIGF])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETPAYLOADSIGL])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGNBIT])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SINF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SINL])
@@ -164,6 +184,12 @@ 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_TOTALORDERMAG])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TOTALORDERMAGF])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TOTALORDERMAGL])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNC])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNCF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNCL])
@@ -209,6 +235,9 @@ AC_DEFUN([gl_MATH_H_DEFAULTS],
HAVE_FMODF=1; AC_SUBST([HAVE_FMODF])
HAVE_FMODL=1; AC_SUBST([HAVE_FMODL])
HAVE_FREXPF=1; AC_SUBST([HAVE_FREXPF])
+ HAVE_GETPAYLOAD=1; AC_SUBST([HAVE_GETPAYLOAD])
+ HAVE_GETPAYLOADF=1; AC_SUBST([HAVE_GETPAYLOADF])
+ HAVE_GETPAYLOADL=1; AC_SUBST([HAVE_GETPAYLOADL])
HAVE_HYPOTF=1; AC_SUBST([HAVE_HYPOTF])
HAVE_HYPOTL=1; AC_SUBST([HAVE_HYPOTL])
HAVE_ILOGB=1; AC_SUBST([HAVE_ILOGB])
@@ -227,6 +256,9 @@ AC_DEFUN([gl_MATH_H_DEFAULTS],
HAVE_LOG1PL=1; AC_SUBST([HAVE_LOG1PL])
HAVE_LOGBF=1; AC_SUBST([HAVE_LOGBF])
HAVE_LOGBL=1; AC_SUBST([HAVE_LOGBL])
+ HAVE_LOGP1=1; AC_SUBST([HAVE_LOGP1])
+ HAVE_LOGP1F=1; AC_SUBST([HAVE_LOGP1F])
+ HAVE_LOGP1L=1; AC_SUBST([HAVE_LOGP1L])
HAVE_MODFF=1; AC_SUBST([HAVE_MODFF])
HAVE_MODFL=1; AC_SUBST([HAVE_MODFL])
HAVE_POWF=1; AC_SUBST([HAVE_POWF])
@@ -234,6 +266,12 @@ AC_DEFUN([gl_MATH_H_DEFAULTS],
HAVE_REMAINDERF=1; AC_SUBST([HAVE_REMAINDERF])
HAVE_RINT=1; AC_SUBST([HAVE_RINT])
HAVE_RINTL=1; AC_SUBST([HAVE_RINTL])
+ HAVE_SETPAYLOAD=1; AC_SUBST([HAVE_SETPAYLOAD])
+ HAVE_SETPAYLOADF=1; AC_SUBST([HAVE_SETPAYLOADF])
+ HAVE_SETPAYLOADL=1; AC_SUBST([HAVE_SETPAYLOADL])
+ HAVE_SETPAYLOADSIG=1; AC_SUBST([HAVE_SETPAYLOADSIG])
+ HAVE_SETPAYLOADSIGF=1; AC_SUBST([HAVE_SETPAYLOADSIGF])
+ HAVE_SETPAYLOADSIGL=1; AC_SUBST([HAVE_SETPAYLOADSIGL])
HAVE_SINF=1; AC_SUBST([HAVE_SINF])
HAVE_SINL=1; AC_SUBST([HAVE_SINL])
HAVE_SINHF=1; AC_SUBST([HAVE_SINHF])
@@ -242,6 +280,12 @@ 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_TOTALORDERMAG=1; AC_SUBST([HAVE_TOTALORDERMAG])
+ HAVE_TOTALORDERMAGF=1; AC_SUBST([HAVE_TOTALORDERMAGF])
+ HAVE_TOTALORDERMAGL=1; AC_SUBST([HAVE_TOTALORDERMAGL])
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])
@@ -309,6 +353,9 @@ AC_DEFUN([gl_MATH_H_DEFAULTS],
REPLACE_FREXPF=0; AC_SUBST([REPLACE_FREXPF])
REPLACE_FREXP=0; AC_SUBST([REPLACE_FREXP])
REPLACE_FREXPL=0; AC_SUBST([REPLACE_FREXPL])
+ REPLACE_GETPAYLOAD=0; AC_SUBST([REPLACE_GETPAYLOAD])
+ REPLACE_GETPAYLOADF=0; AC_SUBST([REPLACE_GETPAYLOADF])
+ REPLACE_GETPAYLOADL=0; AC_SUBST([REPLACE_GETPAYLOADL])
REPLACE_HUGE_VAL=0; AC_SUBST([REPLACE_HUGE_VAL])
REPLACE_HYPOT=0; AC_SUBST([REPLACE_HYPOT])
REPLACE_HYPOTF=0; AC_SUBST([REPLACE_HYPOTF])
@@ -319,6 +366,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 +402,12 @@ 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_TOTALORDERMAG=0; AC_SUBST([REPLACE_TOTALORDERMAG])
+ REPLACE_TOTALORDERMAGF=0; AC_SUBST([REPLACE_TOTALORDERMAGF])
+ REPLACE_TOTALORDERMAGL=0; AC_SUBST([REPLACE_TOTALORDERMAGL])
REPLACE_TRUNC=0; AC_SUBST([REPLACE_TRUNC])
REPLACE_TRUNCF=0; AC_SUBST([REPLACE_TRUNCF])
REPLACE_TRUNCL=0; AC_SUBST([REPLACE_TRUNCL])
@@ -364,7 +418,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..b84eb4dc 100644
--- a/gnulib-m4/mbchar.m4
+++ b/gnulib-m4/mbchar.m4
@@ -1,5 +1,6 @@
-# mbchar.m4 serial 9
-dnl Copyright (C) 2005-2007, 2009-2022 Free Software Foundation, Inc.
+# mbchar.m4
+# serial 9
+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..e1f4ae65 100644
--- a/gnulib-m4/mbiter.m4
+++ b/gnulib-m4/mbiter.m4
@@ -1,5 +1,6 @@
-# mbiter.m4 serial 7
-dnl Copyright (C) 2005, 2008-2022 Free Software Foundation, Inc.
+# mbiter.m4
+# serial 7
+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..4da0712b
--- /dev/null
+++ b/gnulib-m4/mbrtoc32.m4
@@ -0,0 +1,325 @@
+# mbrtoc32.m4
+# serial 21
+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
+ gl_MBRTOC32_UTF8_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
+ case "$gl_cv_func_mbrtoc32_utf8_locale_works" in
+ *yes) ;;
+ *) AC_DEFINE([MBRTOC32_MULTIBYTE_LOCALE_BUG], [1],
+ [Define if the mbrtoc32 function does not accept the input bytes one-by-one.])
+ REPLACE_MBRTOC32=1
+ dnl Our replacement mbrtoc32 can handle UTF-8, but not GB18030.
+ LOCALE_ZH_CN=none
+ ;;
+ 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 when it's fed the bytes one-by-one in an UTF-8
+dnl locale.
+
+AC_DEFUN([gl_MBRTOC32_UTF8_LOCALE],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CACHE_CHECK([whether mbrtoc32 works in an UTF-8 locale],
+ [gl_cv_func_mbrtoc32_utf8_locale_works],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <locale.h>
+ #ifdef __HAIKU__
+ #include <stdint.h>
+ #endif
+ #include <uchar.h>
+ ]], [[
+ char *locale = setlocale (LC_ALL, "en_US.UTF-8");
+ if (locale)
+ {
+ /* This test fails on Cygwin 3.5.3. */
+ mbstate_t state = { 0, };
+ char32_t uc = 0xDEADBEEF;
+ /* \360\237\220\203 = U+0001F403 */
+ if (mbrtoc32 (&uc, "\360", 1, &state) != (size_t)-2)
+ return 1;
+ if (mbrtoc32 (&uc, "\237", 1, &state) != (size_t)-2)
+ return 2;
+ if (mbrtoc32 (&uc, "\220", 1, &state) != (size_t)-2)
+ return 3;
+ if (mbrtoc32 (&uc, "\203", 1, &state) != 1)
+ return 4;
+ if (uc != 0x0001F403)
+ return 5;
+ }
+ return 0;
+ ]])],
+ [gl_cv_func_mbrtoc32_utf8_locale_works=yes],
+ [gl_cv_func_mbrtoc32_utf8_locale_works=no],
+ [case "$host_os" in
+ # Guess no on Cygwin.
+ cygwin*) gl_cv_func_mbrtoc32_utf8_locale_works="guessing no" ;;
+ *) gl_cv_func_mbrtoc32_utf8_locale_works="$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])
+ 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], [
+ AC_REQUIRE([gl_C32RTOMB_SANITYCHECK])
+ :
+])
diff --git a/gnulib-m4/mbrtowc.m4 b/gnulib-m4/mbrtowc.m4
index ec8716b5..ad7a7c73 100644
--- a/gnulib-m4/mbrtowc.m4
+++ b/gnulib-m4/mbrtowc.m4
@@ -1,5 +1,6 @@
-# mbrtowc.m4 serial 38 -*- coding: utf-8 -*-
-dnl Copyright (C) 2001-2002, 2004-2005, 2008-2022 Free Software Foundation,
+# mbrtowc.m4
+# serial 46
+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 +92,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 +120,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 +132,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
@@ -154,7 +160,7 @@ AC_DEFUN([gl_MBRTOWC_INCOMPLETE_STATE],
[
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([gt_LOCALE_JA])
- AC_REQUIRE([gt_LOCALE_FR_UTF8])
+ AC_REQUIRE([gt_LOCALE_EN_UTF8])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
AC_CACHE_CHECK([whether mbrtowc handles incomplete characters],
[gl_cv_func_mbrtowc_incomplete_state],
@@ -194,7 +200,7 @@ int main ()
[gl_cv_func_mbrtowc_incomplete_state=no],
[:])
else
- if test $LOCALE_FR_UTF8 != none; then
+ if test "$LOCALE_EN_UTF8" != none; then
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <locale.h>
@@ -202,7 +208,7 @@ int main ()
#include <wchar.h>
int main ()
{
- if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+ if (setlocale (LC_ALL, "$LOCALE_EN_UTF8") != NULL)
{
const char input[] = "B\303\274\303\237er"; /* "Büßer" */
mbstate_t state;
@@ -282,7 +288,7 @@ dnl Result is gl_cv_func_mbrtowc_null_arg1.
AC_DEFUN([gl_MBRTOWC_NULL_ARG1],
[
AC_REQUIRE([AC_PROG_CC])
- AC_REQUIRE([gt_LOCALE_FR_UTF8])
+ AC_REQUIRE([gt_LOCALE_EN_UTF8])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
AC_CACHE_CHECK([whether mbrtowc handles a NULL pwc argument],
[gl_cv_func_mbrtowc_null_arg1],
@@ -297,7 +303,7 @@ changequote(,)dnl
*) gl_cv_func_mbrtowc_null_arg1="guessing yes" ;;
esac
changequote([,])dnl
- if test $LOCALE_FR_UTF8 != none; then
+ if test "$LOCALE_EN_UTF8" != none; then
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <locale.h>
@@ -308,7 +314,7 @@ int main ()
{
int result = 0;
- if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+ if (setlocale (LC_ALL, "$LOCALE_EN_UTF8") != NULL)
{
char input[] = "\303\237er";
mbstate_t state;
@@ -345,7 +351,7 @@ dnl Result is gl_cv_func_mbrtowc_null_arg2.
AC_DEFUN([gl_MBRTOWC_NULL_ARG2],
[
AC_REQUIRE([AC_PROG_CC])
- AC_REQUIRE([gt_LOCALE_FR_UTF8])
+ AC_REQUIRE([gt_LOCALE_EN_UTF8])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
AC_CACHE_CHECK([whether mbrtowc handles a NULL string argument],
[gl_cv_func_mbrtowc_null_arg2],
@@ -360,7 +366,7 @@ changequote(,)dnl
*) gl_cv_func_mbrtowc_null_arg2="guessing yes" ;;
esac
changequote([,])dnl
- if test $LOCALE_FR_UTF8 != none; then
+ if test "$LOCALE_EN_UTF8" != none; then
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <locale.h>
@@ -368,7 +374,7 @@ changequote([,])dnl
#include <wchar.h>
int main ()
{
- if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+ if (setlocale (LC_ALL, "$LOCALE_EN_UTF8") != NULL)
{
mbstate_t state;
wchar_t wc;
@@ -398,7 +404,7 @@ dnl Result is gl_cv_func_mbrtowc_retval.
AC_DEFUN([gl_MBRTOWC_RETVAL],
[
AC_REQUIRE([AC_PROG_CC])
- AC_REQUIRE([gt_LOCALE_FR_UTF8])
+ AC_REQUIRE([gt_LOCALE_EN_UTF8])
AC_REQUIRE([gt_LOCALE_JA])
AC_REQUIRE([AC_CANONICAL_HOST])
AC_CACHE_CHECK([whether mbrtowc has a correct return value],
@@ -408,14 +414,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
+ if test "$LOCALE_EN_UTF8" != none || test $LOCALE_JA != none \
+ || { case "$host_os" in mingw* | windows*) true;; *) false;; esac; }; then
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <locale.h>
@@ -426,7 +434,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_EN_UTF8", "none") != 0
+ && setlocale (LC_ALL, "$LOCALE_EN_UTF8") != NULL)
{
char input[] = "B\303\274\303\237er"; /* "Büßer" */
mbstate_t state;
@@ -442,7 +451,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 +587,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>
@@ -639,8 +649,8 @@ int main ()
[:])
;;
*)
- AC_REQUIRE([gt_LOCALE_FR_UTF8])
- if test $LOCALE_FR_UTF8 != none; then
+ AC_REQUIRE([gt_LOCALE_EN_UTF8])
+ if test "$LOCALE_EN_UTF8" != none; then
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <locale.h>
@@ -648,7 +658,7 @@ int main ()
#include <wchar.h>
int main ()
{
- if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL)
+ if (setlocale (LC_ALL, "$LOCALE_EN_UTF8") != NULL)
{
wchar_t wc = (wchar_t) 0xBADFACE;
mbstate_t state;
@@ -677,31 +687,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 +716,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 +747,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..10c86ba9 100644
--- a/gnulib-m4/mbsinit.m4
+++ b/gnulib-m4/mbsinit.m4
@@ -1,5 +1,6 @@
-# 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 +33,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..66d65cd7 100644
--- a/gnulib-m4/mbstate_t.m4
+++ b/gnulib-m4/mbstate_t.m4
@@ -1,5 +1,6 @@
-# mbstate_t.m4 serial 14
-dnl Copyright (C) 2000-2002, 2008-2022 Free Software Foundation, Inc.
+# mbstate_t.m4
+# serial 14
+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..603b0c1a 100644
--- a/gnulib-m4/mbtowc.m4
+++ b/gnulib-m4/mbtowc.m4
@@ -1,5 +1,6 @@
-# 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 +9,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..31ff2dac 100644
--- a/gnulib-m4/memchr.m4
+++ b/gnulib-m4/memchr.m4
@@ -1,5 +1,6 @@
-# memchr.m4 serial 18
-dnl Copyright (C) 2002-2004, 2009-2022 Free Software Foundation, Inc.
+# memchr.m4
+# serial 20
+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.
@@ -48,7 +49,7 @@ AC_DEFUN_ONCE([gl_FUNC_MEMCHR],
if (fd >= 0)
# endif
{
- int pagesize = getpagesize ();
+ long int pagesize = sysconf (_SC_PAGESIZE);
char *two_pages =
(char *) mmap (NULL, 2 * pagesize, PROT_READ | PROT_WRITE,
flags, fd, 0);
@@ -85,12 +86,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/mempcpy.m4 b/gnulib-m4/mempcpy.m4
new file mode 100644
index 00000000..377fda3c
--- /dev/null
+++ b/gnulib-m4/mempcpy.m4
@@ -0,0 +1,30 @@
+# mempcpy.m4
+# serial 14
+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,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_MEMPCPY],
+[
+ dnl Persuade glibc <string.h> to declare mempcpy().
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+ dnl The mempcpy() declaration in lib/string.in.h uses 'restrict'.
+ AC_REQUIRE([AC_C_RESTRICT])
+
+ AC_REQUIRE([gl_STRING_H_DEFAULTS])
+ gl_CHECK_FUNCS_ANDROID([mempcpy], [[#include <string.h>]])
+ if test $ac_cv_func_mempcpy = no; then
+ HAVE_MEMPCPY=0
+ case "$gl_cv_onwards_func_mempcpy" in
+ future*) REPLACE_MEMPCPY=1 ;;
+ esac
+ fi
+])
+
+# Prerequisites of lib/mempcpy.c.
+AC_DEFUN([gl_PREREQ_MEMPCPY], [
+ :
+])
diff --git a/gnulib-m4/memrchr.m4 b/gnulib-m4/memrchr.m4
new file mode 100644
index 00000000..d8c931e9
--- /dev/null
+++ b/gnulib-m4/memrchr.m4
@@ -0,0 +1,24 @@
+# memrchr.m4
+# serial 11
+dnl Copyright (C) 2002-2003, 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,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_MEMRCHR],
+[
+ dnl Persuade glibc <string.h> to declare memrchr().
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+ AC_REQUIRE([gl_STRING_H_DEFAULTS])
+ AC_CHECK_DECLS_ONCE([memrchr])
+ if test $ac_cv_have_decl_memrchr = no; then
+ HAVE_DECL_MEMRCHR=0
+ fi
+
+ AC_CHECK_FUNCS([memrchr])
+])
+
+# Prerequisites of lib/memrchr.c.
+AC_DEFUN([gl_PREREQ_MEMRCHR], [:])
diff --git a/gnulib-m4/minmax.m4 b/gnulib-m4/minmax.m4
index b9767397..bc7d0c34 100644
--- a/gnulib-m4/minmax.m4
+++ b/gnulib-m4/minmax.m4
@@ -1,5 +1,6 @@
-# minmax.m4 serial 4
-dnl Copyright (C) 2005, 2009-2022 Free Software Foundation, Inc.
+# minmax.m4
+# serial 4
+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..61ca0120 100644
--- a/gnulib-m4/mmap-anon.m4
+++ b/gnulib-m4/mmap-anon.m4
@@ -1,5 +1,6 @@
-# mmap-anon.m4 serial 12
-dnl Copyright (C) 2005, 2007, 2009-2022 Free Software Foundation, Inc.
+# mmap-anon.m4
+# serial 12
+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..0d5c2808 100644
--- a/gnulib-m4/mode_t.m4
+++ b/gnulib-m4/mode_t.m4
@@ -1,5 +1,6 @@
-# mode_t.m4 serial 2
-dnl Copyright (C) 2009-2022 Free Software Foundation, Inc.
+# mode_t.m4
+# serial 2
+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..7919ff12 100644
--- a/gnulib-m4/msvc-inval.m4
+++ b/gnulib-m4/msvc-inval.m4
@@ -1,5 +1,6 @@
-# msvc-inval.m4 serial 1
-dnl Copyright (C) 2011-2022 Free Software Foundation, Inc.
+# msvc-inval.m4
+# serial 1
+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..007c7620 100644
--- a/gnulib-m4/msvc-nothrow.m4
+++ b/gnulib-m4/msvc-nothrow.m4
@@ -1,5 +1,6 @@
-# msvc-nothrow.m4 serial 1
-dnl Copyright (C) 2011-2022 Free Software Foundation, Inc.
+# msvc-nothrow.m4
+# serial 1
+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..3af29d39 100644
--- a/gnulib-m4/multiarch.m4
+++ b/gnulib-m4/multiarch.m4
@@ -1,5 +1,6 @@
-# multiarch.m4 serial 9
-dnl Copyright (C) 2008-2022 Free Software Foundation, Inc.
+# multiarch.m4
+# serial 9
+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..0d4de892 100644
--- a/gnulib-m4/musl.m4
+++ b/gnulib-m4/musl.m4
@@ -1,5 +1,6 @@
-# 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 +14,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..0ec451cb
--- /dev/null
+++ b/gnulib-m4/nan-mips.m4
@@ -0,0 +1,90 @@
+# 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..a7281b8a 100644
--- a/gnulib-m4/nanosleep.m4
+++ b/gnulib-m4/nanosleep.m4
@@ -1,15 +1,13 @@
-# serial 42
+# nanosleep.m4
+# serial 47
+dnl Copyright (C) 1999-2001, 2003-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 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.
-
-# 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.
AC_DEFUN([gl_FUNC_NANOSLEEP],
[
@@ -21,15 +19,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 +114,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 +145,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..926f7f95 100644
--- a/gnulib-m4/netinet_in_h.m4
+++ b/gnulib-m4/netinet_in_h.m4
@@ -1,5 +1,6 @@
-# netinet_in_h.m4 serial 6
-dnl Copyright (C) 2006-2022 Free Software Foundation, Inc.
+# netinet_in_h.m4
+# serial 6
+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..cbe8fe82 100644
--- a/gnulib-m4/nocrash.m4
+++ b/gnulib-m4/nocrash.m4
@@ -1,5 +1,6 @@
-# nocrash.m4 serial 5
-dnl Copyright (C) 2005, 2009-2022 Free Software Foundation, Inc.
+# nocrash.m4
+# serial 5
+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/off64_t.m4 b/gnulib-m4/off64_t.m4
new file mode 100644
index 00000000..34fa21eb
--- /dev/null
+++ b/gnulib-m4/off64_t.m4
@@ -0,0 +1,31 @@
+# off64_t.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.
+
+dnl Check whether <sys/types.h> defines the 'off64_t' type.
+dnl Set HAVE_OFF64_T.
+
+AC_DEFUN([gl_TYPE_OFF64_T],
+[
+ dnl Persuade glibc <sys/types.h>, <stdio.h>, <fcntl.h>, <unistd.h>, <aio.h>
+ dnl to define off64_t.
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+ AC_CACHE_CHECK([for off64_t], [gl_cv_off64_t],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <sys/types.h>]],
+ [[int x = sizeof (off64_t *) + sizeof (off64_t);
+ return !x;]])],
+ [gl_cv_off64_t=yes], [gl_cv_off64_t=no])])
+
+ if test $gl_cv_off64_t != no; then
+ HAVE_OFF64_T=1
+ else
+ HAVE_OFF64_T=0
+ fi
+ AC_SUBST([HAVE_OFF64_T])
+])
diff --git a/gnulib-m4/off_t.m4 b/gnulib-m4/off_t.m4
index 0890adaf..db6035db 100644
--- a/gnulib-m4/off_t.m4
+++ b/gnulib-m4/off_t.m4
@@ -1,5 +1,6 @@
-# off_t.m4 serial 1
-dnl Copyright (C) 2012-2022 Free Software Foundation, Inc.
+# off_t.m4
+# serial 1
+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/once.m4 b/gnulib-m4/once.m4
new file mode 100644
index 00000000..6b0d3239
--- /dev/null
+++ b/gnulib-m4/once.m4
@@ -0,0 +1,13 @@
+# once.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.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([gl_ONCE],
+[
+ AC_REQUIRE([gl_THREADLIB])
+])
diff --git a/gnulib-m4/open-cloexec.m4 b/gnulib-m4/open-cloexec.m4
index 16cd5ec4..6defdfb4 100644
--- a/gnulib-m4/open-cloexec.m4
+++ b/gnulib-m4/open-cloexec.m4
@@ -1,10 +1,12 @@
-# Test whether O_CLOEXEC is defined.
-
-dnl Copyright 2017-2022 Free Software Foundation, Inc.
+# open-cloexec.m4
+# serial 1
+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.
+# Test whether O_CLOEXEC is defined.
+
AC_DEFUN([gl_PREPROC_O_CLOEXEC],
[
AC_CACHE_CHECK([for O_CLOEXEC],
diff --git a/gnulib-m4/open-slash.m4 b/gnulib-m4/open-slash.m4
index 4fbf491a..03460e42 100644
--- a/gnulib-m4/open-slash.m4
+++ b/gnulib-m4/open-slash.m4
@@ -1,5 +1,6 @@
-# open-slash.m4 serial 2
-dnl Copyright (C) 2007-2022 Free Software Foundation, Inc.
+# open-slash.m4
+# serial 2
+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..62a11a11 100644
--- a/gnulib-m4/open.m4
+++ b/gnulib-m4/open.m4
@@ -1,5 +1,6 @@
-# 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 +10,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/openat.m4 b/gnulib-m4/openat.m4
new file mode 100644
index 00000000..e91f58f4
--- /dev/null
+++ b/gnulib-m4/openat.m4
@@ -0,0 +1,39 @@
+# openat.m4
+# serial 46
+dnl Copyright (C) 2004-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.
+
+# See if we need to use our replacement for Solaris' openat et al functions.
+
+# Written by Jim Meyering.
+
+AC_DEFUN([gl_FUNC_OPENAT],
+[
+ AC_REQUIRE([gl_FCNTL_H_DEFAULTS])
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_CHECK_FUNCS_ONCE([openat])
+ AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
+ AC_REQUIRE([gl_PREPROC_O_CLOEXEC])
+ case $ac_cv_func_openat+$gl_cv_func_lstat_dereferences_slashed_symlink+$gl_cv_macro_O_CLOEXEC in
+ yes+*yes+yes)
+ ;;
+ yes+*)
+ # Solaris 10 lacks O_CLOEXEC.
+ # Solaris 9 has *at functions, but uniformly mishandles trailing
+ # slash in all of them.
+ REPLACE_OPENAT=1
+ ;;
+ *)
+ HAVE_OPENAT=0
+ ;;
+ esac
+])
+
+# Prerequisites of lib/openat.c.
+AC_DEFUN([gl_PREREQ_OPENAT],
+[
+ AC_REQUIRE([gl_PROMOTED_TYPE_MODE_T])
+ :
+])
diff --git a/gnulib-m4/opendir.m4 b/gnulib-m4/opendir.m4
new file mode 100644
index 00000000..d7bea481
--- /dev/null
+++ b/gnulib-m4/opendir.m4
@@ -0,0 +1,32 @@
+# opendir.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.
+
+AC_DEFUN([gl_FUNC_OPENDIR],
+[
+ AC_REQUIRE([gl_DIRENT_H_DEFAULTS])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+ AC_CHECK_FUNCS([opendir])
+ if test $ac_cv_func_opendir = no; then
+ HAVE_OPENDIR=0
+ else
+ dnl Replace opendir() on native Windows and OS/2 kLIBC,
+ dnl to support fdopendir().
+ AC_REQUIRE([gl_DIRENT_DIR])
+ if test $DIR_HAS_FD_MEMBER = 0; then
+ REPLACE_OPENDIR=1
+ fi
+ dnl Replace opendir() for supporting the gnulib-defined fchdir() function,
+ dnl to keep fchdir's bookkeeping up-to-date.
+ m4_ifdef([gl_FUNC_FCHDIR], [
+ gl_TEST_FCHDIR
+ if test $HAVE_FCHDIR = 0; then
+ REPLACE_OPENDIR=1
+ fi
+ ])
+ fi
+])
diff --git a/gnulib-m4/pathmax.m4 b/gnulib-m4/pathmax.m4
index 44add990..4280837f 100644
--- a/gnulib-m4/pathmax.m4
+++ b/gnulib-m4/pathmax.m4
@@ -1,5 +1,6 @@
-# pathmax.m4 serial 11
-dnl Copyright (C) 2002-2003, 2005-2006, 2009-2022 Free Software Foundation,
+# pathmax.m4
+# serial 11
+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..29af054e 100644
--- a/gnulib-m4/perror.m4
+++ b/gnulib-m4/perror.m4
@@ -1,5 +1,6 @@
-# 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 +11,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 +49,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 +69,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..cf7a0396 100644
--- a/gnulib-m4/pipe.m4
+++ b/gnulib-m4/pipe.m4
@@ -1,5 +1,6 @@
-# pipe.m4 serial 2
-dnl Copyright (C) 2010-2022 Free Software Foundation, Inc.
+# pipe.m4
+# serial 2
+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..db6d1899 100644
--- a/gnulib-m4/printf-frexp.m4
+++ b/gnulib-m4/printf-frexp.m4
@@ -1,5 +1,6 @@
-# printf-frexp.m4 serial 5
-dnl Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+# printf-frexp.m4
+# serial 5
+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..a4f67c4f 100644
--- a/gnulib-m4/printf-frexpl.m4
+++ b/gnulib-m4/printf-frexpl.m4
@@ -1,5 +1,6 @@
-# printf-frexpl.m4 serial 10
-dnl Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+# printf-frexpl.m4
+# serial 10
+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..a6daa1a6 100644
--- a/gnulib-m4/printf.m4
+++ b/gnulib-m4/printf.m4
@@ -1,5 +1,6 @@
-# printf.m4 serial 73
-dnl Copyright (C) 2003, 2007-2022 Free Software Foundation, Inc.
+# printf.m4
+# serial 95
+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 +64,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 +87,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 +103,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 +225,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 +333,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 +357,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 +557,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 +572,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
@@ -525,6 +616,7 @@ static double zero = 0.0;
int main ()
{
int result = 0;
+ /* This fails on FreeBSD 5.2.1, Solaris 11.4. */
if (sprintf (buf, "%a %d", 3.1416015625, 33, 44, 55) < 0
|| (strcmp (buf, "0x1.922p+1 33") != 0
&& strcmp (buf, "0x3.244p+0 33") != 0
@@ -536,27 +628,29 @@ int main ()
&& strcmp (buf, "-0X3.244P+0 33") != 0
&& strcmp (buf, "-0X6.488P-1 33") != 0
&& strcmp (buf, "-0XC.91P-2 33") != 0))
- result |= 2;
- /* This catches a FreeBSD 13.0 bug: it doesn't round. */
+ result |= 1;
+ /* This catches a Mac OS X 10.5, FreeBSD 6.4, NetBSD 10.0 bug:
+ it doesn't round. */
if (sprintf (buf, "%.2a %d", 1.51, 33, 44, 55) < 0
|| (strcmp (buf, "0x1.83p+0 33") != 0
&& strcmp (buf, "0x3.05p-1 33") != 0
&& strcmp (buf, "0x6.0ap-2 33") != 0
&& strcmp (buf, "0xc.14p-3 33") != 0))
- result |= 4;
- /* This catches a Mac OS X 10.12.4 (Darwin 16.5) bug: it doesn't round. */
+ result |= 2;
+ /* This catches a macOS 14 (Darwin 23), FreeBSD 14.0, OpenBSD 7.5, AIX 7.3,
+ Solaris 11.4 bug: it doesn't round. */
if (sprintf (buf, "%.0a %d", 1.51, 33, 44, 55) < 0
|| (strcmp (buf, "0x2p+0 33") != 0
&& strcmp (buf, "0x3p-1 33") != 0
&& strcmp (buf, "0x6p-2 33") != 0
&& strcmp (buf, "0xcp-3 33") != 0))
result |= 4;
- /* This catches a FreeBSD 6.1 bug. See
+ /* This catches a Mac OS X 10.5, FreeBSD 6.4 bug. See
<https://lists.gnu.org/r/bug-gnulib/2007-04/msg00107.html> */
if (sprintf (buf, "%010a %d", 1.0 / zero, 33, 44, 55) < 0
|| buf[0] == '0')
result |= 8;
- /* This catches a Mac OS X 10.3.9 (Darwin 7.9) bug. */
+ /* This catches a Mac OS X 10.3.9 (Darwin 7.9), FreeBSD 6.4 bug. */
if (sprintf (buf, "%.1a", 1.999) < 0
|| (strcmp (buf, "0x1.0p+1") != 0
&& strcmp (buf, "0x2.0p+0") != 0
@@ -564,7 +658,8 @@ int main ()
&& strcmp (buf, "0x8.0p-2") != 0))
result |= 16;
/* This catches the same Mac OS X 10.3.9 (Darwin 7.9) bug and also a
- glibc 2.4 bug <https://sourceware.org/bugzilla/show_bug.cgi?id=2908>. */
+ glibc 2.4 bug <https://sourceware.org/bugzilla/show_bug.cgi?id=2908>
+ and a FreeBSD 6.4, NetBSD 10.0 bug. */
if (sprintf (buf, "%.1La", 1.999L) < 0
|| (strcmp (buf, "0x1.0p+1") != 0
&& strcmp (buf, "0x2.0p+0") != 0
@@ -591,11 +686,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 +698,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 +848,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 +866,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,10 +895,16 @@ AC_DEFUN([gl_PRINTF_DIRECTIVE_N],
[
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
+#include <signal.h>
#include <stdio.h>
-#include <stdlib.h>
#include <string.h>
+#if defined _WIN32 && !defined __CYGWIN__
+# include <stdlib.h>
+#else
+# include <unistd.h>
+#endif
#ifdef _MSC_VER
+#include <crtdbg.h>
#include <inttypes.h>
/* See page about "Parameter Validation" on msdn.microsoft.com.
<https://docs.microsoft.com/en-us/cpp/c-runtime-library/parameter-validation>
@@ -706,6 +918,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 ()
@@ -713,7 +931,11 @@ int main ()
int count = -1;
#ifdef _MSC_VER
_set_invalid_parameter_handler (invalid_parameter_handler);
+ /* Also avoid an Abort/Retry/Ignore dialog in debug builds.
+ <https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/crtsetreportmode> */
+ _CrtSetReportMode (_CRT_ASSERT, 0);
#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 +949,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 +1033,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 +1101,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 +1127,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 +1172,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 +1215,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 +1262,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 +1370,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 +1555,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 +1591,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 +1660,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 +1688,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,8 +1718,14 @@ AC_DEFUN([gl_SNPRINTF_DIRECTIVE_N],
[
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
+#include <signal.h>
#include <stdio.h>
#include <string.h>
+#if defined _WIN32 && !defined __CYGWIN__
+# include <stdlib.h>
+#else
+# include <unistd.h>
+#endif
#if HAVE_SNPRINTF
# define my_snprintf snprintf
#else
@@ -1417,11 +1740,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 +1777,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 +1806,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 +1854,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 +1931,320 @@ 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, Haiku 2022, NetBSD 10.0 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 NetBSD.
+ netbsd*) gl_cv_func_swprintf_directive_la="guessing no";;
+ # 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..23d1fadd 100644
--- a/gnulib-m4/pselect.m4
+++ b/gnulib-m4/pselect.m4
@@ -1,5 +1,6 @@
-# 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 +55,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-cond.m4 b/gnulib-m4/pthread-cond.m4
new file mode 100644
index 00000000..b9bd9a4b
--- /dev/null
+++ b/gnulib-m4/pthread-cond.m4
@@ -0,0 +1,37 @@
+# pthread-cond.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.
+
+AC_DEFUN([gl_PTHREAD_COND],
+[
+ AC_REQUIRE([gl_PTHREAD_H])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+
+ 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.
+ REPLACE_PTHREAD_COND_INIT=1
+ REPLACE_PTHREAD_CONDATTR_INIT=1
+ REPLACE_PTHREAD_CONDATTR_DESTROY=1
+ REPLACE_PTHREAD_COND_WAIT=1
+ REPLACE_PTHREAD_COND_TIMEDWAIT=1
+ REPLACE_PTHREAD_COND_SIGNAL=1
+ REPLACE_PTHREAD_COND_BROADCAST=1
+ REPLACE_PTHREAD_COND_DESTROY=1
+ else
+ if test $HAVE_PTHREAD_H = 0; then
+ HAVE_PTHREAD_COND_INIT=0
+ HAVE_PTHREAD_CONDATTR_INIT=0
+ HAVE_PTHREAD_CONDATTR_DESTROY=0
+ HAVE_PTHREAD_COND_WAIT=0
+ HAVE_PTHREAD_COND_TIMEDWAIT=0
+ HAVE_PTHREAD_COND_SIGNAL=0
+ HAVE_PTHREAD_COND_BROADCAST=0
+ HAVE_PTHREAD_COND_DESTROY=0
+ fi
+ fi
+])
diff --git a/gnulib-m4/pthread-mutex.m4 b/gnulib-m4/pthread-mutex.m4
new file mode 100644
index 00000000..7a0ea0f2
--- /dev/null
+++ b/gnulib-m4/pthread-mutex.m4
@@ -0,0 +1,72 @@
+# pthread-mutex.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.
+
+AC_DEFUN([gl_PTHREAD_MUTEX],
+[
+ AC_REQUIRE([gl_PTHREAD_H])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+
+ 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.
+ REPLACE_PTHREAD_MUTEX_INIT=1
+ REPLACE_PTHREAD_MUTEXATTR_INIT=1
+ REPLACE_PTHREAD_MUTEXATTR_GETTYPE=1
+ REPLACE_PTHREAD_MUTEXATTR_SETTYPE=1
+ REPLACE_PTHREAD_MUTEXATTR_GETROBUST=1
+ REPLACE_PTHREAD_MUTEXATTR_SETROBUST=1
+ REPLACE_PTHREAD_MUTEXATTR_DESTROY=1
+ REPLACE_PTHREAD_MUTEX_LOCK=1
+ REPLACE_PTHREAD_MUTEX_TRYLOCK=1
+ REPLACE_PTHREAD_MUTEX_TIMEDLOCK=1
+ REPLACE_PTHREAD_MUTEX_UNLOCK=1
+ REPLACE_PTHREAD_MUTEX_DESTROY=1
+ else
+ if test $HAVE_PTHREAD_H = 0; then
+ HAVE_PTHREAD_MUTEX_INIT=0
+ HAVE_PTHREAD_MUTEXATTR_INIT=0
+ HAVE_PTHREAD_MUTEXATTR_GETTYPE=0
+ HAVE_PTHREAD_MUTEXATTR_SETTYPE=0
+ HAVE_PTHREAD_MUTEXATTR_GETROBUST=0
+ HAVE_PTHREAD_MUTEXATTR_SETROBUST=0
+ HAVE_PTHREAD_MUTEXATTR_DESTROY=0
+ HAVE_PTHREAD_MUTEX_LOCK=0
+ HAVE_PTHREAD_MUTEX_TRYLOCK=0
+ dnl HAVE_PTHREAD_MUTEX_TIMEDLOCK is set in pthread_mutex_timedlock.m4.
+ HAVE_PTHREAD_MUTEX_UNLOCK=0
+ HAVE_PTHREAD_MUTEX_DESTROY=0
+ else
+ AC_CACHE_CHECK([for pthread_mutexattr_getrobust],
+ [gl_cv_func_pthread_mutexattr_getrobust],
+ [saved_LIBS="$LIBS"
+ LIBS="$LIBS $LIBPMULTITHREAD"
+ AC_LINK_IFELSE(
+ [AC_LANG_SOURCE(
+ [[extern
+ #ifdef __cplusplus
+ "C"
+ #endif
+ int pthread_mutexattr_getrobust (void);
+ int main ()
+ {
+ return pthread_mutexattr_getrobust ();
+ }
+ ]])],
+ [gl_cv_func_pthread_mutexattr_getrobust=yes],
+ [gl_cv_func_pthread_mutexattr_getrobust=no])
+ LIBS="$saved_LIBS"
+ ])
+ if test $gl_cv_func_pthread_mutexattr_getrobust = no; then
+ HAVE_PTHREAD_MUTEXATTR_GETROBUST=0
+ HAVE_PTHREAD_MUTEXATTR_SETROBUST=0
+ AC_DEFINE([PTHREAD_MUTEXATTR_ROBUST_UNIMPLEMENTED], [1],
+ [Define if the 'robust' attribute of pthread_mutex* doesn't exist.])
+ fi
+ fi
+ fi
+])
diff --git a/gnulib-m4/pthread-once.m4 b/gnulib-m4/pthread-once.m4
new file mode 100644
index 00000000..46b8840e
--- /dev/null
+++ b/gnulib-m4/pthread-once.m4
@@ -0,0 +1,36 @@
+# pthread-once.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.
+
+AC_DEFUN([gl_PTHREAD_ONCE],
+[
+ AC_REQUIRE([gl_PTHREAD_H])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+
+ 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.
+ REPLACE_PTHREAD_ONCE=1
+ else
+ if test $HAVE_PTHREAD_H = 0; then
+ HAVE_PTHREAD_ONCE=0
+ else
+ dnl Work around Cygwin 3.5.3 bug.
+ AC_CACHE_CHECK([whether pthread_once works],
+ [gl_cv_func_pthread_once_works],
+ [case "$host_os" in
+ cygwin*) gl_cv_func_pthread_once_works="guessing no" ;;
+ *) gl_cv_func_pthread_once_works="yes" ;;
+ esac
+ ])
+ case "$gl_cv_func_pthread_once_works" in
+ *yes) ;;
+ *) REPLACE_PTHREAD_ONCE=1 ;;
+ esac
+ fi
+ fi
+])
diff --git a/gnulib-m4/pthread-rwlock.m4 b/gnulib-m4/pthread-rwlock.m4
new file mode 100644
index 00000000..0e203606
--- /dev/null
+++ b/gnulib-m4/pthread-rwlock.m4
@@ -0,0 +1,461 @@
+# pthread-rwlock.m4
+# serial 7
+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.
+
+AC_DEFUN([gl_PTHREAD_RWLOCK],
+[
+ AC_REQUIRE([gl_PTHREAD_H])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+
+ 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.
+ REPLACE_PTHREAD_RWLOCK_INIT=1
+ REPLACE_PTHREAD_RWLOCKATTR_INIT=1
+ REPLACE_PTHREAD_RWLOCKATTR_DESTROY=1
+ REPLACE_PTHREAD_RWLOCK_RDLOCK=1
+ REPLACE_PTHREAD_RWLOCK_WRLOCK=1
+ REPLACE_PTHREAD_RWLOCK_TRYRDLOCK=1
+ REPLACE_PTHREAD_RWLOCK_TRYWRLOCK=1
+ REPLACE_PTHREAD_RWLOCK_TIMEDRDLOCK=1
+ REPLACE_PTHREAD_RWLOCK_TIMEDWRLOCK=1
+ REPLACE_PTHREAD_RWLOCK_UNLOCK=1
+ REPLACE_PTHREAD_RWLOCK_DESTROY=1
+ else
+ if test $HAVE_PTHREAD_H = 0; then
+ HAVE_PTHREAD_RWLOCK_INIT=0
+ HAVE_PTHREAD_RWLOCKATTR_INIT=0
+ HAVE_PTHREAD_RWLOCKATTR_DESTROY=0
+ HAVE_PTHREAD_RWLOCK_RDLOCK=0
+ HAVE_PTHREAD_RWLOCK_WRLOCK=0
+ HAVE_PTHREAD_RWLOCK_TRYRDLOCK=0
+ HAVE_PTHREAD_RWLOCK_TRYWRLOCK=0
+ HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK=0
+ HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK=0
+ HAVE_PTHREAD_RWLOCK_UNLOCK=0
+ HAVE_PTHREAD_RWLOCK_DESTROY=0
+ else
+ dnl On Mac OS X 10.4, the pthread_rwlock_* functions exist but are not
+ dnl usable because PTHREAD_RWLOCK_INITIALIZER is not defined.
+ dnl On Android 4.3, the pthread_rwlock_* functions are declared in
+ dnl <pthread.h> but don't exist in libc.
+ AC_CACHE_CHECK([for pthread_rwlock_init],
+ [gl_cv_func_pthread_rwlock_init],
+ [case "$host_os" in
+ darwin*)
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#include <pthread.h>
+ pthread_rwlock_t l = PTHREAD_RWLOCK_INITIALIZER;
+ ]])],
+ [gl_cv_func_pthread_rwlock_init=yes],
+ [gl_cv_func_pthread_rwlock_init=no])
+ ;;
+ *)
+ saved_LIBS="$LIBS"
+ LIBS="$LIBS $LIBPMULTITHREAD"
+ AC_LINK_IFELSE(
+ [AC_LANG_SOURCE(
+ [[extern
+ #ifdef __cplusplus
+ "C"
+ #endif
+ int pthread_rwlock_init (void);
+ int main ()
+ {
+ return pthread_rwlock_init ();
+ }
+ ]])],
+ [gl_cv_func_pthread_rwlock_init=yes],
+ [gl_cv_func_pthread_rwlock_init=no])
+ LIBS="$saved_LIBS"
+ ;;
+ esac
+ ])
+ if test $gl_cv_func_pthread_rwlock_init = no; then
+ REPLACE_PTHREAD_RWLOCK_INIT=1
+ REPLACE_PTHREAD_RWLOCKATTR_INIT=1
+ REPLACE_PTHREAD_RWLOCKATTR_DESTROY=1
+ REPLACE_PTHREAD_RWLOCK_RDLOCK=1
+ REPLACE_PTHREAD_RWLOCK_WRLOCK=1
+ REPLACE_PTHREAD_RWLOCK_TRYRDLOCK=1
+ REPLACE_PTHREAD_RWLOCK_TRYWRLOCK=1
+ REPLACE_PTHREAD_RWLOCK_TIMEDRDLOCK=1
+ REPLACE_PTHREAD_RWLOCK_TIMEDWRLOCK=1
+ REPLACE_PTHREAD_RWLOCK_UNLOCK=1
+ REPLACE_PTHREAD_RWLOCK_DESTROY=1
+ AC_DEFINE([PTHREAD_RWLOCK_UNIMPLEMENTED], [1],
+ [Define if all pthread_rwlock* functions don't exist.])
+ else
+ dnl On Mac OS X 10.5, FreeBSD 5.2.1, OpenBSD 3.8, AIX 5.1, HP-UX 11,
+ dnl IRIX 6.5, Solaris 9, Cygwin, the pthread_rwlock_timed*lock functions
+ dnl don't exist, although the other pthread_rwlock* functions exist.
+ AC_CHECK_DECL([pthread_rwlock_timedrdlock], ,
+ [HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK=0
+ HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK=0
+ AC_DEFINE([PTHREAD_RWLOCK_LACKS_TIMEOUT], [1],
+ [Define if the functions pthread_rwlock_timedrdlock and pthread_rwlock_timedwrlock don't exist.])
+ ],
+ [[#include <pthread.h>]])
+ dnl In glibc ≥ 2.25 on Linux, test-pthread-rwlock-waitqueue reports
+ dnl "This implementation always prefers readers.", and this wait queue
+ dnl handling is unsuitable, because it leads to writer starvation:
+ dnl On machines with 8 or more CPUs, test-pthread-rwlock may never
+ dnl terminate. See
+ dnl <https://lists.gnu.org/archive/html/bug-gnulib/2024-06/msg00291.html>
+ dnl <https://lists.gnu.org/archive/html/bug-gnulib/2024-07/msg00081.html>
+ dnl for details.
+ AC_CACHE_CHECK([for reasonable pthread_rwlock wait queue handling],
+ [gl_cv_func_pthread_rwlock_good_waitqueue],
+ [case "$host_os" in
+ linux*-gnu*)
+ saved_LIBS="$LIBS"
+ LIBS="$LIBS $LIBPMULTITHREAD"
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+/* This test is a simplified variant of tests/test-pthread-rwlock-waitqueue.c. */
+#include <pthread.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+#if defined __hppa
+# define STEP_INTERVAL 20000000 /* nanoseconds */
+#else
+# define STEP_INTERVAL 10000000 /* nanoseconds */
+#endif
+
+static pthread_rwlock_t lock;
+
+static pthread_rwlock_t sprintf_lock;
+
+struct locals
+{
+ const char *name;
+ unsigned int wait_before;
+ unsigned int wait_after;
+ char *result;
+};
+
+static void *
+reader_func (void *arg)
+{
+ struct locals *l = arg;
+ int err;
+
+ if (l->wait_before > 0)
+ {
+ struct timespec duration;
+ duration.tv_sec = l->wait_before / 1000000000;
+ duration.tv_nsec = l->wait_before % 1000000000;
+ nanosleep (&duration, NULL);
+ }
+ err = pthread_rwlock_rdlock (&lock);
+ if (err)
+ {
+ fprintf (stderr, "pthread_rwlock_rdlock failed, error = %d\n", err);
+ abort ();
+ }
+ if (pthread_rwlock_wrlock (&sprintf_lock))
+ {
+ fprintf (stderr, "pthread_rwlock_wrlock on sprintf_lock failed\n");
+ abort ();
+ }
+ sprintf (l->result + strlen (l->result), " %s", l->name);
+ if (pthread_rwlock_unlock (&sprintf_lock))
+ {
+ fprintf (stderr, "pthread_rwlock_unlock on sprintf_lock failed\n");
+ abort ();
+ }
+ if (l->wait_after > 0)
+ {
+ struct timespec duration;
+ duration.tv_sec = l->wait_after / 1000000000;
+ duration.tv_nsec = l->wait_after % 1000000000;
+ nanosleep (&duration, NULL);
+ }
+ err = pthread_rwlock_unlock (&lock);
+ if (err)
+ {
+ fprintf (stderr, "pthread_rwlock_unlock failed, error = %d\n", err);
+ abort ();
+ }
+
+ return NULL;
+}
+
+static void *
+writer_func (void *arg)
+{
+ struct locals *l = arg;
+ int err;
+
+ if (l->wait_before > 0)
+ {
+ struct timespec duration;
+ duration.tv_sec = l->wait_before / 1000000000;
+ duration.tv_nsec = l->wait_before % 1000000000;
+ nanosleep (&duration, NULL);
+ }
+ err = pthread_rwlock_wrlock (&lock);
+ if (err)
+ {
+ fprintf (stderr, "pthread_rwlock_rdlock failed, error = %d\n", err);
+ abort ();
+ }
+ if (pthread_rwlock_wrlock (&sprintf_lock))
+ {
+ fprintf (stderr, "pthread_rwlock_wrlock on sprintf_lock failed\n");
+ abort ();
+ }
+ sprintf (l->result + strlen (l->result), " %s", l->name);
+ if (pthread_rwlock_unlock (&sprintf_lock))
+ {
+ fprintf (stderr, "pthread_rwlock_unlock on sprintf_lock failed\n");
+ abort ();
+ }
+ if (l->wait_after > 0)
+ {
+ struct timespec duration;
+ duration.tv_sec = l->wait_after / 1000000000;
+ duration.tv_nsec = l->wait_after % 1000000000;
+ nanosleep (&duration, NULL);
+ }
+ err = pthread_rwlock_unlock (&lock);
+ if (err)
+ {
+ fprintf (stderr, "pthread_rwlock_unlock failed, error = %d\n", err);
+ abort ();
+ }
+
+ return NULL;
+}
+
+static const char *
+do_test (const char *rw_string)
+{
+ size_t n = strlen (rw_string);
+ int err;
+ char resultbuf[100];
+
+ char **names = (char **) malloc (n * sizeof (char *));
+ for (size_t i = 0; i < n; i++)
+ {
+ char name[12];
+ sprintf (name, "%c%u", rw_string[i], (unsigned int) (i+1));
+ names[i] = strdup (name);
+ }
+
+ resultbuf[0] = '\0';
+
+ /* Create the threads. */
+ struct locals *locals = (struct locals *) malloc (n * sizeof (struct locals));
+ pthread_t *threads = (pthread_t *) malloc (n * sizeof (pthread_t));
+ for (size_t i = 0; i < n; i++)
+ {
+ locals[i].name = names[i];
+ locals[i].wait_before = i * STEP_INTERVAL;
+ locals[i].wait_after = (i == 0 ? n * STEP_INTERVAL : 0);
+ locals[i].result = resultbuf;
+ err = pthread_create (&threads[i], NULL,
+ rw_string[i] == 'R' ? reader_func :
+ rw_string[i] == 'W' ? writer_func :
+ (abort (), NULL),
+ &locals[i]);
+ if (err)
+ {
+ fprintf (stderr, "pthread_create failed to create thread %u, error = %d\n",
+ (unsigned int) (i+1), err);
+ abort ();
+ }
+ }
+
+ /* Wait until the threads are done. */
+ for (size_t i = 0; i < n; i++)
+ {
+ void *retcode;
+ err = pthread_join (threads[i], &retcode);
+ if (err)
+ {
+ fprintf (stderr, "pthread_join failed to wait for thread %u, error = %d\n",
+ (unsigned int) (i+1), err);
+ abort ();
+ }
+ }
+
+ /* Clean up. */
+ free (threads);
+ free (locals);
+ for (size_t i = 0; i < n; i++)
+ free (names[i]);
+ free (names);
+
+ return strdup (resultbuf);
+}
+
+static bool
+startswith (const char *str, const char *prefix)
+{
+ return strncmp (str, prefix, strlen (prefix)) == 0;
+}
+
+static int
+find_wait_queue_handling (void)
+{
+ bool final_r_prefers_readers = true;
+ bool final_w_prefers_readers = true;
+
+ /* Perform the test a few times, so that in case of a non-deterministic
+ behaviour that happens to look like deterministic in one round, we get
+ a higher probability of finding that it is non-deterministic. */
+ for (int repeat = 3; repeat > 0; repeat--)
+ {
+ bool r_prefers_readers = false;
+ bool w_prefers_readers = false;
+
+ {
+ const char * RWR = do_test ("RWR");
+ const char * RWRR = do_test ("RWRR");
+ const char * RWRW = do_test ("RWRW");
+ const char * RWWR = do_test ("RWWR");
+ const char * RWRRR = do_test ("RWRRR");
+ const char * RWRRW = do_test ("RWRRW");
+ const char * RWRWR = do_test ("RWRWR");
+ const char * RWRWW = do_test ("RWRWW");
+ const char * RWWRR = do_test ("RWWRR");
+ const char * RWWRW = do_test ("RWWRW");
+ const char * RWWWR = do_test ("RWWWR");
+
+ if ( startswith (RWR, " R1 R")
+ && startswith (RWRR, " R1 R")
+ && startswith (RWRW, " R1 R")
+ && startswith (RWWR, " R1 R")
+ && startswith (RWRRR, " R1 R")
+ && startswith (RWRRW, " R1 R")
+ && startswith (RWRWR, " R1 R")
+ && startswith (RWRWW, " R1 R")
+ && startswith (RWWRR, " R1 R")
+ && startswith (RWWRW, " R1 R")
+ && startswith (RWWWR, " R1 R"))
+ r_prefers_readers = true;
+ }
+
+ {
+ const char * WRR = do_test ("WRR");
+ const char * WRW = do_test ("WRW");
+ const char * WWR = do_test ("WWR");
+ const char * WRRR = do_test ("WRRR");
+ const char * WRRW = do_test ("WRRW");
+ const char * WRWR = do_test ("WRWR");
+ const char * WRWW = do_test ("WRWW");
+ const char * WWRR = do_test ("WWRR");
+ const char * WWRW = do_test ("WWRW");
+ const char * WWWR = do_test ("WWWR");
+ const char * WRRRR = do_test ("WRRRR");
+ const char * WRRRW = do_test ("WRRRW");
+ const char * WRRWR = do_test ("WRRWR");
+ const char * WRRWW = do_test ("WRRWW");
+ const char * WRWRR = do_test ("WRWRR");
+ const char * WRWRW = do_test ("WRWRW");
+ const char * WRWWR = do_test ("WRWWR");
+ const char * WRWWW = do_test ("WRWWW");
+ const char * WWRRR = do_test ("WWRRR");
+ const char * WWRRW = do_test ("WWRRW");
+ const char * WWRWR = do_test ("WWRWR");
+ const char * WWRWW = do_test ("WWRWW");
+ const char * WWWRR = do_test ("WWWRR");
+ const char * WWWRW = do_test ("WWWRW");
+ const char * WWWWR = do_test ("WWWWR");
+
+ if ( startswith (WRR, " W1 R")
+ && startswith (WRW, " W1 R")
+ && startswith (WWR, " W1 R")
+ && startswith (WRRR, " W1 R")
+ && startswith (WRRW, " W1 R")
+ && startswith (WRWR, " W1 R")
+ && startswith (WRWW, " W1 R")
+ && startswith (WWRR, " W1 R")
+ && startswith (WWRW, " W1 R")
+ && startswith (WWWR, " W1 R")
+ && startswith (WRRRR, " W1 R")
+ && startswith (WRRRW, " W1 R")
+ && startswith (WRRWR, " W1 R")
+ && startswith (WRRWW, " W1 R")
+ && startswith (WRWRR, " W1 R")
+ && startswith (WRWRW, " W1 R")
+ && startswith (WRWWR, " W1 R")
+ && startswith (WRWWW, " W1 R")
+ && startswith (WWRRR, " W1 R")
+ && startswith (WWRRW, " W1 R")
+ && startswith (WWRWR, " W1 R")
+ && startswith (WWRWW, " W1 R")
+ && startswith (WWWRR, " W1 R")
+ && startswith (WWWRW, " W1 R")
+ && startswith (WWWWR, " W1 R"))
+ w_prefers_readers = true;
+ }
+
+ final_r_prefers_readers &= r_prefers_readers;
+ final_w_prefers_readers &= w_prefers_readers;
+ }
+
+ /* The wait queue handling is unsuitable if it always prefers readers,
+ because it leads to writer starvation: On machines with 8 or more CPUs,
+ test-pthread-rwlock may never terminate. */
+ return final_r_prefers_readers && final_w_prefers_readers;
+}
+
+int
+main ()
+{
+ /* Initialize the sprintf_lock. */
+ if (pthread_rwlock_init (&sprintf_lock, NULL))
+ {
+ fprintf (stderr, "pthread_rwlock_init failed\n");
+ abort ();
+ }
+
+ /* Find the wait queue handling of a default-initialized lock. */
+ if (pthread_rwlock_init (&lock, NULL))
+ {
+ fprintf (stderr, "pthread_rwlock_init failed\n");
+ abort ();
+ }
+ {
+ int fail = find_wait_queue_handling ();
+ return fail;
+ }
+}
+ ]])
+ ],
+ [gl_cv_func_pthread_rwlock_good_waitqueue=yes],
+ [gl_cv_func_pthread_rwlock_good_waitqueue=no],
+ [dnl Guess no on glibc/Linux.
+ gl_cv_func_pthread_rwlock_good_waitqueue="guessing no"
+ ])
+ LIBS="$saved_LIBS"
+ ;;
+ *) dnl Guess yes on other platforms.
+ gl_cv_func_pthread_rwlock_good_waitqueue="guessing yes"
+ ;;
+ esac
+ ])
+ case "$gl_cv_func_pthread_rwlock_good_waitqueue" in
+ *yes) ;;
+ *no)
+ REPLACE_PTHREAD_RWLOCK_INIT=1
+ REPLACE_PTHREAD_RWLOCKATTR_INIT=1
+ AC_DEFINE([PTHREAD_RWLOCK_BAD_WAITQUEUE], [1],
+ [Define if the pthread_rwlock wait queue handling is not reasonable.])
+ ;;
+ esac
+ fi
+ fi
+ fi
+])
diff --git a/gnulib-m4/pthread-spin.m4 b/gnulib-m4/pthread-spin.m4
new file mode 100644
index 00000000..67a50fa4
--- /dev/null
+++ b/gnulib-m4/pthread-spin.m4
@@ -0,0 +1,71 @@
+# pthread-spin.m4
+# serial 8
+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.
+
+AC_DEFUN_ONCE([gl_PTHREAD_SPIN],
+[
+ AC_REQUIRE([gl_PTHREAD_H_PART1])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+
+ 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.
+ REPLACE_PTHREAD_SPIN_INIT=1
+ REPLACE_PTHREAD_SPIN_LOCK=1
+ REPLACE_PTHREAD_SPIN_TRYLOCK=1
+ REPLACE_PTHREAD_SPIN_UNLOCK=1
+ REPLACE_PTHREAD_SPIN_DESTROY=1
+ else
+ if test $HAVE_PTHREAD_H = 0 || test $HAVE_PTHREAD_SPINLOCK_T = 0; then
+ HAVE_PTHREAD_SPIN_INIT=0
+ HAVE_PTHREAD_SPIN_LOCK=0
+ HAVE_PTHREAD_SPIN_TRYLOCK=0
+ HAVE_PTHREAD_SPIN_UNLOCK=0
+ HAVE_PTHREAD_SPIN_DESTROY=0
+ else
+ dnl Test whether the gnulib module 'threadlib' is in use.
+ dnl Some packages like Emacs use --avoid=threadlib.
+ dnl Write the symbol in such a way that it does not cause 'aclocal' to pick
+ dnl the threadlib.m4 file that is installed in $PREFIX/share/aclocal/.
+ m4_ifdef([gl_][THREADLIB], [
+ AC_REQUIRE([gl_][THREADLIB])
+ dnl Test whether the functions actually exist.
+ dnl FreeBSD 5.2.1 declares them but does not define them.
+ AC_CACHE_CHECK([for pthread_spin_init],
+ [gl_cv_func_pthread_spin_init_in_LIBMULTITHREAD],
+ [gl_saved_LIBS="$LIBS"
+ LIBS="$LIBS $LIBMULTITHREAD"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <pthread.h>
+ ]],
+ [[pthread_spinlock_t lock;
+ return pthread_spin_init (&lock, 0);
+ ]])
+ ],
+ [gl_cv_func_pthread_spin_init_in_LIBMULTITHREAD=yes],
+ [gl_cv_func_pthread_spin_init_in_LIBMULTITHREAD=no])
+ LIBS="$gl_saved_LIBS"
+ ])
+ if test $gl_cv_func_pthread_spin_init_in_LIBMULTITHREAD != yes; then
+ HAVE_PTHREAD_SPIN_INIT=0
+ REPLACE_PTHREAD_SPIN_INIT=1
+ HAVE_PTHREAD_SPIN_LOCK=0
+ REPLACE_PTHREAD_SPIN_LOCK=1
+ HAVE_PTHREAD_SPIN_TRYLOCK=0
+ REPLACE_PTHREAD_SPIN_TRYLOCK=1
+ HAVE_PTHREAD_SPIN_UNLOCK=0
+ REPLACE_PTHREAD_SPIN_UNLOCK=1
+ HAVE_PTHREAD_SPIN_DESTROY=0
+ REPLACE_PTHREAD_SPIN_DESTROY=1
+ fi
+ ], [
+ :
+ ])
+ fi
+ fi
+])
diff --git a/gnulib-m4/pthread-thread.m4 b/gnulib-m4/pthread-thread.m4
index 969628ea..83cd7795 100644
--- a/gnulib-m4/pthread-thread.m4
+++ b/gnulib-m4/pthread-thread.m4
@@ -1,5 +1,6 @@
-# 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 +10,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..42001213 100644
--- a/gnulib-m4/pthread_h.m4
+++ b/gnulib-m4/pthread_h.m4
@@ -1,10 +1,11 @@
-# pthread_h.m4 serial 8
-dnl Copyright (C) 2009-2022 Free Software Foundation, Inc.
+# pthread_h.m4
+# serial 11
+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.
-AC_DEFUN_ONCE([gl_PTHREAD_H],
+AC_DEFUN_ONCE([gl_PTHREAD_H_PART1],
[
dnl Ensure to expand the default settings once only, before all statements
dnl that occur in other macros.
@@ -20,7 +21,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
@@ -41,6 +42,14 @@ AC_DEFUN_ONCE([gl_PTHREAD_H],
if test $ac_cv_type_pthread_spinlock_t != yes; then
HAVE_PTHREAD_SPINLOCK_T=0
fi
+])
+
+AC_DEFUN([gl_PTHREAD_H],
+[
+ AC_REQUIRE([gl_PTHREAD_H_PART1])
+
+ dnl Set HAVE_PTHREAD_SPIN_INIT, REPLACE_PTHREAD_SPIN_INIT.
+ gl_PTHREAD_SPIN
dnl Constants may be defined as C preprocessor macros or as enum items.
diff --git a/gnulib-m4/pthread_mutex_timedlock.m4 b/gnulib-m4/pthread_mutex_timedlock.m4
new file mode 100644
index 00000000..9b175d54
--- /dev/null
+++ b/gnulib-m4/pthread_mutex_timedlock.m4
@@ -0,0 +1,48 @@
+# pthread_mutex_timedlock.m4
+# serial 6
+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.
+
+AC_DEFUN([gl_FUNC_PTHREAD_MUTEX_TIMEDLOCK],
+[
+ AC_REQUIRE([gl_PTHREAD_H_DEFAULTS])
+
+ AC_CHECK_DECL([pthread_mutex_timedlock],
+ [dnl Test whether the gnulib module 'threadlib' is in use.
+ dnl Some packages like Emacs use --avoid=threadlib.
+ dnl Write the symbol in such a way that it does not cause 'aclocal' to pick
+ dnl the threadlib.m4 file that is installed in $PREFIX/share/aclocal/.
+ m4_ifdef([gl_][THREADLIB], [
+ AC_REQUIRE([gl_][THREADLIB])
+ dnl Test whether the function actually exists.
+ dnl FreeBSD 5.2.1 declares it but does not define it.
+ AC_CACHE_CHECK([for pthread_mutex_timedlock],
+ [gl_cv_func_pthread_mutex_timedlock_in_LIBMULTITHREAD],
+ [gl_saved_LIBS="$LIBS"
+ LIBS="$LIBS $LIBMULTITHREAD"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <pthread.h>
+ #include <time.h>
+ ]],
+ [[pthread_mutex_t lock;
+ struct timespec ts = { 0 };
+ return pthread_mutex_timedlock (&lock, &ts);
+ ]])
+ ],
+ [gl_cv_func_pthread_mutex_timedlock_in_LIBMULTITHREAD=yes],
+ [gl_cv_func_pthread_mutex_timedlock_in_LIBMULTITHREAD=no])
+ LIBS="$gl_saved_LIBS"
+ ])
+ if test $gl_cv_func_pthread_mutex_timedlock_in_LIBMULTITHREAD != yes; then
+ HAVE_PTHREAD_MUTEX_TIMEDLOCK=0
+ fi
+ ], [
+ :
+ ])
+ ],
+ [HAVE_PTHREAD_MUTEX_TIMEDLOCK=0],
+ [[#include <pthread.h>]])
+])
diff --git a/gnulib-m4/pthread_rwlock_rdlock.m4 b/gnulib-m4/pthread_rwlock_rdlock.m4
index 8ad78392..b8b5b117 100644
--- a/gnulib-m4/pthread_rwlock_rdlock.m4
+++ b/gnulib-m4/pthread_rwlock_rdlock.m4
@@ -1,5 +1,6 @@
-# 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 +35,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 +157,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..437869f6 100644
--- a/gnulib-m4/pthread_sigmask.m4
+++ b/gnulib-m4/pthread_sigmask.m4
@@ -1,5 +1,6 @@
-# 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 +25,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 +48,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 +59,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 +102,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 +118,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 +165,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 +189,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 +212,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 +235,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 +259,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..5616fdf5 100644
--- a/gnulib-m4/putenv.m4
+++ b/gnulib-m4/putenv.m4
@@ -1,5 +1,6 @@
-# putenv.m4 serial 25
-dnl Copyright (C) 2002-2022 Free Software Foundation, Inc.
+# putenv.m4
+# serial 28
+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 +39,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
])
])
@@ -60,5 +61,5 @@ AC_DEFUN([gl_FUNC_PUTENV],
# Prerequisites of lib/putenv.c.
AC_DEFUN([gl_PREREQ_PUTENV],
[
- AC_CHECK_DECLS([_putenv])
+ AC_CHECK_DECLS_ONCE([_putenv])
])
diff --git a/gnulib-m4/raise.m4 b/gnulib-m4/raise.m4
index 0c78d095..82bf236d 100644
--- a/gnulib-m4/raise.m4
+++ b/gnulib-m4/raise.m4
@@ -1,5 +1,6 @@
-# raise.m4 serial 4
-dnl Copyright (C) 2011-2022 Free Software Foundation, Inc.
+# raise.m4
+# serial 4
+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..92cfcd57
--- /dev/null
+++ b/gnulib-m4/random.m4
@@ -0,0 +1,80 @@
+# 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..b2464fda
--- /dev/null
+++ b/gnulib-m4/random_r.m4
@@ -0,0 +1,44 @@
+# random_r.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.
+
+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/readdir.m4 b/gnulib-m4/readdir.m4
new file mode 100644
index 00000000..8634b48d
--- /dev/null
+++ b/gnulib-m4/readdir.m4
@@ -0,0 +1,23 @@
+# readdir.m4
+# serial 3
+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.
+
+AC_DEFUN([gl_FUNC_READDIR],
+[
+ AC_REQUIRE([gl_DIRENT_H_DEFAULTS])
+
+ AC_CHECK_FUNCS([readdir])
+ if test $ac_cv_func_readdir = no; then
+ HAVE_READDIR=0
+ else
+ dnl Replace readdir() on native Windows and OS/2 kLIBC,
+ dnl to support fdopendir().
+ AC_REQUIRE([gl_DIRENT_DIR])
+ if test $DIR_HAS_FD_MEMBER = 0; then
+ REPLACE_READDIR=1
+ fi
+ fi
+])
diff --git a/gnulib-m4/realloc.m4 b/gnulib-m4/realloc.m4
index 86e57c25..cc911028 100644
--- a/gnulib-m4/realloc.m4
+++ b/gnulib-m4/realloc.m4
@@ -1,5 +1,6 @@
-# realloc.m4 serial 26
-dnl Copyright (C) 2007, 2009-2022 Free Software Foundation, Inc.
+# realloc.m4
+# serial 32
+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 +17,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 +27,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" ;;
@@ -43,6 +45,11 @@ AC_DEFUN([gl_FUNC_REALLOC_GNU],
[
AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
AC_REQUIRE([gl_FUNC_REALLOC_POSIX])
+
+ dnl Through the dependency on module extensions-aix, _LINUX_SOURCE_COMPAT
+ dnl gets defined already before this macro gets invoked. This helps
+ dnl if !(__VEC__ || __AIXVEC), and doesn't hurt otherwise.
+
if test $REPLACE_REALLOC_FOR_REALLOC_GNU = 0; then
_AC_FUNC_REALLOC_IF([], [REPLACE_REALLOC_FOR_REALLOC_GNU=1])
fi
diff --git a/gnulib-m4/reallocarray.m4 b/gnulib-m4/reallocarray.m4
index f39ab6ea..958095e1 100644
--- a/gnulib-m4/reallocarray.m4
+++ b/gnulib-m4/reallocarray.m4
@@ -1,5 +1,6 @@
-# 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 +12,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..7fcf2975 100644
--- a/gnulib-m4/relocatable-lib.m4
+++ b/gnulib-m4/relocatable-lib.m4
@@ -1,5 +1,6 @@
-# relocatable-lib.m4 serial 6
-dnl Copyright (C) 2003, 2005-2007, 2009-2022 Free Software Foundation, Inc.
+# relocatable-lib.m4
+# serial 8
+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.
@@ -20,7 +21,9 @@ AC_DEFUN([gl_RELOCATABLE_LIBRARY_BODY],
else
reloc_final_prefix="$prefix"
fi
- AC_DEFINE_UNQUOTED([INSTALLPREFIX], ["${reloc_final_prefix}"],
+ dnl Define reloc_final_prefix_c and reloc_final_prefix_c_make.
+ gl_BUILD_TO_HOST([reloc_final_prefix])
+ AC_DEFINE_UNQUOTED([INSTALLPREFIX], [${reloc_final_prefix_c}],
[Define to the value of ${prefix}, as a string.])
if test $RELOCATABLE = yes; then
AC_DEFINE([ENABLE_RELOCATABLE], [1],
@@ -34,7 +37,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/rewinddir.m4 b/gnulib-m4/rewinddir.m4
new file mode 100644
index 00000000..c56c31aa
--- /dev/null
+++ b/gnulib-m4/rewinddir.m4
@@ -0,0 +1,23 @@
+# rewinddir.m4
+# serial 3
+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.
+
+AC_DEFUN([gl_FUNC_REWINDDIR],
+[
+ AC_REQUIRE([gl_DIRENT_H_DEFAULTS])
+
+ AC_CHECK_FUNCS([rewinddir])
+ if test $ac_cv_func_rewinddir = no; then
+ HAVE_REWINDDIR=0
+ else
+ dnl Replace rewinddir() on native Windows and OS/2 kLIBC,
+ dnl to support fdopendir().
+ AC_REQUIRE([gl_DIRENT_DIR])
+ if test $DIR_HAS_FD_MEMBER = 0; then
+ REPLACE_REWINDDIR=1
+ fi
+ fi
+])
diff --git a/gnulib-m4/save-cwd.m4 b/gnulib-m4/save-cwd.m4
new file mode 100644
index 00000000..bb54a0eb
--- /dev/null
+++ b/gnulib-m4/save-cwd.m4
@@ -0,0 +1,12 @@
+# save-cwd.m4
+# serial 10
+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.
+
+dnl Prerequisites for lib/save-cwd.c.
+AC_DEFUN([gl_SAVE_CWD],
+[
+ AC_CHECK_FUNCS_ONCE([fchdir])
+])
diff --git a/gnulib-m4/sched_h.m4 b/gnulib-m4/sched_h.m4
index ce44f7b3..61c202ef 100644
--- a/gnulib-m4/sched_h.m4
+++ b/gnulib-m4/sched_h.m4
@@ -1,5 +1,6 @@
-# sched_h.m4 serial 15
-dnl Copyright (C) 2008-2022 Free Software Foundation, Inc.
+# sched_h.m4
+# serial 16
+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.
@@ -14,7 +15,8 @@ AC_DEFUN_ONCE([gl_SCHED_H],
AC_REQUIRE([AC_CANONICAL_HOST])
- AC_CHECK_HEADERS_ONCE([sys/cdefs.h])
+ AC_REQUIRE([gl_CHECK_HEADER_SYS_CDEFS_H])
+
AC_CHECK_HEADERS([sched.h], [], [],
[[#if HAVE_SYS_CDEFS_H
#include <sys/cdefs.h>
@@ -56,13 +58,6 @@ AC_DEFUN_ONCE([gl_SCHED_H],
fi
AC_SUBST([HAVE_STRUCT_SCHED_PARAM])
- if test "$ac_cv_header_sys_cdefs_h" = yes; then
- HAVE_SYS_CDEFS_H=1
- else
- HAVE_SYS_CDEFS_H=0
- fi
- AC_SUBST([HAVE_SYS_CDEFS_H])
-
dnl Ensure the type pid_t gets defined.
AC_REQUIRE([AC_TYPE_PID_T])
diff --git a/gnulib-m4/sched_yield.m4 b/gnulib-m4/sched_yield.m4
index d463a702..68b561b5 100644
--- a/gnulib-m4/sched_yield.m4
+++ b/gnulib-m4/sched_yield.m4
@@ -1,5 +1,6 @@
-# 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 +11,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..fcc718ff 100644
--- a/gnulib-m4/select.m4
+++ b/gnulib-m4/select.m4
@@ -1,5 +1,6 @@
-# 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 +78,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 +94,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 +112,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..2feb905e 100644
--- a/gnulib-m4/semaphore.m4
+++ b/gnulib-m4/semaphore.m4
@@ -1,5 +1,6 @@
-# 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 +20,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 +35,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..ae7fcec6 100644
--- a/gnulib-m4/setenv.m4
+++ b/gnulib-m4/setenv.m4
@@ -1,5 +1,6 @@
-# setenv.m4 serial 30
-dnl Copyright (C) 2001-2004, 2006-2022 Free Software Foundation, Inc.
+# setenv.m4
+# serial 35
+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 +36,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 +152,11 @@ 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])
+ AC_CHECK_DECLS_ONCE([_putenv])
+ gl_CHECK_FUNCS_ANDROID([tsearch], [[#include <search.h>]])
])
# Prerequisites of lib/unsetenv.c.
@@ -163,4 +164,5 @@ AC_DEFUN([gl_PREREQ_UNSETENV],
[
AC_REQUIRE([gl_ENVIRON])
AC_CHECK_HEADERS_ONCE([unistd.h])
+ AC_CHECK_DECLS_ONCE([_putenv])
])
diff --git a/gnulib-m4/setlocale.m4 b/gnulib-m4/setlocale.m4
index c0023d9c..ef5b288f 100644
--- a/gnulib-m4/setlocale.m4
+++ b/gnulib-m4/setlocale.m4
@@ -1,5 +1,6 @@
-# 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 +16,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 +67,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..e5b7d28b 100644
--- a/gnulib-m4/setlocale_null.m4
+++ b/gnulib-m4/setlocale_null.m4
@@ -1,5 +1,6 @@
-# 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 +14,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 +41,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 +63,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 +72,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 +89,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..7a7d2b3c 100644
--- a/gnulib-m4/signal_h.m4
+++ b/gnulib-m4/signal_h.m4
@@ -1,5 +1,6 @@
-# signal_h.m4 serial 22
-dnl Copyright (C) 2007-2022 Free Software Foundation, Inc.
+# signal_h.m4
+# serial 23
+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.
@@ -31,7 +32,8 @@ AC_DEFUN_ONCE([gl_SIGNAL_H],
dnl Check for declarations of anything we want to poison if the
dnl corresponding gnulib module is not in use.
gl_WARN_ON_USE_PREPARE([[#include <signal.h>
- ]], [pthread_sigmask sigaction
+ ]], [sig2str str2sig
+ pthread_sigmask sigaction
sigaddset sigdelset sigemptyset sigfillset sigismember
sigpending sigprocmask])
@@ -73,6 +75,7 @@ AC_DEFUN([gl_SIGNAL_H_REQUIRE_DEFAULTS],
m4_defun(GL_MODULE_INDICATOR_PREFIX[_SIGNAL_H_MODULE_INDICATOR_DEFAULTS], [
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTHREAD_SIGMASK])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RAISE])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIG2STR])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGNAL_H_SIGPIPE])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGPROCMASK])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGACTION])
@@ -87,9 +90,11 @@ AC_DEFUN([gl_SIGNAL_H_DEFAULTS],
HAVE_POSIX_SIGNALBLOCKING=1; AC_SUBST([HAVE_POSIX_SIGNALBLOCKING])
HAVE_PTHREAD_SIGMASK=1; AC_SUBST([HAVE_PTHREAD_SIGMASK])
HAVE_RAISE=1; AC_SUBST([HAVE_RAISE])
+ HAVE_SIG2STR=1; AC_SUBST([HAVE_SIG2STR])
HAVE_SIGSET_T=1; AC_SUBST([HAVE_SIGSET_T])
HAVE_SIGINFO_T=1; AC_SUBST([HAVE_SIGINFO_T])
HAVE_SIGACTION=1; AC_SUBST([HAVE_SIGACTION])
+ HAVE_STR2SIG=1; AC_SUBST([HAVE_STR2SIG])
HAVE_STRUCT_SIGACTION_SA_SIGACTION=1;
AC_SUBST([HAVE_STRUCT_SIGACTION_SA_SIGACTION])
HAVE_TYPE_VOLATILE_SIG_ATOMIC_T=1;
diff --git a/gnulib-m4/signalblocking.m4 b/gnulib-m4/signalblocking.m4
index b586ef53..fa0a0d1c 100644
--- a/gnulib-m4/signalblocking.m4
+++ b/gnulib-m4/signalblocking.m4
@@ -1,5 +1,6 @@
-# signalblocking.m4 serial 17
-dnl Copyright (C) 2001-2002, 2006-2022 Free Software Foundation, Inc.
+# signalblocking.m4
+# serial 17
+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..e44eaa0f 100644
--- a/gnulib-m4/signbit.m4
+++ b/gnulib-m4/signbit.m4
@@ -1,5 +1,6 @@
-# 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 +30,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 +64,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..df91cf06 100644
--- a/gnulib-m4/size_max.m4
+++ b/gnulib-m4/size_max.m4
@@ -1,5 +1,6 @@
-# size_max.m4 serial 12
-dnl Copyright (C) 2003, 2005-2006, 2008-2022 Free Software Foundation, Inc.
+# size_max.m4
+# serial 12
+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..ec8764bd 100644
--- a/gnulib-m4/sleep.m4
+++ b/gnulib-m4/sleep.m4
@@ -1,5 +1,6 @@
-# sleep.m4 serial 11
-dnl Copyright (C) 2007-2022 Free Software Foundation, Inc.
+# sleep.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.
@@ -32,7 +33,7 @@ handle_alarm (int sig)
}
]], [[
/* Failure to compile this test due to missing alarm is okay,
- since all such platforms (mingw) also lack sleep. */
+ since all such platforms (mingw, MSVC) also lack sleep. */
unsigned int pentecost = 50 * 24 * 60 * 60; /* 50 days. */
unsigned int remaining;
signal (SIGALRM, handle_alarm);
@@ -46,14 +47,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..f99f43c0
--- /dev/null
+++ b/gnulib-m4/snan.m4
@@ -0,0 +1,15 @@
+# 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..09f01161 100644
--- a/gnulib-m4/socketlib.m4
+++ b/gnulib-m4/socketlib.m4
@@ -1,5 +1,6 @@
-# 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 +19,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 +34,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 +57,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 +66,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 +74,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 +83,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..a3dfe92f 100644
--- a/gnulib-m4/sockets.m4
+++ b/gnulib-m4/sockets.m4
@@ -1,5 +1,6 @@
-# sockets.m4 serial 7
-dnl Copyright (C) 2008-2022 Free Software Foundation, Inc.
+# sockets.m4
+# serial 7
+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..9ece0abb 100644
--- a/gnulib-m4/socklen.m4
+++ b/gnulib-m4/socklen.m4
@@ -1,5 +1,6 @@
-# socklen.m4 serial 11
-dnl Copyright (C) 2005-2007, 2009-2022 Free Software Foundation, Inc.
+# socklen.m4
+# serial 11
+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..44ac7fd9 100644
--- a/gnulib-m4/sockpfaf.m4
+++ b/gnulib-m4/sockpfaf.m4
@@ -1,5 +1,6 @@
-# sockpfaf.m4 serial 10
-dnl Copyright (C) 2004, 2006, 2009-2022 Free Software Foundation, Inc.
+# sockpfaf.m4
+# serial 11
+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.
@@ -63,6 +64,13 @@ AC_DEFUN([gl_SOCKET_FAMILY_UNIX],
AC_REQUIRE([gl_SYS_SOCKET_H])
AC_CHECK_HEADERS_ONCE([sys/un.h])
+ dnl Windows versions released after 2017 may have support for AF_UNIX.
+ dnl Including it requires types from <winsock2.h> to be defined.
+ dnl <https://devblogs.microsoft.com/commandline/af_unix-comes-to-windows/>.
+ if test "$ac_cv_header_winsock2_h" = yes; then
+ AC_CHECK_HEADERS([afunix.h], [], [], [#include <winsock2.h>])
+ fi
+
AC_CACHE_CHECK([for UNIX domain sockets],
[gl_cv_socket_unix],
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
@@ -74,6 +82,9 @@ AC_DEFUN([gl_SOCKET_FAMILY_UNIX],
#endif
#ifdef HAVE_WINSOCK2_H
#include <winsock2.h>
+#endif
+#ifdef HAVE_AFUNIX_H
+#include <afunix.h>
#endif]],
[[int x = AF_UNIX; struct sockaddr_un y;
if (&x && &y) return 0;]])],
diff --git a/gnulib-m4/ssize_t.m4 b/gnulib-m4/ssize_t.m4
index 03b2b895..c15f948a 100644
--- a/gnulib-m4/ssize_t.m4
+++ b/gnulib-m4/ssize_t.m4
@@ -1,23 +1,38 @@
-# 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..e8ee7d51 100644
--- a/gnulib-m4/stat-time.m4
+++ b/gnulib-m4/stat-time.m4
@@ -1,11 +1,11 @@
-# Checks for stat-related time functions.
-
-# Copyright (C) 1998-1999, 2001, 2003, 2005-2007, 2009-2022 Free Software
-# Foundation, Inc.
+# stat-time.m4
+# serial 1
+dnl Copyright (C) 1998-1999, 2001, 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.
-# 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.
+# Checks for stat-related time functions.
dnl From Paul Eggert.
diff --git a/gnulib-m4/stat.m4 b/gnulib-m4/stat.m4
index 916eb886..fabd360c 100644
--- a/gnulib-m4/stat.m4
+++ b/gnulib-m4/stat.m4
@@ -1,10 +1,9 @@
-# serial 18
-
-# Copyright (C) 2009-2022 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.
+# stat.m4
+# serial 21
+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.
AC_DEFUN([gl_FUNC_STAT],
[
@@ -12,7 +11,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 +44,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 +60,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 +79,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..1c29d1e4 100644
--- a/gnulib-m4/stdalign.m4
+++ b/gnulib-m4/stdalign.m4
@@ -1,20 +1,24 @@
-# Check for alignas and alignof that conform to C23.
-
-dnl Copyright 2011-2022 Free Software Foundation, Inc.
+# stdalign.m4
+# serial 1
+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.
+# Check for alignas and alignof that conform to C23.
+
+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 +58,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/n3096.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..c7f75b37 100644
--- a/gnulib-m4/stddef_h.m4
+++ b/gnulib-m4/stddef_h.m4
@@ -1,5 +1,6 @@
-# stddef_h.m4 serial 12
-dnl Copyright (C) 2009-2022 Free Software Foundation, Inc.
+# stddef_h.m4
+# serial 17
+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.
@@ -9,7 +10,6 @@ dnl A placeholder for <stddef.h>, for platforms that have issues.
AC_DEFUN_ONCE([gl_STDDEF_H],
[
AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
- AC_REQUIRE([gt_TYPE_WCHAR_T])
dnl Persuade OpenBSD <stddef.h> to declare max_align_t.
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
@@ -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];
@@ -44,11 +51,6 @@ AC_DEFUN_ONCE([gl_STDDEF_H],
GL_GENERATE_STDDEF_H=true
fi
- if test $gt_cv_c_wchar_t = no; then
- HAVE_WCHAR_T=0
- GL_GENERATE_STDDEF_H=true
- fi
-
AC_CACHE_CHECK([whether NULL can be used in arbitrary expressions],
[gl_cv_decl_null_works],
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stddef.h>
@@ -61,6 +63,51 @@ 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
+
+ dnl https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114869
+ AC_CACHE_CHECK([whether nullptr_t needs <stddef.h>],
+ [gl_cv_nullptr_t_needs_stddef],
+ [AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[nullptr_t x;]],
+ [gl_cv_nullptr_t_needs_stddef=no],
+ [gl_cv_nullptr_t_needs_stddef=yes])])
+ if test "$gl_cv_nullptr_t_needs_stddef" = no; then
+ NULLPTR_T_NEEDS_STDDEF=0
+ GL_GENERATE_STDDEF_H=true
+ fi
+
+ AC_CACHE_CHECK([for clean definition of __STDC_VERSION_STDDEF_H__],
+ [gl_cv_clean_version_stddef],
+ [AC_PREPROC_IFELSE(
+ [AC_LANG_SOURCE(
+ [[/* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114870 */
+ #include <stddef.h>
+ #undef __STDC_VERSION_STDDEF_H__
+ #include <time.h>
+ #ifdef __STDC_VERSION_STDDEF_H__
+ # error "<time.h> defines __STDC_VERSION_STDDEF_H__"
+ #endif
+ ]])],
+ [gl_cv_clean_version_stddef=yes],
+ [gl_cv_clean_version_stddef=no])])
+ if test "$gl_cv_clean_version_stddef" = no; then
+ STDDEF_NOT_IDEMPOTENT=1
+ GL_GENERATE_STDDEF_H=true
+ fi
+
if $GL_GENERATE_STDDEF_H; then
gl_NEXT_HEADERS([stddef.h])
fi
@@ -91,7 +138,8 @@ AC_DEFUN([gl_STDDEF_H_REQUIRE_DEFAULTS],
AC_DEFUN([gl_STDDEF_H_DEFAULTS],
[
dnl Assume proper GNU behavior unless another module says otherwise.
+ NULLPTR_T_NEEDS_STDDEF=1; AC_SUBST([NULLPTR_T_NEEDS_STDDEF])
+ STDDEF_NOT_IDEMPOTENT=0; AC_SUBST([STDDEF_NOT_IDEMPOTENT])
REPLACE_NULL=0; AC_SUBST([REPLACE_NULL])
HAVE_MAX_ALIGN_T=1; AC_SUBST([HAVE_MAX_ALIGN_T])
- HAVE_WCHAR_T=1; AC_SUBST([HAVE_WCHAR_T])
])
diff --git a/gnulib-m4/stdint.m4 b/gnulib-m4/stdint.m4
index c3f08942..2dea8469 100644
--- a/gnulib-m4/stdint.m4
+++ b/gnulib-m4/stdint.m4
@@ -1,5 +1,6 @@
-# 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 +151,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 +287,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..29f42160 100644
--- a/gnulib-m4/stdint_h.m4
+++ b/gnulib-m4/stdint_h.m4
@@ -1,5 +1,6 @@
-# stdint_h.m4 serial 9
-dnl Copyright (C) 1997-2004, 2006, 2008-2022 Free Software Foundation, Inc.
+# stdint_h.m4
+# serial 9
+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..ec52ae92 100644
--- a/gnulib-m4/stdio_h.m4
+++ b/gnulib-m4/stdio_h.m4
@@ -1,12 +1,23 @@
-# stdio_h.m4 serial 59
-dnl Copyright (C) 2007-2022 Free Software Foundation, Inc.
+# stdio_h.m4
+# serial 75
+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 +25,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 +56,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 +101,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])
@@ -104,6 +133,7 @@ AC_DEFUN([gl_STDIO_H_REQUIRE_DEFAULTS],
[
m4_defun(GL_MODULE_INDICATOR_PREFIX[_STDIO_H_MODULE_INDICATOR_DEFAULTS], [
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DPRINTF])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DZPRINTF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCLOSE])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FDOPEN])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FFLUSH])
@@ -124,12 +154,14 @@ AC_DEFUN([gl_STDIO_H_REQUIRE_DEFAULTS],
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FTELL])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FTELLO])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FWRITE])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FZPRINTF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETC])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETCHAR])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETDELIM])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLINE])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OBSTACK_PRINTF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OBSTACK_PRINTF_POSIX])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OBSTACK_ZPRINTF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PCLOSE])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PERROR])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POPEN])
@@ -143,20 +175,29 @@ AC_DEFUN([gl_STDIO_H_REQUIRE_DEFAULTS],
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RENAMEAT])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SCANF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SNPRINTF])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SNZPRINTF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SPRINTF_POSIX])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STDIO_H_NONBLOCKING])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STDIO_H_SIGPIPE])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SZPRINTF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TMPFILE])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VASPRINTF])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VASZPRINTF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VFSCANF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VSCANF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VDPRINTF])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VDZPRINTF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VFPRINTF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VFPRINTF_POSIX])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VFZPRINTF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VPRINTF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VPRINTF_POSIX])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VSNPRINTF])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VSNZPRINTF])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VSPRINTF_POSIX])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VSZPRINTF])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VZPRINTF])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ZPRINTF])
dnl Support Microsoft deprecated alias function names by default.
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_FCLOSEALL], [1])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_FDOPEN], [1])
@@ -178,7 +219,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..5d9b3017 100644
--- a/gnulib-m4/stdlib_h.m4
+++ b/gnulib-m4/stdlib_h.m4
@@ -1,5 +1,6 @@
-# stdlib_h.m4 serial 66
-dnl Copyright (C) 2007-2022 Free Software Foundation, Inc.
+# stdlib_h.m4
+# serial 81
+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 +24,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_EN_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 and Haiku.
+ solaris* | haiku*) 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_EN_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_EN_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
@@ -66,6 +110,7 @@ AC_DEFUN([gl_STDLIB_H_REQUIRE_DEFAULTS],
[
m4_defun(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS], [
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB__EXIT])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ABORT_DEBUG])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ALIGNED_ALLOC])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATOLL])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CALLOC_GNU])
@@ -73,10 +118,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 +136,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])
@@ -98,7 +146,9 @@ AC_DEFUN([gl_STDLIB_H_REQUIRE_DEFAULTS],
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RPMATCH])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SECURE_GETENV])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETENV])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STACK_TRACE])
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 +180,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 +209,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 +219,32 @@ 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_ABORT=0; AC_SUBST([REPLACE_ABORT])
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 +254,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])
@@ -197,4 +262,5 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
REPLACE_STRTOULL=0; AC_SUBST([REPLACE_STRTOULL])
REPLACE_UNSETENV=0; AC_SUBST([REPLACE_UNSETENV])
REPLACE_WCTOMB=0; AC_SUBST([REPLACE_WCTOMB])
+ CAN_PRINT_STACK_TRACE=0; AC_SUBST([CAN_PRINT_STACK_TRACE])
])
diff --git a/gnulib-m4/stpcpy.m4 b/gnulib-m4/stpcpy.m4
new file mode 100644
index 00000000..c4d71dd9
--- /dev/null
+++ b/gnulib-m4/stpcpy.m4
@@ -0,0 +1,29 @@
+# stpcpy.m4
+# serial 11
+dnl Copyright (C) 2002, 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_FUNC_STPCPY],
+[
+ dnl Persuade glibc <string.h> to declare stpcpy().
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+ dnl The stpcpy() declaration in lib/string.in.h uses 'restrict'.
+ AC_REQUIRE([AC_C_RESTRICT])
+
+ AC_REQUIRE([gl_STRING_H_DEFAULTS])
+ gl_CHECK_FUNCS_ANDROID([stpcpy], [[#include <string.h>]])
+ if test $ac_cv_func_stpcpy = no; then
+ HAVE_STPCPY=0
+ case "$gl_cv_onwards_func_stpcpy" in
+ future*) REPLACE_STPCPY=1 ;;
+ esac
+ fi
+])
+
+# Prerequisites of lib/stpcpy.c.
+AC_DEFUN([gl_PREREQ_STPCPY], [
+ :
+])
diff --git a/gnulib-m4/strdup.m4 b/gnulib-m4/strdup.m4
new file mode 100644
index 00000000..14b1de07
--- /dev/null
+++ b/gnulib-m4/strdup.m4
@@ -0,0 +1,33 @@
+# strdup.m4
+# serial 15
+
+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.
+
+AC_DEFUN([gl_FUNC_STRDUP],
+[
+ AC_REQUIRE([gl_STRING_H_DEFAULTS])
+ AC_CHECK_DECLS_ONCE([strdup])
+ if test $ac_cv_have_decl_strdup = no; then
+ HAVE_DECL_STRDUP=0
+ fi
+])
+
+AC_DEFUN([gl_FUNC_STRDUP_POSIX],
+[
+ AC_REQUIRE([gl_STRING_H_DEFAULTS])
+ AC_REQUIRE([gl_CHECK_MALLOC_POSIX])
+ if test $gl_cv_func_malloc_posix != yes; then
+ REPLACE_STRDUP=1
+ fi
+ AC_CHECK_DECLS_ONCE([strdup])
+ if test $ac_cv_have_decl_strdup = no; then
+ HAVE_DECL_STRDUP=0
+ fi
+])
+
+# Prerequisites of lib/strdup.c.
+AC_DEFUN([gl_PREREQ_STRDUP], [:])
diff --git a/gnulib-m4/strerror.m4 b/gnulib-m4/strerror.m4
index 4716649b..0272c6f4 100644
--- a/gnulib-m4/strerror.m4
+++ b/gnulib-m4/strerror.m4
@@ -1,5 +1,6 @@
-# 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 +25,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 +81,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..53539721 100644
--- a/gnulib-m4/strerror_r.m4
+++ b/gnulib-m4/strerror_r.m4
@@ -1,5 +1,6 @@
-# strerror_r.m4 serial 24
-dnl Copyright (C) 2002, 2007-2022 Free Software Foundation, Inc.
+# strerror_r.m4
+# serial 28
+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 +41,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 +58,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 +173,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..f31264ae 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.
-# 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.
+# string_h.m4
+# serial 39
+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.
-# serial 34
+# Configure a GNU-like replacement for <string.h>.
# 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..9bff2cd2 100644
--- a/gnulib-m4/strncat.m4
+++ b/gnulib-m4/strncat.m4
@@ -1,5 +1,6 @@
-# strncat.m4 serial 6
-dnl Copyright (C) 2002-2004, 2009-2022 Free Software Foundation, Inc.
+# strncat.m4
+# serial 9
+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 +16,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.
@@ -44,7 +45,7 @@ AC_DEFUN_ONCE([gl_FUNC_STRNCAT],
if (fd >= 0)
# endif
{
- int pagesize = getpagesize ();
+ long int pagesize = sysconf (_SC_PAGESIZE);
char *two_pages =
(char *) mmap (NULL, 2 * pagesize, PROT_READ | PROT_WRITE,
flags, fd, 0);
@@ -84,12 +85,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..d19559aa 100644
--- a/gnulib-m4/strstr.m4
+++ b/gnulib-m4/strstr.m4
@@ -1,5 +1,6 @@
-# strstr.m4 serial 24
-dnl Copyright (C) 2008-2022 Free Software Foundation, Inc.
+# strstr.m4
+# serial 25
+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.
@@ -94,7 +95,7 @@ static void quit (int sig) { _exit (sig + 128); }
char *haystack = (char *) malloc (2 * m + 2);
char *needle = (char *) malloc (m + 2);
/* Failure to compile this test due to missing alarm is okay,
- since all such platforms (mingw) also have quadratic strstr. */
+ since all such platforms (mingw, MSVC) also have quadratic strstr. */
signal (SIGALRM, quit);
alarm (5);
/* Check for quadratic performance. */
diff --git a/gnulib-m4/symlink.m4 b/gnulib-m4/symlink.m4
index 5be2babb..47968a1d 100644
--- a/gnulib-m4/symlink.m4
+++ b/gnulib-m4/symlink.m4
@@ -1,11 +1,12 @@
-# serial 9
-# See if we need to provide symlink replacement.
-
-dnl Copyright (C) 2009-2022 Free Software Foundation, Inc.
+# symlink.m4
+# serial 10
+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.
+# See if we need to provide symlink replacement.
+
# Written by Eric Blake.
AC_DEFUN([gl_FUNC_SYMLINK],
@@ -38,6 +39,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_cdefs_h.m4 b/gnulib-m4/sys_cdefs_h.m4
new file mode 100644
index 00000000..22fa6c38
--- /dev/null
+++ b/gnulib-m4/sys_cdefs_h.m4
@@ -0,0 +1,25 @@
+# sys_cdefs_h.m4 - Is <sys/cdefs.h> compatible enough with glibc?
+# serial 2
+dnl Copyright 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.
+
+AC_DEFUN_ONCE([gl_CHECK_HEADER_SYS_CDEFS_H],
+ [AC_CACHE_CHECK([for glibc-compatible sys/cdefs.h],
+ [gl_cv_header_sys_cdefs_h],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_DEFINES_PROVIDED
+ [#include <sys/cdefs.h>
+ enum { foo = __GNUC_PREREQ (14, 1) } bar;
+ ]],
+ [gl_cv_header_sys_cdefs_h=yes],
+ [gl_cv_header_sys_cdefs_h=no])])
+ if test "$gl_cv_header_sys_cdefs_h" = yes; then
+ HAVE_SYS_CDEFS_H=1
+ else
+ HAVE_SYS_CDEFS_H=0
+ fi
+ AC_SUBST([HAVE_SYS_CDEFS_H])])
diff --git a/gnulib-m4/sys_ioctl_h.m4 b/gnulib-m4/sys_ioctl_h.m4
index be653643..915dc02f 100644
--- a/gnulib-m4/sys_ioctl_h.m4
+++ b/gnulib-m4/sys_ioctl_h.m4
@@ -1,5 +1,6 @@
-# sys_ioctl_h.m4 serial 15
-dnl Copyright (C) 2008-2022 Free Software Foundation, Inc.
+# sys_ioctl_h.m4
+# serial 15
+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..550e066e 100644
--- a/gnulib-m4/sys_select_h.m4
+++ b/gnulib-m4/sys_select_h.m4
@@ -1,5 +1,6 @@
-# sys_select_h.m4 serial 23
-dnl Copyright (C) 2006-2022 Free Software Foundation, Inc.
+# sys_select_h.m4
+# serial 23
+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..3bf3cb47 100644
--- a/gnulib-m4/sys_socket_h.m4
+++ b/gnulib-m4/sys_socket_h.m4
@@ -1,5 +1,6 @@
-# sys_socket_h.m4 serial 29
-dnl Copyright (C) 2005-2022 Free Software Foundation, Inc.
+# sys_socket_h.m4
+# serial 29
+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..3cc50ce6 100644
--- a/gnulib-m4/sys_stat_h.m4
+++ b/gnulib-m4/sys_stat_h.m4
@@ -1,5 +1,6 @@
-# sys_stat_h.m4 serial 42 -*- Autoconf -*-
-dnl Copyright (C) 2006-2022 Free Software Foundation, Inc.
+# sys_stat_h.m4
+# serial 42 -*- Autoconf -*-
+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..d3203088 100644
--- a/gnulib-m4/sys_time_h.m4
+++ b/gnulib-m4/sys_time_h.m4
@@ -1,10 +1,11 @@
-# Configure a replacement for <sys/time.h>.
+# sys_time_h.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.
-# Copyright (C) 2007, 2009-2022 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.
+# Configure a replacement for <sys/time.h>.
# Written by Paul Eggert and Martin Lambers.
diff --git a/gnulib-m4/sys_types_h.m4 b/gnulib-m4/sys_types_h.m4
index a5bef220..7c7f2655 100644
--- a/gnulib-m4/sys_types_h.m4
+++ b/gnulib-m4/sys_types_h.m4
@@ -1,5 +1,6 @@
-# sys_types_h.m4 serial 13
-dnl Copyright (C) 2011-2022 Free Software Foundation, Inc.
+# sys_types_h.m4
+# serial 14
+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.
@@ -22,6 +23,9 @@ AC_DEFUN_ONCE([gl_SYS_TYPES_H],
dnl Whether to override the 'off_t' type.
AC_REQUIRE([gl_TYPE_OFF_T])
+ dnl Whether to define the 'off64_t' type.
+ AC_REQUIRE([gl_TYPE_OFF64_T])
+
dnl Whether to override the 'dev_t' and 'ino_t' types.
m4_ifdef([gl_WINDOWS_STAT_INODES], [
AC_REQUIRE([gl_WINDOWS_STAT_INODES])
diff --git a/gnulib-m4/sys_uio_h.m4 b/gnulib-m4/sys_uio_h.m4
index 36f55ead..a471c720 100644
--- a/gnulib-m4/sys_uio_h.m4
+++ b/gnulib-m4/sys_uio_h.m4
@@ -1,5 +1,6 @@
-# sys_uio_h.m4 serial 3
-dnl Copyright (C) 2011-2022 Free Software Foundation, Inc.
+# sys_uio_h.m4
+# serial 3
+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..96f96a7f 100644
--- a/gnulib-m4/thread.m4
+++ b/gnulib-m4/thread.m4
@@ -1,5 +1,6 @@
-# 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 +10,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..f5e81479 100644
--- a/gnulib-m4/threadlib.m4
+++ b/gnulib-m4/threadlib.m4
@@ -1,5 +1,6 @@
-# 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 +86,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 +176,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 +207,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 +221,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 +263,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 +310,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 +354,7 @@ AC_DEFUN([gl_STDTHREADLIB_BODY],
AC_CHECK_HEADERS_ONCE([threads.h])
case "$host_os" in
- mingw*)
+ mingw* | windows*)
LIBSTDTHREAD=
;;
*)
@@ -349,7 +365,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 +378,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 +449,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 +475,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 +574,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 +585,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 +621,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..dd346419
--- /dev/null
+++ b/gnulib-m4/time.m4
@@ -0,0 +1,51 @@
+# time.m4
+# serial 6
+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, on machines with 2 or more CPUs,
+ 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*) gl_cv_func_time_works="guessing no";;
+ 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..88c76c03 100644
--- a/gnulib-m4/time_h.m4
+++ b/gnulib-m4/time_h.m4
@@ -1,12 +1,11 @@
-# Configure a more-standard replacement for <time.h>.
-
-# Copyright (C) 2000-2001, 2003-2007, 2009-2022 Free Software Foundation, Inc.
-
-# serial 20
+# time_h.m4
+# serial 27
+dnl Copyright (C) 2000-2001, 2003-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.
-# 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.
+# Configure a more-standard replacement for <time.h>.
# Written by Paul Eggert and Jim Meyering.
@@ -23,7 +22,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,11 +139,13 @@ 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])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIME_R])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIME_RZ])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TZNAME])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TZSET])
dnl Support Microsoft deprecated alias function names by default.
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_TZSET], [1])
@@ -159,25 +163,21 @@ AC_DEFUN([gl_TIME_H_DEFAULTS],
HAVE_TIMEGM=1; AC_SUBST([HAVE_TIMEGM])
HAVE_TIMESPEC_GET=1; AC_SUBST([HAVE_TIMESPEC_GET])
HAVE_TIMESPEC_GETRES=1; AC_SUBST([HAVE_TIMESPEC_GETRES])
- dnl Even GNU libc does not have timezone_t yet.
+ dnl Even GNU libc does not have timezone_t and tzalloc() 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.
+ HAVE_TZALLOC=0; AC_SUBST([HAVE_TZALLOC])
+ 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_LOCALTIME_RZ=0; AC_SUBST([REPLACE_LOCALTIME_RZ])
+ REPLACE_MKTIME=0; AC_SUBST([REPLACE_MKTIME])
+ REPLACE_MKTIME_Z=0; AC_SUBST([REPLACE_MKTIME_Z])
+ 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..bb8801b1
--- /dev/null
+++ b/gnulib-m4/uchar_h.m4
@@ -0,0 +1,250 @@
+# 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..20f2d112
--- /dev/null
+++ b/gnulib-m4/unicase_h.m4
@@ -0,0 +1,44 @@
+# 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..f36204a8
--- /dev/null
+++ b/gnulib-m4/unictype_h.m4
@@ -0,0 +1,178 @@
+# unictype_h.m4
+# serial 4
+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_MODIFIER_COMBINING_MARK_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..dc2c2220
--- /dev/null
+++ b/gnulib-m4/unimetadata_h.m4
@@ -0,0 +1,43 @@
+# 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..455a360f
--- /dev/null
+++ b/gnulib-m4/uninorm_h.m4
@@ -0,0 +1,46 @@
+# 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-safer.m4 b/gnulib-m4/unistd-safer.m4
new file mode 100644
index 00000000..429d44a7
--- /dev/null
+++ b/gnulib-m4/unistd-safer.m4
@@ -0,0 +1,11 @@
+# unistd-safer.m4
+# serial 9
+dnl Copyright (C) 2002, 2005-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.
+
+AC_DEFUN([gl_UNISTD_SAFER],
+[
+ AC_CHECK_FUNCS_ONCE([pipe])
+])
diff --git a/gnulib-m4/unistd_h.m4 b/gnulib-m4/unistd_h.m4
index 4c66ccc0..04fa79c9 100644
--- a/gnulib-m4/unistd_h.m4
+++ b/gnulib-m4/unistd_h.m4
@@ -1,5 +1,6 @@
-# unistd_h.m4 serial 90
-dnl Copyright (C) 2006-2022 Free Software Foundation, Inc.
+# unistd_h.m4
+# serial 96
+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 +226,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,27 +235,33 @@ 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])
REPLACE_GETPASS=0; AC_SUBST([REPLACE_GETPASS])
REPLACE_GETPASS_FOR_GETPASS_GNU=0; AC_SUBST([REPLACE_GETPASS_FOR_GETPASS_GNU])
+ REPLACE_GETUSERSHELL=0; AC_SUBST([REPLACE_GETUSERSHELL])
REPLACE_ISATTY=0; AC_SUBST([REPLACE_ISATTY])
REPLACE_LCHOWN=0; AC_SUBST([REPLACE_LCHOWN])
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..16272ab5 100644
--- a/gnulib-m4/usleep.m4
+++ b/gnulib-m4/usleep.m4
@@ -1,5 +1,6 @@
-# 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 +30,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..a02f4e1e 100644
--- a/gnulib-m4/vasnprintf.m4
+++ b/gnulib-m4/vasnprintf.m4
@@ -1,13 +1,46 @@
-# vasnprintf.m4 serial 38
-dnl Copyright (C) 2002-2004, 2006-2022 Free Software Foundation, Inc.
+# vasnprintf.m4
+# serial 54
+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.
AC_DEFUN([gl_FUNC_VASNPRINTF],
[
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
AC_CHECK_FUNCS_ONCE([vasnprintf])
- if test $ac_cv_func_vasnprintf = no; then
+ if test $ac_cv_func_vasnprintf = yes; then
+ dnl On Cygwin, in directives with a huge width, the width is ignored, and
+ dnl the function returns a wrong result.
+ AC_CACHE_CHECK([whether vasnprintf works],
+ [gl_cv_func_vasnprintf_works],
+ [AC_RUN_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#include <stdio.h>
+ ]],
+ [[size_t len;
+ char *res = vasnprintf (NULL, &len, "x%03000000000dy\n", -17);
+ /* On Cygwin 3.4.6, res is "x-17y\n" and len == 6: wrong. */
+ return (res != NULL && len < 10);
+ ]])
+ ],
+ [gl_cv_func_vasnprintf_works=yes],
+ [gl_cv_func_vasnprintf_works=no],
+ [case "$host_os" in
+ # Guess no on Cygwin.
+ cygwin*) gl_cv_func_vasnprintf_works="guessing no";;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_vasnprintf_works="$gl_cross_guess_normal";;
+ esac
+ ])
+ ])
+ fi
+ if test $ac_cv_func_vasnprintf != yes \
+ || case "$gl_cv_func_vasnprintf_works" in
+ *yes) false;;
+ *) true;;
+ esac
+ then
gl_REPLACE_VASNPRINTF
fi
])
@@ -29,18 +62,26 @@ 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],
[
- AC_REQUIRE([gt_TYPE_WCHAR_T])
AC_REQUIRE([gt_TYPE_WINT_T])
])
# 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])
- AC_REQUIRE([gt_TYPE_WCHAR_T])
AC_REQUIRE([gt_TYPE_WINT_T])
AC_REQUIRE([AC_TYPE_SIZE_T])
AC_CHECK_TYPE([ptrdiff_t], ,
@@ -50,19 +91,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 +119,107 @@ 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_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 +288,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 +338,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 +398,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 +458,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..ecf09686 100644
--- a/gnulib-m4/visibility.m4
+++ b/gnulib-m4/visibility.m4
@@ -1,5 +1,6 @@
-# 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 +32,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 +69,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..6c8c76b8 100644
--- a/gnulib-m4/warn-on-use.m4
+++ b/gnulib-m4/warn-on-use.m4
@@ -1,5 +1,6 @@
-# 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 +37,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 +47,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..995bdc65 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.
+# wchar_h.m4
+# serial 64
+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.
+dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues.
-# wchar_h.m4 serial 55
+dnl Written by Eric Blake.
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
deleted file mode 100644
index 268e3e51..00000000
--- a/gnulib-m4/wchar_t.m4
+++ /dev/null
@@ -1,24 +0,0 @@
-# wchar_t.m4 serial 4 (gettext-0.18.2)
-dnl Copyright (C) 2002-2003, 2008-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 From Bruno Haible.
-dnl Test whether <stddef.h> has the 'wchar_t' type.
-dnl Prerequisite: AC_PROG_CC
-
-AC_DEFUN([gt_TYPE_WCHAR_T],
-[
- AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
- [AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <stddef.h>
- wchar_t foo = (wchar_t)'\0';]],
- [[]])],
- [gt_cv_c_wchar_t=yes],
- [gt_cv_c_wchar_t=no])])
- if test $gt_cv_c_wchar_t = yes; then
- AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.])
- fi
-])
diff --git a/gnulib-m4/wcrtomb.m4 b/gnulib-m4/wcrtomb.m4
index fee21d7e..cc0e935f 100644
--- a/gnulib-m4/wcrtomb.m4
+++ b/gnulib-m4/wcrtomb.m4
@@ -1,5 +1,6 @@
-# wcrtomb.m4 serial 17
-dnl Copyright (C) 2008-2022 Free Software Foundation, Inc.
+# wcrtomb.m4
+# serial 21
+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.
@@ -35,7 +36,7 @@ AC_DEFUN([gl_FUNC_WCRTOMB],
dnl sometimes returns 0 instead of 1.
AC_REQUIRE([AC_PROG_CC])
AC_REQUIRE([gt_LOCALE_FR])
- AC_REQUIRE([gt_LOCALE_FR_UTF8])
+ AC_REQUIRE([gt_LOCALE_EN_UTF8])
AC_REQUIRE([gt_LOCALE_JA])
AC_REQUIRE([gt_LOCALE_ZH_CN])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
@@ -82,12 +83,14 @@ 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
+ if test $LOCALE_FR != none || test "$LOCALE_EN_UTF8" != none || test $LOCALE_JA != none || test $LOCALE_ZH_CN != none; then
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <locale.h>
@@ -97,12 +100,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_EN_UTF8", "none") != 0
+ && setlocale (LC_ALL, "$LOCALE_EN_UTF8") != NULL)
{
if (wcrtomb (NULL, 0, NULL) != 1)
result |= 2;
@@ -113,12 +118,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..d66c6ff1 100644
--- a/gnulib-m4/wctob.m4
+++ b/gnulib-m4/wctob.m4
@@ -1,5 +1,6 @@
-# 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 +33,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..abba2112 100644
--- a/gnulib-m4/wctomb.m4
+++ b/gnulib-m4/wctomb.m4
@@ -1,5 +1,6 @@
-# wctomb.m4 serial 2
-dnl Copyright (C) 2011-2022 Free Software Foundation, Inc.
+# wctomb.m4
+# serial 2
+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..a3b07c2a 100644
--- a/gnulib-m4/wctype_h.m4
+++ b/gnulib-m4/wctype_h.m4
@@ -1,8 +1,9 @@
-# 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 +179,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 +198,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..f2fa1980 100644
--- a/gnulib-m4/wcwidth.m4
+++ b/gnulib-m4/wcwidth.m4
@@ -1,5 +1,6 @@
-# wcwidth.m4 serial 34
-dnl Copyright (C) 2006-2022 Free Software Foundation, Inc.
+# wcwidth.m4
+# serial 38
+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.
@@ -12,7 +13,6 @@ AC_DEFUN([gl_FUNC_WCWIDTH],
dnl Persuade glibc <wchar.h> to declare wcwidth().
AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
- AC_REQUIRE([gt_TYPE_WCHAR_T])
AC_REQUIRE([gt_TYPE_WINT_T])
AC_CHECK_HEADERS_ONCE([wchar.h])
@@ -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.3, 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.3, 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..883fac28 100644
--- a/gnulib-m4/wint_t.m4
+++ b/gnulib-m4/wint_t.m4
@@ -1,5 +1,6 @@
-# wint_t.m4 serial 11
-dnl Copyright (C) 2003, 2007-2022 Free Software Foundation, Inc.
+# wint_t.m4
+# serial 11
+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..d44d0f08 100644
--- a/gnulib-m4/xalloc.m4
+++ b/gnulib-m4/xalloc.m4
@@ -1,5 +1,6 @@
-# xalloc.m4 serial 18
-dnl Copyright (C) 2002-2006, 2009-2022 Free Software Foundation, Inc.
+# xalloc.m4
+# serial 18
+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/xgetcwd.m4 b/gnulib-m4/xgetcwd.m4
new file mode 100644
index 00000000..1bb95692
--- /dev/null
+++ b/gnulib-m4/xgetcwd.m4
@@ -0,0 +1,11 @@
+# xgetcwd.m4
+# serial 8
+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.
+
+AC_DEFUN([gl_XGETCWD],
+[
+ :
+])
diff --git a/gnulib-m4/xsize.m4 b/gnulib-m4/xsize.m4
index 0109049e..e5784973 100644
--- a/gnulib-m4/xsize.m4
+++ b/gnulib-m4/xsize.m4
@@ -1,5 +1,6 @@
-# xsize.m4 serial 5
-dnl Copyright (C) 2003-2004, 2008-2022 Free Software Foundation, Inc.
+# xsize.m4
+# serial 5
+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..842313a0 100644
--- a/gnulib-m4/yield.m4
+++ b/gnulib-m4/yield.m4
@@ -1,5 +1,6 @@
-# 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 +11,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..710fba4e 100644
--- a/gnulib-m4/zzgnulib.m4
+++ b/gnulib-m4/zzgnulib.m4
@@ -1,5 +1,6 @@
-# zzgnulib.m4 serial 1
-dnl Copyright (C) 2020-2022 Free Software Foundation, Inc.
+# zzgnulib.m4
+# serial 1
+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.