diff options
Diffstat (limited to 'gl/m4')
185 files changed, 11045 insertions, 6899 deletions
diff --git a/gl/m4/00gnulib.m4 b/gl/m4/00gnulib.m4 index d4ad759f..7fe03e0b 100644 --- a/gl/m4/00gnulib.m4 +++ b/gl/m4/00gnulib.m4 | |||
@@ -1,27 +1,82 @@ | |||
1 | # 00gnulib.m4 serial 2 | 1 | # 00gnulib.m4 serial 8 |
2 | dnl Copyright (C) 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | dnl This file must be named something that sorts before all other | 7 | dnl This file must be named something that sorts before all other |
8 | dnl gnulib-provided .m4 files. It is needed until such time as we can | 8 | dnl gnulib-provided .m4 files. It is needed until the clang fix has |
9 | dnl assume Autoconf 2.64, with its improved AC_DEFUN_ONCE semantics. | 9 | dnl been included in Autoconf. |
10 | 10 | ||
11 | # AC_DEFUN_ONCE([NAME], VALUE) | 11 | # The following definitions arrange to use a compiler option |
12 | # ---------------------------- | 12 | # -Werror=implicit-function-declaration in AC_CHECK_DECL, when the |
13 | # Define NAME to expand to VALUE on the first use (whether by direct | 13 | # compiler is clang. Without it, clang implicitly declares "known" |
14 | # expansion, or by AC_REQUIRE), and to nothing on all subsequent uses. | 14 | # library functions in C mode, but not in C++ mode, which would cause |
15 | # Avoid bugs in AC_REQUIRE in Autoconf 2.63 and earlier. This | 15 | # Gnulib to omit a declaration and thus later produce an error in C++ |
16 | # definition is slower than the version in Autoconf 2.64, because it | 16 | # mode. As of clang 9.0, these "known" functions are identified through |
17 | # can only use interfaces that existed since 2.59; but it achieves the | 17 | # LIBBUILTIN invocations in the LLVM source file |
18 | # same effect. Quoting is necessary to avoid confusing Automake. | 18 | # llvm/tools/clang/include/clang/Basic/Builtins.def. |
19 | m4_version_prereq([2.63.263], [], | 19 | # It's not possible to AC_REQUIRE the extra tests from AC_CHECK_DECL, |
20 | [m4_define([AC][_DEFUN_ONCE], | 20 | # because AC_CHECK_DECL, like other Autoconf built-ins, is not supposed |
21 | [AC][_DEFUN([$1], | 21 | # to AC_REQUIRE anything: some configure.ac files have their first |
22 | [AC_REQUIRE([_gl_DEFUN_ONCE([$1])], | 22 | # AC_CHECK_DECL executed conditionally. Therefore append the extra tests |
23 | [m4_indir([_gl_DEFUN_ONCE([$1])])])])]dnl | 23 | # to AC_PROG_CC. |
24 | [AC][_DEFUN([_gl_DEFUN_ONCE([$1])], [$2])])]) | 24 | AC_DEFUN([gl_COMPILER_CLANG], |
25 | [ | ||
26 | dnl AC_REQUIRE([AC_PROG_CC]) | ||
27 | AC_CACHE_CHECK([whether the compiler is clang], | ||
28 | [gl_cv_compiler_clang], | ||
29 | [dnl Use _AC_COMPILE_IFELSE instead of AC_EGREP_CPP, to avoid error | ||
30 | dnl "circular dependency of AC_LANG_COMPILER(C)" if AC_PROG_CC has | ||
31 | dnl not yet been invoked. | ||
32 | _AC_COMPILE_IFELSE( | ||
33 | [AC_LANG_PROGRAM([[ | ||
34 | #ifdef __clang__ | ||
35 | barfbarf | ||
36 | #endif | ||
37 | ]],[[]]) | ||
38 | ], | ||
39 | [gl_cv_compiler_clang=no], | ||
40 | [gl_cv_compiler_clang=yes]) | ||
41 | ]) | ||
42 | ]) | ||
43 | AC_DEFUN([gl_COMPILER_PREPARE_CHECK_DECL], | ||
44 | [ | ||
45 | dnl AC_REQUIRE([AC_PROG_CC]) | ||
46 | dnl AC_REQUIRE([gl_COMPILER_CLANG]) | ||
47 | AC_CACHE_CHECK([for compiler option needed when checking for declarations], | ||
48 | [gl_cv_compiler_check_decl_option], | ||
49 | [if test $gl_cv_compiler_clang = yes; then | ||
50 | dnl Test whether the compiler supports the option | ||
51 | dnl '-Werror=implicit-function-declaration'. | ||
52 | save_ac_compile="$ac_compile" | ||
53 | ac_compile="$ac_compile -Werror=implicit-function-declaration" | ||
54 | dnl Use _AC_COMPILE_IFELSE instead of AC_COMPILE_IFELSE, to avoid a | ||
55 | dnl warning "AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS". | ||
56 | _AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[]])], | ||
57 | [gl_cv_compiler_check_decl_option='-Werror=implicit-function-declaration'], | ||
58 | [gl_cv_compiler_check_decl_option=none]) | ||
59 | ac_compile="$save_ac_compile" | ||
60 | else | ||
61 | gl_cv_compiler_check_decl_option=none | ||
62 | fi | ||
63 | ]) | ||
64 | if test "x$gl_cv_compiler_check_decl_option" != xnone; then | ||
65 | ac_compile_for_check_decl="$ac_compile $gl_cv_compiler_check_decl_option" | ||
66 | else | ||
67 | ac_compile_for_check_decl="$ac_compile" | ||
68 | fi | ||
69 | ]) | ||
70 | dnl Redefine _AC_CHECK_DECL_BODY so that it references ac_compile_for_check_decl | ||
71 | dnl instead of ac_compile. If, for whatever reason, the override of AC_PROG_CC | ||
72 | dnl in zzgnulib.m4 is inactive, use the original ac_compile. | ||
73 | m4_define([_AC_CHECK_DECL_BODY], | ||
74 | [ ac_save_ac_compile="$ac_compile" | ||
75 | if test -n "$ac_compile_for_check_decl"; then | ||
76 | ac_compile="$ac_compile_for_check_decl" | ||
77 | fi] | ||
78 | m4_defn([_AC_CHECK_DECL_BODY])[ ac_compile="$ac_save_ac_compile" | ||
79 | ]) | ||
25 | 80 | ||
26 | # gl_00GNULIB | 81 | # gl_00GNULIB |
27 | # ----------- | 82 | # ----------- |
diff --git a/gl/m4/__inline.m4 b/gl/m4/__inline.m4 new file mode 100644 index 00000000..acf8668b --- /dev/null +++ b/gl/m4/__inline.m4 | |||
@@ -0,0 +1,22 @@ | |||
1 | # Test for __inline keyword | ||
2 | dnl Copyright 2017-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl___INLINE], | ||
8 | [ | ||
9 | AC_CACHE_CHECK([whether the compiler supports the __inline keyword], | ||
10 | [gl_cv_c___inline], | ||
11 | [AC_COMPILE_IFELSE( | ||
12 | [AC_LANG_PROGRAM( | ||
13 | [[typedef int foo_t; | ||
14 | static __inline foo_t foo (void) { return 0; }]], | ||
15 | [[return foo ();]])], | ||
16 | [gl_cv_c___inline=yes], | ||
17 | [gl_cv_c___inline=no])]) | ||
18 | if test $gl_cv_c___inline = yes; then | ||
19 | AC_DEFINE([HAVE___INLINE], [1], | ||
20 | [Define to 1 if the compiler supports the keyword '__inline'.]) | ||
21 | fi | ||
22 | ]) | ||
diff --git a/gl/m4/absolute-header.m4 b/gl/m4/absolute-header.m4 new file mode 100644 index 00000000..e7947648 --- /dev/null +++ b/gl/m4/absolute-header.m4 | |||
@@ -0,0 +1,100 @@ | |||
1 | # absolute-header.m4 serial 17 | ||
2 | dnl Copyright (C) 2006-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | dnl From Derek Price. | ||
8 | |||
9 | # gl_ABSOLUTE_HEADER(HEADER1 HEADER2 ...) | ||
10 | # --------------------------------------- | ||
11 | # Find the absolute name of a header file, testing first if the header exists. | ||
12 | # If the header were sys/inttypes.h, this macro would define | ||
13 | # ABSOLUTE_SYS_INTTYPES_H to the '""' quoted absolute name of sys/inttypes.h | ||
14 | # in config.h | ||
15 | # (e.g. '#define ABSOLUTE_SYS_INTTYPES_H "///usr/include/sys/inttypes.h"'). | ||
16 | # The three "///" are to pacify Sun C 5.8, which otherwise would say | ||
17 | # "warning: #include of /usr/include/... may be non-portable". | ||
18 | # Use '""', not '<>', so that the /// cannot be confused with a C99 comment. | ||
19 | # Note: This macro assumes that the header file is not empty after | ||
20 | # preprocessing, i.e. it does not only define preprocessor macros but also | ||
21 | # provides some type/enum definitions or function/variable declarations. | ||
22 | AC_DEFUN([gl_ABSOLUTE_HEADER], | ||
23 | [AC_REQUIRE([AC_CANONICAL_HOST]) | ||
24 | AC_LANG_PREPROC_REQUIRE()dnl | ||
25 | m4_foreach_w([gl_HEADER_NAME], [$1], | ||
26 | [AS_VAR_PUSHDEF([gl_absolute_header], | ||
27 | [gl_cv_absolute_]m4_defn([gl_HEADER_NAME]))dnl | ||
28 | AC_CACHE_CHECK([absolute name of <]m4_defn([gl_HEADER_NAME])[>], | ||
29 | [gl_absolute_header], | ||
30 | [AS_VAR_PUSHDEF([ac_header_exists], | ||
31 | [ac_cv_header_]m4_defn([gl_HEADER_NAME]))dnl | ||
32 | AC_CHECK_HEADERS_ONCE(m4_defn([gl_HEADER_NAME]))dnl | ||
33 | if test AS_VAR_GET([ac_header_exists]) = yes; then | ||
34 | gl_ABSOLUTE_HEADER_ONE(m4_defn([gl_HEADER_NAME])) | ||
35 | fi | ||
36 | AS_VAR_POPDEF([ac_header_exists])dnl | ||
37 | ])dnl | ||
38 | AC_DEFINE_UNQUOTED(AS_TR_CPP([ABSOLUTE_]m4_defn([gl_HEADER_NAME])), | ||
39 | ["AS_VAR_GET([gl_absolute_header])"], | ||
40 | [Define this to an absolute name of <]m4_defn([gl_HEADER_NAME])[>.]) | ||
41 | AS_VAR_POPDEF([gl_absolute_header])dnl | ||
42 | ])dnl | ||
43 | ])# gl_ABSOLUTE_HEADER | ||
44 | |||
45 | # gl_ABSOLUTE_HEADER_ONE(HEADER) | ||
46 | # ------------------------------ | ||
47 | # Like gl_ABSOLUTE_HEADER, except that: | ||
48 | # - it assumes that the header exists, | ||
49 | # - it uses the current CPPFLAGS, | ||
50 | # - it does not cache the result, | ||
51 | # - it is silent. | ||
52 | AC_DEFUN([gl_ABSOLUTE_HEADER_ONE], | ||
53 | [ | ||
54 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
55 | AC_LANG_CONFTEST([AC_LANG_SOURCE([[#include <]]m4_dquote([$1])[[>]])]) | ||
56 | dnl AIX "xlc -E" and "cc -E" omit #line directives for header files | ||
57 | dnl that contain only a #include of other header files and no | ||
58 | dnl non-comment tokens of their own. This leads to a failure to | ||
59 | dnl detect the absolute name of <dirent.h>, <signal.h>, <poll.h> | ||
60 | dnl and others. The workaround is to force preservation of comments | ||
61 | dnl through option -C. This ensures all necessary #line directives | ||
62 | dnl are present. GCC supports option -C as well. | ||
63 | case "$host_os" in | ||
64 | aix*) gl_absname_cpp="$ac_cpp -C" ;; | ||
65 | *) gl_absname_cpp="$ac_cpp" ;; | ||
66 | esac | ||
67 | changequote(,) | ||
68 | case "$host_os" in | ||
69 | mingw*) | ||
70 | dnl For the sake of native Windows compilers (excluding gcc), | ||
71 | dnl treat backslash as a directory separator, like /. | ||
72 | dnl Actually, these compilers use a double-backslash as | ||
73 | dnl directory separator, inside the | ||
74 | dnl # line "filename" | ||
75 | dnl directives. | ||
76 | gl_dirsep_regex='[/\\]' | ||
77 | ;; | ||
78 | *) | ||
79 | gl_dirsep_regex='\/' | ||
80 | ;; | ||
81 | esac | ||
82 | dnl A sed expression that turns a string into a basic regular | ||
83 | dnl expression, for use within "/.../". | ||
84 | gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' | ||
85 | gl_header_literal_regex=`echo '$1' \ | ||
86 | | sed -e "$gl_make_literal_regex_sed"` | ||
87 | gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ | ||
88 | s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ | ||
89 | s|^/[^/]|//&| | ||
90 | p | ||
91 | q | ||
92 | }' | ||
93 | changequote([,]) | ||
94 | dnl eval is necessary to expand gl_absname_cpp. | ||
95 | dnl Ultrix and Pyramid sh refuse to redirect output of eval, | ||
96 | dnl so use subshell. | ||
97 | AS_VAR_SET([gl_cv_absolute_]AS_TR_SH([[$1]]), | ||
98 | [`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | | ||
99 | sed -n "$gl_absolute_header_sed"`]) | ||
100 | ]) | ||
diff --git a/gl/m4/af_alg.m4 b/gl/m4/af_alg.m4 new file mode 100644 index 00000000..f4c0d624 --- /dev/null +++ b/gl/m4/af_alg.m4 | |||
@@ -0,0 +1,57 @@ | |||
1 | # af_alg.m4 serial 6 | ||
2 | dnl Copyright 2018-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | dnl From Matteo Croce. | ||
8 | |||
9 | AC_DEFUN_ONCE([gl_AF_ALG], | ||
10 | [ | ||
11 | AC_REQUIRE([gl_SYS_SOCKET_H]) | ||
12 | AC_REQUIRE([AC_C_INLINE]) | ||
13 | |||
14 | dnl Check whether linux/if_alg.h has needed features. | ||
15 | AC_CACHE_CHECK([whether linux/if_alg.h has struct sockaddr_alg.], | ||
16 | [gl_cv_header_linux_if_alg_salg], | ||
17 | [AC_COMPILE_IFELSE( | ||
18 | [AC_LANG_PROGRAM([[#include <sys/socket.h> | ||
19 | #include <linux/if_alg.h> | ||
20 | struct sockaddr_alg salg = { | ||
21 | .salg_family = AF_ALG, | ||
22 | .salg_type = "hash", | ||
23 | .salg_name = "sha1", | ||
24 | };]])], | ||
25 | [gl_cv_header_linux_if_alg_salg=yes], | ||
26 | [gl_cv_header_linux_if_alg_salg=no])]) | ||
27 | if test "$gl_cv_header_linux_if_alg_salg" = yes; then | ||
28 | AC_DEFINE([HAVE_LINUX_IF_ALG_H], [1], | ||
29 | [Define to 1 if you have 'struct sockaddr_alg' defined.]) | ||
30 | fi | ||
31 | |||
32 | dnl The default is to not use AF_ALG if available, | ||
33 | dnl as it's system dependent as to whether the kernel | ||
34 | dnl routines are faster than libcrypto for example. | ||
35 | use_af_alg=no | ||
36 | AC_ARG_WITH([linux-crypto], | ||
37 | [AS_HELP_STRING([[--with-linux-crypto]], | ||
38 | [use Linux kernel cryptographic API (if available) for the hash functions | ||
39 | MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 on files])], | ||
40 | [use_af_alg=$withval], | ||
41 | [use_af_alg=no]) | ||
42 | dnl We cannot use it if it is not available. | ||
43 | if test "$gl_cv_header_linux_if_alg_salg" != yes; then | ||
44 | if test "$use_af_alg" != no; then | ||
45 | AC_MSG_WARN([Linux kernel cryptographic API not found]) | ||
46 | fi | ||
47 | use_af_alg=no | ||
48 | fi | ||
49 | |||
50 | if test "$use_af_alg" != no; then | ||
51 | USE_AF_ALG=1 | ||
52 | else | ||
53 | USE_AF_ALG=0 | ||
54 | fi | ||
55 | AC_DEFINE_UNQUOTED([USE_LINUX_CRYPTO_API], [$USE_AF_ALG], | ||
56 | [Define to 1 if you want to use the Linux kernel cryptographic API.]) | ||
57 | ]) | ||
diff --git a/gl/m4/alloca.m4 b/gl/m4/alloca.m4 index 270abd0c..c685fac9 100644 --- a/gl/m4/alloca.m4 +++ b/gl/m4/alloca.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # alloca.m4 serial 14 | 1 | # alloca.m4 serial 21 |
2 | dnl Copyright (C) 2002-2004, 2006-2007, 2009-2013 Free Software Foundation, | 2 | dnl Copyright (C) 2002-2004, 2006-2007, 2009-2023 Free Software Foundation, |
3 | dnl Inc. | 3 | dnl Inc. |
4 | dnl This file is free software; the Free Software Foundation | 4 | dnl This file is free software; the Free Software Foundation |
5 | dnl gives unlimited permission to copy and/or distribute it, | 5 | dnl gives unlimited permission to copy and/or distribute it, |
@@ -26,30 +26,35 @@ AC_DEFUN([gl_FUNC_ALLOCA], | |||
26 | AC_DEFINE([HAVE_ALLOCA], [1], | 26 | AC_DEFINE([HAVE_ALLOCA], [1], |
27 | [Define to 1 if you have 'alloca' after including <alloca.h>, | 27 | [Define to 1 if you have 'alloca' after including <alloca.h>, |
28 | a header that may be supplied by this distribution.]) | 28 | a header that may be supplied by this distribution.]) |
29 | ALLOCA_H=alloca.h | 29 | GL_GENERATE_ALLOCA_H=true |
30 | else | 30 | else |
31 | dnl alloca exists as a library function, i.e. it is slow and probably | 31 | dnl alloca exists as a library function, i.e. it is slow and probably |
32 | dnl a memory leak. Don't define HAVE_ALLOCA in this case. | 32 | dnl a memory leak. Don't define HAVE_ALLOCA in this case. |
33 | ALLOCA_H= | 33 | GL_GENERATE_ALLOCA_H=false |
34 | fi | 34 | fi |
35 | else | 35 | else |
36 | ALLOCA_H=alloca.h | 36 | GL_GENERATE_ALLOCA_H=true |
37 | fi | 37 | fi |
38 | AC_SUBST([ALLOCA_H]) | 38 | |
39 | AM_CONDITIONAL([GL_GENERATE_ALLOCA_H], [test -n "$ALLOCA_H"]) | 39 | if test $ac_cv_working_alloca_h = yes; then |
40 | HAVE_ALLOCA_H=1 | ||
41 | else | ||
42 | HAVE_ALLOCA_H=0 | ||
43 | fi | ||
44 | AC_SUBST([HAVE_ALLOCA_H]) | ||
40 | ]) | 45 | ]) |
41 | 46 | ||
42 | # Prerequisites of lib/alloca.c. | 47 | # Prerequisites of lib/alloca.c. |
43 | # STACK_DIRECTION is already handled by AC_FUNC_ALLOCA. | 48 | # STACK_DIRECTION is already handled by AC_FUNC_ALLOCA. |
44 | AC_DEFUN([gl_PREREQ_ALLOCA], [:]) | 49 | AC_DEFUN([gl_PREREQ_ALLOCA], [:]) |
45 | 50 | ||
46 | # This works around a bug in autoconf <= 2.68. | 51 | m4_version_prereq([2.70], [], [ |
47 | # See <http://lists.gnu.org/archive/html/bug-gnulib/2011-06/msg00277.html>. | ||
48 | 52 | ||
49 | m4_version_prereq([2.69], [] ,[ | 53 | # This works around a bug in autoconf <= 2.68 and has simplifications |
50 | 54 | # from 2.70. See: | |
51 | # This is taken from the following Autoconf patch: | 55 | # https://lists.gnu.org/r/bug-gnulib/2011-06/msg00277.html |
52 | # http://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=6cd9f12520b0d6f76d3230d7565feba1ecf29497 | 56 | # https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=6cd9f12520b0d6f76d3230d7565feba1ecf29497 |
57 | # https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=15edf7fd8094fd14a89d9891dd72a9624762597a | ||
53 | 58 | ||
54 | # _AC_LIBOBJ_ALLOCA | 59 | # _AC_LIBOBJ_ALLOCA |
55 | # ----------------- | 60 | # ----------------- |
@@ -65,26 +70,6 @@ AC_LIBSOURCES(alloca.c) | |||
65 | AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])dnl | 70 | AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])dnl |
66 | AC_DEFINE(C_ALLOCA, 1, [Define to 1 if using 'alloca.c'.]) | 71 | AC_DEFINE(C_ALLOCA, 1, [Define to 1 if using 'alloca.c'.]) |
67 | 72 | ||
68 | AC_CACHE_CHECK(whether 'alloca.c' needs Cray hooks, ac_cv_os_cray, | ||
69 | [AC_EGREP_CPP(webecray, | ||
70 | [#if defined CRAY && ! defined CRAY2 | ||
71 | webecray | ||
72 | #else | ||
73 | wenotbecray | ||
74 | #endif | ||
75 | ], ac_cv_os_cray=yes, ac_cv_os_cray=no)]) | ||
76 | if test $ac_cv_os_cray = yes; then | ||
77 | for ac_func in _getb67 GETB67 getb67; do | ||
78 | AC_CHECK_FUNC($ac_func, | ||
79 | [AC_DEFINE_UNQUOTED(CRAY_STACKSEG_END, $ac_func, | ||
80 | [Define to one of '_getb67', 'GETB67', | ||
81 | 'getb67' for Cray-2 and Cray-YMP | ||
82 | systems. This function is required for | ||
83 | 'alloca.c' support on those systems.]) | ||
84 | break]) | ||
85 | done | ||
86 | fi | ||
87 | |||
88 | AC_CACHE_CHECK([stack direction for C alloca], | 73 | AC_CACHE_CHECK([stack direction for C alloca], |
89 | [ac_cv_c_stack_direction], | 74 | [ac_cv_c_stack_direction], |
90 | [AC_RUN_IFELSE([AC_LANG_SOURCE( | 75 | [AC_RUN_IFELSE([AC_LANG_SOURCE( |
@@ -115,7 +100,7 @@ AH_VERBATIM([STACK_DIRECTION], | |||
115 | STACK_DIRECTION > 0 => grows toward higher addresses | 100 | STACK_DIRECTION > 0 => grows toward higher addresses |
116 | STACK_DIRECTION < 0 => grows toward lower addresses | 101 | STACK_DIRECTION < 0 => grows toward lower addresses |
117 | STACK_DIRECTION = 0 => direction of growth unknown */ | 102 | STACK_DIRECTION = 0 => direction of growth unknown */ |
118 | @%:@undef STACK_DIRECTION])dnl | 103 | #undef STACK_DIRECTION])dnl |
119 | AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction) | 104 | AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction) |
120 | ])# _AC_LIBOBJ_ALLOCA | 105 | ])# _AC_LIBOBJ_ALLOCA |
121 | ]) | 106 | ]) |
diff --git a/gl/m4/arpa_inet_h.m4 b/gl/m4/arpa_inet_h.m4 index ea69af57..fa5fe831 100644 --- a/gl/m4/arpa_inet_h.m4 +++ b/gl/m4/arpa_inet_h.m4 | |||
@@ -1,15 +1,15 @@ | |||
1 | # arpa_inet_h.m4 serial 13 | 1 | # arpa_inet_h.m4 serial 17 |
2 | dnl Copyright (C) 2006, 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2006, 2008-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | dnl Written by Simon Josefsson and Bruno Haible | 7 | dnl Written by Simon Josefsson and Bruno Haible |
8 | 8 | ||
9 | AC_DEFUN([gl_HEADER_ARPA_INET], | 9 | AC_DEFUN_ONCE([gl_ARPA_INET_H], |
10 | [ | 10 | [ |
11 | dnl Use AC_REQUIRE here, so that the default behavior below is expanded | 11 | dnl Ensure to expand the default settings once only, before all statements |
12 | dnl once only, before all statements that occur in other macros. | 12 | dnl that occur in other macros. |
13 | AC_REQUIRE([gl_ARPA_INET_H_DEFAULTS]) | 13 | AC_REQUIRE([gl_ARPA_INET_H_DEFAULTS]) |
14 | 14 | ||
15 | AC_CHECK_HEADERS_ONCE([arpa/inet.h]) | 15 | AC_CHECK_HEADERS_ONCE([arpa/inet.h]) |
@@ -24,6 +24,8 @@ AC_DEFUN([gl_HEADER_ARPA_INET], | |||
24 | 24 | ||
25 | AC_REQUIRE([gl_FEATURES_H]) | 25 | AC_REQUIRE([gl_FEATURES_H]) |
26 | 26 | ||
27 | gl_PREREQ_SYS_H_WS2TCPIP | ||
28 | |||
27 | dnl Check for declarations of anything we want to poison if the | 29 | dnl Check for declarations of anything we want to poison if the |
28 | dnl corresponding gnulib module is not in use. | 30 | dnl corresponding gnulib module is not in use. |
29 | gl_WARN_ON_USE_PREPARE([[ | 31 | gl_WARN_ON_USE_PREPARE([[ |
@@ -38,17 +40,32 @@ AC_DEFUN([gl_HEADER_ARPA_INET], | |||
38 | ]], [inet_ntop inet_pton]) | 40 | ]], [inet_ntop inet_pton]) |
39 | ]) | 41 | ]) |
40 | 42 | ||
43 | # gl_ARPA_INET_MODULE_INDICATOR([modulename]) | ||
44 | # sets the shell variable that indicates the presence of the given module | ||
45 | # to a C preprocessor expression that will evaluate to 1. | ||
46 | # This macro invocation must not occur in macros that are AC_REQUIREd. | ||
41 | AC_DEFUN([gl_ARPA_INET_MODULE_INDICATOR], | 47 | AC_DEFUN([gl_ARPA_INET_MODULE_INDICATOR], |
42 | [ | 48 | [ |
43 | dnl Use AC_REQUIRE here, so that the default settings are expanded once only. | 49 | dnl Ensure to expand the default settings once only. |
44 | AC_REQUIRE([gl_ARPA_INET_H_DEFAULTS]) | 50 | gl_ARPA_INET_H_REQUIRE_DEFAULTS |
45 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) | 51 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) |
46 | ]) | 52 | ]) |
47 | 53 | ||
54 | # Initializes the default values for AC_SUBSTed shell variables. | ||
55 | # This macro must not be AC_REQUIREd. It must only be invoked, and only | ||
56 | # outside of macros or in macros that are not AC_REQUIREd. | ||
57 | AC_DEFUN([gl_ARPA_INET_H_REQUIRE_DEFAULTS], | ||
58 | [ | ||
59 | m4_defun(GL_MODULE_INDICATOR_PREFIX[_ARPA_INET_H_MODULE_INDICATOR_DEFAULTS], [ | ||
60 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_INET_NTOP]) | ||
61 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_INET_PTON]) | ||
62 | ]) | ||
63 | m4_require(GL_MODULE_INDICATOR_PREFIX[_ARPA_INET_H_MODULE_INDICATOR_DEFAULTS]) | ||
64 | AC_REQUIRE([gl_ARPA_INET_H_DEFAULTS]) | ||
65 | ]) | ||
66 | |||
48 | AC_DEFUN([gl_ARPA_INET_H_DEFAULTS], | 67 | AC_DEFUN([gl_ARPA_INET_H_DEFAULTS], |
49 | [ | 68 | [ |
50 | GNULIB_INET_NTOP=0; AC_SUBST([GNULIB_INET_NTOP]) | ||
51 | GNULIB_INET_PTON=0; AC_SUBST([GNULIB_INET_PTON]) | ||
52 | dnl Assume proper GNU behavior unless another module says otherwise. | 69 | dnl Assume proper GNU behavior unless another module says otherwise. |
53 | HAVE_DECL_INET_NTOP=1; AC_SUBST([HAVE_DECL_INET_NTOP]) | 70 | HAVE_DECL_INET_NTOP=1; AC_SUBST([HAVE_DECL_INET_NTOP]) |
54 | HAVE_DECL_INET_PTON=1; AC_SUBST([HAVE_DECL_INET_PTON]) | 71 | HAVE_DECL_INET_PTON=1; AC_SUBST([HAVE_DECL_INET_PTON]) |
diff --git a/gl/m4/assert_h.m4 b/gl/m4/assert_h.m4 new file mode 100644 index 00000000..abba4fa3 --- /dev/null +++ b/gl/m4/assert_h.m4 | |||
@@ -0,0 +1,67 @@ | |||
1 | # assert-h.m4 | ||
2 | dnl Copyright (C) 2011-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | dnl From Paul Eggert. | ||
8 | |||
9 | AC_DEFUN([gl_ASSERT_H], | ||
10 | [ | ||
11 | AC_CACHE_CHECK([for static_assert], [gl_cv_static_assert], | ||
12 | [gl_save_CFLAGS=$CFLAGS | ||
13 | for gl_working in "yes, a keyword" "yes, an <assert.h> macro"; do | ||
14 | AS_CASE([$gl_working], | ||
15 | [*assert.h*], [CFLAGS="$gl_save_CFLAGS -DINCLUDE_ASSERT_H"]) | ||
16 | |||
17 | AC_COMPILE_IFELSE( | ||
18 | [AC_LANG_PROGRAM( | ||
19 | [[#if defined __clang__ && __STDC_VERSION__ < 202311 | ||
20 | #pragma clang diagnostic error "-Wc2x-extensions" | ||
21 | #pragma clang diagnostic error "-Wc++17-extensions" | ||
22 | #endif | ||
23 | #ifdef INCLUDE_ASSERT_H | ||
24 | #include <assert.h> | ||
25 | #endif | ||
26 | static_assert (2 + 2 == 4, "arithmetic does not work"); | ||
27 | static_assert (2 + 2 == 4); | ||
28 | ]], | ||
29 | [[ | ||
30 | static_assert (sizeof (char) == 1, "sizeof does not work"); | ||
31 | static_assert (sizeof (char) == 1); | ||
32 | ]])], | ||
33 | [gl_cv_static_assert=$gl_working], | ||
34 | [gl_cv_static_assert=no]) | ||
35 | CFLAGS=$gl_save_CFLAGS | ||
36 | test "$gl_cv_static_assert" != no && break | ||
37 | done]) | ||
38 | |||
39 | GL_GENERATE_ASSERT_H=false | ||
40 | AS_CASE([$gl_cv_static_assert], | ||
41 | [yes*keyword*], | ||
42 | [AC_DEFINE([HAVE_C_STATIC_ASSERT], [1], | ||
43 | [Define to 1 if the static_assert keyword works.])], | ||
44 | [no], | ||
45 | [GL_GENERATE_ASSERT_H=true | ||
46 | gl_NEXT_HEADERS([assert.h])]) | ||
47 | |||
48 | dnl The "zz" puts this toward config.h's end, to avoid potential | ||
49 | dnl collisions with other definitions. #undef assert so that | ||
50 | dnl programs are not tempted to use it without specifically | ||
51 | dnl including assert.h. Break the #undef apart with a comment | ||
52 | dnl so that 'configure' does not comment it out. | ||
53 | AH_VERBATIM([zzstatic_assert], | ||
54 | [#if (!defined HAVE_C_STATIC_ASSERT && !defined assert \ | ||
55 | && (!defined __cplusplus \ | ||
56 | || (__cpp_static_assert < 201411 \ | ||
57 | && __GNUG__ < 6 && __clang_major__ < 6))) | ||
58 | #include <assert.h> | ||
59 | #undef/**/assert | ||
60 | /* Solaris 11.4 <assert.h> defines static_assert as a macro with 2 arguments. | ||
61 | We need it also to be invocable with a single argument. */ | ||
62 | #if defined __sun && (__STDC_VERSION__ - 0 >= 201112L) && !defined __cplusplus | ||
63 | #undef/**/static_assert | ||
64 | #define static_assert _Static_assert | ||
65 | #endif | ||
66 | #endif]) | ||
67 | ]) | ||
diff --git a/gl/m4/base64.m4 b/gl/m4/base64.m4 index fc19893e..987930ab 100644 --- a/gl/m4/base64.m4 +++ b/gl/m4/base64.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # base64.m4 serial 4 | 1 | # base64.m4 serial 4 |
2 | dnl Copyright (C) 2004, 2006, 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2004, 2006, 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
diff --git a/gl/m4/btowc.m4 b/gl/m4/btowc.m4 index 978a06e9..77218a7d 100644 --- a/gl/m4/btowc.m4 +++ b/gl/m4/btowc.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # btowc.m4 serial 10 | 1 | # btowc.m4 serial 12 |
2 | dnl Copyright (C) 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2008-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -10,7 +10,7 @@ AC_DEFUN([gl_FUNC_BTOWC], | |||
10 | 10 | ||
11 | dnl Check whether <wchar.h> is usable at all, first. Otherwise the test | 11 | dnl Check whether <wchar.h> is usable at all, first. Otherwise the test |
12 | dnl program below may lead to an endless loop. See | 12 | dnl program below may lead to an endless loop. See |
13 | dnl <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440>. | 13 | dnl <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440>. |
14 | AC_REQUIRE([gl_WCHAR_H_INLINE_OK]) | 14 | AC_REQUIRE([gl_WCHAR_H_INLINE_OK]) |
15 | 15 | ||
16 | AC_CHECK_FUNCS_ONCE([btowc]) | 16 | AC_CHECK_FUNCS_ONCE([btowc]) |
@@ -28,14 +28,6 @@ AC_DEFUN([gl_FUNC_BTOWC], | |||
28 | [ | 28 | [ |
29 | AC_RUN_IFELSE( | 29 | AC_RUN_IFELSE( |
30 | [AC_LANG_SOURCE([[ | 30 | [AC_LANG_SOURCE([[ |
31 | #include <string.h> | ||
32 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | ||
33 | <wchar.h>. | ||
34 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | ||
35 | included before <wchar.h>. */ | ||
36 | #include <stddef.h> | ||
37 | #include <stdio.h> | ||
38 | #include <time.h> | ||
39 | #include <wchar.h> | 31 | #include <wchar.h> |
40 | int main () | 32 | int main () |
41 | { | 33 | { |
@@ -50,6 +42,8 @@ changequote(,)dnl | |||
50 | case "$host_os" in | 42 | case "$host_os" in |
51 | # Guess no on Cygwin. | 43 | # Guess no on Cygwin. |
52 | cygwin*) gl_cv_func_btowc_nul="guessing no" ;; | 44 | cygwin*) gl_cv_func_btowc_nul="guessing no" ;; |
45 | # Guess yes on native Windows. | ||
46 | mingw*) gl_cv_func_btowc_nul="guessing yes" ;; | ||
53 | # Guess yes otherwise. | 47 | # Guess yes otherwise. |
54 | *) gl_cv_func_btowc_nul="guessing yes" ;; | 48 | *) gl_cv_func_btowc_nul="guessing yes" ;; |
55 | esac | 49 | esac |
@@ -65,24 +59,19 @@ changequote([,])dnl | |||
65 | dnl is present. | 59 | dnl is present. |
66 | changequote(,)dnl | 60 | changequote(,)dnl |
67 | case "$host_os" in | 61 | case "$host_os" in |
68 | # Guess no on IRIX. | 62 | # Guess no on IRIX. |
69 | irix*) gl_cv_func_btowc_eof="guessing no" ;; | 63 | irix*) gl_cv_func_btowc_eof="guessing no" ;; |
70 | # Guess yes otherwise. | 64 | # Guess yes on native Windows. |
71 | *) gl_cv_func_btowc_eof="guessing yes" ;; | 65 | mingw*) gl_cv_func_btowc_eof="guessing yes" ;; |
66 | # Guess yes otherwise. | ||
67 | *) gl_cv_func_btowc_eof="guessing yes" ;; | ||
72 | esac | 68 | esac |
73 | changequote([,])dnl | 69 | changequote([,])dnl |
74 | if test $LOCALE_FR != none; then | 70 | if test $LOCALE_FR != none; then |
75 | AC_RUN_IFELSE( | 71 | AC_RUN_IFELSE( |
76 | [AC_LANG_SOURCE([[ | 72 | [AC_LANG_SOURCE([[ |
77 | #include <locale.h> | 73 | #include <locale.h> |
78 | #include <string.h> | ||
79 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | ||
80 | <wchar.h>. | ||
81 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | ||
82 | included before <wchar.h>. */ | ||
83 | #include <stddef.h> | ||
84 | #include <stdio.h> | 74 | #include <stdio.h> |
85 | #include <time.h> | ||
86 | #include <wchar.h> | 75 | #include <wchar.h> |
87 | int main () | 76 | int main () |
88 | { | 77 | { |
diff --git a/gl/m4/builtin-expect.m4 b/gl/m4/builtin-expect.m4 new file mode 100644 index 00000000..531ed48a --- /dev/null +++ b/gl/m4/builtin-expect.m4 | |||
@@ -0,0 +1,49 @@ | |||
1 | dnl Check for __builtin_expect. | ||
2 | |||
3 | dnl Copyright 2016-2023 Free Software Foundation, Inc. | ||
4 | dnl This file is free software; the Free Software Foundation | ||
5 | dnl gives unlimited permission to copy and/or distribute it, | ||
6 | dnl with or without modifications, as long as this notice is preserved. | ||
7 | |||
8 | dnl Written by Paul Eggert. | ||
9 | |||
10 | AC_DEFUN([gl___BUILTIN_EXPECT], | ||
11 | [ | ||
12 | AC_CACHE_CHECK([for __builtin_expect], | ||
13 | [gl_cv___builtin_expect], | ||
14 | [AC_LINK_IFELSE( | ||
15 | [AC_LANG_SOURCE([[ | ||
16 | int | ||
17 | main (int argc, char **argv) | ||
18 | { | ||
19 | argc = __builtin_expect (argc, 100); | ||
20 | return argv[argc != 100][0]; | ||
21 | }]])], | ||
22 | [gl_cv___builtin_expect=yes], | ||
23 | [AC_LINK_IFELSE( | ||
24 | [AC_LANG_SOURCE([[ | ||
25 | #include <builtins.h> | ||
26 | int | ||
27 | main (int argc, char **argv) | ||
28 | { | ||
29 | argc = __builtin_expect (argc, 100); | ||
30 | return argv[argc != 100][0]; | ||
31 | }]])], | ||
32 | [gl_cv___builtin_expect="in <builtins.h>"], | ||
33 | [gl_cv___builtin_expect=no])])]) | ||
34 | if test "$gl_cv___builtin_expect" = yes; then | ||
35 | AC_DEFINE([HAVE___BUILTIN_EXPECT], [1]) | ||
36 | elif test "$gl_cv___builtin_expect" = "in <builtins.h>"; then | ||
37 | AC_DEFINE([HAVE___BUILTIN_EXPECT], [2]) | ||
38 | fi | ||
39 | AH_VERBATIM([HAVE___BUILTIN_EXPECT], | ||
40 | [/* Define to 1 if the compiler supports __builtin_expect, | ||
41 | and to 2 if <builtins.h> does. */ | ||
42 | #undef HAVE___BUILTIN_EXPECT | ||
43 | #ifndef HAVE___BUILTIN_EXPECT | ||
44 | # define __builtin_expect(e, c) (e) | ||
45 | #elif HAVE___BUILTIN_EXPECT == 2 | ||
46 | # include <builtins.h> | ||
47 | #endif | ||
48 | ]) | ||
49 | ]) | ||
diff --git a/gl/m4/byteswap.m4 b/gl/m4/byteswap.m4 new file mode 100644 index 00000000..8058d178 --- /dev/null +++ b/gl/m4/byteswap.m4 | |||
@@ -0,0 +1,17 @@ | |||
1 | # byteswap.m4 serial 5 | ||
2 | dnl Copyright (C) 2005, 2007, 2009-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | dnl Written by Oskar Liljeblad. | ||
8 | |||
9 | AC_DEFUN([gl_BYTESWAP], | ||
10 | [ | ||
11 | dnl Prerequisites of lib/byteswap.in.h. | ||
12 | AC_CHECK_HEADERS([byteswap.h], [ | ||
13 | GL_GENERATE_BYTESWAP_H=false | ||
14 | ], [ | ||
15 | GL_GENERATE_BYTESWAP_H=true | ||
16 | ]) | ||
17 | ]) | ||
diff --git a/gl/m4/c-bool.m4 b/gl/m4/c-bool.m4 new file mode 100644 index 00000000..f614371b --- /dev/null +++ b/gl/m4/c-bool.m4 | |||
@@ -0,0 +1,51 @@ | |||
1 | # Check for bool that conforms to C2023. | ||
2 | |||
3 | dnl Copyright 2022-2023 Free Software Foundation, Inc. | ||
4 | dnl This file is free software; the Free Software Foundation | ||
5 | dnl gives unlimited permission to copy and/or distribute it, | ||
6 | dnl with or without modifications, as long as this notice is preserved. | ||
7 | |||
8 | AC_DEFUN([gl_C_BOOL], | ||
9 | [ | ||
10 | AC_CACHE_CHECK([for bool, true, false], [gl_cv_c_bool], | ||
11 | [AC_COMPILE_IFELSE( | ||
12 | [AC_LANG_SOURCE([[ | ||
13 | #if true == false | ||
14 | #error "true == false" | ||
15 | #endif | ||
16 | extern bool b; | ||
17 | bool b = true == false;]])], | ||
18 | [gl_cv_c_bool=yes], | ||
19 | [gl_cv_c_bool=no])]) | ||
20 | if test "$gl_cv_c_bool" = yes; then | ||
21 | AC_DEFINE([HAVE_C_BOOL], [1], | ||
22 | [Define to 1 if bool, true and false work as per C2023.]) | ||
23 | fi | ||
24 | |||
25 | AC_CHECK_HEADERS_ONCE([stdbool.h]) | ||
26 | |||
27 | dnl The "zz" puts this toward config.h's end, to avoid potential | ||
28 | dnl collisions with other definitions. | ||
29 | dnl If 'bool', 'true' and 'false' do not work, arrange for them to work. | ||
30 | dnl In C, this means including <stdbool.h> if it is not already included. | ||
31 | dnl However, if the preprocessor mistakenly treats 'true' as 0, | ||
32 | dnl define it to a bool expression equal to 1; this is needed in | ||
33 | dnl Sun C++ 5.11 (Oracle Solaris Studio 12.2, 2010) and older. | ||
34 | AH_VERBATIM([zzbool], | ||
35 | [#ifndef HAVE_C_BOOL | ||
36 | # if !defined __cplusplus && !defined __bool_true_false_are_defined | ||
37 | # if HAVE_STDBOOL_H | ||
38 | # include <stdbool.h> | ||
39 | # else | ||
40 | # if defined __SUNPRO_C | ||
41 | # error "<stdbool.h> is not usable with this configuration. To make it usable, add -D_STDC_C99= to $CC." | ||
42 | # else | ||
43 | # error "<stdbool.h> does not exist on this platform. Use gnulib module 'stdbool-c99' instead of gnulib module 'stdbool'." | ||
44 | # endif | ||
45 | # endif | ||
46 | # endif | ||
47 | # if !true | ||
48 | # define true (!false) | ||
49 | # endif | ||
50 | #endif]) | ||
51 | ]) | ||
diff --git a/gl/m4/calloc.m4 b/gl/m4/calloc.m4 new file mode 100644 index 00000000..23c0dd9f --- /dev/null +++ b/gl/m4/calloc.m4 | |||
@@ -0,0 +1,83 @@ | |||
1 | # calloc.m4 serial 29 | ||
2 | |||
3 | # Copyright (C) 2004-2023 Free Software Foundation, Inc. | ||
4 | # This file is free software; the Free Software Foundation | ||
5 | # gives unlimited permission to copy and/or distribute it, | ||
6 | # with or without modifications, as long as this notice is preserved. | ||
7 | |||
8 | # Written by Jim Meyering. | ||
9 | |||
10 | # Determine whether calloc (N, S) returns non-NULL when N*S is zero, | ||
11 | # and returns NULL when N*S overflows. | ||
12 | # If so, define HAVE_CALLOC. Otherwise, define calloc to rpl_calloc | ||
13 | # and arrange to use a calloc wrapper function that does work in that case. | ||
14 | |||
15 | # _AC_FUNC_CALLOC_IF([IF-WORKS], [IF-NOT]) | ||
16 | # ------------------------------------- | ||
17 | # If calloc is compatible with GNU calloc, run IF-WORKS, otherwise, IF-NOT. | ||
18 | AC_DEFUN([_AC_FUNC_CALLOC_IF], | ||
19 | [ | ||
20 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | ||
21 | AC_CACHE_CHECK([whether calloc (0, n) and calloc (n, 0) return nonnull], | ||
22 | [ac_cv_func_calloc_0_nonnull], | ||
23 | [if test $cross_compiling != yes; then | ||
24 | ac_cv_func_calloc_0_nonnull=yes | ||
25 | AC_RUN_IFELSE( | ||
26 | [AC_LANG_PROGRAM( | ||
27 | [AC_INCLUDES_DEFAULT], | ||
28 | [[int result = 0; | ||
29 | char * volatile p = calloc (0, 0); | ||
30 | if (!p) | ||
31 | result |= 1; | ||
32 | free (p); | ||
33 | return result; | ||
34 | ]])], | ||
35 | [], | ||
36 | [ac_cv_func_calloc_0_nonnull=no]) | ||
37 | else | ||
38 | case "$host_os" in | ||
39 | # Guess yes on glibc systems. | ||
40 | *-gnu* | gnu*) ac_cv_func_calloc_0_nonnull="guessing yes" ;; | ||
41 | # Guess yes on musl systems. | ||
42 | *-musl*) ac_cv_func_calloc_0_nonnull="guessing yes" ;; | ||
43 | # Guess yes on native Windows. | ||
44 | mingw*) ac_cv_func_calloc_0_nonnull="guessing yes" ;; | ||
45 | # If we don't know, obey --enable-cross-guesses. | ||
46 | *) ac_cv_func_calloc_0_nonnull="$gl_cross_guess_normal" ;; | ||
47 | esac | ||
48 | fi | ||
49 | ]) | ||
50 | AS_CASE([$ac_cv_func_calloc_0_nonnull], [*yes], [$1], [$2]) | ||
51 | ]) | ||
52 | |||
53 | |||
54 | # gl_FUNC_CALLOC_GNU | ||
55 | # ------------------ | ||
56 | # Replace calloc if it is not compatible with GNU libc. | ||
57 | AC_DEFUN([gl_FUNC_CALLOC_GNU], | ||
58 | [ | ||
59 | AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) | ||
60 | AC_REQUIRE([gl_FUNC_CALLOC_POSIX]) | ||
61 | REPLACE_CALLOC_FOR_CALLOC_GNU="$REPLACE_CALLOC_FOR_CALLOC_POSIX" | ||
62 | if test $REPLACE_CALLOC_FOR_CALLOC_GNU = 0; then | ||
63 | _AC_FUNC_CALLOC_IF([], [REPLACE_CALLOC_FOR_CALLOC_GNU=1]) | ||
64 | fi | ||
65 | ])# gl_FUNC_CALLOC_GNU | ||
66 | |||
67 | # gl_FUNC_CALLOC_POSIX | ||
68 | # -------------------- | ||
69 | # Test whether 'calloc' is POSIX compliant (sets errno to ENOMEM when it | ||
70 | # fails, and doesn't mess up with ptrdiff_t or size_t overflow), | ||
71 | # and replace calloc if it is not. | ||
72 | AC_DEFUN([gl_FUNC_CALLOC_POSIX], | ||
73 | [ | ||
74 | AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) | ||
75 | AC_REQUIRE([gl_FUNC_MALLOC_POSIX]) | ||
76 | if test $REPLACE_MALLOC_FOR_MALLOC_POSIX = 1; then | ||
77 | REPLACE_CALLOC_FOR_CALLOC_POSIX=1 | ||
78 | fi | ||
79 | dnl Although in theory we should also test for size_t overflow, | ||
80 | dnl in practice testing for ptrdiff_t overflow suffices | ||
81 | dnl since PTRDIFF_MAX <= SIZE_MAX on all known Gnulib porting targets. | ||
82 | dnl A separate size_t test would slow down 'configure'. | ||
83 | ]) | ||
diff --git a/gl/m4/close.m4 b/gl/m4/close.m4 new file mode 100644 index 00000000..9f95c670 --- /dev/null +++ b/gl/m4/close.m4 | |||
@@ -0,0 +1,35 @@ | |||
1 | # close.m4 serial 9 | ||
2 | dnl Copyright (C) 2008-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_FUNC_CLOSE], | ||
8 | [ | ||
9 | AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) | ||
10 | m4_ifdef([gl_MSVC_INVAL], [ | ||
11 | AC_REQUIRE([gl_MSVC_INVAL]) | ||
12 | if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then | ||
13 | REPLACE_CLOSE=1 | ||
14 | fi | ||
15 | ]) | ||
16 | m4_ifdef([gl_PREREQ_SYS_H_WINSOCK2], [ | ||
17 | gl_PREREQ_SYS_H_WINSOCK2 | ||
18 | if test $UNISTD_H_HAVE_WINSOCK2_H = 1; then | ||
19 | dnl Even if the 'socket' module is not used here, another part of the | ||
20 | dnl application may use it and pass file descriptors that refer to | ||
21 | dnl sockets to the close() function. So enable the support for sockets. | ||
22 | REPLACE_CLOSE=1 | ||
23 | fi | ||
24 | ]) | ||
25 | dnl Replace close() for supporting the gnulib-defined fchdir() function, | ||
26 | dnl to keep fchdir's bookkeeping up-to-date. | ||
27 | m4_ifdef([gl_FUNC_FCHDIR], [ | ||
28 | if test $REPLACE_CLOSE = 0; then | ||
29 | gl_TEST_FCHDIR | ||
30 | if test $HAVE_FCHDIR = 0; then | ||
31 | REPLACE_CLOSE=1 | ||
32 | fi | ||
33 | fi | ||
34 | ]) | ||
35 | ]) | ||
diff --git a/gl/m4/codeset.m4 b/gl/m4/codeset.m4 index c2761be2..5804f472 100644 --- a/gl/m4/codeset.m4 +++ b/gl/m4/codeset.m4 | |||
@@ -1,5 +1,6 @@ | |||
1 | # codeset.m4 serial 5 (gettext-0.18.2) | 1 | # codeset.m4 serial 5 (gettext-0.18.2) |
2 | dnl Copyright (C) 2000-2002, 2006, 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2000-2002, 2006, 2008-2014, 2016, 2019-2023 Free Software |
3 | dnl Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | 4 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 5 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 6 | dnl with or without modifications, as long as this notice is preserved. |
diff --git a/gl/m4/configmake.m4 b/gl/m4/configmake.m4 deleted file mode 100644 index 823ffc0d..00000000 --- a/gl/m4/configmake.m4 +++ /dev/null | |||
@@ -1,50 +0,0 @@ | |||
1 | # configmake.m4 serial 1 | ||
2 | dnl Copyright (C) 2010-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | # gl_CONFIGMAKE_PREP | ||
8 | # ------------------ | ||
9 | # Guarantee all of the standard directory variables, even when used with | ||
10 | # autoconf 2.59 (datarootdir wasn't supported until 2.59c) or automake | ||
11 | # 1.9.6 (pkglibexecdir wasn't supported until 1.10b.). | ||
12 | AC_DEFUN([gl_CONFIGMAKE_PREP], | ||
13 | [ | ||
14 | dnl Technically, datadir should default to datarootdir. But if | ||
15 | dnl autoconf is too old to provide datarootdir, then reversing the | ||
16 | dnl definition is a reasonable compromise. Only AC_SUBST a variable | ||
17 | dnl if it was not already defined earlier by autoconf. | ||
18 | if test "x$datarootdir" = x; then | ||
19 | AC_SUBST([datarootdir], ['${datadir}']) | ||
20 | fi | ||
21 | dnl Copy the approach used in autoconf 2.60. | ||
22 | if test "x$docdir" = x; then | ||
23 | AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], | ||
24 | ['${datarootdir}/doc/${PACKAGE_TARNAME}'], | ||
25 | ['${datarootdir}/doc/${PACKAGE}'])]) | ||
26 | fi | ||
27 | dnl The remaining variables missing from autoconf 2.59 are easier. | ||
28 | if test "x$htmldir" = x; then | ||
29 | AC_SUBST([htmldir], ['${docdir}']) | ||
30 | fi | ||
31 | if test "x$dvidir" = x; then | ||
32 | AC_SUBST([dvidir], ['${docdir}']) | ||
33 | fi | ||
34 | if test "x$pdfdir" = x; then | ||
35 | AC_SUBST([pdfdir], ['${docdir}']) | ||
36 | fi | ||
37 | if test "x$psdir" = x; then | ||
38 | AC_SUBST([psdir], ['${docdir}']) | ||
39 | fi | ||
40 | if test "x$lispdir" = x; then | ||
41 | AC_SUBST([lispdir], ['${datarootdir}/emacs/site-lisp']) | ||
42 | fi | ||
43 | if test "x$localedir" = x; then | ||
44 | AC_SUBST([localedir], ['${datarootdir}/locale']) | ||
45 | fi | ||
46 | |||
47 | dnl Automake 1.9.6 only lacks pkglibexecdir; and since 1.11 merely | ||
48 | dnl provides it without AC_SUBST, this blind use of AC_SUBST is safe. | ||
49 | AC_SUBST([pkglibexecdir], ['${libexecdir}/${PACKAGE}']) | ||
50 | ]) | ||
diff --git a/gl/m4/dirname.m4 b/gl/m4/dirname.m4 deleted file mode 100644 index 5897a2a8..00000000 --- a/gl/m4/dirname.m4 +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | #serial 10 -*- autoconf -*- | ||
2 | dnl Copyright (C) 2002-2006, 2009-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_DIRNAME], | ||
8 | [ | ||
9 | AC_REQUIRE([gl_DIRNAME_LGPL]) | ||
10 | ]) | ||
11 | |||
12 | AC_DEFUN([gl_DIRNAME_LGPL], | ||
13 | [ | ||
14 | dnl Prerequisites of lib/dirname.h. | ||
15 | AC_REQUIRE([gl_DOUBLE_SLASH_ROOT]) | ||
16 | |||
17 | dnl No prerequisites of lib/basename-lgpl.c, lib/dirname-lgpl.c, | ||
18 | dnl lib/stripslash.c. | ||
19 | ]) | ||
diff --git a/gl/m4/double-slash-root.m4 b/gl/m4/double-slash-root.m4 index bd6f8671..1776e5eb 100644 --- a/gl/m4/double-slash-root.m4 +++ b/gl/m4/double-slash-root.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # double-slash-root.m4 serial 4 -*- Autoconf -*- | 1 | # double-slash-root.m4 serial 4 -*- Autoconf -*- |
2 | dnl Copyright (C) 2006, 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2006, 2008-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
diff --git a/gl/m4/dup2.m4 b/gl/m4/dup2.m4 new file mode 100644 index 00000000..e1cc73e1 --- /dev/null +++ b/gl/m4/dup2.m4 | |||
@@ -0,0 +1,105 @@ | |||
1 | #serial 27 | ||
2 | dnl Copyright (C) 2002, 2005, 2007, 2009-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_FUNC_DUP2], | ||
8 | [ | ||
9 | AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) | ||
10 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
11 | AC_CACHE_CHECK([whether dup2 works], [gl_cv_func_dup2_works], | ||
12 | [AC_RUN_IFELSE([ | ||
13 | AC_LANG_PROGRAM( | ||
14 | [[#include <errno.h> | ||
15 | #include <fcntl.h> | ||
16 | #include <limits.h> | ||
17 | #include <sys/resource.h> | ||
18 | #include <unistd.h> | ||
19 | ]GL_MDA_DEFINES[ | ||
20 | #ifndef RLIM_SAVED_CUR | ||
21 | # define RLIM_SAVED_CUR RLIM_INFINITY | ||
22 | #endif | ||
23 | #ifndef RLIM_SAVED_MAX | ||
24 | # define RLIM_SAVED_MAX RLIM_INFINITY | ||
25 | #endif | ||
26 | ]], | ||
27 | [[int result = 0; | ||
28 | int bad_fd = INT_MAX; | ||
29 | struct rlimit rlim; | ||
30 | if (getrlimit (RLIMIT_NOFILE, &rlim) == 0 | ||
31 | && 0 <= rlim.rlim_cur && rlim.rlim_cur <= INT_MAX | ||
32 | && rlim.rlim_cur != RLIM_INFINITY | ||
33 | && rlim.rlim_cur != RLIM_SAVED_MAX | ||
34 | && rlim.rlim_cur != RLIM_SAVED_CUR) | ||
35 | bad_fd = rlim.rlim_cur; | ||
36 | #ifdef FD_CLOEXEC | ||
37 | if (fcntl (1, F_SETFD, FD_CLOEXEC) == -1) | ||
38 | result |= 1; | ||
39 | #endif | ||
40 | if (dup2 (1, 1) != 1) | ||
41 | result |= 2; | ||
42 | #ifdef FD_CLOEXEC | ||
43 | if (fcntl (1, F_GETFD) != FD_CLOEXEC) | ||
44 | result |= 4; | ||
45 | #endif | ||
46 | close (0); | ||
47 | if (dup2 (0, 0) != -1) | ||
48 | result |= 8; | ||
49 | /* Many gnulib modules require POSIX conformance of EBADF. */ | ||
50 | if (dup2 (2, bad_fd) == -1 && errno != EBADF) | ||
51 | result |= 16; | ||
52 | /* Flush out some cygwin core dumps. */ | ||
53 | if (dup2 (2, -1) != -1 || errno != EBADF) | ||
54 | result |= 32; | ||
55 | dup2 (2, 255); | ||
56 | dup2 (2, 256); | ||
57 | /* On OS/2 kLIBC, dup2() does not work on a directory fd. */ | ||
58 | { | ||
59 | int fd = open (".", O_RDONLY); | ||
60 | if (fd == -1) | ||
61 | result |= 64; | ||
62 | else if (dup2 (fd, fd + 1) == -1) | ||
63 | result |= 128; | ||
64 | close (fd); | ||
65 | } | ||
66 | return result;]]) | ||
67 | ], | ||
68 | [gl_cv_func_dup2_works=yes], [gl_cv_func_dup2_works=no], | ||
69 | [case "$host_os" in | ||
70 | mingw*) # on this platform, dup2 always returns 0 for success | ||
71 | gl_cv_func_dup2_works="guessing no" ;; | ||
72 | cygwin*) # on cygwin 1.5.x, dup2(1,1) returns 0 | ||
73 | gl_cv_func_dup2_works="guessing no" ;; | ||
74 | aix* | freebsd*) | ||
75 | # on AIX 7.1 and FreeBSD 6.1, dup2 (1,toobig) gives EMFILE, | ||
76 | # not EBADF. | ||
77 | gl_cv_func_dup2_works="guessing no" ;; | ||
78 | haiku*) # on Haiku alpha 2, dup2(1, 1) resets FD_CLOEXEC. | ||
79 | gl_cv_func_dup2_works="guessing no" ;; | ||
80 | *-android*) # implemented using dup3(), which fails if oldfd == newfd | ||
81 | gl_cv_func_dup2_works="guessing no" ;; | ||
82 | os2*) # on OS/2 kLIBC, dup2() does not work on a directory fd. | ||
83 | gl_cv_func_dup2_works="guessing no" ;; | ||
84 | *) gl_cv_func_dup2_works="guessing yes" ;; | ||
85 | esac]) | ||
86 | ]) | ||
87 | case "$gl_cv_func_dup2_works" in | ||
88 | *yes) ;; | ||
89 | *) | ||
90 | REPLACE_DUP2=1 | ||
91 | AC_CHECK_FUNCS([setdtablesize]) | ||
92 | ;; | ||
93 | esac | ||
94 | dnl Replace dup2() for supporting the gnulib-defined fchdir() function, | ||
95 | dnl to keep fchdir's bookkeeping up-to-date. | ||
96 | m4_ifdef([gl_FUNC_FCHDIR], [ | ||
97 | gl_TEST_FCHDIR | ||
98 | if test $HAVE_FCHDIR = 0; then | ||
99 | REPLACE_DUP2=1 | ||
100 | fi | ||
101 | ]) | ||
102 | ]) | ||
103 | |||
104 | # Prerequisites of lib/dup2.c. | ||
105 | AC_DEFUN([gl_PREREQ_DUP2], []) | ||
diff --git a/gl/m4/eealloc.m4 b/gl/m4/eealloc.m4 index c640ec12..cb3e08fe 100644 --- a/gl/m4/eealloc.m4 +++ b/gl/m4/eealloc.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # eealloc.m4 serial 3 | 1 | # eealloc.m4 serial 3 |
2 | dnl Copyright (C) 2003, 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2003, 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
diff --git a/gl/m4/environ.m4 b/gl/m4/environ.m4 index 593a33ed..741dfc56 100644 --- a/gl/m4/environ.m4 +++ b/gl/m4/environ.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # environ.m4 serial 6 | 1 | # environ.m4 serial 8 |
2 | dnl Copyright (C) 2001-2004, 2006-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2001-2004, 2006-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -29,16 +29,15 @@ AC_DEFUN_ONCE([gl_ENVIRON], | |||
29 | AC_DEFUN([gt_CHECK_VAR_DECL], | 29 | AC_DEFUN([gt_CHECK_VAR_DECL], |
30 | [ | 30 | [ |
31 | define([gt_cv_var], [gt_cv_var_]$2[_declaration]) | 31 | define([gt_cv_var], [gt_cv_var_]$2[_declaration]) |
32 | AC_MSG_CHECKING([if $2 is properly declared]) | 32 | AC_CACHE_CHECK([if $2 is properly declared], [gt_cv_var], |
33 | AC_CACHE_VAL([gt_cv_var], [ | 33 | [AC_COMPILE_IFELSE( |
34 | AC_COMPILE_IFELSE( | 34 | [AC_LANG_PROGRAM( |
35 | [AC_LANG_PROGRAM( | 35 | [[$1 |
36 | [[$1 | 36 | typedef struct { int foo; } foo_t; |
37 | extern struct { int foo; } $2;]], | 37 | extern foo_t $2;]], |
38 | [[$2.foo = 1;]])], | 38 | [[$2.foo = 1;]])], |
39 | [gt_cv_var=no], | 39 | [gt_cv_var=no], |
40 | [gt_cv_var=yes])]) | 40 | [gt_cv_var=yes])]) |
41 | AC_MSG_RESULT([$gt_cv_var]) | ||
42 | if test $gt_cv_var = yes; then | 41 | if test $gt_cv_var = yes; then |
43 | AC_DEFINE([HAVE_]m4_translit($2, [a-z], [A-Z])[_DECL], 1, | 42 | AC_DEFINE([HAVE_]m4_translit($2, [a-z], [A-Z])[_DECL], 1, |
44 | [Define if you have the declaration of $2.]) | 43 | [Define if you have the declaration of $2.]) |
diff --git a/gl/m4/errno_h.m4 b/gl/m4/errno_h.m4 index c813ea58..4c70d225 100644 --- a/gl/m4/errno_h.m4 +++ b/gl/m4/errno_h.m4 | |||
@@ -1,9 +1,11 @@ | |||
1 | # errno_h.m4 serial 12 | 1 | # errno_h.m4 serial 14 |
2 | dnl Copyright (C) 2004, 2006, 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2004, 2006, 2008-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | AC_PREREQ([2.61]) | ||
8 | |||
7 | AC_DEFUN_ONCE([gl_HEADER_ERRNO_H], | 9 | AC_DEFUN_ONCE([gl_HEADER_ERRNO_H], |
8 | [ | 10 | [ |
9 | AC_REQUIRE([AC_PROG_CC]) | 11 | AC_REQUIRE([AC_PROG_CC]) |
@@ -66,13 +68,11 @@ booboo | |||
66 | [gl_cv_header_errno_h_complete=yes]) | 68 | [gl_cv_header_errno_h_complete=yes]) |
67 | ]) | 69 | ]) |
68 | if test $gl_cv_header_errno_h_complete = yes; then | 70 | if test $gl_cv_header_errno_h_complete = yes; then |
69 | ERRNO_H='' | 71 | GL_GENERATE_ERRNO_H=false |
70 | else | 72 | else |
71 | gl_NEXT_HEADERS([errno.h]) | 73 | gl_NEXT_HEADERS([errno.h]) |
72 | ERRNO_H='errno.h' | 74 | GL_GENERATE_ERRNO_H=true |
73 | fi | 75 | fi |
74 | AC_SUBST([ERRNO_H]) | ||
75 | AM_CONDITIONAL([GL_GENERATE_ERRNO_H], [test -n "$ERRNO_H"]) | ||
76 | gl_REPLACE_ERRNO_VALUE([EMULTIHOP]) | 76 | gl_REPLACE_ERRNO_VALUE([EMULTIHOP]) |
77 | gl_REPLACE_ERRNO_VALUE([ENOLINK]) | 77 | gl_REPLACE_ERRNO_VALUE([ENOLINK]) |
78 | gl_REPLACE_ERRNO_VALUE([EOVERFLOW]) | 78 | gl_REPLACE_ERRNO_VALUE([EOVERFLOW]) |
@@ -86,7 +86,7 @@ booboo | |||
86 | # Set the variables EOVERFLOW_HIDDEN and EOVERFLOW_VALUE. | 86 | # Set the variables EOVERFLOW_HIDDEN and EOVERFLOW_VALUE. |
87 | AC_DEFUN([gl_REPLACE_ERRNO_VALUE], | 87 | AC_DEFUN([gl_REPLACE_ERRNO_VALUE], |
88 | [ | 88 | [ |
89 | if test -n "$ERRNO_H"; then | 89 | if $GL_GENERATE_ERRNO_H; then |
90 | AC_CACHE_CHECK([for ]$1[ value], [gl_cv_header_errno_h_]$1, [ | 90 | AC_CACHE_CHECK([for ]$1[ value], [gl_cv_header_errno_h_]$1, [ |
91 | AC_EGREP_CPP([yes],[ | 91 | AC_EGREP_CPP([yes],[ |
92 | #include <errno.h> | 92 | #include <errno.h> |
@@ -129,9 +129,3 @@ yes | |||
129 | AC_SUBST($1[_VALUE]) | 129 | AC_SUBST($1[_VALUE]) |
130 | fi | 130 | fi |
131 | ]) | 131 | ]) |
132 | |||
133 | dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. | ||
134 | dnl Remove this when we can assume autoconf >= 2.61. | ||
135 | m4_ifdef([AC_COMPUTE_INT], [], [ | ||
136 | AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) | ||
137 | ]) | ||
diff --git a/gl/m4/error.m4 b/gl/m4/error.m4 index 29e6fdc9..8cc75dff 100644 --- a/gl/m4/error.m4 +++ b/gl/m4/error.m4 | |||
@@ -1,6 +1,6 @@ | |||
1 | #serial 14 | 1 | #serial 15 |
2 | 2 | ||
3 | # Copyright (C) 1996-1998, 2001-2004, 2009-2013 Free Software Foundation, Inc. | 3 | # Copyright (C) 1996-1998, 2001-2004, 2009-2023 Free Software Foundation, Inc. |
4 | # | 4 | # |
5 | # This file is free software; the Free Software Foundation | 5 | # This file is free software; the Free Software Foundation |
6 | # gives unlimited permission to copy and/or distribute it, | 6 | # gives unlimited permission to copy and/or distribute it, |
@@ -22,6 +22,10 @@ AC_DEFUN([gl_ERROR], | |||
22 | # Prerequisites of lib/error.c. | 22 | # Prerequisites of lib/error.c. |
23 | AC_DEFUN([gl_PREREQ_ERROR], | 23 | AC_DEFUN([gl_PREREQ_ERROR], |
24 | [ | 24 | [ |
25 | dnl Use system extensions on Android, so that AC_FUNC_STRERROR_R | ||
26 | dnl discovers the GNU API for strerror_r on Android API level 23 and later. | ||
27 | AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) | ||
28 | |||
25 | AC_REQUIRE([AC_FUNC_STRERROR_R]) | 29 | AC_REQUIRE([AC_FUNC_STRERROR_R]) |
26 | : | 30 | : |
27 | ]) | 31 | ]) |
diff --git a/gl/m4/exponentd.m4 b/gl/m4/exponentd.m4 index 09df468c..2ef46437 100644 --- a/gl/m4/exponentd.m4 +++ b/gl/m4/exponentd.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # exponentd.m4 serial 3 | 1 | # exponentd.m4 serial 3 |
2 | dnl Copyright (C) 2007-2008, 2010-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2007-2008, 2010-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
diff --git a/gl/m4/extensions.m4 b/gl/m4/extensions.m4 index e30f1220..5336b8da 100644 --- a/gl/m4/extensions.m4 +++ b/gl/m4/extensions.m4 | |||
@@ -1,14 +1,19 @@ | |||
1 | # serial 13 -*- Autoconf -*- | 1 | # serial 23 -*- Autoconf -*- |
2 | # Enable extensions on systems that normally disable them. | 2 | # Enable extensions on systems that normally disable them. |
3 | 3 | ||
4 | # Copyright (C) 2003, 2006-2013 Free Software Foundation, Inc. | 4 | # Copyright (C) 2003, 2006-2023 Free Software Foundation, Inc. |
5 | # This file is free software; the Free Software Foundation | 5 | # This file is free software; the Free Software Foundation |
6 | # gives unlimited permission to copy and/or distribute it, | 6 | # gives unlimited permission to copy and/or distribute it, |
7 | # with or without modifications, as long as this notice is preserved. | 7 | # with or without modifications, as long as this notice is preserved. |
8 | 8 | ||
9 | dnl Define to empty for the benefit of Autoconf 2.69 and earlier, so that | ||
10 | dnl AC_USE_SYSTEM_EXTENSIONS (below) can be used unchanged from Autoconf 2.70+. | ||
11 | m4_ifndef([AC_CHECK_INCLUDES_DEFAULT], | ||
12 | [AC_DEFUN([AC_CHECK_INCLUDES_DEFAULT], [])]) | ||
13 | |||
9 | # This definition of AC_USE_SYSTEM_EXTENSIONS is stolen from git | 14 | # This definition of AC_USE_SYSTEM_EXTENSIONS is stolen from git |
10 | # Autoconf. Perhaps we can remove this once we can assume Autoconf | 15 | # Autoconf. Perhaps we can remove this once we can assume Autoconf |
11 | # 2.70 or later everywhere, but since Autoconf mutates rapidly | 16 | # is recent-enough everywhere, but since Autoconf mutates rapidly |
12 | # enough in this area it's likely we'll need to redefine | 17 | # enough in this area it's likely we'll need to redefine |
13 | # AC_USE_SYSTEM_EXTENSIONS for quite some time. | 18 | # AC_USE_SYSTEM_EXTENSIONS for quite some time. |
14 | 19 | ||
@@ -26,67 +31,125 @@ | |||
26 | # its dependencies. This will ensure that the gl_USE_SYSTEM_EXTENSIONS | 31 | # its dependencies. This will ensure that the gl_USE_SYSTEM_EXTENSIONS |
27 | # invocation occurs in gl_EARLY, not in gl_INIT. | 32 | # invocation occurs in gl_EARLY, not in gl_INIT. |
28 | 33 | ||
34 | m4_version_prereq([2.72], [], [ | ||
35 | |||
29 | # AC_USE_SYSTEM_EXTENSIONS | 36 | # AC_USE_SYSTEM_EXTENSIONS |
30 | # ------------------------ | 37 | # ------------------------ |
31 | # Enable extensions on systems that normally disable them, | 38 | # Enable extensions on systems that normally disable them, |
32 | # typically due to standards-conformance issues. | 39 | # typically due to standards-conformance issues. |
33 | # | 40 | # We unconditionally define as many of the known feature-enabling |
34 | # Remember that #undef in AH_VERBATIM gets replaced with #define by | 41 | # as possible, reserving conditional behavior for macros that are |
35 | # AC_DEFINE. The goal here is to define all known feature-enabling | 42 | # known to cause problems on some platforms (such as __EXTENSIONS__). |
36 | # macros, then, if reports of conflicts are made, disable macros that | ||
37 | # cause problems on some platforms (such as __EXTENSIONS__). | ||
38 | AC_DEFUN_ONCE([AC_USE_SYSTEM_EXTENSIONS], | 43 | AC_DEFUN_ONCE([AC_USE_SYSTEM_EXTENSIONS], |
39 | [AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl | 44 | [AC_BEFORE([$0], [AC_PREPROC_IFELSE])dnl |
45 | AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl | ||
46 | AC_BEFORE([$0], [AC_LINK_IFELSE])dnl | ||
40 | AC_BEFORE([$0], [AC_RUN_IFELSE])dnl | 47 | AC_BEFORE([$0], [AC_RUN_IFELSE])dnl |
41 | 48 | AC_BEFORE([$0], [AC_CHECK_INCLUDES_DEFAULT])dnl | |
42 | AC_CHECK_HEADER([minix/config.h], [MINIX=yes], [MINIX=]) | 49 | dnl #undef in AH_VERBATIM gets replaced with #define by AC_DEFINE. |
43 | if test "$MINIX" = yes; then | ||
44 | AC_DEFINE([_POSIX_SOURCE], [1], | ||
45 | [Define to 1 if you need to in order for 'stat' and other | ||
46 | things to work.]) | ||
47 | AC_DEFINE([_POSIX_1_SOURCE], [2], | ||
48 | [Define to 2 if the system does not provide POSIX.1 features | ||
49 | except with this defined.]) | ||
50 | AC_DEFINE([_MINIX], [1], | ||
51 | [Define to 1 if on MINIX.]) | ||
52 | AC_DEFINE([_NETBSD_SOURCE], [1], | ||
53 | [Define to 1 to make NetBSD features available. MINIX 3 needs this.]) | ||
54 | fi | ||
55 | |||
56 | dnl Use a different key than __EXTENSIONS__, as that name broke existing | 50 | dnl Use a different key than __EXTENSIONS__, as that name broke existing |
57 | dnl configure.ac when using autoheader 2.62. | 51 | dnl configure.ac when using autoheader 2.62. |
58 | AH_VERBATIM([USE_SYSTEM_EXTENSIONS], | 52 | dnl The macros below are in alphabetical order ignoring leading _ or __ |
53 | dnl prefixes. | ||
54 | AH_VERBATIM([USE_SYSTEM_EXTENSIONS], | ||
59 | [/* Enable extensions on AIX 3, Interix. */ | 55 | [/* Enable extensions on AIX 3, Interix. */ |
60 | #ifndef _ALL_SOURCE | 56 | #ifndef _ALL_SOURCE |
61 | # undef _ALL_SOURCE | 57 | # undef _ALL_SOURCE |
62 | #endif | 58 | #endif |
63 | /* Enable general extensions on OS X. */ | 59 | /* Enable general extensions on macOS. */ |
64 | #ifndef _DARWIN_C_SOURCE | 60 | #ifndef _DARWIN_C_SOURCE |
65 | # undef _DARWIN_C_SOURCE | 61 | # undef _DARWIN_C_SOURCE |
66 | #endif | 62 | #endif |
63 | /* Enable general extensions on Solaris. */ | ||
64 | #ifndef __EXTENSIONS__ | ||
65 | # undef __EXTENSIONS__ | ||
66 | #endif | ||
67 | /* Enable GNU extensions on systems that have them. */ | 67 | /* Enable GNU extensions on systems that have them. */ |
68 | #ifndef _GNU_SOURCE | 68 | #ifndef _GNU_SOURCE |
69 | # undef _GNU_SOURCE | 69 | # undef _GNU_SOURCE |
70 | #endif | 70 | #endif |
71 | /* Enable threading extensions on Solaris. */ | 71 | /* Enable X/Open compliant socket functions that do not require linking |
72 | with -lxnet on HP-UX 11.11. */ | ||
73 | #ifndef _HPUX_ALT_XOPEN_SOCKET_API | ||
74 | # undef _HPUX_ALT_XOPEN_SOCKET_API | ||
75 | #endif | ||
76 | /* Identify the host operating system as Minix. | ||
77 | This macro does not affect the system headers' behavior. | ||
78 | A future release of Autoconf may stop defining this macro. */ | ||
79 | #ifndef _MINIX | ||
80 | # undef _MINIX | ||
81 | #endif | ||
82 | /* Enable general extensions on NetBSD. | ||
83 | Enable NetBSD compatibility extensions on Minix. */ | ||
84 | #ifndef _NETBSD_SOURCE | ||
85 | # undef _NETBSD_SOURCE | ||
86 | #endif | ||
87 | /* Enable OpenBSD compatibility extensions on NetBSD. | ||
88 | Oddly enough, this does nothing on OpenBSD. */ | ||
89 | #ifndef _OPENBSD_SOURCE | ||
90 | # undef _OPENBSD_SOURCE | ||
91 | #endif | ||
92 | /* Define to 1 if needed for POSIX-compatible behavior. */ | ||
93 | #ifndef _POSIX_SOURCE | ||
94 | # undef _POSIX_SOURCE | ||
95 | #endif | ||
96 | /* Define to 2 if needed for POSIX-compatible behavior. */ | ||
97 | #ifndef _POSIX_1_SOURCE | ||
98 | # undef _POSIX_1_SOURCE | ||
99 | #endif | ||
100 | /* Enable POSIX-compatible threading on Solaris. */ | ||
72 | #ifndef _POSIX_PTHREAD_SEMANTICS | 101 | #ifndef _POSIX_PTHREAD_SEMANTICS |
73 | # undef _POSIX_PTHREAD_SEMANTICS | 102 | # undef _POSIX_PTHREAD_SEMANTICS |
74 | #endif | 103 | #endif |
104 | /* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ | ||
105 | #ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ | ||
106 | # undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ | ||
107 | #endif | ||
108 | /* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ | ||
109 | #ifndef __STDC_WANT_IEC_60559_BFP_EXT__ | ||
110 | # undef __STDC_WANT_IEC_60559_BFP_EXT__ | ||
111 | #endif | ||
112 | /* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ | ||
113 | #ifndef __STDC_WANT_IEC_60559_DFP_EXT__ | ||
114 | # undef __STDC_WANT_IEC_60559_DFP_EXT__ | ||
115 | #endif | ||
116 | /* Enable extensions specified by C23 Annex F. */ | ||
117 | #ifndef __STDC_WANT_IEC_60559_EXT__ | ||
118 | # undef __STDC_WANT_IEC_60559_EXT__ | ||
119 | #endif | ||
120 | /* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ | ||
121 | #ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ | ||
122 | # undef __STDC_WANT_IEC_60559_FUNCS_EXT__ | ||
123 | #endif | ||
124 | /* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ | ||
125 | #ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ | ||
126 | # undef __STDC_WANT_IEC_60559_TYPES_EXT__ | ||
127 | #endif | ||
128 | /* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ | ||
129 | #ifndef __STDC_WANT_LIB_EXT2__ | ||
130 | # undef __STDC_WANT_LIB_EXT2__ | ||
131 | #endif | ||
132 | /* Enable extensions specified by ISO/IEC 24747:2009. */ | ||
133 | #ifndef __STDC_WANT_MATH_SPEC_FUNCS__ | ||
134 | # undef __STDC_WANT_MATH_SPEC_FUNCS__ | ||
135 | #endif | ||
75 | /* Enable extensions on HP NonStop. */ | 136 | /* Enable extensions on HP NonStop. */ |
76 | #ifndef _TANDEM_SOURCE | 137 | #ifndef _TANDEM_SOURCE |
77 | # undef _TANDEM_SOURCE | 138 | # undef _TANDEM_SOURCE |
78 | #endif | 139 | #endif |
79 | /* Enable X/Open extensions if necessary. HP-UX 11.11 defines | 140 | /* Enable X/Open extensions. Define to 500 only if necessary |
80 | mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of | 141 | to make mbstate_t available. */ |
81 | whether compiling with -Ae or -D_HPUX_SOURCE=1. */ | ||
82 | #ifndef _XOPEN_SOURCE | 142 | #ifndef _XOPEN_SOURCE |
83 | # undef _XOPEN_SOURCE | 143 | # undef _XOPEN_SOURCE |
84 | #endif | 144 | #endif |
85 | /* Enable general extensions on Solaris. */ | 145 | ])dnl |
86 | #ifndef __EXTENSIONS__ | 146 | |
87 | # undef __EXTENSIONS__ | 147 | AC_REQUIRE([AC_CHECK_INCLUDES_DEFAULT])dnl |
88 | #endif | 148 | _AC_CHECK_HEADER_ONCE([wchar.h]) |
89 | ]) | 149 | _AC_CHECK_HEADER_ONCE([minix/config.h]) |
150 | |||
151 | dnl Defining __EXTENSIONS__ may break the system headers on some systems. | ||
152 | dnl (FIXME: Which ones?) | ||
90 | AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__], | 153 | AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__], |
91 | [ac_cv_safe_to_define___extensions__], | 154 | [ac_cv_safe_to_define___extensions__], |
92 | [AC_COMPILE_IFELSE( | 155 | [AC_COMPILE_IFELSE( |
@@ -95,30 +158,57 @@ dnl configure.ac when using autoheader 2.62. | |||
95 | ]AC_INCLUDES_DEFAULT])], | 158 | ]AC_INCLUDES_DEFAULT])], |
96 | [ac_cv_safe_to_define___extensions__=yes], | 159 | [ac_cv_safe_to_define___extensions__=yes], |
97 | [ac_cv_safe_to_define___extensions__=no])]) | 160 | [ac_cv_safe_to_define___extensions__=no])]) |
98 | test $ac_cv_safe_to_define___extensions__ = yes && | 161 | |
99 | AC_DEFINE([__EXTENSIONS__]) | 162 | dnl HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to |
100 | AC_DEFINE([_ALL_SOURCE]) | 163 | dnl 500, regardless of whether compiling with -Ae or -D_HPUX_SOURCE=1. |
101 | AC_DEFINE([_DARWIN_C_SOURCE]) | 164 | dnl But defining _XOPEN_SOURCE may turn *off* extensions on platforms |
102 | AC_DEFINE([_GNU_SOURCE]) | 165 | dnl not covered by turn-on-extensions macros (notably Dragonfly, Free, |
103 | AC_DEFINE([_POSIX_PTHREAD_SEMANTICS]) | 166 | dnl and OpenBSD, which don't have any equivalent of _NETBSD_SOURCE) so |
104 | AC_DEFINE([_TANDEM_SOURCE]) | 167 | dnl it should only be defined when necessary. |
105 | AC_CACHE_CHECK([whether _XOPEN_SOURCE should be defined], | 168 | AC_CACHE_CHECK([whether _XOPEN_SOURCE should be defined], |
106 | [ac_cv_should_define__xopen_source], | 169 | [ac_cv_should_define__xopen_source], |
107 | [ac_cv_should_define__xopen_source=no | 170 | [ac_cv_should_define__xopen_source=no |
108 | AC_COMPILE_IFELSE( | 171 | AS_IF([test $ac_cv_header_wchar_h = yes], |
109 | [AC_LANG_PROGRAM([[ | 172 | [AC_COMPILE_IFELSE( |
173 | [AC_LANG_PROGRAM([[ | ||
110 | #include <wchar.h> | 174 | #include <wchar.h> |
111 | mbstate_t x;]])], | 175 | mbstate_t x;]])], |
112 | [], | 176 | [], |
113 | [AC_COMPILE_IFELSE( | 177 | [AC_COMPILE_IFELSE( |
114 | [AC_LANG_PROGRAM([[ | 178 | [AC_LANG_PROGRAM([[ |
115 | #define _XOPEN_SOURCE 500 | 179 | #define _XOPEN_SOURCE 500 |
116 | #include <wchar.h> | 180 | #include <wchar.h> |
117 | mbstate_t x;]])], | 181 | mbstate_t x;]])], |
118 | [ac_cv_should_define__xopen_source=yes])])]) | 182 | [ac_cv_should_define__xopen_source=yes])])])]) |
119 | test $ac_cv_should_define__xopen_source = yes && | 183 | |
120 | AC_DEFINE([_XOPEN_SOURCE], [500]) | 184 | AC_DEFINE([_ALL_SOURCE]) |
185 | AC_DEFINE([_DARWIN_C_SOURCE]) | ||
186 | AC_DEFINE([_GNU_SOURCE]) | ||
187 | AC_DEFINE([_HPUX_ALT_XOPEN_SOCKET_API]) | ||
188 | AC_DEFINE([_NETBSD_SOURCE]) | ||
189 | AC_DEFINE([_OPENBSD_SOURCE]) | ||
190 | AC_DEFINE([_POSIX_PTHREAD_SEMANTICS]) | ||
191 | AC_DEFINE([__STDC_WANT_IEC_60559_ATTRIBS_EXT__]) | ||
192 | AC_DEFINE([__STDC_WANT_IEC_60559_BFP_EXT__]) | ||
193 | AC_DEFINE([__STDC_WANT_IEC_60559_DFP_EXT__]) | ||
194 | AC_DEFINE([__STDC_WANT_IEC_60559_EXT__]) | ||
195 | AC_DEFINE([__STDC_WANT_IEC_60559_FUNCS_EXT__]) | ||
196 | AC_DEFINE([__STDC_WANT_IEC_60559_TYPES_EXT__]) | ||
197 | AC_DEFINE([__STDC_WANT_LIB_EXT2__]) | ||
198 | AC_DEFINE([__STDC_WANT_MATH_SPEC_FUNCS__]) | ||
199 | AC_DEFINE([_TANDEM_SOURCE]) | ||
200 | AS_IF([test $ac_cv_header_minix_config_h = yes], | ||
201 | [MINIX=yes | ||
202 | AC_DEFINE([_MINIX]) | ||
203 | AC_DEFINE([_POSIX_SOURCE]) | ||
204 | AC_DEFINE([_POSIX_1_SOURCE], [2])], | ||
205 | [MINIX=]) | ||
206 | AS_IF([test $ac_cv_safe_to_define___extensions__ = yes], | ||
207 | [AC_DEFINE([__EXTENSIONS__])]) | ||
208 | AS_IF([test $ac_cv_should_define__xopen_source = yes], | ||
209 | [AC_DEFINE([_XOPEN_SOURCE], [500])]) | ||
121 | ])# AC_USE_SYSTEM_EXTENSIONS | 210 | ])# AC_USE_SYSTEM_EXTENSIONS |
211 | ]) | ||
122 | 212 | ||
123 | # gl_USE_SYSTEM_EXTENSIONS | 213 | # gl_USE_SYSTEM_EXTENSIONS |
124 | # ------------------------ | 214 | # ------------------------ |
@@ -126,13 +216,17 @@ dnl configure.ac when using autoheader 2.62. | |||
126 | # typically due to standards-conformance issues. | 216 | # typically due to standards-conformance issues. |
127 | AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS], | 217 | AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS], |
128 | [ | 218 | [ |
129 | dnl Require this macro before AC_USE_SYSTEM_EXTENSIONS. | ||
130 | dnl gnulib does not need it. But if it gets required by third-party macros | ||
131 | dnl after AC_USE_SYSTEM_EXTENSIONS is required, autoconf 2.62..2.63 emit a | ||
132 | dnl warning: "AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS". | ||
133 | dnl Note: We can do this only for one of the macros AC_AIX, AC_GNU_SOURCE, | ||
134 | dnl AC_MINIX. If people still use AC_AIX or AC_MINIX, they are out of luck. | ||
135 | AC_REQUIRE([AC_GNU_SOURCE]) | ||
136 | |||
137 | AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) | 219 | AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) |
220 | |||
221 | dnl On OpenBSD 6.8 with GCC, the include files contain a couple of | ||
222 | dnl definitions that are only activated with an explicit -D_ISOC11_SOURCE. | ||
223 | dnl That's because this version of GCC (4.2.1) supports the option | ||
224 | dnl '-std=gnu99' but not the option '-std=gnu11'. | ||
225 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
226 | case "$host_os" in | ||
227 | openbsd*) | ||
228 | AC_DEFINE([_ISOC11_SOURCE], [1], | ||
229 | [Define to enable the declarations of ISO C 11 types and functions.]) | ||
230 | ;; | ||
231 | esac | ||
138 | ]) | 232 | ]) |
diff --git a/gl/m4/extern-inline.m4 b/gl/m4/extern-inline.m4 index c4c5e7f2..c001b1cf 100644 --- a/gl/m4/extern-inline.m4 +++ b/gl/m4/extern-inline.m4 | |||
@@ -1,61 +1,121 @@ | |||
1 | dnl 'extern inline' a la ISO C99. | 1 | dnl 'extern inline' a la ISO C99. |
2 | 2 | ||
3 | dnl Copyright 2012-2013 Free Software Foundation, Inc. | 3 | dnl Copyright 2012-2023 Free Software Foundation, Inc. |
4 | dnl This file is free software; the Free Software Foundation | 4 | dnl This file is free software; the Free Software Foundation |
5 | dnl gives unlimited permission to copy and/or distribute it, | 5 | dnl gives unlimited permission to copy and/or distribute it, |
6 | dnl with or without modifications, as long as this notice is preserved. | 6 | dnl with or without modifications, as long as this notice is preserved. |
7 | 7 | ||
8 | AC_DEFUN([gl_EXTERN_INLINE], | 8 | AC_DEFUN([gl_EXTERN_INLINE], |
9 | [ | 9 | [ |
10 | AH_VERBATIM([extern_inline], | 10 | AC_CACHE_CHECK([whether ctype.h defines __header_inline], |
11 | [gl_cv_have___header_inline], | ||
12 | [AC_PREPROC_IFELSE( | ||
13 | [AC_LANG_SOURCE([[#include <ctype.h> | ||
14 | #ifndef __header_inline | ||
15 | #error "<ctype.h> does not define __header_inline" | ||
16 | #endif | ||
17 | ]])], | ||
18 | [gl_cv_have___header_inline=yes], | ||
19 | [gl_cv_have___header_inline=no])]) | ||
20 | if test "$gl_cv_have___header_inline" = yes; then | ||
21 | AC_DEFINE([HAVE___HEADER_INLINE], [1], | ||
22 | [Define to 1 if ctype.h defines __header_inline.]) | ||
23 | fi | ||
24 | |||
25 | AH_VERBATIM([HAVE___HEADER_INLINE_1], | ||
11 | [/* Please see the Gnulib manual for how to use these macros. | 26 | [/* Please see the Gnulib manual for how to use these macros. |
12 | 27 | ||
13 | Suppress extern inline with HP-UX cc, as it appears to be broken; see | 28 | Suppress extern inline with HP-UX cc, as it appears to be broken; see |
14 | <http://lists.gnu.org/archive/html/bug-texinfo/2013-02/msg00030.html>. | 29 | <https://lists.gnu.org/r/bug-texinfo/2013-02/msg00030.html>. |
15 | 30 | ||
16 | Suppress extern inline with Sun C in standards-conformance mode, as it | 31 | Suppress extern inline with Sun C in standards-conformance mode, as it |
17 | mishandles inline functions that call each other. E.g., for 'inline void f | 32 | mishandles inline functions that call each other. E.g., for 'inline void f |
18 | (void) { } inline void g (void) { f (); }', c99 incorrectly complains | 33 | (void) { } inline void g (void) { f (); }', c99 incorrectly complains |
19 | 'reference to static identifier "f" in extern inline function'. | 34 | 'reference to static identifier "f" in extern inline function'. |
20 | This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16. | 35 | This bug was observed with Oracle Developer Studio 12.6 |
36 | (Sun C 5.15 SunOS_sparc 2017/05/30). | ||
37 | |||
38 | Suppress extern inline (with or without __attribute__ ((__gnu_inline__))) | ||
39 | on configurations that mistakenly use 'static inline' to implement | ||
40 | functions or macros in standard C headers like <ctype.h>. For example, | ||
41 | if isdigit is mistakenly implemented via a static inline function, | ||
42 | a program containing an extern inline function that calls isdigit | ||
43 | may not work since the C standard prohibits extern inline functions | ||
44 | from calling static functions (ISO C 99 section 6.7.4.(3). | ||
45 | This bug is known to occur on: | ||
46 | |||
47 | OS X 10.8 and earlier; see: | ||
48 | https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html | ||
49 | |||
50 | DragonFly; see | ||
51 | http://muscles.dragonflybsd.org/bulk/clang-master-potential/20141111_102002/logs/ah-tty-0.3.12.log | ||
21 | 52 | ||
22 | Suppress the use of extern inline on Apple's platforms, as Libc at least | 53 | FreeBSD; see: |
23 | through Libc-825.26 (2013-04-09) is incompatible with it; see, e.g., | 54 | https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html |
24 | <http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html>. | 55 | |
25 | Perhaps Apple will fix this some day. */ | 56 | OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and |
57 | for clang but remains for g++; see <https://trac.macports.org/ticket/41033>. | ||
58 | Assume DragonFly and FreeBSD will be similar. | ||
59 | |||
60 | GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 | ||
61 | inline semantics, unless -fgnu89-inline is used. It defines a macro | ||
62 | __GNUC_STDC_INLINE__ to indicate this situation or a macro | ||
63 | __GNUC_GNU_INLINE__ to indicate the opposite situation. | ||
64 | GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline | ||
65 | semantics but warns, unless -fgnu89-inline is used: | ||
66 | warning: C99 inline functions are not supported; using GNU89 | ||
67 | warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute | ||
68 | It defines a macro __GNUC_GNU_INLINE__ to indicate this situation. | ||
69 | */ | ||
70 | #if (((defined __APPLE__ && defined __MACH__) \ | ||
71 | || defined __DragonFly__ || defined __FreeBSD__) \ | ||
72 | && (defined HAVE___HEADER_INLINE \ | ||
73 | ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \ | ||
74 | && ! defined __clang__) \ | ||
75 | : ((! defined _DONT_USE_CTYPE_INLINE_ \ | ||
76 | && (defined __GNUC__ || defined __cplusplus)) \ | ||
77 | || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ | ||
78 | && defined __GNUC__ && ! defined __cplusplus)))) | ||
79 | # define _GL_EXTERN_INLINE_STDHEADER_BUG | ||
80 | #endif | ||
26 | #if ((__GNUC__ \ | 81 | #if ((__GNUC__ \ |
27 | ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ | 82 | ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ |
28 | : (199901L <= __STDC_VERSION__ \ | 83 | : (199901L <= __STDC_VERSION__ \ |
29 | && !defined __HP_cc \ | 84 | && !defined __HP_cc \ |
85 | && !defined __PGI \ | ||
30 | && !(defined __SUNPRO_C && __STDC__))) \ | 86 | && !(defined __SUNPRO_C && __STDC__))) \ |
31 | && !defined __APPLE__) | 87 | && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) |
32 | # define _GL_INLINE inline | 88 | # define _GL_INLINE inline |
33 | # define _GL_EXTERN_INLINE extern inline | 89 | # define _GL_EXTERN_INLINE extern inline |
90 | # define _GL_EXTERN_INLINE_IN_USE | ||
34 | #elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ | 91 | #elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ |
35 | && !defined __APPLE__) | 92 | && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) |
36 | # if __GNUC_GNU_INLINE__ | 93 | # if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__ |
37 | /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ | 94 | /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ |
38 | # define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) | 95 | # define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) |
39 | # else | 96 | # else |
40 | # define _GL_INLINE extern inline | 97 | # define _GL_INLINE extern inline |
41 | # endif | 98 | # endif |
42 | # define _GL_EXTERN_INLINE extern | 99 | # define _GL_EXTERN_INLINE extern |
100 | # define _GL_EXTERN_INLINE_IN_USE | ||
43 | #else | 101 | #else |
44 | # define _GL_INLINE static _GL_UNUSED | 102 | # define _GL_INLINE _GL_UNUSED static |
45 | # define _GL_EXTERN_INLINE static _GL_UNUSED | 103 | # define _GL_EXTERN_INLINE _GL_UNUSED static |
46 | #endif | 104 | #endif |
47 | 105 | ||
48 | #if 4 < __GNUC__ + (6 <= __GNUC_MINOR__) | 106 | /* In GCC 4.6 (inclusive) to 5.1 (exclusive), |
107 | suppress bogus "no previous prototype for 'FOO'" | ||
108 | and "no previous declaration for 'FOO'" diagnostics, | ||
109 | when FOO is an inline function in the header; see | ||
110 | <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113> and | ||
111 | <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877>. */ | ||
112 | #if __GNUC__ == 4 && 6 <= __GNUC_MINOR__ | ||
49 | # if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ | 113 | # if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ |
50 | # define _GL_INLINE_HEADER_CONST_PRAGMA | 114 | # define _GL_INLINE_HEADER_CONST_PRAGMA |
51 | # else | 115 | # else |
52 | # define _GL_INLINE_HEADER_CONST_PRAGMA \ | 116 | # define _GL_INLINE_HEADER_CONST_PRAGMA \ |
53 | _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") | 117 | _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") |
54 | # endif | 118 | # endif |
55 | /* Suppress GCC's bogus "no previous prototype for 'FOO'" | ||
56 | and "no previous declaration for 'FOO'" diagnostics, | ||
57 | when FOO is an inline function in the header; see | ||
58 | <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113>. */ | ||
59 | # define _GL_INLINE_HEADER_BEGIN \ | 119 | # define _GL_INLINE_HEADER_BEGIN \ |
60 | _Pragma ("GCC diagnostic push") \ | 120 | _Pragma ("GCC diagnostic push") \ |
61 | _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ | 121 | _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ |
diff --git a/gl/m4/fcntl-o.m4 b/gl/m4/fcntl-o.m4 index 87cc4bd2..59d558bd 100644 --- a/gl/m4/fcntl-o.m4 +++ b/gl/m4/fcntl-o.m4 | |||
@@ -1,23 +1,22 @@ | |||
1 | # fcntl-o.m4 serial 4 | 1 | # fcntl-o.m4 serial 7 |
2 | dnl Copyright (C) 2006, 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2006, 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | dnl Written by Paul Eggert. | 7 | dnl Written by Paul Eggert. |
8 | 8 | ||
9 | AC_PREREQ([2.60]) | ||
10 | |||
9 | # Test whether the flags O_NOATIME and O_NOFOLLOW actually work. | 11 | # Test whether the flags O_NOATIME and O_NOFOLLOW actually work. |
10 | # Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise. | 12 | # Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise. |
11 | # Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise. | 13 | # Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise. |
12 | AC_DEFUN([gl_FCNTL_O_FLAGS], | 14 | AC_DEFUN([gl_FCNTL_O_FLAGS], |
13 | [ | 15 | [ |
14 | dnl Persuade glibc <fcntl.h> to define O_NOATIME and O_NOFOLLOW. | 16 | dnl Persuade glibc <fcntl.h> to define O_NOATIME and O_NOFOLLOW. |
15 | dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes | 17 | AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) |
16 | dnl AC_GNU_SOURCE. | ||
17 | m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], | ||
18 | [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])], | ||
19 | [AC_REQUIRE([AC_GNU_SOURCE])]) | ||
20 | 18 | ||
19 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | ||
21 | AC_CHECK_HEADERS_ONCE([unistd.h]) | 20 | AC_CHECK_HEADERS_ONCE([unistd.h]) |
22 | AC_CHECK_FUNCS_ONCE([symlink]) | 21 | AC_CHECK_FUNCS_ONCE([symlink]) |
23 | AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h], | 22 | AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h], |
@@ -33,6 +32,7 @@ AC_DEFUN([gl_FCNTL_O_FLAGS], | |||
33 | # defined sleep(n) _sleep ((n) * 1000) | 32 | # defined sleep(n) _sleep ((n) * 1000) |
34 | #endif | 33 | #endif |
35 | #include <fcntl.h> | 34 | #include <fcntl.h> |
35 | ]GL_MDA_DEFINES[ | ||
36 | #ifndef O_NOATIME | 36 | #ifndef O_NOATIME |
37 | #define O_NOATIME 0 | 37 | #define O_NOATIME 0 |
38 | #endif | 38 | #endif |
@@ -116,7 +116,13 @@ AC_DEFUN([gl_FCNTL_O_FLAGS], | |||
116 | 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #( | 116 | 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #( |
117 | *) gl_cv_header_working_fcntl_h='no';; | 117 | *) gl_cv_header_working_fcntl_h='no';; |
118 | esac], | 118 | esac], |
119 | [gl_cv_header_working_fcntl_h=cross-compiling])]) | 119 | [case "$host_os" in |
120 | # Guess 'no' on native Windows. | ||
121 | mingw*) gl_cv_header_working_fcntl_h='no' ;; | ||
122 | *) gl_cv_header_working_fcntl_h=cross-compiling ;; | ||
123 | esac | ||
124 | ]) | ||
125 | ]) | ||
120 | 126 | ||
121 | case $gl_cv_header_working_fcntl_h in #( | 127 | case $gl_cv_header_working_fcntl_h in #( |
122 | *O_NOATIME* | no | cross-compiling) ac_val=0;; #( | 128 | *O_NOATIME* | no | cross-compiling) ac_val=0;; #( |
diff --git a/gl/m4/fcntl.m4 b/gl/m4/fcntl.m4 new file mode 100644 index 00000000..524a99af --- /dev/null +++ b/gl/m4/fcntl.m4 | |||
@@ -0,0 +1,151 @@ | |||
1 | # fcntl.m4 serial 11 | ||
2 | dnl Copyright (C) 2009-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | # For now, this module ensures that fcntl() | ||
8 | # - supports F_DUPFD correctly | ||
9 | # - supports or emulates F_DUPFD_CLOEXEC | ||
10 | # - supports F_GETFD | ||
11 | # Still to be ported to mingw: | ||
12 | # - F_SETFD | ||
13 | # - F_GETFL, F_SETFL | ||
14 | # - F_GETOWN, F_SETOWN | ||
15 | # - F_GETLK, F_SETLK, F_SETLKW | ||
16 | AC_DEFUN([gl_FUNC_FCNTL], | ||
17 | [ | ||
18 | dnl Persuade glibc to expose F_DUPFD_CLOEXEC. | ||
19 | AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) | ||
20 | AC_REQUIRE([gl_FCNTL_H_DEFAULTS]) | ||
21 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
22 | AC_CHECK_FUNCS_ONCE([fcntl]) | ||
23 | if test $ac_cv_func_fcntl = no; then | ||
24 | gl_REPLACE_FCNTL | ||
25 | else | ||
26 | dnl cygwin 1.5.x F_DUPFD has wrong errno, and allows negative target | ||
27 | dnl haiku alpha 2 F_DUPFD has wrong errno | ||
28 | AC_CACHE_CHECK([whether fcntl handles F_DUPFD correctly], | ||
29 | [gl_cv_func_fcntl_f_dupfd_works], | ||
30 | [AC_RUN_IFELSE( | ||
31 | [AC_LANG_PROGRAM( | ||
32 | [[#include <errno.h> | ||
33 | #include <fcntl.h> | ||
34 | #include <limits.h> | ||
35 | #include <sys/resource.h> | ||
36 | #include <unistd.h> | ||
37 | ]GL_MDA_DEFINES[ | ||
38 | #ifndef RLIM_SAVED_CUR | ||
39 | # define RLIM_SAVED_CUR RLIM_INFINITY | ||
40 | #endif | ||
41 | #ifndef RLIM_SAVED_MAX | ||
42 | # define RLIM_SAVED_MAX RLIM_INFINITY | ||
43 | #endif | ||
44 | ]], | ||
45 | [[int result = 0; | ||
46 | int bad_fd = INT_MAX; | ||
47 | struct rlimit rlim; | ||
48 | if (getrlimit (RLIMIT_NOFILE, &rlim) == 0 | ||
49 | && 0 <= rlim.rlim_cur && rlim.rlim_cur <= INT_MAX | ||
50 | && rlim.rlim_cur != RLIM_INFINITY | ||
51 | && rlim.rlim_cur != RLIM_SAVED_MAX | ||
52 | && rlim.rlim_cur != RLIM_SAVED_CUR) | ||
53 | bad_fd = rlim.rlim_cur; | ||
54 | if (fcntl (0, F_DUPFD, -1) != -1) result |= 1; | ||
55 | if (errno != EINVAL) result |= 2; | ||
56 | if (fcntl (0, F_DUPFD, bad_fd) != -1) result |= 4; | ||
57 | if (errno != EINVAL) result |= 8; | ||
58 | /* On OS/2 kLIBC, F_DUPFD does not work on a directory fd */ | ||
59 | { | ||
60 | int fd; | ||
61 | fd = open (".", O_RDONLY); | ||
62 | if (fd == -1) | ||
63 | result |= 16; | ||
64 | else if (fcntl (fd, F_DUPFD, STDERR_FILENO + 1) == -1) | ||
65 | result |= 32; | ||
66 | |||
67 | close (fd); | ||
68 | } | ||
69 | return result;]])], | ||
70 | [gl_cv_func_fcntl_f_dupfd_works=yes], | ||
71 | [gl_cv_func_fcntl_f_dupfd_works=no], | ||
72 | [case $host_os in | ||
73 | aix* | cygwin* | haiku*) | ||
74 | gl_cv_func_fcntl_f_dupfd_works="guessing no" ;; | ||
75 | *) gl_cv_func_fcntl_f_dupfd_works="guessing yes" ;; | ||
76 | esac])]) | ||
77 | case $gl_cv_func_fcntl_f_dupfd_works in | ||
78 | *yes) ;; | ||
79 | *) gl_REPLACE_FCNTL | ||
80 | AC_DEFINE([FCNTL_DUPFD_BUGGY], [1], [Define this to 1 if F_DUPFD | ||
81 | behavior does not match POSIX]) ;; | ||
82 | esac | ||
83 | |||
84 | dnl Many systems lack F_DUPFD_CLOEXEC. | ||
85 | dnl NetBSD 9.0 declares F_DUPFD_CLOEXEC but it works only like F_DUPFD. | ||
86 | AC_CACHE_CHECK([whether fcntl understands F_DUPFD_CLOEXEC], | ||
87 | [gl_cv_func_fcntl_f_dupfd_cloexec], | ||
88 | [AC_RUN_IFELSE( | ||
89 | [AC_LANG_SOURCE( | ||
90 | [[#include <fcntl.h> | ||
91 | #include <unistd.h> | ||
92 | int main (int argc, char *argv[]) | ||
93 | { | ||
94 | if (argc == 1) | ||
95 | /* parent process */ | ||
96 | { | ||
97 | if (fcntl (1, F_DUPFD_CLOEXEC, 10) < 0) | ||
98 | return 1; | ||
99 | return execl ("./conftest", "./conftest", "child", NULL); | ||
100 | } | ||
101 | else | ||
102 | /* child process */ | ||
103 | return (fcntl (10, F_GETFL) < 0 ? 0 : 42); | ||
104 | } | ||
105 | ]]) | ||
106 | ], | ||
107 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ | ||
108 | #ifdef __linux__ | ||
109 | /* The Linux kernel only added F_DUPFD_CLOEXEC in 2.6.24, so we always replace | ||
110 | it to support the semantics on older kernels that failed with EINVAL. */ | ||
111 | choke me | ||
112 | #endif | ||
113 | ]])], | ||
114 | [gl_cv_func_fcntl_f_dupfd_cloexec=yes], | ||
115 | [gl_cv_func_fcntl_f_dupfd_cloexec="needs runtime check"]) | ||
116 | ], | ||
117 | [gl_cv_func_fcntl_f_dupfd_cloexec=no], | ||
118 | [case "$host_os" in | ||
119 | # Guess no on NetBSD. | ||
120 | netbsd*) gl_cv_func_fcntl_f_dupfd_cloexec="guessing no" ;; | ||
121 | *) gl_cv_func_fcntl_f_dupfd_cloexec="$gl_cross_guess_normal" ;; | ||
122 | esac | ||
123 | ]) | ||
124 | ]) | ||
125 | case "$gl_cv_func_fcntl_f_dupfd_cloexec" in | ||
126 | *yes) ;; | ||
127 | *) gl_REPLACE_FCNTL | ||
128 | dnl No witness macro needed for this bug. | ||
129 | ;; | ||
130 | esac | ||
131 | fi | ||
132 | dnl Replace fcntl() for supporting the gnulib-defined fchdir() function, | ||
133 | dnl to keep fchdir's bookkeeping up-to-date. | ||
134 | m4_ifdef([gl_FUNC_FCHDIR], [ | ||
135 | gl_TEST_FCHDIR | ||
136 | if test $HAVE_FCHDIR = 0; then | ||
137 | gl_REPLACE_FCNTL | ||
138 | fi | ||
139 | ]) | ||
140 | ]) | ||
141 | |||
142 | AC_DEFUN([gl_REPLACE_FCNTL], | ||
143 | [ | ||
144 | AC_REQUIRE([gl_FCNTL_H_DEFAULTS]) | ||
145 | AC_CHECK_FUNCS_ONCE([fcntl]) | ||
146 | if test $ac_cv_func_fcntl = no; then | ||
147 | HAVE_FCNTL=0 | ||
148 | else | ||
149 | REPLACE_FCNTL=1 | ||
150 | fi | ||
151 | ]) | ||
diff --git a/gl/m4/fcntl_h.m4 b/gl/m4/fcntl_h.m4 new file mode 100644 index 00000000..68f4e648 --- /dev/null +++ b/gl/m4/fcntl_h.m4 | |||
@@ -0,0 +1,70 @@ | |||
1 | # serial 20 | ||
2 | # Configure fcntl.h. | ||
3 | dnl Copyright (C) 2006-2007, 2009-2023 Free Software Foundation, Inc. | ||
4 | dnl This file is free software; the Free Software Foundation | ||
5 | dnl gives unlimited permission to copy and/or distribute it, | ||
6 | dnl with or without modifications, as long as this notice is preserved. | ||
7 | |||
8 | dnl Written by Paul Eggert. | ||
9 | |||
10 | AC_DEFUN_ONCE([gl_FCNTL_H], | ||
11 | [ | ||
12 | AC_REQUIRE([gl_FCNTL_H_DEFAULTS]) | ||
13 | AC_REQUIRE([gl_FCNTL_O_FLAGS]) | ||
14 | gl_NEXT_HEADERS([fcntl.h]) | ||
15 | |||
16 | dnl Ensure the type pid_t gets defined. | ||
17 | AC_REQUIRE([AC_TYPE_PID_T]) | ||
18 | |||
19 | dnl Ensure the type mode_t gets defined. | ||
20 | AC_REQUIRE([AC_TYPE_MODE_T]) | ||
21 | |||
22 | dnl Check for declarations of anything we want to poison if the | ||
23 | dnl corresponding gnulib module is not in use, if it is not common | ||
24 | dnl enough to be declared everywhere. | ||
25 | gl_WARN_ON_USE_PREPARE([[#include <fcntl.h> | ||
26 | ]], [fcntl openat]) | ||
27 | ]) | ||
28 | |||
29 | # gl_FCNTL_MODULE_INDICATOR([modulename]) | ||
30 | # sets the shell variable that indicates the presence of the given module | ||
31 | # to a C preprocessor expression that will evaluate to 1. | ||
32 | # This macro invocation must not occur in macros that are AC_REQUIREd. | ||
33 | AC_DEFUN([gl_FCNTL_MODULE_INDICATOR], | ||
34 | [ | ||
35 | dnl Ensure to expand the default settings once only. | ||
36 | gl_FCNTL_H_REQUIRE_DEFAULTS | ||
37 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) | ||
38 | dnl Define it also as a C macro, for the benefit of the unit tests. | ||
39 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) | ||
40 | ]) | ||
41 | |||
42 | # Initializes the default values for AC_SUBSTed shell variables. | ||
43 | # This macro must not be AC_REQUIREd. It must only be invoked, and only | ||
44 | # outside of macros or in macros that are not AC_REQUIREd. | ||
45 | AC_DEFUN([gl_FCNTL_H_REQUIRE_DEFAULTS], | ||
46 | [ | ||
47 | m4_defun(GL_MODULE_INDICATOR_PREFIX[_FCNTL_H_MODULE_INDICATOR_DEFAULTS], [ | ||
48 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CREAT]) | ||
49 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCNTL]) | ||
50 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_NONBLOCKING]) | ||
51 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OPEN]) | ||
52 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OPENAT]) | ||
53 | dnl Support Microsoft deprecated alias function names by default. | ||
54 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CREAT], [1]) | ||
55 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_OPEN], [1]) | ||
56 | ]) | ||
57 | m4_require(GL_MODULE_INDICATOR_PREFIX[_FCNTL_H_MODULE_INDICATOR_DEFAULTS]) | ||
58 | AC_REQUIRE([gl_FCNTL_H_DEFAULTS]) | ||
59 | ]) | ||
60 | |||
61 | AC_DEFUN([gl_FCNTL_H_DEFAULTS], | ||
62 | [ | ||
63 | dnl Assume proper GNU behavior unless another module says otherwise. | ||
64 | HAVE_FCNTL=1; AC_SUBST([HAVE_FCNTL]) | ||
65 | HAVE_OPENAT=1; AC_SUBST([HAVE_OPENAT]) | ||
66 | REPLACE_CREAT=0; AC_SUBST([REPLACE_CREAT]) | ||
67 | REPLACE_FCNTL=0; AC_SUBST([REPLACE_FCNTL]) | ||
68 | REPLACE_OPEN=0; AC_SUBST([REPLACE_OPEN]) | ||
69 | REPLACE_OPENAT=0; AC_SUBST([REPLACE_OPENAT]) | ||
70 | ]) | ||
diff --git a/gl/m4/fflush.m4 b/gl/m4/fflush.m4 new file mode 100644 index 00000000..3e3c8903 --- /dev/null +++ b/gl/m4/fflush.m4 | |||
@@ -0,0 +1,100 @@ | |||
1 | # fflush.m4 serial 18 | ||
2 | |||
3 | # Copyright (C) 2007-2023 Free Software Foundation, Inc. | ||
4 | # This file is free software; the Free Software Foundation | ||
5 | # gives unlimited permission to copy and/or distribute it, | ||
6 | # with or without modifications, as long as this notice is preserved. | ||
7 | |||
8 | dnl From Eric Blake | ||
9 | |||
10 | dnl Find out how to obey POSIX semantics of fflush(stdin) discarding | ||
11 | dnl unread input on seekable streams, rather than C99 undefined semantics. | ||
12 | |||
13 | AC_DEFUN([gl_FUNC_FFLUSH], | ||
14 | [ | ||
15 | AC_REQUIRE([gl_STDIO_H_DEFAULTS]) | ||
16 | gl_FUNC_FFLUSH_STDIN | ||
17 | case "$gl_cv_func_fflush_stdin" in | ||
18 | *yes) ;; | ||
19 | *) REPLACE_FFLUSH=1 ;; | ||
20 | esac | ||
21 | ]) | ||
22 | |||
23 | dnl Determine whether fflush works on input streams. | ||
24 | dnl Sets gl_cv_func_fflush_stdin. | ||
25 | |||
26 | AC_DEFUN([gl_FUNC_FFLUSH_STDIN], | ||
27 | [ | ||
28 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | ||
29 | AC_CHECK_HEADERS_ONCE([unistd.h]) | ||
30 | AC_CACHE_CHECK([whether fflush works on input streams], | ||
31 | [gl_cv_func_fflush_stdin], | ||
32 | [echo hello world > conftest.txt | ||
33 | AC_RUN_IFELSE([AC_LANG_PROGRAM( | ||
34 | [[ | ||
35 | #include <stdio.h> | ||
36 | #if HAVE_UNISTD_H | ||
37 | # include <unistd.h> | ||
38 | #else /* on Windows with MSVC */ | ||
39 | # include <io.h> | ||
40 | #endif | ||
41 | ]GL_MDA_DEFINES], | ||
42 | [[FILE *f = fopen ("conftest.txt", "r"); | ||
43 | char buffer[10]; | ||
44 | int fd; | ||
45 | int c; | ||
46 | if (f == NULL) | ||
47 | return 1; | ||
48 | fd = fileno (f); | ||
49 | if (fd < 0 || fread (buffer, 1, 5, f) != 5) | ||
50 | { fclose (f); return 2; } | ||
51 | /* For deterministic results, ensure f read a bigger buffer. */ | ||
52 | if (lseek (fd, 0, SEEK_CUR) == 5) | ||
53 | { fclose (f); return 3; } | ||
54 | /* POSIX requires fflush-fseek to set file offset of fd. This fails | ||
55 | on BSD systems and on mingw. */ | ||
56 | if (fflush (f) != 0 || fseek (f, 0, SEEK_CUR) != 0) | ||
57 | { fclose (f); return 4; } | ||
58 | if (lseek (fd, 0, SEEK_CUR) != 5) | ||
59 | { fclose (f); return 5; } | ||
60 | /* Verify behaviour of fflush after ungetc. See | ||
61 | <https://www.opengroup.org/austin/aardvark/latest/xshbug3.txt> */ | ||
62 | /* Verify behaviour of fflush after a backup ungetc. This fails on | ||
63 | mingw. */ | ||
64 | c = fgetc (f); | ||
65 | ungetc (c, f); | ||
66 | fflush (f); | ||
67 | if (fgetc (f) != c) | ||
68 | { fclose (f); return 6; } | ||
69 | /* Verify behaviour of fflush after a non-backup ungetc. This fails | ||
70 | on glibc 2.8 and on BSD systems. */ | ||
71 | c = fgetc (f); | ||
72 | ungetc ('@', f); | ||
73 | fflush (f); | ||
74 | if (fgetc (f) != c) | ||
75 | { fclose (f); return 7; } | ||
76 | fclose (f); | ||
77 | return 0; | ||
78 | ]])], | ||
79 | [gl_cv_func_fflush_stdin=yes], | ||
80 | [gl_cv_func_fflush_stdin=no], | ||
81 | [case "$host_os" in | ||
82 | # Guess no on native Windows. | ||
83 | mingw*) gl_cv_func_fflush_stdin="guessing no" ;; | ||
84 | *) gl_cv_func_fflush_stdin=cross ;; | ||
85 | esac | ||
86 | ]) | ||
87 | rm conftest.txt | ||
88 | ]) | ||
89 | case "$gl_cv_func_fflush_stdin" in | ||
90 | *yes) gl_func_fflush_stdin=1 ;; | ||
91 | *no) gl_func_fflush_stdin=0 ;; | ||
92 | *) gl_func_fflush_stdin='(-1)' ;; | ||
93 | esac | ||
94 | AC_DEFINE_UNQUOTED([FUNC_FFLUSH_STDIN], [$gl_func_fflush_stdin], | ||
95 | [Define to 1 if fflush is known to work on stdin as per POSIX.1-2008, | ||
96 | 0 if fflush is known to not work, -1 if unknown.]) | ||
97 | ]) | ||
98 | |||
99 | # Prerequisites of lib/fflush.c. | ||
100 | AC_DEFUN([gl_PREREQ_FFLUSH], [:]) | ||
diff --git a/gl/m4/float_h.m4 b/gl/m4/float_h.m4 index 397f2d1f..2f0c9c4e 100644 --- a/gl/m4/float_h.m4 +++ b/gl/m4/float_h.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # float_h.m4 serial 9 | 1 | # float_h.m4 serial 13 |
2 | dnl Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -8,42 +8,46 @@ AC_DEFUN([gl_FLOAT_H], | |||
8 | [ | 8 | [ |
9 | AC_REQUIRE([AC_PROG_CC]) | 9 | AC_REQUIRE([AC_PROG_CC]) |
10 | AC_REQUIRE([AC_CANONICAL_HOST]) | 10 | AC_REQUIRE([AC_CANONICAL_HOST]) |
11 | FLOAT_H= | 11 | GL_GENERATE_FLOAT_H=false |
12 | REPLACE_FLOAT_LDBL=0 | 12 | REPLACE_FLOAT_LDBL=0 |
13 | case "$host_os" in | 13 | case "$host_os" in |
14 | aix* | beos* | openbsd* | mirbsd* | irix*) | 14 | aix* | beos* | openbsd* | mirbsd* | irix*) |
15 | FLOAT_H=float.h | 15 | GL_GENERATE_FLOAT_H=true |
16 | ;; | 16 | ;; |
17 | freebsd*) | 17 | freebsd* | dragonfly*) |
18 | case "$host_cpu" in | 18 | case "$host_cpu" in |
19 | changequote(,)dnl | 19 | changequote(,)dnl |
20 | i[34567]86 ) | 20 | i[34567]86 ) |
21 | changequote([,])dnl | 21 | changequote([,])dnl |
22 | FLOAT_H=float.h | 22 | GL_GENERATE_FLOAT_H=true |
23 | ;; | 23 | ;; |
24 | x86_64 ) | 24 | x86_64 ) |
25 | # On x86_64 systems, the C compiler may still be generating | 25 | # On x86_64 systems, the C compiler may still be generating |
26 | # 32-bit code. | 26 | # 32-bit code. |
27 | AC_EGREP_CPP([yes], | 27 | AC_COMPILE_IFELSE( |
28 | [#if defined __LP64__ || defined __x86_64__ || defined __amd64__ | 28 | [AC_LANG_SOURCE( |
29 | yes | 29 | [[#if defined __LP64__ || defined __x86_64__ || defined __amd64__ |
30 | #endif], | 30 | int ok; |
31 | #else | ||
32 | error fail | ||
33 | #endif | ||
34 | ]])], | ||
31 | [], | 35 | [], |
32 | [FLOAT_H=float.h]) | 36 | [GL_GENERATE_FLOAT_H=true]) |
33 | ;; | 37 | ;; |
34 | esac | 38 | esac |
35 | ;; | 39 | ;; |
36 | linux*) | 40 | linux*) |
37 | case "$host_cpu" in | 41 | case "$host_cpu" in |
38 | powerpc*) | 42 | powerpc*) |
39 | FLOAT_H=float.h | 43 | GL_GENERATE_FLOAT_H=true |
40 | ;; | 44 | ;; |
41 | esac | 45 | esac |
42 | ;; | 46 | ;; |
43 | esac | 47 | esac |
44 | case "$host_os" in | 48 | case "$host_os" in |
45 | aix* | freebsd* | linux*) | 49 | aix* | freebsd* | dragonfly* | linux*) |
46 | if test -n "$FLOAT_H"; then | 50 | if $GL_GENERATE_FLOAT_H; then |
47 | REPLACE_FLOAT_LDBL=1 | 51 | REPLACE_FLOAT_LDBL=1 |
48 | fi | 52 | fi |
49 | ;; | 53 | ;; |
@@ -69,14 +73,20 @@ int main () | |||
69 | [gl_cv_func_itold_works=no], | 73 | [gl_cv_func_itold_works=no], |
70 | [case "$host" in | 74 | [case "$host" in |
71 | sparc*-*-linux*) | 75 | sparc*-*-linux*) |
72 | AC_EGREP_CPP([yes], | 76 | AC_COMPILE_IFELSE( |
73 | [#if defined __LP64__ || defined __arch64__ | 77 | [AC_LANG_SOURCE( |
74 | yes | 78 | [[#if defined __LP64__ || defined __arch64__ |
75 | #endif], | 79 | int ok; |
80 | #else | ||
81 | error fail | ||
82 | #endif | ||
83 | ]])], | ||
76 | [gl_cv_func_itold_works="guessing no"], | 84 | [gl_cv_func_itold_works="guessing no"], |
77 | [gl_cv_func_itold_works="guessing yes"]) | 85 | [gl_cv_func_itold_works="guessing yes"]) |
78 | ;; | 86 | ;; |
79 | *) gl_cv_func_itold_works="guessing yes" ;; | 87 | # Guess yes on native Windows. |
88 | mingw*) gl_cv_func_itold_works="guessing yes" ;; | ||
89 | *) gl_cv_func_itold_works="guessing yes" ;; | ||
80 | esac | 90 | esac |
81 | ]) | 91 | ]) |
82 | ]) | 92 | ]) |
@@ -85,14 +95,12 @@ int main () | |||
85 | REPLACE_ITOLD=1 | 95 | REPLACE_ITOLD=1 |
86 | dnl We add the workaround to <float.h> but also to <math.h>, | 96 | dnl We add the workaround to <float.h> but also to <math.h>, |
87 | dnl to increase the chances that the fix function gets pulled in. | 97 | dnl to increase the chances that the fix function gets pulled in. |
88 | FLOAT_H=float.h | 98 | GL_GENERATE_FLOAT_H=true |
89 | ;; | 99 | ;; |
90 | esac | 100 | esac |
91 | 101 | ||
92 | if test -n "$FLOAT_H"; then | 102 | if $GL_GENERATE_FLOAT_H; then |
93 | gl_NEXT_HEADERS([float.h]) | 103 | gl_NEXT_HEADERS([float.h]) |
94 | fi | 104 | fi |
95 | AC_SUBST([FLOAT_H]) | ||
96 | AM_CONDITIONAL([GL_GENERATE_FLOAT_H], [test -n "$FLOAT_H"]) | ||
97 | AC_SUBST([REPLACE_ITOLD]) | 105 | AC_SUBST([REPLACE_ITOLD]) |
98 | ]) | 106 | ]) |
diff --git a/gl/m4/floorf.m4 b/gl/m4/floorf.m4 index c892ff9c..c49ffa6b 100644 --- a/gl/m4/floorf.m4 +++ b/gl/m4/floorf.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # floorf.m4 serial 13 | 1 | # floorf.m4 serial 18 |
2 | dnl Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -39,7 +39,7 @@ AC_DEFUN([gl_FUNC_FLOORF], | |||
39 | static float dummy (float f) { return 0; } | 39 | static float dummy (float f) { return 0; } |
40 | int main (int argc, char *argv[]) | 40 | int main (int argc, char *argv[]) |
41 | { | 41 | { |
42 | float (*my_floorf) (float) = argc ? floorf : dummy; | 42 | float (* volatile my_floorf) (float) = argc ? floorf : dummy; |
43 | /* Test whether floorf (-0.0f) is -0.0f. */ | 43 | /* Test whether floorf (-0.0f) is -0.0f. */ |
44 | if (signbitf (minus_zerof) && !signbitf (my_floorf (minus_zerof))) | 44 | if (signbitf (minus_zerof) && !signbitf (my_floorf (minus_zerof))) |
45 | return 1; | 45 | return 1; |
@@ -49,10 +49,14 @@ int main (int argc, char *argv[]) | |||
49 | [gl_cv_func_floorf_ieee=yes], | 49 | [gl_cv_func_floorf_ieee=yes], |
50 | [gl_cv_func_floorf_ieee=no], | 50 | [gl_cv_func_floorf_ieee=no], |
51 | [case "$host_os" in | 51 | [case "$host_os" in |
52 | # Guess yes on glibc systems. | 52 | # Guess yes on glibc systems. |
53 | *-gnu*) gl_cv_func_floorf_ieee="guessing yes" ;; | 53 | *-gnu* | gnu*) gl_cv_func_floorf_ieee="guessing yes" ;; |
54 | # If we don't know, assume the worst. | 54 | # Guess yes on musl systems. |
55 | *) gl_cv_func_floorf_ieee="guessing no" ;; | 55 | *-musl*) gl_cv_func_floorf_ieee="guessing yes" ;; |
56 | # Guess yes on native Windows. | ||
57 | mingw*) gl_cv_func_floorf_ieee="guessing yes" ;; | ||
58 | # If we don't know, obey --enable-cross-guesses. | ||
59 | *) gl_cv_func_floorf_ieee="$gl_cross_guess_normal" ;; | ||
56 | esac | 60 | esac |
57 | ]) | 61 | ]) |
58 | LIBS="$save_LIBS" | 62 | LIBS="$save_LIBS" |
diff --git a/gl/m4/fopen.m4 b/gl/m4/fopen.m4 new file mode 100644 index 00000000..9c39ff72 --- /dev/null +++ b/gl/m4/fopen.m4 | |||
@@ -0,0 +1,149 @@ | |||
1 | # fopen.m4 serial 13 | ||
2 | dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_FUNC_FOPEN], | ||
8 | [ | ||
9 | AC_REQUIRE([gl_STDIO_H_DEFAULTS]) | ||
10 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
11 | case "$host_os" in | ||
12 | mingw* | pw*) | ||
13 | dnl Replace fopen, for handling of "/dev/null". | ||
14 | REPLACE_FOPEN=1 | ||
15 | dnl fopen on mingw also has the trailing slash bug. | ||
16 | gl_cv_func_fopen_slash="guessing no" | ||
17 | ;; | ||
18 | *) | ||
19 | dnl fopen("foo/", "w") should not create a file when the file name has a | ||
20 | dnl trailing slash. | ||
21 | AC_CACHE_CHECK([whether fopen recognizes a trailing slash], | ||
22 | [gl_cv_func_fopen_slash], | ||
23 | [ | ||
24 | AC_RUN_IFELSE( | ||
25 | [AC_LANG_SOURCE([[ | ||
26 | #include <stddef.h> | ||
27 | #include <stdio.h> | ||
28 | int main () | ||
29 | { | ||
30 | FILE *fp = fopen ("conftest.sl/", "w"); | ||
31 | int result = (fp != NULL); | ||
32 | if (fp != NULL) | ||
33 | fclose (fp); | ||
34 | return result; | ||
35 | }]])], | ||
36 | [gl_cv_func_fopen_slash=yes], | ||
37 | [gl_cv_func_fopen_slash=no], | ||
38 | [ | ||
39 | changequote(,)dnl | ||
40 | case "$host_os" in | ||
41 | aix* | hpux* | solaris2.[0-9] | solaris2.[0-9].*) | ||
42 | gl_cv_func_fopen_slash="guessing no" ;; | ||
43 | *) | ||
44 | gl_cv_func_fopen_slash="guessing yes" ;; | ||
45 | esac | ||
46 | changequote([,])dnl | ||
47 | ]) | ||
48 | rm -f conftest.sl | ||
49 | ]) | ||
50 | ;; | ||
51 | esac | ||
52 | case "$gl_cv_func_fopen_slash" in | ||
53 | *no) | ||
54 | AC_DEFINE([FOPEN_TRAILING_SLASH_BUG], [1], | ||
55 | [Define to 1 if fopen() fails to recognize a trailing slash.]) | ||
56 | REPLACE_FOPEN=1 | ||
57 | ;; | ||
58 | esac | ||
59 | ]) | ||
60 | |||
61 | AC_DEFUN([gl_FUNC_FOPEN_GNU], | ||
62 | [ | ||
63 | AC_REQUIRE([gl_FUNC_FOPEN]) | ||
64 | AC_CACHE_CHECK([whether fopen supports the mode character 'x'], | ||
65 | [gl_cv_func_fopen_mode_x], | ||
66 | [rm -f conftest.x | ||
67 | AC_RUN_IFELSE( | ||
68 | [AC_LANG_SOURCE([[ | ||
69 | #include <stdio.h> | ||
70 | #include <errno.h> | ||
71 | int main () | ||
72 | { | ||
73 | FILE *fp; | ||
74 | fp = fopen ("conftest.x", "w"); | ||
75 | fclose (fp); | ||
76 | fp = fopen ("conftest.x", "wx"); | ||
77 | if (fp != NULL) | ||
78 | /* 'x' ignored */ | ||
79 | return 1; | ||
80 | else if (errno == EEXIST) | ||
81 | return 0; | ||
82 | else | ||
83 | /* 'x' rejected */ | ||
84 | return 2; | ||
85 | }]])], | ||
86 | [gl_cv_func_fopen_mode_x=yes], | ||
87 | [gl_cv_func_fopen_mode_x=no], | ||
88 | [case "$host_os" in | ||
89 | # Guess yes on glibc and musl systems. | ||
90 | linux*-gnu* | gnu* | kfreebsd*-gnu | *-musl*) | ||
91 | gl_cv_func_fopen_mode_x="guessing yes" ;; | ||
92 | # If we don't know, obey --enable-cross-guesses. | ||
93 | *) | ||
94 | gl_cv_func_fopen_mode_x="$gl_cross_guess_normal" ;; | ||
95 | esac | ||
96 | ]) | ||
97 | rm -f conftest.x | ||
98 | ]) | ||
99 | AC_CACHE_CHECK([whether fopen supports the mode character 'e'], | ||
100 | [gl_cv_func_fopen_mode_e], | ||
101 | [echo foo > conftest.x | ||
102 | AC_RUN_IFELSE( | ||
103 | [AC_LANG_SOURCE([[ | ||
104 | #include <stdio.h> | ||
105 | #include <errno.h> | ||
106 | #include <fcntl.h> | ||
107 | ]GL_MDA_DEFINES[ | ||
108 | int main () | ||
109 | { | ||
110 | FILE *fp = fopen ("conftest.x", "re"); | ||
111 | if (fp != NULL) | ||
112 | { | ||
113 | if (fcntl (fileno (fp), F_GETFD) & FD_CLOEXEC) | ||
114 | return 0; | ||
115 | else | ||
116 | /* 'e' ignored */ | ||
117 | return 1; | ||
118 | } | ||
119 | else | ||
120 | /* 'e' rejected */ | ||
121 | return 2; | ||
122 | }]])], | ||
123 | [gl_cv_func_fopen_mode_e=yes], | ||
124 | [gl_cv_func_fopen_mode_e=no], | ||
125 | [case "$host_os" in | ||
126 | # Guess yes on glibc and musl systems. | ||
127 | linux*-gnu* | gnu* | kfreebsd*-gnu | *-musl*) | ||
128 | gl_cv_func_fopen_mode_e="guessing yes" ;; | ||
129 | # Guess no on native Windows. | ||
130 | mingw*) | ||
131 | gl_cv_func_fopen_mode_e="guessing no" ;; | ||
132 | # If we don't know, obey --enable-cross-guesses. | ||
133 | *) | ||
134 | gl_cv_func_fopen_mode_e="$gl_cross_guess_normal" ;; | ||
135 | esac | ||
136 | ]) | ||
137 | rm -f conftest.x | ||
138 | ]) | ||
139 | REPLACE_FOPEN_FOR_FOPEN_GNU="$REPLACE_FOPEN" | ||
140 | case "$gl_cv_func_fopen_mode_x" in | ||
141 | *no) REPLACE_FOPEN_FOR_FOPEN_GNU=1 ;; | ||
142 | esac | ||
143 | case "$gl_cv_func_fopen_mode_e" in | ||
144 | *no) REPLACE_FOPEN_FOR_FOPEN_GNU=1 ;; | ||
145 | esac | ||
146 | ]) | ||
147 | |||
148 | # Prerequisites of lib/fopen.c. | ||
149 | AC_DEFUN([gl_PREREQ_FOPEN], [:]) | ||
diff --git a/gl/m4/fpurge.m4 b/gl/m4/fpurge.m4 new file mode 100644 index 00000000..b365409d --- /dev/null +++ b/gl/m4/fpurge.m4 | |||
@@ -0,0 +1,73 @@ | |||
1 | # fpurge.m4 serial 12 | ||
2 | dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_FUNC_FPURGE], | ||
8 | [ | ||
9 | AC_REQUIRE([gl_STDIO_H_DEFAULTS]) | ||
10 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | ||
11 | AC_CHECK_HEADERS_ONCE([stdio_ext.h]) | ||
12 | AC_CHECK_FUNCS_ONCE([fpurge]) | ||
13 | AC_CHECK_FUNCS_ONCE([__fpurge]) | ||
14 | AC_CHECK_DECLS([fpurge], , , [[#include <stdio.h>]]) | ||
15 | if test "x$ac_cv_func_fpurge" = xyes; then | ||
16 | HAVE_FPURGE=1 | ||
17 | # Detect BSD bug. Only cygwin 1.7 and musl are known to be immune. | ||
18 | AC_CACHE_CHECK([whether fpurge works], [gl_cv_func_fpurge_works], | ||
19 | [AC_RUN_IFELSE( | ||
20 | [AC_LANG_PROGRAM( | ||
21 | [[#include <stdio.h> | ||
22 | ]], | ||
23 | [[FILE *f = fopen ("conftest.txt", "w+"); | ||
24 | if (!f) | ||
25 | return 1; | ||
26 | if (fputc ('a', f) != 'a') | ||
27 | { fclose (f); return 2; } | ||
28 | rewind (f); | ||
29 | if (fgetc (f) != 'a') | ||
30 | { fclose (f); return 3; } | ||
31 | if (fgetc (f) != EOF) | ||
32 | { fclose (f); return 4; } | ||
33 | if (fpurge (f) != 0) | ||
34 | { fclose (f); return 5; } | ||
35 | if (putc ('b', f) != 'b') | ||
36 | { fclose (f); return 6; } | ||
37 | if (fclose (f) != 0) | ||
38 | return 7; | ||
39 | if ((f = fopen ("conftest.txt", "r")) == NULL) | ||
40 | return 8; | ||
41 | if (fgetc (f) != 'a') | ||
42 | { fclose (f); return 9; } | ||
43 | if (fgetc (f) != 'b') | ||
44 | { fclose (f); return 10; } | ||
45 | if (fgetc (f) != EOF) | ||
46 | { fclose (f); return 11; } | ||
47 | if (fclose (f) != 0) | ||
48 | return 12; | ||
49 | if (remove ("conftest.txt") != 0) | ||
50 | return 13; | ||
51 | return 0; | ||
52 | ]])], | ||
53 | [gl_cv_func_fpurge_works=yes], | ||
54 | [gl_cv_func_fpurge_works=no], | ||
55 | [case "$host_os" in | ||
56 | # Guess yes on musl systems. | ||
57 | *-musl*) gl_cv_func_fpurge_works="guessing yes" ;; | ||
58 | # Otherwise obey --enable-cross-guesses. | ||
59 | *) gl_cv_func_fpurge_works="$gl_cross_guess_normal" ;; | ||
60 | esac | ||
61 | ]) | ||
62 | ]) | ||
63 | case "$gl_cv_func_fpurge_works" in | ||
64 | *yes) ;; | ||
65 | *) REPLACE_FPURGE=1 ;; | ||
66 | esac | ||
67 | else | ||
68 | HAVE_FPURGE=0 | ||
69 | fi | ||
70 | if test "x$ac_cv_have_decl_fpurge" = xno; then | ||
71 | HAVE_DECL_FPURGE=0 | ||
72 | fi | ||
73 | ]) | ||
diff --git a/gl/m4/sha1.m4 b/gl/m4/freading.m4 index 21c775e3..35333369 100644 --- a/gl/m4/sha1.m4 +++ b/gl/m4/freading.m4 | |||
@@ -1,12 +1,11 @@ | |||
1 | # sha1.m4 serial 11 | 1 | # freading.m4 serial 2 |
2 | dnl Copyright (C) 2002-2006, 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | AC_DEFUN([gl_SHA1], | 7 | AC_DEFUN([gl_FUNC_FREADING], |
8 | [ | 8 | [ |
9 | dnl Prerequisites of lib/sha1.c. | 9 | AC_CHECK_HEADERS_ONCE([stdio_ext.h]) |
10 | AC_REQUIRE([gl_BIGENDIAN]) | 10 | AC_CHECK_FUNCS_ONCE([__freading]) |
11 | : | ||
12 | ]) | 11 | ]) |
diff --git a/gl/m4/free.m4 b/gl/m4/free.m4 new file mode 100644 index 00000000..0389dea3 --- /dev/null +++ b/gl/m4/free.m4 | |||
@@ -0,0 +1,52 @@ | |||
1 | # free.m4 serial 6 | ||
2 | # Copyright (C) 2003-2005, 2009-2023 Free Software Foundation, Inc. | ||
3 | # This file is free software; the Free Software Foundation | ||
4 | # gives unlimited permission to copy and/or distribute it, | ||
5 | # with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | # Written by Paul Eggert and Bruno Haible. | ||
8 | |||
9 | AC_DEFUN([gl_FUNC_FREE], | ||
10 | [ | ||
11 | AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) | ||
12 | |||
13 | dnl In the next release of POSIX, free must preserve errno. | ||
14 | dnl https://www.austingroupbugs.net/view.php?id=385 | ||
15 | dnl https://sourceware.org/bugzilla/show_bug.cgi?id=17924 | ||
16 | dnl So far, we know of three platforms that do this: | ||
17 | dnl * glibc >= 2.33, thanks to the fix for this bug: | ||
18 | dnl <https://sourceware.org/bugzilla/show_bug.cgi?id=17924> | ||
19 | dnl * OpenBSD >= 4.5, thanks to this commit: | ||
20 | dnl <https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libc/stdlib/malloc.c.diff?r1=1.100&r2=1.101&f=h> | ||
21 | dnl * Solaris, because its malloc() implementation is based on brk(), | ||
22 | dnl not mmap(); hence its free() implementation makes no system calls. | ||
23 | dnl For other platforms, you can only be sure if they state it in their | ||
24 | dnl documentation, or by code inspection of the free() implementation in libc. | ||
25 | AC_CACHE_CHECK([whether free is known to preserve errno], | ||
26 | [gl_cv_func_free_preserves_errno], | ||
27 | [AC_COMPILE_IFELSE( | ||
28 | [AC_LANG_PROGRAM( | ||
29 | [[#include <stdlib.h> | ||
30 | ]], | ||
31 | [[#if 2 < __GLIBC__ + (33 <= __GLIBC_MINOR__) | ||
32 | #elif defined __OpenBSD__ | ||
33 | #elif defined __sun | ||
34 | #else | ||
35 | #error "'free' is not known to preserve errno" | ||
36 | #endif | ||
37 | ]])], | ||
38 | [gl_cv_func_free_preserves_errno=yes], | ||
39 | [gl_cv_func_free_preserves_errno=no]) | ||
40 | ]) | ||
41 | |||
42 | case $gl_cv_func_free_preserves_errno in | ||
43 | *yes) | ||
44 | AC_DEFINE([HAVE_FREE_POSIX], [1], | ||
45 | [Define if the 'free' function is guaranteed to preserve errno.]) | ||
46 | ;; | ||
47 | *) REPLACE_FREE=1 ;; | ||
48 | esac | ||
49 | ]) | ||
50 | |||
51 | # Prerequisites of lib/free.c. | ||
52 | AC_DEFUN([gl_PREREQ_FREE], [:]) | ||
diff --git a/gl/m4/fseek.m4 b/gl/m4/fseek.m4 new file mode 100644 index 00000000..c5fe688c --- /dev/null +++ b/gl/m4/fseek.m4 | |||
@@ -0,0 +1,15 @@ | |||
1 | # fseek.m4 serial 4 | ||
2 | dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_FUNC_FSEEK], | ||
8 | [ | ||
9 | AC_REQUIRE([gl_STDIO_H_DEFAULTS]) | ||
10 | AC_REQUIRE([gl_FUNC_FSEEKO]) | ||
11 | dnl When fseeko needs fixes, fseek needs them too. | ||
12 | if test $HAVE_FSEEKO = 0 || test $REPLACE_FSEEKO = 1; then | ||
13 | REPLACE_FSEEK=1 | ||
14 | fi | ||
15 | ]) | ||
diff --git a/gl/m4/fseeko.m4 b/gl/m4/fseeko.m4 new file mode 100644 index 00000000..05ee06bc --- /dev/null +++ b/gl/m4/fseeko.m4 | |||
@@ -0,0 +1,77 @@ | |||
1 | # fseeko.m4 serial 20 | ||
2 | dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_FUNC_FSEEKO], | ||
8 | [ | ||
9 | AC_REQUIRE([gl_STDIO_H_DEFAULTS]) | ||
10 | AC_REQUIRE([gl_STDIN_LARGE_OFFSET]) | ||
11 | AC_REQUIRE([gl_SYS_TYPES_H]) | ||
12 | AC_REQUIRE([AC_PROG_CC]) | ||
13 | |||
14 | dnl Persuade glibc <stdio.h> to declare fseeko(). | ||
15 | AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) | ||
16 | |||
17 | AC_CACHE_CHECK([for fseeko], [gl_cv_func_fseeko], | ||
18 | [ | ||
19 | AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h> | ||
20 | ]], [[fseeko (stdin, 0, 0);]])], | ||
21 | [gl_cv_func_fseeko=yes], [gl_cv_func_fseeko=no]) | ||
22 | ]) | ||
23 | |||
24 | AC_CHECK_DECLS_ONCE([fseeko]) | ||
25 | if test $ac_cv_have_decl_fseeko = no; then | ||
26 | HAVE_DECL_FSEEKO=0 | ||
27 | fi | ||
28 | |||
29 | if test $gl_cv_func_fseeko = no; then | ||
30 | HAVE_FSEEKO=0 | ||
31 | else | ||
32 | if test $WINDOWS_64_BIT_OFF_T = 1; then | ||
33 | REPLACE_FSEEKO=1 | ||
34 | fi | ||
35 | if test $gl_cv_var_stdin_large_offset = no; then | ||
36 | REPLACE_FSEEKO=1 | ||
37 | fi | ||
38 | m4_ifdef([gl_FUNC_FFLUSH_STDIN], [ | ||
39 | gl_FUNC_FFLUSH_STDIN | ||
40 | case "$gl_cv_func_fflush_stdin" in | ||
41 | *yes) ;; | ||
42 | *) REPLACE_FSEEKO=1 ;; | ||
43 | esac | ||
44 | ]) | ||
45 | fi | ||
46 | ]) | ||
47 | |||
48 | dnl Code shared by fseeko and ftello. Determine if large files are supported, | ||
49 | dnl but stdin does not start as a large file by default. | ||
50 | AC_DEFUN([gl_STDIN_LARGE_OFFSET], | ||
51 | [ | ||
52 | AC_CACHE_CHECK([whether stdin defaults to large file offsets], | ||
53 | [gl_cv_var_stdin_large_offset], | ||
54 | [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], | ||
55 | [[#if defined __SL64 && defined __SCLE /* cygwin */ | ||
56 | /* Cygwin 1.5.24 and earlier fail to put stdin in 64-bit mode, making | ||
57 | fseeko/ftello needlessly fail. This bug was fixed in 1.5.25, and | ||
58 | it is easier to do a version check than building a runtime test. */ | ||
59 | # include <cygwin/version.h> | ||
60 | # if CYGWIN_VERSION_DLL_COMBINED < CYGWIN_VERSION_DLL_MAKE_COMBINED (1005, 25) | ||
61 | choke me | ||
62 | # endif | ||
63 | #endif]])], | ||
64 | [gl_cv_var_stdin_large_offset=yes], | ||
65 | [gl_cv_var_stdin_large_offset=no])]) | ||
66 | ]) | ||
67 | |||
68 | # Prerequisites of lib/fseeko.c. | ||
69 | AC_DEFUN([gl_PREREQ_FSEEKO], | ||
70 | [ | ||
71 | dnl Native Windows has the function _fseeki64. mingw hides it in some | ||
72 | dnl circumstances, but mingw64 makes it usable again. | ||
73 | AC_CHECK_FUNCS([_fseeki64]) | ||
74 | if test $ac_cv_func__fseeki64 = yes; then | ||
75 | AC_CHECK_DECLS([_fseeki64]) | ||
76 | fi | ||
77 | ]) | ||
diff --git a/gl/m4/fstat.m4 b/gl/m4/fstat.m4 new file mode 100644 index 00000000..7cb2edb0 --- /dev/null +++ b/gl/m4/fstat.m4 | |||
@@ -0,0 +1,40 @@ | |||
1 | # fstat.m4 serial 8 | ||
2 | dnl Copyright (C) 2011-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_FUNC_FSTAT], | ||
8 | [ | ||
9 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
10 | AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) | ||
11 | |||
12 | case "$host_os" in | ||
13 | mingw* | solaris*) | ||
14 | dnl On MinGW, the original stat() returns st_atime, st_mtime, | ||
15 | dnl st_ctime values that are affected by the time zone. | ||
16 | dnl Solaris stat can return a negative tv_nsec. | ||
17 | REPLACE_FSTAT=1 | ||
18 | ;; | ||
19 | esac | ||
20 | |||
21 | dnl Replace fstat() for supporting the gnulib-defined open() on directories. | ||
22 | m4_ifdef([gl_FUNC_FCHDIR], [ | ||
23 | gl_TEST_FCHDIR | ||
24 | if test $HAVE_FCHDIR = 0; then | ||
25 | case "$gl_cv_func_open_directory_works" in | ||
26 | *yes) ;; | ||
27 | *) | ||
28 | REPLACE_FSTAT=1 | ||
29 | ;; | ||
30 | esac | ||
31 | fi | ||
32 | ]) | ||
33 | ]) | ||
34 | |||
35 | # Prerequisites of lib/fstat.c and lib/stat-w32.c. | ||
36 | AC_DEFUN([gl_PREREQ_FSTAT], [ | ||
37 | AC_REQUIRE([gl_SYS_STAT_H]) | ||
38 | AC_REQUIRE([gl_PREREQ_STAT_W32]) | ||
39 | : | ||
40 | ]) | ||
diff --git a/gl/m4/fstypename.m4 b/gl/m4/fstypename.m4 index c72ecb80..f65c459f 100644 --- a/gl/m4/fstypename.m4 +++ b/gl/m4/fstypename.m4 | |||
@@ -6,7 +6,7 @@ dnl See if struct statfs has the f_fstypename member. | |||
6 | dnl If so, define HAVE_STRUCT_STATFS_F_FSTYPENAME. | 6 | dnl If so, define HAVE_STRUCT_STATFS_F_FSTYPENAME. |
7 | dnl | 7 | dnl |
8 | 8 | ||
9 | # Copyright (C) 1998-1999, 2001, 2004, 2006, 2009-2013 Free Software | 9 | # Copyright (C) 1998-1999, 2001, 2004, 2006, 2009-2023 Free Software |
10 | # Foundation, Inc. | 10 | # Foundation, Inc. |
11 | # This file is free software; the Free Software Foundation | 11 | # This file is free software; the Free Software Foundation |
12 | # gives unlimited permission to copy and/or distribute it, | 12 | # gives unlimited permission to copy and/or distribute it, |
diff --git a/gl/m4/fsusage.m4 b/gl/m4/fsusage.m4 index 6277bfa5..88f3ca81 100644 --- a/gl/m4/fsusage.m4 +++ b/gl/m4/fsusage.m4 | |||
@@ -1,7 +1,7 @@ | |||
1 | # serial 30 | 1 | # serial 35 |
2 | # Obtaining file system usage information. | 2 | # Obtaining file system usage information. |
3 | 3 | ||
4 | # Copyright (C) 1997-1998, 2000-2001, 2003-2013 Free Software Foundation, Inc. | 4 | # Copyright (C) 1997-1998, 2000-2001, 2003-2023 Free Software Foundation, Inc. |
5 | # | 5 | # |
6 | # This file is free software; the Free Software Foundation | 6 | # This file is free software; the Free Software Foundation |
7 | # gives unlimited permission to copy and/or distribute it, | 7 | # gives unlimited permission to copy and/or distribute it, |
@@ -29,27 +29,29 @@ AC_DEFUN([gl_FSUSAGE], | |||
29 | 29 | ||
30 | AC_DEFUN([gl_FILE_SYSTEM_USAGE], | 30 | AC_DEFUN([gl_FILE_SYSTEM_USAGE], |
31 | [ | 31 | [ |
32 | dnl Enable large-file support. This has the effect of changing the size | 32 | dnl Enable large-file support. This has the effect of changing the size |
33 | dnl of field f_blocks in 'struct statvfs' from 32 bit to 64 bit on | 33 | dnl of field f_blocks in 'struct statvfs' from 32 bit to 64 bit on |
34 | dnl glibc/Hurd, HP-UX 11, Solaris (32-bit mode). It also changes the size | 34 | dnl glibc/Hurd, HP-UX 11, Solaris (32-bit mode). It also changes the size |
35 | dnl of field f_blocks in 'struct statfs' from 32 bit to 64 bit on | 35 | dnl of field f_blocks in 'struct statfs' from 32 bit to 64 bit on |
36 | dnl Mac OS X >= 10.5 (32-bit mode). | 36 | dnl Mac OS X >= 10.5 (32-bit mode). |
37 | AC_REQUIRE([AC_SYS_LARGEFILE]) | 37 | AC_REQUIRE([AC_SYS_LARGEFILE]) |
38 | 38 | ||
39 | AC_MSG_NOTICE([checking how to get file system space usage]) | 39 | ac_fsusage_space=no |
40 | ac_fsusage_space=no | ||
41 | 40 | ||
42 | # Perform only the link test since it seems there are no variants of the | 41 | # Perform only the link test since it seems there are no variants of the |
43 | # statvfs function. This check is more than just AC_CHECK_FUNCS([statvfs]) | 42 | # statvfs function. This check is more than just AC_CHECK_FUNCS([statvfs]) |
44 | # because that got a false positive on SCO OSR5. Adding the declaration | 43 | # because that got a false positive on SCO OSR5. Adding the declaration |
45 | # of a 'struct statvfs' causes this test to fail (as it should) on such | 44 | # of a 'struct statvfs' causes this test to fail (as it should) on such |
46 | # systems. That system is reported to work fine with STAT_STATFS4 which | 45 | # systems. That system is reported to work fine with STAT_STATFS4 which |
47 | # is what it gets when this test fails. | 46 | # is what it gets when this test fails. |
48 | if test $ac_fsusage_space = no; then | 47 | if test $ac_fsusage_space = no; then |
49 | # glibc/{Hurd,kFreeBSD}, FreeBSD >= 5.0, NetBSD >= 3.0, | 48 | # glibc/{Hurd,kFreeBSD}, FreeBSD >= 5.0, NetBSD >= 3.0, |
50 | # OpenBSD >= 4.4, AIX, HP-UX, IRIX, Solaris, Cygwin, Interix, BeOS. | 49 | # OpenBSD >= 4.4, AIX, HP-UX, IRIX, Solaris, Cygwin, Interix, BeOS. |
51 | AC_CACHE_CHECK([for statvfs function (SVR4)], [fu_cv_sys_stat_statvfs], | 50 | AC_CACHE_CHECK([for statvfs function (SVR4)], |
52 | [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> | 51 | [fu_cv_sys_stat_statvfs], |
52 | [AC_LINK_IFELSE( | ||
53 | [AC_LANG_PROGRAM([[ | ||
54 | #include <sys/types.h> | ||
53 | #ifdef __osf__ | 55 | #ifdef __osf__ |
54 | "Do not use Tru64's statvfs implementation" | 56 | "Do not use Tru64's statvfs implementation" |
55 | #endif | 57 | #endif |
@@ -68,45 +70,47 @@ struct statvfs fsd; | |||
68 | int check_f_blocks_size[sizeof fsd.f_blocks * CHAR_BIT <= 32 ? -1 : 1]; | 70 | int check_f_blocks_size[sizeof fsd.f_blocks * CHAR_BIT <= 32 ? -1 : 1]; |
69 | #endif | 71 | #endif |
70 | ]], | 72 | ]], |
71 | [[statvfs (0, &fsd);]])], | 73 | [[statvfs (0, &fsd);]])], |
72 | [fu_cv_sys_stat_statvfs=yes], | 74 | [fu_cv_sys_stat_statvfs=yes], |
73 | [fu_cv_sys_stat_statvfs=no])]) | 75 | [fu_cv_sys_stat_statvfs=no]) |
74 | if test $fu_cv_sys_stat_statvfs = yes; then | ||
75 | ac_fsusage_space=yes | ||
76 | # AIX >= 5.2 has statvfs64 that has a wider f_blocks field than statvfs. | ||
77 | # glibc, HP-UX, IRIX, Solaris have statvfs64 as well, but on these systems | ||
78 | # statvfs with large-file support is already equivalent to statvfs64. | ||
79 | AC_CACHE_CHECK([whether to use statvfs64], | ||
80 | [fu_cv_sys_stat_statvfs64], | ||
81 | [AC_LINK_IFELSE( | ||
82 | [AC_LANG_PROGRAM( | ||
83 | [[#include <sys/types.h> | ||
84 | #include <sys/statvfs.h> | ||
85 | struct statvfs64 fsd; | ||
86 | int check_f_blocks_larger_in_statvfs64 | ||
87 | [sizeof (((struct statvfs64 *) 0)->f_blocks) | ||
88 | > sizeof (((struct statvfs *) 0)->f_blocks) | ||
89 | ? 1 : -1]; | ||
90 | ]], | ||
91 | [[statvfs64 (0, &fsd);]])], | ||
92 | [fu_cv_sys_stat_statvfs64=yes], | ||
93 | [fu_cv_sys_stat_statvfs64=no]) | ||
94 | ]) | 76 | ]) |
95 | if test $fu_cv_sys_stat_statvfs64 = yes; then | 77 | if test $fu_cv_sys_stat_statvfs = yes; then |
96 | AC_DEFINE([STAT_STATVFS64], [1], | 78 | ac_fsusage_space=yes |
97 | [ Define if statvfs64 should be preferred over statvfs.]) | 79 | # AIX >= 5.2 has statvfs64 that has a wider f_blocks field than statvfs. |
98 | else | 80 | # glibc, HP-UX, IRIX, Solaris have statvfs64 as well, but on these systems |
99 | AC_DEFINE([STAT_STATVFS], [1], | 81 | # statvfs with large-file support is already equivalent to statvfs64. |
100 | [ Define if there is a function named statvfs. (SVR4)]) | 82 | AC_CACHE_CHECK([whether to use statvfs64], |
83 | [fu_cv_sys_stat_statvfs64], | ||
84 | [AC_LINK_IFELSE( | ||
85 | [AC_LANG_PROGRAM( | ||
86 | [[#include <sys/types.h> | ||
87 | #include <sys/statvfs.h> | ||
88 | struct statvfs64 fsd; | ||
89 | int check_f_blocks_larger_in_statvfs64 | ||
90 | [sizeof (((struct statvfs64 *) 0)->f_blocks) | ||
91 | > sizeof (((struct statvfs *) 0)->f_blocks) | ||
92 | ? 1 : -1]; | ||
93 | ]], | ||
94 | [[statvfs64 (0, &fsd);]])], | ||
95 | [fu_cv_sys_stat_statvfs64=yes], | ||
96 | [fu_cv_sys_stat_statvfs64=no]) | ||
97 | ]) | ||
98 | if test $fu_cv_sys_stat_statvfs64 = yes; then | ||
99 | AC_DEFINE([STAT_STATVFS64], [1], | ||
100 | [Define if statvfs64 should be preferred over statvfs.]) | ||
101 | else | ||
102 | AC_DEFINE([STAT_STATVFS], [1], | ||
103 | [Define if there is a function named statvfs. (SVR4)]) | ||
104 | fi | ||
101 | fi | 105 | fi |
102 | fi | 106 | fi |
103 | fi | ||
104 | 107 | ||
105 | # Check for this unconditionally so we have a | 108 | # Check for this unconditionally so we have a |
106 | # good fallback on glibc/Linux > 2.6 < 2.6.36 | 109 | # good fallback on glibc/Linux > 2.6 < 2.6.36 |
107 | AC_MSG_CHECKING([for two-argument statfs with statfs.f_frsize member]) | 110 | AC_CACHE_CHECK([for two-argument statfs with statfs.f_frsize member], |
108 | AC_CACHE_VAL([fu_cv_sys_stat_statfs2_frsize], | 111 | [fu_cv_sys_stat_statfs2_frsize], |
109 | [AC_RUN_IFELSE([AC_LANG_SOURCE([[ | 112 | [AC_RUN_IFELSE( |
113 | [AC_LANG_SOURCE([[ | ||
110 | #ifdef HAVE_SYS_PARAM_H | 114 | #ifdef HAVE_SYS_PARAM_H |
111 | #include <sys/param.h> | 115 | #include <sys/param.h> |
112 | #endif | 116 | #endif |
@@ -119,26 +123,26 @@ AC_CACHE_VAL([fu_cv_sys_stat_statfs2_frsize], | |||
119 | int | 123 | int |
120 | main () | 124 | main () |
121 | { | 125 | { |
122 | struct statfs fsd; | 126 | struct statfs fsd; |
123 | fsd.f_frsize = 0; | 127 | fsd.f_frsize = 0; |
124 | return statfs (".", &fsd) != 0; | 128 | return statfs (".", &fsd) != 0; |
125 | }]])], | 129 | }]])], |
126 | [fu_cv_sys_stat_statfs2_frsize=yes], | 130 | [fu_cv_sys_stat_statfs2_frsize=yes], |
127 | [fu_cv_sys_stat_statfs2_frsize=no], | 131 | [fu_cv_sys_stat_statfs2_frsize=no], |
128 | [fu_cv_sys_stat_statfs2_frsize=no])]) | 132 | [fu_cv_sys_stat_statfs2_frsize=no]) |
129 | AC_MSG_RESULT([$fu_cv_sys_stat_statfs2_frsize]) | 133 | ]) |
130 | if test $fu_cv_sys_stat_statfs2_frsize = yes; then | 134 | if test $fu_cv_sys_stat_statfs2_frsize = yes; then |
131 | ac_fsusage_space=yes | 135 | ac_fsusage_space=yes |
132 | AC_DEFINE([STAT_STATFS2_FRSIZE], [1], | 136 | AC_DEFINE([STAT_STATFS2_FRSIZE], [1], |
133 | [ Define if statfs takes 2 args and struct statfs has a field named f_frsize. | 137 | [Define if statfs takes 2 args and struct statfs has a field named f_frsize. |
134 | (glibc/Linux > 2.6)]) | 138 | (glibc/Linux > 2.6)]) |
135 | fi | 139 | fi |
136 | 140 | ||
137 | if test $ac_fsusage_space = no; then | 141 | if test $ac_fsusage_space = no; then |
138 | # DEC Alpha running OSF/1 | 142 | # DEC Alpha running OSF/1 |
139 | AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)]) | 143 | AC_CACHE_CHECK([for 3-argument statfs function (DEC OSF/1)], |
140 | AC_CACHE_VAL([fu_cv_sys_stat_statfs3_osf1], | 144 | [fu_cv_sys_stat_statfs3_osf1], |
141 | [AC_RUN_IFELSE([AC_LANG_SOURCE([[ | 145 | [AC_RUN_IFELSE([AC_LANG_SOURCE([[ |
142 | #include <sys/param.h> | 146 | #include <sys/param.h> |
143 | #include <sys/types.h> | 147 | #include <sys/types.h> |
144 | #include <sys/mount.h> | 148 | #include <sys/mount.h> |
@@ -149,28 +153,27 @@ if test $ac_fsusage_space = no; then | |||
149 | fsd.f_fsize = 0; | 153 | fsd.f_fsize = 0; |
150 | return statfs (".", &fsd, sizeof (struct statfs)) != 0; | 154 | return statfs (".", &fsd, sizeof (struct statfs)) != 0; |
151 | }]])], | 155 | }]])], |
152 | [fu_cv_sys_stat_statfs3_osf1=yes], | 156 | [fu_cv_sys_stat_statfs3_osf1=yes], |
153 | [fu_cv_sys_stat_statfs3_osf1=no], | 157 | [fu_cv_sys_stat_statfs3_osf1=no], |
154 | [fu_cv_sys_stat_statfs3_osf1=no])]) | 158 | [fu_cv_sys_stat_statfs3_osf1=no]) |
155 | AC_MSG_RESULT([$fu_cv_sys_stat_statfs3_osf1]) | 159 | ]) |
156 | if test $fu_cv_sys_stat_statfs3_osf1 = yes; then | 160 | if test $fu_cv_sys_stat_statfs3_osf1 = yes; then |
157 | ac_fsusage_space=yes | 161 | ac_fsusage_space=yes |
158 | AC_DEFINE([STAT_STATFS3_OSF1], [1], | 162 | AC_DEFINE([STAT_STATFS3_OSF1], [1], |
159 | [ Define if statfs takes 3 args. (DEC Alpha running OSF/1)]) | 163 | [Define if statfs takes 3 args. (DEC Alpha running OSF/1)]) |
164 | fi | ||
160 | fi | 165 | fi |
161 | fi | ||
162 | 166 | ||
163 | if test $ac_fsusage_space = no; then | 167 | if test $ac_fsusage_space = no; then |
164 | # glibc/Linux, Mac OS X, FreeBSD < 5.0, NetBSD < 3.0, OpenBSD < 4.4. | 168 | # glibc/Linux, Mac OS X, FreeBSD < 5.0, NetBSD < 3.0, OpenBSD < 4.4. |
165 | # (glibc/{Hurd,kFreeBSD}, FreeBSD >= 5.0, NetBSD >= 3.0, | 169 | # (glibc/{Hurd,kFreeBSD}, FreeBSD >= 5.0, NetBSD >= 3.0, |
166 | # OpenBSD >= 4.4, AIX, HP-UX, OSF/1, Cygwin already handled above.) | 170 | # OpenBSD >= 4.4, AIX, HP-UX, OSF/1, Cygwin already handled above.) |
167 | # (On IRIX you need to include <sys/statfs.h>, not only <sys/mount.h> and | 171 | # (On IRIX you need to include <sys/statfs.h>, not only <sys/mount.h> and |
168 | # <sys/vfs.h>.) | 172 | # <sys/vfs.h>.) |
169 | # (On Solaris, statfs has 4 arguments.) | 173 | # (On Solaris, statfs has 4 arguments.) |
170 | AC_MSG_CHECKING([for two-argument statfs with statfs.f_bsize dnl | 174 | AC_CACHE_CHECK([for two-argument statfs with statfs.f_bsize member (AIX, 4.3BSD)], |
171 | member (AIX, 4.3BSD)]) | 175 | [fu_cv_sys_stat_statfs2_bsize], |
172 | AC_CACHE_VAL([fu_cv_sys_stat_statfs2_bsize], | 176 | [AC_RUN_IFELSE([AC_LANG_SOURCE([[ |
173 | [AC_RUN_IFELSE([AC_LANG_SOURCE([[ | ||
174 | #ifdef HAVE_SYS_PARAM_H | 177 | #ifdef HAVE_SYS_PARAM_H |
175 | #include <sys/param.h> | 178 | #include <sys/param.h> |
176 | #endif | 179 | #endif |
@@ -183,88 +186,56 @@ member (AIX, 4.3BSD)]) | |||
183 | int | 186 | int |
184 | main () | 187 | main () |
185 | { | 188 | { |
186 | struct statfs fsd; | 189 | struct statfs fsd; |
187 | fsd.f_bsize = 0; | 190 | fsd.f_bsize = 0; |
188 | return statfs (".", &fsd) != 0; | 191 | return statfs (".", &fsd) != 0; |
189 | }]])], | 192 | }]])], |
190 | [fu_cv_sys_stat_statfs2_bsize=yes], | 193 | [fu_cv_sys_stat_statfs2_bsize=yes], |
191 | [fu_cv_sys_stat_statfs2_bsize=no], | 194 | [fu_cv_sys_stat_statfs2_bsize=no], |
192 | [fu_cv_sys_stat_statfs2_bsize=no])]) | 195 | [fu_cv_sys_stat_statfs2_bsize=no]) |
193 | AC_MSG_RESULT([$fu_cv_sys_stat_statfs2_bsize]) | 196 | ]) |
194 | if test $fu_cv_sys_stat_statfs2_bsize = yes; then | 197 | if test $fu_cv_sys_stat_statfs2_bsize = yes; then |
195 | ac_fsusage_space=yes | 198 | ac_fsusage_space=yes |
196 | AC_DEFINE([STAT_STATFS2_BSIZE], [1], | 199 | AC_DEFINE([STAT_STATFS2_BSIZE], [1], |
197 | [ Define if statfs takes 2 args and struct statfs has a field named f_bsize. | 200 | [Define if statfs takes 2 args and struct statfs has a field named f_bsize. |
198 | (4.3BSD, SunOS 4, HP-UX, AIX PS/2)]) | 201 | (4.3BSD, SunOS 4, HP-UX)]) |
202 | fi | ||
199 | fi | 203 | fi |
200 | fi | ||
201 | 204 | ||
202 | if test $ac_fsusage_space = no; then | 205 | if test $ac_fsusage_space = no; then |
203 | # SVR3 | 206 | # SVR3 |
204 | # (Solaris already handled above.) | 207 | # (Solaris already handled above.) |
205 | AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)]) | 208 | AC_CACHE_CHECK([for four-argument statfs (SVR3)], |
206 | AC_CACHE_VAL([fu_cv_sys_stat_statfs4], | 209 | [fu_cv_sys_stat_statfs4], |
207 | [AC_RUN_IFELSE([AC_LANG_SOURCE([[ | 210 | [AC_RUN_IFELSE([AC_LANG_SOURCE([[ |
208 | #include <sys/types.h> | 211 | #include <sys/types.h> |
209 | #include <sys/statfs.h> | 212 | #include <sys/statfs.h> |
210 | int | 213 | int |
211 | main () | 214 | main () |
212 | { | 215 | { |
213 | struct statfs fsd; | 216 | struct statfs fsd; |
214 | return statfs (".", &fsd, sizeof fsd, 0) != 0; | 217 | return statfs (".", &fsd, sizeof fsd, 0) != 0; |
215 | }]])], | ||
216 | [fu_cv_sys_stat_statfs4=yes], | ||
217 | [fu_cv_sys_stat_statfs4=no], | ||
218 | [fu_cv_sys_stat_statfs4=no])]) | ||
219 | AC_MSG_RESULT([$fu_cv_sys_stat_statfs4]) | ||
220 | if test $fu_cv_sys_stat_statfs4 = yes; then | ||
221 | ac_fsusage_space=yes | ||
222 | AC_DEFINE([STAT_STATFS4], [1], | ||
223 | [ Define if statfs takes 4 args. (SVR3, Dynix, old Irix, old AIX, Dolphin)]) | ||
224 | fi | ||
225 | fi | ||
226 | |||
227 | if test $ac_fsusage_space = no; then | ||
228 | # 4.4BSD and older NetBSD | ||
229 | # (OSF/1 already handled above.) | ||
230 | # (On AIX, you need to include <sys/statfs.h>, not only <sys/mount.h>.) | ||
231 | # (On Solaris, statfs has 4 arguments and 'struct statfs' is not declared in | ||
232 | # <sys/mount.h>.) | ||
233 | AC_MSG_CHECKING([for two-argument statfs with statfs.f_fsize dnl | ||
234 | member (4.4BSD and NetBSD)]) | ||
235 | AC_CACHE_VAL([fu_cv_sys_stat_statfs2_fsize], | ||
236 | [AC_RUN_IFELSE([AC_LANG_SOURCE([[ | ||
237 | #include <sys/types.h> | ||
238 | #ifdef HAVE_SYS_PARAM_H | ||
239 | #include <sys/param.h> | ||
240 | #endif | ||
241 | #ifdef HAVE_SYS_MOUNT_H | ||
242 | #include <sys/mount.h> | ||
243 | #endif | ||
244 | int | ||
245 | main () | ||
246 | { | ||
247 | struct statfs fsd; | ||
248 | fsd.f_fsize = 0; | ||
249 | return statfs (".", &fsd) != 0; | ||
250 | }]])], | 218 | }]])], |
251 | [fu_cv_sys_stat_statfs2_fsize=yes], | 219 | [fu_cv_sys_stat_statfs4=yes], |
252 | [fu_cv_sys_stat_statfs2_fsize=no], | 220 | [fu_cv_sys_stat_statfs4=no], |
253 | [fu_cv_sys_stat_statfs2_fsize=no])]) | 221 | [fu_cv_sys_stat_statfs4=no]) |
254 | AC_MSG_RESULT([$fu_cv_sys_stat_statfs2_fsize]) | 222 | ]) |
255 | if test $fu_cv_sys_stat_statfs2_fsize = yes; then | 223 | if test $fu_cv_sys_stat_statfs4 = yes; then |
256 | ac_fsusage_space=yes | 224 | ac_fsusage_space=yes |
257 | AC_DEFINE([STAT_STATFS2_FSIZE], [1], | 225 | AC_DEFINE([STAT_STATFS4], [1], |
258 | [ Define if statfs takes 2 args and struct statfs has a field named f_fsize. | 226 | [Define if statfs takes 4 args. (SVR3, old Irix)]) |
259 | (4.4BSD, NetBSD)]) | 227 | fi |
260 | fi | 228 | fi |
261 | fi | ||
262 | 229 | ||
263 | if test $ac_fsusage_space = no; then | 230 | if test $ac_fsusage_space = no; then |
264 | # Ultrix | 231 | # 4.4BSD and older NetBSD |
265 | AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)]) | 232 | # (OSF/1 already handled above.) |
266 | AC_CACHE_VAL([fu_cv_sys_stat_fs_data], | 233 | # (On AIX, you need to include <sys/statfs.h>, not only <sys/mount.h>.) |
267 | [AC_RUN_IFELSE([AC_LANG_SOURCE([[ | 234 | # (On Solaris, statfs has 4 arguments and 'struct statfs' is not declared in |
235 | # <sys/mount.h>.) | ||
236 | AC_CACHE_CHECK([for two-argument statfs with statfs.f_fsize member (4.4BSD and NetBSD)], | ||
237 | [fu_cv_sys_stat_statfs2_fsize], | ||
238 | [AC_RUN_IFELSE([AC_LANG_SOURCE([[ | ||
268 | #include <sys/types.h> | 239 | #include <sys/types.h> |
269 | #ifdef HAVE_SYS_PARAM_H | 240 | #ifdef HAVE_SYS_PARAM_H |
270 | #include <sys/param.h> | 241 | #include <sys/param.h> |
@@ -272,41 +243,26 @@ if test $ac_fsusage_space = no; then | |||
272 | #ifdef HAVE_SYS_MOUNT_H | 243 | #ifdef HAVE_SYS_MOUNT_H |
273 | #include <sys/mount.h> | 244 | #include <sys/mount.h> |
274 | #endif | 245 | #endif |
275 | #ifdef HAVE_SYS_FS_TYPES_H | ||
276 | #include <sys/fs_types.h> | ||
277 | #endif | ||
278 | int | 246 | int |
279 | main () | 247 | main () |
280 | { | 248 | { |
281 | struct fs_data fsd; | 249 | struct statfs fsd; |
282 | /* Ultrix's statfs returns 1 for success, | 250 | fsd.f_fsize = 0; |
283 | 0 for not mounted, -1 for failure. */ | 251 | return statfs (".", &fsd) != 0; |
284 | return statfs (".", &fsd) != 1; | ||
285 | }]])], | 252 | }]])], |
286 | [fu_cv_sys_stat_fs_data=yes], | 253 | [fu_cv_sys_stat_statfs2_fsize=yes], |
287 | [fu_cv_sys_stat_fs_data=no], | 254 | [fu_cv_sys_stat_statfs2_fsize=no], |
288 | [fu_cv_sys_stat_fs_data=no])]) | 255 | [fu_cv_sys_stat_statfs2_fsize=no]) |
289 | AC_MSG_RESULT([$fu_cv_sys_stat_fs_data]) | 256 | ]) |
290 | if test $fu_cv_sys_stat_fs_data = yes; then | 257 | if test $fu_cv_sys_stat_statfs2_fsize = yes; then |
291 | ac_fsusage_space=yes | 258 | ac_fsusage_space=yes |
292 | AC_DEFINE([STAT_STATFS2_FS_DATA], [1], | 259 | AC_DEFINE([STAT_STATFS2_FSIZE], [1], |
293 | [ Define if statfs takes 2 args and the second argument has | 260 | [Define if statfs takes 2 args and struct statfs has a field named f_fsize. |
294 | type struct fs_data. (Ultrix)]) | 261 | (4.4BSD, NetBSD)]) |
262 | fi | ||
295 | fi | 263 | fi |
296 | fi | ||
297 | 264 | ||
298 | if test $ac_fsusage_space = no; then | 265 | AS_IF([test $ac_fsusage_space = yes], [$1], [$2]) |
299 | # SVR2 | ||
300 | # (AIX, HP-UX, OSF/1 already handled above.) | ||
301 | AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <sys/filsys.h> | ||
302 | ]])], | ||
303 | [AC_DEFINE([STAT_READ_FILSYS], [1], | ||
304 | [Define if there is no specific function for reading file systems usage | ||
305 | information and you have the <sys/filsys.h> header file. (SVR2)]) | ||
306 | ac_fsusage_space=yes]) | ||
307 | fi | ||
308 | |||
309 | AS_IF([test $ac_fsusage_space = yes], [$1], [$2]) | ||
310 | 266 | ||
311 | ]) | 267 | ]) |
312 | 268 | ||
@@ -316,18 +272,22 @@ AS_IF([test $ac_fsusage_space = yes], [$1], [$2]) | |||
316 | # enable the work-around code in fsusage.c. | 272 | # enable the work-around code in fsusage.c. |
317 | AC_DEFUN([gl_STATFS_TRUNCATES], | 273 | AC_DEFUN([gl_STATFS_TRUNCATES], |
318 | [ | 274 | [ |
319 | AC_MSG_CHECKING([for statfs that truncates block counts]) | 275 | AC_CACHE_CHECK([for statfs that truncates block counts], |
320 | AC_CACHE_VAL([fu_cv_sys_truncating_statfs], | 276 | [fu_cv_sys_truncating_statfs], |
321 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ | 277 | [AC_COMPILE_IFELSE( |
278 | [AC_LANG_PROGRAM([[ | ||
322 | #if !defined(sun) && !defined(__sun) | 279 | #if !defined(sun) && !defined(__sun) |
323 | choke -- this is a workaround for a Sun-specific problem | 280 | choke -- this is a workaround for a Sun-specific problem |
324 | #endif | 281 | #endif |
325 | #include <sys/types.h> | 282 | #include <sys/types.h> |
326 | #include <sys/vfs.h>]], | 283 | #include <sys/vfs.h> |
327 | [[struct statfs t; long c = *(t.f_spare); | 284 | ]], |
328 | if (c) return 0;]])], | 285 | [[struct statfs t; long c = *(t.f_spare); |
329 | [fu_cv_sys_truncating_statfs=yes], | 286 | if (c) return 0; |
330 | [fu_cv_sys_truncating_statfs=no])]) | 287 | ]])], |
288 | [fu_cv_sys_truncating_statfs=yes], | ||
289 | [fu_cv_sys_truncating_statfs=no]) | ||
290 | ]) | ||
331 | if test $fu_cv_sys_truncating_statfs = yes; then | 291 | if test $fu_cv_sys_truncating_statfs = yes; then |
332 | AC_DEFINE([STATFS_TRUNCATES_BLOCK_COUNTS], [1], | 292 | AC_DEFINE([STATFS_TRUNCATES_BLOCK_COUNTS], [1], |
333 | [Define if the block counts reported by statfs may be truncated to 2GB | 293 | [Define if the block counts reported by statfs may be truncated to 2GB |
@@ -335,13 +295,12 @@ choke -- this is a workaround for a Sun-specific problem | |||
335 | (SunOS 4.1.2, 4.1.3, and 4.1.3_U1 are reported to have this problem. | 295 | (SunOS 4.1.2, 4.1.3, and 4.1.3_U1 are reported to have this problem. |
336 | SunOS 4.1.1 seems not to be affected.)]) | 296 | SunOS 4.1.1 seems not to be affected.)]) |
337 | fi | 297 | fi |
338 | AC_MSG_RESULT([$fu_cv_sys_truncating_statfs]) | ||
339 | ]) | 298 | ]) |
340 | 299 | ||
341 | 300 | ||
342 | # Prerequisites of lib/fsusage.c not done by gl_FILE_SYSTEM_USAGE. | 301 | # Prerequisites of lib/fsusage.c not done by gl_FILE_SYSTEM_USAGE. |
343 | AC_DEFUN([gl_PREREQ_FSUSAGE_EXTRA], | 302 | AC_DEFUN([gl_PREREQ_FSUSAGE_EXTRA], |
344 | [ | 303 | [ |
345 | AC_CHECK_HEADERS([dustat.h sys/fs/s5param.h sys/filsys.h sys/statfs.h]) | 304 | AC_CHECK_HEADERS([sys/fs/s5param.h sys/statfs.h]) |
346 | gl_STATFS_TRUNCATES | 305 | gl_STATFS_TRUNCATES |
347 | ]) | 306 | ]) |
diff --git a/gl/m4/ftell.m4 b/gl/m4/ftell.m4 new file mode 100644 index 00000000..79f1aaf2 --- /dev/null +++ b/gl/m4/ftell.m4 | |||
@@ -0,0 +1,15 @@ | |||
1 | # ftell.m4 serial 3 | ||
2 | dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_FUNC_FTELL], | ||
8 | [ | ||
9 | AC_REQUIRE([gl_STDIO_H_DEFAULTS]) | ||
10 | AC_REQUIRE([gl_FUNC_FTELLO]) | ||
11 | dnl When ftello needs fixes, ftell needs them too. | ||
12 | if test $HAVE_FTELLO = 0 || test $REPLACE_FTELLO = 1; then | ||
13 | REPLACE_FTELL=1 | ||
14 | fi | ||
15 | ]) | ||
diff --git a/gl/m4/ftello.m4 b/gl/m4/ftello.m4 new file mode 100644 index 00000000..4901b168 --- /dev/null +++ b/gl/m4/ftello.m4 | |||
@@ -0,0 +1,151 @@ | |||
1 | # ftello.m4 serial 14 | ||
2 | dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_FUNC_FTELLO], | ||
8 | [ | ||
9 | AC_REQUIRE([gl_STDIO_H_DEFAULTS]) | ||
10 | AC_REQUIRE([AC_PROG_CC]) | ||
11 | AC_REQUIRE([gl_STDIN_LARGE_OFFSET]) | ||
12 | AC_REQUIRE([gl_SYS_TYPES_H]) | ||
13 | |||
14 | dnl Persuade glibc <stdio.h> to declare ftello(). | ||
15 | AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) | ||
16 | |||
17 | AC_CHECK_DECLS_ONCE([ftello]) | ||
18 | if test $ac_cv_have_decl_ftello = no; then | ||
19 | HAVE_DECL_FTELLO=0 | ||
20 | fi | ||
21 | |||
22 | AC_CACHE_CHECK([for ftello], [gl_cv_func_ftello], | ||
23 | [ | ||
24 | AC_LINK_IFELSE( | ||
25 | [AC_LANG_PROGRAM( | ||
26 | [[#include <stdio.h>]], | ||
27 | [[ftello (stdin);]])], | ||
28 | [gl_cv_func_ftello=yes], | ||
29 | [gl_cv_func_ftello=no]) | ||
30 | ]) | ||
31 | if test $gl_cv_func_ftello = no; then | ||
32 | HAVE_FTELLO=0 | ||
33 | else | ||
34 | if test $WINDOWS_64_BIT_OFF_T = 1; then | ||
35 | REPLACE_FTELLO=1 | ||
36 | fi | ||
37 | if test $gl_cv_var_stdin_large_offset = no; then | ||
38 | REPLACE_FTELLO=1 | ||
39 | fi | ||
40 | if test $REPLACE_FTELLO = 0; then | ||
41 | dnl Detect bug on Solaris. | ||
42 | dnl ftell and ftello produce incorrect results after putc that followed a | ||
43 | dnl getc call that reached EOF on Solaris. This is because the _IOREAD | ||
44 | dnl flag does not get cleared in this case, even though _IOWRT gets set, | ||
45 | dnl and ftell and ftello look whether the _IOREAD flag is set. | ||
46 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
47 | AC_CACHE_CHECK([whether ftello works], | ||
48 | [gl_cv_func_ftello_works], | ||
49 | [ | ||
50 | dnl Initial guess, used when cross-compiling or when /dev/tty cannot | ||
51 | dnl be opened. | ||
52 | changequote(,)dnl | ||
53 | case "$host_os" in | ||
54 | # Guess no on Solaris. | ||
55 | solaris*) gl_cv_func_ftello_works="guessing no" ;; | ||
56 | # Guess yes on native Windows. | ||
57 | mingw*) gl_cv_func_ftello_works="guessing yes" ;; | ||
58 | # Guess yes otherwise. | ||
59 | *) gl_cv_func_ftello_works="guessing yes" ;; | ||
60 | esac | ||
61 | changequote([,])dnl | ||
62 | AC_RUN_IFELSE( | ||
63 | [AC_LANG_SOURCE([[ | ||
64 | #include <stdio.h> | ||
65 | #include <stdlib.h> | ||
66 | #include <string.h> | ||
67 | #define TESTFILE "conftest.tmp" | ||
68 | int | ||
69 | main (void) | ||
70 | { | ||
71 | FILE *fp; | ||
72 | |||
73 | /* Create a file with some contents. */ | ||
74 | fp = fopen (TESTFILE, "w"); | ||
75 | if (fp == NULL) | ||
76 | return 70; | ||
77 | if (fwrite ("foogarsh", 1, 8, fp) < 8) | ||
78 | { fclose (fp); return 71; } | ||
79 | if (fclose (fp)) | ||
80 | return 72; | ||
81 | |||
82 | /* The file's contents is now "foogarsh". */ | ||
83 | |||
84 | /* Try writing after reading to EOF. */ | ||
85 | fp = fopen (TESTFILE, "r+"); | ||
86 | if (fp == NULL) | ||
87 | return 73; | ||
88 | if (fseek (fp, -1, SEEK_END)) | ||
89 | { fclose (fp); return 74; } | ||
90 | if (!(getc (fp) == 'h')) | ||
91 | { fclose (fp); return 1; } | ||
92 | if (!(getc (fp) == EOF)) | ||
93 | { fclose (fp); return 2; } | ||
94 | if (!(ftell (fp) == 8)) | ||
95 | { fclose (fp); return 3; } | ||
96 | if (!(ftell (fp) == 8)) | ||
97 | { fclose (fp); return 4; } | ||
98 | if (!(putc ('!', fp) == '!')) | ||
99 | { fclose (fp); return 5; } | ||
100 | if (!(ftell (fp) == 9)) | ||
101 | { fclose (fp); return 6; } | ||
102 | if (!(fclose (fp) == 0)) | ||
103 | return 7; | ||
104 | fp = fopen (TESTFILE, "r"); | ||
105 | if (fp == NULL) | ||
106 | return 75; | ||
107 | { | ||
108 | char buf[10]; | ||
109 | if (!(fread (buf, 1, 10, fp) == 9)) | ||
110 | { fclose (fp); return 10; } | ||
111 | if (!(memcmp (buf, "foogarsh!", 9) == 0)) | ||
112 | { fclose (fp); return 11; } | ||
113 | } | ||
114 | if (!(fclose (fp) == 0)) | ||
115 | return 12; | ||
116 | |||
117 | /* The file's contents is now "foogarsh!". */ | ||
118 | |||
119 | return 0; | ||
120 | }]])], | ||
121 | [gl_cv_func_ftello_works=yes], | ||
122 | [gl_cv_func_ftello_works=no], [:]) | ||
123 | ]) | ||
124 | case "$gl_cv_func_ftello_works" in | ||
125 | *yes) ;; | ||
126 | *) | ||
127 | REPLACE_FTELLO=1 | ||
128 | AC_DEFINE([FTELLO_BROKEN_AFTER_SWITCHING_FROM_READ_TO_WRITE], [1], | ||
129 | [Define to 1 if the system's ftello function has the Solaris bug.]) | ||
130 | ;; | ||
131 | esac | ||
132 | fi | ||
133 | if test $REPLACE_FTELLO = 0; then | ||
134 | dnl Detect bug on macOS >= 10.15. | ||
135 | gl_FUNC_UNGETC_WORKS | ||
136 | if test $gl_ftello_broken_after_ungetc = yes; then | ||
137 | REPLACE_FTELLO=1 | ||
138 | AC_DEFINE([FTELLO_BROKEN_AFTER_UNGETC], [1], | ||
139 | [Define to 1 if the system's ftello function has the macOS bug.]) | ||
140 | fi | ||
141 | fi | ||
142 | fi | ||
143 | ]) | ||
144 | |||
145 | # Prerequisites of lib/ftello.c. | ||
146 | AC_DEFUN([gl_PREREQ_FTELLO], | ||
147 | [ | ||
148 | dnl Native Windows has the function _ftelli64. mingw hides it, but mingw64 | ||
149 | dnl makes it usable again. | ||
150 | AC_CHECK_FUNCS([_ftelli64]) | ||
151 | ]) | ||
diff --git a/gl/m4/getaddrinfo.m4 b/gl/m4/getaddrinfo.m4 index 1d631f8c..15f09ffb 100644 --- a/gl/m4/getaddrinfo.m4 +++ b/gl/m4/getaddrinfo.m4 | |||
@@ -1,14 +1,13 @@ | |||
1 | # getaddrinfo.m4 serial 30 | 1 | # getaddrinfo.m4 serial 34 |
2 | dnl Copyright (C) 2004-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2004-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | AC_DEFUN([gl_GETADDRINFO], | 7 | AC_DEFUN([gl_GETADDRINFO], |
8 | [ | 8 | [ |
9 | AC_REQUIRE([gl_HEADER_SYS_SOCKET])dnl for HAVE_SYS_SOCKET_H, HAVE_WINSOCK2_H | 9 | AC_REQUIRE([gl_SYS_SOCKET_H])dnl for HAVE_SYS_SOCKET_H, HAVE_WINSOCK2_H |
10 | AC_REQUIRE([gl_HEADER_NETDB])dnl for HAVE_NETDB_H | 10 | AC_REQUIRE([gl_NETDB_H])dnl for HAVE_NETDB_H |
11 | AC_MSG_NOTICE([checking how to do getaddrinfo, freeaddrinfo and getnameinfo]) | ||
12 | GETADDRINFO_LIB= | 11 | GETADDRINFO_LIB= |
13 | gai_saved_LIBS="$LIBS" | 12 | gai_saved_LIBS="$LIBS" |
14 | 13 | ||
@@ -55,10 +54,40 @@ AC_DEFUN([gl_GETADDRINFO], | |||
55 | if test "$gl_cv_w32_getaddrinfo" = "yes"; then | 54 | if test "$gl_cv_w32_getaddrinfo" = "yes"; then |
56 | GETADDRINFO_LIB="-lws2_32" | 55 | GETADDRINFO_LIB="-lws2_32" |
57 | LIBS="$gai_saved_LIBS $GETADDRINFO_LIB" | 56 | LIBS="$gai_saved_LIBS $GETADDRINFO_LIB" |
57 | dnl Check for correct signature, in particular for a cdecl-compatible | ||
58 | dnl calling convention. | ||
59 | AC_CACHE_CHECK([for getaddrinfo with POSIX signature], | ||
60 | [gl_cv_func_getaddrinfo_posix_signature], | ||
61 | [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ | ||
62 | #include <sys/types.h> | ||
63 | #ifdef HAVE_SYS_SOCKET_H | ||
64 | #include <sys/socket.h> | ||
65 | #endif | ||
66 | #ifdef HAVE_NETDB_H | ||
67 | #include <netdb.h> | ||
68 | #endif | ||
69 | #ifdef HAVE_WS2TCPIP_H | ||
70 | #include <ws2tcpip.h> | ||
71 | #endif | ||
72 | #include <stddef.h> | ||
73 | extern | ||
74 | #ifdef __cplusplus | ||
75 | "C" | ||
76 | #endif | ||
77 | int getaddrinfo (const char *, const char *, const struct addrinfo *, struct addrinfo **); | ||
78 | ]])], | ||
79 | [gl_cv_func_getaddrinfo_posix_signature=yes], | ||
80 | [gl_cv_func_getaddrinfo_posix_signature=no]) | ||
81 | ]) | ||
82 | if test $gl_cv_func_getaddrinfo_posix_signature = no; then | ||
83 | REPLACE_GETADDRINFO=1 | ||
84 | fi | ||
58 | else | 85 | else |
59 | HAVE_GETADDRINFO=0 | 86 | HAVE_GETADDRINFO=0 |
60 | fi | 87 | fi |
61 | fi | 88 | fi |
89 | AC_DEFINE_UNQUOTED([HAVE_GETADDRINFO], [$HAVE_GETADDRINFO], | ||
90 | [Define to 1 if getaddrinfo exists, or to 0 otherwise.]) | ||
62 | 91 | ||
63 | # We can't use AC_REPLACE_FUNCS here because gai_strerror may be an | 92 | # We can't use AC_REPLACE_FUNCS here because gai_strerror may be an |
64 | # inline function declared in ws2tcpip.h, so we need to get that | 93 | # inline function declared in ws2tcpip.h, so we need to get that |
@@ -127,13 +156,13 @@ const char *gai_strerror(int);]])], | |||
127 | # Prerequisites of lib/netdb.in.h and lib/getaddrinfo.c. | 156 | # Prerequisites of lib/netdb.in.h and lib/getaddrinfo.c. |
128 | AC_DEFUN([gl_PREREQ_GETADDRINFO], [ | 157 | AC_DEFUN([gl_PREREQ_GETADDRINFO], [ |
129 | AC_REQUIRE([gl_NETDB_H_DEFAULTS]) | 158 | AC_REQUIRE([gl_NETDB_H_DEFAULTS]) |
130 | AC_REQUIRE([gl_HEADER_SYS_SOCKET])dnl for HAVE_SYS_SOCKET_H, HAVE_WINSOCK2_H | 159 | AC_REQUIRE([gl_SYS_SOCKET_H])dnl for HAVE_SYS_SOCKET_H, HAVE_WINSOCK2_H |
131 | AC_REQUIRE([gl_HOSTENT]) dnl for HOSTENT_LIB | 160 | AC_REQUIRE([gl_HOSTENT]) dnl for HOSTENT_LIB |
132 | AC_REQUIRE([gl_SERVENT]) dnl for SERVENT_LIB | 161 | AC_REQUIRE([gl_SERVENT]) dnl for SERVENT_LIB |
133 | AC_REQUIRE([gl_FUNC_INET_NTOP]) dnl for INET_NTOP_LIB | 162 | AC_REQUIRE([gl_FUNC_INET_NTOP]) dnl for INET_NTOP_LIB |
134 | AC_REQUIRE([AC_C_RESTRICT]) | 163 | AC_REQUIRE([AC_C_RESTRICT]) |
135 | AC_REQUIRE([gl_SOCKET_FAMILIES]) | 164 | AC_REQUIRE([gl_SOCKET_FAMILIES]) |
136 | AC_REQUIRE([gl_HEADER_SYS_SOCKET]) | 165 | AC_REQUIRE([gl_SYS_SOCKET_H]) |
137 | AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) | 166 | AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) |
138 | 167 | ||
139 | dnl Including sys/socket.h is wrong for Windows, but Windows does not | 168 | dnl Including sys/socket.h is wrong for Windows, but Windows does not |
diff --git a/gl/m4/getdelim.m4 b/gl/m4/getdelim.m4 new file mode 100644 index 00000000..9aaed202 --- /dev/null +++ b/gl/m4/getdelim.m4 | |||
@@ -0,0 +1,111 @@ | |||
1 | # getdelim.m4 serial 16 | ||
2 | |||
3 | dnl Copyright (C) 2005-2007, 2009-2023 Free Software Foundation, Inc. | ||
4 | dnl | ||
5 | dnl This file is free software; the Free Software Foundation | ||
6 | dnl gives unlimited permission to copy and/or distribute it, | ||
7 | dnl with or without modifications, as long as this notice is preserved. | ||
8 | |||
9 | AC_PREREQ([2.59]) | ||
10 | |||
11 | AC_DEFUN([gl_FUNC_GETDELIM], | ||
12 | [ | ||
13 | AC_REQUIRE([gl_STDIO_H_DEFAULTS]) | ||
14 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
15 | |||
16 | dnl Persuade glibc <stdio.h> to declare getdelim(). | ||
17 | AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) | ||
18 | |||
19 | AC_CHECK_DECLS_ONCE([getdelim]) | ||
20 | |||
21 | AC_CHECK_FUNCS_ONCE([getdelim]) | ||
22 | if test $ac_cv_func_getdelim = yes; then | ||
23 | HAVE_GETDELIM=1 | ||
24 | dnl Found it in some library. Verify that it works. | ||
25 | AC_CACHE_CHECK([for working getdelim function], | ||
26 | [gl_cv_func_working_getdelim], | ||
27 | [case "$host_os" in | ||
28 | darwin*) | ||
29 | dnl On macOS 10.13, valgrind detected an out-of-bounds read during | ||
30 | dnl the GNU sed test suite: | ||
31 | dnl Invalid read of size 16 | ||
32 | dnl at 0x100EE6A05: _platform_memchr$VARIANT$Base (in /usr/lib/system/libsystem_platform.dylib) | ||
33 | dnl by 0x100B7B0BD: getdelim (in /usr/lib/system/libsystem_c.dylib) | ||
34 | dnl by 0x10000B0BE: ck_getdelim (utils.c:254) | ||
35 | gl_cv_func_working_getdelim=no ;; | ||
36 | *) | ||
37 | echo fooNbarN | tr -d '\012' | tr N '\012' > conftest.data | ||
38 | AC_RUN_IFELSE([AC_LANG_SOURCE([[ | ||
39 | # include <stdio.h> | ||
40 | # include <stdlib.h> | ||
41 | # include <string.h> | ||
42 | int main () | ||
43 | { | ||
44 | FILE *in = fopen ("./conftest.data", "r"); | ||
45 | if (!in) | ||
46 | return 1; | ||
47 | { | ||
48 | /* Test result for a NULL buffer and a zero size. | ||
49 | Based on a test program from Karl Heuer. */ | ||
50 | char *line = NULL; | ||
51 | size_t siz = 0; | ||
52 | int len = getdelim (&line, &siz, '\n', in); | ||
53 | if (!(len == 4 && line && strcmp (line, "foo\n") == 0)) | ||
54 | { free (line); fclose (in); return 2; } | ||
55 | free (line); | ||
56 | } | ||
57 | { | ||
58 | /* Test result for a NULL buffer and a non-zero size. | ||
59 | This crashes on FreeBSD 8.0. */ | ||
60 | char *line = NULL; | ||
61 | size_t siz = (size_t)(~0) / 4; | ||
62 | if (getdelim (&line, &siz, '\n', in) == -1) | ||
63 | { fclose (in); return 3; } | ||
64 | free (line); | ||
65 | } | ||
66 | fclose (in); | ||
67 | return 0; | ||
68 | } | ||
69 | ]])], | ||
70 | [gl_cv_func_working_getdelim=yes], | ||
71 | [gl_cv_func_working_getdelim=no], | ||
72 | [dnl We're cross compiling. | ||
73 | dnl Guess it works on glibc2 systems and musl systems. | ||
74 | AC_EGREP_CPP([Lucky GNU user], | ||
75 | [ | ||
76 | #include <features.h> | ||
77 | #ifdef __GNU_LIBRARY__ | ||
78 | #if (__GLIBC__ >= 2) && !defined __UCLIBC__ | ||
79 | Lucky GNU user | ||
80 | #endif | ||
81 | #endif | ||
82 | ], | ||
83 | [gl_cv_func_working_getdelim="guessing yes"], | ||
84 | [case "$host_os" in | ||
85 | *-musl*) gl_cv_func_working_getdelim="guessing yes" ;; | ||
86 | *) gl_cv_func_working_getdelim="$gl_cross_guess_normal" ;; | ||
87 | esac | ||
88 | ]) | ||
89 | ]) | ||
90 | ;; | ||
91 | esac | ||
92 | ]) | ||
93 | case "$gl_cv_func_working_getdelim" in | ||
94 | *yes) ;; | ||
95 | *) REPLACE_GETDELIM=1 ;; | ||
96 | esac | ||
97 | else | ||
98 | HAVE_GETDELIM=0 | ||
99 | fi | ||
100 | |||
101 | if test $ac_cv_have_decl_getdelim = no; then | ||
102 | HAVE_DECL_GETDELIM=0 | ||
103 | fi | ||
104 | ]) | ||
105 | |||
106 | # Prerequisites of lib/getdelim.c. | ||
107 | AC_DEFUN([gl_PREREQ_GETDELIM], | ||
108 | [ | ||
109 | AC_CHECK_FUNCS([flockfile funlockfile]) | ||
110 | AC_CHECK_DECLS([getc_unlocked]) | ||
111 | ]) | ||
diff --git a/gl/m4/getdtablesize.m4 b/gl/m4/getdtablesize.m4 new file mode 100644 index 00000000..8bcda905 --- /dev/null +++ b/gl/m4/getdtablesize.m4 | |||
@@ -0,0 +1,63 @@ | |||
1 | # getdtablesize.m4 serial 8 | ||
2 | dnl Copyright (C) 2008-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_FUNC_GETDTABLESIZE], | ||
8 | [ | ||
9 | AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) | ||
10 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
11 | AC_CHECK_FUNCS_ONCE([getdtablesize]) | ||
12 | AC_CHECK_DECLS_ONCE([getdtablesize]) | ||
13 | if test $ac_cv_func_getdtablesize = yes && | ||
14 | test $ac_cv_have_decl_getdtablesize = yes; then | ||
15 | AC_CACHE_CHECK([whether getdtablesize works], | ||
16 | [gl_cv_func_getdtablesize_works], | ||
17 | [dnl There are two concepts: the "maximum possible file descriptor value + 1" | ||
18 | dnl and the "maximum number of open file descriptors in a process". | ||
19 | dnl Per SUSv2 and POSIX, getdtablesize() should return the first one. | ||
20 | dnl On most platforms, the first and the second concept are the same. | ||
21 | dnl On OpenVMS, however, they are different and getdtablesize() returns | ||
22 | dnl the second one; thus the test below fails. But we don't care | ||
23 | dnl because there's no good way to write a replacement getdtablesize(). | ||
24 | case "$host_os" in | ||
25 | vms*) gl_cv_func_getdtablesize_works="no (limitation)" ;; | ||
26 | *) | ||
27 | dnl Cygwin 1.7.25 automatically increases the RLIMIT_NOFILE soft | ||
28 | dnl limit up to an unchangeable hard limit; all other platforms | ||
29 | dnl correctly require setrlimit before getdtablesize() can report | ||
30 | dnl a larger value. | ||
31 | AC_RUN_IFELSE([ | ||
32 | AC_LANG_PROGRAM( | ||
33 | [[#include <unistd.h>] | ||
34 | GL_MDA_DEFINES | ||
35 | ], | ||
36 | [[int size = getdtablesize(); | ||
37 | if (dup2 (0, getdtablesize()) != -1) | ||
38 | return 1; | ||
39 | if (size != getdtablesize()) | ||
40 | return 2; | ||
41 | ]])], | ||
42 | [gl_cv_func_getdtablesize_works=yes], | ||
43 | [gl_cv_func_getdtablesize_works=no], | ||
44 | [case "$host_os" in | ||
45 | cygwin*) # on cygwin 1.5.25, getdtablesize() automatically grows | ||
46 | gl_cv_func_getdtablesize_works="guessing no" ;; | ||
47 | *) gl_cv_func_getdtablesize_works="guessing yes" ;; | ||
48 | esac | ||
49 | ]) | ||
50 | ;; | ||
51 | esac | ||
52 | ]) | ||
53 | case "$gl_cv_func_getdtablesize_works" in | ||
54 | *yes | "no (limitation)") ;; | ||
55 | *) REPLACE_GETDTABLESIZE=1 ;; | ||
56 | esac | ||
57 | else | ||
58 | HAVE_GETDTABLESIZE=0 | ||
59 | fi | ||
60 | ]) | ||
61 | |||
62 | # Prerequisites of lib/getdtablesize.c. | ||
63 | AC_DEFUN([gl_PREREQ_GETDTABLESIZE], [:]) | ||
diff --git a/gl/m4/gethostname.m4 b/gl/m4/gethostname.m4 index 7413f9e3..63f5f636 100644 --- a/gl/m4/gethostname.m4 +++ b/gl/m4/gethostname.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # gethostname.m4 serial 13 | 1 | # gethostname.m4 serial 15 |
2 | dnl Copyright (C) 2002, 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2002, 2008-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -48,7 +48,7 @@ AC_DEFUN([gl_PREREQ_HOST_NAME_MAX], [ | |||
48 | dnl - On most Unix systems, use MAXHOSTNAMELEN from <sys/param.h> instead. | 48 | dnl - On most Unix systems, use MAXHOSTNAMELEN from <sys/param.h> instead. |
49 | dnl - On Solaris, Cygwin, BeOS, use MAXHOSTNAMELEN from <netdb.h> instead. | 49 | dnl - On Solaris, Cygwin, BeOS, use MAXHOSTNAMELEN from <netdb.h> instead. |
50 | dnl - On mingw, use 256, because | 50 | dnl - On mingw, use 256, because |
51 | dnl <http://msdn.microsoft.com/en-us/library/ms738527.aspx> says: | 51 | dnl <https://docs.microsoft.com/en-us/windows/desktop/api/winsock/nf-winsock-gethostname> says: |
52 | dnl "if a buffer of 256 bytes is passed in the name parameter and | 52 | dnl "if a buffer of 256 bytes is passed in the name parameter and |
53 | dnl the namelen parameter is set to 256, the buffer size will always | 53 | dnl the namelen parameter is set to 256, the buffer size will always |
54 | dnl be adequate." | 54 | dnl be adequate." |
@@ -74,7 +74,7 @@ lucky | |||
74 | dnl mingw. | 74 | dnl mingw. |
75 | gl_cv_decl_HOST_NAME_MAX=256 | 75 | gl_cv_decl_HOST_NAME_MAX=256 |
76 | else | 76 | else |
77 | _AC_COMPUTE_INT([MAXHOSTNAMELEN], [gl_cv_decl_HOST_NAME_MAX], [ | 77 | AC_COMPUTE_INT([gl_cv_decl_HOST_NAME_MAX], [MAXHOSTNAMELEN], [ |
78 | #include <sys/types.h> | 78 | #include <sys/types.h> |
79 | #if HAVE_SYS_PARAM_H | 79 | #if HAVE_SYS_PARAM_H |
80 | # include <sys/param.h> | 80 | # include <sys/param.h> |
diff --git a/gl/m4/getline.m4 b/gl/m4/getline.m4 new file mode 100644 index 00000000..03569f06 --- /dev/null +++ b/gl/m4/getline.m4 | |||
@@ -0,0 +1,109 @@ | |||
1 | # getline.m4 serial 30 | ||
2 | |||
3 | dnl Copyright (C) 1998-2003, 2005-2007, 2009-2023 Free Software Foundation, | ||
4 | dnl Inc. | ||
5 | dnl | ||
6 | dnl This file is free software; the Free Software Foundation | ||
7 | dnl gives unlimited permission to copy and/or distribute it, | ||
8 | dnl with or without modifications, as long as this notice is preserved. | ||
9 | |||
10 | AC_PREREQ([2.59]) | ||
11 | |||
12 | dnl See if there's a working, system-supplied version of the getline function. | ||
13 | dnl We can't just do AC_REPLACE_FUNCS([getline]) because some systems | ||
14 | dnl have a function by that name in -linet that doesn't have anything | ||
15 | dnl to do with the function we need. | ||
16 | AC_DEFUN([gl_FUNC_GETLINE], | ||
17 | [ | ||
18 | AC_REQUIRE([gl_STDIO_H_DEFAULTS]) | ||
19 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | ||
20 | |||
21 | dnl Persuade glibc <stdio.h> to declare getline(). | ||
22 | AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) | ||
23 | |||
24 | AC_CHECK_DECLS_ONCE([getline]) | ||
25 | |||
26 | gl_getline_needs_run_time_check=no | ||
27 | AC_CHECK_FUNC([getline], | ||
28 | [dnl Found it in some library. Verify that it works. | ||
29 | gl_getline_needs_run_time_check=yes], | ||
30 | [am_cv_func_working_getline=no]) | ||
31 | if test $gl_getline_needs_run_time_check = yes; then | ||
32 | AC_CACHE_CHECK([for working getline function], | ||
33 | [am_cv_func_working_getline], | ||
34 | [echo fooNbarN | tr -d '\012' | tr N '\012' > conftest.data | ||
35 | AC_RUN_IFELSE([AC_LANG_SOURCE([[ | ||
36 | # include <stdio.h> | ||
37 | # include <stdlib.h> | ||
38 | # include <string.h> | ||
39 | int main () | ||
40 | { | ||
41 | FILE *in = fopen ("./conftest.data", "r"); | ||
42 | if (!in) | ||
43 | return 1; | ||
44 | { | ||
45 | /* Test result for a NULL buffer and a zero size. | ||
46 | Based on a test program from Karl Heuer. */ | ||
47 | char *line = NULL; | ||
48 | size_t siz = 0; | ||
49 | int len = getline (&line, &siz, in); | ||
50 | if (!(len == 4 && line && strcmp (line, "foo\n") == 0)) | ||
51 | { free (line); fclose (in); return 2; } | ||
52 | free (line); | ||
53 | } | ||
54 | { | ||
55 | /* Test result for a NULL buffer and a non-zero size. | ||
56 | This crashes on FreeBSD 8.0. */ | ||
57 | char *line = NULL; | ||
58 | size_t siz = (size_t)(~0) / 4; | ||
59 | if (getline (&line, &siz, in) == -1) | ||
60 | { fclose (in); return 3; } | ||
61 | free (line); | ||
62 | } | ||
63 | fclose (in); | ||
64 | return 0; | ||
65 | } | ||
66 | ]])], | ||
67 | [am_cv_func_working_getline=yes], | ||
68 | [am_cv_func_working_getline=no], | ||
69 | [dnl We're cross compiling. | ||
70 | dnl Guess it works on glibc2 systems and musl systems. | ||
71 | AC_EGREP_CPP([Lucky GNU user], | ||
72 | [ | ||
73 | #include <features.h> | ||
74 | #ifdef __GNU_LIBRARY__ | ||
75 | #if (__GLIBC__ >= 2) && !defined __UCLIBC__ | ||
76 | Lucky GNU user | ||
77 | #endif | ||
78 | #endif | ||
79 | ], | ||
80 | [am_cv_func_working_getline="guessing yes"], | ||
81 | [case "$host_os" in | ||
82 | *-musl*) am_cv_func_working_getline="guessing yes" ;; | ||
83 | *) am_cv_func_working_getline="$gl_cross_guess_normal" ;; | ||
84 | esac | ||
85 | ]) | ||
86 | ]) | ||
87 | ]) | ||
88 | fi | ||
89 | |||
90 | if test $ac_cv_have_decl_getline = no; then | ||
91 | HAVE_DECL_GETLINE=0 | ||
92 | fi | ||
93 | |||
94 | case "$am_cv_func_working_getline" in | ||
95 | *yes) ;; | ||
96 | *) | ||
97 | dnl Set REPLACE_GETLINE always: Even if we have not found the broken | ||
98 | dnl getline function among $LIBS, it may exist in libinet and the | ||
99 | dnl executable may be linked with -linet. | ||
100 | REPLACE_GETLINE=1 | ||
101 | ;; | ||
102 | esac | ||
103 | ]) | ||
104 | |||
105 | # Prerequisites of lib/getline.c. | ||
106 | AC_DEFUN([gl_PREREQ_GETLINE], | ||
107 | [ | ||
108 | : | ||
109 | ]) | ||
diff --git a/gl/m4/getloadavg.m4 b/gl/m4/getloadavg.m4 index 611372aa..79e420ba 100644 --- a/gl/m4/getloadavg.m4 +++ b/gl/m4/getloadavg.m4 | |||
@@ -1,13 +1,13 @@ | |||
1 | # Check for getloadavg. | 1 | # Check for getloadavg. |
2 | 2 | ||
3 | # Copyright (C) 1992-1996, 1999-2000, 2002-2003, 2006, 2008-2013 Free Software | 3 | # Copyright (C) 1992-1996, 1999-2000, 2002-2003, 2006, 2008-2023 Free Software |
4 | # Foundation, Inc. | 4 | # Foundation, Inc. |
5 | 5 | ||
6 | # This file is free software; the Free Software Foundation | 6 | # This file is free software; the Free Software Foundation |
7 | # gives unlimited permission to copy and/or distribute it, | 7 | # gives unlimited permission to copy and/or distribute it, |
8 | # with or without modifications, as long as this notice is preserved. | 8 | # with or without modifications, as long as this notice is preserved. |
9 | 9 | ||
10 | #serial 6 | 10 | #serial 10 |
11 | 11 | ||
12 | # Autoconf defines AC_FUNC_GETLOADAVG, but that is obsolescent. | 12 | # Autoconf defines AC_FUNC_GETLOADAVG, but that is obsolescent. |
13 | # New applications should use gl_GETLOADAVG instead. | 13 | # New applications should use gl_GETLOADAVG instead. |
@@ -22,7 +22,7 @@ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) | |||
22 | 22 | ||
23 | gl_save_LIBS=$LIBS | 23 | gl_save_LIBS=$LIBS |
24 | 24 | ||
25 | # getloadvg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0, | 25 | # getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0, |
26 | # NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7. | 26 | # NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7. |
27 | HAVE_GETLOADAVG=1 | 27 | HAVE_GETLOADAVG=1 |
28 | AC_CHECK_FUNC([getloadavg], [], | 28 | AC_CHECK_FUNC([getloadavg], [], |
@@ -45,7 +45,9 @@ AC_CHECK_FUNC([getloadavg], [], | |||
45 | # There is a commonly available library for RS/6000 AIX. | 45 | # There is a commonly available library for RS/6000 AIX. |
46 | # Since it is not a standard part of AIX, it might be installed locally. | 46 | # Since it is not a standard part of AIX, it might be installed locally. |
47 | gl_getloadavg_LIBS=$LIBS | 47 | gl_getloadavg_LIBS=$LIBS |
48 | LIBS="-L/usr/local/lib $LIBS" | 48 | if test $cross_compiling != yes; then |
49 | LIBS="-L/usr/local/lib $LIBS" | ||
50 | fi | ||
49 | AC_CHECK_LIB([getloadavg], [getloadavg], | 51 | AC_CHECK_LIB([getloadavg], [getloadavg], |
50 | [LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes], | 52 | [LIBS="-lgetloadavg $LIBS" gl_func_getloadavg_done=yes], |
51 | [LIBS=$gl_getloadavg_LIBS]) | 53 | [LIBS=$gl_getloadavg_LIBS]) |
@@ -92,6 +94,9 @@ else | |||
92 | fi | 94 | fi |
93 | AC_CHECK_DECL([getloadavg], [], [HAVE_DECL_GETLOADAVG=0], | 95 | AC_CHECK_DECL([getloadavg], [], [HAVE_DECL_GETLOADAVG=0], |
94 | [[#if HAVE_SYS_LOADAVG_H | 96 | [[#if HAVE_SYS_LOADAVG_H |
97 | /* OpenIndiana has a bug: <sys/time.h> must be included before | ||
98 | <sys/loadavg.h>. */ | ||
99 | # include <sys/time.h> | ||
95 | # include <sys/loadavg.h> | 100 | # include <sys/loadavg.h> |
96 | #endif | 101 | #endif |
97 | #include <stdlib.h>]]) | 102 | #include <stdlib.h>]]) |
@@ -105,7 +110,7 @@ AC_DEFUN([gl_PREREQ_GETLOADAVG], | |||
105 | [ | 110 | [ |
106 | # Figure out what our getloadavg.c needs. | 111 | # Figure out what our getloadavg.c needs. |
107 | 112 | ||
108 | AC_CHECK_HEADERS_ONCE([sys/param.h]) | 113 | AC_CHECK_HEADERS_ONCE([sys/param.h unistd.h]) |
109 | 114 | ||
110 | # On HPUX9, an unprivileged user can get load averages this way. | 115 | # On HPUX9, an unprivileged user can get load averages this way. |
111 | if test $gl_func_getloadavg_done = no; then | 116 | if test $gl_func_getloadavg_done = no; then |
@@ -142,7 +147,7 @@ fi | |||
142 | AC_CHECK_HEADERS([nlist.h], | 147 | AC_CHECK_HEADERS([nlist.h], |
143 | [AC_CHECK_MEMBERS([struct nlist.n_un.n_name], | 148 | [AC_CHECK_MEMBERS([struct nlist.n_un.n_name], |
144 | [], [], | 149 | [], [], |
145 | [@%:@include <nlist.h>]) | 150 | [#include <nlist.h>]) |
146 | AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <nlist.h>]], | 151 | AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <nlist.h>]], |
147 | [[struct nlist x; | 152 | [[struct nlist x; |
148 | #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME | 153 | #ifdef HAVE_STRUCT_NLIST_N_UN_N_NAME |
diff --git a/gl/m4/getopt.m4 b/gl/m4/getopt.m4 index 50f45091..7981a095 100644 --- a/gl/m4/getopt.m4 +++ b/gl/m4/getopt.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # getopt.m4 serial 44 | 1 | # getopt.m4 serial 48 |
2 | dnl Copyright (C) 2002-2006, 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2002-2006, 2008-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -21,6 +21,8 @@ AC_DEFUN([gl_FUNC_GETOPT_POSIX], | |||
21 | REPLACE_GETOPT=1 | 21 | REPLACE_GETOPT=1 |
22 | fi | 22 | fi |
23 | ]) | 23 | ]) |
24 | GL_GENERATE_GETOPT_H=false | ||
25 | GL_GENERATE_GETOPT_CDEFS_H=false | ||
24 | if test $REPLACE_GETOPT = 1; then | 26 | if test $REPLACE_GETOPT = 1; then |
25 | dnl Arrange for getopt.h to be created. | 27 | dnl Arrange for getopt.h to be created. |
26 | gl_GETOPT_SUBSTITUTE_HEADER | 28 | gl_GETOPT_SUBSTITUTE_HEADER |
@@ -32,9 +34,16 @@ AC_DEFUN([gl_FUNC_GETOPT_POSIX], | |||
32 | # getopt_long_only. | 34 | # getopt_long_only. |
33 | AC_DEFUN([gl_FUNC_GETOPT_GNU], | 35 | AC_DEFUN([gl_FUNC_GETOPT_GNU], |
34 | [ | 36 | [ |
37 | dnl Set the variable gl_getopt_required, so that all invocations of | ||
38 | dnl gl_GETOPT_CHECK_HEADERS in the scope of the current configure file | ||
39 | dnl will check for getopt with GNU extensions. | ||
40 | dnl This means that if one gnulib-tool invocation requests getopt-posix | ||
41 | dnl and another gnulib-tool invocation requests getopt-gnu, it is as if | ||
42 | dnl both had requested getopt-gnu. | ||
35 | m4_divert_text([INIT_PREPARE], [gl_getopt_required=GNU]) | 43 | m4_divert_text([INIT_PREPARE], [gl_getopt_required=GNU]) |
36 | 44 | ||
37 | AC_REQUIRE([gl_FUNC_GETOPT_POSIX]) | 45 | dnl No need to invoke gl_FUNC_GETOPT_POSIX here; this is automatically |
46 | dnl done through the module dependency getopt-gnu -> getopt-posix. | ||
38 | ]) | 47 | ]) |
39 | 48 | ||
40 | # Determine whether to replace the entire getopt facility. | 49 | # Determine whether to replace the entire getopt facility. |
@@ -295,8 +304,10 @@ dnl is ambiguous with environment values that contain newlines. | |||
295 | ]])], | 304 | ]])], |
296 | [gl_cv_func_getopt_gnu=yes], | 305 | [gl_cv_func_getopt_gnu=yes], |
297 | [gl_cv_func_getopt_gnu=no], | 306 | [gl_cv_func_getopt_gnu=no], |
298 | [dnl Cross compiling. Assume the worst, even on glibc platforms. | 307 | [dnl Cross compiling. |
299 | gl_cv_func_getopt_gnu="guessing no" | 308 | dnl Assume the worst, even on glibc platforms. |
309 | dnl But obey --enable-cross-guesses. | ||
310 | gl_cv_func_getopt_gnu="$gl_cross_guess_normal" | ||
300 | ]) | 311 | ]) |
301 | case $gl_had_POSIXLY_CORRECT in | 312 | case $gl_had_POSIXLY_CORRECT in |
302 | exported) ;; | 313 | exported) ;; |
@@ -354,15 +365,17 @@ dnl is ambiguous with environment values that contain newlines. | |||
354 | 365 | ||
355 | AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER], | 366 | AC_DEFUN([gl_GETOPT_SUBSTITUTE_HEADER], |
356 | [ | 367 | [ |
357 | GETOPT_H=getopt.h | 368 | AC_CHECK_HEADERS_ONCE([sys/cdefs.h]) |
369 | if test $ac_cv_header_sys_cdefs_h = yes; then | ||
370 | HAVE_SYS_CDEFS_H=1 | ||
371 | else | ||
372 | HAVE_SYS_CDEFS_H=0 | ||
373 | fi | ||
374 | AC_SUBST([HAVE_SYS_CDEFS_H]) | ||
375 | |||
358 | AC_DEFINE([__GETOPT_PREFIX], [[rpl_]], | 376 | AC_DEFINE([__GETOPT_PREFIX], [[rpl_]], |
359 | [Define to rpl_ if the getopt replacement functions and variables | 377 | [Define to rpl_ if the getopt replacement functions and variables |
360 | should be used.]) | 378 | should be used.]) |
361 | AC_SUBST([GETOPT_H]) | 379 | GL_GENERATE_GETOPT_H=true |
362 | ]) | 380 | GL_GENERATE_GETOPT_CDEFS_H=true |
363 | |||
364 | # Prerequisites of lib/getopt*. | ||
365 | AC_DEFUN([gl_PREREQ_GETOPT], | ||
366 | [ | ||
367 | AC_CHECK_DECLS_ONCE([getenv]) | ||
368 | ]) | 381 | ]) |
diff --git a/gl/m4/getprogname.m4 b/gl/m4/getprogname.m4 new file mode 100644 index 00000000..b67c527c --- /dev/null +++ b/gl/m4/getprogname.m4 | |||
@@ -0,0 +1,43 @@ | |||
1 | # getprogname.m4 - check for getprogname or replacements for it | ||
2 | |||
3 | # Copyright (C) 2016-2023 Free Software Foundation, Inc. | ||
4 | # This file is free software; the Free Software Foundation | ||
5 | # gives unlimited permission to copy and/or distribute it, | ||
6 | # with or without modifications, as long as this notice is preserved. | ||
7 | |||
8 | # serial 4 | ||
9 | |||
10 | AC_DEFUN([gl_FUNC_GETPROGNAME], | ||
11 | [ | ||
12 | AC_CHECK_FUNCS_ONCE([getprogname getexecname]) | ||
13 | AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) | ||
14 | ac_found=0 | ||
15 | AC_CHECK_DECLS([program_invocation_name], [ac_found=1], [], | ||
16 | [#include <errno.h>]) | ||
17 | AC_CHECK_DECLS([program_invocation_short_name], [ac_found=1], [], | ||
18 | [#include <errno.h>]) | ||
19 | AC_CHECK_DECLS([__argv], [ac_found=1], [], [#include <stdlib.h>]) | ||
20 | |||
21 | # Incur the cost of this test only if none of the above worked. | ||
22 | if test $ac_found = 0; then | ||
23 | # On OpenBSD 5.1, using the global __progname variable appears to be | ||
24 | # the only way to implement getprogname. | ||
25 | AC_CACHE_CHECK([whether __progname is defined in default libraries], | ||
26 | [gl_cv_var___progname], | ||
27 | [ | ||
28 | gl_cv_var___progname= | ||
29 | AC_LINK_IFELSE( | ||
30 | [AC_LANG_PROGRAM( | ||
31 | [[extern char *__progname;]], | ||
32 | [[return *__progname;]] | ||
33 | )], | ||
34 | [gl_cv_var___progname=yes] | ||
35 | ) | ||
36 | ] | ||
37 | ) | ||
38 | if test "$gl_cv_var___progname" = yes; then | ||
39 | AC_DEFINE([HAVE_VAR___PROGNAME], 1, | ||
40 | [Define if you have a global __progname variable]) | ||
41 | fi | ||
42 | fi | ||
43 | ]) | ||
diff --git a/gl/m4/gettext.m4 b/gl/m4/gettext.m4 deleted file mode 100644 index 8d1f0665..00000000 --- a/gl/m4/gettext.m4 +++ /dev/null | |||
@@ -1,401 +0,0 @@ | |||
1 | # gettext.m4 serial 66 (gettext-0.18.2) | ||
2 | dnl Copyright (C) 1995-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | dnl | ||
7 | dnl This file can can be used in projects which are not available under | ||
8 | dnl the GNU General Public License or the GNU Library General Public | ||
9 | dnl License but which still want to provide support for the GNU gettext | ||
10 | dnl functionality. | ||
11 | dnl Please note that the actual code of the GNU gettext library is covered | ||
12 | dnl by the GNU Library General Public License, and the rest of the GNU | ||
13 | dnl gettext package package is covered by the GNU General Public License. | ||
14 | dnl They are *not* in the public domain. | ||
15 | |||
16 | dnl Authors: | ||
17 | dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. | ||
18 | dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010. | ||
19 | |||
20 | dnl Macro to add for using GNU gettext. | ||
21 | |||
22 | dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). | ||
23 | dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The | ||
24 | dnl default (if it is not specified or empty) is 'no-libtool'. | ||
25 | dnl INTLSYMBOL should be 'external' for packages with no intl directory, | ||
26 | dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. | ||
27 | dnl If INTLSYMBOL is 'use-libtool', then a libtool library | ||
28 | dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, | ||
29 | dnl depending on --{enable,disable}-{shared,static} and on the presence of | ||
30 | dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library | ||
31 | dnl $(top_builddir)/intl/libintl.a will be created. | ||
32 | dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext | ||
33 | dnl implementations (in libc or libintl) without the ngettext() function | ||
34 | dnl will be ignored. If NEEDSYMBOL is specified and is | ||
35 | dnl 'need-formatstring-macros', then GNU gettext implementations that don't | ||
36 | dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored. | ||
37 | dnl INTLDIR is used to find the intl libraries. If empty, | ||
38 | dnl the value '$(top_builddir)/intl/' is used. | ||
39 | dnl | ||
40 | dnl The result of the configuration is one of three cases: | ||
41 | dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled | ||
42 | dnl and used. | ||
43 | dnl Catalog format: GNU --> install in $(datadir) | ||
44 | dnl Catalog extension: .mo after installation, .gmo in source tree | ||
45 | dnl 2) GNU gettext has been found in the system's C library. | ||
46 | dnl Catalog format: GNU --> install in $(datadir) | ||
47 | dnl Catalog extension: .mo after installation, .gmo in source tree | ||
48 | dnl 3) No internationalization, always use English msgid. | ||
49 | dnl Catalog format: none | ||
50 | dnl Catalog extension: none | ||
51 | dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. | ||
52 | dnl The use of .gmo is historical (it was needed to avoid overwriting the | ||
53 | dnl GNU format catalogs when building on a platform with an X/Open gettext), | ||
54 | dnl but we keep it in order not to force irrelevant filename changes on the | ||
55 | dnl maintainers. | ||
56 | dnl | ||
57 | AC_DEFUN([AM_GNU_GETTEXT], | ||
58 | [ | ||
59 | dnl Argument checking. | ||
60 | ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , | ||
61 | [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT | ||
62 | ])])])])]) | ||
63 | ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], | ||
64 | [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) | ||
65 | ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , | ||
66 | [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT | ||
67 | ])])])]) | ||
68 | define([gt_included_intl], | ||
69 | ifelse([$1], [external], | ||
70 | ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), | ||
71 | [yes])) | ||
72 | define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) | ||
73 | gt_NEEDS_INIT | ||
74 | AM_GNU_GETTEXT_NEED([$2]) | ||
75 | |||
76 | AC_REQUIRE([AM_PO_SUBDIRS])dnl | ||
77 | ifelse(gt_included_intl, yes, [ | ||
78 | AC_REQUIRE([AM_INTL_SUBDIR])dnl | ||
79 | ]) | ||
80 | |||
81 | dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. | ||
82 | AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) | ||
83 | AC_REQUIRE([AC_LIB_RPATH]) | ||
84 | |||
85 | dnl Sometimes libintl requires libiconv, so first search for libiconv. | ||
86 | dnl Ideally we would do this search only after the | ||
87 | dnl if test "$USE_NLS" = "yes"; then | ||
88 | dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then | ||
89 | dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT | ||
90 | dnl the configure script would need to contain the same shell code | ||
91 | dnl again, outside any 'if'. There are two solutions: | ||
92 | dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. | ||
93 | dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. | ||
94 | dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not | ||
95 | dnl documented, we avoid it. | ||
96 | ifelse(gt_included_intl, yes, , [ | ||
97 | AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) | ||
98 | ]) | ||
99 | |||
100 | dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation. | ||
101 | gt_INTL_MACOSX | ||
102 | |||
103 | dnl Set USE_NLS. | ||
104 | AC_REQUIRE([AM_NLS]) | ||
105 | |||
106 | ifelse(gt_included_intl, yes, [ | ||
107 | BUILD_INCLUDED_LIBINTL=no | ||
108 | USE_INCLUDED_LIBINTL=no | ||
109 | ]) | ||
110 | LIBINTL= | ||
111 | LTLIBINTL= | ||
112 | POSUB= | ||
113 | |||
114 | dnl Add a version number to the cache macros. | ||
115 | case " $gt_needs " in | ||
116 | *" need-formatstring-macros "*) gt_api_version=3 ;; | ||
117 | *" need-ngettext "*) gt_api_version=2 ;; | ||
118 | *) gt_api_version=1 ;; | ||
119 | esac | ||
120 | gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" | ||
121 | gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" | ||
122 | |||
123 | dnl If we use NLS figure out what method | ||
124 | if test "$USE_NLS" = "yes"; then | ||
125 | gt_use_preinstalled_gnugettext=no | ||
126 | ifelse(gt_included_intl, yes, [ | ||
127 | AC_MSG_CHECKING([whether included gettext is requested]) | ||
128 | AC_ARG_WITH([included-gettext], | ||
129 | [ --with-included-gettext use the GNU gettext library included here], | ||
130 | nls_cv_force_use_gnu_gettext=$withval, | ||
131 | nls_cv_force_use_gnu_gettext=no) | ||
132 | AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) | ||
133 | |||
134 | nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" | ||
135 | if test "$nls_cv_force_use_gnu_gettext" != "yes"; then | ||
136 | ]) | ||
137 | dnl User does not insist on using GNU NLS library. Figure out what | ||
138 | dnl to use. If GNU gettext is available we use this. Else we have | ||
139 | dnl to fall back to GNU NLS library. | ||
140 | |||
141 | if test $gt_api_version -ge 3; then | ||
142 | gt_revision_test_code=' | ||
143 | #ifndef __GNU_GETTEXT_SUPPORTED_REVISION | ||
144 | #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) | ||
145 | #endif | ||
146 | changequote(,)dnl | ||
147 | typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; | ||
148 | changequote([,])dnl | ||
149 | ' | ||
150 | else | ||
151 | gt_revision_test_code= | ||
152 | fi | ||
153 | if test $gt_api_version -ge 2; then | ||
154 | gt_expression_test_code=' + * ngettext ("", "", 0)' | ||
155 | else | ||
156 | gt_expression_test_code= | ||
157 | fi | ||
158 | |||
159 | AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], | ||
160 | [AC_LINK_IFELSE( | ||
161 | [AC_LANG_PROGRAM( | ||
162 | [[ | ||
163 | #include <libintl.h> | ||
164 | $gt_revision_test_code | ||
165 | extern int _nl_msg_cat_cntr; | ||
166 | extern int *_nl_domain_bindings; | ||
167 | ]], | ||
168 | [[ | ||
169 | bindtextdomain ("", ""); | ||
170 | return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings | ||
171 | ]])], | ||
172 | [eval "$gt_func_gnugettext_libc=yes"], | ||
173 | [eval "$gt_func_gnugettext_libc=no"])]) | ||
174 | |||
175 | if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then | ||
176 | dnl Sometimes libintl requires libiconv, so first search for libiconv. | ||
177 | ifelse(gt_included_intl, yes, , [ | ||
178 | AM_ICONV_LINK | ||
179 | ]) | ||
180 | dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL | ||
181 | dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) | ||
182 | dnl because that would add "-liconv" to LIBINTL and LTLIBINTL | ||
183 | dnl even if libiconv doesn't exist. | ||
184 | AC_LIB_LINKFLAGS_BODY([intl]) | ||
185 | AC_CACHE_CHECK([for GNU gettext in libintl], | ||
186 | [$gt_func_gnugettext_libintl], | ||
187 | [gt_save_CPPFLAGS="$CPPFLAGS" | ||
188 | CPPFLAGS="$CPPFLAGS $INCINTL" | ||
189 | gt_save_LIBS="$LIBS" | ||
190 | LIBS="$LIBS $LIBINTL" | ||
191 | dnl Now see whether libintl exists and does not depend on libiconv. | ||
192 | AC_LINK_IFELSE( | ||
193 | [AC_LANG_PROGRAM( | ||
194 | [[ | ||
195 | #include <libintl.h> | ||
196 | $gt_revision_test_code | ||
197 | extern int _nl_msg_cat_cntr; | ||
198 | extern | ||
199 | #ifdef __cplusplus | ||
200 | "C" | ||
201 | #endif | ||
202 | const char *_nl_expand_alias (const char *); | ||
203 | ]], | ||
204 | [[ | ||
205 | bindtextdomain ("", ""); | ||
206 | return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") | ||
207 | ]])], | ||
208 | [eval "$gt_func_gnugettext_libintl=yes"], | ||
209 | [eval "$gt_func_gnugettext_libintl=no"]) | ||
210 | dnl Now see whether libintl exists and depends on libiconv. | ||
211 | if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then | ||
212 | LIBS="$LIBS $LIBICONV" | ||
213 | AC_LINK_IFELSE( | ||
214 | [AC_LANG_PROGRAM( | ||
215 | [[ | ||
216 | #include <libintl.h> | ||
217 | $gt_revision_test_code | ||
218 | extern int _nl_msg_cat_cntr; | ||
219 | extern | ||
220 | #ifdef __cplusplus | ||
221 | "C" | ||
222 | #endif | ||
223 | const char *_nl_expand_alias (const char *); | ||
224 | ]], | ||
225 | [[ | ||
226 | bindtextdomain ("", ""); | ||
227 | return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") | ||
228 | ]])], | ||
229 | [LIBINTL="$LIBINTL $LIBICONV" | ||
230 | LTLIBINTL="$LTLIBINTL $LTLIBICONV" | ||
231 | eval "$gt_func_gnugettext_libintl=yes" | ||
232 | ]) | ||
233 | fi | ||
234 | CPPFLAGS="$gt_save_CPPFLAGS" | ||
235 | LIBS="$gt_save_LIBS"]) | ||
236 | fi | ||
237 | |||
238 | dnl If an already present or preinstalled GNU gettext() is found, | ||
239 | dnl use it. But if this macro is used in GNU gettext, and GNU | ||
240 | dnl gettext is already preinstalled in libintl, we update this | ||
241 | dnl libintl. (Cf. the install rule in intl/Makefile.in.) | ||
242 | if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ | ||
243 | || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ | ||
244 | && test "$PACKAGE" != gettext-runtime \ | ||
245 | && test "$PACKAGE" != gettext-tools; }; then | ||
246 | gt_use_preinstalled_gnugettext=yes | ||
247 | else | ||
248 | dnl Reset the values set by searching for libintl. | ||
249 | LIBINTL= | ||
250 | LTLIBINTL= | ||
251 | INCINTL= | ||
252 | fi | ||
253 | |||
254 | ifelse(gt_included_intl, yes, [ | ||
255 | if test "$gt_use_preinstalled_gnugettext" != "yes"; then | ||
256 | dnl GNU gettext is not found in the C library. | ||
257 | dnl Fall back on included GNU gettext library. | ||
258 | nls_cv_use_gnu_gettext=yes | ||
259 | fi | ||
260 | fi | ||
261 | |||
262 | if test "$nls_cv_use_gnu_gettext" = "yes"; then | ||
263 | dnl Mark actions used to generate GNU NLS library. | ||
264 | BUILD_INCLUDED_LIBINTL=yes | ||
265 | USE_INCLUDED_LIBINTL=yes | ||
266 | LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" | ||
267 | LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" | ||
268 | LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` | ||
269 | fi | ||
270 | |||
271 | CATOBJEXT= | ||
272 | if test "$gt_use_preinstalled_gnugettext" = "yes" \ | ||
273 | || test "$nls_cv_use_gnu_gettext" = "yes"; then | ||
274 | dnl Mark actions to use GNU gettext tools. | ||
275 | CATOBJEXT=.gmo | ||
276 | fi | ||
277 | ]) | ||
278 | |||
279 | if test -n "$INTL_MACOSX_LIBS"; then | ||
280 | if test "$gt_use_preinstalled_gnugettext" = "yes" \ | ||
281 | || test "$nls_cv_use_gnu_gettext" = "yes"; then | ||
282 | dnl Some extra flags are needed during linking. | ||
283 | LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" | ||
284 | LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" | ||
285 | fi | ||
286 | fi | ||
287 | |||
288 | if test "$gt_use_preinstalled_gnugettext" = "yes" \ | ||
289 | || test "$nls_cv_use_gnu_gettext" = "yes"; then | ||
290 | AC_DEFINE([ENABLE_NLS], [1], | ||
291 | [Define to 1 if translation of program messages to the user's native language | ||
292 | is requested.]) | ||
293 | else | ||
294 | USE_NLS=no | ||
295 | fi | ||
296 | fi | ||
297 | |||
298 | AC_MSG_CHECKING([whether to use NLS]) | ||
299 | AC_MSG_RESULT([$USE_NLS]) | ||
300 | if test "$USE_NLS" = "yes"; then | ||
301 | AC_MSG_CHECKING([where the gettext function comes from]) | ||
302 | if test "$gt_use_preinstalled_gnugettext" = "yes"; then | ||
303 | if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then | ||
304 | gt_source="external libintl" | ||
305 | else | ||
306 | gt_source="libc" | ||
307 | fi | ||
308 | else | ||
309 | gt_source="included intl directory" | ||
310 | fi | ||
311 | AC_MSG_RESULT([$gt_source]) | ||
312 | fi | ||
313 | |||
314 | if test "$USE_NLS" = "yes"; then | ||
315 | |||
316 | if test "$gt_use_preinstalled_gnugettext" = "yes"; then | ||
317 | if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then | ||
318 | AC_MSG_CHECKING([how to link with libintl]) | ||
319 | AC_MSG_RESULT([$LIBINTL]) | ||
320 | AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) | ||
321 | fi | ||
322 | |||
323 | dnl For backward compatibility. Some packages may be using this. | ||
324 | AC_DEFINE([HAVE_GETTEXT], [1], | ||
325 | [Define if the GNU gettext() function is already present or preinstalled.]) | ||
326 | AC_DEFINE([HAVE_DCGETTEXT], [1], | ||
327 | [Define if the GNU dcgettext() function is already present or preinstalled.]) | ||
328 | fi | ||
329 | |||
330 | dnl We need to process the po/ directory. | ||
331 | POSUB=po | ||
332 | fi | ||
333 | |||
334 | ifelse(gt_included_intl, yes, [ | ||
335 | dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL | ||
336 | dnl to 'yes' because some of the testsuite requires it. | ||
337 | if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then | ||
338 | BUILD_INCLUDED_LIBINTL=yes | ||
339 | fi | ||
340 | |||
341 | dnl Make all variables we use known to autoconf. | ||
342 | AC_SUBST([BUILD_INCLUDED_LIBINTL]) | ||
343 | AC_SUBST([USE_INCLUDED_LIBINTL]) | ||
344 | AC_SUBST([CATOBJEXT]) | ||
345 | |||
346 | dnl For backward compatibility. Some configure.ins may be using this. | ||
347 | nls_cv_header_intl= | ||
348 | nls_cv_header_libgt= | ||
349 | |||
350 | dnl For backward compatibility. Some Makefiles may be using this. | ||
351 | DATADIRNAME=share | ||
352 | AC_SUBST([DATADIRNAME]) | ||
353 | |||
354 | dnl For backward compatibility. Some Makefiles may be using this. | ||
355 | INSTOBJEXT=.mo | ||
356 | AC_SUBST([INSTOBJEXT]) | ||
357 | |||
358 | dnl For backward compatibility. Some Makefiles may be using this. | ||
359 | GENCAT=gencat | ||
360 | AC_SUBST([GENCAT]) | ||
361 | |||
362 | dnl For backward compatibility. Some Makefiles may be using this. | ||
363 | INTLOBJS= | ||
364 | if test "$USE_INCLUDED_LIBINTL" = yes; then | ||
365 | INTLOBJS="\$(GETTOBJS)" | ||
366 | fi | ||
367 | AC_SUBST([INTLOBJS]) | ||
368 | |||
369 | dnl Enable libtool support if the surrounding package wishes it. | ||
370 | INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix | ||
371 | AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) | ||
372 | ]) | ||
373 | |||
374 | dnl For backward compatibility. Some Makefiles may be using this. | ||
375 | INTLLIBS="$LIBINTL" | ||
376 | AC_SUBST([INTLLIBS]) | ||
377 | |||
378 | dnl Make all documented variables known to autoconf. | ||
379 | AC_SUBST([LIBINTL]) | ||
380 | AC_SUBST([LTLIBINTL]) | ||
381 | AC_SUBST([POSUB]) | ||
382 | ]) | ||
383 | |||
384 | |||
385 | dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. | ||
386 | m4_define([gt_NEEDS_INIT], | ||
387 | [ | ||
388 | m4_divert_text([DEFAULTS], [gt_needs=]) | ||
389 | m4_define([gt_NEEDS_INIT], []) | ||
390 | ]) | ||
391 | |||
392 | |||
393 | dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) | ||
394 | AC_DEFUN([AM_GNU_GETTEXT_NEED], | ||
395 | [ | ||
396 | m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) | ||
397 | ]) | ||
398 | |||
399 | |||
400 | dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) | ||
401 | AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) | ||
diff --git a/gl/m4/gl-openssl.m4 b/gl/m4/gl-openssl.m4 new file mode 100644 index 00000000..7eab4e10 --- /dev/null +++ b/gl/m4/gl-openssl.m4 | |||
@@ -0,0 +1,76 @@ | |||
1 | # gl-openssl.m4 serial 6 | ||
2 | dnl Copyright (C) 2013-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_SET_CRYPTO_CHECK_DEFAULT], | ||
8 | [ | ||
9 | m4_define([gl_CRYPTO_CHECK_DEFAULT], [$1]) | ||
10 | ]) | ||
11 | gl_SET_CRYPTO_CHECK_DEFAULT([no]) | ||
12 | |||
13 | AC_DEFUN([gl_CRYPTO_CHECK], | ||
14 | [ | ||
15 | dnl gnulib users set this before gl_INIT with gl_SET_CRYPTO_CHECK_DEFAULT() | ||
16 | m4_divert_once([DEFAULTS], [with_openssl_default='gl_CRYPTO_CHECK_DEFAULT']) | ||
17 | |||
18 | dnl Only clear once, so crypto routines can be checked for individually | ||
19 | m4_divert_once([DEFAULTS], [LIB_CRYPTO=]) | ||
20 | |||
21 | AC_ARG_WITH([openssl], | ||
22 | [[ --with-openssl[=ARG] use libcrypto hash routines for the hash functions | ||
23 | MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512. | ||
24 | Valid ARGs are: | ||
25 | 'yes', | ||
26 | 'no', | ||
27 | 'auto' => use if any version available, | ||
28 | 'auto-gpl-compat' => use if GPL compatible version | ||
29 | available, | ||
30 | 'optional' => use if available | ||
31 | and warn if not available; | ||
32 | Default is ']gl_CRYPTO_CHECK_DEFAULT['.]m4_ifdef([gl_AF_ALG], [ | ||
33 | Note also --with-linux-crypto, which will enable the | ||
34 | use of Linux kernel crypto routines (if available), | ||
35 | which has precedence for files.])], | ||
36 | [], | ||
37 | [with_openssl=$with_openssl_default]) | ||
38 | |||
39 | AC_SUBST([LIB_CRYPTO]) | ||
40 | if test "x$with_openssl" != xno; then | ||
41 | if test "x$with_openssl" = xauto-gpl-compat; then | ||
42 | AC_CACHE_CHECK([whether openssl is GPL compatible], | ||
43 | [gl_cv_openssl_gpl_compat], | ||
44 | [AC_COMPILE_IFELSE( | ||
45 | [AC_LANG_PROGRAM([[ | ||
46 | #include <openssl/opensslv.h> | ||
47 | #if OPENSSL_VERSION_MAJOR < 3 | ||
48 | #error "openssl >= version 3 not found" | ||
49 | #endif | ||
50 | ]])], | ||
51 | [gl_cv_openssl_gpl_compat=yes], | ||
52 | [gl_cv_openssl_gpl_compat=no])]) | ||
53 | fi | ||
54 | if test "x$with_openssl" != xauto-gpl-compat || | ||
55 | test "x$gl_cv_openssl_gpl_compat" = xyes; then | ||
56 | AC_CHECK_LIB([crypto], [$1], | ||
57 | [AC_CHECK_HEADERS( | ||
58 | m4_if([$1], [MD5], [openssl/md5.h], [openssl/sha.h]), | ||
59 | [LIB_CRYPTO=-lcrypto | ||
60 | AC_DEFINE([HAVE_OPENSSL_$1], [1], | ||
61 | [Define to 1 if libcrypto is used for $1.])])]) | ||
62 | fi | ||
63 | if test "x$LIB_CRYPTO" = x; then | ||
64 | message='openssl development library not found for $1. | ||
65 | If you want to install it, first find the pre-built package name: | ||
66 | - On Debian and Debian-based systems: libssl-dev, | ||
67 | - On Red Hat distributions: openssl-devel. | ||
68 | - Other: https://repology.org/project/openssl/versions' | ||
69 | if test "x$with_openssl" = xyes; then | ||
70 | AC_MSG_ERROR([$message]) | ||
71 | elif test "x$with_openssl" = xoptional; then | ||
72 | AC_MSG_WARN([$message]) | ||
73 | fi | ||
74 | fi | ||
75 | fi | ||
76 | ]) | ||
diff --git a/gl/m4/glibc2.m4 b/gl/m4/glibc2.m4 deleted file mode 100644 index 0e506826..00000000 --- a/gl/m4/glibc2.m4 +++ /dev/null | |||
@@ -1,31 +0,0 @@ | |||
1 | # glibc2.m4 serial 3 | ||
2 | dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2013 Free Software Foundation, | ||
3 | dnl Inc. | ||
4 | dnl This file is free software; the Free Software Foundation | ||
5 | dnl gives unlimited permission to copy and/or distribute it, | ||
6 | dnl with or without modifications, as long as this notice is preserved. | ||
7 | |||
8 | # Test for the GNU C Library, version 2.0 or newer. | ||
9 | # From Bruno Haible. | ||
10 | |||
11 | AC_DEFUN([gt_GLIBC2], | ||
12 | [ | ||
13 | AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer], | ||
14 | [ac_cv_gnu_library_2], | ||
15 | [AC_EGREP_CPP([Lucky GNU user], | ||
16 | [ | ||
17 | #include <features.h> | ||
18 | #ifdef __GNU_LIBRARY__ | ||
19 | #if (__GLIBC__ >= 2) && !defined __UCLIBC__ | ||
20 | Lucky GNU user | ||
21 | #endif | ||
22 | #endif | ||
23 | ], | ||
24 | [ac_cv_gnu_library_2=yes], | ||
25 | [ac_cv_gnu_library_2=no]) | ||
26 | ] | ||
27 | ) | ||
28 | AC_SUBST([GLIBC2]) | ||
29 | GLIBC2="$ac_cv_gnu_library_2" | ||
30 | ] | ||
31 | ) | ||
diff --git a/gl/m4/glibc21.m4 b/gl/m4/glibc21.m4 deleted file mode 100644 index 613fb2a4..00000000 --- a/gl/m4/glibc21.m4 +++ /dev/null | |||
@@ -1,34 +0,0 @@ | |||
1 | # glibc21.m4 serial 5 | ||
2 | dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2013 Free Software Foundation, | ||
3 | dnl Inc. | ||
4 | dnl This file is free software; the Free Software Foundation | ||
5 | dnl gives unlimited permission to copy and/or distribute it, | ||
6 | dnl with or without modifications, as long as this notice is preserved. | ||
7 | |||
8 | # Test for the GNU C Library, version 2.1 or newer, or uClibc. | ||
9 | # From Bruno Haible. | ||
10 | |||
11 | AC_DEFUN([gl_GLIBC21], | ||
12 | [ | ||
13 | AC_CACHE_CHECK([whether we are using the GNU C Library >= 2.1 or uClibc], | ||
14 | [ac_cv_gnu_library_2_1], | ||
15 | [AC_EGREP_CPP([Lucky], | ||
16 | [ | ||
17 | #include <features.h> | ||
18 | #ifdef __GNU_LIBRARY__ | ||
19 | #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) | ||
20 | Lucky GNU user | ||
21 | #endif | ||
22 | #endif | ||
23 | #ifdef __UCLIBC__ | ||
24 | Lucky user | ||
25 | #endif | ||
26 | ], | ||
27 | [ac_cv_gnu_library_2_1=yes], | ||
28 | [ac_cv_gnu_library_2_1=no]) | ||
29 | ] | ||
30 | ) | ||
31 | AC_SUBST([GLIBC21]) | ||
32 | GLIBC21="$ac_cv_gnu_library_2_1" | ||
33 | ] | ||
34 | ) | ||
diff --git a/gl/m4/gnulib-cache.m4 b/gl/m4/gnulib-cache.m4 index 90ad4aaa..267f0692 100644 --- a/gl/m4/gnulib-cache.m4 +++ b/gl/m4/gnulib-cache.m4 | |||
@@ -1,8 +1,8 @@ | |||
1 | # Copyright (C) 2002-2013 Free Software Foundation, Inc. | 1 | # Copyright (C) 2002-2023 Free Software Foundation, Inc. |
2 | # | 2 | # |
3 | # This file is free software; you can redistribute it and/or modify | 3 | # This file is free software; you can redistribute it and/or modify |
4 | # it under the terms of the GNU General Public License as published by | 4 | # it under the terms of the GNU General Public License as published by |
5 | # the Free Software Foundation; either version 3 of the License, or | 5 | # the Free Software Foundation, either version 3 of the License, or |
6 | # (at your option) any later version. | 6 | # (at your option) any later version. |
7 | # | 7 | # |
8 | # This file is distributed in the hope that it will be useful, | 8 | # This file is distributed in the hope that it will be useful, |
@@ -11,7 +11,7 @@ | |||
11 | # GNU General Public License for more details. | 11 | # GNU General Public License for more details. |
12 | # | 12 | # |
13 | # You should have received a copy of the GNU General Public License | 13 | # You should have received a copy of the GNU General Public License |
14 | # along with this file. If not, see <http://www.gnu.org/licenses/>. | 14 | # along with this file. If not, see <https://www.gnu.org/licenses/>. |
15 | # | 15 | # |
16 | # As a special exception to the GNU General Public License, | 16 | # As a special exception to the GNU General Public License, |
17 | # this file may be distributed as part of a program that | 17 | # this file may be distributed as part of a program that |
@@ -27,13 +27,45 @@ | |||
27 | 27 | ||
28 | 28 | ||
29 | # Specification in the form of a command-line invocation: | 29 | # Specification in the form of a command-line invocation: |
30 | # gnulib-tool --import --dir=. --lib=libgnu --source-base=gl --m4-base=gl/m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --no-conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files base64 crypto/sha1 dirname environ floorf fsusage getaddrinfo gethostname getloadavg getopt-gnu gettext idpriv-droptemp mountlist regex setenv strcase strcasestr strsep timegm unsetenv vasprintf vsnprintf | 30 | # gnulib-tool --import \ |
31 | # --lib=libgnu \ | ||
32 | # --source-base=gl \ | ||
33 | # --m4-base=gl/m4 \ | ||
34 | # --doc-base=doc \ | ||
35 | # --tests-base=tests \ | ||
36 | # --aux-dir=build-aux \ | ||
37 | # --no-conditional-dependencies \ | ||
38 | # --no-libtool \ | ||
39 | # --macro-prefix=gl \ | ||
40 | # --no-vc-files \ | ||
41 | # base64 \ | ||
42 | # crypto/sha256 \ | ||
43 | # dirname \ | ||
44 | # environ \ | ||
45 | # floorf \ | ||
46 | # fsusage \ | ||
47 | # getaddrinfo \ | ||
48 | # gethostname \ | ||
49 | # getloadavg \ | ||
50 | # getopt-gnu \ | ||
51 | # gettext-h \ | ||
52 | # idpriv-droptemp \ | ||
53 | # mountlist \ | ||
54 | # regex \ | ||
55 | # setenv \ | ||
56 | # strcase \ | ||
57 | # strcasestr \ | ||
58 | # strsep \ | ||
59 | # timegm \ | ||
60 | # unsetenv \ | ||
61 | # vasprintf \ | ||
62 | # vsnprintf | ||
31 | 63 | ||
32 | # Specification in the form of a few gnulib-tool.m4 macro invocations: | 64 | # Specification in the form of a few gnulib-tool.m4 macro invocations: |
33 | gl_LOCAL_DIR([]) | 65 | gl_LOCAL_DIR([]) |
34 | gl_MODULES([ | 66 | gl_MODULES([ |
35 | base64 | 67 | base64 |
36 | crypto/sha1 | 68 | crypto/sha256 |
37 | dirname | 69 | dirname |
38 | environ | 70 | environ |
39 | floorf | 71 | floorf |
@@ -42,7 +74,7 @@ gl_MODULES([ | |||
42 | gethostname | 74 | gethostname |
43 | getloadavg | 75 | getloadavg |
44 | getopt-gnu | 76 | getopt-gnu |
45 | gettext | 77 | gettext-h |
46 | idpriv-droptemp | 78 | idpriv-droptemp |
47 | mountlist | 79 | mountlist |
48 | regex | 80 | regex |
diff --git a/gl/m4/gnulib-common.m4 b/gl/m4/gnulib-common.m4 index 0ae5a9ec..facc3404 100644 --- a/gl/m4/gnulib-common.m4 +++ b/gl/m4/gnulib-common.m4 | |||
@@ -1,25 +1,59 @@ | |||
1 | # gnulib-common.m4 serial 33 | 1 | # gnulib-common.m4 serial 75a |
2 | dnl Copyright (C) 2007-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | AC_PREREQ([2.62]) | ||
8 | |||
7 | # gl_COMMON | 9 | # gl_COMMON |
8 | # is expanded unconditionally through gnulib-tool magic. | 10 | # is expanded unconditionally through gnulib-tool magic. |
9 | AC_DEFUN([gl_COMMON], [ | 11 | AC_DEFUN([gl_COMMON], [ |
10 | dnl Use AC_REQUIRE here, so that the code is expanded once only. | 12 | dnl Use AC_REQUIRE here, so that the code is expanded once only. |
11 | AC_REQUIRE([gl_00GNULIB]) | 13 | AC_REQUIRE([gl_00GNULIB]) |
12 | AC_REQUIRE([gl_COMMON_BODY]) | 14 | AC_REQUIRE([gl_COMMON_BODY]) |
15 | AC_REQUIRE([gl_ZZGNULIB]) | ||
13 | ]) | 16 | ]) |
14 | AC_DEFUN([gl_COMMON_BODY], [ | 17 | AC_DEFUN([gl_COMMON_BODY], [ |
18 | AH_VERBATIM([_GL_GNUC_PREREQ], | ||
19 | [/* True if the compiler says it groks GNU C version MAJOR.MINOR. */ | ||
20 | #if defined __GNUC__ && defined __GNUC_MINOR__ | ||
21 | # define _GL_GNUC_PREREQ(major, minor) \ | ||
22 | ((major) < __GNUC__ + ((minor) <= __GNUC_MINOR__)) | ||
23 | #else | ||
24 | # define _GL_GNUC_PREREQ(major, minor) 0 | ||
25 | #endif | ||
26 | ]) | ||
15 | AH_VERBATIM([_Noreturn], | 27 | AH_VERBATIM([_Noreturn], |
16 | [/* The _Noreturn keyword of C11. */ | 28 | [/* The _Noreturn keyword of C11. */ |
17 | #if ! (defined _Noreturn \ | 29 | #ifndef _Noreturn |
18 | || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__)) | 30 | # if (defined __cplusplus \ |
19 | # if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \ | 31 | && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \ |
20 | || 0x5110 <= __SUNPRO_C) | 32 | || (defined _MSC_VER && 1900 <= _MSC_VER)) \ |
33 | && 0) | ||
34 | /* [[noreturn]] is not practically usable, because with it the syntax | ||
35 | extern _Noreturn void func (...); | ||
36 | would not be valid; such a declaration would only be valid with 'extern' | ||
37 | and '_Noreturn' swapped, or without the 'extern' keyword. However, some | ||
38 | AIX system header files and several gnulib header files use precisely | ||
39 | this syntax with 'extern'. */ | ||
40 | # define _Noreturn [[noreturn]] | ||
41 | # elif (defined __clang__ && __clang_major__ < 16 \ | ||
42 | && defined _GL_WORK_AROUND_LLVM_BUG_59792) | ||
43 | /* Compile with -D_GL_WORK_AROUND_LLVM_BUG_59792 to work around | ||
44 | that rare LLVM bug, though you may get many false-alarm warnings. */ | ||
45 | # define _Noreturn | ||
46 | # elif ((!defined __cplusplus || defined __clang__) \ | ||
47 | && (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \ | ||
48 | || (!defined __STRICT_ANSI__ \ | ||
49 | && (_GL_GNUC_PREREQ (4, 7) \ | ||
50 | || (defined __apple_build_version__ \ | ||
51 | ? 6000000 <= __apple_build_version__ \ | ||
52 | : 3 < __clang_major__ + (5 <= __clang_minor__)))))) | ||
53 | /* _Noreturn works as-is. */ | ||
54 | # elif _GL_GNUC_PREREQ (2, 8) || defined __clang__ || 0x5110 <= __SUNPRO_C | ||
21 | # define _Noreturn __attribute__ ((__noreturn__)) | 55 | # define _Noreturn __attribute__ ((__noreturn__)) |
22 | # elif defined _MSC_VER && 1200 <= _MSC_VER | 56 | # elif 1200 <= (defined _MSC_VER ? _MSC_VER : 0) |
23 | # define _Noreturn __declspec (noreturn) | 57 | # define _Noreturn __declspec (noreturn) |
24 | # else | 58 | # else |
25 | # define _Noreturn | 59 | # define _Noreturn |
@@ -36,33 +70,519 @@ AC_DEFUN([gl_COMMON_BODY], [ | |||
36 | #if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ | 70 | #if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ |
37 | # define __GNUC_STDC_INLINE__ 1 | 71 | # define __GNUC_STDC_INLINE__ 1 |
38 | #endif]) | 72 | #endif]) |
39 | AH_VERBATIM([unused_parameter], | 73 | AH_VERBATIM([attribute], |
40 | [/* Define as a marker that can be attached to declarations that might not | 74 | [/* Attributes. */ |
41 | be used. This helps to reduce warnings, such as from | 75 | #if (defined __has_attribute \ |
42 | GCC -Wunused-parameter. */ | 76 | && (!defined __clang_minor__ \ |
43 | #if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) | 77 | || (defined __apple_build_version__ \ |
44 | # define _GL_UNUSED __attribute__ ((__unused__)) | 78 | ? 6000000 <= __apple_build_version__ \ |
79 | : 3 < __clang_major__ + (5 <= __clang_minor__)))) | ||
80 | # define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__) | ||
45 | #else | 81 | #else |
46 | # define _GL_UNUSED | 82 | # define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr |
83 | # define _GL_ATTR_alloc_size _GL_GNUC_PREREQ (4, 3) | ||
84 | # define _GL_ATTR_always_inline _GL_GNUC_PREREQ (3, 2) | ||
85 | # define _GL_ATTR_artificial _GL_GNUC_PREREQ (4, 3) | ||
86 | # define _GL_ATTR_cold _GL_GNUC_PREREQ (4, 3) | ||
87 | # define _GL_ATTR_const _GL_GNUC_PREREQ (2, 95) | ||
88 | # define _GL_ATTR_deprecated _GL_GNUC_PREREQ (3, 1) | ||
89 | # define _GL_ATTR_diagnose_if 0 | ||
90 | # define _GL_ATTR_error _GL_GNUC_PREREQ (4, 3) | ||
91 | # define _GL_ATTR_externally_visible _GL_GNUC_PREREQ (4, 1) | ||
92 | # define _GL_ATTR_fallthrough _GL_GNUC_PREREQ (7, 0) | ||
93 | # define _GL_ATTR_format _GL_GNUC_PREREQ (2, 7) | ||
94 | # define _GL_ATTR_leaf _GL_GNUC_PREREQ (4, 6) | ||
95 | # define _GL_ATTR_malloc _GL_GNUC_PREREQ (3, 0) | ||
96 | # ifdef _ICC | ||
97 | # define _GL_ATTR_may_alias 0 | ||
98 | # else | ||
99 | # define _GL_ATTR_may_alias _GL_GNUC_PREREQ (3, 3) | ||
100 | # endif | ||
101 | # define _GL_ATTR_noinline _GL_GNUC_PREREQ (3, 1) | ||
102 | # define _GL_ATTR_nonnull _GL_GNUC_PREREQ (3, 3) | ||
103 | # define _GL_ATTR_nonstring _GL_GNUC_PREREQ (8, 0) | ||
104 | # define _GL_ATTR_nothrow _GL_GNUC_PREREQ (3, 3) | ||
105 | # define _GL_ATTR_packed _GL_GNUC_PREREQ (2, 7) | ||
106 | # define _GL_ATTR_pure _GL_GNUC_PREREQ (2, 96) | ||
107 | # define _GL_ATTR_returns_nonnull _GL_GNUC_PREREQ (4, 9) | ||
108 | # define _GL_ATTR_sentinel _GL_GNUC_PREREQ (4, 0) | ||
109 | # define _GL_ATTR_unused _GL_GNUC_PREREQ (2, 7) | ||
110 | # define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4) | ||
47 | #endif | 111 | #endif |
48 | /* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name | ||
49 | is a misnomer outside of parameter lists. */ | ||
50 | #define _UNUSED_PARAMETER_ _GL_UNUSED | ||
51 | 112 | ||
52 | /* The __pure__ attribute was added in gcc 2.96. */ | 113 | /* Disable GCC -Wpedantic if using __has_c_attribute and this is not C23+. */ |
53 | #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96) | 114 | #if (defined __has_c_attribute && _GL_GNUC_PREREQ (4, 6) \ |
54 | # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) | 115 | && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710) |
55 | #else | 116 | # pragma GCC diagnostic ignored "-Wpedantic" |
56 | # define _GL_ATTRIBUTE_PURE /* empty */ | ||
57 | #endif | 117 | #endif |
58 | 118 | ||
59 | /* The __const__ attribute was added in gcc 2.95. */ | 119 | ]dnl There is no _GL_ATTRIBUTE_ALIGNED; use stdalign's alignas instead. |
60 | #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95) | 120 | [ |
61 | # define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) | 121 | /* _GL_ATTRIBUTE_ALLOC_SIZE ((N)) declares that the Nth argument of the function |
62 | #else | 122 | is the size of the returned memory block. |
63 | # define _GL_ATTRIBUTE_CONST /* empty */ | 123 | _GL_ATTRIBUTE_ALLOC_SIZE ((M, N)) declares that the Mth argument multiplied |
124 | by the Nth argument of the function is the size of the returned memory block. | ||
125 | */ | ||
126 | /* Applies to: function, pointer to function, function types. */ | ||
127 | #ifndef _GL_ATTRIBUTE_ALLOC_SIZE | ||
128 | # if _GL_HAS_ATTRIBUTE (alloc_size) | ||
129 | # define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args)) | ||
130 | # else | ||
131 | # define _GL_ATTRIBUTE_ALLOC_SIZE(args) | ||
132 | # endif | ||
133 | #endif | ||
134 | |||
135 | /* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the | ||
136 | function and report an error if it cannot do so. */ | ||
137 | /* Applies to: function. */ | ||
138 | #ifndef _GL_ATTRIBUTE_ALWAYS_INLINE | ||
139 | # if _GL_HAS_ATTRIBUTE (always_inline) | ||
140 | # define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__)) | ||
141 | # else | ||
142 | # define _GL_ATTRIBUTE_ALWAYS_INLINE | ||
143 | # endif | ||
144 | #endif | ||
145 | |||
146 | /* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show | ||
147 | in stack traces when debugging. The compiler should omit the function from | ||
148 | stack traces. */ | ||
149 | /* Applies to: function. */ | ||
150 | #ifndef _GL_ATTRIBUTE_ARTIFICIAL | ||
151 | # if _GL_HAS_ATTRIBUTE (artificial) | ||
152 | # define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__)) | ||
153 | # else | ||
154 | # define _GL_ATTRIBUTE_ARTIFICIAL | ||
155 | # endif | ||
156 | #endif | ||
157 | |||
158 | /* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */ | ||
159 | /* Applies to: functions. */ | ||
160 | /* Avoid __attribute__ ((cold)) on MinGW; see thread starting at | ||
161 | <https://lists.gnu.org/r/emacs-devel/2019-04/msg01152.html>. | ||
162 | Also, Oracle Studio 12.6 requires 'cold' not '__cold__'. */ | ||
163 | #ifndef _GL_ATTRIBUTE_COLD | ||
164 | # if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__ | ||
165 | # ifndef __SUNPRO_C | ||
166 | # define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__)) | ||
167 | # else | ||
168 | # define _GL_ATTRIBUTE_COLD __attribute__ ((cold)) | ||
169 | # endif | ||
170 | # else | ||
171 | # define _GL_ATTRIBUTE_COLD | ||
172 | # endif | ||
173 | #endif | ||
174 | |||
175 | /* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate | ||
176 | calls to the function with the same arguments. | ||
177 | This attribute is safe for a function that neither depends on nor affects | ||
178 | observable state, and always returns exactly once - e.g., does not loop | ||
179 | forever, and does not call longjmp. | ||
180 | (This attribute is stricter than _GL_ATTRIBUTE_PURE.) */ | ||
181 | /* Applies to: functions. */ | ||
182 | #ifndef _GL_ATTRIBUTE_CONST | ||
183 | # if _GL_HAS_ATTRIBUTE (const) | ||
184 | # define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) | ||
185 | # else | ||
186 | # define _GL_ATTRIBUTE_CONST | ||
187 | # endif | ||
188 | #endif | ||
189 | |||
190 | /* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers | ||
191 | that can be freed by passing them as the Ith argument to the | ||
192 | function F. | ||
193 | _GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that | ||
194 | can be freed via 'free'; it can be used only after declaring 'free'. */ | ||
195 | /* Applies to: functions. Cannot be used on inline functions. */ | ||
196 | #ifndef _GL_ATTRIBUTE_DEALLOC | ||
197 | # if _GL_GNUC_PREREQ (11, 0) | ||
198 | # define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i))) | ||
199 | # else | ||
200 | # define _GL_ATTRIBUTE_DEALLOC(f, i) | ||
201 | # endif | ||
202 | #endif | ||
203 | /* If gnulib's <string.h> or <wchar.h> has already defined this macro, continue | ||
204 | to use this earlier definition, since <stdlib.h> may not have been included | ||
205 | yet. */ | ||
206 | #ifndef _GL_ATTRIBUTE_DEALLOC_FREE | ||
207 | # if defined __cplusplus && defined __GNUC__ && !defined __clang__ | ||
208 | /* Work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108231> */ | ||
209 | # define _GL_ATTRIBUTE_DEALLOC_FREE \ | ||
210 | _GL_ATTRIBUTE_DEALLOC ((void (*) (void *)) free, 1) | ||
211 | # else | ||
212 | # define _GL_ATTRIBUTE_DEALLOC_FREE \ | ||
213 | _GL_ATTRIBUTE_DEALLOC (free, 1) | ||
214 | # endif | ||
215 | #endif | ||
216 | |||
217 | /* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated. | ||
218 | The compiler may warn if the entity is used. */ | ||
219 | /* Applies to: | ||
220 | - function, variable, | ||
221 | - struct, union, struct/union member, | ||
222 | - enumeration, enumeration item, | ||
223 | - typedef, | ||
224 | in C++ also: namespace, class, template specialization. */ | ||
225 | #ifndef _GL_ATTRIBUTE_DEPRECATED | ||
226 | # ifdef __has_c_attribute | ||
227 | # if __has_c_attribute (__deprecated__) | ||
228 | # define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]] | ||
229 | # endif | ||
230 | # endif | ||
231 | # if !defined _GL_ATTRIBUTE_DEPRECATED && _GL_HAS_ATTRIBUTE (deprecated) | ||
232 | # define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__)) | ||
233 | # endif | ||
234 | # ifndef _GL_ATTRIBUTE_DEPRECATED | ||
235 | # define _GL_ATTRIBUTE_DEPRECATED | ||
236 | # endif | ||
237 | #endif | ||
238 | |||
239 | /* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and | ||
240 | the function call is not optimized away. | ||
241 | _GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and | ||
242 | the function call is not optimized away. */ | ||
243 | /* Applies to: functions. */ | ||
244 | #if !(defined _GL_ATTRIBUTE_ERROR && defined _GL_ATTRIBUTE_WARNING) | ||
245 | # if _GL_HAS_ATTRIBUTE (error) | ||
246 | # define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg))) | ||
247 | # define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg))) | ||
248 | # elif _GL_HAS_ATTRIBUTE (diagnose_if) | ||
249 | # define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error"))) | ||
250 | # define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning"))) | ||
251 | # else | ||
252 | # define _GL_ATTRIBUTE_ERROR(msg) | ||
253 | # define _GL_ATTRIBUTE_WARNING(msg) | ||
254 | # endif | ||
255 | #endif | ||
256 | |||
257 | /* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain | ||
258 | visible to debuggers etc., even with '-fwhole-program'. */ | ||
259 | /* Applies to: functions, variables. */ | ||
260 | #ifndef _GL_ATTRIBUTE_EXTERNALLY_VISIBLE | ||
261 | # if _GL_HAS_ATTRIBUTE (externally_visible) | ||
262 | # define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible)) | ||
263 | # else | ||
264 | # define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE | ||
265 | # endif | ||
266 | #endif | ||
267 | |||
268 | /* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if | ||
269 | the control flow falls through to the immediately following 'case' or | ||
270 | 'default' label. The compiler should not warn in this case. */ | ||
271 | /* Applies to: Empty statement (;), inside a 'switch' statement. */ | ||
272 | /* Always expands to something. */ | ||
273 | #ifndef _GL_ATTRIBUTE_FALLTHROUGH | ||
274 | # ifdef __has_c_attribute | ||
275 | # if __has_c_attribute (__fallthrough__) | ||
276 | # define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]] | ||
277 | # endif | ||
278 | # endif | ||
279 | # if !defined _GL_ATTRIBUTE_FALLTHROUGH && _GL_HAS_ATTRIBUTE (fallthrough) | ||
280 | # define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__)) | ||
281 | # endif | ||
282 | # ifndef _GL_ATTRIBUTE_FALLTHROUGH | ||
283 | # define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0) | ||
284 | # endif | ||
285 | #endif | ||
286 | |||
287 | /* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK)) | ||
288 | declares that the STRING-INDEXth function argument is a format string of | ||
289 | style ARCHETYPE, which is one of: | ||
290 | printf, gnu_printf | ||
291 | scanf, gnu_scanf, | ||
292 | strftime, gnu_strftime, | ||
293 | strfmon, | ||
294 | or the same thing prefixed and suffixed with '__'. | ||
295 | If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK | ||
296 | are suitable for the format string. */ | ||
297 | /* Applies to: functions. */ | ||
298 | #ifndef _GL_ATTRIBUTE_FORMAT | ||
299 | # if _GL_HAS_ATTRIBUTE (format) | ||
300 | # define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec)) | ||
301 | # else | ||
302 | # define _GL_ATTRIBUTE_FORMAT(spec) | ||
303 | # endif | ||
304 | #endif | ||
305 | |||
306 | /* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other | ||
307 | compilation unit, it executes code from that unit only by return or by | ||
308 | exception handling. This declaration lets the compiler optimize that unit | ||
309 | more aggressively. */ | ||
310 | /* Applies to: functions. */ | ||
311 | #ifndef _GL_ATTRIBUTE_LEAF | ||
312 | # if _GL_HAS_ATTRIBUTE (leaf) | ||
313 | # define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__)) | ||
314 | # else | ||
315 | # define _GL_ATTRIBUTE_LEAF | ||
316 | # endif | ||
317 | #endif | ||
318 | |||
319 | /* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly | ||
320 | allocated memory. */ | ||
321 | /* Applies to: functions. */ | ||
322 | #ifndef _GL_ATTRIBUTE_MALLOC | ||
323 | # if _GL_HAS_ATTRIBUTE (malloc) | ||
324 | # define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__)) | ||
325 | # else | ||
326 | # define _GL_ATTRIBUTE_MALLOC | ||
327 | # endif | ||
328 | #endif | ||
329 | |||
330 | /* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the | ||
331 | same storage as pointers to other types. Thus this declaration disables | ||
332 | strict aliasing optimization. */ | ||
333 | /* Applies to: types. */ | ||
334 | /* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */ | ||
335 | #ifndef _GL_ATTRIBUTE_MAY_ALIAS | ||
336 | # if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C | ||
337 | # define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__)) | ||
338 | # else | ||
339 | # define _GL_ATTRIBUTE_MAY_ALIAS | ||
340 | # endif | ||
341 | #endif | ||
342 | |||
343 | /* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if | ||
344 | the entity is not used. The compiler should not warn if the entity is not | ||
345 | used. */ | ||
346 | /* Applies to: | ||
347 | - function, variable, | ||
348 | - struct, union, struct/union member, | ||
349 | - enumeration, enumeration item, | ||
350 | - typedef, | ||
351 | in C++ also: class. */ | ||
352 | /* In C++ and C23, this is spelled [[__maybe_unused__]]. | ||
353 | GCC's syntax is __attribute__ ((__unused__)). | ||
354 | clang supports both syntaxes. */ | ||
355 | #ifndef _GL_ATTRIBUTE_MAYBE_UNUSED | ||
356 | # ifdef __has_c_attribute | ||
357 | # if __has_c_attribute (__maybe_unused__) | ||
358 | # define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]] | ||
359 | # endif | ||
360 | # endif | ||
361 | # ifndef _GL_ATTRIBUTE_MAYBE_UNUSED | ||
362 | # define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED | ||
363 | # endif | ||
364 | #endif | ||
365 | /* Alternative spelling of this macro, for convenience and for | ||
366 | compatibility with glibc/include/libc-symbols.h. */ | ||
367 | #define _GL_UNUSED _GL_ATTRIBUTE_MAYBE_UNUSED | ||
368 | /* Earlier spellings of this macro. */ | ||
369 | #define _UNUSED_PARAMETER_ _GL_ATTRIBUTE_MAYBE_UNUSED | ||
370 | |||
371 | /* _GL_ATTRIBUTE_NODISCARD declares that the caller of the function should not | ||
372 | discard the return value. The compiler may warn if the caller does not use | ||
373 | the return value, unless the caller uses something like ignore_value. */ | ||
374 | /* Applies to: function, enumeration, class. */ | ||
375 | #ifndef _GL_ATTRIBUTE_NODISCARD | ||
376 | # ifdef __has_c_attribute | ||
377 | # if __has_c_attribute (__nodiscard__) | ||
378 | # define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]] | ||
379 | # endif | ||
380 | # endif | ||
381 | # if !defined _GL_ATTRIBUTE_NODISCARD && _GL_HAS_ATTRIBUTE (warn_unused_result) | ||
382 | # define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__)) | ||
383 | # endif | ||
384 | # ifndef _GL_ATTRIBUTE_NODISCARD | ||
385 | # define _GL_ATTRIBUTE_NODISCARD | ||
386 | # endif | ||
387 | #endif | ||
388 | |||
389 | /* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the | ||
390 | function. */ | ||
391 | /* Applies to: functions. */ | ||
392 | #ifndef _GL_ATTRIBUTE_NOINLINE | ||
393 | # if _GL_HAS_ATTRIBUTE (noinline) | ||
394 | # define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__)) | ||
395 | # else | ||
396 | # define _GL_ATTRIBUTE_NOINLINE | ||
397 | # endif | ||
398 | #endif | ||
399 | |||
400 | /* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,... | ||
401 | must not be NULL. | ||
402 | _GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be | ||
403 | null. */ | ||
404 | /* Applies to: functions. */ | ||
405 | #ifndef _GL_ATTRIBUTE_NONNULL | ||
406 | # if _GL_HAS_ATTRIBUTE (nonnull) | ||
407 | # define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args)) | ||
408 | # else | ||
409 | # define _GL_ATTRIBUTE_NONNULL(args) | ||
410 | # endif | ||
411 | #endif | ||
412 | |||
413 | /* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is | ||
414 | not meant to be NUL-terminated. */ | ||
415 | /* Applies to: struct/union members and variables that are arrays of element | ||
416 | type '[[un]signed] char'. */ | ||
417 | #ifndef _GL_ATTRIBUTE_NONSTRING | ||
418 | # if _GL_HAS_ATTRIBUTE (nonstring) | ||
419 | # define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__)) | ||
420 | # else | ||
421 | # define _GL_ATTRIBUTE_NONSTRING | ||
422 | # endif | ||
423 | #endif | ||
424 | |||
425 | /* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */ | ||
426 | |||
427 | /* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions. | ||
428 | */ | ||
429 | /* Applies to: functions. */ | ||
430 | #ifndef _GL_ATTRIBUTE_NOTHROW | ||
431 | # if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus | ||
432 | # define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__)) | ||
433 | # else | ||
434 | # define _GL_ATTRIBUTE_NOTHROW | ||
435 | # endif | ||
436 | #endif | ||
437 | |||
438 | /* _GL_ATTRIBUTE_PACKED declares: | ||
439 | For struct members: The member has the smallest possible alignment. | ||
440 | For struct, union, class: All members have the smallest possible alignment, | ||
441 | minimizing the memory required. */ | ||
442 | /* Applies to: struct members, struct, union, | ||
443 | in C++ also: class. */ | ||
444 | #ifndef _GL_ATTRIBUTE_PACKED | ||
445 | # if _GL_HAS_ATTRIBUTE (packed) | ||
446 | # define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__)) | ||
447 | # else | ||
448 | # define _GL_ATTRIBUTE_PACKED | ||
449 | # endif | ||
450 | #endif | ||
451 | |||
452 | /* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate | ||
453 | calls to the function with the same arguments if observable state is not | ||
454 | changed between calls. | ||
455 | This attribute is safe for a function that does not affect | ||
456 | observable state, and always returns exactly once. | ||
457 | (This attribute is looser than _GL_ATTRIBUTE_CONST.) */ | ||
458 | /* Applies to: functions. */ | ||
459 | #ifndef _GL_ATTRIBUTE_PURE | ||
460 | # if _GL_HAS_ATTRIBUTE (pure) | ||
461 | # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) | ||
462 | # else | ||
463 | # define _GL_ATTRIBUTE_PURE | ||
464 | # endif | ||
465 | #endif | ||
466 | |||
467 | /* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is | ||
468 | a non-NULL pointer. */ | ||
469 | /* Applies to: functions. */ | ||
470 | #ifndef _GL_ATTRIBUTE_RETURNS_NONNULL | ||
471 | # if _GL_HAS_ATTRIBUTE (returns_nonnull) | ||
472 | # define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__)) | ||
473 | # else | ||
474 | # define _GL_ATTRIBUTE_RETURNS_NONNULL | ||
475 | # endif | ||
476 | #endif | ||
477 | |||
478 | /* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a | ||
479 | trailing NULL argument. | ||
480 | _GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99). | ||
481 | _GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */ | ||
482 | /* Applies to: functions. */ | ||
483 | #ifndef _GL_ATTRIBUTE_SENTINEL | ||
484 | # if _GL_HAS_ATTRIBUTE (sentinel) | ||
485 | # define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos)) | ||
486 | # else | ||
487 | # define _GL_ATTRIBUTE_SENTINEL(pos) | ||
488 | # endif | ||
489 | #endif | ||
490 | |||
491 | /* A helper macro. Don't use it directly. */ | ||
492 | #ifndef _GL_ATTRIBUTE_UNUSED | ||
493 | # if _GL_HAS_ATTRIBUTE (unused) | ||
494 | # define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) | ||
495 | # else | ||
496 | # define _GL_ATTRIBUTE_UNUSED | ||
497 | # endif | ||
498 | #endif | ||
499 | |||
500 | ]dnl There is no _GL_ATTRIBUTE_VISIBILITY; see m4/visibility.m4 instead. | ||
501 | [ | ||
502 | /* _GL_UNUSED_LABEL; declares that it is not a programming mistake if the | ||
503 | immediately preceding label is not used. The compiler should not warn | ||
504 | if the label is not used. */ | ||
505 | /* Applies to: label (both in C and C++). */ | ||
506 | /* Note that g++ < 4.5 does not support the '__attribute__ ((__unused__)) ;' | ||
507 | syntax. But clang does. */ | ||
508 | #ifndef _GL_UNUSED_LABEL | ||
509 | # if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__ | ||
510 | # define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED | ||
511 | # else | ||
512 | # define _GL_UNUSED_LABEL | ||
513 | # endif | ||
64 | #endif | 514 | #endif |
65 | ]) | 515 | ]) |
516 | AH_VERBATIM([async_safe], | ||
517 | [/* The _GL_ASYNC_SAFE marker should be attached to functions that are | ||
518 | signal handlers (for signals other than SIGABRT, SIGPIPE) or can be | ||
519 | invoked from such signal handlers. Such functions have some restrictions: | ||
520 | * All functions that it calls should be marked _GL_ASYNC_SAFE as well, | ||
521 | or should be listed as async-signal-safe in POSIX | ||
522 | <https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_04> | ||
523 | section 2.4.3. Note that malloc(), sprintf(), and fwrite(), in | ||
524 | particular, are NOT async-signal-safe. | ||
525 | * All memory locations (variables and struct fields) that these functions | ||
526 | access must be marked 'volatile'. This holds for both read and write | ||
527 | accesses. Otherwise the compiler might optimize away stores to and | ||
528 | reads from such locations that occur in the program, depending on its | ||
529 | data flow analysis. For example, when the program contains a loop | ||
530 | that is intended to inspect a variable set from within a signal handler | ||
531 | while (!signal_occurred) | ||
532 | ; | ||
533 | the compiler is allowed to transform this into an endless loop if the | ||
534 | variable 'signal_occurred' is not declared 'volatile'. | ||
535 | Additionally, recall that: | ||
536 | * A signal handler should not modify errno (except if it is a handler | ||
537 | for a fatal signal and ends by raising the same signal again, thus | ||
538 | provoking the termination of the process). If it invokes a function | ||
539 | that may clobber errno, it needs to save and restore the value of | ||
540 | errno. */ | ||
541 | #define _GL_ASYNC_SAFE | ||
542 | ]) | ||
543 | AH_VERBATIM([micro_optimizations], | ||
544 | [/* _GL_CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where | ||
545 | n1 and n2 are expressions without side effects, that evaluate to real | ||
546 | numbers (excluding NaN). | ||
547 | It returns | ||
548 | 1 if n1 > n2 | ||
549 | 0 if n1 == n2 | ||
550 | -1 if n1 < n2 | ||
551 | The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional | ||
552 | jump with nearly all GCC versions up to GCC 10. | ||
553 | This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many | ||
554 | GCC versions up to GCC 9. | ||
555 | The better code (n1 > n2) - (n1 < n2) from Hacker's Delight § 2-9 | ||
556 | avoids conditional jumps in all GCC versions >= 3.4. */ | ||
557 | #define _GL_CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) | ||
558 | ]) | ||
559 | dnl Hint which direction to take regarding cross-compilation guesses: | ||
560 | dnl When a user installs a program on a platform they are not intimately | ||
561 | dnl familiar with, --enable-cross-guesses=conservative is the appropriate | ||
562 | dnl choice. It implements the "If we don't know, assume the worst" principle. | ||
563 | dnl However, when an operating system developer (on a platform which is not | ||
564 | dnl yet known to gnulib) builds packages for their platform, they want to | ||
565 | dnl expose, not hide, possible platform bugs; in this case, | ||
566 | dnl --enable-cross-guesses=risky is the appropriate choice. | ||
567 | dnl Sets the variables | ||
568 | dnl gl_cross_guess_normal (to be used when 'yes' is good and 'no' is bad), | ||
569 | dnl gl_cross_guess_inverted (to be used when 'no' is good and 'yes' is bad). | ||
570 | AC_ARG_ENABLE([cross-guesses], | ||
571 | [AS_HELP_STRING([--enable-cross-guesses={conservative|risky}], | ||
572 | [specify policy for cross-compilation guesses])], | ||
573 | [if test "x$enableval" != xconservative && test "x$enableval" != xrisky; then | ||
574 | AC_MSG_WARN([invalid argument supplied to --enable-cross-guesses]) | ||
575 | enableval=conservative | ||
576 | fi | ||
577 | gl_cross_guesses="$enableval"], | ||
578 | [gl_cross_guesses=conservative]) | ||
579 | if test $gl_cross_guesses = risky; then | ||
580 | gl_cross_guess_normal="guessing yes" | ||
581 | gl_cross_guess_inverted="guessing no" | ||
582 | else | ||
583 | gl_cross_guess_normal="guessing no" | ||
584 | gl_cross_guess_inverted="guessing yes" | ||
585 | fi | ||
66 | dnl Preparation for running test programs: | 586 | dnl Preparation for running test programs: |
67 | dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not | 587 | dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not |
68 | dnl to /dev/tty, so they can be redirected to log files. Such diagnostics | 588 | dnl to /dev/tty, so they can be redirected to log files. Such diagnostics |
@@ -71,6 +591,16 @@ AC_DEFUN([gl_COMMON_BODY], [ | |||
71 | export LIBC_FATAL_STDERR_ | 591 | export LIBC_FATAL_STDERR_ |
72 | ]) | 592 | ]) |
73 | 593 | ||
594 | # gl_MODULE_INDICATOR_INIT_VARIABLE([variablename]) | ||
595 | # gl_MODULE_INDICATOR_INIT_VARIABLE([variablename], [initialvalue]) | ||
596 | # initializes the shell variable that indicates the presence of the given module | ||
597 | # as a C preprocessor expression. | ||
598 | AC_DEFUN([gl_MODULE_INDICATOR_INIT_VARIABLE], | ||
599 | [ | ||
600 | GL_MODULE_INDICATOR_PREFIX[]_[$1]=m4_if([$2], , [0], [$2]) | ||
601 | AC_SUBST(GL_MODULE_INDICATOR_PREFIX[]_[$1]) | ||
602 | ]) | ||
603 | |||
74 | # gl_MODULE_INDICATOR_CONDITION | 604 | # gl_MODULE_INDICATOR_CONDITION |
75 | # expands to a C preprocessor expression that evaluates to 1 or 0, depending | 605 | # expands to a C preprocessor expression that evaluates to 1 or 0, depending |
76 | # whether a gnulib module that has been requested shall be considered present | 606 | # whether a gnulib module that has been requested shall be considered present |
@@ -83,9 +613,9 @@ m4_define([gl_MODULE_INDICATOR_CONDITION], [1]) | |||
83 | AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE], | 613 | AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE], |
84 | [ | 614 | [ |
85 | gl_MODULE_INDICATOR_SET_VARIABLE_AUX( | 615 | gl_MODULE_INDICATOR_SET_VARIABLE_AUX( |
86 | [GNULIB_[]m4_translit([[$1]], | 616 | [GL_MODULE_INDICATOR_PREFIX[]_GNULIB_[]m4_translit([[$1]], |
87 | [abcdefghijklmnopqrstuvwxyz./-], | 617 | [abcdefghijklmnopqrstuvwxyz./-], |
88 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])], | 618 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])], |
89 | [gl_MODULE_INDICATOR_CONDITION]) | 619 | [gl_MODULE_INDICATOR_CONDITION]) |
90 | ]) | 620 | ]) |
91 | 621 | ||
@@ -197,42 +727,20 @@ AC_DEFUN([gl_FEATURES_H], | |||
197 | AC_SUBST([HAVE_FEATURES_H]) | 727 | AC_SUBST([HAVE_FEATURES_H]) |
198 | ]) | 728 | ]) |
199 | 729 | ||
200 | # m4_foreach_w | ||
201 | # is a backport of autoconf-2.59c's m4_foreach_w. | ||
202 | # Remove this macro when we can assume autoconf >= 2.60. | ||
203 | m4_ifndef([m4_foreach_w], | ||
204 | [m4_define([m4_foreach_w], | ||
205 | [m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3])])]) | ||
206 | |||
207 | # AS_VAR_IF(VAR, VALUE, [IF-MATCH], [IF-NOT-MATCH]) | ||
208 | # ---------------------------------------------------- | ||
209 | # Backport of autoconf-2.63b's macro. | ||
210 | # Remove this macro when we can assume autoconf >= 2.64. | ||
211 | m4_ifndef([AS_VAR_IF], | ||
212 | [m4_define([AS_VAR_IF], | ||
213 | [AS_IF([test x"AS_VAR_GET([$1])" = x""$2], [$3], [$4])])]) | ||
214 | |||
215 | # gl_PROG_CC_C99 | 730 | # gl_PROG_CC_C99 |
216 | # Modifies the value of the shell variable CC in an attempt to make $CC | 731 | # Modifies the value of the shell variable CC in an attempt to make $CC |
217 | # understand ISO C99 source code. | 732 | # understand ISO C99 source code. |
218 | # This is like AC_PROG_CC_C99, except that | ||
219 | # - AC_PROG_CC_C99 did not exist in Autoconf versions < 2.60, | ||
220 | # - AC_PROG_CC_C99 does not mix well with AC_PROG_CC_STDC | ||
221 | # <http://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00367.html>, | ||
222 | # but many more packages use AC_PROG_CC_STDC than AC_PROG_CC_C99 | ||
223 | # <http://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00441.html>. | ||
224 | # Remaining problems: | ||
225 | # - When AC_PROG_CC_STDC is invoked twice, it adds the C99 enabling options | ||
226 | # to CC twice | ||
227 | # <http://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00431.html>. | ||
228 | # - AC_PROG_CC_STDC is likely to change now that C11 is an ISO standard. | ||
229 | AC_DEFUN([gl_PROG_CC_C99], | 733 | AC_DEFUN([gl_PROG_CC_C99], |
230 | [ | 734 | [ |
231 | dnl Change that version number to the minimum Autoconf version that supports | 735 | dnl Just use AC_PROG_CC_C99. |
232 | dnl mixing AC_PROG_CC_C99 calls with AC_PROG_CC_STDC calls. | 736 | dnl When AC_PROG_CC_C99 and AC_PROG_CC_STDC are used together, the substituted |
233 | m4_version_prereq([9.0], | 737 | dnl value of CC will contain the C99 enabling options twice. But this is only |
234 | [AC_REQUIRE([AC_PROG_CC_C99])], | 738 | dnl a cosmetic problem. |
235 | [AC_REQUIRE([AC_PROG_CC_STDC])]) | 739 | dnl With Autoconf >= 2.70, use AC_PROG_CC since it implies AC_PROG_CC_C99; |
740 | dnl this avoids a "warning: The macro `AC_PROG_CC_C99' is obsolete." | ||
741 | m4_version_prereq([2.70], | ||
742 | [AC_REQUIRE([AC_PROG_CC])], | ||
743 | [AC_REQUIRE([AC_PROG_CC_C99])]) | ||
236 | ]) | 744 | ]) |
237 | 745 | ||
238 | # gl_PROG_AR_RANLIB | 746 | # gl_PROG_AR_RANLIB |
@@ -243,9 +751,11 @@ AC_DEFUN([gl_PROG_AR_RANLIB], | |||
243 | [ | 751 | [ |
244 | dnl Minix 3 comes with two toolchains: The Amsterdam Compiler Kit compiler | 752 | dnl Minix 3 comes with two toolchains: The Amsterdam Compiler Kit compiler |
245 | dnl as "cc", and GCC as "gcc". They have different object file formats and | 753 | dnl as "cc", and GCC as "gcc". They have different object file formats and |
246 | dnl library formats. In particular, the GNU binutils programs ar, ranlib | 754 | dnl library formats. In particular, the GNU binutils programs ar and ranlib |
247 | dnl produce libraries that work only with gcc, not with cc. | 755 | dnl produce libraries that work only with gcc, not with cc. |
248 | AC_REQUIRE([AC_PROG_CC]) | 756 | AC_REQUIRE([AC_PROG_CC]) |
757 | dnl The '][' hides this use from 'aclocal'. | ||
758 | AC_BEFORE([$0], [A][M_PROG_AR]) | ||
249 | AC_CACHE_CHECK([for Minix Amsterdam compiler], [gl_cv_c_amsterdam_compiler], | 759 | AC_CACHE_CHECK([for Minix Amsterdam compiler], [gl_cv_c_amsterdam_compiler], |
250 | [ | 760 | [ |
251 | AC_EGREP_CPP([Amsterdam], | 761 | AC_EGREP_CPP([Amsterdam], |
@@ -257,25 +767,39 @@ Amsterdam | |||
257 | [gl_cv_c_amsterdam_compiler=yes], | 767 | [gl_cv_c_amsterdam_compiler=yes], |
258 | [gl_cv_c_amsterdam_compiler=no]) | 768 | [gl_cv_c_amsterdam_compiler=no]) |
259 | ]) | 769 | ]) |
260 | if test -z "$AR"; then | 770 | |
261 | if test $gl_cv_c_amsterdam_compiler = yes; then | 771 | dnl Don't compete with AM_PROG_AR's decision about AR/ARFLAGS if we are not |
772 | dnl building with __ACK__. | ||
773 | if test $gl_cv_c_amsterdam_compiler = yes; then | ||
774 | if test -z "$AR"; then | ||
262 | AR='cc -c.a' | 775 | AR='cc -c.a' |
263 | if test -z "$ARFLAGS"; then | ||
264 | ARFLAGS='-o' | ||
265 | fi | ||
266 | else | ||
267 | dnl Use the Automake-documented default values for AR and ARFLAGS, | ||
268 | dnl but prefer ${host}-ar over ar (useful for cross-compiling). | ||
269 | AC_CHECK_TOOL([AR], [ar], [ar]) | ||
270 | if test -z "$ARFLAGS"; then | ||
271 | ARFLAGS='cru' | ||
272 | fi | ||
273 | fi | 776 | fi |
274 | else | ||
275 | if test -z "$ARFLAGS"; then | 777 | if test -z "$ARFLAGS"; then |
276 | ARFLAGS='cru' | 778 | ARFLAGS='-o' |
277 | fi | 779 | fi |
780 | else | ||
781 | dnl AM_PROG_AR was added in automake v1.11.2. AM_PROG_AR does not AC_SUBST | ||
782 | dnl ARFLAGS variable (it is filed into Makefile.in directly by automake | ||
783 | dnl script on-demand, if not specified by ./configure of course). | ||
784 | dnl Don't AC_REQUIRE the AM_PROG_AR otherwise the code for __ACK__ above | ||
785 | dnl will be ignored. Also, pay attention to call AM_PROG_AR in else block | ||
786 | dnl because AM_PROG_AR is written so it could re-set AR variable even for | ||
787 | dnl __ACK__. It may seem like its easier to avoid calling the macro here, | ||
788 | dnl but we need to AC_SUBST both AR/ARFLAGS (thus those must have some good | ||
789 | dnl default value and automake should usually know them). | ||
790 | dnl | ||
791 | dnl The '][' hides this use from 'aclocal'. | ||
792 | m4_ifdef([A][M_PROG_AR], [A][M_PROG_AR], [:]) | ||
278 | fi | 793 | fi |
794 | |||
795 | dnl In case the code above has not helped with setting AR/ARFLAGS, use | ||
796 | dnl Automake-documented default values for AR and ARFLAGS, but prefer | ||
797 | dnl ${host}-ar over ar (useful for cross-compiling). | ||
798 | AC_CHECK_TOOL([AR], [ar], [ar]) | ||
799 | if test -z "$ARFLAGS"; then | ||
800 | ARFLAGS='cr' | ||
801 | fi | ||
802 | |||
279 | AC_SUBST([AR]) | 803 | AC_SUBST([AR]) |
280 | AC_SUBST([ARFLAGS]) | 804 | AC_SUBST([ARFLAGS]) |
281 | if test -z "$RANLIB"; then | 805 | if test -z "$RANLIB"; then |
@@ -289,46 +813,29 @@ Amsterdam | |||
289 | AC_SUBST([RANLIB]) | 813 | AC_SUBST([RANLIB]) |
290 | ]) | 814 | ]) |
291 | 815 | ||
292 | # AC_PROG_MKDIR_P | ||
293 | # is a backport of autoconf-2.60's AC_PROG_MKDIR_P, with a fix | ||
294 | # for interoperability with automake-1.9.6 from autoconf-2.62. | ||
295 | # Remove this macro when we can assume autoconf >= 2.62 or | ||
296 | # autoconf >= 2.60 && automake >= 1.10. | ||
297 | # AC_AUTOCONF_VERSION was introduced in 2.62, so use that as the witness. | ||
298 | m4_ifndef([AC_AUTOCONF_VERSION],[ | ||
299 | m4_ifdef([AC_PROG_MKDIR_P], [ | ||
300 | dnl For automake-1.9.6 && autoconf < 2.62: Ensure MKDIR_P is AC_SUBSTed. | ||
301 | m4_define([AC_PROG_MKDIR_P], | ||
302 | m4_defn([AC_PROG_MKDIR_P])[ | ||
303 | AC_SUBST([MKDIR_P])])], [ | ||
304 | dnl For autoconf < 2.60: Backport of AC_PROG_MKDIR_P. | ||
305 | AC_DEFUN_ONCE([AC_PROG_MKDIR_P], | ||
306 | [AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake | ||
307 | MKDIR_P='$(mkdir_p)' | ||
308 | AC_SUBST([MKDIR_P])])]) | ||
309 | ]) | ||
310 | |||
311 | # AC_C_RESTRICT | 816 | # AC_C_RESTRICT |
312 | # This definition overrides the AC_C_RESTRICT macro from autoconf 2.60..2.61, | 817 | # This definition is copied from post-2.70 Autoconf and overrides the |
313 | # so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++ | 818 | # AC_C_RESTRICT macro from autoconf 2.60..2.70. |
314 | # works. | 819 | m4_version_prereq([2.70.1], [], [ |
315 | # This definition can be removed once autoconf >= 2.62 can be assumed. | ||
316 | # AC_AUTOCONF_VERSION was introduced in 2.62, so use that as the witness. | ||
317 | m4_ifndef([AC_AUTOCONF_VERSION],[ | ||
318 | AC_DEFUN([AC_C_RESTRICT], | 820 | AC_DEFUN([AC_C_RESTRICT], |
319 | [AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict], | 821 | [AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict], |
320 | [ac_cv_c_restrict=no | 822 | [ac_cv_c_restrict=no |
321 | # The order here caters to the fact that C++ does not require restrict. | 823 | # Put '__restrict__' first, to avoid problems with glibc and non-GCC; see: |
322 | for ac_kw in __restrict __restrict__ _Restrict restrict; do | 824 | # https://lists.gnu.org/archive/html/bug-autoconf/2016-02/msg00006.html |
323 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM( | 825 | # Put 'restrict' last, because C++ lacks it. |
324 | [[typedef int * int_ptr; | 826 | for ac_kw in __restrict__ __restrict _Restrict restrict; do |
325 | int foo (int_ptr $ac_kw ip) { | 827 | AC_COMPILE_IFELSE( |
326 | return ip[0]; | 828 | [AC_LANG_PROGRAM( |
327 | }]], | 829 | [[typedef int *int_ptr; |
328 | [[int s[1]; | 830 | int foo (int_ptr $ac_kw ip) { return ip[0]; } |
329 | int * $ac_kw t = s; | 831 | int bar (int [$ac_kw]); /* Catch GCC bug 14050. */ |
330 | t[0] = 0; | 832 | int bar (int ip[$ac_kw]) { return ip[0]; } |
331 | return foo(t)]])], | 833 | ]], |
834 | [[int s[1]; | ||
835 | int *$ac_kw t = s; | ||
836 | t[0] = 0; | ||
837 | return foo (t) + bar (t); | ||
838 | ]])], | ||
332 | [ac_cv_c_restrict=$ac_kw]) | 839 | [ac_cv_c_restrict=$ac_kw]) |
333 | test "$ac_cv_c_restrict" != no && break | 840 | test "$ac_cv_c_restrict" != no && break |
334 | done | 841 | done |
@@ -336,22 +843,24 @@ AC_DEFUN([AC_C_RESTRICT], | |||
336 | AH_VERBATIM([restrict], | 843 | AH_VERBATIM([restrict], |
337 | [/* Define to the equivalent of the C99 'restrict' keyword, or to | 844 | [/* Define to the equivalent of the C99 'restrict' keyword, or to |
338 | nothing if this is not supported. Do not define if restrict is | 845 | nothing if this is not supported. Do not define if restrict is |
339 | supported directly. */ | 846 | supported only directly. */ |
340 | #undef restrict | 847 | #undef restrict |
341 | /* Work around a bug in Sun C++: it does not support _Restrict, even | 848 | /* Work around a bug in older versions of Sun C++, which did not |
342 | though the corresponding Sun C compiler does, which causes | 849 | #define __restrict__ or support _Restrict or __restrict__ |
343 | "#define restrict _Restrict" in the previous line. Perhaps some future | 850 | even though the corresponding Sun C compiler ended up with |
344 | version of Sun C++ will work with _Restrict; if so, it'll probably | 851 | "#define restrict _Restrict" or "#define restrict __restrict__" |
345 | define __RESTRICT, just as Sun C does. */ | 852 | in the previous line. This workaround can be removed once |
346 | #if defined __SUNPRO_CC && !defined __RESTRICT | 853 | we assume Oracle Developer Studio 12.5 (2016) or later. */ |
854 | #if defined __SUNPRO_CC && !defined __RESTRICT && !defined __restrict__ | ||
347 | # define _Restrict | 855 | # define _Restrict |
856 | # define __restrict__ | ||
348 | #endif]) | 857 | #endif]) |
349 | case $ac_cv_c_restrict in | 858 | case $ac_cv_c_restrict in |
350 | restrict) ;; | 859 | restrict) ;; |
351 | no) AC_DEFINE([restrict], []) ;; | 860 | no) AC_DEFINE([restrict], []) ;; |
352 | *) AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;; | 861 | *) AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;; |
353 | esac | 862 | esac |
354 | ]) | 863 | ])# AC_C_RESTRICT |
355 | ]) | 864 | ]) |
356 | 865 | ||
357 | # gl_BIGENDIAN | 866 | # gl_BIGENDIAN |
@@ -363,6 +872,22 @@ AC_DEFUN([gl_BIGENDIAN], | |||
363 | AC_C_BIGENDIAN | 872 | AC_C_BIGENDIAN |
364 | ]) | 873 | ]) |
365 | 874 | ||
875 | # A temporary file descriptor. | ||
876 | # Must be less than 10, because dash 0.5.8 does not support redirections | ||
877 | # with multi-digit file descriptors. | ||
878 | m4_define([GL_TMP_FD], 9) | ||
879 | |||
880 | # gl_SILENT(command) | ||
881 | # executes command, but without the normal configure output. | ||
882 | # This is useful when you want to invoke AC_CACHE_CHECK (or AC_CHECK_FUNC etc.) | ||
883 | # inside another AC_CACHE_CHECK. | ||
884 | AC_DEFUN([gl_SILENT], | ||
885 | [ | ||
886 | exec GL_TMP_FD>&AS_MESSAGE_FD AS_MESSAGE_FD>/dev/null | ||
887 | $1 | ||
888 | exec AS_MESSAGE_FD>&GL_TMP_FD GL_TMP_FD>&- | ||
889 | ]) | ||
890 | |||
366 | # gl_CACHE_VAL_SILENT(cache-id, command-to-set-it) | 891 | # gl_CACHE_VAL_SILENT(cache-id, command-to-set-it) |
367 | # is like AC_CACHE_VAL(cache-id, command-to-set-it), except that it does not | 892 | # is like AC_CACHE_VAL(cache-id, command-to-set-it), except that it does not |
368 | # output a spurious "(cached)" mark in the midst of other configure output. | 893 | # output a spurious "(cached)" mark in the midst of other configure output. |
@@ -370,8 +895,257 @@ AC_DEFUN([gl_BIGENDIAN], | |||
370 | # by an AC_MSG_CHECKING/AC_MSG_RESULT pair. | 895 | # by an AC_MSG_CHECKING/AC_MSG_RESULT pair. |
371 | AC_DEFUN([gl_CACHE_VAL_SILENT], | 896 | AC_DEFUN([gl_CACHE_VAL_SILENT], |
372 | [ | 897 | [ |
373 | saved_as_echo_n="$as_echo_n" | 898 | gl_SILENT([ |
374 | as_echo_n=':' | 899 | AC_CACHE_VAL([$1], [$2]) |
375 | AC_CACHE_VAL([$1], [$2]) | 900 | ]) |
376 | as_echo_n="$saved_as_echo_n" | 901 | ]) |
902 | |||
903 | # gl_CONDITIONAL(conditional, condition) | ||
904 | # is like AM_CONDITIONAL(conditional, condition), except that it does not | ||
905 | # produce an error | ||
906 | # configure: error: conditional "..." was never defined. | ||
907 | # Usually this means the macro was only invoked conditionally. | ||
908 | # when only invoked conditionally. Instead, in that case, both the _TRUE | ||
909 | # and the _FALSE case are disabled. | ||
910 | AC_DEFUN([gl_CONDITIONAL], | ||
911 | [ | ||
912 | pushdef([AC_CONFIG_COMMANDS_PRE], [:])dnl | ||
913 | AM_CONDITIONAL([$1], [$2]) | ||
914 | popdef([AC_CONFIG_COMMANDS_PRE])dnl | ||
915 | if test -z "${[$1]_TRUE}" && test -z "${[$1]_FALSE}"; then | ||
916 | [$1]_TRUE='#' | ||
917 | [$1]_FALSE='#' | ||
918 | fi | ||
919 | ]) | ||
920 | |||
921 | # gl_CC_ALLOW_WARNINGS | ||
922 | # sets and substitutes a variable GL_CFLAG_ALLOW_WARNINGS, to a $(CC) option | ||
923 | # that reverts a preceding '-Werror' option, if available. | ||
924 | # This is expected to be '-Wno-error' on gcc, clang (except clang/MSVC), xlclang | ||
925 | # and empty otherwise. | ||
926 | AC_DEFUN([gl_CC_ALLOW_WARNINGS], | ||
927 | [ | ||
928 | AC_REQUIRE([AC_PROG_CC]) | ||
929 | AC_CACHE_CHECK([for C compiler option to allow warnings], | ||
930 | [gl_cv_cc_wallow], | ||
931 | [rm -f conftest* | ||
932 | echo 'int dummy;' > conftest.c | ||
933 | AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c 2>conftest1.err]) >/dev/null | ||
934 | AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS -Wno-error -c conftest.c 2>conftest2.err]) >/dev/null | ||
935 | dnl Test the number of error output lines, because AIX xlc accepts the | ||
936 | dnl option '-Wno-error', just to produce a warning | ||
937 | dnl "Option -Wno-error was incorrectly specified. The option will be ignored." | ||
938 | dnl afterwards. | ||
939 | if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then | ||
940 | gl_cv_cc_wallow='-Wno-error' | ||
941 | else | ||
942 | gl_cv_cc_wallow=none | ||
943 | fi | ||
944 | rm -f conftest* | ||
945 | ]) | ||
946 | case "$gl_cv_cc_wallow" in | ||
947 | none) GL_CFLAG_ALLOW_WARNINGS='' ;; | ||
948 | *) GL_CFLAG_ALLOW_WARNINGS="$gl_cv_cc_wallow" ;; | ||
949 | esac | ||
950 | AC_SUBST([GL_CFLAG_ALLOW_WARNINGS]) | ||
951 | ]) | ||
952 | |||
953 | # gl_CXX_ALLOW_WARNINGS | ||
954 | # sets and substitutes a variable GL_CXXFLAG_ALLOW_WARNINGS, to a $(CC) option | ||
955 | # that reverts a preceding '-Werror' option, if available. | ||
956 | AC_DEFUN([gl_CXX_ALLOW_WARNINGS], | ||
957 | [ | ||
958 | dnl Requires AC_PROG_CXX or gl_PROG_ANSI_CXX. | ||
959 | if test -n "$CXX" && test "$CXX" != no; then | ||
960 | AC_CACHE_CHECK([for C++ compiler option to allow warnings], | ||
961 | [gl_cv_cxx_wallow], | ||
962 | [rm -f conftest* | ||
963 | echo 'int dummy;' > conftest.cc | ||
964 | AC_TRY_COMMAND([${CXX-c++} $CXXFLAGS $CPPFLAGS -c conftest.cc 2>conftest1.err]) >/dev/null | ||
965 | AC_TRY_COMMAND([${CXX-c++} $CXXFLAGS $CPPFLAGS -Wno-error -c conftest.cc 2>conftest2.err]) >/dev/null | ||
966 | dnl Test the number of error output lines, because AIX xlC accepts the | ||
967 | dnl option '-Wno-error', just to produce a warning | ||
968 | dnl "Option -Wno-error was incorrectly specified. The option will be ignored." | ||
969 | dnl afterwards. | ||
970 | if test $? = 0 && test `wc -l < conftest1.err` = `wc -l < conftest2.err`; then | ||
971 | gl_cv_cxx_wallow='-Wno-error' | ||
972 | else | ||
973 | gl_cv_cxx_wallow=none | ||
974 | fi | ||
975 | rm -f conftest* | ||
976 | ]) | ||
977 | case "$gl_cv_cxx_wallow" in | ||
978 | none) GL_CXXFLAG_ALLOW_WARNINGS='' ;; | ||
979 | *) GL_CXXFLAG_ALLOW_WARNINGS="$gl_cv_cxx_wallow" ;; | ||
980 | esac | ||
981 | else | ||
982 | GL_CXXFLAG_ALLOW_WARNINGS='' | ||
983 | fi | ||
984 | AC_SUBST([GL_CXXFLAG_ALLOW_WARNINGS]) | ||
985 | ]) | ||
986 | |||
987 | # gl_CC_GNULIB_WARNINGS | ||
988 | # sets and substitutes a variable GL_CFLAG_GNULIB_WARNINGS, to a $(CC) option | ||
989 | # set that enables or disables warnings as suitable for the Gnulib coding style. | ||
990 | AC_DEFUN([gl_CC_GNULIB_WARNINGS], | ||
991 | [ | ||
992 | AC_REQUIRE([gl_CC_ALLOW_WARNINGS]) | ||
993 | dnl Assume that the compiler supports -Wno-* options only if it also supports | ||
994 | dnl -Wno-error. | ||
995 | GL_CFLAG_GNULIB_WARNINGS='' | ||
996 | if test -n "$GL_CFLAG_ALLOW_WARNINGS"; then | ||
997 | dnl Enable these warning options: | ||
998 | dnl | ||
999 | dnl GCC clang | ||
1000 | dnl -Wno-cast-qual >= 3 >= 3.9 | ||
1001 | dnl -Wno-conversion >= 3 >= 3.9 | ||
1002 | dnl -Wno-float-conversion >= 4.9 >= 3.9 | ||
1003 | dnl -Wno-float-equal >= 3 >= 3.9 | ||
1004 | dnl -Wimplicit-fallthrough >= 7 >= 3.9 | ||
1005 | dnl -Wno-pedantic >= 4.8 >= 3.9 | ||
1006 | dnl -Wno-sign-compare >= 3 >= 3.9 | ||
1007 | dnl -Wno-sign-conversion >= 4.3 >= 3.9 | ||
1008 | dnl -Wno-type-limits >= 4.3 >= 3.9 | ||
1009 | dnl -Wno-undef >= 3 >= 3.9 | ||
1010 | dnl -Wno-unsuffixed-float-constants >= 4.5 | ||
1011 | dnl -Wno-unused-function >= 3 >= 3.9 | ||
1012 | dnl -Wno-unused-parameter >= 3 >= 3.9 | ||
1013 | dnl | ||
1014 | cat > conftest.c <<\EOF | ||
1015 | #if __GNUC__ >= 3 || (__clang_major__ + (__clang_minor__ >= 9) > 3) | ||
1016 | -Wno-cast-qual | ||
1017 | -Wno-conversion | ||
1018 | -Wno-float-equal | ||
1019 | -Wno-sign-compare | ||
1020 | -Wno-undef | ||
1021 | -Wno-unused-function | ||
1022 | -Wno-unused-parameter | ||
1023 | #endif | ||
1024 | #if __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) | ||
1025 | -Wno-float-conversion | ||
1026 | #endif | ||
1027 | #if __GNUC__ >= 7 || (__clang_major__ + (__clang_minor__ >= 9) > 3) | ||
1028 | -Wimplicit-fallthrough | ||
1029 | #endif | ||
1030 | #if __GNUC__ + (__GNUC_MINOR__ >= 8) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) | ||
1031 | -Wno-pedantic | ||
1032 | #endif | ||
1033 | #if __GNUC__ + (__GNUC_MINOR__ >= 3) > 4 || (__clang_major__ + (__clang_minor__ >= 9) > 3) | ||
1034 | -Wno-sign-conversion | ||
1035 | -Wno-type-limits | ||
1036 | #endif | ||
1037 | #if __GNUC__ + (__GNUC_MINOR__ >= 5) > 4 | ||
1038 | -Wno-unsuffixed-float-constants | ||
1039 | #endif | ||
1040 | EOF | ||
1041 | gl_command="$CC $CFLAGS $CPPFLAGS -E conftest.c > conftest.out" | ||
1042 | if AC_TRY_EVAL([gl_command]); then | ||
1043 | gl_options=`grep -v '#' conftest.out` | ||
1044 | for word in $gl_options; do | ||
1045 | GL_CFLAG_GNULIB_WARNINGS="$GL_CFLAG_GNULIB_WARNINGS $word" | ||
1046 | done | ||
1047 | fi | ||
1048 | rm -f conftest.c conftest.out | ||
1049 | fi | ||
1050 | AC_SUBST([GL_CFLAG_GNULIB_WARNINGS]) | ||
1051 | ]) | ||
1052 | |||
1053 | dnl gl_CONDITIONAL_HEADER([foo.h]) | ||
1054 | dnl takes a shell variable GL_GENERATE_FOO_H (with value true or false) as input | ||
1055 | dnl and produces | ||
1056 | dnl - an AC_SUBSTed variable FOO_H that is either a file name or empty, based | ||
1057 | dnl on whether GL_GENERATE_FOO_H is true or false, | ||
1058 | dnl - an Automake conditional GL_GENERATE_FOO_H that evaluates to the value of | ||
1059 | dnl the shell variable GL_GENERATE_FOO_H. | ||
1060 | AC_DEFUN([gl_CONDITIONAL_HEADER], | ||
1061 | [ | ||
1062 | m4_pushdef([gl_header_name], AS_TR_SH(m4_toupper($1))) | ||
1063 | m4_pushdef([gl_generate_var], [GL_GENERATE_]AS_TR_SH(m4_toupper($1))) | ||
1064 | m4_pushdef([gl_generate_cond], [GL_GENERATE_]AS_TR_SH(m4_toupper($1))) | ||
1065 | case "$gl_generate_var" in | ||
1066 | false) gl_header_name='' ;; | ||
1067 | true) | ||
1068 | dnl It is OK to use a .h file in lib/ from within tests/, but not vice | ||
1069 | dnl versa. | ||
1070 | if test -z "$gl_header_name"; then | ||
1071 | gl_header_name="${gl_source_base_prefix}$1" | ||
1072 | fi | ||
1073 | ;; | ||
1074 | *) echo "*** gl_generate_var is not set correctly" 1>&2; exit 1 ;; | ||
1075 | esac | ||
1076 | AC_SUBST(gl_header_name) | ||
1077 | gl_CONDITIONAL(gl_generate_cond, [$gl_generate_var]) | ||
1078 | m4_popdef([gl_generate_cond]) | ||
1079 | m4_popdef([gl_generate_var]) | ||
1080 | m4_popdef([gl_header_name]) | ||
1081 | ]) | ||
1082 | |||
1083 | dnl Expands to some code for use in .c programs that, on native Windows, defines | ||
1084 | dnl the Microsoft deprecated alias function names to the underscore-prefixed | ||
1085 | dnl actual function names. With this macro, these function names are available | ||
1086 | dnl without linking with '-loldnames' and without generating warnings. | ||
1087 | dnl Usage: Use it after all system header files are included. | ||
1088 | dnl #include <...> | ||
1089 | dnl #include <...> | ||
1090 | dnl ]GL_MDA_DEFINES[ | ||
1091 | dnl ... | ||
1092 | AC_DEFUN([GL_MDA_DEFINES],[ | ||
1093 | AC_REQUIRE([_GL_MDA_DEFINES]) | ||
1094 | [$gl_mda_defines] | ||
1095 | ]) | ||
1096 | AC_DEFUN([_GL_MDA_DEFINES], | ||
1097 | [gl_mda_defines=' | ||
1098 | #if defined _WIN32 && !defined __CYGWIN__ | ||
1099 | #define access _access | ||
1100 | #define chdir _chdir | ||
1101 | #define chmod _chmod | ||
1102 | #define close _close | ||
1103 | #define creat _creat | ||
1104 | #define dup _dup | ||
1105 | #define dup2 _dup2 | ||
1106 | #define ecvt _ecvt | ||
1107 | #define execl _execl | ||
1108 | #define execle _execle | ||
1109 | #define execlp _execlp | ||
1110 | #define execv _execv | ||
1111 | #define execve _execve | ||
1112 | #define execvp _execvp | ||
1113 | #define execvpe _execvpe | ||
1114 | #define fcloseall _fcloseall | ||
1115 | #define fcvt _fcvt | ||
1116 | #define fdopen _fdopen | ||
1117 | #define fileno _fileno | ||
1118 | #define gcvt _gcvt | ||
1119 | #define getcwd _getcwd | ||
1120 | #define getpid _getpid | ||
1121 | #define getw _getw | ||
1122 | #define isatty _isatty | ||
1123 | #define j0 _j0 | ||
1124 | #define j1 _j1 | ||
1125 | #define jn _jn | ||
1126 | #define lfind _lfind | ||
1127 | #define lsearch _lsearch | ||
1128 | #define lseek _lseek | ||
1129 | #define memccpy _memccpy | ||
1130 | #define mkdir _mkdir | ||
1131 | #define mktemp _mktemp | ||
1132 | #define open _open | ||
1133 | #define putenv _putenv | ||
1134 | #define putw _putw | ||
1135 | #define read _read | ||
1136 | #define rmdir _rmdir | ||
1137 | #define strdup _strdup | ||
1138 | #define swab _swab | ||
1139 | #define tempnam _tempnam | ||
1140 | #define tzset _tzset | ||
1141 | #define umask _umask | ||
1142 | #define unlink _unlink | ||
1143 | #define utime _utime | ||
1144 | #define wcsdup _wcsdup | ||
1145 | #define write _write | ||
1146 | #define y0 _y0 | ||
1147 | #define y1 _y1 | ||
1148 | #define yn _yn | ||
1149 | #endif | ||
1150 | ' | ||
377 | ]) | 1151 | ]) |
diff --git a/gl/m4/gnulib-comp.m4 b/gl/m4/gnulib-comp.m4 index 9a4f5027..4764622e 100644 --- a/gl/m4/gnulib-comp.m4 +++ b/gl/m4/gnulib-comp.m4 | |||
@@ -1,9 +1,9 @@ | |||
1 | # DO NOT EDIT! GENERATED AUTOMATICALLY! | 1 | # DO NOT EDIT! GENERATED AUTOMATICALLY! |
2 | # Copyright (C) 2002-2013 Free Software Foundation, Inc. | 2 | # Copyright (C) 2002-2023 Free Software Foundation, Inc. |
3 | # | 3 | # |
4 | # This file is free software; you can redistribute it and/or modify | 4 | # This file is free software; you can redistribute it and/or modify |
5 | # it under the terms of the GNU General Public License as published by | 5 | # it under the terms of the GNU General Public License as published by |
6 | # the Free Software Foundation; either version 3 of the License, or | 6 | # the Free Software Foundation, either version 3 of the License, or |
7 | # (at your option) any later version. | 7 | # (at your option) any later version. |
8 | # | 8 | # |
9 | # This file is distributed in the hope that it will be useful, | 9 | # This file is distributed in the hope that it will be useful, |
@@ -12,7 +12,7 @@ | |||
12 | # GNU General Public License for more details. | 12 | # GNU General Public License for more details. |
13 | # | 13 | # |
14 | # You should have received a copy of the GNU General Public License | 14 | # You should have received a copy of the GNU General Public License |
15 | # along with this file. If not, see <http://www.gnu.org/licenses/>. | 15 | # along with this file. If not, see <https://www.gnu.org/licenses/>. |
16 | # | 16 | # |
17 | # As a special exception to the GNU General Public License, | 17 | # As a special exception to the GNU General Public License, |
18 | # this file may be distributed as part of a program that | 18 | # this file may be distributed as part of a program that |
@@ -37,50 +37,91 @@ AC_DEFUN([gl_EARLY], | |||
37 | m4_pattern_allow([^gl_ES$])dnl a valid locale name | 37 | m4_pattern_allow([^gl_ES$])dnl a valid locale name |
38 | m4_pattern_allow([^gl_LIBOBJS$])dnl a variable | 38 | m4_pattern_allow([^gl_LIBOBJS$])dnl a variable |
39 | m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable | 39 | m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable |
40 | |||
41 | # Pre-early section. | ||
42 | AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) | ||
40 | AC_REQUIRE([gl_PROG_AR_RANLIB]) | 43 | AC_REQUIRE([gl_PROG_AR_RANLIB]) |
41 | AC_REQUIRE([AM_PROG_CC_C_O]) | 44 | |
45 | # Code from module absolute-header: | ||
42 | # Code from module alloca-opt: | 46 | # Code from module alloca-opt: |
43 | # Code from module arpa_inet: | 47 | # Code from module arpa_inet: |
48 | # Code from module assert-h: | ||
49 | # Code from module attribute: | ||
44 | # Code from module base64: | 50 | # Code from module base64: |
51 | # Code from module basename-lgpl: | ||
45 | # Code from module btowc: | 52 | # Code from module btowc: |
46 | # Code from module configmake: | 53 | # Code from module builtin-expect: |
47 | # Code from module crypto/sha1: | 54 | # Code from module byteswap: |
55 | # Code from module c99: | ||
56 | # Code from module calloc-gnu: | ||
57 | # Code from module calloc-posix: | ||
58 | # Code from module cloexec: | ||
59 | # Code from module close: | ||
60 | # Code from module crypto/af_alg: | ||
61 | # Code from module crypto/sha256: | ||
62 | # Code from module crypto/sha256-buffer: | ||
48 | # Code from module dirname: | 63 | # Code from module dirname: |
49 | # Code from module dirname-lgpl: | 64 | # Code from module dirname-lgpl: |
50 | # Code from module dosname: | ||
51 | # Code from module double-slash-root: | 65 | # Code from module double-slash-root: |
66 | # Code from module dup2: | ||
52 | # Code from module environ: | 67 | # Code from module environ: |
53 | # Code from module errno: | 68 | # Code from module errno: |
54 | # Code from module error: | 69 | # Code from module error: |
55 | # Code from module exitfail: | 70 | # Code from module exitfail: |
56 | # Code from module extensions: | 71 | # Code from module extensions: |
57 | AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) | ||
58 | # Code from module extern-inline: | 72 | # Code from module extern-inline: |
73 | # Code from module fcntl: | ||
74 | # Code from module fcntl-h: | ||
59 | # Code from module fd-hook: | 75 | # Code from module fd-hook: |
76 | # Code from module fflush: | ||
77 | AC_REQUIRE([gl_SET_LARGEFILE_SOURCE]) | ||
78 | # Code from module filename: | ||
60 | # Code from module float: | 79 | # Code from module float: |
61 | # Code from module floorf: | 80 | # Code from module floorf: |
81 | # Code from module fopen: | ||
82 | # Code from module fopen-gnu: | ||
83 | # Code from module fpurge: | ||
84 | # Code from module freading: | ||
85 | # Code from module free-posix: | ||
86 | # Code from module fseek: | ||
87 | # Code from module fseeko: | ||
88 | AC_REQUIRE([gl_SET_LARGEFILE_SOURCE]) | ||
89 | # Code from module fstat: | ||
62 | # Code from module fsusage: | 90 | # Code from module fsusage: |
63 | # Code from module full-read: | 91 | # Code from module ftell: |
92 | # Code from module ftello: | ||
93 | AC_REQUIRE([gl_SET_LARGEFILE_SOURCE]) | ||
94 | # Code from module gen-header: | ||
64 | # Code from module getaddrinfo: | 95 | # Code from module getaddrinfo: |
96 | # Code from module getdelim: | ||
97 | # Code from module getdtablesize: | ||
65 | # Code from module gethostname: | 98 | # Code from module gethostname: |
99 | # Code from module getline: | ||
66 | # Code from module getloadavg: | 100 | # Code from module getloadavg: |
67 | # Code from module getopt-gnu: | 101 | # Code from module getopt-gnu: |
68 | # Code from module getopt-posix: | 102 | # Code from module getopt-posix: |
69 | # Code from module gettext: | 103 | # Code from module getprogname: |
70 | # Code from module gettext-h: | 104 | # Code from module gettext-h: |
71 | # Code from module havelib: | 105 | # Code from module glibc-internal/dynarray: |
106 | # Code from module hard-locale: | ||
72 | # Code from module hostent: | 107 | # Code from module hostent: |
108 | # Code from module ialloc: | ||
73 | # Code from module idpriv-droptemp: | 109 | # Code from module idpriv-droptemp: |
110 | # Code from module idx: | ||
74 | # Code from module include_next: | 111 | # Code from module include_next: |
75 | # Code from module inet_ntop: | 112 | # Code from module inet_ntop: |
76 | # Code from module intprops: | 113 | # Code from module intprops: |
114 | # Code from module inttypes-incomplete: | ||
77 | # Code from module langinfo: | 115 | # Code from module langinfo: |
78 | # Code from module largefile: | 116 | # Code from module largefile: |
79 | AC_REQUIRE([AC_SYS_LARGEFILE]) | 117 | AC_REQUIRE([AC_SYS_LARGEFILE]) |
118 | # Code from module libc-config: | ||
119 | # Code from module limits-h: | ||
80 | # Code from module localcharset: | 120 | # Code from module localcharset: |
81 | # Code from module locale: | 121 | # Code from module locale: |
82 | # Code from module localeconv: | 122 | # Code from module localeconv: |
83 | # Code from module lock: | 123 | # Code from module lock: |
124 | # Code from module lseek: | ||
84 | # Code from module malloc-gnu: | 125 | # Code from module malloc-gnu: |
85 | # Code from module malloc-posix: | 126 | # Code from module malloc-posix: |
86 | # Code from module malloca: | 127 | # Code from module malloca: |
@@ -89,6 +130,7 @@ AC_DEFUN([gl_EARLY], | |||
89 | # Code from module mbsinit: | 130 | # Code from module mbsinit: |
90 | # Code from module mbtowc: | 131 | # Code from module mbtowc: |
91 | # Code from module memchr: | 132 | # Code from module memchr: |
133 | # Code from module minmax: | ||
92 | # Code from module mktime: | 134 | # Code from module mktime: |
93 | # Code from module mktime-internal: | 135 | # Code from module mktime-internal: |
94 | # Code from module mountlist: | 136 | # Code from module mountlist: |
@@ -99,11 +141,15 @@ AC_DEFUN([gl_EARLY], | |||
99 | # Code from module netinet_in: | 141 | # Code from module netinet_in: |
100 | # Code from module nl_langinfo: | 142 | # Code from module nl_langinfo: |
101 | # Code from module nocrash: | 143 | # Code from module nocrash: |
102 | # Code from module read: | 144 | # Code from module open: |
145 | # Code from module pathmax: | ||
146 | # Code from module realloc-gnu: | ||
147 | # Code from module realloc-posix: | ||
148 | # Code from module reallocarray: | ||
103 | # Code from module regex: | 149 | # Code from module regex: |
104 | # Code from module safe-read: | ||
105 | # Code from module servent: | 150 | # Code from module servent: |
106 | # Code from module setenv: | 151 | # Code from module setenv: |
152 | # Code from module setlocale-null: | ||
107 | # Code from module size_max: | 153 | # Code from module size_max: |
108 | # Code from module snippet/_Noreturn: | 154 | # Code from module snippet/_Noreturn: |
109 | # Code from module snippet/arg-nonnull: | 155 | # Code from module snippet/arg-nonnull: |
@@ -114,8 +160,12 @@ AC_DEFUN([gl_EARLY], | |||
114 | # Code from module sockets: | 160 | # Code from module sockets: |
115 | # Code from module socklen: | 161 | # Code from module socklen: |
116 | # Code from module ssize_t: | 162 | # Code from module ssize_t: |
163 | # Code from module stat: | ||
164 | # Code from module stat-time: | ||
165 | # Code from module std-gnu11: | ||
117 | # Code from module stdalign: | 166 | # Code from module stdalign: |
118 | # Code from module stdbool: | 167 | # Code from module stdbool: |
168 | # Code from module stdckdint: | ||
119 | # Code from module stddef: | 169 | # Code from module stddef: |
120 | # Code from module stdint: | 170 | # Code from module stdint: |
121 | # Code from module stdio: | 171 | # Code from module stdio: |
@@ -128,11 +178,10 @@ AC_DEFUN([gl_EARLY], | |||
128 | # Code from module strerror-override: | 178 | # Code from module strerror-override: |
129 | # Code from module string: | 179 | # Code from module string: |
130 | # Code from module strings: | 180 | # Code from module strings: |
131 | # Code from module strndup: | ||
132 | # Code from module strnlen: | ||
133 | # Code from module strsep: | 181 | # Code from module strsep: |
134 | # Code from module strstr-simple: | 182 | # Code from module strstr-simple: |
135 | # Code from module sys_socket: | 183 | # Code from module sys_socket: |
184 | # Code from module sys_stat: | ||
136 | # Code from module sys_types: | 185 | # Code from module sys_types: |
137 | # Code from module sys_uio: | 186 | # Code from module sys_uio: |
138 | # Code from module threadlib: | 187 | # Code from module threadlib: |
@@ -141,7 +190,9 @@ AC_DEFUN([gl_EARLY], | |||
141 | # Code from module time_r: | 190 | # Code from module time_r: |
142 | # Code from module timegm: | 191 | # Code from module timegm: |
143 | # Code from module unistd: | 192 | # Code from module unistd: |
193 | # Code from module unlocked-io-internal: | ||
144 | # Code from module unsetenv: | 194 | # Code from module unsetenv: |
195 | # Code from module vararrays: | ||
145 | # Code from module vasnprintf: | 196 | # Code from module vasnprintf: |
146 | # Code from module vasprintf: | 197 | # Code from module vasprintf: |
147 | # Code from module verify: | 198 | # Code from module verify: |
@@ -149,11 +200,14 @@ AC_DEFUN([gl_EARLY], | |||
149 | # Code from module wchar: | 200 | # Code from module wchar: |
150 | # Code from module wcrtomb: | 201 | # Code from module wcrtomb: |
151 | # Code from module wctype-h: | 202 | # Code from module wctype-h: |
203 | # Code from module windows-mutex: | ||
204 | # Code from module windows-once: | ||
205 | # Code from module windows-recmutex: | ||
206 | # Code from module windows-rwlock: | ||
152 | # Code from module xalloc: | 207 | # Code from module xalloc: |
153 | # Code from module xalloc-die: | 208 | # Code from module xalloc-die: |
154 | # Code from module xalloc-oversized: | 209 | # Code from module xalloc-oversized: |
155 | # Code from module xsize: | 210 | # Code from module xsize: |
156 | # Code from module xstrndup: | ||
157 | ]) | 211 | ]) |
158 | 212 | ||
159 | # This macro should be invoked from ./configure.ac, in the section | 213 | # This macro should be invoked from ./configure.ac, in the section |
@@ -170,154 +224,300 @@ AC_DEFUN([gl_INIT], | |||
170 | m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES])) | 224 | m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES])) |
171 | m4_pushdef([gl_LIBSOURCES_LIST], []) | 225 | m4_pushdef([gl_LIBSOURCES_LIST], []) |
172 | m4_pushdef([gl_LIBSOURCES_DIR], []) | 226 | m4_pushdef([gl_LIBSOURCES_DIR], []) |
227 | m4_pushdef([GL_MACRO_PREFIX], [gl]) | ||
228 | m4_pushdef([GL_MODULE_INDICATOR_PREFIX], [GL]) | ||
173 | gl_COMMON | 229 | gl_COMMON |
174 | gl_source_base='gl' | 230 | gl_source_base='gl' |
231 | gl_source_base_prefix= | ||
175 | gl_FUNC_ALLOCA | 232 | gl_FUNC_ALLOCA |
176 | gl_HEADER_ARPA_INET | 233 | gl_CONDITIONAL_HEADER([alloca.h]) |
234 | AC_PROG_MKDIR_P | ||
235 | gl_ARPA_INET_H | ||
236 | gl_ARPA_INET_H_REQUIRE_DEFAULTS | ||
237 | AC_PROG_MKDIR_P | ||
238 | gl_ASSERT_H | ||
239 | gl_CONDITIONAL_HEADER([assert.h]) | ||
177 | AC_PROG_MKDIR_P | 240 | AC_PROG_MKDIR_P |
178 | gl_FUNC_BASE64 | 241 | gl_FUNC_BASE64 |
179 | gl_FUNC_BTOWC | 242 | gl_FUNC_BTOWC |
180 | if test $HAVE_BTOWC = 0 || test $REPLACE_BTOWC = 1; then | 243 | gl_CONDITIONAL([GL_COND_OBJ_BTOWC], |
181 | AC_LIBOBJ([btowc]) | 244 | [test $HAVE_BTOWC = 0 || test $REPLACE_BTOWC = 1]) |
245 | AM_COND_IF([GL_COND_OBJ_BTOWC], [ | ||
182 | gl_PREREQ_BTOWC | 246 | gl_PREREQ_BTOWC |
183 | fi | 247 | ]) |
184 | gl_WCHAR_MODULE_INDICATOR([btowc]) | 248 | gl_WCHAR_MODULE_INDICATOR([btowc]) |
185 | gl_CONFIGMAKE_PREP | 249 | gl___BUILTIN_EXPECT |
186 | gl_SHA1 | 250 | gl_BYTESWAP |
187 | gl_DIRNAME | 251 | gl_CONDITIONAL_HEADER([byteswap.h]) |
252 | AC_PROG_MKDIR_P | ||
253 | gl_FUNC_CALLOC_GNU | ||
254 | if test $REPLACE_CALLOC_FOR_CALLOC_GNU = 1; then | ||
255 | AC_LIBOBJ([calloc]) | ||
256 | fi | ||
257 | gl_STDLIB_MODULE_INDICATOR([calloc-gnu]) | ||
258 | gl_FUNC_CALLOC_POSIX | ||
259 | if test $REPLACE_CALLOC_FOR_CALLOC_POSIX = 1; then | ||
260 | AC_LIBOBJ([calloc]) | ||
261 | fi | ||
262 | gl_STDLIB_MODULE_INDICATOR([calloc-posix]) | ||
263 | gl_MODULE_INDICATOR_FOR_TESTS([cloexec]) | ||
264 | gl_FUNC_CLOSE | ||
265 | gl_CONDITIONAL([GL_COND_OBJ_CLOSE], [test $REPLACE_CLOSE = 1]) | ||
266 | gl_UNISTD_MODULE_INDICATOR([close]) | ||
267 | gl_AF_ALG | ||
268 | AC_REQUIRE([AC_C_RESTRICT]) | ||
269 | gl_SHA256 | ||
188 | gl_MODULE_INDICATOR([dirname]) | 270 | gl_MODULE_INDICATOR([dirname]) |
189 | gl_DIRNAME_LGPL | ||
190 | gl_DOUBLE_SLASH_ROOT | 271 | gl_DOUBLE_SLASH_ROOT |
272 | gl_FUNC_DUP2 | ||
273 | gl_CONDITIONAL([GL_COND_OBJ_DUP2], [test $REPLACE_DUP2 = 1]) | ||
274 | AM_COND_IF([GL_COND_OBJ_DUP2], [ | ||
275 | gl_PREREQ_DUP2 | ||
276 | ]) | ||
277 | gl_UNISTD_MODULE_INDICATOR([dup2]) | ||
191 | gl_ENVIRON | 278 | gl_ENVIRON |
192 | gl_UNISTD_MODULE_INDICATOR([environ]) | 279 | gl_UNISTD_MODULE_INDICATOR([environ]) |
193 | gl_HEADER_ERRNO_H | 280 | gl_HEADER_ERRNO_H |
281 | gl_CONDITIONAL_HEADER([errno.h]) | ||
282 | AC_PROG_MKDIR_P | ||
194 | gl_ERROR | 283 | gl_ERROR |
195 | if test $ac_cv_lib_error_at_line = no; then | 284 | gl_CONDITIONAL([GL_COND_OBJ_ERROR], [test "$ac_cv_lib_error_at_line" = no]) |
196 | AC_LIBOBJ([error]) | 285 | AM_COND_IF([GL_COND_OBJ_ERROR], [ |
197 | gl_PREREQ_ERROR | 286 | gl_PREREQ_ERROR |
198 | fi | 287 | ]) |
199 | m4_ifdef([AM_XGETTEXT_OPTION], | 288 | m4_ifdef([AM_XGETTEXT_OPTION], |
200 | [AM_][XGETTEXT_OPTION([--flag=error:3:c-format]) | 289 | [AM_][XGETTEXT_OPTION([--flag=error:3:c-format]) |
201 | AM_][XGETTEXT_OPTION([--flag=error_at_line:5:c-format])]) | 290 | AM_][XGETTEXT_OPTION([--flag=error_at_line:5:c-format])]) |
202 | AC_REQUIRE([gl_EXTERN_INLINE]) | 291 | AC_REQUIRE([gl_EXTERN_INLINE]) |
292 | gl_FUNC_FCNTL | ||
293 | gl_CONDITIONAL([GL_COND_OBJ_FCNTL], | ||
294 | [test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1]) | ||
295 | gl_FCNTL_MODULE_INDICATOR([fcntl]) | ||
296 | gl_FCNTL_H | ||
297 | gl_FCNTL_H_REQUIRE_DEFAULTS | ||
298 | AC_PROG_MKDIR_P | ||
299 | gl_FUNC_FFLUSH | ||
300 | gl_CONDITIONAL([GL_COND_OBJ_FFLUSH], [test $REPLACE_FFLUSH = 1]) | ||
301 | AM_COND_IF([GL_COND_OBJ_FFLUSH], [ | ||
302 | gl_PREREQ_FFLUSH | ||
303 | ]) | ||
304 | gl_MODULE_INDICATOR([fflush]) | ||
305 | gl_STDIO_MODULE_INDICATOR([fflush]) | ||
203 | gl_FLOAT_H | 306 | gl_FLOAT_H |
204 | if test $REPLACE_FLOAT_LDBL = 1; then | 307 | gl_CONDITIONAL_HEADER([float.h]) |
205 | AC_LIBOBJ([float]) | 308 | AC_PROG_MKDIR_P |
206 | fi | 309 | gl_CONDITIONAL([GL_COND_OBJ_FLOAT], [test $REPLACE_FLOAT_LDBL = 1]) |
207 | if test $REPLACE_ITOLD = 1; then | 310 | gl_CONDITIONAL([GL_COND_OBJ_ITOLD], [test $REPLACE_ITOLD = 1]) |
208 | AC_LIBOBJ([itold]) | ||
209 | fi | ||
210 | gl_FUNC_FLOORF | 311 | gl_FUNC_FLOORF |
211 | if test $HAVE_DECL_FLOORF = 0 || test $REPLACE_FLOORF = 1; then | 312 | gl_CONDITIONAL([GL_COND_OBJ_FLOORF], |
212 | AC_LIBOBJ([floorf]) | 313 | [test $HAVE_DECL_FLOORF = 0 || test $REPLACE_FLOORF = 1]) |
213 | fi | ||
214 | gl_MATH_MODULE_INDICATOR([floorf]) | 314 | gl_MATH_MODULE_INDICATOR([floorf]) |
315 | gl_FUNC_FOPEN | ||
316 | if test $REPLACE_FOPEN = 1; then | ||
317 | AC_LIBOBJ([fopen]) | ||
318 | gl_PREREQ_FOPEN | ||
319 | fi | ||
320 | gl_STDIO_MODULE_INDICATOR([fopen]) | ||
321 | gl_FUNC_FOPEN_GNU | ||
322 | if test $REPLACE_FOPEN_FOR_FOPEN_GNU = 1; then | ||
323 | AC_LIBOBJ([fopen]) | ||
324 | gl_PREREQ_FOPEN | ||
325 | fi | ||
326 | gl_MODULE_INDICATOR([fopen-gnu]) | ||
327 | gl_STDIO_MODULE_INDICATOR([fopen-gnu]) | ||
328 | gl_FUNC_FPURGE | ||
329 | gl_CONDITIONAL([GL_COND_OBJ_FPURGE], | ||
330 | [test $HAVE_FPURGE = 0 || test $REPLACE_FPURGE = 1]) | ||
331 | gl_STDIO_MODULE_INDICATOR([fpurge]) | ||
332 | gl_FUNC_FREADING | ||
333 | gl_FUNC_FREE | ||
334 | gl_CONDITIONAL([GL_COND_OBJ_FREE], [test $REPLACE_FREE = 1]) | ||
335 | AM_COND_IF([GL_COND_OBJ_FREE], [ | ||
336 | gl_PREREQ_FREE | ||
337 | ]) | ||
338 | gl_STDLIB_MODULE_INDICATOR([free-posix]) | ||
339 | gl_FUNC_FSEEK | ||
340 | gl_CONDITIONAL([GL_COND_OBJ_FSEEK], [test $REPLACE_FSEEK = 1]) | ||
341 | gl_STDIO_MODULE_INDICATOR([fseek]) | ||
342 | gl_FUNC_FSEEKO | ||
343 | gl_CONDITIONAL([GL_COND_OBJ_FSEEKO], | ||
344 | [test $HAVE_FSEEKO = 0 || test $REPLACE_FSEEKO = 1]) | ||
345 | AM_COND_IF([GL_COND_OBJ_FSEEKO], [ | ||
346 | gl_PREREQ_FSEEKO | ||
347 | ]) | ||
348 | gl_STDIO_MODULE_INDICATOR([fseeko]) | ||
349 | gl_FUNC_FSTAT | ||
350 | gl_CONDITIONAL([GL_COND_OBJ_FSTAT], [test $REPLACE_FSTAT = 1]) | ||
351 | AM_COND_IF([GL_COND_OBJ_FSTAT], [ | ||
352 | case "$host_os" in | ||
353 | mingw*) | ||
354 | AC_LIBOBJ([stat-w32]) | ||
355 | ;; | ||
356 | esac | ||
357 | gl_PREREQ_FSTAT | ||
358 | ]) | ||
359 | gl_SYS_STAT_MODULE_INDICATOR([fstat]) | ||
215 | gl_FSUSAGE | 360 | gl_FSUSAGE |
216 | if test $gl_cv_fs_space = yes; then | 361 | gl_CONDITIONAL([GL_COND_OBJ_FSUSAGE], [test $gl_cv_fs_space = yes]) |
217 | AC_LIBOBJ([fsusage]) | 362 | AM_COND_IF([GL_COND_OBJ_FSUSAGE], [ |
218 | gl_PREREQ_FSUSAGE_EXTRA | 363 | gl_PREREQ_FSUSAGE_EXTRA |
219 | fi | 364 | ]) |
365 | gl_FUNC_FTELL | ||
366 | gl_CONDITIONAL([GL_COND_OBJ_FTELL], [test $REPLACE_FTELL = 1]) | ||
367 | gl_STDIO_MODULE_INDICATOR([ftell]) | ||
368 | gl_FUNC_FTELLO | ||
369 | gl_CONDITIONAL([GL_COND_OBJ_FTELLO], | ||
370 | [test $HAVE_FTELLO = 0 || test $REPLACE_FTELLO = 1]) | ||
371 | AM_COND_IF([GL_COND_OBJ_FTELLO], [ | ||
372 | gl_PREREQ_FTELLO | ||
373 | ]) | ||
374 | gl_STDIO_MODULE_INDICATOR([ftello]) | ||
220 | gl_GETADDRINFO | 375 | gl_GETADDRINFO |
221 | if test $HAVE_GETADDRINFO = 0; then | 376 | gl_CONDITIONAL([GL_COND_OBJ_GETADDRINFO], |
222 | AC_LIBOBJ([getaddrinfo]) | 377 | [test $HAVE_GETADDRINFO = 0 || test $REPLACE_GETADDRINFO = 1]) |
223 | fi | 378 | gl_CONDITIONAL([GL_COND_OBJ_GAI_STRERROR], |
224 | if test $HAVE_DECL_GAI_STRERROR = 0 || test $REPLACE_GAI_STRERROR = 1; then | 379 | [test $HAVE_DECL_GAI_STRERROR = 0 || test $REPLACE_GAI_STRERROR = 1]) |
225 | AC_LIBOBJ([gai_strerror]) | ||
226 | fi | ||
227 | gl_NETDB_MODULE_INDICATOR([getaddrinfo]) | 380 | gl_NETDB_MODULE_INDICATOR([getaddrinfo]) |
381 | gl_FUNC_GETDELIM | ||
382 | gl_CONDITIONAL([GL_COND_OBJ_GETDELIM], | ||
383 | [test $HAVE_GETDELIM = 0 || test $REPLACE_GETDELIM = 1]) | ||
384 | AM_COND_IF([GL_COND_OBJ_GETDELIM], [ | ||
385 | gl_PREREQ_GETDELIM | ||
386 | ]) | ||
387 | gl_STDIO_MODULE_INDICATOR([getdelim]) | ||
388 | gl_FUNC_GETDTABLESIZE | ||
389 | gl_CONDITIONAL([GL_COND_OBJ_GETDTABLESIZE], | ||
390 | [test $HAVE_GETDTABLESIZE = 0 || test $REPLACE_GETDTABLESIZE = 1]) | ||
391 | AM_COND_IF([GL_COND_OBJ_GETDTABLESIZE], [ | ||
392 | gl_PREREQ_GETDTABLESIZE | ||
393 | ]) | ||
394 | gl_UNISTD_MODULE_INDICATOR([getdtablesize]) | ||
228 | gl_FUNC_GETHOSTNAME | 395 | gl_FUNC_GETHOSTNAME |
229 | if test $HAVE_GETHOSTNAME = 0; then | 396 | gl_CONDITIONAL([GL_COND_OBJ_GETHOSTNAME], [test $HAVE_GETHOSTNAME = 0]) |
230 | AC_LIBOBJ([gethostname]) | 397 | AM_COND_IF([GL_COND_OBJ_GETHOSTNAME], [ |
231 | gl_PREREQ_GETHOSTNAME | 398 | gl_PREREQ_GETHOSTNAME |
232 | fi | 399 | ]) |
233 | gl_UNISTD_MODULE_INDICATOR([gethostname]) | 400 | gl_UNISTD_MODULE_INDICATOR([gethostname]) |
401 | gl_FUNC_GETLINE | ||
402 | gl_CONDITIONAL([GL_COND_OBJ_GETLINE], [test $REPLACE_GETLINE = 1]) | ||
403 | AM_COND_IF([GL_COND_OBJ_GETLINE], [ | ||
404 | gl_PREREQ_GETLINE | ||
405 | ]) | ||
406 | gl_STDIO_MODULE_INDICATOR([getline]) | ||
407 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
234 | gl_GETLOADAVG | 408 | gl_GETLOADAVG |
235 | if test $HAVE_GETLOADAVG = 0; then | 409 | gl_CONDITIONAL([GL_COND_OBJ_GETLOADAVG], [test $HAVE_GETLOADAVG = 0]) |
236 | AC_LIBOBJ([getloadavg]) | 410 | AM_COND_IF([GL_COND_OBJ_GETLOADAVG], [ |
237 | gl_PREREQ_GETLOADAVG | 411 | gl_PREREQ_GETLOADAVG |
238 | fi | 412 | ]) |
239 | gl_STDLIB_MODULE_INDICATOR([getloadavg]) | 413 | gl_STDLIB_MODULE_INDICATOR([getloadavg]) |
240 | gl_FUNC_GETOPT_GNU | 414 | gl_FUNC_GETOPT_GNU |
241 | if test $REPLACE_GETOPT = 1; then | 415 | dnl Because of the way gl_FUNC_GETOPT_GNU is implemented (the gl_getopt_required |
242 | AC_LIBOBJ([getopt]) | 416 | dnl mechanism), there is no need to do any AC_LIBOBJ or AC_SUBST here; they are |
243 | AC_LIBOBJ([getopt1]) | 417 | dnl done in the getopt-posix module. |
244 | gl_PREREQ_GETOPT | ||
245 | dnl Arrange for unistd.h to include getopt.h. | ||
246 | GNULIB_GL_UNISTD_H_GETOPT=1 | ||
247 | fi | ||
248 | AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT]) | ||
249 | gl_MODULE_INDICATOR_FOR_TESTS([getopt-gnu]) | ||
250 | gl_FUNC_GETOPT_POSIX | 418 | gl_FUNC_GETOPT_POSIX |
251 | if test $REPLACE_GETOPT = 1; then | 419 | gl_CONDITIONAL_HEADER([getopt.h]) |
252 | AC_LIBOBJ([getopt]) | 420 | gl_CONDITIONAL_HEADER([getopt-cdefs.h]) |
253 | AC_LIBOBJ([getopt1]) | 421 | AC_PROG_MKDIR_P |
254 | gl_PREREQ_GETOPT | 422 | gl_CONDITIONAL([GL_COND_OBJ_GETOPT], [test $REPLACE_GETOPT = 1]) |
255 | dnl Arrange for unistd.h to include getopt.h. | 423 | AM_COND_IF([GL_COND_OBJ_GETOPT], [ |
256 | GNULIB_GL_UNISTD_H_GETOPT=1 | 424 | dnl Define the substituted variable GNULIB_UNISTD_H_GETOPT to 1. |
257 | fi | 425 | gl_UNISTD_H_REQUIRE_DEFAULTS |
258 | AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT]) | 426 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_GETOPT], [1]) |
259 | dnl you must add AM_GNU_GETTEXT([external]) or similar to configure.ac. | 427 | ]) |
260 | AM_GNU_GETTEXT_VERSION([0.18.1]) | 428 | gl_UNISTD_MODULE_INDICATOR([getopt-posix]) |
429 | gl_FUNC_GETPROGNAME | ||
261 | AC_SUBST([LIBINTL]) | 430 | AC_SUBST([LIBINTL]) |
262 | AC_SUBST([LTLIBINTL]) | 431 | AC_SUBST([LTLIBINTL]) |
432 | AC_PROG_MKDIR_P | ||
433 | AC_REQUIRE([gl_FUNC_SETLOCALE_NULL]) | ||
434 | LIB_HARD_LOCALE="$LIB_SETLOCALE_NULL" | ||
435 | AC_SUBST([LIB_HARD_LOCALE]) | ||
263 | gl_HOSTENT | 436 | gl_HOSTENT |
264 | gl_IDPRIV | 437 | gl_IDPRIV |
265 | gl_FUNC_INET_NTOP | 438 | gl_FUNC_INET_NTOP |
266 | if test $HAVE_INET_NTOP = 0 || test $REPLACE_INET_NTOP = 1; then | 439 | gl_CONDITIONAL([GL_COND_OBJ_INET_NTOP], |
267 | AC_LIBOBJ([inet_ntop]) | 440 | [test $HAVE_INET_NTOP = 0 || test $REPLACE_INET_NTOP = 1]) |
441 | AM_COND_IF([GL_COND_OBJ_INET_NTOP], [ | ||
268 | gl_PREREQ_INET_NTOP | 442 | gl_PREREQ_INET_NTOP |
269 | fi | 443 | ]) |
270 | gl_ARPA_INET_MODULE_INDICATOR([inet_ntop]) | 444 | gl_ARPA_INET_MODULE_INDICATOR([inet_ntop]) |
445 | gl_INTTYPES_INCOMPLETE | ||
446 | gl_INTTYPES_H_REQUIRE_DEFAULTS | ||
447 | AC_PROG_MKDIR_P | ||
271 | gl_LANGINFO_H | 448 | gl_LANGINFO_H |
449 | gl_LANGINFO_H_REQUIRE_DEFAULTS | ||
450 | AC_PROG_MKDIR_P | ||
272 | AC_REQUIRE([gl_LARGEFILE]) | 451 | AC_REQUIRE([gl_LARGEFILE]) |
452 | gl___INLINE | ||
453 | gl_LIMITS_H | ||
454 | gl_CONDITIONAL_HEADER([limits.h]) | ||
455 | AC_PROG_MKDIR_P | ||
273 | gl_LOCALCHARSET | 456 | gl_LOCALCHARSET |
274 | LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(abs_top_builddir)/$gl_source_base\"" | 457 | dnl For backward compatibility. Some packages still use this. |
458 | LOCALCHARSET_TESTS_ENVIRONMENT= | ||
275 | AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT]) | 459 | AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT]) |
276 | gl_LOCALE_H | 460 | gl_LOCALE_H |
461 | gl_LOCALE_H_REQUIRE_DEFAULTS | ||
462 | AC_PROG_MKDIR_P | ||
277 | gl_FUNC_LOCALECONV | 463 | gl_FUNC_LOCALECONV |
278 | if test $REPLACE_LOCALECONV = 1; then | 464 | gl_CONDITIONAL([GL_COND_OBJ_LOCALECONV], [test $REPLACE_LOCALECONV = 1]) |
279 | AC_LIBOBJ([localeconv]) | 465 | AM_COND_IF([GL_COND_OBJ_LOCALECONV], [ |
280 | gl_PREREQ_LOCALECONV | 466 | gl_PREREQ_LOCALECONV |
281 | fi | 467 | ]) |
282 | gl_LOCALE_MODULE_INDICATOR([localeconv]) | 468 | gl_LOCALE_MODULE_INDICATOR([localeconv]) |
283 | gl_LOCK | 469 | gl_LOCK |
284 | gl_MODULE_INDICATOR([lock]) | 470 | gl_MODULE_INDICATOR([lock]) |
471 | gl_FUNC_LSEEK | ||
472 | gl_CONDITIONAL([GL_COND_OBJ_LSEEK], [test $REPLACE_LSEEK = 1]) | ||
473 | gl_UNISTD_MODULE_INDICATOR([lseek]) | ||
285 | gl_FUNC_MALLOC_GNU | 474 | gl_FUNC_MALLOC_GNU |
286 | if test $REPLACE_MALLOC = 1; then | 475 | if test $REPLACE_MALLOC_FOR_MALLOC_GNU = 1; then |
287 | AC_LIBOBJ([malloc]) | 476 | AC_LIBOBJ([malloc]) |
288 | fi | 477 | fi |
289 | gl_MODULE_INDICATOR([malloc-gnu]) | 478 | gl_STDLIB_MODULE_INDICATOR([malloc-gnu]) |
290 | gl_FUNC_MALLOC_POSIX | 479 | AC_REQUIRE([gl_FUNC_MALLOC_POSIX]) |
291 | if test $REPLACE_MALLOC = 1; then | 480 | if test $REPLACE_MALLOC_FOR_MALLOC_POSIX = 1; then |
292 | AC_LIBOBJ([malloc]) | 481 | AC_LIBOBJ([malloc]) |
293 | fi | 482 | fi |
294 | gl_STDLIB_MODULE_INDICATOR([malloc-posix]) | 483 | gl_STDLIB_MODULE_INDICATOR([malloc-posix]) |
295 | gl_MALLOCA | 484 | gl_MALLOCA |
296 | gl_MATH_H | 485 | gl_MATH_H |
486 | gl_MATH_H_REQUIRE_DEFAULTS | ||
487 | AC_PROG_MKDIR_P | ||
297 | gl_FUNC_MBRTOWC | 488 | gl_FUNC_MBRTOWC |
298 | if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then | 489 | gl_CONDITIONAL([GL_COND_OBJ_MBRTOWC], |
299 | AC_LIBOBJ([mbrtowc]) | 490 | [test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1]) |
491 | AM_COND_IF([GL_COND_OBJ_MBRTOWC], [ | ||
492 | if test $REPLACE_MBSTATE_T = 1; then | ||
493 | AC_LIBOBJ([lc-charset-dispatch]) | ||
494 | AC_LIBOBJ([mbtowc-lock]) | ||
495 | gl_PREREQ_MBTOWC_LOCK | ||
496 | fi | ||
300 | gl_PREREQ_MBRTOWC | 497 | gl_PREREQ_MBRTOWC |
301 | fi | 498 | ]) |
302 | gl_WCHAR_MODULE_INDICATOR([mbrtowc]) | 499 | gl_WCHAR_MODULE_INDICATOR([mbrtowc]) |
303 | gl_FUNC_MBSINIT | 500 | gl_FUNC_MBSINIT |
304 | if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then | 501 | gl_CONDITIONAL([GL_COND_OBJ_MBSINIT], |
305 | AC_LIBOBJ([mbsinit]) | 502 | [test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1]) |
503 | AM_COND_IF([GL_COND_OBJ_MBSINIT], [ | ||
306 | gl_PREREQ_MBSINIT | 504 | gl_PREREQ_MBSINIT |
307 | fi | 505 | ]) |
308 | gl_WCHAR_MODULE_INDICATOR([mbsinit]) | 506 | gl_WCHAR_MODULE_INDICATOR([mbsinit]) |
309 | gl_FUNC_MBTOWC | 507 | gl_FUNC_MBTOWC |
310 | if test $REPLACE_MBTOWC = 1; then | 508 | gl_CONDITIONAL([GL_COND_OBJ_MBTOWC], |
311 | AC_LIBOBJ([mbtowc]) | 509 | [test $HAVE_MBTOWC = 0 || test $REPLACE_MBTOWC = 1]) |
510 | AM_COND_IF([GL_COND_OBJ_MBTOWC], [ | ||
312 | gl_PREREQ_MBTOWC | 511 | gl_PREREQ_MBTOWC |
313 | fi | 512 | ]) |
314 | gl_STDLIB_MODULE_INDICATOR([mbtowc]) | 513 | gl_STDLIB_MODULE_INDICATOR([mbtowc]) |
315 | gl_FUNC_MEMCHR | 514 | gl_FUNC_MEMCHR |
316 | if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then | 515 | gl_CONDITIONAL([GL_COND_OBJ_MEMCHR], [test $REPLACE_MEMCHR = 1]) |
317 | AC_LIBOBJ([memchr]) | 516 | AM_COND_IF([GL_COND_OBJ_MEMCHR], [ |
318 | gl_PREREQ_MEMCHR | 517 | gl_PREREQ_MEMCHR |
319 | fi | 518 | ]) |
320 | gl_STRING_MODULE_INDICATOR([memchr]) | 519 | gl_STRING_MODULE_INDICATOR([memchr]) |
520 | gl_MINMAX | ||
321 | gl_FUNC_MKTIME | 521 | gl_FUNC_MKTIME |
322 | if test $REPLACE_MKTIME = 1; then | 522 | if test $REPLACE_MKTIME = 1; then |
323 | AC_LIBOBJ([mktime]) | 523 | AC_LIBOBJ([mktime]) |
@@ -325,73 +525,162 @@ AC_DEFUN([gl_INIT], | |||
325 | fi | 525 | fi |
326 | gl_TIME_MODULE_INDICATOR([mktime]) | 526 | gl_TIME_MODULE_INDICATOR([mktime]) |
327 | gl_FUNC_MKTIME_INTERNAL | 527 | gl_FUNC_MKTIME_INTERNAL |
328 | if test $REPLACE_MKTIME = 1; then | 528 | if test $WANT_MKTIME_INTERNAL = 1; then |
329 | AC_LIBOBJ([mktime]) | 529 | AC_LIBOBJ([mktime]) |
330 | gl_PREREQ_MKTIME | 530 | gl_PREREQ_MKTIME |
331 | fi | 531 | fi |
332 | gl_MOUNTLIST | 532 | gl_MOUNTLIST |
333 | if test $gl_cv_list_mounted_fs = yes; then | 533 | gl_CONDITIONAL([GL_COND_OBJ_MOUNTLIST], [test $gl_cv_list_mounted_fs = yes]) |
334 | AC_LIBOBJ([mountlist]) | 534 | AM_COND_IF([GL_COND_OBJ_MOUNTLIST], [ |
335 | gl_PREREQ_MOUNTLIST_EXTRA | 535 | gl_PREREQ_MOUNTLIST_EXTRA |
336 | fi | 536 | ]) |
337 | gl_MSVC_INVAL | 537 | AC_REQUIRE([gl_MSVC_INVAL]) |
338 | if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then | 538 | gl_CONDITIONAL([GL_COND_OBJ_MSVC_INVAL], |
339 | AC_LIBOBJ([msvc-inval]) | 539 | [test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1]) |
340 | fi | 540 | AC_REQUIRE([gl_MSVC_NOTHROW]) |
341 | gl_MSVC_NOTHROW | 541 | gl_CONDITIONAL([GL_COND_OBJ_MSVC_NOTHROW], |
342 | if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then | 542 | [test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1]) |
343 | AC_LIBOBJ([msvc-nothrow]) | 543 | gl_MODULE_INDICATOR([msvc-nothrow]) |
344 | fi | ||
345 | gl_MULTIARCH | 544 | gl_MULTIARCH |
346 | gl_HEADER_NETDB | 545 | gl_NETDB_H |
546 | gl_NETDB_H_REQUIRE_DEFAULTS | ||
547 | AC_PROG_MKDIR_P | ||
347 | gl_HEADER_NETINET_IN | 548 | gl_HEADER_NETINET_IN |
549 | gl_CONDITIONAL_HEADER([netinet/in.h]) | ||
348 | AC_PROG_MKDIR_P | 550 | AC_PROG_MKDIR_P |
349 | gl_FUNC_NL_LANGINFO | 551 | gl_FUNC_NL_LANGINFO |
350 | if test $HAVE_NL_LANGINFO = 0 || test $REPLACE_NL_LANGINFO = 1; then | 552 | gl_CONDITIONAL([GL_COND_OBJ_NL_LANGINFO], |
351 | AC_LIBOBJ([nl_langinfo]) | 553 | [test $HAVE_NL_LANGINFO = 0 || test $REPLACE_NL_LANGINFO = 1]) |
554 | gl_CONDITIONAL([GL_COND_OBJ_NL_LANGINFO_LOCK], | ||
555 | [test $REPLACE_NL_LANGINFO = 1 && test $NL_LANGINFO_MTSAFE = 0]) | ||
556 | if test $REPLACE_NL_LANGINFO = 1 && test $NL_LANGINFO_MTSAFE = 0; then | ||
557 | gl_PREREQ_NL_LANGINFO_LOCK | ||
352 | fi | 558 | fi |
353 | gl_LANGINFO_MODULE_INDICATOR([nl_langinfo]) | 559 | gl_LANGINFO_MODULE_INDICATOR([nl_langinfo]) |
354 | gl_FUNC_READ | 560 | gl_FUNC_OPEN |
355 | if test $REPLACE_READ = 1; then | 561 | gl_CONDITIONAL([GL_COND_OBJ_OPEN], [test $REPLACE_OPEN = 1]) |
356 | AC_LIBOBJ([read]) | 562 | AM_COND_IF([GL_COND_OBJ_OPEN], [ |
357 | gl_PREREQ_READ | 563 | gl_PREREQ_OPEN |
564 | ]) | ||
565 | gl_FCNTL_MODULE_INDICATOR([open]) | ||
566 | gl_PATHMAX | ||
567 | gl_FUNC_REALLOC_GNU | ||
568 | if test $REPLACE_REALLOC_FOR_REALLOC_GNU = 1; then | ||
569 | AC_LIBOBJ([realloc]) | ||
570 | fi | ||
571 | gl_STDLIB_MODULE_INDICATOR([realloc-gnu]) | ||
572 | gl_FUNC_REALLOC_POSIX | ||
573 | if test $REPLACE_REALLOC_FOR_REALLOC_POSIX = 1; then | ||
574 | AC_LIBOBJ([realloc]) | ||
358 | fi | 575 | fi |
359 | gl_UNISTD_MODULE_INDICATOR([read]) | 576 | gl_STDLIB_MODULE_INDICATOR([realloc-posix]) |
577 | gl_FUNC_REALLOCARRAY | ||
578 | gl_CONDITIONAL([GL_COND_OBJ_REALLOCARRAY], | ||
579 | [test $HAVE_REALLOCARRAY = 0 || test $REPLACE_REALLOCARRAY = 1]) | ||
580 | AM_COND_IF([GL_COND_OBJ_REALLOCARRAY], [ | ||
581 | gl_PREREQ_REALLOCARRAY | ||
582 | ]) | ||
583 | gl_MODULE_INDICATOR([reallocarray]) | ||
584 | gl_STDLIB_MODULE_INDICATOR([reallocarray]) | ||
360 | gl_REGEX | 585 | gl_REGEX |
361 | if test $ac_use_included_regex = yes; then | 586 | gl_CONDITIONAL([GL_COND_OBJ_REGEX], [test $ac_use_included_regex = yes]) |
362 | AC_LIBOBJ([regex]) | 587 | AM_COND_IF([GL_COND_OBJ_REGEX], [ |
363 | gl_PREREQ_REGEX | 588 | gl_PREREQ_REGEX |
364 | fi | 589 | ]) |
365 | gl_PREREQ_SAFE_READ | ||
366 | gl_SERVENT | 590 | gl_SERVENT |
367 | gl_FUNC_SETENV | 591 | gl_FUNC_SETENV |
368 | if test $HAVE_SETENV = 0 || test $REPLACE_SETENV = 1; then | 592 | gl_CONDITIONAL([GL_COND_OBJ_SETENV], |
369 | AC_LIBOBJ([setenv]) | 593 | [test $HAVE_SETENV = 0 || test $REPLACE_SETENV = 1]) |
370 | fi | ||
371 | gl_STDLIB_MODULE_INDICATOR([setenv]) | 594 | gl_STDLIB_MODULE_INDICATOR([setenv]) |
595 | gl_FUNC_SETLOCALE_NULL | ||
596 | gl_CONDITIONAL([GL_COND_OBJ_SETLOCALE_LOCK], | ||
597 | [test $SETLOCALE_NULL_ALL_MTSAFE = 0 || test $SETLOCALE_NULL_ONE_MTSAFE = 0]) | ||
598 | AM_COND_IF([GL_COND_OBJ_SETLOCALE_LOCK], [ | ||
599 | gl_PREREQ_SETLOCALE_LOCK | ||
600 | ]) | ||
601 | gl_LOCALE_MODULE_INDICATOR([setlocale_null]) | ||
372 | gl_SIZE_MAX | 602 | gl_SIZE_MAX |
373 | gl_FUNC_SNPRINTF | 603 | gl_FUNC_SNPRINTF |
374 | gl_STDIO_MODULE_INDICATOR([snprintf]) | 604 | gl_STDIO_MODULE_INDICATOR([snprintf]) |
375 | gl_MODULE_INDICATOR([snprintf]) | 605 | gl_MODULE_INDICATOR([snprintf]) |
376 | gl_SOCKETLIB | 606 | AC_REQUIRE([gl_SOCKETLIB]) |
377 | gl_SOCKETS | 607 | AC_REQUIRE([gl_SOCKETS]) |
378 | gl_TYPE_SOCKLEN_T | 608 | gl_TYPE_SOCKLEN_T |
379 | gt_TYPE_SSIZE_T | 609 | gt_TYPE_SSIZE_T |
610 | gl_FUNC_STAT | ||
611 | gl_CONDITIONAL([GL_COND_OBJ_STAT], [test $REPLACE_STAT = 1]) | ||
612 | AM_COND_IF([GL_COND_OBJ_STAT], [ | ||
613 | case "$host_os" in | ||
614 | mingw*) | ||
615 | AC_LIBOBJ([stat-w32]) | ||
616 | ;; | ||
617 | esac | ||
618 | gl_PREREQ_STAT | ||
619 | ]) | ||
620 | gl_SYS_STAT_MODULE_INDICATOR([stat]) | ||
621 | gl_STAT_TIME | ||
622 | gl_STAT_BIRTHTIME | ||
380 | gl_STDALIGN_H | 623 | gl_STDALIGN_H |
381 | AM_STDBOOL_H | 624 | gl_CONDITIONAL_HEADER([stdalign.h]) |
625 | AC_PROG_MKDIR_P | ||
626 | gl_C_BOOL | ||
627 | AC_CHECK_HEADERS_ONCE([stdckdint.h]) | ||
628 | if test $ac_cv_header_stdckdint_h = yes; then | ||
629 | GL_GENERATE_STDCKDINT_H=false | ||
630 | else | ||
631 | GL_GENERATE_STDCKDINT_H=true | ||
632 | fi | ||
633 | gl_CONDITIONAL_HEADER([stdckdint.h]) | ||
634 | AC_PROG_MKDIR_P | ||
382 | gl_STDDEF_H | 635 | gl_STDDEF_H |
636 | gl_STDDEF_H_REQUIRE_DEFAULTS | ||
637 | gl_CONDITIONAL_HEADER([stddef.h]) | ||
638 | AC_PROG_MKDIR_P | ||
383 | gl_STDINT_H | 639 | gl_STDINT_H |
640 | gl_CONDITIONAL_HEADER([stdint.h]) | ||
641 | dnl Because of gl_REPLACE_LIMITS_H: | ||
642 | gl_CONDITIONAL_HEADER([limits.h]) | ||
643 | AC_PROG_MKDIR_P | ||
384 | gl_STDIO_H | 644 | gl_STDIO_H |
645 | gl_STDIO_H_REQUIRE_DEFAULTS | ||
646 | AC_PROG_MKDIR_P | ||
647 | gl_CONDITIONAL([GL_COND_OBJ_STDIO_READ], [test $REPLACE_STDIO_READ_FUNCS = 1]) | ||
648 | gl_CONDITIONAL([GL_COND_OBJ_STDIO_WRITE], [test $REPLACE_STDIO_WRITE_FUNCS = 1]) | ||
649 | dnl No need to create extra modules for these functions. Everyone who uses | ||
650 | dnl <stdio.h> likely needs them. | ||
651 | gl_STDIO_MODULE_INDICATOR([fscanf]) | ||
652 | gl_MODULE_INDICATOR([fscanf]) | ||
653 | gl_STDIO_MODULE_INDICATOR([scanf]) | ||
654 | gl_MODULE_INDICATOR([scanf]) | ||
655 | gl_STDIO_MODULE_INDICATOR([fgetc]) | ||
656 | gl_STDIO_MODULE_INDICATOR([getc]) | ||
657 | gl_STDIO_MODULE_INDICATOR([getchar]) | ||
658 | gl_STDIO_MODULE_INDICATOR([fgets]) | ||
659 | gl_STDIO_MODULE_INDICATOR([fread]) | ||
660 | dnl No need to create extra modules for these functions. Everyone who uses | ||
661 | dnl <stdio.h> likely needs them. | ||
662 | gl_STDIO_MODULE_INDICATOR([fprintf]) | ||
663 | gl_STDIO_MODULE_INDICATOR([printf]) | ||
664 | gl_STDIO_MODULE_INDICATOR([vfprintf]) | ||
665 | gl_STDIO_MODULE_INDICATOR([vprintf]) | ||
666 | gl_STDIO_MODULE_INDICATOR([fputc]) | ||
667 | gl_STDIO_MODULE_INDICATOR([putc]) | ||
668 | gl_STDIO_MODULE_INDICATOR([putchar]) | ||
669 | gl_STDIO_MODULE_INDICATOR([fputs]) | ||
670 | gl_STDIO_MODULE_INDICATOR([puts]) | ||
671 | gl_STDIO_MODULE_INDICATOR([fwrite]) | ||
385 | gl_STDLIB_H | 672 | gl_STDLIB_H |
673 | gl_STDLIB_H_REQUIRE_DEFAULTS | ||
674 | AC_PROG_MKDIR_P | ||
386 | gl_STRCASE | 675 | gl_STRCASE |
387 | if test $HAVE_STRCASECMP = 0; then | 676 | gl_CONDITIONAL([GL_COND_OBJ_STRCASECMP], [test $HAVE_STRCASECMP = 0]) |
388 | AC_LIBOBJ([strcasecmp]) | 677 | AM_COND_IF([GL_COND_OBJ_STRCASECMP], [ |
389 | gl_PREREQ_STRCASECMP | 678 | gl_PREREQ_STRCASECMP |
390 | fi | 679 | ]) |
391 | if test $HAVE_STRNCASECMP = 0; then | 680 | gl_CONDITIONAL([GL_COND_OBJ_STRNCASECMP], [test $HAVE_STRNCASECMP = 0]) |
392 | AC_LIBOBJ([strncasecmp]) | 681 | AM_COND_IF([GL_COND_OBJ_STRNCASECMP], [ |
393 | gl_PREREQ_STRNCASECMP | 682 | gl_PREREQ_STRNCASECMP |
394 | fi | 683 | ]) |
395 | gl_FUNC_STRCASESTR | 684 | gl_FUNC_STRCASESTR |
396 | if test $HAVE_STRCASESTR = 0 || test $REPLACE_STRCASESTR = 1; then | 685 | if test $HAVE_STRCASESTR = 0 || test $REPLACE_STRCASESTR = 1; then |
397 | AC_LIBOBJ([strcasestr]) | 686 | AC_LIBOBJ([strcasestr]) |
@@ -404,68 +693,76 @@ AC_DEFUN([gl_INIT], | |||
404 | fi | 693 | fi |
405 | gl_STRING_MODULE_INDICATOR([strcasestr]) | 694 | gl_STRING_MODULE_INDICATOR([strcasestr]) |
406 | gl_FUNC_STRERROR | 695 | gl_FUNC_STRERROR |
407 | if test $REPLACE_STRERROR = 1; then | 696 | gl_CONDITIONAL([GL_COND_OBJ_STRERROR], [test $REPLACE_STRERROR = 1]) |
408 | AC_LIBOBJ([strerror]) | ||
409 | fi | ||
410 | gl_MODULE_INDICATOR([strerror]) | 697 | gl_MODULE_INDICATOR([strerror]) |
411 | gl_STRING_MODULE_INDICATOR([strerror]) | 698 | gl_STRING_MODULE_INDICATOR([strerror]) |
412 | AC_REQUIRE([gl_HEADER_ERRNO_H]) | 699 | AC_REQUIRE([gl_HEADER_ERRNO_H]) |
413 | AC_REQUIRE([gl_FUNC_STRERROR_0]) | 700 | AC_REQUIRE([gl_FUNC_STRERROR_0]) |
414 | if test -n "$ERRNO_H" || test $REPLACE_STRERROR_0 = 1; then | 701 | gl_CONDITIONAL([GL_COND_OBJ_STRERROR_OVERRIDE], |
415 | AC_LIBOBJ([strerror-override]) | 702 | [test -n "$ERRNO_H" || test $REPLACE_STRERROR_0 = 1]) |
703 | AM_COND_IF([GL_COND_OBJ_STRERROR_OVERRIDE], [ | ||
416 | gl_PREREQ_SYS_H_WINSOCK2 | 704 | gl_PREREQ_SYS_H_WINSOCK2 |
417 | fi | 705 | ]) |
418 | gl_HEADER_STRING_H | 706 | gl_STRING_H |
419 | gl_HEADER_STRINGS_H | 707 | gl_STRING_H_REQUIRE_DEFAULTS |
420 | gl_FUNC_STRNDUP | 708 | AC_PROG_MKDIR_P |
421 | if test $HAVE_STRNDUP = 0 || test $REPLACE_STRNDUP = 1; then | 709 | gl_STRINGS_H |
422 | AC_LIBOBJ([strndup]) | 710 | gl_STRINGS_H_REQUIRE_DEFAULTS |
423 | fi | 711 | AC_PROG_MKDIR_P |
424 | gl_STRING_MODULE_INDICATOR([strndup]) | ||
425 | gl_FUNC_STRNLEN | ||
426 | if test $HAVE_DECL_STRNLEN = 0 || test $REPLACE_STRNLEN = 1; then | ||
427 | AC_LIBOBJ([strnlen]) | ||
428 | gl_PREREQ_STRNLEN | ||
429 | fi | ||
430 | gl_STRING_MODULE_INDICATOR([strnlen]) | ||
431 | gl_FUNC_STRSEP | 712 | gl_FUNC_STRSEP |
432 | if test $HAVE_STRSEP = 0; then | 713 | gl_CONDITIONAL([GL_COND_OBJ_STRSEP], [test $HAVE_STRSEP = 0]) |
433 | AC_LIBOBJ([strsep]) | 714 | AM_COND_IF([GL_COND_OBJ_STRSEP], [ |
434 | gl_PREREQ_STRSEP | 715 | gl_PREREQ_STRSEP |
435 | fi | 716 | ]) |
436 | gl_STRING_MODULE_INDICATOR([strsep]) | 717 | gl_STRING_MODULE_INDICATOR([strsep]) |
437 | gl_FUNC_STRSTR_SIMPLE | 718 | gl_FUNC_STRSTR_SIMPLE |
438 | if test $REPLACE_STRSTR = 1; then | 719 | if test $REPLACE_STRSTR = 1; then |
439 | AC_LIBOBJ([strstr]) | 720 | AC_LIBOBJ([strstr]) |
440 | fi | 721 | fi |
441 | gl_STRING_MODULE_INDICATOR([strstr]) | 722 | gl_STRING_MODULE_INDICATOR([strstr]) |
442 | gl_HEADER_SYS_SOCKET | 723 | gl_SYS_SOCKET_H |
724 | gl_SYS_SOCKET_H_REQUIRE_DEFAULTS | ||
725 | AC_PROG_MKDIR_P | ||
726 | gl_SYS_STAT_H | ||
727 | gl_SYS_STAT_H_REQUIRE_DEFAULTS | ||
443 | AC_PROG_MKDIR_P | 728 | AC_PROG_MKDIR_P |
444 | gl_SYS_TYPES_H | 729 | gl_SYS_TYPES_H |
730 | gl_SYS_TYPES_H_REQUIRE_DEFAULTS | ||
731 | AC_PROG_MKDIR_P | ||
732 | gl_SYS_UIO_H | ||
733 | gl_SYS_UIO_H_REQUIRE_DEFAULTS | ||
445 | AC_PROG_MKDIR_P | 734 | AC_PROG_MKDIR_P |
446 | gl_HEADER_SYS_UIO | 735 | AC_REQUIRE([gl_THREADLIB]) |
736 | gl_TIME_H | ||
737 | gl_TIME_H_REQUIRE_DEFAULTS | ||
447 | AC_PROG_MKDIR_P | 738 | AC_PROG_MKDIR_P |
448 | gl_THREADLIB | ||
449 | gl_HEADER_TIME_H | ||
450 | gl_TIME_R | 739 | gl_TIME_R |
451 | if test $HAVE_LOCALTIME_R = 0 || test $REPLACE_LOCALTIME_R = 1; then | 740 | gl_CONDITIONAL([GL_COND_OBJ_TIME_R], |
452 | AC_LIBOBJ([time_r]) | 741 | [test $HAVE_LOCALTIME_R = 0 || test $REPLACE_LOCALTIME_R = 1]) |
742 | AM_COND_IF([GL_COND_OBJ_TIME_R], [ | ||
453 | gl_PREREQ_TIME_R | 743 | gl_PREREQ_TIME_R |
454 | fi | 744 | ]) |
455 | gl_TIME_MODULE_INDICATOR([time_r]) | 745 | gl_TIME_MODULE_INDICATOR([time_r]) |
456 | gl_FUNC_TIMEGM | 746 | gl_FUNC_TIMEGM |
457 | if test $HAVE_TIMEGM = 0 || test $REPLACE_TIMEGM = 1; then | 747 | gl_CONDITIONAL([GL_COND_OBJ_TIMEGM], |
458 | AC_LIBOBJ([timegm]) | 748 | [test $HAVE_TIMEGM = 0 || test $REPLACE_TIMEGM = 1]) |
749 | AM_COND_IF([GL_COND_OBJ_TIMEGM], [ | ||
459 | gl_PREREQ_TIMEGM | 750 | gl_PREREQ_TIMEGM |
460 | fi | 751 | ]) |
461 | gl_TIME_MODULE_INDICATOR([timegm]) | 752 | gl_TIME_MODULE_INDICATOR([timegm]) |
462 | gl_UNISTD_H | 753 | gl_UNISTD_H |
754 | gl_UNISTD_H_REQUIRE_DEFAULTS | ||
755 | AC_PROG_MKDIR_P | ||
756 | gl_FUNC_GLIBC_UNLOCKED_IO | ||
463 | gl_FUNC_UNSETENV | 757 | gl_FUNC_UNSETENV |
464 | if test $HAVE_UNSETENV = 0 || test $REPLACE_UNSETENV = 1; then | 758 | gl_CONDITIONAL([GL_COND_OBJ_UNSETENV], |
465 | AC_LIBOBJ([unsetenv]) | 759 | [test $HAVE_UNSETENV = 0 || test $REPLACE_UNSETENV = 1]) |
760 | AM_COND_IF([GL_COND_OBJ_UNSETENV], [ | ||
466 | gl_PREREQ_UNSETENV | 761 | gl_PREREQ_UNSETENV |
467 | fi | 762 | ]) |
468 | gl_STDLIB_MODULE_INDICATOR([unsetenv]) | 763 | gl_STDLIB_MODULE_INDICATOR([unsetenv]) |
764 | AC_C_VARARRAYS | ||
765 | AC_REQUIRE([AC_C_RESTRICT]) | ||
469 | gl_FUNC_VASNPRINTF | 766 | gl_FUNC_VASNPRINTF |
470 | gl_FUNC_VASPRINTF | 767 | gl_FUNC_VASPRINTF |
471 | gl_STDIO_MODULE_INDICATOR([vasprintf]) | 768 | gl_STDIO_MODULE_INDICATOR([vasprintf]) |
@@ -475,16 +772,34 @@ AC_DEFUN([gl_INIT], | |||
475 | gl_FUNC_VSNPRINTF | 772 | gl_FUNC_VSNPRINTF |
476 | gl_STDIO_MODULE_INDICATOR([vsnprintf]) | 773 | gl_STDIO_MODULE_INDICATOR([vsnprintf]) |
477 | gl_WCHAR_H | 774 | gl_WCHAR_H |
775 | gl_WCHAR_H_REQUIRE_DEFAULTS | ||
776 | AC_PROG_MKDIR_P | ||
478 | gl_FUNC_WCRTOMB | 777 | gl_FUNC_WCRTOMB |
479 | if test $HAVE_WCRTOMB = 0 || test $REPLACE_WCRTOMB = 1; then | 778 | gl_CONDITIONAL([GL_COND_OBJ_WCRTOMB], |
480 | AC_LIBOBJ([wcrtomb]) | 779 | [test $HAVE_WCRTOMB = 0 || test $REPLACE_WCRTOMB = 1]) |
780 | AM_COND_IF([GL_COND_OBJ_WCRTOMB], [ | ||
481 | gl_PREREQ_WCRTOMB | 781 | gl_PREREQ_WCRTOMB |
482 | fi | 782 | ]) |
483 | gl_WCHAR_MODULE_INDICATOR([wcrtomb]) | 783 | gl_WCHAR_MODULE_INDICATOR([wcrtomb]) |
484 | gl_WCTYPE_H | 784 | gl_WCTYPE_H |
785 | gl_WCTYPE_H_REQUIRE_DEFAULTS | ||
786 | AC_PROG_MKDIR_P | ||
787 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
788 | gl_CONDITIONAL([GL_COND_OBJ_WINDOWS_MUTEX], | ||
789 | [case "$host_os" in mingw*) true;; *) false;; esac]) | ||
790 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
791 | gl_CONDITIONAL([GL_COND_OBJ_WINDOWS_ONCE], | ||
792 | [case "$host_os" in mingw*) true;; *) false;; esac]) | ||
793 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
794 | gl_CONDITIONAL([GL_COND_OBJ_WINDOWS_RECMUTEX], | ||
795 | [case "$host_os" in mingw*) true;; *) false;; esac]) | ||
796 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
797 | gl_CONDITIONAL([GL_COND_OBJ_WINDOWS_RWLOCK], | ||
798 | [case "$host_os" in mingw*) true;; *) false;; esac]) | ||
485 | gl_XALLOC | 799 | gl_XALLOC |
800 | gl_MODULE_INDICATOR([xalloc]) | ||
801 | gl_MODULE_INDICATOR([xalloc-die]) | ||
486 | gl_XSIZE | 802 | gl_XSIZE |
487 | gl_XSTRNDUP | ||
488 | # End of code from modules | 803 | # End of code from modules |
489 | m4_ifval(gl_LIBSOURCES_LIST, [ | 804 | m4_ifval(gl_LIBSOURCES_LIST, [ |
490 | m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ || | 805 | m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ || |
@@ -497,6 +812,8 @@ AC_DEFUN([gl_INIT], | |||
497 | m4_if(m4_sysval, [0], [], | 812 | m4_if(m4_sysval, [0], [], |
498 | [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) | 813 | [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) |
499 | ]) | 814 | ]) |
815 | m4_popdef([GL_MODULE_INDICATOR_PREFIX]) | ||
816 | m4_popdef([GL_MACRO_PREFIX]) | ||
500 | m4_popdef([gl_LIBSOURCES_DIR]) | 817 | m4_popdef([gl_LIBSOURCES_DIR]) |
501 | m4_popdef([gl_LIBSOURCES_LIST]) | 818 | m4_popdef([gl_LIBSOURCES_LIST]) |
502 | m4_popdef([AC_LIBSOURCES]) | 819 | m4_popdef([AC_LIBSOURCES]) |
@@ -505,16 +822,28 @@ AC_DEFUN([gl_INIT], | |||
505 | AC_CONFIG_COMMANDS_PRE([ | 822 | AC_CONFIG_COMMANDS_PRE([ |
506 | gl_libobjs= | 823 | gl_libobjs= |
507 | gl_ltlibobjs= | 824 | gl_ltlibobjs= |
825 | gl_libobjdeps= | ||
508 | if test -n "$gl_LIBOBJS"; then | 826 | if test -n "$gl_LIBOBJS"; then |
509 | # Remove the extension. | 827 | # Remove the extension. |
828 | changequote(,)dnl | ||
510 | sed_drop_objext='s/\.o$//;s/\.obj$//' | 829 | sed_drop_objext='s/\.o$//;s/\.obj$//' |
830 | sed_dirname1='s,//*,/,g' | ||
831 | sed_dirname2='s,\(.\)/$,\1,' | ||
832 | sed_dirname3='s,^[^/]*$,.,' | ||
833 | sed_dirname4='s,\(.\)/[^/]*$,\1,' | ||
834 | sed_basename1='s,.*/,,' | ||
835 | changequote([, ])dnl | ||
511 | for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do | 836 | for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do |
512 | gl_libobjs="$gl_libobjs $i.$ac_objext" | 837 | gl_libobjs="$gl_libobjs $i.$ac_objext" |
513 | gl_ltlibobjs="$gl_ltlibobjs $i.lo" | 838 | gl_ltlibobjs="$gl_ltlibobjs $i.lo" |
839 | i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` | ||
840 | i_base=`echo "$i" | sed -e "$sed_basename1"` | ||
841 | gl_libobjdeps="$gl_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" | ||
514 | done | 842 | done |
515 | fi | 843 | fi |
516 | AC_SUBST([gl_LIBOBJS], [$gl_libobjs]) | 844 | AC_SUBST([gl_LIBOBJS], [$gl_libobjs]) |
517 | AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs]) | 845 | AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs]) |
846 | AC_SUBST([gl_LIBOBJDEPS], [$gl_libobjdeps]) | ||
518 | ]) | 847 | ]) |
519 | gltests_libdeps= | 848 | gltests_libdeps= |
520 | gltests_ltlibdeps= | 849 | gltests_ltlibdeps= |
@@ -523,8 +852,11 @@ AC_DEFUN([gl_INIT], | |||
523 | m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES])) | 852 | m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES])) |
524 | m4_pushdef([gltests_LIBSOURCES_LIST], []) | 853 | m4_pushdef([gltests_LIBSOURCES_LIST], []) |
525 | m4_pushdef([gltests_LIBSOURCES_DIR], []) | 854 | m4_pushdef([gltests_LIBSOURCES_DIR], []) |
855 | m4_pushdef([GL_MACRO_PREFIX], [gltests]) | ||
856 | m4_pushdef([GL_MODULE_INDICATOR_PREFIX], [GL]) | ||
526 | gl_COMMON | 857 | gl_COMMON |
527 | gl_source_base='tests' | 858 | gl_source_base='tests' |
859 | gl_source_base_prefix= | ||
528 | changequote(,)dnl | 860 | changequote(,)dnl |
529 | gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS | 861 | gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS |
530 | changequote([, ])dnl | 862 | changequote([, ])dnl |
@@ -543,6 +875,8 @@ changequote([, ])dnl | |||
543 | m4_if(m4_sysval, [0], [], | 875 | m4_if(m4_sysval, [0], [], |
544 | [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) | 876 | [AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])]) |
545 | ]) | 877 | ]) |
878 | m4_popdef([GL_MODULE_INDICATOR_PREFIX]) | ||
879 | m4_popdef([GL_MACRO_PREFIX]) | ||
546 | m4_popdef([gltests_LIBSOURCES_DIR]) | 880 | m4_popdef([gltests_LIBSOURCES_DIR]) |
547 | m4_popdef([gltests_LIBSOURCES_LIST]) | 881 | m4_popdef([gltests_LIBSOURCES_LIST]) |
548 | m4_popdef([AC_LIBSOURCES]) | 882 | m4_popdef([AC_LIBSOURCES]) |
@@ -551,17 +885,30 @@ changequote([, ])dnl | |||
551 | AC_CONFIG_COMMANDS_PRE([ | 885 | AC_CONFIG_COMMANDS_PRE([ |
552 | gltests_libobjs= | 886 | gltests_libobjs= |
553 | gltests_ltlibobjs= | 887 | gltests_ltlibobjs= |
888 | gltests_libobjdeps= | ||
554 | if test -n "$gltests_LIBOBJS"; then | 889 | if test -n "$gltests_LIBOBJS"; then |
555 | # Remove the extension. | 890 | # Remove the extension. |
891 | changequote(,)dnl | ||
556 | sed_drop_objext='s/\.o$//;s/\.obj$//' | 892 | sed_drop_objext='s/\.o$//;s/\.obj$//' |
893 | sed_dirname1='s,//*,/,g' | ||
894 | sed_dirname2='s,\(.\)/$,\1,' | ||
895 | sed_dirname3='s,^[^/]*$,.,' | ||
896 | sed_dirname4='s,\(.\)/[^/]*$,\1,' | ||
897 | sed_basename1='s,.*/,,' | ||
898 | changequote([, ])dnl | ||
557 | for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do | 899 | for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do |
558 | gltests_libobjs="$gltests_libobjs $i.$ac_objext" | 900 | gltests_libobjs="$gltests_libobjs $i.$ac_objext" |
559 | gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" | 901 | gltests_ltlibobjs="$gltests_ltlibobjs $i.lo" |
902 | i_dir=`echo "$i" | sed -e "$sed_dirname1" -e "$sed_dirname2" -e "$sed_dirname3" -e "$sed_dirname4"` | ||
903 | i_base=`echo "$i" | sed -e "$sed_basename1"` | ||
904 | gltests_libobjdeps="$gltests_libobjdeps $i_dir/\$(DEPDIR)/$i_base.Po" | ||
560 | done | 905 | done |
561 | fi | 906 | fi |
562 | AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs]) | 907 | AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs]) |
563 | AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs]) | 908 | AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs]) |
909 | AC_SUBST([gltests_LIBOBJDEPS], [$gltests_libobjdeps]) | ||
564 | ]) | 910 | ]) |
911 | AC_REQUIRE([gl_CC_GNULIB_WARNINGS]) | ||
565 | LIBGNU_LIBDEPS="$gl_libdeps" | 912 | LIBGNU_LIBDEPS="$gl_libdeps" |
566 | AC_SUBST([LIBGNU_LIBDEPS]) | 913 | AC_SUBST([LIBGNU_LIBDEPS]) |
567 | LIBGNU_LTLIBDEPS="$gl_ltlibdeps" | 914 | LIBGNU_LTLIBDEPS="$gl_ltlibdeps" |
@@ -625,76 +972,130 @@ AC_DEFUN([gltests_LIBSOURCES], [ | |||
625 | # This macro records the list of files which have been installed by | 972 | # This macro records the list of files which have been installed by |
626 | # gnulib-tool and may be removed by future gnulib-tool invocations. | 973 | # gnulib-tool and may be removed by future gnulib-tool invocations. |
627 | AC_DEFUN([gl_FILE_LIST], [ | 974 | AC_DEFUN([gl_FILE_LIST], [ |
628 | build-aux/config.rpath | 975 | lib/_Noreturn.h |
629 | build-aux/snippet/_Noreturn.h | 976 | lib/af_alg.c |
630 | build-aux/snippet/arg-nonnull.h | 977 | lib/af_alg.h |
631 | build-aux/snippet/c++defs.h | ||
632 | build-aux/snippet/warn-on-use.h | ||
633 | lib/alloca.in.h | 978 | lib/alloca.in.h |
979 | lib/arg-nonnull.h | ||
634 | lib/arpa_inet.in.h | 980 | lib/arpa_inet.in.h |
635 | lib/asnprintf.c | 981 | lib/asnprintf.c |
636 | lib/asprintf.c | 982 | lib/asprintf.c |
983 | lib/assert.in.h | ||
984 | lib/attribute.h | ||
637 | lib/base64.c | 985 | lib/base64.c |
638 | lib/base64.h | 986 | lib/base64.h |
639 | lib/basename-lgpl.c | 987 | lib/basename-lgpl.c |
988 | lib/basename-lgpl.h | ||
640 | lib/basename.c | 989 | lib/basename.c |
641 | lib/btowc.c | 990 | lib/btowc.c |
642 | lib/config.charset | 991 | lib/byteswap.in.h |
992 | lib/c++defs.h | ||
993 | lib/calloc.c | ||
994 | lib/cdefs.h | ||
995 | lib/cloexec.c | ||
996 | lib/cloexec.h | ||
997 | lib/close.c | ||
643 | lib/dirname-lgpl.c | 998 | lib/dirname-lgpl.c |
644 | lib/dirname.c | 999 | lib/dirname.c |
645 | lib/dirname.h | 1000 | lib/dirname.h |
646 | lib/dosname.h | 1001 | lib/dup2.c |
1002 | lib/dynarray.h | ||
647 | lib/errno.in.h | 1003 | lib/errno.in.h |
648 | lib/error.c | 1004 | lib/error.c |
649 | lib/error.h | 1005 | lib/error.h |
650 | lib/exitfail.c | 1006 | lib/exitfail.c |
651 | lib/exitfail.h | 1007 | lib/exitfail.h |
1008 | lib/fcntl.c | ||
1009 | lib/fcntl.in.h | ||
652 | lib/fd-hook.c | 1010 | lib/fd-hook.c |
653 | lib/fd-hook.h | 1011 | lib/fd-hook.h |
1012 | lib/fflush.c | ||
1013 | lib/filename.h | ||
654 | lib/float+.h | 1014 | lib/float+.h |
655 | lib/float.c | 1015 | lib/float.c |
656 | lib/float.in.h | 1016 | lib/float.in.h |
657 | lib/floor.c | 1017 | lib/floor.c |
658 | lib/floorf.c | 1018 | lib/floorf.c |
1019 | lib/fopen.c | ||
1020 | lib/fpurge.c | ||
1021 | lib/freading.c | ||
1022 | lib/freading.h | ||
1023 | lib/free.c | ||
1024 | lib/fseek.c | ||
1025 | lib/fseeko.c | ||
1026 | lib/fstat.c | ||
659 | lib/fsusage.c | 1027 | lib/fsusage.c |
660 | lib/fsusage.h | 1028 | lib/fsusage.h |
661 | lib/full-read.c | 1029 | lib/ftell.c |
662 | lib/full-read.h | 1030 | lib/ftello.c |
663 | lib/full-write.c | ||
664 | lib/gai_strerror.c | 1031 | lib/gai_strerror.c |
665 | lib/getaddrinfo.c | 1032 | lib/getaddrinfo.c |
1033 | lib/getdelim.c | ||
1034 | lib/getdtablesize.c | ||
666 | lib/gethostname.c | 1035 | lib/gethostname.c |
1036 | lib/getline.c | ||
667 | lib/getloadavg.c | 1037 | lib/getloadavg.c |
1038 | lib/getopt-cdefs.in.h | ||
1039 | lib/getopt-core.h | ||
1040 | lib/getopt-ext.h | ||
1041 | lib/getopt-pfx-core.h | ||
1042 | lib/getopt-pfx-ext.h | ||
668 | lib/getopt.c | 1043 | lib/getopt.c |
669 | lib/getopt.in.h | 1044 | lib/getopt.in.h |
670 | lib/getopt1.c | 1045 | lib/getopt1.c |
671 | lib/getopt_int.h | 1046 | lib/getopt_int.h |
1047 | lib/getprogname.c | ||
1048 | lib/getprogname.h | ||
672 | lib/gettext.h | 1049 | lib/gettext.h |
1050 | lib/gl_openssl.h | ||
673 | lib/glthread/lock.c | 1051 | lib/glthread/lock.c |
674 | lib/glthread/lock.h | 1052 | lib/glthread/lock.h |
675 | lib/glthread/threadlib.c | 1053 | lib/glthread/threadlib.c |
1054 | lib/hard-locale.c | ||
1055 | lib/hard-locale.h | ||
1056 | lib/ialloc.c | ||
1057 | lib/ialloc.h | ||
676 | lib/idpriv-droptemp.c | 1058 | lib/idpriv-droptemp.c |
677 | lib/idpriv.h | 1059 | lib/idpriv.h |
1060 | lib/idx.h | ||
678 | lib/inet_ntop.c | 1061 | lib/inet_ntop.c |
1062 | lib/intprops-internal.h | ||
679 | lib/intprops.h | 1063 | lib/intprops.h |
1064 | lib/inttypes.in.h | ||
680 | lib/itold.c | 1065 | lib/itold.c |
681 | lib/langinfo.in.h | 1066 | lib/langinfo.in.h |
1067 | lib/lc-charset-dispatch.c | ||
1068 | lib/lc-charset-dispatch.h | ||
1069 | lib/libc-config.h | ||
1070 | lib/limits.in.h | ||
682 | lib/localcharset.c | 1071 | lib/localcharset.c |
683 | lib/localcharset.h | 1072 | lib/localcharset.h |
684 | lib/locale.in.h | 1073 | lib/locale.in.h |
685 | lib/localeconv.c | 1074 | lib/localeconv.c |
1075 | lib/lseek.c | ||
686 | lib/malloc.c | 1076 | lib/malloc.c |
1077 | lib/malloc/dynarray-skeleton.c | ||
1078 | lib/malloc/dynarray.h | ||
1079 | lib/malloc/dynarray_at_failure.c | ||
1080 | lib/malloc/dynarray_emplace_enlarge.c | ||
1081 | lib/malloc/dynarray_finalize.c | ||
1082 | lib/malloc/dynarray_resize.c | ||
1083 | lib/malloc/dynarray_resize_clear.c | ||
687 | lib/malloca.c | 1084 | lib/malloca.c |
688 | lib/malloca.h | 1085 | lib/malloca.h |
689 | lib/malloca.valgrind | ||
690 | lib/math.c | 1086 | lib/math.c |
691 | lib/math.in.h | 1087 | lib/math.in.h |
1088 | lib/mbrtowc-impl-utf8.h | ||
1089 | lib/mbrtowc-impl.h | ||
692 | lib/mbrtowc.c | 1090 | lib/mbrtowc.c |
693 | lib/mbsinit.c | 1091 | lib/mbsinit.c |
694 | lib/mbtowc-impl.h | 1092 | lib/mbtowc-impl.h |
1093 | lib/mbtowc-lock.c | ||
1094 | lib/mbtowc-lock.h | ||
695 | lib/mbtowc.c | 1095 | lib/mbtowc.c |
696 | lib/memchr.c | 1096 | lib/memchr.c |
697 | lib/memchr.valgrind | 1097 | lib/memchr.valgrind |
1098 | lib/minmax.h | ||
698 | lib/mktime-internal.h | 1099 | lib/mktime-internal.h |
699 | lib/mktime.c | 1100 | lib/mktime.c |
700 | lib/mountlist.c | 1101 | lib/mountlist.c |
@@ -705,33 +1106,45 @@ AC_DEFUN([gl_FILE_LIST], [ | |||
705 | lib/msvc-nothrow.h | 1106 | lib/msvc-nothrow.h |
706 | lib/netdb.in.h | 1107 | lib/netdb.in.h |
707 | lib/netinet_in.in.h | 1108 | lib/netinet_in.in.h |
1109 | lib/nl_langinfo-lock.c | ||
708 | lib/nl_langinfo.c | 1110 | lib/nl_langinfo.c |
1111 | lib/open.c | ||
1112 | lib/pathmax.h | ||
709 | lib/printf-args.c | 1113 | lib/printf-args.c |
710 | lib/printf-args.h | 1114 | lib/printf-args.h |
711 | lib/printf-parse.c | 1115 | lib/printf-parse.c |
712 | lib/printf-parse.h | 1116 | lib/printf-parse.h |
713 | lib/read.c | 1117 | lib/realloc.c |
714 | lib/ref-add.sin | 1118 | lib/reallocarray.c |
715 | lib/ref-del.sin | ||
716 | lib/regcomp.c | 1119 | lib/regcomp.c |
717 | lib/regex.c | 1120 | lib/regex.c |
718 | lib/regex.h | 1121 | lib/regex.h |
719 | lib/regex_internal.c | 1122 | lib/regex_internal.c |
720 | lib/regex_internal.h | 1123 | lib/regex_internal.h |
721 | lib/regexec.c | 1124 | lib/regexec.c |
722 | lib/safe-read.c | ||
723 | lib/safe-read.h | ||
724 | lib/setenv.c | 1125 | lib/setenv.c |
725 | lib/sha1.c | 1126 | lib/setlocale-lock.c |
726 | lib/sha1.h | 1127 | lib/setlocale_null.c |
1128 | lib/setlocale_null.h | ||
1129 | lib/sha256-stream.c | ||
1130 | lib/sha256.c | ||
1131 | lib/sha256.h | ||
727 | lib/size_max.h | 1132 | lib/size_max.h |
728 | lib/snprintf.c | 1133 | lib/snprintf.c |
729 | lib/sockets.c | 1134 | lib/sockets.c |
730 | lib/sockets.h | 1135 | lib/sockets.h |
1136 | lib/stat-time.c | ||
1137 | lib/stat-time.h | ||
1138 | lib/stat-w32.c | ||
1139 | lib/stat-w32.h | ||
1140 | lib/stat.c | ||
731 | lib/stdalign.in.h | 1141 | lib/stdalign.in.h |
732 | lib/stdbool.in.h | 1142 | lib/stdckdint.in.h |
733 | lib/stddef.in.h | 1143 | lib/stddef.in.h |
734 | lib/stdint.in.h | 1144 | lib/stdint.in.h |
1145 | lib/stdio-impl.h | ||
1146 | lib/stdio-read.c | ||
1147 | lib/stdio-write.c | ||
735 | lib/stdio.in.h | 1148 | lib/stdio.in.h |
736 | lib/stdlib.in.h | 1149 | lib/stdlib.in.h |
737 | lib/str-two-way.h | 1150 | lib/str-two-way.h |
@@ -745,12 +1158,12 @@ AC_DEFUN([gl_FILE_LIST], [ | |||
745 | lib/strings.in.h | 1158 | lib/strings.in.h |
746 | lib/stripslash.c | 1159 | lib/stripslash.c |
747 | lib/strncasecmp.c | 1160 | lib/strncasecmp.c |
748 | lib/strndup.c | ||
749 | lib/strnlen.c | ||
750 | lib/strsep.c | 1161 | lib/strsep.c |
751 | lib/strstr.c | 1162 | lib/strstr.c |
1163 | lib/sys-limits.h | ||
752 | lib/sys_socket.c | 1164 | lib/sys_socket.c |
753 | lib/sys_socket.in.h | 1165 | lib/sys_socket.in.h |
1166 | lib/sys_stat.in.h | ||
754 | lib/sys_types.in.h | 1167 | lib/sys_types.in.h |
755 | lib/sys_uio.in.h | 1168 | lib/sys_uio.in.h |
756 | lib/time.in.h | 1169 | lib/time.in.h |
@@ -758,6 +1171,7 @@ AC_DEFUN([gl_FILE_LIST], [ | |||
758 | lib/timegm.c | 1171 | lib/timegm.c |
759 | lib/unistd.c | 1172 | lib/unistd.c |
760 | lib/unistd.in.h | 1173 | lib/unistd.in.h |
1174 | lib/unlocked-io.h | ||
761 | lib/unsetenv.c | 1175 | lib/unsetenv.c |
762 | lib/vasnprintf.c | 1176 | lib/vasnprintf.c |
763 | lib/vasnprintf.h | 1177 | lib/vasnprintf.h |
@@ -765,27 +1179,43 @@ AC_DEFUN([gl_FILE_LIST], [ | |||
765 | lib/verify.h | 1179 | lib/verify.h |
766 | lib/vsnprintf.c | 1180 | lib/vsnprintf.c |
767 | lib/w32sock.h | 1181 | lib/w32sock.h |
1182 | lib/warn-on-use.h | ||
768 | lib/wchar.in.h | 1183 | lib/wchar.in.h |
769 | lib/wcrtomb.c | 1184 | lib/wcrtomb.c |
770 | lib/wctype-h.c | 1185 | lib/wctype-h.c |
771 | lib/wctype.in.h | 1186 | lib/wctype.in.h |
1187 | lib/windows-initguard.h | ||
1188 | lib/windows-mutex.c | ||
1189 | lib/windows-mutex.h | ||
1190 | lib/windows-once.c | ||
1191 | lib/windows-once.h | ||
1192 | lib/windows-recmutex.c | ||
1193 | lib/windows-recmutex.h | ||
1194 | lib/windows-rwlock.c | ||
1195 | lib/windows-rwlock.h | ||
772 | lib/xalloc-die.c | 1196 | lib/xalloc-die.c |
773 | lib/xalloc-oversized.h | 1197 | lib/xalloc-oversized.h |
774 | lib/xalloc.h | 1198 | lib/xalloc.h |
775 | lib/xmalloc.c | 1199 | lib/xmalloc.c |
776 | lib/xsize.c | 1200 | lib/xsize.c |
777 | lib/xsize.h | 1201 | lib/xsize.h |
778 | lib/xstrndup.c | ||
779 | lib/xstrndup.h | ||
780 | m4/00gnulib.m4 | 1202 | m4/00gnulib.m4 |
1203 | m4/__inline.m4 | ||
1204 | m4/absolute-header.m4 | ||
1205 | m4/af_alg.m4 | ||
781 | m4/alloca.m4 | 1206 | m4/alloca.m4 |
782 | m4/arpa_inet_h.m4 | 1207 | m4/arpa_inet_h.m4 |
1208 | m4/assert_h.m4 | ||
783 | m4/base64.m4 | 1209 | m4/base64.m4 |
784 | m4/btowc.m4 | 1210 | m4/btowc.m4 |
1211 | m4/builtin-expect.m4 | ||
1212 | m4/byteswap.m4 | ||
1213 | m4/c-bool.m4 | ||
1214 | m4/calloc.m4 | ||
1215 | m4/close.m4 | ||
785 | m4/codeset.m4 | 1216 | m4/codeset.m4 |
786 | m4/configmake.m4 | ||
787 | m4/dirname.m4 | ||
788 | m4/double-slash-root.m4 | 1217 | m4/double-slash-root.m4 |
1218 | m4/dup2.m4 | ||
789 | m4/eealloc.m4 | 1219 | m4/eealloc.m4 |
790 | m4/environ.m4 | 1220 | m4/environ.m4 |
791 | m4/errno_h.m4 | 1221 | m4/errno_h.m4 |
@@ -794,37 +1224,42 @@ AC_DEFUN([gl_FILE_LIST], [ | |||
794 | m4/extensions.m4 | 1224 | m4/extensions.m4 |
795 | m4/extern-inline.m4 | 1225 | m4/extern-inline.m4 |
796 | m4/fcntl-o.m4 | 1226 | m4/fcntl-o.m4 |
1227 | m4/fcntl.m4 | ||
1228 | m4/fcntl_h.m4 | ||
1229 | m4/fflush.m4 | ||
797 | m4/float_h.m4 | 1230 | m4/float_h.m4 |
798 | m4/floorf.m4 | 1231 | m4/floorf.m4 |
1232 | m4/fopen.m4 | ||
1233 | m4/fpurge.m4 | ||
1234 | m4/freading.m4 | ||
1235 | m4/free.m4 | ||
1236 | m4/fseek.m4 | ||
1237 | m4/fseeko.m4 | ||
1238 | m4/fstat.m4 | ||
799 | m4/fstypename.m4 | 1239 | m4/fstypename.m4 |
800 | m4/fsusage.m4 | 1240 | m4/fsusage.m4 |
1241 | m4/ftell.m4 | ||
1242 | m4/ftello.m4 | ||
801 | m4/getaddrinfo.m4 | 1243 | m4/getaddrinfo.m4 |
1244 | m4/getdelim.m4 | ||
1245 | m4/getdtablesize.m4 | ||
802 | m4/gethostname.m4 | 1246 | m4/gethostname.m4 |
1247 | m4/getline.m4 | ||
803 | m4/getloadavg.m4 | 1248 | m4/getloadavg.m4 |
804 | m4/getopt.m4 | 1249 | m4/getopt.m4 |
805 | m4/gettext.m4 | 1250 | m4/getprogname.m4 |
806 | m4/glibc2.m4 | 1251 | m4/gl-openssl.m4 |
807 | m4/glibc21.m4 | ||
808 | m4/gnulib-common.m4 | 1252 | m4/gnulib-common.m4 |
809 | m4/hostent.m4 | 1253 | m4/hostent.m4 |
810 | m4/iconv.m4 | ||
811 | m4/idpriv.m4 | 1254 | m4/idpriv.m4 |
812 | m4/include_next.m4 | 1255 | m4/include_next.m4 |
813 | m4/inet_ntop.m4 | 1256 | m4/inet_ntop.m4 |
814 | m4/intdiv0.m4 | ||
815 | m4/intl.m4 | ||
816 | m4/intldir.m4 | ||
817 | m4/intlmacosx.m4 | ||
818 | m4/intmax.m4 | ||
819 | m4/intmax_t.m4 | 1257 | m4/intmax_t.m4 |
820 | m4/inttypes-pri.m4 | 1258 | m4/inttypes.m4 |
821 | m4/inttypes_h.m4 | 1259 | m4/inttypes_h.m4 |
822 | m4/langinfo_h.m4 | 1260 | m4/langinfo_h.m4 |
823 | m4/largefile.m4 | 1261 | m4/largefile.m4 |
824 | m4/lcmessage.m4 | 1262 | m4/limits-h.m4 |
825 | m4/lib-ld.m4 | ||
826 | m4/lib-link.m4 | ||
827 | m4/lib-prefix.m4 | ||
828 | m4/localcharset.m4 | 1263 | m4/localcharset.m4 |
829 | m4/locale-fr.m4 | 1264 | m4/locale-fr.m4 |
830 | m4/locale-ja.m4 | 1265 | m4/locale-ja.m4 |
@@ -832,8 +1267,7 @@ AC_DEFUN([gl_FILE_LIST], [ | |||
832 | m4/locale_h.m4 | 1267 | m4/locale_h.m4 |
833 | m4/localeconv.m4 | 1268 | m4/localeconv.m4 |
834 | m4/lock.m4 | 1269 | m4/lock.m4 |
835 | m4/longlong.m4 | 1270 | m4/lseek.m4 |
836 | m4/ls-mntd-fs.m4 | ||
837 | m4/malloc.m4 | 1271 | m4/malloc.m4 |
838 | m4/malloca.m4 | 1272 | m4/malloca.m4 |
839 | m4/math_h.m4 | 1273 | m4/math_h.m4 |
@@ -842,8 +1276,10 @@ AC_DEFUN([gl_FILE_LIST], [ | |||
842 | m4/mbstate_t.m4 | 1276 | m4/mbstate_t.m4 |
843 | m4/mbtowc.m4 | 1277 | m4/mbtowc.m4 |
844 | m4/memchr.m4 | 1278 | m4/memchr.m4 |
1279 | m4/minmax.m4 | ||
845 | m4/mktime.m4 | 1280 | m4/mktime.m4 |
846 | m4/mmap-anon.m4 | 1281 | m4/mmap-anon.m4 |
1282 | m4/mode_t.m4 | ||
847 | m4/mountlist.m4 | 1283 | m4/mountlist.m4 |
848 | m4/msvc-inval.m4 | 1284 | m4/msvc-inval.m4 |
849 | m4/msvc-nothrow.m4 | 1285 | m4/msvc-nothrow.m4 |
@@ -851,20 +1287,22 @@ AC_DEFUN([gl_FILE_LIST], [ | |||
851 | m4/netdb_h.m4 | 1287 | m4/netdb_h.m4 |
852 | m4/netinet_in_h.m4 | 1288 | m4/netinet_in_h.m4 |
853 | m4/nl_langinfo.m4 | 1289 | m4/nl_langinfo.m4 |
854 | m4/nls.m4 | ||
855 | m4/nocrash.m4 | 1290 | m4/nocrash.m4 |
856 | m4/off_t.m4 | 1291 | m4/off_t.m4 |
857 | m4/onceonly.m4 | 1292 | m4/open-cloexec.m4 |
858 | m4/po.m4 | 1293 | m4/open-slash.m4 |
859 | m4/printf-posix.m4 | 1294 | m4/open.m4 |
1295 | m4/pathmax.m4 | ||
1296 | m4/pid_t.m4 | ||
860 | m4/printf.m4 | 1297 | m4/printf.m4 |
861 | m4/progtest.m4 | 1298 | m4/pthread_rwlock_rdlock.m4 |
862 | m4/read.m4 | 1299 | m4/realloc.m4 |
1300 | m4/reallocarray.m4 | ||
863 | m4/regex.m4 | 1301 | m4/regex.m4 |
864 | m4/safe-read.m4 | ||
865 | m4/servent.m4 | 1302 | m4/servent.m4 |
866 | m4/setenv.m4 | 1303 | m4/setenv.m4 |
867 | m4/sha1.m4 | 1304 | m4/setlocale_null.m4 |
1305 | m4/sha256.m4 | ||
868 | m4/size_max.m4 | 1306 | m4/size_max.m4 |
869 | m4/snprintf.m4 | 1307 | m4/snprintf.m4 |
870 | m4/socketlib.m4 | 1308 | m4/socketlib.m4 |
@@ -872,8 +1310,10 @@ AC_DEFUN([gl_FILE_LIST], [ | |||
872 | m4/socklen.m4 | 1310 | m4/socklen.m4 |
873 | m4/sockpfaf.m4 | 1311 | m4/sockpfaf.m4 |
874 | m4/ssize_t.m4 | 1312 | m4/ssize_t.m4 |
1313 | m4/stat-time.m4 | ||
1314 | m4/stat.m4 | ||
1315 | m4/std-gnu11.m4 | ||
875 | m4/stdalign.m4 | 1316 | m4/stdalign.m4 |
876 | m4/stdbool.m4 | ||
877 | m4/stddef_h.m4 | 1317 | m4/stddef_h.m4 |
878 | m4/stdint.m4 | 1318 | m4/stdint.m4 |
879 | m4/stdint_h.m4 | 1319 | m4/stdint_h.m4 |
@@ -884,19 +1324,20 @@ AC_DEFUN([gl_FILE_LIST], [ | |||
884 | m4/strerror.m4 | 1324 | m4/strerror.m4 |
885 | m4/string_h.m4 | 1325 | m4/string_h.m4 |
886 | m4/strings_h.m4 | 1326 | m4/strings_h.m4 |
887 | m4/strndup.m4 | ||
888 | m4/strnlen.m4 | ||
889 | m4/strsep.m4 | 1327 | m4/strsep.m4 |
890 | m4/strstr.m4 | 1328 | m4/strstr.m4 |
891 | m4/sys_socket_h.m4 | 1329 | m4/sys_socket_h.m4 |
1330 | m4/sys_stat_h.m4 | ||
892 | m4/sys_types_h.m4 | 1331 | m4/sys_types_h.m4 |
893 | m4/sys_uio_h.m4 | 1332 | m4/sys_uio_h.m4 |
894 | m4/threadlib.m4 | 1333 | m4/threadlib.m4 |
895 | m4/time_h.m4 | 1334 | m4/time_h.m4 |
896 | m4/time_r.m4 | 1335 | m4/time_r.m4 |
897 | m4/timegm.m4 | 1336 | m4/timegm.m4 |
898 | m4/uintmax_t.m4 | 1337 | m4/ungetc.m4 |
899 | m4/unistd_h.m4 | 1338 | m4/unistd_h.m4 |
1339 | m4/unlocked-io.m4 | ||
1340 | m4/vararrays.m4 | ||
900 | m4/vasnprintf.m4 | 1341 | m4/vasnprintf.m4 |
901 | m4/vasprintf.m4 | 1342 | m4/vasprintf.m4 |
902 | m4/visibility.m4 | 1343 | m4/visibility.m4 |
@@ -909,5 +1350,5 @@ AC_DEFUN([gl_FILE_LIST], [ | |||
909 | m4/wint_t.m4 | 1350 | m4/wint_t.m4 |
910 | m4/xalloc.m4 | 1351 | m4/xalloc.m4 |
911 | m4/xsize.m4 | 1352 | m4/xsize.m4 |
912 | m4/xstrndup.m4 | 1353 | m4/zzgnulib.m4 |
913 | ]) | 1354 | ]) |
diff --git a/gl/m4/gnulib-tool.m4 b/gl/m4/gnulib-tool.m4 index f3dea1a9..a9dd569b 100644 --- a/gl/m4/gnulib-tool.m4 +++ b/gl/m4/gnulib-tool.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # gnulib-tool.m4 serial 2 | 1 | # gnulib-tool.m4 serial 4 |
2 | dnl Copyright (C) 2004-2005, 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2004-2005, 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -44,6 +44,12 @@ AC_DEFUN([gl_LGPL], []) | |||
44 | dnl Usage: gl_MAKEFILE_NAME([FILENAME]) | 44 | dnl Usage: gl_MAKEFILE_NAME([FILENAME]) |
45 | AC_DEFUN([gl_MAKEFILE_NAME], []) | 45 | AC_DEFUN([gl_MAKEFILE_NAME], []) |
46 | 46 | ||
47 | dnl Usage: gl_TESTS_MAKEFILE_NAME([FILENAME]) | ||
48 | AC_DEFUN([gl_TESTS_MAKEFILE_NAME], []) | ||
49 | |||
50 | dnl Usage: gl_AUTOMAKE_SUBDIR | ||
51 | AC_DEFUN([gl_AUTOMAKE_SUBDIR], []) | ||
52 | |||
47 | dnl Usage: gl_LIBTOOL | 53 | dnl Usage: gl_LIBTOOL |
48 | AC_DEFUN([gl_LIBTOOL], []) | 54 | AC_DEFUN([gl_LIBTOOL], []) |
49 | 55 | ||
diff --git a/gl/m4/hostent.m4 b/gl/m4/hostent.m4 index 72be876b..3b2cc2b2 100644 --- a/gl/m4/hostent.m4 +++ b/gl/m4/hostent.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # hostent.m4 serial 2 | 1 | # hostent.m4 serial 4 |
2 | dnl Copyright (C) 2008, 2010-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2008, 2010-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -8,12 +8,12 @@ AC_DEFUN([gl_HOSTENT], | |||
8 | [ | 8 | [ |
9 | dnl Where are gethostent(), sethostent(), endhostent(), gethostbyname(), | 9 | dnl Where are gethostent(), sethostent(), endhostent(), gethostbyname(), |
10 | dnl gethostbyaddr() defined? | 10 | dnl gethostbyaddr() defined? |
11 | dnl - On Solaris, they are in libnsl. Ignore libxnet. | 11 | dnl - On Solaris < 11.4, they are in libnsl. Ignore libxnet. |
12 | dnl - On Haiku, they are in libnetwork. | 12 | dnl - On Haiku, they are in libnetwork. |
13 | dnl - On BeOS, they are in libnet. | 13 | dnl - On BeOS, they are in libnet. |
14 | dnl - On native Windows, they are in ws2_32.dll. | 14 | dnl - On native Windows, they are in ws2_32.dll. |
15 | dnl - Otherwise they are in libc. | 15 | dnl - Otherwise they are in libc. |
16 | AC_REQUIRE([gl_HEADER_SYS_SOCKET])dnl for HAVE_SYS_SOCKET_H, HAVE_WINSOCK2_H | 16 | AC_REQUIRE([gl_SYS_SOCKET_H])dnl for HAVE_SYS_SOCKET_H, HAVE_WINSOCK2_H |
17 | HOSTENT_LIB= | 17 | HOSTENT_LIB= |
18 | gl_saved_libs="$LIBS" | 18 | gl_saved_libs="$LIBS" |
19 | AC_SEARCH_LIBS([gethostbyname], [nsl network net], | 19 | AC_SEARCH_LIBS([gethostbyname], [nsl network net], |
diff --git a/gl/m4/iconv.m4 b/gl/m4/iconv.m4 deleted file mode 100644 index a5036465..00000000 --- a/gl/m4/iconv.m4 +++ /dev/null | |||
@@ -1,268 +0,0 @@ | |||
1 | # iconv.m4 serial 18 (gettext-0.18.2) | ||
2 | dnl Copyright (C) 2000-2002, 2007-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | dnl From Bruno Haible. | ||
8 | |||
9 | AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], | ||
10 | [ | ||
11 | dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. | ||
12 | AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) | ||
13 | AC_REQUIRE([AC_LIB_RPATH]) | ||
14 | |||
15 | dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV | ||
16 | dnl accordingly. | ||
17 | AC_LIB_LINKFLAGS_BODY([iconv]) | ||
18 | ]) | ||
19 | |||
20 | AC_DEFUN([AM_ICONV_LINK], | ||
21 | [ | ||
22 | dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and | ||
23 | dnl those with the standalone portable GNU libiconv installed). | ||
24 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | ||
25 | |||
26 | dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV | ||
27 | dnl accordingly. | ||
28 | AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) | ||
29 | |||
30 | dnl Add $INCICONV to CPPFLAGS before performing the following checks, | ||
31 | dnl because if the user has installed libiconv and not disabled its use | ||
32 | dnl via --without-libiconv-prefix, he wants to use it. The first | ||
33 | dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed. | ||
34 | am_save_CPPFLAGS="$CPPFLAGS" | ||
35 | AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) | ||
36 | |||
37 | AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ | ||
38 | am_cv_func_iconv="no, consider installing GNU libiconv" | ||
39 | am_cv_lib_iconv=no | ||
40 | AC_LINK_IFELSE( | ||
41 | [AC_LANG_PROGRAM( | ||
42 | [[ | ||
43 | #include <stdlib.h> | ||
44 | #include <iconv.h> | ||
45 | ]], | ||
46 | [[iconv_t cd = iconv_open("",""); | ||
47 | iconv(cd,NULL,NULL,NULL,NULL); | ||
48 | iconv_close(cd);]])], | ||
49 | [am_cv_func_iconv=yes]) | ||
50 | if test "$am_cv_func_iconv" != yes; then | ||
51 | am_save_LIBS="$LIBS" | ||
52 | LIBS="$LIBS $LIBICONV" | ||
53 | AC_LINK_IFELSE( | ||
54 | [AC_LANG_PROGRAM( | ||
55 | [[ | ||
56 | #include <stdlib.h> | ||
57 | #include <iconv.h> | ||
58 | ]], | ||
59 | [[iconv_t cd = iconv_open("",""); | ||
60 | iconv(cd,NULL,NULL,NULL,NULL); | ||
61 | iconv_close(cd);]])], | ||
62 | [am_cv_lib_iconv=yes] | ||
63 | [am_cv_func_iconv=yes]) | ||
64 | LIBS="$am_save_LIBS" | ||
65 | fi | ||
66 | ]) | ||
67 | if test "$am_cv_func_iconv" = yes; then | ||
68 | AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ | ||
69 | dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, | ||
70 | dnl Solaris 10. | ||
71 | am_save_LIBS="$LIBS" | ||
72 | if test $am_cv_lib_iconv = yes; then | ||
73 | LIBS="$LIBS $LIBICONV" | ||
74 | fi | ||
75 | AC_RUN_IFELSE( | ||
76 | [AC_LANG_SOURCE([[ | ||
77 | #include <iconv.h> | ||
78 | #include <string.h> | ||
79 | int main () | ||
80 | { | ||
81 | int result = 0; | ||
82 | /* Test against AIX 5.1 bug: Failures are not distinguishable from successful | ||
83 | returns. */ | ||
84 | { | ||
85 | iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); | ||
86 | if (cd_utf8_to_88591 != (iconv_t)(-1)) | ||
87 | { | ||
88 | static const char input[] = "\342\202\254"; /* EURO SIGN */ | ||
89 | char buf[10]; | ||
90 | const char *inptr = input; | ||
91 | size_t inbytesleft = strlen (input); | ||
92 | char *outptr = buf; | ||
93 | size_t outbytesleft = sizeof (buf); | ||
94 | size_t res = iconv (cd_utf8_to_88591, | ||
95 | (char **) &inptr, &inbytesleft, | ||
96 | &outptr, &outbytesleft); | ||
97 | if (res == 0) | ||
98 | result |= 1; | ||
99 | iconv_close (cd_utf8_to_88591); | ||
100 | } | ||
101 | } | ||
102 | /* Test against Solaris 10 bug: Failures are not distinguishable from | ||
103 | successful returns. */ | ||
104 | { | ||
105 | iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); | ||
106 | if (cd_ascii_to_88591 != (iconv_t)(-1)) | ||
107 | { | ||
108 | static const char input[] = "\263"; | ||
109 | char buf[10]; | ||
110 | const char *inptr = input; | ||
111 | size_t inbytesleft = strlen (input); | ||
112 | char *outptr = buf; | ||
113 | size_t outbytesleft = sizeof (buf); | ||
114 | size_t res = iconv (cd_ascii_to_88591, | ||
115 | (char **) &inptr, &inbytesleft, | ||
116 | &outptr, &outbytesleft); | ||
117 | if (res == 0) | ||
118 | result |= 2; | ||
119 | iconv_close (cd_ascii_to_88591); | ||
120 | } | ||
121 | } | ||
122 | /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ | ||
123 | { | ||
124 | iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); | ||
125 | if (cd_88591_to_utf8 != (iconv_t)(-1)) | ||
126 | { | ||
127 | static const char input[] = "\304"; | ||
128 | static char buf[2] = { (char)0xDE, (char)0xAD }; | ||
129 | const char *inptr = input; | ||
130 | size_t inbytesleft = 1; | ||
131 | char *outptr = buf; | ||
132 | size_t outbytesleft = 1; | ||
133 | size_t res = iconv (cd_88591_to_utf8, | ||
134 | (char **) &inptr, &inbytesleft, | ||
135 | &outptr, &outbytesleft); | ||
136 | if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) | ||
137 | result |= 4; | ||
138 | iconv_close (cd_88591_to_utf8); | ||
139 | } | ||
140 | } | ||
141 | #if 0 /* This bug could be worked around by the caller. */ | ||
142 | /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ | ||
143 | { | ||
144 | iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); | ||
145 | if (cd_88591_to_utf8 != (iconv_t)(-1)) | ||
146 | { | ||
147 | static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; | ||
148 | char buf[50]; | ||
149 | const char *inptr = input; | ||
150 | size_t inbytesleft = strlen (input); | ||
151 | char *outptr = buf; | ||
152 | size_t outbytesleft = sizeof (buf); | ||
153 | size_t res = iconv (cd_88591_to_utf8, | ||
154 | (char **) &inptr, &inbytesleft, | ||
155 | &outptr, &outbytesleft); | ||
156 | if ((int)res > 0) | ||
157 | result |= 8; | ||
158 | iconv_close (cd_88591_to_utf8); | ||
159 | } | ||
160 | } | ||
161 | #endif | ||
162 | /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is | ||
163 | provided. */ | ||
164 | if (/* Try standardized names. */ | ||
165 | iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) | ||
166 | /* Try IRIX, OSF/1 names. */ | ||
167 | && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) | ||
168 | /* Try AIX names. */ | ||
169 | && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) | ||
170 | /* Try HP-UX names. */ | ||
171 | && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) | ||
172 | result |= 16; | ||
173 | return result; | ||
174 | }]])], | ||
175 | [am_cv_func_iconv_works=yes], | ||
176 | [am_cv_func_iconv_works=no], | ||
177 | [ | ||
178 | changequote(,)dnl | ||
179 | case "$host_os" in | ||
180 | aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; | ||
181 | *) am_cv_func_iconv_works="guessing yes" ;; | ||
182 | esac | ||
183 | changequote([,])dnl | ||
184 | ]) | ||
185 | LIBS="$am_save_LIBS" | ||
186 | ]) | ||
187 | case "$am_cv_func_iconv_works" in | ||
188 | *no) am_func_iconv=no am_cv_lib_iconv=no ;; | ||
189 | *) am_func_iconv=yes ;; | ||
190 | esac | ||
191 | else | ||
192 | am_func_iconv=no am_cv_lib_iconv=no | ||
193 | fi | ||
194 | if test "$am_func_iconv" = yes; then | ||
195 | AC_DEFINE([HAVE_ICONV], [1], | ||
196 | [Define if you have the iconv() function and it works.]) | ||
197 | fi | ||
198 | if test "$am_cv_lib_iconv" = yes; then | ||
199 | AC_MSG_CHECKING([how to link with libiconv]) | ||
200 | AC_MSG_RESULT([$LIBICONV]) | ||
201 | else | ||
202 | dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV | ||
203 | dnl either. | ||
204 | CPPFLAGS="$am_save_CPPFLAGS" | ||
205 | LIBICONV= | ||
206 | LTLIBICONV= | ||
207 | fi | ||
208 | AC_SUBST([LIBICONV]) | ||
209 | AC_SUBST([LTLIBICONV]) | ||
210 | ]) | ||
211 | |||
212 | dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to | ||
213 | dnl avoid warnings like | ||
214 | dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". | ||
215 | dnl This is tricky because of the way 'aclocal' is implemented: | ||
216 | dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. | ||
217 | dnl Otherwise aclocal's initial scan pass would miss the macro definition. | ||
218 | dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. | ||
219 | dnl Otherwise aclocal would emit many "Use of uninitialized value $1" | ||
220 | dnl warnings. | ||
221 | m4_define([gl_iconv_AC_DEFUN], | ||
222 | m4_version_prereq([2.64], | ||
223 | [[AC_DEFUN_ONCE( | ||
224 | [$1], [$2])]], | ||
225 | [m4_ifdef([gl_00GNULIB], | ||
226 | [[AC_DEFUN_ONCE( | ||
227 | [$1], [$2])]], | ||
228 | [[AC_DEFUN( | ||
229 | [$1], [$2])]])])) | ||
230 | gl_iconv_AC_DEFUN([AM_ICONV], | ||
231 | [ | ||
232 | AM_ICONV_LINK | ||
233 | if test "$am_cv_func_iconv" = yes; then | ||
234 | AC_MSG_CHECKING([for iconv declaration]) | ||
235 | AC_CACHE_VAL([am_cv_proto_iconv], [ | ||
236 | AC_COMPILE_IFELSE( | ||
237 | [AC_LANG_PROGRAM( | ||
238 | [[ | ||
239 | #include <stdlib.h> | ||
240 | #include <iconv.h> | ||
241 | extern | ||
242 | #ifdef __cplusplus | ||
243 | "C" | ||
244 | #endif | ||
245 | #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) | ||
246 | size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); | ||
247 | #else | ||
248 | size_t iconv(); | ||
249 | #endif | ||
250 | ]], | ||
251 | [[]])], | ||
252 | [am_cv_proto_iconv_arg1=""], | ||
253 | [am_cv_proto_iconv_arg1="const"]) | ||
254 | am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) | ||
255 | am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` | ||
256 | AC_MSG_RESULT([ | ||
257 | $am_cv_proto_iconv]) | ||
258 | AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], | ||
259 | [Define as const if the declaration of iconv() needs const.]) | ||
260 | dnl Also substitute ICONV_CONST in the gnulib generated <iconv.h>. | ||
261 | m4_ifdef([gl_ICONV_H_DEFAULTS], | ||
262 | [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) | ||
263 | if test -n "$am_cv_proto_iconv_arg1"; then | ||
264 | ICONV_CONST="const" | ||
265 | fi | ||
266 | ]) | ||
267 | fi | ||
268 | ]) | ||
diff --git a/gl/m4/idpriv.m4 b/gl/m4/idpriv.m4 index 167f5238..fc3dd17d 100644 --- a/gl/m4/idpriv.m4 +++ b/gl/m4/idpriv.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # idpriv.m4 serial 1 | 1 | # idpriv.m4 serial 1 |
2 | dnl Copyright (C) 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
diff --git a/gl/m4/include_next.m4 b/gl/m4/include_next.m4 index 108d9456..9f19215e 100644 --- a/gl/m4/include_next.m4 +++ b/gl/m4/include_next.m4 | |||
@@ -1,12 +1,13 @@ | |||
1 | # include_next.m4 serial 23 | 1 | # include_next.m4 serial 26 |
2 | dnl Copyright (C) 2006-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2006-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | dnl From Paul Eggert and Derek Price. | 7 | dnl From Paul Eggert and Derek Price. |
8 | 8 | ||
9 | dnl Sets INCLUDE_NEXT and PRAGMA_SYSTEM_HEADER. | 9 | dnl Sets INCLUDE_NEXT, INCLUDE_NEXT_AS_FIRST_DIRECTIVE, PRAGMA_SYSTEM_HEADER, |
10 | dnl and PRAGMA_COLUMNS. | ||
10 | dnl | 11 | dnl |
11 | dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to | 12 | dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to |
12 | dnl 'include' otherwise. | 13 | dnl 'include' otherwise. |
@@ -105,19 +106,21 @@ dnl We intentionally avoid using AC_LANG_SOURCE here. | |||
105 | AC_SUBST([INCLUDE_NEXT]) | 106 | AC_SUBST([INCLUDE_NEXT]) |
106 | AC_SUBST([INCLUDE_NEXT_AS_FIRST_DIRECTIVE]) | 107 | AC_SUBST([INCLUDE_NEXT_AS_FIRST_DIRECTIVE]) |
107 | AC_SUBST([PRAGMA_SYSTEM_HEADER]) | 108 | AC_SUBST([PRAGMA_SYSTEM_HEADER]) |
108 | AC_CACHE_CHECK([whether system header files limit the line length], | 109 | |
109 | [gl_cv_pragma_columns], | 110 | dnl HP NonStop systems, which define __TANDEM, limit the line length |
110 | [dnl HP NonStop systems, which define __TANDEM, have this misfeature. | 111 | dnl after including some system header files. |
111 | AC_EGREP_CPP([choke me], | 112 | AC_CACHE_CHECK([whether source code line length is unlimited], |
113 | [gl_cv_source_line_length_unlimited], | ||
114 | [AC_EGREP_CPP([choke me], | ||
112 | [ | 115 | [ |
113 | #ifdef __TANDEM | 116 | #ifdef __TANDEM |
114 | choke me | 117 | choke me |
115 | #endif | 118 | #endif |
116 | ], | 119 | ], |
117 | [gl_cv_pragma_columns=yes], | 120 | [gl_cv_source_line_length_unlimited=no], |
118 | [gl_cv_pragma_columns=no]) | 121 | [gl_cv_source_line_length_unlimited=yes]) |
119 | ]) | 122 | ]) |
120 | if test $gl_cv_pragma_columns = yes; then | 123 | if test $gl_cv_source_line_length_unlimited = no; then |
121 | PRAGMA_COLUMNS="#pragma COLUMNS 10000" | 124 | PRAGMA_COLUMNS="#pragma COLUMNS 10000" |
122 | else | 125 | else |
123 | PRAGMA_COLUMNS= | 126 | PRAGMA_COLUMNS= |
@@ -175,89 +178,40 @@ AC_DEFUN([gl_NEXT_HEADERS_INTERNAL], | |||
175 | [AC_CHECK_HEADERS_ONCE([$1]) | 178 | [AC_CHECK_HEADERS_ONCE([$1]) |
176 | ]) | 179 | ]) |
177 | 180 | ||
178 | dnl FIXME: gl_next_header and gl_header_exists must be used unquoted | ||
179 | dnl until we can assume autoconf 2.64 or newer. | ||
180 | m4_foreach_w([gl_HEADER_NAME], [$1], | 181 | m4_foreach_w([gl_HEADER_NAME], [$1], |
181 | [AS_VAR_PUSHDEF([gl_next_header], | 182 | [AS_VAR_PUSHDEF([gl_next_header], |
182 | [gl_cv_next_]m4_defn([gl_HEADER_NAME])) | 183 | [gl_cv_next_]m4_defn([gl_HEADER_NAME])) |
183 | if test $gl_cv_have_include_next = yes; then | 184 | if test $gl_cv_have_include_next = yes; then |
184 | AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>']) | 185 | AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>']) |
185 | else | 186 | else |
186 | AC_CACHE_CHECK( | 187 | AC_CACHE_CHECK( |
187 | [absolute name of <]m4_defn([gl_HEADER_NAME])[>], | 188 | [absolute name of <]m4_defn([gl_HEADER_NAME])[>], |
188 | m4_defn([gl_next_header]), | 189 | [gl_next_header], |
189 | [m4_if([$2], [check], | 190 | [m4_if([$2], [check], |
190 | [AS_VAR_PUSHDEF([gl_header_exists], | 191 | [AS_VAR_PUSHDEF([gl_header_exists], |
191 | [ac_cv_header_]m4_defn([gl_HEADER_NAME])) | 192 | [ac_cv_header_]m4_defn([gl_HEADER_NAME])) |
192 | if test AS_VAR_GET(gl_header_exists) = yes; then | 193 | if test AS_VAR_GET([gl_header_exists]) = yes; then |
193 | AS_VAR_POPDEF([gl_header_exists]) | 194 | AS_VAR_POPDEF([gl_header_exists]) |
194 | ]) | 195 | ]) |
195 | AC_LANG_CONFTEST( | 196 | gl_ABSOLUTE_HEADER_ONE(gl_HEADER_NAME) |
196 | [AC_LANG_SOURCE( | 197 | AS_VAR_COPY([gl_header], [gl_cv_absolute_]AS_TR_SH(gl_HEADER_NAME)) |
197 | [[#include <]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]] | 198 | AS_VAR_SET([gl_next_header], ['"'$gl_header'"']) |
198 | )]) | ||
199 | dnl AIX "xlc -E" and "cc -E" omit #line directives for header | ||
200 | dnl files that contain only a #include of other header files and | ||
201 | dnl no non-comment tokens of their own. This leads to a failure | ||
202 | dnl to detect the absolute name of <dirent.h>, <signal.h>, | ||
203 | dnl <poll.h> and others. The workaround is to force preservation | ||
204 | dnl of comments through option -C. This ensures all necessary | ||
205 | dnl #line directives are present. GCC supports option -C as well. | ||
206 | case "$host_os" in | ||
207 | aix*) gl_absname_cpp="$ac_cpp -C" ;; | ||
208 | *) gl_absname_cpp="$ac_cpp" ;; | ||
209 | esac | ||
210 | changequote(,) | ||
211 | case "$host_os" in | ||
212 | mingw*) | ||
213 | dnl For the sake of native Windows compilers (excluding gcc), | ||
214 | dnl treat backslash as a directory separator, like /. | ||
215 | dnl Actually, these compilers use a double-backslash as | ||
216 | dnl directory separator, inside the | ||
217 | dnl # line "filename" | ||
218 | dnl directives. | ||
219 | gl_dirsep_regex='[/\\]' | ||
220 | ;; | ||
221 | *) | ||
222 | gl_dirsep_regex='\/' | ||
223 | ;; | ||
224 | esac | ||
225 | dnl A sed expression that turns a string into a basic regular | ||
226 | dnl expression, for use within "/.../". | ||
227 | gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g' | ||
228 | changequote([,]) | ||
229 | gl_header_literal_regex=`echo ']m4_defn([gl_HEADER_NAME])[' \ | ||
230 | | sed -e "$gl_make_literal_regex_sed"` | ||
231 | gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{ | ||
232 | s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/ | ||
233 | changequote(,)dnl | ||
234 | s|^/[^/]|//&| | ||
235 | changequote([,])dnl | ||
236 | p | ||
237 | q | ||
238 | }' | ||
239 | dnl eval is necessary to expand gl_absname_cpp. | ||
240 | dnl Ultrix and Pyramid sh refuse to redirect output of eval, | ||
241 | dnl so use subshell. | ||
242 | AS_VAR_SET(gl_next_header, | ||
243 | ['"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | | ||
244 | sed -n "$gl_absolute_header_sed"`'"']) | ||
245 | m4_if([$2], [check], | 199 | m4_if([$2], [check], |
246 | [else | 200 | [else |
247 | AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>']) | 201 | AS_VAR_SET([gl_next_header], ['<'gl_HEADER_NAME'>']) |
248 | fi | 202 | fi |
249 | ]) | 203 | ]) |
250 | ]) | 204 | ]) |
251 | fi | 205 | fi |
252 | AC_SUBST( | 206 | AC_SUBST( |
253 | AS_TR_CPP([NEXT_]m4_defn([gl_HEADER_NAME])), | 207 | AS_TR_CPP([NEXT_]m4_defn([gl_HEADER_NAME])), |
254 | [AS_VAR_GET(gl_next_header)]) | 208 | [AS_VAR_GET([gl_next_header])]) |
255 | if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then | 209 | if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then |
256 | # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' | 210 | # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next' |
257 | gl_next_as_first_directive='<'gl_HEADER_NAME'>' | 211 | gl_next_as_first_directive='<'gl_HEADER_NAME'>' |
258 | else | 212 | else |
259 | # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' | 213 | # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include' |
260 | gl_next_as_first_directive=AS_VAR_GET(gl_next_header) | 214 | gl_next_as_first_directive=AS_VAR_GET([gl_next_header]) |
261 | fi | 215 | fi |
262 | AC_SUBST( | 216 | AC_SUBST( |
263 | AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])), | 217 | AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])), |
diff --git a/gl/m4/inet_ntop.m4 b/gl/m4/inet_ntop.m4 index 476f063f..48822d69 100644 --- a/gl/m4/inet_ntop.m4 +++ b/gl/m4/inet_ntop.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # inet_ntop.m4 serial 19 | 1 | # inet_ntop.m4 serial 21 |
2 | dnl Copyright (C) 2005-2006, 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2005-2006, 2008-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -16,6 +16,7 @@ AC_DEFUN([gl_FUNC_INET_NTOP], | |||
16 | dnl Most platforms that provide inet_ntop define it in libc. | 16 | dnl Most platforms that provide inet_ntop define it in libc. |
17 | dnl Solaris 8..10 provide inet_ntop in libnsl instead. | 17 | dnl Solaris 8..10 provide inet_ntop in libnsl instead. |
18 | dnl Solaris 2.6..7 provide inet_ntop in libresolv instead. | 18 | dnl Solaris 2.6..7 provide inet_ntop in libresolv instead. |
19 | dnl Haiku provides it in -lnetwork. | ||
19 | dnl Native Windows provides it in -lws2_32 instead, with a declaration in | 20 | dnl Native Windows provides it in -lws2_32 instead, with a declaration in |
20 | dnl <ws2tcpip.h>, and it uses stdcall calling convention, not cdecl | 21 | dnl <ws2tcpip.h>, and it uses stdcall calling convention, not cdecl |
21 | dnl (hence we cannot use AC_CHECK_FUNCS, AC_SEARCH_LIBS to find it). | 22 | dnl (hence we cannot use AC_CHECK_FUNCS, AC_SEARCH_LIBS to find it). |
@@ -23,19 +24,20 @@ AC_DEFUN([gl_FUNC_INET_NTOP], | |||
23 | INET_NTOP_LIB= | 24 | INET_NTOP_LIB= |
24 | gl_PREREQ_SYS_H_WINSOCK2 | 25 | gl_PREREQ_SYS_H_WINSOCK2 |
25 | if test $HAVE_WINSOCK2_H = 1; then | 26 | if test $HAVE_WINSOCK2_H = 1; then |
27 | dnl It needs to be overridden, because the stdcall calling convention | ||
28 | dnl is not compliant with POSIX. Set REPLACE_INET_NTOP in order to avoid | ||
29 | dnl a name conflict at the linker level, even though the header file | ||
30 | dnl <ws2tcpip.h> declares inet_ntop only if _WIN32_WINNT >= 0x0600. | ||
31 | REPLACE_INET_NTOP=1 | ||
26 | AC_CHECK_DECLS([inet_ntop],,, [[#include <ws2tcpip.h>]]) | 32 | AC_CHECK_DECLS([inet_ntop],,, [[#include <ws2tcpip.h>]]) |
27 | if test $ac_cv_have_decl_inet_ntop = yes; then | 33 | if test $ac_cv_have_decl_inet_ntop = yes; then |
28 | dnl It needs to be overridden, because the stdcall calling convention | ||
29 | dnl is not compliant with POSIX. | ||
30 | REPLACE_INET_NTOP=1 | ||
31 | INET_NTOP_LIB="-lws2_32" | 34 | INET_NTOP_LIB="-lws2_32" |
32 | else | 35 | else |
33 | HAVE_DECL_INET_NTOP=0 | 36 | HAVE_DECL_INET_NTOP=0 |
34 | HAVE_INET_NTOP=0 | ||
35 | fi | 37 | fi |
36 | else | 38 | else |
37 | gl_save_LIBS=$LIBS | 39 | gl_save_LIBS=$LIBS |
38 | AC_SEARCH_LIBS([inet_ntop], [nsl resolv], [], | 40 | AC_SEARCH_LIBS([inet_ntop], [nsl resolv network], [], |
39 | [AC_CHECK_FUNCS([inet_ntop]) | 41 | [AC_CHECK_FUNCS([inet_ntop]) |
40 | if test $ac_cv_func_inet_ntop = no; then | 42 | if test $ac_cv_func_inet_ntop = no; then |
41 | HAVE_INET_NTOP=0 | 43 | HAVE_INET_NTOP=0 |
diff --git a/gl/m4/intdiv0.m4 b/gl/m4/intdiv0.m4 deleted file mode 100644 index 74d0e80d..00000000 --- a/gl/m4/intdiv0.m4 +++ /dev/null | |||
@@ -1,87 +0,0 @@ | |||
1 | # intdiv0.m4 serial 6 (gettext-0.18.2) | ||
2 | dnl Copyright (C) 2002, 2007-2008, 2010-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | dnl From Bruno Haible. | ||
8 | |||
9 | AC_DEFUN([gt_INTDIV0], | ||
10 | [ | ||
11 | AC_REQUIRE([AC_PROG_CC])dnl | ||
12 | AC_REQUIRE([AC_CANONICAL_HOST])dnl | ||
13 | |||
14 | AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], | ||
15 | gt_cv_int_divbyzero_sigfpe, | ||
16 | [ | ||
17 | gt_cv_int_divbyzero_sigfpe= | ||
18 | changequote(,)dnl | ||
19 | case "$host_os" in | ||
20 | macos* | darwin[6-9]* | darwin[1-9][0-9]*) | ||
21 | # On Mac OS X 10.2 or newer, just assume the same as when cross- | ||
22 | # compiling. If we were to perform the real test, 1 Crash Report | ||
23 | # dialog window would pop up. | ||
24 | case "$host_cpu" in | ||
25 | i[34567]86 | x86_64) | ||
26 | gt_cv_int_divbyzero_sigfpe="guessing yes" ;; | ||
27 | esac | ||
28 | ;; | ||
29 | esac | ||
30 | changequote([,])dnl | ||
31 | if test -z "$gt_cv_int_divbyzero_sigfpe"; then | ||
32 | AC_RUN_IFELSE( | ||
33 | [AC_LANG_SOURCE([[ | ||
34 | #include <stdlib.h> | ||
35 | #include <signal.h> | ||
36 | |||
37 | static void | ||
38 | sigfpe_handler (int sig) | ||
39 | { | ||
40 | /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ | ||
41 | exit (sig != SIGFPE); | ||
42 | } | ||
43 | |||
44 | int x = 1; | ||
45 | int y = 0; | ||
46 | int z; | ||
47 | int nan; | ||
48 | |||
49 | int main () | ||
50 | { | ||
51 | signal (SIGFPE, sigfpe_handler); | ||
52 | /* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ | ||
53 | #if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) | ||
54 | signal (SIGTRAP, sigfpe_handler); | ||
55 | #endif | ||
56 | /* Linux/SPARC yields signal SIGILL. */ | ||
57 | #if defined (__sparc__) && defined (__linux__) | ||
58 | signal (SIGILL, sigfpe_handler); | ||
59 | #endif | ||
60 | |||
61 | z = x / y; | ||
62 | nan = y / y; | ||
63 | exit (2); | ||
64 | } | ||
65 | ]])], | ||
66 | [gt_cv_int_divbyzero_sigfpe=yes], | ||
67 | [gt_cv_int_divbyzero_sigfpe=no], | ||
68 | [ | ||
69 | # Guess based on the CPU. | ||
70 | changequote(,)dnl | ||
71 | case "$host_cpu" in | ||
72 | alpha* | i[34567]86 | x86_64 | m68k | s390*) | ||
73 | gt_cv_int_divbyzero_sigfpe="guessing yes";; | ||
74 | *) | ||
75 | gt_cv_int_divbyzero_sigfpe="guessing no";; | ||
76 | esac | ||
77 | changequote([,])dnl | ||
78 | ]) | ||
79 | fi | ||
80 | ]) | ||
81 | case "$gt_cv_int_divbyzero_sigfpe" in | ||
82 | *yes) value=1;; | ||
83 | *) value=0;; | ||
84 | esac | ||
85 | AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value], | ||
86 | [Define if integer division by zero raises signal SIGFPE.]) | ||
87 | ]) | ||
diff --git a/gl/m4/intl.m4 b/gl/m4/intl.m4 deleted file mode 100644 index 959bd042..00000000 --- a/gl/m4/intl.m4 +++ /dev/null | |||
@@ -1,271 +0,0 @@ | |||
1 | # intl.m4 serial 23 (gettext-0.18.3) | ||
2 | dnl Copyright (C) 1995-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | dnl | ||
7 | dnl This file can can be used in projects which are not available under | ||
8 | dnl the GNU General Public License or the GNU Library General Public | ||
9 | dnl License but which still want to provide support for the GNU gettext | ||
10 | dnl functionality. | ||
11 | dnl Please note that the actual code of the GNU gettext library is covered | ||
12 | dnl by the GNU Library General Public License, and the rest of the GNU | ||
13 | dnl gettext package package is covered by the GNU General Public License. | ||
14 | dnl They are *not* in the public domain. | ||
15 | |||
16 | dnl Authors: | ||
17 | dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. | ||
18 | dnl Bruno Haible <haible@clisp.cons.org>, 2000-2009. | ||
19 | |||
20 | AC_PREREQ([2.60]) | ||
21 | |||
22 | dnl Checks for all prerequisites of the intl subdirectory, | ||
23 | dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, | ||
24 | dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. | ||
25 | AC_DEFUN([AM_INTL_SUBDIR], | ||
26 | [ | ||
27 | AC_REQUIRE([AC_PROG_INSTALL])dnl | ||
28 | AC_REQUIRE([AC_PROG_MKDIR_P])dnl | ||
29 | AC_REQUIRE([AC_PROG_CC])dnl | ||
30 | AC_REQUIRE([AC_CANONICAL_HOST])dnl | ||
31 | AC_REQUIRE([gt_GLIBC2])dnl | ||
32 | AC_REQUIRE([AC_PROG_RANLIB])dnl | ||
33 | AC_REQUIRE([gl_VISIBILITY])dnl | ||
34 | AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl | ||
35 | AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl | ||
36 | AC_REQUIRE([gt_TYPE_WCHAR_T])dnl | ||
37 | AC_REQUIRE([gt_TYPE_WINT_T])dnl | ||
38 | AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) | ||
39 | AC_REQUIRE([gt_TYPE_INTMAX_T]) | ||
40 | AC_REQUIRE([gt_PRINTF_POSIX]) | ||
41 | AC_REQUIRE([gl_GLIBC21])dnl | ||
42 | AC_REQUIRE([gl_XSIZE])dnl | ||
43 | AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl | ||
44 | AC_REQUIRE([gt_INTL_MACOSX])dnl | ||
45 | |||
46 | dnl Support for automake's --enable-silent-rules. | ||
47 | case "$enable_silent_rules" in | ||
48 | yes) INTL_DEFAULT_VERBOSITY=0;; | ||
49 | no) INTL_DEFAULT_VERBOSITY=1;; | ||
50 | *) INTL_DEFAULT_VERBOSITY=1;; | ||
51 | esac | ||
52 | AC_SUBST([INTL_DEFAULT_VERBOSITY]) | ||
53 | |||
54 | AC_CHECK_TYPE([ptrdiff_t], , | ||
55 | [AC_DEFINE([ptrdiff_t], [long], | ||
56 | [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) | ||
57 | ]) | ||
58 | AC_CHECK_HEADERS([features.h stddef.h stdlib.h string.h]) | ||
59 | AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \ | ||
60 | snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb]) | ||
61 | |||
62 | dnl Use the _snprintf function only if it is declared (because on NetBSD it | ||
63 | dnl is defined as a weak alias of snprintf; we prefer to use the latter). | ||
64 | AC_CHECK_DECLS([_snprintf _snwprintf], , , [#include <stdio.h>]) | ||
65 | |||
66 | dnl Use the *_unlocked functions only if they are declared. | ||
67 | dnl (because some of them were defined without being declared in Solaris | ||
68 | dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built | ||
69 | dnl on Solaris 2.5.1 to run on Solaris 2.6). | ||
70 | AC_CHECK_DECLS([getc_unlocked], , , [#include <stdio.h>]) | ||
71 | |||
72 | case $gt_cv_func_printf_posix in | ||
73 | *yes) HAVE_POSIX_PRINTF=1 ;; | ||
74 | *) HAVE_POSIX_PRINTF=0 ;; | ||
75 | esac | ||
76 | AC_SUBST([HAVE_POSIX_PRINTF]) | ||
77 | if test "$ac_cv_func_asprintf" = yes; then | ||
78 | HAVE_ASPRINTF=1 | ||
79 | else | ||
80 | HAVE_ASPRINTF=0 | ||
81 | fi | ||
82 | AC_SUBST([HAVE_ASPRINTF]) | ||
83 | if test "$ac_cv_func_snprintf" = yes; then | ||
84 | HAVE_SNPRINTF=1 | ||
85 | else | ||
86 | HAVE_SNPRINTF=0 | ||
87 | fi | ||
88 | AC_SUBST([HAVE_SNPRINTF]) | ||
89 | if test "$ac_cv_func_newlocale" = yes; then | ||
90 | HAVE_NEWLOCALE=1 | ||
91 | else | ||
92 | HAVE_NEWLOCALE=0 | ||
93 | fi | ||
94 | AC_SUBST([HAVE_NEWLOCALE]) | ||
95 | if test "$ac_cv_func_wprintf" = yes; then | ||
96 | HAVE_WPRINTF=1 | ||
97 | else | ||
98 | HAVE_WPRINTF=0 | ||
99 | fi | ||
100 | AC_SUBST([HAVE_WPRINTF]) | ||
101 | |||
102 | AM_LANGINFO_CODESET | ||
103 | gt_LC_MESSAGES | ||
104 | |||
105 | dnl Compilation on mingw and Cygwin needs special Makefile rules, because | ||
106 | dnl 1. when we install a shared library, we must arrange to export | ||
107 | dnl auxiliary pointer variables for every exported variable, | ||
108 | dnl 2. when we install a shared library and a static library simultaneously, | ||
109 | dnl the include file specifies __declspec(dllimport) and therefore we | ||
110 | dnl must arrange to define the auxiliary pointer variables for the | ||
111 | dnl exported variables _also_ in the static library. | ||
112 | if test "$enable_shared" = yes; then | ||
113 | case "$host_os" in | ||
114 | mingw* | cygwin*) is_woe32dll=yes ;; | ||
115 | *) is_woe32dll=no ;; | ||
116 | esac | ||
117 | else | ||
118 | is_woe32dll=no | ||
119 | fi | ||
120 | WOE32DLL=$is_woe32dll | ||
121 | AC_SUBST([WOE32DLL]) | ||
122 | |||
123 | dnl On mingw and Cygwin, we can activate special Makefile rules which add | ||
124 | dnl version information to the shared libraries and executables. | ||
125 | case "$host_os" in | ||
126 | mingw* | cygwin*) is_woe32=yes ;; | ||
127 | *) is_woe32=no ;; | ||
128 | esac | ||
129 | WOE32=$is_woe32 | ||
130 | AC_SUBST([WOE32]) | ||
131 | if test $WOE32 = yes; then | ||
132 | dnl Check for a program that compiles Windows resource files. | ||
133 | AC_CHECK_TOOL([WINDRES], [windres]) | ||
134 | fi | ||
135 | |||
136 | dnl Determine whether when creating a library, "-lc" should be passed to | ||
137 | dnl libtool or not. On many platforms, it is required for the libtool option | ||
138 | dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool | ||
139 | dnl in the *.la files - makes it impossible to create multithreaded programs, | ||
140 | dnl because libtool also reorders the -lc to come before the -pthread, and | ||
141 | dnl this disables pthread_create() <http://docs.hp.com/en/1896/pthreads.html>. | ||
142 | case "$host_os" in | ||
143 | hpux*) LTLIBC="" ;; | ||
144 | *) LTLIBC="-lc" ;; | ||
145 | esac | ||
146 | AC_SUBST([LTLIBC]) | ||
147 | |||
148 | dnl Rename some macros and functions used for locking. | ||
149 | AH_BOTTOM([ | ||
150 | #define __libc_lock_t gl_lock_t | ||
151 | #define __libc_lock_define gl_lock_define | ||
152 | #define __libc_lock_define_initialized gl_lock_define_initialized | ||
153 | #define __libc_lock_init gl_lock_init | ||
154 | #define __libc_lock_lock gl_lock_lock | ||
155 | #define __libc_lock_unlock gl_lock_unlock | ||
156 | #define __libc_lock_recursive_t gl_recursive_lock_t | ||
157 | #define __libc_lock_define_recursive gl_recursive_lock_define | ||
158 | #define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized | ||
159 | #define __libc_lock_init_recursive gl_recursive_lock_init | ||
160 | #define __libc_lock_lock_recursive gl_recursive_lock_lock | ||
161 | #define __libc_lock_unlock_recursive gl_recursive_lock_unlock | ||
162 | #define glthread_in_use libintl_thread_in_use | ||
163 | #define glthread_lock_init_func libintl_lock_init_func | ||
164 | #define glthread_lock_lock_func libintl_lock_lock_func | ||
165 | #define glthread_lock_unlock_func libintl_lock_unlock_func | ||
166 | #define glthread_lock_destroy_func libintl_lock_destroy_func | ||
167 | #define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded | ||
168 | #define glthread_rwlock_init_func libintl_rwlock_init_func | ||
169 | #define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded | ||
170 | #define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func | ||
171 | #define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded | ||
172 | #define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func | ||
173 | #define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded | ||
174 | #define glthread_rwlock_unlock_func libintl_rwlock_unlock_func | ||
175 | #define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded | ||
176 | #define glthread_rwlock_destroy_func libintl_rwlock_destroy_func | ||
177 | #define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded | ||
178 | #define glthread_recursive_lock_init_func libintl_recursive_lock_init_func | ||
179 | #define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded | ||
180 | #define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func | ||
181 | #define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded | ||
182 | #define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func | ||
183 | #define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded | ||
184 | #define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func | ||
185 | #define glthread_once_func libintl_once_func | ||
186 | #define glthread_once_singlethreaded libintl_once_singlethreaded | ||
187 | #define glthread_once_multithreaded libintl_once_multithreaded | ||
188 | ]) | ||
189 | ]) | ||
190 | |||
191 | |||
192 | dnl Checks for the core files of the intl subdirectory: | ||
193 | dnl dcigettext.c | ||
194 | dnl eval-plural.h | ||
195 | dnl explodename.c | ||
196 | dnl finddomain.c | ||
197 | dnl gettextP.h | ||
198 | dnl gmo.h | ||
199 | dnl hash-string.h hash-string.c | ||
200 | dnl l10nflist.c | ||
201 | dnl libgnuintl.h.in (except the *printf stuff) | ||
202 | dnl loadinfo.h | ||
203 | dnl loadmsgcat.c | ||
204 | dnl localealias.c | ||
205 | dnl log.c | ||
206 | dnl plural-exp.h plural-exp.c | ||
207 | dnl plural.y | ||
208 | dnl Used by libglocale. | ||
209 | AC_DEFUN([gt_INTL_SUBDIR_CORE], | ||
210 | [ | ||
211 | AC_REQUIRE([AC_C_INLINE])dnl | ||
212 | AC_REQUIRE([AC_TYPE_SIZE_T])dnl | ||
213 | AC_REQUIRE([gl_AC_HEADER_STDINT_H]) | ||
214 | AC_REQUIRE([AC_FUNC_ALLOCA])dnl | ||
215 | AC_REQUIRE([AC_FUNC_MMAP])dnl | ||
216 | AC_REQUIRE([gt_INTDIV0])dnl | ||
217 | AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl | ||
218 | AC_REQUIRE([gt_INTTYPES_PRI])dnl | ||
219 | AC_REQUIRE([gl_LOCK])dnl | ||
220 | |||
221 | AC_LINK_IFELSE( | ||
222 | [AC_LANG_PROGRAM( | ||
223 | [[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }]], | ||
224 | [[]])], | ||
225 | [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1], | ||
226 | [Define to 1 if the compiler understands __builtin_expect.])]) | ||
227 | |||
228 | AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h]) | ||
229 | AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \ | ||
230 | stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \ | ||
231 | argz_stringify argz_next __fsetlocking]) | ||
232 | |||
233 | dnl Use the *_unlocked functions only if they are declared. | ||
234 | dnl (because some of them were defined without being declared in Solaris | ||
235 | dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built | ||
236 | dnl on Solaris 2.5.1 to run on Solaris 2.6). | ||
237 | AC_CHECK_DECLS([feof_unlocked fgets_unlocked], , , [#include <stdio.h>]) | ||
238 | |||
239 | AM_ICONV | ||
240 | |||
241 | dnl intl/plural.c is generated from intl/plural.y. It requires bison, | ||
242 | dnl because plural.y uses bison specific features. It requires at least | ||
243 | dnl bison-1.26 because earlier versions generate a plural.c that doesn't | ||
244 | dnl compile. | ||
245 | dnl bison is only needed for the maintainer (who touches plural.y). But in | ||
246 | dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put | ||
247 | dnl the rule in general Makefile. Now, some people carelessly touch the | ||
248 | dnl files or have a broken "make" program, hence the plural.c rule will | ||
249 | dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not | ||
250 | dnl present or too old. | ||
251 | AC_CHECK_PROGS([INTLBISON], [bison]) | ||
252 | if test -z "$INTLBISON"; then | ||
253 | ac_verc_fail=yes | ||
254 | else | ||
255 | dnl Found it, now check the version. | ||
256 | AC_MSG_CHECKING([version of bison]) | ||
257 | changequote(<<,>>)dnl | ||
258 | ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` | ||
259 | case $ac_prog_version in | ||
260 | '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; | ||
261 | 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) | ||
262 | changequote([,])dnl | ||
263 | ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; | ||
264 | *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; | ||
265 | esac | ||
266 | AC_MSG_RESULT([$ac_prog_version]) | ||
267 | fi | ||
268 | if test $ac_verc_fail = yes; then | ||
269 | INTLBISON=: | ||
270 | fi | ||
271 | ]) | ||
diff --git a/gl/m4/intldir.m4 b/gl/m4/intldir.m4 deleted file mode 100644 index 388ecd6f..00000000 --- a/gl/m4/intldir.m4 +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | # intldir.m4 serial 2 (gettext-0.18) | ||
2 | dnl Copyright (C) 2006, 2009-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | dnl | ||
7 | dnl This file can can be used in projects which are not available under | ||
8 | dnl the GNU General Public License or the GNU Library General Public | ||
9 | dnl License but which still want to provide support for the GNU gettext | ||
10 | dnl functionality. | ||
11 | dnl Please note that the actual code of the GNU gettext library is covered | ||
12 | dnl by the GNU Library General Public License, and the rest of the GNU | ||
13 | dnl gettext package package is covered by the GNU General Public License. | ||
14 | dnl They are *not* in the public domain. | ||
15 | |||
16 | AC_PREREQ([2.52]) | ||
17 | |||
18 | dnl Tells the AM_GNU_GETTEXT macro to consider an intl/ directory. | ||
19 | AC_DEFUN([AM_GNU_GETTEXT_INTL_SUBDIR], []) | ||
diff --git a/gl/m4/intlmacosx.m4 b/gl/m4/intlmacosx.m4 deleted file mode 100644 index ab97d39f..00000000 --- a/gl/m4/intlmacosx.m4 +++ /dev/null | |||
@@ -1,56 +0,0 @@ | |||
1 | # intlmacosx.m4 serial 5 (gettext-0.18.2) | ||
2 | dnl Copyright (C) 2004-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | dnl | ||
7 | dnl This file can can be used in projects which are not available under | ||
8 | dnl the GNU General Public License or the GNU Library General Public | ||
9 | dnl License but which still want to provide support for the GNU gettext | ||
10 | dnl functionality. | ||
11 | dnl Please note that the actual code of the GNU gettext library is covered | ||
12 | dnl by the GNU Library General Public License, and the rest of the GNU | ||
13 | dnl gettext package package is covered by the GNU General Public License. | ||
14 | dnl They are *not* in the public domain. | ||
15 | |||
16 | dnl Checks for special options needed on Mac OS X. | ||
17 | dnl Defines INTL_MACOSX_LIBS. | ||
18 | AC_DEFUN([gt_INTL_MACOSX], | ||
19 | [ | ||
20 | dnl Check for API introduced in Mac OS X 10.2. | ||
21 | AC_CACHE_CHECK([for CFPreferencesCopyAppValue], | ||
22 | [gt_cv_func_CFPreferencesCopyAppValue], | ||
23 | [gt_save_LIBS="$LIBS" | ||
24 | LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" | ||
25 | AC_LINK_IFELSE( | ||
26 | [AC_LANG_PROGRAM( | ||
27 | [[#include <CoreFoundation/CFPreferences.h>]], | ||
28 | [[CFPreferencesCopyAppValue(NULL, NULL)]])], | ||
29 | [gt_cv_func_CFPreferencesCopyAppValue=yes], | ||
30 | [gt_cv_func_CFPreferencesCopyAppValue=no]) | ||
31 | LIBS="$gt_save_LIBS"]) | ||
32 | if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then | ||
33 | AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], | ||
34 | [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) | ||
35 | fi | ||
36 | dnl Check for API introduced in Mac OS X 10.3. | ||
37 | AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], | ||
38 | [gt_save_LIBS="$LIBS" | ||
39 | LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" | ||
40 | AC_LINK_IFELSE( | ||
41 | [AC_LANG_PROGRAM( | ||
42 | [[#include <CoreFoundation/CFLocale.h>]], | ||
43 | [[CFLocaleCopyCurrent();]])], | ||
44 | [gt_cv_func_CFLocaleCopyCurrent=yes], | ||
45 | [gt_cv_func_CFLocaleCopyCurrent=no]) | ||
46 | LIBS="$gt_save_LIBS"]) | ||
47 | if test $gt_cv_func_CFLocaleCopyCurrent = yes; then | ||
48 | AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], | ||
49 | [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) | ||
50 | fi | ||
51 | INTL_MACOSX_LIBS= | ||
52 | if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then | ||
53 | INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" | ||
54 | fi | ||
55 | AC_SUBST([INTL_MACOSX_LIBS]) | ||
56 | ]) | ||
diff --git a/gl/m4/intmax.m4 b/gl/m4/intmax.m4 deleted file mode 100644 index 18733a52..00000000 --- a/gl/m4/intmax.m4 +++ /dev/null | |||
@@ -1,36 +0,0 @@ | |||
1 | # intmax.m4 serial 6 (gettext-0.18.2) | ||
2 | dnl Copyright (C) 2002-2005, 2008-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | dnl From Bruno Haible. | ||
8 | dnl Test whether the system has the 'intmax_t' type, but don't attempt to | ||
9 | dnl find a replacement if it is lacking. | ||
10 | |||
11 | AC_DEFUN([gt_TYPE_INTMAX_T], | ||
12 | [ | ||
13 | AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) | ||
14 | AC_REQUIRE([gl_AC_HEADER_STDINT_H]) | ||
15 | AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t], | ||
16 | [AC_COMPILE_IFELSE( | ||
17 | [AC_LANG_PROGRAM( | ||
18 | [[ | ||
19 | #include <stddef.h> | ||
20 | #include <stdlib.h> | ||
21 | #if HAVE_STDINT_H_WITH_UINTMAX | ||
22 | #include <stdint.h> | ||
23 | #endif | ||
24 | #if HAVE_INTTYPES_H_WITH_UINTMAX | ||
25 | #include <inttypes.h> | ||
26 | #endif | ||
27 | ]], | ||
28 | [[intmax_t x = -1; | ||
29 | return !x;]])], | ||
30 | [gt_cv_c_intmax_t=yes], | ||
31 | [gt_cv_c_intmax_t=no])]) | ||
32 | if test $gt_cv_c_intmax_t = yes; then | ||
33 | AC_DEFINE([HAVE_INTMAX_T], [1], | ||
34 | [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.]) | ||
35 | fi | ||
36 | ]) | ||
diff --git a/gl/m4/intmax_t.m4 b/gl/m4/intmax_t.m4 index 6ea70531..ef32e1b9 100644 --- a/gl/m4/intmax_t.m4 +++ b/gl/m4/intmax_t.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # intmax_t.m4 serial 8 | 1 | # intmax_t.m4 serial 9 |
2 | dnl Copyright (C) 1997-2004, 2006-2007, 2009-2013 Free Software Foundation, | 2 | dnl Copyright (C) 1997-2004, 2006-2007, 2009-2023 Free Software Foundation, |
3 | dnl Inc. | 3 | dnl Inc. |
4 | dnl This file is free software; the Free Software Foundation | 4 | dnl This file is free software; the Free Software Foundation |
5 | dnl gives unlimited permission to copy and/or distribute it, | 5 | dnl gives unlimited permission to copy and/or distribute it, |
@@ -19,11 +19,7 @@ AC_DEFUN([gl_AC_TYPE_INTMAX_T], | |||
19 | AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) | 19 | AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) |
20 | AC_REQUIRE([gl_AC_HEADER_STDINT_H]) | 20 | AC_REQUIRE([gl_AC_HEADER_STDINT_H]) |
21 | if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then | 21 | if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then |
22 | AC_REQUIRE([AC_TYPE_LONG_LONG_INT]) | 22 | AC_DEFINE_UNQUOTED([intmax_t], [long long], |
23 | test $ac_cv_type_long_long_int = yes \ | ||
24 | && ac_type='long long' \ | ||
25 | || ac_type='long' | ||
26 | AC_DEFINE_UNQUOTED([intmax_t], [$ac_type], | ||
27 | [Define to long or long long if <inttypes.h> and <stdint.h> don't define.]) | 23 | [Define to long or long long if <inttypes.h> and <stdint.h> don't define.]) |
28 | else | 24 | else |
29 | AC_DEFINE([HAVE_INTMAX_T], [1], | 25 | AC_DEFINE([HAVE_INTMAX_T], [1], |
@@ -57,11 +53,7 @@ AC_DEFUN([gt_AC_TYPE_INTMAX_T], | |||
57 | AC_DEFINE([HAVE_INTMAX_T], [1], | 53 | AC_DEFINE([HAVE_INTMAX_T], [1], |
58 | [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.]) | 54 | [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.]) |
59 | else | 55 | else |
60 | AC_REQUIRE([AC_TYPE_LONG_LONG_INT]) | 56 | AC_DEFINE_UNQUOTED([intmax_t], [long long], |
61 | test $ac_cv_type_long_long_int = yes \ | ||
62 | && ac_type='long long' \ | ||
63 | || ac_type='long' | ||
64 | AC_DEFINE_UNQUOTED([intmax_t], [$ac_type], | ||
65 | [Define to long or long long if <stdint.h> and <inttypes.h> don't define.]) | 57 | [Define to long or long long if <stdint.h> and <inttypes.h> don't define.]) |
66 | fi | 58 | fi |
67 | ]) | 59 | ]) |
diff --git a/gl/m4/inttypes-pri.m4 b/gl/m4/inttypes-pri.m4 deleted file mode 100644 index e5a1e057..00000000 --- a/gl/m4/inttypes-pri.m4 +++ /dev/null | |||
@@ -1,42 +0,0 @@ | |||
1 | # inttypes-pri.m4 serial 7 (gettext-0.18.2) | ||
2 | dnl Copyright (C) 1997-2002, 2006, 2008-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | dnl From Bruno Haible. | ||
8 | |||
9 | AC_PREREQ([2.53]) | ||
10 | |||
11 | # Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI* | ||
12 | # macros to non-string values. This is the case on AIX 4.3.3. | ||
13 | |||
14 | AC_DEFUN([gt_INTTYPES_PRI], | ||
15 | [ | ||
16 | AC_CHECK_HEADERS([inttypes.h]) | ||
17 | if test $ac_cv_header_inttypes_h = yes; then | ||
18 | AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], | ||
19 | [gt_cv_inttypes_pri_broken], | ||
20 | [ | ||
21 | AC_COMPILE_IFELSE( | ||
22 | [AC_LANG_PROGRAM( | ||
23 | [[ | ||
24 | #include <inttypes.h> | ||
25 | #ifdef PRId32 | ||
26 | char *p = PRId32; | ||
27 | #endif | ||
28 | ]], | ||
29 | [[]])], | ||
30 | [gt_cv_inttypes_pri_broken=no], | ||
31 | [gt_cv_inttypes_pri_broken=yes]) | ||
32 | ]) | ||
33 | fi | ||
34 | if test "$gt_cv_inttypes_pri_broken" = yes; then | ||
35 | AC_DEFINE_UNQUOTED([PRI_MACROS_BROKEN], [1], | ||
36 | [Define if <inttypes.h> exists and defines unusable PRI* macros.]) | ||
37 | PRI_MACROS_BROKEN=1 | ||
38 | else | ||
39 | PRI_MACROS_BROKEN=0 | ||
40 | fi | ||
41 | AC_SUBST([PRI_MACROS_BROKEN]) | ||
42 | ]) | ||
diff --git a/gl/m4/inttypes.m4 b/gl/m4/inttypes.m4 new file mode 100644 index 00000000..bf2eab2b --- /dev/null +++ b/gl/m4/inttypes.m4 | |||
@@ -0,0 +1,180 @@ | |||
1 | # inttypes.m4 serial 36 | ||
2 | dnl Copyright (C) 2006-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | dnl From Derek Price, Bruno Haible. | ||
8 | dnl Test whether <inttypes.h> is supported or must be substituted. | ||
9 | |||
10 | AC_DEFUN_ONCE([gl_INTTYPES_H], | ||
11 | [ | ||
12 | AC_REQUIRE([gl_INTTYPES_INCOMPLETE]) | ||
13 | gl_INTTYPES_PRI_SCN | ||
14 | ]) | ||
15 | |||
16 | AC_DEFUN_ONCE([gl_INTTYPES_INCOMPLETE], | ||
17 | [ | ||
18 | AC_REQUIRE([gl_STDINT_H]) | ||
19 | AC_CHECK_HEADERS_ONCE([inttypes.h]) | ||
20 | |||
21 | dnl Override <inttypes.h> always, so that the portability warnings work. | ||
22 | AC_REQUIRE([gl_INTTYPES_H_DEFAULTS]) | ||
23 | gl_CHECK_NEXT_HEADERS([inttypes.h]) | ||
24 | |||
25 | AC_REQUIRE([gl_MULTIARCH]) | ||
26 | |||
27 | dnl Check for declarations of anything we want to poison if the | ||
28 | dnl corresponding gnulib module is not in use. | ||
29 | gl_WARN_ON_USE_PREPARE([[#include <inttypes.h> | ||
30 | ]], [imaxabs imaxdiv strtoimax strtoumax]) | ||
31 | |||
32 | AC_REQUIRE([AC_C_RESTRICT]) | ||
33 | ]) | ||
34 | |||
35 | # Ensure that the PRI* and SCN* macros are defined appropriately. | ||
36 | AC_DEFUN([gl_INTTYPES_PRI_SCN], | ||
37 | [ | ||
38 | PRIPTR_PREFIX= | ||
39 | if $GL_GENERATE_STDINT_H; then | ||
40 | dnl Using the gnulib <stdint.h>. It defines intptr_t to 'long' or | ||
41 | dnl 'long long', depending on _WIN64. | ||
42 | AC_COMPILE_IFELSE( | ||
43 | [AC_LANG_PROGRAM([[ | ||
44 | #ifdef _WIN64 | ||
45 | LLP64 | ||
46 | #endif | ||
47 | ]]) | ||
48 | ], | ||
49 | [PRIPTR_PREFIX='"l"'], | ||
50 | [PRIPTR_PREFIX='"ll"']) | ||
51 | else | ||
52 | dnl Using the system's <stdint.h>. | ||
53 | for glpfx in '' l ll I64; do | ||
54 | case $glpfx in | ||
55 | '') gltype1='int';; | ||
56 | l) gltype1='long int';; | ||
57 | ll) gltype1='long long int';; | ||
58 | I64) gltype1='__int64';; | ||
59 | esac | ||
60 | AC_COMPILE_IFELSE( | ||
61 | [AC_LANG_PROGRAM([[#include <stdint.h> | ||
62 | extern intptr_t foo; | ||
63 | extern $gltype1 foo;]])], | ||
64 | [PRIPTR_PREFIX='"'$glpfx'"']) | ||
65 | test -n "$PRIPTR_PREFIX" && break | ||
66 | done | ||
67 | fi | ||
68 | AC_SUBST([PRIPTR_PREFIX]) | ||
69 | |||
70 | gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION( | ||
71 | [INT32_MAX_LT_INTMAX_MAX], | ||
72 | [defined INT32_MAX && defined INTMAX_MAX], | ||
73 | [INT32_MAX < INTMAX_MAX], | ||
74 | [sizeof (int) < sizeof (long long int)]) | ||
75 | if test $APPLE_UNIVERSAL_BUILD = 0; then | ||
76 | gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION( | ||
77 | [INT64_MAX_EQ_LONG_MAX], | ||
78 | [defined INT64_MAX], | ||
79 | [INT64_MAX == LONG_MAX], | ||
80 | [sizeof (long long int) == sizeof (long int)]) | ||
81 | else | ||
82 | INT64_MAX_EQ_LONG_MAX=-1 | ||
83 | fi | ||
84 | gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION( | ||
85 | [UINT32_MAX_LT_UINTMAX_MAX], | ||
86 | [defined UINT32_MAX && defined UINTMAX_MAX], | ||
87 | [UINT32_MAX < UINTMAX_MAX], | ||
88 | [sizeof (unsigned int) < sizeof (unsigned long long int)]) | ||
89 | if test $APPLE_UNIVERSAL_BUILD = 0; then | ||
90 | gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION( | ||
91 | [UINT64_MAX_EQ_ULONG_MAX], | ||
92 | [defined UINT64_MAX], | ||
93 | [UINT64_MAX == ULONG_MAX], | ||
94 | [sizeof (unsigned long long int) == sizeof (unsigned long int)]) | ||
95 | else | ||
96 | UINT64_MAX_EQ_ULONG_MAX=-1 | ||
97 | fi | ||
98 | ]) | ||
99 | |||
100 | # Define the symbol $1 to be 1 if the condition is true, 0 otherwise. | ||
101 | # If $2 is true, the condition is $3; otherwise if long long int is supported | ||
102 | # approximate the condition with $4; otherwise, assume the condition is false. | ||
103 | # The condition should work on all C99 platforms; the approximations should be | ||
104 | # good enough to work on all practical pre-C99 platforms. | ||
105 | # $2 is evaluated by the C preprocessor, $3 and $4 as compile-time constants. | ||
106 | AC_DEFUN([gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION], | ||
107 | [ | ||
108 | AC_CACHE_CHECK([whether $3], | ||
109 | [gl_cv_test_$1], | ||
110 | [AC_COMPILE_IFELSE( | ||
111 | [AC_LANG_PROGRAM( | ||
112 | [[/* Work also in C++ mode. */ | ||
113 | #define __STDC_LIMIT_MACROS 1 | ||
114 | |||
115 | /* Work if build is not clean. */ | ||
116 | #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H | ||
117 | |||
118 | #include <limits.h> | ||
119 | #if HAVE_STDINT_H | ||
120 | #include <stdint.h> | ||
121 | #endif | ||
122 | |||
123 | #if $2 | ||
124 | #define CONDITION ($3) | ||
125 | #else | ||
126 | #define CONDITION ($4) | ||
127 | #endif | ||
128 | int test[CONDITION ? 1 : -1];]])], | ||
129 | [gl_cv_test_$1=yes], | ||
130 | [gl_cv_test_$1=no])]) | ||
131 | if test $gl_cv_test_$1 = yes; then | ||
132 | $1=1; | ||
133 | else | ||
134 | $1=0; | ||
135 | fi | ||
136 | AC_SUBST([$1]) | ||
137 | ]) | ||
138 | |||
139 | # gl_INTTYPES_MODULE_INDICATOR([modulename]) | ||
140 | # sets the shell variable that indicates the presence of the given module | ||
141 | # to a C preprocessor expression that will evaluate to 1. | ||
142 | # This macro invocation must not occur in macros that are AC_REQUIREd. | ||
143 | AC_DEFUN([gl_INTTYPES_MODULE_INDICATOR], | ||
144 | [ | ||
145 | dnl Ensure to expand the default settings once only. | ||
146 | gl_INTTYPES_H_REQUIRE_DEFAULTS | ||
147 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) | ||
148 | ]) | ||
149 | |||
150 | # Initializes the default values for AC_SUBSTed shell variables. | ||
151 | # This macro must not be AC_REQUIREd. It must only be invoked, and only | ||
152 | # outside of macros or in macros that are not AC_REQUIREd. | ||
153 | AC_DEFUN([gl_INTTYPES_H_REQUIRE_DEFAULTS], | ||
154 | [ | ||
155 | m4_defun(GL_MODULE_INDICATOR_PREFIX[_INTTYPES_H_MODULE_INDICATOR_DEFAULTS], [ | ||
156 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_IMAXABS]) | ||
157 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_IMAXDIV]) | ||
158 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOIMAX]) | ||
159 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOUMAX]) | ||
160 | ]) | ||
161 | m4_require(GL_MODULE_INDICATOR_PREFIX[_INTTYPES_H_MODULE_INDICATOR_DEFAULTS]) | ||
162 | AC_REQUIRE([gl_INTTYPES_H_DEFAULTS]) | ||
163 | ]) | ||
164 | |||
165 | AC_DEFUN([gl_INTTYPES_H_DEFAULTS], | ||
166 | [ | ||
167 | dnl Assume proper GNU behavior unless another module says otherwise. | ||
168 | HAVE_DECL_IMAXABS=1; AC_SUBST([HAVE_DECL_IMAXABS]) | ||
169 | HAVE_DECL_IMAXDIV=1; AC_SUBST([HAVE_DECL_IMAXDIV]) | ||
170 | HAVE_DECL_STRTOIMAX=1; AC_SUBST([HAVE_DECL_STRTOIMAX]) | ||
171 | HAVE_DECL_STRTOUMAX=1; AC_SUBST([HAVE_DECL_STRTOUMAX]) | ||
172 | HAVE_IMAXDIV_T=1; AC_SUBST([HAVE_IMAXDIV_T]) | ||
173 | REPLACE_STRTOIMAX=0; AC_SUBST([REPLACE_STRTOIMAX]) | ||
174 | REPLACE_STRTOUMAX=0; AC_SUBST([REPLACE_STRTOUMAX]) | ||
175 | INT32_MAX_LT_INTMAX_MAX=1; AC_SUBST([INT32_MAX_LT_INTMAX_MAX]) | ||
176 | INT64_MAX_EQ_LONG_MAX='defined _LP64'; AC_SUBST([INT64_MAX_EQ_LONG_MAX]) | ||
177 | PRIPTR_PREFIX=__PRIPTR_PREFIX; AC_SUBST([PRIPTR_PREFIX]) | ||
178 | UINT32_MAX_LT_UINTMAX_MAX=1; AC_SUBST([UINT32_MAX_LT_UINTMAX_MAX]) | ||
179 | UINT64_MAX_EQ_ULONG_MAX='defined _LP64'; AC_SUBST([UINT64_MAX_EQ_ULONG_MAX]) | ||
180 | ]) | ||
diff --git a/gl/m4/inttypes_h.m4 b/gl/m4/inttypes_h.m4 index 5f05ac58..68c60e9d 100644 --- a/gl/m4/inttypes_h.m4 +++ b/gl/m4/inttypes_h.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # inttypes_h.m4 serial 10 | 1 | # inttypes_h.m4 serial 10 |
2 | dnl Copyright (C) 1997-2004, 2006, 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 1997-2004, 2006, 2008-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
diff --git a/gl/m4/langinfo_h.m4 b/gl/m4/langinfo_h.m4 index 73bef8bc..b17a526a 100644 --- a/gl/m4/langinfo_h.m4 +++ b/gl/m4/langinfo_h.m4 | |||
@@ -1,10 +1,10 @@ | |||
1 | # langinfo_h.m4 serial 7 | 1 | # langinfo_h.m4 serial 12 |
2 | dnl Copyright (C) 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | AC_DEFUN([gl_LANGINFO_H], | 7 | AC_DEFUN_ONCE([gl_LANGINFO_H], |
8 | [ | 8 | [ |
9 | AC_REQUIRE([gl_LANGINFO_H_DEFAULTS]) | 9 | AC_REQUIRE([gl_LANGINFO_H_DEFAULTS]) |
10 | 10 | ||
@@ -17,13 +17,17 @@ AC_DEFUN([gl_LANGINFO_H], | |||
17 | dnl Determine whether <langinfo.h> exists. It is missing on mingw and BeOS. | 17 | dnl Determine whether <langinfo.h> exists. It is missing on mingw and BeOS. |
18 | HAVE_LANGINFO_CODESET=0 | 18 | HAVE_LANGINFO_CODESET=0 |
19 | HAVE_LANGINFO_T_FMT_AMPM=0 | 19 | HAVE_LANGINFO_T_FMT_AMPM=0 |
20 | HAVE_LANGINFO_ALTMON=0 | ||
20 | HAVE_LANGINFO_ERA=0 | 21 | HAVE_LANGINFO_ERA=0 |
21 | HAVE_LANGINFO_YESEXPR=0 | 22 | HAVE_LANGINFO_YESEXPR=0 |
22 | AC_CHECK_HEADERS_ONCE([langinfo.h]) | 23 | AC_CHECK_HEADERS_ONCE([langinfo.h]) |
23 | if test $ac_cv_header_langinfo_h = yes; then | 24 | if test $ac_cv_header_langinfo_h = yes; then |
24 | HAVE_LANGINFO_H=1 | 25 | HAVE_LANGINFO_H=1 |
25 | dnl Determine what <langinfo.h> defines. CODESET and ERA etc. are missing | 26 | dnl Determine what <langinfo.h> defines. |
26 | dnl on OpenBSD 3.8. T_FMT_AMPM and YESEXPR, NOEXPR are missing on IRIX 5.3. | 27 | dnl CODESET is missing on OpenBSD 3.8. |
28 | dnl ERA etc. are missing on OpenBSD 6.7. | ||
29 | dnl T_FMT_AMPM and YESEXPR, NOEXPR are missing on IRIX 5.3. | ||
30 | dnl ALTMON_* are missing on glibc 2.26 and many other systems. | ||
27 | AC_CACHE_CHECK([whether langinfo.h defines CODESET], | 31 | AC_CACHE_CHECK([whether langinfo.h defines CODESET], |
28 | [gl_cv_header_langinfo_codeset], | 32 | [gl_cv_header_langinfo_codeset], |
29 | [AC_COMPILE_IFELSE( | 33 | [AC_COMPILE_IFELSE( |
@@ -48,6 +52,18 @@ int a = T_FMT_AMPM; | |||
48 | if test $gl_cv_header_langinfo_t_fmt_ampm = yes; then | 52 | if test $gl_cv_header_langinfo_t_fmt_ampm = yes; then |
49 | HAVE_LANGINFO_T_FMT_AMPM=1 | 53 | HAVE_LANGINFO_T_FMT_AMPM=1 |
50 | fi | 54 | fi |
55 | AC_CACHE_CHECK([whether langinfo.h defines ALTMON_1], | ||
56 | [gl_cv_header_langinfo_altmon], | ||
57 | [AC_COMPILE_IFELSE( | ||
58 | [AC_LANG_PROGRAM([[#include <langinfo.h> | ||
59 | int a = ALTMON_1; | ||
60 | ]])], | ||
61 | [gl_cv_header_langinfo_altmon=yes], | ||
62 | [gl_cv_header_langinfo_altmon=no]) | ||
63 | ]) | ||
64 | if test $gl_cv_header_langinfo_altmon = yes; then | ||
65 | HAVE_LANGINFO_ALTMON=1 | ||
66 | fi | ||
51 | AC_CACHE_CHECK([whether langinfo.h defines ERA], | 67 | AC_CACHE_CHECK([whether langinfo.h defines ERA], |
52 | [gl_cv_header_langinfo_era], | 68 | [gl_cv_header_langinfo_era], |
53 | [AC_COMPILE_IFELSE( | 69 | [AC_COMPILE_IFELSE( |
@@ -78,6 +94,7 @@ int a = YESEXPR; | |||
78 | AC_SUBST([HAVE_LANGINFO_H]) | 94 | AC_SUBST([HAVE_LANGINFO_H]) |
79 | AC_SUBST([HAVE_LANGINFO_CODESET]) | 95 | AC_SUBST([HAVE_LANGINFO_CODESET]) |
80 | AC_SUBST([HAVE_LANGINFO_T_FMT_AMPM]) | 96 | AC_SUBST([HAVE_LANGINFO_T_FMT_AMPM]) |
97 | AC_SUBST([HAVE_LANGINFO_ALTMON]) | ||
81 | AC_SUBST([HAVE_LANGINFO_ERA]) | 98 | AC_SUBST([HAVE_LANGINFO_ERA]) |
82 | AC_SUBST([HAVE_LANGINFO_YESEXPR]) | 99 | AC_SUBST([HAVE_LANGINFO_YESEXPR]) |
83 | 100 | ||
@@ -87,18 +104,33 @@ int a = YESEXPR; | |||
87 | ]], [nl_langinfo]) | 104 | ]], [nl_langinfo]) |
88 | ]) | 105 | ]) |
89 | 106 | ||
107 | # gl_LANGINFO_MODULE_INDICATOR([modulename]) | ||
108 | # sets the shell variable that indicates the presence of the given module | ||
109 | # to a C preprocessor expression that will evaluate to 1. | ||
110 | # This macro invocation must not occur in macros that are AC_REQUIREd. | ||
90 | AC_DEFUN([gl_LANGINFO_MODULE_INDICATOR], | 111 | AC_DEFUN([gl_LANGINFO_MODULE_INDICATOR], |
91 | [ | 112 | [ |
92 | dnl Use AC_REQUIRE here, so that the default settings are expanded once only. | 113 | dnl Ensure to expand the default settings once only. |
93 | AC_REQUIRE([gl_LANGINFO_H_DEFAULTS]) | 114 | gl_LANGINFO_H_REQUIRE_DEFAULTS |
94 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) | 115 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) |
95 | dnl Define it also as a C macro, for the benefit of the unit tests. | 116 | dnl Define it also as a C macro, for the benefit of the unit tests. |
96 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) | 117 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) |
97 | ]) | 118 | ]) |
98 | 119 | ||
120 | # Initializes the default values for AC_SUBSTed shell variables. | ||
121 | # This macro must not be AC_REQUIREd. It must only be invoked, and only | ||
122 | # outside of macros or in macros that are not AC_REQUIREd. | ||
123 | AC_DEFUN([gl_LANGINFO_H_REQUIRE_DEFAULTS], | ||
124 | [ | ||
125 | m4_defun(GL_MODULE_INDICATOR_PREFIX[_LANGINFO_H_MODULE_INDICATOR_DEFAULTS], [ | ||
126 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_NL_LANGINFO]) | ||
127 | ]) | ||
128 | m4_require(GL_MODULE_INDICATOR_PREFIX[_LANGINFO_H_MODULE_INDICATOR_DEFAULTS]) | ||
129 | AC_REQUIRE([gl_LANGINFO_H_DEFAULTS]) | ||
130 | ]) | ||
131 | |||
99 | AC_DEFUN([gl_LANGINFO_H_DEFAULTS], | 132 | AC_DEFUN([gl_LANGINFO_H_DEFAULTS], |
100 | [ | 133 | [ |
101 | GNULIB_NL_LANGINFO=0; AC_SUBST([GNULIB_NL_LANGINFO]) | ||
102 | dnl Assume proper GNU behavior unless another module says otherwise. | 134 | dnl Assume proper GNU behavior unless another module says otherwise. |
103 | HAVE_NL_LANGINFO=1; AC_SUBST([HAVE_NL_LANGINFO]) | 135 | HAVE_NL_LANGINFO=1; AC_SUBST([HAVE_NL_LANGINFO]) |
104 | REPLACE_NL_LANGINFO=0; AC_SUBST([REPLACE_NL_LANGINFO]) | 136 | REPLACE_NL_LANGINFO=0; AC_SUBST([REPLACE_NL_LANGINFO]) |
diff --git a/gl/m4/largefile.m4 b/gl/m4/largefile.m4 index 1e605e3d..7fb81b86 100644 --- a/gl/m4/largefile.m4 +++ b/gl/m4/largefile.m4 | |||
@@ -1,104 +1,319 @@ | |||
1 | # Enable large files on systems where this is not the default. | 1 | # Enable large files on systems where this is not the default. |
2 | # Enable support for files on Linux file systems with 64-bit inode numbers. | ||
2 | 3 | ||
3 | # Copyright 1992-1996, 1998-2013 Free Software Foundation, Inc. | 4 | # Copyright 1992-1996, 1998-2023 Free Software Foundation, Inc. |
4 | # This file is free software; the Free Software Foundation | 5 | # This file is free software; the Free Software Foundation |
5 | # gives unlimited permission to copy and/or distribute it, | 6 | # gives unlimited permission to copy and/or distribute it, |
6 | # with or without modifications, as long as this notice is preserved. | 7 | # with or without modifications, as long as this notice is preserved. |
7 | 8 | ||
8 | # The following implementation works around a problem in autoconf <= 2.69; | 9 | # The following macro works around a problem in Autoconf's AC_FUNC_FSEEKO: |
10 | # It does not set _LARGEFILE_SOURCE=1 on HP-UX/ia64 32-bit, although this | ||
11 | # setting of _LARGEFILE_SOURCE is needed so that <stdio.h> declares fseeko | ||
12 | # and ftello in C++ mode as well. | ||
13 | # Fixed in Autoconf 2.72, which has AC_SYS_YEAR2038. | ||
14 | AC_DEFUN([gl_SET_LARGEFILE_SOURCE], | ||
15 | m4_ifndef([AC_SYS_YEAR2038], [[ | ||
16 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
17 | AC_FUNC_FSEEKO | ||
18 | case "$host_os" in | ||
19 | hpux*) | ||
20 | AC_DEFINE([_LARGEFILE_SOURCE], [1], | ||
21 | [Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2).]) | ||
22 | ;; | ||
23 | esac | ||
24 | ]]) | ||
25 | ) | ||
26 | |||
27 | # Work around a problem in autoconf <= 2.69: | ||
9 | # AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5, | 28 | # AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5, |
10 | # or configures them incorrectly in some cases. | 29 | # or configures them incorrectly in some cases. |
11 | m4_version_prereq([2.70], [] ,[ | 30 | m4_version_prereq([2.70], [], [ |
12 | 31 | ||
13 | # _AC_SYS_LARGEFILE_TEST_INCLUDES | 32 | # _AC_SYS_LARGEFILE_TEST_INCLUDES |
14 | # ------------------------------- | 33 | # ------------------------------- |
15 | m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES], | 34 | m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES], |
16 | [@%:@include <sys/types.h> | 35 | [#include <sys/types.h> |
17 | /* Check that off_t can represent 2**63 - 1 correctly. | 36 | /* Check that off_t can represent 2**63 - 1 correctly. |
18 | We can't simply define LARGE_OFF_T to be 9223372036854775807, | 37 | We can't simply define LARGE_OFF_T to be 9223372036854775807, |
19 | since some C++ compilers masquerading as C compilers | 38 | since some C++ compilers masquerading as C compilers |
20 | incorrectly reject 9223372036854775807. */ | 39 | incorrectly reject 9223372036854775807. */ |
21 | @%:@define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) | 40 | #define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) |
22 | int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721 | 41 | int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721 |
23 | && LARGE_OFF_T % 2147483647 == 1) | 42 | && LARGE_OFF_T % 2147483647 == 1) |
24 | ? 1 : -1]];[]dnl | 43 | ? 1 : -1]];[]dnl |
25 | ]) | 44 | ]) |
45 | ])# m4_version_prereq 2.70 | ||
46 | |||
47 | # Support AC_SYS_YEAR2038, even if Autoconf 2.71 or earlier. | ||
48 | # This code is taken from Autoconf master. | ||
49 | m4_ifndef([AC_SYS_YEAR2038], [ | ||
50 | |||
51 | # _AC_SYS_YEAR2038_TEST_CODE | ||
52 | # -------------------------- | ||
53 | # C code used to probe for time_t that can represent time points more | ||
54 | # than 2**31 - 1 seconds after the epoch. With the usual Unix epoch, | ||
55 | # these correspond to dates after 2038-01-18 22:14:07 +0000 (Gregorian), | ||
56 | # hence the name. | ||
57 | AC_DEFUN([_AC_SYS_YEAR2038_TEST_CODE], | ||
58 | [[ | ||
59 | #include <time.h> | ||
60 | /* Check that time_t can represent 2**32 - 1 correctly. */ | ||
61 | #define LARGE_TIME_T \\ | ||
62 | ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30))) | ||
63 | int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535 | ||
64 | && LARGE_TIME_T % 65537 == 0) | ||
65 | ? 1 : -1]; | ||
66 | ]]) | ||
67 | |||
68 | # _AC_SYS_YEAR2038_OPTIONS | ||
69 | # ------------------------ | ||
70 | # List of known ways to enable support for large time_t. If you change | ||
71 | # this list you probably also need to change the AS_CASE at the end of | ||
72 | # _AC_SYS_YEAR2038_PROBE. | ||
73 | m4_define([_AC_SYS_YEAR2038_OPTIONS], m4_normalize( | ||
74 | ["none needed"] dnl 64-bit and newer 32-bit Unix | ||
75 | ["-D_TIME_BITS=64"] dnl glibc 2.34 with some 32-bit ABIs | ||
76 | ["-D__MINGW_USE_VC2005_COMPAT"] dnl 32-bit MinGW | ||
77 | ["-U_USE_32_BIT_TIME_T -D__MINGW_USE_VC2005_COMPAT"] | ||
78 | dnl 32-bit MinGW (misconfiguration) | ||
79 | )) | ||
80 | |||
81 | # _AC_SYS_YEAR2038_PROBE([IF-NOT-DETECTED]) | ||
82 | # ----------------------------------------- | ||
83 | # Subroutine of AC_SYS_YEAR2038. Probe for time_t that can represent | ||
84 | # time points more than 2**31 - 1 seconds after the epoch (dates after | ||
85 | # 2038-01-18, see above) and set the cache variable ac_cv_sys_year2038_opts | ||
86 | # to one of the values in the _AC_SYS_YEAR2038_OPTIONS list, or to | ||
87 | # "support not detected" if none of them worked. Then, set compilation | ||
88 | # options and #defines as necessary to enable large time_t support. | ||
89 | # | ||
90 | # Note that we do not test whether mktime, localtime, etc. handle | ||
91 | # large values of time_t correctly, as that would require use of | ||
92 | # AC_TRY_RUN. Note also that some systems only support large time_t | ||
93 | # together with large off_t. | ||
94 | # | ||
95 | # If support is not detected, the behavior depends on which of the | ||
96 | # top-level AC_SYS_YEAR2038 macros was used (see below). | ||
97 | # | ||
98 | # If you change this macro you may also need to change | ||
99 | # _AC_SYS_YEAR2038_OPTIONS. | ||
100 | AC_DEFUN([_AC_SYS_YEAR2038_PROBE], | ||
101 | [AC_CACHE_CHECK([for $CC option to enable timestamps after Jan 2038], | ||
102 | [ac_cv_sys_year2038_opts], | ||
103 | [ac_save_CPPFLAGS="$CPPFLAGS" | ||
104 | ac_opt_found=no | ||
105 | for ac_opt in _AC_SYS_YEAR2038_OPTIONS; do | ||
106 | AS_IF([test x"$ac_opt" != x"none needed"], | ||
107 | [CPPFLAGS="$ac_save_CPPFLAGS $ac_opt"]) | ||
108 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_YEAR2038_TEST_CODE])], | ||
109 | [ac_cv_sys_year2038_opts="$ac_opt" | ||
110 | ac_opt_found=yes]) | ||
111 | test $ac_opt_found = no || break | ||
112 | done | ||
113 | CPPFLAGS="$ac_save_CPPFLAGS" | ||
114 | test $ac_opt_found = yes || ac_cv_sys_year2038_opts="support not detected"]) | ||
115 | |||
116 | ac_have_year2038=yes | ||
117 | AS_CASE([$ac_cv_sys_year2038_opts], | ||
118 | ["none needed"], [], | ||
119 | ["support not detected"], | ||
120 | [ac_have_year2038=no | ||
121 | AS_CASE([$enable_year2038], | ||
122 | [yes], | ||
123 | [# If we're not cross compiling and 'touch' works with a large | ||
124 | # timestamp, then we can presume the system supports wider time_t | ||
125 | # *somehow* and we just weren't able to detect it. One common | ||
126 | # case that we deliberately *don't* probe for is a system that | ||
127 | # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers | ||
128 | # wide time_t. (It would be inappropriate for us to override an | ||
129 | # intentional use of -m32.) Error out, demanding use of | ||
130 | # --disable-year2038 if this is intentional. | ||
131 | AS_IF([test $cross_compiling = no], | ||
132 | [AS_IF([TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null], | ||
133 | [AS_CASE([`TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null`], | ||
134 | [*'Feb 7 2106'* | *'Feb 7 17:10'*], | ||
135 | [AC_MSG_FAILURE(m4_text_wrap( | ||
136 | [this system appears to support timestamps after January 2038, | ||
137 | but no mechanism for enabling wide 'time_t' was detected. | ||
138 | Did you mean to build a 64-bit binary? (e.g. 'CC="${CC} -m64"'.) | ||
139 | To proceed with 32-bit time_t, configure with '--disable-year2038'.], | ||
140 | [], [], [55]))])])])])], | ||
141 | |||
142 | ["-D_TIME_BITS=64"], | ||
143 | [AC_DEFINE([_TIME_BITS], [64], | ||
144 | [Number of bits in time_t, on hosts where this is settable.])], | ||
145 | |||
146 | ["-D__MINGW_USE_VC2005_COMPAT=1"], | ||
147 | [AC_DEFINE([__MINGW_USE_VC2005_COMPAT], [1], | ||
148 | [Define to 1 on platforms where this makes time_t a 64-bit type.])], | ||
149 | |||
150 | ["-U_USE_32_BIT_TIME_T"*], | ||
151 | [AC_MSG_FAILURE(m4_text_wrap( | ||
152 | [the 'time_t' type is currently forced to be 32-bit. | ||
153 | It will stop working after January 2038. | ||
154 | Remove _USE_32BIT_TIME_T from the compiler flags.], | ||
155 | [], [], [55]))], | ||
156 | |||
157 | [AC_MSG_ERROR( | ||
158 | [internal error: bad value for \$ac_cv_sys_year2038_opts])]) | ||
159 | ]) | ||
160 | |||
161 | # _AC_SYS_YEAR2038_ENABLE | ||
162 | # ----------------------- | ||
163 | # Subroutine of AC_SYS_YEAR2038 and _AC_SYS_YEAR2038_OPT_IN. | ||
164 | # Depending on which of the YEAR2038 macros was used, add either an | ||
165 | # --enable-year2038, or a --disable-year2038, or no option at all to | ||
166 | # the configure script. Note that this is expanded very late and | ||
167 | # therefore there cannot be any code in the AC_ARG_ENABLE. The | ||
168 | # default value for enable_year2038 is emitted unconditionally | ||
169 | # because the generated code always looks at this variable. | ||
170 | m4_define([_AC_SYS_YEAR2038_ENABLE], | ||
171 | [m4_divert_text([DEFAULTS], | ||
172 | m4_provide_if([AC_SYS_YEAR2038], | ||
173 | [enable_year2038=yes], | ||
174 | [enable_year2038=no]))]dnl | ||
175 | [AC_ARG_ENABLE([year2038], | ||
176 | m4_provide_if([AC_SYS_YEAR2038], | ||
177 | [AS_HELP_STRING([--disable-year2038], | ||
178 | [do not support timestamps after 2038])], | ||
179 | [AS_HELP_STRING([--enable-year2038], | ||
180 | [support timestamps after 2038])]))]) | ||
181 | |||
182 | # _AC_SYS_YEAR2038_OPT_IN | ||
183 | # ----------------------- | ||
184 | # If the --enable-year2038 option is given to configure, attempt to | ||
185 | # detect and activate support for large time_t on 32-bit systems. | ||
186 | # This macro is automatically invoked by AC_SYS_LARGEFILE when large | ||
187 | # *file* support is detected. It does not AC_REQUIRE AC_SYS_LARGEFILE | ||
188 | # to avoid a dependency loop, and is therefore unsafe to expose as a | ||
189 | # documented macro. | ||
190 | AC_DEFUN([_AC_SYS_YEAR2038_OPT_IN], | ||
191 | [m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl | ||
192 | AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE]) | ||
193 | AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE]) | ||
194 | ])]) | ||
195 | |||
196 | # AC_SYS_YEAR2038 | ||
197 | # --------------- | ||
198 | # Attempt to detect and activate support for large time_t. | ||
199 | # On systems where time_t is not always 64 bits, this probe can be | ||
200 | # skipped by passing the --disable-year2038 option to configure. | ||
201 | AC_DEFUN([AC_SYS_YEAR2038], | ||
202 | [AC_REQUIRE([AC_SYS_LARGEFILE])]dnl | ||
203 | [m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl | ||
204 | AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE]) | ||
205 | AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE]) | ||
206 | ])]) | ||
207 | |||
208 | # _AC_SYS_LARGEFILE_TEST_CODE | ||
209 | # --------------------------- | ||
210 | # C code used to probe for large file support. | ||
211 | m4_define([_AC_SYS_LARGEFILE_TEST_CODE], | ||
212 | [@%:@include <sys/types.h> | ||
213 | /* Check that off_t can represent 2**63 - 1 correctly. | ||
214 | We can't simply define LARGE_OFF_T to be 9223372036854775807, | ||
215 | since some C++ compilers masquerading as C compilers | ||
216 | incorrectly reject 9223372036854775807. */ | ||
217 | @%:@define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31)) | ||
218 | int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721 | ||
219 | && LARGE_OFF_T % 2147483647 == 1) | ||
220 | ? 1 : -1]];[]dnl | ||
221 | ]) | ||
222 | |||
223 | # _AC_SYS_LARGEFILE_OPTIONS | ||
224 | # ------------------------- | ||
225 | # List of known ways to enable support for large files. If you change | ||
226 | # this list you probably also need to change the AS_CASE at the end of | ||
227 | # _AC_SYS_LARGEFILE_PROBE. | ||
228 | m4_define([_AC_SYS_LARGEFILE_OPTIONS], m4_normalize( | ||
229 | ["none needed"] dnl Most current systems | ||
230 | ["-D_FILE_OFFSET_BITS=64"] dnl X/Open LFS spec | ||
231 | ["-D_LARGE_FILES=1"] dnl AIX (which versions?) | ||
232 | ["-n32"] dnl Irix 6.2 w/ SGI compiler | ||
233 | )) | ||
234 | |||
235 | # _AC_SYS_LARGEFILE_PROBE | ||
236 | # ----------------------- | ||
237 | # Subroutine of AC_SYS_LARGEFILE. Probe for large file support and set | ||
238 | # the cache variable ac_cv_sys_largefile_opts to one of the values in | ||
239 | # the _AC_SYS_LARGEFILE_OPTIONS list, or to "support not detected" if | ||
240 | # none of the options in that list worked. Then, set compilation | ||
241 | # options and #defines as necessary to enable large file support. | ||
242 | # | ||
243 | # If large file support is not detected, the behavior depends on which of | ||
244 | # the top-level AC_SYS_LARGEFILE macros was used (see below). | ||
245 | # | ||
246 | # If you change this macro you may also need to change | ||
247 | # _AC_SYS_LARGEFILE_OPTIONS. | ||
248 | AC_DEFUN([_AC_SYS_LARGEFILE_PROBE], | ||
249 | [AC_CACHE_CHECK([for $CC option to enable large file support], | ||
250 | [ac_cv_sys_largefile_opts], | ||
251 | [ac_save_CC="$CC" | ||
252 | ac_opt_found=no | ||
253 | for ac_opt in _AC_SYS_LARGEFILE_OPTIONS; do | ||
254 | AS_IF([test x"$ac_opt" != x"none needed"], | ||
255 | [CC="$ac_save_CC $ac_opt"]) | ||
256 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_CODE])], | ||
257 | [ac_cv_sys_largefile_opts="$ac_opt" | ||
258 | ac_opt_found=yes]) | ||
259 | test $ac_opt_found = no || break | ||
260 | done | ||
261 | CC="$ac_save_CC" | ||
262 | test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected"]) | ||
263 | |||
264 | ac_have_largefile=yes | ||
265 | AS_CASE([$ac_cv_sys_largefile_opts], | ||
266 | ["none needed"], [], | ||
267 | ["support not detected"], | ||
268 | [ac_have_largefile=no], | ||
269 | |||
270 | ["-D_FILE_OFFSET_BITS=64"], | ||
271 | [AC_DEFINE([_FILE_OFFSET_BITS], [64], | ||
272 | [Number of bits in a file offset, on hosts where this is settable.])], | ||
273 | |||
274 | ["-D_LARGE_FILES=1"], | ||
275 | [AC_DEFINE([_LARGE_FILES], [1], | ||
276 | [Define to 1 on platforms where this makes off_t a 64-bit type.])], | ||
26 | 277 | ||
278 | ["-n32"], | ||
279 | [CC="$CC -n32"], | ||
27 | 280 | ||
28 | # _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE, | 281 | [AC_MSG_ERROR( |
29 | # CACHE-VAR, | 282 | [internal error: bad value for \$ac_cv_sys_largefile_opts])]) |
30 | # DESCRIPTION, | ||
31 | # PROLOGUE, [FUNCTION-BODY]) | ||
32 | # -------------------------------------------------------- | ||
33 | m4_define([_AC_SYS_LARGEFILE_MACRO_VALUE], | ||
34 | [AC_CACHE_CHECK([for $1 value needed for large files], [$3], | ||
35 | [while :; do | ||
36 | m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])( | ||
37 | [AC_LANG_PROGRAM([$5], [$6])], | ||
38 | [$3=no; break]) | ||
39 | m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])( | ||
40 | [AC_LANG_PROGRAM([@%:@define $1 $2 | ||
41 | $5], [$6])], | ||
42 | [$3=$2; break]) | ||
43 | $3=unknown | ||
44 | break | ||
45 | done]) | ||
46 | case $$3 in #( | ||
47 | no | unknown) ;; | ||
48 | *) AC_DEFINE_UNQUOTED([$1], [$$3], [$4]);; | ||
49 | esac | ||
50 | rm -rf conftest*[]dnl | ||
51 | ])# _AC_SYS_LARGEFILE_MACRO_VALUE | ||
52 | 283 | ||
284 | _AC_SYS_YEAR2038_OPT_IN | ||
285 | ]) | ||
286 | |||
287 | # _AC_SYS_LARGEFILE_ENABLE | ||
288 | # ------------------------ | ||
289 | # Subroutine of AC_SYS_LARGEFILE. Note that this | ||
290 | # is expanded very late and therefore there cannot be any code in the | ||
291 | # AC_ARG_ENABLE. The default value for enable_largefile is emitted | ||
292 | # unconditionally because the generated shell code always looks at | ||
293 | # this variable. | ||
294 | m4_define([_AC_SYS_LARGEFILE_ENABLE], | ||
295 | [m4_divert_text([DEFAULTS], | ||
296 | enable_largefile=yes)]dnl | ||
297 | [AC_ARG_ENABLE([largefile], | ||
298 | [AS_HELP_STRING([--disable-largefile], [omit support for large files])])]) | ||
53 | 299 | ||
54 | # AC_SYS_LARGEFILE | 300 | # AC_SYS_LARGEFILE |
55 | # ---------------- | 301 | # ---------------- |
56 | # By default, many hosts won't let programs access large files; | 302 | # By default, many hosts won't let programs access large files; |
57 | # one must use special compiler options to get large-file access to work. | 303 | # one must use special compiler options to get large-file access to work. |
58 | # For more details about this brain damage please see: | 304 | # For more details about this brain damage please see: |
59 | # http://www.unix-systems.org/version2/whatsnew/lfs20mar.html | 305 | # http://www.unix.org/version2/whatsnew/lfs20mar.html |
306 | # Additionally, on Linux file systems with 64-bit inodes a file that happens | ||
307 | # to have a 64-bit inode number cannot be accessed by 32-bit applications on | ||
308 | # Linux x86/x86_64. This can occur with file systems such as XFS and NFS. | ||
309 | # This macro allows configuration to continue if the system doesn't support | ||
310 | # large files. | ||
60 | AC_DEFUN([AC_SYS_LARGEFILE], | 311 | AC_DEFUN([AC_SYS_LARGEFILE], |
61 | [AC_ARG_ENABLE(largefile, | 312 | [m4_provide_if([_AC_SYS_LARGEFILE_PROBE], [], [dnl |
62 | [ --disable-largefile omit support for large files]) | 313 | AS_IF([test "$enable_largefile" != no], [_AC_SYS_LARGEFILE_PROBE]) |
63 | if test "$enable_largefile" != no; then | 314 | AC_CONFIG_COMMANDS_PRE([_AC_SYS_LARGEFILE_ENABLE]) |
64 | 315 | ])]) | |
65 | AC_CACHE_CHECK([for special C compiler options needed for large files], | 316 | ])# m4_ifndef AC_SYS_YEAR2038 |
66 | ac_cv_sys_largefile_CC, | ||
67 | [ac_cv_sys_largefile_CC=no | ||
68 | if test "$GCC" != yes; then | ||
69 | ac_save_CC=$CC | ||
70 | while :; do | ||
71 | # IRIX 6.2 and later do not support large files by default, | ||
72 | # so use the C compiler's -n32 option if that helps. | ||
73 | AC_LANG_CONFTEST([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_INCLUDES])]) | ||
74 | AC_COMPILE_IFELSE([], [break]) | ||
75 | CC="$CC -n32" | ||
76 | AC_COMPILE_IFELSE([], [ac_cv_sys_largefile_CC=' -n32'; break]) | ||
77 | break | ||
78 | done | ||
79 | CC=$ac_save_CC | ||
80 | rm -f conftest.$ac_ext | ||
81 | fi]) | ||
82 | if test "$ac_cv_sys_largefile_CC" != no; then | ||
83 | CC=$CC$ac_cv_sys_largefile_CC | ||
84 | fi | ||
85 | |||
86 | _AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64, | ||
87 | ac_cv_sys_file_offset_bits, | ||
88 | [Number of bits in a file offset, on hosts where this is settable.], | ||
89 | [_AC_SYS_LARGEFILE_TEST_INCLUDES]) | ||
90 | if test $ac_cv_sys_file_offset_bits = unknown; then | ||
91 | _AC_SYS_LARGEFILE_MACRO_VALUE(_LARGE_FILES, 1, | ||
92 | ac_cv_sys_large_files, | ||
93 | [Define for large files, on AIX-style hosts.], | ||
94 | [_AC_SYS_LARGEFILE_TEST_INCLUDES]) | ||
95 | fi | ||
96 | |||
97 | AC_DEFINE([_DARWIN_USE_64_BIT_INODE], [1], | ||
98 | [Enable large inode numbers on Mac OS X 10.5.]) | ||
99 | fi | ||
100 | ])# AC_SYS_LARGEFILE | ||
101 | ])# m4_version_prereq 2.70 | ||
102 | 317 | ||
103 | # Enable large files on systems where this is implemented by Gnulib, not by the | 318 | # Enable large files on systems where this is implemented by Gnulib, not by the |
104 | # system headers. | 319 | # system headers. |
@@ -126,9 +341,24 @@ AC_DEFUN([gl_LARGEFILE], | |||
126 | else | 341 | else |
127 | WINDOWS_64_BIT_OFF_T=0 | 342 | WINDOWS_64_BIT_OFF_T=0 |
128 | fi | 343 | fi |
129 | dnl But all native Windows platforms (including mingw64) have a 32-bit | 344 | dnl Some mingw versions define, if _FILE_OFFSET_BITS=64, 'struct stat' |
130 | dnl st_size member in 'struct stat'. | 345 | dnl to 'struct _stat32i64' or 'struct _stat64' (depending on |
131 | WINDOWS_64_BIT_ST_SIZE=1 | 346 | dnl _USE_32BIT_TIME_T), which has a 32-bit st_size member. |
347 | AC_CACHE_CHECK([for 64-bit st_size], [gl_cv_member_st_size_64], | ||
348 | [AC_COMPILE_IFELSE( | ||
349 | [AC_LANG_PROGRAM( | ||
350 | [[#include <sys/types.h> | ||
351 | struct stat buf; | ||
352 | int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1]; | ||
353 | ]], | ||
354 | [[]])], | ||
355 | [gl_cv_member_st_size_64=yes], [gl_cv_member_st_size_64=no]) | ||
356 | ]) | ||
357 | if test $gl_cv_member_st_size_64 = no; then | ||
358 | WINDOWS_64_BIT_ST_SIZE=1 | ||
359 | else | ||
360 | WINDOWS_64_BIT_ST_SIZE=0 | ||
361 | fi | ||
132 | ;; | 362 | ;; |
133 | *) | 363 | *) |
134 | dnl Nothing to do on gnulib's side. | 364 | dnl Nothing to do on gnulib's side. |
diff --git a/gl/m4/lcmessage.m4 b/gl/m4/lcmessage.m4 deleted file mode 100644 index d62a175f..00000000 --- a/gl/m4/lcmessage.m4 +++ /dev/null | |||
@@ -1,35 +0,0 @@ | |||
1 | # lcmessage.m4 serial 7 (gettext-0.18.2) | ||
2 | dnl Copyright (C) 1995-2002, 2004-2005, 2008-2013 Free Software Foundation, | ||
3 | dnl Inc. | ||
4 | dnl This file is free software; the Free Software Foundation | ||
5 | dnl gives unlimited permission to copy and/or distribute it, | ||
6 | dnl with or without modifications, as long as this notice is preserved. | ||
7 | dnl | ||
8 | dnl This file can can be used in projects which are not available under | ||
9 | dnl the GNU General Public License or the GNU Library General Public | ||
10 | dnl License but which still want to provide support for the GNU gettext | ||
11 | dnl functionality. | ||
12 | dnl Please note that the actual code of the GNU gettext library is covered | ||
13 | dnl by the GNU Library General Public License, and the rest of the GNU | ||
14 | dnl gettext package package is covered by the GNU General Public License. | ||
15 | dnl They are *not* in the public domain. | ||
16 | |||
17 | dnl Authors: | ||
18 | dnl Ulrich Drepper <drepper@cygnus.com>, 1995. | ||
19 | |||
20 | # Check whether LC_MESSAGES is available in <locale.h>. | ||
21 | |||
22 | AC_DEFUN([gt_LC_MESSAGES], | ||
23 | [ | ||
24 | AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES], | ||
25 | [AC_LINK_IFELSE( | ||
26 | [AC_LANG_PROGRAM( | ||
27 | [[#include <locale.h>]], | ||
28 | [[return LC_MESSAGES]])], | ||
29 | [gt_cv_val_LC_MESSAGES=yes], | ||
30 | [gt_cv_val_LC_MESSAGES=no])]) | ||
31 | if test $gt_cv_val_LC_MESSAGES = yes; then | ||
32 | AC_DEFINE([HAVE_LC_MESSAGES], [1], | ||
33 | [Define if your <locale.h> file defines LC_MESSAGES.]) | ||
34 | fi | ||
35 | ]) | ||
diff --git a/gl/m4/lib-ld.m4 b/gl/m4/lib-ld.m4 deleted file mode 100644 index c145e478..00000000 --- a/gl/m4/lib-ld.m4 +++ /dev/null | |||
@@ -1,119 +0,0 @@ | |||
1 | # lib-ld.m4 serial 6 | ||
2 | dnl Copyright (C) 1996-2003, 2009-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | dnl Subroutines of libtool.m4, | ||
8 | dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid | ||
9 | dnl collision with libtool.m4. | ||
10 | |||
11 | dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no. | ||
12 | AC_DEFUN([AC_LIB_PROG_LD_GNU], | ||
13 | [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], | ||
14 | [# I'd rather use --version here, but apparently some GNU lds only accept -v. | ||
15 | case `$LD -v 2>&1 </dev/null` in | ||
16 | *GNU* | *'with BFD'*) | ||
17 | acl_cv_prog_gnu_ld=yes | ||
18 | ;; | ||
19 | *) | ||
20 | acl_cv_prog_gnu_ld=no | ||
21 | ;; | ||
22 | esac]) | ||
23 | with_gnu_ld=$acl_cv_prog_gnu_ld | ||
24 | ]) | ||
25 | |||
26 | dnl From libtool-2.4. Sets the variable LD. | ||
27 | AC_DEFUN([AC_LIB_PROG_LD], | ||
28 | [AC_REQUIRE([AC_PROG_CC])dnl | ||
29 | AC_REQUIRE([AC_CANONICAL_HOST])dnl | ||
30 | |||
31 | AC_ARG_WITH([gnu-ld], | ||
32 | [AS_HELP_STRING([--with-gnu-ld], | ||
33 | [assume the C compiler uses GNU ld [default=no]])], | ||
34 | [test "$withval" = no || with_gnu_ld=yes], | ||
35 | [with_gnu_ld=no])dnl | ||
36 | |||
37 | # Prepare PATH_SEPARATOR. | ||
38 | # The user is always right. | ||
39 | if test "${PATH_SEPARATOR+set}" != set; then | ||
40 | # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which | ||
41 | # contains only /bin. Note that ksh looks also at the FPATH variable, | ||
42 | # so we have to set that as well for the test. | ||
43 | PATH_SEPARATOR=: | ||
44 | (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ | ||
45 | && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ | ||
46 | || PATH_SEPARATOR=';' | ||
47 | } | ||
48 | fi | ||
49 | |||
50 | ac_prog=ld | ||
51 | if test "$GCC" = yes; then | ||
52 | # Check if gcc -print-prog-name=ld gives a path. | ||
53 | AC_MSG_CHECKING([for ld used by $CC]) | ||
54 | case $host in | ||
55 | *-*-mingw*) | ||
56 | # gcc leaves a trailing carriage return which upsets mingw | ||
57 | ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; | ||
58 | *) | ||
59 | ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; | ||
60 | esac | ||
61 | case $ac_prog in | ||
62 | # Accept absolute paths. | ||
63 | [[\\/]]* | ?:[[\\/]]*) | ||
64 | re_direlt='/[[^/]][[^/]]*/\.\./' | ||
65 | # Canonicalize the pathname of ld | ||
66 | ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` | ||
67 | while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do | ||
68 | ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` | ||
69 | done | ||
70 | test -z "$LD" && LD="$ac_prog" | ||
71 | ;; | ||
72 | "") | ||
73 | # If it fails, then pretend we aren't using GCC. | ||
74 | ac_prog=ld | ||
75 | ;; | ||
76 | *) | ||
77 | # If it is relative, then search for the first ld in PATH. | ||
78 | with_gnu_ld=unknown | ||
79 | ;; | ||
80 | esac | ||
81 | elif test "$with_gnu_ld" = yes; then | ||
82 | AC_MSG_CHECKING([for GNU ld]) | ||
83 | else | ||
84 | AC_MSG_CHECKING([for non-GNU ld]) | ||
85 | fi | ||
86 | AC_CACHE_VAL([acl_cv_path_LD], | ||
87 | [if test -z "$LD"; then | ||
88 | acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR | ||
89 | for ac_dir in $PATH; do | ||
90 | IFS="$acl_save_ifs" | ||
91 | test -z "$ac_dir" && ac_dir=. | ||
92 | if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then | ||
93 | acl_cv_path_LD="$ac_dir/$ac_prog" | ||
94 | # Check to see if the program is GNU ld. I'd rather use --version, | ||
95 | # but apparently some variants of GNU ld only accept -v. | ||
96 | # Break only if it was the GNU/non-GNU ld that we prefer. | ||
97 | case `"$acl_cv_path_LD" -v 2>&1 </dev/null` in | ||
98 | *GNU* | *'with BFD'*) | ||
99 | test "$with_gnu_ld" != no && break | ||
100 | ;; | ||
101 | *) | ||
102 | test "$with_gnu_ld" != yes && break | ||
103 | ;; | ||
104 | esac | ||
105 | fi | ||
106 | done | ||
107 | IFS="$acl_save_ifs" | ||
108 | else | ||
109 | acl_cv_path_LD="$LD" # Let the user override the test with a path. | ||
110 | fi]) | ||
111 | LD="$acl_cv_path_LD" | ||
112 | if test -n "$LD"; then | ||
113 | AC_MSG_RESULT([$LD]) | ||
114 | else | ||
115 | AC_MSG_RESULT([no]) | ||
116 | fi | ||
117 | test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) | ||
118 | AC_LIB_PROG_LD_GNU | ||
119 | ]) | ||
diff --git a/gl/m4/lib-link.m4 b/gl/m4/lib-link.m4 deleted file mode 100644 index 073f0405..00000000 --- a/gl/m4/lib-link.m4 +++ /dev/null | |||
@@ -1,777 +0,0 @@ | |||
1 | # lib-link.m4 serial 26 (gettext-0.18.2) | ||
2 | dnl Copyright (C) 2001-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | dnl From Bruno Haible. | ||
8 | |||
9 | AC_PREREQ([2.54]) | ||
10 | |||
11 | dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and | ||
12 | dnl the libraries corresponding to explicit and implicit dependencies. | ||
13 | dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and | ||
14 | dnl augments the CPPFLAGS variable. | ||
15 | dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname | ||
16 | dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. | ||
17 | AC_DEFUN([AC_LIB_LINKFLAGS], | ||
18 | [ | ||
19 | AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) | ||
20 | AC_REQUIRE([AC_LIB_RPATH]) | ||
21 | pushdef([Name],[m4_translit([$1],[./+-], [____])]) | ||
22 | pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], | ||
23 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) | ||
24 | AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ | ||
25 | AC_LIB_LINKFLAGS_BODY([$1], [$2]) | ||
26 | ac_cv_lib[]Name[]_libs="$LIB[]NAME" | ||
27 | ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" | ||
28 | ac_cv_lib[]Name[]_cppflags="$INC[]NAME" | ||
29 | ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX" | ||
30 | ]) | ||
31 | LIB[]NAME="$ac_cv_lib[]Name[]_libs" | ||
32 | LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" | ||
33 | INC[]NAME="$ac_cv_lib[]Name[]_cppflags" | ||
34 | LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix" | ||
35 | AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) | ||
36 | AC_SUBST([LIB]NAME) | ||
37 | AC_SUBST([LTLIB]NAME) | ||
38 | AC_SUBST([LIB]NAME[_PREFIX]) | ||
39 | dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the | ||
40 | dnl results of this search when this library appears as a dependency. | ||
41 | HAVE_LIB[]NAME=yes | ||
42 | popdef([NAME]) | ||
43 | popdef([Name]) | ||
44 | ]) | ||
45 | |||
46 | dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message]) | ||
47 | dnl searches for libname and the libraries corresponding to explicit and | ||
48 | dnl implicit dependencies, together with the specified include files and | ||
49 | dnl the ability to compile and link the specified testcode. The missing-message | ||
50 | dnl defaults to 'no' and may contain additional hints for the user. | ||
51 | dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} | ||
52 | dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and | ||
53 | dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs | ||
54 | dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. | ||
55 | dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname | ||
56 | dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem. | ||
57 | AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], | ||
58 | [ | ||
59 | AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) | ||
60 | AC_REQUIRE([AC_LIB_RPATH]) | ||
61 | pushdef([Name],[m4_translit([$1],[./+-], [____])]) | ||
62 | pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], | ||
63 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) | ||
64 | |||
65 | dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME | ||
66 | dnl accordingly. | ||
67 | AC_LIB_LINKFLAGS_BODY([$1], [$2]) | ||
68 | |||
69 | dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, | ||
70 | dnl because if the user has installed lib[]Name and not disabled its use | ||
71 | dnl via --without-lib[]Name-prefix, he wants to use it. | ||
72 | ac_save_CPPFLAGS="$CPPFLAGS" | ||
73 | AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) | ||
74 | |||
75 | AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ | ||
76 | ac_save_LIBS="$LIBS" | ||
77 | dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS, | ||
78 | dnl because these -l options might require -L options that are present in | ||
79 | dnl LIBS. -l options benefit only from the -L options listed before it. | ||
80 | dnl Otherwise, add it to the front of LIBS, because it may be a static | ||
81 | dnl library that depends on another static library that is present in LIBS. | ||
82 | dnl Static libraries benefit only from the static libraries listed after | ||
83 | dnl it. | ||
84 | case " $LIB[]NAME" in | ||
85 | *" -l"*) LIBS="$LIBS $LIB[]NAME" ;; | ||
86 | *) LIBS="$LIB[]NAME $LIBS" ;; | ||
87 | esac | ||
88 | AC_LINK_IFELSE( | ||
89 | [AC_LANG_PROGRAM([[$3]], [[$4]])], | ||
90 | [ac_cv_lib[]Name=yes], | ||
91 | [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])']) | ||
92 | LIBS="$ac_save_LIBS" | ||
93 | ]) | ||
94 | if test "$ac_cv_lib[]Name" = yes; then | ||
95 | HAVE_LIB[]NAME=yes | ||
96 | AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.]) | ||
97 | AC_MSG_CHECKING([how to link with lib[]$1]) | ||
98 | AC_MSG_RESULT([$LIB[]NAME]) | ||
99 | else | ||
100 | HAVE_LIB[]NAME=no | ||
101 | dnl If $LIB[]NAME didn't lead to a usable library, we don't need | ||
102 | dnl $INC[]NAME either. | ||
103 | CPPFLAGS="$ac_save_CPPFLAGS" | ||
104 | LIB[]NAME= | ||
105 | LTLIB[]NAME= | ||
106 | LIB[]NAME[]_PREFIX= | ||
107 | fi | ||
108 | AC_SUBST([HAVE_LIB]NAME) | ||
109 | AC_SUBST([LIB]NAME) | ||
110 | AC_SUBST([LTLIB]NAME) | ||
111 | AC_SUBST([LIB]NAME[_PREFIX]) | ||
112 | popdef([NAME]) | ||
113 | popdef([Name]) | ||
114 | ]) | ||
115 | |||
116 | dnl Determine the platform dependent parameters needed to use rpath: | ||
117 | dnl acl_libext, | ||
118 | dnl acl_shlibext, | ||
119 | dnl acl_libname_spec, | ||
120 | dnl acl_library_names_spec, | ||
121 | dnl acl_hardcode_libdir_flag_spec, | ||
122 | dnl acl_hardcode_libdir_separator, | ||
123 | dnl acl_hardcode_direct, | ||
124 | dnl acl_hardcode_minus_L. | ||
125 | AC_DEFUN([AC_LIB_RPATH], | ||
126 | [ | ||
127 | dnl Tell automake >= 1.10 to complain if config.rpath is missing. | ||
128 | m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) | ||
129 | AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS | ||
130 | AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld | ||
131 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host | ||
132 | AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir | ||
133 | AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ | ||
134 | CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ | ||
135 | ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh | ||
136 | . ./conftest.sh | ||
137 | rm -f ./conftest.sh | ||
138 | acl_cv_rpath=done | ||
139 | ]) | ||
140 | wl="$acl_cv_wl" | ||
141 | acl_libext="$acl_cv_libext" | ||
142 | acl_shlibext="$acl_cv_shlibext" | ||
143 | acl_libname_spec="$acl_cv_libname_spec" | ||
144 | acl_library_names_spec="$acl_cv_library_names_spec" | ||
145 | acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" | ||
146 | acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" | ||
147 | acl_hardcode_direct="$acl_cv_hardcode_direct" | ||
148 | acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" | ||
149 | dnl Determine whether the user wants rpath handling at all. | ||
150 | AC_ARG_ENABLE([rpath], | ||
151 | [ --disable-rpath do not hardcode runtime library paths], | ||
152 | :, enable_rpath=yes) | ||
153 | ]) | ||
154 | |||
155 | dnl AC_LIB_FROMPACKAGE(name, package) | ||
156 | dnl declares that libname comes from the given package. The configure file | ||
157 | dnl will then not have a --with-libname-prefix option but a | ||
158 | dnl --with-package-prefix option. Several libraries can come from the same | ||
159 | dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar | ||
160 | dnl macro call that searches for libname. | ||
161 | AC_DEFUN([AC_LIB_FROMPACKAGE], | ||
162 | [ | ||
163 | pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], | ||
164 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) | ||
165 | define([acl_frompackage_]NAME, [$2]) | ||
166 | popdef([NAME]) | ||
167 | pushdef([PACK],[$2]) | ||
168 | pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], | ||
169 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) | ||
170 | define([acl_libsinpackage_]PACKUP, | ||
171 | m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1]) | ||
172 | popdef([PACKUP]) | ||
173 | popdef([PACK]) | ||
174 | ]) | ||
175 | |||
176 | dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and | ||
177 | dnl the libraries corresponding to explicit and implicit dependencies. | ||
178 | dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. | ||
179 | dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found | ||
180 | dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. | ||
181 | AC_DEFUN([AC_LIB_LINKFLAGS_BODY], | ||
182 | [ | ||
183 | AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) | ||
184 | pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], | ||
185 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) | ||
186 | pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) | ||
187 | pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], | ||
188 | [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) | ||
189 | pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) | ||
190 | dnl Autoconf >= 2.61 supports dots in --with options. | ||
191 | pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[m4_translit(PACK,[.],[_])],PACK)]) | ||
192 | dnl By default, look in $includedir and $libdir. | ||
193 | use_additional=yes | ||
194 | AC_LIB_WITH_FINAL_PREFIX([ | ||
195 | eval additional_includedir=\"$includedir\" | ||
196 | eval additional_libdir=\"$libdir\" | ||
197 | ]) | ||
198 | AC_ARG_WITH(P_A_C_K[-prefix], | ||
199 | [[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib | ||
200 | --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], | ||
201 | [ | ||
202 | if test "X$withval" = "Xno"; then | ||
203 | use_additional=no | ||
204 | else | ||
205 | if test "X$withval" = "X"; then | ||
206 | AC_LIB_WITH_FINAL_PREFIX([ | ||
207 | eval additional_includedir=\"$includedir\" | ||
208 | eval additional_libdir=\"$libdir\" | ||
209 | ]) | ||
210 | else | ||
211 | additional_includedir="$withval/include" | ||
212 | additional_libdir="$withval/$acl_libdirstem" | ||
213 | if test "$acl_libdirstem2" != "$acl_libdirstem" \ | ||
214 | && ! test -d "$withval/$acl_libdirstem"; then | ||
215 | additional_libdir="$withval/$acl_libdirstem2" | ||
216 | fi | ||
217 | fi | ||
218 | fi | ||
219 | ]) | ||
220 | dnl Search the library and its dependencies in $additional_libdir and | ||
221 | dnl $LDFLAGS. Using breadth-first-seach. | ||
222 | LIB[]NAME= | ||
223 | LTLIB[]NAME= | ||
224 | INC[]NAME= | ||
225 | LIB[]NAME[]_PREFIX= | ||
226 | dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been | ||
227 | dnl computed. So it has to be reset here. | ||
228 | HAVE_LIB[]NAME= | ||
229 | rpathdirs= | ||
230 | ltrpathdirs= | ||
231 | names_already_handled= | ||
232 | names_next_round='$1 $2' | ||
233 | while test -n "$names_next_round"; do | ||
234 | names_this_round="$names_next_round" | ||
235 | names_next_round= | ||
236 | for name in $names_this_round; do | ||
237 | already_handled= | ||
238 | for n in $names_already_handled; do | ||
239 | if test "$n" = "$name"; then | ||
240 | already_handled=yes | ||
241 | break | ||
242 | fi | ||
243 | done | ||
244 | if test -z "$already_handled"; then | ||
245 | names_already_handled="$names_already_handled $name" | ||
246 | dnl See if it was already located by an earlier AC_LIB_LINKFLAGS | ||
247 | dnl or AC_LIB_HAVE_LINKFLAGS call. | ||
248 | uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` | ||
249 | eval value=\"\$HAVE_LIB$uppername\" | ||
250 | if test -n "$value"; then | ||
251 | if test "$value" = yes; then | ||
252 | eval value=\"\$LIB$uppername\" | ||
253 | test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" | ||
254 | eval value=\"\$LTLIB$uppername\" | ||
255 | test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" | ||
256 | else | ||
257 | dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined | ||
258 | dnl that this library doesn't exist. So just drop it. | ||
259 | : | ||
260 | fi | ||
261 | else | ||
262 | dnl Search the library lib$name in $additional_libdir and $LDFLAGS | ||
263 | dnl and the already constructed $LIBNAME/$LTLIBNAME. | ||
264 | found_dir= | ||
265 | found_la= | ||
266 | found_so= | ||
267 | found_a= | ||
268 | eval libname=\"$acl_libname_spec\" # typically: libname=lib$name | ||
269 | if test -n "$acl_shlibext"; then | ||
270 | shrext=".$acl_shlibext" # typically: shrext=.so | ||
271 | else | ||
272 | shrext= | ||
273 | fi | ||
274 | if test $use_additional = yes; then | ||
275 | dir="$additional_libdir" | ||
276 | dnl The same code as in the loop below: | ||
277 | dnl First look for a shared library. | ||
278 | if test -n "$acl_shlibext"; then | ||
279 | if test -f "$dir/$libname$shrext"; then | ||
280 | found_dir="$dir" | ||
281 | found_so="$dir/$libname$shrext" | ||
282 | else | ||
283 | if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then | ||
284 | ver=`(cd "$dir" && \ | ||
285 | for f in "$libname$shrext".*; do echo "$f"; done \ | ||
286 | | sed -e "s,^$libname$shrext\\\\.,," \ | ||
287 | | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | ||
288 | | sed 1q ) 2>/dev/null` | ||
289 | if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then | ||
290 | found_dir="$dir" | ||
291 | found_so="$dir/$libname$shrext.$ver" | ||
292 | fi | ||
293 | else | ||
294 | eval library_names=\"$acl_library_names_spec\" | ||
295 | for f in $library_names; do | ||
296 | if test -f "$dir/$f"; then | ||
297 | found_dir="$dir" | ||
298 | found_so="$dir/$f" | ||
299 | break | ||
300 | fi | ||
301 | done | ||
302 | fi | ||
303 | fi | ||
304 | fi | ||
305 | dnl Then look for a static library. | ||
306 | if test "X$found_dir" = "X"; then | ||
307 | if test -f "$dir/$libname.$acl_libext"; then | ||
308 | found_dir="$dir" | ||
309 | found_a="$dir/$libname.$acl_libext" | ||
310 | fi | ||
311 | fi | ||
312 | if test "X$found_dir" != "X"; then | ||
313 | if test -f "$dir/$libname.la"; then | ||
314 | found_la="$dir/$libname.la" | ||
315 | fi | ||
316 | fi | ||
317 | fi | ||
318 | if test "X$found_dir" = "X"; then | ||
319 | for x in $LDFLAGS $LTLIB[]NAME; do | ||
320 | AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) | ||
321 | case "$x" in | ||
322 | -L*) | ||
323 | dir=`echo "X$x" | sed -e 's/^X-L//'` | ||
324 | dnl First look for a shared library. | ||
325 | if test -n "$acl_shlibext"; then | ||
326 | if test -f "$dir/$libname$shrext"; then | ||
327 | found_dir="$dir" | ||
328 | found_so="$dir/$libname$shrext" | ||
329 | else | ||
330 | if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then | ||
331 | ver=`(cd "$dir" && \ | ||
332 | for f in "$libname$shrext".*; do echo "$f"; done \ | ||
333 | | sed -e "s,^$libname$shrext\\\\.,," \ | ||
334 | | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ | ||
335 | | sed 1q ) 2>/dev/null` | ||
336 | if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then | ||
337 | found_dir="$dir" | ||
338 | found_so="$dir/$libname$shrext.$ver" | ||
339 | fi | ||
340 | else | ||
341 | eval library_names=\"$acl_library_names_spec\" | ||
342 | for f in $library_names; do | ||
343 | if test -f "$dir/$f"; then | ||
344 | found_dir="$dir" | ||
345 | found_so="$dir/$f" | ||
346 | break | ||
347 | fi | ||
348 | done | ||
349 | fi | ||
350 | fi | ||
351 | fi | ||
352 | dnl Then look for a static library. | ||
353 | if test "X$found_dir" = "X"; then | ||
354 | if test -f "$dir/$libname.$acl_libext"; then | ||
355 | found_dir="$dir" | ||
356 | found_a="$dir/$libname.$acl_libext" | ||
357 | fi | ||
358 | fi | ||
359 | if test "X$found_dir" != "X"; then | ||
360 | if test -f "$dir/$libname.la"; then | ||
361 | found_la="$dir/$libname.la" | ||
362 | fi | ||
363 | fi | ||
364 | ;; | ||
365 | esac | ||
366 | if test "X$found_dir" != "X"; then | ||
367 | break | ||
368 | fi | ||
369 | done | ||
370 | fi | ||
371 | if test "X$found_dir" != "X"; then | ||
372 | dnl Found the library. | ||
373 | LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" | ||
374 | if test "X$found_so" != "X"; then | ||
375 | dnl Linking with a shared library. We attempt to hardcode its | ||
376 | dnl directory into the executable's runpath, unless it's the | ||
377 | dnl standard /usr/lib. | ||
378 | if test "$enable_rpath" = no \ | ||
379 | || test "X$found_dir" = "X/usr/$acl_libdirstem" \ | ||
380 | || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then | ||
381 | dnl No hardcoding is needed. | ||
382 | LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" | ||
383 | else | ||
384 | dnl Use an explicit option to hardcode DIR into the resulting | ||
385 | dnl binary. | ||
386 | dnl Potentially add DIR to ltrpathdirs. | ||
387 | dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. | ||
388 | haveit= | ||
389 | for x in $ltrpathdirs; do | ||
390 | if test "X$x" = "X$found_dir"; then | ||
391 | haveit=yes | ||
392 | break | ||
393 | fi | ||
394 | done | ||
395 | if test -z "$haveit"; then | ||
396 | ltrpathdirs="$ltrpathdirs $found_dir" | ||
397 | fi | ||
398 | dnl The hardcoding into $LIBNAME is system dependent. | ||
399 | if test "$acl_hardcode_direct" = yes; then | ||
400 | dnl Using DIR/libNAME.so during linking hardcodes DIR into the | ||
401 | dnl resulting binary. | ||
402 | LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" | ||
403 | else | ||
404 | if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then | ||
405 | dnl Use an explicit option to hardcode DIR into the resulting | ||
406 | dnl binary. | ||
407 | LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" | ||
408 | dnl Potentially add DIR to rpathdirs. | ||
409 | dnl The rpathdirs will be appended to $LIBNAME at the end. | ||
410 | haveit= | ||
411 | for x in $rpathdirs; do | ||
412 | if test "X$x" = "X$found_dir"; then | ||
413 | haveit=yes | ||
414 | break | ||
415 | fi | ||
416 | done | ||
417 | if test -z "$haveit"; then | ||
418 | rpathdirs="$rpathdirs $found_dir" | ||
419 | fi | ||
420 | else | ||
421 | dnl Rely on "-L$found_dir". | ||
422 | dnl But don't add it if it's already contained in the LDFLAGS | ||
423 | dnl or the already constructed $LIBNAME | ||
424 | haveit= | ||
425 | for x in $LDFLAGS $LIB[]NAME; do | ||
426 | AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) | ||
427 | if test "X$x" = "X-L$found_dir"; then | ||
428 | haveit=yes | ||
429 | break | ||
430 | fi | ||
431 | done | ||
432 | if test -z "$haveit"; then | ||
433 | LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" | ||
434 | fi | ||
435 | if test "$acl_hardcode_minus_L" != no; then | ||
436 | dnl FIXME: Not sure whether we should use | ||
437 | dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" | ||
438 | dnl here. | ||
439 | LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" | ||
440 | else | ||
441 | dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH | ||
442 | dnl here, because this doesn't fit in flags passed to the | ||
443 | dnl compiler. So give up. No hardcoding. This affects only | ||
444 | dnl very old systems. | ||
445 | dnl FIXME: Not sure whether we should use | ||
446 | dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" | ||
447 | dnl here. | ||
448 | LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" | ||
449 | fi | ||
450 | fi | ||
451 | fi | ||
452 | fi | ||
453 | else | ||
454 | if test "X$found_a" != "X"; then | ||
455 | dnl Linking with a static library. | ||
456 | LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" | ||
457 | else | ||
458 | dnl We shouldn't come here, but anyway it's good to have a | ||
459 | dnl fallback. | ||
460 | LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" | ||
461 | fi | ||
462 | fi | ||
463 | dnl Assume the include files are nearby. | ||
464 | additional_includedir= | ||
465 | case "$found_dir" in | ||
466 | */$acl_libdirstem | */$acl_libdirstem/) | ||
467 | basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` | ||
468 | if test "$name" = '$1'; then | ||
469 | LIB[]NAME[]_PREFIX="$basedir" | ||
470 | fi | ||
471 | additional_includedir="$basedir/include" | ||
472 | ;; | ||
473 | */$acl_libdirstem2 | */$acl_libdirstem2/) | ||
474 | basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` | ||
475 | if test "$name" = '$1'; then | ||
476 | LIB[]NAME[]_PREFIX="$basedir" | ||
477 | fi | ||
478 | additional_includedir="$basedir/include" | ||
479 | ;; | ||
480 | esac | ||
481 | if test "X$additional_includedir" != "X"; then | ||
482 | dnl Potentially add $additional_includedir to $INCNAME. | ||
483 | dnl But don't add it | ||
484 | dnl 1. if it's the standard /usr/include, | ||
485 | dnl 2. if it's /usr/local/include and we are using GCC on Linux, | ||
486 | dnl 3. if it's already present in $CPPFLAGS or the already | ||
487 | dnl constructed $INCNAME, | ||
488 | dnl 4. if it doesn't exist as a directory. | ||
489 | if test "X$additional_includedir" != "X/usr/include"; then | ||
490 | haveit= | ||
491 | if test "X$additional_includedir" = "X/usr/local/include"; then | ||
492 | if test -n "$GCC"; then | ||
493 | case $host_os in | ||
494 | linux* | gnu* | k*bsd*-gnu) haveit=yes;; | ||
495 | esac | ||
496 | fi | ||
497 | fi | ||
498 | if test -z "$haveit"; then | ||
499 | for x in $CPPFLAGS $INC[]NAME; do | ||
500 | AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) | ||
501 | if test "X$x" = "X-I$additional_includedir"; then | ||
502 | haveit=yes | ||
503 | break | ||
504 | fi | ||
505 | done | ||
506 | if test -z "$haveit"; then | ||
507 | if test -d "$additional_includedir"; then | ||
508 | dnl Really add $additional_includedir to $INCNAME. | ||
509 | INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" | ||
510 | fi | ||
511 | fi | ||
512 | fi | ||
513 | fi | ||
514 | fi | ||
515 | dnl Look for dependencies. | ||
516 | if test -n "$found_la"; then | ||
517 | dnl Read the .la file. It defines the variables | ||
518 | dnl dlname, library_names, old_library, dependency_libs, current, | ||
519 | dnl age, revision, installed, dlopen, dlpreopen, libdir. | ||
520 | save_libdir="$libdir" | ||
521 | case "$found_la" in | ||
522 | */* | *\\*) . "$found_la" ;; | ||
523 | *) . "./$found_la" ;; | ||
524 | esac | ||
525 | libdir="$save_libdir" | ||
526 | dnl We use only dependency_libs. | ||
527 | for dep in $dependency_libs; do | ||
528 | case "$dep" in | ||
529 | -L*) | ||
530 | additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` | ||
531 | dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. | ||
532 | dnl But don't add it | ||
533 | dnl 1. if it's the standard /usr/lib, | ||
534 | dnl 2. if it's /usr/local/lib and we are using GCC on Linux, | ||
535 | dnl 3. if it's already present in $LDFLAGS or the already | ||
536 | dnl constructed $LIBNAME, | ||
537 | dnl 4. if it doesn't exist as a directory. | ||
538 | if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ | ||
539 | && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then | ||
540 | haveit= | ||
541 | if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ | ||
542 | || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then | ||
543 | if test -n "$GCC"; then | ||
544 | case $host_os in | ||
545 | linux* | gnu* | k*bsd*-gnu) haveit=yes;; | ||
546 | esac | ||
547 | fi | ||
548 | fi | ||
549 | if test -z "$haveit"; then | ||
550 | haveit= | ||
551 | for x in $LDFLAGS $LIB[]NAME; do | ||
552 | AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) | ||
553 | if test "X$x" = "X-L$additional_libdir"; then | ||
554 | haveit=yes | ||
555 | break | ||
556 | fi | ||
557 | done | ||
558 | if test -z "$haveit"; then | ||
559 | if test -d "$additional_libdir"; then | ||
560 | dnl Really add $additional_libdir to $LIBNAME. | ||
561 | LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" | ||
562 | fi | ||
563 | fi | ||
564 | haveit= | ||
565 | for x in $LDFLAGS $LTLIB[]NAME; do | ||
566 | AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) | ||
567 | if test "X$x" = "X-L$additional_libdir"; then | ||
568 | haveit=yes | ||
569 | break | ||
570 | fi | ||
571 | done | ||
572 | if test -z "$haveit"; then | ||
573 | if test -d "$additional_libdir"; then | ||
574 | dnl Really add $additional_libdir to $LTLIBNAME. | ||
575 | LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" | ||
576 | fi | ||
577 | fi | ||
578 | fi | ||
579 | fi | ||
580 | ;; | ||
581 | -R*) | ||
582 | dir=`echo "X$dep" | sed -e 's/^X-R//'` | ||
583 | if test "$enable_rpath" != no; then | ||
584 | dnl Potentially add DIR to rpathdirs. | ||
585 | dnl The rpathdirs will be appended to $LIBNAME at the end. | ||
586 | haveit= | ||
587 | for x in $rpathdirs; do | ||
588 | if test "X$x" = "X$dir"; then | ||
589 | haveit=yes | ||
590 | break | ||
591 | fi | ||
592 | done | ||
593 | if test -z "$haveit"; then | ||
594 | rpathdirs="$rpathdirs $dir" | ||
595 | fi | ||
596 | dnl Potentially add DIR to ltrpathdirs. | ||
597 | dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. | ||
598 | haveit= | ||
599 | for x in $ltrpathdirs; do | ||
600 | if test "X$x" = "X$dir"; then | ||
601 | haveit=yes | ||
602 | break | ||
603 | fi | ||
604 | done | ||
605 | if test -z "$haveit"; then | ||
606 | ltrpathdirs="$ltrpathdirs $dir" | ||
607 | fi | ||
608 | fi | ||
609 | ;; | ||
610 | -l*) | ||
611 | dnl Handle this in the next round. | ||
612 | names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` | ||
613 | ;; | ||
614 | *.la) | ||
615 | dnl Handle this in the next round. Throw away the .la's | ||
616 | dnl directory; it is already contained in a preceding -L | ||
617 | dnl option. | ||
618 | names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` | ||
619 | ;; | ||
620 | *) | ||
621 | dnl Most likely an immediate library name. | ||
622 | LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" | ||
623 | LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" | ||
624 | ;; | ||
625 | esac | ||
626 | done | ||
627 | fi | ||
628 | else | ||
629 | dnl Didn't find the library; assume it is in the system directories | ||
630 | dnl known to the linker and runtime loader. (All the system | ||
631 | dnl directories known to the linker should also be known to the | ||
632 | dnl runtime loader, otherwise the system is severely misconfigured.) | ||
633 | LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" | ||
634 | LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" | ||
635 | fi | ||
636 | fi | ||
637 | fi | ||
638 | done | ||
639 | done | ||
640 | if test "X$rpathdirs" != "X"; then | ||
641 | if test -n "$acl_hardcode_libdir_separator"; then | ||
642 | dnl Weird platform: only the last -rpath option counts, the user must | ||
643 | dnl pass all path elements in one option. We can arrange that for a | ||
644 | dnl single library, but not when more than one $LIBNAMEs are used. | ||
645 | alldirs= | ||
646 | for found_dir in $rpathdirs; do | ||
647 | alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" | ||
648 | done | ||
649 | dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. | ||
650 | acl_save_libdir="$libdir" | ||
651 | libdir="$alldirs" | ||
652 | eval flag=\"$acl_hardcode_libdir_flag_spec\" | ||
653 | libdir="$acl_save_libdir" | ||
654 | LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" | ||
655 | else | ||
656 | dnl The -rpath options are cumulative. | ||
657 | for found_dir in $rpathdirs; do | ||
658 | acl_save_libdir="$libdir" | ||
659 | libdir="$found_dir" | ||
660 | eval flag=\"$acl_hardcode_libdir_flag_spec\" | ||
661 | libdir="$acl_save_libdir" | ||
662 | LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" | ||
663 | done | ||
664 | fi | ||
665 | fi | ||
666 | if test "X$ltrpathdirs" != "X"; then | ||
667 | dnl When using libtool, the option that works for both libraries and | ||
668 | dnl executables is -R. The -R options are cumulative. | ||
669 | for found_dir in $ltrpathdirs; do | ||
670 | LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" | ||
671 | done | ||
672 | fi | ||
673 | popdef([P_A_C_K]) | ||
674 | popdef([PACKLIBS]) | ||
675 | popdef([PACKUP]) | ||
676 | popdef([PACK]) | ||
677 | popdef([NAME]) | ||
678 | ]) | ||
679 | |||
680 | dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, | ||
681 | dnl unless already present in VAR. | ||
682 | dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes | ||
683 | dnl contains two or three consecutive elements that belong together. | ||
684 | AC_DEFUN([AC_LIB_APPENDTOVAR], | ||
685 | [ | ||
686 | for element in [$2]; do | ||
687 | haveit= | ||
688 | for x in $[$1]; do | ||
689 | AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) | ||
690 | if test "X$x" = "X$element"; then | ||
691 | haveit=yes | ||
692 | break | ||
693 | fi | ||
694 | done | ||
695 | if test -z "$haveit"; then | ||
696 | [$1]="${[$1]}${[$1]:+ }$element" | ||
697 | fi | ||
698 | done | ||
699 | ]) | ||
700 | |||
701 | dnl For those cases where a variable contains several -L and -l options | ||
702 | dnl referring to unknown libraries and directories, this macro determines the | ||
703 | dnl necessary additional linker options for the runtime path. | ||
704 | dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) | ||
705 | dnl sets LDADDVAR to linker options needed together with LIBSVALUE. | ||
706 | dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, | ||
707 | dnl otherwise linking without libtool is assumed. | ||
708 | AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], | ||
709 | [ | ||
710 | AC_REQUIRE([AC_LIB_RPATH]) | ||
711 | AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) | ||
712 | $1= | ||
713 | if test "$enable_rpath" != no; then | ||
714 | if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then | ||
715 | dnl Use an explicit option to hardcode directories into the resulting | ||
716 | dnl binary. | ||
717 | rpathdirs= | ||
718 | next= | ||
719 | for opt in $2; do | ||
720 | if test -n "$next"; then | ||
721 | dir="$next" | ||
722 | dnl No need to hardcode the standard /usr/lib. | ||
723 | if test "X$dir" != "X/usr/$acl_libdirstem" \ | ||
724 | && test "X$dir" != "X/usr/$acl_libdirstem2"; then | ||
725 | rpathdirs="$rpathdirs $dir" | ||
726 | fi | ||
727 | next= | ||
728 | else | ||
729 | case $opt in | ||
730 | -L) next=yes ;; | ||
731 | -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` | ||
732 | dnl No need to hardcode the standard /usr/lib. | ||
733 | if test "X$dir" != "X/usr/$acl_libdirstem" \ | ||
734 | && test "X$dir" != "X/usr/$acl_libdirstem2"; then | ||
735 | rpathdirs="$rpathdirs $dir" | ||
736 | fi | ||
737 | next= ;; | ||
738 | *) next= ;; | ||
739 | esac | ||
740 | fi | ||
741 | done | ||
742 | if test "X$rpathdirs" != "X"; then | ||
743 | if test -n ""$3""; then | ||
744 | dnl libtool is used for linking. Use -R options. | ||
745 | for dir in $rpathdirs; do | ||
746 | $1="${$1}${$1:+ }-R$dir" | ||
747 | done | ||
748 | else | ||
749 | dnl The linker is used for linking directly. | ||
750 | if test -n "$acl_hardcode_libdir_separator"; then | ||
751 | dnl Weird platform: only the last -rpath option counts, the user | ||
752 | dnl must pass all path elements in one option. | ||
753 | alldirs= | ||
754 | for dir in $rpathdirs; do | ||
755 | alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" | ||
756 | done | ||
757 | acl_save_libdir="$libdir" | ||
758 | libdir="$alldirs" | ||
759 | eval flag=\"$acl_hardcode_libdir_flag_spec\" | ||
760 | libdir="$acl_save_libdir" | ||
761 | $1="$flag" | ||
762 | else | ||
763 | dnl The -rpath options are cumulative. | ||
764 | for dir in $rpathdirs; do | ||
765 | acl_save_libdir="$libdir" | ||
766 | libdir="$dir" | ||
767 | eval flag=\"$acl_hardcode_libdir_flag_spec\" | ||
768 | libdir="$acl_save_libdir" | ||
769 | $1="${$1}${$1:+ }$flag" | ||
770 | done | ||
771 | fi | ||
772 | fi | ||
773 | fi | ||
774 | fi | ||
775 | fi | ||
776 | AC_SUBST([$1]) | ||
777 | ]) | ||
diff --git a/gl/m4/lib-prefix.m4 b/gl/m4/lib-prefix.m4 deleted file mode 100644 index 60908e8f..00000000 --- a/gl/m4/lib-prefix.m4 +++ /dev/null | |||
@@ -1,224 +0,0 @@ | |||
1 | # lib-prefix.m4 serial 7 (gettext-0.18) | ||
2 | dnl Copyright (C) 2001-2005, 2008-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | dnl From Bruno Haible. | ||
8 | |||
9 | dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and | ||
10 | dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't | ||
11 | dnl require excessive bracketing. | ||
12 | ifdef([AC_HELP_STRING], | ||
13 | [AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], | ||
14 | [AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) | ||
15 | |||
16 | dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed | ||
17 | dnl to access previously installed libraries. The basic assumption is that | ||
18 | dnl a user will want packages to use other packages he previously installed | ||
19 | dnl with the same --prefix option. | ||
20 | dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate | ||
21 | dnl libraries, but is otherwise very convenient. | ||
22 | AC_DEFUN([AC_LIB_PREFIX], | ||
23 | [ | ||
24 | AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) | ||
25 | AC_REQUIRE([AC_PROG_CC]) | ||
26 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
27 | AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) | ||
28 | AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) | ||
29 | dnl By default, look in $includedir and $libdir. | ||
30 | use_additional=yes | ||
31 | AC_LIB_WITH_FINAL_PREFIX([ | ||
32 | eval additional_includedir=\"$includedir\" | ||
33 | eval additional_libdir=\"$libdir\" | ||
34 | ]) | ||
35 | AC_LIB_ARG_WITH([lib-prefix], | ||
36 | [ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib | ||
37 | --without-lib-prefix don't search for libraries in includedir and libdir], | ||
38 | [ | ||
39 | if test "X$withval" = "Xno"; then | ||
40 | use_additional=no | ||
41 | else | ||
42 | if test "X$withval" = "X"; then | ||
43 | AC_LIB_WITH_FINAL_PREFIX([ | ||
44 | eval additional_includedir=\"$includedir\" | ||
45 | eval additional_libdir=\"$libdir\" | ||
46 | ]) | ||
47 | else | ||
48 | additional_includedir="$withval/include" | ||
49 | additional_libdir="$withval/$acl_libdirstem" | ||
50 | fi | ||
51 | fi | ||
52 | ]) | ||
53 | if test $use_additional = yes; then | ||
54 | dnl Potentially add $additional_includedir to $CPPFLAGS. | ||
55 | dnl But don't add it | ||
56 | dnl 1. if it's the standard /usr/include, | ||
57 | dnl 2. if it's already present in $CPPFLAGS, | ||
58 | dnl 3. if it's /usr/local/include and we are using GCC on Linux, | ||
59 | dnl 4. if it doesn't exist as a directory. | ||
60 | if test "X$additional_includedir" != "X/usr/include"; then | ||
61 | haveit= | ||
62 | for x in $CPPFLAGS; do | ||
63 | AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) | ||
64 | if test "X$x" = "X-I$additional_includedir"; then | ||
65 | haveit=yes | ||
66 | break | ||
67 | fi | ||
68 | done | ||
69 | if test -z "$haveit"; then | ||
70 | if test "X$additional_includedir" = "X/usr/local/include"; then | ||
71 | if test -n "$GCC"; then | ||
72 | case $host_os in | ||
73 | linux* | gnu* | k*bsd*-gnu) haveit=yes;; | ||
74 | esac | ||
75 | fi | ||
76 | fi | ||
77 | if test -z "$haveit"; then | ||
78 | if test -d "$additional_includedir"; then | ||
79 | dnl Really add $additional_includedir to $CPPFLAGS. | ||
80 | CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" | ||
81 | fi | ||
82 | fi | ||
83 | fi | ||
84 | fi | ||
85 | dnl Potentially add $additional_libdir to $LDFLAGS. | ||
86 | dnl But don't add it | ||
87 | dnl 1. if it's the standard /usr/lib, | ||
88 | dnl 2. if it's already present in $LDFLAGS, | ||
89 | dnl 3. if it's /usr/local/lib and we are using GCC on Linux, | ||
90 | dnl 4. if it doesn't exist as a directory. | ||
91 | if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then | ||
92 | haveit= | ||
93 | for x in $LDFLAGS; do | ||
94 | AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) | ||
95 | if test "X$x" = "X-L$additional_libdir"; then | ||
96 | haveit=yes | ||
97 | break | ||
98 | fi | ||
99 | done | ||
100 | if test -z "$haveit"; then | ||
101 | if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then | ||
102 | if test -n "$GCC"; then | ||
103 | case $host_os in | ||
104 | linux*) haveit=yes;; | ||
105 | esac | ||
106 | fi | ||
107 | fi | ||
108 | if test -z "$haveit"; then | ||
109 | if test -d "$additional_libdir"; then | ||
110 | dnl Really add $additional_libdir to $LDFLAGS. | ||
111 | LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" | ||
112 | fi | ||
113 | fi | ||
114 | fi | ||
115 | fi | ||
116 | fi | ||
117 | ]) | ||
118 | |||
119 | dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, | ||
120 | dnl acl_final_exec_prefix, containing the values to which $prefix and | ||
121 | dnl $exec_prefix will expand at the end of the configure script. | ||
122 | AC_DEFUN([AC_LIB_PREPARE_PREFIX], | ||
123 | [ | ||
124 | dnl Unfortunately, prefix and exec_prefix get only finally determined | ||
125 | dnl at the end of configure. | ||
126 | if test "X$prefix" = "XNONE"; then | ||
127 | acl_final_prefix="$ac_default_prefix" | ||
128 | else | ||
129 | acl_final_prefix="$prefix" | ||
130 | fi | ||
131 | if test "X$exec_prefix" = "XNONE"; then | ||
132 | acl_final_exec_prefix='${prefix}' | ||
133 | else | ||
134 | acl_final_exec_prefix="$exec_prefix" | ||
135 | fi | ||
136 | acl_save_prefix="$prefix" | ||
137 | prefix="$acl_final_prefix" | ||
138 | eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" | ||
139 | prefix="$acl_save_prefix" | ||
140 | ]) | ||
141 | |||
142 | dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the | ||
143 | dnl variables prefix and exec_prefix bound to the values they will have | ||
144 | dnl at the end of the configure script. | ||
145 | AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], | ||
146 | [ | ||
147 | acl_save_prefix="$prefix" | ||
148 | prefix="$acl_final_prefix" | ||
149 | acl_save_exec_prefix="$exec_prefix" | ||
150 | exec_prefix="$acl_final_exec_prefix" | ||
151 | $1 | ||
152 | exec_prefix="$acl_save_exec_prefix" | ||
153 | prefix="$acl_save_prefix" | ||
154 | ]) | ||
155 | |||
156 | dnl AC_LIB_PREPARE_MULTILIB creates | ||
157 | dnl - a variable acl_libdirstem, containing the basename of the libdir, either | ||
158 | dnl "lib" or "lib64" or "lib/64", | ||
159 | dnl - a variable acl_libdirstem2, as a secondary possible value for | ||
160 | dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or | ||
161 | dnl "lib/amd64". | ||
162 | AC_DEFUN([AC_LIB_PREPARE_MULTILIB], | ||
163 | [ | ||
164 | dnl There is no formal standard regarding lib and lib64. | ||
165 | dnl On glibc systems, the current practice is that on a system supporting | ||
166 | dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under | ||
167 | dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine | ||
168 | dnl the compiler's default mode by looking at the compiler's library search | ||
169 | dnl path. If at least one of its elements ends in /lib64 or points to a | ||
170 | dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. | ||
171 | dnl Otherwise we use the default, namely "lib". | ||
172 | dnl On Solaris systems, the current practice is that on a system supporting | ||
173 | dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under | ||
174 | dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or | ||
175 | dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. | ||
176 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
177 | acl_libdirstem=lib | ||
178 | acl_libdirstem2= | ||
179 | case "$host_os" in | ||
180 | solaris*) | ||
181 | dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment | ||
182 | dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>. | ||
183 | dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." | ||
184 | dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the | ||
185 | dnl symlink is missing, so we set acl_libdirstem2 too. | ||
186 | AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], | ||
187 | [AC_EGREP_CPP([sixtyfour bits], [ | ||
188 | #ifdef _LP64 | ||
189 | sixtyfour bits | ||
190 | #endif | ||
191 | ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no]) | ||
192 | ]) | ||
193 | if test $gl_cv_solaris_64bit = yes; then | ||
194 | acl_libdirstem=lib/64 | ||
195 | case "$host_cpu" in | ||
196 | sparc*) acl_libdirstem2=lib/sparcv9 ;; | ||
197 | i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; | ||
198 | esac | ||
199 | fi | ||
200 | ;; | ||
201 | *) | ||
202 | searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` | ||
203 | if test -n "$searchpath"; then | ||
204 | acl_save_IFS="${IFS= }"; IFS=":" | ||
205 | for searchdir in $searchpath; do | ||
206 | if test -d "$searchdir"; then | ||
207 | case "$searchdir" in | ||
208 | */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; | ||
209 | */../ | */.. ) | ||
210 | # Better ignore directories of this form. They are misleading. | ||
211 | ;; | ||
212 | *) searchdir=`cd "$searchdir" && pwd` | ||
213 | case "$searchdir" in | ||
214 | */lib64 ) acl_libdirstem=lib64 ;; | ||
215 | esac ;; | ||
216 | esac | ||
217 | fi | ||
218 | done | ||
219 | IFS="$acl_save_IFS" | ||
220 | fi | ||
221 | ;; | ||
222 | esac | ||
223 | test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" | ||
224 | ]) | ||
diff --git a/gl/m4/limits-h.m4 b/gl/m4/limits-h.m4 new file mode 100644 index 00000000..5088fa16 --- /dev/null +++ b/gl/m4/limits-h.m4 | |||
@@ -0,0 +1,41 @@ | |||
1 | dnl Check whether limits.h has needed features. | ||
2 | |||
3 | dnl Copyright 2016-2023 Free Software Foundation, Inc. | ||
4 | dnl This file is free software; the Free Software Foundation | ||
5 | dnl gives unlimited permission to copy and/or distribute it, | ||
6 | dnl with or without modifications, as long as this notice is preserved. | ||
7 | |||
8 | dnl From Paul Eggert. | ||
9 | |||
10 | AC_DEFUN_ONCE([gl_LIMITS_H], | ||
11 | [ | ||
12 | gl_CHECK_NEXT_HEADERS([limits.h]) | ||
13 | |||
14 | AC_CACHE_CHECK([whether limits.h has WORD_BIT, BOOL_WIDTH etc.], | ||
15 | [gl_cv_header_limits_width], | ||
16 | [AC_COMPILE_IFELSE( | ||
17 | [AC_LANG_PROGRAM( | ||
18 | [[#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ | ||
19 | #define __STDC_WANT_IEC_60559_BFP_EXT__ 1 | ||
20 | #endif | ||
21 | #include <limits.h> | ||
22 | long long llm = LLONG_MAX; | ||
23 | int wb = WORD_BIT; | ||
24 | int ullw = ULLONG_WIDTH; | ||
25 | int bw = BOOL_WIDTH; | ||
26 | ]])], | ||
27 | [gl_cv_header_limits_width=yes], | ||
28 | [gl_cv_header_limits_width=no])]) | ||
29 | if test "$gl_cv_header_limits_width" = yes; then | ||
30 | GL_GENERATE_LIMITS_H=false | ||
31 | else | ||
32 | GL_GENERATE_LIMITS_H=true | ||
33 | fi | ||
34 | ]) | ||
35 | |||
36 | dnl Unconditionally enables the replacement of <limits.h>. | ||
37 | AC_DEFUN([gl_REPLACE_LIMITS_H], | ||
38 | [ | ||
39 | AC_REQUIRE([gl_LIMITS_H]) | ||
40 | GL_GENERATE_LIMITS_H=true | ||
41 | ]) | ||
diff --git a/gl/m4/localcharset.m4 b/gl/m4/localcharset.m4 index 2e93e581..15b6b2a5 100644 --- a/gl/m4/localcharset.m4 +++ b/gl/m4/localcharset.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # localcharset.m4 serial 7 | 1 | # localcharset.m4 serial 8 |
2 | dnl Copyright (C) 2002, 2004, 2006, 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2002, 2004, 2006, 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -8,10 +8,4 @@ AC_DEFUN([gl_LOCALCHARSET], | |||
8 | [ | 8 | [ |
9 | dnl Prerequisites of lib/localcharset.c. | 9 | dnl Prerequisites of lib/localcharset.c. |
10 | AC_REQUIRE([AM_LANGINFO_CODESET]) | 10 | AC_REQUIRE([AM_LANGINFO_CODESET]) |
11 | AC_REQUIRE([gl_FCNTL_O_FLAGS]) | ||
12 | AC_CHECK_DECLS_ONCE([getc_unlocked]) | ||
13 | |||
14 | dnl Prerequisites of the lib/Makefile.am snippet. | ||
15 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
16 | AC_REQUIRE([gl_GLIBC21]) | ||
17 | ]) | 11 | ]) |
diff --git a/gl/m4/locale-fr.m4 b/gl/m4/locale-fr.m4 index ef199e39..8c41fadf 100644 --- a/gl/m4/locale-fr.m4 +++ b/gl/m4/locale-fr.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # locale-fr.m4 serial 17 | 1 | # locale-fr.m4 serial 20 |
2 | dnl Copyright (C) 2003, 2005-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2003, 2005-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -12,8 +12,7 @@ AC_DEFUN([gt_LOCALE_FR], | |||
12 | AC_REQUIRE([AC_CANONICAL_HOST]) | 12 | AC_REQUIRE([AC_CANONICAL_HOST]) |
13 | AC_REQUIRE([AM_LANGINFO_CODESET]) | 13 | AC_REQUIRE([AM_LANGINFO_CODESET]) |
14 | AC_CACHE_CHECK([for a traditional french locale], [gt_cv_locale_fr], [ | 14 | AC_CACHE_CHECK([for a traditional french locale], [gt_cv_locale_fr], [ |
15 | AC_LANG_CONFTEST([AC_LANG_SOURCE([ | 15 | AC_LANG_CONFTEST([AC_LANG_SOURCE([[ |
16 | changequote(,)dnl | ||
17 | #include <locale.h> | 16 | #include <locale.h> |
18 | #include <time.h> | 17 | #include <time.h> |
19 | #if HAVE_LANGINFO_CODESET | 18 | #if HAVE_LANGINFO_CODESET |
@@ -24,8 +23,14 @@ changequote(,)dnl | |||
24 | struct tm t; | 23 | struct tm t; |
25 | char buf[16]; | 24 | char buf[16]; |
26 | int main () { | 25 | int main () { |
26 | /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl | ||
27 | imitates locale dependent behaviour by looking at the environment | ||
28 | variables, and all locales use the UTF-8 encoding. */ | ||
29 | #if defined __BEOS__ || defined __HAIKU__ | ||
30 | return 1; | ||
31 | #else | ||
27 | /* Check whether the given locale name is recognized by the system. */ | 32 | /* Check whether the given locale name is recognized by the system. */ |
28 | #if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ | 33 | # if defined _WIN32 && !defined __CYGWIN__ |
29 | /* On native Windows, setlocale(category, "") looks at the system settings, | 34 | /* On native Windows, setlocale(category, "") looks at the system settings, |
30 | not at the environment variables. Also, when an encoding suffix such | 35 | not at the environment variables. Also, when an encoding suffix such |
31 | as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE | 36 | as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE |
@@ -33,9 +38,9 @@ int main () { | |||
33 | if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL | 38 | if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL |
34 | || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0) | 39 | || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0) |
35 | return 1; | 40 | return 1; |
36 | #else | 41 | # else |
37 | if (setlocale (LC_ALL, "") == NULL) return 1; | 42 | if (setlocale (LC_ALL, "") == NULL) return 1; |
38 | #endif | 43 | # endif |
39 | /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". | 44 | /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". |
40 | On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) | 45 | On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) |
41 | is empty, and the behaviour of Tcl 8.4 in this locale is not useful. | 46 | is empty, and the behaviour of Tcl 8.4 in this locale is not useful. |
@@ -44,35 +49,35 @@ int main () { | |||
44 | some unit tests fail. | 49 | some unit tests fail. |
45 | On MirBSD 10, when an unsupported locale is specified, setlocale() | 50 | On MirBSD 10, when an unsupported locale is specified, setlocale() |
46 | succeeds but then nl_langinfo(CODESET) is "UTF-8". */ | 51 | succeeds but then nl_langinfo(CODESET) is "UTF-8". */ |
47 | #if HAVE_LANGINFO_CODESET | 52 | # if HAVE_LANGINFO_CODESET |
48 | { | 53 | { |
49 | const char *cs = nl_langinfo (CODESET); | 54 | const char *cs = nl_langinfo (CODESET); |
50 | if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0 | 55 | if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0 |
51 | || strcmp (cs, "UTF-8") == 0) | 56 | || strcmp (cs, "UTF-8") == 0) |
52 | return 1; | 57 | return 1; |
53 | } | 58 | } |
54 | #endif | 59 | # endif |
55 | #ifdef __CYGWIN__ | 60 | # ifdef __CYGWIN__ |
56 | /* On Cygwin, avoid locale names without encoding suffix, because the | 61 | /* On Cygwin, avoid locale names without encoding suffix, because the |
57 | locale_charset() function relies on the encoding suffix. Note that | 62 | locale_charset() function relies on the encoding suffix. Note that |
58 | LC_ALL is set on the command line. */ | 63 | LC_ALL is set on the command line. */ |
59 | if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; | 64 | if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; |
60 | #endif | 65 | # endif |
61 | /* Check whether in the abbreviation of the second month, the second | 66 | /* Check whether in the abbreviation of the second month, the second |
62 | character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only | 67 | character (should be U+00E9: LATIN SMALL LETTER E WITH ACUTE) is only |
63 | one byte long. This excludes the UTF-8 encoding. */ | 68 | one byte long. This excludes the UTF-8 encoding. */ |
64 | t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4; | 69 | t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4; |
65 | if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1; | 70 | if (strftime (buf, sizeof (buf), "%b", &t) < 3 || buf[2] != 'v') return 1; |
66 | #if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy. */ | 71 | # if !defined __BIONIC__ /* Bionic libc's 'struct lconv' is just a dummy. */ |
67 | /* Check whether the decimal separator is a comma. | 72 | /* Check whether the decimal separator is a comma. |
68 | On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point | 73 | On NetBSD 3.0 in the fr_FR.ISO8859-1 locale, localeconv()->decimal_point |
69 | are nl_langinfo(RADIXCHAR) are both ".". */ | 74 | are nl_langinfo(RADIXCHAR) are both ".". */ |
70 | if (localeconv () ->decimal_point[0] != ',') return 1; | 75 | if (localeconv () ->decimal_point[0] != ',') return 1; |
71 | #endif | 76 | # endif |
72 | return 0; | 77 | return 0; |
78 | #endif | ||
73 | } | 79 | } |
74 | changequote([,])dnl | 80 | ]])]) |
75 | ])]) | ||
76 | if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then | 81 | if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then |
77 | case "$host_os" in | 82 | case "$host_os" in |
78 | # Handle native Windows specially, because there setlocale() interprets | 83 | # Handle native Windows specially, because there setlocale() interprets |
@@ -136,8 +141,7 @@ AC_DEFUN([gt_LOCALE_FR_UTF8], | |||
136 | [ | 141 | [ |
137 | AC_REQUIRE([AM_LANGINFO_CODESET]) | 142 | AC_REQUIRE([AM_LANGINFO_CODESET]) |
138 | AC_CACHE_CHECK([for a french Unicode locale], [gt_cv_locale_fr_utf8], [ | 143 | AC_CACHE_CHECK([for a french Unicode locale], [gt_cv_locale_fr_utf8], [ |
139 | AC_LANG_CONFTEST([AC_LANG_SOURCE([ | 144 | AC_LANG_CONFTEST([AC_LANG_SOURCE([[ |
140 | changequote(,)dnl | ||
141 | #include <locale.h> | 145 | #include <locale.h> |
142 | #include <time.h> | 146 | #include <time.h> |
143 | #if HAVE_LANGINFO_CODESET | 147 | #if HAVE_LANGINFO_CODESET |
@@ -153,7 +157,7 @@ int main () { | |||
153 | variables, and all locales use the UTF-8 encoding. */ | 157 | variables, and all locales use the UTF-8 encoding. */ |
154 | #if !(defined __BEOS__ || defined __HAIKU__) | 158 | #if !(defined __BEOS__ || defined __HAIKU__) |
155 | /* Check whether the given locale name is recognized by the system. */ | 159 | /* Check whether the given locale name is recognized by the system. */ |
156 | # if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ | 160 | # if defined _WIN32 && !defined __CYGWIN__ |
157 | /* On native Windows, setlocale(category, "") looks at the system settings, | 161 | /* On native Windows, setlocale(category, "") looks at the system settings, |
158 | not at the environment variables. Also, when an encoding suffix such | 162 | not at the environment variables. Also, when an encoding suffix such |
159 | as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE | 163 | as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE |
@@ -199,8 +203,7 @@ int main () { | |||
199 | #endif | 203 | #endif |
200 | return 0; | 204 | return 0; |
201 | } | 205 | } |
202 | changequote([,])dnl | 206 | ]])]) |
203 | ])]) | ||
204 | if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then | 207 | if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then |
205 | case "$host_os" in | 208 | case "$host_os" in |
206 | # Handle native Windows specially, because there setlocale() interprets | 209 | # Handle native Windows specially, because there setlocale() interprets |
diff --git a/gl/m4/locale-ja.m4 b/gl/m4/locale-ja.m4 index 132a3e77..25901730 100644 --- a/gl/m4/locale-ja.m4 +++ b/gl/m4/locale-ja.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # locale-ja.m4 serial 12 | 1 | # locale-ja.m4 serial 15 |
2 | dnl Copyright (C) 2003, 2005-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2003, 2005-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -12,8 +12,7 @@ AC_DEFUN([gt_LOCALE_JA], | |||
12 | AC_REQUIRE([AC_CANONICAL_HOST]) | 12 | AC_REQUIRE([AC_CANONICAL_HOST]) |
13 | AC_REQUIRE([AM_LANGINFO_CODESET]) | 13 | AC_REQUIRE([AM_LANGINFO_CODESET]) |
14 | AC_CACHE_CHECK([for a traditional japanese locale], [gt_cv_locale_ja], [ | 14 | AC_CACHE_CHECK([for a traditional japanese locale], [gt_cv_locale_ja], [ |
15 | AC_LANG_CONFTEST([AC_LANG_SOURCE([ | 15 | AC_LANG_CONFTEST([AC_LANG_SOURCE([[ |
16 | changequote(,)dnl | ||
17 | #include <locale.h> | 16 | #include <locale.h> |
18 | #include <time.h> | 17 | #include <time.h> |
19 | #if HAVE_LANGINFO_CODESET | 18 | #if HAVE_LANGINFO_CODESET |
@@ -25,9 +24,14 @@ struct tm t; | |||
25 | char buf[16]; | 24 | char buf[16]; |
26 | int main () | 25 | int main () |
27 | { | 26 | { |
28 | const char *p; | 27 | /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl |
28 | imitates locale dependent behaviour by looking at the environment | ||
29 | variables, and all locales use the UTF-8 encoding. */ | ||
30 | #if defined __BEOS__ || defined __HAIKU__ | ||
31 | return 1; | ||
32 | #else | ||
29 | /* Check whether the given locale name is recognized by the system. */ | 33 | /* Check whether the given locale name is recognized by the system. */ |
30 | #if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ | 34 | # if defined _WIN32 && !defined __CYGWIN__ |
31 | /* On native Windows, setlocale(category, "") looks at the system settings, | 35 | /* On native Windows, setlocale(category, "") looks at the system settings, |
32 | not at the environment variables. Also, when an encoding suffix such | 36 | not at the environment variables. Also, when an encoding suffix such |
33 | as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE | 37 | as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE |
@@ -35,9 +39,9 @@ int main () | |||
35 | if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL | 39 | if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL |
36 | || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0) | 40 | || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0) |
37 | return 1; | 41 | return 1; |
38 | #else | 42 | # else |
39 | if (setlocale (LC_ALL, "") == NULL) return 1; | 43 | if (setlocale (LC_ALL, "") == NULL) return 1; |
40 | #endif | 44 | # endif |
41 | /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". | 45 | /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". |
42 | On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) | 46 | On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) |
43 | is empty, and the behaviour of Tcl 8.4 in this locale is not useful. | 47 | is empty, and the behaviour of Tcl 8.4 in this locale is not useful. |
@@ -46,35 +50,38 @@ int main () | |||
46 | some unit tests fail. | 50 | some unit tests fail. |
47 | On MirBSD 10, when an unsupported locale is specified, setlocale() | 51 | On MirBSD 10, when an unsupported locale is specified, setlocale() |
48 | succeeds but then nl_langinfo(CODESET) is "UTF-8". */ | 52 | succeeds but then nl_langinfo(CODESET) is "UTF-8". */ |
49 | #if HAVE_LANGINFO_CODESET | 53 | # if HAVE_LANGINFO_CODESET |
50 | { | 54 | { |
51 | const char *cs = nl_langinfo (CODESET); | 55 | const char *cs = nl_langinfo (CODESET); |
52 | if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0 | 56 | if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0 |
53 | || strcmp (cs, "UTF-8") == 0) | 57 | || strcmp (cs, "UTF-8") == 0) |
54 | return 1; | 58 | return 1; |
55 | } | 59 | } |
56 | #endif | 60 | # endif |
57 | #ifdef __CYGWIN__ | 61 | # ifdef __CYGWIN__ |
58 | /* On Cygwin, avoid locale names without encoding suffix, because the | 62 | /* On Cygwin, avoid locale names without encoding suffix, because the |
59 | locale_charset() function relies on the encoding suffix. Note that | 63 | locale_charset() function relies on the encoding suffix. Note that |
60 | LC_ALL is set on the command line. */ | 64 | LC_ALL is set on the command line. */ |
61 | if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; | 65 | if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; |
62 | #endif | 66 | # endif |
63 | /* Check whether MB_CUR_MAX is > 1. This excludes the dysfunctional locales | 67 | /* Check whether MB_CUR_MAX is > 1. This excludes the dysfunctional locales |
64 | on Cygwin 1.5.x. */ | 68 | on Cygwin 1.5.x. */ |
65 | if (MB_CUR_MAX == 1) | 69 | if (MB_CUR_MAX == 1) |
66 | return 1; | 70 | return 1; |
67 | /* Check whether in a month name, no byte in the range 0x80..0x9F occurs. | 71 | /* Check whether in a month name, no byte in the range 0x80..0x9F occurs. |
68 | This excludes the UTF-8 encoding (except on MirBSD). */ | 72 | This excludes the UTF-8 encoding (except on MirBSD). */ |
69 | t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4; | 73 | { |
70 | if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1; | 74 | const char *p; |
71 | for (p = buf; *p != '\0'; p++) | 75 | t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4; |
72 | if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0) | 76 | if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1; |
73 | return 1; | 77 | for (p = buf; *p != '\0'; p++) |
78 | if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0) | ||
79 | return 1; | ||
80 | } | ||
74 | return 0; | 81 | return 0; |
82 | #endif | ||
75 | } | 83 | } |
76 | changequote([,])dnl | 84 | ]])]) |
77 | ])]) | ||
78 | if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then | 85 | if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then |
79 | case "$host_os" in | 86 | case "$host_os" in |
80 | # Handle native Windows specially, because there setlocale() interprets | 87 | # Handle native Windows specially, because there setlocale() interprets |
diff --git a/gl/m4/locale-zh.m4 b/gl/m4/locale-zh.m4 index 4eed73f4..b9f9eef7 100644 --- a/gl/m4/locale-zh.m4 +++ b/gl/m4/locale-zh.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # locale-zh.m4 serial 12 | 1 | # locale-zh.m4 serial 15 |
2 | dnl Copyright (C) 2003, 2005-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2003, 2005-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -12,8 +12,7 @@ AC_DEFUN([gt_LOCALE_ZH_CN], | |||
12 | AC_REQUIRE([AC_CANONICAL_HOST]) | 12 | AC_REQUIRE([AC_CANONICAL_HOST]) |
13 | AC_REQUIRE([AM_LANGINFO_CODESET]) | 13 | AC_REQUIRE([AM_LANGINFO_CODESET]) |
14 | AC_CACHE_CHECK([for a transitional chinese locale], [gt_cv_locale_zh_CN], [ | 14 | AC_CACHE_CHECK([for a transitional chinese locale], [gt_cv_locale_zh_CN], [ |
15 | AC_LANG_CONFTEST([AC_LANG_SOURCE([ | 15 | AC_LANG_CONFTEST([AC_LANG_SOURCE([[ |
16 | changequote(,)dnl | ||
17 | #include <locale.h> | 16 | #include <locale.h> |
18 | #include <stdlib.h> | 17 | #include <stdlib.h> |
19 | #include <time.h> | 18 | #include <time.h> |
@@ -26,9 +25,14 @@ struct tm t; | |||
26 | char buf[16]; | 25 | char buf[16]; |
27 | int main () | 26 | int main () |
28 | { | 27 | { |
29 | const char *p; | 28 | /* On BeOS and Haiku, locales are not implemented in libc. Rather, libintl |
29 | imitates locale dependent behaviour by looking at the environment | ||
30 | variables, and all locales use the UTF-8 encoding. */ | ||
31 | #if defined __BEOS__ || defined __HAIKU__ | ||
32 | return 1; | ||
33 | #else | ||
30 | /* Check whether the given locale name is recognized by the system. */ | 34 | /* Check whether the given locale name is recognized by the system. */ |
31 | #if (defined _WIN32 || defined __WIN32__) && !defined __CYGWIN__ | 35 | # if defined _WIN32 && !defined __CYGWIN__ |
32 | /* On native Windows, setlocale(category, "") looks at the system settings, | 36 | /* On native Windows, setlocale(category, "") looks at the system settings, |
33 | not at the environment variables. Also, when an encoding suffix such | 37 | not at the environment variables. Also, when an encoding suffix such |
34 | as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE | 38 | as ".65001" or ".54936" is specified, it succeeds but sets the LC_CTYPE |
@@ -36,9 +40,9 @@ int main () | |||
36 | if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL | 40 | if (setlocale (LC_ALL, getenv ("LC_ALL")) == NULL |
37 | || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0) | 41 | || strcmp (setlocale (LC_CTYPE, NULL), "C") == 0) |
38 | return 1; | 42 | return 1; |
39 | #else | 43 | # else |
40 | if (setlocale (LC_ALL, "") == NULL) return 1; | 44 | if (setlocale (LC_ALL, "") == NULL) return 1; |
41 | #endif | 45 | # endif |
42 | /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". | 46 | /* Check whether nl_langinfo(CODESET) is nonempty and not "ASCII" or "646". |
43 | On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) | 47 | On Mac OS X 10.3.5 (Darwin 7.5) in the fr_FR locale, nl_langinfo(CODESET) |
44 | is empty, and the behaviour of Tcl 8.4 in this locale is not useful. | 48 | is empty, and the behaviour of Tcl 8.4 in this locale is not useful. |
@@ -47,35 +51,38 @@ int main () | |||
47 | some unit tests fail. | 51 | some unit tests fail. |
48 | On MirBSD 10, when an unsupported locale is specified, setlocale() | 52 | On MirBSD 10, when an unsupported locale is specified, setlocale() |
49 | succeeds but then nl_langinfo(CODESET) is "UTF-8". */ | 53 | succeeds but then nl_langinfo(CODESET) is "UTF-8". */ |
50 | #if HAVE_LANGINFO_CODESET | 54 | # if HAVE_LANGINFO_CODESET |
51 | { | 55 | { |
52 | const char *cs = nl_langinfo (CODESET); | 56 | const char *cs = nl_langinfo (CODESET); |
53 | if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0 | 57 | if (cs[0] == '\0' || strcmp (cs, "ASCII") == 0 || strcmp (cs, "646") == 0 |
54 | || strcmp (cs, "UTF-8") == 0) | 58 | || strcmp (cs, "UTF-8") == 0) |
55 | return 1; | 59 | return 1; |
56 | } | 60 | } |
57 | #endif | 61 | # endif |
58 | #ifdef __CYGWIN__ | 62 | # ifdef __CYGWIN__ |
59 | /* On Cygwin, avoid locale names without encoding suffix, because the | 63 | /* On Cygwin, avoid locale names without encoding suffix, because the |
60 | locale_charset() function relies on the encoding suffix. Note that | 64 | locale_charset() function relies on the encoding suffix. Note that |
61 | LC_ALL is set on the command line. */ | 65 | LC_ALL is set on the command line. */ |
62 | if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; | 66 | if (strchr (getenv ("LC_ALL"), '.') == NULL) return 1; |
63 | #endif | 67 | # endif |
64 | /* Check whether in a month name, no byte in the range 0x80..0x9F occurs. | 68 | /* Check whether in a month name, no byte in the range 0x80..0x9F occurs. |
65 | This excludes the UTF-8 encoding (except on MirBSD). */ | 69 | This excludes the UTF-8 encoding (except on MirBSD). */ |
66 | t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4; | 70 | { |
67 | if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1; | 71 | const char *p; |
68 | for (p = buf; *p != '\0'; p++) | 72 | t.tm_year = 1975 - 1900; t.tm_mon = 2 - 1; t.tm_mday = 4; |
69 | if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0) | 73 | if (strftime (buf, sizeof (buf), "%B", &t) < 2) return 1; |
70 | return 1; | 74 | for (p = buf; *p != '\0'; p++) |
75 | if ((unsigned char) *p >= 0x80 && (unsigned char) *p < 0xa0) | ||
76 | return 1; | ||
77 | } | ||
71 | /* Check whether a typical GB18030 multibyte sequence is recognized as a | 78 | /* Check whether a typical GB18030 multibyte sequence is recognized as a |
72 | single wide character. This excludes the GB2312 and GBK encodings. */ | 79 | single wide character. This excludes the GB2312 and GBK encodings. */ |
73 | if (mblen ("\203\062\332\066", 5) != 4) | 80 | if (mblen ("\203\062\332\066", 5) != 4) |
74 | return 1; | 81 | return 1; |
75 | return 0; | 82 | return 0; |
83 | #endif | ||
76 | } | 84 | } |
77 | changequote([,])dnl | 85 | ]])]) |
78 | ])]) | ||
79 | if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then | 86 | if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then |
80 | case "$host_os" in | 87 | case "$host_os" in |
81 | # Handle native Windows specially, because there setlocale() interprets | 88 | # Handle native Windows specially, because there setlocale() interprets |
diff --git a/gl/m4/locale_h.m4 b/gl/m4/locale_h.m4 index 8bd12e80..a33a0a46 100644 --- a/gl/m4/locale_h.m4 +++ b/gl/m4/locale_h.m4 | |||
@@ -1,13 +1,13 @@ | |||
1 | # locale_h.m4 serial 19 | 1 | # locale_h.m4 serial 28 |
2 | dnl Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | AC_DEFUN([gl_LOCALE_H], | 7 | AC_DEFUN_ONCE([gl_LOCALE_H], |
8 | [ | 8 | [ |
9 | dnl Use AC_REQUIRE here, so that the default behavior below is expanded | 9 | dnl Ensure to expand the default settings once only, before all statements |
10 | dnl once only, before all statements that occur in other macros. | 10 | dnl that occur in other macros. |
11 | AC_REQUIRE([gl_LOCALE_H_DEFAULTS]) | 11 | AC_REQUIRE([gl_LOCALE_H_DEFAULTS]) |
12 | 12 | ||
13 | dnl Persuade glibc <locale.h> to define locale_t and the int_p_*, int_n_* | 13 | dnl Persuade glibc <locale.h> to define locale_t and the int_p_*, int_n_* |
@@ -17,7 +17,9 @@ AC_DEFUN([gl_LOCALE_H], | |||
17 | dnl If <stddef.h> is replaced, then <locale.h> must also be replaced. | 17 | dnl If <stddef.h> is replaced, then <locale.h> must also be replaced. |
18 | AC_REQUIRE([gl_STDDEF_H]) | 18 | AC_REQUIRE([gl_STDDEF_H]) |
19 | 19 | ||
20 | dnl Solaris 11 2011-11 defines the int_p_*, int_n_* members of 'struct lconv' | 20 | AC_REQUIRE([gl_LOCALE_T]) |
21 | |||
22 | dnl Solaris 11.0 defines the int_p_*, int_n_* members of 'struct lconv' | ||
21 | dnl only if _LCONV_C99 is defined. | 23 | dnl only if _LCONV_C99 is defined. |
22 | AC_REQUIRE([AC_CANONICAL_HOST]) | 24 | AC_REQUIRE([AC_CANONICAL_HOST]) |
23 | case "$host_os" in | 25 | case "$host_os" in |
@@ -37,34 +39,6 @@ AC_DEFUN([gl_LOCALE_H], | |||
37 | [gl_cv_header_locale_h_posix2001=yes], | 39 | [gl_cv_header_locale_h_posix2001=yes], |
38 | [gl_cv_header_locale_h_posix2001=no])]) | 40 | [gl_cv_header_locale_h_posix2001=no])]) |
39 | 41 | ||
40 | dnl Check for <xlocale.h>. | ||
41 | AC_CHECK_HEADERS_ONCE([xlocale.h]) | ||
42 | if test $ac_cv_header_xlocale_h = yes; then | ||
43 | HAVE_XLOCALE_H=1 | ||
44 | dnl Check whether use of locale_t requires inclusion of <xlocale.h>, | ||
45 | dnl e.g. on Mac OS X 10.5. If <locale.h> does not define locale_t by | ||
46 | dnl itself, we assume that <xlocale.h> will do so. | ||
47 | AC_CACHE_CHECK([whether locale.h defines locale_t], | ||
48 | [gl_cv_header_locale_has_locale_t], | ||
49 | [AC_COMPILE_IFELSE( | ||
50 | [AC_LANG_PROGRAM( | ||
51 | [[#include <locale.h> | ||
52 | locale_t x;]], | ||
53 | [[]])], | ||
54 | [gl_cv_header_locale_has_locale_t=yes], | ||
55 | [gl_cv_header_locale_has_locale_t=no]) | ||
56 | ]) | ||
57 | if test $gl_cv_header_locale_has_locale_t = yes; then | ||
58 | gl_cv_header_locale_h_needs_xlocale_h=no | ||
59 | else | ||
60 | gl_cv_header_locale_h_needs_xlocale_h=yes | ||
61 | fi | ||
62 | else | ||
63 | HAVE_XLOCALE_H=0 | ||
64 | gl_cv_header_locale_h_needs_xlocale_h=no | ||
65 | fi | ||
66 | AC_SUBST([HAVE_XLOCALE_H]) | ||
67 | |||
68 | dnl Check whether 'struct lconv' is complete. | 42 | dnl Check whether 'struct lconv' is complete. |
69 | dnl Bionic libc's 'struct lconv' is just a dummy. | 43 | dnl Bionic libc's 'struct lconv' is just a dummy. |
70 | dnl On OpenBSD 4.9, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.x, | 44 | dnl On OpenBSD 4.9, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 9, Cygwin 1.5.x, |
@@ -82,7 +56,20 @@ AC_DEFUN([gl_LOCALE_H], | |||
82 | [gl_cv_sys_struct_lconv_ok=no]) | 56 | [gl_cv_sys_struct_lconv_ok=no]) |
83 | ]) | 57 | ]) |
84 | if test $gl_cv_sys_struct_lconv_ok = no; then | 58 | if test $gl_cv_sys_struct_lconv_ok = no; then |
85 | REPLACE_STRUCT_LCONV=1 | 59 | dnl On native Windows with MSVC, merely define these member names as macros. |
60 | dnl This avoids trouble in C++ mode. | ||
61 | case "$host_os" in | ||
62 | mingw*) | ||
63 | AC_EGREP_CPP([Special], [ | ||
64 | #ifdef _MSC_VER | ||
65 | Special | ||
66 | #endif | ||
67 | ], | ||
68 | [], | ||
69 | [REPLACE_STRUCT_LCONV=1]) | ||
70 | ;; | ||
71 | *) REPLACE_STRUCT_LCONV=1 ;; | ||
72 | esac | ||
86 | fi | 73 | fi |
87 | 74 | ||
88 | dnl <locale.h> is always overridden, because of GNULIB_POSIXCHECK. | 75 | dnl <locale.h> is always overridden, because of GNULIB_POSIXCHECK. |
@@ -96,27 +83,92 @@ AC_DEFUN([gl_LOCALE_H], | |||
96 | # include <xlocale.h> | 83 | # include <xlocale.h> |
97 | #endif | 84 | #endif |
98 | ]], | 85 | ]], |
99 | [setlocale duplocale]) | 86 | [setlocale newlocale duplocale freelocale]) |
87 | ]) | ||
88 | |||
89 | dnl Checks to determine whether the system has the locale_t type, | ||
90 | dnl and how to obtain it. | ||
91 | AC_DEFUN([gl_LOCALE_T], | ||
92 | [ | ||
93 | dnl Persuade glibc and Solaris <locale.h> to define locale_t. | ||
94 | AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) | ||
95 | |||
96 | dnl Check whether use of locale_t requires inclusion of <xlocale.h>, | ||
97 | dnl e.g. on Mac OS X 10.5. If <locale.h> does not define locale_t by | ||
98 | dnl itself, we assume that <xlocale.h> will do so. | ||
99 | AC_CACHE_CHECK([whether locale.h defines locale_t], | ||
100 | [gl_cv_header_locale_has_locale_t], | ||
101 | [AC_COMPILE_IFELSE( | ||
102 | [AC_LANG_PROGRAM( | ||
103 | [[#include <locale.h> | ||
104 | locale_t x;]], | ||
105 | [[]])], | ||
106 | [gl_cv_header_locale_has_locale_t=yes], | ||
107 | [gl_cv_header_locale_has_locale_t=no]) | ||
108 | ]) | ||
109 | |||
110 | dnl Check for <xlocale.h>. | ||
111 | AC_CHECK_HEADERS_ONCE([xlocale.h]) | ||
112 | if test $ac_cv_header_xlocale_h = yes; then | ||
113 | HAVE_XLOCALE_H=1 | ||
114 | if test $gl_cv_header_locale_has_locale_t = yes; then | ||
115 | gl_cv_header_locale_h_needs_xlocale_h=no | ||
116 | else | ||
117 | gl_cv_header_locale_h_needs_xlocale_h=yes | ||
118 | fi | ||
119 | HAVE_LOCALE_T=1 | ||
120 | else | ||
121 | HAVE_XLOCALE_H=0 | ||
122 | gl_cv_header_locale_h_needs_xlocale_h=no | ||
123 | if test $gl_cv_header_locale_has_locale_t = yes; then | ||
124 | HAVE_LOCALE_T=1 | ||
125 | else | ||
126 | HAVE_LOCALE_T=0 | ||
127 | fi | ||
128 | fi | ||
129 | AC_SUBST([HAVE_XLOCALE_H]) | ||
100 | ]) | 130 | ]) |
101 | 131 | ||
132 | # gl_LOCALE_MODULE_INDICATOR([modulename]) | ||
133 | # sets the shell variable that indicates the presence of the given module | ||
134 | # to a C preprocessor expression that will evaluate to 1. | ||
135 | # This macro invocation must not occur in macros that are AC_REQUIREd. | ||
102 | AC_DEFUN([gl_LOCALE_MODULE_INDICATOR], | 136 | AC_DEFUN([gl_LOCALE_MODULE_INDICATOR], |
103 | [ | 137 | [ |
104 | dnl Use AC_REQUIRE here, so that the default settings are expanded once only. | 138 | dnl Ensure to expand the default settings once only. |
105 | AC_REQUIRE([gl_LOCALE_H_DEFAULTS]) | 139 | gl_LOCALE_H_REQUIRE_DEFAULTS |
106 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) | 140 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) |
107 | dnl Define it also as a C macro, for the benefit of the unit tests. | 141 | dnl Define it also as a C macro, for the benefit of the unit tests. |
108 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) | 142 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) |
109 | ]) | 143 | ]) |
110 | 144 | ||
145 | # Initializes the default values for AC_SUBSTed shell variables. | ||
146 | # This macro must not be AC_REQUIREd. It must only be invoked, and only | ||
147 | # outside of macros or in macros that are not AC_REQUIREd. | ||
148 | AC_DEFUN([gl_LOCALE_H_REQUIRE_DEFAULTS], | ||
149 | [ | ||
150 | m4_defun(GL_MODULE_INDICATOR_PREFIX[_LOCALE_H_MODULE_INDICATOR_DEFAULTS], [ | ||
151 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOCALECONV]) | ||
152 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETLOCALE]) | ||
153 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETLOCALE_NULL]) | ||
154 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUPLOCALE]) | ||
155 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOCALENAME]) | ||
156 | ]) | ||
157 | m4_require(GL_MODULE_INDICATOR_PREFIX[_LOCALE_H_MODULE_INDICATOR_DEFAULTS]) | ||
158 | AC_REQUIRE([gl_LOCALE_H_DEFAULTS]) | ||
159 | ]) | ||
160 | |||
111 | AC_DEFUN([gl_LOCALE_H_DEFAULTS], | 161 | AC_DEFUN([gl_LOCALE_H_DEFAULTS], |
112 | [ | 162 | [ |
113 | GNULIB_LOCALECONV=0; AC_SUBST([GNULIB_LOCALECONV]) | ||
114 | GNULIB_SETLOCALE=0; AC_SUBST([GNULIB_SETLOCALE]) | ||
115 | GNULIB_DUPLOCALE=0; AC_SUBST([GNULIB_DUPLOCALE]) | ||
116 | dnl Assume proper GNU behavior unless another module says otherwise. | 163 | dnl Assume proper GNU behavior unless another module says otherwise. |
164 | HAVE_NEWLOCALE=1; AC_SUBST([HAVE_NEWLOCALE]) | ||
117 | HAVE_DUPLOCALE=1; AC_SUBST([HAVE_DUPLOCALE]) | 165 | HAVE_DUPLOCALE=1; AC_SUBST([HAVE_DUPLOCALE]) |
166 | HAVE_FREELOCALE=1; AC_SUBST([HAVE_FREELOCALE]) | ||
118 | REPLACE_LOCALECONV=0; AC_SUBST([REPLACE_LOCALECONV]) | 167 | REPLACE_LOCALECONV=0; AC_SUBST([REPLACE_LOCALECONV]) |
119 | REPLACE_SETLOCALE=0; AC_SUBST([REPLACE_SETLOCALE]) | 168 | REPLACE_SETLOCALE=0; AC_SUBST([REPLACE_SETLOCALE]) |
169 | REPLACE_NEWLOCALE=0; AC_SUBST([REPLACE_NEWLOCALE]) | ||
120 | REPLACE_DUPLOCALE=0; AC_SUBST([REPLACE_DUPLOCALE]) | 170 | REPLACE_DUPLOCALE=0; AC_SUBST([REPLACE_DUPLOCALE]) |
171 | REPLACE_FREELOCALE=0; AC_SUBST([REPLACE_FREELOCALE]) | ||
121 | REPLACE_STRUCT_LCONV=0; AC_SUBST([REPLACE_STRUCT_LCONV]) | 172 | REPLACE_STRUCT_LCONV=0; AC_SUBST([REPLACE_STRUCT_LCONV]) |
173 | LOCALENAME_ENHANCE_LOCALE_FUNCS=0; AC_SUBST([LOCALENAME_ENHANCE_LOCALE_FUNCS]) | ||
122 | ]) | 174 | ]) |
diff --git a/gl/m4/localeconv.m4 b/gl/m4/localeconv.m4 index b8bb5964..ae225fed 100644 --- a/gl/m4/localeconv.m4 +++ b/gl/m4/localeconv.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # localeconv.m4 serial 1 | 1 | # localeconv.m4 serial 1 |
2 | dnl Copyright (C) 2012-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2012-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
diff --git a/gl/m4/lock.m4 b/gl/m4/lock.m4 index aae1701a..88cf5575 100644 --- a/gl/m4/lock.m4 +++ b/gl/m4/lock.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # lock.m4 serial 13 (gettext-0.18.2) | 1 | # lock.m4 serial 14 |
2 | dnl Copyright (C) 2005-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2005-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -12,11 +12,16 @@ AC_DEFUN([gl_LOCK], | |||
12 | if test "$gl_threads_api" = posix; then | 12 | if test "$gl_threads_api" = posix; then |
13 | # OSF/1 4.0 and Mac OS X 10.1 lack the pthread_rwlock_t type and the | 13 | # OSF/1 4.0 and Mac OS X 10.1 lack the pthread_rwlock_t type and the |
14 | # pthread_rwlock_* functions. | 14 | # pthread_rwlock_* functions. |
15 | has_rwlock=false | ||
15 | AC_CHECK_TYPE([pthread_rwlock_t], | 16 | AC_CHECK_TYPE([pthread_rwlock_t], |
16 | [AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1], | 17 | [has_rwlock=true |
18 | AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1], | ||
17 | [Define if the POSIX multithreading library has read/write locks.])], | 19 | [Define if the POSIX multithreading library has read/write locks.])], |
18 | [], | 20 | [], |
19 | [#include <pthread.h>]) | 21 | [#include <pthread.h>]) |
22 | if $has_rwlock; then | ||
23 | gl_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER | ||
24 | fi | ||
20 | # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro. | 25 | # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro. |
21 | AC_COMPILE_IFELSE([ | 26 | AC_COMPILE_IFELSE([ |
22 | AC_LANG_PROGRAM( | 27 | AC_LANG_PROGRAM( |
diff --git a/gl/m4/longlong.m4 b/gl/m4/longlong.m4 deleted file mode 100644 index 3af6ab5a..00000000 --- a/gl/m4/longlong.m4 +++ /dev/null | |||
@@ -1,113 +0,0 @@ | |||
1 | # longlong.m4 serial 17 | ||
2 | dnl Copyright (C) 1999-2007, 2009-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | dnl From Paul Eggert. | ||
8 | |||
9 | # Define HAVE_LONG_LONG_INT if 'long long int' works. | ||
10 | # This fixes a bug in Autoconf 2.61, and can be faster | ||
11 | # than what's in Autoconf 2.62 through 2.68. | ||
12 | |||
13 | # Note: If the type 'long long int' exists but is only 32 bits large | ||
14 | # (as on some very old compilers), HAVE_LONG_LONG_INT will not be | ||
15 | # defined. In this case you can treat 'long long int' like 'long int'. | ||
16 | |||
17 | AC_DEFUN([AC_TYPE_LONG_LONG_INT], | ||
18 | [ | ||
19 | AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) | ||
20 | AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int], | ||
21 | [ac_cv_type_long_long_int=yes | ||
22 | if test "x${ac_cv_prog_cc_c99-no}" = xno; then | ||
23 | ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int | ||
24 | if test $ac_cv_type_long_long_int = yes; then | ||
25 | dnl Catch a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004. | ||
26 | dnl If cross compiling, assume the bug is not important, since | ||
27 | dnl nobody cross compiles for this platform as far as we know. | ||
28 | AC_RUN_IFELSE( | ||
29 | [AC_LANG_PROGRAM( | ||
30 | [[@%:@include <limits.h> | ||
31 | @%:@ifndef LLONG_MAX | ||
32 | @%:@ define HALF \ | ||
33 | (1LL << (sizeof (long long int) * CHAR_BIT - 2)) | ||
34 | @%:@ define LLONG_MAX (HALF - 1 + HALF) | ||
35 | @%:@endif]], | ||
36 | [[long long int n = 1; | ||
37 | int i; | ||
38 | for (i = 0; ; i++) | ||
39 | { | ||
40 | long long int m = n << i; | ||
41 | if (m >> i != n) | ||
42 | return 1; | ||
43 | if (LLONG_MAX / 2 < m) | ||
44 | break; | ||
45 | } | ||
46 | return 0;]])], | ||
47 | [], | ||
48 | [ac_cv_type_long_long_int=no], | ||
49 | [:]) | ||
50 | fi | ||
51 | fi]) | ||
52 | if test $ac_cv_type_long_long_int = yes; then | ||
53 | AC_DEFINE([HAVE_LONG_LONG_INT], [1], | ||
54 | [Define to 1 if the system has the type 'long long int'.]) | ||
55 | fi | ||
56 | ]) | ||
57 | |||
58 | # Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works. | ||
59 | # This fixes a bug in Autoconf 2.61, and can be faster | ||
60 | # than what's in Autoconf 2.62 through 2.68. | ||
61 | |||
62 | # Note: If the type 'unsigned long long int' exists but is only 32 bits | ||
63 | # large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT | ||
64 | # will not be defined. In this case you can treat 'unsigned long long int' | ||
65 | # like 'unsigned long int'. | ||
66 | |||
67 | AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT], | ||
68 | [ | ||
69 | AC_CACHE_CHECK([for unsigned long long int], | ||
70 | [ac_cv_type_unsigned_long_long_int], | ||
71 | [ac_cv_type_unsigned_long_long_int=yes | ||
72 | if test "x${ac_cv_prog_cc_c99-no}" = xno; then | ||
73 | AC_LINK_IFELSE( | ||
74 | [_AC_TYPE_LONG_LONG_SNIPPET], | ||
75 | [], | ||
76 | [ac_cv_type_unsigned_long_long_int=no]) | ||
77 | fi]) | ||
78 | if test $ac_cv_type_unsigned_long_long_int = yes; then | ||
79 | AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1], | ||
80 | [Define to 1 if the system has the type 'unsigned long long int'.]) | ||
81 | fi | ||
82 | ]) | ||
83 | |||
84 | # Expands to a C program that can be used to test for simultaneous support | ||
85 | # of 'long long' and 'unsigned long long'. We don't want to say that | ||
86 | # 'long long' is available if 'unsigned long long' is not, or vice versa, | ||
87 | # because too many programs rely on the symmetry between signed and unsigned | ||
88 | # integer types (excluding 'bool'). | ||
89 | AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET], | ||
90 | [ | ||
91 | AC_LANG_PROGRAM( | ||
92 | [[/* For now, do not test the preprocessor; as of 2007 there are too many | ||
93 | implementations with broken preprocessors. Perhaps this can | ||
94 | be revisited in 2012. In the meantime, code should not expect | ||
95 | #if to work with literals wider than 32 bits. */ | ||
96 | /* Test literals. */ | ||
97 | long long int ll = 9223372036854775807ll; | ||
98 | long long int nll = -9223372036854775807LL; | ||
99 | unsigned long long int ull = 18446744073709551615ULL; | ||
100 | /* Test constant expressions. */ | ||
101 | typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) | ||
102 | ? 1 : -1)]; | ||
103 | typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 | ||
104 | ? 1 : -1)]; | ||
105 | int i = 63;]], | ||
106 | [[/* Test availability of runtime routines for shift and division. */ | ||
107 | long long int llmax = 9223372036854775807ll; | ||
108 | unsigned long long int ullmax = 18446744073709551615ull; | ||
109 | return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) | ||
110 | | (llmax / ll) | (llmax % ll) | ||
111 | | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) | ||
112 | | (ullmax / ull) | (ullmax % ull));]]) | ||
113 | ]) | ||
diff --git a/gl/m4/ls-mntd-fs.m4 b/gl/m4/ls-mntd-fs.m4 deleted file mode 100644 index fb116c8b..00000000 --- a/gl/m4/ls-mntd-fs.m4 +++ /dev/null | |||
@@ -1,357 +0,0 @@ | |||
1 | # serial 30 | ||
2 | # How to list mounted file systems. | ||
3 | |||
4 | # Copyright (C) 1998-2004, 2006, 2009-2013 Free Software Foundation, Inc. | ||
5 | # | ||
6 | # This file is free software; the Free Software Foundation | ||
7 | # gives unlimited permission to copy and/or distribute it, | ||
8 | # with or without modifications, as long as this notice is preserved. | ||
9 | |||
10 | dnl From Jim Meyering. | ||
11 | dnl | ||
12 | dnl This is not pretty. I've just taken the autoconf code and wrapped | ||
13 | dnl it in an AC_DEFUN and made some other fixes. | ||
14 | dnl | ||
15 | |||
16 | # Replace Autoconf's AC_FUNC_GETMNTENT to work around a bug in Autoconf | ||
17 | # through Autoconf 2.59. We can remove this once we assume Autoconf 2.60 | ||
18 | # or later. | ||
19 | AC_DEFUN([AC_FUNC_GETMNTENT], | ||
20 | [# getmntent is in the standard C library on UNICOS, in -lsun on Irix 4, | ||
21 | # -lseq on Dynix/PTX, -lgen on Unixware. | ||
22 | AC_SEARCH_LIBS([getmntent], [sun seq gen]) | ||
23 | AC_CHECK_FUNCS([getmntent]) | ||
24 | ]) | ||
25 | |||
26 | # gl_LIST_MOUNTED_FILE_SYSTEMS([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) | ||
27 | AC_DEFUN([gl_LIST_MOUNTED_FILE_SYSTEMS], | ||
28 | [ | ||
29 | AC_CHECK_FUNCS([listmntent getmntinfo]) | ||
30 | AC_CHECK_HEADERS_ONCE([sys/param.h sys/statvfs.h]) | ||
31 | |||
32 | # We must include grp.h before ucred.h on OSF V4.0, since ucred.h uses | ||
33 | # NGROUPS (as the array dimension for a struct member) without a definition. | ||
34 | AC_CHECK_HEADERS([sys/ucred.h], [], [], [#include <grp.h>]) | ||
35 | |||
36 | AC_CHECK_HEADERS([sys/mount.h], [], [], | ||
37 | [AC_INCLUDES_DEFAULT | ||
38 | [#if HAVE_SYS_PARAM_H | ||
39 | #include <sys/param.h> | ||
40 | #endif]]) | ||
41 | |||
42 | AC_CHECK_HEADERS([mntent.h sys/fs_types.h]) | ||
43 | getfsstat_includes="\ | ||
44 | $ac_includes_default | ||
45 | #if HAVE_SYS_PARAM_H | ||
46 | # include <sys/param.h> /* needed by powerpc-apple-darwin1.3.7 */ | ||
47 | #endif | ||
48 | #if HAVE_SYS_UCRED_H | ||
49 | # include <grp.h> /* needed for definition of NGROUPS */ | ||
50 | # include <sys/ucred.h> /* needed by powerpc-apple-darwin1.3.7 */ | ||
51 | #endif | ||
52 | #if HAVE_SYS_MOUNT_H | ||
53 | # include <sys/mount.h> | ||
54 | #endif | ||
55 | #if HAVE_SYS_FS_TYPES_H | ||
56 | # include <sys/fs_types.h> /* needed by powerpc-apple-darwin1.3.7 */ | ||
57 | #endif | ||
58 | " | ||
59 | AC_CHECK_MEMBERS([struct fsstat.f_fstypename],,,[$getfsstat_includes]) | ||
60 | |||
61 | # Determine how to get the list of mounted file systems. | ||
62 | ac_list_mounted_fs= | ||
63 | |||
64 | # If the getmntent function is available but not in the standard library, | ||
65 | # make sure LIBS contains the appropriate -l option. | ||
66 | AC_FUNC_GETMNTENT | ||
67 | |||
68 | # This test must precede the ones for getmntent because Unicos-9 is | ||
69 | # reported to have the getmntent function, but its support is incompatible | ||
70 | # with other getmntent implementations. | ||
71 | |||
72 | # NOTE: Normally, I wouldn't use a check for system type as I've done for | ||
73 | # 'CRAY' below since that goes against the whole autoconf philosophy. But | ||
74 | # I think there is too great a chance that some non-Cray system has a | ||
75 | # function named listmntent to risk the false positive. | ||
76 | |||
77 | if test -z "$ac_list_mounted_fs"; then | ||
78 | # Cray UNICOS 9 | ||
79 | AC_MSG_CHECKING([for listmntent of Cray/Unicos-9]) | ||
80 | AC_CACHE_VAL([fu_cv_sys_mounted_cray_listmntent], | ||
81 | [fu_cv_sys_mounted_cray_listmntent=no | ||
82 | AC_EGREP_CPP([yes], | ||
83 | [#ifdef _CRAY | ||
84 | yes | ||
85 | #endif | ||
86 | ], [test $ac_cv_func_listmntent = yes \ | ||
87 | && fu_cv_sys_mounted_cray_listmntent=yes] | ||
88 | ) | ||
89 | ] | ||
90 | ) | ||
91 | AC_MSG_RESULT([$fu_cv_sys_mounted_cray_listmntent]) | ||
92 | if test $fu_cv_sys_mounted_cray_listmntent = yes; then | ||
93 | ac_list_mounted_fs=found | ||
94 | AC_DEFINE([MOUNTED_LISTMNTENT], [1], | ||
95 | [Define if there is a function named listmntent that can be used to | ||
96 | list all mounted file systems. (UNICOS)]) | ||
97 | fi | ||
98 | fi | ||
99 | |||
100 | if test -z "$ac_list_mounted_fs"; then | ||
101 | # AIX. | ||
102 | AC_MSG_CHECKING([for mntctl function and struct vmount]) | ||
103 | AC_CACHE_VAL([fu_cv_sys_mounted_vmount], | ||
104 | [AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <fshelp.h>]])], | ||
105 | [fu_cv_sys_mounted_vmount=yes], | ||
106 | [fu_cv_sys_mounted_vmount=no])]) | ||
107 | AC_MSG_RESULT([$fu_cv_sys_mounted_vmount]) | ||
108 | if test $fu_cv_sys_mounted_vmount = yes; then | ||
109 | ac_list_mounted_fs=found | ||
110 | AC_DEFINE([MOUNTED_VMOUNT], [1], | ||
111 | [Define if there is a function named mntctl that can be used to read | ||
112 | the list of mounted file systems, and there is a system header file | ||
113 | that declares 'struct vmount'. (AIX)]) | ||
114 | fi | ||
115 | fi | ||
116 | |||
117 | if test $ac_cv_func_getmntent = yes; then | ||
118 | |||
119 | # This system has the getmntent function. | ||
120 | # Determine whether it's the one-argument variant or the two-argument one. | ||
121 | |||
122 | if test -z "$ac_list_mounted_fs"; then | ||
123 | # 4.3BSD, SunOS, HP-UX, Dynix, Irix | ||
124 | AC_MSG_CHECKING([for one-argument getmntent function]) | ||
125 | AC_CACHE_VAL([fu_cv_sys_mounted_getmntent1], | ||
126 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ | ||
127 | /* SunOS 4.1.x /usr/include/mntent.h needs this for FILE */ | ||
128 | #include <stdio.h> | ||
129 | |||
130 | #include <mntent.h> | ||
131 | #if !defined MOUNTED | ||
132 | # if defined _PATH_MOUNTED /* GNU libc */ | ||
133 | # define MOUNTED _PATH_MOUNTED | ||
134 | # endif | ||
135 | # if defined MNT_MNTTAB /* HP-UX. */ | ||
136 | # define MOUNTED MNT_MNTTAB | ||
137 | # endif | ||
138 | # if defined MNTTABNAME /* Dynix. */ | ||
139 | # define MOUNTED MNTTABNAME | ||
140 | # endif | ||
141 | #endif | ||
142 | ]], | ||
143 | [[ struct mntent *mnt = 0; char *table = MOUNTED; | ||
144 | if (sizeof mnt && sizeof table) return 0;]])], | ||
145 | [fu_cv_sys_mounted_getmntent1=yes], | ||
146 | [fu_cv_sys_mounted_getmntent1=no])]) | ||
147 | AC_MSG_RESULT([$fu_cv_sys_mounted_getmntent1]) | ||
148 | if test $fu_cv_sys_mounted_getmntent1 = yes; then | ||
149 | ac_list_mounted_fs=found | ||
150 | AC_DEFINE([MOUNTED_GETMNTENT1], [1], | ||
151 | [Define if there is a function named getmntent for reading the list | ||
152 | of mounted file systems, and that function takes a single argument. | ||
153 | (4.3BSD, SunOS, HP-UX, Dynix, Irix)]) | ||
154 | fi | ||
155 | fi | ||
156 | |||
157 | if test -z "$ac_list_mounted_fs"; then | ||
158 | # SVR4 | ||
159 | AC_MSG_CHECKING([for two-argument getmntent function]) | ||
160 | AC_CACHE_VAL([fu_cv_sys_mounted_getmntent2], | ||
161 | [AC_EGREP_HEADER([getmntent], [sys/mnttab.h], | ||
162 | fu_cv_sys_mounted_getmntent2=yes, | ||
163 | fu_cv_sys_mounted_getmntent2=no)]) | ||
164 | AC_MSG_RESULT([$fu_cv_sys_mounted_getmntent2]) | ||
165 | if test $fu_cv_sys_mounted_getmntent2 = yes; then | ||
166 | ac_list_mounted_fs=found | ||
167 | AC_DEFINE([MOUNTED_GETMNTENT2], [1], | ||
168 | [Define if there is a function named getmntent for reading the list of | ||
169 | mounted file systems, and that function takes two arguments. (SVR4)]) | ||
170 | AC_CHECK_FUNCS([hasmntopt]) | ||
171 | fi | ||
172 | fi | ||
173 | |||
174 | fi | ||
175 | |||
176 | if test -z "$ac_list_mounted_fs"; then | ||
177 | # DEC Alpha running OSF/1, and Apple Darwin 1.3. | ||
178 | # powerpc-apple-darwin1.3.7 needs sys/param.h sys/ucred.h sys/fs_types.h | ||
179 | |||
180 | AC_MSG_CHECKING([for getfsstat function]) | ||
181 | AC_CACHE_VAL([fu_cv_sys_mounted_getfsstat], | ||
182 | [AC_LINK_IFELSE([AC_LANG_PROGRAM([[ | ||
183 | #include <sys/types.h> | ||
184 | #if HAVE_STRUCT_FSSTAT_F_FSTYPENAME | ||
185 | # define FS_TYPE(Ent) ((Ent).f_fstypename) | ||
186 | #else | ||
187 | # define FS_TYPE(Ent) mnt_names[(Ent).f_type] | ||
188 | #endif | ||
189 | $getfsstat_includes]] | ||
190 | , | ||
191 | [[struct statfs *stats; | ||
192 | int numsys = getfsstat ((struct statfs *)0, 0L, MNT_WAIT); | ||
193 | char *t = FS_TYPE (*stats); ]])], | ||
194 | [fu_cv_sys_mounted_getfsstat=yes], | ||
195 | [fu_cv_sys_mounted_getfsstat=no])]) | ||
196 | AC_MSG_RESULT([$fu_cv_sys_mounted_getfsstat]) | ||
197 | if test $fu_cv_sys_mounted_getfsstat = yes; then | ||
198 | ac_list_mounted_fs=found | ||
199 | AC_DEFINE([MOUNTED_GETFSSTAT], [1], | ||
200 | [Define if there is a function named getfsstat for reading the | ||
201 | list of mounted file systems. (DEC Alpha running OSF/1)]) | ||
202 | fi | ||
203 | fi | ||
204 | |||
205 | if test -z "$ac_list_mounted_fs"; then | ||
206 | # SVR3 | ||
207 | AC_MSG_CHECKING([for FIXME existence of three headers]) | ||
208 | AC_CACHE_VAL([fu_cv_sys_mounted_fread_fstyp], | ||
209 | [AC_PREPROC_IFELSE([AC_LANG_SOURCE([[ | ||
210 | #include <sys/statfs.h> | ||
211 | #include <sys/fstyp.h> | ||
212 | #include <mnttab.h>]])], | ||
213 | [fu_cv_sys_mounted_fread_fstyp=yes], | ||
214 | [fu_cv_sys_mounted_fread_fstyp=no])]) | ||
215 | AC_MSG_RESULT([$fu_cv_sys_mounted_fread_fstyp]) | ||
216 | if test $fu_cv_sys_mounted_fread_fstyp = yes; then | ||
217 | ac_list_mounted_fs=found | ||
218 | AC_DEFINE([MOUNTED_FREAD_FSTYP], [1], | ||
219 | [Define if (like SVR2) there is no specific function for reading the | ||
220 | list of mounted file systems, and your system has these header files: | ||
221 | <sys/fstyp.h> and <sys/statfs.h>. (SVR3)]) | ||
222 | fi | ||
223 | fi | ||
224 | |||
225 | if test -z "$ac_list_mounted_fs"; then | ||
226 | # 4.4BSD and DEC OSF/1. | ||
227 | AC_MSG_CHECKING([for getmntinfo function]) | ||
228 | AC_CACHE_VAL([fu_cv_sys_mounted_getmntinfo], | ||
229 | [ | ||
230 | test "$ac_cv_func_getmntinfo" = yes \ | ||
231 | && fu_cv_sys_mounted_getmntinfo=yes \ | ||
232 | || fu_cv_sys_mounted_getmntinfo=no | ||
233 | ]) | ||
234 | AC_MSG_RESULT([$fu_cv_sys_mounted_getmntinfo]) | ||
235 | if test $fu_cv_sys_mounted_getmntinfo = yes; then | ||
236 | AC_MSG_CHECKING([whether getmntinfo returns statvfs structures]) | ||
237 | AC_CACHE_VAL([fu_cv_sys_mounted_getmntinfo2], | ||
238 | [ | ||
239 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ | ||
240 | #if HAVE_SYS_PARAM_H | ||
241 | # include <sys/param.h> | ||
242 | #endif | ||
243 | #include <sys/types.h> | ||
244 | #if HAVE_SYS_MOUNT_H | ||
245 | # include <sys/mount.h> | ||
246 | #endif | ||
247 | #if HAVE_SYS_STATVFS_H | ||
248 | # include <sys/statvfs.h> | ||
249 | #endif | ||
250 | extern | ||
251 | #ifdef __cplusplus | ||
252 | "C" | ||
253 | #endif | ||
254 | int getmntinfo (struct statfs **, int); | ||
255 | ]], [])], | ||
256 | [fu_cv_sys_mounted_getmntinfo2=no], | ||
257 | [fu_cv_sys_mounted_getmntinfo2=yes]) | ||
258 | ]) | ||
259 | AC_MSG_RESULT([$fu_cv_sys_mounted_getmntinfo2]) | ||
260 | if test $fu_cv_sys_mounted_getmntinfo2 = no; then | ||
261 | ac_list_mounted_fs=found | ||
262 | AC_DEFINE([MOUNTED_GETMNTINFO], [1], | ||
263 | [Define if there is a function named getmntinfo for reading the | ||
264 | list of mounted file systems and it returns an array of | ||
265 | 'struct statfs'. (4.4BSD, Darwin)]) | ||
266 | else | ||
267 | ac_list_mounted_fs=found | ||
268 | AC_DEFINE([MOUNTED_GETMNTINFO2], [1], | ||
269 | [Define if there is a function named getmntinfo for reading the | ||
270 | list of mounted file systems and it returns an array of | ||
271 | 'struct statvfs'. (NetBSD 3.0)]) | ||
272 | fi | ||
273 | fi | ||
274 | fi | ||
275 | |||
276 | if test -z "$ac_list_mounted_fs"; then | ||
277 | # Ultrix | ||
278 | AC_MSG_CHECKING([for getmnt function]) | ||
279 | AC_CACHE_VAL([fu_cv_sys_mounted_getmnt], | ||
280 | [AC_PREPROC_IFELSE([AC_LANG_SOURCE([[ | ||
281 | #include <sys/fs_types.h> | ||
282 | #include <sys/mount.h>]])], | ||
283 | [fu_cv_sys_mounted_getmnt=yes], | ||
284 | [fu_cv_sys_mounted_getmnt=no])]) | ||
285 | AC_MSG_RESULT([$fu_cv_sys_mounted_getmnt]) | ||
286 | if test $fu_cv_sys_mounted_getmnt = yes; then | ||
287 | ac_list_mounted_fs=found | ||
288 | AC_DEFINE([MOUNTED_GETMNT], [1], | ||
289 | [Define if there is a function named getmnt for reading the list of | ||
290 | mounted file systems. (Ultrix)]) | ||
291 | fi | ||
292 | fi | ||
293 | |||
294 | if test -z "$ac_list_mounted_fs"; then | ||
295 | # BeOS | ||
296 | AC_CHECK_FUNCS([next_dev fs_stat_dev]) | ||
297 | AC_CHECK_HEADERS([fs_info.h]) | ||
298 | AC_MSG_CHECKING([for BEOS mounted file system support functions]) | ||
299 | if test $ac_cv_header_fs_info_h = yes \ | ||
300 | && test $ac_cv_func_next_dev = yes \ | ||
301 | && test $ac_cv_func_fs_stat_dev = yes; then | ||
302 | fu_result=yes | ||
303 | else | ||
304 | fu_result=no | ||
305 | fi | ||
306 | AC_MSG_RESULT([$fu_result]) | ||
307 | if test $fu_result = yes; then | ||
308 | ac_list_mounted_fs=found | ||
309 | AC_DEFINE([MOUNTED_FS_STAT_DEV], [1], | ||
310 | [Define if there are functions named next_dev and fs_stat_dev for | ||
311 | reading the list of mounted file systems. (BeOS)]) | ||
312 | fi | ||
313 | fi | ||
314 | |||
315 | if test -z "$ac_list_mounted_fs"; then | ||
316 | # SVR2 | ||
317 | AC_MSG_CHECKING([whether it is possible to resort to fread on /etc/mnttab]) | ||
318 | AC_CACHE_VAL([fu_cv_sys_mounted_fread], | ||
319 | [AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <mnttab.h>]])], | ||
320 | [fu_cv_sys_mounted_fread=yes], | ||
321 | [fu_cv_sys_mounted_fread=no])]) | ||
322 | AC_MSG_RESULT([$fu_cv_sys_mounted_fread]) | ||
323 | if test $fu_cv_sys_mounted_fread = yes; then | ||
324 | ac_list_mounted_fs=found | ||
325 | AC_DEFINE([MOUNTED_FREAD], [1], | ||
326 | [Define if there is no specific function for reading the list of | ||
327 | mounted file systems. fread will be used to read /etc/mnttab. | ||
328 | (SVR2) ]) | ||
329 | fi | ||
330 | fi | ||
331 | |||
332 | if test -z "$ac_list_mounted_fs"; then | ||
333 | # Interix / BSD alike statvfs | ||
334 | # the code is really interix specific, so make sure, we're on it. | ||
335 | case "$host" in | ||
336 | *-interix*) | ||
337 | AC_CHECK_FUNCS([statvfs]) | ||
338 | if test $ac_cv_func_statvfs = yes; then | ||
339 | ac_list_mounted_fs=found | ||
340 | AC_DEFINE([MOUNTED_INTERIX_STATVFS], [1], | ||
341 | [Define if we are on interix, and ought to use statvfs plus | ||
342 | some special knowledge on where mounted file systems can be | ||
343 | found. (Interix)]) | ||
344 | fi | ||
345 | ;; | ||
346 | esac | ||
347 | fi | ||
348 | |||
349 | if test -z "$ac_list_mounted_fs"; then | ||
350 | AC_MSG_ERROR([could not determine how to read list of mounted file systems]) | ||
351 | # FIXME -- no need to abort building the whole package | ||
352 | # Can't build mountlist.c or anything that needs its functions | ||
353 | fi | ||
354 | |||
355 | AS_IF([test $ac_list_mounted_fs = found], [$1], [$2]) | ||
356 | |||
357 | ]) | ||
diff --git a/gl/m4/lseek.m4 b/gl/m4/lseek.m4 new file mode 100644 index 00000000..fd4f1f27 --- /dev/null +++ b/gl/m4/lseek.m4 | |||
@@ -0,0 +1,78 @@ | |||
1 | # lseek.m4 serial 12 | ||
2 | dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_FUNC_LSEEK], | ||
8 | [ | ||
9 | AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) | ||
10 | |||
11 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
12 | AC_REQUIRE([AC_PROG_CC]) | ||
13 | AC_CHECK_HEADERS_ONCE([unistd.h]) | ||
14 | AC_CACHE_CHECK([whether lseek detects pipes], [gl_cv_func_lseek_pipe], | ||
15 | [case "$host_os" in | ||
16 | mingw*) | ||
17 | dnl Native Windows. | ||
18 | dnl The result of lseek (fd, (off_t)0, SEEK_CUR) or | ||
19 | dnl SetFilePointer(handle, 0, NULL, FILE_CURRENT) | ||
20 | dnl for a pipe depends on the environment: In a Cygwin 1.5 | ||
21 | dnl environment it succeeds (wrong); in a Cygwin 1.7 environment | ||
22 | dnl it fails with a wrong errno value. | ||
23 | gl_cv_func_lseek_pipe=no | ||
24 | ;; | ||
25 | *) | ||
26 | if test $cross_compiling = no; then | ||
27 | AC_LINK_IFELSE([AC_LANG_PROGRAM([[ | ||
28 | #include <sys/types.h> /* for off_t */ | ||
29 | #include <stdio.h> /* for SEEK_CUR */ | ||
30 | #if HAVE_UNISTD_H | ||
31 | # include <unistd.h> | ||
32 | #else /* on Windows with MSVC */ | ||
33 | # include <io.h> | ||
34 | #endif | ||
35 | ]GL_MDA_DEFINES], | ||
36 | [[ | ||
37 | /* Exit with success only if stdin is seekable. */ | ||
38 | return lseek (0, (off_t)0, SEEK_CUR) < 0; | ||
39 | ]])], | ||
40 | [if test -s conftest$ac_exeext \ | ||
41 | && ./conftest$ac_exeext < conftest.$ac_ext \ | ||
42 | && test 1 = "`echo hi \ | ||
43 | | { ./conftest$ac_exeext; echo $?; cat >/dev/null; }`"; then | ||
44 | gl_cv_func_lseek_pipe=yes | ||
45 | else | ||
46 | gl_cv_func_lseek_pipe=no | ||
47 | fi | ||
48 | ], | ||
49 | [gl_cv_func_lseek_pipe=no]) | ||
50 | else | ||
51 | AC_COMPILE_IFELSE( | ||
52 | [AC_LANG_SOURCE([[ | ||
53 | #if defined __BEOS__ | ||
54 | /* BeOS mistakenly return 0 when trying to seek on pipes. */ | ||
55 | Choke me. | ||
56 | #endif]])], | ||
57 | [gl_cv_func_lseek_pipe=yes], [gl_cv_func_lseek_pipe=no]) | ||
58 | fi | ||
59 | ;; | ||
60 | esac | ||
61 | ]) | ||
62 | if test "$gl_cv_func_lseek_pipe" = no; then | ||
63 | REPLACE_LSEEK=1 | ||
64 | AC_DEFINE([LSEEK_PIPE_BROKEN], [1], | ||
65 | [Define to 1 if lseek does not detect pipes.]) | ||
66 | fi | ||
67 | |||
68 | AC_REQUIRE([gl_SYS_TYPES_H]) | ||
69 | if test $WINDOWS_64_BIT_OFF_T = 1; then | ||
70 | REPLACE_LSEEK=1 | ||
71 | fi | ||
72 | |||
73 | dnl macOS SEEK_DATA is incompatible with other platforms. | ||
74 | case $host_os in | ||
75 | darwin*) | ||
76 | REPLACE_LSEEK=1;; | ||
77 | esac | ||
78 | ]) | ||
diff --git a/gl/m4/malloc.m4 b/gl/m4/malloc.m4 index 4b24a0b1..55402924 100644 --- a/gl/m4/malloc.m4 +++ b/gl/m4/malloc.m4 | |||
@@ -1,98 +1,175 @@ | |||
1 | # malloc.m4 serial 14 | 1 | # malloc.m4 serial 28 |
2 | dnl Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | m4_version_prereq([2.70], [] ,[ | 7 | # This is adapted with modifications from upstream Autoconf here: |
8 | 8 | # https://git.savannah.gnu.org/cgit/autoconf.git/tree/lib/autoconf/functions.m4?id=v2.70#n949 | |
9 | # This is taken from the following Autoconf patch: | ||
10 | # http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=7fbb553727ed7e0e689a17594b58559ecf3ea6e9 | ||
11 | AC_DEFUN([_AC_FUNC_MALLOC_IF], | 9 | AC_DEFUN([_AC_FUNC_MALLOC_IF], |
12 | [ | 10 | [ |
13 | AC_REQUIRE([AC_HEADER_STDC])dnl | ||
14 | AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles | 11 | AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles |
15 | AC_CHECK_HEADERS([stdlib.h]) | 12 | AC_CACHE_CHECK([whether malloc (0) returns nonnull], |
16 | AC_CACHE_CHECK([for GNU libc compatible malloc], | ||
17 | [ac_cv_func_malloc_0_nonnull], | 13 | [ac_cv_func_malloc_0_nonnull], |
18 | [AC_RUN_IFELSE( | 14 | [AC_RUN_IFELSE( |
19 | [AC_LANG_PROGRAM( | 15 | [AC_LANG_PROGRAM( |
20 | [[#if defined STDC_HEADERS || defined HAVE_STDLIB_H | 16 | [[#include <stdlib.h> |
21 | # include <stdlib.h> | ||
22 | #else | ||
23 | char *malloc (); | ||
24 | #endif | ||
25 | ]], | 17 | ]], |
26 | [[return ! malloc (0);]]) | 18 | [[void *p = malloc (0); |
19 | int result = !p; | ||
20 | free (p); | ||
21 | return result;]]) | ||
27 | ], | 22 | ], |
28 | [ac_cv_func_malloc_0_nonnull=yes], | 23 | [ac_cv_func_malloc_0_nonnull=yes], |
29 | [ac_cv_func_malloc_0_nonnull=no], | 24 | [ac_cv_func_malloc_0_nonnull=no], |
30 | [case "$host_os" in | 25 | [case "$host_os" in |
31 | # Guess yes on platforms where we know the result. | 26 | # Guess yes on platforms where we know the result. |
32 | *-gnu* | freebsd* | netbsd* | openbsd* \ | 27 | *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \ |
33 | | hpux* | solaris* | cygwin* | mingw*) | 28 | | gnu* | *-musl* | midnightbsd* \ |
34 | ac_cv_func_malloc_0_nonnull=yes ;; | 29 | | hpux* | solaris* | cygwin* | mingw* | msys* ) |
35 | # If we don't know, assume the worst. | 30 | ac_cv_func_malloc_0_nonnull="guessing yes" ;; |
36 | *) ac_cv_func_malloc_0_nonnull=no ;; | 31 | # If we don't know, obey --enable-cross-guesses. |
32 | *) ac_cv_func_malloc_0_nonnull="$gl_cross_guess_normal" ;; | ||
37 | esac | 33 | esac |
38 | ]) | 34 | ]) |
39 | ]) | 35 | ]) |
40 | AS_IF([test $ac_cv_func_malloc_0_nonnull = yes], [$1], [$2]) | 36 | AS_CASE([$ac_cv_func_malloc_0_nonnull], [*yes], [$1], [$2]) |
41 | ])# _AC_FUNC_MALLOC_IF | 37 | ])# _AC_FUNC_MALLOC_IF |
42 | 38 | ||
43 | ]) | ||
44 | |||
45 | # gl_FUNC_MALLOC_GNU | 39 | # gl_FUNC_MALLOC_GNU |
46 | # ------------------ | 40 | # ------------------ |
47 | # Test whether 'malloc (0)' is handled like in GNU libc, and replace malloc if | 41 | # Replace malloc if it is not compatible with GNU libc. |
48 | # it is not. | ||
49 | AC_DEFUN([gl_FUNC_MALLOC_GNU], | 42 | AC_DEFUN([gl_FUNC_MALLOC_GNU], |
50 | [ | 43 | [ |
51 | AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) | 44 | AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) |
52 | dnl _AC_FUNC_MALLOC_IF is defined in Autoconf. | 45 | AC_REQUIRE([gl_FUNC_MALLOC_POSIX]) |
53 | _AC_FUNC_MALLOC_IF( | 46 | REPLACE_MALLOC_FOR_MALLOC_GNU="$REPLACE_MALLOC_FOR_MALLOC_POSIX" |
54 | [AC_DEFINE([HAVE_MALLOC_GNU], [1], | 47 | if test $REPLACE_MALLOC_FOR_MALLOC_GNU = 0; then |
55 | [Define to 1 if your system has a GNU libc compatible 'malloc' | 48 | _AC_FUNC_MALLOC_IF([], [REPLACE_MALLOC_FOR_MALLOC_GNU=1]) |
56 | function, and to 0 otherwise.])], | 49 | fi |
57 | [AC_DEFINE([HAVE_MALLOC_GNU], [0]) | 50 | ]) |
58 | REPLACE_MALLOC=1 | 51 | |
52 | # gl_FUNC_MALLOC_PTRDIFF | ||
53 | # ---------------------- | ||
54 | # Test whether malloc (N) reliably fails when N exceeds PTRDIFF_MAX, | ||
55 | # and replace malloc otherwise. | ||
56 | AC_DEFUN([gl_FUNC_MALLOC_PTRDIFF], | ||
57 | [ | ||
58 | AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) | ||
59 | AC_REQUIRE([gl_CHECK_MALLOC_PTRDIFF]) | ||
60 | test "$gl_cv_malloc_ptrdiff" = yes || REPLACE_MALLOC_FOR_MALLOC_POSIX=1 | ||
61 | ]) | ||
62 | |||
63 | # Test whether malloc, realloc, calloc refuse to create objects | ||
64 | # larger than what can be expressed in ptrdiff_t. | ||
65 | # Set gl_cv_func_malloc_gnu to yes or no accordingly. | ||
66 | AC_DEFUN([gl_CHECK_MALLOC_PTRDIFF], | ||
67 | [ | ||
68 | AC_CACHE_CHECK([whether malloc is ptrdiff_t safe], | ||
69 | [gl_cv_malloc_ptrdiff], | ||
70 | [AC_COMPILE_IFELSE( | ||
71 | [AC_LANG_PROGRAM( | ||
72 | [[#include <stdint.h> | ||
73 | ]], | ||
74 | [[/* 64-bit ptrdiff_t is so wide that no practical platform | ||
75 | can exceed it. */ | ||
76 | #define WIDE_PTRDIFF (PTRDIFF_MAX >> 31 >> 31 != 0) | ||
77 | |||
78 | /* On rare machines where size_t fits in ptrdiff_t there | ||
79 | is no problem. */ | ||
80 | #define NARROW_SIZE (SIZE_MAX <= PTRDIFF_MAX) | ||
81 | |||
82 | /* glibc 2.30 and later malloc refuses to exceed ptrdiff_t | ||
83 | bounds even on 32-bit platforms. We don't know which | ||
84 | non-glibc systems are safe. */ | ||
85 | #define KNOWN_SAFE (2 < __GLIBC__ + (30 <= __GLIBC_MINOR__)) | ||
86 | |||
87 | #if WIDE_PTRDIFF || NARROW_SIZE || KNOWN_SAFE | ||
88 | return 0; | ||
89 | #else | ||
90 | #error "malloc might not be ptrdiff_t safe" | ||
91 | syntax error | ||
92 | #endif | ||
93 | ]])], | ||
94 | [gl_cv_malloc_ptrdiff=yes], | ||
95 | [gl_cv_malloc_ptrdiff=no]) | ||
59 | ]) | 96 | ]) |
60 | ]) | 97 | ]) |
61 | 98 | ||
62 | # gl_FUNC_MALLOC_POSIX | 99 | # gl_FUNC_MALLOC_POSIX |
63 | # -------------------- | 100 | # -------------------- |
64 | # Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it | 101 | # Test whether 'malloc' is POSIX compliant (sets errno to ENOMEM when it |
65 | # fails), and replace malloc if it is not. | 102 | # fails, and doesn't mess up with ptrdiff_t overflow), and replace |
103 | # malloc if it is not. | ||
66 | AC_DEFUN([gl_FUNC_MALLOC_POSIX], | 104 | AC_DEFUN([gl_FUNC_MALLOC_POSIX], |
67 | [ | 105 | [ |
68 | AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) | 106 | AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) |
107 | AC_REQUIRE([gl_FUNC_MALLOC_PTRDIFF]) | ||
69 | AC_REQUIRE([gl_CHECK_MALLOC_POSIX]) | 108 | AC_REQUIRE([gl_CHECK_MALLOC_POSIX]) |
70 | if test $gl_cv_func_malloc_posix = yes; then | 109 | if test "$gl_cv_func_malloc_posix" = yes; then |
71 | AC_DEFINE([HAVE_MALLOC_POSIX], [1], | 110 | AC_DEFINE([HAVE_MALLOC_POSIX], [1], |
72 | [Define if the 'malloc' function is POSIX compliant.]) | 111 | [Define if malloc, realloc, and calloc set errno on allocation failure.]) |
73 | else | 112 | else |
74 | REPLACE_MALLOC=1 | 113 | REPLACE_MALLOC_FOR_MALLOC_POSIX=1 |
75 | fi | 114 | fi |
76 | ]) | 115 | ]) |
77 | 116 | ||
78 | # Test whether malloc, realloc, calloc are POSIX compliant, | 117 | # Test whether malloc, realloc, calloc set errno to ENOMEM on failure. |
79 | # Set gl_cv_func_malloc_posix to yes or no accordingly. | 118 | # Set gl_cv_func_malloc_posix to yes or no accordingly. |
80 | AC_DEFUN([gl_CHECK_MALLOC_POSIX], | 119 | AC_DEFUN([gl_CHECK_MALLOC_POSIX], |
81 | [ | 120 | [ |
82 | AC_CACHE_CHECK([whether malloc, realloc, calloc are POSIX compliant], | 121 | AC_REQUIRE([AC_CANONICAL_HOST]) |
122 | AC_CACHE_CHECK([whether malloc, realloc, calloc set errno on failure], | ||
83 | [gl_cv_func_malloc_posix], | 123 | [gl_cv_func_malloc_posix], |
84 | [ | 124 | [ |
85 | dnl It is too dangerous to try to allocate a large amount of memory: | 125 | dnl It is too dangerous to try to allocate a large amount of memory: |
86 | dnl some systems go to their knees when you do that. So assume that | 126 | dnl some systems go to their knees when you do that. So assume that |
87 | dnl all Unix implementations of the function are POSIX compliant. | 127 | dnl all Unix implementations of the function set errno on failure, |
88 | AC_COMPILE_IFELSE( | 128 | dnl except on those platforms where we have seen 'test-malloc-gnu', |
89 | [AC_LANG_PROGRAM( | 129 | dnl 'test-realloc-gnu', 'test-calloc-gnu' fail. |
90 | [[]], | 130 | case "$host_os" in |
91 | [[#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ | 131 | mingw*) |
92 | choke me | 132 | gl_cv_func_malloc_posix=no ;; |
93 | #endif | 133 | irix* | solaris*) |
94 | ]])], | 134 | dnl On IRIX 6.5, the three functions return NULL with errno unset |
95 | [gl_cv_func_malloc_posix=yes], | 135 | dnl when the argument is larger than PTRDIFF_MAX. |
96 | [gl_cv_func_malloc_posix=no]) | 136 | dnl On Solaris 11.3, the three functions return NULL with errno set |
137 | dnl to EAGAIN, not ENOMEM, when the argument is larger than | ||
138 | dnl PTRDIFF_MAX. | ||
139 | dnl Here is a test program: | ||
140 | m4_divert_push([KILL]) | ||
141 | #include <errno.h> | ||
142 | #include <stdio.h> | ||
143 | #include <stdlib.h> | ||
144 | #define ptrdiff_t long | ||
145 | #ifndef PTRDIFF_MAX | ||
146 | # define PTRDIFF_MAX ((ptrdiff_t) ((1UL << (8 * sizeof (ptrdiff_t) - 1)) - 1)) | ||
147 | #endif | ||
148 | |||
149 | int main () | ||
150 | { | ||
151 | void *p; | ||
152 | |||
153 | fprintf (stderr, "PTRDIFF_MAX = %lu\n", (unsigned long) PTRDIFF_MAX); | ||
154 | |||
155 | errno = 0; | ||
156 | p = malloc ((unsigned long) PTRDIFF_MAX + 1); | ||
157 | fprintf (stderr, "p=%p errno=%d\n", p, errno); | ||
158 | |||
159 | errno = 0; | ||
160 | p = calloc (PTRDIFF_MAX / 2 + 1, 2); | ||
161 | fprintf (stderr, "p=%p errno=%d\n", p, errno); | ||
162 | |||
163 | errno = 0; | ||
164 | p = realloc (NULL, (unsigned long) PTRDIFF_MAX + 1); | ||
165 | fprintf (stderr, "p=%p errno=%d\n", p, errno); | ||
166 | |||
167 | return 0; | ||
168 | } | ||
169 | m4_divert_pop([KILL]) | ||
170 | gl_cv_func_malloc_posix=no ;; | ||
171 | *) | ||
172 | gl_cv_func_malloc_posix=yes ;; | ||
173 | esac | ||
97 | ]) | 174 | ]) |
98 | ]) | 175 | ]) |
diff --git a/gl/m4/malloca.m4 b/gl/m4/malloca.m4 index 791ce10d..1d777ebe 100644 --- a/gl/m4/malloca.m4 +++ b/gl/m4/malloca.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # malloca.m4 serial 1 | 1 | # malloca.m4 serial 2 |
2 | dnl Copyright (C) 2003-2004, 2006-2007, 2009-2013 Free Software Foundation, | 2 | dnl Copyright (C) 2003-2004, 2006-2007, 2009-2023 Free Software Foundation, |
3 | dnl Inc. | 3 | dnl Inc. |
4 | dnl This file is free software; the Free Software Foundation | 4 | dnl This file is free software; the Free Software Foundation |
5 | dnl gives unlimited permission to copy and/or distribute it, | 5 | dnl gives unlimited permission to copy and/or distribute it, |
@@ -11,5 +11,4 @@ AC_DEFUN([gl_MALLOCA], | |||
11 | dnl @ALLOCA@ and @LTALLOCA@. | 11 | dnl @ALLOCA@ and @LTALLOCA@. |
12 | dnl gl_FUNC_ALLOCA dnl Already brought in by the module dependencies. | 12 | dnl gl_FUNC_ALLOCA dnl Already brought in by the module dependencies. |
13 | AC_REQUIRE([gl_EEMALLOC]) | 13 | AC_REQUIRE([gl_EEMALLOC]) |
14 | AC_REQUIRE([AC_TYPE_LONG_LONG_INT]) | ||
15 | ]) | 14 | ]) |
diff --git a/gl/m4/math_h.m4 b/gl/m4/math_h.m4 index bf0845fd..d2e90ff1 100644 --- a/gl/m4/math_h.m4 +++ b/gl/m4/math_h.m4 | |||
@@ -1,16 +1,16 @@ | |||
1 | # math_h.m4 serial 114 | 1 | # math_h.m4 serial 125 |
2 | dnl Copyright (C) 2007-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | AC_DEFUN([gl_MATH_H], | 7 | AC_DEFUN_ONCE([gl_MATH_H], |
8 | [ | 8 | [ |
9 | AC_REQUIRE([gl_MATH_H_DEFAULTS]) | 9 | AC_REQUIRE([gl_MATH_H_DEFAULTS]) |
10 | gl_CHECK_NEXT_HEADERS([math.h]) | 10 | gl_CHECK_NEXT_HEADERS([math.h]) |
11 | 11 | ||
12 | AC_CACHE_CHECK([whether NAN macro works], [gl_cv_header_math_nan_works], | 12 | AC_CACHE_CHECK([whether NAN macro works], [gl_cv_header_math_nan_works], |
13 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>]], | 13 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]], |
14 | [[/* Solaris 10 has a broken definition of NAN. Other platforms | 14 | [[/* Solaris 10 has a broken definition of NAN. Other platforms |
15 | fail to provide NAN, or provide it only in C99 mode; this | 15 | fail to provide NAN, or provide it only in C99 mode; this |
16 | test only needs to fail when NAN is provided but wrong. */ | 16 | test only needs to fail when NAN is provided but wrong. */ |
@@ -25,7 +25,7 @@ AC_DEFUN([gl_MATH_H], | |||
25 | REPLACE_NAN=1 | 25 | REPLACE_NAN=1 |
26 | fi | 26 | fi |
27 | AC_CACHE_CHECK([whether HUGE_VAL works], [gl_cv_header_math_huge_val_works], | 27 | AC_CACHE_CHECK([whether HUGE_VAL works], [gl_cv_header_math_huge_val_works], |
28 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>]], | 28 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]], |
29 | [[/* Solaris 10 has a broken definition of HUGE_VAL. */ | 29 | [[/* Solaris 10 has a broken definition of HUGE_VAL. */ |
30 | double d = HUGE_VAL; | 30 | double d = HUGE_VAL; |
31 | return d == 0;]])], | 31 | return d == 0;]])], |
@@ -53,272 +53,310 @@ AC_DEFUN([gl_MATH_H], | |||
53 | tanf tanl tanhf trunc truncf truncl]) | 53 | tanf tanl tanhf trunc truncf truncl]) |
54 | ]) | 54 | ]) |
55 | 55 | ||
56 | # gl_MATH_MODULE_INDICATOR([modulename]) | ||
57 | # sets the shell variable that indicates the presence of the given module | ||
58 | # to a C preprocessor expression that will evaluate to 1. | ||
59 | # This macro invocation must not occur in macros that are AC_REQUIREd. | ||
56 | AC_DEFUN([gl_MATH_MODULE_INDICATOR], | 60 | AC_DEFUN([gl_MATH_MODULE_INDICATOR], |
57 | [ | 61 | [ |
58 | dnl Use AC_REQUIRE here, so that the default settings are expanded once only. | 62 | dnl Ensure to expand the default settings once only. |
59 | AC_REQUIRE([gl_MATH_H_DEFAULTS]) | 63 | gl_MATH_H_REQUIRE_DEFAULTS |
60 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) | 64 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) |
61 | dnl Define it also as a C macro, for the benefit of the unit tests. | 65 | dnl Define it also as a C macro, for the benefit of the unit tests. |
62 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) | 66 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) |
63 | ]) | 67 | ]) |
64 | 68 | ||
69 | # Initializes the default values for AC_SUBSTed shell variables. | ||
70 | # This macro must not be AC_REQUIREd. It must only be invoked, and only | ||
71 | # outside of macros or in macros that are not AC_REQUIREd. | ||
72 | AC_DEFUN([gl_MATH_H_REQUIRE_DEFAULTS], | ||
73 | [ | ||
74 | m4_defun(GL_MODULE_INDICATOR_PREFIX[_MATH_H_MODULE_INDICATOR_DEFAULTS], [ | ||
75 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACOSF]) | ||
76 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACOSL]) | ||
77 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ASINF]) | ||
78 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ASINL]) | ||
79 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATANF]) | ||
80 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATANL]) | ||
81 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATAN2F]) | ||
82 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CBRT]) | ||
83 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CBRTF]) | ||
84 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CBRTL]) | ||
85 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CEIL]) | ||
86 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CEILF]) | ||
87 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CEILL]) | ||
88 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPYSIGN]) | ||
89 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPYSIGNF]) | ||
90 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPYSIGNL]) | ||
91 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COSF]) | ||
92 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COSL]) | ||
93 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COSHF]) | ||
94 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPF]) | ||
95 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPL]) | ||
96 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXP2]) | ||
97 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXP2F]) | ||
98 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXP2L]) | ||
99 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPM1]) | ||
100 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPM1F]) | ||
101 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPM1L]) | ||
102 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FABSF]) | ||
103 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FABSL]) | ||
104 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FLOOR]) | ||
105 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FLOORF]) | ||
106 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FLOORL]) | ||
107 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMA]) | ||
108 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMAF]) | ||
109 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMAL]) | ||
110 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMOD]) | ||
111 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMODF]) | ||
112 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMODL]) | ||
113 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREXPF]) | ||
114 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREXP]) | ||
115 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREXPL]) | ||
116 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_HYPOT]) | ||
117 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_HYPOTF]) | ||
118 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_HYPOTL]) | ||
119 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ILOGB]) | ||
120 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ILOGBF]) | ||
121 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ILOGBL]) | ||
122 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISFINITE]) | ||
123 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISINF]) | ||
124 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNAN]) | ||
125 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNANF]) | ||
126 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNAND]) | ||
127 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNANL]) | ||
128 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LDEXPF]) | ||
129 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LDEXPL]) | ||
130 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG]) | ||
131 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGF]) | ||
132 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGL]) | ||
133 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG10]) | ||
134 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG10F]) | ||
135 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG10L]) | ||
136 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG1P]) | ||
137 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG1PF]) | ||
138 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG1PL]) | ||
139 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG2]) | ||
140 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG2F]) | ||
141 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG2L]) | ||
142 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGB]) | ||
143 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGBF]) | ||
144 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGBL]) | ||
145 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MODF]) | ||
146 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MODFF]) | ||
147 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MODFL]) | ||
148 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POWF]) | ||
149 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REMAINDER]) | ||
150 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REMAINDERF]) | ||
151 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REMAINDERL]) | ||
152 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RINT]) | ||
153 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RINTF]) | ||
154 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RINTL]) | ||
155 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ROUND]) | ||
156 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ROUNDF]) | ||
157 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ROUNDL]) | ||
158 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGNBIT]) | ||
159 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SINF]) | ||
160 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SINL]) | ||
161 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SINHF]) | ||
162 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SQRTF]) | ||
163 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SQRTL]) | ||
164 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TANF]) | ||
165 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TANL]) | ||
166 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TANHF]) | ||
167 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNC]) | ||
168 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNCF]) | ||
169 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNCL]) | ||
170 | dnl Support Microsoft deprecated alias function names by default. | ||
171 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_J0], [1]) | ||
172 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_J1], [1]) | ||
173 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_JN], [1]) | ||
174 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_Y0], [1]) | ||
175 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_Y1], [1]) | ||
176 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_YN], [1]) | ||
177 | ]) | ||
178 | m4_require(GL_MODULE_INDICATOR_PREFIX[_MATH_H_MODULE_INDICATOR_DEFAULTS]) | ||
179 | AC_REQUIRE([gl_MATH_H_DEFAULTS]) | ||
180 | ]) | ||
181 | |||
65 | AC_DEFUN([gl_MATH_H_DEFAULTS], | 182 | AC_DEFUN([gl_MATH_H_DEFAULTS], |
66 | [ | 183 | [ |
67 | GNULIB_ACOSF=0; AC_SUBST([GNULIB_ACOSF]) | ||
68 | GNULIB_ACOSL=0; AC_SUBST([GNULIB_ACOSL]) | ||
69 | GNULIB_ASINF=0; AC_SUBST([GNULIB_ASINF]) | ||
70 | GNULIB_ASINL=0; AC_SUBST([GNULIB_ASINL]) | ||
71 | GNULIB_ATANF=0; AC_SUBST([GNULIB_ATANF]) | ||
72 | GNULIB_ATANL=0; AC_SUBST([GNULIB_ATANL]) | ||
73 | GNULIB_ATAN2F=0; AC_SUBST([GNULIB_ATAN2F]) | ||
74 | GNULIB_CBRT=0; AC_SUBST([GNULIB_CBRT]) | ||
75 | GNULIB_CBRTF=0; AC_SUBST([GNULIB_CBRTF]) | ||
76 | GNULIB_CBRTL=0; AC_SUBST([GNULIB_CBRTL]) | ||
77 | GNULIB_CEIL=0; AC_SUBST([GNULIB_CEIL]) | ||
78 | GNULIB_CEILF=0; AC_SUBST([GNULIB_CEILF]) | ||
79 | GNULIB_CEILL=0; AC_SUBST([GNULIB_CEILL]) | ||
80 | GNULIB_COPYSIGN=0; AC_SUBST([GNULIB_COPYSIGN]) | ||
81 | GNULIB_COPYSIGNF=0; AC_SUBST([GNULIB_COPYSIGNF]) | ||
82 | GNULIB_COPYSIGNL=0; AC_SUBST([GNULIB_COPYSIGNL]) | ||
83 | GNULIB_COSF=0; AC_SUBST([GNULIB_COSF]) | ||
84 | GNULIB_COSL=0; AC_SUBST([GNULIB_COSL]) | ||
85 | GNULIB_COSHF=0; AC_SUBST([GNULIB_COSHF]) | ||
86 | GNULIB_EXPF=0; AC_SUBST([GNULIB_EXPF]) | ||
87 | GNULIB_EXPL=0; AC_SUBST([GNULIB_EXPL]) | ||
88 | GNULIB_EXP2=0; AC_SUBST([GNULIB_EXP2]) | ||
89 | GNULIB_EXP2F=0; AC_SUBST([GNULIB_EXP2F]) | ||
90 | GNULIB_EXP2L=0; AC_SUBST([GNULIB_EXP2L]) | ||
91 | GNULIB_EXPM1=0; AC_SUBST([GNULIB_EXPM1]) | ||
92 | GNULIB_EXPM1F=0; AC_SUBST([GNULIB_EXPM1F]) | ||
93 | GNULIB_EXPM1L=0; AC_SUBST([GNULIB_EXPM1L]) | ||
94 | GNULIB_FABSF=0; AC_SUBST([GNULIB_FABSF]) | ||
95 | GNULIB_FABSL=0; AC_SUBST([GNULIB_FABSL]) | ||
96 | GNULIB_FLOOR=0; AC_SUBST([GNULIB_FLOOR]) | ||
97 | GNULIB_FLOORF=0; AC_SUBST([GNULIB_FLOORF]) | ||
98 | GNULIB_FLOORL=0; AC_SUBST([GNULIB_FLOORL]) | ||
99 | GNULIB_FMA=0; AC_SUBST([GNULIB_FMA]) | ||
100 | GNULIB_FMAF=0; AC_SUBST([GNULIB_FMAF]) | ||
101 | GNULIB_FMAL=0; AC_SUBST([GNULIB_FMAL]) | ||
102 | GNULIB_FMOD=0; AC_SUBST([GNULIB_FMOD]) | ||
103 | GNULIB_FMODF=0; AC_SUBST([GNULIB_FMODF]) | ||
104 | GNULIB_FMODL=0; AC_SUBST([GNULIB_FMODL]) | ||
105 | GNULIB_FREXPF=0; AC_SUBST([GNULIB_FREXPF]) | ||
106 | GNULIB_FREXP=0; AC_SUBST([GNULIB_FREXP]) | ||
107 | GNULIB_FREXPL=0; AC_SUBST([GNULIB_FREXPL]) | ||
108 | GNULIB_HYPOT=0; AC_SUBST([GNULIB_HYPOT]) | ||
109 | GNULIB_HYPOTF=0; AC_SUBST([GNULIB_HYPOTF]) | ||
110 | GNULIB_HYPOTL=0; AC_SUBST([GNULIB_HYPOTL]) | ||
111 | GNULIB_ILOGB=0; AC_SUBST([GNULIB_ILOGB]) | ||
112 | GNULIB_ILOGBF=0; AC_SUBST([GNULIB_ILOGBF]) | ||
113 | GNULIB_ILOGBL=0; AC_SUBST([GNULIB_ILOGBL]) | ||
114 | GNULIB_ISFINITE=0; AC_SUBST([GNULIB_ISFINITE]) | ||
115 | GNULIB_ISINF=0; AC_SUBST([GNULIB_ISINF]) | ||
116 | GNULIB_ISNAN=0; AC_SUBST([GNULIB_ISNAN]) | ||
117 | GNULIB_ISNANF=0; AC_SUBST([GNULIB_ISNANF]) | ||
118 | GNULIB_ISNAND=0; AC_SUBST([GNULIB_ISNAND]) | ||
119 | GNULIB_ISNANL=0; AC_SUBST([GNULIB_ISNANL]) | ||
120 | GNULIB_LDEXPF=0; AC_SUBST([GNULIB_LDEXPF]) | ||
121 | GNULIB_LDEXPL=0; AC_SUBST([GNULIB_LDEXPL]) | ||
122 | GNULIB_LOG=0; AC_SUBST([GNULIB_LOG]) | ||
123 | GNULIB_LOGF=0; AC_SUBST([GNULIB_LOGF]) | ||
124 | GNULIB_LOGL=0; AC_SUBST([GNULIB_LOGL]) | ||
125 | GNULIB_LOG10=0; AC_SUBST([GNULIB_LOG10]) | ||
126 | GNULIB_LOG10F=0; AC_SUBST([GNULIB_LOG10F]) | ||
127 | GNULIB_LOG10L=0; AC_SUBST([GNULIB_LOG10L]) | ||
128 | GNULIB_LOG1P=0; AC_SUBST([GNULIB_LOG1P]) | ||
129 | GNULIB_LOG1PF=0; AC_SUBST([GNULIB_LOG1PF]) | ||
130 | GNULIB_LOG1PL=0; AC_SUBST([GNULIB_LOG1PL]) | ||
131 | GNULIB_LOG2=0; AC_SUBST([GNULIB_LOG2]) | ||
132 | GNULIB_LOG2F=0; AC_SUBST([GNULIB_LOG2F]) | ||
133 | GNULIB_LOG2L=0; AC_SUBST([GNULIB_LOG2L]) | ||
134 | GNULIB_LOGB=0; AC_SUBST([GNULIB_LOGB]) | ||
135 | GNULIB_LOGBF=0; AC_SUBST([GNULIB_LOGBF]) | ||
136 | GNULIB_LOGBL=0; AC_SUBST([GNULIB_LOGBL]) | ||
137 | GNULIB_MODF=0; AC_SUBST([GNULIB_MODF]) | ||
138 | GNULIB_MODFF=0; AC_SUBST([GNULIB_MODFF]) | ||
139 | GNULIB_MODFL=0; AC_SUBST([GNULIB_MODFL]) | ||
140 | GNULIB_POWF=0; AC_SUBST([GNULIB_POWF]) | ||
141 | GNULIB_REMAINDER=0; AC_SUBST([GNULIB_REMAINDER]) | ||
142 | GNULIB_REMAINDERF=0; AC_SUBST([GNULIB_REMAINDERF]) | ||
143 | GNULIB_REMAINDERL=0; AC_SUBST([GNULIB_REMAINDERL]) | ||
144 | GNULIB_RINT=0; AC_SUBST([GNULIB_RINT]) | ||
145 | GNULIB_RINTF=0; AC_SUBST([GNULIB_RINTF]) | ||
146 | GNULIB_RINTL=0; AC_SUBST([GNULIB_RINTL]) | ||
147 | GNULIB_ROUND=0; AC_SUBST([GNULIB_ROUND]) | ||
148 | GNULIB_ROUNDF=0; AC_SUBST([GNULIB_ROUNDF]) | ||
149 | GNULIB_ROUNDL=0; AC_SUBST([GNULIB_ROUNDL]) | ||
150 | GNULIB_SIGNBIT=0; AC_SUBST([GNULIB_SIGNBIT]) | ||
151 | GNULIB_SINF=0; AC_SUBST([GNULIB_SINF]) | ||
152 | GNULIB_SINL=0; AC_SUBST([GNULIB_SINL]) | ||
153 | GNULIB_SINHF=0; AC_SUBST([GNULIB_SINHF]) | ||
154 | GNULIB_SQRTF=0; AC_SUBST([GNULIB_SQRTF]) | ||
155 | GNULIB_SQRTL=0; AC_SUBST([GNULIB_SQRTL]) | ||
156 | GNULIB_TANF=0; AC_SUBST([GNULIB_TANF]) | ||
157 | GNULIB_TANL=0; AC_SUBST([GNULIB_TANL]) | ||
158 | GNULIB_TANHF=0; AC_SUBST([GNULIB_TANHF]) | ||
159 | GNULIB_TRUNC=0; AC_SUBST([GNULIB_TRUNC]) | ||
160 | GNULIB_TRUNCF=0; AC_SUBST([GNULIB_TRUNCF]) | ||
161 | GNULIB_TRUNCL=0; AC_SUBST([GNULIB_TRUNCL]) | ||
162 | dnl Assume proper GNU behavior unless another module says otherwise. | 184 | dnl Assume proper GNU behavior unless another module says otherwise. |
163 | HAVE_ACOSF=1; AC_SUBST([HAVE_ACOSF]) | 185 | HAVE_ACOSF=1; AC_SUBST([HAVE_ACOSF]) |
164 | HAVE_ACOSL=1; AC_SUBST([HAVE_ACOSL]) | 186 | HAVE_ACOSL=1; AC_SUBST([HAVE_ACOSL]) |
165 | HAVE_ASINF=1; AC_SUBST([HAVE_ASINF]) | 187 | HAVE_ASINF=1; AC_SUBST([HAVE_ASINF]) |
166 | HAVE_ASINL=1; AC_SUBST([HAVE_ASINL]) | 188 | HAVE_ASINL=1; AC_SUBST([HAVE_ASINL]) |
167 | HAVE_ATANF=1; AC_SUBST([HAVE_ATANF]) | 189 | HAVE_ATANF=1; AC_SUBST([HAVE_ATANF]) |
168 | HAVE_ATANL=1; AC_SUBST([HAVE_ATANL]) | 190 | HAVE_ATANL=1; AC_SUBST([HAVE_ATANL]) |
169 | HAVE_ATAN2F=1; AC_SUBST([HAVE_ATAN2F]) | 191 | HAVE_ATAN2F=1; AC_SUBST([HAVE_ATAN2F]) |
170 | HAVE_CBRT=1; AC_SUBST([HAVE_CBRT]) | 192 | HAVE_CBRT=1; AC_SUBST([HAVE_CBRT]) |
171 | HAVE_CBRTF=1; AC_SUBST([HAVE_CBRTF]) | 193 | HAVE_CBRTF=1; AC_SUBST([HAVE_CBRTF]) |
172 | HAVE_CBRTL=1; AC_SUBST([HAVE_CBRTL]) | 194 | HAVE_CBRTL=1; AC_SUBST([HAVE_CBRTL]) |
173 | HAVE_COPYSIGN=1; AC_SUBST([HAVE_COPYSIGN]) | 195 | HAVE_COPYSIGN=1; AC_SUBST([HAVE_COPYSIGN]) |
174 | HAVE_COPYSIGNL=1; AC_SUBST([HAVE_COPYSIGNL]) | 196 | HAVE_COPYSIGNL=1; AC_SUBST([HAVE_COPYSIGNL]) |
175 | HAVE_COSF=1; AC_SUBST([HAVE_COSF]) | 197 | HAVE_COSF=1; AC_SUBST([HAVE_COSF]) |
176 | HAVE_COSL=1; AC_SUBST([HAVE_COSL]) | 198 | HAVE_COSL=1; AC_SUBST([HAVE_COSL]) |
177 | HAVE_COSHF=1; AC_SUBST([HAVE_COSHF]) | 199 | HAVE_COSHF=1; AC_SUBST([HAVE_COSHF]) |
178 | HAVE_EXPF=1; AC_SUBST([HAVE_EXPF]) | 200 | HAVE_EXPF=1; AC_SUBST([HAVE_EXPF]) |
179 | HAVE_EXPL=1; AC_SUBST([HAVE_EXPL]) | 201 | HAVE_EXPL=1; AC_SUBST([HAVE_EXPL]) |
180 | HAVE_EXPM1=1; AC_SUBST([HAVE_EXPM1]) | 202 | HAVE_EXPM1=1; AC_SUBST([HAVE_EXPM1]) |
181 | HAVE_EXPM1F=1; AC_SUBST([HAVE_EXPM1F]) | 203 | HAVE_EXPM1F=1; AC_SUBST([HAVE_EXPM1F]) |
182 | HAVE_FABSF=1; AC_SUBST([HAVE_FABSF]) | 204 | HAVE_FABSF=1; AC_SUBST([HAVE_FABSF]) |
183 | HAVE_FABSL=1; AC_SUBST([HAVE_FABSL]) | 205 | HAVE_FABSL=1; AC_SUBST([HAVE_FABSL]) |
184 | HAVE_FMA=1; AC_SUBST([HAVE_FMA]) | 206 | HAVE_FMA=1; AC_SUBST([HAVE_FMA]) |
185 | HAVE_FMAF=1; AC_SUBST([HAVE_FMAF]) | 207 | HAVE_FMAF=1; AC_SUBST([HAVE_FMAF]) |
186 | HAVE_FMAL=1; AC_SUBST([HAVE_FMAL]) | 208 | HAVE_FMAL=1; AC_SUBST([HAVE_FMAL]) |
187 | HAVE_FMODF=1; AC_SUBST([HAVE_FMODF]) | 209 | HAVE_FMODF=1; AC_SUBST([HAVE_FMODF]) |
188 | HAVE_FMODL=1; AC_SUBST([HAVE_FMODL]) | 210 | HAVE_FMODL=1; AC_SUBST([HAVE_FMODL]) |
189 | HAVE_FREXPF=1; AC_SUBST([HAVE_FREXPF]) | 211 | HAVE_FREXPF=1; AC_SUBST([HAVE_FREXPF]) |
190 | HAVE_HYPOTF=1; AC_SUBST([HAVE_HYPOTF]) | 212 | HAVE_HYPOTF=1; AC_SUBST([HAVE_HYPOTF]) |
191 | HAVE_HYPOTL=1; AC_SUBST([HAVE_HYPOTL]) | 213 | HAVE_HYPOTL=1; AC_SUBST([HAVE_HYPOTL]) |
192 | HAVE_ILOGB=1; AC_SUBST([HAVE_ILOGB]) | 214 | HAVE_ILOGB=1; AC_SUBST([HAVE_ILOGB]) |
193 | HAVE_ILOGBF=1; AC_SUBST([HAVE_ILOGBF]) | 215 | HAVE_ILOGBF=1; AC_SUBST([HAVE_ILOGBF]) |
194 | HAVE_ILOGBL=1; AC_SUBST([HAVE_ILOGBL]) | 216 | HAVE_ILOGBL=1; AC_SUBST([HAVE_ILOGBL]) |
195 | HAVE_ISNANF=1; AC_SUBST([HAVE_ISNANF]) | 217 | HAVE_ISNANF=1; AC_SUBST([HAVE_ISNANF]) |
196 | HAVE_ISNAND=1; AC_SUBST([HAVE_ISNAND]) | 218 | HAVE_ISNAND=1; AC_SUBST([HAVE_ISNAND]) |
197 | HAVE_ISNANL=1; AC_SUBST([HAVE_ISNANL]) | 219 | HAVE_ISNANL=1; AC_SUBST([HAVE_ISNANL]) |
198 | HAVE_LDEXPF=1; AC_SUBST([HAVE_LDEXPF]) | 220 | HAVE_LDEXPF=1; AC_SUBST([HAVE_LDEXPF]) |
199 | HAVE_LOGF=1; AC_SUBST([HAVE_LOGF]) | 221 | HAVE_LOGF=1; AC_SUBST([HAVE_LOGF]) |
200 | HAVE_LOGL=1; AC_SUBST([HAVE_LOGL]) | 222 | HAVE_LOGL=1; AC_SUBST([HAVE_LOGL]) |
201 | HAVE_LOG10F=1; AC_SUBST([HAVE_LOG10F]) | 223 | HAVE_LOG10F=1; AC_SUBST([HAVE_LOG10F]) |
202 | HAVE_LOG10L=1; AC_SUBST([HAVE_LOG10L]) | 224 | HAVE_LOG10L=1; AC_SUBST([HAVE_LOG10L]) |
203 | HAVE_LOG1P=1; AC_SUBST([HAVE_LOG1P]) | 225 | HAVE_LOG1P=1; AC_SUBST([HAVE_LOG1P]) |
204 | HAVE_LOG1PF=1; AC_SUBST([HAVE_LOG1PF]) | 226 | HAVE_LOG1PF=1; AC_SUBST([HAVE_LOG1PF]) |
205 | HAVE_LOG1PL=1; AC_SUBST([HAVE_LOG1PL]) | 227 | HAVE_LOG1PL=1; AC_SUBST([HAVE_LOG1PL]) |
206 | HAVE_LOGBF=1; AC_SUBST([HAVE_LOGBF]) | 228 | HAVE_LOGBF=1; AC_SUBST([HAVE_LOGBF]) |
207 | HAVE_LOGBL=1; AC_SUBST([HAVE_LOGBL]) | 229 | HAVE_LOGBL=1; AC_SUBST([HAVE_LOGBL]) |
208 | HAVE_MODFF=1; AC_SUBST([HAVE_MODFF]) | 230 | HAVE_MODFF=1; AC_SUBST([HAVE_MODFF]) |
209 | HAVE_MODFL=1; AC_SUBST([HAVE_MODFL]) | 231 | HAVE_MODFL=1; AC_SUBST([HAVE_MODFL]) |
210 | HAVE_POWF=1; AC_SUBST([HAVE_POWF]) | 232 | HAVE_POWF=1; AC_SUBST([HAVE_POWF]) |
211 | HAVE_REMAINDER=1; AC_SUBST([HAVE_REMAINDER]) | 233 | HAVE_REMAINDER=1; AC_SUBST([HAVE_REMAINDER]) |
212 | HAVE_REMAINDERF=1; AC_SUBST([HAVE_REMAINDERF]) | 234 | HAVE_REMAINDERF=1; AC_SUBST([HAVE_REMAINDERF]) |
213 | HAVE_RINT=1; AC_SUBST([HAVE_RINT]) | 235 | HAVE_RINT=1; AC_SUBST([HAVE_RINT]) |
214 | HAVE_RINTL=1; AC_SUBST([HAVE_RINTL]) | 236 | HAVE_RINTL=1; AC_SUBST([HAVE_RINTL]) |
215 | HAVE_SINF=1; AC_SUBST([HAVE_SINF]) | 237 | HAVE_SINF=1; AC_SUBST([HAVE_SINF]) |
216 | HAVE_SINL=1; AC_SUBST([HAVE_SINL]) | 238 | HAVE_SINL=1; AC_SUBST([HAVE_SINL]) |
217 | HAVE_SINHF=1; AC_SUBST([HAVE_SINHF]) | 239 | HAVE_SINHF=1; AC_SUBST([HAVE_SINHF]) |
218 | HAVE_SQRTF=1; AC_SUBST([HAVE_SQRTF]) | 240 | HAVE_SQRTF=1; AC_SUBST([HAVE_SQRTF]) |
219 | HAVE_SQRTL=1; AC_SUBST([HAVE_SQRTL]) | 241 | HAVE_SQRTL=1; AC_SUBST([HAVE_SQRTL]) |
220 | HAVE_TANF=1; AC_SUBST([HAVE_TANF]) | 242 | HAVE_TANF=1; AC_SUBST([HAVE_TANF]) |
221 | HAVE_TANL=1; AC_SUBST([HAVE_TANL]) | 243 | HAVE_TANL=1; AC_SUBST([HAVE_TANL]) |
222 | HAVE_TANHF=1; AC_SUBST([HAVE_TANHF]) | 244 | HAVE_TANHF=1; AC_SUBST([HAVE_TANHF]) |
223 | HAVE_DECL_ACOSL=1; AC_SUBST([HAVE_DECL_ACOSL]) | 245 | HAVE_DECL_ACOSL=1; AC_SUBST([HAVE_DECL_ACOSL]) |
224 | HAVE_DECL_ASINL=1; AC_SUBST([HAVE_DECL_ASINL]) | 246 | HAVE_DECL_ASINL=1; AC_SUBST([HAVE_DECL_ASINL]) |
225 | HAVE_DECL_ATANL=1; AC_SUBST([HAVE_DECL_ATANL]) | 247 | HAVE_DECL_ATANL=1; AC_SUBST([HAVE_DECL_ATANL]) |
226 | HAVE_DECL_CBRTF=1; AC_SUBST([HAVE_DECL_CBRTF]) | 248 | HAVE_DECL_CBRTF=1; AC_SUBST([HAVE_DECL_CBRTF]) |
227 | HAVE_DECL_CBRTL=1; AC_SUBST([HAVE_DECL_CBRTL]) | 249 | HAVE_DECL_CBRTL=1; AC_SUBST([HAVE_DECL_CBRTL]) |
228 | HAVE_DECL_CEILF=1; AC_SUBST([HAVE_DECL_CEILF]) | 250 | HAVE_DECL_CEILF=1; AC_SUBST([HAVE_DECL_CEILF]) |
229 | HAVE_DECL_CEILL=1; AC_SUBST([HAVE_DECL_CEILL]) | 251 | HAVE_DECL_CEILL=1; AC_SUBST([HAVE_DECL_CEILL]) |
230 | HAVE_DECL_COPYSIGNF=1; AC_SUBST([HAVE_DECL_COPYSIGNF]) | 252 | HAVE_DECL_COPYSIGNF=1; AC_SUBST([HAVE_DECL_COPYSIGNF]) |
231 | HAVE_DECL_COSL=1; AC_SUBST([HAVE_DECL_COSL]) | 253 | HAVE_DECL_COSL=1; AC_SUBST([HAVE_DECL_COSL]) |
232 | HAVE_DECL_EXPL=1; AC_SUBST([HAVE_DECL_EXPL]) | 254 | HAVE_DECL_EXPL=1; AC_SUBST([HAVE_DECL_EXPL]) |
233 | HAVE_DECL_EXP2=1; AC_SUBST([HAVE_DECL_EXP2]) | 255 | HAVE_DECL_EXP2=1; AC_SUBST([HAVE_DECL_EXP2]) |
234 | HAVE_DECL_EXP2F=1; AC_SUBST([HAVE_DECL_EXP2F]) | 256 | HAVE_DECL_EXP2F=1; AC_SUBST([HAVE_DECL_EXP2F]) |
235 | HAVE_DECL_EXP2L=1; AC_SUBST([HAVE_DECL_EXP2L]) | 257 | HAVE_DECL_EXP2L=1; AC_SUBST([HAVE_DECL_EXP2L]) |
236 | HAVE_DECL_EXPM1L=1; AC_SUBST([HAVE_DECL_EXPM1L]) | 258 | HAVE_DECL_EXPM1L=1; AC_SUBST([HAVE_DECL_EXPM1L]) |
237 | HAVE_DECL_FLOORF=1; AC_SUBST([HAVE_DECL_FLOORF]) | 259 | HAVE_DECL_FLOORF=1; AC_SUBST([HAVE_DECL_FLOORF]) |
238 | HAVE_DECL_FLOORL=1; AC_SUBST([HAVE_DECL_FLOORL]) | 260 | HAVE_DECL_FLOORL=1; AC_SUBST([HAVE_DECL_FLOORL]) |
239 | HAVE_DECL_FREXPL=1; AC_SUBST([HAVE_DECL_FREXPL]) | 261 | HAVE_DECL_FREXPL=1; AC_SUBST([HAVE_DECL_FREXPL]) |
240 | HAVE_DECL_LDEXPL=1; AC_SUBST([HAVE_DECL_LDEXPL]) | 262 | HAVE_DECL_LDEXPL=1; AC_SUBST([HAVE_DECL_LDEXPL]) |
241 | HAVE_DECL_LOGL=1; AC_SUBST([HAVE_DECL_LOGL]) | 263 | HAVE_DECL_LOGL=1; AC_SUBST([HAVE_DECL_LOGL]) |
242 | HAVE_DECL_LOG10L=1; AC_SUBST([HAVE_DECL_LOG10L]) | 264 | HAVE_DECL_LOG10L=1; AC_SUBST([HAVE_DECL_LOG10L]) |
243 | HAVE_DECL_LOG2=1; AC_SUBST([HAVE_DECL_LOG2]) | 265 | HAVE_DECL_LOG2=1; AC_SUBST([HAVE_DECL_LOG2]) |
244 | HAVE_DECL_LOG2F=1; AC_SUBST([HAVE_DECL_LOG2F]) | 266 | HAVE_DECL_LOG2F=1; AC_SUBST([HAVE_DECL_LOG2F]) |
245 | HAVE_DECL_LOG2L=1; AC_SUBST([HAVE_DECL_LOG2L]) | 267 | HAVE_DECL_LOG2L=1; AC_SUBST([HAVE_DECL_LOG2L]) |
246 | HAVE_DECL_LOGB=1; AC_SUBST([HAVE_DECL_LOGB]) | 268 | HAVE_DECL_LOGB=1; AC_SUBST([HAVE_DECL_LOGB]) |
247 | HAVE_DECL_REMAINDER=1; AC_SUBST([HAVE_DECL_REMAINDER]) | 269 | HAVE_DECL_REMAINDER=1; AC_SUBST([HAVE_DECL_REMAINDER]) |
248 | HAVE_DECL_REMAINDERL=1; AC_SUBST([HAVE_DECL_REMAINDERL]) | 270 | HAVE_DECL_REMAINDERL=1; AC_SUBST([HAVE_DECL_REMAINDERL]) |
249 | HAVE_DECL_RINTF=1; AC_SUBST([HAVE_DECL_RINTF]) | 271 | HAVE_DECL_RINTF=1; AC_SUBST([HAVE_DECL_RINTF]) |
250 | HAVE_DECL_ROUND=1; AC_SUBST([HAVE_DECL_ROUND]) | 272 | HAVE_DECL_ROUND=1; AC_SUBST([HAVE_DECL_ROUND]) |
251 | HAVE_DECL_ROUNDF=1; AC_SUBST([HAVE_DECL_ROUNDF]) | 273 | HAVE_DECL_ROUNDF=1; AC_SUBST([HAVE_DECL_ROUNDF]) |
252 | HAVE_DECL_ROUNDL=1; AC_SUBST([HAVE_DECL_ROUNDL]) | 274 | HAVE_DECL_ROUNDL=1; AC_SUBST([HAVE_DECL_ROUNDL]) |
253 | HAVE_DECL_SINL=1; AC_SUBST([HAVE_DECL_SINL]) | 275 | HAVE_DECL_SINL=1; AC_SUBST([HAVE_DECL_SINL]) |
254 | HAVE_DECL_SQRTL=1; AC_SUBST([HAVE_DECL_SQRTL]) | 276 | HAVE_DECL_SQRTL=1; AC_SUBST([HAVE_DECL_SQRTL]) |
255 | HAVE_DECL_TANL=1; AC_SUBST([HAVE_DECL_TANL]) | 277 | HAVE_DECL_TANL=1; AC_SUBST([HAVE_DECL_TANL]) |
256 | HAVE_DECL_TRUNC=1; AC_SUBST([HAVE_DECL_TRUNC]) | 278 | HAVE_DECL_TRUNC=1; AC_SUBST([HAVE_DECL_TRUNC]) |
257 | HAVE_DECL_TRUNCF=1; AC_SUBST([HAVE_DECL_TRUNCF]) | 279 | HAVE_DECL_TRUNCF=1; AC_SUBST([HAVE_DECL_TRUNCF]) |
258 | HAVE_DECL_TRUNCL=1; AC_SUBST([HAVE_DECL_TRUNCL]) | 280 | HAVE_DECL_TRUNCL=1; AC_SUBST([HAVE_DECL_TRUNCL]) |
259 | REPLACE_CBRTF=0; AC_SUBST([REPLACE_CBRTF]) | 281 | REPLACE_ACOSF=0; AC_SUBST([REPLACE_ACOSF]) |
260 | REPLACE_CBRTL=0; AC_SUBST([REPLACE_CBRTL]) | 282 | REPLACE_ASINF=0; AC_SUBST([REPLACE_ASINF]) |
261 | REPLACE_CEIL=0; AC_SUBST([REPLACE_CEIL]) | 283 | REPLACE_ATANF=0; AC_SUBST([REPLACE_ATANF]) |
262 | REPLACE_CEILF=0; AC_SUBST([REPLACE_CEILF]) | 284 | REPLACE_ATAN2F=0; AC_SUBST([REPLACE_ATAN2F]) |
263 | REPLACE_CEILL=0; AC_SUBST([REPLACE_CEILL]) | 285 | REPLACE_CBRTF=0; AC_SUBST([REPLACE_CBRTF]) |
264 | REPLACE_EXPM1=0; AC_SUBST([REPLACE_EXPM1]) | 286 | REPLACE_CBRTL=0; AC_SUBST([REPLACE_CBRTL]) |
265 | REPLACE_EXPM1F=0; AC_SUBST([REPLACE_EXPM1F]) | 287 | REPLACE_CEIL=0; AC_SUBST([REPLACE_CEIL]) |
266 | REPLACE_EXP2=0; AC_SUBST([REPLACE_EXP2]) | 288 | REPLACE_CEILF=0; AC_SUBST([REPLACE_CEILF]) |
267 | REPLACE_EXP2L=0; AC_SUBST([REPLACE_EXP2L]) | 289 | REPLACE_CEILL=0; AC_SUBST([REPLACE_CEILL]) |
268 | REPLACE_FABSL=0; AC_SUBST([REPLACE_FABSL]) | 290 | REPLACE_COSF=0; AC_SUBST([REPLACE_COSF]) |
269 | REPLACE_FLOOR=0; AC_SUBST([REPLACE_FLOOR]) | 291 | REPLACE_COSHF=0; AC_SUBST([REPLACE_COSHF]) |
270 | REPLACE_FLOORF=0; AC_SUBST([REPLACE_FLOORF]) | 292 | REPLACE_EXPF=0; AC_SUBST([REPLACE_EXPF]) |
271 | REPLACE_FLOORL=0; AC_SUBST([REPLACE_FLOORL]) | 293 | REPLACE_EXPL=0; AC_SUBST([REPLACE_EXPL]) |
272 | REPLACE_FMA=0; AC_SUBST([REPLACE_FMA]) | 294 | REPLACE_EXPM1=0; AC_SUBST([REPLACE_EXPM1]) |
273 | REPLACE_FMAF=0; AC_SUBST([REPLACE_FMAF]) | 295 | REPLACE_EXPM1F=0; AC_SUBST([REPLACE_EXPM1F]) |
274 | REPLACE_FMAL=0; AC_SUBST([REPLACE_FMAL]) | 296 | REPLACE_EXPM1L=0; AC_SUBST([REPLACE_EXPM1L]) |
275 | REPLACE_FMOD=0; AC_SUBST([REPLACE_FMOD]) | 297 | REPLACE_EXP2=0; AC_SUBST([REPLACE_EXP2]) |
276 | REPLACE_FMODF=0; AC_SUBST([REPLACE_FMODF]) | 298 | REPLACE_EXP2L=0; AC_SUBST([REPLACE_EXP2L]) |
277 | REPLACE_FMODL=0; AC_SUBST([REPLACE_FMODL]) | 299 | REPLACE_FABSL=0; AC_SUBST([REPLACE_FABSL]) |
278 | REPLACE_FREXPF=0; AC_SUBST([REPLACE_FREXPF]) | 300 | REPLACE_FLOOR=0; AC_SUBST([REPLACE_FLOOR]) |
279 | REPLACE_FREXP=0; AC_SUBST([REPLACE_FREXP]) | 301 | REPLACE_FLOORF=0; AC_SUBST([REPLACE_FLOORF]) |
280 | REPLACE_FREXPL=0; AC_SUBST([REPLACE_FREXPL]) | 302 | REPLACE_FLOORL=0; AC_SUBST([REPLACE_FLOORL]) |
281 | REPLACE_HUGE_VAL=0; AC_SUBST([REPLACE_HUGE_VAL]) | 303 | REPLACE_FMA=0; AC_SUBST([REPLACE_FMA]) |
282 | REPLACE_HYPOT=0; AC_SUBST([REPLACE_HYPOT]) | 304 | REPLACE_FMAF=0; AC_SUBST([REPLACE_FMAF]) |
283 | REPLACE_HYPOTF=0; AC_SUBST([REPLACE_HYPOTF]) | 305 | REPLACE_FMAL=0; AC_SUBST([REPLACE_FMAL]) |
284 | REPLACE_HYPOTL=0; AC_SUBST([REPLACE_HYPOTL]) | 306 | REPLACE_FMOD=0; AC_SUBST([REPLACE_FMOD]) |
285 | REPLACE_ILOGB=0; AC_SUBST([REPLACE_ILOGB]) | 307 | REPLACE_FMODF=0; AC_SUBST([REPLACE_FMODF]) |
286 | REPLACE_ILOGBF=0; AC_SUBST([REPLACE_ILOGBF]) | 308 | REPLACE_FMODL=0; AC_SUBST([REPLACE_FMODL]) |
287 | REPLACE_ISFINITE=0; AC_SUBST([REPLACE_ISFINITE]) | 309 | REPLACE_FREXPF=0; AC_SUBST([REPLACE_FREXPF]) |
288 | REPLACE_ISINF=0; AC_SUBST([REPLACE_ISINF]) | 310 | REPLACE_FREXP=0; AC_SUBST([REPLACE_FREXP]) |
289 | REPLACE_ISNAN=0; AC_SUBST([REPLACE_ISNAN]) | 311 | REPLACE_FREXPL=0; AC_SUBST([REPLACE_FREXPL]) |
290 | REPLACE_LDEXPL=0; AC_SUBST([REPLACE_LDEXPL]) | 312 | REPLACE_HUGE_VAL=0; AC_SUBST([REPLACE_HUGE_VAL]) |
291 | REPLACE_LOG=0; AC_SUBST([REPLACE_LOG]) | 313 | REPLACE_HYPOT=0; AC_SUBST([REPLACE_HYPOT]) |
292 | REPLACE_LOGF=0; AC_SUBST([REPLACE_LOGF]) | 314 | REPLACE_HYPOTF=0; AC_SUBST([REPLACE_HYPOTF]) |
293 | REPLACE_LOGL=0; AC_SUBST([REPLACE_LOGL]) | 315 | REPLACE_HYPOTL=0; AC_SUBST([REPLACE_HYPOTL]) |
294 | REPLACE_LOG10=0; AC_SUBST([REPLACE_LOG10]) | 316 | REPLACE_ILOGB=0; AC_SUBST([REPLACE_ILOGB]) |
295 | REPLACE_LOG10F=0; AC_SUBST([REPLACE_LOG10F]) | 317 | REPLACE_ILOGBF=0; AC_SUBST([REPLACE_ILOGBF]) |
296 | REPLACE_LOG10L=0; AC_SUBST([REPLACE_LOG10L]) | 318 | REPLACE_ILOGBL=0; AC_SUBST([REPLACE_ILOGBL]) |
297 | REPLACE_LOG1P=0; AC_SUBST([REPLACE_LOG1P]) | 319 | REPLACE_ISFINITE=0; AC_SUBST([REPLACE_ISFINITE]) |
298 | REPLACE_LOG1PF=0; AC_SUBST([REPLACE_LOG1PF]) | 320 | REPLACE_ISINF=0; AC_SUBST([REPLACE_ISINF]) |
299 | REPLACE_LOG1PL=0; AC_SUBST([REPLACE_LOG1PL]) | 321 | REPLACE_ISNAN=0; AC_SUBST([REPLACE_ISNAN]) |
300 | REPLACE_LOG2=0; AC_SUBST([REPLACE_LOG2]) | 322 | REPLACE_LDEXPL=0; AC_SUBST([REPLACE_LDEXPL]) |
301 | REPLACE_LOG2F=0; AC_SUBST([REPLACE_LOG2F]) | 323 | REPLACE_LOG=0; AC_SUBST([REPLACE_LOG]) |
302 | REPLACE_LOG2L=0; AC_SUBST([REPLACE_LOG2L]) | 324 | REPLACE_LOGF=0; AC_SUBST([REPLACE_LOGF]) |
303 | REPLACE_LOGB=0; AC_SUBST([REPLACE_LOGB]) | 325 | REPLACE_LOGL=0; AC_SUBST([REPLACE_LOGL]) |
304 | REPLACE_LOGBF=0; AC_SUBST([REPLACE_LOGBF]) | 326 | REPLACE_LOG10=0; AC_SUBST([REPLACE_LOG10]) |
305 | REPLACE_LOGBL=0; AC_SUBST([REPLACE_LOGBL]) | 327 | REPLACE_LOG10F=0; AC_SUBST([REPLACE_LOG10F]) |
306 | REPLACE_MODF=0; AC_SUBST([REPLACE_MODF]) | 328 | REPLACE_LOG10L=0; AC_SUBST([REPLACE_LOG10L]) |
307 | REPLACE_MODFF=0; AC_SUBST([REPLACE_MODFF]) | 329 | REPLACE_LOG1P=0; AC_SUBST([REPLACE_LOG1P]) |
308 | REPLACE_MODFL=0; AC_SUBST([REPLACE_MODFL]) | 330 | REPLACE_LOG1PF=0; AC_SUBST([REPLACE_LOG1PF]) |
309 | REPLACE_NAN=0; AC_SUBST([REPLACE_NAN]) | 331 | REPLACE_LOG1PL=0; AC_SUBST([REPLACE_LOG1PL]) |
310 | REPLACE_REMAINDER=0; AC_SUBST([REPLACE_REMAINDER]) | 332 | REPLACE_LOG2=0; AC_SUBST([REPLACE_LOG2]) |
311 | REPLACE_REMAINDERF=0; AC_SUBST([REPLACE_REMAINDERF]) | 333 | REPLACE_LOG2F=0; AC_SUBST([REPLACE_LOG2F]) |
312 | REPLACE_REMAINDERL=0; AC_SUBST([REPLACE_REMAINDERL]) | 334 | REPLACE_LOG2L=0; AC_SUBST([REPLACE_LOG2L]) |
313 | REPLACE_ROUND=0; AC_SUBST([REPLACE_ROUND]) | 335 | REPLACE_LOGB=0; AC_SUBST([REPLACE_LOGB]) |
314 | REPLACE_ROUNDF=0; AC_SUBST([REPLACE_ROUNDF]) | 336 | REPLACE_LOGBF=0; AC_SUBST([REPLACE_LOGBF]) |
315 | REPLACE_ROUNDL=0; AC_SUBST([REPLACE_ROUNDL]) | 337 | REPLACE_LOGBL=0; AC_SUBST([REPLACE_LOGBL]) |
316 | REPLACE_SIGNBIT=0; AC_SUBST([REPLACE_SIGNBIT]) | 338 | REPLACE_MODF=0; AC_SUBST([REPLACE_MODF]) |
317 | REPLACE_SIGNBIT_USING_GCC=0; AC_SUBST([REPLACE_SIGNBIT_USING_GCC]) | 339 | REPLACE_MODFF=0; AC_SUBST([REPLACE_MODFF]) |
318 | REPLACE_SQRTL=0; AC_SUBST([REPLACE_SQRTL]) | 340 | REPLACE_MODFL=0; AC_SUBST([REPLACE_MODFL]) |
319 | REPLACE_TRUNC=0; AC_SUBST([REPLACE_TRUNC]) | 341 | REPLACE_NAN=0; AC_SUBST([REPLACE_NAN]) |
320 | REPLACE_TRUNCF=0; AC_SUBST([REPLACE_TRUNCF]) | 342 | REPLACE_REMAINDER=0; AC_SUBST([REPLACE_REMAINDER]) |
321 | REPLACE_TRUNCL=0; AC_SUBST([REPLACE_TRUNCL]) | 343 | REPLACE_REMAINDERF=0; AC_SUBST([REPLACE_REMAINDERF]) |
344 | REPLACE_REMAINDERL=0; AC_SUBST([REPLACE_REMAINDERL]) | ||
345 | REPLACE_RINTL=0; AC_SUBST([REPLACE_RINTL]) | ||
346 | REPLACE_ROUND=0; AC_SUBST([REPLACE_ROUND]) | ||
347 | REPLACE_ROUNDF=0; AC_SUBST([REPLACE_ROUNDF]) | ||
348 | REPLACE_ROUNDL=0; AC_SUBST([REPLACE_ROUNDL]) | ||
349 | REPLACE_SIGNBIT=0; AC_SUBST([REPLACE_SIGNBIT]) | ||
350 | REPLACE_SIGNBIT_USING_BUILTINS=0; AC_SUBST([REPLACE_SIGNBIT_USING_BUILTINS]) | ||
351 | REPLACE_SINF=0; AC_SUBST([REPLACE_SINF]) | ||
352 | REPLACE_SINHF=0; AC_SUBST([REPLACE_SINHF]) | ||
353 | REPLACE_SQRTF=0; AC_SUBST([REPLACE_SQRTF]) | ||
354 | REPLACE_SQRTL=0; AC_SUBST([REPLACE_SQRTL]) | ||
355 | REPLACE_TANF=0; AC_SUBST([REPLACE_TANF]) | ||
356 | REPLACE_TANHF=0; AC_SUBST([REPLACE_TANHF]) | ||
357 | REPLACE_TRUNC=0; AC_SUBST([REPLACE_TRUNC]) | ||
358 | REPLACE_TRUNCF=0; AC_SUBST([REPLACE_TRUNCF]) | ||
359 | REPLACE_TRUNCL=0; AC_SUBST([REPLACE_TRUNCL]) | ||
322 | ]) | 360 | ]) |
323 | 361 | ||
324 | # gl_LONG_DOUBLE_VS_DOUBLE | 362 | # gl_LONG_DOUBLE_VS_DOUBLE |
diff --git a/gl/m4/mbrtowc.m4 b/gl/m4/mbrtowc.m4 index 4c9f3886..bb393041 100644 --- a/gl/m4/mbrtowc.m4 +++ b/gl/m4/mbrtowc.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # mbrtowc.m4 serial 25 | 1 | # mbrtowc.m4 serial 38 -*- coding: utf-8 -*- |
2 | dnl Copyright (C) 2001-2002, 2004-2005, 2008-2013 Free Software Foundation, | 2 | dnl Copyright (C) 2001-2002, 2004-2005, 2008-2023 Free Software Foundation, |
3 | dnl Inc. | 3 | dnl Inc. |
4 | dnl This file is free software; the Free Software Foundation | 4 | dnl This file is free software; the Free Software Foundation |
5 | dnl gives unlimited permission to copy and/or distribute it, | 5 | dnl gives unlimited permission to copy and/or distribute it, |
@@ -8,6 +8,8 @@ dnl with or without modifications, as long as this notice is preserved. | |||
8 | AC_DEFUN([gl_FUNC_MBRTOWC], | 8 | AC_DEFUN([gl_FUNC_MBRTOWC], |
9 | [ | 9 | [ |
10 | AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) | 10 | AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) |
11 | AC_REQUIRE([gl_PTHREADLIB]) | ||
12 | AC_CHECK_HEADERS_ONCE([threads.h]) | ||
11 | 13 | ||
12 | AC_REQUIRE([AC_TYPE_MBSTATE_T]) | 14 | AC_REQUIRE([AC_TYPE_MBSTATE_T]) |
13 | gl_MBSTATE_T_BROKEN | 15 | gl_MBSTATE_T_BROKEN |
@@ -16,15 +18,8 @@ AC_DEFUN([gl_FUNC_MBRTOWC], | |||
16 | if test $ac_cv_func_mbrtowc = no; then | 18 | if test $ac_cv_func_mbrtowc = no; then |
17 | HAVE_MBRTOWC=0 | 19 | HAVE_MBRTOWC=0 |
18 | AC_CHECK_DECLS([mbrtowc],,, [[ | 20 | AC_CHECK_DECLS([mbrtowc],,, [[ |
19 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | 21 | #include <wchar.h> |
20 | <wchar.h>. | 22 | ]]) |
21 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | ||
22 | included before <wchar.h>. */ | ||
23 | #include <stddef.h> | ||
24 | #include <stdio.h> | ||
25 | #include <time.h> | ||
26 | #include <wchar.h> | ||
27 | ]]) | ||
28 | if test $ac_cv_have_decl_mbrtowc = yes; then | 23 | if test $ac_cv_have_decl_mbrtowc = yes; then |
29 | dnl On Minix 3.1.8, the system's <wchar.h> declares mbrtowc() although | 24 | dnl On Minix 3.1.8, the system's <wchar.h> declares mbrtowc() although |
30 | dnl it does not have the function. Avoid a collision with gnulib's | 25 | dnl it does not have the function. Avoid a collision with gnulib's |
@@ -39,6 +34,9 @@ AC_DEFUN([gl_FUNC_MBRTOWC], | |||
39 | gl_MBRTOWC_NULL_ARG2 | 34 | gl_MBRTOWC_NULL_ARG2 |
40 | gl_MBRTOWC_RETVAL | 35 | gl_MBRTOWC_RETVAL |
41 | gl_MBRTOWC_NUL_RETVAL | 36 | gl_MBRTOWC_NUL_RETVAL |
37 | gl_MBRTOWC_STORES_INCOMPLETE | ||
38 | gl_MBRTOWC_EMPTY_INPUT | ||
39 | gl_MBRTOWC_C_LOCALE | ||
42 | case "$gl_cv_func_mbrtowc_null_arg1" in | 40 | case "$gl_cv_func_mbrtowc_null_arg1" in |
43 | *yes) ;; | 41 | *yes) ;; |
44 | *) AC_DEFINE([MBRTOWC_NULL_ARG1_BUG], [1], | 42 | *) AC_DEFINE([MBRTOWC_NULL_ARG1_BUG], [1], |
@@ -67,8 +65,47 @@ AC_DEFUN([gl_FUNC_MBRTOWC], | |||
67 | REPLACE_MBRTOWC=1 | 65 | REPLACE_MBRTOWC=1 |
68 | ;; | 66 | ;; |
69 | esac | 67 | esac |
68 | case "$gl_cv_func_mbrtowc_stores_incomplete" in | ||
69 | *no) ;; | ||
70 | *) AC_DEFINE([MBRTOWC_STORES_INCOMPLETE_BUG], [1], | ||
71 | [Define if the mbrtowc function stores a wide character when reporting incomplete input.]) | ||
72 | REPLACE_MBRTOWC=1 | ||
73 | ;; | ||
74 | esac | ||
75 | case "$gl_cv_func_mbrtowc_empty_input" in | ||
76 | *yes) ;; | ||
77 | *) AC_DEFINE([MBRTOWC_EMPTY_INPUT_BUG], [1], | ||
78 | [Define if the mbrtowc function does not return (size_t) -2 | ||
79 | for empty input.]) | ||
80 | REPLACE_MBRTOWC=1 | ||
81 | ;; | ||
82 | esac | ||
83 | case "$gl_cv_func_mbrtowc_C_locale_sans_EILSEQ" in | ||
84 | *yes) ;; | ||
85 | *) AC_DEFINE([MBRTOWC_IN_C_LOCALE_MAYBE_EILSEQ], [1], | ||
86 | [Define if the mbrtowc function may signal encoding errors in the C locale.]) | ||
87 | REPLACE_MBRTOWC=1 | ||
88 | ;; | ||
89 | esac | ||
70 | fi | 90 | fi |
71 | fi | 91 | fi |
92 | if test $REPLACE_MBSTATE_T = 1; then | ||
93 | case "$host_os" in | ||
94 | mingw*) LIB_MBRTOWC= ;; | ||
95 | *) | ||
96 | gl_WEAK_SYMBOLS | ||
97 | case "$gl_cv_have_weak" in | ||
98 | *yes) LIB_MBRTOWC= ;; | ||
99 | *) LIB_MBRTOWC="$LIBPTHREAD" ;; | ||
100 | esac | ||
101 | ;; | ||
102 | esac | ||
103 | else | ||
104 | LIB_MBRTOWC= | ||
105 | fi | ||
106 | dnl LIB_MBRTOWC is expected to be '-pthread' or '-lpthread' on AIX | ||
107 | dnl with gcc or xlc, and empty otherwise. | ||
108 | AC_SUBST([LIB_MBRTOWC]) | ||
72 | ]) | 109 | ]) |
73 | 110 | ||
74 | dnl Test whether mbsinit() and mbrtowc() need to be overridden in a way that | 111 | dnl Test whether mbsinit() and mbrtowc() need to be overridden in a way that |
@@ -80,11 +117,19 @@ dnl avoid inconsistencies. | |||
80 | AC_DEFUN([gl_MBSTATE_T_BROKEN], | 117 | AC_DEFUN([gl_MBSTATE_T_BROKEN], |
81 | [ | 118 | [ |
82 | AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) | 119 | AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) |
120 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
83 | 121 | ||
84 | AC_REQUIRE([AC_TYPE_MBSTATE_T]) | 122 | AC_REQUIRE([AC_TYPE_MBSTATE_T]) |
85 | AC_CHECK_FUNCS_ONCE([mbsinit]) | 123 | AC_CHECK_FUNCS_ONCE([mbsinit]) |
86 | AC_CHECK_FUNCS_ONCE([mbrtowc]) | 124 | AC_CHECK_FUNCS_ONCE([mbrtowc]) |
87 | if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then | 125 | dnl On native Windows, we know exactly how mbsinit() behaves and don't need |
126 | dnl to override it, even if - like on MSVC - mbsinit() is only defined as | ||
127 | dnl an inline function, not as a global function. | ||
128 | if case "$host_os" in | ||
129 | mingw*) true ;; | ||
130 | *) test $ac_cv_func_mbsinit = yes ;; | ||
131 | esac \ | ||
132 | && test $ac_cv_func_mbrtowc = yes; then | ||
88 | gl_MBRTOWC_INCOMPLETE_STATE | 133 | gl_MBRTOWC_INCOMPLETE_STATE |
89 | gl_MBRTOWC_SANITYCHECK | 134 | gl_MBRTOWC_SANITYCHECK |
90 | REPLACE_MBSTATE_T=0 | 135 | REPLACE_MBSTATE_T=0 |
@@ -109,6 +154,7 @@ AC_DEFUN([gl_MBRTOWC_INCOMPLETE_STATE], | |||
109 | [ | 154 | [ |
110 | AC_REQUIRE([AC_PROG_CC]) | 155 | AC_REQUIRE([AC_PROG_CC]) |
111 | AC_REQUIRE([gt_LOCALE_JA]) | 156 | AC_REQUIRE([gt_LOCALE_JA]) |
157 | AC_REQUIRE([gt_LOCALE_FR_UTF8]) | ||
112 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | 158 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles |
113 | AC_CACHE_CHECK([whether mbrtowc handles incomplete characters], | 159 | AC_CACHE_CHECK([whether mbrtowc handles incomplete characters], |
114 | [gl_cv_func_mbrtowc_incomplete_state], | 160 | [gl_cv_func_mbrtowc_incomplete_state], |
@@ -128,13 +174,6 @@ changequote([,])dnl | |||
128 | [AC_LANG_SOURCE([[ | 174 | [AC_LANG_SOURCE([[ |
129 | #include <locale.h> | 175 | #include <locale.h> |
130 | #include <string.h> | 176 | #include <string.h> |
131 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | ||
132 | <wchar.h>. | ||
133 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | ||
134 | included before <wchar.h>. */ | ||
135 | #include <stddef.h> | ||
136 | #include <stdio.h> | ||
137 | #include <time.h> | ||
138 | #include <wchar.h> | 177 | #include <wchar.h> |
139 | int main () | 178 | int main () |
140 | { | 179 | { |
@@ -147,13 +186,39 @@ int main () | |||
147 | memset (&state, '\0', sizeof (mbstate_t)); | 186 | memset (&state, '\0', sizeof (mbstate_t)); |
148 | if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) | 187 | if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) |
149 | if (mbsinit (&state)) | 188 | if (mbsinit (&state)) |
150 | return 1; | 189 | return 2; |
190 | } | ||
191 | return 0; | ||
192 | }]])], | ||
193 | [gl_cv_func_mbrtowc_incomplete_state=yes], | ||
194 | [gl_cv_func_mbrtowc_incomplete_state=no], | ||
195 | [:]) | ||
196 | else | ||
197 | if test $LOCALE_FR_UTF8 != none; then | ||
198 | AC_RUN_IFELSE( | ||
199 | [AC_LANG_SOURCE([[ | ||
200 | #include <locale.h> | ||
201 | #include <string.h> | ||
202 | #include <wchar.h> | ||
203 | int main () | ||
204 | { | ||
205 | if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) | ||
206 | { | ||
207 | const char input[] = "B\303\274\303\237er"; /* "Büßer" */ | ||
208 | mbstate_t state; | ||
209 | wchar_t wc; | ||
210 | |||
211 | memset (&state, '\0', sizeof (mbstate_t)); | ||
212 | if (mbrtowc (&wc, input + 1, 1, &state) == (size_t)(-2)) | ||
213 | if (mbsinit (&state)) | ||
214 | return 2; | ||
151 | } | 215 | } |
152 | return 0; | 216 | return 0; |
153 | }]])], | 217 | }]])], |
154 | [gl_cv_func_mbrtowc_incomplete_state=yes], | 218 | [gl_cv_func_mbrtowc_incomplete_state=yes], |
155 | [gl_cv_func_mbrtowc_incomplete_state=no], | 219 | [gl_cv_func_mbrtowc_incomplete_state=no], |
156 | [:]) | 220 | [:]) |
221 | fi | ||
157 | fi | 222 | fi |
158 | ]) | 223 | ]) |
159 | ]) | 224 | ]) |
@@ -185,13 +250,6 @@ changequote([,])dnl | |||
185 | #include <locale.h> | 250 | #include <locale.h> |
186 | #include <stdlib.h> | 251 | #include <stdlib.h> |
187 | #include <string.h> | 252 | #include <string.h> |
188 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | ||
189 | <wchar.h>. | ||
190 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | ||
191 | included before <wchar.h>. */ | ||
192 | #include <stddef.h> | ||
193 | #include <stdio.h> | ||
194 | #include <time.h> | ||
195 | #include <wchar.h> | 253 | #include <wchar.h> |
196 | int main () | 254 | int main () |
197 | { | 255 | { |
@@ -207,7 +265,7 @@ int main () | |||
207 | memset (&state, '\0', sizeof (mbstate_t)); | 265 | memset (&state, '\0', sizeof (mbstate_t)); |
208 | if (mbrtowc (&wc, input + 3, 6, &state) != 4 | 266 | if (mbrtowc (&wc, input + 3, 6, &state) != 4 |
209 | && mbtowc (&wc, input + 3, 6) == 4) | 267 | && mbtowc (&wc, input + 3, 6) == 4) |
210 | return 1; | 268 | return 2; |
211 | } | 269 | } |
212 | return 0; | 270 | return 0; |
213 | }]])], | 271 | }]])], |
@@ -245,13 +303,6 @@ changequote([,])dnl | |||
245 | #include <locale.h> | 303 | #include <locale.h> |
246 | #include <stdlib.h> | 304 | #include <stdlib.h> |
247 | #include <string.h> | 305 | #include <string.h> |
248 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | ||
249 | <wchar.h>. | ||
250 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | ||
251 | included before <wchar.h>. */ | ||
252 | #include <stddef.h> | ||
253 | #include <stdio.h> | ||
254 | #include <time.h> | ||
255 | #include <wchar.h> | 306 | #include <wchar.h> |
256 | int main () | 307 | int main () |
257 | { | 308 | { |
@@ -314,13 +365,6 @@ changequote([,])dnl | |||
314 | [AC_LANG_SOURCE([[ | 365 | [AC_LANG_SOURCE([[ |
315 | #include <locale.h> | 366 | #include <locale.h> |
316 | #include <string.h> | 367 | #include <string.h> |
317 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | ||
318 | <wchar.h>. | ||
319 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | ||
320 | included before <wchar.h>. */ | ||
321 | #include <stddef.h> | ||
322 | #include <stdio.h> | ||
323 | #include <time.h> | ||
324 | #include <wchar.h> | 368 | #include <wchar.h> |
325 | int main () | 369 | int main () |
326 | { | 370 | { |
@@ -335,7 +379,7 @@ int main () | |||
335 | mbrtowc (&wc, NULL, 5, &state); | 379 | mbrtowc (&wc, NULL, 5, &state); |
336 | /* Check that wc was not modified. */ | 380 | /* Check that wc was not modified. */ |
337 | if (wc != (wchar_t) 0xBADFACE) | 381 | if (wc != (wchar_t) 0xBADFACE) |
338 | return 1; | 382 | return 2; |
339 | } | 383 | } |
340 | return 0; | 384 | return 0; |
341 | }]])], | 385 | }]])], |
@@ -376,13 +420,6 @@ changequote([,])dnl | |||
376 | [AC_LANG_SOURCE([[ | 420 | [AC_LANG_SOURCE([[ |
377 | #include <locale.h> | 421 | #include <locale.h> |
378 | #include <string.h> | 422 | #include <string.h> |
379 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | ||
380 | <wchar.h>. | ||
381 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | ||
382 | included before <wchar.h>. */ | ||
383 | #include <stddef.h> | ||
384 | #include <stdio.h> | ||
385 | #include <time.h> | ||
386 | #include <wchar.h> | 423 | #include <wchar.h> |
387 | int main () | 424 | int main () |
388 | { | 425 | { |
@@ -504,13 +541,6 @@ changequote([,])dnl | |||
504 | [AC_LANG_SOURCE([[ | 541 | [AC_LANG_SOURCE([[ |
505 | #include <locale.h> | 542 | #include <locale.h> |
506 | #include <string.h> | 543 | #include <string.h> |
507 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | ||
508 | <wchar.h>. | ||
509 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | ||
510 | included before <wchar.h>. */ | ||
511 | #include <stddef.h> | ||
512 | #include <stdio.h> | ||
513 | #include <time.h> | ||
514 | #include <wchar.h> | 544 | #include <wchar.h> |
515 | int main () | 545 | int main () |
516 | { | 546 | { |
@@ -522,7 +552,7 @@ int main () | |||
522 | 552 | ||
523 | memset (&state, '\0', sizeof (mbstate_t)); | 553 | memset (&state, '\0', sizeof (mbstate_t)); |
524 | if (mbrtowc (&wc, "", 1, &state) != 0) | 554 | if (mbrtowc (&wc, "", 1, &state) != 0) |
525 | return 1; | 555 | return 2; |
526 | } | 556 | } |
527 | return 0; | 557 | return 0; |
528 | }]])], | 558 | }]])], |
@@ -533,11 +563,206 @@ int main () | |||
533 | ]) | 563 | ]) |
534 | ]) | 564 | ]) |
535 | 565 | ||
536 | # Prerequisites of lib/mbrtowc.c. | 566 | dnl Test whether mbrtowc stores a wide character when reporting incomplete |
567 | dnl input. | ||
568 | |||
569 | AC_DEFUN([gl_MBRTOWC_STORES_INCOMPLETE], | ||
570 | [ | ||
571 | AC_REQUIRE([AC_PROG_CC]) | ||
572 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | ||
573 | AC_CACHE_CHECK([whether mbrtowc stores incomplete characters], | ||
574 | [gl_cv_func_mbrtowc_stores_incomplete], | ||
575 | [ | ||
576 | dnl Initial guess, used when cross-compiling or when no suitable locale | ||
577 | dnl is present. | ||
578 | changequote(,)dnl | ||
579 | case "$host_os" in | ||
580 | # Guess yes on native Windows. | ||
581 | mingw*) gl_cv_func_mbrtowc_stores_incomplete="guessing yes" ;; | ||
582 | *) gl_cv_func_mbrtowc_stores_incomplete="guessing no" ;; | ||
583 | esac | ||
584 | changequote([,])dnl | ||
585 | case "$host_os" in | ||
586 | mingw*) | ||
587 | AC_RUN_IFELSE( | ||
588 | [AC_LANG_SOURCE([[ | ||
589 | #include <locale.h> | ||
590 | #include <string.h> | ||
591 | #include <wchar.h> | ||
592 | int main () | ||
593 | { | ||
594 | int result = 0; | ||
595 | if (setlocale (LC_ALL, "French_France.65001") != NULL) | ||
596 | { | ||
597 | wchar_t wc = (wchar_t) 0xBADFACE; | ||
598 | mbstate_t state; | ||
599 | |||
600 | memset (&state, '\0', sizeof (mbstate_t)); | ||
601 | if (mbrtowc (&wc, "\303", 1, &state) == (size_t)(-2) | ||
602 | && wc != (wchar_t) 0xBADFACE) | ||
603 | result |= 1; | ||
604 | } | ||
605 | if (setlocale (LC_ALL, "Japanese_Japan.932") != NULL) | ||
606 | { | ||
607 | wchar_t wc = (wchar_t) 0xBADFACE; | ||
608 | mbstate_t state; | ||
609 | |||
610 | memset (&state, '\0', sizeof (mbstate_t)); | ||
611 | if (mbrtowc (&wc, "\226", 1, &state) == (size_t)(-2) | ||
612 | && wc != (wchar_t) 0xBADFACE) | ||
613 | result |= 2; | ||
614 | } | ||
615 | if (setlocale (LC_ALL, "Chinese_Taiwan.950") != NULL) | ||
616 | { | ||
617 | wchar_t wc = (wchar_t) 0xBADFACE; | ||
618 | mbstate_t state; | ||
619 | |||
620 | memset (&state, '\0', sizeof (mbstate_t)); | ||
621 | if (mbrtowc (&wc, "\245", 1, &state) == (size_t)(-2) | ||
622 | && wc != (wchar_t) 0xBADFACE) | ||
623 | result |= 4; | ||
624 | } | ||
625 | if (setlocale (LC_ALL, "Chinese_China.936") != NULL) | ||
626 | { | ||
627 | wchar_t wc = (wchar_t) 0xBADFACE; | ||
628 | mbstate_t state; | ||
629 | |||
630 | memset (&state, '\0', sizeof (mbstate_t)); | ||
631 | if (mbrtowc (&wc, "\261", 1, &state) == (size_t)(-2) | ||
632 | && wc != (wchar_t) 0xBADFACE) | ||
633 | result |= 8; | ||
634 | } | ||
635 | return result; | ||
636 | }]])], | ||
637 | [gl_cv_func_mbrtowc_stores_incomplete=no], | ||
638 | [gl_cv_func_mbrtowc_stores_incomplete=yes], | ||
639 | [:]) | ||
640 | ;; | ||
641 | *) | ||
642 | AC_REQUIRE([gt_LOCALE_FR_UTF8]) | ||
643 | if test $LOCALE_FR_UTF8 != none; then | ||
644 | AC_RUN_IFELSE( | ||
645 | [AC_LANG_SOURCE([[ | ||
646 | #include <locale.h> | ||
647 | #include <string.h> | ||
648 | #include <wchar.h> | ||
649 | int main () | ||
650 | { | ||
651 | if (setlocale (LC_ALL, "$LOCALE_FR_UTF8") != NULL) | ||
652 | { | ||
653 | wchar_t wc = (wchar_t) 0xBADFACE; | ||
654 | mbstate_t state; | ||
655 | |||
656 | memset (&state, '\0', sizeof (mbstate_t)); | ||
657 | if (mbrtowc (&wc, "\303", 1, &state) == (size_t)(-2) | ||
658 | && wc != (wchar_t) 0xBADFACE) | ||
659 | return 1; | ||
660 | } | ||
661 | return 0; | ||
662 | }]])], | ||
663 | [gl_cv_func_mbrtowc_stores_incomplete=no], | ||
664 | [gl_cv_func_mbrtowc_stores_incomplete=yes], | ||
665 | [:]) | ||
666 | fi | ||
667 | ;; | ||
668 | esac | ||
669 | ]) | ||
670 | ]) | ||
671 | |||
672 | dnl Test whether mbrtowc returns the correct value on empty input. | ||
673 | |||
674 | AC_DEFUN([gl_MBRTOWC_EMPTY_INPUT], | ||
675 | [ | ||
676 | AC_REQUIRE([AC_PROG_CC]) | ||
677 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | ||
678 | AC_CACHE_CHECK([whether mbrtowc works on empty input], | ||
679 | [gl_cv_func_mbrtowc_empty_input], | ||
680 | [ | ||
681 | dnl Initial guess, used when cross-compiling or when no suitable locale | ||
682 | dnl is present. | ||
683 | changequote(,)dnl | ||
684 | case "$host_os" in | ||
685 | # Guess no on AIX and glibc systems. | ||
686 | aix* | *-gnu* | gnu*) gl_cv_func_mbrtowc_empty_input="guessing no" ;; | ||
687 | # Guess yes on native Windows. | ||
688 | mingw*) gl_cv_func_mbrtowc_empty_input="guessing yes" ;; | ||
689 | *) gl_cv_func_mbrtowc_empty_input="guessing yes" ;; | ||
690 | esac | ||
691 | changequote([,])dnl | ||
692 | AC_RUN_IFELSE( | ||
693 | [AC_LANG_SOURCE([[ | ||
694 | #include <wchar.h> | ||
695 | static wchar_t wc; | ||
696 | static mbstate_t mbs; | ||
697 | int | ||
698 | main (void) | ||
699 | { | ||
700 | return mbrtowc (&wc, "", 0, &mbs) != (size_t) -2; | ||
701 | }]])], | ||
702 | [gl_cv_func_mbrtowc_empty_input=yes], | ||
703 | [gl_cv_func_mbrtowc_empty_input=no], | ||
704 | [:]) | ||
705 | ]) | ||
706 | ]) | ||
707 | |||
708 | dnl Test whether mbrtowc reports encoding errors in the C locale. | ||
709 | dnl Although POSIX was never intended to allow this, the GNU C Library | ||
710 | dnl and other implementations do it. See: | ||
711 | dnl https://sourceware.org/bugzilla/show_bug.cgi?id=19932 | ||
712 | |||
713 | AC_DEFUN([gl_MBRTOWC_C_LOCALE], | ||
714 | [ | ||
715 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | ||
716 | AC_CACHE_CHECK([whether the C locale is free of encoding errors], | ||
717 | [gl_cv_func_mbrtowc_C_locale_sans_EILSEQ], | ||
718 | [ | ||
719 | dnl Initial guess, used when cross-compiling or when no suitable locale | ||
720 | dnl is present. | ||
721 | gl_cv_func_mbrtowc_C_locale_sans_EILSEQ="$gl_cross_guess_normal" | ||
722 | |||
723 | AC_RUN_IFELSE( | ||
724 | [AC_LANG_PROGRAM( | ||
725 | [[#include <limits.h> | ||
726 | #include <locale.h> | ||
727 | #include <wchar.h> | ||
728 | ]], [[ | ||
729 | int i; | ||
730 | char *locale = setlocale (LC_ALL, "C"); | ||
731 | if (! locale) | ||
732 | return 2; | ||
733 | for (i = CHAR_MIN; i <= CHAR_MAX; i++) | ||
734 | { | ||
735 | char c = i; | ||
736 | wchar_t wc; | ||
737 | mbstate_t mbs = { 0, }; | ||
738 | size_t ss = mbrtowc (&wc, &c, 1, &mbs); | ||
739 | if (1 < ss) | ||
740 | return 3; | ||
741 | } | ||
742 | return 0; | ||
743 | ]])], | ||
744 | [gl_cv_func_mbrtowc_C_locale_sans_EILSEQ=yes], | ||
745 | [gl_cv_func_mbrtowc_C_locale_sans_EILSEQ=no], | ||
746 | [case "$host_os" in | ||
747 | # Guess yes on native Windows. | ||
748 | mingw*) gl_cv_func_mbrtowc_C_locale_sans_EILSEQ="guessing yes" ;; | ||
749 | esac | ||
750 | ]) | ||
751 | ]) | ||
752 | ]) | ||
753 | |||
754 | # Prerequisites of lib/mbrtowc.c and lib/lc-charset-dispatch.c. | ||
537 | AC_DEFUN([gl_PREREQ_MBRTOWC], [ | 755 | AC_DEFUN([gl_PREREQ_MBRTOWC], [ |
756 | AC_REQUIRE([AC_C_INLINE]) | ||
538 | : | 757 | : |
539 | ]) | 758 | ]) |
540 | 759 | ||
760 | # Prerequisites of lib/mbtowc-lock.c. | ||
761 | AC_DEFUN([gl_PREREQ_MBTOWC_LOCK], | ||
762 | [ | ||
763 | gl_VISIBILITY | ||
764 | ]) | ||
765 | |||
541 | 766 | ||
542 | dnl From Paul Eggert | 767 | dnl From Paul Eggert |
543 | 768 | ||
@@ -547,24 +772,17 @@ AC_DEFUN([AC_FUNC_MBRTOWC], | |||
547 | [ | 772 | [ |
548 | dnl Same as AC_FUNC_MBRTOWC in autoconf-2.60. | 773 | dnl Same as AC_FUNC_MBRTOWC in autoconf-2.60. |
549 | AC_CACHE_CHECK([whether mbrtowc and mbstate_t are properly declared], | 774 | AC_CACHE_CHECK([whether mbrtowc and mbstate_t are properly declared], |
550 | gl_cv_func_mbrtowc, | 775 | [gl_cv_func_mbrtowc], |
551 | [AC_LINK_IFELSE( | 776 | [AC_LINK_IFELSE( |
552 | [AC_LANG_PROGRAM( | 777 | [AC_LANG_PROGRAM( |
553 | [[/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be | 778 | [[#include <wchar.h>]], |
554 | included before <wchar.h>. | ||
555 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> | ||
556 | must be included before <wchar.h>. */ | ||
557 | #include <stddef.h> | ||
558 | #include <stdio.h> | ||
559 | #include <time.h> | ||
560 | #include <wchar.h>]], | ||
561 | [[wchar_t wc; | 779 | [[wchar_t wc; |
562 | char const s[] = ""; | 780 | char const s[] = ""; |
563 | size_t n = 1; | 781 | size_t n = 1; |
564 | mbstate_t state; | 782 | mbstate_t state; |
565 | return ! (sizeof state && (mbrtowc) (&wc, s, n, &state));]])], | 783 | return ! (sizeof state && (mbrtowc) (&wc, s, n, &state));]])], |
566 | gl_cv_func_mbrtowc=yes, | 784 | [gl_cv_func_mbrtowc=yes], |
567 | gl_cv_func_mbrtowc=no)]) | 785 | [gl_cv_func_mbrtowc=no])]) |
568 | if test $gl_cv_func_mbrtowc = yes; then | 786 | if test $gl_cv_func_mbrtowc = yes; then |
569 | AC_DEFINE([HAVE_MBRTOWC], [1], | 787 | AC_DEFINE([HAVE_MBRTOWC], [1], |
570 | [Define to 1 if mbrtowc and mbstate_t are properly declared.]) | 788 | [Define to 1 if mbrtowc and mbstate_t are properly declared.]) |
diff --git a/gl/m4/mbsinit.m4 b/gl/m4/mbsinit.m4 index 2e6d0921..c388a8b9 100644 --- a/gl/m4/mbsinit.m4 +++ b/gl/m4/mbsinit.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # mbsinit.m4 serial 8 | 1 | # mbsinit.m4 serial 9 |
2 | dnl Copyright (C) 2008, 2010-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2008, 2010-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -16,15 +16,8 @@ AC_DEFUN([gl_FUNC_MBSINIT], | |||
16 | if test $ac_cv_func_mbsinit = no; then | 16 | if test $ac_cv_func_mbsinit = no; then |
17 | HAVE_MBSINIT=0 | 17 | HAVE_MBSINIT=0 |
18 | AC_CHECK_DECLS([mbsinit],,, [[ | 18 | AC_CHECK_DECLS([mbsinit],,, [[ |
19 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | 19 | #include <wchar.h> |
20 | <wchar.h>. | 20 | ]]) |
21 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | ||
22 | included before <wchar.h>. */ | ||
23 | #include <stddef.h> | ||
24 | #include <stdio.h> | ||
25 | #include <time.h> | ||
26 | #include <wchar.h> | ||
27 | ]]) | ||
28 | if test $ac_cv_have_decl_mbsinit = yes; then | 21 | if test $ac_cv_have_decl_mbsinit = yes; then |
29 | dnl On Minix 3.1.8, the system's <wchar.h> declares mbsinit() although | 22 | dnl On Minix 3.1.8, the system's <wchar.h> declares mbsinit() although |
30 | dnl it does not have the function. Avoid a collision with gnulib's | 23 | dnl it does not have the function. Avoid a collision with gnulib's |
diff --git a/gl/m4/mbstate_t.m4 b/gl/m4/mbstate_t.m4 index ed001179..dcd66b96 100644 --- a/gl/m4/mbstate_t.m4 +++ b/gl/m4/mbstate_t.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # mbstate_t.m4 serial 13 | 1 | # mbstate_t.m4 serial 14 |
2 | dnl Copyright (C) 2000-2002, 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2000-2002, 2008-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -20,14 +20,7 @@ AC_DEFUN([AC_TYPE_MBSTATE_T], | |||
20 | [AC_COMPILE_IFELSE( | 20 | [AC_COMPILE_IFELSE( |
21 | [AC_LANG_PROGRAM( | 21 | [AC_LANG_PROGRAM( |
22 | [AC_INCLUDES_DEFAULT[ | 22 | [AC_INCLUDES_DEFAULT[ |
23 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | 23 | #include <wchar.h>]], |
24 | <wchar.h>. | ||
25 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | ||
26 | included before <wchar.h>. */ | ||
27 | #include <stddef.h> | ||
28 | #include <stdio.h> | ||
29 | #include <time.h> | ||
30 | #include <wchar.h>]], | ||
31 | [[mbstate_t x; return sizeof x;]])], | 24 | [[mbstate_t x; return sizeof x;]])], |
32 | [ac_cv_type_mbstate_t=yes], | 25 | [ac_cv_type_mbstate_t=yes], |
33 | [ac_cv_type_mbstate_t=no])]) | 26 | [ac_cv_type_mbstate_t=no])]) |
diff --git a/gl/m4/mbtowc.m4 b/gl/m4/mbtowc.m4 index e4794619..7823be0e 100644 --- a/gl/m4/mbtowc.m4 +++ b/gl/m4/mbtowc.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # mbtowc.m4 serial 2 | 1 | # mbtowc.m4 serial 3 |
2 | dnl Copyright (C) 2011-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2011-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -8,8 +8,13 @@ AC_DEFUN([gl_FUNC_MBTOWC], | |||
8 | [ | 8 | [ |
9 | AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) | 9 | AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) |
10 | 10 | ||
11 | if false; then | 11 | AC_CHECK_FUNCS([mbtowc]) |
12 | REPLACE_MBTOWC=1 | 12 | if test $ac_cv_func_mbtowc = no; then |
13 | HAVE_MBTOWC=0 | ||
14 | else | ||
15 | if false; then | ||
16 | REPLACE_MBTOWC=1 | ||
17 | fi | ||
13 | fi | 18 | fi |
14 | ]) | 19 | ]) |
15 | 20 | ||
diff --git a/gl/m4/memchr.m4 b/gl/m4/memchr.m4 index 2d8abe75..4f1aed01 100644 --- a/gl/m4/memchr.m4 +++ b/gl/m4/memchr.m4 | |||
@@ -1,35 +1,30 @@ | |||
1 | # memchr.m4 serial 12 | 1 | # memchr.m4 serial 18 |
2 | dnl Copyright (C) 2002-2004, 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2002-2004, 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | AC_DEFUN_ONCE([gl_FUNC_MEMCHR], | 7 | AC_DEFUN_ONCE([gl_FUNC_MEMCHR], |
8 | [ | 8 | [ |
9 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | ||
10 | |||
9 | dnl Check for prerequisites for memory fence checks. | 11 | dnl Check for prerequisites for memory fence checks. |
10 | gl_FUNC_MMAP_ANON | 12 | gl_FUNC_MMAP_ANON |
11 | AC_CHECK_HEADERS_ONCE([sys/mman.h]) | 13 | AC_CHECK_HEADERS_ONCE([sys/mman.h]) |
12 | AC_CHECK_FUNCS_ONCE([mprotect]) | 14 | AC_CHECK_FUNCS_ONCE([mprotect]) |
13 | 15 | ||
14 | AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) | 16 | AC_REQUIRE([gl_STRING_H_DEFAULTS]) |
15 | m4_ifdef([gl_FUNC_MEMCHR_OBSOLETE], [ | 17 | # Detect platform-specific bugs in some versions of glibc: |
16 | dnl These days, we assume memchr is present. But if support for old | 18 | # memchr should not dereference anything with length 0 |
17 | dnl platforms is desired: | 19 | # https://bugzilla.redhat.com/show_bug.cgi?id=499689 |
18 | AC_CHECK_FUNCS_ONCE([memchr]) | 20 | # memchr should not dereference overestimated length after a match |
19 | if test $ac_cv_func_memchr = no; then | 21 | # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=521737 |
20 | HAVE_MEMCHR=0 | 22 | # https://sourceware.org/bugzilla/show_bug.cgi?id=10162 |
21 | fi | 23 | # memchr should cast the second argument to 'unsigned char'. |
22 | ]) | 24 | # This bug exists in Android 4.3. |
23 | if test $HAVE_MEMCHR = 1; then | 25 | # Assume that memchr works on platforms that lack mprotect. |
24 | # Detect platform-specific bugs in some versions of glibc: | 26 | AC_CACHE_CHECK([whether memchr works], [gl_cv_func_memchr_works], |
25 | # memchr should not dereference anything with length 0 | 27 | [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ |
26 | # http://bugzilla.redhat.com/499689 | ||
27 | # memchr should not dereference overestimated length after a match | ||
28 | # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=521737 | ||
29 | # http://sourceware.org/bugzilla/show_bug.cgi?id=10162 | ||
30 | # Assume that memchr works on platforms that lack mprotect. | ||
31 | AC_CACHE_CHECK([whether memchr works], [gl_cv_func_memchr_works], | ||
32 | [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ | ||
33 | #include <string.h> | 28 | #include <string.h> |
34 | #if HAVE_SYS_MMAN_H | 29 | #if HAVE_SYS_MMAN_H |
35 | # include <fcntl.h> | 30 | # include <fcntl.h> |
@@ -64,6 +59,7 @@ AC_DEFUN_ONCE([gl_FUNC_MEMCHR], | |||
64 | #endif | 59 | #endif |
65 | if (fence) | 60 | if (fence) |
66 | { | 61 | { |
62 | /* Test against bugs on glibc systems. */ | ||
67 | if (memchr (fence, 0, 0)) | 63 | if (memchr (fence, 0, 0)) |
68 | result |= 1; | 64 | result |= 1; |
69 | strcpy (fence - 9, "12345678"); | 65 | strcpy (fence - 9, "12345678"); |
@@ -71,15 +67,37 @@ AC_DEFUN_ONCE([gl_FUNC_MEMCHR], | |||
71 | result |= 2; | 67 | result |= 2; |
72 | if (memchr (fence - 1, 0, 3) != fence - 1) | 68 | if (memchr (fence - 1, 0, 3) != fence - 1) |
73 | result |= 4; | 69 | result |= 4; |
70 | /* Test against bug on AIX 7.2. */ | ||
71 | if (memchr (fence - 4, '6', 16) != fence - 4) | ||
72 | result |= 8; | ||
74 | } | 73 | } |
74 | /* Test against bug on Android 4.3. */ | ||
75 | { | ||
76 | char input[3]; | ||
77 | input[0] = 'a'; | ||
78 | input[1] = 'b'; | ||
79 | input[2] = 'c'; | ||
80 | if (memchr (input, 0x789abc00 | 'b', 3) != input + 1) | ||
81 | result |= 16; | ||
82 | } | ||
75 | return result; | 83 | return result; |
76 | ]])], [gl_cv_func_memchr_works=yes], [gl_cv_func_memchr_works=no], | 84 | ]])], |
77 | [dnl Be pessimistic for now. | 85 | [gl_cv_func_memchr_works=yes], |
78 | gl_cv_func_memchr_works="guessing no"])]) | 86 | [gl_cv_func_memchr_works=no], |
79 | if test "$gl_cv_func_memchr_works" != yes; then | 87 | [case "$host_os" in |
80 | REPLACE_MEMCHR=1 | 88 | # Guess no on Android. |
81 | fi | 89 | linux*-android*) gl_cv_func_memchr_works="guessing no" ;; |
82 | fi | 90 | # Guess yes on native Windows. |
91 | mingw*) gl_cv_func_memchr_works="guessing yes" ;; | ||
92 | # If we don't know, obey --enable-cross-guesses. | ||
93 | *) gl_cv_func_memchr_works="$gl_cross_guess_normal" ;; | ||
94 | esac | ||
95 | ]) | ||
96 | ]) | ||
97 | case "$gl_cv_func_memchr_works" in | ||
98 | *yes) ;; | ||
99 | *) REPLACE_MEMCHR=1 ;; | ||
100 | esac | ||
83 | ]) | 101 | ]) |
84 | 102 | ||
85 | # Prerequisites of lib/memchr.c. | 103 | # Prerequisites of lib/memchr.c. |
diff --git a/gl/m4/minmax.m4 b/gl/m4/minmax.m4 new file mode 100644 index 00000000..fd09846f --- /dev/null +++ b/gl/m4/minmax.m4 | |||
@@ -0,0 +1,44 @@ | |||
1 | # minmax.m4 serial 4 | ||
2 | dnl Copyright (C) 2005, 2009-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_PREREQ([2.53]) | ||
8 | |||
9 | AC_DEFUN([gl_MINMAX], | ||
10 | [ | ||
11 | AC_REQUIRE([gl_PREREQ_MINMAX]) | ||
12 | ]) | ||
13 | |||
14 | # Prerequisites of lib/minmax.h. | ||
15 | AC_DEFUN([gl_PREREQ_MINMAX], | ||
16 | [ | ||
17 | gl_MINMAX_IN_HEADER([limits.h]) | ||
18 | gl_MINMAX_IN_HEADER([sys/param.h]) | ||
19 | ]) | ||
20 | |||
21 | dnl gl_MINMAX_IN_HEADER(HEADER) | ||
22 | dnl The parameter has to be a literal header name; it cannot be macro, | ||
23 | dnl nor a shell variable. (Because autoheader collects only AC_DEFINE | ||
24 | dnl invocations with a literal macro name.) | ||
25 | AC_DEFUN([gl_MINMAX_IN_HEADER], | ||
26 | [ | ||
27 | m4_pushdef([header], AS_TR_SH([$1])) | ||
28 | m4_pushdef([HEADER], AS_TR_CPP([$1])) | ||
29 | AC_CACHE_CHECK([whether <$1> defines MIN and MAX], | ||
30 | [gl_cv_minmax_in_]header, | ||
31 | [AC_COMPILE_IFELSE( | ||
32 | [AC_LANG_PROGRAM( | ||
33 | [[#include <$1> | ||
34 | int x = MIN (42, 17);]], | ||
35 | [[]])], | ||
36 | [gl_cv_minmax_in_]header[=yes], | ||
37 | [gl_cv_minmax_in_]header[=no])]) | ||
38 | if test $gl_cv_minmax_in_[]header = yes; then | ||
39 | AC_DEFINE([HAVE_MINMAX_IN_]HEADER, 1, | ||
40 | [Define to 1 if <$1> defines the MIN and MAX macros.]) | ||
41 | fi | ||
42 | m4_popdef([HEADER]) | ||
43 | m4_popdef([header]) | ||
44 | ]) | ||
diff --git a/gl/m4/mktime.m4 b/gl/m4/mktime.m4 index faefb770..e9d31f35 100644 --- a/gl/m4/mktime.m4 +++ b/gl/m4/mktime.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # serial 25 | 1 | # serial 37 |
2 | dnl Copyright (C) 2002-2003, 2005-2007, 2009-2013 Free Software Foundation, | 2 | dnl Copyright (C) 2002-2003, 2005-2007, 2009-2023 Free Software Foundation, |
3 | dnl Inc. | 3 | dnl Inc. |
4 | dnl This file is free software; the Free Software Foundation | 4 | dnl This file is free software; the Free Software Foundation |
5 | dnl gives unlimited permission to copy and/or distribute it, | 5 | dnl gives unlimited permission to copy and/or distribute it, |
@@ -7,24 +7,40 @@ dnl with or without modifications, as long as this notice is preserved. | |||
7 | 7 | ||
8 | dnl From Jim Meyering. | 8 | dnl From Jim Meyering. |
9 | 9 | ||
10 | AC_DEFUN([gl_FUNC_MKTIME], | 10 | AC_DEFUN([gl_TIME_T_IS_SIGNED], |
11 | [ | ||
12 | AC_CACHE_CHECK([whether time_t is signed], | ||
13 | [gl_cv_time_t_is_signed], | ||
14 | [AC_COMPILE_IFELSE( | ||
15 | [AC_LANG_PROGRAM([[#include <time.h> | ||
16 | char time_t_signed[(time_t) -1 < 0 ? 1 : -1];]])], | ||
17 | [gl_cv_time_t_is_signed=yes], | ||
18 | [gl_cv_time_t_is_signed=no])]) | ||
19 | if test $gl_cv_time_t_is_signed = yes; then | ||
20 | AC_DEFINE([TIME_T_IS_SIGNED], [1], [Define to 1 if time_t is signed.]) | ||
21 | fi | ||
22 | ]) | ||
23 | |||
24 | dnl Test whether mktime works. Set gl_cv_func_working_mktime. | ||
25 | AC_DEFUN([gl_FUNC_MKTIME_WORKS], | ||
11 | [ | 26 | [ |
12 | AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS]) | 27 | AC_REQUIRE([gl_TIME_T_IS_SIGNED]) |
28 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | ||
13 | 29 | ||
14 | dnl We don't use AC_FUNC_MKTIME any more, because it is no longer maintained | 30 | dnl We don't use AC_FUNC_MKTIME any more, because it is no longer maintained |
15 | dnl in Autoconf and because it invokes AC_LIBOBJ. | 31 | dnl in Autoconf and because it invokes AC_LIBOBJ. |
16 | AC_CHECK_HEADERS_ONCE([unistd.h]) | 32 | AC_CHECK_HEADERS_ONCE([unistd.h]) |
17 | AC_CHECK_DECLS_ONCE([alarm]) | 33 | AC_CHECK_DECLS_ONCE([alarm]) |
18 | AC_REQUIRE([gl_MULTIARCH]) | 34 | AC_REQUIRE([gl_MULTIARCH]) |
19 | if test $APPLE_UNIVERSAL_BUILD = 1; then | ||
20 | # A universal build on Apple Mac OS X platforms. | ||
21 | # The test result would be 'yes' in 32-bit mode and 'no' in 64-bit mode. | ||
22 | # But we need a configuration result that is valid in both modes. | ||
23 | gl_cv_func_working_mktime=no | ||
24 | fi | ||
25 | AC_CACHE_CHECK([for working mktime], [gl_cv_func_working_mktime], | 35 | AC_CACHE_CHECK([for working mktime], [gl_cv_func_working_mktime], |
26 | [AC_RUN_IFELSE( | 36 | [if test $APPLE_UNIVERSAL_BUILD = 1; then |
27 | [AC_LANG_SOURCE( | 37 | # A universal build on Apple Mac OS X platforms. |
38 | # The test result would be 'yes' in 32-bit mode and 'no' in 64-bit mode. | ||
39 | # But we need a configuration result that is valid in both modes. | ||
40 | gl_cv_func_working_mktime="guessing no" | ||
41 | else | ||
42 | AC_RUN_IFELSE( | ||
43 | [AC_LANG_SOURCE( | ||
28 | [[/* Test program from Paul Eggert and Tony Leneis. */ | 44 | [[/* Test program from Paul Eggert and Tony Leneis. */ |
29 | #include <limits.h> | 45 | #include <limits.h> |
30 | #include <stdlib.h> | 46 | #include <stdlib.h> |
@@ -38,8 +54,11 @@ AC_DEFUN([gl_FUNC_MKTIME], | |||
38 | # include <signal.h> | 54 | # include <signal.h> |
39 | #endif | 55 | #endif |
40 | 56 | ||
41 | /* Work around redefinition to rpl_putenv by other config tests. */ | 57 | ]GL_MDA_DEFINES[ |
42 | #undef putenv | 58 | |
59 | #ifndef TIME_T_IS_SIGNED | ||
60 | # define TIME_T_IS_SIGNED 0 | ||
61 | #endif | ||
43 | 62 | ||
44 | static time_t time_t_max; | 63 | static time_t time_t_max; |
45 | static time_t time_t_min; | 64 | static time_t time_t_min; |
@@ -63,7 +82,8 @@ spring_forward_gap () | |||
63 | instead of "TZ=America/Vancouver" in order to detect the bug even | 82 | instead of "TZ=America/Vancouver" in order to detect the bug even |
64 | on systems that don't support the Olson extension, or don't have the | 83 | on systems that don't support the Olson extension, or don't have the |
65 | full zoneinfo tables installed. */ | 84 | full zoneinfo tables installed. */ |
66 | putenv ("TZ=PST8PDT,M4.1.0,M10.5.0"); | 85 | if (putenv ("TZ=PST8PDT,M4.1.0,M10.5.0") != 0) |
86 | return -1; | ||
67 | 87 | ||
68 | tm.tm_year = 98; | 88 | tm.tm_year = 98; |
69 | tm.tm_mon = 3; | 89 | tm.tm_mon = 3; |
@@ -151,7 +171,8 @@ year_2050_test () | |||
151 | instead of "TZ=America/Vancouver" in order to detect the bug even | 171 | instead of "TZ=America/Vancouver" in order to detect the bug even |
152 | on systems that don't support the Olson extension, or don't have the | 172 | on systems that don't support the Olson extension, or don't have the |
153 | full zoneinfo tables installed. */ | 173 | full zoneinfo tables installed. */ |
154 | putenv ("TZ=PST8PDT,M4.1.0,M10.5.0"); | 174 | if (putenv ("TZ=PST8PDT,M4.1.0,M10.5.0") != 0) |
175 | return -1; | ||
155 | 176 | ||
156 | t = mktime (&tm); | 177 | t = mktime (&tm); |
157 | 178 | ||
@@ -162,6 +183,25 @@ year_2050_test () | |||
162 | || (0 < t && answer - 120 <= t && t <= answer + 120)); | 183 | || (0 < t && answer - 120 <= t && t <= answer + 120)); |
163 | } | 184 | } |
164 | 185 | ||
186 | static int | ||
187 | indiana_test () | ||
188 | { | ||
189 | if (putenv ("TZ=America/Indiana/Indianapolis") != 0) | ||
190 | return -1; | ||
191 | struct tm tm; | ||
192 | tm.tm_year = 1986 - 1900; tm.tm_mon = 4 - 1; tm.tm_mday = 28; | ||
193 | tm.tm_hour = 16; tm.tm_min = 24; tm.tm_sec = 50; tm.tm_isdst = 0; | ||
194 | time_t std = mktime (&tm); | ||
195 | if (! (std == 515107490 || std == 515107503)) | ||
196 | return 1; | ||
197 | |||
198 | /* This platform supports TZDB, either without or with leap seconds. | ||
199 | Return true if GNU Bug#48085 is absent. */ | ||
200 | tm.tm_isdst = 1; | ||
201 | time_t dst = mktime (&tm); | ||
202 | return std - dst == 60 * 60; | ||
203 | } | ||
204 | |||
165 | int | 205 | int |
166 | main () | 206 | main () |
167 | { | 207 | { |
@@ -169,7 +209,6 @@ main () | |||
169 | time_t t, delta; | 209 | time_t t, delta; |
170 | int i, j; | 210 | int i, j; |
171 | int time_t_signed_magnitude = (time_t) ~ (time_t) 0 < (time_t) -1; | 211 | int time_t_signed_magnitude = (time_t) ~ (time_t) 0 < (time_t) -1; |
172 | int time_t_signed = ! ((time_t) 0 < (time_t) -1); | ||
173 | 212 | ||
174 | #if HAVE_DECL_ALARM | 213 | #if HAVE_DECL_ALARM |
175 | /* This test makes some buggy mktime implementations loop. | 214 | /* This test makes some buggy mktime implementations loop. |
@@ -179,11 +218,11 @@ main () | |||
179 | alarm (60); | 218 | alarm (60); |
180 | #endif | 219 | #endif |
181 | 220 | ||
182 | time_t_max = (! time_t_signed | 221 | time_t_max = (! TIME_T_IS_SIGNED |
183 | ? (time_t) -1 | 222 | ? (time_t) -1 |
184 | : ((((time_t) 1 << (sizeof (time_t) * CHAR_BIT - 2)) - 1) | 223 | : ((((time_t) 1 << (sizeof (time_t) * CHAR_BIT - 2)) - 1) |
185 | * 2 + 1)); | 224 | * 2 + 1)); |
186 | time_t_min = (! time_t_signed | 225 | time_t_min = (! TIME_T_IS_SIGNED |
187 | ? (time_t) 0 | 226 | ? (time_t) 0 |
188 | : time_t_signed_magnitude | 227 | : time_t_signed_magnitude |
189 | ? ~ (time_t) 0 | 228 | ? ~ (time_t) 0 |
@@ -218,35 +257,62 @@ main () | |||
218 | result |= 16; | 257 | result |= 16; |
219 | if (! spring_forward_gap ()) | 258 | if (! spring_forward_gap ()) |
220 | result |= 32; | 259 | result |= 32; |
221 | if (! year_2050_test ()) | 260 | if (! year_2050_test () || ! indiana_test ()) |
222 | result |= 64; | 261 | result |= 64; |
223 | return result; | 262 | return result; |
224 | }]])], | 263 | }]])], |
225 | [gl_cv_func_working_mktime=yes], | 264 | [gl_cv_func_working_mktime=yes], |
226 | [gl_cv_func_working_mktime=no], | 265 | [gl_cv_func_working_mktime=no], |
227 | [gl_cv_func_working_mktime=no]) | 266 | [case "$host_os" in |
267 | # Guess no on native Windows. | ||
268 | mingw*) gl_cv_func_working_mktime="guessing no" ;; | ||
269 | *) gl_cv_func_working_mktime="$gl_cross_guess_normal" ;; | ||
270 | esac | ||
271 | ]) | ||
272 | fi | ||
228 | ]) | 273 | ]) |
274 | ]) | ||
275 | |||
276 | dnl Main macro of module 'mktime'. | ||
277 | AC_DEFUN([gl_FUNC_MKTIME], | ||
278 | [ | ||
279 | AC_REQUIRE([gl_TIME_H_DEFAULTS]) | ||
280 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
281 | AC_REQUIRE([gl_FUNC_MKTIME_WORKS]) | ||
229 | 282 | ||
230 | if test $gl_cv_func_working_mktime = no; then | 283 | REPLACE_MKTIME=0 |
284 | if test "$gl_cv_func_working_mktime" != yes; then | ||
231 | REPLACE_MKTIME=1 | 285 | REPLACE_MKTIME=1 |
232 | else | 286 | AC_DEFINE([NEED_MKTIME_WORKING], [1], |
233 | REPLACE_MKTIME=0 | 287 | [Define if the compilation of mktime.c should define 'mktime' |
288 | with the algorithmic workarounds.]) | ||
234 | fi | 289 | fi |
290 | case "$host_os" in | ||
291 | mingw*) | ||
292 | REPLACE_MKTIME=1 | ||
293 | AC_DEFINE([NEED_MKTIME_WINDOWS], [1], | ||
294 | [Define if the compilation of mktime.c should define 'mktime' | ||
295 | with the native Windows TZ workaround.]) | ||
296 | ;; | ||
297 | esac | ||
235 | ]) | 298 | ]) |
236 | 299 | ||
300 | dnl Main macro of module 'mktime-internal'. | ||
237 | AC_DEFUN([gl_FUNC_MKTIME_INTERNAL], [ | 301 | AC_DEFUN([gl_FUNC_MKTIME_INTERNAL], [ |
238 | AC_REQUIRE([gl_FUNC_MKTIME]) | 302 | AC_REQUIRE([gl_FUNC_MKTIME_WORKS]) |
239 | if test $REPLACE_MKTIME = 0; then | 303 | |
240 | dnl BeOS has __mktime_internal in libc, but other platforms don't. | 304 | WANT_MKTIME_INTERNAL=0 |
241 | AC_CHECK_FUNC([__mktime_internal], | 305 | dnl BeOS has __mktime_internal in libc, but other platforms don't. |
242 | [AC_DEFINE([mktime_internal], [__mktime_internal], | 306 | AC_CHECK_FUNC([__mktime_internal], |
243 | [Define to the real name of the mktime_internal function.]) | 307 | [AC_DEFINE([mktime_internal], [__mktime_internal], |
244 | ], | 308 | [Define to the real name of the mktime_internal function.]) |
245 | [dnl mktime works but it doesn't export __mktime_internal, | 309 | ], |
246 | dnl so we need to substitute our own mktime implementation. | 310 | [dnl mktime works but it doesn't export __mktime_internal, |
247 | REPLACE_MKTIME=1 | 311 | dnl so we need to substitute our own mktime implementation. |
248 | ]) | 312 | WANT_MKTIME_INTERNAL=1 |
249 | fi | 313 | AC_DEFINE([NEED_MKTIME_INTERNAL], [1], |
314 | [Define if the compilation of mktime.c should define 'mktime_internal'.]) | ||
315 | ]) | ||
250 | ]) | 316 | ]) |
251 | 317 | ||
252 | # Prerequisites of lib/mktime.c. | 318 | # Prerequisites of lib/mktime.c. |
diff --git a/gl/m4/mmap-anon.m4 b/gl/m4/mmap-anon.m4 index 9b60ddfa..d07d26e4 100644 --- a/gl/m4/mmap-anon.m4 +++ b/gl/m4/mmap-anon.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # mmap-anon.m4 serial 10 | 1 | # mmap-anon.m4 serial 12 |
2 | dnl Copyright (C) 2005, 2007, 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2005, 2007, 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -9,11 +9,11 @@ dnl with or without modifications, as long as this notice is preserved. | |||
9 | # - On Linux, AIX, OSF/1, Solaris, Cygwin, Interix, Haiku, both MAP_ANONYMOUS | 9 | # - On Linux, AIX, OSF/1, Solaris, Cygwin, Interix, Haiku, both MAP_ANONYMOUS |
10 | # and MAP_ANON exist and have the same value. | 10 | # and MAP_ANON exist and have the same value. |
11 | # - On HP-UX, only MAP_ANONYMOUS exists. | 11 | # - On HP-UX, only MAP_ANONYMOUS exists. |
12 | # - On Mac OS X, FreeBSD, NetBSD, OpenBSD, only MAP_ANON exists. | 12 | # - On Mac OS X, FreeBSD, NetBSD, OpenBSD, Minix, only MAP_ANON exists. |
13 | # - On IRIX, neither exists, and a file descriptor opened to /dev/zero must be | 13 | # - On IRIX, neither exists, and a file descriptor opened to /dev/zero must be |
14 | # used. | 14 | # used. |
15 | 15 | ||
16 | AC_DEFUN([gl_FUNC_MMAP_ANON], | 16 | AC_DEFUN_ONCE([gl_FUNC_MMAP_ANON], |
17 | [ | 17 | [ |
18 | dnl Persuade glibc <sys/mman.h> to define MAP_ANONYMOUS. | 18 | dnl Persuade glibc <sys/mman.h> to define MAP_ANONYMOUS. |
19 | AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) | 19 | AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) |
diff --git a/gl/m4/mode_t.m4 b/gl/m4/mode_t.m4 new file mode 100644 index 00000000..82197c02 --- /dev/null +++ b/gl/m4/mode_t.m4 | |||
@@ -0,0 +1,26 @@ | |||
1 | # mode_t.m4 serial 2 | ||
2 | dnl Copyright (C) 2009-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | # For using mode_t, it's sufficient to use AC_TYPE_MODE_T and | ||
8 | # include <sys/types.h>. | ||
9 | |||
10 | # Define PROMOTED_MODE_T to the type that is the result of "default argument | ||
11 | # promotion" (ISO C 6.5.2.2.(6)) of the type mode_t. | ||
12 | AC_DEFUN([gl_PROMOTED_TYPE_MODE_T], | ||
13 | [ | ||
14 | AC_REQUIRE([AC_TYPE_MODE_T]) | ||
15 | AC_CACHE_CHECK([for promoted mode_t type], [gl_cv_promoted_mode_t], [ | ||
16 | dnl Assume mode_t promotes to 'int' if and only if it is smaller than 'int', | ||
17 | dnl and to itself otherwise. This assumption is not guaranteed by the ISO C | ||
18 | dnl standard, but we don't know of any real-world counterexamples. | ||
19 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>]], | ||
20 | [[typedef int array[2 * (sizeof (mode_t) < sizeof (int)) - 1];]])], | ||
21 | [gl_cv_promoted_mode_t='int'], | ||
22 | [gl_cv_promoted_mode_t='mode_t']) | ||
23 | ]) | ||
24 | AC_DEFINE_UNQUOTED([PROMOTED_MODE_T], [$gl_cv_promoted_mode_t], | ||
25 | [Define to the type that is the result of default argument promotions of type mode_t.]) | ||
26 | ]) | ||
diff --git a/gl/m4/mountlist.m4 b/gl/m4/mountlist.m4 index cd137c91..a9b4edb9 100644 --- a/gl/m4/mountlist.m4 +++ b/gl/m4/mountlist.m4 | |||
@@ -1,19 +1,338 @@ | |||
1 | # serial 11 | 1 | # serial 15 |
2 | dnl Copyright (C) 2002-2006, 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2002-2006, 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | dnl From Jim Meyering. | ||
8 | |||
9 | AC_PREREQ([2.60]) | ||
10 | |||
7 | AC_DEFUN([gl_MOUNTLIST], | 11 | AC_DEFUN([gl_MOUNTLIST], |
8 | [ | 12 | [ |
9 | gl_LIST_MOUNTED_FILE_SYSTEMS([gl_cv_list_mounted_fs=yes], | 13 | AC_REQUIRE([AC_CANONICAL_HOST]) |
10 | [gl_cv_list_mounted_fs=no]) | 14 | AC_CHECK_FUNCS([listmntent]) |
15 | AC_CHECK_HEADERS_ONCE([sys/param.h sys/statvfs.h]) | ||
16 | |||
17 | # We must include grp.h before ucred.h on OSF V4.0, since ucred.h uses | ||
18 | # NGROUPS (as the array dimension for a struct member) without a definition. | ||
19 | AC_CHECK_HEADERS([sys/ucred.h], [], [], [#include <grp.h>]) | ||
20 | |||
21 | AC_CHECK_HEADERS([sys/mount.h], [], [], | ||
22 | [AC_INCLUDES_DEFAULT | ||
23 | [#if HAVE_SYS_PARAM_H | ||
24 | #include <sys/param.h> | ||
25 | #endif | ||
26 | ]]) | ||
27 | |||
28 | AC_CHECK_HEADERS([mntent.h sys/fs_types.h]) | ||
29 | getfsstat_includes="\ | ||
30 | $ac_includes_default | ||
31 | #if HAVE_SYS_PARAM_H | ||
32 | # include <sys/param.h> /* needed by powerpc-apple-darwin1.3.7 */ | ||
33 | #endif | ||
34 | #if HAVE_SYS_UCRED_H | ||
35 | # include <grp.h> /* needed for definition of NGROUPS */ | ||
36 | # include <sys/ucred.h> /* needed by powerpc-apple-darwin1.3.7 */ | ||
37 | #endif | ||
38 | #if HAVE_SYS_MOUNT_H | ||
39 | # include <sys/mount.h> | ||
40 | #endif | ||
41 | #if HAVE_SYS_FS_TYPES_H | ||
42 | # include <sys/fs_types.h> /* needed by powerpc-apple-darwin1.3.7 */ | ||
43 | #endif | ||
44 | " | ||
45 | AC_CHECK_MEMBERS([struct fsstat.f_fstypename],,,[$getfsstat_includes]) | ||
46 | |||
47 | # Determine how to get the list of mounted file systems. | ||
48 | ac_list_mounted_fs= | ||
49 | |||
50 | # If the getmntent function is available but not in the standard library, | ||
51 | # make sure LIBS contains the appropriate -l option. | ||
52 | AC_FUNC_GETMNTENT | ||
53 | |||
54 | if test -z "$ac_list_mounted_fs"; then | ||
55 | # AIX. | ||
56 | AC_CACHE_CHECK([for mntctl function and struct vmount], | ||
57 | [fu_cv_sys_mounted_vmount], | ||
58 | [AC_PREPROC_IFELSE([AC_LANG_SOURCE([[#include <fshelp.h>]])], | ||
59 | [fu_cv_sys_mounted_vmount=yes], | ||
60 | [fu_cv_sys_mounted_vmount=no])]) | ||
61 | if test $fu_cv_sys_mounted_vmount = yes; then | ||
62 | ac_list_mounted_fs=found | ||
63 | AC_DEFINE([MOUNTED_VMOUNT], [1], | ||
64 | [Define if there is a function named mntctl that can be used to read | ||
65 | the list of mounted file systems, and there is a system header file | ||
66 | that declares 'struct vmount'. (AIX)]) | ||
67 | fi | ||
68 | fi | ||
69 | |||
70 | if test $ac_cv_func_getmntent = yes; then | ||
71 | |||
72 | # This system has the getmntent function. | ||
73 | # Determine whether it's the one-argument variant or the two-argument one. | ||
74 | |||
75 | if test -z "$ac_list_mounted_fs"; then | ||
76 | # glibc, HP-UX, IRIX, Cygwin, Android, also (obsolete) 4.3BSD, SunOS. | ||
77 | AC_CACHE_CHECK([for one-argument getmntent function], | ||
78 | [fu_cv_sys_mounted_getmntent1], | ||
79 | [AC_COMPILE_IFELSE( | ||
80 | [AC_LANG_PROGRAM([[ | ||
81 | /* SunOS 4.1.x /usr/include/mntent.h needs this for FILE */ | ||
82 | #include <stdio.h> | ||
83 | |||
84 | #include <mntent.h> | ||
85 | #if defined __ANDROID__ /* Android */ | ||
86 | # undef MOUNTED | ||
87 | # define MOUNTED "/proc/mounts" | ||
88 | #elif !defined MOUNTED | ||
89 | # if defined _PATH_MOUNTED /* GNU libc */ | ||
90 | # define MOUNTED _PATH_MOUNTED | ||
91 | # endif | ||
92 | # if defined MNT_MNTTAB /* HP-UX. */ | ||
93 | # define MOUNTED MNT_MNTTAB | ||
94 | # endif | ||
95 | #endif | ||
96 | ]], | ||
97 | [[struct mntent *mnt = 0; char *table = MOUNTED; | ||
98 | if (sizeof mnt && sizeof table) return 0; | ||
99 | ]])], | ||
100 | [fu_cv_sys_mounted_getmntent1=yes], | ||
101 | [fu_cv_sys_mounted_getmntent1=no]) | ||
102 | ]) | ||
103 | if test $fu_cv_sys_mounted_getmntent1 = yes; then | ||
104 | ac_list_mounted_fs=found | ||
105 | AC_DEFINE([MOUNTED_GETMNTENT1], [1], | ||
106 | [Define if there is a function named getmntent for reading the list | ||
107 | of mounted file systems, and that function takes a single argument. | ||
108 | (4.3BSD, SunOS, HP-UX, Irix)]) | ||
109 | AC_CHECK_FUNCS([setmntent endmntent hasmntopt]) | ||
110 | fi | ||
111 | fi | ||
112 | |||
113 | if test -z "$ac_list_mounted_fs"; then | ||
114 | # Solaris >= 8. | ||
115 | AC_CACHE_CHECK([for getextmntent function], | ||
116 | [fu_cv_sys_mounted_getextmntent], | ||
117 | [AC_EGREP_HEADER([getextmntent], [sys/mnttab.h], | ||
118 | [fu_cv_sys_mounted_getextmntent=yes], | ||
119 | [fu_cv_sys_mounted_getextmntent=no])]) | ||
120 | if test $fu_cv_sys_mounted_getextmntent = yes; then | ||
121 | ac_list_mounted_fs=found | ||
122 | AC_DEFINE([MOUNTED_GETEXTMNTENT], [1], | ||
123 | [Define if there is a function named getextmntent for reading the list | ||
124 | of mounted file systems. (Solaris)]) | ||
125 | fi | ||
126 | fi | ||
127 | |||
128 | if test -z "$ac_list_mounted_fs"; then | ||
129 | # Solaris < 8, also (obsolete) SVR4. | ||
130 | # Solaris >= 8 has the two-argument getmntent but is already handled above. | ||
131 | AC_CACHE_CHECK([for two-argument getmntent function], | ||
132 | [fu_cv_sys_mounted_getmntent2], | ||
133 | [AC_EGREP_HEADER([getmntent], [sys/mnttab.h], | ||
134 | [fu_cv_sys_mounted_getmntent2=yes], | ||
135 | [fu_cv_sys_mounted_getmntent2=no]) | ||
136 | ]) | ||
137 | if test $fu_cv_sys_mounted_getmntent2 = yes; then | ||
138 | ac_list_mounted_fs=found | ||
139 | AC_DEFINE([MOUNTED_GETMNTENT2], [1], | ||
140 | [Define if there is a function named getmntent for reading the list of | ||
141 | mounted file systems, and that function takes two arguments. (SVR4)]) | ||
142 | AC_CHECK_FUNCS([hasmntopt]) | ||
143 | fi | ||
144 | fi | ||
145 | |||
146 | fi | ||
147 | |||
148 | if test -z "$ac_list_mounted_fs"; then | ||
149 | # OSF/1, also (obsolete) Apple Darwin 1.3. | ||
150 | # powerpc-apple-darwin1.3.7 needs sys/param.h sys/ucred.h sys/fs_types.h | ||
151 | |||
152 | AC_CACHE_CHECK([for getfsstat function], | ||
153 | [fu_cv_sys_mounted_getfsstat], | ||
154 | [AC_LINK_IFELSE( | ||
155 | [AC_LANG_PROGRAM([[ | ||
156 | #include <sys/types.h> | ||
157 | #if HAVE_STRUCT_FSSTAT_F_FSTYPENAME | ||
158 | # define FS_TYPE(Ent) ((Ent).f_fstypename) | ||
159 | #else | ||
160 | # define FS_TYPE(Ent) mnt_names[(Ent).f_type] | ||
161 | #endif | ||
162 | $getfsstat_includes | ||
163 | ]], | ||
164 | [[struct statfs *stats; | ||
165 | int numsys = getfsstat ((struct statfs *)0, 0L, MNT_WAIT); | ||
166 | char *t = FS_TYPE (*stats); | ||
167 | ]])], | ||
168 | [fu_cv_sys_mounted_getfsstat=yes], | ||
169 | [fu_cv_sys_mounted_getfsstat=no]) | ||
170 | ]) | ||
171 | if test $fu_cv_sys_mounted_getfsstat = yes; then | ||
172 | ac_list_mounted_fs=found | ||
173 | AC_DEFINE([MOUNTED_GETFSSTAT], [1], | ||
174 | [Define if there is a function named getfsstat for reading the | ||
175 | list of mounted file systems. (DEC Alpha running OSF/1)]) | ||
176 | fi | ||
177 | fi | ||
178 | |||
179 | if test -z "$ac_list_mounted_fs"; then | ||
180 | # (obsolete) SVR3 | ||
181 | AC_CACHE_CHECK([for FIXME existence of three headers], | ||
182 | [fu_cv_sys_mounted_fread_fstyp], | ||
183 | [AC_PREPROC_IFELSE([AC_LANG_SOURCE([[ | ||
184 | #include <sys/statfs.h> | ||
185 | #include <sys/fstyp.h> | ||
186 | #include <mnttab.h> | ||
187 | ]])], | ||
188 | [fu_cv_sys_mounted_fread_fstyp=yes], | ||
189 | [fu_cv_sys_mounted_fread_fstyp=no]) | ||
190 | ]) | ||
191 | if test $fu_cv_sys_mounted_fread_fstyp = yes; then | ||
192 | ac_list_mounted_fs=found | ||
193 | AC_DEFINE([MOUNTED_FREAD_FSTYP], [1], | ||
194 | [Define if (like SVR2) there is no specific function for reading the | ||
195 | list of mounted file systems, and your system has these header files: | ||
196 | <sys/fstyp.h> and <sys/statfs.h>. (SVR3)]) | ||
197 | fi | ||
198 | fi | ||
199 | |||
200 | if test -z "$ac_list_mounted_fs"; then | ||
201 | # Mac OS X, FreeBSD, NetBSD, OpenBSD, Minix, also (obsolete) 4.4BSD. | ||
202 | # OSF/1 also has getmntinfo but is already handled above. | ||
203 | # We cannot use AC_CHECK_FUNCS([getmntinfo]) here, because at the linker | ||
204 | # level the function is sometimes called getmntinfo64 or getmntinfo$INODE64 | ||
205 | # on Mac OS X, __getmntinfo13 on NetBSD and Minix, _F64_getmntinfo on OSF/1. | ||
206 | AC_CACHE_CHECK([for getmntinfo function], | ||
207 | [fu_cv_sys_mounted_getmntinfo], | ||
208 | [AC_LINK_IFELSE( | ||
209 | [AC_LANG_PROGRAM([[ | ||
210 | #if HAVE_SYS_PARAM_H | ||
211 | # include <sys/param.h> | ||
212 | #endif | ||
213 | #include <sys/types.h> | ||
214 | #if HAVE_SYS_MOUNT_H | ||
215 | # include <sys/mount.h> | ||
216 | #endif | ||
217 | #if HAVE_SYS_STATVFS_H | ||
218 | # include <sys/statvfs.h> | ||
219 | #endif | ||
220 | #include <stdlib.h> | ||
221 | ]], | ||
222 | [[int count = getmntinfo (NULL, MNT_WAIT); | ||
223 | ]])], | ||
224 | [fu_cv_sys_mounted_getmntinfo=yes], | ||
225 | [fu_cv_sys_mounted_getmntinfo=no]) | ||
226 | ]) | ||
227 | if test $fu_cv_sys_mounted_getmntinfo = yes; then | ||
228 | AC_CACHE_CHECK([whether getmntinfo returns statvfs structures], | ||
229 | [fu_cv_sys_mounted_getmntinfo2], | ||
230 | [AC_COMPILE_IFELSE( | ||
231 | [AC_LANG_PROGRAM([[ | ||
232 | #if HAVE_SYS_PARAM_H | ||
233 | # include <sys/param.h> | ||
234 | #endif | ||
235 | #include <sys/types.h> | ||
236 | #if HAVE_SYS_MOUNT_H | ||
237 | # include <sys/mount.h> | ||
238 | #endif | ||
239 | #if HAVE_SYS_STATVFS_H | ||
240 | # include <sys/statvfs.h> | ||
241 | #endif | ||
242 | extern | ||
243 | #ifdef __cplusplus | ||
244 | "C" | ||
245 | #endif | ||
246 | int getmntinfo (struct statfs **, int); | ||
247 | ]], [[]])], | ||
248 | [fu_cv_sys_mounted_getmntinfo2=no], | ||
249 | [fu_cv_sys_mounted_getmntinfo2=yes]) | ||
250 | ]) | ||
251 | if test $fu_cv_sys_mounted_getmntinfo2 = no; then | ||
252 | # Mac OS X, FreeBSD, OpenBSD, also (obsolete) 4.4BSD. | ||
253 | ac_list_mounted_fs=found | ||
254 | AC_DEFINE([MOUNTED_GETMNTINFO], [1], | ||
255 | [Define if there is a function named getmntinfo for reading the | ||
256 | list of mounted file systems and it returns an array of | ||
257 | 'struct statfs'. (4.4BSD, Darwin)]) | ||
258 | else | ||
259 | # NetBSD, Minix. | ||
260 | ac_list_mounted_fs=found | ||
261 | AC_DEFINE([MOUNTED_GETMNTINFO2], [1], | ||
262 | [Define if there is a function named getmntinfo for reading the | ||
263 | list of mounted file systems and it returns an array of | ||
264 | 'struct statvfs'. (NetBSD 3.0)]) | ||
265 | fi | ||
266 | fi | ||
267 | fi | ||
268 | |||
269 | if test -z "$ac_list_mounted_fs"; then | ||
270 | # Haiku, also (obsolete) BeOS. | ||
271 | AC_CHECK_FUNCS([next_dev fs_stat_dev]) | ||
272 | AC_CHECK_HEADERS([fs_info.h]) | ||
273 | AC_CACHE_CHECK([for BEOS mounted file system support functions], | ||
274 | [fu_cv_sys_mounted_fs_stat_dev], | ||
275 | [if test $ac_cv_header_fs_info_h = yes \ | ||
276 | && test $ac_cv_func_next_dev = yes \ | ||
277 | && test $ac_cv_func_fs_stat_dev = yes; then | ||
278 | fu_cv_sys_mounted_fs_stat_dev=yes | ||
279 | else | ||
280 | fu_cv_sys_mounted_fs_stat_dev=no | ||
281 | fi | ||
282 | ]) | ||
283 | if test $fu_cv_sys_mounted_fs_stat_dev = yes; then | ||
284 | ac_list_mounted_fs=found | ||
285 | AC_DEFINE([MOUNTED_FS_STAT_DEV], [1], | ||
286 | [Define if there are functions named next_dev and fs_stat_dev for | ||
287 | reading the list of mounted file systems. (BeOS)]) | ||
288 | fi | ||
289 | fi | ||
290 | |||
291 | if test -z "$ac_list_mounted_fs"; then | ||
292 | # Interix / BSD alike statvfs | ||
293 | # the code is really interix specific, so make sure, we're on it. | ||
294 | case "$host" in | ||
295 | *-interix*) | ||
296 | AC_CHECK_FUNCS([statvfs]) | ||
297 | if test $ac_cv_func_statvfs = yes; then | ||
298 | ac_list_mounted_fs=found | ||
299 | AC_DEFINE([MOUNTED_INTERIX_STATVFS], [1], | ||
300 | [Define if we are on interix, and ought to use statvfs plus | ||
301 | some special knowledge on where mounted file systems can be | ||
302 | found. (Interix)]) | ||
303 | fi | ||
304 | ;; | ||
305 | esac | ||
306 | fi | ||
307 | |||
308 | if test -z "$ac_list_mounted_fs"; then | ||
309 | AC_MSG_ERROR([could not determine how to read list of mounted file systems]) | ||
310 | # FIXME -- no need to abort building the whole package | ||
311 | # Can't build mountlist.c or anything that needs its functions | ||
312 | fi | ||
313 | |||
314 | if test $ac_list_mounted_fs = found; then | ||
315 | gl_cv_list_mounted_fs=yes | ||
316 | else | ||
317 | gl_cv_list_mounted_fs=no | ||
318 | fi | ||
11 | ]) | 319 | ]) |
12 | 320 | ||
13 | # Prerequisites of lib/mountlist.c not done by gl_LIST_MOUNTED_FILE_SYSTEMS. | 321 | # Prerequisites of lib/mountlist.c not done by gl_MOUNTLIST. |
14 | AC_DEFUN([gl_PREREQ_MOUNTLIST_EXTRA], | 322 | AC_DEFUN([gl_PREREQ_MOUNTLIST_EXTRA], |
15 | [ | 323 | [ |
16 | dnl Note gl_LIST_MOUNTED_FILE_SYSTEMS checks for mntent.h, not sys/mntent.h. | 324 | dnl Note gl_MOUNTLIST checks for mntent.h, not sys/mntent.h. |
17 | AC_CHECK_HEADERS([sys/mntent.h]) | 325 | AC_CHECK_HEADERS([sys/mntent.h]) |
326 | AC_HEADER_MAJOR()dnl for use of makedev () | ||
18 | gl_FSTYPENAME | 327 | gl_FSTYPENAME |
19 | ]) | 328 | ]) |
329 | |||
330 | # Replace Autoconf's AC_FUNC_GETMNTENT to omit checks that are unnecessary | ||
331 | # nowadays. | ||
332 | AC_DEFUN([AC_FUNC_GETMNTENT], | ||
333 | [ | ||
334 | # getmntent is in the standard C library on most systems, but in -lgen on | ||
335 | # Unixware. | ||
336 | AC_SEARCH_LIBS([getmntent], [gen]) | ||
337 | AC_CHECK_FUNCS([getmntent]) | ||
338 | ]) | ||
diff --git a/gl/m4/msvc-inval.m4 b/gl/m4/msvc-inval.m4 index 9a6a47a7..8d9d21b5 100644 --- a/gl/m4/msvc-inval.m4 +++ b/gl/m4/msvc-inval.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # msvc-inval.m4 serial 1 | 1 | # msvc-inval.m4 serial 1 |
2 | dnl Copyright (C) 2011-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2011-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
diff --git a/gl/m4/msvc-nothrow.m4 b/gl/m4/msvc-nothrow.m4 index a39618a4..0263e490 100644 --- a/gl/m4/msvc-nothrow.m4 +++ b/gl/m4/msvc-nothrow.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # msvc-nothrow.m4 serial 1 | 1 | # msvc-nothrow.m4 serial 1 |
2 | dnl Copyright (C) 2011-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2011-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
diff --git a/gl/m4/multiarch.m4 b/gl/m4/multiarch.m4 index 552ec7e7..3ba5b0f7 100644 --- a/gl/m4/multiarch.m4 +++ b/gl/m4/multiarch.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # multiarch.m4 serial 7 | 1 | # multiarch.m4 serial 9 |
2 | dnl Copyright (C) 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2008-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -21,37 +21,40 @@ dnl with or without modifications, as long as this notice is preserved. | |||
21 | AC_DEFUN_ONCE([gl_MULTIARCH], | 21 | AC_DEFUN_ONCE([gl_MULTIARCH], |
22 | [ | 22 | [ |
23 | dnl Code similar to autoconf-2.63 AC_C_BIGENDIAN. | 23 | dnl Code similar to autoconf-2.63 AC_C_BIGENDIAN. |
24 | gl_cv_c_multiarch=no | 24 | AC_CACHE_CHECK([whether the compiler produces multi-arch binaries], |
25 | AC_COMPILE_IFELSE( | 25 | [gl_cv_c_multiarch], |
26 | [AC_LANG_SOURCE( | 26 | [gl_cv_c_multiarch=no |
27 | [[#ifndef __APPLE_CC__ | 27 | AC_COMPILE_IFELSE( |
28 | not a universal capable compiler | 28 | [AC_LANG_SOURCE( |
29 | #endif | 29 | [[#ifndef __APPLE_CC__ |
30 | typedef int dummy; | 30 | not a universal capable compiler |
31 | ]])], | 31 | #endif |
32 | [ | 32 | typedef int dummy; |
33 | dnl Check for potential -arch flags. It is not universal unless | 33 | ]])], |
34 | dnl there are at least two -arch flags with different values. | 34 | [ |
35 | arch= | 35 | dnl Check for potential -arch flags. It is not universal unless |
36 | prev= | 36 | dnl there are at least two -arch flags with different values. |
37 | for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do | 37 | arch= |
38 | if test -n "$prev"; then | 38 | prev= |
39 | case $word in | 39 | for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do |
40 | i?86 | x86_64 | ppc | ppc64) | 40 | if test -n "$prev"; then |
41 | if test -z "$arch" || test "$arch" = "$word"; then | 41 | case $word in |
42 | arch="$word" | 42 | i?86 | x86_64 | ppc | ppc64 | arm | arm64) |
43 | else | 43 | if test -z "$arch" || test "$arch" = "$word"; then |
44 | gl_cv_c_multiarch=yes | 44 | arch="$word" |
45 | fi | 45 | else |
46 | ;; | 46 | gl_cv_c_multiarch=yes |
47 | esac | 47 | fi |
48 | prev= | 48 | ;; |
49 | else | 49 | esac |
50 | if test "x$word" = "x-arch"; then | 50 | prev= |
51 | prev=arch | 51 | else |
52 | fi | 52 | if test "x$word" = "x-arch"; then |
53 | fi | 53 | prev=arch |
54 | done | 54 | fi |
55 | fi | ||
56 | done | ||
57 | ]) | ||
55 | ]) | 58 | ]) |
56 | if test $gl_cv_c_multiarch = yes; then | 59 | if test $gl_cv_c_multiarch = yes; then |
57 | APPLE_UNIVERSAL_BUILD=1 | 60 | APPLE_UNIVERSAL_BUILD=1 |
diff --git a/gl/m4/netdb_h.m4 b/gl/m4/netdb_h.m4 index 2c69f999..e6aa8925 100644 --- a/gl/m4/netdb_h.m4 +++ b/gl/m4/netdb_h.m4 | |||
@@ -1,10 +1,10 @@ | |||
1 | # netdb_h.m4 serial 11 | 1 | # netdb_h.m4 serial 15 |
2 | dnl Copyright (C) 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2008-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | AC_DEFUN([gl_HEADER_NETDB], | 7 | AC_DEFUN_ONCE([gl_NETDB_H], |
8 | [ | 8 | [ |
9 | AC_REQUIRE([gl_NETDB_H_DEFAULTS]) | 9 | AC_REQUIRE([gl_NETDB_H_DEFAULTS]) |
10 | gl_CHECK_NEXT_HEADERS([netdb.h]) | 10 | gl_CHECK_NEXT_HEADERS([netdb.h]) |
@@ -21,18 +21,33 @@ AC_DEFUN([gl_HEADER_NETDB], | |||
21 | [getaddrinfo freeaddrinfo gai_strerror getnameinfo]) | 21 | [getaddrinfo freeaddrinfo gai_strerror getnameinfo]) |
22 | ]) | 22 | ]) |
23 | 23 | ||
24 | # gl_NETDB_MODULE_INDICATOR([modulename]) | ||
25 | # sets the shell variable that indicates the presence of the given module | ||
26 | # to a C preprocessor expression that will evaluate to 1. | ||
27 | # This macro invocation must not occur in macros that are AC_REQUIREd. | ||
24 | AC_DEFUN([gl_NETDB_MODULE_INDICATOR], | 28 | AC_DEFUN([gl_NETDB_MODULE_INDICATOR], |
25 | [ | 29 | [ |
26 | dnl Use AC_REQUIRE here, so that the default settings are expanded once only. | 30 | dnl Ensure to expand the default settings once only. |
27 | AC_REQUIRE([gl_NETDB_H_DEFAULTS]) | 31 | gl_NETDB_H_REQUIRE_DEFAULTS |
28 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) | 32 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) |
29 | dnl Define it also as a C macro, for the benefit of the unit tests. | 33 | dnl Define it also as a C macro, for the benefit of the unit tests. |
30 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) | 34 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) |
31 | ]) | 35 | ]) |
32 | 36 | ||
37 | # Initializes the default values for AC_SUBSTed shell variables. | ||
38 | # This macro must not be AC_REQUIREd. It must only be invoked, and only | ||
39 | # outside of macros or in macros that are not AC_REQUIREd. | ||
40 | AC_DEFUN([gl_NETDB_H_REQUIRE_DEFAULTS], | ||
41 | [ | ||
42 | m4_defun(GL_MODULE_INDICATOR_PREFIX[_NETDB_H_MODULE_INDICATOR_DEFAULTS], [ | ||
43 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETADDRINFO]) | ||
44 | ]) | ||
45 | m4_require(GL_MODULE_INDICATOR_PREFIX[_NETDB_H_MODULE_INDICATOR_DEFAULTS]) | ||
46 | AC_REQUIRE([gl_NETDB_H_DEFAULTS]) | ||
47 | ]) | ||
48 | |||
33 | AC_DEFUN([gl_NETDB_H_DEFAULTS], | 49 | AC_DEFUN([gl_NETDB_H_DEFAULTS], |
34 | [ | 50 | [ |
35 | GNULIB_GETADDRINFO=0; AC_SUBST([GNULIB_GETADDRINFO]) | ||
36 | dnl Assume proper GNU behavior unless another module says otherwise. | 51 | dnl Assume proper GNU behavior unless another module says otherwise. |
37 | HAVE_STRUCT_ADDRINFO=1; AC_SUBST([HAVE_STRUCT_ADDRINFO]) | 52 | HAVE_STRUCT_ADDRINFO=1; AC_SUBST([HAVE_STRUCT_ADDRINFO]) |
38 | HAVE_DECL_FREEADDRINFO=1; AC_SUBST([HAVE_DECL_FREEADDRINFO]) | 53 | HAVE_DECL_FREEADDRINFO=1; AC_SUBST([HAVE_DECL_FREEADDRINFO]) |
@@ -40,4 +55,5 @@ AC_DEFUN([gl_NETDB_H_DEFAULTS], | |||
40 | HAVE_DECL_GETADDRINFO=1; AC_SUBST([HAVE_DECL_GETADDRINFO]) | 55 | HAVE_DECL_GETADDRINFO=1; AC_SUBST([HAVE_DECL_GETADDRINFO]) |
41 | HAVE_DECL_GETNAMEINFO=1; AC_SUBST([HAVE_DECL_GETNAMEINFO]) | 56 | HAVE_DECL_GETNAMEINFO=1; AC_SUBST([HAVE_DECL_GETNAMEINFO]) |
42 | REPLACE_GAI_STRERROR=0; AC_SUBST([REPLACE_GAI_STRERROR]) | 57 | REPLACE_GAI_STRERROR=0; AC_SUBST([REPLACE_GAI_STRERROR]) |
58 | REPLACE_GETADDRINFO=0; AC_SUBST([REPLACE_GETADDRINFO]) | ||
43 | ]) | 59 | ]) |
diff --git a/gl/m4/netinet_in_h.m4 b/gl/m4/netinet_in_h.m4 index 21971b29..71154191 100644 --- a/gl/m4/netinet_in_h.m4 +++ b/gl/m4/netinet_in_h.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # netinet_in_h.m4 serial 5 | 1 | # netinet_in_h.m4 serial 6 |
2 | dnl Copyright (C) 2006-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2006-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -14,9 +14,9 @@ AC_DEFUN([gl_HEADER_NETINET_IN], | |||
14 | [gl_cv_header_netinet_in_h_selfcontained=no]) | 14 | [gl_cv_header_netinet_in_h_selfcontained=no]) |
15 | ]) | 15 | ]) |
16 | if test $gl_cv_header_netinet_in_h_selfcontained = yes; then | 16 | if test $gl_cv_header_netinet_in_h_selfcontained = yes; then |
17 | NETINET_IN_H='' | 17 | GL_GENERATE_NETINET_IN_H=false |
18 | else | 18 | else |
19 | NETINET_IN_H='netinet/in.h' | 19 | GL_GENERATE_NETINET_IN_H=true |
20 | AC_CHECK_HEADERS([netinet/in.h]) | 20 | AC_CHECK_HEADERS([netinet/in.h]) |
21 | gl_CHECK_NEXT_HEADERS([netinet/in.h]) | 21 | gl_CHECK_NEXT_HEADERS([netinet/in.h]) |
22 | if test $ac_cv_header_netinet_in_h = yes; then | 22 | if test $ac_cv_header_netinet_in_h = yes; then |
@@ -26,6 +26,4 @@ AC_DEFUN([gl_HEADER_NETINET_IN], | |||
26 | fi | 26 | fi |
27 | AC_SUBST([HAVE_NETINET_IN_H]) | 27 | AC_SUBST([HAVE_NETINET_IN_H]) |
28 | fi | 28 | fi |
29 | AC_SUBST([NETINET_IN_H]) | ||
30 | AM_CONDITIONAL([GL_GENERATE_NETINET_IN_H], [test -n "$NETINET_IN_H"]) | ||
31 | ]) | 29 | ]) |
diff --git a/gl/m4/nl_langinfo.m4 b/gl/m4/nl_langinfo.m4 index 25e21015..51e783ce 100644 --- a/gl/m4/nl_langinfo.m4 +++ b/gl/m4/nl_langinfo.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # nl_langinfo.m4 serial 5 | 1 | # nl_langinfo.m4 serial 8 |
2 | dnl Copyright (C) 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -9,7 +9,10 @@ AC_DEFUN([gl_FUNC_NL_LANGINFO], | |||
9 | AC_REQUIRE([gl_LANGINFO_H_DEFAULTS]) | 9 | AC_REQUIRE([gl_LANGINFO_H_DEFAULTS]) |
10 | AC_REQUIRE([gl_LANGINFO_H]) | 10 | AC_REQUIRE([gl_LANGINFO_H]) |
11 | AC_CHECK_FUNCS_ONCE([nl_langinfo]) | 11 | AC_CHECK_FUNCS_ONCE([nl_langinfo]) |
12 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | 12 | AC_REQUIRE([AC_CANONICAL_HOST]) |
13 | AC_REQUIRE([gl_FUNC_SETLOCALE_NULL]) | ||
14 | AC_REQUIRE([gl_PTHREADLIB]) | ||
15 | AC_CHECK_HEADERS_ONCE([threads.h]) | ||
13 | if test $ac_cv_func_nl_langinfo = yes; then | 16 | if test $ac_cv_func_nl_langinfo = yes; then |
14 | # On Irix 6.5, YESEXPR is defined, but nl_langinfo(YESEXPR) is broken. | 17 | # On Irix 6.5, YESEXPR is defined, but nl_langinfo(YESEXPR) is broken. |
15 | AC_CACHE_CHECK([whether YESEXPR works], | 18 | AC_CACHE_CHECK([whether YESEXPR works], |
@@ -36,8 +39,19 @@ AC_DEFUN([gl_FUNC_NL_LANGINFO], | |||
36 | AC_DEFINE_UNQUOTED([FUNC_NL_LANGINFO_YESEXPR_WORKS], | 39 | AC_DEFINE_UNQUOTED([FUNC_NL_LANGINFO_YESEXPR_WORKS], |
37 | [$FUNC_NL_LANGINFO_YESEXPR_WORKS], | 40 | [$FUNC_NL_LANGINFO_YESEXPR_WORKS], |
38 | [Define to 1 if nl_langinfo (YESEXPR) returns a non-empty string.]) | 41 | [Define to 1 if nl_langinfo (YESEXPR) returns a non-empty string.]) |
39 | if test $HAVE_LANGINFO_CODESET = 1 && test $HAVE_LANGINFO_ERA = 1 \ | 42 | # On Solaris 10 and Solaris 11.3, nl_langinfo is not multithread-safe. |
40 | && test $FUNC_NL_LANGINFO_YESEXPR_WORKS = 1; then | 43 | case "$host_os" in |
44 | solaris*) NL_LANGINFO_MTSAFE=0 ;; | ||
45 | *) NL_LANGINFO_MTSAFE=1 ;; | ||
46 | esac | ||
47 | AC_DEFINE_UNQUOTED([NL_LANGINFO_MTSAFE], [$NL_LANGINFO_MTSAFE], | ||
48 | [Define to 1 if nl_langinfo is multithread-safe.]) | ||
49 | if test $HAVE_LANGINFO_CODESET = 1 \ | ||
50 | && test $HAVE_LANGINFO_T_FMT_AMPM = 1 \ | ||
51 | && test $HAVE_LANGINFO_ALTMON = 1 \ | ||
52 | && test $HAVE_LANGINFO_ERA = 1 \ | ||
53 | && test $FUNC_NL_LANGINFO_YESEXPR_WORKS = 1 \ | ||
54 | && test $NL_LANGINFO_MTSAFE = 1; then | ||
41 | : | 55 | : |
42 | else | 56 | else |
43 | REPLACE_NL_LANGINFO=1 | 57 | REPLACE_NL_LANGINFO=1 |
@@ -47,4 +61,17 @@ AC_DEFUN([gl_FUNC_NL_LANGINFO], | |||
47 | else | 61 | else |
48 | HAVE_NL_LANGINFO=0 | 62 | HAVE_NL_LANGINFO=0 |
49 | fi | 63 | fi |
64 | if test $HAVE_NL_LANGINFO = 0 || test $HAVE_LANGINFO_CODESET = 0; then | ||
65 | LIB_NL_LANGINFO="$LIB_SETLOCALE_NULL" | ||
66 | else | ||
67 | LIB_NL_LANGINFO= | ||
68 | fi | ||
69 | dnl LIB_NL_LANGINFO is expected to be empty everywhere. | ||
70 | AC_SUBST([LIB_NL_LANGINFO]) | ||
71 | ]) | ||
72 | |||
73 | # Prerequisites of lib/nl_langinfo-lock.c. | ||
74 | AC_DEFUN([gl_PREREQ_NL_LANGINFO_LOCK], | ||
75 | [ | ||
76 | gl_VISIBILITY | ||
50 | ]) | 77 | ]) |
diff --git a/gl/m4/nls.m4 b/gl/m4/nls.m4 deleted file mode 100644 index 8f8a147b..00000000 --- a/gl/m4/nls.m4 +++ /dev/null | |||
@@ -1,32 +0,0 @@ | |||
1 | # nls.m4 serial 5 (gettext-0.18) | ||
2 | dnl Copyright (C) 1995-2003, 2005-2006, 2008-2013 Free Software Foundation, | ||
3 | dnl Inc. | ||
4 | dnl This file is free software; the Free Software Foundation | ||
5 | dnl gives unlimited permission to copy and/or distribute it, | ||
6 | dnl with or without modifications, as long as this notice is preserved. | ||
7 | dnl | ||
8 | dnl This file can can be used in projects which are not available under | ||
9 | dnl the GNU General Public License or the GNU Library General Public | ||
10 | dnl License but which still want to provide support for the GNU gettext | ||
11 | dnl functionality. | ||
12 | dnl Please note that the actual code of the GNU gettext library is covered | ||
13 | dnl by the GNU Library General Public License, and the rest of the GNU | ||
14 | dnl gettext package package is covered by the GNU General Public License. | ||
15 | dnl They are *not* in the public domain. | ||
16 | |||
17 | dnl Authors: | ||
18 | dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. | ||
19 | dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003. | ||
20 | |||
21 | AC_PREREQ([2.50]) | ||
22 | |||
23 | AC_DEFUN([AM_NLS], | ||
24 | [ | ||
25 | AC_MSG_CHECKING([whether NLS is requested]) | ||
26 | dnl Default is enabled NLS | ||
27 | AC_ARG_ENABLE([nls], | ||
28 | [ --disable-nls do not use Native Language Support], | ||
29 | USE_NLS=$enableval, USE_NLS=yes) | ||
30 | AC_MSG_RESULT([$USE_NLS]) | ||
31 | AC_SUBST([USE_NLS]) | ||
32 | ]) | ||
diff --git a/gl/m4/nocrash.m4 b/gl/m4/nocrash.m4 index 105b884f..6a766387 100644 --- a/gl/m4/nocrash.m4 +++ b/gl/m4/nocrash.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # nocrash.m4 serial 4 | 1 | # nocrash.m4 serial 5 |
2 | dnl Copyright (C) 2005, 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2005, 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -53,7 +53,7 @@ nocrash_init (void) | |||
53 | /* Allocate a port on which the thread shall listen for exceptions. */ | 53 | /* Allocate a port on which the thread shall listen for exceptions. */ |
54 | if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port) | 54 | if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port) |
55 | == KERN_SUCCESS) { | 55 | == KERN_SUCCESS) { |
56 | /* See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */ | 56 | /* See https://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */ |
57 | if (mach_port_insert_right (self, our_exception_port, our_exception_port, | 57 | if (mach_port_insert_right (self, our_exception_port, our_exception_port, |
58 | MACH_MSG_TYPE_MAKE_SEND) | 58 | MACH_MSG_TYPE_MAKE_SEND) |
59 | == KERN_SUCCESS) { | 59 | == KERN_SUCCESS) { |
@@ -72,14 +72,14 @@ nocrash_init (void) | |||
72 | for a particular thread. This has the effect that when our exception | 72 | for a particular thread. This has the effect that when our exception |
73 | port gets the message, the thread specific exception port has already | 73 | port gets the message, the thread specific exception port has already |
74 | been asked, and we don't need to bother about it. | 74 | been asked, and we don't need to bother about it. |
75 | See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */ | 75 | See https://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */ |
76 | task_set_exception_ports (self, mask, our_exception_port, | 76 | task_set_exception_ports (self, mask, our_exception_port, |
77 | EXCEPTION_DEFAULT, MACHINE_THREAD_STATE); | 77 | EXCEPTION_DEFAULT, MACHINE_THREAD_STATE); |
78 | } | 78 | } |
79 | } | 79 | } |
80 | } | 80 | } |
81 | } | 81 | } |
82 | #elif (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ | 82 | #elif defined _WIN32 && ! defined __CYGWIN__ |
83 | /* Avoid a crash on native Windows. */ | 83 | /* Avoid a crash on native Windows. */ |
84 | #define WIN32_LEAN_AND_MEAN | 84 | #define WIN32_LEAN_AND_MEAN |
85 | #include <windows.h> | 85 | #include <windows.h> |
@@ -110,11 +110,12 @@ nocrash_init (void) | |||
110 | #else | 110 | #else |
111 | /* Avoid a crash on POSIX systems. */ | 111 | /* Avoid a crash on POSIX systems. */ |
112 | #include <signal.h> | 112 | #include <signal.h> |
113 | #include <unistd.h> | ||
113 | /* A POSIX signal handler. */ | 114 | /* A POSIX signal handler. */ |
114 | static void | 115 | static void |
115 | exception_handler (int sig) | 116 | exception_handler (int sig) |
116 | { | 117 | { |
117 | exit (1); | 118 | _exit (1); |
118 | } | 119 | } |
119 | static void | 120 | static void |
120 | nocrash_init (void) | 121 | nocrash_init (void) |
diff --git a/gl/m4/off_t.m4 b/gl/m4/off_t.m4 index d355d013..880f3472 100644 --- a/gl/m4/off_t.m4 +++ b/gl/m4/off_t.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # off_t.m4 serial 1 | 1 | # off_t.m4 serial 1 |
2 | dnl Copyright (C) 2012-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2012-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
diff --git a/gl/m4/onceonly.m4 b/gl/m4/onceonly.m4 deleted file mode 100644 index 0a875a3d..00000000 --- a/gl/m4/onceonly.m4 +++ /dev/null | |||
@@ -1,104 +0,0 @@ | |||
1 | # onceonly.m4 serial 9 | ||
2 | dnl Copyright (C) 2002-2003, 2005-2006, 2008-2013 Free Software Foundation, | ||
3 | dnl Inc. | ||
4 | dnl | ||
5 | dnl This file is free software; you can redistribute it and/or modify | ||
6 | dnl it under the terms of the GNU General Public License as published by | ||
7 | dnl the Free Software Foundation; either version 3 of the License, or | ||
8 | dnl (at your option) any later version. | ||
9 | dnl | ||
10 | dnl This file is distributed in the hope that it will be useful, | ||
11 | dnl but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | dnl GNU General Public License for more details. | ||
14 | dnl | ||
15 | dnl You should have received a copy of the GNU General Public License | ||
16 | dnl along with this file. If not, see <http://www.gnu.org/licenses/>. | ||
17 | dnl | ||
18 | dnl As a special exception to the GNU General Public License, | ||
19 | dnl this file may be distributed as part of a program | ||
20 | dnl that contains a configuration script generated by Autoconf, under | ||
21 | dnl the same distribution terms as the rest of that program. | ||
22 | |||
23 | dnl This file defines some "once only" variants of standard autoconf macros. | ||
24 | dnl AC_CHECK_HEADERS_ONCE like AC_CHECK_HEADERS | ||
25 | dnl AC_CHECK_FUNCS_ONCE like AC_CHECK_FUNCS | ||
26 | dnl AC_CHECK_DECLS_ONCE like AC_CHECK_DECLS | ||
27 | dnl AC_REQUIRE([AC_FUNC_STRCOLL]) like AC_FUNC_STRCOLL | ||
28 | dnl The advantage is that the check for each of the headers/functions/decls | ||
29 | dnl will be put only once into the 'configure' file. It keeps the size of | ||
30 | dnl the 'configure' file down, and avoids redundant output when 'configure' | ||
31 | dnl is run. | ||
32 | dnl The drawback is that the checks cannot be conditionalized. If you write | ||
33 | dnl if some_condition; then gl_CHECK_HEADERS(stdlib.h); fi | ||
34 | dnl inside an AC_DEFUNed function, the gl_CHECK_HEADERS macro call expands to | ||
35 | dnl empty, and the check will be inserted before the body of the AC_DEFUNed | ||
36 | dnl function. | ||
37 | |||
38 | dnl The original code implemented AC_CHECK_HEADERS_ONCE and AC_CHECK_FUNCS_ONCE | ||
39 | dnl in terms of AC_DEFUN and AC_REQUIRE. This implementation uses diversions to | ||
40 | dnl named sections DEFAULTS and INIT_PREPARE in order to check all requested | ||
41 | dnl headers at once, thus reducing the size of 'configure'. It is known to work | ||
42 | dnl with autoconf 2.57..2.62 at least . The size reduction is ca. 9%. | ||
43 | |||
44 | dnl Autoconf version 2.59 plus gnulib is required; this file is not needed | ||
45 | dnl with Autoconf 2.60 or greater. But note that autoconf's implementation of | ||
46 | dnl AC_CHECK_DECLS_ONCE expects a comma-separated list of symbols as first | ||
47 | dnl argument! | ||
48 | AC_PREREQ([2.59]) | ||
49 | |||
50 | # AC_CHECK_HEADERS_ONCE(HEADER1 HEADER2 ...) is a once-only variant of | ||
51 | # AC_CHECK_HEADERS(HEADER1 HEADER2 ...). | ||
52 | AC_DEFUN([AC_CHECK_HEADERS_ONCE], [ | ||
53 | : | ||
54 | m4_foreach_w([gl_HEADER_NAME], [$1], [ | ||
55 | AC_DEFUN([gl_CHECK_HEADER_]m4_quote(m4_translit(gl_HEADER_NAME, | ||
56 | [./-], [___])), [ | ||
57 | m4_divert_text([INIT_PREPARE], | ||
58 | [gl_header_list="$gl_header_list gl_HEADER_NAME"]) | ||
59 | gl_HEADERS_EXPANSION | ||
60 | AH_TEMPLATE(AS_TR_CPP([HAVE_]m4_defn([gl_HEADER_NAME])), | ||
61 | [Define to 1 if you have the <]m4_defn([gl_HEADER_NAME])[> header file.]) | ||
62 | ]) | ||
63 | AC_REQUIRE([gl_CHECK_HEADER_]m4_quote(m4_translit(gl_HEADER_NAME, | ||
64 | [./-], [___]))) | ||
65 | ]) | ||
66 | ]) | ||
67 | m4_define([gl_HEADERS_EXPANSION], [ | ||
68 | m4_divert_text([DEFAULTS], [gl_header_list=]) | ||
69 | AC_CHECK_HEADERS([$gl_header_list]) | ||
70 | m4_define([gl_HEADERS_EXPANSION], []) | ||
71 | ]) | ||
72 | |||
73 | # AC_CHECK_FUNCS_ONCE(FUNC1 FUNC2 ...) is a once-only variant of | ||
74 | # AC_CHECK_FUNCS(FUNC1 FUNC2 ...). | ||
75 | AC_DEFUN([AC_CHECK_FUNCS_ONCE], [ | ||
76 | : | ||
77 | m4_foreach_w([gl_FUNC_NAME], [$1], [ | ||
78 | AC_DEFUN([gl_CHECK_FUNC_]m4_defn([gl_FUNC_NAME]), [ | ||
79 | m4_divert_text([INIT_PREPARE], | ||
80 | [gl_func_list="$gl_func_list gl_FUNC_NAME"]) | ||
81 | gl_FUNCS_EXPANSION | ||
82 | AH_TEMPLATE(AS_TR_CPP([HAVE_]m4_defn([gl_FUNC_NAME])), | ||
83 | [Define to 1 if you have the ']m4_defn([gl_FUNC_NAME])[' function.]) | ||
84 | ]) | ||
85 | AC_REQUIRE([gl_CHECK_FUNC_]m4_defn([gl_FUNC_NAME])) | ||
86 | ]) | ||
87 | ]) | ||
88 | m4_define([gl_FUNCS_EXPANSION], [ | ||
89 | m4_divert_text([DEFAULTS], [gl_func_list=]) | ||
90 | AC_CHECK_FUNCS([$gl_func_list]) | ||
91 | m4_define([gl_FUNCS_EXPANSION], []) | ||
92 | ]) | ||
93 | |||
94 | # AC_CHECK_DECLS_ONCE(DECL1 DECL2 ...) is a once-only variant of | ||
95 | # AC_CHECK_DECLS(DECL1, DECL2, ...). | ||
96 | AC_DEFUN([AC_CHECK_DECLS_ONCE], [ | ||
97 | : | ||
98 | m4_foreach_w([gl_DECL_NAME], [$1], [ | ||
99 | AC_DEFUN([gl_CHECK_DECL_]m4_defn([gl_DECL_NAME]), [ | ||
100 | AC_CHECK_DECLS(m4_defn([gl_DECL_NAME])) | ||
101 | ]) | ||
102 | AC_REQUIRE([gl_CHECK_DECL_]m4_defn([gl_DECL_NAME])) | ||
103 | ]) | ||
104 | ]) | ||
diff --git a/gl/m4/open-cloexec.m4 b/gl/m4/open-cloexec.m4 new file mode 100644 index 00000000..fd572fcd --- /dev/null +++ b/gl/m4/open-cloexec.m4 | |||
@@ -0,0 +1,21 @@ | |||
1 | # Test whether O_CLOEXEC is defined. | ||
2 | |||
3 | dnl Copyright 2017-2023 Free Software Foundation, Inc. | ||
4 | dnl This file is free software; the Free Software Foundation | ||
5 | dnl gives unlimited permission to copy and/or distribute it, | ||
6 | dnl with or without modifications, as long as this notice is preserved. | ||
7 | |||
8 | AC_DEFUN([gl_PREPROC_O_CLOEXEC], | ||
9 | [ | ||
10 | AC_CACHE_CHECK([for O_CLOEXEC], | ||
11 | [gl_cv_macro_O_CLOEXEC], | ||
12 | [AC_COMPILE_IFELSE( | ||
13 | [AC_LANG_PROGRAM([[#include <fcntl.h> | ||
14 | #ifndef O_CLOEXEC | ||
15 | choke me; | ||
16 | #endif | ||
17 | ]], | ||
18 | [[return O_CLOEXEC;]])], | ||
19 | [gl_cv_macro_O_CLOEXEC=yes], | ||
20 | [gl_cv_macro_O_CLOEXEC=no])]) | ||
21 | ]) | ||
diff --git a/gl/m4/open-slash.m4 b/gl/m4/open-slash.m4 new file mode 100644 index 00000000..1f731f8a --- /dev/null +++ b/gl/m4/open-slash.m4 | |||
@@ -0,0 +1,60 @@ | |||
1 | # open-slash.m4 serial 2 | ||
2 | dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | dnl Tests whether open() and creat() recognize a trailing slash. | ||
8 | dnl Sets gl_cv_func_open_slash. | ||
9 | AC_DEFUN([gl_OPEN_TRAILING_SLASH_BUG], | ||
10 | [ | ||
11 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | ||
12 | dnl open("foo/") should not create a file when the file name has a | ||
13 | dnl trailing slash. FreeBSD only has the problem on symlinks. | ||
14 | AC_CHECK_FUNCS_ONCE([lstat]) | ||
15 | AC_CACHE_CHECK([whether open recognizes a trailing slash], | ||
16 | [gl_cv_func_open_slash], | ||
17 | [# Assume that if we have lstat, we can also check symlinks. | ||
18 | if test $ac_cv_func_lstat = yes; then | ||
19 | touch conftest.tmp | ||
20 | ln -s conftest.tmp conftest.lnk | ||
21 | fi | ||
22 | AC_RUN_IFELSE( | ||
23 | [AC_LANG_SOURCE([[ | ||
24 | #include <fcntl.h> | ||
25 | #if HAVE_UNISTD_H | ||
26 | # include <unistd.h> | ||
27 | #endif | ||
28 | ]GL_MDA_DEFINES[ | ||
29 | int main () | ||
30 | { | ||
31 | int result = 0; | ||
32 | #if HAVE_LSTAT | ||
33 | if (open ("conftest.lnk/", O_RDONLY) != -1) | ||
34 | result |= 1; | ||
35 | #endif | ||
36 | if (open ("conftest.sl/", O_CREAT, 0600) >= 0) | ||
37 | result |= 2; | ||
38 | return result; | ||
39 | }]])], | ||
40 | [gl_cv_func_open_slash=yes], | ||
41 | [gl_cv_func_open_slash=no], | ||
42 | [ | ||
43 | changequote(,)dnl | ||
44 | case "$host_os" in | ||
45 | freebsd* | aix* | hpux* | solaris2.[0-9] | solaris2.[0-9].*) | ||
46 | gl_cv_func_open_slash="guessing no" ;; | ||
47 | *) | ||
48 | gl_cv_func_open_slash="guessing yes" ;; | ||
49 | esac | ||
50 | changequote([,])dnl | ||
51 | ]) | ||
52 | rm -f conftest.sl conftest.tmp conftest.lnk | ||
53 | ]) | ||
54 | case "$gl_cv_func_open_slash" in | ||
55 | *no) | ||
56 | AC_DEFINE([OPEN_TRAILING_SLASH_BUG], [1], | ||
57 | [Define to 1 if open() fails to recognize a trailing slash.]) | ||
58 | ;; | ||
59 | esac | ||
60 | ]) | ||
diff --git a/gl/m4/open.m4 b/gl/m4/open.m4 new file mode 100644 index 00000000..94fa2bb7 --- /dev/null +++ b/gl/m4/open.m4 | |||
@@ -0,0 +1,56 @@ | |||
1 | # open.m4 serial 15 | ||
2 | dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_FUNC_OPEN], | ||
8 | [ | ||
9 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
10 | AC_REQUIRE([gl_PREPROC_O_CLOEXEC]) | ||
11 | case "$host_os" in | ||
12 | mingw* | pw*) | ||
13 | REPLACE_OPEN=1 | ||
14 | ;; | ||
15 | *) | ||
16 | dnl open("foo/") should not create a file when the file name has a | ||
17 | dnl trailing slash. FreeBSD only has the problem on symlinks. | ||
18 | AC_CHECK_FUNCS_ONCE([lstat]) | ||
19 | if test "$gl_cv_macro_O_CLOEXEC" != yes; then | ||
20 | REPLACE_OPEN=1 | ||
21 | fi | ||
22 | gl_OPEN_TRAILING_SLASH_BUG | ||
23 | case "$gl_cv_func_open_slash" in | ||
24 | *no) | ||
25 | REPLACE_OPEN=1 | ||
26 | ;; | ||
27 | esac | ||
28 | ;; | ||
29 | esac | ||
30 | dnl Replace open() for supporting the gnulib-defined fchdir() function, | ||
31 | dnl to keep fchdir's bookkeeping up-to-date. | ||
32 | m4_ifdef([gl_FUNC_FCHDIR], [ | ||
33 | if test $REPLACE_OPEN = 0; then | ||
34 | gl_TEST_FCHDIR | ||
35 | if test $HAVE_FCHDIR = 0; then | ||
36 | REPLACE_OPEN=1 | ||
37 | fi | ||
38 | fi | ||
39 | ]) | ||
40 | dnl Replace open() for supporting the gnulib-defined O_NONBLOCK flag. | ||
41 | m4_ifdef([gl_NONBLOCKING_IO], [ | ||
42 | if test $REPLACE_OPEN = 0; then | ||
43 | gl_NONBLOCKING_IO | ||
44 | if test $gl_cv_have_open_O_NONBLOCK != yes; then | ||
45 | REPLACE_OPEN=1 | ||
46 | fi | ||
47 | fi | ||
48 | ]) | ||
49 | ]) | ||
50 | |||
51 | # Prerequisites of lib/open.c. | ||
52 | AC_DEFUN([gl_PREREQ_OPEN], | ||
53 | [ | ||
54 | AC_REQUIRE([gl_PROMOTED_TYPE_MODE_T]) | ||
55 | : | ||
56 | ]) | ||
diff --git a/gl/m4/pathmax.m4 b/gl/m4/pathmax.m4 new file mode 100644 index 00000000..6d47d2c0 --- /dev/null +++ b/gl/m4/pathmax.m4 | |||
@@ -0,0 +1,42 @@ | |||
1 | # pathmax.m4 serial 11 | ||
2 | dnl Copyright (C) 2002-2003, 2005-2006, 2009-2023 Free Software Foundation, | ||
3 | dnl Inc. | ||
4 | dnl This file is free software; the Free Software Foundation | ||
5 | dnl gives unlimited permission to copy and/or distribute it, | ||
6 | dnl with or without modifications, as long as this notice is preserved. | ||
7 | |||
8 | AC_DEFUN([gl_PATHMAX], | ||
9 | [ | ||
10 | dnl Prerequisites of lib/pathmax.h. | ||
11 | AC_CHECK_HEADERS_ONCE([sys/param.h]) | ||
12 | ]) | ||
13 | |||
14 | # Expands to a piece of C program that defines PATH_MAX in the same way as | ||
15 | # "pathmax.h" will do. | ||
16 | AC_DEFUN([gl_PATHMAX_SNIPPET], [[ | ||
17 | /* Arrange to define PATH_MAX, like "pathmax.h" does. */ | ||
18 | #if HAVE_UNISTD_H | ||
19 | # include <unistd.h> | ||
20 | #endif | ||
21 | #include <limits.h> | ||
22 | #if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN | ||
23 | # include <sys/param.h> | ||
24 | #endif | ||
25 | #if !defined PATH_MAX && defined MAXPATHLEN | ||
26 | # define PATH_MAX MAXPATHLEN | ||
27 | #endif | ||
28 | #ifdef __hpux | ||
29 | # undef PATH_MAX | ||
30 | # define PATH_MAX 1024 | ||
31 | #endif | ||
32 | #if defined _WIN32 && ! defined __CYGWIN__ | ||
33 | # undef PATH_MAX | ||
34 | # define PATH_MAX 260 | ||
35 | #endif | ||
36 | ]]) | ||
37 | |||
38 | # Prerequisites of gl_PATHMAX_SNIPPET. | ||
39 | AC_DEFUN([gl_PATHMAX_SNIPPET_PREREQ], | ||
40 | [ | ||
41 | AC_CHECK_HEADERS_ONCE([unistd.h sys/param.h]) | ||
42 | ]) | ||
diff --git a/gl/m4/pid_t.m4 b/gl/m4/pid_t.m4 new file mode 100644 index 00000000..0fd7d0a1 --- /dev/null +++ b/gl/m4/pid_t.m4 | |||
@@ -0,0 +1,38 @@ | |||
1 | # pid_t.m4 serial 4 | ||
2 | dnl Copyright (C) 2020-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | # The following implementation works around a problem in autoconf <= 2.69. | ||
8 | m4_version_prereq([2.70], [], [ | ||
9 | |||
10 | dnl Define pid_t if the headers don't define it. | ||
11 | AC_DEFUN([AC_TYPE_PID_T], | ||
12 | [ | ||
13 | AC_CHECK_TYPE([pid_t], | ||
14 | [], | ||
15 | [dnl On 64-bit native Windows, define it to the equivalent of 'intptr_t' | ||
16 | dnl (= 'long long' = '__int64'), because that is the return type | ||
17 | dnl of the _spawnv* functions | ||
18 | dnl <https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/spawnvp-wspawnvp> | ||
19 | dnl and the argument type of the _cwait function | ||
20 | dnl <https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/cwait>. | ||
21 | dnl Otherwise (on 32-bit Windows and on old Unix platforms), define it | ||
22 | dnl to 'int'. | ||
23 | AC_COMPILE_IFELSE( | ||
24 | [AC_LANG_PROGRAM([[ | ||
25 | #if defined _WIN64 && !defined __CYGWIN__ | ||
26 | LLP64 | ||
27 | #endif | ||
28 | ]]) | ||
29 | ], | ||
30 | [gl_pid_type='int'], | ||
31 | [gl_pid_type='__int64']) | ||
32 | AC_DEFINE_UNQUOTED([pid_t], [$gl_pid_type], | ||
33 | [Define as a signed integer type capable of holding a process identifier.]) | ||
34 | ], | ||
35 | [AC_INCLUDES_DEFAULT]) | ||
36 | ]) | ||
37 | |||
38 | ])# m4_version_prereq 2.70 | ||
diff --git a/gl/m4/po.m4 b/gl/m4/po.m4 deleted file mode 100644 index 1c70b6c1..00000000 --- a/gl/m4/po.m4 +++ /dev/null | |||
@@ -1,453 +0,0 @@ | |||
1 | # po.m4 serial 21 (gettext-0.18.3) | ||
2 | dnl Copyright (C) 1995-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | dnl | ||
7 | dnl This file can can be used in projects which are not available under | ||
8 | dnl the GNU General Public License or the GNU Library General Public | ||
9 | dnl License but which still want to provide support for the GNU gettext | ||
10 | dnl functionality. | ||
11 | dnl Please note that the actual code of the GNU gettext library is covered | ||
12 | dnl by the GNU Library General Public License, and the rest of the GNU | ||
13 | dnl gettext package package is covered by the GNU General Public License. | ||
14 | dnl They are *not* in the public domain. | ||
15 | |||
16 | dnl Authors: | ||
17 | dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. | ||
18 | dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003. | ||
19 | |||
20 | AC_PREREQ([2.60]) | ||
21 | |||
22 | dnl Checks for all prerequisites of the po subdirectory. | ||
23 | AC_DEFUN([AM_PO_SUBDIRS], | ||
24 | [ | ||
25 | AC_REQUIRE([AC_PROG_MAKE_SET])dnl | ||
26 | AC_REQUIRE([AC_PROG_INSTALL])dnl | ||
27 | AC_REQUIRE([AC_PROG_MKDIR_P])dnl | ||
28 | AC_REQUIRE([AC_PROG_SED])dnl | ||
29 | AC_REQUIRE([AM_NLS])dnl | ||
30 | |||
31 | dnl Release version of the gettext macros. This is used to ensure that | ||
32 | dnl the gettext macros and po/Makefile.in.in are in sync. | ||
33 | AC_SUBST([GETTEXT_MACRO_VERSION], [0.18]) | ||
34 | |||
35 | dnl Perform the following tests also if --disable-nls has been given, | ||
36 | dnl because they are needed for "make dist" to work. | ||
37 | |||
38 | dnl Search for GNU msgfmt in the PATH. | ||
39 | dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. | ||
40 | dnl The second test excludes FreeBSD msgfmt. | ||
41 | AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, | ||
42 | [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && | ||
43 | (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], | ||
44 | :) | ||
45 | AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) | ||
46 | |||
47 | dnl Test whether it is GNU msgfmt >= 0.15. | ||
48 | changequote(,)dnl | ||
49 | case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in | ||
50 | '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; | ||
51 | *) MSGFMT_015=$MSGFMT ;; | ||
52 | esac | ||
53 | changequote([,])dnl | ||
54 | AC_SUBST([MSGFMT_015]) | ||
55 | changequote(,)dnl | ||
56 | case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in | ||
57 | '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; | ||
58 | *) GMSGFMT_015=$GMSGFMT ;; | ||
59 | esac | ||
60 | changequote([,])dnl | ||
61 | AC_SUBST([GMSGFMT_015]) | ||
62 | |||
63 | dnl Search for GNU xgettext 0.12 or newer in the PATH. | ||
64 | dnl The first test excludes Solaris xgettext and early GNU xgettext versions. | ||
65 | dnl The second test excludes FreeBSD xgettext. | ||
66 | AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, | ||
67 | [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && | ||
68 | (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], | ||
69 | :) | ||
70 | dnl Remove leftover from FreeBSD xgettext call. | ||
71 | rm -f messages.po | ||
72 | |||
73 | dnl Test whether it is GNU xgettext >= 0.15. | ||
74 | changequote(,)dnl | ||
75 | case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in | ||
76 | '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; | ||
77 | *) XGETTEXT_015=$XGETTEXT ;; | ||
78 | esac | ||
79 | changequote([,])dnl | ||
80 | AC_SUBST([XGETTEXT_015]) | ||
81 | |||
82 | dnl Search for GNU msgmerge 0.11 or newer in the PATH. | ||
83 | AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, | ||
84 | [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) | ||
85 | |||
86 | dnl Installation directories. | ||
87 | dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we | ||
88 | dnl have to define it here, so that it can be used in po/Makefile. | ||
89 | test -n "$localedir" || localedir='${datadir}/locale' | ||
90 | AC_SUBST([localedir]) | ||
91 | |||
92 | dnl Support for AM_XGETTEXT_OPTION. | ||
93 | test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= | ||
94 | AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) | ||
95 | |||
96 | AC_CONFIG_COMMANDS([po-directories], [[ | ||
97 | for ac_file in $CONFIG_FILES; do | ||
98 | # Support "outfile[:infile[:infile...]]" | ||
99 | case "$ac_file" in | ||
100 | *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; | ||
101 | esac | ||
102 | # PO directories have a Makefile.in generated from Makefile.in.in. | ||
103 | case "$ac_file" in */Makefile.in) | ||
104 | # Adjust a relative srcdir. | ||
105 | ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` | ||
106 | ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` | ||
107 | ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` | ||
108 | # In autoconf-2.13 it is called $ac_given_srcdir. | ||
109 | # In autoconf-2.50 it is called $srcdir. | ||
110 | test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" | ||
111 | case "$ac_given_srcdir" in | ||
112 | .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; | ||
113 | /*) top_srcdir="$ac_given_srcdir" ;; | ||
114 | *) top_srcdir="$ac_dots$ac_given_srcdir" ;; | ||
115 | esac | ||
116 | # Treat a directory as a PO directory if and only if it has a | ||
117 | # POTFILES.in file. This allows packages to have multiple PO | ||
118 | # directories under different names or in different locations. | ||
119 | if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then | ||
120 | rm -f "$ac_dir/POTFILES" | ||
121 | test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" | ||
122 | gt_tab=`printf '\t'` | ||
123 | cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" | ||
124 | POMAKEFILEDEPS="POTFILES.in" | ||
125 | # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend | ||
126 | # on $ac_dir but don't depend on user-specified configuration | ||
127 | # parameters. | ||
128 | if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then | ||
129 | # The LINGUAS file contains the set of available languages. | ||
130 | if test -n "$OBSOLETE_ALL_LINGUAS"; then | ||
131 | test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" | ||
132 | fi | ||
133 | ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` | ||
134 | # Hide the ALL_LINGUAS assignment from automake < 1.5. | ||
135 | eval 'ALL_LINGUAS''=$ALL_LINGUAS_' | ||
136 | POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" | ||
137 | else | ||
138 | # The set of available languages was given in configure.in. | ||
139 | # Hide the ALL_LINGUAS assignment from automake < 1.5. | ||
140 | eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' | ||
141 | fi | ||
142 | # Compute POFILES | ||
143 | # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) | ||
144 | # Compute UPDATEPOFILES | ||
145 | # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) | ||
146 | # Compute DUMMYPOFILES | ||
147 | # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) | ||
148 | # Compute GMOFILES | ||
149 | # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) | ||
150 | case "$ac_given_srcdir" in | ||
151 | .) srcdirpre= ;; | ||
152 | *) srcdirpre='$(srcdir)/' ;; | ||
153 | esac | ||
154 | POFILES= | ||
155 | UPDATEPOFILES= | ||
156 | DUMMYPOFILES= | ||
157 | GMOFILES= | ||
158 | for lang in $ALL_LINGUAS; do | ||
159 | POFILES="$POFILES $srcdirpre$lang.po" | ||
160 | UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" | ||
161 | DUMMYPOFILES="$DUMMYPOFILES $lang.nop" | ||
162 | GMOFILES="$GMOFILES $srcdirpre$lang.gmo" | ||
163 | done | ||
164 | # CATALOGS depends on both $ac_dir and the user's LINGUAS | ||
165 | # environment variable. | ||
166 | INST_LINGUAS= | ||
167 | if test -n "$ALL_LINGUAS"; then | ||
168 | for presentlang in $ALL_LINGUAS; do | ||
169 | useit=no | ||
170 | if test "%UNSET%" != "$LINGUAS"; then | ||
171 | desiredlanguages="$LINGUAS" | ||
172 | else | ||
173 | desiredlanguages="$ALL_LINGUAS" | ||
174 | fi | ||
175 | for desiredlang in $desiredlanguages; do | ||
176 | # Use the presentlang catalog if desiredlang is | ||
177 | # a. equal to presentlang, or | ||
178 | # b. a variant of presentlang (because in this case, | ||
179 | # presentlang can be used as a fallback for messages | ||
180 | # which are not translated in the desiredlang catalog). | ||
181 | case "$desiredlang" in | ||
182 | "$presentlang"*) useit=yes;; | ||
183 | esac | ||
184 | done | ||
185 | if test $useit = yes; then | ||
186 | INST_LINGUAS="$INST_LINGUAS $presentlang" | ||
187 | fi | ||
188 | done | ||
189 | fi | ||
190 | CATALOGS= | ||
191 | if test -n "$INST_LINGUAS"; then | ||
192 | for lang in $INST_LINGUAS; do | ||
193 | CATALOGS="$CATALOGS $lang.gmo" | ||
194 | done | ||
195 | fi | ||
196 | test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" | ||
197 | sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" | ||
198 | for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do | ||
199 | if test -f "$f"; then | ||
200 | case "$f" in | ||
201 | *.orig | *.bak | *~) ;; | ||
202 | *) cat "$f" >> "$ac_dir/Makefile" ;; | ||
203 | esac | ||
204 | fi | ||
205 | done | ||
206 | fi | ||
207 | ;; | ||
208 | esac | ||
209 | done]], | ||
210 | [# Capture the value of obsolete ALL_LINGUAS because we need it to compute | ||
211 | # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it | ||
212 | # from automake < 1.5. | ||
213 | eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' | ||
214 | # Capture the value of LINGUAS because we need it to compute CATALOGS. | ||
215 | LINGUAS="${LINGUAS-%UNSET%}" | ||
216 | ]) | ||
217 | ]) | ||
218 | |||
219 | dnl Postprocesses a Makefile in a directory containing PO files. | ||
220 | AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], | ||
221 | [ | ||
222 | # When this code is run, in config.status, two variables have already been | ||
223 | # set: | ||
224 | # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, | ||
225 | # - LINGUAS is the value of the environment variable LINGUAS at configure | ||
226 | # time. | ||
227 | |||
228 | changequote(,)dnl | ||
229 | # Adjust a relative srcdir. | ||
230 | ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` | ||
231 | ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` | ||
232 | ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` | ||
233 | # In autoconf-2.13 it is called $ac_given_srcdir. | ||
234 | # In autoconf-2.50 it is called $srcdir. | ||
235 | test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" | ||
236 | case "$ac_given_srcdir" in | ||
237 | .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; | ||
238 | /*) top_srcdir="$ac_given_srcdir" ;; | ||
239 | *) top_srcdir="$ac_dots$ac_given_srcdir" ;; | ||
240 | esac | ||
241 | |||
242 | # Find a way to echo strings without interpreting backslash. | ||
243 | if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then | ||
244 | gt_echo='echo' | ||
245 | else | ||
246 | if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then | ||
247 | gt_echo='printf %s\n' | ||
248 | else | ||
249 | echo_func () { | ||
250 | cat <<EOT | ||
251 | $* | ||
252 | EOT | ||
253 | } | ||
254 | gt_echo='echo_func' | ||
255 | fi | ||
256 | fi | ||
257 | |||
258 | # A sed script that extracts the value of VARIABLE from a Makefile. | ||
259 | tab=`printf '\t'` | ||
260 | sed_x_variable=' | ||
261 | # Test if the hold space is empty. | ||
262 | x | ||
263 | s/P/P/ | ||
264 | x | ||
265 | ta | ||
266 | # Yes it was empty. Look if we have the expected variable definition. | ||
267 | /^['"${tab}"' ]*VARIABLE['"${tab}"' ]*=/{ | ||
268 | # Seen the first line of the variable definition. | ||
269 | s/^['"${tab}"' ]*VARIABLE['"${tab}"' ]*=// | ||
270 | ba | ||
271 | } | ||
272 | bd | ||
273 | :a | ||
274 | # Here we are processing a line from the variable definition. | ||
275 | # Remove comment, more precisely replace it with a space. | ||
276 | s/#.*$/ / | ||
277 | # See if the line ends in a backslash. | ||
278 | tb | ||
279 | :b | ||
280 | s/\\$// | ||
281 | # Print the line, without the trailing backslash. | ||
282 | p | ||
283 | tc | ||
284 | # There was no trailing backslash. The end of the variable definition is | ||
285 | # reached. Clear the hold space. | ||
286 | s/^.*$// | ||
287 | x | ||
288 | bd | ||
289 | :c | ||
290 | # A trailing backslash means that the variable definition continues in the | ||
291 | # next line. Put a nonempty string into the hold space to indicate this. | ||
292 | s/^.*$/P/ | ||
293 | x | ||
294 | :d | ||
295 | ' | ||
296 | changequote([,])dnl | ||
297 | |||
298 | # Set POTFILES to the value of the Makefile variable POTFILES. | ||
299 | sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'` | ||
300 | POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"` | ||
301 | # Compute POTFILES_DEPS as | ||
302 | # $(foreach file, $(POTFILES), $(top_srcdir)/$(file)) | ||
303 | POTFILES_DEPS= | ||
304 | for file in $POTFILES; do | ||
305 | POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file" | ||
306 | done | ||
307 | POMAKEFILEDEPS="" | ||
308 | |||
309 | if test -n "$OBSOLETE_ALL_LINGUAS"; then | ||
310 | test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" | ||
311 | fi | ||
312 | if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then | ||
313 | # The LINGUAS file contains the set of available languages. | ||
314 | ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` | ||
315 | POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" | ||
316 | else | ||
317 | # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS. | ||
318 | sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'` | ||
319 | ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"` | ||
320 | fi | ||
321 | # Hide the ALL_LINGUAS assignment from automake < 1.5. | ||
322 | eval 'ALL_LINGUAS''=$ALL_LINGUAS_' | ||
323 | # Compute POFILES | ||
324 | # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) | ||
325 | # Compute UPDATEPOFILES | ||
326 | # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) | ||
327 | # Compute DUMMYPOFILES | ||
328 | # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) | ||
329 | # Compute GMOFILES | ||
330 | # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) | ||
331 | # Compute PROPERTIESFILES | ||
332 | # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties) | ||
333 | # Compute CLASSFILES | ||
334 | # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class) | ||
335 | # Compute QMFILES | ||
336 | # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm) | ||
337 | # Compute MSGFILES | ||
338 | # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg) | ||
339 | # Compute RESOURCESDLLFILES | ||
340 | # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll) | ||
341 | case "$ac_given_srcdir" in | ||
342 | .) srcdirpre= ;; | ||
343 | *) srcdirpre='$(srcdir)/' ;; | ||
344 | esac | ||
345 | POFILES= | ||
346 | UPDATEPOFILES= | ||
347 | DUMMYPOFILES= | ||
348 | GMOFILES= | ||
349 | PROPERTIESFILES= | ||
350 | CLASSFILES= | ||
351 | QMFILES= | ||
352 | MSGFILES= | ||
353 | RESOURCESDLLFILES= | ||
354 | for lang in $ALL_LINGUAS; do | ||
355 | POFILES="$POFILES $srcdirpre$lang.po" | ||
356 | UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" | ||
357 | DUMMYPOFILES="$DUMMYPOFILES $lang.nop" | ||
358 | GMOFILES="$GMOFILES $srcdirpre$lang.gmo" | ||
359 | PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties" | ||
360 | CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class" | ||
361 | QMFILES="$QMFILES $srcdirpre$lang.qm" | ||
362 | frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` | ||
363 | MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg" | ||
364 | frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` | ||
365 | RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll" | ||
366 | done | ||
367 | # CATALOGS depends on both $ac_dir and the user's LINGUAS | ||
368 | # environment variable. | ||
369 | INST_LINGUAS= | ||
370 | if test -n "$ALL_LINGUAS"; then | ||
371 | for presentlang in $ALL_LINGUAS; do | ||
372 | useit=no | ||
373 | if test "%UNSET%" != "$LINGUAS"; then | ||
374 | desiredlanguages="$LINGUAS" | ||
375 | else | ||
376 | desiredlanguages="$ALL_LINGUAS" | ||
377 | fi | ||
378 | for desiredlang in $desiredlanguages; do | ||
379 | # Use the presentlang catalog if desiredlang is | ||
380 | # a. equal to presentlang, or | ||
381 | # b. a variant of presentlang (because in this case, | ||
382 | # presentlang can be used as a fallback for messages | ||
383 | # which are not translated in the desiredlang catalog). | ||
384 | case "$desiredlang" in | ||
385 | "$presentlang"*) useit=yes;; | ||
386 | esac | ||
387 | done | ||
388 | if test $useit = yes; then | ||
389 | INST_LINGUAS="$INST_LINGUAS $presentlang" | ||
390 | fi | ||
391 | done | ||
392 | fi | ||
393 | CATALOGS= | ||
394 | JAVACATALOGS= | ||
395 | QTCATALOGS= | ||
396 | TCLCATALOGS= | ||
397 | CSHARPCATALOGS= | ||
398 | if test -n "$INST_LINGUAS"; then | ||
399 | for lang in $INST_LINGUAS; do | ||
400 | CATALOGS="$CATALOGS $lang.gmo" | ||
401 | JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties" | ||
402 | QTCATALOGS="$QTCATALOGS $lang.qm" | ||
403 | frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` | ||
404 | TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg" | ||
405 | frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` | ||
406 | CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll" | ||
407 | done | ||
408 | fi | ||
409 | |||
410 | sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp" | ||
411 | tab=`printf '\t'` | ||
412 | if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then | ||
413 | # Add dependencies that cannot be formulated as a simple suffix rule. | ||
414 | for lang in $ALL_LINGUAS; do | ||
415 | frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` | ||
416 | cat >> "$ac_file.tmp" <<EOF | ||
417 | $frobbedlang.msg: $lang.po | ||
418 | ${tab}@echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \ | ||
419 | ${tab}\$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; } | ||
420 | EOF | ||
421 | done | ||
422 | fi | ||
423 | if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then | ||
424 | # Add dependencies that cannot be formulated as a simple suffix rule. | ||
425 | for lang in $ALL_LINGUAS; do | ||
426 | frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` | ||
427 | cat >> "$ac_file.tmp" <<EOF | ||
428 | $frobbedlang/\$(DOMAIN).resources.dll: $lang.po | ||
429 | ${tab}@echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \ | ||
430 | ${tab}\$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; } | ||
431 | EOF | ||
432 | done | ||
433 | fi | ||
434 | if test -n "$POMAKEFILEDEPS"; then | ||
435 | cat >> "$ac_file.tmp" <<EOF | ||
436 | Makefile: $POMAKEFILEDEPS | ||
437 | EOF | ||
438 | fi | ||
439 | mv "$ac_file.tmp" "$ac_file" | ||
440 | ]) | ||
441 | |||
442 | dnl Initializes the accumulator used by AM_XGETTEXT_OPTION. | ||
443 | AC_DEFUN([AM_XGETTEXT_OPTION_INIT], | ||
444 | [ | ||
445 | XGETTEXT_EXTRA_OPTIONS= | ||
446 | ]) | ||
447 | |||
448 | dnl Registers an option to be passed to xgettext in the po subdirectory. | ||
449 | AC_DEFUN([AM_XGETTEXT_OPTION], | ||
450 | [ | ||
451 | AC_REQUIRE([AM_XGETTEXT_OPTION_INIT]) | ||
452 | XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1" | ||
453 | ]) | ||
diff --git a/gl/m4/printf-posix.m4 b/gl/m4/printf-posix.m4 deleted file mode 100644 index d7dfb60f..00000000 --- a/gl/m4/printf-posix.m4 +++ /dev/null | |||
@@ -1,48 +0,0 @@ | |||
1 | # printf-posix.m4 serial 6 (gettext-0.18.2) | ||
2 | dnl Copyright (C) 2003, 2007, 2009-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | dnl From Bruno Haible. | ||
8 | dnl Test whether the printf() function supports POSIX/XSI format strings with | ||
9 | dnl positions. | ||
10 | |||
11 | AC_DEFUN([gt_PRINTF_POSIX], | ||
12 | [ | ||
13 | AC_REQUIRE([AC_PROG_CC]) | ||
14 | AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings], | ||
15 | gt_cv_func_printf_posix, | ||
16 | [ | ||
17 | AC_RUN_IFELSE( | ||
18 | [AC_LANG_SOURCE([[ | ||
19 | #include <stdio.h> | ||
20 | #include <string.h> | ||
21 | /* The string "%2$d %1$d", with dollar characters protected from the shell's | ||
22 | dollar expansion (possibly an autoconf bug). */ | ||
23 | static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; | ||
24 | static char buf[100]; | ||
25 | int main () | ||
26 | { | ||
27 | sprintf (buf, format, 33, 55); | ||
28 | return (strcmp (buf, "55 33") != 0); | ||
29 | }]])], | ||
30 | [gt_cv_func_printf_posix=yes], | ||
31 | [gt_cv_func_printf_posix=no], | ||
32 | [ | ||
33 | AC_EGREP_CPP([notposix], [ | ||
34 | #if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ | ||
35 | notposix | ||
36 | #endif | ||
37 | ], | ||
38 | [gt_cv_func_printf_posix="guessing no"], | ||
39 | [gt_cv_func_printf_posix="guessing yes"]) | ||
40 | ]) | ||
41 | ]) | ||
42 | case $gt_cv_func_printf_posix in | ||
43 | *yes) | ||
44 | AC_DEFINE([HAVE_POSIX_PRINTF], [1], | ||
45 | [Define if your printf() function supports format strings with positions.]) | ||
46 | ;; | ||
47 | esac | ||
48 | ]) | ||
diff --git a/gl/m4/printf.m4 b/gl/m4/printf.m4 index ef44f785..4e65abc6 100644 --- a/gl/m4/printf.m4 +++ b/gl/m4/printf.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # printf.m4 serial 50 | 1 | # printf.m4 serial 73 |
2 | dnl Copyright (C) 2003, 2007-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2003, 2007-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -38,6 +38,8 @@ int main () | |||
38 | if (sprintf (buf, "%ju %d", (uintmax_t) 12345671, 33, 44, 55) < 0 | 38 | if (sprintf (buf, "%ju %d", (uintmax_t) 12345671, 33, 44, 55) < 0 |
39 | || strcmp (buf, "12345671 33") != 0) | 39 | || strcmp (buf, "12345671 33") != 0) |
40 | result |= 1; | 40 | result |= 1; |
41 | #else | ||
42 | result |= 1; | ||
41 | #endif | 43 | #endif |
42 | buf[0] = '\0'; | 44 | buf[0] = '\0'; |
43 | if (sprintf (buf, "%zu %d", (size_t) 12345672, 33, 44, 55) < 0 | 45 | if (sprintf (buf, "%zu %d", (size_t) 12345672, 33, 44, 55) < 0 |
@@ -56,13 +58,16 @@ int main () | |||
56 | [gl_cv_func_printf_sizes_c99=yes], | 58 | [gl_cv_func_printf_sizes_c99=yes], |
57 | [gl_cv_func_printf_sizes_c99=no], | 59 | [gl_cv_func_printf_sizes_c99=no], |
58 | [ | 60 | [ |
59 | changequote(,)dnl | ||
60 | case "$host_os" in | 61 | case "$host_os" in |
62 | changequote(,)dnl | ||
61 | # Guess yes on glibc systems. | 63 | # Guess yes on glibc systems. |
62 | *-gnu*) gl_cv_func_printf_sizes_c99="guessing yes";; | 64 | *-gnu* | gnu*) gl_cv_func_printf_sizes_c99="guessing yes";; |
65 | # Guess yes on musl systems. | ||
66 | *-musl*) gl_cv_func_printf_sizes_c99="guessing yes";; | ||
63 | # Guess yes on FreeBSD >= 5. | 67 | # Guess yes on FreeBSD >= 5. |
64 | freebsd[1-4]*) gl_cv_func_printf_sizes_c99="guessing no";; | 68 | freebsd[1-4].*) gl_cv_func_printf_sizes_c99="guessing no";; |
65 | freebsd* | kfreebsd*) gl_cv_func_printf_sizes_c99="guessing yes";; | 69 | freebsd* | kfreebsd*) gl_cv_func_printf_sizes_c99="guessing yes";; |
70 | midnightbsd*) gl_cv_func_printf_sizes_c99="guessing yes";; | ||
66 | # Guess yes on Mac OS X >= 10.3. | 71 | # Guess yes on Mac OS X >= 10.3. |
67 | darwin[1-6].*) gl_cv_func_printf_sizes_c99="guessing no";; | 72 | darwin[1-6].*) gl_cv_func_printf_sizes_c99="guessing no";; |
68 | darwin*) gl_cv_func_printf_sizes_c99="guessing yes";; | 73 | darwin*) gl_cv_func_printf_sizes_c99="guessing yes";; |
@@ -77,10 +82,21 @@ changequote(,)dnl | |||
77 | netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) | 82 | netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) |
78 | gl_cv_func_printf_sizes_c99="guessing no";; | 83 | gl_cv_func_printf_sizes_c99="guessing no";; |
79 | netbsd*) gl_cv_func_printf_sizes_c99="guessing yes";; | 84 | netbsd*) gl_cv_func_printf_sizes_c99="guessing yes";; |
80 | # If we don't know, assume the worst. | 85 | # Guess yes on Android. |
81 | *) gl_cv_func_printf_sizes_c99="guessing no";; | 86 | linux*-android*) gl_cv_func_printf_sizes_c99="guessing yes";; |
82 | esac | ||
83 | changequote([,])dnl | 87 | changequote([,])dnl |
88 | # Guess yes on MSVC, no on mingw. | ||
89 | mingw*) AC_EGREP_CPP([Known], [ | ||
90 | #ifdef _MSC_VER | ||
91 | Known | ||
92 | #endif | ||
93 | ], | ||
94 | [gl_cv_func_printf_sizes_c99="guessing yes"], | ||
95 | [gl_cv_func_printf_sizes_c99="guessing no"]) | ||
96 | ;; | ||
97 | # If we don't know, obey --enable-cross-guesses. | ||
98 | *) gl_cv_func_printf_sizes_c99="$gl_cross_guess_normal";; | ||
99 | esac | ||
84 | ]) | 100 | ]) |
85 | ]) | 101 | ]) |
86 | ]) | 102 | ]) |
@@ -120,14 +136,22 @@ int main () | |||
120 | }]])], | 136 | }]])], |
121 | [gl_cv_func_printf_long_double=yes], | 137 | [gl_cv_func_printf_long_double=yes], |
122 | [gl_cv_func_printf_long_double=no], | 138 | [gl_cv_func_printf_long_double=no], |
123 | [ | 139 | [case "$host_os" in |
124 | changequote(,)dnl | 140 | # Guess no on BeOS. |
125 | case "$host_os" in | 141 | beos*) gl_cv_func_printf_long_double="guessing no";; |
126 | beos*) gl_cv_func_printf_long_double="guessing no";; | 142 | # Guess yes on Android. |
127 | mingw* | pw*) gl_cv_func_printf_long_double="guessing no";; | 143 | linux*-android*) gl_cv_func_printf_long_double="guessing yes";; |
128 | *) gl_cv_func_printf_long_double="guessing yes";; | 144 | # Guess yes on MSVC, no on mingw. |
145 | mingw*) AC_EGREP_CPP([Known], [ | ||
146 | #ifdef _MSC_VER | ||
147 | Known | ||
148 | #endif | ||
149 | ], | ||
150 | [gl_cv_func_printf_long_double="guessing yes"], | ||
151 | [gl_cv_func_printf_long_double="guessing no"]) | ||
152 | ;; | ||
153 | *) gl_cv_func_printf_long_double="guessing yes";; | ||
129 | esac | 154 | esac |
130 | changequote([,])dnl | ||
131 | ]) | 155 | ]) |
132 | ]) | 156 | ]) |
133 | ]) | 157 | ]) |
@@ -215,13 +239,16 @@ int main () | |||
215 | [gl_cv_func_printf_infinite=yes], | 239 | [gl_cv_func_printf_infinite=yes], |
216 | [gl_cv_func_printf_infinite=no], | 240 | [gl_cv_func_printf_infinite=no], |
217 | [ | 241 | [ |
218 | changequote(,)dnl | ||
219 | case "$host_os" in | 242 | case "$host_os" in |
243 | changequote(,)dnl | ||
220 | # Guess yes on glibc systems. | 244 | # Guess yes on glibc systems. |
221 | *-gnu*) gl_cv_func_printf_infinite="guessing yes";; | 245 | *-gnu* | gnu*) gl_cv_func_printf_infinite="guessing yes";; |
246 | # Guess yes on musl systems. | ||
247 | *-musl*) gl_cv_func_printf_infinite="guessing yes";; | ||
222 | # Guess yes on FreeBSD >= 6. | 248 | # Guess yes on FreeBSD >= 6. |
223 | freebsd[1-5]*) gl_cv_func_printf_infinite="guessing no";; | 249 | freebsd[1-5].*) gl_cv_func_printf_infinite="guessing no";; |
224 | freebsd* | kfreebsd*) gl_cv_func_printf_infinite="guessing yes";; | 250 | freebsd* | kfreebsd*) gl_cv_func_printf_infinite="guessing yes";; |
251 | midnightbsd*) gl_cv_func_printf_infinite="guessing yes";; | ||
225 | # Guess yes on Mac OS X >= 10.3. | 252 | # Guess yes on Mac OS X >= 10.3. |
226 | darwin[1-6].*) gl_cv_func_printf_infinite="guessing no";; | 253 | darwin[1-6].*) gl_cv_func_printf_infinite="guessing no";; |
227 | darwin*) gl_cv_func_printf_infinite="guessing yes";; | 254 | darwin*) gl_cv_func_printf_infinite="guessing yes";; |
@@ -232,12 +259,26 @@ changequote(,)dnl | |||
232 | netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) | 259 | netbsd[1-2]* | netbsdelf[1-2]* | netbsdaout[1-2]* | netbsdcoff[1-2]*) |
233 | gl_cv_func_printf_infinite="guessing no";; | 260 | gl_cv_func_printf_infinite="guessing no";; |
234 | netbsd*) gl_cv_func_printf_infinite="guessing yes";; | 261 | netbsd*) gl_cv_func_printf_infinite="guessing yes";; |
262 | # Guess yes on OpenBSD >= 6.0. | ||
263 | openbsd[1-5].*) gl_cv_func_printf_infinite="guessing no";; | ||
264 | openbsd*) gl_cv_func_printf_infinite="guessing yes";; | ||
235 | # Guess yes on BeOS. | 265 | # Guess yes on BeOS. |
236 | beos*) gl_cv_func_printf_infinite="guessing yes";; | 266 | beos*) gl_cv_func_printf_infinite="guessing yes";; |
237 | # If we don't know, assume the worst. | 267 | # Guess no on Android. |
238 | *) gl_cv_func_printf_infinite="guessing no";; | 268 | linux*-android*) gl_cv_func_printf_infinite="guessing no";; |
239 | esac | ||
240 | changequote([,])dnl | 269 | changequote([,])dnl |
270 | # Guess yes on MSVC, no on mingw. | ||
271 | mingw*) AC_EGREP_CPP([Known], [ | ||
272 | #ifdef _MSC_VER | ||
273 | Known | ||
274 | #endif | ||
275 | ], | ||
276 | [gl_cv_func_printf_infinite="guessing yes"], | ||
277 | [gl_cv_func_printf_infinite="guessing no"]) | ||
278 | ;; | ||
279 | # If we don't know, obey --enable-cross-guesses. | ||
280 | *) gl_cv_func_printf_infinite="$gl_cross_guess_normal";; | ||
281 | esac | ||
241 | ]) | 282 | ]) |
242 | ]) | 283 | ]) |
243 | ]) | 284 | ]) |
@@ -328,7 +369,7 @@ int main () | |||
328 | # ifdef WORDS_BIGENDIAN | 369 | # ifdef WORDS_BIGENDIAN |
329 | # define LDBL80_WORDS(exponent,manthi,mantlo) \ | 370 | # define LDBL80_WORDS(exponent,manthi,mantlo) \ |
330 | { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \ | 371 | { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \ |
331 | ((unsigned int) (manthi) << 16) | (unsigned int) (mantlo) >> 16), \ | 372 | ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16), \ |
332 | (unsigned int) (mantlo) << 16 \ | 373 | (unsigned int) (mantlo) << 16 \ |
333 | } | 374 | } |
334 | # else | 375 | # else |
@@ -365,66 +406,51 @@ int main () | |||
365 | { /* Pseudo-NaN. */ | 406 | { /* Pseudo-NaN. */ |
366 | static union { unsigned int word[4]; long double value; } x = | 407 | static union { unsigned int word[4]; long double value; } x = |
367 | { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) }; | 408 | { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) }; |
368 | if (sprintf (buf, "%Lf", x.value) < 0 | 409 | if (sprintf (buf, "%Lf", x.value) <= 0) |
369 | || !strisnan (buf, 0, strlen (buf))) | ||
370 | result |= 4; | 410 | result |= 4; |
371 | if (sprintf (buf, "%Le", x.value) < 0 | 411 | if (sprintf (buf, "%Le", x.value) <= 0) |
372 | || !strisnan (buf, 0, strlen (buf))) | ||
373 | result |= 4; | 412 | result |= 4; |
374 | if (sprintf (buf, "%Lg", x.value) < 0 | 413 | if (sprintf (buf, "%Lg", x.value) <= 0) |
375 | || !strisnan (buf, 0, strlen (buf))) | ||
376 | result |= 4; | 414 | result |= 4; |
377 | } | 415 | } |
378 | { /* Pseudo-Infinity. */ | 416 | { /* Pseudo-Infinity. */ |
379 | static union { unsigned int word[4]; long double value; } x = | 417 | static union { unsigned int word[4]; long double value; } x = |
380 | { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) }; | 418 | { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) }; |
381 | if (sprintf (buf, "%Lf", x.value) < 0 | 419 | if (sprintf (buf, "%Lf", x.value) <= 0) |
382 | || !strisnan (buf, 0, strlen (buf))) | ||
383 | result |= 8; | 420 | result |= 8; |
384 | if (sprintf (buf, "%Le", x.value) < 0 | 421 | if (sprintf (buf, "%Le", x.value) <= 0) |
385 | || !strisnan (buf, 0, strlen (buf))) | ||
386 | result |= 8; | 422 | result |= 8; |
387 | if (sprintf (buf, "%Lg", x.value) < 0 | 423 | if (sprintf (buf, "%Lg", x.value) <= 0) |
388 | || !strisnan (buf, 0, strlen (buf))) | ||
389 | result |= 8; | 424 | result |= 8; |
390 | } | 425 | } |
391 | { /* Pseudo-Zero. */ | 426 | { /* Pseudo-Zero. */ |
392 | static union { unsigned int word[4]; long double value; } x = | 427 | static union { unsigned int word[4]; long double value; } x = |
393 | { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) }; | 428 | { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) }; |
394 | if (sprintf (buf, "%Lf", x.value) < 0 | 429 | if (sprintf (buf, "%Lf", x.value) <= 0) |
395 | || !strisnan (buf, 0, strlen (buf))) | ||
396 | result |= 16; | 430 | result |= 16; |
397 | if (sprintf (buf, "%Le", x.value) < 0 | 431 | if (sprintf (buf, "%Le", x.value) <= 0) |
398 | || !strisnan (buf, 0, strlen (buf))) | ||
399 | result |= 16; | 432 | result |= 16; |
400 | if (sprintf (buf, "%Lg", x.value) < 0 | 433 | if (sprintf (buf, "%Lg", x.value) <= 0) |
401 | || !strisnan (buf, 0, strlen (buf))) | ||
402 | result |= 16; | 434 | result |= 16; |
403 | } | 435 | } |
404 | { /* Unnormalized number. */ | 436 | { /* Unnormalized number. */ |
405 | static union { unsigned int word[4]; long double value; } x = | 437 | static union { unsigned int word[4]; long double value; } x = |
406 | { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) }; | 438 | { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) }; |
407 | if (sprintf (buf, "%Lf", x.value) < 0 | 439 | if (sprintf (buf, "%Lf", x.value) <= 0) |
408 | || !strisnan (buf, 0, strlen (buf))) | ||
409 | result |= 32; | 440 | result |= 32; |
410 | if (sprintf (buf, "%Le", x.value) < 0 | 441 | if (sprintf (buf, "%Le", x.value) <= 0) |
411 | || !strisnan (buf, 0, strlen (buf))) | ||
412 | result |= 32; | 442 | result |= 32; |
413 | if (sprintf (buf, "%Lg", x.value) < 0 | 443 | if (sprintf (buf, "%Lg", x.value) <= 0) |
414 | || !strisnan (buf, 0, strlen (buf))) | ||
415 | result |= 32; | 444 | result |= 32; |
416 | } | 445 | } |
417 | { /* Pseudo-Denormal. */ | 446 | { /* Pseudo-Denormal. */ |
418 | static union { unsigned int word[4]; long double value; } x = | 447 | static union { unsigned int word[4]; long double value; } x = |
419 | { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) }; | 448 | { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) }; |
420 | if (sprintf (buf, "%Lf", x.value) < 0 | 449 | if (sprintf (buf, "%Lf", x.value) <= 0) |
421 | || !strisnan (buf, 0, strlen (buf))) | ||
422 | result |= 64; | 450 | result |= 64; |
423 | if (sprintf (buf, "%Le", x.value) < 0 | 451 | if (sprintf (buf, "%Le", x.value) <= 0) |
424 | || !strisnan (buf, 0, strlen (buf))) | ||
425 | result |= 64; | 452 | result |= 64; |
426 | if (sprintf (buf, "%Lg", x.value) < 0 | 453 | if (sprintf (buf, "%Lg", x.value) <= 0) |
427 | || !strisnan (buf, 0, strlen (buf))) | ||
428 | result |= 64; | 454 | result |= 64; |
429 | } | 455 | } |
430 | #endif | 456 | #endif |
@@ -432,27 +458,43 @@ int main () | |||
432 | }]])], | 458 | }]])], |
433 | [gl_cv_func_printf_infinite_long_double=yes], | 459 | [gl_cv_func_printf_infinite_long_double=yes], |
434 | [gl_cv_func_printf_infinite_long_double=no], | 460 | [gl_cv_func_printf_infinite_long_double=no], |
435 | [ | 461 | [case "$host_cpu" in |
436 | changequote(,)dnl | ||
437 | case "$host_cpu" in | ||
438 | # Guess no on ia64, x86_64, i386. | 462 | # Guess no on ia64, x86_64, i386. |
439 | ia64 | x86_64 | i*86) gl_cv_func_printf_infinite_long_double="guessing no";; | 463 | ia64 | x86_64 | i*86) gl_cv_func_printf_infinite_long_double="guessing no";; |
440 | *) | 464 | *) |
441 | case "$host_os" in | 465 | case "$host_os" in |
466 | changequote(,)dnl | ||
442 | # Guess yes on glibc systems. | 467 | # Guess yes on glibc systems. |
443 | *-gnu*) gl_cv_func_printf_infinite_long_double="guessing yes";; | 468 | *-gnu* | gnu*) gl_cv_func_printf_infinite_long_double="guessing yes";; |
469 | # Guess yes on musl systems. | ||
470 | *-musl*) gl_cv_func_printf_infinite_long_double="guessing yes";; | ||
444 | # Guess yes on FreeBSD >= 6. | 471 | # Guess yes on FreeBSD >= 6. |
445 | freebsd[1-5]*) gl_cv_func_printf_infinite_long_double="guessing no";; | 472 | freebsd[1-5].*) gl_cv_func_printf_infinite_long_double="guessing no";; |
446 | freebsd* | kfreebsd*) gl_cv_func_printf_infinite_long_double="guessing yes";; | 473 | freebsd* | kfreebsd*) gl_cv_func_printf_infinite_long_double="guessing yes";; |
474 | midnightbsd*) gl_cv_func_printf_infinite_long_double="guessing yes";; | ||
447 | # Guess yes on HP-UX >= 11. | 475 | # Guess yes on HP-UX >= 11. |
448 | hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite_long_double="guessing no";; | 476 | hpux[7-9]* | hpux10*) gl_cv_func_printf_infinite_long_double="guessing no";; |
449 | hpux*) gl_cv_func_printf_infinite_long_double="guessing yes";; | 477 | hpux*) gl_cv_func_printf_infinite_long_double="guessing yes";; |
450 | # If we don't know, assume the worst. | 478 | # Guess yes on OpenBSD >= 6.0. |
451 | *) gl_cv_func_printf_infinite_long_double="guessing no";; | 479 | openbsd[1-5].*) gl_cv_func_printf_infinite_long_double="guessing no";; |
480 | openbsd*) gl_cv_func_printf_infinite_long_double="guessing yes";; | ||
481 | # Guess no on Android. | ||
482 | linux*-android*) gl_cv_func_printf_infinite_long_double="guessing no";; | ||
483 | changequote([,])dnl | ||
484 | # Guess yes on MSVC, no on mingw. | ||
485 | mingw*) AC_EGREP_CPP([Known], [ | ||
486 | #ifdef _MSC_VER | ||
487 | Known | ||
488 | #endif | ||
489 | ], | ||
490 | [gl_cv_func_printf_infinite_long_double="guessing yes"], | ||
491 | [gl_cv_func_printf_infinite_long_double="guessing no"]) | ||
492 | ;; | ||
493 | # If we don't know, obey --enable-cross-guesses. | ||
494 | *) gl_cv_func_printf_infinite_long_double="$gl_cross_guess_normal";; | ||
452 | esac | 495 | esac |
453 | ;; | 496 | ;; |
454 | esac | 497 | esac |
455 | changequote([,])dnl | ||
456 | ]) | 498 | ]) |
457 | ]) | 499 | ]) |
458 | ;; | 500 | ;; |
@@ -495,15 +537,22 @@ int main () | |||
495 | && strcmp (buf, "-0X6.488P-1 33") != 0 | 537 | && strcmp (buf, "-0X6.488P-1 33") != 0 |
496 | && strcmp (buf, "-0XC.91P-2 33") != 0)) | 538 | && strcmp (buf, "-0XC.91P-2 33") != 0)) |
497 | result |= 2; | 539 | result |= 2; |
498 | /* This catches a FreeBSD 6.1 bug: it doesn't round. */ | 540 | /* This catches a FreeBSD 13.0 bug: it doesn't round. */ |
499 | if (sprintf (buf, "%.2a %d", 1.51, 33, 44, 55) < 0 | 541 | if (sprintf (buf, "%.2a %d", 1.51, 33, 44, 55) < 0 |
500 | || (strcmp (buf, "0x1.83p+0 33") != 0 | 542 | || (strcmp (buf, "0x1.83p+0 33") != 0 |
501 | && strcmp (buf, "0x3.05p-1 33") != 0 | 543 | && strcmp (buf, "0x3.05p-1 33") != 0 |
502 | && strcmp (buf, "0x6.0ap-2 33") != 0 | 544 | && strcmp (buf, "0x6.0ap-2 33") != 0 |
503 | && strcmp (buf, "0xc.14p-3 33") != 0)) | 545 | && strcmp (buf, "0xc.14p-3 33") != 0)) |
504 | result |= 4; | 546 | result |= 4; |
547 | /* This catches a Mac OS X 10.12.4 (Darwin 16.5) bug: it doesn't round. */ | ||
548 | if (sprintf (buf, "%.0a %d", 1.51, 33, 44, 55) < 0 | ||
549 | || (strcmp (buf, "0x2p+0 33") != 0 | ||
550 | && strcmp (buf, "0x3p-1 33") != 0 | ||
551 | && strcmp (buf, "0x6p-2 33") != 0 | ||
552 | && strcmp (buf, "0xcp-3 33") != 0)) | ||
553 | result |= 4; | ||
505 | /* This catches a FreeBSD 6.1 bug. See | 554 | /* This catches a FreeBSD 6.1 bug. See |
506 | <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */ | 555 | <https://lists.gnu.org/r/bug-gnulib/2007-04/msg00107.html> */ |
507 | if (sprintf (buf, "%010a %d", 1.0 / zero, 33, 44, 55) < 0 | 556 | if (sprintf (buf, "%010a %d", 1.0 / zero, 33, 44, 55) < 0 |
508 | || buf[0] == '0') | 557 | || buf[0] == '0') |
509 | result |= 8; | 558 | result |= 8; |
@@ -515,7 +564,7 @@ int main () | |||
515 | && strcmp (buf, "0x8.0p-2") != 0)) | 564 | && strcmp (buf, "0x8.0p-2") != 0)) |
516 | result |= 16; | 565 | result |= 16; |
517 | /* This catches the same Mac OS X 10.3.9 (Darwin 7.9) bug and also a | 566 | /* This catches the same Mac OS X 10.3.9 (Darwin 7.9) bug and also a |
518 | glibc 2.4 bug <http://sourceware.org/bugzilla/show_bug.cgi?id=2908>. */ | 567 | glibc 2.4 bug <https://sourceware.org/bugzilla/show_bug.cgi?id=2908>. */ |
519 | if (sprintf (buf, "%.1La", 1.999L) < 0 | 568 | if (sprintf (buf, "%.1La", 1.999L) < 0 |
520 | || (strcmp (buf, "0x1.0p+1") != 0 | 569 | || (strcmp (buf, "0x1.0p+1") != 0 |
521 | && strcmp (buf, "0x2.0p+0") != 0 | 570 | && strcmp (buf, "0x2.0p+0") != 0 |
@@ -529,7 +578,7 @@ int main () | |||
529 | [ | 578 | [ |
530 | case "$host_os" in | 579 | case "$host_os" in |
531 | # Guess yes on glibc >= 2.5 systems. | 580 | # Guess yes on glibc >= 2.5 systems. |
532 | *-gnu*) | 581 | *-gnu* | gnu*) |
533 | AC_EGREP_CPP([BZ2908], [ | 582 | AC_EGREP_CPP([BZ2908], [ |
534 | #include <features.h> | 583 | #include <features.h> |
535 | #ifdef __GNU_LIBRARY__ | 584 | #ifdef __GNU_LIBRARY__ |
@@ -541,8 +590,14 @@ int main () | |||
541 | [gl_cv_func_printf_directive_a="guessing yes"], | 590 | [gl_cv_func_printf_directive_a="guessing yes"], |
542 | [gl_cv_func_printf_directive_a="guessing no"]) | 591 | [gl_cv_func_printf_directive_a="guessing no"]) |
543 | ;; | 592 | ;; |
544 | # If we don't know, assume the worst. | 593 | # Guess yes on musl systems. |
545 | *) gl_cv_func_printf_directive_a="guessing no";; | 594 | *-musl*) gl_cv_func_printf_directive_a="guessing yes";; |
595 | # Guess no on Android. | ||
596 | linux*-android*) gl_cv_func_printf_directive_a="guessing no";; | ||
597 | # Guess no on native Windows. | ||
598 | mingw*) gl_cv_func_printf_directive_a="guessing no";; | ||
599 | # If we don't know, obey --enable-cross-guesses. | ||
600 | *) gl_cv_func_printf_directive_a="$gl_cross_guess_normal";; | ||
546 | esac | 601 | esac |
547 | ]) | 602 | ]) |
548 | ]) | 603 | ]) |
@@ -583,23 +638,40 @@ int main () | |||
583 | [gl_cv_func_printf_directive_f=yes], | 638 | [gl_cv_func_printf_directive_f=yes], |
584 | [gl_cv_func_printf_directive_f=no], | 639 | [gl_cv_func_printf_directive_f=no], |
585 | [ | 640 | [ |
586 | changequote(,)dnl | ||
587 | case "$host_os" in | 641 | case "$host_os" in |
642 | changequote(,)dnl | ||
588 | # Guess yes on glibc systems. | 643 | # Guess yes on glibc systems. |
589 | *-gnu*) gl_cv_func_printf_directive_f="guessing yes";; | 644 | *-gnu* | gnu*) gl_cv_func_printf_directive_f="guessing yes";; |
645 | # Guess yes on musl systems. | ||
646 | *-musl*) gl_cv_func_printf_directive_f="guessing yes";; | ||
590 | # Guess yes on FreeBSD >= 6. | 647 | # Guess yes on FreeBSD >= 6. |
591 | freebsd[1-5]*) gl_cv_func_printf_directive_f="guessing no";; | 648 | freebsd[1-5].*) gl_cv_func_printf_directive_f="guessing no";; |
592 | freebsd* | kfreebsd*) gl_cv_func_printf_directive_f="guessing yes";; | 649 | freebsd* | kfreebsd*) gl_cv_func_printf_directive_f="guessing yes";; |
650 | midnightbsd*) gl_cv_func_printf_directive_f="guessing yes";; | ||
593 | # Guess yes on Mac OS X >= 10.3. | 651 | # Guess yes on Mac OS X >= 10.3. |
594 | darwin[1-6].*) gl_cv_func_printf_directive_f="guessing no";; | 652 | darwin[1-6].*) gl_cv_func_printf_directive_f="guessing no";; |
595 | darwin*) gl_cv_func_printf_directive_f="guessing yes";; | 653 | darwin*) gl_cv_func_printf_directive_f="guessing yes";; |
654 | # Guess yes on OpenBSD >= 6.0. | ||
655 | openbsd[1-5].*) gl_cv_func_printf_directive_f="guessing no";; | ||
656 | openbsd*) gl_cv_func_printf_directive_f="guessing yes";; | ||
596 | # Guess yes on Solaris >= 2.10. | 657 | # Guess yes on Solaris >= 2.10. |
597 | solaris2.[1-9][0-9]*) gl_cv_func_printf_sizes_c99="guessing yes";; | 658 | solaris2.[1-9][0-9]*) gl_cv_func_printf_directive_f="guessing yes";; |
598 | solaris*) gl_cv_func_printf_sizes_c99="guessing no";; | 659 | solaris*) gl_cv_func_printf_directive_f="guessing no";; |
599 | # If we don't know, assume the worst. | 660 | # Guess no on Android. |
600 | *) gl_cv_func_printf_directive_f="guessing no";; | 661 | linux*-android*) gl_cv_func_printf_directive_f="guessing no";; |
601 | esac | ||
602 | changequote([,])dnl | 662 | changequote([,])dnl |
663 | # Guess yes on MSVC, no on mingw. | ||
664 | mingw*) AC_EGREP_CPP([Known], [ | ||
665 | #ifdef _MSC_VER | ||
666 | Known | ||
667 | #endif | ||
668 | ], | ||
669 | [gl_cv_func_printf_directive_f="guessing yes"], | ||
670 | [gl_cv_func_printf_directive_f="guessing no"]) | ||
671 | ;; | ||
672 | # If we don't know, obey --enable-cross-guesses. | ||
673 | *) gl_cv_func_printf_directive_f="$gl_cross_guess_normal";; | ||
674 | esac | ||
603 | ]) | 675 | ]) |
604 | ]) | 676 | ]) |
605 | ]) | 677 | ]) |
@@ -621,7 +693,10 @@ AC_DEFUN([gl_PRINTF_DIRECTIVE_N], | |||
621 | #include <stdlib.h> | 693 | #include <stdlib.h> |
622 | #include <string.h> | 694 | #include <string.h> |
623 | #ifdef _MSC_VER | 695 | #ifdef _MSC_VER |
624 | /* See page about "Parameter Validation" on msdn.microsoft.com. */ | 696 | #include <inttypes.h> |
697 | /* See page about "Parameter Validation" on msdn.microsoft.com. | ||
698 | <https://docs.microsoft.com/en-us/cpp/c-runtime-library/parameter-validation> | ||
699 | <https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/set-invalid-parameter-handler-set-thread-local-invalid-parameter-handler> */ | ||
625 | static void cdecl | 700 | static void cdecl |
626 | invalid_parameter_handler (const wchar_t *expression, | 701 | invalid_parameter_handler (const wchar_t *expression, |
627 | const wchar_t *function, | 702 | const wchar_t *function, |
@@ -651,13 +726,23 @@ int main () | |||
651 | }]])], | 726 | }]])], |
652 | [gl_cv_func_printf_directive_n=yes], | 727 | [gl_cv_func_printf_directive_n=yes], |
653 | [gl_cv_func_printf_directive_n=no], | 728 | [gl_cv_func_printf_directive_n=no], |
654 | [ | 729 | [case "$host_os" in |
655 | changequote(,)dnl | 730 | # Guess no on glibc when _FORTIFY_SOURCE >= 2. |
656 | case "$host_os" in | 731 | *-gnu* | gnu*) AC_COMPILE_IFELSE( |
657 | mingw*) gl_cv_func_printf_directive_n="guessing no";; | 732 | [AC_LANG_SOURCE( |
658 | *) gl_cv_func_printf_directive_n="guessing yes";; | 733 | [[#if _FORTIFY_SOURCE >= 2 |
734 | error fail | ||
735 | #endif | ||
736 | ]])], | ||
737 | [gl_cv_func_printf_directive_n="guessing yes"], | ||
738 | [gl_cv_func_printf_directive_n="guessing no"]) | ||
739 | ;; | ||
740 | # Guess no on Android. | ||
741 | linux*-android*) gl_cv_func_printf_directive_n="guessing no";; | ||
742 | # Guess no on native Windows. | ||
743 | mingw*) gl_cv_func_printf_directive_n="guessing no";; | ||
744 | *) gl_cv_func_printf_directive_n="guessing yes";; | ||
659 | esac | 745 | esac |
660 | changequote([,])dnl | ||
661 | ]) | 746 | ]) |
662 | ]) | 747 | ]) |
663 | ]) | 748 | ]) |
@@ -678,13 +763,7 @@ AC_DEFUN([gl_PRINTF_DIRECTIVE_LS], | |||
678 | [ | 763 | [ |
679 | AC_RUN_IFELSE( | 764 | AC_RUN_IFELSE( |
680 | [AC_LANG_SOURCE([[ | 765 | [AC_LANG_SOURCE([[ |
681 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | ||
682 | <wchar.h>. | ||
683 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | ||
684 | included before <wchar.h>. */ | ||
685 | #include <stddef.h> | ||
686 | #include <stdio.h> | 766 | #include <stdio.h> |
687 | #include <time.h> | ||
688 | #include <wchar.h> | 767 | #include <wchar.h> |
689 | #include <string.h> | 768 | #include <string.h> |
690 | int main () | 769 | int main () |
@@ -732,11 +811,17 @@ int main () | |||
732 | [ | 811 | [ |
733 | changequote(,)dnl | 812 | changequote(,)dnl |
734 | case "$host_os" in | 813 | case "$host_os" in |
735 | openbsd*) gl_cv_func_printf_directive_ls="guessing no";; | 814 | # Guess yes on OpenBSD >= 6.0. |
815 | openbsd[1-5].*) gl_cv_func_printf_directive_ls="guessing no";; | ||
816 | openbsd*) gl_cv_func_printf_directive_ls="guessing yes";; | ||
736 | irix*) gl_cv_func_printf_directive_ls="guessing no";; | 817 | irix*) gl_cv_func_printf_directive_ls="guessing no";; |
737 | solaris*) gl_cv_func_printf_directive_ls="guessing no";; | 818 | solaris*) gl_cv_func_printf_directive_ls="guessing no";; |
738 | cygwin*) gl_cv_func_printf_directive_ls="guessing no";; | 819 | cygwin*) gl_cv_func_printf_directive_ls="guessing no";; |
739 | beos* | haiku*) gl_cv_func_printf_directive_ls="guessing no";; | 820 | beos* | haiku*) gl_cv_func_printf_directive_ls="guessing no";; |
821 | # Guess no on Android. | ||
822 | linux*-android*) gl_cv_func_printf_directive_ls="guessing no";; | ||
823 | # Guess yes on native Windows. | ||
824 | mingw*) gl_cv_func_printf_directive_ls="guessing yes";; | ||
740 | *) gl_cv_func_printf_directive_ls="guessing yes";; | 825 | *) gl_cv_func_printf_directive_ls="guessing yes";; |
741 | esac | 826 | esac |
742 | changequote([,])dnl | 827 | changequote([,])dnl |
@@ -774,10 +859,13 @@ int main () | |||
774 | changequote(,)dnl | 859 | changequote(,)dnl |
775 | case "$host_os" in | 860 | case "$host_os" in |
776 | netbsd[1-3]* | netbsdelf[1-3]* | netbsdaout[1-3]* | netbsdcoff[1-3]*) | 861 | netbsd[1-3]* | netbsdelf[1-3]* | netbsdaout[1-3]* | netbsdcoff[1-3]*) |
777 | gl_cv_func_printf_positions="guessing no";; | 862 | gl_cv_func_printf_positions="guessing no";; |
778 | beos*) gl_cv_func_printf_positions="guessing no";; | 863 | beos*) gl_cv_func_printf_positions="guessing no";; |
779 | mingw* | pw*) gl_cv_func_printf_positions="guessing no";; | 864 | # Guess yes on Android. |
780 | *) gl_cv_func_printf_positions="guessing yes";; | 865 | linux*-android*) gl_cv_func_printf_positions="guessing yes";; |
866 | # Guess no on native Windows. | ||
867 | mingw* | pw*) gl_cv_func_printf_positions="guessing no";; | ||
868 | *) gl_cv_func_printf_positions="guessing yes";; | ||
781 | esac | 869 | esac |
782 | changequote([,])dnl | 870 | changequote([,])dnl |
783 | ]) | 871 | ]) |
@@ -812,10 +900,13 @@ int main () | |||
812 | [ | 900 | [ |
813 | changequote(,)dnl | 901 | changequote(,)dnl |
814 | case "$host_os" in | 902 | case "$host_os" in |
815 | cygwin*) gl_cv_func_printf_flag_grouping="guessing no";; | 903 | cygwin*) gl_cv_func_printf_flag_grouping="guessing no";; |
816 | netbsd*) gl_cv_func_printf_flag_grouping="guessing no";; | 904 | netbsd*) gl_cv_func_printf_flag_grouping="guessing no";; |
817 | mingw* | pw*) gl_cv_func_printf_flag_grouping="guessing no";; | 905 | # Guess no on Android. |
818 | *) gl_cv_func_printf_flag_grouping="guessing yes";; | 906 | linux*-android*) gl_cv_func_printf_flag_grouping="guessing no";; |
907 | # Guess no on native Windows. | ||
908 | mingw* | pw*) gl_cv_func_printf_flag_grouping="guessing no";; | ||
909 | *) gl_cv_func_printf_flag_grouping="guessing yes";; | ||
819 | esac | 910 | esac |
820 | changequote([,])dnl | 911 | changequote([,])dnl |
821 | ]) | 912 | ]) |
@@ -824,7 +915,7 @@ changequote([,])dnl | |||
824 | 915 | ||
825 | dnl Test whether the *printf family of functions supports the - flag correctly. | 916 | dnl Test whether the *printf family of functions supports the - flag correctly. |
826 | dnl (ISO C99.) See | 917 | dnl (ISO C99.) See |
827 | dnl <http://lists.gnu.org/archive/html/bug-coreutils/2008-02/msg00035.html> | 918 | dnl <https://lists.gnu.org/r/bug-coreutils/2008-02/msg00035.html> |
828 | dnl Result is gl_cv_func_printf_flag_leftadjust. | 919 | dnl Result is gl_cv_func_printf_flag_leftadjust. |
829 | 920 | ||
830 | AC_DEFUN([gl_PRINTF_FLAG_LEFTADJUST], | 921 | AC_DEFUN([gl_PRINTF_FLAG_LEFTADJUST], |
@@ -852,12 +943,16 @@ int main () | |||
852 | [ | 943 | [ |
853 | changequote(,)dnl | 944 | changequote(,)dnl |
854 | case "$host_os" in | 945 | case "$host_os" in |
855 | # Guess yes on HP-UX 11. | 946 | # Guess yes on HP-UX 11. |
856 | hpux11*) gl_cv_func_printf_flag_leftadjust="guessing yes";; | 947 | hpux11*) gl_cv_func_printf_flag_leftadjust="guessing yes";; |
857 | # Guess no on HP-UX 10 and older. | 948 | # Guess no on HP-UX 10 and older. |
858 | hpux*) gl_cv_func_printf_flag_leftadjust="guessing no";; | 949 | hpux*) gl_cv_func_printf_flag_leftadjust="guessing no";; |
859 | # Guess yes otherwise. | 950 | # Guess yes on Android. |
860 | *) gl_cv_func_printf_flag_leftadjust="guessing yes";; | 951 | linux*-android*) gl_cv_func_printf_flag_leftadjust="guessing yes";; |
952 | # Guess yes on native Windows. | ||
953 | mingw*) gl_cv_func_printf_flag_leftadjust="guessing yes";; | ||
954 | # Guess yes otherwise. | ||
955 | *) gl_cv_func_printf_flag_leftadjust="guessing yes";; | ||
861 | esac | 956 | esac |
862 | changequote([,])dnl | 957 | changequote([,])dnl |
863 | ]) | 958 | ]) |
@@ -866,7 +961,7 @@ changequote([,])dnl | |||
866 | 961 | ||
867 | dnl Test whether the *printf family of functions supports padding of non-finite | 962 | dnl Test whether the *printf family of functions supports padding of non-finite |
868 | dnl values with the 0 flag correctly. (ISO C99 + TC1 + TC2.) See | 963 | dnl values with the 0 flag correctly. (ISO C99 + TC1 + TC2.) See |
869 | dnl <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> | 964 | dnl <https://lists.gnu.org/r/bug-gnulib/2007-04/msg00107.html> |
870 | dnl Result is gl_cv_func_printf_flag_zero. | 965 | dnl Result is gl_cv_func_printf_flag_zero. |
871 | 966 | ||
872 | AC_DEFUN([gl_PRINTF_FLAG_ZERO], | 967 | AC_DEFUN([gl_PRINTF_FLAG_ZERO], |
@@ -895,12 +990,18 @@ int main () | |||
895 | [ | 990 | [ |
896 | changequote(,)dnl | 991 | changequote(,)dnl |
897 | case "$host_os" in | 992 | case "$host_os" in |
898 | # Guess yes on glibc systems. | 993 | # Guess yes on glibc systems. |
899 | *-gnu*) gl_cv_func_printf_flag_zero="guessing yes";; | 994 | *-gnu* | gnu*) gl_cv_func_printf_flag_zero="guessing yes";; |
900 | # Guess yes on BeOS. | 995 | # Guess yes on musl systems. |
901 | beos*) gl_cv_func_printf_flag_zero="guessing yes";; | 996 | *-musl*) gl_cv_func_printf_flag_zero="guessing yes";; |
902 | # If we don't know, assume the worst. | 997 | # Guess yes on BeOS. |
903 | *) gl_cv_func_printf_flag_zero="guessing no";; | 998 | beos*) gl_cv_func_printf_flag_zero="guessing yes";; |
999 | # Guess no on Android. | ||
1000 | linux*-android*) gl_cv_func_printf_flag_zero="guessing no";; | ||
1001 | # Guess no on native Windows. | ||
1002 | mingw*) gl_cv_func_printf_flag_zero="guessing no";; | ||
1003 | # If we don't know, obey --enable-cross-guesses. | ||
1004 | *) gl_cv_func_printf_flag_zero="$gl_cross_guess_normal";; | ||
904 | esac | 1005 | esac |
905 | changequote([,])dnl | 1006 | changequote([,])dnl |
906 | ]) | 1007 | ]) |
@@ -953,10 +1054,12 @@ int main () | |||
953 | changequote(,)dnl | 1054 | changequote(,)dnl |
954 | case "$host_os" in | 1055 | case "$host_os" in |
955 | # Guess no only on Solaris, native Windows, and BeOS systems. | 1056 | # Guess no only on Solaris, native Windows, and BeOS systems. |
956 | solaris*) gl_cv_func_printf_precision="guessing no" ;; | 1057 | solaris*) gl_cv_func_printf_precision="guessing no" ;; |
957 | mingw* | pw*) gl_cv_func_printf_precision="guessing no" ;; | 1058 | mingw* | pw*) gl_cv_func_printf_precision="guessing no" ;; |
958 | beos*) gl_cv_func_printf_precision="guessing no" ;; | 1059 | beos*) gl_cv_func_printf_precision="guessing no" ;; |
959 | *) gl_cv_func_printf_precision="guessing yes" ;; | 1060 | # Guess yes on Android. |
1061 | linux*-android*) gl_cv_func_printf_precision="guessing yes" ;; | ||
1062 | *) gl_cv_func_printf_precision="guessing yes" ;; | ||
960 | esac | 1063 | esac |
961 | changequote([,])dnl | 1064 | changequote([,])dnl |
962 | ]) | 1065 | ]) |
@@ -978,9 +1081,8 @@ AC_DEFUN([gl_PRINTF_ENOMEM], | |||
978 | gl_cv_func_printf_enomem="guessing no" | 1081 | gl_cv_func_printf_enomem="guessing no" |
979 | if test "$cross_compiling" = no; then | 1082 | if test "$cross_compiling" = no; then |
980 | if test $APPLE_UNIVERSAL_BUILD = 0; then | 1083 | if test $APPLE_UNIVERSAL_BUILD = 0; then |
981 | AC_LANG_CONFTEST([AC_LANG_SOURCE([ | 1084 | AC_LANG_CONFTEST([AC_LANG_SOURCE([[ |
982 | ]GL_NOCRASH[ | 1085 | ]GL_NOCRASH[ |
983 | changequote(,)dnl | ||
984 | #include <stdio.h> | 1086 | #include <stdio.h> |
985 | #include <sys/types.h> | 1087 | #include <sys/types.h> |
986 | #include <sys/time.h> | 1088 | #include <sys/time.h> |
@@ -1025,8 +1127,7 @@ int main() | |||
1025 | ret = printf ("%.5000000f", 1.0); | 1127 | ret = printf ("%.5000000f", 1.0); |
1026 | return !(ret == 5000002 || (ret < 0 && errno == ENOMEM)); | 1128 | return !(ret == 5000002 || (ret < 0 && errno == ENOMEM)); |
1027 | } | 1129 | } |
1028 | changequote([,])dnl | 1130 | ]])]) |
1029 | ])]) | ||
1030 | if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then | 1131 | if AC_TRY_EVAL([ac_link]) && test -s conftest$ac_exeext; then |
1031 | (./conftest 2>&AS_MESSAGE_LOG_FD | 1132 | (./conftest 2>&AS_MESSAGE_LOG_FD |
1032 | result=$? | 1133 | result=$? |
@@ -1053,28 +1154,30 @@ changequote([,])dnl | |||
1053 | if test "$gl_cv_func_printf_enomem" = "guessing no"; then | 1154 | if test "$gl_cv_func_printf_enomem" = "guessing no"; then |
1054 | changequote(,)dnl | 1155 | changequote(,)dnl |
1055 | case "$host_os" in | 1156 | case "$host_os" in |
1056 | # Guess yes on glibc systems. | 1157 | # Guess yes on glibc systems. |
1057 | *-gnu*) gl_cv_func_printf_enomem="guessing yes";; | 1158 | *-gnu* | gnu*) gl_cv_func_printf_enomem="guessing yes";; |
1058 | # Guess yes on Solaris. | 1159 | # Guess yes on Solaris. |
1059 | solaris*) gl_cv_func_printf_enomem="guessing yes";; | 1160 | solaris*) gl_cv_func_printf_enomem="guessing yes";; |
1060 | # Guess yes on AIX. | 1161 | # Guess yes on AIX. |
1061 | aix*) gl_cv_func_printf_enomem="guessing yes";; | 1162 | aix*) gl_cv_func_printf_enomem="guessing yes";; |
1062 | # Guess yes on HP-UX/hppa. | 1163 | # Guess yes on HP-UX/hppa. |
1063 | hpux*) case "$host_cpu" in | 1164 | hpux*) case "$host_cpu" in |
1064 | hppa*) gl_cv_func_printf_enomem="guessing yes";; | 1165 | hppa*) gl_cv_func_printf_enomem="guessing yes";; |
1065 | *) gl_cv_func_printf_enomem="guessing no";; | 1166 | *) gl_cv_func_printf_enomem="guessing no";; |
1066 | esac | 1167 | esac |
1067 | ;; | 1168 | ;; |
1068 | # Guess yes on IRIX. | 1169 | # Guess yes on IRIX. |
1069 | irix*) gl_cv_func_printf_enomem="guessing yes";; | 1170 | irix*) gl_cv_func_printf_enomem="guessing yes";; |
1070 | # Guess yes on OSF/1. | 1171 | # Guess yes on OSF/1. |
1071 | osf*) gl_cv_func_printf_enomem="guessing yes";; | 1172 | osf*) gl_cv_func_printf_enomem="guessing yes";; |
1072 | # Guess yes on BeOS. | 1173 | # Guess yes on BeOS. |
1073 | beos*) gl_cv_func_printf_enomem="guessing yes";; | 1174 | beos*) gl_cv_func_printf_enomem="guessing yes";; |
1074 | # Guess yes on Haiku. | 1175 | # Guess yes on Haiku. |
1075 | haiku*) gl_cv_func_printf_enomem="guessing yes";; | 1176 | haiku*) gl_cv_func_printf_enomem="guessing yes";; |
1076 | # If we don't know, assume the worst. | 1177 | # Guess no on Android. |
1077 | *) gl_cv_func_printf_enomem="guessing no";; | 1178 | linux*-android*) gl_cv_func_printf_enomem="guessing no";; |
1179 | # If we don't know, obey --enable-cross-guesses. | ||
1180 | *) gl_cv_func_printf_enomem="$gl_cross_guess_normal";; | ||
1078 | esac | 1181 | esac |
1079 | changequote([,])dnl | 1182 | changequote([,])dnl |
1080 | fi | 1183 | fi |
@@ -1093,7 +1196,7 @@ dnl Test whether the string produced by the snprintf function is always NUL | |||
1093 | dnl terminated. (ISO C99, POSIX:2001) | 1196 | dnl terminated. (ISO C99, POSIX:2001) |
1094 | dnl Result is gl_cv_func_snprintf_truncation_c99. | 1197 | dnl Result is gl_cv_func_snprintf_truncation_c99. |
1095 | 1198 | ||
1096 | AC_DEFUN([gl_SNPRINTF_TRUNCATION_C99], | 1199 | AC_DEFUN_ONCE([gl_SNPRINTF_TRUNCATION_C99], |
1097 | [ | 1200 | [ |
1098 | AC_REQUIRE([AC_PROG_CC]) | 1201 | AC_REQUIRE([AC_PROG_CC]) |
1099 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | 1202 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles |
@@ -1134,10 +1237,13 @@ int main () | |||
1134 | changequote(,)dnl | 1237 | changequote(,)dnl |
1135 | case "$host_os" in | 1238 | case "$host_os" in |
1136 | # Guess yes on glibc systems. | 1239 | # Guess yes on glibc systems. |
1137 | *-gnu*) gl_cv_func_snprintf_truncation_c99="guessing yes";; | 1240 | *-gnu* | gnu*) gl_cv_func_snprintf_truncation_c99="guessing yes";; |
1241 | # Guess yes on musl systems. | ||
1242 | *-musl*) gl_cv_func_snprintf_truncation_c99="guessing yes";; | ||
1138 | # Guess yes on FreeBSD >= 5. | 1243 | # Guess yes on FreeBSD >= 5. |
1139 | freebsd[1-4]*) gl_cv_func_snprintf_truncation_c99="guessing no";; | 1244 | freebsd[1-4].*) gl_cv_func_snprintf_truncation_c99="guessing no";; |
1140 | freebsd* | kfreebsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";; | 1245 | freebsd* | kfreebsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";; |
1246 | midnightbsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";; | ||
1141 | # Guess yes on Mac OS X >= 10.3. | 1247 | # Guess yes on Mac OS X >= 10.3. |
1142 | darwin[1-6].*) gl_cv_func_snprintf_truncation_c99="guessing no";; | 1248 | darwin[1-6].*) gl_cv_func_snprintf_truncation_c99="guessing no";; |
1143 | darwin*) gl_cv_func_snprintf_truncation_c99="guessing yes";; | 1249 | darwin*) gl_cv_func_snprintf_truncation_c99="guessing yes";; |
@@ -1166,8 +1272,12 @@ changequote(,)dnl | |||
1166 | netbsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";; | 1272 | netbsd*) gl_cv_func_snprintf_truncation_c99="guessing yes";; |
1167 | # Guess yes on BeOS. | 1273 | # Guess yes on BeOS. |
1168 | beos*) gl_cv_func_snprintf_truncation_c99="guessing yes";; | 1274 | beos*) gl_cv_func_snprintf_truncation_c99="guessing yes";; |
1169 | # If we don't know, assume the worst. | 1275 | # Guess yes on Android. |
1170 | *) gl_cv_func_snprintf_truncation_c99="guessing no";; | 1276 | linux*-android*) gl_cv_func_snprintf_truncation_c99="guessing yes";; |
1277 | # Guess no on native Windows. | ||
1278 | mingw*) gl_cv_func_snprintf_truncation_c99="guessing no";; | ||
1279 | # If we don't know, obey --enable-cross-guesses. | ||
1280 | *) gl_cv_func_snprintf_truncation_c99="$gl_cross_guess_normal";; | ||
1171 | esac | 1281 | esac |
1172 | changequote([,])dnl | 1282 | changequote([,])dnl |
1173 | ]) | 1283 | ]) |
@@ -1229,14 +1339,16 @@ int main () | |||
1229 | }]])], | 1339 | }]])], |
1230 | [gl_cv_func_snprintf_retval_c99=yes], | 1340 | [gl_cv_func_snprintf_retval_c99=yes], |
1231 | [gl_cv_func_snprintf_retval_c99=no], | 1341 | [gl_cv_func_snprintf_retval_c99=no], |
1232 | [ | 1342 | [case "$host_os" in |
1233 | changequote(,)dnl | 1343 | changequote(,)dnl |
1234 | case "$host_os" in | ||
1235 | # Guess yes on glibc systems. | 1344 | # Guess yes on glibc systems. |
1236 | *-gnu*) gl_cv_func_snprintf_retval_c99="guessing yes";; | 1345 | *-gnu* | gnu*) gl_cv_func_snprintf_retval_c99="guessing yes";; |
1346 | # Guess yes on musl systems. | ||
1347 | *-musl*) gl_cv_func_snprintf_retval_c99="guessing yes";; | ||
1237 | # Guess yes on FreeBSD >= 5. | 1348 | # Guess yes on FreeBSD >= 5. |
1238 | freebsd[1-4]*) gl_cv_func_snprintf_retval_c99="guessing no";; | 1349 | freebsd[1-4].*) gl_cv_func_snprintf_retval_c99="guessing no";; |
1239 | freebsd* | kfreebsd*) gl_cv_func_snprintf_retval_c99="guessing yes";; | 1350 | freebsd* | kfreebsd*) gl_cv_func_snprintf_retval_c99="guessing yes";; |
1351 | midnightbsd*) gl_cv_func_snprintf_retval_c99="guessing yes";; | ||
1240 | # Guess yes on Mac OS X >= 10.3. | 1352 | # Guess yes on Mac OS X >= 10.3. |
1241 | darwin[1-6].*) gl_cv_func_snprintf_retval_c99="guessing no";; | 1353 | darwin[1-6].*) gl_cv_func_snprintf_retval_c99="guessing no";; |
1242 | darwin*) gl_cv_func_snprintf_retval_c99="guessing yes";; | 1354 | darwin*) gl_cv_func_snprintf_retval_c99="guessing yes";; |
@@ -1256,10 +1368,21 @@ changequote(,)dnl | |||
1256 | netbsd*) gl_cv_func_snprintf_retval_c99="guessing yes";; | 1368 | netbsd*) gl_cv_func_snprintf_retval_c99="guessing yes";; |
1257 | # Guess yes on BeOS. | 1369 | # Guess yes on BeOS. |
1258 | beos*) gl_cv_func_snprintf_retval_c99="guessing yes";; | 1370 | beos*) gl_cv_func_snprintf_retval_c99="guessing yes";; |
1259 | # If we don't know, assume the worst. | 1371 | # Guess yes on Android. |
1260 | *) gl_cv_func_snprintf_retval_c99="guessing no";; | 1372 | linux*-android*) gl_cv_func_snprintf_retval_c99="guessing yes";; |
1261 | esac | ||
1262 | changequote([,])dnl | 1373 | changequote([,])dnl |
1374 | # Guess yes on MSVC, no on mingw. | ||
1375 | mingw*) AC_EGREP_CPP([Known], [ | ||
1376 | #ifdef _MSC_VER | ||
1377 | Known | ||
1378 | #endif | ||
1379 | ], | ||
1380 | [gl_cv_func_snprintf_retval_c99="guessing yes"], | ||
1381 | [gl_cv_func_snprintf_retval_c99="guessing no"]) | ||
1382 | ;; | ||
1383 | # If we don't know, obey --enable-cross-guesses. | ||
1384 | *) gl_cv_func_snprintf_retval_c99="$gl_cross_guess_normal";; | ||
1385 | esac | ||
1263 | ]) | 1386 | ]) |
1264 | ]) | 1387 | ]) |
1265 | ]) | 1388 | ]) |
@@ -1311,13 +1434,24 @@ int main () | |||
1311 | [gl_cv_func_snprintf_directive_n=yes], | 1434 | [gl_cv_func_snprintf_directive_n=yes], |
1312 | [gl_cv_func_snprintf_directive_n=no], | 1435 | [gl_cv_func_snprintf_directive_n=no], |
1313 | [ | 1436 | [ |
1314 | changequote(,)dnl | ||
1315 | case "$host_os" in | 1437 | case "$host_os" in |
1316 | # Guess yes on glibc systems. | 1438 | # Guess no on glibc when _FORTIFY_SOURCE >= 2. |
1317 | *-gnu*) gl_cv_func_snprintf_directive_n="guessing yes";; | 1439 | *-gnu* | gnu*) AC_COMPILE_IFELSE( |
1440 | [AC_LANG_SOURCE( | ||
1441 | [[#if _FORTIFY_SOURCE >= 2 | ||
1442 | error fail | ||
1443 | #endif | ||
1444 | ]])], | ||
1445 | [gl_cv_func_snprintf_directive_n="guessing yes"], | ||
1446 | [gl_cv_func_snprintf_directive_n="guessing no"]) | ||
1447 | ;; | ||
1448 | changequote(,)dnl | ||
1449 | # Guess yes on musl systems. | ||
1450 | *-musl*) gl_cv_func_snprintf_directive_n="guessing yes";; | ||
1318 | # Guess yes on FreeBSD >= 5. | 1451 | # Guess yes on FreeBSD >= 5. |
1319 | freebsd[1-4]*) gl_cv_func_snprintf_directive_n="guessing no";; | 1452 | freebsd[1-4].*) gl_cv_func_snprintf_directive_n="guessing no";; |
1320 | freebsd* | kfreebsd*) gl_cv_func_snprintf_directive_n="guessing yes";; | 1453 | freebsd* | kfreebsd*) gl_cv_func_snprintf_directive_n="guessing yes";; |
1454 | midnightbsd*) gl_cv_func_snprintf_directive_n="guessing yes";; | ||
1321 | # Guess yes on Mac OS X >= 10.3. | 1455 | # Guess yes on Mac OS X >= 10.3. |
1322 | darwin[1-6].*) gl_cv_func_snprintf_directive_n="guessing no";; | 1456 | darwin[1-6].*) gl_cv_func_snprintf_directive_n="guessing no";; |
1323 | darwin*) gl_cv_func_snprintf_directive_n="guessing yes";; | 1457 | darwin*) gl_cv_func_snprintf_directive_n="guessing yes";; |
@@ -1339,10 +1473,14 @@ changequote(,)dnl | |||
1339 | netbsd*) gl_cv_func_snprintf_directive_n="guessing yes";; | 1473 | netbsd*) gl_cv_func_snprintf_directive_n="guessing yes";; |
1340 | # Guess yes on BeOS. | 1474 | # Guess yes on BeOS. |
1341 | beos*) gl_cv_func_snprintf_directive_n="guessing yes";; | 1475 | beos*) gl_cv_func_snprintf_directive_n="guessing yes";; |
1342 | # If we don't know, assume the worst. | 1476 | # Guess no on Android. |
1343 | *) gl_cv_func_snprintf_directive_n="guessing no";; | 1477 | linux*-android*) gl_cv_func_snprintf_directive_n="guessing no";; |
1344 | esac | 1478 | # Guess no on native Windows. |
1479 | mingw*) gl_cv_func_snprintf_directive_n="guessing no";; | ||
1480 | # If we don't know, obey --enable-cross-guesses. | ||
1481 | *) gl_cv_func_snprintf_directive_n="$gl_cross_guess_normal";; | ||
1345 | changequote([,])dnl | 1482 | changequote([,])dnl |
1483 | esac | ||
1346 | ]) | 1484 | ]) |
1347 | ]) | 1485 | ]) |
1348 | ]) | 1486 | ]) |
@@ -1355,6 +1493,7 @@ dnl Result is gl_cv_func_snprintf_size1. | |||
1355 | AC_DEFUN([gl_SNPRINTF_SIZE1], | 1493 | AC_DEFUN([gl_SNPRINTF_SIZE1], |
1356 | [ | 1494 | [ |
1357 | AC_REQUIRE([AC_PROG_CC]) | 1495 | AC_REQUIRE([AC_PROG_CC]) |
1496 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | ||
1358 | AC_REQUIRE([gl_SNPRINTF_PRESENCE]) | 1497 | AC_REQUIRE([gl_SNPRINTF_PRESENCE]) |
1359 | AC_CACHE_CHECK([whether snprintf respects a size of 1], | 1498 | AC_CACHE_CHECK([whether snprintf respects a size of 1], |
1360 | [gl_cv_func_snprintf_size1], | 1499 | [gl_cv_func_snprintf_size1], |
@@ -1384,7 +1523,14 @@ int main() | |||
1384 | }]])], | 1523 | }]])], |
1385 | [gl_cv_func_snprintf_size1=yes], | 1524 | [gl_cv_func_snprintf_size1=yes], |
1386 | [gl_cv_func_snprintf_size1=no], | 1525 | [gl_cv_func_snprintf_size1=no], |
1387 | [gl_cv_func_snprintf_size1="guessing yes"]) | 1526 | [case "$host_os" in |
1527 | # Guess yes on Android. | ||
1528 | linux*-android*) gl_cv_func_snprintf_size1="guessing yes" ;; | ||
1529 | # Guess yes on native Windows. | ||
1530 | mingw*) gl_cv_func_snprintf_size1="guessing yes" ;; | ||
1531 | *) gl_cv_func_snprintf_size1="guessing yes" ;; | ||
1532 | esac | ||
1533 | ]) | ||
1388 | ]) | 1534 | ]) |
1389 | ]) | 1535 | ]) |
1390 | 1536 | ||
@@ -1456,10 +1602,13 @@ int main() | |||
1456 | changequote(,)dnl | 1602 | changequote(,)dnl |
1457 | case "$host_os" in | 1603 | case "$host_os" in |
1458 | # Guess yes on glibc systems. | 1604 | # Guess yes on glibc systems. |
1459 | *-gnu*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; | 1605 | *-gnu* | gnu*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; |
1606 | # Guess yes on musl systems. | ||
1607 | *-musl*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; | ||
1460 | # Guess yes on FreeBSD >= 5. | 1608 | # Guess yes on FreeBSD >= 5. |
1461 | freebsd[1-4]*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; | 1609 | freebsd[1-4].*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; |
1462 | freebsd* | kfreebsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; | 1610 | freebsd* | kfreebsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; |
1611 | midnightbsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; | ||
1463 | # Guess yes on Mac OS X >= 10.3. | 1612 | # Guess yes on Mac OS X >= 10.3. |
1464 | darwin[1-6].*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; | 1613 | darwin[1-6].*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; |
1465 | darwin*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; | 1614 | darwin*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; |
@@ -1480,10 +1629,12 @@ changequote(,)dnl | |||
1480 | netbsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; | 1629 | netbsd*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; |
1481 | # Guess yes on BeOS. | 1630 | # Guess yes on BeOS. |
1482 | beos*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; | 1631 | beos*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; |
1483 | # Guess yes on mingw. | 1632 | # Guess yes on Android. |
1633 | linux*-android*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; | ||
1634 | # Guess yes on native Windows. | ||
1484 | mingw* | pw*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; | 1635 | mingw* | pw*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";; |
1485 | # If we don't know, assume the worst. | 1636 | # If we don't know, obey --enable-cross-guesses. |
1486 | *) gl_cv_func_vsnprintf_zerosize_c99="guessing no";; | 1637 | *) gl_cv_func_vsnprintf_zerosize_c99="$gl_cross_guess_normal";; |
1487 | esac | 1638 | esac |
1488 | changequote([,])dnl | 1639 | changequote([,])dnl |
1489 | ]) | 1640 | ]) |
@@ -1539,14 +1690,19 @@ dnl | |||
1539 | dnl 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 1690 | dnl 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
1540 | dnl glibc 2.5 . . . . . . . . . . . . . . . . . . . . | 1691 | dnl glibc 2.5 . . . . . . . . . . . . . . . . . . . . |
1541 | dnl glibc 2.3.6 . . . . # . . . . . . . . . . . . . . . | 1692 | dnl glibc 2.3.6 . . . . # . . . . . . . . . . . . . . . |
1693 | dnl FreeBSD 13.0 . . . . # . . . . . . . . # . . . . . . | ||
1542 | dnl FreeBSD 5.4, 6.1 . . . . # . . . . . . # . # . . . . . . | 1694 | dnl FreeBSD 5.4, 6.1 . . . . # . . . . . . # . # . . . . . . |
1695 | dnl Mac OS X 10.13.5 . . . # # . # . . . . . . . . . . # . . | ||
1543 | dnl Mac OS X 10.5.8 . . . # # . . . . . . # . . . . . . . . | 1696 | dnl Mac OS X 10.5.8 . . . # # . . . . . . # . . . . . . . . |
1544 | dnl Mac OS X 10.3.9 . . . . # . . . . . . # . # . . . . . . | 1697 | dnl Mac OS X 10.3.9 . . . . # . . . . . . # . # . . . . . . |
1698 | dnl OpenBSD 6.0, 6.7 . . . . # . . . . . . . . # . . . . . . | ||
1545 | dnl OpenBSD 3.9, 4.0 . . # # # # . # . # . # . # . . . . . . | 1699 | dnl OpenBSD 3.9, 4.0 . . # # # # . # . # . # . # . . . . . . |
1546 | dnl Cygwin 1.7.0 (2009) . . . # . . . ? . . . . . ? . . . . . . | 1700 | dnl Cygwin 1.7.0 (2009) . . . # . . . ? . . . . . ? . . . . . . |
1547 | dnl Cygwin 1.5.25 (2008) . . . # # . . # . . . . . # . . . . . . | 1701 | dnl Cygwin 1.5.25 (2008) . . . # # . . # . . . . . # . . . . . . |
1548 | dnl Cygwin 1.5.19 (2006) # . . # # # . # . # . # # # . . . . . . | 1702 | dnl Cygwin 1.5.19 (2006) # . . # # # . # . # . # # # . . . . . . |
1549 | dnl Solaris 11 2011-11 . . # # # . . # . . . # . . . . . . . . | 1703 | dnl Solaris 11.4 . . # # # . . # . . . # . . . . . . . . |
1704 | dnl Solaris 11.3 . . . . # . . # . . . . . . . . . . . . | ||
1705 | dnl Solaris 11.0 . . # # # . . # . . . # . . . . . . . . | ||
1550 | dnl Solaris 10 . . # # # . . # . . . # # . . . . . . . | 1706 | dnl Solaris 10 . . # # # . . # . . . # # . . . . . . . |
1551 | dnl Solaris 2.6 ... 9 # . # # # # . # . . . # # . . . # . . . | 1707 | dnl Solaris 2.6 ... 9 # . # # # # . # . . . # # . . . # . . . |
1552 | dnl Solaris 2.5.1 # . # # # # . # . . . # . . # # # # # # | 1708 | dnl Solaris 2.5.1 # . # # # # . # . . . # . . # # # # # # |
@@ -1559,11 +1715,13 @@ dnl HP-UX 10.20 # . # . # # . ? . . # # . . . | |||
1559 | dnl IRIX 6.5 # . # # # # . # . . . # . . . . # . . . | 1715 | dnl IRIX 6.5 # . # # # # . # . . . # . . . . # . . . |
1560 | dnl OSF/1 5.1 # . # # # # . . . . . # . . . . # . . # | 1716 | dnl OSF/1 5.1 # . # # # # . . . . . # . . . . # . . # |
1561 | dnl OSF/1 4.0d # . # # # # . . . . . # . . # # # # # # | 1717 | dnl OSF/1 4.0d # . # # # # . . . . . # . . # # # # # # |
1718 | dnl NetBSD 9.0 . . . . # . . . . . . . . . . . . . . . | ||
1562 | dnl NetBSD 5.0 . . . # # . . . . . . # . # . . . . . . | 1719 | dnl NetBSD 5.0 . . . # # . . . . . . # . # . . . . . . |
1563 | dnl NetBSD 4.0 . ? ? ? ? ? . ? . ? ? ? ? ? . . . ? ? ? | 1720 | dnl NetBSD 4.0 . ? ? ? ? ? . ? . ? ? ? ? ? . . . ? ? ? |
1564 | dnl NetBSD 3.0 . . . . # # . ? # # ? # . # . . . . . . | 1721 | dnl NetBSD 3.0 . . . . # # . ? # # ? # . # . . . . . . |
1565 | dnl Haiku . . . # # # . # . . . . . ? . . ? . . . | 1722 | dnl Haiku . . . # # # . # . . . . . ? . . ? . . . |
1566 | dnl BeOS # # . # # # . ? # . ? . # ? . . ? . . . | 1723 | dnl BeOS # # . # # # . ? # . ? . # ? . . ? . . . |
1724 | dnl Android 4.3 . . # # # # # # . # . # . # . . . # . . | ||
1567 | dnl old mingw / msvcrt # # # # # # . . # # . # # ? . # # # . . | 1725 | dnl old mingw / msvcrt # # # # # # . . # # . # # ? . # # # . . |
1568 | dnl MSVC 9 # # # # # # # . # # . # # ? # # # # . . | 1726 | dnl MSVC 9 # # # # # # # . # # . # # ? # # # # . . |
1569 | dnl mingw 2009-2011 . # . # . . . . # # . . . ? . . . . . . | 1727 | dnl mingw 2009-2011 . # . # . . . . # # . . . ? . . . . . . |
diff --git a/gl/m4/progtest.m4 b/gl/m4/progtest.m4 deleted file mode 100644 index 7b391232..00000000 --- a/gl/m4/progtest.m4 +++ /dev/null | |||
@@ -1,91 +0,0 @@ | |||
1 | # progtest.m4 serial 7 (gettext-0.18.2) | ||
2 | dnl Copyright (C) 1996-2003, 2005, 2008-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | dnl | ||
7 | dnl This file can can be used in projects which are not available under | ||
8 | dnl the GNU General Public License or the GNU Library General Public | ||
9 | dnl License but which still want to provide support for the GNU gettext | ||
10 | dnl functionality. | ||
11 | dnl Please note that the actual code of the GNU gettext library is covered | ||
12 | dnl by the GNU Library General Public License, and the rest of the GNU | ||
13 | dnl gettext package package is covered by the GNU General Public License. | ||
14 | dnl They are *not* in the public domain. | ||
15 | |||
16 | dnl Authors: | ||
17 | dnl Ulrich Drepper <drepper@cygnus.com>, 1996. | ||
18 | |||
19 | AC_PREREQ([2.50]) | ||
20 | |||
21 | # Search path for a program which passes the given test. | ||
22 | |||
23 | dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, | ||
24 | dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) | ||
25 | AC_DEFUN([AM_PATH_PROG_WITH_TEST], | ||
26 | [ | ||
27 | # Prepare PATH_SEPARATOR. | ||
28 | # The user is always right. | ||
29 | if test "${PATH_SEPARATOR+set}" != set; then | ||
30 | # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which | ||
31 | # contains only /bin. Note that ksh looks also at the FPATH variable, | ||
32 | # so we have to set that as well for the test. | ||
33 | PATH_SEPARATOR=: | ||
34 | (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ | ||
35 | && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ | ||
36 | || PATH_SEPARATOR=';' | ||
37 | } | ||
38 | fi | ||
39 | |||
40 | # Find out how to test for executable files. Don't use a zero-byte file, | ||
41 | # as systems may use methods other than mode bits to determine executability. | ||
42 | cat >conf$$.file <<_ASEOF | ||
43 | #! /bin/sh | ||
44 | exit 0 | ||
45 | _ASEOF | ||
46 | chmod +x conf$$.file | ||
47 | if test -x conf$$.file >/dev/null 2>&1; then | ||
48 | ac_executable_p="test -x" | ||
49 | else | ||
50 | ac_executable_p="test -f" | ||
51 | fi | ||
52 | rm -f conf$$.file | ||
53 | |||
54 | # Extract the first word of "$2", so it can be a program name with args. | ||
55 | set dummy $2; ac_word=[$]2 | ||
56 | AC_MSG_CHECKING([for $ac_word]) | ||
57 | AC_CACHE_VAL([ac_cv_path_$1], | ||
58 | [case "[$]$1" in | ||
59 | [[\\/]]* | ?:[[\\/]]*) | ||
60 | ac_cv_path_$1="[$]$1" # Let the user override the test with a path. | ||
61 | ;; | ||
62 | *) | ||
63 | ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR | ||
64 | for ac_dir in ifelse([$5], , $PATH, [$5]); do | ||
65 | IFS="$ac_save_IFS" | ||
66 | test -z "$ac_dir" && ac_dir=. | ||
67 | for ac_exec_ext in '' $ac_executable_extensions; do | ||
68 | if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then | ||
69 | echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD | ||
70 | if [$3]; then | ||
71 | ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" | ||
72 | break 2 | ||
73 | fi | ||
74 | fi | ||
75 | done | ||
76 | done | ||
77 | IFS="$ac_save_IFS" | ||
78 | dnl If no 4th arg is given, leave the cache variable unset, | ||
79 | dnl so AC_PATH_PROGS will keep looking. | ||
80 | ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" | ||
81 | ])dnl | ||
82 | ;; | ||
83 | esac])dnl | ||
84 | $1="$ac_cv_path_$1" | ||
85 | if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then | ||
86 | AC_MSG_RESULT([$][$1]) | ||
87 | else | ||
88 | AC_MSG_RESULT([no]) | ||
89 | fi | ||
90 | AC_SUBST([$1])dnl | ||
91 | ]) | ||
diff --git a/gl/m4/pthread_rwlock_rdlock.m4 b/gl/m4/pthread_rwlock_rdlock.m4 new file mode 100644 index 00000000..ae6a8853 --- /dev/null +++ b/gl/m4/pthread_rwlock_rdlock.m4 | |||
@@ -0,0 +1,185 @@ | |||
1 | # pthread_rwlock_rdlock.m4 serial 4 | ||
2 | dnl Copyright (C) 2017-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | dnl From Bruno Haible. | ||
8 | dnl Inspired by | ||
9 | dnl https://github.com/linux-test-project/ltp/blob/master/testcases/open_posix_testsuite/conformance/interfaces/pthread_rwlock_rdlock/2-2.c | ||
10 | dnl by Intel Corporation. | ||
11 | |||
12 | dnl Test whether in a situation where | ||
13 | dnl - an rwlock is taken by a reader and has a writer waiting, | ||
14 | dnl - an additional reader requests the lock, | ||
15 | dnl - the waiting writer and the requesting reader threads have the same | ||
16 | dnl priority, | ||
17 | dnl the requesting reader thread gets blocked, so that at some point the | ||
18 | dnl waiting writer can acquire the lock. | ||
19 | dnl Without such a guarantee, when there a N readers and each of the readers | ||
20 | dnl spends more than 1/Nth of the time with the lock held, there is a high | ||
21 | dnl probability that the waiting writer will not get the lock in a given finite | ||
22 | dnl time, a phenomenon called "writer starvation". | ||
23 | dnl Without such a guarantee, applications have a hard time avoiding writer | ||
24 | dnl starvation. | ||
25 | dnl | ||
26 | dnl POSIX:2017 makes this requirement only for implementations that support TPS | ||
27 | dnl (Thread Priority Scheduling) and only for the scheduling policies SCHED_FIFO | ||
28 | dnl and SCHED_RR, see | ||
29 | dnl https://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_rwlock_rdlock.html | ||
30 | dnl but this test verifies the guarantee regardless of TPS and regardless of | ||
31 | dnl scheduling policy. | ||
32 | dnl Glibc does not provide this guarantee (and never will on Linux), see | ||
33 | dnl https://sourceware.org/bugzilla/show_bug.cgi?id=13701 | ||
34 | dnl https://bugzilla.redhat.com/show_bug.cgi?id=1410052 | ||
35 | AC_DEFUN([gl_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER], | ||
36 | [ | ||
37 | AC_REQUIRE([gl_THREADLIB_EARLY]) | ||
38 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | ||
39 | AC_CACHE_CHECK([whether pthread_rwlock_rdlock prefers a writer to a reader], | ||
40 | [gl_cv_pthread_rwlock_rdlock_prefer_writer], | ||
41 | [save_LIBS="$LIBS" | ||
42 | LIBS="$LIBS $LIBMULTITHREAD" | ||
43 | AC_RUN_IFELSE( | ||
44 | [AC_LANG_SOURCE([[ | ||
45 | #include <errno.h> | ||
46 | #include <pthread.h> | ||
47 | #include <stdlib.h> | ||
48 | #include <unistd.h> | ||
49 | |||
50 | #define SUCCEED() exit (0) | ||
51 | #define FAILURE() exit (1) | ||
52 | #define UNEXPECTED(n) (exit (10 + (n))) | ||
53 | |||
54 | /* The main thread creates the waiting writer and the requesting reader threads | ||
55 | in the default way; this guarantees that they have the same priority. | ||
56 | We can reuse the main thread as first reader thread. */ | ||
57 | |||
58 | static pthread_rwlock_t lock; | ||
59 | static pthread_t reader1; | ||
60 | static pthread_t writer; | ||
61 | static pthread_t reader2; | ||
62 | static pthread_t timer; | ||
63 | /* Used to pass control from writer to reader2 and from reader2 to timer, | ||
64 | as in a relay race. | ||
65 | Passing control from one running thread to another running thread | ||
66 | is most likely faster than to create the second thread. */ | ||
67 | static pthread_mutex_t baton; | ||
68 | |||
69 | static void * | ||
70 | timer_func (void *ignored) | ||
71 | { | ||
72 | /* Step 13 (can be before or after step 12): | ||
73 | The timer thread takes the baton, then waits a moment to make sure | ||
74 | it can tell whether the second reader thread is blocked at step 12. */ | ||
75 | if (pthread_mutex_lock (&baton)) | ||
76 | UNEXPECTED (13); | ||
77 | usleep (100000); | ||
78 | /* By the time we get here, it's clear that the second reader thread is | ||
79 | blocked at step 12. This is the desired behaviour. */ | ||
80 | SUCCEED (); | ||
81 | } | ||
82 | |||
83 | static void * | ||
84 | reader2_func (void *ignored) | ||
85 | { | ||
86 | int err; | ||
87 | |||
88 | /* Step 8 (can be before or after step 7): | ||
89 | The second reader thread takes the baton, then waits a moment to make sure | ||
90 | the writer thread has reached step 7. */ | ||
91 | if (pthread_mutex_lock (&baton)) | ||
92 | UNEXPECTED (8); | ||
93 | usleep (100000); | ||
94 | /* Step 9: The second reader thread requests the lock. */ | ||
95 | err = pthread_rwlock_tryrdlock (&lock); | ||
96 | if (err == 0) | ||
97 | FAILURE (); | ||
98 | else if (err != EBUSY) | ||
99 | UNEXPECTED (9); | ||
100 | /* Step 10: Launch a timer, to test whether the next call blocks. */ | ||
101 | if (pthread_create (&timer, NULL, timer_func, NULL)) | ||
102 | UNEXPECTED (10); | ||
103 | /* Step 11: Release the baton. */ | ||
104 | if (pthread_mutex_unlock (&baton)) | ||
105 | UNEXPECTED (11); | ||
106 | /* Step 12: The second reader thread requests the lock. */ | ||
107 | err = pthread_rwlock_rdlock (&lock); | ||
108 | if (err == 0) | ||
109 | FAILURE (); | ||
110 | else | ||
111 | UNEXPECTED (12); | ||
112 | } | ||
113 | |||
114 | static void * | ||
115 | writer_func (void *ignored) | ||
116 | { | ||
117 | /* Step 4: Take the baton, so that the second reader thread does not go ahead | ||
118 | too early. */ | ||
119 | if (pthread_mutex_lock (&baton)) | ||
120 | UNEXPECTED (4); | ||
121 | /* Step 5: Create the second reader thread. */ | ||
122 | if (pthread_create (&reader2, NULL, reader2_func, NULL)) | ||
123 | UNEXPECTED (5); | ||
124 | /* Step 6: Release the baton. */ | ||
125 | if (pthread_mutex_unlock (&baton)) | ||
126 | UNEXPECTED (6); | ||
127 | /* Step 7: The writer thread requests the lock. */ | ||
128 | if (pthread_rwlock_wrlock (&lock)) | ||
129 | UNEXPECTED (7); | ||
130 | return NULL; | ||
131 | } | ||
132 | |||
133 | int | ||
134 | main () | ||
135 | { | ||
136 | reader1 = pthread_self (); | ||
137 | |||
138 | /* Step 1: The main thread initializes the lock and the baton. */ | ||
139 | if (pthread_rwlock_init (&lock, NULL)) | ||
140 | UNEXPECTED (1); | ||
141 | if (pthread_mutex_init (&baton, NULL)) | ||
142 | UNEXPECTED (1); | ||
143 | /* Step 2: The main thread acquires the lock as a reader. */ | ||
144 | if (pthread_rwlock_rdlock (&lock)) | ||
145 | UNEXPECTED (2); | ||
146 | /* Step 3: Create the writer thread. */ | ||
147 | if (pthread_create (&writer, NULL, writer_func, NULL)) | ||
148 | UNEXPECTED (3); | ||
149 | /* Job done. Go to sleep. */ | ||
150 | for (;;) | ||
151 | { | ||
152 | sleep (1); | ||
153 | } | ||
154 | } | ||
155 | ]])], | ||
156 | [gl_cv_pthread_rwlock_rdlock_prefer_writer=yes], | ||
157 | [gl_cv_pthread_rwlock_rdlock_prefer_writer=no], | ||
158 | [case "$host_os" in | ||
159 | # Guess no on glibc systems. | ||
160 | *-gnu* | gnu*) gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing no" ;; | ||
161 | # Guess no on musl systems. | ||
162 | *-musl*) gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing no" ;; | ||
163 | # Guess no on bionic systems. | ||
164 | *-android*) gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing no" ;; | ||
165 | # Guess yes on native Windows with the mingw-w64 winpthreads library. | ||
166 | # Guess no on native Windows with the gnulib windows-rwlock module. | ||
167 | mingw*) if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then | ||
168 | gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing yes" | ||
169 | else | ||
170 | gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing no" | ||
171 | fi | ||
172 | ;; | ||
173 | # If we don't know, obey --enable-cross-guesses. | ||
174 | *) gl_cv_pthread_rwlock_rdlock_prefer_writer="$gl_cross_guess_normal" ;; | ||
175 | esac | ||
176 | ]) | ||
177 | LIBS="$save_LIBS" | ||
178 | ]) | ||
179 | case "$gl_cv_pthread_rwlock_rdlock_prefer_writer" in | ||
180 | *yes) | ||
181 | AC_DEFINE([HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER], [1], | ||
182 | [Define if the 'pthread_rwlock_rdlock' function prefers a writer to a reader.]) | ||
183 | ;; | ||
184 | esac | ||
185 | ]) | ||
diff --git a/gl/m4/read.m4 b/gl/m4/read.m4 deleted file mode 100644 index 81f0f3a9..00000000 --- a/gl/m4/read.m4 +++ /dev/null | |||
@@ -1,26 +0,0 @@ | |||
1 | # read.m4 serial 4 | ||
2 | dnl Copyright (C) 2011-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_FUNC_READ], | ||
8 | [ | ||
9 | AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) | ||
10 | AC_REQUIRE([gl_MSVC_INVAL]) | ||
11 | if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then | ||
12 | REPLACE_READ=1 | ||
13 | fi | ||
14 | dnl This ifdef is just an optimization, to avoid performing a configure | ||
15 | dnl check whose result is not used. It does not make the test of | ||
16 | dnl GNULIB_UNISTD_H_NONBLOCKING or GNULIB_NONBLOCKING redundant. | ||
17 | m4_ifdef([gl_NONBLOCKING_IO], [ | ||
18 | gl_NONBLOCKING_IO | ||
19 | if test $gl_cv_have_nonblocking != yes; then | ||
20 | REPLACE_READ=1 | ||
21 | fi | ||
22 | ]) | ||
23 | ]) | ||
24 | |||
25 | # Prerequisites of lib/read.c. | ||
26 | AC_DEFUN([gl_PREREQ_READ], [:]) | ||
diff --git a/gl/m4/realloc.m4 b/gl/m4/realloc.m4 new file mode 100644 index 00000000..d22138fc --- /dev/null +++ b/gl/m4/realloc.m4 | |||
@@ -0,0 +1,63 @@ | |||
1 | # realloc.m4 serial 26 | ||
2 | dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | # This is adapted with modifications from upstream Autoconf here: | ||
8 | # https://git.savannah.gnu.org/cgit/autoconf.git/tree/lib/autoconf/functions.m4?id=v2.70#n1455 | ||
9 | AC_DEFUN([_AC_FUNC_REALLOC_IF], | ||
10 | [ | ||
11 | AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles | ||
12 | AC_CACHE_CHECK([whether realloc (0, 0) returns nonnull], | ||
13 | [ac_cv_func_realloc_0_nonnull], | ||
14 | [AC_RUN_IFELSE( | ||
15 | [AC_LANG_PROGRAM( | ||
16 | [[#include <stdlib.h> | ||
17 | ]], | ||
18 | [[void *p = realloc (0, 0); | ||
19 | int result = !p; | ||
20 | free (p); | ||
21 | return result;]]) | ||
22 | ], | ||
23 | [ac_cv_func_realloc_0_nonnull=yes], | ||
24 | [ac_cv_func_realloc_0_nonnull=no], | ||
25 | [case "$host_os" in | ||
26 | # Guess yes on platforms where we know the result. | ||
27 | *-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \ | ||
28 | | gnu* | *-musl* | midnightbsd* \ | ||
29 | | hpux* | solaris* | cygwin* | mingw* | msys* ) | ||
30 | ac_cv_func_realloc_0_nonnull="guessing yes" ;; | ||
31 | # If we don't know, obey --enable-cross-guesses. | ||
32 | *) ac_cv_func_realloc_0_nonnull="$gl_cross_guess_normal" ;; | ||
33 | esac | ||
34 | ]) | ||
35 | ]) | ||
36 | AS_CASE([$ac_cv_func_realloc_0_nonnull], [*yes], [$1], [$2]) | ||
37 | ])# AC_FUNC_REALLOC | ||
38 | |||
39 | # gl_FUNC_REALLOC_GNU | ||
40 | # ------------------- | ||
41 | # Replace realloc if it is not compatible with GNU libc. | ||
42 | AC_DEFUN([gl_FUNC_REALLOC_GNU], | ||
43 | [ | ||
44 | AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) | ||
45 | AC_REQUIRE([gl_FUNC_REALLOC_POSIX]) | ||
46 | if test $REPLACE_REALLOC_FOR_REALLOC_GNU = 0; then | ||
47 | _AC_FUNC_REALLOC_IF([], [REPLACE_REALLOC_FOR_REALLOC_GNU=1]) | ||
48 | fi | ||
49 | ])# gl_FUNC_REALLOC_GNU | ||
50 | |||
51 | # gl_FUNC_REALLOC_POSIX | ||
52 | # --------------------- | ||
53 | # Test whether 'realloc' is POSIX compliant (sets errno to ENOMEM when it | ||
54 | # fails, and doesn't mess up with ptrdiff_t overflow), | ||
55 | # and replace realloc if it is not. | ||
56 | AC_DEFUN([gl_FUNC_REALLOC_POSIX], | ||
57 | [ | ||
58 | AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) | ||
59 | AC_REQUIRE([gl_FUNC_MALLOC_POSIX]) | ||
60 | if test $REPLACE_MALLOC_FOR_MALLOC_POSIX = 1; then | ||
61 | REPLACE_REALLOC_FOR_REALLOC_POSIX=1 | ||
62 | fi | ||
63 | ]) | ||
diff --git a/gl/m4/reallocarray.m4 b/gl/m4/reallocarray.m4 new file mode 100644 index 00000000..1607b7a9 --- /dev/null +++ b/gl/m4/reallocarray.m4 | |||
@@ -0,0 +1,23 @@ | |||
1 | # reallocarray.m4 serial 3 | ||
2 | dnl Copyright (C) 2017-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_FUNC_REALLOCARRAY], | ||
8 | [ | ||
9 | dnl Persuade glibc <stdlib.h> to declare reallocarray. | ||
10 | AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) | ||
11 | |||
12 | AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) | ||
13 | AC_REQUIRE([gl_CHECK_MALLOC_PTRDIFF]) | ||
14 | AC_CHECK_FUNCS([reallocarray]) | ||
15 | if test "$ac_cv_func_reallocarray" = no; then | ||
16 | HAVE_REALLOCARRAY=0 | ||
17 | elif test "$gl_cv_malloc_ptrdiff" = no; then | ||
18 | REPLACE_REALLOCARRAY=1 | ||
19 | fi | ||
20 | ]) | ||
21 | |||
22 | # Prerequisites of lib/reallocarray.c. | ||
23 | AC_DEFUN([gl_PREREQ_REALLOCARRAY], [:]) | ||
diff --git a/gl/m4/regex.m4 b/gl/m4/regex.m4 index 0945c11a..c89a1432 100644 --- a/gl/m4/regex.m4 +++ b/gl/m4/regex.m4 | |||
@@ -1,6 +1,6 @@ | |||
1 | # serial 64 | 1 | # serial 73 |
2 | 2 | ||
3 | # Copyright (C) 1996-2001, 2003-2013 Free Software Foundation, Inc. | 3 | # Copyright (C) 1996-2001, 2003-2023 Free Software Foundation, Inc. |
4 | # | 4 | # |
5 | # This file is free software; the Free Software Foundation | 5 | # This file is free software; the Free Software Foundation |
6 | # gives unlimited permission to copy and/or distribute it, | 6 | # gives unlimited permission to copy and/or distribute it, |
@@ -13,6 +13,7 @@ AC_PREREQ([2.50]) | |||
13 | 13 | ||
14 | AC_DEFUN([gl_REGEX], | 14 | AC_DEFUN([gl_REGEX], |
15 | [ | 15 | [ |
16 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | ||
16 | AC_ARG_WITH([included-regex], | 17 | AC_ARG_WITH([included-regex], |
17 | [AS_HELP_STRING([--without-included-regex], | 18 | [AS_HELP_STRING([--without-included-regex], |
18 | [don't compile regex; this is the default on systems | 19 | [don't compile regex; this is the default on systems |
@@ -28,6 +29,7 @@ AC_DEFUN([gl_REGEX], | |||
28 | # If cross compiling, assume the test would fail and use the included | 29 | # If cross compiling, assume the test would fail and use the included |
29 | # regex.c. | 30 | # regex.c. |
30 | AC_CHECK_DECLS_ONCE([alarm]) | 31 | AC_CHECK_DECLS_ONCE([alarm]) |
32 | AC_CHECK_HEADERS_ONCE([malloc.h]) | ||
31 | AC_CACHE_CHECK([for working re_compile_pattern], | 33 | AC_CACHE_CHECK([for working re_compile_pattern], |
32 | [gl_cv_func_re_compile_pattern_working], | 34 | [gl_cv_func_re_compile_pattern_working], |
33 | [AC_RUN_IFELSE( | 35 | [AC_RUN_IFELSE( |
@@ -37,9 +39,19 @@ AC_DEFUN([gl_REGEX], | |||
37 | #include <locale.h> | 39 | #include <locale.h> |
38 | #include <limits.h> | 40 | #include <limits.h> |
39 | #include <string.h> | 41 | #include <string.h> |
40 | #if HAVE_DECL_ALARM | 42 | |
41 | # include <unistd.h> | 43 | #if defined M_CHECK_ACTION || HAVE_DECL_ALARM |
42 | # include <signal.h> | 44 | # include <signal.h> |
45 | # include <unistd.h> | ||
46 | #endif | ||
47 | |||
48 | #if HAVE_MALLOC_H | ||
49 | # include <malloc.h> | ||
50 | #endif | ||
51 | |||
52 | #ifdef M_CHECK_ACTION | ||
53 | /* Exit with distinguishable exit code. */ | ||
54 | static void sigabrt_no_core (int sig) { raise (SIGTERM); } | ||
43 | #endif | 55 | #endif |
44 | ]], | 56 | ]], |
45 | [[int result = 0; | 57 | [[int result = 0; |
@@ -49,15 +61,22 @@ AC_DEFUN([gl_REGEX], | |||
49 | const char *s; | 61 | const char *s; |
50 | struct re_registers regs; | 62 | struct re_registers regs; |
51 | 63 | ||
64 | /* Some builds of glibc go into an infinite loop on this | ||
65 | test. Use alarm to force death, and mallopt to avoid | ||
66 | malloc recursion in diagnosing the corrupted heap. */ | ||
52 | #if HAVE_DECL_ALARM | 67 | #if HAVE_DECL_ALARM |
53 | /* Some builds of glibc go into an infinite loop on this test. */ | ||
54 | signal (SIGALRM, SIG_DFL); | 68 | signal (SIGALRM, SIG_DFL); |
55 | alarm (2); | 69 | alarm (2); |
56 | #endif | 70 | #endif |
71 | #ifdef M_CHECK_ACTION | ||
72 | signal (SIGABRT, sigabrt_no_core); | ||
73 | mallopt (M_CHECK_ACTION, 2); | ||
74 | #endif | ||
75 | |||
57 | if (setlocale (LC_ALL, "en_US.UTF-8")) | 76 | if (setlocale (LC_ALL, "en_US.UTF-8")) |
58 | { | 77 | { |
59 | { | 78 | { |
60 | /* http://sourceware.org/ml/libc-hacker/2006-09/msg00008.html | 79 | /* https://sourceware.org/ml/libc-hacker/2006-09/msg00008.html |
61 | This test needs valgrind to catch the bug on Debian | 80 | This test needs valgrind to catch the bug on Debian |
62 | GNU/Linux 3.1 x86, but it might catch the bug better | 81 | GNU/Linux 3.1 x86, but it might catch the bug better |
63 | on other platforms and it shouldn't hurt to try the | 82 | on other platforms and it shouldn't hurt to try the |
@@ -71,16 +90,20 @@ AC_DEFUN([gl_REGEX], | |||
71 | s = re_compile_pattern (pat, sizeof pat - 1, ®ex); | 90 | s = re_compile_pattern (pat, sizeof pat - 1, ®ex); |
72 | if (s) | 91 | if (s) |
73 | result |= 1; | 92 | result |= 1; |
74 | else if (re_search (®ex, data, sizeof data - 1, | 93 | else |
75 | 0, sizeof data - 1, ®s) | 94 | { |
76 | != -1) | 95 | if (re_search (®ex, data, sizeof data - 1, |
77 | result |= 1; | 96 | 0, sizeof data - 1, ®s) |
97 | != -1) | ||
98 | result |= 1; | ||
99 | regfree (®ex); | ||
100 | } | ||
78 | } | 101 | } |
79 | 102 | ||
80 | { | 103 | { |
81 | /* This test is from glibc bug 15078. | 104 | /* This test is from glibc bug 15078. |
82 | The test case is from Andreas Schwab in | 105 | The test case is from Andreas Schwab in |
83 | <http://www.sourceware.org/ml/libc-alpha/2013-01/msg00967.html>. | 106 | <https://sourceware.org/ml/libc-alpha/2013-01/msg00967.html>. |
84 | */ | 107 | */ |
85 | static char const pat[] = "[^x]x"; | 108 | static char const pat[] = "[^x]x"; |
86 | static char const data[] = | 109 | static char const data[] = |
@@ -105,6 +128,7 @@ AC_DEFUN([gl_REGEX], | |||
105 | 0, sizeof data - 1, 0); | 128 | 0, sizeof data - 1, 0); |
106 | if (i != 0 && i != 21) | 129 | if (i != 0 && i != 21) |
107 | result |= 1; | 130 | result |= 1; |
131 | regfree (®ex); | ||
108 | } | 132 | } |
109 | } | 133 | } |
110 | 134 | ||
@@ -118,9 +142,13 @@ AC_DEFUN([gl_REGEX], | |||
118 | s = re_compile_pattern ("a[^x]b", 6, ®ex); | 142 | s = re_compile_pattern ("a[^x]b", 6, ®ex); |
119 | if (s) | 143 | if (s) |
120 | result |= 2; | 144 | result |= 2; |
121 | /* This should fail, but succeeds for glibc-2.5. */ | 145 | else |
122 | else if (re_search (®ex, "a\nb", 3, 0, 3, ®s) != -1) | 146 | { |
123 | result |= 2; | 147 | /* This should fail, but succeeds for glibc-2.5. */ |
148 | if (re_search (®ex, "a\nb", 3, 0, 3, ®s) != -1) | ||
149 | result |= 2; | ||
150 | regfree (®ex); | ||
151 | } | ||
124 | 152 | ||
125 | /* This regular expression is from Spencer ere test number 75 | 153 | /* This regular expression is from Spencer ere test number 75 |
126 | in grep-2.3. */ | 154 | in grep-2.3. */ |
@@ -132,7 +160,10 @@ AC_DEFUN([gl_REGEX], | |||
132 | s = re_compile_pattern ("a[[:@:>@:]]b\n", 11, ®ex); | 160 | s = re_compile_pattern ("a[[:@:>@:]]b\n", 11, ®ex); |
133 | /* This should fail with _Invalid character class name_ error. */ | 161 | /* This should fail with _Invalid character class name_ error. */ |
134 | if (!s) | 162 | if (!s) |
135 | result |= 4; | 163 | { |
164 | result |= 4; | ||
165 | regfree (®ex); | ||
166 | } | ||
136 | 167 | ||
137 | /* Ensure that [b-a] is diagnosed as invalid, when | 168 | /* Ensure that [b-a] is diagnosed as invalid, when |
138 | using RE_NO_EMPTY_RANGES. */ | 169 | using RE_NO_EMPTY_RANGES. */ |
@@ -140,13 +171,18 @@ AC_DEFUN([gl_REGEX], | |||
140 | memset (®ex, 0, sizeof regex); | 171 | memset (®ex, 0, sizeof regex); |
141 | s = re_compile_pattern ("a[b-a]", 6, ®ex); | 172 | s = re_compile_pattern ("a[b-a]", 6, ®ex); |
142 | if (s == 0) | 173 | if (s == 0) |
143 | result |= 8; | 174 | { |
175 | result |= 8; | ||
176 | regfree (®ex); | ||
177 | } | ||
144 | 178 | ||
145 | /* This should succeed, but does not for glibc-2.1.3. */ | 179 | /* This should succeed, but does not for glibc-2.1.3. */ |
146 | memset (®ex, 0, sizeof regex); | 180 | memset (®ex, 0, sizeof regex); |
147 | s = re_compile_pattern ("{1", 2, ®ex); | 181 | s = re_compile_pattern ("{1", 2, ®ex); |
148 | if (s) | 182 | if (s) |
149 | result |= 8; | 183 | result |= 8; |
184 | else | ||
185 | regfree (®ex); | ||
150 | 186 | ||
151 | /* The following example is derived from a problem report | 187 | /* The following example is derived from a problem report |
152 | against gawk from Jorge Stolfi <stolfi@ic.unicamp.br>. */ | 188 | against gawk from Jorge Stolfi <stolfi@ic.unicamp.br>. */ |
@@ -154,17 +190,35 @@ AC_DEFUN([gl_REGEX], | |||
154 | s = re_compile_pattern ("[an\371]*n", 7, ®ex); | 190 | s = re_compile_pattern ("[an\371]*n", 7, ®ex); |
155 | if (s) | 191 | if (s) |
156 | result |= 8; | 192 | result |= 8; |
157 | /* This should match, but does not for glibc-2.2.1. */ | 193 | else |
158 | else if (re_match (®ex, "an", 2, 0, ®s) != 2) | 194 | { |
159 | result |= 8; | 195 | /* This should match, but does not for glibc-2.2.1. */ |
196 | if (re_match (®ex, "an", 2, 0, ®s) != 2) | ||
197 | result |= 8; | ||
198 | else | ||
199 | { | ||
200 | free (regs.start); | ||
201 | free (regs.end); | ||
202 | } | ||
203 | regfree (®ex); | ||
204 | } | ||
160 | 205 | ||
161 | memset (®ex, 0, sizeof regex); | 206 | memset (®ex, 0, sizeof regex); |
162 | s = re_compile_pattern ("x", 1, ®ex); | 207 | s = re_compile_pattern ("x", 1, ®ex); |
163 | if (s) | 208 | if (s) |
164 | result |= 8; | 209 | result |= 8; |
165 | /* glibc-2.2.93 does not work with a negative RANGE argument. */ | 210 | else |
166 | else if (re_search (®ex, "wxy", 3, 2, -2, ®s) != 1) | 211 | { |
167 | result |= 8; | 212 | /* glibc-2.2.93 does not work with a negative RANGE argument. */ |
213 | if (re_search (®ex, "wxy", 3, 2, -2, ®s) != 1) | ||
214 | result |= 8; | ||
215 | else | ||
216 | { | ||
217 | free (regs.start); | ||
218 | free (regs.end); | ||
219 | } | ||
220 | regfree (®ex); | ||
221 | } | ||
168 | 222 | ||
169 | /* The version of regex.c in older versions of gnulib | 223 | /* The version of regex.c in older versions of gnulib |
170 | ignored RE_ICASE. Detect that problem too. */ | 224 | ignored RE_ICASE. Detect that problem too. */ |
@@ -173,25 +227,89 @@ AC_DEFUN([gl_REGEX], | |||
173 | s = re_compile_pattern ("x", 1, ®ex); | 227 | s = re_compile_pattern ("x", 1, ®ex); |
174 | if (s) | 228 | if (s) |
175 | result |= 16; | 229 | result |= 16; |
176 | else if (re_search (®ex, "WXY", 3, 0, 3, ®s) < 0) | 230 | else |
177 | result |= 16; | 231 | { |
232 | if (re_search (®ex, "WXY", 3, 0, 3, ®s) < 0) | ||
233 | result |= 16; | ||
234 | else | ||
235 | { | ||
236 | free (regs.start); | ||
237 | free (regs.end); | ||
238 | } | ||
239 | regfree (®ex); | ||
240 | } | ||
178 | 241 | ||
179 | /* Catch a bug reported by Vin Shelton in | 242 | /* Catch a bug reported by Vin Shelton in |
180 | http://lists.gnu.org/archive/html/bug-coreutils/2007-06/msg00089.html | 243 | https://lists.gnu.org/r/bug-coreutils/2007-06/msg00089.html |
181 | */ | 244 | */ |
182 | re_set_syntax (RE_SYNTAX_POSIX_BASIC | 245 | re_set_syntax (RE_SYNTAX_POSIX_BASIC |
183 | & ~RE_CONTEXT_INVALID_DUP | 246 | & ~RE_CONTEXT_INVALID_DUP |
184 | & ~RE_NO_EMPTY_RANGES); | 247 | & ~RE_NO_EMPTY_RANGES); |
185 | memset (®ex, 0, sizeof regex); | 248 | memset (®ex, 0, sizeof regex); |
186 | s = re_compile_pattern ("[[:alnum:]_-]\\\\+$", 16, ®ex); | 249 | s = re_compile_pattern ("[[:alnum:]_-]\\\\+\$", 16, ®ex); |
187 | if (s) | 250 | if (s) |
188 | result |= 32; | 251 | result |= 32; |
252 | else | ||
253 | regfree (®ex); | ||
189 | 254 | ||
190 | /* REG_STARTEND was added to glibc on 2004-01-15. | 255 | /* REG_STARTEND was added to glibc on 2004-01-15. |
191 | Reject older versions. */ | 256 | Reject older versions. */ |
192 | if (! REG_STARTEND) | 257 | if (! REG_STARTEND) |
193 | result |= 64; | 258 | result |= 64; |
194 | 259 | ||
260 | /* Matching with the compiled form of this regexp would provoke | ||
261 | an assertion failure prior to glibc-2.28: | ||
262 | regexec.c:1375: pop_fail_stack: Assertion 'num >= 0' failed | ||
263 | With glibc-2.28, compilation fails and reports the invalid | ||
264 | back reference. */ | ||
265 | re_set_syntax (RE_SYNTAX_POSIX_EGREP); | ||
266 | memset (®ex, 0, sizeof regex); | ||
267 | s = re_compile_pattern ("0|()0|\\\\1|0", 10, ®ex); | ||
268 | if (!s) | ||
269 | { | ||
270 | memset (®s, 0, sizeof regs); | ||
271 | i = re_search (®ex, "x", 1, 0, 1, ®s); | ||
272 | if (i != -1) | ||
273 | result |= 64; | ||
274 | if (0 <= i) | ||
275 | { | ||
276 | free (regs.start); | ||
277 | free (regs.end); | ||
278 | } | ||
279 | regfree (®ex); | ||
280 | } | ||
281 | else | ||
282 | { | ||
283 | if (strcmp (s, "Invalid back reference")) | ||
284 | result |= 64; | ||
285 | } | ||
286 | |||
287 | /* glibc bug 11053. */ | ||
288 | re_set_syntax (RE_SYNTAX_POSIX_BASIC); | ||
289 | memset (®ex, 0, sizeof regex); | ||
290 | static char const pat_sub2[] = "\\\\(a*\\\\)*a*\\\\1"; | ||
291 | s = re_compile_pattern (pat_sub2, sizeof pat_sub2 - 1, ®ex); | ||
292 | if (s) | ||
293 | result |= 64; | ||
294 | else | ||
295 | { | ||
296 | memset (®s, 0, sizeof regs); | ||
297 | static char const data[] = "a"; | ||
298 | int datalen = sizeof data - 1; | ||
299 | i = re_search (®ex, data, datalen, 0, datalen, ®s); | ||
300 | if (i != 0) | ||
301 | result |= 64; | ||
302 | else if (regs.num_regs < 2) | ||
303 | result |= 64; | ||
304 | else if (! (regs.start[0] == 0 && regs.end[0] == 1)) | ||
305 | result |= 64; | ||
306 | else if (! (regs.start[1] == 0 && regs.end[1] == 0)) | ||
307 | result |= 64; | ||
308 | regfree (®ex); | ||
309 | free (regs.start); | ||
310 | free (regs.end); | ||
311 | } | ||
312 | |||
195 | #if 0 | 313 | #if 0 |
196 | /* It would be nice to reject hosts whose regoff_t values are too | 314 | /* It would be nice to reject hosts whose regoff_t values are too |
197 | narrow (including glibc on hosts with 64-bit ptrdiff_t and | 315 | narrow (including glibc on hosts with 64-bit ptrdiff_t and |
@@ -206,13 +324,19 @@ AC_DEFUN([gl_REGEX], | |||
206 | 324 | ||
207 | return result; | 325 | return result; |
208 | ]])], | 326 | ]])], |
209 | [gl_cv_func_re_compile_pattern_working=yes], | 327 | [gl_cv_func_re_compile_pattern_working=yes], |
210 | [gl_cv_func_re_compile_pattern_working=no], | 328 | [gl_cv_func_re_compile_pattern_working=no], |
211 | dnl When crosscompiling, assume it is not working. | 329 | [case "$host_os" in |
212 | [gl_cv_func_re_compile_pattern_working=no])]) | 330 | # Guess no on native Windows. |
213 | case $gl_cv_func_re_compile_pattern_working in #( | 331 | mingw*) gl_cv_func_re_compile_pattern_working="guessing no" ;; |
214 | yes) ac_use_included_regex=no;; #( | 332 | # Otherwise obey --enable-cross-guesses. |
215 | no) ac_use_included_regex=yes;; | 333 | *) gl_cv_func_re_compile_pattern_working="$gl_cross_guess_normal" ;; |
334 | esac | ||
335 | ]) | ||
336 | ]) | ||
337 | case "$gl_cv_func_re_compile_pattern_working" in #( | ||
338 | *yes) ac_use_included_regex=no;; #( | ||
339 | *no) ac_use_included_regex=yes;; | ||
216 | esac | 340 | esac |
217 | ;; | 341 | ;; |
218 | *) AC_MSG_ERROR([Invalid value for --with-included-regex: $with_included_regex]) | 342 | *) AC_MSG_ERROR([Invalid value for --with-included-regex: $with_included_regex]) |
@@ -266,8 +390,7 @@ AC_DEFUN([gl_PREREQ_REGEX], | |||
266 | AC_REQUIRE([AC_C_RESTRICT]) | 390 | AC_REQUIRE([AC_C_RESTRICT]) |
267 | AC_REQUIRE([AC_TYPE_MBSTATE_T]) | 391 | AC_REQUIRE([AC_TYPE_MBSTATE_T]) |
268 | AC_REQUIRE([gl_EEMALLOC]) | 392 | AC_REQUIRE([gl_EEMALLOC]) |
269 | AC_REQUIRE([gl_GLIBC21]) | ||
270 | AC_CHECK_HEADERS([libintl.h]) | 393 | AC_CHECK_HEADERS([libintl.h]) |
271 | AC_CHECK_FUNCS_ONCE([isblank iswctype wcscoll]) | 394 | AC_CHECK_FUNCS_ONCE([isblank iswctype]) |
272 | AC_CHECK_DECLS([isblank], [], [], [[#include <ctype.h>]]) | 395 | AC_CHECK_DECLS([isblank], [], [], [[#include <ctype.h>]]) |
273 | ]) | 396 | ]) |
diff --git a/gl/m4/safe-read.m4 b/gl/m4/safe-read.m4 deleted file mode 100644 index be5207a5..00000000 --- a/gl/m4/safe-read.m4 +++ /dev/null | |||
@@ -1,12 +0,0 @@ | |||
1 | # safe-read.m4 serial 6 | ||
2 | dnl Copyright (C) 2002-2003, 2005-2006, 2009-2013 Free Software Foundation, | ||
3 | dnl Inc. | ||
4 | dnl This file is free software; the Free Software Foundation | ||
5 | dnl gives unlimited permission to copy and/or distribute it, | ||
6 | dnl with or without modifications, as long as this notice is preserved. | ||
7 | |||
8 | # Prerequisites of lib/safe-read.c. | ||
9 | AC_DEFUN([gl_PREREQ_SAFE_READ], | ||
10 | [ | ||
11 | AC_REQUIRE([gt_TYPE_SSIZE_T]) | ||
12 | ]) | ||
diff --git a/gl/m4/servent.m4 b/gl/m4/servent.m4 index 01c037a8..0f35b8b8 100644 --- a/gl/m4/servent.m4 +++ b/gl/m4/servent.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # servent.m4 serial 2 | 1 | # servent.m4 serial 4 |
2 | dnl Copyright (C) 2008, 2010-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2008, 2010-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -10,12 +10,12 @@ AC_DEFUN([gl_SERVENT], | |||
10 | dnl getservbyport() defined? | 10 | dnl getservbyport() defined? |
11 | dnl Where are getprotoent(), setprotoent(), endprotoent(), getprotobyname(), | 11 | dnl Where are getprotoent(), setprotoent(), endprotoent(), getprotobyname(), |
12 | dnl getprotobynumber() defined? | 12 | dnl getprotobynumber() defined? |
13 | dnl - On Solaris, they are in libsocket. Ignore libxnet. | 13 | dnl - On Solaris < 11.4, they are in libsocket. Ignore libxnet. |
14 | dnl - On Haiku, they are in libnetwork. | 14 | dnl - On Haiku, they are in libnetwork. |
15 | dnl - On BeOS, they are in libnet. | 15 | dnl - On BeOS, they are in libnet. |
16 | dnl - On native Windows, they are in ws2_32.dll. | 16 | dnl - On native Windows, they are in ws2_32.dll. |
17 | dnl - Otherwise they are in libc. | 17 | dnl - Otherwise they are in libc. |
18 | AC_REQUIRE([gl_HEADER_SYS_SOCKET])dnl for HAVE_SYS_SOCKET_H, HAVE_WINSOCK2_H | 18 | AC_REQUIRE([gl_SYS_SOCKET_H])dnl for HAVE_SYS_SOCKET_H, HAVE_WINSOCK2_H |
19 | SERVENT_LIB= | 19 | SERVENT_LIB= |
20 | gl_saved_libs="$LIBS" | 20 | gl_saved_libs="$LIBS" |
21 | AC_SEARCH_LIBS([getservbyname], [socket network net], | 21 | AC_SEARCH_LIBS([getservbyname], [socket network net], |
diff --git a/gl/m4/setenv.m4 b/gl/m4/setenv.m4 index cb5351a0..16f9eb55 100644 --- a/gl/m4/setenv.m4 +++ b/gl/m4/setenv.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # setenv.m4 serial 26 | 1 | # setenv.m4 serial 30 |
2 | dnl Copyright (C) 2001-2004, 2006-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2001-2004, 2006-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -35,10 +35,12 @@ AC_DEFUN([gl_FUNC_SETENV], | |||
35 | ]])], | 35 | ]])], |
36 | [gl_cv_func_setenv_works=yes], [gl_cv_func_setenv_works=no], | 36 | [gl_cv_func_setenv_works=yes], [gl_cv_func_setenv_works=no], |
37 | [case "$host_os" in | 37 | [case "$host_os" in |
38 | # Guess yes on glibc systems. | 38 | # Guess yes on glibc systems. |
39 | *-gnu*) gl_cv_func_setenv_works="guessing yes" ;; | 39 | *-gnu* | gnu*) gl_cv_func_setenv_works="guessing yes" ;; |
40 | # If we don't know, assume the worst. | 40 | # Guess yes on musl systems. |
41 | *) gl_cv_func_setenv_works="guessing no" ;; | 41 | *-musl*) gl_cv_func_setenv_works="guessing yes" ;; |
42 | # If we don't know, obey --enable-cross-guesses. | ||
43 | *) gl_cv_func_setenv_works="$gl_cross_guess_normal" ;; | ||
42 | esac | 44 | esac |
43 | ])]) | 45 | ])]) |
44 | case "$gl_cv_func_setenv_works" in | 46 | case "$gl_cv_func_setenv_works" in |
@@ -104,35 +106,39 @@ int unsetenv (const char *name); | |||
104 | dnl OpenBSD 4.7 unsetenv("") does not fail. | 106 | dnl OpenBSD 4.7 unsetenv("") does not fail. |
105 | AC_CACHE_CHECK([whether unsetenv obeys POSIX], | 107 | AC_CACHE_CHECK([whether unsetenv obeys POSIX], |
106 | [gl_cv_func_unsetenv_works], | 108 | [gl_cv_func_unsetenv_works], |
107 | [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ | 109 | [AC_RUN_IFELSE( |
108 | #include <stdlib.h> | 110 | [AC_LANG_PROGRAM([[ |
109 | #include <errno.h> | 111 | #include <stdlib.h> |
110 | extern char **environ; | 112 | #include <errno.h> |
111 | ]], [[ | 113 | extern char **environ; |
112 | char entry1[] = "a=1"; | 114 | ]GL_MDA_DEFINES], |
113 | char entry2[] = "b=2"; | 115 | [[ |
114 | char *env[] = { entry1, entry2, NULL }; | 116 | char entry1[] = "a=1"; |
115 | if (putenv ((char *) "a=1")) return 1; | 117 | char entry2[] = "b=2"; |
116 | if (putenv (entry2)) return 2; | 118 | char *env[] = { entry1, entry2, NULL }; |
117 | entry2[0] = 'a'; | 119 | if (putenv ((char *) "a=1")) return 1; |
118 | unsetenv ("a"); | 120 | if (putenv (entry2)) return 2; |
119 | if (getenv ("a")) return 3; | 121 | entry2[0] = 'a'; |
120 | if (!unsetenv ("") || errno != EINVAL) return 4; | 122 | unsetenv ("a"); |
121 | entry2[0] = 'b'; | 123 | if (getenv ("a")) return 3; |
122 | environ = env; | 124 | if (!unsetenv ("") || errno != EINVAL) return 4; |
123 | if (!getenv ("a")) return 5; | 125 | entry2[0] = 'b'; |
124 | entry2[0] = 'a'; | 126 | environ = env; |
125 | unsetenv ("a"); | 127 | if (!getenv ("a")) return 5; |
126 | if (getenv ("a")) return 6; | 128 | entry2[0] = 'a'; |
127 | ]])], | 129 | unsetenv ("a"); |
128 | [gl_cv_func_unsetenv_works=yes], [gl_cv_func_unsetenv_works=no], | 130 | if (getenv ("a")) return 6; |
129 | [case "$host_os" in | 131 | ]])], |
130 | # Guess yes on glibc systems. | 132 | [gl_cv_func_unsetenv_works=yes], |
131 | *-gnu*) gl_cv_func_unsetenv_works="guessing yes" ;; | 133 | [gl_cv_func_unsetenv_works=no], |
132 | # If we don't know, assume the worst. | 134 | [case "$host_os" in |
133 | *) gl_cv_func_unsetenv_works="guessing no" ;; | 135 | # Guess yes on glibc systems. |
134 | esac | 136 | *-gnu*) gl_cv_func_unsetenv_works="guessing yes" ;; |
135 | ])]) | 137 | # If we don't know, obey --enable-cross-guesses. |
138 | *) gl_cv_func_unsetenv_works="$gl_cross_guess_normal" ;; | ||
139 | esac | ||
140 | ]) | ||
141 | ]) | ||
136 | case "$gl_cv_func_unsetenv_works" in | 142 | case "$gl_cv_func_unsetenv_works" in |
137 | *yes) ;; | 143 | *yes) ;; |
138 | *) | 144 | *) |
diff --git a/gl/m4/setlocale_null.m4 b/gl/m4/setlocale_null.m4 new file mode 100644 index 00000000..032119d0 --- /dev/null +++ b/gl/m4/setlocale_null.m4 | |||
@@ -0,0 +1,98 @@ | |||
1 | # setlocale_null.m4 serial 5 | ||
2 | dnl Copyright (C) 2019-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_FUNC_SETLOCALE_NULL], | ||
8 | [ | ||
9 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
10 | AC_REQUIRE([gl_PTHREADLIB]) | ||
11 | AC_CHECK_HEADERS_ONCE([threads.h]) | ||
12 | |||
13 | AC_CACHE_CHECK([whether setlocale (LC_ALL, NULL) is multithread-safe], | ||
14 | [gl_cv_func_setlocale_null_all_mtsafe], | ||
15 | [case "$host_os" in | ||
16 | # Guess no on musl libc, macOS, FreeBSD, NetBSD, OpenBSD, AIX, Haiku, Cygwin. | ||
17 | *-musl* | darwin* | freebsd* | midnightbsd* | netbsd* | openbsd* | aix* | haiku* | cygwin*) | ||
18 | gl_cv_func_setlocale_null_all_mtsafe=no ;; | ||
19 | # Guess yes on glibc, HP-UX, IRIX, Solaris, native Windows. | ||
20 | *-gnu* | gnu* | hpux* | irix* | solaris* | mingw*) | ||
21 | gl_cv_func_setlocale_null_all_mtsafe=yes ;; | ||
22 | # If we don't know, obey --enable-cross-guesses. | ||
23 | *) | ||
24 | gl_cv_func_setlocale_null_all_mtsafe="$gl_cross_guess_normal" ;; | ||
25 | esac | ||
26 | ]) | ||
27 | dnl On platforms without multithreading, there is no issue. | ||
28 | case "$host_os" in | ||
29 | mingw*) ;; | ||
30 | *) | ||
31 | if test $gl_pthread_api = no && test $ac_cv_header_threads_h = no; then | ||
32 | gl_cv_func_setlocale_null_all_mtsafe="trivially yes" | ||
33 | fi | ||
34 | ;; | ||
35 | esac | ||
36 | case "$gl_cv_func_setlocale_null_all_mtsafe" in | ||
37 | *yes) SETLOCALE_NULL_ALL_MTSAFE=1 ;; | ||
38 | *) SETLOCALE_NULL_ALL_MTSAFE=0 ;; | ||
39 | esac | ||
40 | AC_DEFINE_UNQUOTED([SETLOCALE_NULL_ALL_MTSAFE], [$SETLOCALE_NULL_ALL_MTSAFE], | ||
41 | [Define to 1 if setlocale (LC_ALL, NULL) is multithread-safe.]) | ||
42 | |||
43 | dnl This is about a single category (not LC_ALL). | ||
44 | AC_CACHE_CHECK([whether setlocale (category, NULL) is multithread-safe], | ||
45 | [gl_cv_func_setlocale_null_one_mtsafe], | ||
46 | [case "$host_os" in | ||
47 | # Guess no on OpenBSD, AIX. | ||
48 | openbsd* | aix*) | ||
49 | gl_cv_func_setlocale_null_one_mtsafe=no ;; | ||
50 | # Guess yes on glibc, musl libc, macOS, FreeBSD, NetBSD, HP-UX, IRIX, Solaris, Haiku, Cygwin, native Windows. | ||
51 | *-gnu* | gnu* | *-musl* | darwin* | freebsd* | midnightbsd* | netbsd* | hpux* | irix* | solaris* | haiku* | cygwin* | mingw*) | ||
52 | gl_cv_func_setlocale_null_one_mtsafe=yes ;; | ||
53 | # If we don't know, obey --enable-cross-guesses. | ||
54 | *) | ||
55 | gl_cv_func_setlocale_null_one_mtsafe="$gl_cross_guess_normal" ;; | ||
56 | esac | ||
57 | ]) | ||
58 | dnl On platforms without multithreading, there is no issue. | ||
59 | case "$host_os" in | ||
60 | mingw*) ;; | ||
61 | *) | ||
62 | if test $gl_pthread_api = no && test $ac_cv_header_threads_h = no; then | ||
63 | gl_cv_func_setlocale_null_one_mtsafe="trivially yes" | ||
64 | fi | ||
65 | ;; | ||
66 | esac | ||
67 | case "$gl_cv_func_setlocale_null_one_mtsafe" in | ||
68 | *yes) SETLOCALE_NULL_ONE_MTSAFE=1 ;; | ||
69 | *) SETLOCALE_NULL_ONE_MTSAFE=0 ;; | ||
70 | esac | ||
71 | AC_DEFINE_UNQUOTED([SETLOCALE_NULL_ONE_MTSAFE], [$SETLOCALE_NULL_ONE_MTSAFE], | ||
72 | [Define to 1 if setlocale (category, NULL) is multithread-safe.]) | ||
73 | |||
74 | dnl Determine link dependencies of lib/setlocale_null.c and lib/setlocale-lock.c. | ||
75 | if test $SETLOCALE_NULL_ALL_MTSAFE = 0 || test $SETLOCALE_NULL_ONE_MTSAFE = 0; then | ||
76 | case "$host_os" in | ||
77 | mingw*) LIB_SETLOCALE_NULL= ;; | ||
78 | *) | ||
79 | gl_WEAK_SYMBOLS | ||
80 | case "$gl_cv_have_weak" in | ||
81 | *yes) LIB_SETLOCALE_NULL= ;; | ||
82 | *) LIB_SETLOCALE_NULL="$LIBPTHREAD" ;; | ||
83 | esac | ||
84 | ;; | ||
85 | esac | ||
86 | else | ||
87 | LIB_SETLOCALE_NULL= | ||
88 | fi | ||
89 | dnl LIB_SETLOCALE_NULL is expected to be '-pthread' or '-lpthread' on AIX | ||
90 | dnl with gcc or xlc, and empty otherwise. | ||
91 | AC_SUBST([LIB_SETLOCALE_NULL]) | ||
92 | ]) | ||
93 | |||
94 | # Prerequisites of lib/setlocale-lock.c. | ||
95 | AC_DEFUN([gl_PREREQ_SETLOCALE_LOCK], | ||
96 | [ | ||
97 | gl_VISIBILITY | ||
98 | ]) | ||
diff --git a/gl/m4/sha256.m4 b/gl/m4/sha256.m4 new file mode 100644 index 00000000..4d1d1dda --- /dev/null +++ b/gl/m4/sha256.m4 | |||
@@ -0,0 +1,14 @@ | |||
1 | # sha256.m4 serial 8 | ||
2 | dnl Copyright (C) 2005, 2008-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_SHA256], | ||
8 | [ | ||
9 | dnl Prerequisites of lib/sha256.c. | ||
10 | AC_REQUIRE([gl_BIGENDIAN]) | ||
11 | |||
12 | dnl Determine HAVE_OPENSSL_SHA256 and LIB_CRYPTO | ||
13 | gl_CRYPTO_CHECK([SHA256]) | ||
14 | ]) | ||
diff --git a/gl/m4/size_max.m4 b/gl/m4/size_max.m4 index 4b247abc..0763366d 100644 --- a/gl/m4/size_max.m4 +++ b/gl/m4/size_max.m4 | |||
@@ -1,17 +1,19 @@ | |||
1 | # size_max.m4 serial 10 | 1 | # size_max.m4 serial 12 |
2 | dnl Copyright (C) 2003, 2005-2006, 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2003, 2005-2006, 2008-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | dnl From Bruno Haible. | 7 | dnl From Bruno Haible. |
8 | 8 | ||
9 | AC_PREREQ([2.61]) | ||
10 | |||
9 | AC_DEFUN([gl_SIZE_MAX], | 11 | AC_DEFUN([gl_SIZE_MAX], |
10 | [ | 12 | [ |
11 | AC_CHECK_HEADERS([stdint.h]) | 13 | AC_CHECK_HEADERS([stdint.h]) |
12 | dnl First test whether the system already has SIZE_MAX. | 14 | dnl First test whether the system already has SIZE_MAX. |
13 | AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [ | 15 | AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [ |
14 | gl_cv_size_max= | 16 | gl_cv_size_max=no |
15 | AC_EGREP_CPP([Found it], [ | 17 | AC_EGREP_CPP([Found it], [ |
16 | #include <limits.h> | 18 | #include <limits.h> |
17 | #if HAVE_STDINT_H | 19 | #if HAVE_STDINT_H |
@@ -21,7 +23,7 @@ AC_DEFUN([gl_SIZE_MAX], | |||
21 | Found it | 23 | Found it |
22 | #endif | 24 | #endif |
23 | ], [gl_cv_size_max=yes]) | 25 | ], [gl_cv_size_max=yes]) |
24 | if test -z "$gl_cv_size_max"; then | 26 | if test $gl_cv_size_max != yes; then |
25 | dnl Define it ourselves. Here we assume that the type 'size_t' is not wider | 27 | dnl Define it ourselves. Here we assume that the type 'size_t' is not wider |
26 | dnl than the type 'unsigned long'. Try hard to find a definition that can | 28 | dnl than the type 'unsigned long'. Try hard to find a definition that can |
27 | dnl be used in a preprocessor #if, i.e. doesn't contain a cast. | 29 | dnl be used in a preprocessor #if, i.e. doesn't contain a cast. |
@@ -71,9 +73,3 @@ Found it | |||
71 | # undef SIZE_MAX | 73 | # undef SIZE_MAX |
72 | #endif]) | 74 | #endif]) |
73 | ]) | 75 | ]) |
74 | |||
75 | dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. | ||
76 | dnl Remove this when we can assume autoconf >= 2.61. | ||
77 | m4_ifdef([AC_COMPUTE_INT], [], [ | ||
78 | AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) | ||
79 | ]) | ||
diff --git a/gl/m4/snprintf.m4 b/gl/m4/snprintf.m4 index 3698e844..4b5fbdbf 100644 --- a/gl/m4/snprintf.m4 +++ b/gl/m4/snprintf.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # snprintf.m4 serial 6 | 1 | # snprintf.m4 serial 7 |
2 | dnl Copyright (C) 2002-2004, 2007-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2002-2004, 2007-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -46,6 +46,14 @@ AC_DEFUN([gl_REPLACE_SNPRINTF], | |||
46 | AC_LIBOBJ([snprintf]) | 46 | AC_LIBOBJ([snprintf]) |
47 | if test $ac_cv_func_snprintf = yes; then | 47 | if test $ac_cv_func_snprintf = yes; then |
48 | REPLACE_SNPRINTF=1 | 48 | REPLACE_SNPRINTF=1 |
49 | else | ||
50 | AC_CHECK_DECLS_ONCE([snprintf]) | ||
51 | if test $ac_cv_have_decl_snprintf = yes; then | ||
52 | dnl If the function is declared but does not appear to exist, it may be | ||
53 | dnl defined as an inline function. In order to avoid a conflict, we have | ||
54 | dnl to define rpl_snprintf, not snprintf. | ||
55 | REPLACE_SNPRINTF=1 | ||
56 | fi | ||
49 | fi | 57 | fi |
50 | gl_PREREQ_SNPRINTF | 58 | gl_PREREQ_SNPRINTF |
51 | ]) | 59 | ]) |
diff --git a/gl/m4/socketlib.m4 b/gl/m4/socketlib.m4 index b08a72f6..a556af1e 100644 --- a/gl/m4/socketlib.m4 +++ b/gl/m4/socketlib.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # socketlib.m4 serial 1 | 1 | # socketlib.m4 serial 3 |
2 | dnl Copyright (C) 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2008-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -14,21 +14,27 @@ AC_DEFUN([gl_SOCKETLIB], | |||
14 | LIBSOCKET= | 14 | LIBSOCKET= |
15 | if test $HAVE_WINSOCK2_H = 1; then | 15 | if test $HAVE_WINSOCK2_H = 1; then |
16 | dnl Native Windows API (not Cygwin). | 16 | dnl Native Windows API (not Cygwin). |
17 | AC_CACHE_CHECK([if we need to call WSAStartup in winsock2.h and -lws2_32], | 17 | dnl If the function WSAStartup exists (declared in <winsock2.h> and |
18 | [gl_cv_func_wsastartup], [ | 18 | dnl defined through -lws2_32), we need to call it. |
19 | gl_save_LIBS="$LIBS" | 19 | AC_CACHE_CHECK([for WSAStartup], |
20 | LIBS="$LIBS -lws2_32" | 20 | [gl_cv_func_wsastartup], [ |
21 | AC_LINK_IFELSE([AC_LANG_PROGRAM([[ | 21 | gl_save_LIBS="$LIBS" |
22 | LIBS="$LIBS -lws2_32" | ||
23 | AC_LINK_IFELSE( | ||
24 | [AC_LANG_PROGRAM([[ | ||
22 | #ifdef HAVE_WINSOCK2_H | 25 | #ifdef HAVE_WINSOCK2_H |
23 | # include <winsock2.h> | 26 | # include <winsock2.h> |
24 | #endif]], [[ | 27 | #endif]], [[ |
25 | WORD wVersionRequested = MAKEWORD(1, 1); | 28 | WORD wVersionRequested = MAKEWORD(1, 1); |
26 | WSADATA wsaData; | 29 | WSADATA wsaData; |
27 | int err = WSAStartup(wVersionRequested, &wsaData); | 30 | int err = WSAStartup(wVersionRequested, &wsaData); |
28 | WSACleanup ();]])], | 31 | WSACleanup (); |
29 | gl_cv_func_wsastartup=yes, gl_cv_func_wsastartup=no) | 32 | ]]) |
30 | LIBS="$gl_save_LIBS" | 33 | ], |
31 | ]) | 34 | [gl_cv_func_wsastartup=yes], |
35 | [gl_cv_func_wsastartup=no]) | ||
36 | LIBS="$gl_save_LIBS" | ||
37 | ]) | ||
32 | if test "$gl_cv_func_wsastartup" = "yes"; then | 38 | if test "$gl_cv_func_wsastartup" = "yes"; then |
33 | AC_DEFINE([WINDOWS_SOCKETS], [1], [Define if WSAStartup is needed.]) | 39 | AC_DEFINE([WINDOWS_SOCKETS], [1], [Define if WSAStartup is needed.]) |
34 | LIBSOCKET='-lws2_32' | 40 | LIBSOCKET='-lws2_32' |
@@ -38,6 +44,10 @@ AC_DEFUN([gl_SOCKETLIB], | |||
38 | dnl Solaris has most socket functions in libsocket. | 44 | dnl Solaris has most socket functions in libsocket. |
39 | dnl Haiku has most socket functions in libnetwork. | 45 | dnl Haiku has most socket functions in libnetwork. |
40 | dnl BeOS has most socket functions in libnet. | 46 | dnl BeOS has most socket functions in libnet. |
47 | dnl On HP-UX, do NOT link with libxnet, because in 64-bit mode this would | ||
48 | dnl break code (e.g. in libraries) that invokes accept(), getpeername(), | ||
49 | dnl getsockname(), getsockopt(), or recvfrom() with a 32-bit addrlen. See | ||
50 | dnl "man xopen_networking" for details. | ||
41 | AC_CACHE_CHECK([for library containing setsockopt], [gl_cv_lib_socket], [ | 51 | AC_CACHE_CHECK([for library containing setsockopt], [gl_cv_lib_socket], [ |
42 | gl_cv_lib_socket= | 52 | gl_cv_lib_socket= |
43 | AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern | 53 | AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern |
diff --git a/gl/m4/sockets.m4 b/gl/m4/sockets.m4 index b407391c..ed9cb873 100644 --- a/gl/m4/sockets.m4 +++ b/gl/m4/sockets.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # sockets.m4 serial 7 | 1 | # sockets.m4 serial 7 |
2 | dnl Copyright (C) 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2008-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
diff --git a/gl/m4/socklen.m4 b/gl/m4/socklen.m4 index e3efd6ef..1c63a853 100644 --- a/gl/m4/socklen.m4 +++ b/gl/m4/socklen.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # socklen.m4 serial 10 | 1 | # socklen.m4 serial 11 |
2 | dnl Copyright (C) 2005-2007, 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2005-2007, 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -15,8 +15,8 @@ dnl So we have to test to find something that will work. | |||
15 | AC_DEFUN([gl_TYPE_SOCKLEN_T], | 15 | AC_DEFUN([gl_TYPE_SOCKLEN_T], |
16 | [AC_REQUIRE([gl_CHECK_SOCKET_HEADERS])dnl | 16 | [AC_REQUIRE([gl_CHECK_SOCKET_HEADERS])dnl |
17 | AC_CHECK_TYPE([socklen_t], , | 17 | AC_CHECK_TYPE([socklen_t], , |
18 | [AC_MSG_CHECKING([for socklen_t equivalent]) | 18 | [AC_CACHE_CHECK([for socklen_t equivalent], |
19 | AC_CACHE_VAL([gl_cv_socklen_t_equiv], | 19 | [gl_cv_socklen_t_equiv], |
20 | [# Systems have either "struct sockaddr *" or | 20 | [# Systems have either "struct sockaddr *" or |
21 | # "void *" as the second argument to getpeername | 21 | # "void *" as the second argument to getpeername |
22 | gl_cv_socklen_t_equiv= | 22 | gl_cv_socklen_t_equiv= |
@@ -34,11 +34,10 @@ AC_DEFUN([gl_TYPE_SOCKLEN_T], | |||
34 | done | 34 | done |
35 | test "$gl_cv_socklen_t_equiv" != "" && break | 35 | test "$gl_cv_socklen_t_equiv" != "" && break |
36 | done | 36 | done |
37 | ]) | 37 | if test "$gl_cv_socklen_t_equiv" = ""; then |
38 | if test "$gl_cv_socklen_t_equiv" = ""; then | 38 | AC_MSG_ERROR([Cannot find a type to use in place of socklen_t]) |
39 | AC_MSG_ERROR([Cannot find a type to use in place of socklen_t]) | 39 | fi |
40 | fi | 40 | ]) |
41 | AC_MSG_RESULT([$gl_cv_socklen_t_equiv]) | ||
42 | AC_DEFINE_UNQUOTED([socklen_t], [$gl_cv_socklen_t_equiv], | 41 | AC_DEFINE_UNQUOTED([socklen_t], [$gl_cv_socklen_t_equiv], |
43 | [type to use in place of socklen_t if not defined])], | 42 | [type to use in place of socklen_t if not defined])], |
44 | [gl_SOCKET_HEADERS])]) | 43 | [gl_SOCKET_HEADERS])]) |
diff --git a/gl/m4/sockpfaf.m4 b/gl/m4/sockpfaf.m4 index 89557b18..6c6dc2f7 100644 --- a/gl/m4/sockpfaf.m4 +++ b/gl/m4/sockpfaf.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # sockpfaf.m4 serial 8 | 1 | # sockpfaf.m4 serial 10 |
2 | dnl Copyright (C) 2004, 2006, 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2004, 2006, 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -13,11 +13,11 @@ dnl From Bruno Haible. | |||
13 | 13 | ||
14 | AC_DEFUN([gl_SOCKET_FAMILIES], | 14 | AC_DEFUN([gl_SOCKET_FAMILIES], |
15 | [ | 15 | [ |
16 | AC_REQUIRE([gl_HEADER_SYS_SOCKET]) | 16 | AC_REQUIRE([gl_SYS_SOCKET_H]) |
17 | AC_CHECK_HEADERS_ONCE([netinet/in.h]) | 17 | AC_CHECK_HEADERS_ONCE([netinet/in.h]) |
18 | 18 | ||
19 | AC_MSG_CHECKING([for IPv4 sockets]) | 19 | AC_CACHE_CHECK([for IPv4 sockets], |
20 | AC_CACHE_VAL([gl_cv_socket_ipv4], | 20 | [gl_cv_socket_ipv4], |
21 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> | 21 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> |
22 | #ifdef HAVE_SYS_SOCKET_H | 22 | #ifdef HAVE_SYS_SOCKET_H |
23 | #include <sys/socket.h> | 23 | #include <sys/socket.h> |
@@ -31,13 +31,12 @@ AC_DEFUN([gl_SOCKET_FAMILIES], | |||
31 | [[int x = AF_INET; struct in_addr y; struct sockaddr_in z; | 31 | [[int x = AF_INET; struct in_addr y; struct sockaddr_in z; |
32 | if (&x && &y && &z) return 0;]])], | 32 | if (&x && &y && &z) return 0;]])], |
33 | gl_cv_socket_ipv4=yes, gl_cv_socket_ipv4=no)]) | 33 | gl_cv_socket_ipv4=yes, gl_cv_socket_ipv4=no)]) |
34 | AC_MSG_RESULT([$gl_cv_socket_ipv4]) | ||
35 | if test $gl_cv_socket_ipv4 = yes; then | 34 | if test $gl_cv_socket_ipv4 = yes; then |
36 | AC_DEFINE([HAVE_IPV4], [1], [Define to 1 if <sys/socket.h> defines AF_INET.]) | 35 | AC_DEFINE([HAVE_IPV4], [1], [Define to 1 if <sys/socket.h> defines AF_INET.]) |
37 | fi | 36 | fi |
38 | 37 | ||
39 | AC_MSG_CHECKING([for IPv6 sockets]) | 38 | AC_CACHE_CHECK([for IPv6 sockets], |
40 | AC_CACHE_VAL([gl_cv_socket_ipv6], | 39 | [gl_cv_socket_ipv6], |
41 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> | 40 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> |
42 | #ifdef HAVE_SYS_SOCKET_H | 41 | #ifdef HAVE_SYS_SOCKET_H |
43 | #include <sys/socket.h> | 42 | #include <sys/socket.h> |
@@ -54,7 +53,6 @@ AC_DEFUN([gl_SOCKET_FAMILIES], | |||
54 | [[int x = AF_INET6; struct in6_addr y; struct sockaddr_in6 z; | 53 | [[int x = AF_INET6; struct in6_addr y; struct sockaddr_in6 z; |
55 | if (&x && &y && &z) return 0;]])], | 54 | if (&x && &y && &z) return 0;]])], |
56 | gl_cv_socket_ipv6=yes, gl_cv_socket_ipv6=no)]) | 55 | gl_cv_socket_ipv6=yes, gl_cv_socket_ipv6=no)]) |
57 | AC_MSG_RESULT([$gl_cv_socket_ipv6]) | ||
58 | if test $gl_cv_socket_ipv6 = yes; then | 56 | if test $gl_cv_socket_ipv6 = yes; then |
59 | AC_DEFINE([HAVE_IPV6], [1], [Define to 1 if <sys/socket.h> defines AF_INET6.]) | 57 | AC_DEFINE([HAVE_IPV6], [1], [Define to 1 if <sys/socket.h> defines AF_INET6.]) |
60 | fi | 58 | fi |
@@ -62,11 +60,11 @@ AC_DEFUN([gl_SOCKET_FAMILIES], | |||
62 | 60 | ||
63 | AC_DEFUN([gl_SOCKET_FAMILY_UNIX], | 61 | AC_DEFUN([gl_SOCKET_FAMILY_UNIX], |
64 | [ | 62 | [ |
65 | AC_REQUIRE([gl_HEADER_SYS_SOCKET]) | 63 | AC_REQUIRE([gl_SYS_SOCKET_H]) |
66 | AC_CHECK_HEADERS_ONCE([sys/un.h]) | 64 | AC_CHECK_HEADERS_ONCE([sys/un.h]) |
67 | 65 | ||
68 | AC_MSG_CHECKING([for UNIX domain sockets]) | 66 | AC_CACHE_CHECK([for UNIX domain sockets], |
69 | AC_CACHE_VAL([gl_cv_socket_unix], | 67 | [gl_cv_socket_unix], |
70 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> | 68 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h> |
71 | #ifdef HAVE_SYS_SOCKET_H | 69 | #ifdef HAVE_SYS_SOCKET_H |
72 | #include <sys/socket.h> | 70 | #include <sys/socket.h> |
@@ -80,7 +78,6 @@ AC_DEFUN([gl_SOCKET_FAMILY_UNIX], | |||
80 | [[int x = AF_UNIX; struct sockaddr_un y; | 78 | [[int x = AF_UNIX; struct sockaddr_un y; |
81 | if (&x && &y) return 0;]])], | 79 | if (&x && &y) return 0;]])], |
82 | gl_cv_socket_unix=yes, gl_cv_socket_unix=no)]) | 80 | gl_cv_socket_unix=yes, gl_cv_socket_unix=no)]) |
83 | AC_MSG_RESULT([$gl_cv_socket_unix]) | ||
84 | if test $gl_cv_socket_unix = yes; then | 81 | if test $gl_cv_socket_unix = yes; then |
85 | AC_DEFINE([HAVE_UNIXSOCKET], [1], [Define to 1 if <sys/socket.h> defines AF_UNIX.]) | 82 | AC_DEFINE([HAVE_UNIXSOCKET], [1], [Define to 1 if <sys/socket.h> defines AF_UNIX.]) |
86 | fi | 83 | fi |
diff --git a/gl/m4/ssize_t.m4 b/gl/m4/ssize_t.m4 index 63381343..1c12c33e 100644 --- a/gl/m4/ssize_t.m4 +++ b/gl/m4/ssize_t.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # ssize_t.m4 serial 5 (gettext-0.18.2) | 1 | # ssize_t.m4 serial 5 (gettext-0.18.2) |
2 | dnl Copyright (C) 2001-2003, 2006, 2010-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2001-2003, 2006, 2010-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
diff --git a/gl/m4/stat-time.m4 b/gl/m4/stat-time.m4 new file mode 100644 index 00000000..40993d57 --- /dev/null +++ b/gl/m4/stat-time.m4 | |||
@@ -0,0 +1,83 @@ | |||
1 | # Checks for stat-related time functions. | ||
2 | |||
3 | # Copyright (C) 1998-1999, 2001, 2003, 2005-2007, 2009-2023 Free Software | ||
4 | # Foundation, Inc. | ||
5 | |||
6 | # This file is free software; the Free Software Foundation | ||
7 | # gives unlimited permission to copy and/or distribute it, | ||
8 | # with or without modifications, as long as this notice is preserved. | ||
9 | |||
10 | dnl From Paul Eggert. | ||
11 | |||
12 | # st_atim.tv_nsec - Linux, Solaris, Cygwin | ||
13 | # st_atimespec.tv_nsec - FreeBSD, NetBSD, if ! defined _POSIX_SOURCE | ||
14 | # st_atimensec - FreeBSD, NetBSD, if defined _POSIX_SOURCE | ||
15 | # st_atim.st__tim.tv_nsec - UnixWare (at least 2.1.2 through 7.1) | ||
16 | |||
17 | # st_birthtimespec - FreeBSD, NetBSD (hidden on OpenBSD 3.9, anyway) | ||
18 | # st_birthtim - Cygwin 1.7.0+ | ||
19 | |||
20 | AC_DEFUN([gl_STAT_TIME], | ||
21 | [ | ||
22 | AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) | ||
23 | AC_CHECK_HEADERS_ONCE([sys/time.h]) | ||
24 | |||
25 | AC_CHECK_MEMBERS([struct stat.st_atim.tv_nsec], | ||
26 | [AC_CACHE_CHECK([whether struct stat.st_atim is of type struct timespec], | ||
27 | [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec], | ||
28 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM( | ||
29 | [[ | ||
30 | #include <sys/types.h> | ||
31 | #include <sys/stat.h> | ||
32 | #if HAVE_SYS_TIME_H | ||
33 | # include <sys/time.h> | ||
34 | #endif | ||
35 | #include <time.h> | ||
36 | struct timespec ts; | ||
37 | struct stat st; | ||
38 | ]], | ||
39 | [[ | ||
40 | st.st_atim = ts; | ||
41 | ]])], | ||
42 | [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=yes], | ||
43 | [ac_cv_typeof_struct_stat_st_atim_is_struct_timespec=no])]) | ||
44 | if test $ac_cv_typeof_struct_stat_st_atim_is_struct_timespec = yes; then | ||
45 | AC_DEFINE([TYPEOF_STRUCT_STAT_ST_ATIM_IS_STRUCT_TIMESPEC], [1], | ||
46 | [Define to 1 if the type of the st_atim member of a struct stat is | ||
47 | struct timespec.]) | ||
48 | fi], | ||
49 | [AC_CHECK_MEMBERS([struct stat.st_atimespec.tv_nsec], [], | ||
50 | [AC_CHECK_MEMBERS([struct stat.st_atimensec], [], | ||
51 | [AC_CHECK_MEMBERS([struct stat.st_atim.st__tim.tv_nsec], [], [], | ||
52 | [#include <sys/types.h> | ||
53 | #include <sys/stat.h>])], | ||
54 | [#include <sys/types.h> | ||
55 | #include <sys/stat.h>])], | ||
56 | [#include <sys/types.h> | ||
57 | #include <sys/stat.h>])], | ||
58 | [#include <sys/types.h> | ||
59 | #include <sys/stat.h>]) | ||
60 | ]) | ||
61 | |||
62 | # Check for st_birthtime, a feature from UFS2 (FreeBSD, NetBSD, OpenBSD, etc.) | ||
63 | # and NTFS (Cygwin). | ||
64 | # There was a time when this field was named st_createtime (21 June | ||
65 | # 2002 to 16 July 2002) But that window is very small and applied only | ||
66 | # to development code, so systems still using that configuration are | ||
67 | # not supported. See revisions 1.10 and 1.11 of FreeBSD's | ||
68 | # src/sys/ufs/ufs/dinode.h. | ||
69 | # | ||
70 | AC_DEFUN([gl_STAT_BIRTHTIME], | ||
71 | [ | ||
72 | AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) | ||
73 | AC_CHECK_HEADERS_ONCE([sys/time.h]) | ||
74 | AC_CHECK_MEMBERS([struct stat.st_birthtimespec.tv_nsec], [], | ||
75 | [AC_CHECK_MEMBERS([struct stat.st_birthtimensec], [], | ||
76 | [AC_CHECK_MEMBERS([struct stat.st_birthtim.tv_nsec], [], [], | ||
77 | [#include <sys/types.h> | ||
78 | #include <sys/stat.h>])], | ||
79 | [#include <sys/types.h> | ||
80 | #include <sys/stat.h>])], | ||
81 | [#include <sys/types.h> | ||
82 | #include <sys/stat.h>]) | ||
83 | ]) | ||
diff --git a/gl/m4/stat.m4 b/gl/m4/stat.m4 new file mode 100644 index 00000000..4d241e27 --- /dev/null +++ b/gl/m4/stat.m4 | |||
@@ -0,0 +1,85 @@ | |||
1 | # serial 18 | ||
2 | |||
3 | # Copyright (C) 2009-2023 Free Software Foundation, Inc. | ||
4 | # | ||
5 | # This file is free software; the Free Software Foundation | ||
6 | # gives unlimited permission to copy and/or distribute it, | ||
7 | # with or without modifications, as long as this notice is preserved. | ||
8 | |||
9 | AC_DEFUN([gl_FUNC_STAT], | ||
10 | [ | ||
11 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
12 | AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) | ||
13 | AC_CHECK_FUNCS_ONCE([lstat]) | ||
14 | case "$host_os" in | ||
15 | mingw*) | ||
16 | dnl On this platform, the original stat() returns st_atime, st_mtime, | ||
17 | dnl st_ctime values that are affected by the time zone. | ||
18 | REPLACE_STAT=1 | ||
19 | ;; | ||
20 | *) | ||
21 | dnl AIX 7.1, Solaris 9, mingw64 mistakenly succeed on stat("file/"). | ||
22 | dnl (For mingw, this is due to a broken stat() override in libmingwex.a.) | ||
23 | dnl FreeBSD 7.2 mistakenly succeeds on stat("link-to-file/"). | ||
24 | AC_CACHE_CHECK([whether stat handles trailing slashes on files], | ||
25 | [gl_cv_func_stat_file_slash], | ||
26 | [touch conftest.tmp | ||
27 | # Assume that if we have lstat, we can also check symlinks. | ||
28 | if test $ac_cv_func_lstat = yes; then | ||
29 | ln -s conftest.tmp conftest.lnk | ||
30 | fi | ||
31 | AC_RUN_IFELSE( | ||
32 | [AC_LANG_PROGRAM( | ||
33 | [[#include <sys/stat.h> | ||
34 | ]], [[int result = 0; | ||
35 | struct stat st; | ||
36 | if (!stat ("conftest.tmp/", &st)) | ||
37 | result |= 1; | ||
38 | #if HAVE_LSTAT | ||
39 | if (!stat ("conftest.lnk/", &st)) | ||
40 | result |= 2; | ||
41 | #endif | ||
42 | return result; | ||
43 | ]])], | ||
44 | [gl_cv_func_stat_file_slash=yes], [gl_cv_func_stat_file_slash=no], | ||
45 | [case "$host_os" in | ||
46 | # Guess yes on Linux systems. | ||
47 | linux-* | linux) gl_cv_func_stat_file_slash="guessing yes" ;; | ||
48 | # Guess yes on glibc systems. | ||
49 | *-gnu* | gnu*) gl_cv_func_stat_file_slash="guessing yes" ;; | ||
50 | # If we don't know, obey --enable-cross-guesses. | ||
51 | *) gl_cv_func_stat_file_slash="$gl_cross_guess_normal" ;; | ||
52 | esac | ||
53 | ]) | ||
54 | rm -f conftest.tmp conftest.lnk]) | ||
55 | case $gl_cv_func_stat_file_slash in | ||
56 | *no) | ||
57 | REPLACE_STAT=1 | ||
58 | AC_DEFINE([REPLACE_FUNC_STAT_FILE], [1], [Define to 1 if stat needs | ||
59 | help when passed a file name with a trailing slash]);; | ||
60 | esac | ||
61 | case $host_os in | ||
62 | dnl Solaris stat can return a negative tv_nsec. | ||
63 | solaris*) | ||
64 | REPLACE_FSTAT=1 ;; | ||
65 | esac | ||
66 | ;; | ||
67 | esac | ||
68 | ]) | ||
69 | |||
70 | # Prerequisites of lib/stat.c and lib/stat-w32.c. | ||
71 | AC_DEFUN([gl_PREREQ_STAT], [ | ||
72 | AC_REQUIRE([gl_SYS_STAT_H]) | ||
73 | AC_REQUIRE([gl_PREREQ_STAT_W32]) | ||
74 | : | ||
75 | ]) | ||
76 | |||
77 | # Prerequisites of lib/stat-w32.c. | ||
78 | AC_DEFUN([gl_PREREQ_STAT_W32], [ | ||
79 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
80 | case "$host_os" in | ||
81 | mingw*) | ||
82 | AC_CHECK_HEADERS([sdkddkver.h]) | ||
83 | ;; | ||
84 | esac | ||
85 | ]) | ||
diff --git a/gl/m4/std-gnu11.m4 b/gl/m4/std-gnu11.m4 new file mode 100644 index 00000000..4179470e --- /dev/null +++ b/gl/m4/std-gnu11.m4 | |||
@@ -0,0 +1,829 @@ | |||
1 | # Prefer GNU C11 and C++11 to earlier versions. -*- coding: utf-8 -*- | ||
2 | |||
3 | # This implementation is taken from GNU Autoconf lib/autoconf/c.m4 | ||
4 | # commit 017d5ddd82854911f0119691d91ea8a1438824d6 | ||
5 | # dated Sun Apr 3 13:57:17 2016 -0700 | ||
6 | # This implementation will be obsolete once we can assume Autoconf 2.70 | ||
7 | # or later is installed everywhere a Gnulib program might be developed. | ||
8 | |||
9 | m4_version_prereq([2.70], [], [ | ||
10 | |||
11 | |||
12 | # Copyright (C) 2001-2023 Free Software Foundation, Inc. | ||
13 | |||
14 | # This program is free software; you can redistribute it and/or modify | ||
15 | # it under the terms of the GNU General Public License as published by | ||
16 | # the Free Software Foundation, either version 3 of the License, or | ||
17 | # (at your option) any later version. | ||
18 | # | ||
19 | # This program is distributed in the hope that it will be useful, | ||
20 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
21 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
22 | # GNU General Public License for more details. | ||
23 | # | ||
24 | # You should have received a copy of the GNU General Public License | ||
25 | # along with this program. If not, see <https://www.gnu.org/licenses/>. | ||
26 | |||
27 | # Written by David MacKenzie, with help from | ||
28 | # Akim Demaille, Paul Eggert, | ||
29 | # François Pinard, Karl Berry, Richard Pixley, Ian Lance Taylor, | ||
30 | # Roland McGrath, Noah Friedman, david d zuhn, and many others. | ||
31 | |||
32 | |||
33 | # AC_PROG_CC([COMPILER ...]) | ||
34 | # -------------------------- | ||
35 | # COMPILER ... is a space separated list of C compilers to search for. | ||
36 | # This just gives the user an opportunity to specify an alternative | ||
37 | # search list for the C compiler. | ||
38 | AC_DEFUN_ONCE([AC_PROG_CC], | ||
39 | [AC_LANG_PUSH(C)dnl | ||
40 | AC_ARG_VAR([CC], [C compiler command])dnl | ||
41 | AC_ARG_VAR([CFLAGS], [C compiler flags])dnl | ||
42 | _AC_ARG_VAR_LDFLAGS()dnl | ||
43 | _AC_ARG_VAR_LIBS()dnl | ||
44 | _AC_ARG_VAR_CPPFLAGS()dnl | ||
45 | m4_ifval([$1], | ||
46 | [AC_CHECK_TOOLS(CC, [$1])], | ||
47 | [AC_CHECK_TOOL(CC, gcc) | ||
48 | if test -z "$CC"; then | ||
49 | dnl Here we want: | ||
50 | dnl AC_CHECK_TOOL(CC, cc) | ||
51 | dnl but without the check for a tool without the prefix. | ||
52 | dnl Until the check is removed from there, copy the code: | ||
53 | if test -n "$ac_tool_prefix"; then | ||
54 | AC_CHECK_PROG(CC, [${ac_tool_prefix}cc], [${ac_tool_prefix}cc]) | ||
55 | fi | ||
56 | fi | ||
57 | if test -z "$CC"; then | ||
58 | AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc) | ||
59 | fi | ||
60 | if test -z "$CC"; then | ||
61 | AC_CHECK_TOOLS(CC, cl.exe) | ||
62 | fi | ||
63 | if test -z "$CC"; then | ||
64 | AC_CHECK_TOOL(CC, clang) | ||
65 | fi | ||
66 | ]) | ||
67 | |||
68 | test -z "$CC" && AC_MSG_FAILURE([no acceptable C compiler found in \$PATH]) | ||
69 | |||
70 | # Provide some information about the compiler. | ||
71 | _AS_ECHO_LOG([checking for _AC_LANG compiler version]) | ||
72 | set X $ac_compile | ||
73 | ac_compiler=$[2] | ||
74 | for ac_option in --version -v -V -qversion -version; do | ||
75 | _AC_DO_LIMIT([$ac_compiler $ac_option >&AS_MESSAGE_LOG_FD]) | ||
76 | done | ||
77 | |||
78 | m4_expand_once([_AC_COMPILER_EXEEXT])[]dnl | ||
79 | m4_expand_once([_AC_COMPILER_OBJEXT])[]dnl | ||
80 | _AC_LANG_COMPILER_GNU | ||
81 | if test $ac_compiler_gnu = yes; then | ||
82 | GCC=yes | ||
83 | else | ||
84 | GCC= | ||
85 | fi | ||
86 | _AC_PROG_CC_G | ||
87 | dnl | ||
88 | dnl Set ac_prog_cc_stdc to the supported C version. | ||
89 | dnl Also set the documented variable ac_cv_prog_cc_stdc; | ||
90 | dnl its name was chosen when it was cached, but it is no longer cached. | ||
91 | _AC_PROG_CC_C11([ac_prog_cc_stdc=c11 | ||
92 | ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11], | ||
93 | [_AC_PROG_CC_C99([ac_prog_cc_stdc=c99 | ||
94 | ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99], | ||
95 | [_AC_PROG_CC_C89([ac_prog_cc_stdc=c89 | ||
96 | ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89], | ||
97 | [ac_prog_cc_stdc=no | ||
98 | ac_cv_prog_cc_stdc=no])])]) | ||
99 | dnl | ||
100 | AC_LANG_POP(C)dnl | ||
101 | ])# AC_PROG_CC | ||
102 | |||
103 | |||
104 | |||
105 | # AC_PROG_CXX([LIST-OF-COMPILERS]) | ||
106 | # -------------------------------- | ||
107 | # LIST-OF-COMPILERS is a space separated list of C++ compilers to search | ||
108 | # for (if not specified, a default list is used). This just gives the | ||
109 | # user an opportunity to specify an alternative search list for the C++ | ||
110 | # compiler. | ||
111 | # aCC HP-UX C++ compiler much better than `CC', so test before. | ||
112 | # FCC Fujitsu C++ compiler | ||
113 | # KCC KAI C++ compiler | ||
114 | # RCC Rational C++ | ||
115 | # xlC_r AIX C Set++ (with support for reentrant code) | ||
116 | # xlC AIX C Set++ | ||
117 | AC_DEFUN([AC_PROG_CXX], | ||
118 | [AC_LANG_PUSH(C++)dnl | ||
119 | AC_ARG_VAR([CXX], [C++ compiler command])dnl | ||
120 | AC_ARG_VAR([CXXFLAGS], [C++ compiler flags])dnl | ||
121 | _AC_ARG_VAR_LDFLAGS()dnl | ||
122 | _AC_ARG_VAR_LIBS()dnl | ||
123 | _AC_ARG_VAR_CPPFLAGS()dnl | ||
124 | _AC_ARG_VAR_PRECIOUS([CCC])dnl | ||
125 | if test -z "$CXX"; then | ||
126 | if test -n "$CCC"; then | ||
127 | CXX=$CCC | ||
128 | else | ||
129 | AC_CHECK_TOOLS(CXX, | ||
130 | [m4_default([$1], | ||
131 | [g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++])], | ||
132 | g++) | ||
133 | fi | ||
134 | fi | ||
135 | # Provide some information about the compiler. | ||
136 | _AS_ECHO_LOG([checking for _AC_LANG compiler version]) | ||
137 | set X $ac_compile | ||
138 | ac_compiler=$[2] | ||
139 | for ac_option in --version -v -V -qversion; do | ||
140 | _AC_DO_LIMIT([$ac_compiler $ac_option >&AS_MESSAGE_LOG_FD]) | ||
141 | done | ||
142 | |||
143 | m4_expand_once([_AC_COMPILER_EXEEXT])[]dnl | ||
144 | m4_expand_once([_AC_COMPILER_OBJEXT])[]dnl | ||
145 | _AC_LANG_COMPILER_GNU | ||
146 | if test $ac_compiler_gnu = yes; then | ||
147 | GXX=yes | ||
148 | else | ||
149 | GXX= | ||
150 | fi | ||
151 | _AC_PROG_CXX_G | ||
152 | _AC_PROG_CXX_CXX11([ac_prog_cxx_stdcxx=cxx11 | ||
153 | ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 | ||
154 | ac_cv_prog_cxx_cxx98=$ac_cv_prog_cxx_cxx11], | ||
155 | [_AC_PROG_CXX_CXX98([ac_prog_cxx_stdcxx=cxx98 | ||
156 | ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98], | ||
157 | [ac_prog_cxx_stdcxx=no | ||
158 | ac_cv_prog_cxx_stdcxx=no])]) | ||
159 | AC_LANG_POP(C++)dnl | ||
160 | ])# AC_PROG_CXX | ||
161 | |||
162 | |||
163 | # _AC_C_STD_TRY(STANDARD, TEST-PROLOGUE, TEST-BODY, OPTION-LIST, | ||
164 | # ACTION-IF-AVAILABLE, ACTION-IF-UNAVAILABLE) | ||
165 | # -------------------------------------------------------------- | ||
166 | # Check whether the C compiler accepts features of STANDARD (e.g `c89', `c99') | ||
167 | # by trying to compile a program of TEST-PROLOGUE and TEST-BODY. If this fails, | ||
168 | # try again with each compiler option in the space-separated OPTION-LIST; if one | ||
169 | # helps, append it to CC. If eventually successful, run ACTION-IF-AVAILABLE, | ||
170 | # else ACTION-IF-UNAVAILABLE. | ||
171 | AC_DEFUN([_AC_C_STD_TRY], | ||
172 | [AC_MSG_CHECKING([for $CC option to enable ]m4_translit($1, [c], [C])[ features]) | ||
173 | AC_CACHE_VAL(ac_cv_prog_cc_$1, | ||
174 | [ac_cv_prog_cc_$1=no | ||
175 | ac_save_CC=$CC | ||
176 | AC_LANG_CONFTEST([AC_LANG_PROGRAM([$2], [$3])]) | ||
177 | for ac_arg in '' $4 | ||
178 | do | ||
179 | CC="$ac_save_CC $ac_arg" | ||
180 | _AC_COMPILE_IFELSE([], [ac_cv_prog_cc_$1=$ac_arg]) | ||
181 | test "x$ac_cv_prog_cc_$1" != "xno" && break | ||
182 | done | ||
183 | rm -f conftest.$ac_ext | ||
184 | CC=$ac_save_CC | ||
185 | ])# AC_CACHE_VAL | ||
186 | ac_prog_cc_stdc_options= | ||
187 | case "x$ac_cv_prog_cc_$1" in | ||
188 | x) | ||
189 | AC_MSG_RESULT([none needed]) ;; | ||
190 | xno) | ||
191 | AC_MSG_RESULT([unsupported]) ;; | ||
192 | *) | ||
193 | ac_prog_cc_stdc_options=" $ac_cv_prog_cc_$1" | ||
194 | CC=$CC$ac_prog_cc_stdc_options | ||
195 | AC_MSG_RESULT([$ac_cv_prog_cc_$1]) ;; | ||
196 | esac | ||
197 | AS_IF([test "x$ac_cv_prog_cc_$1" != xno], [$5], [$6]) | ||
198 | ])# _AC_C_STD_TRY | ||
199 | |||
200 | # _AC_C_C99_TEST_HEADER | ||
201 | # --------------------- | ||
202 | # A C header suitable for testing for C99. | ||
203 | AC_DEFUN([_AC_C_C99_TEST_HEADER], | ||
204 | [[#include <stdarg.h> | ||
205 | #include <stdbool.h> | ||
206 | #include <stddef.h> | ||
207 | #include <stdlib.h> | ||
208 | #include <wchar.h> | ||
209 | #include <stdio.h> | ||
210 | |||
211 | // Check varargs macros. These examples are taken from C99 6.10.3.5. | ||
212 | #define debug(...) fprintf (stderr, __VA_ARGS__) | ||
213 | #define showlist(...) puts (#__VA_ARGS__) | ||
214 | #define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) | ||
215 | static void | ||
216 | test_varargs_macros (void) | ||
217 | { | ||
218 | int x = 1234; | ||
219 | int y = 5678; | ||
220 | debug ("Flag"); | ||
221 | debug ("X = %d\n", x); | ||
222 | showlist (The first, second, and third items.); | ||
223 | report (x>y, "x is %d but y is %d", x, y); | ||
224 | } | ||
225 | |||
226 | // Check long long types. | ||
227 | #define BIG64 18446744073709551615ull | ||
228 | #define BIG32 4294967295ul | ||
229 | #define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) | ||
230 | #if !BIG_OK | ||
231 | your preprocessor is broken; | ||
232 | #endif | ||
233 | #if BIG_OK | ||
234 | #else | ||
235 | your preprocessor is broken; | ||
236 | #endif | ||
237 | static long long int bignum = -9223372036854775807LL; | ||
238 | static unsigned long long int ubignum = BIG64; | ||
239 | |||
240 | struct incomplete_array | ||
241 | { | ||
242 | int datasize; | ||
243 | double data[]; | ||
244 | }; | ||
245 | |||
246 | struct named_init { | ||
247 | int number; | ||
248 | const wchar_t *name; | ||
249 | double average; | ||
250 | }; | ||
251 | |||
252 | typedef const char *ccp; | ||
253 | |||
254 | static inline int | ||
255 | test_restrict (ccp restrict text) | ||
256 | { | ||
257 | // See if C++-style comments work. | ||
258 | // Iterate through items via the restricted pointer. | ||
259 | // Also check for declarations in for loops. | ||
260 | for (unsigned int i = 0; *(text+i) != '\0'; ++i) | ||
261 | continue; | ||
262 | return 0; | ||
263 | } | ||
264 | |||
265 | // Check varargs and va_copy. | ||
266 | static bool | ||
267 | test_varargs (const char *format, ...) | ||
268 | { | ||
269 | va_list args; | ||
270 | va_start (args, format); | ||
271 | va_list args_copy; | ||
272 | va_copy (args_copy, args); | ||
273 | |||
274 | const char *str = ""; | ||
275 | int number = 0; | ||
276 | float fnumber = 0; | ||
277 | |||
278 | while (*format) | ||
279 | { | ||
280 | switch (*format++) | ||
281 | { | ||
282 | case 's': // string | ||
283 | str = va_arg (args_copy, const char *); | ||
284 | break; | ||
285 | case 'd': // int | ||
286 | number = va_arg (args_copy, int); | ||
287 | break; | ||
288 | case 'f': // float | ||
289 | fnumber = va_arg (args_copy, double); | ||
290 | break; | ||
291 | default: | ||
292 | break; | ||
293 | } | ||
294 | } | ||
295 | va_end (args_copy); | ||
296 | va_end (args); | ||
297 | |||
298 | return *str && number && fnumber; | ||
299 | }]])# _AC_C_C99_TEST_HEADER | ||
300 | |||
301 | # _AC_C_C99_TEST_BODY | ||
302 | # ------------------- | ||
303 | # A C body suitable for testing for C99, assuming the corresponding header. | ||
304 | AC_DEFUN([_AC_C_C99_TEST_BODY], | ||
305 | [[ | ||
306 | // Check bool. | ||
307 | _Bool success = false; | ||
308 | |||
309 | // Check restrict. | ||
310 | if (test_restrict ("String literal") == 0) | ||
311 | success = true; | ||
312 | char *restrict newvar = "Another string"; | ||
313 | |||
314 | // Check varargs. | ||
315 | success &= test_varargs ("s, d' f .", "string", 65, 34.234); | ||
316 | test_varargs_macros (); | ||
317 | |||
318 | // Check flexible array members. | ||
319 | struct incomplete_array *ia = | ||
320 | malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); | ||
321 | ia->datasize = 10; | ||
322 | for (int i = 0; i < ia->datasize; ++i) | ||
323 | ia->data[i] = i * 1.234; | ||
324 | |||
325 | // Check named initializers. | ||
326 | struct named_init ni = { | ||
327 | .number = 34, | ||
328 | .name = L"Test wide string", | ||
329 | .average = 543.34343, | ||
330 | }; | ||
331 | |||
332 | ni.number = 58; | ||
333 | |||
334 | int dynamic_array[ni.number]; | ||
335 | dynamic_array[ni.number - 1] = 543; | ||
336 | |||
337 | // work around unused variable warnings | ||
338 | return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' | ||
339 | || dynamic_array[ni.number - 1] != 543); | ||
340 | ]]) | ||
341 | |||
342 | # _AC_PROG_CC_C99 ([ACTION-IF-AVAILABLE], [ACTION-IF-UNAVAILABLE]) | ||
343 | # ---------------------------------------------------------------- | ||
344 | # If the C compiler is not in ISO C99 mode by default, try to add an | ||
345 | # option to output variable CC to make it so. This macro tries | ||
346 | # various options that select ISO C99 on some system or another. It | ||
347 | # considers the compiler to be in ISO C99 mode if it handles _Bool, | ||
348 | # // comments, flexible array members, inline, long long int, mixed | ||
349 | # code and declarations, named initialization of structs, restrict, | ||
350 | # va_copy, varargs macros, variable declarations in for loops and | ||
351 | # variable length arrays. | ||
352 | AC_DEFUN([_AC_PROG_CC_C99], | ||
353 | [_AC_C_STD_TRY([c99], | ||
354 | [_AC_C_C99_TEST_HEADER], | ||
355 | [_AC_C_C99_TEST_BODY], | ||
356 | dnl Try | ||
357 | dnl GCC -std=gnu99 (unused restrictive modes: -std=c99 -std=iso9899:1999) | ||
358 | dnl IBM XL C -qlanglvl=extc1x (V12.1; does not pass C11 test) | ||
359 | dnl IBM XL C -qlanglvl=extc99 | ||
360 | dnl (pre-V12.1; unused restrictive mode: -qlanglvl=stdc99) | ||
361 | dnl HP cc -AC99 | ||
362 | dnl Intel ICC -std=c99, -c99 (deprecated) | ||
363 | dnl IRIX -c99 | ||
364 | dnl Solaris -D_STDC_C99= | ||
365 | dnl cc's -xc99 option uses linker magic to define the external | ||
366 | dnl symbol __xpg4 as if by "int __xpg4 = 1;", which enables C99 | ||
367 | dnl behavior for C library functions. This is not wanted here, | ||
368 | dnl because it means that a single module compiled with -xc99 | ||
369 | dnl alters C runtime behavior for the entire program, not for | ||
370 | dnl just the module. Instead, define the (private) symbol | ||
371 | dnl _STDC_C99, which suppresses a bogus failure in <stdbool.h>. | ||
372 | dnl The resulting compiler passes the test case here, and that's | ||
373 | dnl good enough. For more, please see the thread starting at: | ||
374 | dnl https://lists.gnu.org/r/autoconf/2010-12/msg00059.html | ||
375 | dnl Tru64 -c99 | ||
376 | dnl with extended modes being tried first. | ||
377 | [[-std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc1x -qlanglvl=extc99]], [$1], [$2])[]dnl | ||
378 | ])# _AC_PROG_CC_C99 | ||
379 | |||
380 | |||
381 | # _AC_PROG_CC_C11 ([ACTION-IF-AVAILABLE], [ACTION-IF-UNAVAILABLE]) | ||
382 | # ---------------------------------------------------------------- | ||
383 | # If the C compiler is not in ISO C11 mode by default, try to add an | ||
384 | # option to output variable CC to make it so. This macro tries | ||
385 | # various options that select ISO C11 on some system or another. It | ||
386 | # considers the compiler to be in ISO C11 mode if it handles _Alignas, | ||
387 | # _Alignof, _Noreturn, _Static_assert, UTF-8 string literals, | ||
388 | # duplicate typedefs, and anonymous structures and unions. | ||
389 | AC_DEFUN([_AC_PROG_CC_C11], | ||
390 | [_AC_C_STD_TRY([c11], | ||
391 | [_AC_C_C99_TEST_HEADER[ | ||
392 | // Check _Alignas. | ||
393 | char _Alignas (double) aligned_as_double; | ||
394 | char _Alignas (0) no_special_alignment; | ||
395 | extern char aligned_as_int; | ||
396 | char _Alignas (0) _Alignas (int) aligned_as_int; | ||
397 | |||
398 | // Check _Alignof. | ||
399 | enum | ||
400 | { | ||
401 | int_alignment = _Alignof (int), | ||
402 | int_array_alignment = _Alignof (int[100]), | ||
403 | char_alignment = _Alignof (char) | ||
404 | }; | ||
405 | _Static_assert (0 < -_Alignof (int), "_Alignof is signed"); | ||
406 | |||
407 | // Check _Noreturn. | ||
408 | int _Noreturn does_not_return (void) { for (;;) continue; } | ||
409 | |||
410 | // Check _Static_assert. | ||
411 | struct test_static_assert | ||
412 | { | ||
413 | int x; | ||
414 | _Static_assert (sizeof (int) <= sizeof (long int), | ||
415 | "_Static_assert does not work in struct"); | ||
416 | long int y; | ||
417 | }; | ||
418 | |||
419 | // Check UTF-8 literals. | ||
420 | #define u8 syntax error! | ||
421 | char const utf8_literal[] = u8"happens to be ASCII" "another string"; | ||
422 | |||
423 | // Check duplicate typedefs. | ||
424 | typedef long *long_ptr; | ||
425 | typedef long int *long_ptr; | ||
426 | typedef long_ptr long_ptr; | ||
427 | |||
428 | // Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. | ||
429 | struct anonymous | ||
430 | { | ||
431 | union { | ||
432 | struct { int i; int j; }; | ||
433 | struct { int k; long int l; } w; | ||
434 | }; | ||
435 | int m; | ||
436 | } v1; | ||
437 | ]], | ||
438 | [_AC_C_C99_TEST_BODY[ | ||
439 | v1.i = 2; | ||
440 | v1.w.k = 5; | ||
441 | _Static_assert ((offsetof (struct anonymous, i) | ||
442 | == offsetof (struct anonymous, w.k)), | ||
443 | "Anonymous union alignment botch"); | ||
444 | ]], | ||
445 | dnl Try | ||
446 | dnl GCC -std=gnu11 (unused restrictive mode: -std=c11) | ||
447 | dnl with extended modes being tried first. | ||
448 | dnl | ||
449 | dnl Do not try -qlanglvl=extc1x, because IBM XL C V12.1 (the latest version as | ||
450 | dnl of September 2012) does not pass the C11 test. For now, try extc1x when | ||
451 | dnl compiling the C99 test instead, since it enables _Static_assert and | ||
452 | dnl _Noreturn, which is a win. If -qlanglvl=extc11 or -qlanglvl=extc1x passes | ||
453 | dnl the C11 test in some future version of IBM XL C, we'll add it here, | ||
454 | dnl preferably extc11. | ||
455 | [[-std=gnu11]], [$1], [$2])[]dnl | ||
456 | ])# _AC_PROG_CC_C11 | ||
457 | |||
458 | |||
459 | # AC_PROG_CC_C89 | ||
460 | # -------------- | ||
461 | # Do not use AU_ALIAS here and in AC_PROG_CC_C99 and AC_PROG_CC_STDC, | ||
462 | # as that'd be incompatible with how Automake redefines AC_PROG_CC. See | ||
463 | # <https://lists.gnu.org/r/autoconf/2012-10/msg00048.html>. | ||
464 | AU_DEFUN([AC_PROG_CC_C89], | ||
465 | [AC_REQUIRE([AC_PROG_CC])], | ||
466 | [$0 is obsolete; use AC_PROG_CC] | ||
467 | ) | ||
468 | |||
469 | # AC_PROG_CC_C99 | ||
470 | # -------------- | ||
471 | AU_DEFUN([AC_PROG_CC_C99], | ||
472 | [AC_REQUIRE([AC_PROG_CC])], | ||
473 | [$0 is obsolete; use AC_PROG_CC] | ||
474 | ) | ||
475 | |||
476 | # AC_PROG_CC_STDC | ||
477 | # --------------- | ||
478 | AU_DEFUN([AC_PROG_CC_STDC], | ||
479 | [AC_REQUIRE([AC_PROG_CC])], | ||
480 | [$0 is obsolete; use AC_PROG_CC] | ||
481 | ) | ||
482 | |||
483 | |||
484 | # AC_C_PROTOTYPES | ||
485 | # --------------- | ||
486 | # Check if the C compiler supports prototypes, included if it needs | ||
487 | # options. | ||
488 | AC_DEFUN([AC_C_PROTOTYPES], | ||
489 | [AC_REQUIRE([AC_PROG_CC])dnl | ||
490 | if test "$ac_prog_cc_stdc" != no; then | ||
491 | AC_DEFINE(PROTOTYPES, 1, | ||
492 | [Define to 1 if the C compiler supports function prototypes.]) | ||
493 | AC_DEFINE(__PROTOTYPES, 1, | ||
494 | [Define like PROTOTYPES; this can be used by system headers.]) | ||
495 | fi | ||
496 | ])# AC_C_PROTOTYPES | ||
497 | |||
498 | |||
499 | # _AC_CXX_STD_TRY(STANDARD, TEST-PROLOGUE, TEST-BODY, OPTION-LIST, | ||
500 | # ACTION-IF-AVAILABLE, ACTION-IF-UNAVAILABLE) | ||
501 | # ---------------------------------------------------------------- | ||
502 | # Check whether the C++ compiler accepts features of STANDARD (e.g | ||
503 | # `cxx98', `cxx11') by trying to compile a program of TEST-PROLOGUE | ||
504 | # and TEST-BODY. If this fails, try again with each compiler option | ||
505 | # in the space-separated OPTION-LIST; if one helps, append it to CXX. | ||
506 | # If eventually successful, run ACTION-IF-AVAILABLE, else | ||
507 | # ACTION-IF-UNAVAILABLE. | ||
508 | AC_DEFUN([_AC_CXX_STD_TRY], | ||
509 | [AC_MSG_CHECKING([for $CXX option to enable ]m4_translit(m4_translit($1, [x], [+]), [a-z], [A-Z])[ features]) | ||
510 | AC_LANG_PUSH(C++)dnl | ||
511 | AC_CACHE_VAL(ac_cv_prog_cxx_$1, | ||
512 | [ac_cv_prog_cxx_$1=no | ||
513 | ac_save_CXX=$CXX | ||
514 | AC_LANG_CONFTEST([AC_LANG_PROGRAM([$2], [$3])]) | ||
515 | for ac_arg in '' $4 | ||
516 | do | ||
517 | CXX="$ac_save_CXX $ac_arg" | ||
518 | _AC_COMPILE_IFELSE([], [ac_cv_prog_cxx_$1=$ac_arg]) | ||
519 | test "x$ac_cv_prog_cxx_$1" != "xno" && break | ||
520 | done | ||
521 | rm -f conftest.$ac_ext | ||
522 | CXX=$ac_save_CXX | ||
523 | ])# AC_CACHE_VAL | ||
524 | ac_prog_cxx_stdcxx_options= | ||
525 | case "x$ac_cv_prog_cxx_$1" in | ||
526 | x) | ||
527 | AC_MSG_RESULT([none needed]) ;; | ||
528 | xno) | ||
529 | AC_MSG_RESULT([unsupported]) ;; | ||
530 | *) | ||
531 | ac_prog_cxx_stdcxx_options=" $ac_cv_prog_cxx_$1" | ||
532 | CXX=$CXX$ac_prog_cxx_stdcxx_options | ||
533 | AC_MSG_RESULT([$ac_cv_prog_cxx_$1]) ;; | ||
534 | esac | ||
535 | AC_LANG_POP(C++)dnl | ||
536 | AS_IF([test "x$ac_cv_prog_cxx_$1" != xno], [$5], [$6]) | ||
537 | ])# _AC_CXX_STD_TRY | ||
538 | |||
539 | # _AC_CXX_CXX98_TEST_HEADER | ||
540 | # ------------------------- | ||
541 | # A C++ header suitable for testing for CXX98. | ||
542 | AC_DEFUN([_AC_CXX_CXX98_TEST_HEADER], | ||
543 | [[ | ||
544 | #include <algorithm> | ||
545 | #include <cstdlib> | ||
546 | #include <fstream> | ||
547 | #include <iomanip> | ||
548 | #include <iostream> | ||
549 | #include <list> | ||
550 | #include <map> | ||
551 | #include <set> | ||
552 | #include <sstream> | ||
553 | #include <stdexcept> | ||
554 | #include <string> | ||
555 | #include <utility> | ||
556 | #include <vector> | ||
557 | |||
558 | namespace test { | ||
559 | typedef std::vector<std::string> string_vec; | ||
560 | typedef std::pair<int,bool> map_value; | ||
561 | typedef std::map<std::string,map_value> map_type; | ||
562 | typedef std::set<int> set_type; | ||
563 | |||
564 | template<typename T> | ||
565 | class printer { | ||
566 | public: | ||
567 | printer(std::ostringstream& os): os(os) {} | ||
568 | void operator() (T elem) { os << elem << std::endl; } | ||
569 | private: | ||
570 | std::ostringstream& os; | ||
571 | }; | ||
572 | } | ||
573 | ]])# _AC_CXX_CXX98_TEST_HEADER | ||
574 | |||
575 | # _AC_CXX_CXX98_TEST_BODY | ||
576 | # ----------------------- | ||
577 | # A C++ body suitable for testing for CXX98, assuming the corresponding header. | ||
578 | AC_DEFUN([_AC_CXX_CXX98_TEST_BODY], | ||
579 | [[ | ||
580 | |||
581 | try { | ||
582 | // Basic string. | ||
583 | std::string teststr("ASCII text"); | ||
584 | teststr += " string"; | ||
585 | |||
586 | // Simple vector. | ||
587 | test::string_vec testvec; | ||
588 | testvec.push_back(teststr); | ||
589 | testvec.push_back("foo"); | ||
590 | testvec.push_back("bar"); | ||
591 | if (testvec.size() != 3) { | ||
592 | throw std::runtime_error("vector size is not 1"); | ||
593 | } | ||
594 | |||
595 | // Dump vector into stringstream and obtain string. | ||
596 | std::ostringstream os; | ||
597 | for (test::string_vec::const_iterator i = testvec.begin(); | ||
598 | i != testvec.end(); ++i) { | ||
599 | if (i + 1 != testvec.end()) { | ||
600 | os << teststr << '\n'; | ||
601 | } | ||
602 | } | ||
603 | // Check algorithms work. | ||
604 | std::for_each(testvec.begin(), testvec.end(), test::printer<std::string>(os)); | ||
605 | std::string os_out = os.str(); | ||
606 | |||
607 | // Test pair and map. | ||
608 | test::map_type testmap; | ||
609 | testmap.insert(std::make_pair(std::string("key"), | ||
610 | std::make_pair(53,false))); | ||
611 | |||
612 | // Test set. | ||
613 | int values[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; | ||
614 | test::set_type testset(values, values + sizeof(values)/sizeof(values[0])); | ||
615 | std::list<int> testlist(testset.begin(), testset.end()); | ||
616 | std::copy(testset.begin(), testset.end(), std::back_inserter(testlist)); | ||
617 | } catch (const std::exception& e) { | ||
618 | std::cerr << "Caught exception: " << e.what() << std::endl; | ||
619 | |||
620 | // Test fstream | ||
621 | std::ofstream of("test.txt"); | ||
622 | of << "Test ASCII text\n" << std::flush; | ||
623 | of << "N= " << std::hex << std::setw(8) << std::left << 534 << std::endl; | ||
624 | of.close(); | ||
625 | } | ||
626 | std::exit(0); | ||
627 | ]]) | ||
628 | |||
629 | # _AC_CXX_CXX11_TEST_HEADER | ||
630 | # ------------------------- | ||
631 | # A C++ header suitable for testing for CXX11. | ||
632 | AC_DEFUN([_AC_CXX_CXX11_TEST_HEADER], | ||
633 | [[ | ||
634 | #include <deque> | ||
635 | #include <functional> | ||
636 | #include <memory> | ||
637 | #include <tuple> | ||
638 | #include <array> | ||
639 | #include <regex> | ||
640 | #include <iostream> | ||
641 | |||
642 | namespace cxx11test | ||
643 | { | ||
644 | typedef std::shared_ptr<std::string> sptr; | ||
645 | typedef std::weak_ptr<std::string> wptr; | ||
646 | |||
647 | typedef std::tuple<std::string,int,double> tp; | ||
648 | typedef std::array<int, 20> int_array; | ||
649 | |||
650 | constexpr int get_val() { return 20; } | ||
651 | |||
652 | struct testinit | ||
653 | { | ||
654 | int i; | ||
655 | double d; | ||
656 | }; | ||
657 | |||
658 | class delegate { | ||
659 | public: | ||
660 | delegate(int n) : n(n) {} | ||
661 | delegate(): delegate(2354) {} | ||
662 | |||
663 | virtual int getval() { return this->n; }; | ||
664 | protected: | ||
665 | int n; | ||
666 | }; | ||
667 | |||
668 | class overridden : public delegate { | ||
669 | public: | ||
670 | overridden(int n): delegate(n) {} | ||
671 | virtual int getval() override final { return this->n * 2; } | ||
672 | }; | ||
673 | |||
674 | class nocopy { | ||
675 | public: | ||
676 | nocopy(int i): i(i) {} | ||
677 | nocopy() = default; | ||
678 | nocopy(const nocopy&) = delete; | ||
679 | nocopy & operator=(const nocopy&) = delete; | ||
680 | private: | ||
681 | int i; | ||
682 | }; | ||
683 | } | ||
684 | ]])# _AC_CXX_CXX11_TEST_HEADER | ||
685 | |||
686 | # _AC_CXX_CXX11_TEST_BODY | ||
687 | # ----------------------- | ||
688 | # A C++ body suitable for testing for CXX11, assuming the corresponding header. | ||
689 | AC_DEFUN([_AC_CXX_CXX11_TEST_BODY], | ||
690 | [[ | ||
691 | { | ||
692 | // Test auto and decltype | ||
693 | std::deque<int> d; | ||
694 | d.push_front(43); | ||
695 | d.push_front(484); | ||
696 | d.push_front(3); | ||
697 | d.push_front(844); | ||
698 | int total = 0; | ||
699 | for (auto i = d.begin(); i != d.end(); ++i) { total += *i; } | ||
700 | |||
701 | auto a1 = 6538; | ||
702 | auto a2 = 48573953.4; | ||
703 | auto a3 = "String literal"; | ||
704 | |||
705 | decltype(a2) a4 = 34895.034; | ||
706 | } | ||
707 | { | ||
708 | // Test constexpr | ||
709 | short sa[cxx11test::get_val()] = { 0 }; | ||
710 | } | ||
711 | { | ||
712 | // Test initializer lists | ||
713 | cxx11test::testinit il = { 4323, 435234.23544 }; | ||
714 | } | ||
715 | { | ||
716 | // Test range-based for and lambda | ||
717 | cxx11test::int_array array = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; | ||
718 | for (int &x : array) { x += 23; } | ||
719 | std::for_each(array.begin(), array.end(), [](int v1){ std::cout << v1; }); | ||
720 | } | ||
721 | { | ||
722 | using cxx11test::sptr; | ||
723 | using cxx11test::wptr; | ||
724 | |||
725 | sptr sp(new std::string("ASCII string")); | ||
726 | wptr wp(sp); | ||
727 | sptr sp2(wp); | ||
728 | } | ||
729 | { | ||
730 | cxx11test::tp tuple("test", 54, 45.53434); | ||
731 | double d = std::get<2>(tuple); | ||
732 | std::string s; | ||
733 | int i; | ||
734 | std::tie(s,i,d) = tuple; | ||
735 | } | ||
736 | { | ||
737 | static std::regex filename_regex("^_?([a-z0-9_.]+-)+[a-z0-9]+$"); | ||
738 | std::string testmatch("Test if this string matches"); | ||
739 | bool match = std::regex_search(testmatch, filename_regex); | ||
740 | } | ||
741 | { | ||
742 | cxx11test::int_array array = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; | ||
743 | cxx11test::int_array::size_type size = array.size(); | ||
744 | } | ||
745 | { | ||
746 | // Test constructor delegation | ||
747 | cxx11test::delegate d1; | ||
748 | cxx11test::delegate d2(); | ||
749 | cxx11test::delegate d3(45); | ||
750 | } | ||
751 | { | ||
752 | // Test override and final | ||
753 | cxx11test::overridden o1(55464); | ||
754 | } | ||
755 | { | ||
756 | // Test nullptr | ||
757 | char *c = nullptr; | ||
758 | } | ||
759 | { | ||
760 | // Test template brackets | ||
761 | std::vector<std::pair<int,char*>> v1; | ||
762 | } | ||
763 | { | ||
764 | // Unicode literals | ||
765 | char const *utf8 = u8"UTF-8 string \u2500"; | ||
766 | char16_t const *utf16 = u"UTF-8 string \u2500"; | ||
767 | char32_t const *utf32 = U"UTF-32 string \u2500"; | ||
768 | } | ||
769 | ]]) | ||
770 | |||
771 | # _AC_PROG_CXX_CXX98 ([ACTION-IF-AVAILABLE], [ACTION-IF-UNAVAILABLE]) | ||
772 | # ------------------------------------------------------------------- | ||
773 | |||
774 | # If the C++ compiler is not in ISO C++98 mode by default, try to add | ||
775 | # an option to output variable CXX to make it so. This macro tries | ||
776 | # various options that select ISO C++98 on some system or another. It | ||
777 | # considers the compiler to be in ISO C++98 mode if it handles basic | ||
778 | # features of the std namespace including: string, containers (list, | ||
779 | # map, set, vector), streams (fstreams, iostreams, stringstreams, | ||
780 | # iomanip), pair, exceptions and algorithms. | ||
781 | |||
782 | |||
783 | AC_DEFUN([_AC_PROG_CXX_CXX98], | ||
784 | [_AC_CXX_STD_TRY([cxx98], | ||
785 | [_AC_CXX_CXX98_TEST_HEADER], | ||
786 | [_AC_CXX_CXX98_TEST_BODY], | ||
787 | dnl Try | ||
788 | dnl GCC -std=gnu++98 (unused restrictive mode: -std=c++98) | ||
789 | dnl IBM XL C -qlanglvl=extended | ||
790 | dnl HP aC++ -AA | ||
791 | dnl Intel ICC -std=gnu++98 | ||
792 | dnl Solaris N/A (default) | ||
793 | dnl Tru64 N/A (default, but -std gnu could be used) | ||
794 | dnl with extended modes being tried first. | ||
795 | [[-std=gnu++98 -std=c++98 -qlanglvl=extended -AA]], [$1], [$2])[]dnl | ||
796 | ])# _AC_PROG_CXX_CXX98 | ||
797 | |||
798 | # _AC_PROG_CXX_CXX11 ([ACTION-IF-AVAILABLE], [ACTION-IF-UNAVAILABLE]) | ||
799 | # ------------------------------------------------------------------- | ||
800 | # If the C++ compiler is not in ISO CXX11 mode by default, try to add | ||
801 | # an option to output variable CXX to make it so. This macro tries | ||
802 | # various options that select ISO C++11 on some system or another. It | ||
803 | # considers the compiler to be in ISO C++11 mode if it handles all the | ||
804 | # tests from the C++98 checks, plus the following: Language features | ||
805 | # (auto, constexpr, decltype, default/deleted constructors, delegate | ||
806 | # constructors, final, initializer lists, lambda functions, nullptr, | ||
807 | # override, range-based for loops, template brackets without spaces, | ||
808 | # unicode literals) and library features (array, memory (shared_ptr, | ||
809 | # weak_ptr), regex and tuple types). | ||
810 | AC_DEFUN([_AC_PROG_CXX_CXX11], | ||
811 | [_AC_CXX_STD_TRY([cxx11], | ||
812 | [_AC_CXX_CXX11_TEST_HEADER | ||
813 | _AC_CXX_CXX98_TEST_HEADER], | ||
814 | [_AC_CXX_CXX11_TEST_BODY | ||
815 | _AC_CXX_CXX98_TEST_BODY], | ||
816 | dnl Try | ||
817 | dnl GCC -std=gnu++11 (unused restrictive mode: -std=c++11) [and 0x variants] | ||
818 | dnl IBM XL C -qlanglvl=extended0x | ||
819 | dnl (pre-V12.1; unused restrictive mode: -qlanglvl=stdcxx11) | ||
820 | dnl HP aC++ -AA | ||
821 | dnl Intel ICC -std=c++11 -std=c++0x | ||
822 | dnl Solaris N/A (no support) | ||
823 | dnl Tru64 N/A (no support) | ||
824 | dnl with extended modes being tried first. | ||
825 | [[-std=gnu++11 -std=c++11 -std=gnu++0x -std=c++0x -qlanglvl=extended0x -AA]], [$1], [$2])[]dnl | ||
826 | ])# _AC_PROG_CXX_CXX11 | ||
827 | |||
828 | |||
829 | ])# m4_version_prereq | ||
diff --git a/gl/m4/stdalign.m4 b/gl/m4/stdalign.m4 index 20be01aa..dc297175 100644 --- a/gl/m4/stdalign.m4 +++ b/gl/m4/stdalign.m4 | |||
@@ -1,6 +1,6 @@ | |||
1 | # Check for stdalign.h that conforms to C11. | 1 | # Check for alignas and alignof that conform to C23. |
2 | 2 | ||
3 | dnl Copyright 2011-2013 Free Software Foundation, Inc. | 3 | dnl Copyright 2011-2023 Free Software Foundation, Inc. |
4 | dnl This file is free software; the Free Software Foundation | 4 | dnl This file is free software; the Free Software Foundation |
5 | dnl gives unlimited permission to copy and/or distribute it, | 5 | dnl gives unlimited permission to copy and/or distribute it, |
6 | dnl with or without modifications, as long as this notice is preserved. | 6 | dnl with or without modifications, as long as this notice is preserved. |
@@ -9,16 +9,23 @@ dnl with or without modifications, as long as this notice is preserved. | |||
9 | 9 | ||
10 | AC_DEFUN([gl_STDALIGN_H], | 10 | AC_DEFUN([gl_STDALIGN_H], |
11 | [ | 11 | [ |
12 | AC_CACHE_CHECK([for working stdalign.h], | 12 | AC_CACHE_CHECK([for alignas and alignof], |
13 | [gl_cv_header_working_stdalign_h], | 13 | [gl_cv_header_working_stdalign_h], |
14 | [AC_COMPILE_IFELSE( | 14 | [gl_save_CFLAGS=$CFLAGS |
15 | for gl_working in "yes, keywords" "yes, <stdalign.h> macros"; do | ||
16 | AS_CASE([$gl_working], | ||
17 | [*stdalign.h*], [CFLAGS="$gl_save_CFLAGS -DINCLUDE_STDALIGN_H"]) | ||
18 | AC_COMPILE_IFELSE( | ||
15 | [AC_LANG_PROGRAM( | 19 | [AC_LANG_PROGRAM( |
16 | [[#include <stdalign.h> | 20 | [[#include <stdint.h> |
21 | #ifdef INCLUDE_STDALIGN_H | ||
22 | #include <stdalign.h> | ||
23 | #endif | ||
17 | #include <stddef.h> | 24 | #include <stddef.h> |
18 | 25 | ||
19 | /* Test that alignof yields a result consistent with offsetof. | 26 | /* Test that alignof yields a result consistent with offsetof. |
20 | This catches GCC bug 52023 | 27 | This catches GCC bug 52023 |
21 | <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52023>. */ | 28 | <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52023>. */ |
22 | #ifdef __cplusplus | 29 | #ifdef __cplusplus |
23 | template <class t> struct alignof_helper { char a; t b; }; | 30 | template <class t> struct alignof_helper { char a; t b; }; |
24 | # define ao(type) offsetof (alignof_helper<type>, b) | 31 | # define ao(type) offsetof (alignof_helper<type>, b) |
@@ -29,25 +36,103 @@ AC_DEFUN([gl_STDALIGN_H], | |||
29 | char test_long[ao (long int) % _Alignof (long int) == 0 ? 1 : -1]; | 36 | char test_long[ao (long int) % _Alignof (long int) == 0 ? 1 : -1]; |
30 | char test_alignof[alignof (double) == _Alignof (double) ? 1 : -1]; | 37 | char test_alignof[alignof (double) == _Alignof (double) ? 1 : -1]; |
31 | 38 | ||
32 | /* Test _Alignas only on platforms where gnulib can help. */ | 39 | /* Test alignas only on platforms where gnulib can help. */ |
33 | #if \ | 40 | #if \ |
34 | ((defined __cplusplus && 201103 <= __cplusplus) \ | 41 | ((defined __cplusplus && 201103 <= __cplusplus) \ |
35 | || __GNUC__ || __IBMC__ || __IBMCPP__ || __ICC \ | 42 | || (__TINYC__ && defined __attribute__) \ |
36 | || 0x5110 <= __SUNPRO_C || 1300 <= _MSC_VER) | 43 | || (defined __APPLE__ && defined __MACH__ \ |
44 | ? 4 < __GNUC__ + (1 <= __GNUC_MINOR__) \ | ||
45 | : __GNUC__) \ | ||
46 | || (__ia64 && (61200 <= __HP_cc || 61200 <= __HP_aCC)) \ | ||
47 | || __ICC || 0x590 <= __SUNPRO_C || 0x0600 <= __xlC__ \ | ||
48 | || 1300 <= _MSC_VER) | ||
37 | struct alignas_test { char c; char alignas (8) alignas_8; }; | 49 | struct alignas_test { char c; char alignas (8) alignas_8; }; |
38 | char test_alignas[offsetof (struct alignas_test, alignas_8) == 8 | 50 | char test_alignas[offsetof (struct alignas_test, alignas_8) == 8 |
39 | ? 1 : -1]; | 51 | ? 1 : -1]; |
40 | #endif | 52 | #endif |
41 | ]])], | 53 | ]])], |
42 | [gl_cv_header_working_stdalign_h=yes], | 54 | [gl_cv_header_working_stdalign_h=$gl_working], |
43 | [gl_cv_header_working_stdalign_h=no])]) | 55 | [gl_cv_header_working_stdalign_h=no]) |
56 | |||
57 | CFLAGS=$gl_save_CFLAGS | ||
58 | test "$gl_cv_header_working_stdalign_h" != no && break | ||
59 | done]) | ||
60 | |||
61 | GL_GENERATE_STDALIGN_H=false | ||
62 | AS_CASE([$gl_cv_header_working_stdalign_h], | ||
63 | [no], | ||
64 | [GL_GENERATE_STDALIGN_H=true], | ||
65 | [yes*keyword*], | ||
66 | [AC_DEFINE([HAVE_C_ALIGNASOF], [1], | ||
67 | [Define to 1 if the alignas and alignof keywords work.])]) | ||
44 | 68 | ||
45 | if test $gl_cv_header_working_stdalign_h = yes; then | 69 | AC_CHECK_HEADERS_ONCE([stdalign.h]) |
46 | STDALIGN_H='' | ||
47 | else | ||
48 | STDALIGN_H='stdalign.h' | ||
49 | fi | ||
50 | 70 | ||
51 | AC_SUBST([STDALIGN_H]) | 71 | dnl The "zz" puts this toward config.h's end, to avoid potential |
52 | AM_CONDITIONAL([GL_GENERATE_STDALIGN_H], [test -n "$STDALIGN_H"]) | 72 | dnl collisions with other definitions. |
73 | AH_VERBATIM([zzalignas], | ||
74 | [#if !defined HAVE_C_ALIGNASOF && __cplusplus < 201103 && !defined alignof | ||
75 | # if HAVE_STDALIGN_H | ||
76 | # include <stdalign.h> | ||
77 | # else | ||
78 | /* Substitute. Keep consistent with gnulib/lib/stdalign.in.h. */ | ||
79 | # ifndef _GL_STDALIGN_H | ||
80 | # define _GL_STDALIGN_H | ||
81 | # undef _Alignas | ||
82 | # undef _Alignof | ||
83 | # if (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 \ | ||
84 | || (defined __GNUC__ && __GNUC__ < 4 + (__GNUC_MINOR__ < 9) \ | ||
85 | && !defined __clang__) \ | ||
86 | || (defined __clang__ && __clang_major__ < 8)) | ||
87 | # ifdef __cplusplus | ||
88 | # if (201103 <= __cplusplus || defined _MSC_VER) | ||
89 | # define _Alignof(type) alignof (type) | ||
90 | # else | ||
91 | template <class __t> struct __alignof_helper { char __a; __t __b; }; | ||
92 | # define _Alignof(type) offsetof (__alignof_helper<type>, __b) | ||
93 | # define _GL_STDALIGN_NEEDS_STDDEF 1 | ||
94 | # endif | ||
95 | # else | ||
96 | # if (defined __GNUC__ && 4 <= __GNUC__) || defined __clang__ | ||
97 | # define _Alignof(type) __builtin_offsetof (struct { char __a; type __b; }, __b) | ||
98 | # else | ||
99 | # define _Alignof(type) offsetof (struct { char __a; type __b; }, __b) | ||
100 | # define _GL_STDALIGN_NEEDS_STDDEF 1 | ||
101 | # endif | ||
102 | # endif | ||
103 | # endif | ||
104 | # if ! (defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER)) | ||
105 | # define alignof _Alignof | ||
106 | # endif | ||
107 | # define __alignof_is_defined 1 | ||
108 | # if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 | ||
109 | # if defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER) | ||
110 | # define _Alignas(a) alignas (a) | ||
111 | # elif (!defined __attribute__ \ | ||
112 | && ((defined __APPLE__ && defined __MACH__ \ | ||
113 | ? 4 < __GNUC__ + (1 <= __GNUC_MINOR__) \ | ||
114 | : __GNUC__ && !defined __ibmxl__) \ | ||
115 | || (4 <= __clang_major__) \ | ||
116 | || (__ia64 && (61200 <= __HP_cc || 61200 <= __HP_aCC)) \ | ||
117 | || __ICC || 0x590 <= __SUNPRO_C || 0x0600 <= __xlC__)) | ||
118 | # define _Alignas(a) __attribute__ ((__aligned__ (a))) | ||
119 | # elif 1300 <= _MSC_VER | ||
120 | # define _Alignas(a) __declspec (align (a)) | ||
121 | # endif | ||
122 | # endif | ||
123 | # if ((defined _Alignas \ | ||
124 | && !(defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER))) \ | ||
125 | || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__)) | ||
126 | # define alignas _Alignas | ||
127 | # endif | ||
128 | # if (defined alignas \ | ||
129 | || (defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER))) | ||
130 | # define __alignas_is_defined 1 | ||
131 | # endif | ||
132 | # if _GL_STDALIGN_NEEDS_STDDEF | ||
133 | # include <stddef.h> | ||
134 | # endif | ||
135 | # endif /* _GL_STDALIGN_H */ | ||
136 | # endif | ||
137 | #endif]) | ||
53 | ]) | 138 | ]) |
diff --git a/gl/m4/stdbool.m4 b/gl/m4/stdbool.m4 deleted file mode 100644 index 80d5559a..00000000 --- a/gl/m4/stdbool.m4 +++ /dev/null | |||
@@ -1,100 +0,0 @@ | |||
1 | # Check for stdbool.h that conforms to C99. | ||
2 | |||
3 | dnl Copyright (C) 2002-2006, 2009-2013 Free Software Foundation, Inc. | ||
4 | dnl This file is free software; the Free Software Foundation | ||
5 | dnl gives unlimited permission to copy and/or distribute it, | ||
6 | dnl with or without modifications, as long as this notice is preserved. | ||
7 | |||
8 | #serial 5 | ||
9 | |||
10 | # Prepare for substituting <stdbool.h> if it is not supported. | ||
11 | |||
12 | AC_DEFUN([AM_STDBOOL_H], | ||
13 | [ | ||
14 | AC_REQUIRE([AC_CHECK_HEADER_STDBOOL]) | ||
15 | |||
16 | # Define two additional variables used in the Makefile substitution. | ||
17 | |||
18 | if test "$ac_cv_header_stdbool_h" = yes; then | ||
19 | STDBOOL_H='' | ||
20 | else | ||
21 | STDBOOL_H='stdbool.h' | ||
22 | fi | ||
23 | AC_SUBST([STDBOOL_H]) | ||
24 | AM_CONDITIONAL([GL_GENERATE_STDBOOL_H], [test -n "$STDBOOL_H"]) | ||
25 | |||
26 | if test "$ac_cv_type__Bool" = yes; then | ||
27 | HAVE__BOOL=1 | ||
28 | else | ||
29 | HAVE__BOOL=0 | ||
30 | fi | ||
31 | AC_SUBST([HAVE__BOOL]) | ||
32 | ]) | ||
33 | |||
34 | # AM_STDBOOL_H will be renamed to gl_STDBOOL_H in the future. | ||
35 | AC_DEFUN([gl_STDBOOL_H], [AM_STDBOOL_H]) | ||
36 | |||
37 | # This version of the macro is needed in autoconf <= 2.68. | ||
38 | |||
39 | AC_DEFUN([AC_CHECK_HEADER_STDBOOL], | ||
40 | [AC_CACHE_CHECK([for stdbool.h that conforms to C99], | ||
41 | [ac_cv_header_stdbool_h], | ||
42 | [AC_COMPILE_IFELSE( | ||
43 | [AC_LANG_PROGRAM( | ||
44 | [[ | ||
45 | #include <stdbool.h> | ||
46 | #ifndef bool | ||
47 | "error: bool is not defined" | ||
48 | #endif | ||
49 | #ifndef false | ||
50 | "error: false is not defined" | ||
51 | #endif | ||
52 | #if false | ||
53 | "error: false is not 0" | ||
54 | #endif | ||
55 | #ifndef true | ||
56 | "error: true is not defined" | ||
57 | #endif | ||
58 | #if true != 1 | ||
59 | "error: true is not 1" | ||
60 | #endif | ||
61 | #ifndef __bool_true_false_are_defined | ||
62 | "error: __bool_true_false_are_defined is not defined" | ||
63 | #endif | ||
64 | |||
65 | struct s { _Bool s: 1; _Bool t; } s; | ||
66 | |||
67 | char a[true == 1 ? 1 : -1]; | ||
68 | char b[false == 0 ? 1 : -1]; | ||
69 | char c[__bool_true_false_are_defined == 1 ? 1 : -1]; | ||
70 | char d[(bool) 0.5 == true ? 1 : -1]; | ||
71 | /* See body of main program for 'e'. */ | ||
72 | char f[(_Bool) 0.0 == false ? 1 : -1]; | ||
73 | char g[true]; | ||
74 | char h[sizeof (_Bool)]; | ||
75 | char i[sizeof s.t]; | ||
76 | enum { j = false, k = true, l = false * true, m = true * 256 }; | ||
77 | /* The following fails for | ||
78 | HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ | ||
79 | _Bool n[m]; | ||
80 | char o[sizeof n == m * sizeof n[0] ? 1 : -1]; | ||
81 | char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; | ||
82 | /* Catch a bug in an HP-UX C compiler. See | ||
83 | http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html | ||
84 | http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html | ||
85 | */ | ||
86 | _Bool q = true; | ||
87 | _Bool *pq = &q; | ||
88 | ]], | ||
89 | [[ | ||
90 | bool e = &s; | ||
91 | *pq |= q; | ||
92 | *pq |= ! q; | ||
93 | /* Refer to every declared value, to avoid compiler optimizations. */ | ||
94 | return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l | ||
95 | + !m + !n + !o + !p + !q + !pq); | ||
96 | ]])], | ||
97 | [ac_cv_header_stdbool_h=yes], | ||
98 | [ac_cv_header_stdbool_h=no])]) | ||
99 | AC_CHECK_TYPES([_Bool]) | ||
100 | ]) | ||
diff --git a/gl/m4/stddef_h.m4 b/gl/m4/stddef_h.m4 index 5da8ab1e..a2322ebb 100644 --- a/gl/m4/stddef_h.m4 +++ b/gl/m4/stddef_h.m4 | |||
@@ -1,19 +1,61 @@ | |||
1 | dnl A placeholder for POSIX 2008 <stddef.h>, for platforms that have issues. | 1 | # stddef_h.m4 serial 13 |
2 | # stddef_h.m4 serial 4 | 2 | dnl Copyright (C) 2009-2023 Free Software Foundation, Inc. |
3 | dnl Copyright (C) 2009-2013 Free Software Foundation, Inc. | ||
4 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
5 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
6 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
7 | 6 | ||
8 | AC_DEFUN([gl_STDDEF_H], | 7 | dnl A placeholder for <stddef.h>, for platforms that have issues. |
8 | |||
9 | AC_DEFUN_ONCE([gl_STDDEF_H], | ||
9 | [ | 10 | [ |
10 | AC_REQUIRE([gl_STDDEF_H_DEFAULTS]) | 11 | AC_REQUIRE([gl_STDDEF_H_DEFAULTS]) |
11 | AC_REQUIRE([gt_TYPE_WCHAR_T]) | 12 | AC_REQUIRE([gt_TYPE_WCHAR_T]) |
12 | STDDEF_H= | 13 | |
14 | dnl Persuade OpenBSD <stddef.h> to declare max_align_t. | ||
15 | AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) | ||
16 | |||
17 | GL_GENERATE_STDDEF_H=false | ||
18 | |||
19 | dnl Test whether the type max_align_t exists and whether its alignment | ||
20 | dnl "is as great as is supported by the implementation in all contexts". | ||
21 | AC_CACHE_CHECK([for good max_align_t], | ||
22 | [gl_cv_type_max_align_t], | ||
23 | [AC_COMPILE_IFELSE( | ||
24 | [AC_LANG_PROGRAM( | ||
25 | [[/* On FreeBSD 12.0/x86, max_align_t defined by <stddef.h> has | ||
26 | the correct alignment with the default (wrong) definition of | ||
27 | _Alignof, but a wrong alignment as soon as we activate an | ||
28 | ISO C compliant _Alignof definition. */ | ||
29 | #if ((defined __GNUC__ && 4 <= __GNUC__) || defined __clang__) && !defined __cplusplus | ||
30 | #define _Alignof(type) __builtin_offsetof (struct { char __a; type __b; }, __b) | ||
31 | #endif | ||
32 | #include <stddef.h> | ||
33 | unsigned int s = sizeof (max_align_t); | ||
34 | #if defined __GNUC__ || defined __clang__ || defined __IBM__ALIGNOF__ | ||
35 | int check1[2 * (__alignof__ (double) <= __alignof__ (max_align_t)) - 1]; | ||
36 | int check2[2 * (__alignof__ (long double) <= __alignof__ (max_align_t)) - 1]; | ||
37 | #endif | ||
38 | typedef struct { char a; max_align_t b; } max_helper; | ||
39 | typedef struct { char a; long b; } long_helper; | ||
40 | typedef struct { char a; double b; } double_helper; | ||
41 | typedef struct { char a; long double b; } long_double_helper; | ||
42 | int check3[2 * (offsetof (long_helper, b) <= offsetof (max_helper, b)) - 1]; | ||
43 | int check4[2 * (offsetof (double_helper, b) <= offsetof (max_helper, b)) - 1]; | ||
44 | int check5[2 * (offsetof (long_double_helper, b) <= offsetof (max_helper, b)) - 1]; | ||
45 | ]])], | ||
46 | [gl_cv_type_max_align_t=yes], | ||
47 | [gl_cv_type_max_align_t=no]) | ||
48 | ]) | ||
49 | if test $gl_cv_type_max_align_t = no; then | ||
50 | HAVE_MAX_ALIGN_T=0 | ||
51 | GL_GENERATE_STDDEF_H=true | ||
52 | fi | ||
53 | |||
13 | if test $gt_cv_c_wchar_t = no; then | 54 | if test $gt_cv_c_wchar_t = no; then |
14 | HAVE_WCHAR_T=0 | 55 | HAVE_WCHAR_T=0 |
15 | STDDEF_H=stddef.h | 56 | GL_GENERATE_STDDEF_H=true |
16 | fi | 57 | fi |
58 | |||
17 | AC_CACHE_CHECK([whether NULL can be used in arbitrary expressions], | 59 | AC_CACHE_CHECK([whether NULL can be used in arbitrary expressions], |
18 | [gl_cv_decl_null_works], | 60 | [gl_cv_decl_null_works], |
19 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stddef.h> | 61 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stddef.h> |
@@ -23,25 +65,40 @@ AC_DEFUN([gl_STDDEF_H], | |||
23 | [gl_cv_decl_null_works=no])]) | 65 | [gl_cv_decl_null_works=no])]) |
24 | if test $gl_cv_decl_null_works = no; then | 66 | if test $gl_cv_decl_null_works = no; then |
25 | REPLACE_NULL=1 | 67 | REPLACE_NULL=1 |
26 | STDDEF_H=stddef.h | 68 | GL_GENERATE_STDDEF_H=true |
27 | fi | 69 | fi |
28 | AC_SUBST([STDDEF_H]) | 70 | |
29 | AM_CONDITIONAL([GL_GENERATE_STDDEF_H], [test -n "$STDDEF_H"]) | 71 | if $GL_GENERATE_STDDEF_H; then |
30 | if test -n "$STDDEF_H"; then | ||
31 | gl_NEXT_HEADERS([stddef.h]) | 72 | gl_NEXT_HEADERS([stddef.h]) |
32 | fi | 73 | fi |
33 | ]) | 74 | ]) |
34 | 75 | ||
76 | # gl_STDDEF_MODULE_INDICATOR([modulename]) | ||
77 | # sets the shell variable that indicates the presence of the given module | ||
78 | # to a C preprocessor expression that will evaluate to 1. | ||
79 | # This macro invocation must not occur in macros that are AC_REQUIREd. | ||
35 | AC_DEFUN([gl_STDDEF_MODULE_INDICATOR], | 80 | AC_DEFUN([gl_STDDEF_MODULE_INDICATOR], |
36 | [ | 81 | [ |
37 | dnl Use AC_REQUIRE here, so that the default settings are expanded once only. | 82 | dnl Ensure to expand the default settings once only. |
38 | AC_REQUIRE([gl_STDDEF_H_DEFAULTS]) | 83 | gl_STDDEF_H_REQUIRE_DEFAULTS |
39 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) | 84 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) |
40 | ]) | 85 | ]) |
41 | 86 | ||
87 | # Initializes the default values for AC_SUBSTed shell variables. | ||
88 | # This macro must not be AC_REQUIREd. It must only be invoked, and only | ||
89 | # outside of macros or in macros that are not AC_REQUIREd. | ||
90 | AC_DEFUN([gl_STDDEF_H_REQUIRE_DEFAULTS], | ||
91 | [ | ||
92 | m4_defun(GL_MODULE_INDICATOR_PREFIX[_STDDEF_H_MODULE_INDICATOR_DEFAULTS], [ | ||
93 | ]) | ||
94 | m4_require(GL_MODULE_INDICATOR_PREFIX[_STDDEF_H_MODULE_INDICATOR_DEFAULTS]) | ||
95 | AC_REQUIRE([gl_STDDEF_H_DEFAULTS]) | ||
96 | ]) | ||
97 | |||
42 | AC_DEFUN([gl_STDDEF_H_DEFAULTS], | 98 | AC_DEFUN([gl_STDDEF_H_DEFAULTS], |
43 | [ | 99 | [ |
44 | dnl Assume proper GNU behavior unless another module says otherwise. | 100 | dnl Assume proper GNU behavior unless another module says otherwise. |
45 | REPLACE_NULL=0; AC_SUBST([REPLACE_NULL]) | 101 | REPLACE_NULL=0; AC_SUBST([REPLACE_NULL]) |
102 | HAVE_MAX_ALIGN_T=1; AC_SUBST([HAVE_MAX_ALIGN_T]) | ||
46 | HAVE_WCHAR_T=1; AC_SUBST([HAVE_WCHAR_T]) | 103 | HAVE_WCHAR_T=1; AC_SUBST([HAVE_WCHAR_T]) |
47 | ]) | 104 | ]) |
diff --git a/gl/m4/stdint.m4 b/gl/m4/stdint.m4 index 27cdcdb9..d6961b09 100644 --- a/gl/m4/stdint.m4 +++ b/gl/m4/stdint.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # stdint.m4 serial 43 | 1 | # stdint.m4 serial 61 |
2 | dnl Copyright (C) 2001-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2001-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -7,25 +7,22 @@ dnl with or without modifications, as long as this notice is preserved. | |||
7 | dnl From Paul Eggert and Bruno Haible. | 7 | dnl From Paul Eggert and Bruno Haible. |
8 | dnl Test whether <stdint.h> is supported or must be substituted. | 8 | dnl Test whether <stdint.h> is supported or must be substituted. |
9 | 9 | ||
10 | AC_PREREQ([2.61]) | ||
11 | |||
10 | AC_DEFUN_ONCE([gl_STDINT_H], | 12 | AC_DEFUN_ONCE([gl_STDINT_H], |
11 | [ | 13 | [ |
12 | AC_PREREQ([2.59])dnl | 14 | AC_PREREQ([2.59])dnl |
15 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | ||
13 | 16 | ||
14 | dnl Check for long long int and unsigned long long int. | 17 | AC_REQUIRE([gl_LIMITS_H]) |
15 | AC_REQUIRE([AC_TYPE_LONG_LONG_INT]) | 18 | AC_REQUIRE([gt_TYPE_WINT_T]) |
16 | if test $ac_cv_type_long_long_int = yes; then | 19 | |
17 | HAVE_LONG_LONG_INT=1 | 20 | dnl For backward compatibility. Some packages may still be testing these |
18 | else | 21 | dnl macros. |
19 | HAVE_LONG_LONG_INT=0 | 22 | AC_DEFINE([HAVE_LONG_LONG_INT], [1], |
20 | fi | 23 | [Define to 1 if the system has the type 'long long int'.]) |
21 | AC_SUBST([HAVE_LONG_LONG_INT]) | 24 | AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1], |
22 | AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) | 25 | [Define to 1 if the system has the type 'unsigned long long int'.]) |
23 | if test $ac_cv_type_unsigned_long_long_int = yes; then | ||
24 | HAVE_UNSIGNED_LONG_LONG_INT=1 | ||
25 | else | ||
26 | HAVE_UNSIGNED_LONG_LONG_INT=0 | ||
27 | fi | ||
28 | AC_SUBST([HAVE_UNSIGNED_LONG_LONG_INT]) | ||
29 | 26 | ||
30 | dnl Check for <wchar.h>, in the same way as gl_WCHAR_H does. | 27 | dnl Check for <wchar.h>, in the same way as gl_WCHAR_H does. |
31 | AC_CHECK_HEADERS_ONCE([wchar.h]) | 28 | AC_CHECK_HEADERS_ONCE([wchar.h]) |
@@ -37,7 +34,7 @@ AC_DEFUN_ONCE([gl_STDINT_H], | |||
37 | AC_SUBST([HAVE_WCHAR_H]) | 34 | AC_SUBST([HAVE_WCHAR_H]) |
38 | 35 | ||
39 | dnl Check for <inttypes.h>. | 36 | dnl Check for <inttypes.h>. |
40 | dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h. | 37 | AC_CHECK_HEADERS_ONCE([inttypes.h]) |
41 | if test $ac_cv_header_inttypes_h = yes; then | 38 | if test $ac_cv_header_inttypes_h = yes; then |
42 | HAVE_INTTYPES_H=1 | 39 | HAVE_INTTYPES_H=1 |
43 | else | 40 | else |
@@ -46,7 +43,7 @@ AC_DEFUN_ONCE([gl_STDINT_H], | |||
46 | AC_SUBST([HAVE_INTTYPES_H]) | 43 | AC_SUBST([HAVE_INTTYPES_H]) |
47 | 44 | ||
48 | dnl Check for <sys/types.h>. | 45 | dnl Check for <sys/types.h>. |
49 | dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_sys_types_h. | 46 | AC_CHECK_HEADERS_ONCE([sys/types.h]) |
50 | if test $ac_cv_header_sys_types_h = yes; then | 47 | if test $ac_cv_header_sys_types_h = yes; then |
51 | HAVE_SYS_TYPES_H=1 | 48 | HAVE_SYS_TYPES_H=1 |
52 | else | 49 | else |
@@ -70,6 +67,8 @@ AC_DEFUN_ONCE([gl_STDINT_H], | |||
70 | AC_COMPILE_IFELSE([ | 67 | AC_COMPILE_IFELSE([ |
71 | AC_LANG_PROGRAM([[ | 68 | AC_LANG_PROGRAM([[ |
72 | #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ | 69 | #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ |
70 | #define __STDC_CONSTANT_MACROS 1 | ||
71 | #define __STDC_LIMIT_MACROS 1 | ||
73 | #include <stdint.h> | 72 | #include <stdint.h> |
74 | /* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>. */ | 73 | /* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>. */ |
75 | #if !(defined WCHAR_MIN && defined WCHAR_MAX) | 74 | #if !(defined WCHAR_MIN && defined WCHAR_MAX) |
@@ -150,6 +149,15 @@ uintptr_t h = UINTPTR_MAX; | |||
150 | intmax_t i = INTMAX_MAX; | 149 | intmax_t i = INTMAX_MAX; |
151 | uintmax_t j = UINTMAX_MAX; | 150 | uintmax_t j = UINTMAX_MAX; |
152 | 151 | ||
152 | /* Check that SIZE_MAX has the correct type, if possible. */ | ||
153 | #if 201112 <= __STDC_VERSION__ | ||
154 | int k = _Generic (SIZE_MAX, size_t: 0); | ||
155 | #elif (2 <= __GNUC__ || 4 <= __clang_major__ || defined __IBM__TYPEOF__ \ | ||
156 | || (0x5110 <= __SUNPRO_C && !__STDC__)) | ||
157 | extern size_t k; | ||
158 | extern __typeof__ (SIZE_MAX) k; | ||
159 | #endif | ||
160 | |||
153 | #include <limits.h> /* for CHAR_BIT */ | 161 | #include <limits.h> /* for CHAR_BIT */ |
154 | #define TYPE_MINIMUM(t) \ | 162 | #define TYPE_MINIMUM(t) \ |
155 | ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t))) | 163 | ((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t))) |
@@ -162,7 +170,7 @@ struct s { | |||
162 | PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t) | 170 | PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t) |
163 | && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t) | 171 | && PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t) |
164 | ? 1 : -1; | 172 | ? 1 : -1; |
165 | /* Detect bug in FreeBSD 6.0 / ia64. */ | 173 | /* Detect bug in FreeBSD 6.0/ia64 and FreeBSD 13.0/arm64. */ |
166 | int check_SIG_ATOMIC: | 174 | int check_SIG_ATOMIC: |
167 | SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t) | 175 | SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t) |
168 | && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t) | 176 | && SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t) |
@@ -218,6 +226,8 @@ struct s { | |||
218 | AC_RUN_IFELSE([ | 226 | AC_RUN_IFELSE([ |
219 | AC_LANG_PROGRAM([[ | 227 | AC_LANG_PROGRAM([[ |
220 | #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ | 228 | #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ |
229 | #define __STDC_CONSTANT_MACROS 1 | ||
230 | #define __STDC_LIMIT_MACROS 1 | ||
221 | #include <stdint.h> | 231 | #include <stdint.h> |
222 | ] | 232 | ] |
223 | gl_STDINT_INCLUDES | 233 | gl_STDINT_INCLUDES |
@@ -272,36 +282,88 @@ static const char *macro_values[] = | |||
272 | ]])], | 282 | ]])], |
273 | [gl_cv_header_working_stdint_h=yes], | 283 | [gl_cv_header_working_stdint_h=yes], |
274 | [], | 284 | [], |
275 | [dnl When cross-compiling, assume it works. | 285 | [case "$host_os" in |
276 | gl_cv_header_working_stdint_h=yes | 286 | # Guess yes on native Windows. |
287 | mingw*) gl_cv_header_working_stdint_h="guessing yes" ;; | ||
288 | # In general, assume it works. | ||
289 | *) gl_cv_header_working_stdint_h="guessing yes" ;; | ||
290 | esac | ||
277 | ]) | 291 | ]) |
278 | ]) | 292 | ]) |
279 | ]) | 293 | ]) |
280 | fi | 294 | fi |
281 | if test "$gl_cv_header_working_stdint_h" = yes; then | ||
282 | STDINT_H= | ||
283 | else | ||
284 | dnl Check for <sys/inttypes.h>, and for | ||
285 | dnl <sys/bitypes.h> (used in Linux libc4 >= 4.6.7 and libc5). | ||
286 | AC_CHECK_HEADERS([sys/inttypes.h sys/bitypes.h]) | ||
287 | if test $ac_cv_header_sys_inttypes_h = yes; then | ||
288 | HAVE_SYS_INTTYPES_H=1 | ||
289 | else | ||
290 | HAVE_SYS_INTTYPES_H=0 | ||
291 | fi | ||
292 | AC_SUBST([HAVE_SYS_INTTYPES_H]) | ||
293 | if test $ac_cv_header_sys_bitypes_h = yes; then | ||
294 | HAVE_SYS_BITYPES_H=1 | ||
295 | else | ||
296 | HAVE_SYS_BITYPES_H=0 | ||
297 | fi | ||
298 | AC_SUBST([HAVE_SYS_BITYPES_H]) | ||
299 | 295 | ||
300 | gl_STDINT_TYPE_PROPERTIES | 296 | HAVE_C99_STDINT_H=0 |
301 | STDINT_H=stdint.h | 297 | HAVE_SYS_BITYPES_H=0 |
302 | fi | 298 | HAVE_SYS_INTTYPES_H=0 |
303 | AC_SUBST([STDINT_H]) | 299 | GL_GENERATE_STDINT_H=true |
304 | AM_CONDITIONAL([GL_GENERATE_STDINT_H], [test -n "$STDINT_H"]) | 300 | case "$gl_cv_header_working_stdint_h" in |
301 | *yes) | ||
302 | HAVE_C99_STDINT_H=1 | ||
303 | dnl Now see whether the system <stdint.h> works without | ||
304 | dnl __STDC_CONSTANT_MACROS/__STDC_LIMIT_MACROS defined. | ||
305 | dnl If not, there would be problems when stdint.h is included from C++. | ||
306 | AC_CACHE_CHECK([whether stdint.h works without ISO C predefines], | ||
307 | [gl_cv_header_stdint_without_STDC_macros], | ||
308 | [gl_cv_header_stdint_without_STDC_macros=no | ||
309 | AC_COMPILE_IFELSE([ | ||
310 | AC_LANG_PROGRAM([[ | ||
311 | #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */ | ||
312 | #include <stdint.h> | ||
313 | ] | ||
314 | gl_STDINT_INCLUDES | ||
315 | [ | ||
316 | intmax_t im = INTMAX_MAX; | ||
317 | int32_t i32 = INT32_C (0x7fffffff); | ||
318 | ]])], | ||
319 | [gl_cv_header_stdint_without_STDC_macros=yes]) | ||
320 | ]) | ||
321 | |||
322 | if test $gl_cv_header_stdint_without_STDC_macros = no; then | ||
323 | AC_DEFINE([__STDC_CONSTANT_MACROS], [1], | ||
324 | [Define to 1 if the system <stdint.h> predates C++11.]) | ||
325 | AC_DEFINE([__STDC_LIMIT_MACROS], [1], | ||
326 | [Define to 1 if the system <stdint.h> predates C++11.]) | ||
327 | fi | ||
328 | AC_CACHE_CHECK([whether stdint.h has UINTMAX_WIDTH etc.], | ||
329 | [gl_cv_header_stdint_width], | ||
330 | [gl_cv_header_stdint_width=no | ||
331 | AC_COMPILE_IFELSE( | ||
332 | [AC_LANG_PROGRAM([[ | ||
333 | /* Work if build is not clean. */ | ||
334 | #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 | ||
335 | #ifndef __STDC_WANT_IEC_60559_BFP_EXT__ | ||
336 | #define __STDC_WANT_IEC_60559_BFP_EXT__ 1 | ||
337 | #endif | ||
338 | #include <stdint.h> | ||
339 | ]gl_STDINT_INCLUDES[ | ||
340 | int iw = UINTMAX_WIDTH; | ||
341 | ]])], | ||
342 | [gl_cv_header_stdint_width=yes])]) | ||
343 | if test "$gl_cv_header_stdint_width" = yes; then | ||
344 | GL_GENERATE_STDINT_H=false | ||
345 | fi | ||
346 | ;; | ||
347 | *) | ||
348 | dnl Check for <sys/inttypes.h>, and for | ||
349 | dnl <sys/bitypes.h> (used in Linux libc4 >= 4.6.7 and libc5). | ||
350 | AC_CHECK_HEADERS([sys/inttypes.h sys/bitypes.h]) | ||
351 | if test $ac_cv_header_sys_inttypes_h = yes; then | ||
352 | HAVE_SYS_INTTYPES_H=1 | ||
353 | fi | ||
354 | if test $ac_cv_header_sys_bitypes_h = yes; then | ||
355 | HAVE_SYS_BITYPES_H=1 | ||
356 | fi | ||
357 | gl_STDINT_TYPE_PROPERTIES | ||
358 | ;; | ||
359 | esac | ||
360 | |||
361 | dnl The substitute stdint.h needs the substitute limit.h's _GL_INTEGER_WIDTH. | ||
362 | gl_REPLACE_LIMITS_H | ||
363 | |||
364 | AC_SUBST([HAVE_C99_STDINT_H]) | ||
365 | AC_SUBST([HAVE_SYS_BITYPES_H]) | ||
366 | AC_SUBST([HAVE_SYS_INTTYPES_H]) | ||
305 | ]) | 367 | ]) |
306 | 368 | ||
307 | dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES) | 369 | dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES) |
@@ -429,13 +491,9 @@ AC_DEFUN([gl_INTEGER_TYPE_SUFFIX], | |||
429 | dnl gl_STDINT_INCLUDES | 491 | dnl gl_STDINT_INCLUDES |
430 | AC_DEFUN([gl_STDINT_INCLUDES], | 492 | AC_DEFUN([gl_STDINT_INCLUDES], |
431 | [[ | 493 | [[ |
432 | /* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | ||
433 | included before <wchar.h>. */ | ||
434 | #include <stddef.h> | 494 | #include <stddef.h> |
435 | #include <signal.h> | 495 | #include <signal.h> |
436 | #if HAVE_WCHAR_H | 496 | #if HAVE_WCHAR_H |
437 | # include <stdio.h> | ||
438 | # include <time.h> | ||
439 | # include <wchar.h> | 497 | # include <wchar.h> |
440 | #endif | 498 | #endif |
441 | ]]) | 499 | ]]) |
@@ -467,18 +525,7 @@ AC_DEFUN([gl_STDINT_TYPE_PROPERTIES], | |||
467 | dnl requirement that wint_t is "unchanged by default argument promotions". | 525 | dnl requirement that wint_t is "unchanged by default argument promotions". |
468 | dnl In this case gnulib's <wchar.h> and <wctype.h> override wint_t. | 526 | dnl In this case gnulib's <wchar.h> and <wctype.h> override wint_t. |
469 | dnl Set the variable BITSIZEOF_WINT_T accordingly. | 527 | dnl Set the variable BITSIZEOF_WINT_T accordingly. |
470 | if test $BITSIZEOF_WINT_T -lt 32; then | 528 | if test $GNULIBHEADERS_OVERRIDE_WINT_T = 1; then |
471 | BITSIZEOF_WINT_T=32 | 529 | BITSIZEOF_WINT_T=32 |
472 | fi | 530 | fi |
473 | ]) | 531 | ]) |
474 | |||
475 | dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in. | ||
476 | dnl Remove this when we can assume autoconf >= 2.61. | ||
477 | m4_ifdef([AC_COMPUTE_INT], [], [ | ||
478 | AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])]) | ||
479 | ]) | ||
480 | |||
481 | # Hey Emacs! | ||
482 | # Local Variables: | ||
483 | # indent-tabs-mode: nil | ||
484 | # End: | ||
diff --git a/gl/m4/stdint_h.m4 b/gl/m4/stdint_h.m4 index 511ab4e9..70349f6c 100644 --- a/gl/m4/stdint_h.m4 +++ b/gl/m4/stdint_h.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # stdint_h.m4 serial 9 | 1 | # stdint_h.m4 serial 9 |
2 | dnl Copyright (C) 1997-2004, 2006, 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 1997-2004, 2006, 2008-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
diff --git a/gl/m4/stdio_h.m4 b/gl/m4/stdio_h.m4 index ebade067..94271e11 100644 --- a/gl/m4/stdio_h.m4 +++ b/gl/m4/stdio_h.m4 | |||
@@ -1,72 +1,71 @@ | |||
1 | # stdio_h.m4 serial 43 | 1 | # stdio_h.m4 serial 59 |
2 | dnl Copyright (C) 2007-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | AC_DEFUN([gl_STDIO_H], | 7 | AC_DEFUN_ONCE([gl_STDIO_H], |
8 | [ | 8 | [ |
9 | AC_REQUIRE([gl_STDIO_H_DEFAULTS]) | 9 | AC_REQUIRE([gl_STDIO_H_DEFAULTS]) |
10 | AH_VERBATIM([MINGW_ANSI_STDIO], | ||
11 | [/* Use GNU style printf and scanf. */ | ||
12 | #ifndef __USE_MINGW_ANSI_STDIO | ||
13 | # undef __USE_MINGW_ANSI_STDIO | ||
14 | #endif | ||
15 | ]) | ||
16 | AC_DEFINE([__USE_MINGW_ANSI_STDIO]) | ||
10 | gl_NEXT_HEADERS([stdio.h]) | 17 | gl_NEXT_HEADERS([stdio.h]) |
11 | 18 | ||
12 | dnl No need to create extra modules for these functions. Everyone who uses | 19 | dnl Determine whether __USE_MINGW_ANSI_STDIO makes printf and |
13 | dnl <stdio.h> likely needs them. | 20 | dnl inttypes.h behave like gnu instead of system; we must give our |
14 | GNULIB_FSCANF=1 | 21 | dnl printf wrapper the right attribute to match. |
15 | gl_MODULE_INDICATOR([fscanf]) | 22 | AC_CACHE_CHECK([which flavor of printf attribute matches inttypes macros], |
16 | GNULIB_SCANF=1 | 23 | [gl_cv_func_printf_attribute_flavor], |
17 | gl_MODULE_INDICATOR([scanf]) | 24 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ |
18 | GNULIB_FGETC=1 | 25 | #define __STDC_FORMAT_MACROS 1 |
19 | GNULIB_GETC=1 | 26 | #include <stdio.h> |
20 | GNULIB_GETCHAR=1 | 27 | #include <inttypes.h> |
21 | GNULIB_FGETS=1 | 28 | /* For non-mingw systems, compilation will trivially succeed. |
22 | GNULIB_FREAD=1 | 29 | For mingw, compilation will succeed for older mingw (system |
23 | dnl This ifdef is necessary to avoid an error "missing file lib/stdio-read.c" | 30 | printf, "I64d") and fail for newer mingw (gnu printf, "lld"). */ |
24 | dnl "expected source file, required through AC_LIBSOURCES, not found". It is | 31 | #if (defined _WIN32 && ! defined __CYGWIN__) && \ |
25 | dnl also an optimization, to avoid performing a configure check whose result | 32 | (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4)) |
26 | dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING | 33 | extern char PRIdMAX_probe[sizeof PRIdMAX == sizeof "I64d" ? 1 : -1]; |
27 | dnl or GNULIB_NONBLOCKING redundant. | 34 | #endif |
35 | ]])], [gl_cv_func_printf_attribute_flavor=system], | ||
36 | [gl_cv_func_printf_attribute_flavor=gnu])]) | ||
37 | if test "$gl_cv_func_printf_attribute_flavor" = gnu; then | ||
38 | AC_DEFINE([GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU], [1], | ||
39 | [Define to 1 if printf and friends should be labeled with | ||
40 | attribute "__gnu_printf__" instead of "__printf__"]) | ||
41 | fi | ||
42 | |||
43 | dnl This ifdef is an optimization, to avoid performing a configure check whose | ||
44 | dnl result is not used. But it does not make the test of | ||
45 | dnl GNULIB_STDIO_H_NONBLOCKING or GNULIB_NONBLOCKING redundant. | ||
28 | m4_ifdef([gl_NONBLOCKING_IO], [ | 46 | m4_ifdef([gl_NONBLOCKING_IO], [ |
29 | gl_NONBLOCKING_IO | 47 | gl_NONBLOCKING_IO |
30 | if test $gl_cv_have_nonblocking != yes; then | 48 | if test $gl_cv_have_nonblocking != yes; then |
31 | REPLACE_STDIO_READ_FUNCS=1 | 49 | REPLACE_STDIO_READ_FUNCS=1 |
32 | AC_LIBOBJ([stdio-read]) | ||
33 | fi | 50 | fi |
34 | ]) | 51 | ]) |
35 | 52 | ||
36 | dnl No need to create extra modules for these functions. Everyone who uses | 53 | dnl This ifdef is an optimization, to avoid performing a configure check whose |
37 | dnl <stdio.h> likely needs them. | 54 | dnl result is not used. But it does not make the test of |
38 | GNULIB_FPRINTF=1 | 55 | dnl GNULIB_STDIO_H_SIGPIPE or GNULIB_SIGPIPE redundant. |
39 | GNULIB_PRINTF=1 | ||
40 | GNULIB_VFPRINTF=1 | ||
41 | GNULIB_VPRINTF=1 | ||
42 | GNULIB_FPUTC=1 | ||
43 | GNULIB_PUTC=1 | ||
44 | GNULIB_PUTCHAR=1 | ||
45 | GNULIB_FPUTS=1 | ||
46 | GNULIB_PUTS=1 | ||
47 | GNULIB_FWRITE=1 | ||
48 | dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c" | ||
49 | dnl "expected source file, required through AC_LIBSOURCES, not found". It is | ||
50 | dnl also an optimization, to avoid performing a configure check whose result | ||
51 | dnl is not used. But it does not make the test of GNULIB_STDIO_H_SIGPIPE or | ||
52 | dnl GNULIB_SIGPIPE redundant. | ||
53 | m4_ifdef([gl_SIGNAL_SIGPIPE], [ | 56 | m4_ifdef([gl_SIGNAL_SIGPIPE], [ |
54 | gl_SIGNAL_SIGPIPE | 57 | gl_SIGNAL_SIGPIPE |
55 | if test $gl_cv_header_signal_h_SIGPIPE != yes; then | 58 | if test $gl_cv_header_signal_h_SIGPIPE != yes; then |
56 | REPLACE_STDIO_WRITE_FUNCS=1 | 59 | REPLACE_STDIO_WRITE_FUNCS=1 |
57 | AC_LIBOBJ([stdio-write]) | ||
58 | fi | 60 | fi |
59 | ]) | 61 | ]) |
60 | dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c" | 62 | dnl This ifdef is an optimization, to avoid performing a configure check whose |
61 | dnl "expected source file, required through AC_LIBSOURCES, not found". It is | 63 | dnl result is not used. But it does not make the test of |
62 | dnl also an optimization, to avoid performing a configure check whose result | 64 | dnl GNULIB_STDIO_H_NONBLOCKING or GNULIB_NONBLOCKING redundant. |
63 | dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING | ||
64 | dnl or GNULIB_NONBLOCKING redundant. | ||
65 | m4_ifdef([gl_NONBLOCKING_IO], [ | 65 | m4_ifdef([gl_NONBLOCKING_IO], [ |
66 | gl_NONBLOCKING_IO | 66 | gl_NONBLOCKING_IO |
67 | if test $gl_cv_have_nonblocking != yes; then | 67 | if test $gl_cv_have_nonblocking != yes; then |
68 | REPLACE_STDIO_WRITE_FUNCS=1 | 68 | REPLACE_STDIO_WRITE_FUNCS=1 |
69 | AC_LIBOBJ([stdio-write]) | ||
70 | fi | 69 | fi |
71 | ]) | 70 | ]) |
72 | 71 | ||
@@ -76,73 +75,104 @@ AC_DEFUN([gl_STDIO_H], | |||
76 | gl_WARN_ON_USE_PREPARE([[#include <stdio.h> | 75 | gl_WARN_ON_USE_PREPARE([[#include <stdio.h> |
77 | ]], [dprintf fpurge fseeko ftello getdelim getline gets pclose popen | 76 | ]], [dprintf fpurge fseeko ftello getdelim getline gets pclose popen |
78 | renameat snprintf tmpfile vdprintf vsnprintf]) | 77 | renameat snprintf tmpfile vdprintf vsnprintf]) |
78 | |||
79 | AC_REQUIRE([AC_C_RESTRICT]) | ||
80 | |||
81 | AC_CHECK_DECLS_ONCE([fcloseall]) | ||
82 | if test $ac_cv_have_decl_fcloseall = no; then | ||
83 | HAVE_DECL_FCLOSEALL=0 | ||
84 | fi | ||
79 | ]) | 85 | ]) |
80 | 86 | ||
87 | # gl_STDIO_MODULE_INDICATOR([modulename]) | ||
88 | # sets the shell variable that indicates the presence of the given module | ||
89 | # to a C preprocessor expression that will evaluate to 1. | ||
90 | # This macro invocation must not occur in macros that are AC_REQUIREd. | ||
81 | AC_DEFUN([gl_STDIO_MODULE_INDICATOR], | 91 | AC_DEFUN([gl_STDIO_MODULE_INDICATOR], |
82 | [ | 92 | [ |
83 | dnl Use AC_REQUIRE here, so that the default settings are expanded once only. | 93 | dnl Ensure to expand the default settings once only. |
84 | AC_REQUIRE([gl_STDIO_H_DEFAULTS]) | 94 | gl_STDIO_H_REQUIRE_DEFAULTS |
85 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) | 95 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) |
86 | dnl Define it also as a C macro, for the benefit of the unit tests. | 96 | dnl Define it also as a C macro, for the benefit of the unit tests. |
87 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) | 97 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) |
88 | ]) | 98 | ]) |
89 | 99 | ||
100 | # Initializes the default values for AC_SUBSTed shell variables. | ||
101 | # This macro must not be AC_REQUIREd. It must only be invoked, and only | ||
102 | # outside of macros or in macros that are not AC_REQUIREd. | ||
103 | AC_DEFUN([gl_STDIO_H_REQUIRE_DEFAULTS], | ||
104 | [ | ||
105 | m4_defun(GL_MODULE_INDICATOR_PREFIX[_STDIO_H_MODULE_INDICATOR_DEFAULTS], [ | ||
106 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DPRINTF]) | ||
107 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCLOSE]) | ||
108 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FDOPEN]) | ||
109 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FFLUSH]) | ||
110 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FGETC]) | ||
111 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FGETS]) | ||
112 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FOPEN]) | ||
113 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FOPEN_GNU]) | ||
114 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FPRINTF]) | ||
115 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FPRINTF_POSIX]) | ||
116 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FPURGE]) | ||
117 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FPUTC]) | ||
118 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FPUTS]) | ||
119 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREAD]) | ||
120 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREOPEN]) | ||
121 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSCANF]) | ||
122 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSEEK]) | ||
123 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSEEKO]) | ||
124 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FTELL]) | ||
125 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FTELLO]) | ||
126 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FWRITE]) | ||
127 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETC]) | ||
128 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETCHAR]) | ||
129 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETDELIM]) | ||
130 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLINE]) | ||
131 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OBSTACK_PRINTF]) | ||
132 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OBSTACK_PRINTF_POSIX]) | ||
133 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PCLOSE]) | ||
134 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PERROR]) | ||
135 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POPEN]) | ||
136 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PRINTF]) | ||
137 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PRINTF_POSIX]) | ||
138 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PUTC]) | ||
139 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PUTCHAR]) | ||
140 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PUTS]) | ||
141 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REMOVE]) | ||
142 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RENAME]) | ||
143 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RENAMEAT]) | ||
144 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SCANF]) | ||
145 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SNPRINTF]) | ||
146 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SPRINTF_POSIX]) | ||
147 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STDIO_H_NONBLOCKING]) | ||
148 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STDIO_H_SIGPIPE]) | ||
149 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TMPFILE]) | ||
150 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VASPRINTF]) | ||
151 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VFSCANF]) | ||
152 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VSCANF]) | ||
153 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VDPRINTF]) | ||
154 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VFPRINTF]) | ||
155 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VFPRINTF_POSIX]) | ||
156 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VPRINTF]) | ||
157 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VPRINTF_POSIX]) | ||
158 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VSNPRINTF]) | ||
159 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_VSPRINTF_POSIX]) | ||
160 | dnl Support Microsoft deprecated alias function names by default. | ||
161 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_FCLOSEALL], [1]) | ||
162 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_FDOPEN], [1]) | ||
163 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_FILENO], [1]) | ||
164 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GETW], [1]) | ||
165 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_PUTW], [1]) | ||
166 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_TEMPNAM], [1]) | ||
167 | ]) | ||
168 | m4_require(GL_MODULE_INDICATOR_PREFIX[_STDIO_H_MODULE_INDICATOR_DEFAULTS]) | ||
169 | AC_REQUIRE([gl_STDIO_H_DEFAULTS]) | ||
170 | ]) | ||
171 | |||
90 | AC_DEFUN([gl_STDIO_H_DEFAULTS], | 172 | AC_DEFUN([gl_STDIO_H_DEFAULTS], |
91 | [ | 173 | [ |
92 | GNULIB_DPRINTF=0; AC_SUBST([GNULIB_DPRINTF]) | ||
93 | GNULIB_FCLOSE=0; AC_SUBST([GNULIB_FCLOSE]) | ||
94 | GNULIB_FDOPEN=0; AC_SUBST([GNULIB_FDOPEN]) | ||
95 | GNULIB_FFLUSH=0; AC_SUBST([GNULIB_FFLUSH]) | ||
96 | GNULIB_FGETC=0; AC_SUBST([GNULIB_FGETC]) | ||
97 | GNULIB_FGETS=0; AC_SUBST([GNULIB_FGETS]) | ||
98 | GNULIB_FOPEN=0; AC_SUBST([GNULIB_FOPEN]) | ||
99 | GNULIB_FPRINTF=0; AC_SUBST([GNULIB_FPRINTF]) | ||
100 | GNULIB_FPRINTF_POSIX=0; AC_SUBST([GNULIB_FPRINTF_POSIX]) | ||
101 | GNULIB_FPURGE=0; AC_SUBST([GNULIB_FPURGE]) | ||
102 | GNULIB_FPUTC=0; AC_SUBST([GNULIB_FPUTC]) | ||
103 | GNULIB_FPUTS=0; AC_SUBST([GNULIB_FPUTS]) | ||
104 | GNULIB_FREAD=0; AC_SUBST([GNULIB_FREAD]) | ||
105 | GNULIB_FREOPEN=0; AC_SUBST([GNULIB_FREOPEN]) | ||
106 | GNULIB_FSCANF=0; AC_SUBST([GNULIB_FSCANF]) | ||
107 | GNULIB_FSEEK=0; AC_SUBST([GNULIB_FSEEK]) | ||
108 | GNULIB_FSEEKO=0; AC_SUBST([GNULIB_FSEEKO]) | ||
109 | GNULIB_FTELL=0; AC_SUBST([GNULIB_FTELL]) | ||
110 | GNULIB_FTELLO=0; AC_SUBST([GNULIB_FTELLO]) | ||
111 | GNULIB_FWRITE=0; AC_SUBST([GNULIB_FWRITE]) | ||
112 | GNULIB_GETC=0; AC_SUBST([GNULIB_GETC]) | ||
113 | GNULIB_GETCHAR=0; AC_SUBST([GNULIB_GETCHAR]) | ||
114 | GNULIB_GETDELIM=0; AC_SUBST([GNULIB_GETDELIM]) | ||
115 | GNULIB_GETLINE=0; AC_SUBST([GNULIB_GETLINE]) | ||
116 | GNULIB_OBSTACK_PRINTF=0; AC_SUBST([GNULIB_OBSTACK_PRINTF]) | ||
117 | GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX]) | ||
118 | GNULIB_PCLOSE=0; AC_SUBST([GNULIB_PCLOSE]) | ||
119 | GNULIB_PERROR=0; AC_SUBST([GNULIB_PERROR]) | ||
120 | GNULIB_POPEN=0; AC_SUBST([GNULIB_POPEN]) | ||
121 | GNULIB_PRINTF=0; AC_SUBST([GNULIB_PRINTF]) | ||
122 | GNULIB_PRINTF_POSIX=0; AC_SUBST([GNULIB_PRINTF_POSIX]) | ||
123 | GNULIB_PUTC=0; AC_SUBST([GNULIB_PUTC]) | ||
124 | GNULIB_PUTCHAR=0; AC_SUBST([GNULIB_PUTCHAR]) | ||
125 | GNULIB_PUTS=0; AC_SUBST([GNULIB_PUTS]) | ||
126 | GNULIB_REMOVE=0; AC_SUBST([GNULIB_REMOVE]) | ||
127 | GNULIB_RENAME=0; AC_SUBST([GNULIB_RENAME]) | ||
128 | GNULIB_RENAMEAT=0; AC_SUBST([GNULIB_RENAMEAT]) | ||
129 | GNULIB_SCANF=0; AC_SUBST([GNULIB_SCANF]) | ||
130 | GNULIB_SNPRINTF=0; AC_SUBST([GNULIB_SNPRINTF]) | ||
131 | GNULIB_SPRINTF_POSIX=0; AC_SUBST([GNULIB_SPRINTF_POSIX]) | ||
132 | GNULIB_STDIO_H_NONBLOCKING=0; AC_SUBST([GNULIB_STDIO_H_NONBLOCKING]) | ||
133 | GNULIB_STDIO_H_SIGPIPE=0; AC_SUBST([GNULIB_STDIO_H_SIGPIPE]) | ||
134 | GNULIB_TMPFILE=0; AC_SUBST([GNULIB_TMPFILE]) | ||
135 | GNULIB_VASPRINTF=0; AC_SUBST([GNULIB_VASPRINTF]) | ||
136 | GNULIB_VFSCANF=0; AC_SUBST([GNULIB_VFSCANF]) | ||
137 | GNULIB_VSCANF=0; AC_SUBST([GNULIB_VSCANF]) | ||
138 | GNULIB_VDPRINTF=0; AC_SUBST([GNULIB_VDPRINTF]) | ||
139 | GNULIB_VFPRINTF=0; AC_SUBST([GNULIB_VFPRINTF]) | ||
140 | GNULIB_VFPRINTF_POSIX=0; AC_SUBST([GNULIB_VFPRINTF_POSIX]) | ||
141 | GNULIB_VPRINTF=0; AC_SUBST([GNULIB_VPRINTF]) | ||
142 | GNULIB_VPRINTF_POSIX=0; AC_SUBST([GNULIB_VPRINTF_POSIX]) | ||
143 | GNULIB_VSNPRINTF=0; AC_SUBST([GNULIB_VSNPRINTF]) | ||
144 | GNULIB_VSPRINTF_POSIX=0; AC_SUBST([GNULIB_VSPRINTF_POSIX]) | ||
145 | dnl Assume proper GNU behavior unless another module says otherwise. | 174 | dnl Assume proper GNU behavior unless another module says otherwise. |
175 | HAVE_DECL_FCLOSEALL=1; AC_SUBST([HAVE_DECL_FCLOSEALL]) | ||
146 | HAVE_DECL_FPURGE=1; AC_SUBST([HAVE_DECL_FPURGE]) | 176 | HAVE_DECL_FPURGE=1; AC_SUBST([HAVE_DECL_FPURGE]) |
147 | HAVE_DECL_FSEEKO=1; AC_SUBST([HAVE_DECL_FSEEKO]) | 177 | HAVE_DECL_FSEEKO=1; AC_SUBST([HAVE_DECL_FSEEKO]) |
148 | HAVE_DECL_FTELLO=1; AC_SUBST([HAVE_DECL_FTELLO]) | 178 | HAVE_DECL_FTELLO=1; AC_SUBST([HAVE_DECL_FTELLO]) |
@@ -164,6 +194,7 @@ AC_DEFUN([gl_STDIO_H_DEFAULTS], | |||
164 | REPLACE_FDOPEN=0; AC_SUBST([REPLACE_FDOPEN]) | 194 | REPLACE_FDOPEN=0; AC_SUBST([REPLACE_FDOPEN]) |
165 | REPLACE_FFLUSH=0; AC_SUBST([REPLACE_FFLUSH]) | 195 | REPLACE_FFLUSH=0; AC_SUBST([REPLACE_FFLUSH]) |
166 | REPLACE_FOPEN=0; AC_SUBST([REPLACE_FOPEN]) | 196 | REPLACE_FOPEN=0; AC_SUBST([REPLACE_FOPEN]) |
197 | REPLACE_FOPEN_FOR_FOPEN_GNU=0; AC_SUBST([REPLACE_FOPEN_FOR_FOPEN_GNU]) | ||
167 | REPLACE_FPRINTF=0; AC_SUBST([REPLACE_FPRINTF]) | 198 | REPLACE_FPRINTF=0; AC_SUBST([REPLACE_FPRINTF]) |
168 | REPLACE_FPURGE=0; AC_SUBST([REPLACE_FPURGE]) | 199 | REPLACE_FPURGE=0; AC_SUBST([REPLACE_FPURGE]) |
169 | REPLACE_FREOPEN=0; AC_SUBST([REPLACE_FREOPEN]) | 200 | REPLACE_FREOPEN=0; AC_SUBST([REPLACE_FREOPEN]) |
diff --git a/gl/m4/stdlib_h.m4 b/gl/m4/stdlib_h.m4 index 2027ab3c..e96be22f 100644 --- a/gl/m4/stdlib_h.m4 +++ b/gl/m4/stdlib_h.m4 | |||
@@ -1,10 +1,10 @@ | |||
1 | # stdlib_h.m4 serial 42 | 1 | # stdlib_h.m4 serial 66 |
2 | dnl Copyright (C) 2007-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | AC_DEFUN([gl_STDLIB_H], | 7 | AC_DEFUN_ONCE([gl_STDLIB_H], |
8 | [ | 8 | [ |
9 | AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) | 9 | AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) |
10 | gl_NEXT_HEADERS([stdlib.h]) | 10 | gl_NEXT_HEADERS([stdlib.h]) |
@@ -14,104 +14,187 @@ AC_DEFUN([gl_STDLIB_H], | |||
14 | dnl guaranteed by C89. | 14 | dnl guaranteed by C89. |
15 | gl_WARN_ON_USE_PREPARE([[#include <stdlib.h> | 15 | gl_WARN_ON_USE_PREPARE([[#include <stdlib.h> |
16 | #if HAVE_SYS_LOADAVG_H | 16 | #if HAVE_SYS_LOADAVG_H |
17 | /* OpenIndiana has a bug: <sys/time.h> must be included before | ||
18 | <sys/loadavg.h>. */ | ||
19 | # include <sys/time.h> | ||
17 | # include <sys/loadavg.h> | 20 | # include <sys/loadavg.h> |
18 | #endif | 21 | #endif |
19 | #if HAVE_RANDOM_H | 22 | #if HAVE_RANDOM_H |
20 | # include <random.h> | 23 | # include <random.h> |
21 | #endif | 24 | #endif |
22 | ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt | 25 | ]], [_Exit aligned_alloc atoll canonicalize_file_name free |
23 | initstate initstate_r mkdtemp mkostemp mkostemps mkstemp mkstemps | 26 | getloadavg getsubopt grantpt |
24 | posix_openpt ptsname ptsname_r random random_r realpath rpmatch | 27 | initstate initstate_r mbtowc mkdtemp mkostemp mkostemps mkstemp mkstemps |
25 | secure_getenv setenv setstate setstate_r srandom srandom_r | 28 | posix_memalign posix_openpt ptsname ptsname_r qsort_r |
26 | strtod strtoll strtoull unlockpt unsetenv]) | 29 | random random_r reallocarray realpath rpmatch secure_getenv setenv |
30 | setstate setstate_r srandom srandom_r | ||
31 | strtod strtol strtold strtoll strtoul strtoull unlockpt unsetenv]) | ||
32 | |||
33 | AC_REQUIRE([AC_C_RESTRICT]) | ||
34 | |||
35 | AC_CHECK_DECLS_ONCE([ecvt]) | ||
36 | if test $ac_cv_have_decl_ecvt = no; then | ||
37 | HAVE_DECL_ECVT=0 | ||
38 | fi | ||
39 | AC_CHECK_DECLS_ONCE([fcvt]) | ||
40 | if test $ac_cv_have_decl_fcvt = no; then | ||
41 | HAVE_DECL_FCVT=0 | ||
42 | fi | ||
43 | AC_CHECK_DECLS_ONCE([gcvt]) | ||
44 | if test $ac_cv_have_decl_gcvt = no; then | ||
45 | HAVE_DECL_GCVT=0 | ||
46 | fi | ||
27 | ]) | 47 | ]) |
28 | 48 | ||
49 | # gl_STDLIB_MODULE_INDICATOR([modulename]) | ||
50 | # sets the shell variable that indicates the presence of the given module | ||
51 | # to a C preprocessor expression that will evaluate to 1. | ||
52 | # This macro invocation must not occur in macros that are AC_REQUIREd. | ||
29 | AC_DEFUN([gl_STDLIB_MODULE_INDICATOR], | 53 | AC_DEFUN([gl_STDLIB_MODULE_INDICATOR], |
30 | [ | 54 | [ |
31 | dnl Use AC_REQUIRE here, so that the default settings are expanded once only. | 55 | dnl Ensure to expand the default settings once only. |
32 | AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) | 56 | gl_STDLIB_H_REQUIRE_DEFAULTS |
33 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) | 57 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) |
34 | dnl Define it also as a C macro, for the benefit of the unit tests. | 58 | dnl Define it also as a C macro, for the benefit of the unit tests. |
35 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) | 59 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) |
36 | ]) | 60 | ]) |
37 | 61 | ||
62 | # Initializes the default values for AC_SUBSTed shell variables. | ||
63 | # This macro must not be AC_REQUIREd. It must only be invoked, and only | ||
64 | # outside of macros or in macros that are not AC_REQUIREd. | ||
65 | AC_DEFUN([gl_STDLIB_H_REQUIRE_DEFAULTS], | ||
66 | [ | ||
67 | m4_defun(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS], [ | ||
68 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB__EXIT]) | ||
69 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ALIGNED_ALLOC]) | ||
70 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATOLL]) | ||
71 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CALLOC_GNU]) | ||
72 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CALLOC_POSIX]) | ||
73 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CANONICALIZE_FILE_NAME]) | ||
74 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREE_POSIX]) | ||
75 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOADAVG]) | ||
76 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETSUBOPT]) | ||
77 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GRANTPT]) | ||
78 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MALLOC_GNU]) | ||
79 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MALLOC_POSIX]) | ||
80 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBTOWC]) | ||
81 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKDTEMP]) | ||
82 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKOSTEMP]) | ||
83 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKOSTEMPS]) | ||
84 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKSTEMP]) | ||
85 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKSTEMPS]) | ||
86 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POSIX_MEMALIGN]) | ||
87 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POSIX_OPENPT]) | ||
88 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTSNAME]) | ||
89 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTSNAME_R]) | ||
90 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PUTENV]) | ||
91 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_QSORT_R]) | ||
92 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RANDOM]) | ||
93 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RANDOM_R]) | ||
94 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALLOCARRAY]) | ||
95 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALLOC_GNU]) | ||
96 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALLOC_POSIX]) | ||
97 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REALPATH]) | ||
98 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RPMATCH]) | ||
99 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SECURE_GETENV]) | ||
100 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETENV]) | ||
101 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOD]) | ||
102 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOL]) | ||
103 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOLD]) | ||
104 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOLL]) | ||
105 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOUL]) | ||
106 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOULL]) | ||
107 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SYSTEM_POSIX]) | ||
108 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLOCKPT]) | ||
109 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNSETENV]) | ||
110 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTOMB]) | ||
111 | dnl Support Microsoft deprecated alias function names by default. | ||
112 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ECVT], [1]) | ||
113 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_FCVT], [1]) | ||
114 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GCVT], [1]) | ||
115 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_MKTEMP], [1]) | ||
116 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_PUTENV], [1]) | ||
117 | ]) | ||
118 | m4_require(GL_MODULE_INDICATOR_PREFIX[_STDLIB_H_MODULE_INDICATOR_DEFAULTS]) | ||
119 | AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) | ||
120 | ]) | ||
121 | |||
38 | AC_DEFUN([gl_STDLIB_H_DEFAULTS], | 122 | AC_DEFUN([gl_STDLIB_H_DEFAULTS], |
39 | [ | 123 | [ |
40 | GNULIB__EXIT=0; AC_SUBST([GNULIB__EXIT]) | ||
41 | GNULIB_ATOLL=0; AC_SUBST([GNULIB_ATOLL]) | ||
42 | GNULIB_CALLOC_POSIX=0; AC_SUBST([GNULIB_CALLOC_POSIX]) | ||
43 | GNULIB_CANONICALIZE_FILE_NAME=0; AC_SUBST([GNULIB_CANONICALIZE_FILE_NAME]) | ||
44 | GNULIB_GETLOADAVG=0; AC_SUBST([GNULIB_GETLOADAVG]) | ||
45 | GNULIB_GETSUBOPT=0; AC_SUBST([GNULIB_GETSUBOPT]) | ||
46 | GNULIB_GRANTPT=0; AC_SUBST([GNULIB_GRANTPT]) | ||
47 | GNULIB_MALLOC_POSIX=0; AC_SUBST([GNULIB_MALLOC_POSIX]) | ||
48 | GNULIB_MBTOWC=0; AC_SUBST([GNULIB_MBTOWC]) | ||
49 | GNULIB_MKDTEMP=0; AC_SUBST([GNULIB_MKDTEMP]) | ||
50 | GNULIB_MKOSTEMP=0; AC_SUBST([GNULIB_MKOSTEMP]) | ||
51 | GNULIB_MKOSTEMPS=0; AC_SUBST([GNULIB_MKOSTEMPS]) | ||
52 | GNULIB_MKSTEMP=0; AC_SUBST([GNULIB_MKSTEMP]) | ||
53 | GNULIB_MKSTEMPS=0; AC_SUBST([GNULIB_MKSTEMPS]) | ||
54 | GNULIB_POSIX_OPENPT=0; AC_SUBST([GNULIB_POSIX_OPENPT]) | ||
55 | GNULIB_PTSNAME=0; AC_SUBST([GNULIB_PTSNAME]) | ||
56 | GNULIB_PTSNAME_R=0; AC_SUBST([GNULIB_PTSNAME_R]) | ||
57 | GNULIB_PUTENV=0; AC_SUBST([GNULIB_PUTENV]) | ||
58 | GNULIB_RANDOM=0; AC_SUBST([GNULIB_RANDOM]) | ||
59 | GNULIB_RANDOM_R=0; AC_SUBST([GNULIB_RANDOM_R]) | ||
60 | GNULIB_REALLOC_POSIX=0; AC_SUBST([GNULIB_REALLOC_POSIX]) | ||
61 | GNULIB_REALPATH=0; AC_SUBST([GNULIB_REALPATH]) | ||
62 | GNULIB_RPMATCH=0; AC_SUBST([GNULIB_RPMATCH]) | ||
63 | GNULIB_SECURE_GETENV=0; AC_SUBST([GNULIB_SECURE_GETENV]) | ||
64 | GNULIB_SETENV=0; AC_SUBST([GNULIB_SETENV]) | ||
65 | GNULIB_STRTOD=0; AC_SUBST([GNULIB_STRTOD]) | ||
66 | GNULIB_STRTOLL=0; AC_SUBST([GNULIB_STRTOLL]) | ||
67 | GNULIB_STRTOULL=0; AC_SUBST([GNULIB_STRTOULL]) | ||
68 | GNULIB_SYSTEM_POSIX=0; AC_SUBST([GNULIB_SYSTEM_POSIX]) | ||
69 | GNULIB_UNLOCKPT=0; AC_SUBST([GNULIB_UNLOCKPT]) | ||
70 | GNULIB_UNSETENV=0; AC_SUBST([GNULIB_UNSETENV]) | ||
71 | GNULIB_WCTOMB=0; AC_SUBST([GNULIB_WCTOMB]) | ||
72 | dnl Assume proper GNU behavior unless another module says otherwise. | 124 | dnl Assume proper GNU behavior unless another module says otherwise. |
73 | HAVE__EXIT=1; AC_SUBST([HAVE__EXIT]) | 125 | HAVE__EXIT=1; AC_SUBST([HAVE__EXIT]) |
126 | HAVE_ALIGNED_ALLOC=1; AC_SUBST([HAVE_ALIGNED_ALLOC]) | ||
74 | HAVE_ATOLL=1; AC_SUBST([HAVE_ATOLL]) | 127 | HAVE_ATOLL=1; AC_SUBST([HAVE_ATOLL]) |
75 | HAVE_CANONICALIZE_FILE_NAME=1; AC_SUBST([HAVE_CANONICALIZE_FILE_NAME]) | 128 | HAVE_CANONICALIZE_FILE_NAME=1; AC_SUBST([HAVE_CANONICALIZE_FILE_NAME]) |
129 | HAVE_DECL_ECVT=1; AC_SUBST([HAVE_DECL_ECVT]) | ||
130 | HAVE_DECL_FCVT=1; AC_SUBST([HAVE_DECL_FCVT]) | ||
131 | HAVE_DECL_GCVT=1; AC_SUBST([HAVE_DECL_GCVT]) | ||
76 | HAVE_DECL_GETLOADAVG=1; AC_SUBST([HAVE_DECL_GETLOADAVG]) | 132 | HAVE_DECL_GETLOADAVG=1; AC_SUBST([HAVE_DECL_GETLOADAVG]) |
77 | HAVE_GETSUBOPT=1; AC_SUBST([HAVE_GETSUBOPT]) | 133 | HAVE_GETSUBOPT=1; AC_SUBST([HAVE_GETSUBOPT]) |
78 | HAVE_GRANTPT=1; AC_SUBST([HAVE_GRANTPT]) | 134 | HAVE_GRANTPT=1; AC_SUBST([HAVE_GRANTPT]) |
135 | HAVE_INITSTATE=1; AC_SUBST([HAVE_INITSTATE]) | ||
136 | HAVE_DECL_INITSTATE=1; AC_SUBST([HAVE_DECL_INITSTATE]) | ||
137 | HAVE_MBTOWC=1; AC_SUBST([HAVE_MBTOWC]) | ||
79 | HAVE_MKDTEMP=1; AC_SUBST([HAVE_MKDTEMP]) | 138 | HAVE_MKDTEMP=1; AC_SUBST([HAVE_MKDTEMP]) |
80 | HAVE_MKOSTEMP=1; AC_SUBST([HAVE_MKOSTEMP]) | 139 | HAVE_MKOSTEMP=1; AC_SUBST([HAVE_MKOSTEMP]) |
81 | HAVE_MKOSTEMPS=1; AC_SUBST([HAVE_MKOSTEMPS]) | 140 | HAVE_MKOSTEMPS=1; AC_SUBST([HAVE_MKOSTEMPS]) |
82 | HAVE_MKSTEMP=1; AC_SUBST([HAVE_MKSTEMP]) | 141 | HAVE_MKSTEMP=1; AC_SUBST([HAVE_MKSTEMP]) |
83 | HAVE_MKSTEMPS=1; AC_SUBST([HAVE_MKSTEMPS]) | 142 | HAVE_MKSTEMPS=1; AC_SUBST([HAVE_MKSTEMPS]) |
143 | HAVE_POSIX_MEMALIGN=1; AC_SUBST([HAVE_POSIX_MEMALIGN]) | ||
84 | HAVE_POSIX_OPENPT=1; AC_SUBST([HAVE_POSIX_OPENPT]) | 144 | HAVE_POSIX_OPENPT=1; AC_SUBST([HAVE_POSIX_OPENPT]) |
85 | HAVE_PTSNAME=1; AC_SUBST([HAVE_PTSNAME]) | 145 | HAVE_PTSNAME=1; AC_SUBST([HAVE_PTSNAME]) |
86 | HAVE_PTSNAME_R=1; AC_SUBST([HAVE_PTSNAME_R]) | 146 | HAVE_PTSNAME_R=1; AC_SUBST([HAVE_PTSNAME_R]) |
147 | HAVE_QSORT_R=1; AC_SUBST([HAVE_QSORT_R]) | ||
87 | HAVE_RANDOM=1; AC_SUBST([HAVE_RANDOM]) | 148 | HAVE_RANDOM=1; AC_SUBST([HAVE_RANDOM]) |
88 | HAVE_RANDOM_H=1; AC_SUBST([HAVE_RANDOM_H]) | 149 | HAVE_RANDOM_H=1; AC_SUBST([HAVE_RANDOM_H]) |
89 | HAVE_RANDOM_R=1; AC_SUBST([HAVE_RANDOM_R]) | 150 | HAVE_RANDOM_R=1; AC_SUBST([HAVE_RANDOM_R]) |
151 | HAVE_REALLOCARRAY=1; AC_SUBST([HAVE_REALLOCARRAY]) | ||
90 | HAVE_REALPATH=1; AC_SUBST([HAVE_REALPATH]) | 152 | HAVE_REALPATH=1; AC_SUBST([HAVE_REALPATH]) |
91 | HAVE_RPMATCH=1; AC_SUBST([HAVE_RPMATCH]) | 153 | HAVE_RPMATCH=1; AC_SUBST([HAVE_RPMATCH]) |
92 | HAVE_SECURE_GETENV=1; AC_SUBST([HAVE_SECURE_GETENV]) | 154 | HAVE_SECURE_GETENV=1; AC_SUBST([HAVE_SECURE_GETENV]) |
93 | HAVE_SETENV=1; AC_SUBST([HAVE_SETENV]) | 155 | HAVE_SETENV=1; AC_SUBST([HAVE_SETENV]) |
94 | HAVE_DECL_SETENV=1; AC_SUBST([HAVE_DECL_SETENV]) | 156 | HAVE_DECL_SETENV=1; AC_SUBST([HAVE_DECL_SETENV]) |
157 | HAVE_SETSTATE=1; AC_SUBST([HAVE_SETSTATE]) | ||
158 | HAVE_DECL_SETSTATE=1; AC_SUBST([HAVE_DECL_SETSTATE]) | ||
95 | HAVE_STRTOD=1; AC_SUBST([HAVE_STRTOD]) | 159 | HAVE_STRTOD=1; AC_SUBST([HAVE_STRTOD]) |
160 | HAVE_STRTOL=1; AC_SUBST([HAVE_STRTOL]) | ||
161 | HAVE_STRTOLD=1; AC_SUBST([HAVE_STRTOLD]) | ||
96 | HAVE_STRTOLL=1; AC_SUBST([HAVE_STRTOLL]) | 162 | HAVE_STRTOLL=1; AC_SUBST([HAVE_STRTOLL]) |
163 | HAVE_STRTOUL=1; AC_SUBST([HAVE_STRTOUL]) | ||
97 | HAVE_STRTOULL=1; AC_SUBST([HAVE_STRTOULL]) | 164 | HAVE_STRTOULL=1; AC_SUBST([HAVE_STRTOULL]) |
98 | HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA]) | 165 | HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA]) |
99 | HAVE_SYS_LOADAVG_H=0; AC_SUBST([HAVE_SYS_LOADAVG_H]) | 166 | HAVE_SYS_LOADAVG_H=0; AC_SUBST([HAVE_SYS_LOADAVG_H]) |
100 | HAVE_UNLOCKPT=1; AC_SUBST([HAVE_UNLOCKPT]) | 167 | HAVE_UNLOCKPT=1; AC_SUBST([HAVE_UNLOCKPT]) |
101 | HAVE_DECL_UNSETENV=1; AC_SUBST([HAVE_DECL_UNSETENV]) | 168 | HAVE_DECL_UNSETENV=1; AC_SUBST([HAVE_DECL_UNSETENV]) |
102 | REPLACE_CALLOC=0; AC_SUBST([REPLACE_CALLOC]) | 169 | REPLACE_ALIGNED_ALLOC=0; AC_SUBST([REPLACE_ALIGNED_ALLOC]) |
170 | REPLACE_CALLOC_FOR_CALLOC_GNU=0; AC_SUBST([REPLACE_CALLOC_FOR_CALLOC_GNU]) | ||
171 | REPLACE_CALLOC_FOR_CALLOC_POSIX=0; AC_SUBST([REPLACE_CALLOC_FOR_CALLOC_POSIX]) | ||
103 | REPLACE_CANONICALIZE_FILE_NAME=0; AC_SUBST([REPLACE_CANONICALIZE_FILE_NAME]) | 172 | REPLACE_CANONICALIZE_FILE_NAME=0; AC_SUBST([REPLACE_CANONICALIZE_FILE_NAME]) |
104 | REPLACE_MALLOC=0; AC_SUBST([REPLACE_MALLOC]) | 173 | REPLACE_FREE=0; AC_SUBST([REPLACE_FREE]) |
174 | REPLACE_INITSTATE=0; AC_SUBST([REPLACE_INITSTATE]) | ||
175 | REPLACE_MALLOC_FOR_MALLOC_GNU=0; AC_SUBST([REPLACE_MALLOC_FOR_MALLOC_GNU]) | ||
176 | REPLACE_MALLOC_FOR_MALLOC_POSIX=0; AC_SUBST([REPLACE_MALLOC_FOR_MALLOC_POSIX]) | ||
105 | REPLACE_MBTOWC=0; AC_SUBST([REPLACE_MBTOWC]) | 177 | REPLACE_MBTOWC=0; AC_SUBST([REPLACE_MBTOWC]) |
106 | REPLACE_MKSTEMP=0; AC_SUBST([REPLACE_MKSTEMP]) | 178 | REPLACE_MKSTEMP=0; AC_SUBST([REPLACE_MKSTEMP]) |
179 | REPLACE_POSIX_MEMALIGN=0; AC_SUBST([REPLACE_POSIX_MEMALIGN]) | ||
107 | REPLACE_PTSNAME=0; AC_SUBST([REPLACE_PTSNAME]) | 180 | REPLACE_PTSNAME=0; AC_SUBST([REPLACE_PTSNAME]) |
108 | REPLACE_PTSNAME_R=0; AC_SUBST([REPLACE_PTSNAME_R]) | 181 | REPLACE_PTSNAME_R=0; AC_SUBST([REPLACE_PTSNAME_R]) |
109 | REPLACE_PUTENV=0; AC_SUBST([REPLACE_PUTENV]) | 182 | REPLACE_PUTENV=0; AC_SUBST([REPLACE_PUTENV]) |
183 | REPLACE_QSORT_R=0; AC_SUBST([REPLACE_QSORT_R]) | ||
184 | REPLACE_RANDOM=0; AC_SUBST([REPLACE_RANDOM]) | ||
110 | REPLACE_RANDOM_R=0; AC_SUBST([REPLACE_RANDOM_R]) | 185 | REPLACE_RANDOM_R=0; AC_SUBST([REPLACE_RANDOM_R]) |
111 | REPLACE_REALLOC=0; AC_SUBST([REPLACE_REALLOC]) | 186 | REPLACE_REALLOC_FOR_REALLOC_GNU=0; AC_SUBST([REPLACE_REALLOC_FOR_REALLOC_GNU]) |
187 | REPLACE_REALLOC_FOR_REALLOC_POSIX=0; AC_SUBST([REPLACE_REALLOC_FOR_REALLOC_POSIX]) | ||
188 | REPLACE_REALLOCARRAY=0; AC_SUBST([REPLACE_REALLOCARRAY]) | ||
112 | REPLACE_REALPATH=0; AC_SUBST([REPLACE_REALPATH]) | 189 | REPLACE_REALPATH=0; AC_SUBST([REPLACE_REALPATH]) |
113 | REPLACE_SETENV=0; AC_SUBST([REPLACE_SETENV]) | 190 | REPLACE_SETENV=0; AC_SUBST([REPLACE_SETENV]) |
191 | REPLACE_SETSTATE=0; AC_SUBST([REPLACE_SETSTATE]) | ||
114 | REPLACE_STRTOD=0; AC_SUBST([REPLACE_STRTOD]) | 192 | REPLACE_STRTOD=0; AC_SUBST([REPLACE_STRTOD]) |
193 | REPLACE_STRTOL=0; AC_SUBST([REPLACE_STRTOL]) | ||
194 | REPLACE_STRTOLD=0; AC_SUBST([REPLACE_STRTOLD]) | ||
195 | REPLACE_STRTOLL=0; AC_SUBST([REPLACE_STRTOLL]) | ||
196 | REPLACE_STRTOUL=0; AC_SUBST([REPLACE_STRTOUL]) | ||
197 | REPLACE_STRTOULL=0; AC_SUBST([REPLACE_STRTOULL]) | ||
115 | REPLACE_UNSETENV=0; AC_SUBST([REPLACE_UNSETENV]) | 198 | REPLACE_UNSETENV=0; AC_SUBST([REPLACE_UNSETENV]) |
116 | REPLACE_WCTOMB=0; AC_SUBST([REPLACE_WCTOMB]) | 199 | REPLACE_WCTOMB=0; AC_SUBST([REPLACE_WCTOMB]) |
117 | ]) | 200 | ]) |
diff --git a/gl/m4/strcase.m4 b/gl/m4/strcase.m4 index 22bf57c9..3cf740d2 100644 --- a/gl/m4/strcase.m4 +++ b/gl/m4/strcase.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # strcase.m4 serial 11 | 1 | # strcase.m4 serial 12 |
2 | dnl Copyright (C) 2002, 2005-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2002, 2005-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -12,7 +12,7 @@ AC_DEFUN([gl_STRCASE], | |||
12 | 12 | ||
13 | AC_DEFUN([gl_FUNC_STRCASECMP], | 13 | AC_DEFUN([gl_FUNC_STRCASECMP], |
14 | [ | 14 | [ |
15 | AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS]) | 15 | AC_REQUIRE([gl_STRINGS_H_DEFAULTS]) |
16 | AC_CHECK_FUNCS([strcasecmp]) | 16 | AC_CHECK_FUNCS([strcasecmp]) |
17 | if test $ac_cv_func_strcasecmp = no; then | 17 | if test $ac_cv_func_strcasecmp = no; then |
18 | HAVE_STRCASECMP=0 | 18 | HAVE_STRCASECMP=0 |
@@ -21,7 +21,7 @@ AC_DEFUN([gl_FUNC_STRCASECMP], | |||
21 | 21 | ||
22 | AC_DEFUN([gl_FUNC_STRNCASECMP], | 22 | AC_DEFUN([gl_FUNC_STRNCASECMP], |
23 | [ | 23 | [ |
24 | AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS]) | 24 | AC_REQUIRE([gl_STRINGS_H_DEFAULTS]) |
25 | AC_CHECK_FUNCS([strncasecmp]) | 25 | AC_CHECK_FUNCS([strncasecmp]) |
26 | if test $ac_cv_func_strncasecmp = yes; then | 26 | if test $ac_cv_func_strncasecmp = yes; then |
27 | HAVE_STRNCASECMP=1 | 27 | HAVE_STRNCASECMP=1 |
diff --git a/gl/m4/strcasestr.m4 b/gl/m4/strcasestr.m4 index 8681a6a4..971e0b23 100644 --- a/gl/m4/strcasestr.m4 +++ b/gl/m4/strcasestr.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # strcasestr.m4 serial 21 | 1 | # strcasestr.m4 serial 28 |
2 | dnl Copyright (C) 2005, 2007-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2005, 2007-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -7,7 +7,7 @@ dnl with or without modifications, as long as this notice is preserved. | |||
7 | dnl Check that strcasestr is present and works. | 7 | dnl Check that strcasestr is present and works. |
8 | AC_DEFUN([gl_FUNC_STRCASESTR_SIMPLE], | 8 | AC_DEFUN([gl_FUNC_STRCASESTR_SIMPLE], |
9 | [ | 9 | [ |
10 | AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) | 10 | AC_REQUIRE([gl_STRING_H_DEFAULTS]) |
11 | 11 | ||
12 | dnl Persuade glibc <string.h> to declare strcasestr(). | 12 | dnl Persuade glibc <string.h> to declare strcasestr(). |
13 | AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) | 13 | AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) |
@@ -17,28 +17,38 @@ AC_DEFUN([gl_FUNC_STRCASESTR_SIMPLE], | |||
17 | if test $ac_cv_func_strcasestr = no; then | 17 | if test $ac_cv_func_strcasestr = no; then |
18 | HAVE_STRCASESTR=0 | 18 | HAVE_STRCASESTR=0 |
19 | else | 19 | else |
20 | if test "$gl_cv_func_memchr_works" != yes; then | 20 | if test $REPLACE_MEMCHR = 1; then |
21 | REPLACE_STRCASESTR=1 | 21 | REPLACE_STRCASESTR=1 |
22 | else | 22 | else |
23 | dnl Detect http://sourceware.org/bugzilla/show_bug.cgi?id=12092. | 23 | dnl Detect https://sourceware.org/bugzilla/show_bug.cgi?id=12092 |
24 | dnl and https://sourceware.org/bugzilla/show_bug.cgi?id=23637. | ||
24 | AC_CACHE_CHECK([whether strcasestr works], | 25 | AC_CACHE_CHECK([whether strcasestr works], |
25 | [gl_cv_func_strcasestr_works_always], | 26 | [gl_cv_func_strcasestr_works_always], |
26 | [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ | 27 | [AC_RUN_IFELSE( |
27 | #include <string.h> /* for strcasestr */ | 28 | [AC_LANG_PROGRAM([[ |
29 | #include <string.h> /* for __GNU_LIBRARY__, strcasestr */ | ||
30 | #ifdef __GNU_LIBRARY__ | ||
31 | #include <features.h> | ||
32 | #if __GLIBC__ == 2 && __GLIBC_MINOR__ == 28 | ||
33 | Unlucky user | ||
34 | #endif | ||
35 | #endif | ||
28 | #define P "_EF_BF_BD" | 36 | #define P "_EF_BF_BD" |
29 | #define HAYSTACK "F_BD_CE_BD" P P P P "_C3_88_20" P P P "_C3_A7_20" P | 37 | #define HAYSTACK "F_BD_CE_BD" P P P P "_C3_88_20" P P P "_C3_A7_20" P |
30 | #define NEEDLE P P P P P | 38 | #define NEEDLE P P P P P |
31 | ]], [[return !!strcasestr (HAYSTACK, NEEDLE); | 39 | ]], |
32 | ]])], | 40 | [[return !!strcasestr (HAYSTACK, NEEDLE); |
33 | [gl_cv_func_strcasestr_works_always=yes], | 41 | ]])], |
34 | [gl_cv_func_strcasestr_works_always=no], | 42 | [gl_cv_func_strcasestr_works_always=yes], |
35 | [dnl glibc 2.12 and cygwin 1.7.7 have a known bug. uClibc is not | 43 | [gl_cv_func_strcasestr_works_always=no], |
36 | dnl affected, since it uses different source code for strcasestr | 44 | [dnl glibc 2.12 and cygwin 1.7.7 have a known bug. uClibc is not |
37 | dnl than glibc. | 45 | dnl affected, since it uses different source code for strcasestr |
38 | dnl Assume that it works on all other platforms, even if it is not | 46 | dnl than glibc. |
39 | dnl linear. | 47 | dnl Assume that it works on all other platforms, even if it is not |
40 | AC_EGREP_CPP([Lucky user], | 48 | dnl linear. |
41 | [ | 49 | AC_EGREP_CPP([Lucky user], |
50 | [ | ||
51 | #include <string.h> /* for __GNU_LIBRARY__ */ | ||
42 | #ifdef __GNU_LIBRARY__ | 52 | #ifdef __GNU_LIBRARY__ |
43 | #include <features.h> | 53 | #include <features.h> |
44 | #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ > 12) || (__GLIBC__ > 2)) \ | 54 | #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ > 12) || (__GLIBC__ > 2)) \ |
@@ -53,10 +63,10 @@ AC_DEFUN([gl_FUNC_STRCASESTR_SIMPLE], | |||
53 | #else | 63 | #else |
54 | Lucky user | 64 | Lucky user |
55 | #endif | 65 | #endif |
56 | ], | 66 | ], |
57 | [gl_cv_func_strcasestr_works_always="guessing yes"], | 67 | [gl_cv_func_strcasestr_works_always="guessing yes"], |
58 | [gl_cv_func_strcasestr_works_always="guessing no"]) | 68 | [gl_cv_func_strcasestr_works_always="$gl_cross_guess_normal"]) |
59 | ]) | 69 | ]) |
60 | ]) | 70 | ]) |
61 | case "$gl_cv_func_strcasestr_works_always" in | 71 | case "$gl_cv_func_strcasestr_works_always" in |
62 | *yes) ;; | 72 | *yes) ;; |
@@ -80,7 +90,7 @@ AC_DEFUN([gl_FUNC_STRCASESTR], | |||
80 | #include <string.h> /* for strcasestr */ | 90 | #include <string.h> /* for strcasestr */ |
81 | #include <stdlib.h> /* for malloc */ | 91 | #include <stdlib.h> /* for malloc */ |
82 | #include <unistd.h> /* for alarm */ | 92 | #include <unistd.h> /* for alarm */ |
83 | static void quit (int sig) { exit (sig + 128); } | 93 | static void quit (int sig) { _exit (sig + 128); } |
84 | ]], [[ | 94 | ]], [[ |
85 | int result = 0; | 95 | int result = 0; |
86 | size_t m = 1000000; | 96 | size_t m = 1000000; |
@@ -102,6 +112,9 @@ static void quit (int sig) { exit (sig + 128); } | |||
102 | if (!strcasestr (haystack, needle)) | 112 | if (!strcasestr (haystack, needle)) |
103 | result |= 1; | 113 | result |= 1; |
104 | } | 114 | } |
115 | /* Free allocated memory, in case some sanitizer is watching. */ | ||
116 | free (haystack); | ||
117 | free (needle); | ||
105 | return result; | 118 | return result; |
106 | ]])], | 119 | ]])], |
107 | [gl_cv_func_strcasestr_linear=yes], [gl_cv_func_strcasestr_linear=no], | 120 | [gl_cv_func_strcasestr_linear=yes], [gl_cv_func_strcasestr_linear=no], |
@@ -124,7 +137,7 @@ static void quit (int sig) { exit (sig + 128); } | |||
124 | #endif | 137 | #endif |
125 | ], | 138 | ], |
126 | [gl_cv_func_strcasestr_linear="guessing yes"], | 139 | [gl_cv_func_strcasestr_linear="guessing yes"], |
127 | [gl_cv_func_strcasestr_linear="guessing no"]) | 140 | [gl_cv_func_strcasestr_linear="$gl_cross_guess_normal"]) |
128 | ]) | 141 | ]) |
129 | ]) | 142 | ]) |
130 | case "$gl_cv_func_strcasestr_linear" in | 143 | case "$gl_cv_func_strcasestr_linear" in |
diff --git a/gl/m4/strerror.m4 b/gl/m4/strerror.m4 index 3989844b..8879eb08 100644 --- a/gl/m4/strerror.m4 +++ b/gl/m4/strerror.m4 | |||
@@ -1,19 +1,19 @@ | |||
1 | # strerror.m4 serial 17 | 1 | # strerror.m4 serial 23 |
2 | dnl Copyright (C) 2002, 2007-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2002, 2007-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | AC_DEFUN([gl_FUNC_STRERROR], | 7 | AC_DEFUN([gl_FUNC_STRERROR], |
8 | [ | 8 | [ |
9 | AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) | 9 | AC_REQUIRE([gl_STRING_H_DEFAULTS]) |
10 | AC_REQUIRE([gl_HEADER_ERRNO_H]) | 10 | AC_REQUIRE([gl_HEADER_ERRNO_H]) |
11 | AC_REQUIRE([gl_FUNC_STRERROR_0]) | 11 | AC_REQUIRE([gl_FUNC_STRERROR_0]) |
12 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | 12 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles |
13 | m4_ifdef([gl_FUNC_STRERROR_R_WORKS], [ | 13 | m4_ifdef([gl_FUNC_STRERROR_R_WORKS], [ |
14 | AC_REQUIRE([gl_FUNC_STRERROR_R_WORKS]) | 14 | AC_REQUIRE([gl_FUNC_STRERROR_R_WORKS]) |
15 | ]) | 15 | ]) |
16 | if test "$ERRNO_H:$REPLACE_STRERROR_0" = :0; then | 16 | if test "$GL_GENERATE_ERRNO_H:$REPLACE_STRERROR_0" = false:0; then |
17 | AC_CACHE_CHECK([for working strerror function], | 17 | AC_CACHE_CHECK([for working strerror function], |
18 | [gl_cv_func_working_strerror], | 18 | [gl_cv_func_working_strerror], |
19 | [AC_RUN_IFELSE( | 19 | [AC_RUN_IFELSE( |
@@ -24,10 +24,12 @@ AC_DEFUN([gl_FUNC_STRERROR], | |||
24 | [gl_cv_func_working_strerror=yes], | 24 | [gl_cv_func_working_strerror=yes], |
25 | [gl_cv_func_working_strerror=no], | 25 | [gl_cv_func_working_strerror=no], |
26 | [case "$host_os" in | 26 | [case "$host_os" in |
27 | # Guess yes on glibc systems. | 27 | # Guess yes on glibc systems. |
28 | *-gnu*) gl_cv_func_working_strerror="guessing yes" ;; | 28 | *-gnu* | gnu*) gl_cv_func_working_strerror="guessing yes" ;; |
29 | # If we don't know, assume the worst. | 29 | # Guess yes on musl systems. |
30 | *) gl_cv_func_working_strerror="guessing no" ;; | 30 | *-musl*) gl_cv_func_working_strerror="guessing yes" ;; |
31 | # If we don't know, obey --enable-cross-guesses. | ||
32 | *) gl_cv_func_working_strerror="$gl_cross_guess_normal" ;; | ||
31 | esac | 33 | esac |
32 | ]) | 34 | ]) |
33 | ]) | 35 | ]) |
@@ -78,10 +80,14 @@ AC_DEFUN([gl_FUNC_STRERROR_0], | |||
78 | [gl_cv_func_strerror_0_works=yes], | 80 | [gl_cv_func_strerror_0_works=yes], |
79 | [gl_cv_func_strerror_0_works=no], | 81 | [gl_cv_func_strerror_0_works=no], |
80 | [case "$host_os" in | 82 | [case "$host_os" in |
81 | # Guess yes on glibc systems. | 83 | # Guess yes on glibc systems. |
82 | *-gnu*) gl_cv_func_strerror_0_works="guessing yes" ;; | 84 | *-gnu* | gnu*) gl_cv_func_strerror_0_works="guessing yes" ;; |
83 | # If we don't know, assume the worst. | 85 | # Guess yes on musl systems. |
84 | *) gl_cv_func_strerror_0_works="guessing no" ;; | 86 | *-musl*) gl_cv_func_strerror_0_works="guessing yes" ;; |
87 | # Guess yes on native Windows. | ||
88 | mingw*) gl_cv_func_strerror_0_works="guessing yes" ;; | ||
89 | # If we don't know, obey --enable-cross-guesses. | ||
90 | *) gl_cv_func_strerror_0_works="$gl_cross_guess_normal" ;; | ||
85 | esac | 91 | esac |
86 | ]) | 92 | ]) |
87 | ]) | 93 | ]) |
diff --git a/gl/m4/string_h.m4 b/gl/m4/string_h.m4 index cc5fbbb3..5da3cc25 100644 --- a/gl/m4/string_h.m4 +++ b/gl/m4/string_h.m4 | |||
@@ -1,25 +1,19 @@ | |||
1 | # Configure a GNU-like replacement for <string.h>. | 1 | # Configure a GNU-like replacement for <string.h>. |
2 | 2 | ||
3 | # Copyright (C) 2007-2013 Free Software Foundation, Inc. | 3 | # Copyright (C) 2007-2023 Free Software Foundation, Inc. |
4 | # This file is free software; the Free Software Foundation | 4 | # This file is free software; the Free Software Foundation |
5 | # gives unlimited permission to copy and/or distribute it, | 5 | # gives unlimited permission to copy and/or distribute it, |
6 | # with or without modifications, as long as this notice is preserved. | 6 | # with or without modifications, as long as this notice is preserved. |
7 | 7 | ||
8 | # serial 21 | 8 | # serial 35 |
9 | 9 | ||
10 | # Written by Paul Eggert. | 10 | # Written by Paul Eggert. |
11 | 11 | ||
12 | AC_DEFUN([gl_HEADER_STRING_H], | 12 | AC_DEFUN_ONCE([gl_STRING_H], |
13 | [ | 13 | [ |
14 | dnl Use AC_REQUIRE here, so that the default behavior below is expanded | 14 | dnl Ensure to expand the default settings once only, before all statements |
15 | dnl once only, before all statements that occur in other macros. | 15 | dnl that occur in other macros. |
16 | AC_REQUIRE([gl_HEADER_STRING_H_BODY]) | 16 | AC_REQUIRE([gl_STRING_H_DEFAULTS]) |
17 | ]) | ||
18 | |||
19 | AC_DEFUN([gl_HEADER_STRING_H_BODY], | ||
20 | [ | ||
21 | AC_REQUIRE([AC_C_RESTRICT]) | ||
22 | AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) | ||
23 | gl_NEXT_HEADERS([string.h]) | 17 | gl_NEXT_HEADERS([string.h]) |
24 | 18 | ||
25 | dnl Check for declarations of anything we want to poison if the | 19 | dnl Check for declarations of anything we want to poison if the |
@@ -27,66 +21,95 @@ AC_DEFUN([gl_HEADER_STRING_H_BODY], | |||
27 | dnl guaranteed by C89. | 21 | dnl guaranteed by C89. |
28 | gl_WARN_ON_USE_PREPARE([[#include <string.h> | 22 | gl_WARN_ON_USE_PREPARE([[#include <string.h> |
29 | ]], | 23 | ]], |
30 | [ffsl ffsll memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul | 24 | [explicit_bzero ffsl ffsll memmem mempcpy memrchr memset_explicit |
25 | rawmemchr stpcpy stpncpy strchrnul | ||
31 | strdup strncat strndup strnlen strpbrk strsep strcasestr strtok_r | 26 | strdup strncat strndup strnlen strpbrk strsep strcasestr strtok_r |
32 | strerror_r strsignal strverscmp]) | 27 | strerror_r strerrorname_np sigabbrev_np sigdescr_np strsignal strverscmp]) |
28 | |||
29 | AC_REQUIRE([AC_C_RESTRICT]) | ||
33 | ]) | 30 | ]) |
34 | 31 | ||
32 | # gl_STRING_MODULE_INDICATOR([modulename]) | ||
33 | # sets the shell variable that indicates the presence of the given module | ||
34 | # to a C preprocessor expression that will evaluate to 1. | ||
35 | # This macro invocation must not occur in macros that are AC_REQUIREd. | ||
35 | AC_DEFUN([gl_STRING_MODULE_INDICATOR], | 36 | AC_DEFUN([gl_STRING_MODULE_INDICATOR], |
36 | [ | 37 | [ |
37 | dnl Use AC_REQUIRE here, so that the default settings are expanded once only. | 38 | dnl Ensure to expand the default settings once only. |
38 | AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) | 39 | gl_STRING_H_REQUIRE_DEFAULTS |
39 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) | 40 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) |
40 | dnl Define it also as a C macro, for the benefit of the unit tests. | 41 | dnl Define it also as a C macro, for the benefit of the unit tests. |
41 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) | 42 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) |
42 | ]) | 43 | ]) |
43 | 44 | ||
44 | AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS], | 45 | # Initializes the default values for AC_SUBSTed shell variables. |
46 | # This macro must not be AC_REQUIREd. It must only be invoked, and only | ||
47 | # outside of macros or in macros that are not AC_REQUIREd. | ||
48 | AC_DEFUN([gl_STRING_H_REQUIRE_DEFAULTS], | ||
45 | [ | 49 | [ |
46 | GNULIB_FFSL=0; AC_SUBST([GNULIB_FFSL]) | 50 | m4_defun(GL_MODULE_INDICATOR_PREFIX[_STRING_H_MODULE_INDICATOR_DEFAULTS], [ |
47 | GNULIB_FFSLL=0; AC_SUBST([GNULIB_FFSLL]) | 51 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPLICIT_BZERO]) |
48 | GNULIB_MEMCHR=0; AC_SUBST([GNULIB_MEMCHR]) | 52 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FFSL]) |
49 | GNULIB_MEMMEM=0; AC_SUBST([GNULIB_MEMMEM]) | 53 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FFSLL]) |
50 | GNULIB_MEMPCPY=0; AC_SUBST([GNULIB_MEMPCPY]) | 54 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMCHR]) |
51 | GNULIB_MEMRCHR=0; AC_SUBST([GNULIB_MEMRCHR]) | 55 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMMEM]) |
52 | GNULIB_RAWMEMCHR=0; AC_SUBST([GNULIB_RAWMEMCHR]) | 56 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMPCPY]) |
53 | GNULIB_STPCPY=0; AC_SUBST([GNULIB_STPCPY]) | 57 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMRCHR]) |
54 | GNULIB_STPNCPY=0; AC_SUBST([GNULIB_STPNCPY]) | 58 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMSET_EXPLICIT]) |
55 | GNULIB_STRCHRNUL=0; AC_SUBST([GNULIB_STRCHRNUL]) | 59 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RAWMEMCHR]) |
56 | GNULIB_STRDUP=0; AC_SUBST([GNULIB_STRDUP]) | 60 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STPCPY]) |
57 | GNULIB_STRNCAT=0; AC_SUBST([GNULIB_STRNCAT]) | 61 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STPNCPY]) |
58 | GNULIB_STRNDUP=0; AC_SUBST([GNULIB_STRNDUP]) | 62 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRCHRNUL]) |
59 | GNULIB_STRNLEN=0; AC_SUBST([GNULIB_STRNLEN]) | 63 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRDUP]) |
60 | GNULIB_STRPBRK=0; AC_SUBST([GNULIB_STRPBRK]) | 64 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRNCAT]) |
61 | GNULIB_STRSEP=0; AC_SUBST([GNULIB_STRSEP]) | 65 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRNDUP]) |
62 | GNULIB_STRSTR=0; AC_SUBST([GNULIB_STRSTR]) | 66 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRNLEN]) |
63 | GNULIB_STRCASESTR=0; AC_SUBST([GNULIB_STRCASESTR]) | 67 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRPBRK]) |
64 | GNULIB_STRTOK_R=0; AC_SUBST([GNULIB_STRTOK_R]) | 68 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRSEP]) |
65 | GNULIB_MBSLEN=0; AC_SUBST([GNULIB_MBSLEN]) | 69 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRSTR]) |
66 | GNULIB_MBSNLEN=0; AC_SUBST([GNULIB_MBSNLEN]) | 70 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRCASESTR]) |
67 | GNULIB_MBSCHR=0; AC_SUBST([GNULIB_MBSCHR]) | 71 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOK_R]) |
68 | GNULIB_MBSRCHR=0; AC_SUBST([GNULIB_MBSRCHR]) | 72 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSLEN]) |
69 | GNULIB_MBSSTR=0; AC_SUBST([GNULIB_MBSSTR]) | 73 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSNLEN]) |
70 | GNULIB_MBSCASECMP=0; AC_SUBST([GNULIB_MBSCASECMP]) | 74 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSCHR]) |
71 | GNULIB_MBSNCASECMP=0; AC_SUBST([GNULIB_MBSNCASECMP]) | 75 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSRCHR]) |
72 | GNULIB_MBSPCASECMP=0; AC_SUBST([GNULIB_MBSPCASECMP]) | 76 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSSTR]) |
73 | GNULIB_MBSCASESTR=0; AC_SUBST([GNULIB_MBSCASESTR]) | 77 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSCASECMP]) |
74 | GNULIB_MBSCSPN=0; AC_SUBST([GNULIB_MBSCSPN]) | 78 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSNCASECMP]) |
75 | GNULIB_MBSPBRK=0; AC_SUBST([GNULIB_MBSPBRK]) | 79 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSPCASECMP]) |
76 | GNULIB_MBSSPN=0; AC_SUBST([GNULIB_MBSSPN]) | 80 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSCASESTR]) |
77 | GNULIB_MBSSEP=0; AC_SUBST([GNULIB_MBSSEP]) | 81 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSCSPN]) |
78 | GNULIB_MBSTOK_R=0; AC_SUBST([GNULIB_MBSTOK_R]) | 82 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSPBRK]) |
79 | GNULIB_STRERROR=0; AC_SUBST([GNULIB_STRERROR]) | 83 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSSPN]) |
80 | GNULIB_STRERROR_R=0; AC_SUBST([GNULIB_STRERROR_R]) | 84 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSSEP]) |
81 | GNULIB_STRSIGNAL=0; AC_SUBST([GNULIB_STRSIGNAL]) | 85 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSTOK_R]) |
82 | GNULIB_STRVERSCMP=0; AC_SUBST([GNULIB_STRVERSCMP]) | 86 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRERROR]) |
83 | HAVE_MBSLEN=0; AC_SUBST([HAVE_MBSLEN]) | 87 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRERROR_R]) |
88 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRERRORNAME_NP]) | ||
89 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGABBREV_NP]) | ||
90 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGDESCR_NP]) | ||
91 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRSIGNAL]) | ||
92 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRVERSCMP]) | ||
93 | dnl Support Microsoft deprecated alias function names by default. | ||
94 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_MEMCCPY], [1]) | ||
95 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_STRDUP], [1]) | ||
96 | ]) | ||
97 | m4_require(GL_MODULE_INDICATOR_PREFIX[_STRING_H_MODULE_INDICATOR_DEFAULTS]) | ||
98 | dnl Make sure the shell variable for GNULIB_FREE_POSIX is initialized. | ||
99 | gl_STDLIB_H_REQUIRE_DEFAULTS | ||
100 | AC_REQUIRE([gl_STRING_H_DEFAULTS]) | ||
101 | ]) | ||
102 | |||
103 | AC_DEFUN([gl_STRING_H_DEFAULTS], | ||
104 | [ | ||
105 | HAVE_MBSLEN=0; AC_SUBST([HAVE_MBSLEN]) | ||
84 | dnl Assume proper GNU behavior unless another module says otherwise. | 106 | dnl Assume proper GNU behavior unless another module says otherwise. |
107 | HAVE_EXPLICIT_BZERO=1; AC_SUBST([HAVE_EXPLICIT_BZERO]) | ||
85 | HAVE_FFSL=1; AC_SUBST([HAVE_FFSL]) | 108 | HAVE_FFSL=1; AC_SUBST([HAVE_FFSL]) |
86 | HAVE_FFSLL=1; AC_SUBST([HAVE_FFSLL]) | 109 | HAVE_FFSLL=1; AC_SUBST([HAVE_FFSLL]) |
87 | HAVE_MEMCHR=1; AC_SUBST([HAVE_MEMCHR]) | ||
88 | HAVE_DECL_MEMMEM=1; AC_SUBST([HAVE_DECL_MEMMEM]) | 110 | HAVE_DECL_MEMMEM=1; AC_SUBST([HAVE_DECL_MEMMEM]) |
89 | HAVE_MEMPCPY=1; AC_SUBST([HAVE_MEMPCPY]) | 111 | HAVE_MEMPCPY=1; AC_SUBST([HAVE_MEMPCPY]) |
112 | HAVE_MEMSET_EXPLICIT=1; AC_SUBST([HAVE_MEMSET_EXPLICIT]) | ||
90 | HAVE_DECL_MEMRCHR=1; AC_SUBST([HAVE_DECL_MEMRCHR]) | 113 | HAVE_DECL_MEMRCHR=1; AC_SUBST([HAVE_DECL_MEMRCHR]) |
91 | HAVE_RAWMEMCHR=1; AC_SUBST([HAVE_RAWMEMCHR]) | 114 | HAVE_RAWMEMCHR=1; AC_SUBST([HAVE_RAWMEMCHR]) |
92 | HAVE_STPCPY=1; AC_SUBST([HAVE_STPCPY]) | 115 | HAVE_STPCPY=1; AC_SUBST([HAVE_STPCPY]) |
@@ -100,21 +123,26 @@ AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS], | |||
100 | HAVE_STRCASESTR=1; AC_SUBST([HAVE_STRCASESTR]) | 123 | HAVE_STRCASESTR=1; AC_SUBST([HAVE_STRCASESTR]) |
101 | HAVE_DECL_STRTOK_R=1; AC_SUBST([HAVE_DECL_STRTOK_R]) | 124 | HAVE_DECL_STRTOK_R=1; AC_SUBST([HAVE_DECL_STRTOK_R]) |
102 | HAVE_DECL_STRERROR_R=1; AC_SUBST([HAVE_DECL_STRERROR_R]) | 125 | HAVE_DECL_STRERROR_R=1; AC_SUBST([HAVE_DECL_STRERROR_R]) |
126 | HAVE_STRERRORNAME_NP=1; AC_SUBST([HAVE_STRERRORNAME_NP]) | ||
127 | HAVE_SIGABBREV_NP=1; AC_SUBST([HAVE_SIGABBREV_NP]) | ||
128 | HAVE_SIGDESCR_NP=1; AC_SUBST([HAVE_SIGDESCR_NP]) | ||
103 | HAVE_DECL_STRSIGNAL=1; AC_SUBST([HAVE_DECL_STRSIGNAL]) | 129 | HAVE_DECL_STRSIGNAL=1; AC_SUBST([HAVE_DECL_STRSIGNAL]) |
104 | HAVE_STRVERSCMP=1; AC_SUBST([HAVE_STRVERSCMP]) | 130 | HAVE_STRVERSCMP=1; AC_SUBST([HAVE_STRVERSCMP]) |
131 | REPLACE_FFSLL=0; AC_SUBST([REPLACE_FFSLL]) | ||
105 | REPLACE_MEMCHR=0; AC_SUBST([REPLACE_MEMCHR]) | 132 | REPLACE_MEMCHR=0; AC_SUBST([REPLACE_MEMCHR]) |
106 | REPLACE_MEMMEM=0; AC_SUBST([REPLACE_MEMMEM]) | 133 | REPLACE_MEMMEM=0; AC_SUBST([REPLACE_MEMMEM]) |
107 | REPLACE_STPNCPY=0; AC_SUBST([REPLACE_STPNCPY]) | 134 | REPLACE_STPNCPY=0; AC_SUBST([REPLACE_STPNCPY]) |
135 | REPLACE_STRCHRNUL=0; AC_SUBST([REPLACE_STRCHRNUL]) | ||
108 | REPLACE_STRDUP=0; AC_SUBST([REPLACE_STRDUP]) | 136 | REPLACE_STRDUP=0; AC_SUBST([REPLACE_STRDUP]) |
137 | REPLACE_STRNCAT=0; AC_SUBST([REPLACE_STRNCAT]) | ||
138 | REPLACE_STRNDUP=0; AC_SUBST([REPLACE_STRNDUP]) | ||
139 | REPLACE_STRNLEN=0; AC_SUBST([REPLACE_STRNLEN]) | ||
109 | REPLACE_STRSTR=0; AC_SUBST([REPLACE_STRSTR]) | 140 | REPLACE_STRSTR=0; AC_SUBST([REPLACE_STRSTR]) |
110 | REPLACE_STRCASESTR=0; AC_SUBST([REPLACE_STRCASESTR]) | 141 | REPLACE_STRCASESTR=0; AC_SUBST([REPLACE_STRCASESTR]) |
111 | REPLACE_STRCHRNUL=0; AC_SUBST([REPLACE_STRCHRNUL]) | 142 | REPLACE_STRTOK_R=0; AC_SUBST([REPLACE_STRTOK_R]) |
112 | REPLACE_STRERROR=0; AC_SUBST([REPLACE_STRERROR]) | 143 | REPLACE_STRERROR=0; AC_SUBST([REPLACE_STRERROR]) |
113 | REPLACE_STRERROR_R=0; AC_SUBST([REPLACE_STRERROR_R]) | 144 | REPLACE_STRERROR_R=0; AC_SUBST([REPLACE_STRERROR_R]) |
114 | REPLACE_STRNCAT=0; AC_SUBST([REPLACE_STRNCAT]) | 145 | REPLACE_STRERRORNAME_NP=0; AC_SUBST([REPLACE_STRERRORNAME_NP]) |
115 | REPLACE_STRNDUP=0; AC_SUBST([REPLACE_STRNDUP]) | ||
116 | REPLACE_STRNLEN=0; AC_SUBST([REPLACE_STRNLEN]) | ||
117 | REPLACE_STRSIGNAL=0; AC_SUBST([REPLACE_STRSIGNAL]) | 146 | REPLACE_STRSIGNAL=0; AC_SUBST([REPLACE_STRSIGNAL]) |
118 | REPLACE_STRTOK_R=0; AC_SUBST([REPLACE_STRTOK_R]) | ||
119 | UNDEFINE_STRTOK_R=0; AC_SUBST([UNDEFINE_STRTOK_R]) | 147 | UNDEFINE_STRTOK_R=0; AC_SUBST([UNDEFINE_STRTOK_R]) |
120 | ]) | 148 | ]) |
diff --git a/gl/m4/strings_h.m4 b/gl/m4/strings_h.m4 index 76ef2424..4c41221b 100644 --- a/gl/m4/strings_h.m4 +++ b/gl/m4/strings_h.m4 | |||
@@ -1,21 +1,16 @@ | |||
1 | # Configure a replacement for <strings.h>. | 1 | # Configure a replacement for <strings.h>. |
2 | # serial 6 | 2 | # serial 9 |
3 | 3 | ||
4 | # Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc. | 4 | # Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc. |
5 | # This file is free software; the Free Software Foundation | 5 | # This file is free software; the Free Software Foundation |
6 | # gives unlimited permission to copy and/or distribute it, | 6 | # gives unlimited permission to copy and/or distribute it, |
7 | # with or without modifications, as long as this notice is preserved. | 7 | # with or without modifications, as long as this notice is preserved. |
8 | 8 | ||
9 | AC_DEFUN([gl_HEADER_STRINGS_H], | 9 | AC_DEFUN_ONCE([gl_STRINGS_H], |
10 | [ | 10 | [ |
11 | dnl Use AC_REQUIRE here, so that the default behavior below is expanded | 11 | dnl Ensure to expand the default settings once only, before all statements |
12 | dnl once only, before all statements that occur in other macros. | 12 | dnl that occur in other macros. |
13 | AC_REQUIRE([gl_HEADER_STRINGS_H_BODY]) | 13 | AC_REQUIRE([gl_STRINGS_H_DEFAULTS]) |
14 | ]) | ||
15 | |||
16 | AC_DEFUN([gl_HEADER_STRINGS_H_BODY], | ||
17 | [ | ||
18 | AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS]) | ||
19 | 14 | ||
20 | gl_CHECK_NEXT_HEADERS([strings.h]) | 15 | gl_CHECK_NEXT_HEADERS([strings.h]) |
21 | if test $ac_cv_header_strings_h = yes; then | 16 | if test $ac_cv_header_strings_h = yes; then |
@@ -35,16 +30,31 @@ AC_DEFUN([gl_HEADER_STRINGS_H_BODY], | |||
35 | ]], [ffs strcasecmp strncasecmp]) | 30 | ]], [ffs strcasecmp strncasecmp]) |
36 | ]) | 31 | ]) |
37 | 32 | ||
33 | # gl_STRINGS_MODULE_INDICATOR([modulename]) | ||
34 | # sets the shell variable that indicates the presence of the given module | ||
35 | # to a C preprocessor expression that will evaluate to 1. | ||
36 | # This macro invocation must not occur in macros that are AC_REQUIREd. | ||
38 | AC_DEFUN([gl_STRINGS_MODULE_INDICATOR], | 37 | AC_DEFUN([gl_STRINGS_MODULE_INDICATOR], |
39 | [ | 38 | [ |
40 | dnl Use AC_REQUIRE here, so that the default settings are expanded once only. | 39 | dnl Ensure to expand the default settings once only. |
41 | AC_REQUIRE([gl_HEADER_STRINGS_H_DEFAULTS]) | 40 | gl_STRINGS_H_REQUIRE_DEFAULTS |
42 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) | 41 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) |
43 | ]) | 42 | ]) |
44 | 43 | ||
45 | AC_DEFUN([gl_HEADER_STRINGS_H_DEFAULTS], | 44 | # Initializes the default values for AC_SUBSTed shell variables. |
45 | # This macro must not be AC_REQUIREd. It must only be invoked, and only | ||
46 | # outside of macros or in macros that are not AC_REQUIREd. | ||
47 | AC_DEFUN([gl_STRINGS_H_REQUIRE_DEFAULTS], | ||
48 | [ | ||
49 | m4_defun(GL_MODULE_INDICATOR_PREFIX[_STRINGS_H_MODULE_INDICATOR_DEFAULTS], [ | ||
50 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FFS]) | ||
51 | ]) | ||
52 | m4_require(GL_MODULE_INDICATOR_PREFIX[_STRINGS_H_MODULE_INDICATOR_DEFAULTS]) | ||
53 | AC_REQUIRE([gl_STRINGS_H_DEFAULTS]) | ||
54 | ]) | ||
55 | |||
56 | AC_DEFUN([gl_STRINGS_H_DEFAULTS], | ||
46 | [ | 57 | [ |
47 | GNULIB_FFS=0; AC_SUBST([GNULIB_FFS]) | ||
48 | dnl Assume proper GNU behavior unless another module says otherwise. | 58 | dnl Assume proper GNU behavior unless another module says otherwise. |
49 | HAVE_FFS=1; AC_SUBST([HAVE_FFS]) | 59 | HAVE_FFS=1; AC_SUBST([HAVE_FFS]) |
50 | HAVE_STRCASECMP=1; AC_SUBST([HAVE_STRCASECMP]) | 60 | HAVE_STRCASECMP=1; AC_SUBST([HAVE_STRCASECMP]) |
diff --git a/gl/m4/strndup.m4 b/gl/m4/strndup.m4 deleted file mode 100644 index a1f82743..00000000 --- a/gl/m4/strndup.m4 +++ /dev/null | |||
@@ -1,55 +0,0 @@ | |||
1 | # strndup.m4 serial 21 | ||
2 | dnl Copyright (C) 2002-2003, 2005-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_FUNC_STRNDUP], | ||
8 | [ | ||
9 | dnl Persuade glibc <string.h> to declare strndup(). | ||
10 | AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) | ||
11 | |||
12 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | ||
13 | AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) | ||
14 | AC_CHECK_DECLS_ONCE([strndup]) | ||
15 | AC_CHECK_FUNCS_ONCE([strndup]) | ||
16 | if test $ac_cv_have_decl_strndup = no; then | ||
17 | HAVE_DECL_STRNDUP=0 | ||
18 | fi | ||
19 | |||
20 | if test $ac_cv_func_strndup = yes; then | ||
21 | HAVE_STRNDUP=1 | ||
22 | # AIX 4.3.3, AIX 5.1 have a function that fails to add the terminating '\0'. | ||
23 | AC_CACHE_CHECK([for working strndup], [gl_cv_func_strndup_works], | ||
24 | [AC_RUN_IFELSE([ | ||
25 | AC_LANG_PROGRAM([[#include <string.h> | ||
26 | #include <stdlib.h>]], [[ | ||
27 | #if !HAVE_DECL_STRNDUP | ||
28 | extern | ||
29 | #ifdef __cplusplus | ||
30 | "C" | ||
31 | #endif | ||
32 | char *strndup (const char *, size_t); | ||
33 | #endif | ||
34 | char *s; | ||
35 | s = strndup ("some longer string", 15); | ||
36 | free (s); | ||
37 | s = strndup ("shorter string", 13); | ||
38 | return s[13] != '\0';]])], | ||
39 | [gl_cv_func_strndup_works=yes], | ||
40 | [gl_cv_func_strndup_works=no], | ||
41 | [ | ||
42 | changequote(,)dnl | ||
43 | case $host_os in | ||
44 | aix | aix[3-6]*) gl_cv_func_strndup_works="guessing no";; | ||
45 | *) gl_cv_func_strndup_works="guessing yes";; | ||
46 | esac | ||
47 | changequote([,])dnl | ||
48 | ])]) | ||
49 | case $gl_cv_func_strndup_works in | ||
50 | *no) REPLACE_STRNDUP=1 ;; | ||
51 | esac | ||
52 | else | ||
53 | HAVE_STRNDUP=0 | ||
54 | fi | ||
55 | ]) | ||
diff --git a/gl/m4/strnlen.m4 b/gl/m4/strnlen.m4 deleted file mode 100644 index eae82b77..00000000 --- a/gl/m4/strnlen.m4 +++ /dev/null | |||
@@ -1,30 +0,0 @@ | |||
1 | # strnlen.m4 serial 13 | ||
2 | dnl Copyright (C) 2002-2003, 2005-2007, 2009-2013 Free Software Foundation, | ||
3 | dnl Inc. | ||
4 | dnl This file is free software; the Free Software Foundation | ||
5 | dnl gives unlimited permission to copy and/or distribute it, | ||
6 | dnl with or without modifications, as long as this notice is preserved. | ||
7 | |||
8 | AC_DEFUN([gl_FUNC_STRNLEN], | ||
9 | [ | ||
10 | AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) | ||
11 | |||
12 | dnl Persuade glibc <string.h> to declare strnlen(). | ||
13 | AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) | ||
14 | |||
15 | AC_CHECK_DECLS_ONCE([strnlen]) | ||
16 | if test $ac_cv_have_decl_strnlen = no; then | ||
17 | HAVE_DECL_STRNLEN=0 | ||
18 | else | ||
19 | m4_pushdef([AC_LIBOBJ], [:]) | ||
20 | dnl Note: AC_FUNC_STRNLEN does AC_LIBOBJ([strnlen]). | ||
21 | AC_FUNC_STRNLEN | ||
22 | m4_popdef([AC_LIBOBJ]) | ||
23 | if test $ac_cv_func_strnlen_working = no; then | ||
24 | REPLACE_STRNLEN=1 | ||
25 | fi | ||
26 | fi | ||
27 | ]) | ||
28 | |||
29 | # Prerequisites of lib/strnlen.c. | ||
30 | AC_DEFUN([gl_PREREQ_STRNLEN], [:]) | ||
diff --git a/gl/m4/strsep.m4 b/gl/m4/strsep.m4 index 825fdb81..e0da09a3 100644 --- a/gl/m4/strsep.m4 +++ b/gl/m4/strsep.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # strsep.m4 serial 10 | 1 | # strsep.m4 serial 11 |
2 | dnl Copyright (C) 2002-2004, 2007, 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2002-2004, 2007, 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -12,7 +12,7 @@ AC_DEFUN([gl_FUNC_STRSEP], | |||
12 | dnl The strsep() declaration in lib/string.in.h uses 'restrict'. | 12 | dnl The strsep() declaration in lib/string.in.h uses 'restrict'. |
13 | AC_REQUIRE([AC_C_RESTRICT]) | 13 | AC_REQUIRE([AC_C_RESTRICT]) |
14 | 14 | ||
15 | AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) | 15 | AC_REQUIRE([gl_STRING_H_DEFAULTS]) |
16 | AC_CHECK_FUNCS([strsep]) | 16 | AC_CHECK_FUNCS([strsep]) |
17 | if test $ac_cv_func_strsep = no; then | 17 | if test $ac_cv_func_strsep = no; then |
18 | HAVE_STRSEP=0 | 18 | HAVE_STRSEP=0 |
diff --git a/gl/m4/strstr.m4 b/gl/m4/strstr.m4 index c486bdb0..7de203a7 100644 --- a/gl/m4/strstr.m4 +++ b/gl/m4/strstr.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # strstr.m4 serial 16 | 1 | # strstr.m4 serial 24 |
2 | dnl Copyright (C) 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2008-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -7,30 +7,40 @@ dnl with or without modifications, as long as this notice is preserved. | |||
7 | dnl Check that strstr works. | 7 | dnl Check that strstr works. |
8 | AC_DEFUN([gl_FUNC_STRSTR_SIMPLE], | 8 | AC_DEFUN([gl_FUNC_STRSTR_SIMPLE], |
9 | [ | 9 | [ |
10 | AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS]) | 10 | AC_REQUIRE([gl_STRING_H_DEFAULTS]) |
11 | AC_REQUIRE([gl_FUNC_MEMCHR]) | 11 | AC_REQUIRE([gl_FUNC_MEMCHR]) |
12 | if test "$gl_cv_func_memchr_works" != yes; then | 12 | if test $REPLACE_MEMCHR = 1; then |
13 | REPLACE_STRSTR=1 | 13 | REPLACE_STRSTR=1 |
14 | else | 14 | else |
15 | dnl Detect http://sourceware.org/bugzilla/show_bug.cgi?id=12092. | 15 | dnl Detect https://sourceware.org/bugzilla/show_bug.cgi?id=12092 |
16 | dnl and https://sourceware.org/bugzilla/show_bug.cgi?id=23637. | ||
16 | AC_CACHE_CHECK([whether strstr works], | 17 | AC_CACHE_CHECK([whether strstr works], |
17 | [gl_cv_func_strstr_works_always], | 18 | [gl_cv_func_strstr_works_always], |
18 | [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ | 19 | [AC_RUN_IFELSE( |
19 | #include <string.h> /* for strstr */ | 20 | [AC_LANG_PROGRAM([[ |
21 | #include <string.h> /* for __GNU_LIBRARY__, strstr */ | ||
22 | #ifdef __GNU_LIBRARY__ | ||
23 | #include <features.h> | ||
24 | #if __GLIBC__ == 2 && __GLIBC_MINOR__ == 28 | ||
25 | Unlucky user | ||
26 | #endif | ||
27 | #endif | ||
20 | #define P "_EF_BF_BD" | 28 | #define P "_EF_BF_BD" |
21 | #define HAYSTACK "F_BD_CE_BD" P P P P "_C3_88_20" P P P "_C3_A7_20" P | 29 | #define HAYSTACK "F_BD_CE_BD" P P P P "_C3_88_20" P P P "_C3_A7_20" P |
22 | #define NEEDLE P P P P P | 30 | #define NEEDLE P P P P P |
23 | ]], [[return !!strstr (HAYSTACK, NEEDLE); | 31 | ]], |
24 | ]])], | 32 | [[return !!strstr (HAYSTACK, NEEDLE); |
25 | [gl_cv_func_strstr_works_always=yes], | 33 | ]])], |
26 | [gl_cv_func_strstr_works_always=no], | 34 | [gl_cv_func_strstr_works_always=yes], |
27 | [dnl glibc 2.12 and cygwin 1.7.7 have a known bug. uClibc is not | 35 | [gl_cv_func_strstr_works_always=no], |
28 | dnl affected, since it uses different source code for strstr than | 36 | [dnl glibc 2.12 and cygwin 1.7.7 have a known bug. uClibc is not |
29 | dnl glibc. | 37 | dnl affected, since it uses different source code for strstr than |
30 | dnl Assume that it works on all other platforms, even if it is not | 38 | dnl glibc. |
31 | dnl linear. | 39 | dnl Assume that it works on all other platforms, even if it is not |
32 | AC_EGREP_CPP([Lucky user], | 40 | dnl linear. |
33 | [ | 41 | AC_EGREP_CPP([Lucky user], |
42 | [ | ||
43 | #include <string.h> /* for __GNU_LIBRARY__ */ | ||
34 | #ifdef __GNU_LIBRARY__ | 44 | #ifdef __GNU_LIBRARY__ |
35 | #include <features.h> | 45 | #include <features.h> |
36 | #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ > 12) || (__GLIBC__ > 2)) \ | 46 | #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ > 12) || (__GLIBC__ > 2)) \ |
@@ -45,10 +55,10 @@ AC_DEFUN([gl_FUNC_STRSTR_SIMPLE], | |||
45 | #else | 55 | #else |
46 | Lucky user | 56 | Lucky user |
47 | #endif | 57 | #endif |
48 | ], | 58 | ], |
49 | [gl_cv_func_strstr_works_always="guessing yes"], | 59 | [gl_cv_func_strstr_works_always="guessing yes"], |
50 | [gl_cv_func_strstr_works_always="guessing no"]) | 60 | [gl_cv_func_strstr_works_always="$gl_cross_guess_normal"]) |
51 | ]) | 61 | ]) |
52 | ]) | 62 | ]) |
53 | case "$gl_cv_func_strstr_works_always" in | 63 | case "$gl_cv_func_strstr_works_always" in |
54 | *yes) ;; | 64 | *yes) ;; |
@@ -67,11 +77,17 @@ AC_DEFUN([gl_FUNC_STRSTR], | |||
67 | AC_CACHE_CHECK([whether strstr works in linear time], | 77 | AC_CACHE_CHECK([whether strstr works in linear time], |
68 | [gl_cv_func_strstr_linear], | 78 | [gl_cv_func_strstr_linear], |
69 | [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ | 79 | [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ |
80 | #ifdef __MVS__ | ||
81 | /* z/OS does not deliver signals while strstr() is running (thanks to | ||
82 | restrictions on its LE runtime), which prevents us from limiting the | ||
83 | running time of this test. */ | ||
84 | # error "This test does not work properly on z/OS" | ||
85 | #endif | ||
70 | #include <signal.h> /* for signal */ | 86 | #include <signal.h> /* for signal */ |
71 | #include <string.h> /* for strstr */ | 87 | #include <string.h> /* for strstr */ |
72 | #include <stdlib.h> /* for malloc */ | 88 | #include <stdlib.h> /* for malloc */ |
73 | #include <unistd.h> /* for alarm */ | 89 | #include <unistd.h> /* for alarm */ |
74 | static void quit (int sig) { exit (sig + 128); } | 90 | static void quit (int sig) { _exit (sig + 128); } |
75 | ]], [[ | 91 | ]], [[ |
76 | int result = 0; | 92 | int result = 0; |
77 | size_t m = 1000000; | 93 | size_t m = 1000000; |
@@ -93,6 +109,9 @@ static void quit (int sig) { exit (sig + 128); } | |||
93 | if (!strstr (haystack, needle)) | 109 | if (!strstr (haystack, needle)) |
94 | result |= 1; | 110 | result |= 1; |
95 | } | 111 | } |
112 | /* Free allocated memory, in case some sanitizer is watching. */ | ||
113 | free (haystack); | ||
114 | free (needle); | ||
96 | return result; | 115 | return result; |
97 | ]])], | 116 | ]])], |
98 | [gl_cv_func_strstr_linear=yes], [gl_cv_func_strstr_linear=no], | 117 | [gl_cv_func_strstr_linear=yes], [gl_cv_func_strstr_linear=no], |
@@ -117,7 +136,7 @@ static void quit (int sig) { exit (sig + 128); } | |||
117 | #endif | 136 | #endif |
118 | ], | 137 | ], |
119 | [gl_cv_func_strstr_linear="guessing yes"], | 138 | [gl_cv_func_strstr_linear="guessing yes"], |
120 | [gl_cv_func_strstr_linear="guessing no"]) | 139 | [gl_cv_func_strstr_linear="$gl_cross_guess_normal"]) |
121 | ]) | 140 | ]) |
122 | ]) | 141 | ]) |
123 | case "$gl_cv_func_strstr_linear" in | 142 | case "$gl_cv_func_strstr_linear" in |
diff --git a/gl/m4/sys_socket_h.m4 b/gl/m4/sys_socket_h.m4 index 94863776..98a10416 100644 --- a/gl/m4/sys_socket_h.m4 +++ b/gl/m4/sys_socket_h.m4 | |||
@@ -1,12 +1,12 @@ | |||
1 | # sys_socket_h.m4 serial 23 | 1 | # sys_socket_h.m4 serial 29 |
2 | dnl Copyright (C) 2005-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2005-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | dnl From Simon Josefsson. | 7 | dnl From Simon Josefsson. |
8 | 8 | ||
9 | AC_DEFUN([gl_HEADER_SYS_SOCKET], | 9 | AC_DEFUN_ONCE([gl_SYS_SOCKET_H], |
10 | [ | 10 | [ |
11 | AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS]) | 11 | AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS]) |
12 | AC_REQUIRE([AC_CANONICAL_HOST]) | 12 | AC_REQUIRE([AC_CANONICAL_HOST]) |
@@ -22,6 +22,7 @@ AC_DEFUN([gl_HEADER_SYS_SOCKET], | |||
22 | ;; | 22 | ;; |
23 | esac | 23 | esac |
24 | 24 | ||
25 | GL_GENERATE_SYS_SOCKET_H=false | ||
25 | AC_CACHE_CHECK([whether <sys/socket.h> is self-contained], | 26 | AC_CACHE_CHECK([whether <sys/socket.h> is self-contained], |
26 | [gl_cv_header_sys_socket_h_selfcontained], | 27 | [gl_cv_header_sys_socket_h_selfcontained], |
27 | [ | 28 | [ |
@@ -44,7 +45,7 @@ AC_DEFUN([gl_HEADER_SYS_SOCKET], | |||
44 | [gl_cv_header_sys_socket_h_shut=no]) | 45 | [gl_cv_header_sys_socket_h_shut=no]) |
45 | ]) | 46 | ]) |
46 | if test $gl_cv_header_sys_socket_h_shut = no; then | 47 | if test $gl_cv_header_sys_socket_h_shut = no; then |
47 | SYS_SOCKET_H='sys/socket.h' | 48 | GL_GENERATE_SYS_SOCKET_H=true |
48 | fi | 49 | fi |
49 | fi | 50 | fi |
50 | fi | 51 | fi |
@@ -83,7 +84,7 @@ AC_DEFUN([gl_HEADER_SYS_SOCKET], | |||
83 | fi | 84 | fi |
84 | if test $HAVE_STRUCT_SOCKADDR_STORAGE = 0 || test $HAVE_SA_FAMILY_T = 0 \ | 85 | if test $HAVE_STRUCT_SOCKADDR_STORAGE = 0 || test $HAVE_SA_FAMILY_T = 0 \ |
85 | || test $HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY = 0; then | 86 | || test $HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY = 0; then |
86 | SYS_SOCKET_H='sys/socket.h' | 87 | GL_GENERATE_SYS_SOCKET_H=true |
87 | fi | 88 | fi |
88 | gl_PREREQ_SYS_H_WINSOCK2 | 89 | gl_PREREQ_SYS_H_WINSOCK2 |
89 | 90 | ||
@@ -95,6 +96,8 @@ AC_DEFUN([gl_HEADER_SYS_SOCKET], | |||
95 | #include <sys/socket.h> | 96 | #include <sys/socket.h> |
96 | ]], [socket connect accept bind getpeername getsockname getsockopt | 97 | ]], [socket connect accept bind getpeername getsockname getsockopt |
97 | listen recv send recvfrom sendto setsockopt shutdown accept4]) | 98 | listen recv send recvfrom sendto setsockopt shutdown accept4]) |
99 | |||
100 | AC_REQUIRE([AC_C_RESTRICT]) | ||
98 | ]) | 101 | ]) |
99 | 102 | ||
100 | AC_DEFUN([gl_PREREQ_SYS_H_SOCKET], | 103 | AC_DEFUN([gl_PREREQ_SYS_H_SOCKET], |
@@ -104,17 +107,11 @@ AC_DEFUN([gl_PREREQ_SYS_H_SOCKET], | |||
104 | gl_CHECK_NEXT_HEADERS([sys/socket.h]) | 107 | gl_CHECK_NEXT_HEADERS([sys/socket.h]) |
105 | if test $ac_cv_header_sys_socket_h = yes; then | 108 | if test $ac_cv_header_sys_socket_h = yes; then |
106 | HAVE_SYS_SOCKET_H=1 | 109 | HAVE_SYS_SOCKET_H=1 |
107 | HAVE_WS2TCPIP_H=0 | ||
108 | else | 110 | else |
109 | HAVE_SYS_SOCKET_H=0 | 111 | HAVE_SYS_SOCKET_H=0 |
110 | if test $ac_cv_header_ws2tcpip_h = yes; then | ||
111 | HAVE_WS2TCPIP_H=1 | ||
112 | else | ||
113 | HAVE_WS2TCPIP_H=0 | ||
114 | fi | ||
115 | fi | 112 | fi |
116 | AC_SUBST([HAVE_SYS_SOCKET_H]) | 113 | AC_SUBST([HAVE_SYS_SOCKET_H]) |
117 | AC_SUBST([HAVE_WS2TCPIP_H]) | 114 | gl_PREREQ_SYS_H_WS2TCPIP |
118 | ]) | 115 | ]) |
119 | 116 | ||
120 | # Common prerequisites of the <sys/socket.h> replacement and of the | 117 | # Common prerequisites of the <sys/socket.h> replacement and of the |
@@ -142,32 +139,65 @@ AC_DEFUN([gl_PREREQ_SYS_H_WINSOCK2], | |||
142 | AC_SUBST([HAVE_WINSOCK2_H]) | 139 | AC_SUBST([HAVE_WINSOCK2_H]) |
143 | ]) | 140 | ]) |
144 | 141 | ||
142 | # Common prerequisites of the <sys/socket.h> replacement and of the | ||
143 | # <arpa/inet.h> replacement. | ||
144 | # Sets and substitutes HAVE_WS2TCPIP_H. | ||
145 | AC_DEFUN([gl_PREREQ_SYS_H_WS2TCPIP], | ||
146 | [ | ||
147 | AC_REQUIRE([gl_CHECK_SOCKET_HEADERS]) | ||
148 | if test $ac_cv_header_sys_socket_h = yes; then | ||
149 | HAVE_WS2TCPIP_H=0 | ||
150 | else | ||
151 | if test $ac_cv_header_ws2tcpip_h = yes; then | ||
152 | HAVE_WS2TCPIP_H=1 | ||
153 | else | ||
154 | HAVE_WS2TCPIP_H=0 | ||
155 | fi | ||
156 | fi | ||
157 | AC_SUBST([HAVE_WS2TCPIP_H]) | ||
158 | ]) | ||
159 | |||
160 | # gl_SYS_SOCKET_MODULE_INDICATOR([modulename]) | ||
161 | # sets the shell variable that indicates the presence of the given module | ||
162 | # to a C preprocessor expression that will evaluate to 1. | ||
163 | # This macro invocation must not occur in macros that are AC_REQUIREd. | ||
145 | AC_DEFUN([gl_SYS_SOCKET_MODULE_INDICATOR], | 164 | AC_DEFUN([gl_SYS_SOCKET_MODULE_INDICATOR], |
146 | [ | 165 | [ |
147 | dnl Use AC_REQUIRE here, so that the default settings are expanded once only. | 166 | dnl Ensure to expand the default settings once only. |
148 | AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS]) | 167 | gl_SYS_SOCKET_H_REQUIRE_DEFAULTS |
149 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) | 168 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) |
150 | dnl Define it also as a C macro, for the benefit of the unit tests. | 169 | dnl Define it also as a C macro, for the benefit of the unit tests. |
151 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) | 170 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) |
152 | ]) | 171 | ]) |
153 | 172 | ||
173 | # Initializes the default values for AC_SUBSTed shell variables. | ||
174 | # This macro must not be AC_REQUIREd. It must only be invoked, and only | ||
175 | # outside of macros or in macros that are not AC_REQUIREd. | ||
176 | AC_DEFUN([gl_SYS_SOCKET_H_REQUIRE_DEFAULTS], | ||
177 | [ | ||
178 | m4_defun(GL_MODULE_INDICATOR_PREFIX[_SYS_SOCKET_H_MODULE_INDICATOR_DEFAULTS], [ | ||
179 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SOCKET]) | ||
180 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CONNECT]) | ||
181 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACCEPT]) | ||
182 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_BIND]) | ||
183 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPEERNAME]) | ||
184 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETSOCKNAME]) | ||
185 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETSOCKOPT]) | ||
186 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LISTEN]) | ||
187 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RECV]) | ||
188 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SEND]) | ||
189 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RECVFROM]) | ||
190 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SENDTO]) | ||
191 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETSOCKOPT]) | ||
192 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SHUTDOWN]) | ||
193 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACCEPT4]) | ||
194 | ]) | ||
195 | m4_require(GL_MODULE_INDICATOR_PREFIX[_SYS_SOCKET_H_MODULE_INDICATOR_DEFAULTS]) | ||
196 | AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS]) | ||
197 | ]) | ||
198 | |||
154 | AC_DEFUN([gl_SYS_SOCKET_H_DEFAULTS], | 199 | AC_DEFUN([gl_SYS_SOCKET_H_DEFAULTS], |
155 | [ | 200 | [ |
156 | GNULIB_SOCKET=0; AC_SUBST([GNULIB_SOCKET]) | ||
157 | GNULIB_CONNECT=0; AC_SUBST([GNULIB_CONNECT]) | ||
158 | GNULIB_ACCEPT=0; AC_SUBST([GNULIB_ACCEPT]) | ||
159 | GNULIB_BIND=0; AC_SUBST([GNULIB_BIND]) | ||
160 | GNULIB_GETPEERNAME=0; AC_SUBST([GNULIB_GETPEERNAME]) | ||
161 | GNULIB_GETSOCKNAME=0; AC_SUBST([GNULIB_GETSOCKNAME]) | ||
162 | GNULIB_GETSOCKOPT=0; AC_SUBST([GNULIB_GETSOCKOPT]) | ||
163 | GNULIB_LISTEN=0; AC_SUBST([GNULIB_LISTEN]) | ||
164 | GNULIB_RECV=0; AC_SUBST([GNULIB_RECV]) | ||
165 | GNULIB_SEND=0; AC_SUBST([GNULIB_SEND]) | ||
166 | GNULIB_RECVFROM=0; AC_SUBST([GNULIB_RECVFROM]) | ||
167 | GNULIB_SENDTO=0; AC_SUBST([GNULIB_SENDTO]) | ||
168 | GNULIB_SETSOCKOPT=0; AC_SUBST([GNULIB_SETSOCKOPT]) | ||
169 | GNULIB_SHUTDOWN=0; AC_SUBST([GNULIB_SHUTDOWN]) | ||
170 | GNULIB_ACCEPT4=0; AC_SUBST([GNULIB_ACCEPT4]) | ||
171 | HAVE_STRUCT_SOCKADDR_STORAGE=1; AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE]) | 201 | HAVE_STRUCT_SOCKADDR_STORAGE=1; AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE]) |
172 | HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=1; | 202 | HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=1; |
173 | AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY]) | 203 | AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY]) |
diff --git a/gl/m4/sys_stat_h.m4 b/gl/m4/sys_stat_h.m4 new file mode 100644 index 00000000..ca57398a --- /dev/null +++ b/gl/m4/sys_stat_h.m4 | |||
@@ -0,0 +1,129 @@ | |||
1 | # sys_stat_h.m4 serial 42 -*- Autoconf -*- | ||
2 | dnl Copyright (C) 2006-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | dnl From Eric Blake. | ||
8 | dnl Provide a GNU-like <sys/stat.h>. | ||
9 | |||
10 | AC_DEFUN_ONCE([gl_SYS_STAT_H], | ||
11 | [ | ||
12 | AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) | ||
13 | |||
14 | dnl Check for broken stat macros. | ||
15 | AC_REQUIRE([AC_HEADER_STAT]) | ||
16 | |||
17 | gl_CHECK_NEXT_HEADERS([sys/stat.h]) | ||
18 | |||
19 | dnl Ensure the type mode_t gets defined. | ||
20 | AC_REQUIRE([AC_TYPE_MODE_T]) | ||
21 | |||
22 | dnl Whether to enable precise timestamps in 'struct stat'. | ||
23 | m4_ifdef([gl_WINDOWS_STAT_TIMESPEC], [ | ||
24 | AC_REQUIRE([gl_WINDOWS_STAT_TIMESPEC]) | ||
25 | ], [ | ||
26 | WINDOWS_STAT_TIMESPEC=0 | ||
27 | ]) | ||
28 | AC_SUBST([WINDOWS_STAT_TIMESPEC]) | ||
29 | |||
30 | dnl Whether to ensure that struct stat.st_size is 64-bit wide. | ||
31 | m4_ifdef([gl_LARGEFILE], [ | ||
32 | AC_REQUIRE([gl_LARGEFILE]) | ||
33 | ], [ | ||
34 | WINDOWS_64_BIT_ST_SIZE=0 | ||
35 | ]) | ||
36 | AC_SUBST([WINDOWS_64_BIT_ST_SIZE]) | ||
37 | |||
38 | dnl Define types that are supposed to be defined in <sys/types.h> or | ||
39 | dnl <sys/stat.h>. | ||
40 | AC_CHECK_TYPE([nlink_t], [], | ||
41 | [AC_DEFINE([nlink_t], [int], | ||
42 | [Define to the type of st_nlink in struct stat, or a supertype.])], | ||
43 | [#include <sys/types.h> | ||
44 | #include <sys/stat.h>]) | ||
45 | |||
46 | dnl Check for declarations of anything we want to poison if the | ||
47 | dnl corresponding gnulib module is not in use. | ||
48 | gl_WARN_ON_USE_PREPARE([[#include <sys/stat.h> | ||
49 | ]], [chmod fchmodat fstat fstatat futimens getumask lchmod lstat | ||
50 | mkdirat mkfifo mkfifoat mknod mknodat stat utimensat]) | ||
51 | |||
52 | AC_REQUIRE([AC_C_RESTRICT]) | ||
53 | ]) | ||
54 | |||
55 | # gl_SYS_STAT_MODULE_INDICATOR([modulename]) | ||
56 | # sets the shell variable that indicates the presence of the given module | ||
57 | # to a C preprocessor expression that will evaluate to 1. | ||
58 | # This macro invocation must not occur in macros that are AC_REQUIREd. | ||
59 | AC_DEFUN([gl_SYS_STAT_MODULE_INDICATOR], | ||
60 | [ | ||
61 | dnl Ensure to expand the default settings once only. | ||
62 | gl_SYS_STAT_H_REQUIRE_DEFAULTS | ||
63 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) | ||
64 | dnl Define it also as a C macro, for the benefit of the unit tests. | ||
65 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) | ||
66 | ]) | ||
67 | |||
68 | # Initializes the default values for AC_SUBSTed shell variables. | ||
69 | # This macro must not be AC_REQUIREd. It must only be invoked, and only | ||
70 | # outside of macros or in macros that are not AC_REQUIREd. | ||
71 | AC_DEFUN([gl_SYS_STAT_H_REQUIRE_DEFAULTS], | ||
72 | [ | ||
73 | m4_defun(GL_MODULE_INDICATOR_PREFIX[_SYS_STAT_H_MODULE_INDICATOR_DEFAULTS], [ | ||
74 | gl_UNISTD_H_REQUIRE_DEFAULTS dnl for REPLACE_FCHDIR | ||
75 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CHMOD]) | ||
76 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCHMODAT]) | ||
77 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSTAT]) | ||
78 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSTATAT]) | ||
79 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FUTIMENS]) | ||
80 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETUMASK]) | ||
81 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LCHMOD]) | ||
82 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LSTAT]) | ||
83 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKDIR]) | ||
84 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKDIRAT]) | ||
85 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKFIFO]) | ||
86 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKFIFOAT]) | ||
87 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKNOD]) | ||
88 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKNODAT]) | ||
89 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STAT]) | ||
90 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UTIMENSAT]) | ||
91 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_OVERRIDES_STRUCT_STAT]) | ||
92 | dnl Support Microsoft deprecated alias function names by default. | ||
93 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CHMOD], [1]) | ||
94 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_MKDIR], [1]) | ||
95 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_UMASK], [1]) | ||
96 | ]) | ||
97 | m4_require(GL_MODULE_INDICATOR_PREFIX[_SYS_STAT_H_MODULE_INDICATOR_DEFAULTS]) | ||
98 | AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS]) | ||
99 | ]) | ||
100 | |||
101 | AC_DEFUN([gl_SYS_STAT_H_DEFAULTS], | ||
102 | [ | ||
103 | dnl Assume proper GNU behavior unless another module says otherwise. | ||
104 | HAVE_FCHMODAT=1; AC_SUBST([HAVE_FCHMODAT]) | ||
105 | HAVE_FSTATAT=1; AC_SUBST([HAVE_FSTATAT]) | ||
106 | HAVE_FUTIMENS=1; AC_SUBST([HAVE_FUTIMENS]) | ||
107 | HAVE_GETUMASK=1; AC_SUBST([HAVE_GETUMASK]) | ||
108 | HAVE_LCHMOD=1; AC_SUBST([HAVE_LCHMOD]) | ||
109 | HAVE_LSTAT=1; AC_SUBST([HAVE_LSTAT]) | ||
110 | HAVE_MKDIRAT=1; AC_SUBST([HAVE_MKDIRAT]) | ||
111 | HAVE_MKFIFO=1; AC_SUBST([HAVE_MKFIFO]) | ||
112 | HAVE_MKFIFOAT=1; AC_SUBST([HAVE_MKFIFOAT]) | ||
113 | HAVE_MKNOD=1; AC_SUBST([HAVE_MKNOD]) | ||
114 | HAVE_MKNODAT=1; AC_SUBST([HAVE_MKNODAT]) | ||
115 | HAVE_UTIMENSAT=1; AC_SUBST([HAVE_UTIMENSAT]) | ||
116 | REPLACE_CHMOD=0; AC_SUBST([REPLACE_CHMOD]) | ||
117 | REPLACE_FCHMODAT=0; AC_SUBST([REPLACE_FCHMODAT]) | ||
118 | REPLACE_FSTAT=0; AC_SUBST([REPLACE_FSTAT]) | ||
119 | REPLACE_FSTATAT=0; AC_SUBST([REPLACE_FSTATAT]) | ||
120 | REPLACE_FUTIMENS=0; AC_SUBST([REPLACE_FUTIMENS]) | ||
121 | REPLACE_LSTAT=0; AC_SUBST([REPLACE_LSTAT]) | ||
122 | REPLACE_MKDIR=0; AC_SUBST([REPLACE_MKDIR]) | ||
123 | REPLACE_MKFIFO=0; AC_SUBST([REPLACE_MKFIFO]) | ||
124 | REPLACE_MKFIFOAT=0; AC_SUBST([REPLACE_MKFIFOAT]) | ||
125 | REPLACE_MKNOD=0; AC_SUBST([REPLACE_MKNOD]) | ||
126 | REPLACE_MKNODAT=0; AC_SUBST([REPLACE_MKNODAT]) | ||
127 | REPLACE_STAT=0; AC_SUBST([REPLACE_STAT]) | ||
128 | REPLACE_UTIMENSAT=0; AC_SUBST([REPLACE_UTIMENSAT]) | ||
129 | ]) | ||
diff --git a/gl/m4/sys_types_h.m4 b/gl/m4/sys_types_h.m4 index d15c1b37..627671fb 100644 --- a/gl/m4/sys_types_h.m4 +++ b/gl/m4/sys_types_h.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # sys_types_h.m4 serial 5 | 1 | # sys_types_h.m4 serial 13 |
2 | dnl Copyright (C) 2011-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2011-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -7,6 +7,10 @@ dnl with or without modifications, as long as this notice is preserved. | |||
7 | AC_DEFUN_ONCE([gl_SYS_TYPES_H], | 7 | AC_DEFUN_ONCE([gl_SYS_TYPES_H], |
8 | [ | 8 | [ |
9 | AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS]) | 9 | AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS]) |
10 | |||
11 | dnl Use sane struct stat types in OpenVMS 8.2 and later. | ||
12 | AC_DEFINE([_USE_STD_STAT], 1, [For standard stat data types on VMS.]) | ||
13 | |||
10 | gl_NEXT_HEADERS([sys/types.h]) | 14 | gl_NEXT_HEADERS([sys/types.h]) |
11 | 15 | ||
12 | dnl Ensure the type pid_t gets defined. | 16 | dnl Ensure the type pid_t gets defined. |
@@ -17,8 +21,50 @@ AC_DEFUN_ONCE([gl_SYS_TYPES_H], | |||
17 | 21 | ||
18 | dnl Whether to override the 'off_t' type. | 22 | dnl Whether to override the 'off_t' type. |
19 | AC_REQUIRE([gl_TYPE_OFF_T]) | 23 | AC_REQUIRE([gl_TYPE_OFF_T]) |
24 | |||
25 | dnl Whether to override the 'dev_t' and 'ino_t' types. | ||
26 | m4_ifdef([gl_WINDOWS_STAT_INODES], [ | ||
27 | AC_REQUIRE([gl_WINDOWS_STAT_INODES]) | ||
28 | ], [ | ||
29 | WINDOWS_STAT_INODES=0 | ||
30 | ]) | ||
31 | AC_SUBST([WINDOWS_STAT_INODES]) | ||
32 | ]) | ||
33 | |||
34 | # Initializes the default values for AC_SUBSTed shell variables. | ||
35 | # This macro must not be AC_REQUIREd. It must only be invoked, and only | ||
36 | # outside of macros or in macros that are not AC_REQUIREd. | ||
37 | AC_DEFUN([gl_SYS_TYPES_H_REQUIRE_DEFAULTS], | ||
38 | [ | ||
39 | m4_defun(GL_MODULE_INDICATOR_PREFIX[_SYS_TYPE_H_MODULE_INDICATOR_DEFAULTS], [ | ||
40 | ]) | ||
41 | m4_require(GL_MODULE_INDICATOR_PREFIX[_SYS_TYPE_H_MODULE_INDICATOR_DEFAULTS]) | ||
42 | AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS]) | ||
20 | ]) | 43 | ]) |
21 | 44 | ||
22 | AC_DEFUN([gl_SYS_TYPES_H_DEFAULTS], | 45 | AC_DEFUN([gl_SYS_TYPES_H_DEFAULTS], |
23 | [ | 46 | [ |
24 | ]) | 47 | ]) |
48 | |||
49 | # This works around a buggy version in autoconf <= 2.69. | ||
50 | # See <https://lists.gnu.org/r/autoconf/2016-08/msg00014.html> | ||
51 | # The 2.70 version isn't quoted properly, so override it too. | ||
52 | |||
53 | m4_version_prereq([2.70.1], [], [ | ||
54 | |||
55 | m4_undefine([AC_HEADER_MAJOR]) | ||
56 | AC_DEFUN([AC_HEADER_MAJOR], | ||
57 | [AC_CHECK_HEADERS_ONCE([sys/types.h]) | ||
58 | AC_CHECK_HEADER([sys/mkdev.h], | ||
59 | [AC_DEFINE([MAJOR_IN_MKDEV], [1], | ||
60 | [Define to 1 if `major', `minor', and `makedev' are | ||
61 | declared in <mkdev.h>.])]) | ||
62 | if test $ac_cv_header_sys_mkdev_h = no; then | ||
63 | AC_CHECK_HEADER([sys/sysmacros.h], | ||
64 | [AC_DEFINE([MAJOR_IN_SYSMACROS], [1], | ||
65 | [Define to 1 if `major', `minor', and `makedev' | ||
66 | are declared in <sysmacros.h>.])]) | ||
67 | fi | ||
68 | ])# AC_HEADER_MAJOR | ||
69 | |||
70 | ]) | ||
diff --git a/gl/m4/sys_uio_h.m4 b/gl/m4/sys_uio_h.m4 index c75cbbd0..93a65d26 100644 --- a/gl/m4/sys_uio_h.m4 +++ b/gl/m4/sys_uio_h.m4 | |||
@@ -1,10 +1,10 @@ | |||
1 | # sys_uio_h.m4 serial 1 | 1 | # sys_uio_h.m4 serial 3 |
2 | dnl Copyright (C) 2011-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2011-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | AC_DEFUN([gl_HEADER_SYS_UIO], | 7 | AC_DEFUN_ONCE([gl_SYS_UIO_H], |
8 | [ | 8 | [ |
9 | AC_REQUIRE([gl_SYS_UIO_H_DEFAULTS]) | 9 | AC_REQUIRE([gl_SYS_UIO_H_DEFAULTS]) |
10 | dnl <sys/uio.h> is always overridden, because of GNULIB_POSIXCHECK. | 10 | dnl <sys/uio.h> is always overridden, because of GNULIB_POSIXCHECK. |
@@ -17,15 +17,30 @@ AC_DEFUN([gl_HEADER_SYS_UIO], | |||
17 | AC_SUBST([HAVE_SYS_UIO_H]) | 17 | AC_SUBST([HAVE_SYS_UIO_H]) |
18 | ]) | 18 | ]) |
19 | 19 | ||
20 | # gl_SYS_UIO_MODULE_INDICATOR([modulename]) | ||
21 | # sets the shell variable that indicates the presence of the given module | ||
22 | # to a C preprocessor expression that will evaluate to 1. | ||
23 | # This macro invocation must not occur in macros that are AC_REQUIREd. | ||
20 | AC_DEFUN([gl_SYS_UIO_MODULE_INDICATOR], | 24 | AC_DEFUN([gl_SYS_UIO_MODULE_INDICATOR], |
21 | [ | 25 | [ |
22 | dnl Use AC_REQUIRE here, so that the default settings are expanded once only. | 26 | dnl Ensure to expand the default settings once only. |
23 | AC_REQUIRE([gl_SYS_UIO_H_DEFAULTS]) | 27 | gl_SYS_UIO_H_REQUIRE_DEFAULTS |
24 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) | 28 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) |
25 | dnl Define it also as a C macro, for the benefit of the unit tests. | 29 | dnl Define it also as a C macro, for the benefit of the unit tests. |
26 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) | 30 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) |
27 | ]) | 31 | ]) |
28 | 32 | ||
33 | # Initializes the default values for AC_SUBSTed shell variables. | ||
34 | # This macro must not be AC_REQUIREd. It must only be invoked, and only | ||
35 | # outside of macros or in macros that are not AC_REQUIREd. | ||
36 | AC_DEFUN([gl_SYS_UIO_H_REQUIRE_DEFAULTS], | ||
37 | [ | ||
38 | m4_defun(GL_MODULE_INDICATOR_PREFIX[_SYS_UIO_H_MODULE_INDICATOR_DEFAULTS], [ | ||
39 | ]) | ||
40 | m4_require(GL_MODULE_INDICATOR_PREFIX[_SYS_UIO_H_MODULE_INDICATOR_DEFAULTS]) | ||
41 | AC_REQUIRE([gl_SYS_UIO_H_DEFAULTS]) | ||
42 | ]) | ||
43 | |||
29 | AC_DEFUN([gl_SYS_UIO_H_DEFAULTS], | 44 | AC_DEFUN([gl_SYS_UIO_H_DEFAULTS], |
30 | [ | 45 | [ |
31 | ]) | 46 | ]) |
diff --git a/gl/m4/threadlib.m4 b/gl/m4/threadlib.m4 index 26bdeb58..b536b047 100644 --- a/gl/m4/threadlib.m4 +++ b/gl/m4/threadlib.m4 | |||
@@ -1,11 +1,390 @@ | |||
1 | # threadlib.m4 serial 10 (gettext-0.18.2) | 1 | # threadlib.m4 serial 32a |
2 | dnl Copyright (C) 2005-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2005-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | dnl From Bruno Haible. | 7 | dnl From Bruno Haible. |
8 | 8 | ||
9 | AC_PREREQ([2.60]) | ||
10 | |||
11 | dnl The general structure of the multithreading modules in gnulib is that we | ||
12 | dnl have three set of modules: | ||
13 | dnl | ||
14 | dnl * POSIX API: | ||
15 | dnl pthread, which combines | ||
16 | dnl pthread-h | ||
17 | dnl pthread-thread | ||
18 | dnl pthread-once | ||
19 | dnl pthread-mutex | ||
20 | dnl pthread-rwlock | ||
21 | dnl pthread-cond | ||
22 | dnl pthread-tss | ||
23 | dnl pthread-spin | ||
24 | dnl sched_yield | ||
25 | dnl | ||
26 | dnl * ISO C API: | ||
27 | dnl threads, which combines | ||
28 | dnl threads-h | ||
29 | dnl thrd | ||
30 | dnl mtx | ||
31 | dnl cnd | ||
32 | dnl tss | ||
33 | dnl | ||
34 | dnl * Gnulib API, with an implementation that can be chosen at configure | ||
35 | dnl time through the option --enable-threads=... | ||
36 | dnl thread | ||
37 | dnl lock | ||
38 | dnl cond | ||
39 | dnl tls | ||
40 | dnl yield | ||
41 | dnl | ||
42 | dnl They are independent, except for the fact that | ||
43 | dnl - the implementation of the ISO C API may use the POSIX (or some other | ||
44 | dnl platform dependent) API, | ||
45 | dnl - the implementation of the Gnulib API may use the POSIX or ISO C or | ||
46 | dnl some other platform dependent API, depending on the --enable-threads | ||
47 | dnl option. | ||
48 | dnl | ||
49 | dnl This file contains macros for all of these APIs! | ||
50 | |||
51 | dnl ============================================================================ | ||
52 | dnl Macros for all thread APIs | ||
53 | |||
54 | AC_DEFUN([gl_ANYTHREADLIB_EARLY], | ||
55 | [ | ||
56 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
57 | if test -z "$gl_anythreadlib_early_done"; then | ||
58 | case "$host_os" in | ||
59 | osf*) | ||
60 | # On OSF/1, the compiler needs the flag -D_REENTRANT so that it | ||
61 | # groks <pthread.h>. cc also understands the flag -pthread, but | ||
62 | # we don't use it because 1. gcc-2.95 doesn't understand -pthread, | ||
63 | # 2. putting a flag into CPPFLAGS that has an effect on the linker | ||
64 | # causes the AC_LINK_IFELSE test below to succeed unexpectedly, | ||
65 | # leading to wrong values of LIBTHREAD and LTLIBTHREAD. | ||
66 | CPPFLAGS="$CPPFLAGS -D_REENTRANT" | ||
67 | ;; | ||
68 | esac | ||
69 | # Some systems optimize for single-threaded programs by default, and | ||
70 | # need special flags to disable these optimizations. For example, the | ||
71 | # definition of 'errno' in <errno.h>. | ||
72 | case "$host_os" in | ||
73 | aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; | ||
74 | solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; | ||
75 | esac | ||
76 | gl_anythreadlib_early_done=done | ||
77 | fi | ||
78 | ]) | ||
79 | |||
80 | dnl Checks whether the compiler and linker support weak declarations of symbols. | ||
81 | |||
82 | AC_DEFUN([gl_WEAK_SYMBOLS], | ||
83 | [ | ||
84 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
85 | AC_CACHE_CHECK([whether imported symbols can be declared weak], | ||
86 | [gl_cv_have_weak], | ||
87 | [case "$host_os" in | ||
88 | cygwin*) | ||
89 | dnl On Cygwin 3.2.0 with gcc 10.2, the test below would succeed, but | ||
90 | dnl programs that use pthread_in_use() with weak symbol references | ||
91 | dnl crash miserably at runtime. | ||
92 | gl_cv_have_weak="guessing no" | ||
93 | ;; | ||
94 | *) | ||
95 | gl_cv_have_weak=no | ||
96 | dnl First, test whether the compiler accepts it syntactically. | ||
97 | AC_LINK_IFELSE( | ||
98 | [AC_LANG_PROGRAM( | ||
99 | [[extern void xyzzy (); | ||
100 | #pragma weak xyzzy]], | ||
101 | [[xyzzy();]])], | ||
102 | [gl_cv_have_weak=maybe]) | ||
103 | if test $gl_cv_have_weak = maybe; then | ||
104 | dnl Second, test whether it actually works. On Cygwin 1.7.2, with | ||
105 | dnl gcc 4.3, symbols declared weak always evaluate to the address 0. | ||
106 | AC_RUN_IFELSE( | ||
107 | [AC_LANG_SOURCE([[ | ||
108 | #include <stdio.h> | ||
109 | #pragma weak fputs | ||
110 | int main () | ||
111 | { | ||
112 | return (fputs == NULL); | ||
113 | }]])], | ||
114 | [gl_cv_have_weak=yes], | ||
115 | [gl_cv_have_weak=no], | ||
116 | [dnl When cross-compiling, assume that only ELF platforms support | ||
117 | dnl weak symbols. | ||
118 | AC_EGREP_CPP([Extensible Linking Format], | ||
119 | [#ifdef __ELF__ | ||
120 | Extensible Linking Format | ||
121 | #endif | ||
122 | ], | ||
123 | [gl_cv_have_weak="guessing yes"], | ||
124 | [gl_cv_have_weak="guessing no"]) | ||
125 | ]) | ||
126 | fi | ||
127 | ;; | ||
128 | esac | ||
129 | dnl But when linking statically, weak symbols don't work. | ||
130 | case " $LDFLAGS " in | ||
131 | *" -static "*) gl_cv_have_weak=no ;; | ||
132 | esac | ||
133 | dnl Test for a bug in FreeBSD 11: A link error occurs when using a weak | ||
134 | dnl symbol and linking against a shared library that has a dependency on | ||
135 | dnl the shared library that defines the symbol. | ||
136 | case "$gl_cv_have_weak" in | ||
137 | *yes) | ||
138 | case "$host_os" in | ||
139 | freebsd* | dragonfly* | midnightbsd*) | ||
140 | : > conftest1.c | ||
141 | $CC $CPPFLAGS $CFLAGS $LDFLAGS -fPIC -shared -o libempty.so conftest1.c -lpthread >&AS_MESSAGE_LOG_FD 2>&1 | ||
142 | cat <<EOF > conftest2.c | ||
143 | #include <pthread.h> | ||
144 | #pragma weak pthread_mutexattr_gettype | ||
145 | int main () | ||
146 | { | ||
147 | return (pthread_mutexattr_gettype != NULL); | ||
148 | } | ||
149 | EOF | ||
150 | $CC $CPPFLAGS $CFLAGS $LDFLAGS -o conftest conftest2.c libempty.so >&AS_MESSAGE_LOG_FD 2>&1 \ | ||
151 | || gl_cv_have_weak=no | ||
152 | rm -f conftest1.c libempty.so conftest2.c conftest | ||
153 | ;; | ||
154 | esac | ||
155 | ;; | ||
156 | esac | ||
157 | ]) | ||
158 | case "$gl_cv_have_weak" in | ||
159 | *yes) | ||
160 | AC_DEFINE([HAVE_WEAK_SYMBOLS], [1], | ||
161 | [Define to 1 if the compiler and linker support weak declarations of symbols.]) | ||
162 | ;; | ||
163 | esac | ||
164 | ]) | ||
165 | |||
166 | dnl ============================================================================ | ||
167 | dnl Macros for the POSIX API | ||
168 | |||
169 | dnl gl_PTHREADLIB | ||
170 | dnl ------------- | ||
171 | dnl Tests for the libraries needs for using the POSIX threads API. | ||
172 | dnl Sets the variable LIBPTHREAD to the linker options for use in a Makefile. | ||
173 | dnl Sets the variable LIBPMULTITHREAD, for programs that really need | ||
174 | dnl multithread functionality. The difference between LIBPTHREAD and | ||
175 | dnl LIBPMULTITHREAD is that on platforms supporting weak symbols, typically | ||
176 | dnl LIBPTHREAD is empty whereas LIBPMULTITHREAD is not. | ||
177 | dnl Sets the variable LIB_SCHED_YIELD to the linker options needed to use the | ||
178 | dnl sched_yield() function. | ||
179 | dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for | ||
180 | dnl multithread-safe programs. | ||
181 | dnl Defines the C macro HAVE_PTHREAD_API if (at least parts of) the POSIX | ||
182 | dnl threads API is available. | ||
183 | |||
184 | dnl The guts of gl_PTHREADLIB. Needs to be expanded only once. | ||
185 | |||
186 | AC_DEFUN([gl_PTHREADLIB_BODY], | ||
187 | [ | ||
188 | AC_REQUIRE([gl_ANYTHREADLIB_EARLY]) | ||
189 | if test -z "$gl_pthreadlib_body_done"; then | ||
190 | gl_pthread_api=no | ||
191 | LIBPTHREAD= | ||
192 | LIBPMULTITHREAD= | ||
193 | # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that | ||
194 | # it groks <pthread.h>. It's added above, in gl_ANYTHREADLIB_EARLY. | ||
195 | AC_CHECK_HEADER([pthread.h], | ||
196 | [gl_have_pthread_h=yes], [gl_have_pthread_h=no]) | ||
197 | if test "$gl_have_pthread_h" = yes; then | ||
198 | # Other possible tests: | ||
199 | # -lpthreads (FSU threads, PCthreads) | ||
200 | # -lgthreads | ||
201 | # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist | ||
202 | # in libc. IRIX 6.5 has the first one in both libc and libpthread, but | ||
203 | # the second one only in libpthread, and lock.c needs it. | ||
204 | # | ||
205 | # If -pthread works, prefer it to -lpthread, since Ubuntu 14.04 | ||
206 | # needs -pthread for some reason. See: | ||
207 | # https://lists.gnu.org/r/bug-gnulib/2014-09/msg00023.html | ||
208 | save_LIBS=$LIBS | ||
209 | for gl_pthread in '' '-pthread'; do | ||
210 | LIBS="$LIBS $gl_pthread" | ||
211 | AC_LINK_IFELSE( | ||
212 | [AC_LANG_PROGRAM( | ||
213 | [[#include <pthread.h> | ||
214 | pthread_mutex_t m; | ||
215 | pthread_mutexattr_t ma; | ||
216 | ]], | ||
217 | [[pthread_mutex_lock (&m); | ||
218 | pthread_mutexattr_init (&ma);]])], | ||
219 | [gl_pthread_api=yes | ||
220 | LIBPTHREAD=$gl_pthread | ||
221 | LIBPMULTITHREAD=$gl_pthread]) | ||
222 | LIBS=$save_LIBS | ||
223 | test $gl_pthread_api = yes && break | ||
224 | done | ||
225 | echo "$as_me:__oline__: gl_pthread_api=$gl_pthread_api" >&AS_MESSAGE_LOG_FD | ||
226 | echo "$as_me:__oline__: LIBPTHREAD=$LIBPTHREAD" >&AS_MESSAGE_LOG_FD | ||
227 | |||
228 | gl_pthread_in_glibc=no | ||
229 | # On Linux with glibc >= 2.34, libc contains the fully functional | ||
230 | # pthread functions. | ||
231 | case "$host_os" in | ||
232 | linux*) | ||
233 | AC_EGREP_CPP([Lucky user], | ||
234 | [#include <features.h> | ||
235 | #ifdef __GNU_LIBRARY__ | ||
236 | #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 34) || (__GLIBC__ > 2) | ||
237 | Lucky user | ||
238 | #endif | ||
239 | #endif | ||
240 | ], | ||
241 | [gl_pthread_in_glibc=yes], | ||
242 | []) | ||
243 | ;; | ||
244 | esac | ||
245 | echo "$as_me:__oline__: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&AS_MESSAGE_LOG_FD | ||
246 | |||
247 | # Test for libpthread by looking for pthread_kill. (Not pthread_self, | ||
248 | # since it is defined as a macro on OSF/1.) | ||
249 | if test $gl_pthread_api = yes && test -z "$LIBPTHREAD"; then | ||
250 | # The program links fine without libpthread. But it may actually | ||
251 | # need to link with libpthread in order to create multiple threads. | ||
252 | AC_CHECK_LIB([pthread], [pthread_kill], | ||
253 | [if test $gl_pthread_in_glibc = yes; then | ||
254 | LIBPMULTITHREAD= | ||
255 | else | ||
256 | LIBPMULTITHREAD=-lpthread | ||
257 | # On Solaris and HP-UX, most pthread functions exist also in libc. | ||
258 | # Therefore pthread_in_use() needs to actually try to create a | ||
259 | # thread: pthread_create from libc will fail, whereas | ||
260 | # pthread_create will actually create a thread. | ||
261 | # On Solaris 10 or newer, this test is no longer needed, because | ||
262 | # libc contains the fully functional pthread functions. | ||
263 | case "$host_os" in | ||
264 | changequote(,)dnl | ||
265 | solaris | solaris2.[1-9] | solaris2.[1-9].* | hpux*) | ||
266 | changequote([,])dnl | ||
267 | AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1], | ||
268 | [Define if the pthread_in_use() detection is hard.]) | ||
269 | esac | ||
270 | fi | ||
271 | ]) | ||
272 | elif test $gl_pthread_api != yes; then | ||
273 | # Some library is needed. Try libpthread and libc_r. | ||
274 | AC_CHECK_LIB([pthread], [pthread_kill], | ||
275 | [gl_pthread_api=yes | ||
276 | LIBPTHREAD=-lpthread | ||
277 | LIBPMULTITHREAD=-lpthread]) | ||
278 | if test $gl_pthread_api != yes; then | ||
279 | # For FreeBSD 4. | ||
280 | AC_CHECK_LIB([c_r], [pthread_kill], | ||
281 | [gl_pthread_api=yes | ||
282 | LIBPTHREAD=-lc_r | ||
283 | LIBPMULTITHREAD=-lc_r]) | ||
284 | fi | ||
285 | fi | ||
286 | echo "$as_me:__oline__: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&AS_MESSAGE_LOG_FD | ||
287 | fi | ||
288 | AC_MSG_CHECKING([whether POSIX threads API is available]) | ||
289 | AC_MSG_RESULT([$gl_pthread_api]) | ||
290 | AC_SUBST([LIBPTHREAD]) | ||
291 | AC_SUBST([LIBPMULTITHREAD]) | ||
292 | if test $gl_pthread_api = yes; then | ||
293 | AC_DEFINE([HAVE_PTHREAD_API], [1], | ||
294 | [Define if you have the <pthread.h> header and the POSIX threads API.]) | ||
295 | fi | ||
296 | |||
297 | dnl On some systems, sched_yield is in librt, rather than in libpthread. | ||
298 | AC_LINK_IFELSE( | ||
299 | [AC_LANG_PROGRAM( | ||
300 | [[#include <sched.h>]], | ||
301 | [[sched_yield ();]])], | ||
302 | [LIB_SCHED_YIELD= | ||
303 | ], | ||
304 | [dnl Solaris 7...10 has sched_yield in librt, not in libpthread or libc. | ||
305 | AC_CHECK_LIB([rt], [sched_yield], [LIB_SCHED_YIELD=-lrt], | ||
306 | [dnl Solaris 2.5.1, 2.6 has sched_yield in libposix4, not librt. | ||
307 | AC_CHECK_LIB([posix4], [sched_yield], [LIB_SCHED_YIELD=-lposix4])]) | ||
308 | ]) | ||
309 | AC_SUBST([LIB_SCHED_YIELD]) | ||
310 | |||
311 | gl_pthreadlib_body_done=done | ||
312 | fi | ||
313 | ]) | ||
314 | |||
315 | AC_DEFUN([gl_PTHREADLIB], | ||
316 | [ | ||
317 | AC_REQUIRE([gl_ANYTHREADLIB_EARLY]) | ||
318 | gl_PTHREADLIB_BODY | ||
319 | ]) | ||
320 | |||
321 | dnl ============================================================================ | ||
322 | dnl Macros for the ISO C API | ||
323 | |||
324 | dnl gl_STDTHREADLIB | ||
325 | dnl --------------- | ||
326 | dnl Tests for the libraries needs for using the ISO C threads API. | ||
327 | dnl Sets the variable LIBSTDTHREAD to the linker options for use in a Makefile. | ||
328 | dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for | ||
329 | dnl multithread-safe programs. | ||
330 | dnl Defines the C macro HAVE_THREADS_H if (at least parts of) the ISO C threads | ||
331 | dnl API is available. | ||
332 | |||
333 | dnl The guts of gl_STDTHREADLIB. Needs to be expanded only once. | ||
334 | |||
335 | AC_DEFUN([gl_STDTHREADLIB_BODY], | ||
336 | [ | ||
337 | AC_REQUIRE([gl_ANYTHREADLIB_EARLY]) | ||
338 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
339 | if test -z "$gl_stdthreadlib_body_done"; then | ||
340 | AC_CHECK_HEADERS_ONCE([threads.h]) | ||
341 | |||
342 | case "$host_os" in | ||
343 | mingw*) | ||
344 | LIBSTDTHREAD= | ||
345 | ;; | ||
346 | *) | ||
347 | gl_PTHREADLIB_BODY | ||
348 | if test $ac_cv_header_threads_h = yes; then | ||
349 | dnl glibc >= 2.29 has thrd_create in libpthread. | ||
350 | dnl FreeBSD >= 10 has thrd_create in libstdthreads; this library depends | ||
351 | dnl on libpthread (for the symbol 'pthread_mutexattr_gettype'). | ||
352 | dnl glibc >= 2.34, AIX >= 7.1, and Solaris >= 11.4 have thrd_create in | ||
353 | dnl libc. | ||
354 | AC_CHECK_FUNCS([thrd_create]) | ||
355 | if test $ac_cv_func_thrd_create = yes; then | ||
356 | LIBSTDTHREAD= | ||
357 | else | ||
358 | AC_CHECK_LIB([stdthreads], [thrd_create], [ | ||
359 | LIBSTDTHREAD='-lstdthreads -lpthread' | ||
360 | ], [ | ||
361 | dnl Guess that thrd_create is in libpthread. | ||
362 | LIBSTDTHREAD="$LIBPMULTITHREAD" | ||
363 | ]) | ||
364 | fi | ||
365 | else | ||
366 | dnl Libraries needed by thrd.c, mtx.c, cnd.c, tss.c. | ||
367 | LIBSTDTHREAD="$LIBPMULTITHREAD $LIB_SCHED_YIELD" | ||
368 | fi | ||
369 | ;; | ||
370 | esac | ||
371 | AC_SUBST([LIBSTDTHREAD]) | ||
372 | |||
373 | AC_MSG_CHECKING([whether ISO C threads API is available]) | ||
374 | AC_MSG_RESULT([$ac_cv_header_threads_h]) | ||
375 | gl_stdthreadlib_body_done=done | ||
376 | fi | ||
377 | ]) | ||
378 | |||
379 | AC_DEFUN([gl_STDTHREADLIB], | ||
380 | [ | ||
381 | AC_REQUIRE([gl_ANYTHREADLIB_EARLY]) | ||
382 | gl_STDTHREADLIB_BODY | ||
383 | ]) | ||
384 | |||
385 | dnl ============================================================================ | ||
386 | dnl Macros for the Gnulib API | ||
387 | |||
9 | dnl gl_THREADLIB | 388 | dnl gl_THREADLIB |
10 | dnl ------------ | 389 | dnl ------------ |
11 | dnl Tests for a multithreading library to be used. | 390 | dnl Tests for a multithreading library to be used. |
@@ -14,17 +393,25 @@ dnl (it must be placed before the invocation of gl_THREADLIB_EARLY!), then the | |||
14 | dnl default is 'no', otherwise it is system dependent. In both cases, the user | 393 | dnl default is 'no', otherwise it is system dependent. In both cases, the user |
15 | dnl can change the choice through the options --enable-threads=choice or | 394 | dnl can change the choice through the options --enable-threads=choice or |
16 | dnl --disable-threads. | 395 | dnl --disable-threads. |
17 | dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS, | 396 | dnl Defines at most one of the macros USE_ISOC_THREADS, USE_POSIX_THREADS, |
18 | dnl USE_PTH_THREADS, USE_WINDOWS_THREADS | 397 | dnl USE_ISOC_AND_POSIX_THREADS, USE_WINDOWS_THREADS. |
398 | dnl The choice --enable-threads=isoc+posix is available only on platforms that | ||
399 | dnl have both the ISO C and the POSIX threads APIs. It has the effect of using | ||
400 | dnl the ISO C API for most things and the POSIX API only for creating and | ||
401 | dnl controlling threads (because there is no equivalent to pthread_atfork in | ||
402 | dnl the ISO C API). | ||
19 | dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use | 403 | dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use |
20 | dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with | 404 | dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with |
21 | dnl libtool). | 405 | dnl libtool). |
22 | dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for | 406 | dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for |
23 | dnl programs that really need multithread functionality. The difference | 407 | dnl programs that really need multithread functionality. The difference |
24 | dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak | 408 | dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak |
25 | dnl symbols, typically LIBTHREAD="" whereas LIBMULTITHREAD="-lpthread". | 409 | dnl symbols, typically LIBTHREAD is empty whereas LIBMULTITHREAD is not. |
26 | dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for | 410 | dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for |
27 | dnl multithread-safe programs. | 411 | dnl multithread-safe programs. |
412 | dnl Since support for GNU pth was removed, $LTLIBTHREAD and $LIBTHREAD have the | ||
413 | dnl same value, and similarly $LTLIBMULTITHREAD and $LIBMULTITHREAD have the | ||
414 | dnl same value. Only system libraries are needed. | ||
28 | 415 | ||
29 | AC_DEFUN([gl_THREADLIB_EARLY], | 416 | AC_DEFUN([gl_THREADLIB_EARLY], |
30 | [ | 417 | [ |
@@ -43,18 +430,15 @@ AC_DEFUN([gl_THREADLIB_EARLY_BODY], | |||
43 | 430 | ||
44 | AC_REQUIRE([AC_CANONICAL_HOST]) | 431 | AC_REQUIRE([AC_CANONICAL_HOST]) |
45 | dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems. | 432 | dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems. |
46 | dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes | 433 | AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) |
47 | dnl AC_GNU_SOURCE. | ||
48 | m4_ifdef([AC_USE_SYSTEM_EXTENSIONS], | ||
49 | [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])], | ||
50 | [AC_REQUIRE([AC_GNU_SOURCE])]) | ||
51 | dnl Check for multithreading. | 434 | dnl Check for multithreading. |
52 | m4_ifdef([gl_THREADLIB_DEFAULT_NO], | 435 | m4_ifdef([gl_THREADLIB_DEFAULT_NO], |
53 | [m4_divert_text([DEFAULTS], [gl_use_threads_default=no])], | 436 | [m4_divert_text([DEFAULTS], [gl_use_threads_default=no])], |
54 | [m4_divert_text([DEFAULTS], [gl_use_threads_default=])]) | 437 | [m4_divert_text([DEFAULTS], [gl_use_threads_default=])]) |
438 | m4_divert_text([DEFAULTS], [gl_use_winpthreads_default=]) | ||
55 | AC_ARG_ENABLE([threads], | 439 | AC_ARG_ENABLE([threads], |
56 | AC_HELP_STRING([--enable-threads={posix|solaris|pth|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [ | 440 | AS_HELP_STRING([--enable-threads={isoc|posix|isoc+posix|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [ |
57 | AC_HELP_STRING([--disable-threads], [build without multithread safety])]), | 441 | AS_HELP_STRING([--disable-threads], [build without multithread safety])]), |
58 | [gl_use_threads=$enableval], | 442 | [gl_use_threads=$enableval], |
59 | [if test -n "$gl_use_threads_default"; then | 443 | [if test -n "$gl_use_threads_default"; then |
60 | gl_use_threads="$gl_use_threads_default" | 444 | gl_use_threads="$gl_use_threads_default" |
@@ -64,41 +448,35 @@ changequote(,)dnl | |||
64 | dnl Disable multithreading by default on OSF/1, because it interferes | 448 | dnl Disable multithreading by default on OSF/1, because it interferes |
65 | dnl with fork()/exec(): When msgexec is linked with -lpthread, its | 449 | dnl with fork()/exec(): When msgexec is linked with -lpthread, its |
66 | dnl child process gets an endless segmentation fault inside execvp(). | 450 | dnl child process gets an endless segmentation fault inside execvp(). |
451 | osf*) gl_use_threads=no ;; | ||
67 | dnl Disable multithreading by default on Cygwin 1.5.x, because it has | 452 | dnl Disable multithreading by default on Cygwin 1.5.x, because it has |
68 | dnl bugs that lead to endless loops or crashes. See | 453 | dnl bugs that lead to endless loops or crashes. See |
69 | dnl <http://cygwin.com/ml/cygwin/2009-08/msg00283.html>. | 454 | dnl <https://cygwin.com/ml/cygwin/2009-08/msg00283.html>. |
70 | osf*) gl_use_threads=no ;; | ||
71 | cygwin*) | 455 | cygwin*) |
72 | case `uname -r` in | 456 | case `uname -r` in |
73 | 1.[0-5].*) gl_use_threads=no ;; | 457 | 1.[0-5].*) gl_use_threads=no ;; |
74 | *) gl_use_threads=yes ;; | 458 | *) gl_use_threads=yes ;; |
75 | esac | 459 | esac |
76 | ;; | 460 | ;; |
461 | dnl Obey gl_AVOID_WINPTHREAD on mingw. | ||
462 | mingw*) | ||
463 | case "$gl_use_winpthreads_default" in | ||
464 | yes) gl_use_threads=posix ;; | ||
465 | no) gl_use_threads=windows ;; | ||
466 | *) gl_use_threads=yes ;; | ||
467 | esac | ||
468 | ;; | ||
77 | *) gl_use_threads=yes ;; | 469 | *) gl_use_threads=yes ;; |
78 | esac | 470 | esac |
79 | changequote([,])dnl | 471 | changequote([,])dnl |
80 | fi | 472 | fi |
81 | ]) | 473 | ]) |
82 | if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then | 474 | if test "$gl_use_threads" = yes \ |
83 | # For using <pthread.h>: | 475 | || test "$gl_use_threads" = isoc \ |
84 | case "$host_os" in | 476 | || test "$gl_use_threads" = posix \ |
85 | osf*) | 477 | || test "$gl_use_threads" = isoc+posix; then |
86 | # On OSF/1, the compiler needs the flag -D_REENTRANT so that it | 478 | # For using <threads.h> or <pthread.h>: |
87 | # groks <pthread.h>. cc also understands the flag -pthread, but | 479 | gl_ANYTHREADLIB_EARLY |
88 | # we don't use it because 1. gcc-2.95 doesn't understand -pthread, | ||
89 | # 2. putting a flag into CPPFLAGS that has an effect on the linker | ||
90 | # causes the AC_LINK_IFELSE test below to succeed unexpectedly, | ||
91 | # leading to wrong values of LIBTHREAD and LTLIBTHREAD. | ||
92 | CPPFLAGS="$CPPFLAGS -D_REENTRANT" | ||
93 | ;; | ||
94 | esac | ||
95 | # Some systems optimize for single-threaded programs by default, and | ||
96 | # need special flags to disable these optimizations. For example, the | ||
97 | # definition of 'errno' in <errno.h>. | ||
98 | case "$host_os" in | ||
99 | aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;; | ||
100 | solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;; | ||
101 | esac | ||
102 | fi | 480 | fi |
103 | ]) | 481 | ]) |
104 | 482 | ||
@@ -114,168 +492,69 @@ AC_DEFUN([gl_THREADLIB_BODY], | |||
114 | LTLIBMULTITHREAD= | 492 | LTLIBMULTITHREAD= |
115 | if test "$gl_use_threads" != no; then | 493 | if test "$gl_use_threads" != no; then |
116 | dnl Check whether the compiler and linker support weak declarations. | 494 | dnl Check whether the compiler and linker support weak declarations. |
117 | AC_CACHE_CHECK([whether imported symbols can be declared weak], | 495 | gl_WEAK_SYMBOLS |
118 | [gl_cv_have_weak], | 496 | if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then |
119 | [gl_cv_have_weak=no | 497 | dnl If we use weak symbols to implement pthread_in_use / pth_in_use / |
120 | dnl First, test whether the compiler accepts it syntactically. | 498 | dnl thread_in_use, we also need to test whether the ISO C 11 thrd_create |
121 | AC_LINK_IFELSE( | 499 | dnl facility is in use. |
122 | [AC_LANG_PROGRAM( | 500 | AC_CHECK_HEADERS_ONCE([threads.h]) |
123 | [[extern void xyzzy (); | 501 | : |
124 | #pragma weak xyzzy]], | 502 | fi |
125 | [[xyzzy();]])], | 503 | if test "$gl_use_threads" = isoc || test "$gl_use_threads" = isoc+posix; then |
126 | [gl_cv_have_weak=maybe]) | 504 | AC_CHECK_HEADERS_ONCE([threads.h]) |
127 | if test $gl_cv_have_weak = maybe; then | 505 | gl_have_isoc_threads="$ac_cv_header_threads_h" |
128 | dnl Second, test whether it actually works. On Cygwin 1.7.2, with | 506 | fi |
129 | dnl gcc 4.3, symbols declared weak always evaluate to the address 0. | 507 | if test "$gl_use_threads" = yes \ |
130 | AC_RUN_IFELSE( | 508 | || test "$gl_use_threads" = posix \ |
131 | [AC_LANG_SOURCE([[ | 509 | || test "$gl_use_threads" = isoc+posix; then |
132 | #include <stdio.h> | 510 | gl_PTHREADLIB_BODY |
133 | #pragma weak fputs | 511 | LIBTHREAD=$LIBPTHREAD LTLIBTHREAD=$LIBPTHREAD |
134 | int main () | 512 | LIBMULTITHREAD=$LIBPMULTITHREAD LTLIBMULTITHREAD=$LIBPMULTITHREAD |
135 | { | 513 | if test $gl_pthread_api = yes; then |
136 | return (fputs == NULL); | 514 | if test "$gl_use_threads" = isoc+posix && test "$gl_have_isoc_threads" = yes; then |
137 | }]])], | 515 | gl_threads_api='isoc+posix' |
138 | [gl_cv_have_weak=yes], | 516 | AC_DEFINE([USE_ISOC_AND_POSIX_THREADS], [1], |
139 | [gl_cv_have_weak=no], | 517 | [Define if the combination of the ISO C and POSIX multithreading APIs can be used.]) |
140 | [dnl When cross-compiling, assume that only ELF platforms support | 518 | LIBTHREAD= LTLIBTHREAD= |
141 | dnl weak symbols. | ||
142 | AC_EGREP_CPP([Extensible Linking Format], | ||
143 | [#ifdef __ELF__ | ||
144 | Extensible Linking Format | ||
145 | #endif | ||
146 | ], | ||
147 | [gl_cv_have_weak="guessing yes"], | ||
148 | [gl_cv_have_weak="guessing no"]) | ||
149 | ]) | ||
150 | fi | ||
151 | ]) | ||
152 | if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then | ||
153 | # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that | ||
154 | # it groks <pthread.h>. It's added above, in gl_THREADLIB_EARLY_BODY. | ||
155 | AC_CHECK_HEADER([pthread.h], | ||
156 | [gl_have_pthread_h=yes], [gl_have_pthread_h=no]) | ||
157 | if test "$gl_have_pthread_h" = yes; then | ||
158 | # Other possible tests: | ||
159 | # -lpthreads (FSU threads, PCthreads) | ||
160 | # -lgthreads | ||
161 | gl_have_pthread= | ||
162 | # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist | ||
163 | # in libc. IRIX 6.5 has the first one in both libc and libpthread, but | ||
164 | # the second one only in libpthread, and lock.c needs it. | ||
165 | AC_LINK_IFELSE( | ||
166 | [AC_LANG_PROGRAM( | ||
167 | [[#include <pthread.h>]], | ||
168 | [[pthread_mutex_lock((pthread_mutex_t*)0); | ||
169 | pthread_mutexattr_init((pthread_mutexattr_t*)0);]])], | ||
170 | [gl_have_pthread=yes]) | ||
171 | # Test for libpthread by looking for pthread_kill. (Not pthread_self, | ||
172 | # since it is defined as a macro on OSF/1.) | ||
173 | if test -n "$gl_have_pthread"; then | ||
174 | # The program links fine without libpthread. But it may actually | ||
175 | # need to link with libpthread in order to create multiple threads. | ||
176 | AC_CHECK_LIB([pthread], [pthread_kill], | ||
177 | [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread | ||
178 | # On Solaris and HP-UX, most pthread functions exist also in libc. | ||
179 | # Therefore pthread_in_use() needs to actually try to create a | ||
180 | # thread: pthread_create from libc will fail, whereas | ||
181 | # pthread_create will actually create a thread. | ||
182 | case "$host_os" in | ||
183 | solaris* | hpux*) | ||
184 | AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1], | ||
185 | [Define if the pthread_in_use() detection is hard.]) | ||
186 | esac | ||
187 | ]) | ||
188 | else | 519 | else |
189 | # Some library is needed. Try libpthread and libc_r. | ||
190 | AC_CHECK_LIB([pthread], [pthread_kill], | ||
191 | [gl_have_pthread=yes | ||
192 | LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread | ||
193 | LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread]) | ||
194 | if test -z "$gl_have_pthread"; then | ||
195 | # For FreeBSD 4. | ||
196 | AC_CHECK_LIB([c_r], [pthread_kill], | ||
197 | [gl_have_pthread=yes | ||
198 | LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r | ||
199 | LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r]) | ||
200 | fi | ||
201 | fi | ||
202 | if test -n "$gl_have_pthread"; then | ||
203 | gl_threads_api=posix | 520 | gl_threads_api=posix |
204 | AC_DEFINE([USE_POSIX_THREADS], [1], | 521 | AC_DEFINE([USE_POSIX_THREADS], [1], |
205 | [Define if the POSIX multithreading library can be used.]) | 522 | [Define if the POSIX multithreading library can be used.]) |
206 | if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then | 523 | if test -z "$LIBMULTITHREAD" && test -z "$LTLIBMULTITHREAD"; then |
524 | AC_DEFINE([USE_POSIX_THREADS_FROM_LIBC], [1], | ||
525 | [Define if references to the POSIX multithreading library are satisfied by libc.]) | ||
526 | else | ||
207 | if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then | 527 | if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then |
208 | AC_DEFINE([USE_POSIX_THREADS_WEAK], [1], | 528 | AC_DEFINE([USE_POSIX_THREADS_WEAK], [1], |
209 | [Define if references to the POSIX multithreading library should be made weak.]) | 529 | [Define if references to the POSIX multithreading library should be made weak.]) |
210 | LIBTHREAD= | 530 | LIBTHREAD= LTLIBTHREAD= |
211 | LTLIBTHREAD= | 531 | else |
532 | case "$host_os" in | ||
533 | freebsd* | dragonfly* | midnightbsd*) | ||
534 | if test "x$LIBTHREAD" != "x$LIBMULTITHREAD"; then | ||
535 | dnl If weak symbols can't tell whether pthread_create(), pthread_key_create() | ||
536 | dnl etc. will succeed, we need a runtime test. | ||
537 | AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1], | ||
538 | [Define if the pthread_in_use() detection is hard.]) | ||
539 | fi | ||
540 | ;; | ||
541 | esac | ||
212 | fi | 542 | fi |
213 | fi | 543 | fi |
214 | fi | 544 | fi |
215 | fi | 545 | fi |
216 | fi | 546 | fi |
217 | if test -z "$gl_have_pthread"; then | 547 | if test $gl_threads_api = none; then |
218 | if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then | 548 | if test "$gl_use_threads" = isoc && test "$gl_have_isoc_threads" = yes; then |
219 | gl_have_solaristhread= | 549 | gl_STDTHREADLIB_BODY |
220 | gl_save_LIBS="$LIBS" | 550 | LIBTHREAD=$LIBSTDTHREAD LTLIBTHREAD=$LIBSTDTHREAD |
221 | LIBS="$LIBS -lthread" | 551 | LIBMULTITHREAD=$LIBSTDTHREAD LTLIBMULTITHREAD=$LIBSTDTHREAD |
222 | AC_LINK_IFELSE( | 552 | gl_threads_api=isoc |
223 | [AC_LANG_PROGRAM( | 553 | AC_DEFINE([USE_ISOC_THREADS], [1], |
224 | [[ | 554 | [Define if the ISO C multithreading library can be used.]) |
225 | #include <thread.h> | ||
226 | #include <synch.h> | ||
227 | ]], | ||
228 | [[thr_self();]])], | ||
229 | [gl_have_solaristhread=yes]) | ||
230 | LIBS="$gl_save_LIBS" | ||
231 | if test -n "$gl_have_solaristhread"; then | ||
232 | gl_threads_api=solaris | ||
233 | LIBTHREAD=-lthread | ||
234 | LTLIBTHREAD=-lthread | ||
235 | LIBMULTITHREAD="$LIBTHREAD" | ||
236 | LTLIBMULTITHREAD="$LTLIBTHREAD" | ||
237 | AC_DEFINE([USE_SOLARIS_THREADS], [1], | ||
238 | [Define if the old Solaris multithreading library can be used.]) | ||
239 | if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then | ||
240 | AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1], | ||
241 | [Define if references to the old Solaris multithreading library should be made weak.]) | ||
242 | LIBTHREAD= | ||
243 | LTLIBTHREAD= | ||
244 | fi | ||
245 | fi | ||
246 | fi | 555 | fi |
247 | fi | 556 | fi |
248 | if test "$gl_use_threads" = pth; then | 557 | if test $gl_threads_api = none; then |
249 | gl_save_CPPFLAGS="$CPPFLAGS" | ||
250 | AC_LIB_LINKFLAGS([pth]) | ||
251 | gl_have_pth= | ||
252 | gl_save_LIBS="$LIBS" | ||
253 | LIBS="$LIBS $LIBPTH" | ||
254 | AC_LINK_IFELSE( | ||
255 | [AC_LANG_PROGRAM([[#include <pth.h>]], [[pth_self();]])], | ||
256 | [gl_have_pth=yes]) | ||
257 | LIBS="$gl_save_LIBS" | ||
258 | if test -n "$gl_have_pth"; then | ||
259 | gl_threads_api=pth | ||
260 | LIBTHREAD="$LIBPTH" | ||
261 | LTLIBTHREAD="$LTLIBPTH" | ||
262 | LIBMULTITHREAD="$LIBTHREAD" | ||
263 | LTLIBMULTITHREAD="$LTLIBTHREAD" | ||
264 | AC_DEFINE([USE_PTH_THREADS], [1], | ||
265 | [Define if the GNU Pth multithreading library can be used.]) | ||
266 | if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then | ||
267 | if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then | ||
268 | AC_DEFINE([USE_PTH_THREADS_WEAK], [1], | ||
269 | [Define if references to the GNU Pth multithreading library should be made weak.]) | ||
270 | LIBTHREAD= | ||
271 | LTLIBTHREAD= | ||
272 | fi | ||
273 | fi | ||
274 | else | ||
275 | CPPFLAGS="$gl_save_CPPFLAGS" | ||
276 | fi | ||
277 | fi | ||
278 | if test -z "$gl_have_pthread"; then | ||
279 | case "$gl_use_threads" in | 558 | case "$gl_use_threads" in |
280 | yes | windows | win32) # The 'win32' is for backward compatibility. | 559 | yes | windows | win32) # The 'win32' is for backward compatibility. |
281 | if { case "$host_os" in | 560 | if { case "$host_os" in |
@@ -317,6 +596,21 @@ AC_DEFUN([gl_DISABLE_THREADS], [ | |||
317 | ]) | 596 | ]) |
318 | 597 | ||
319 | 598 | ||
599 | dnl gl_AVOID_WINPTHREAD | ||
600 | dnl ------------------- | ||
601 | dnl Sets the gl_THREADLIB default so that on mingw, a dependency to the | ||
602 | dnl libwinpthread DLL (mingw-w64 winpthreads library) is avoided. | ||
603 | dnl The user can still override it at installation time, by using the | ||
604 | dnl configure option '--enable-threads'. | ||
605 | |||
606 | AC_DEFUN([gl_AVOID_WINPTHREAD], [ | ||
607 | m4_divert_text([INIT_PREPARE], [gl_use_winpthreads_default=no]) | ||
608 | ]) | ||
609 | |||
610 | |||
611 | dnl ============================================================================ | ||
612 | |||
613 | |||
320 | dnl Survey of platforms: | 614 | dnl Survey of platforms: |
321 | dnl | 615 | dnl |
322 | dnl Platform Available Compiler Supports test-lock | 616 | dnl Platform Available Compiler Supports test-lock |
@@ -324,7 +618,11 @@ dnl flavours option weak result | |||
324 | dnl --------------- --------- --------- -------- --------- | 618 | dnl --------------- --------- --------- -------- --------- |
325 | dnl Linux 2.4/glibc posix -lpthread Y OK | 619 | dnl Linux 2.4/glibc posix -lpthread Y OK |
326 | dnl | 620 | dnl |
327 | dnl GNU Hurd/glibc posix | 621 | dnl Linux/glibc 2.34 posix Y OK |
622 | dnl | ||
623 | dnl GNU Hurd/glibc posix -lpthread Y OK | ||
624 | dnl | ||
625 | dnl Ubuntu 14.04 posix -pthread Y OK | ||
328 | dnl | 626 | dnl |
329 | dnl FreeBSD 5.3 posix -lc_r Y | 627 | dnl FreeBSD 5.3 posix -lc_r Y |
330 | dnl posix -lkse ? Y | 628 | dnl posix -lkse ? Y |
@@ -344,7 +642,6 @@ dnl | |||
344 | dnl Mac OS X 10.[123] posix -lpthread Y OK | 642 | dnl Mac OS X 10.[123] posix -lpthread Y OK |
345 | dnl | 643 | dnl |
346 | dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK | 644 | dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK |
347 | dnl solaris -lthread Y Sol 7,8: 0.0; Sol 9: OK | ||
348 | dnl | 645 | dnl |
349 | dnl HP-UX 11 posix -lpthread N (cc) OK | 646 | dnl HP-UX 11 posix -lpthread N (cc) OK |
350 | dnl Y (gcc) | 647 | dnl Y (gcc) |
@@ -358,8 +655,6 @@ dnl -lpthread (gcc) Y | |||
358 | dnl | 655 | dnl |
359 | dnl Cygwin posix -lpthread Y OK | 656 | dnl Cygwin posix -lpthread Y OK |
360 | dnl | 657 | dnl |
361 | dnl Any of the above pth -lpth 0.0 | ||
362 | dnl | ||
363 | dnl Mingw windows N OK | 658 | dnl Mingw windows N OK |
364 | dnl | 659 | dnl |
365 | dnl BeOS 5 -- | 660 | dnl BeOS 5 -- |
diff --git a/gl/m4/time_h.m4 b/gl/m4/time_h.m4 index 3b839005..f6bf3a4f 100644 --- a/gl/m4/time_h.m4 +++ b/gl/m4/time_h.m4 | |||
@@ -1,8 +1,8 @@ | |||
1 | # Configure a more-standard replacement for <time.h>. | 1 | # Configure a more-standard replacement for <time.h>. |
2 | 2 | ||
3 | # Copyright (C) 2000-2001, 2003-2007, 2009-2013 Free Software Foundation, Inc. | 3 | # Copyright (C) 2000-2001, 2003-2007, 2009-2023 Free Software Foundation, Inc. |
4 | 4 | ||
5 | # serial 7 | 5 | # serial 20 |
6 | 6 | ||
7 | # This file is free software; the Free Software Foundation | 7 | # This file is free software; the Free Software Foundation |
8 | # gives unlimited permission to copy and/or distribute it, | 8 | # gives unlimited permission to copy and/or distribute it, |
@@ -10,23 +10,42 @@ | |||
10 | 10 | ||
11 | # Written by Paul Eggert and Jim Meyering. | 11 | # Written by Paul Eggert and Jim Meyering. |
12 | 12 | ||
13 | AC_DEFUN([gl_HEADER_TIME_H], | 13 | AC_DEFUN_ONCE([gl_TIME_H], |
14 | [ | 14 | [ |
15 | dnl Use AC_REQUIRE here, so that the default behavior below is expanded | 15 | dnl Ensure to expand the default settings once only, before all statements |
16 | dnl once only, before all statements that occur in other macros. | 16 | dnl that occur in other macros. |
17 | AC_REQUIRE([gl_HEADER_TIME_H_BODY]) | 17 | AC_REQUIRE([gl_TIME_H_DEFAULTS]) |
18 | ]) | ||
19 | 18 | ||
20 | AC_DEFUN([gl_HEADER_TIME_H_BODY], | ||
21 | [ | ||
22 | AC_REQUIRE([AC_C_RESTRICT]) | ||
23 | AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS]) | ||
24 | gl_NEXT_HEADERS([time.h]) | 19 | gl_NEXT_HEADERS([time.h]) |
25 | AC_REQUIRE([gl_CHECK_TYPE_STRUCT_TIMESPEC]) | 20 | AC_REQUIRE([gl_CHECK_TYPE_STRUCT_TIMESPEC]) |
21 | |||
22 | dnl Check for declarations of anything we want to poison if the | ||
23 | dnl corresponding gnulib module is not in use. | ||
24 | gl_WARN_ON_USE_PREPARE([[ | ||
25 | #include <time.h> | ||
26 | ]], [asctime_r ctime_r]) | ||
27 | |||
28 | AC_REQUIRE([AC_C_RESTRICT]) | ||
29 | |||
30 | AC_CACHE_CHECK([for TIME_UTC in <time.h>], | ||
31 | [gl_cv_time_h_has_TIME_UTC], | ||
32 | [AC_COMPILE_IFELSE( | ||
33 | [AC_LANG_PROGRAM( | ||
34 | [[#include <time.h> | ||
35 | ]], | ||
36 | [[static int x = TIME_UTC; x++;]])], | ||
37 | [gl_cv_time_h_has_TIME_UTC=yes], | ||
38 | [gl_cv_time_h_has_TIME_UTC=no])]) | ||
39 | if test $gl_cv_time_h_has_TIME_UTC = yes; then | ||
40 | TIME_H_DEFINES_TIME_UTC=1 | ||
41 | else | ||
42 | TIME_H_DEFINES_TIME_UTC=0 | ||
43 | fi | ||
44 | AC_SUBST([TIME_H_DEFINES_TIME_UTC]) | ||
26 | ]) | 45 | ]) |
27 | 46 | ||
28 | dnl Check whether 'struct timespec' is declared | 47 | dnl Check whether 'struct timespec' is declared |
29 | dnl in time.h, sys/time.h, or pthread.h. | 48 | dnl in time.h, sys/time.h, pthread.h, or unistd.h. |
30 | 49 | ||
31 | AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC], | 50 | AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC], |
32 | [ | 51 | [ |
@@ -44,6 +63,7 @@ AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC], | |||
44 | TIME_H_DEFINES_STRUCT_TIMESPEC=0 | 63 | TIME_H_DEFINES_STRUCT_TIMESPEC=0 |
45 | SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0 | 64 | SYS_TIME_H_DEFINES_STRUCT_TIMESPEC=0 |
46 | PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0 | 65 | PTHREAD_H_DEFINES_STRUCT_TIMESPEC=0 |
66 | UNISTD_H_DEFINES_STRUCT_TIMESPEC=0 | ||
47 | if test $gl_cv_sys_struct_timespec_in_time_h = yes; then | 67 | if test $gl_cv_sys_struct_timespec_in_time_h = yes; then |
48 | TIME_H_DEFINES_STRUCT_TIMESPEC=1 | 68 | TIME_H_DEFINES_STRUCT_TIMESPEC=1 |
49 | else | 69 | else |
@@ -70,40 +90,94 @@ AC_DEFUN([gl_CHECK_TYPE_STRUCT_TIMESPEC], | |||
70 | [gl_cv_sys_struct_timespec_in_pthread_h=no])]) | 90 | [gl_cv_sys_struct_timespec_in_pthread_h=no])]) |
71 | if test $gl_cv_sys_struct_timespec_in_pthread_h = yes; then | 91 | if test $gl_cv_sys_struct_timespec_in_pthread_h = yes; then |
72 | PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1 | 92 | PTHREAD_H_DEFINES_STRUCT_TIMESPEC=1 |
93 | else | ||
94 | AC_CACHE_CHECK([for struct timespec in <unistd.h>], | ||
95 | [gl_cv_sys_struct_timespec_in_unistd_h], | ||
96 | [AC_COMPILE_IFELSE( | ||
97 | [AC_LANG_PROGRAM( | ||
98 | [[#include <unistd.h> | ||
99 | ]], | ||
100 | [[static struct timespec x; x.tv_sec = x.tv_nsec;]])], | ||
101 | [gl_cv_sys_struct_timespec_in_unistd_h=yes], | ||
102 | [gl_cv_sys_struct_timespec_in_unistd_h=no])]) | ||
103 | if test $gl_cv_sys_struct_timespec_in_unistd_h = yes; then | ||
104 | UNISTD_H_DEFINES_STRUCT_TIMESPEC=1 | ||
105 | fi | ||
73 | fi | 106 | fi |
74 | fi | 107 | fi |
75 | fi | 108 | fi |
76 | AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC]) | 109 | AC_SUBST([TIME_H_DEFINES_STRUCT_TIMESPEC]) |
77 | AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC]) | 110 | AC_SUBST([SYS_TIME_H_DEFINES_STRUCT_TIMESPEC]) |
78 | AC_SUBST([PTHREAD_H_DEFINES_STRUCT_TIMESPEC]) | 111 | AC_SUBST([PTHREAD_H_DEFINES_STRUCT_TIMESPEC]) |
112 | AC_SUBST([UNISTD_H_DEFINES_STRUCT_TIMESPEC]) | ||
79 | ]) | 113 | ]) |
80 | 114 | ||
115 | # gl_TIME_MODULE_INDICATOR([modulename]) | ||
116 | # sets the shell variable that indicates the presence of the given module | ||
117 | # to a C preprocessor expression that will evaluate to 1. | ||
118 | # This macro invocation must not occur in macros that are AC_REQUIREd. | ||
81 | AC_DEFUN([gl_TIME_MODULE_INDICATOR], | 119 | AC_DEFUN([gl_TIME_MODULE_INDICATOR], |
82 | [ | 120 | [ |
83 | dnl Use AC_REQUIRE here, so that the default settings are expanded once only. | 121 | dnl Ensure to expand the default settings once only. |
84 | AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS]) | 122 | gl_TIME_H_REQUIRE_DEFAULTS |
85 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) | 123 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) |
86 | dnl Define it also as a C macro, for the benefit of the unit tests. | 124 | dnl Define it also as a C macro, for the benefit of the unit tests. |
87 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) | 125 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) |
88 | ]) | 126 | ]) |
89 | 127 | ||
90 | AC_DEFUN([gl_HEADER_TIME_H_DEFAULTS], | 128 | # Initializes the default values for AC_SUBSTed shell variables. |
129 | # This macro must not be AC_REQUIREd. It must only be invoked, and only | ||
130 | # outside of macros or in macros that are not AC_REQUIREd. | ||
131 | AC_DEFUN([gl_TIME_H_REQUIRE_DEFAULTS], | ||
132 | [ | ||
133 | m4_defun(GL_MODULE_INDICATOR_PREFIX[_TIME_H_MODULE_INDICATOR_DEFAULTS], [ | ||
134 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CTIME]) | ||
135 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MKTIME]) | ||
136 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOCALTIME]) | ||
137 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_NANOSLEEP]) | ||
138 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRFTIME]) | ||
139 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRPTIME]) | ||
140 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMEGM]) | ||
141 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMESPEC_GET]) | ||
142 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMESPEC_GETRES]) | ||
143 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIME_R]) | ||
144 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIME_RZ]) | ||
145 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TZSET]) | ||
146 | dnl Support Microsoft deprecated alias function names by default. | ||
147 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_TZSET], [1]) | ||
148 | ]) | ||
149 | m4_require(GL_MODULE_INDICATOR_PREFIX[_TIME_H_MODULE_INDICATOR_DEFAULTS]) | ||
150 | AC_REQUIRE([gl_TIME_H_DEFAULTS]) | ||
151 | ]) | ||
152 | |||
153 | AC_DEFUN([gl_TIME_H_DEFAULTS], | ||
91 | [ | 154 | [ |
92 | GNULIB_MKTIME=0; AC_SUBST([GNULIB_MKTIME]) | ||
93 | GNULIB_NANOSLEEP=0; AC_SUBST([GNULIB_NANOSLEEP]) | ||
94 | GNULIB_STRPTIME=0; AC_SUBST([GNULIB_STRPTIME]) | ||
95 | GNULIB_TIMEGM=0; AC_SUBST([GNULIB_TIMEGM]) | ||
96 | GNULIB_TIME_R=0; AC_SUBST([GNULIB_TIME_R]) | ||
97 | dnl Assume proper GNU behavior unless another module says otherwise. | 155 | dnl Assume proper GNU behavior unless another module says otherwise. |
98 | HAVE_DECL_LOCALTIME_R=1; AC_SUBST([HAVE_DECL_LOCALTIME_R]) | 156 | HAVE_DECL_LOCALTIME_R=1; AC_SUBST([HAVE_DECL_LOCALTIME_R]) |
99 | HAVE_NANOSLEEP=1; AC_SUBST([HAVE_NANOSLEEP]) | 157 | HAVE_NANOSLEEP=1; AC_SUBST([HAVE_NANOSLEEP]) |
100 | HAVE_STRPTIME=1; AC_SUBST([HAVE_STRPTIME]) | 158 | HAVE_STRPTIME=1; AC_SUBST([HAVE_STRPTIME]) |
101 | HAVE_TIMEGM=1; AC_SUBST([HAVE_TIMEGM]) | 159 | HAVE_TIMEGM=1; AC_SUBST([HAVE_TIMEGM]) |
160 | HAVE_TIMESPEC_GET=1; AC_SUBST([HAVE_TIMESPEC_GET]) | ||
161 | HAVE_TIMESPEC_GETRES=1; AC_SUBST([HAVE_TIMESPEC_GETRES]) | ||
162 | dnl Even GNU libc does not have timezone_t yet. | ||
163 | HAVE_TIMEZONE_T=0; AC_SUBST([HAVE_TIMEZONE_T]) | ||
102 | dnl If another module says to replace or to not replace, do that. | 164 | dnl If another module says to replace or to not replace, do that. |
103 | dnl Otherwise, replace only if someone compiles with -DGNULIB_PORTCHECK; | 165 | dnl Otherwise, replace only if someone compiles with -DGNULIB_PORTCHECK; |
104 | dnl this lets maintainers check for portability. | 166 | dnl this lets maintainers check for portability. |
167 | REPLACE_CTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_CTIME]) | ||
105 | REPLACE_LOCALTIME_R=GNULIB_PORTCHECK; AC_SUBST([REPLACE_LOCALTIME_R]) | 168 | REPLACE_LOCALTIME_R=GNULIB_PORTCHECK; AC_SUBST([REPLACE_LOCALTIME_R]) |
106 | REPLACE_MKTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_MKTIME]) | 169 | REPLACE_MKTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_MKTIME]) |
107 | REPLACE_NANOSLEEP=GNULIB_PORTCHECK; AC_SUBST([REPLACE_NANOSLEEP]) | 170 | REPLACE_NANOSLEEP=GNULIB_PORTCHECK; AC_SUBST([REPLACE_NANOSLEEP]) |
171 | REPLACE_STRFTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_STRFTIME]) | ||
108 | REPLACE_TIMEGM=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TIMEGM]) | 172 | REPLACE_TIMEGM=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TIMEGM]) |
173 | REPLACE_TZSET=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TZSET]) | ||
174 | |||
175 | dnl Hack so that the time module doesn't depend on the sys_time module. | ||
176 | dnl First, default GNULIB_GETTIMEOFDAY to 0 if sys_time is absent. | ||
177 | : ${GNULIB_GETTIMEOFDAY=0}; AC_SUBST([GNULIB_GETTIMEOFDAY]) | ||
178 | dnl Second, it's OK to not use GNULIB_PORTCHECK for REPLACE_GMTIME | ||
179 | dnl and REPLACE_LOCALTIME, as portability to Solaris 2.6 and earlier | ||
180 | dnl is no longer a big deal. | ||
181 | REPLACE_GMTIME=0; AC_SUBST([REPLACE_GMTIME]) | ||
182 | REPLACE_LOCALTIME=0; AC_SUBST([REPLACE_LOCALTIME]) | ||
109 | ]) | 183 | ]) |
diff --git a/gl/m4/time_r.m4 b/gl/m4/time_r.m4 index c388a831..adce438a 100644 --- a/gl/m4/time_r.m4 +++ b/gl/m4/time_r.m4 | |||
@@ -1,6 +1,6 @@ | |||
1 | dnl Reentrant time functions: localtime_r, gmtime_r. | 1 | dnl Reentrant time functions: localtime_r, gmtime_r. |
2 | 2 | ||
3 | dnl Copyright (C) 2003, 2006-2013 Free Software Foundation, Inc. | 3 | dnl Copyright (C) 2003, 2006-2023 Free Software Foundation, Inc. |
4 | dnl This file is free software; the Free Software Foundation | 4 | dnl This file is free software; the Free Software Foundation |
5 | dnl gives unlimited permission to copy and/or distribute it, | 5 | dnl gives unlimited permission to copy and/or distribute it, |
6 | dnl with or without modifications, as long as this notice is preserved. | 6 | dnl with or without modifications, as long as this notice is preserved. |
@@ -12,12 +12,20 @@ AC_DEFUN([gl_TIME_R], | |||
12 | dnl Persuade glibc and Solaris <time.h> to declare localtime_r. | 12 | dnl Persuade glibc and Solaris <time.h> to declare localtime_r. |
13 | AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) | 13 | AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) |
14 | 14 | ||
15 | AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS]) | 15 | AC_REQUIRE([gl_TIME_H_DEFAULTS]) |
16 | AC_REQUIRE([AC_C_RESTRICT]) | 16 | AC_REQUIRE([AC_C_RESTRICT]) |
17 | 17 | ||
18 | dnl Some systems don't declare localtime_r() and gmtime_r() if _REENTRANT is | 18 | dnl Some systems don't declare localtime_r() and gmtime_r() if _REENTRANT is |
19 | dnl not defined. | 19 | dnl not defined. |
20 | AC_CHECK_DECLS([localtime_r], [], [], [[#include <time.h>]]) | 20 | AC_CHECK_DECLS([localtime_r], [], [], |
21 | [[/* mingw's <time.h> provides the functions asctime_r, ctime_r, | ||
22 | gmtime_r, localtime_r only if <unistd.h> or <pthread.h> has | ||
23 | been included before. */ | ||
24 | #if defined __MINGW32__ | ||
25 | # include <unistd.h> | ||
26 | #endif | ||
27 | #include <time.h> | ||
28 | ]]) | ||
21 | if test $ac_cv_have_decl_localtime_r = no; then | 29 | if test $ac_cv_have_decl_localtime_r = no; then |
22 | HAVE_DECL_LOCALTIME_R=0 | 30 | HAVE_DECL_LOCALTIME_R=0 |
23 | fi | 31 | fi |
@@ -29,7 +37,14 @@ AC_DEFUN([gl_TIME_R], | |||
29 | [gl_cv_time_r_posix], | 37 | [gl_cv_time_r_posix], |
30 | [AC_COMPILE_IFELSE( | 38 | [AC_COMPILE_IFELSE( |
31 | [AC_LANG_PROGRAM( | 39 | [AC_LANG_PROGRAM( |
32 | [[#include <time.h>]], | 40 | [[/* mingw's <time.h> provides the functions asctime_r, ctime_r, |
41 | gmtime_r, localtime_r only if <unistd.h> or <pthread.h> has | ||
42 | been included before. */ | ||
43 | #if defined __MINGW32__ | ||
44 | # include <unistd.h> | ||
45 | #endif | ||
46 | #include <time.h> | ||
47 | ]], | ||
33 | [[/* We don't need to append 'restrict's to the argument types, | 48 | [[/* We don't need to append 'restrict's to the argument types, |
34 | even though the POSIX signature has the 'restrict's, | 49 | even though the POSIX signature has the 'restrict's, |
35 | since C99 says they can't affect type compatibility. */ | 50 | since C99 says they can't affect type compatibility. */ |
@@ -49,6 +64,32 @@ AC_DEFUN([gl_TIME_R], | |||
49 | fi | 64 | fi |
50 | else | 65 | else |
51 | HAVE_LOCALTIME_R=0 | 66 | HAVE_LOCALTIME_R=0 |
67 | dnl On mingw, localtime_r() is defined as an inline function; use through a | ||
68 | dnl direct function call works but the use as a function pointer leads to a | ||
69 | dnl link error. | ||
70 | AC_CACHE_CHECK([whether localtime_r exists as an inline function], | ||
71 | [gl_cv_func_localtime_r_inline], | ||
72 | [AC_LINK_IFELSE( | ||
73 | [AC_LANG_PROGRAM( | ||
74 | [[/* mingw's <time.h> provides the functions asctime_r, ctime_r, | ||
75 | gmtime_r, localtime_r only if <unistd.h> or <pthread.h> has | ||
76 | been included before. */ | ||
77 | #if defined __MINGW32__ | ||
78 | # include <unistd.h> | ||
79 | #endif | ||
80 | #include <time.h> | ||
81 | ]], | ||
82 | [[time_t a; | ||
83 | struct tm r; | ||
84 | localtime_r (&a, &r); | ||
85 | ]]) | ||
86 | ], | ||
87 | [gl_cv_func_localtime_r_inline=yes], | ||
88 | [gl_cv_func_localtime_r_inline=no]) | ||
89 | ]) | ||
90 | if test $gl_cv_func_localtime_r_inline = yes; then | ||
91 | REPLACE_LOCALTIME_R=1 | ||
92 | fi | ||
52 | fi | 93 | fi |
53 | ]) | 94 | ]) |
54 | 95 | ||
diff --git a/gl/m4/timegm.m4 b/gl/m4/timegm.m4 index 997953c0..6079f1a3 100644 --- a/gl/m4/timegm.m4 +++ b/gl/m4/timegm.m4 | |||
@@ -1,17 +1,17 @@ | |||
1 | # timegm.m4 serial 11 | 1 | # timegm.m4 serial 13 |
2 | dnl Copyright (C) 2003, 2007, 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2003, 2007, 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | AC_DEFUN([gl_FUNC_TIMEGM], | 7 | AC_DEFUN([gl_FUNC_TIMEGM], |
8 | [ | 8 | [ |
9 | AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS]) | 9 | AC_REQUIRE([gl_TIME_H_DEFAULTS]) |
10 | AC_REQUIRE([gl_FUNC_MKTIME]) | 10 | AC_REQUIRE([gl_FUNC_MKTIME_WORKS]) |
11 | REPLACE_TIMEGM=0 | 11 | REPLACE_TIMEGM=0 |
12 | AC_CHECK_FUNCS_ONCE([timegm]) | 12 | AC_CHECK_FUNCS_ONCE([timegm]) |
13 | if test $ac_cv_func_timegm = yes; then | 13 | if test $ac_cv_func_timegm = yes; then |
14 | if test $gl_cv_func_working_mktime = no; then | 14 | if test "$gl_cv_func_working_mktime" != yes; then |
15 | # Assume that timegm is buggy if mktime is. | 15 | # Assume that timegm is buggy if mktime is. |
16 | REPLACE_TIMEGM=1 | 16 | REPLACE_TIMEGM=1 |
17 | fi | 17 | fi |
diff --git a/gl/m4/uintmax_t.m4 b/gl/m4/uintmax_t.m4 deleted file mode 100644 index c6ff8006..00000000 --- a/gl/m4/uintmax_t.m4 +++ /dev/null | |||
@@ -1,30 +0,0 @@ | |||
1 | # uintmax_t.m4 serial 12 | ||
2 | dnl Copyright (C) 1997-2004, 2007-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | dnl From Paul Eggert. | ||
8 | |||
9 | AC_PREREQ([2.13]) | ||
10 | |||
11 | # Define uintmax_t to 'unsigned long' or 'unsigned long long' | ||
12 | # if it is not already defined in <stdint.h> or <inttypes.h>. | ||
13 | |||
14 | AC_DEFUN([gl_AC_TYPE_UINTMAX_T], | ||
15 | [ | ||
16 | AC_REQUIRE([gl_AC_HEADER_INTTYPES_H]) | ||
17 | AC_REQUIRE([gl_AC_HEADER_STDINT_H]) | ||
18 | if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then | ||
19 | AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT]) | ||
20 | test $ac_cv_type_unsigned_long_long_int = yes \ | ||
21 | && ac_type='unsigned long long' \ | ||
22 | || ac_type='unsigned long' | ||
23 | AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type], | ||
24 | [Define to unsigned long or unsigned long long | ||
25 | if <stdint.h> and <inttypes.h> don't define.]) | ||
26 | else | ||
27 | AC_DEFINE([HAVE_UINTMAX_T], [1], | ||
28 | [Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.]) | ||
29 | fi | ||
30 | ]) | ||
diff --git a/gl/m4/ungetc.m4 b/gl/m4/ungetc.m4 new file mode 100644 index 00000000..8977a346 --- /dev/null +++ b/gl/m4/ungetc.m4 | |||
@@ -0,0 +1,73 @@ | |||
1 | # ungetc.m4 serial 10 | ||
2 | dnl Copyright (C) 2009-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN_ONCE([gl_FUNC_UNGETC_WORKS], | ||
8 | [ | ||
9 | AC_REQUIRE([AC_PROG_CC]) | ||
10 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | ||
11 | |||
12 | AC_CACHE_CHECK([whether ungetc works on arbitrary bytes], | ||
13 | [gl_cv_func_ungetc_works], | ||
14 | [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ | ||
15 | #include <stdio.h> | ||
16 | ]], [[FILE *f; | ||
17 | if (!(f = fopen ("conftest.tmp", "w+"))) | ||
18 | return 1; | ||
19 | if (fputs ("abc", f) < 0) | ||
20 | { fclose (f); return 2; } | ||
21 | rewind (f); | ||
22 | if (fgetc (f) != 'a') | ||
23 | { fclose (f); return 3; } | ||
24 | if (fgetc (f) != 'b') | ||
25 | { fclose (f); return 4; } | ||
26 | if (ungetc ('d', f) != 'd') | ||
27 | { fclose (f); return 5; } | ||
28 | if (ftell (f) != 1) | ||
29 | { fclose (f); return 6; } | ||
30 | if (fgetc (f) != 'd') | ||
31 | { fclose (f); return 7; } | ||
32 | if (ftell (f) != 2) | ||
33 | { fclose (f); return 8; } | ||
34 | if (fseek (f, 0, SEEK_CUR) != 0) | ||
35 | { fclose (f); return 9; } | ||
36 | if (ftell (f) != 2) | ||
37 | { fclose (f); return 10; } | ||
38 | if (fgetc (f) != 'c') | ||
39 | { fclose (f); return 11; } | ||
40 | fclose (f); | ||
41 | remove ("conftest.tmp"); | ||
42 | ]])], | ||
43 | [gl_cv_func_ungetc_works=yes], [gl_cv_func_ungetc_works=no], | ||
44 | [case "$host_os" in | ||
45 | # Guess yes on glibc systems. | ||
46 | *-gnu* | gnu*) gl_cv_func_ungetc_works="guessing yes" ;; | ||
47 | # Guess yes on musl systems. | ||
48 | *-musl*) gl_cv_func_ungetc_works="guessing yes" ;; | ||
49 | # Guess yes on bionic systems. | ||
50 | *-android*) gl_cv_func_ungetc_works="guessing yes" ;; | ||
51 | # Guess yes on native Windows. | ||
52 | mingw*) gl_cv_func_ungetc_works="guessing yes" ;; | ||
53 | # If we don't know, obey --enable-cross-guesses. | ||
54 | *) gl_cv_func_ungetc_works="$gl_cross_guess_normal" ;; | ||
55 | esac | ||
56 | ]) | ||
57 | ]) | ||
58 | gl_ftello_broken_after_ungetc=no | ||
59 | case "$gl_cv_func_ungetc_works" in | ||
60 | *yes) ;; | ||
61 | *) | ||
62 | dnl On macOS >= 10.15, where the above program fails with exit code 6, | ||
63 | dnl we fix it through an ftello override. | ||
64 | case "$host_os" in | ||
65 | darwin*) gl_ftello_broken_after_ungetc=yes ;; | ||
66 | *) | ||
67 | AC_DEFINE([FUNC_UNGETC_BROKEN], [1], | ||
68 | [Define to 1 if ungetc is broken when used on arbitrary bytes.]) | ||
69 | ;; | ||
70 | esac | ||
71 | ;; | ||
72 | esac | ||
73 | ]) | ||
diff --git a/gl/m4/unistd_h.m4 b/gl/m4/unistd_h.m4 index 32dcfa58..f4384027 100644 --- a/gl/m4/unistd_h.m4 +++ b/gl/m4/unistd_h.m4 | |||
@@ -1,15 +1,15 @@ | |||
1 | # unistd_h.m4 serial 66 | 1 | # unistd_h.m4 serial 90 |
2 | dnl Copyright (C) 2006-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2006-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | dnl Written by Simon Josefsson, Bruno Haible. | 7 | dnl Written by Simon Josefsson, Bruno Haible. |
8 | 8 | ||
9 | AC_DEFUN([gl_UNISTD_H], | 9 | AC_DEFUN_ONCE([gl_UNISTD_H], |
10 | [ | 10 | [ |
11 | dnl Use AC_REQUIRE here, so that the default behavior below is expanded | 11 | dnl Ensure to expand the default settings once only, before all statements |
12 | dnl once only, before all statements that occur in other macros. | 12 | dnl that occur in other macros. |
13 | AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) | 13 | AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) |
14 | 14 | ||
15 | gl_CHECK_NEXT_HEADERS([unistd.h]) | 15 | gl_CHECK_NEXT_HEADERS([unistd.h]) |
@@ -37,150 +37,234 @@ AC_DEFUN([gl_UNISTD_H], | |||
37 | # include <fcntl.h> | 37 | # include <fcntl.h> |
38 | # include <stdio.h> | 38 | # include <stdio.h> |
39 | # include <stdlib.h> | 39 | # include <stdlib.h> |
40 | # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ | 40 | # if defined _WIN32 && ! defined __CYGWIN__ |
41 | # include <io.h> | 41 | # include <io.h> |
42 | # endif | 42 | # endif |
43 | #endif | 43 | #endif |
44 | ]], [chdir chown dup dup2 dup3 environ euidaccess faccessat fchdir fchownat | 44 | ]], [access chdir chown copy_file_range dup dup2 dup3 environ euidaccess |
45 | fdatasync fsync ftruncate getcwd getdomainname getdtablesize getgroups | 45 | execl execle execlp execv execve execvp execvpe |
46 | gethostname getlogin getlogin_r getpagesize | 46 | faccessat fchdir |
47 | fchownat fdatasync fsync ftruncate getcwd getdomainname getdtablesize | ||
48 | getentropy getgroups gethostname getlogin getlogin_r getpagesize getpass | ||
47 | getusershell setusershell endusershell | 49 | getusershell setusershell endusershell |
48 | group_member isatty lchown link linkat lseek pipe pipe2 pread pwrite | 50 | group_member isatty lchown link linkat lseek pipe pipe2 pread pwrite |
49 | readlink readlinkat rmdir sethostname sleep symlink symlinkat ttyname_r | 51 | readlink readlinkat rmdir sethostname sleep symlink symlinkat |
50 | unlink unlinkat usleep]) | 52 | truncate ttyname_r unlink unlinkat usleep]) |
53 | |||
54 | AC_REQUIRE([AC_C_RESTRICT]) | ||
55 | |||
56 | AC_CHECK_DECLS_ONCE([execvpe]) | ||
57 | if test $ac_cv_have_decl_execvpe = no; then | ||
58 | HAVE_DECL_EXECVPE=0 | ||
59 | fi | ||
51 | ]) | 60 | ]) |
52 | 61 | ||
62 | # gl_UNISTD_MODULE_INDICATOR([modulename]) | ||
63 | # sets the shell variable that indicates the presence of the given module | ||
64 | # to a C preprocessor expression that will evaluate to 1. | ||
65 | # This macro invocation must not occur in macros that are AC_REQUIREd. | ||
53 | AC_DEFUN([gl_UNISTD_MODULE_INDICATOR], | 66 | AC_DEFUN([gl_UNISTD_MODULE_INDICATOR], |
54 | [ | 67 | [ |
55 | dnl Use AC_REQUIRE here, so that the default settings are expanded once only. | 68 | dnl Ensure to expand the default settings once only. |
56 | AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) | 69 | gl_UNISTD_H_REQUIRE_DEFAULTS |
57 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) | 70 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) |
58 | dnl Define it also as a C macro, for the benefit of the unit tests. | 71 | dnl Define it also as a C macro, for the benefit of the unit tests. |
59 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) | 72 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) |
60 | ]) | 73 | ]) |
61 | 74 | ||
75 | # Initializes the default values for AC_SUBSTed shell variables. | ||
76 | # This macro must not be AC_REQUIREd. It must only be invoked, and only | ||
77 | # outside of macros or in macros that are not AC_REQUIREd. | ||
78 | AC_DEFUN([gl_UNISTD_H_REQUIRE_DEFAULTS], | ||
79 | [ | ||
80 | m4_defun(GL_MODULE_INDICATOR_PREFIX[_UNISTD_H_MODULE_INDICATOR_DEFAULTS], [ | ||
81 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACCESS]) | ||
82 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CHDIR]) | ||
83 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CHOWN]) | ||
84 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CLOSE]) | ||
85 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPY_FILE_RANGE]) | ||
86 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUP]) | ||
87 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUP2]) | ||
88 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_DUP3]) | ||
89 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ENVIRON]) | ||
90 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EUIDACCESS]) | ||
91 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECL]) | ||
92 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECLE]) | ||
93 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECLP]) | ||
94 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECV]) | ||
95 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECVE]) | ||
96 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECVP]) | ||
97 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXECVPE]) | ||
98 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FACCESSAT]) | ||
99 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCHDIR]) | ||
100 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FCHOWNAT]) | ||
101 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FDATASYNC]) | ||
102 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FSYNC]) | ||
103 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FTRUNCATE]) | ||
104 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETCWD]) | ||
105 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETDOMAINNAME]) | ||
106 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETDTABLESIZE]) | ||
107 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETENTROPY]) | ||
108 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETGROUPS]) | ||
109 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETHOSTNAME]) | ||
110 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOGIN]) | ||
111 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOGIN_R]) | ||
112 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETOPT_POSIX]) | ||
113 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPAGESIZE]) | ||
114 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPASS]) | ||
115 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPASS_GNU]) | ||
116 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETUSERSHELL]) | ||
117 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GROUP_MEMBER]) | ||
118 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISATTY]) | ||
119 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LCHOWN]) | ||
120 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LINK]) | ||
121 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LINKAT]) | ||
122 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LSEEK]) | ||
123 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PIPE]) | ||
124 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PIPE2]) | ||
125 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PREAD]) | ||
126 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PWRITE]) | ||
127 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_READ]) | ||
128 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_READLINK]) | ||
129 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_READLINKAT]) | ||
130 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RMDIR]) | ||
131 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SETHOSTNAME]) | ||
132 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SLEEP]) | ||
133 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SYMLINK]) | ||
134 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SYMLINKAT]) | ||
135 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNCATE]) | ||
136 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TTYNAME_R]) | ||
137 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_GETOPT]) | ||
138 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_NONBLOCKING]) | ||
139 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNISTD_H_SIGPIPE]) | ||
140 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLINK]) | ||
141 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_UNLINKAT]) | ||
142 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_USLEEP]) | ||
143 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WRITE]) | ||
144 | dnl Support Microsoft deprecated alias function names by default. | ||
145 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ACCESS], [1]) | ||
146 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CHDIR], [1]) | ||
147 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_CLOSE], [1]) | ||
148 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_DUP], [1]) | ||
149 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_DUP2], [1]) | ||
150 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECL], [1]) | ||
151 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECLE], [1]) | ||
152 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECLP], [1]) | ||
153 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECV], [1]) | ||
154 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVE], [1]) | ||
155 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVP], [1]) | ||
156 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_EXECVPE], [1]) | ||
157 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GETCWD], [1]) | ||
158 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_GETPID], [1]) | ||
159 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_ISATTY], [1]) | ||
160 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_LSEEK], [1]) | ||
161 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_READ], [1]) | ||
162 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_RMDIR], [1]) | ||
163 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_SWAB], [1]) | ||
164 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_UNLINK], [1]) | ||
165 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_WRITE], [1]) | ||
166 | ]) | ||
167 | m4_require(GL_MODULE_INDICATOR_PREFIX[_UNISTD_H_MODULE_INDICATOR_DEFAULTS]) | ||
168 | AC_REQUIRE([gl_UNISTD_H_DEFAULTS]) | ||
169 | ]) | ||
170 | |||
62 | AC_DEFUN([gl_UNISTD_H_DEFAULTS], | 171 | AC_DEFUN([gl_UNISTD_H_DEFAULTS], |
63 | [ | 172 | [ |
64 | GNULIB_CHDIR=0; AC_SUBST([GNULIB_CHDIR]) | ||
65 | GNULIB_CHOWN=0; AC_SUBST([GNULIB_CHOWN]) | ||
66 | GNULIB_CLOSE=0; AC_SUBST([GNULIB_CLOSE]) | ||
67 | GNULIB_DUP=0; AC_SUBST([GNULIB_DUP]) | ||
68 | GNULIB_DUP2=0; AC_SUBST([GNULIB_DUP2]) | ||
69 | GNULIB_DUP3=0; AC_SUBST([GNULIB_DUP3]) | ||
70 | GNULIB_ENVIRON=0; AC_SUBST([GNULIB_ENVIRON]) | ||
71 | GNULIB_EUIDACCESS=0; AC_SUBST([GNULIB_EUIDACCESS]) | ||
72 | GNULIB_FACCESSAT=0; AC_SUBST([GNULIB_FACCESSAT]) | ||
73 | GNULIB_FCHDIR=0; AC_SUBST([GNULIB_FCHDIR]) | ||
74 | GNULIB_FCHOWNAT=0; AC_SUBST([GNULIB_FCHOWNAT]) | ||
75 | GNULIB_FDATASYNC=0; AC_SUBST([GNULIB_FDATASYNC]) | ||
76 | GNULIB_FSYNC=0; AC_SUBST([GNULIB_FSYNC]) | ||
77 | GNULIB_FTRUNCATE=0; AC_SUBST([GNULIB_FTRUNCATE]) | ||
78 | GNULIB_GETCWD=0; AC_SUBST([GNULIB_GETCWD]) | ||
79 | GNULIB_GETDOMAINNAME=0; AC_SUBST([GNULIB_GETDOMAINNAME]) | ||
80 | GNULIB_GETDTABLESIZE=0; AC_SUBST([GNULIB_GETDTABLESIZE]) | ||
81 | GNULIB_GETGROUPS=0; AC_SUBST([GNULIB_GETGROUPS]) | ||
82 | GNULIB_GETHOSTNAME=0; AC_SUBST([GNULIB_GETHOSTNAME]) | ||
83 | GNULIB_GETLOGIN=0; AC_SUBST([GNULIB_GETLOGIN]) | ||
84 | GNULIB_GETLOGIN_R=0; AC_SUBST([GNULIB_GETLOGIN_R]) | ||
85 | GNULIB_GETPAGESIZE=0; AC_SUBST([GNULIB_GETPAGESIZE]) | ||
86 | GNULIB_GETUSERSHELL=0; AC_SUBST([GNULIB_GETUSERSHELL]) | ||
87 | GNULIB_GROUP_MEMBER=0; AC_SUBST([GNULIB_GROUP_MEMBER]) | ||
88 | GNULIB_ISATTY=0; AC_SUBST([GNULIB_ISATTY]) | ||
89 | GNULIB_LCHOWN=0; AC_SUBST([GNULIB_LCHOWN]) | ||
90 | GNULIB_LINK=0; AC_SUBST([GNULIB_LINK]) | ||
91 | GNULIB_LINKAT=0; AC_SUBST([GNULIB_LINKAT]) | ||
92 | GNULIB_LSEEK=0; AC_SUBST([GNULIB_LSEEK]) | ||
93 | GNULIB_PIPE=0; AC_SUBST([GNULIB_PIPE]) | ||
94 | GNULIB_PIPE2=0; AC_SUBST([GNULIB_PIPE2]) | ||
95 | GNULIB_PREAD=0; AC_SUBST([GNULIB_PREAD]) | ||
96 | GNULIB_PWRITE=0; AC_SUBST([GNULIB_PWRITE]) | ||
97 | GNULIB_READ=0; AC_SUBST([GNULIB_READ]) | ||
98 | GNULIB_READLINK=0; AC_SUBST([GNULIB_READLINK]) | ||
99 | GNULIB_READLINKAT=0; AC_SUBST([GNULIB_READLINKAT]) | ||
100 | GNULIB_RMDIR=0; AC_SUBST([GNULIB_RMDIR]) | ||
101 | GNULIB_SETHOSTNAME=0; AC_SUBST([GNULIB_SETHOSTNAME]) | ||
102 | GNULIB_SLEEP=0; AC_SUBST([GNULIB_SLEEP]) | ||
103 | GNULIB_SYMLINK=0; AC_SUBST([GNULIB_SYMLINK]) | ||
104 | GNULIB_SYMLINKAT=0; AC_SUBST([GNULIB_SYMLINKAT]) | ||
105 | GNULIB_TTYNAME_R=0; AC_SUBST([GNULIB_TTYNAME_R]) | ||
106 | GNULIB_UNISTD_H_NONBLOCKING=0; AC_SUBST([GNULIB_UNISTD_H_NONBLOCKING]) | ||
107 | GNULIB_UNISTD_H_SIGPIPE=0; AC_SUBST([GNULIB_UNISTD_H_SIGPIPE]) | ||
108 | GNULIB_UNLINK=0; AC_SUBST([GNULIB_UNLINK]) | ||
109 | GNULIB_UNLINKAT=0; AC_SUBST([GNULIB_UNLINKAT]) | ||
110 | GNULIB_USLEEP=0; AC_SUBST([GNULIB_USLEEP]) | ||
111 | GNULIB_WRITE=0; AC_SUBST([GNULIB_WRITE]) | ||
112 | dnl Assume proper GNU behavior unless another module says otherwise. | 173 | dnl Assume proper GNU behavior unless another module says otherwise. |
113 | HAVE_CHOWN=1; AC_SUBST([HAVE_CHOWN]) | 174 | HAVE_CHOWN=1; AC_SUBST([HAVE_CHOWN]) |
114 | HAVE_DUP2=1; AC_SUBST([HAVE_DUP2]) | 175 | HAVE_COPY_FILE_RANGE=1; AC_SUBST([HAVE_COPY_FILE_RANGE]) |
115 | HAVE_DUP3=1; AC_SUBST([HAVE_DUP3]) | 176 | HAVE_DUP3=1; AC_SUBST([HAVE_DUP3]) |
116 | HAVE_EUIDACCESS=1; AC_SUBST([HAVE_EUIDACCESS]) | 177 | HAVE_EUIDACCESS=1; AC_SUBST([HAVE_EUIDACCESS]) |
117 | HAVE_FACCESSAT=1; AC_SUBST([HAVE_FACCESSAT]) | 178 | HAVE_EXECVPE=1; AC_SUBST([HAVE_EXECVPE]) |
118 | HAVE_FCHDIR=1; AC_SUBST([HAVE_FCHDIR]) | 179 | HAVE_FACCESSAT=1; AC_SUBST([HAVE_FACCESSAT]) |
119 | HAVE_FCHOWNAT=1; AC_SUBST([HAVE_FCHOWNAT]) | 180 | HAVE_FCHDIR=1; AC_SUBST([HAVE_FCHDIR]) |
120 | HAVE_FDATASYNC=1; AC_SUBST([HAVE_FDATASYNC]) | 181 | HAVE_FCHOWNAT=1; AC_SUBST([HAVE_FCHOWNAT]) |
121 | HAVE_FSYNC=1; AC_SUBST([HAVE_FSYNC]) | 182 | HAVE_FDATASYNC=1; AC_SUBST([HAVE_FDATASYNC]) |
122 | HAVE_FTRUNCATE=1; AC_SUBST([HAVE_FTRUNCATE]) | 183 | HAVE_FSYNC=1; AC_SUBST([HAVE_FSYNC]) |
123 | HAVE_GETDTABLESIZE=1; AC_SUBST([HAVE_GETDTABLESIZE]) | 184 | HAVE_FTRUNCATE=1; AC_SUBST([HAVE_FTRUNCATE]) |
124 | HAVE_GETGROUPS=1; AC_SUBST([HAVE_GETGROUPS]) | 185 | HAVE_GETDTABLESIZE=1; AC_SUBST([HAVE_GETDTABLESIZE]) |
125 | HAVE_GETHOSTNAME=1; AC_SUBST([HAVE_GETHOSTNAME]) | 186 | HAVE_GETENTROPY=1; AC_SUBST([HAVE_GETENTROPY]) |
126 | HAVE_GETLOGIN=1; AC_SUBST([HAVE_GETLOGIN]) | 187 | HAVE_GETGROUPS=1; AC_SUBST([HAVE_GETGROUPS]) |
127 | HAVE_GETPAGESIZE=1; AC_SUBST([HAVE_GETPAGESIZE]) | 188 | HAVE_GETHOSTNAME=1; AC_SUBST([HAVE_GETHOSTNAME]) |
128 | HAVE_GROUP_MEMBER=1; AC_SUBST([HAVE_GROUP_MEMBER]) | 189 | HAVE_GETLOGIN=1; AC_SUBST([HAVE_GETLOGIN]) |
129 | HAVE_LCHOWN=1; AC_SUBST([HAVE_LCHOWN]) | 190 | HAVE_GETPAGESIZE=1; AC_SUBST([HAVE_GETPAGESIZE]) |
130 | HAVE_LINK=1; AC_SUBST([HAVE_LINK]) | 191 | HAVE_GETPASS=1; AC_SUBST([HAVE_GETPASS]) |
131 | HAVE_LINKAT=1; AC_SUBST([HAVE_LINKAT]) | 192 | HAVE_GROUP_MEMBER=1; AC_SUBST([HAVE_GROUP_MEMBER]) |
132 | HAVE_PIPE=1; AC_SUBST([HAVE_PIPE]) | 193 | HAVE_LCHOWN=1; AC_SUBST([HAVE_LCHOWN]) |
133 | HAVE_PIPE2=1; AC_SUBST([HAVE_PIPE2]) | 194 | HAVE_LINK=1; AC_SUBST([HAVE_LINK]) |
134 | HAVE_PREAD=1; AC_SUBST([HAVE_PREAD]) | 195 | HAVE_LINKAT=1; AC_SUBST([HAVE_LINKAT]) |
135 | HAVE_PWRITE=1; AC_SUBST([HAVE_PWRITE]) | 196 | HAVE_PIPE=1; AC_SUBST([HAVE_PIPE]) |
136 | HAVE_READLINK=1; AC_SUBST([HAVE_READLINK]) | 197 | HAVE_PIPE2=1; AC_SUBST([HAVE_PIPE2]) |
137 | HAVE_READLINKAT=1; AC_SUBST([HAVE_READLINKAT]) | 198 | HAVE_PREAD=1; AC_SUBST([HAVE_PREAD]) |
138 | HAVE_SETHOSTNAME=1; AC_SUBST([HAVE_SETHOSTNAME]) | 199 | HAVE_PWRITE=1; AC_SUBST([HAVE_PWRITE]) |
139 | HAVE_SLEEP=1; AC_SUBST([HAVE_SLEEP]) | 200 | HAVE_READLINK=1; AC_SUBST([HAVE_READLINK]) |
140 | HAVE_SYMLINK=1; AC_SUBST([HAVE_SYMLINK]) | 201 | HAVE_READLINKAT=1; AC_SUBST([HAVE_READLINKAT]) |
141 | HAVE_SYMLINKAT=1; AC_SUBST([HAVE_SYMLINKAT]) | 202 | HAVE_SETHOSTNAME=1; AC_SUBST([HAVE_SETHOSTNAME]) |
142 | HAVE_UNLINKAT=1; AC_SUBST([HAVE_UNLINKAT]) | 203 | HAVE_SLEEP=1; AC_SUBST([HAVE_SLEEP]) |
143 | HAVE_USLEEP=1; AC_SUBST([HAVE_USLEEP]) | 204 | HAVE_SYMLINK=1; AC_SUBST([HAVE_SYMLINK]) |
144 | HAVE_DECL_ENVIRON=1; AC_SUBST([HAVE_DECL_ENVIRON]) | 205 | HAVE_SYMLINKAT=1; AC_SUBST([HAVE_SYMLINKAT]) |
145 | HAVE_DECL_FCHDIR=1; AC_SUBST([HAVE_DECL_FCHDIR]) | 206 | HAVE_UNLINKAT=1; AC_SUBST([HAVE_UNLINKAT]) |
146 | HAVE_DECL_FDATASYNC=1; AC_SUBST([HAVE_DECL_FDATASYNC]) | 207 | HAVE_USLEEP=1; AC_SUBST([HAVE_USLEEP]) |
147 | HAVE_DECL_GETDOMAINNAME=1; AC_SUBST([HAVE_DECL_GETDOMAINNAME]) | 208 | HAVE_DECL_ENVIRON=1; AC_SUBST([HAVE_DECL_ENVIRON]) |
148 | HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R]) | 209 | HAVE_DECL_EXECVPE=1; AC_SUBST([HAVE_DECL_EXECVPE]) |
149 | HAVE_DECL_GETPAGESIZE=1; AC_SUBST([HAVE_DECL_GETPAGESIZE]) | 210 | HAVE_DECL_FCHDIR=1; AC_SUBST([HAVE_DECL_FCHDIR]) |
150 | HAVE_DECL_GETUSERSHELL=1; AC_SUBST([HAVE_DECL_GETUSERSHELL]) | 211 | HAVE_DECL_FDATASYNC=1; AC_SUBST([HAVE_DECL_FDATASYNC]) |
151 | HAVE_DECL_SETHOSTNAME=1; AC_SUBST([HAVE_DECL_SETHOSTNAME]) | 212 | HAVE_DECL_GETDOMAINNAME=1; AC_SUBST([HAVE_DECL_GETDOMAINNAME]) |
152 | HAVE_DECL_TTYNAME_R=1; AC_SUBST([HAVE_DECL_TTYNAME_R]) | 213 | HAVE_DECL_GETLOGIN=1; AC_SUBST([HAVE_DECL_GETLOGIN]) |
153 | HAVE_OS_H=0; AC_SUBST([HAVE_OS_H]) | 214 | HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R]) |
154 | HAVE_SYS_PARAM_H=0; AC_SUBST([HAVE_SYS_PARAM_H]) | 215 | HAVE_DECL_GETPAGESIZE=1; AC_SUBST([HAVE_DECL_GETPAGESIZE]) |
155 | REPLACE_CHOWN=0; AC_SUBST([REPLACE_CHOWN]) | 216 | HAVE_DECL_GETUSERSHELL=1; AC_SUBST([HAVE_DECL_GETUSERSHELL]) |
156 | REPLACE_CLOSE=0; AC_SUBST([REPLACE_CLOSE]) | 217 | HAVE_DECL_SETHOSTNAME=1; AC_SUBST([HAVE_DECL_SETHOSTNAME]) |
157 | REPLACE_DUP=0; AC_SUBST([REPLACE_DUP]) | 218 | HAVE_DECL_TRUNCATE=1; AC_SUBST([HAVE_DECL_TRUNCATE]) |
158 | REPLACE_DUP2=0; AC_SUBST([REPLACE_DUP2]) | 219 | HAVE_DECL_TTYNAME_R=1; AC_SUBST([HAVE_DECL_TTYNAME_R]) |
159 | REPLACE_FCHOWNAT=0; AC_SUBST([REPLACE_FCHOWNAT]) | 220 | HAVE_OS_H=0; AC_SUBST([HAVE_OS_H]) |
160 | REPLACE_FTRUNCATE=0; AC_SUBST([REPLACE_FTRUNCATE]) | 221 | HAVE_SYS_PARAM_H=0; AC_SUBST([HAVE_SYS_PARAM_H]) |
161 | REPLACE_GETCWD=0; AC_SUBST([REPLACE_GETCWD]) | 222 | REPLACE_ACCESS=0; AC_SUBST([REPLACE_ACCESS]) |
162 | REPLACE_GETDOMAINNAME=0; AC_SUBST([REPLACE_GETDOMAINNAME]) | 223 | REPLACE_CHOWN=0; AC_SUBST([REPLACE_CHOWN]) |
163 | REPLACE_GETLOGIN_R=0; AC_SUBST([REPLACE_GETLOGIN_R]) | 224 | REPLACE_CLOSE=0; AC_SUBST([REPLACE_CLOSE]) |
164 | REPLACE_GETGROUPS=0; AC_SUBST([REPLACE_GETGROUPS]) | 225 | REPLACE_COPY_FILE_RANGE=0; AC_SUBST([REPLACE_COPY_FILE_RANGE]) |
165 | REPLACE_GETPAGESIZE=0; AC_SUBST([REPLACE_GETPAGESIZE]) | 226 | REPLACE_DUP=0; AC_SUBST([REPLACE_DUP]) |
166 | REPLACE_ISATTY=0; AC_SUBST([REPLACE_ISATTY]) | 227 | REPLACE_DUP2=0; AC_SUBST([REPLACE_DUP2]) |
167 | REPLACE_LCHOWN=0; AC_SUBST([REPLACE_LCHOWN]) | 228 | REPLACE_EXECL=0; AC_SUBST([REPLACE_EXECL]) |
168 | REPLACE_LINK=0; AC_SUBST([REPLACE_LINK]) | 229 | REPLACE_EXECLE=0; AC_SUBST([REPLACE_EXECLE]) |
169 | REPLACE_LINKAT=0; AC_SUBST([REPLACE_LINKAT]) | 230 | REPLACE_EXECLP=0; AC_SUBST([REPLACE_EXECLP]) |
170 | REPLACE_LSEEK=0; AC_SUBST([REPLACE_LSEEK]) | 231 | REPLACE_EXECV=0; AC_SUBST([REPLACE_EXECV]) |
171 | REPLACE_PREAD=0; AC_SUBST([REPLACE_PREAD]) | 232 | REPLACE_EXECVE=0; AC_SUBST([REPLACE_EXECVE]) |
172 | REPLACE_PWRITE=0; AC_SUBST([REPLACE_PWRITE]) | 233 | REPLACE_EXECVP=0; AC_SUBST([REPLACE_EXECVP]) |
173 | REPLACE_READ=0; AC_SUBST([REPLACE_READ]) | 234 | REPLACE_EXECVPE=0; AC_SUBST([REPLACE_EXECVPE]) |
174 | REPLACE_READLINK=0; AC_SUBST([REPLACE_READLINK]) | 235 | REPLACE_FACCESSAT=0; AC_SUBST([REPLACE_FACCESSAT]) |
175 | REPLACE_RMDIR=0; AC_SUBST([REPLACE_RMDIR]) | 236 | REPLACE_FCHOWNAT=0; AC_SUBST([REPLACE_FCHOWNAT]) |
176 | REPLACE_SLEEP=0; AC_SUBST([REPLACE_SLEEP]) | 237 | REPLACE_FTRUNCATE=0; AC_SUBST([REPLACE_FTRUNCATE]) |
177 | REPLACE_SYMLINK=0; AC_SUBST([REPLACE_SYMLINK]) | 238 | REPLACE_GETCWD=0; AC_SUBST([REPLACE_GETCWD]) |
178 | REPLACE_TTYNAME_R=0; AC_SUBST([REPLACE_TTYNAME_R]) | 239 | REPLACE_GETDOMAINNAME=0; AC_SUBST([REPLACE_GETDOMAINNAME]) |
179 | REPLACE_UNLINK=0; AC_SUBST([REPLACE_UNLINK]) | 240 | REPLACE_GETDTABLESIZE=0; AC_SUBST([REPLACE_GETDTABLESIZE]) |
180 | REPLACE_UNLINKAT=0; AC_SUBST([REPLACE_UNLINKAT]) | 241 | REPLACE_GETLOGIN_R=0; AC_SUBST([REPLACE_GETLOGIN_R]) |
181 | REPLACE_USLEEP=0; AC_SUBST([REPLACE_USLEEP]) | 242 | REPLACE_GETGROUPS=0; AC_SUBST([REPLACE_GETGROUPS]) |
182 | REPLACE_WRITE=0; AC_SUBST([REPLACE_WRITE]) | 243 | REPLACE_GETPAGESIZE=0; AC_SUBST([REPLACE_GETPAGESIZE]) |
183 | UNISTD_H_HAVE_WINSOCK2_H=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H]) | 244 | REPLACE_GETPASS=0; AC_SUBST([REPLACE_GETPASS]) |
245 | REPLACE_GETPASS_FOR_GETPASS_GNU=0; AC_SUBST([REPLACE_GETPASS_FOR_GETPASS_GNU]) | ||
246 | REPLACE_ISATTY=0; AC_SUBST([REPLACE_ISATTY]) | ||
247 | REPLACE_LCHOWN=0; AC_SUBST([REPLACE_LCHOWN]) | ||
248 | REPLACE_LINK=0; AC_SUBST([REPLACE_LINK]) | ||
249 | REPLACE_LINKAT=0; AC_SUBST([REPLACE_LINKAT]) | ||
250 | REPLACE_LSEEK=0; AC_SUBST([REPLACE_LSEEK]) | ||
251 | REPLACE_PREAD=0; AC_SUBST([REPLACE_PREAD]) | ||
252 | REPLACE_PWRITE=0; AC_SUBST([REPLACE_PWRITE]) | ||
253 | REPLACE_READ=0; AC_SUBST([REPLACE_READ]) | ||
254 | REPLACE_READLINK=0; AC_SUBST([REPLACE_READLINK]) | ||
255 | REPLACE_READLINKAT=0; AC_SUBST([REPLACE_READLINKAT]) | ||
256 | REPLACE_RMDIR=0; AC_SUBST([REPLACE_RMDIR]) | ||
257 | REPLACE_SLEEP=0; AC_SUBST([REPLACE_SLEEP]) | ||
258 | REPLACE_SYMLINK=0; AC_SUBST([REPLACE_SYMLINK]) | ||
259 | REPLACE_SYMLINKAT=0; AC_SUBST([REPLACE_SYMLINKAT]) | ||
260 | REPLACE_TRUNCATE=0; AC_SUBST([REPLACE_TRUNCATE]) | ||
261 | REPLACE_TTYNAME_R=0; AC_SUBST([REPLACE_TTYNAME_R]) | ||
262 | REPLACE_UNLINK=0; AC_SUBST([REPLACE_UNLINK]) | ||
263 | REPLACE_UNLINKAT=0; AC_SUBST([REPLACE_UNLINKAT]) | ||
264 | REPLACE_USLEEP=0; AC_SUBST([REPLACE_USLEEP]) | ||
265 | REPLACE_WRITE=0; AC_SUBST([REPLACE_WRITE]) | ||
266 | UNISTD_H_HAVE_SYS_RANDOM_H=0; AC_SUBST([UNISTD_H_HAVE_SYS_RANDOM_H]) | ||
267 | UNISTD_H_HAVE_WINSOCK2_H=0; AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H]) | ||
184 | UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0; | 268 | UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS=0; |
185 | AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS]) | 269 | AC_SUBST([UNISTD_H_HAVE_WINSOCK2_H_AND_USE_SOCKETS]) |
186 | ]) | 270 | ]) |
diff --git a/gl/m4/unlocked-io.m4 b/gl/m4/unlocked-io.m4 new file mode 100644 index 00000000..407c0bac --- /dev/null +++ b/gl/m4/unlocked-io.m4 | |||
@@ -0,0 +1,36 @@ | |||
1 | # unlocked-io.m4 serial 16 | ||
2 | |||
3 | # Copyright (C) 1998-2006, 2009-2023 Free Software Foundation, Inc. | ||
4 | # | ||
5 | # This file is free software; the Free Software Foundation | ||
6 | # gives unlimited permission to copy and/or distribute it, | ||
7 | # with or without modifications, as long as this notice is preserved. | ||
8 | |||
9 | dnl From Jim Meyering. | ||
10 | dnl | ||
11 | dnl See if the glibc *_unlocked I/O macros or functions are available. | ||
12 | dnl Use only those *_unlocked macros or functions that are declared | ||
13 | dnl (because some of them were declared in Solaris 2.5.1 but were removed | ||
14 | dnl in Solaris 2.6, whereas we want binaries built on Solaris 2.5.1 to run | ||
15 | dnl on Solaris 2.6). | ||
16 | |||
17 | AC_DEFUN([gl_FUNC_GLIBC_UNLOCKED_IO], | ||
18 | [ | ||
19 | dnl Persuade glibc and Solaris <stdio.h> to declare | ||
20 | dnl fgets_unlocked(), fputs_unlocked() etc. | ||
21 | AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) | ||
22 | |||
23 | AC_CHECK_DECLS_ONCE([clearerr_unlocked]) | ||
24 | AC_CHECK_DECLS_ONCE([feof_unlocked]) | ||
25 | AC_CHECK_DECLS_ONCE([ferror_unlocked]) | ||
26 | AC_CHECK_DECLS_ONCE([fflush_unlocked]) | ||
27 | AC_CHECK_DECLS_ONCE([fgets_unlocked]) | ||
28 | AC_CHECK_DECLS_ONCE([fputc_unlocked]) | ||
29 | AC_CHECK_DECLS_ONCE([fputs_unlocked]) | ||
30 | AC_CHECK_DECLS_ONCE([fread_unlocked]) | ||
31 | AC_CHECK_DECLS_ONCE([fwrite_unlocked]) | ||
32 | AC_CHECK_DECLS_ONCE([getc_unlocked]) | ||
33 | AC_CHECK_DECLS_ONCE([getchar_unlocked]) | ||
34 | AC_CHECK_DECLS_ONCE([putc_unlocked]) | ||
35 | AC_CHECK_DECLS_ONCE([putchar_unlocked]) | ||
36 | ]) | ||
diff --git a/gl/m4/vararrays.m4 b/gl/m4/vararrays.m4 new file mode 100644 index 00000000..fd6230c2 --- /dev/null +++ b/gl/m4/vararrays.m4 | |||
@@ -0,0 +1,72 @@ | |||
1 | # Check for variable-length arrays. | ||
2 | |||
3 | # serial 6 | ||
4 | |||
5 | # From Paul Eggert | ||
6 | |||
7 | # Copyright (C) 2001, 2009-2023 Free Software Foundation, Inc. | ||
8 | # This file is free software; the Free Software Foundation | ||
9 | # gives unlimited permission to copy and/or distribute it, | ||
10 | # with or without modifications, as long as this notice is preserved. | ||
11 | |||
12 | m4_version_prereq([2.70], [], [ | ||
13 | |||
14 | # AC_C_VARARRAYS | ||
15 | # -------------- | ||
16 | # Check whether the C compiler supports variable-length arrays. | ||
17 | AC_DEFUN([AC_C_VARARRAYS], | ||
18 | [ | ||
19 | AC_CACHE_CHECK([for variable-length arrays], | ||
20 | ac_cv_c_vararrays, | ||
21 | [AC_EGREP_CPP([defined], | ||
22 | [#ifdef __STDC_NO_VLA__ | ||
23 | defined | ||
24 | #endif | ||
25 | ], | ||
26 | [ac_cv_c_vararrays='no: __STDC_NO_VLA__ is defined'], | ||
27 | [AC_COMPILE_IFELSE( | ||
28 | [AC_LANG_PROGRAM( | ||
29 | [[/* Test for VLA support. This test is partly inspired | ||
30 | from examples in the C standard. Use at least two VLA | ||
31 | functions to detect the GCC 3.4.3 bug described in: | ||
32 | https://lists.gnu.org/archive/html/bug-gnulib/2014-08/msg00014.html | ||
33 | */ | ||
34 | #ifdef __STDC_NO_VLA__ | ||
35 | syntax error; | ||
36 | #else | ||
37 | extern int n; | ||
38 | int B[100]; | ||
39 | int fvla (int m, int C[m][m]); | ||
40 | |||
41 | int | ||
42 | simple (int count, int all[static count]) | ||
43 | { | ||
44 | return all[count - 1]; | ||
45 | } | ||
46 | |||
47 | int | ||
48 | fvla (int m, int C[m][m]) | ||
49 | { | ||
50 | typedef int VLA[m][m]; | ||
51 | VLA x; | ||
52 | int D[m]; | ||
53 | static int (*q)[m] = &B; | ||
54 | int (*s)[n] = q; | ||
55 | return C && &x[0][0] == &D[0] && &D[0] == s[0]; | ||
56 | } | ||
57 | #endif | ||
58 | ]])], | ||
59 | [ac_cv_c_vararrays=yes], | ||
60 | [ac_cv_c_vararrays=no])])]) | ||
61 | if test "$ac_cv_c_vararrays" = yes; then | ||
62 | dnl This is for compatibility with Autoconf 2.61-2.69. | ||
63 | AC_DEFINE([HAVE_C_VARARRAYS], 1, | ||
64 | [Define to 1 if C supports variable-length arrays.]) | ||
65 | elif test "$ac_cv_c_vararrays" = no; then | ||
66 | AC_DEFINE([__STDC_NO_VLA__], 1, | ||
67 | [Define to 1 if C does not support variable-length arrays, and | ||
68 | if the compiler does not already define this.]) | ||
69 | fi | ||
70 | ]) | ||
71 | |||
72 | ]) | ||
diff --git a/gl/m4/vasnprintf.m4 b/gl/m4/vasnprintf.m4 index d730e435..6361c843 100644 --- a/gl/m4/vasnprintf.m4 +++ b/gl/m4/vasnprintf.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # vasnprintf.m4 serial 36 | 1 | # vasnprintf.m4 serial 38 |
2 | dnl Copyright (C) 2002-2004, 2006-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2002-2004, 2006-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -32,7 +32,6 @@ AC_DEFUN([gl_REPLACE_VASNPRINTF], | |||
32 | # Prerequisites of lib/printf-args.h, lib/printf-args.c. | 32 | # Prerequisites of lib/printf-args.h, lib/printf-args.c. |
33 | AC_DEFUN([gl_PREREQ_PRINTF_ARGS], | 33 | AC_DEFUN([gl_PREREQ_PRINTF_ARGS], |
34 | [ | 34 | [ |
35 | AC_REQUIRE([AC_TYPE_LONG_LONG_INT]) | ||
36 | AC_REQUIRE([gt_TYPE_WCHAR_T]) | 35 | AC_REQUIRE([gt_TYPE_WCHAR_T]) |
37 | AC_REQUIRE([gt_TYPE_WINT_T]) | 36 | AC_REQUIRE([gt_TYPE_WINT_T]) |
38 | ]) | 37 | ]) |
@@ -41,7 +40,6 @@ AC_DEFUN([gl_PREREQ_PRINTF_ARGS], | |||
41 | AC_DEFUN([gl_PREREQ_PRINTF_PARSE], | 40 | AC_DEFUN([gl_PREREQ_PRINTF_PARSE], |
42 | [ | 41 | [ |
43 | AC_REQUIRE([gl_FEATURES_H]) | 42 | AC_REQUIRE([gl_FEATURES_H]) |
44 | AC_REQUIRE([AC_TYPE_LONG_LONG_INT]) | ||
45 | AC_REQUIRE([gt_TYPE_WCHAR_T]) | 43 | AC_REQUIRE([gt_TYPE_WCHAR_T]) |
46 | AC_REQUIRE([gt_TYPE_WINT_T]) | 44 | AC_REQUIRE([gt_TYPE_WINT_T]) |
47 | AC_REQUIRE([AC_TYPE_SIZE_T]) | 45 | AC_REQUIRE([AC_TYPE_SIZE_T]) |
@@ -56,7 +54,6 @@ AC_DEFUN([gl_PREREQ_PRINTF_PARSE], | |||
56 | AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF], | 54 | AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF], |
57 | [ | 55 | [ |
58 | AC_REQUIRE([AC_FUNC_ALLOCA]) | 56 | AC_REQUIRE([AC_FUNC_ALLOCA]) |
59 | AC_REQUIRE([AC_TYPE_LONG_LONG_INT]) | ||
60 | AC_REQUIRE([gt_TYPE_WCHAR_T]) | 57 | AC_REQUIRE([gt_TYPE_WCHAR_T]) |
61 | AC_REQUIRE([gt_TYPE_WINT_T]) | 58 | AC_REQUIRE([gt_TYPE_WINT_T]) |
62 | AC_CHECK_FUNCS([snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb]) | 59 | AC_CHECK_FUNCS([snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb]) |
@@ -77,6 +74,16 @@ AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF], | |||
77 | if the buffer had been large enough.]) | 74 | if the buffer had been large enough.]) |
78 | ;; | 75 | ;; |
79 | esac | 76 | esac |
77 | dnl Additionally, the use of %n can be eliminated by assuming that snprintf | ||
78 | dnl always produces NUL-terminated strings (no truncation). | ||
79 | AC_REQUIRE([gl_SNPRINTF_TRUNCATION_C99]) | ||
80 | case "$gl_cv_func_snprintf_truncation_c99" in | ||
81 | *yes) | ||
82 | AC_DEFINE([HAVE_SNPRINTF_TRUNCATION_C99], [1], | ||
83 | [Define if the string produced by the snprintf function is always NUL | ||
84 | terminated.]) | ||
85 | ;; | ||
86 | esac | ||
80 | ]) | 87 | ]) |
81 | 88 | ||
82 | # Extra prerequisites of lib/vasnprintf.c for supporting 'long double' | 89 | # Extra prerequisites of lib/vasnprintf.c for supporting 'long double' |
diff --git a/gl/m4/vasprintf.m4 b/gl/m4/vasprintf.m4 index c214ff11..6e6156a7 100644 --- a/gl/m4/vasprintf.m4 +++ b/gl/m4/vasprintf.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # vasprintf.m4 serial 6 | 1 | # vasprintf.m4 serial 6 |
2 | dnl Copyright (C) 2002-2003, 2006-2007, 2009-2013 Free Software Foundation, | 2 | dnl Copyright (C) 2002-2003, 2006-2007, 2009-2023 Free Software Foundation, |
3 | dnl Inc. | 3 | dnl Inc. |
4 | dnl This file is free software; the Free Software Foundation | 4 | dnl This file is free software; the Free Software Foundation |
5 | dnl gives unlimited permission to copy and/or distribute it, | 5 | dnl gives unlimited permission to copy and/or distribute it, |
diff --git a/gl/m4/visibility.m4 b/gl/m4/visibility.m4 index 6cbd7e5f..f0468e89 100644 --- a/gl/m4/visibility.m4 +++ b/gl/m4/visibility.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # visibility.m4 serial 5 (gettext-0.18.2) | 1 | # visibility.m4 serial 8 |
2 | dnl Copyright (C) 2005, 2008, 2010-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2005, 2008, 2010-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -29,42 +29,47 @@ AC_DEFUN([gl_VISIBILITY], | |||
29 | dnl First, check whether -Werror can be added to the command line, or | 29 | dnl First, check whether -Werror can be added to the command line, or |
30 | dnl whether it leads to an error because of some other option that the | 30 | dnl whether it leads to an error because of some other option that the |
31 | dnl user has put into $CC $CFLAGS $CPPFLAGS. | 31 | dnl user has put into $CC $CFLAGS $CPPFLAGS. |
32 | AC_MSG_CHECKING([whether the -Werror option is usable]) | 32 | AC_CACHE_CHECK([whether the -Werror option is usable], |
33 | AC_CACHE_VAL([gl_cv_cc_vis_werror], [ | 33 | [gl_cv_cc_vis_werror], |
34 | gl_save_CFLAGS="$CFLAGS" | 34 | [gl_save_CFLAGS="$CFLAGS" |
35 | CFLAGS="$CFLAGS -Werror" | 35 | CFLAGS="$CFLAGS -Werror" |
36 | AC_COMPILE_IFELSE( | 36 | AC_COMPILE_IFELSE( |
37 | [AC_LANG_PROGRAM([[]], [[]])], | 37 | [AC_LANG_PROGRAM([[]], [[]])], |
38 | [gl_cv_cc_vis_werror=yes], | 38 | [gl_cv_cc_vis_werror=yes], |
39 | [gl_cv_cc_vis_werror=no]) | 39 | [gl_cv_cc_vis_werror=no]) |
40 | CFLAGS="$gl_save_CFLAGS"]) | 40 | CFLAGS="$gl_save_CFLAGS" |
41 | AC_MSG_RESULT([$gl_cv_cc_vis_werror]) | 41 | ]) |
42 | dnl Now check whether visibility declarations are supported. | 42 | dnl Now check whether visibility declarations are supported. |
43 | AC_MSG_CHECKING([for simple visibility declarations]) | 43 | AC_CACHE_CHECK([for simple visibility declarations], |
44 | AC_CACHE_VAL([gl_cv_cc_visibility], [ | 44 | [gl_cv_cc_visibility], |
45 | gl_save_CFLAGS="$CFLAGS" | 45 | [gl_save_CFLAGS="$CFLAGS" |
46 | CFLAGS="$CFLAGS -fvisibility=hidden" | 46 | CFLAGS="$CFLAGS -fvisibility=hidden" |
47 | dnl We use the option -Werror and a function dummyfunc, because on some | 47 | dnl We use the option -Werror and a function dummyfunc, because on some |
48 | dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning | 48 | dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning |
49 | dnl "visibility attribute not supported in this configuration; ignored" | 49 | dnl "visibility attribute not supported in this configuration; ignored" |
50 | dnl at the first function definition in every compilation unit, and we | 50 | dnl at the first function definition in every compilation unit, and we |
51 | dnl don't want to use the option in this case. | 51 | dnl don't want to use the option in this case. |
52 | if test $gl_cv_cc_vis_werror = yes; then | 52 | if test $gl_cv_cc_vis_werror = yes; then |
53 | CFLAGS="$CFLAGS -Werror" | 53 | CFLAGS="$CFLAGS -Werror" |
54 | fi | 54 | fi |
55 | AC_COMPILE_IFELSE( | 55 | AC_COMPILE_IFELSE( |
56 | [AC_LANG_PROGRAM( | 56 | [AC_LANG_PROGRAM( |
57 | [[extern __attribute__((__visibility__("hidden"))) int hiddenvar; | 57 | [[extern __attribute__((__visibility__("hidden"))) int hiddenvar; |
58 | extern __attribute__((__visibility__("default"))) int exportedvar; | 58 | extern __attribute__((__visibility__("default"))) int exportedvar; |
59 | extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); | 59 | extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void); |
60 | extern __attribute__((__visibility__("default"))) int exportedfunc (void); | 60 | extern __attribute__((__visibility__("default"))) int exportedfunc (void); |
61 | void dummyfunc (void) {} | 61 | void dummyfunc (void); |
62 | ]], | 62 | int hiddenvar; |
63 | [[]])], | 63 | int exportedvar; |
64 | [gl_cv_cc_visibility=yes], | 64 | int hiddenfunc (void) { return 51; } |
65 | [gl_cv_cc_visibility=no]) | 65 | int exportedfunc (void) { return 1225736919; } |
66 | CFLAGS="$gl_save_CFLAGS"]) | 66 | void dummyfunc (void) {} |
67 | AC_MSG_RESULT([$gl_cv_cc_visibility]) | 67 | ]], |
68 | [[]])], | ||
69 | [gl_cv_cc_visibility=yes], | ||
70 | [gl_cv_cc_visibility=no]) | ||
71 | CFLAGS="$gl_save_CFLAGS" | ||
72 | ]) | ||
68 | if test $gl_cv_cc_visibility = yes; then | 73 | if test $gl_cv_cc_visibility = yes; then |
69 | CFLAG_VISIBILITY="-fvisibility=hidden" | 74 | CFLAG_VISIBILITY="-fvisibility=hidden" |
70 | HAVE_VISIBILITY=1 | 75 | HAVE_VISIBILITY=1 |
diff --git a/gl/m4/vsnprintf.m4 b/gl/m4/vsnprintf.m4 index 4900764e..7fbb11c4 100644 --- a/gl/m4/vsnprintf.m4 +++ b/gl/m4/vsnprintf.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # vsnprintf.m4 serial 6 | 1 | # vsnprintf.m4 serial 7 |
2 | dnl Copyright (C) 2002-2004, 2007-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2002-2004, 2007-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -46,6 +46,14 @@ AC_DEFUN([gl_REPLACE_VSNPRINTF], | |||
46 | AC_LIBOBJ([vsnprintf]) | 46 | AC_LIBOBJ([vsnprintf]) |
47 | if test $ac_cv_func_vsnprintf = yes; then | 47 | if test $ac_cv_func_vsnprintf = yes; then |
48 | REPLACE_VSNPRINTF=1 | 48 | REPLACE_VSNPRINTF=1 |
49 | else | ||
50 | AC_CHECK_DECLS_ONCE([vsnprintf]) | ||
51 | if test $ac_cv_have_decl_vsnprintf = yes; then | ||
52 | dnl If the function is declared but does not appear to exist, it may be | ||
53 | dnl defined as an inline function. In order to avoid a conflict, we have | ||
54 | dnl to define rpl_vsnprintf, not vsnprintf. | ||
55 | REPLACE_VSNPRINTF=1 | ||
56 | fi | ||
49 | fi | 57 | fi |
50 | gl_PREREQ_VSNPRINTF | 58 | gl_PREREQ_VSNPRINTF |
51 | ]) | 59 | ]) |
diff --git a/gl/m4/warn-on-use.m4 b/gl/m4/warn-on-use.m4 index e43beebd..10649c5c 100644 --- a/gl/m4/warn-on-use.m4 +++ b/gl/m4/warn-on-use.m4 | |||
@@ -1,11 +1,13 @@ | |||
1 | # warn-on-use.m4 serial 5 | 1 | # warn-on-use.m4 serial 10 |
2 | dnl Copyright (C) 2010-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2010-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | # gl_WARN_ON_USE_PREPARE(INCLUDES, NAMES) | 7 | # gl_WARN_ON_USE_PREPARE(INCLUDES, NAMES) |
8 | # --------------------------------------- | 8 | # --------------------------------------- |
9 | # If the module 'posixcheck' is in use: | ||
10 | # | ||
9 | # For each whitespace-separated element in the list of NAMES, define | 11 | # For each whitespace-separated element in the list of NAMES, define |
10 | # HAVE_RAW_DECL_name if the function has a declaration among INCLUDES | 12 | # HAVE_RAW_DECL_name if the function has a declaration among INCLUDES |
11 | # even after being undefined as a macro. | 13 | # even after being undefined as a macro. |
@@ -23,25 +25,38 @@ dnl with or without modifications, as long as this notice is preserved. | |||
23 | # needing gl_WARN_ON_USE_PREPARE. | 25 | # needing gl_WARN_ON_USE_PREPARE. |
24 | AC_DEFUN([gl_WARN_ON_USE_PREPARE], | 26 | AC_DEFUN([gl_WARN_ON_USE_PREPARE], |
25 | [ | 27 | [ |
26 | m4_foreach_w([gl_decl], [$2], | 28 | m4_ifdef([gl_POSIXCHECK], |
27 | [AH_TEMPLATE([HAVE_RAW_DECL_]AS_TR_CPP(m4_defn([gl_decl])), | 29 | [m4_foreach_w([gl_decl], [$2], |
28 | [Define to 1 if ]m4_defn([gl_decl])[ is declared even after | 30 | [AH_TEMPLATE([HAVE_RAW_DECL_]AS_TR_CPP(m4_defn([gl_decl])), |
29 | undefining macros.])])dnl | 31 | [Define to 1 if ]m4_defn([gl_decl])[ is declared even after |
30 | dnl FIXME: gl_Symbol must be used unquoted until we can assume | 32 | undefining macros.])])dnl |
31 | dnl autoconf 2.64 or newer. | 33 | for gl_func in m4_flatten([$2]); do |
32 | for gl_func in m4_flatten([$2]); do | 34 | AS_VAR_PUSHDEF([gl_Symbol], [gl_cv_have_raw_decl_$gl_func])dnl |
33 | AS_VAR_PUSHDEF([gl_Symbol], [gl_cv_have_raw_decl_$gl_func])dnl | 35 | dnl As a workaround to implicit built-in function declarations in |
34 | AC_CACHE_CHECK([whether $gl_func is declared without a macro], | 36 | dnl clang (e.g. strndup), reference ac_compile_for_check_decl instead |
35 | gl_Symbol, | 37 | dnl of ac_compile. If, for whatever reason, the override of AC_PROG_CC |
36 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$1], | 38 | dnl in zzgnulib.m4 is inactive, use the original ac_compile. |
37 | [@%:@undef $gl_func | 39 | ac_save_ac_compile="$ac_compile" |
38 | (void) $gl_func;])], | 40 | if test -n "$ac_compile_for_check_decl"; then |
39 | [AS_VAR_SET(gl_Symbol, [yes])], [AS_VAR_SET(gl_Symbol, [no])])]) | 41 | ac_compile="$ac_compile_for_check_decl" |
40 | AS_VAR_IF(gl_Symbol, [yes], | 42 | fi |
41 | [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_RAW_DECL_$gl_func]), [1]) | 43 | AC_CACHE_CHECK([whether $gl_func is declared without a macro], |
42 | dnl shortcut - if the raw declaration exists, then set a cache | 44 | [gl_Symbol], |
43 | dnl variable to allow skipping any later AC_CHECK_DECL efforts | 45 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$1], |
44 | eval ac_cv_have_decl_$gl_func=yes]) | 46 | [[#undef $gl_func |
45 | AS_VAR_POPDEF([gl_Symbol])dnl | 47 | (void) $gl_func;]])], |
46 | done | 48 | [AS_VAR_SET([gl_Symbol], [yes])], [AS_VAR_SET([gl_Symbol], [no])])]) |
49 | ac_compile="$ac_save_ac_compile" | ||
50 | AS_VAR_IF([gl_Symbol], [yes], | ||
51 | [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_RAW_DECL_$gl_func]), [1]) | ||
52 | dnl Shortcut for an AC_CHECK_DECL invocation that may come later: | ||
53 | dnl If the raw declaration exists with the given includes, then | ||
54 | dnl AC_CHECK_DECL with its many includes would see it as well. | ||
55 | dnl So, set a cache variable to allow skipping any later | ||
56 | dnl AC_CHECK_DECL invocation for $gl_func. | ||
57 | eval "ac_cv_have_decl_$gl_func=yes" | ||
58 | ]) | ||
59 | AS_VAR_POPDEF([gl_Symbol])dnl | ||
60 | done | ||
61 | ]) | ||
47 | ]) | 62 | ]) |
diff --git a/gl/m4/wchar_h.m4 b/gl/m4/wchar_h.m4 index bedb15a4..8ec66193 100644 --- a/gl/m4/wchar_h.m4 +++ b/gl/m4/wchar_h.m4 | |||
@@ -1,15 +1,15 @@ | |||
1 | dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues. | 1 | dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues. |
2 | 2 | ||
3 | dnl Copyright (C) 2007-2013 Free Software Foundation, Inc. | 3 | dnl Copyright (C) 2007-2023 Free Software Foundation, Inc. |
4 | dnl This file is free software; the Free Software Foundation | 4 | dnl This file is free software; the Free Software Foundation |
5 | dnl gives unlimited permission to copy and/or distribute it, | 5 | dnl gives unlimited permission to copy and/or distribute it, |
6 | dnl with or without modifications, as long as this notice is preserved. | 6 | dnl with or without modifications, as long as this notice is preserved. |
7 | 7 | ||
8 | dnl Written by Eric Blake. | 8 | dnl Written by Eric Blake. |
9 | 9 | ||
10 | # wchar_h.m4 serial 39 | 10 | # wchar_h.m4 serial 55 |
11 | 11 | ||
12 | AC_DEFUN([gl_WCHAR_H], | 12 | AC_DEFUN_ONCE([gl_WCHAR_H], |
13 | [ | 13 | [ |
14 | AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) | 14 | AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) |
15 | AC_REQUIRE([gl_WCHAR_H_INLINE_OK]) | 15 | AC_REQUIRE([gl_WCHAR_H_INLINE_OK]) |
@@ -35,76 +35,82 @@ AC_DEFUN([gl_WCHAR_H], | |||
35 | fi | 35 | fi |
36 | AC_SUBST([HAVE_WINT_T]) | 36 | AC_SUBST([HAVE_WINT_T]) |
37 | 37 | ||
38 | AC_REQUIRE([gl_TYPE_WINT_T_PREREQ]) | ||
39 | |||
38 | dnl Check for declarations of anything we want to poison if the | 40 | dnl Check for declarations of anything we want to poison if the |
39 | dnl corresponding gnulib module is not in use. | 41 | dnl corresponding gnulib module is not in use. |
40 | gl_WARN_ON_USE_PREPARE([[ | 42 | gl_WARN_ON_USE_PREPARE([[ |
41 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | 43 | #include <wchar.h> |
42 | <wchar.h>. | ||
43 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | ||
44 | included before <wchar.h>. */ | ||
45 | #if !(defined __GLIBC__ && !defined __UCLIBC__) | ||
46 | # include <stddef.h> | ||
47 | # include <stdio.h> | ||
48 | # include <time.h> | ||
49 | #endif | ||
50 | #include <wchar.h> | ||
51 | ]], | 44 | ]], |
52 | [btowc wctob mbsinit mbrtowc mbrlen mbsrtowcs mbsnrtowcs wcrtomb | 45 | [btowc wctob mbsinit mbrtowc mbrlen mbsrtowcs mbsnrtowcs wcrtomb |
53 | wcsrtombs wcsnrtombs wcwidth wmemchr wmemcmp wmemcpy wmemmove wmemset | 46 | wcsrtombs wcsnrtombs wcwidth |
47 | wmemchr wmemcmp wmemcpy wmemmove wmempcpy wmemset | ||
54 | wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat wcscmp | 48 | wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat wcscmp |
55 | wcsncmp wcscasecmp wcsncasecmp wcscoll wcsxfrm wcsdup wcschr wcsrchr | 49 | wcsncmp wcscasecmp wcsncasecmp wcscoll wcsxfrm wcsdup wcschr wcsrchr |
56 | wcscspn wcsspn wcspbrk wcsstr wcstok wcswidth | 50 | wcscspn wcsspn wcspbrk wcsstr wcstok wcswidth wcsftime |
57 | ]) | 51 | ]) |
52 | |||
53 | AC_REQUIRE([AC_C_RESTRICT]) | ||
54 | |||
55 | AC_CHECK_DECLS([wcsdup], [], [], [[ | ||
56 | #include <wchar.h> | ||
57 | ]]) | ||
58 | if test $ac_cv_have_decl_wcsdup = no; then | ||
59 | HAVE_DECL_WCSDUP=0 | ||
60 | fi | ||
58 | ]) | 61 | ]) |
59 | 62 | ||
60 | dnl Check whether <wchar.h> is usable at all. | 63 | dnl Check whether <wchar.h> is usable at all. |
61 | AC_DEFUN([gl_WCHAR_H_INLINE_OK], | 64 | AC_DEFUN([gl_WCHAR_H_INLINE_OK], |
62 | [ | 65 | [ |
63 | dnl Test whether <wchar.h> suffers due to the transition from '__inline' to | 66 | dnl Test whether <wchar.h> suffers due to the transition from '__inline' to |
64 | dnl 'gnu_inline'. See <http://sourceware.org/bugzilla/show_bug.cgi?id=4022> | 67 | dnl 'gnu_inline'. See <https://sourceware.org/bugzilla/show_bug.cgi?id=4022> |
65 | dnl and <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440>. In summary, | 68 | dnl and <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440>. In summary, |
66 | dnl glibc version 2.5 or older, together with gcc version 4.3 or newer and | 69 | dnl glibc version 2.5 or older, together with gcc version 4.3 or newer and |
67 | dnl the option -std=c99 or -std=gnu99, leads to a broken <wchar.h>. | 70 | dnl the option -std=c99 or -std=gnu99, leads to a broken <wchar.h>. |
71 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
68 | AC_CACHE_CHECK([whether <wchar.h> uses 'inline' correctly], | 72 | AC_CACHE_CHECK([whether <wchar.h> uses 'inline' correctly], |
69 | [gl_cv_header_wchar_h_correct_inline], | 73 | [gl_cv_header_wchar_h_correct_inline], |
70 | [gl_cv_header_wchar_h_correct_inline=yes | 74 | [gl_cv_header_wchar_h_correct_inline=yes |
71 | AC_LANG_CONFTEST([ | 75 | case "$host_os" in |
72 | AC_LANG_SOURCE([[#define wcstod renamed_wcstod | 76 | *-gnu* | gnu*) |
73 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | 77 | AC_LANG_CONFTEST([ |
74 | <wchar.h>. | 78 | AC_LANG_SOURCE([[ |
75 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | 79 | #define wcstod renamed_wcstod |
76 | included before <wchar.h>. */ | 80 | #include <wchar.h> |
77 | #include <stddef.h> | 81 | extern int zero (void); |
78 | #include <stdio.h> | 82 | int main () { return zero(); } |
79 | #include <time.h> | 83 | ]])]) |
80 | #include <wchar.h> | 84 | dnl Do not rename the object file from conftest.$ac_objext to |
81 | extern int zero (void); | 85 | dnl conftest1.$ac_objext, as this will cause the link to fail on |
82 | int main () { return zero(); } | 86 | dnl z/OS when using the XPLINK object format (due to duplicate |
83 | ]])]) | 87 | dnl CSECT names). Instead, temporarily redefine $ac_compile so |
84 | if AC_TRY_EVAL([ac_compile]); then | 88 | dnl that the object file has the latter name from the start. |
85 | mv conftest.$ac_objext conftest1.$ac_objext | 89 | save_ac_compile="$ac_compile" |
86 | AC_LANG_CONFTEST([ | 90 | ac_compile=`echo "$save_ac_compile" | sed s/conftest/conftest1/` |
87 | AC_LANG_SOURCE([[#define wcstod renamed_wcstod | 91 | if echo '#include "conftest.c"' >conftest1.c \ |
88 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | 92 | && AC_TRY_EVAL([ac_compile]); then |
89 | <wchar.h>. | 93 | AC_LANG_CONFTEST([ |
90 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | 94 | AC_LANG_SOURCE([[ |
91 | included before <wchar.h>. */ | 95 | #define wcstod renamed_wcstod |
92 | #include <stddef.h> | 96 | #include <wchar.h> |
93 | #include <stdio.h> | 97 | int zero (void) { return 0; } |
94 | #include <time.h> | 98 | ]])]) |
95 | #include <wchar.h> | 99 | dnl See note above about renaming object files. |
96 | int zero (void) { return 0; } | 100 | ac_compile=`echo "$save_ac_compile" | sed s/conftest/conftest2/` |
97 | ]])]) | 101 | if echo '#include "conftest.c"' >conftest2.c \ |
98 | if AC_TRY_EVAL([ac_compile]); then | 102 | && AC_TRY_EVAL([ac_compile]); then |
99 | mv conftest.$ac_objext conftest2.$ac_objext | 103 | if $CC -o conftest$ac_exeext $CFLAGS $LDFLAGS conftest1.$ac_objext conftest2.$ac_objext $LIBS >&AS_MESSAGE_LOG_FD 2>&1; then |
100 | if $CC -o conftest$ac_exeext $CFLAGS $LDFLAGS conftest1.$ac_objext conftest2.$ac_objext $LIBS >&AS_MESSAGE_LOG_FD 2>&1; then | 104 | : |
101 | : | 105 | else |
102 | else | 106 | gl_cv_header_wchar_h_correct_inline=no |
103 | gl_cv_header_wchar_h_correct_inline=no | 107 | fi |
108 | fi | ||
104 | fi | 109 | fi |
105 | fi | 110 | ac_compile="$save_ac_compile" |
106 | fi | 111 | rm -f conftest[12].c conftest[12].$ac_objext conftest$ac_exeext |
107 | rm -f conftest1.$ac_objext conftest2.$ac_objext conftest$ac_exeext | 112 | ;; |
113 | esac | ||
108 | ]) | 114 | ]) |
109 | if test $gl_cv_header_wchar_h_correct_inline = no; then | 115 | if test $gl_cv_header_wchar_h_correct_inline = no; then |
110 | AC_MSG_ERROR([<wchar.h> cannot be used with this compiler ($CC $CFLAGS $CPPFLAGS). | 116 | AC_MSG_ERROR([<wchar.h> cannot be used with this compiler ($CC $CFLAGS $CPPFLAGS). |
@@ -112,63 +118,84 @@ This is a known interoperability problem of glibc <= 2.5 with gcc >= 4.3 in | |||
112 | C99 mode. You have four options: | 118 | C99 mode. You have four options: |
113 | - Add the flag -fgnu89-inline to CC and reconfigure, or | 119 | - Add the flag -fgnu89-inline to CC and reconfigure, or |
114 | - Fix your include files, using parts of | 120 | - Fix your include files, using parts of |
115 | <http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b037a293a48718af30d706c2e18c929d0e69a621>, or | 121 | <https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b037a293a48718af30d706c2e18c929d0e69a621>, or |
116 | - Use a gcc version older than 4.3, or | 122 | - Use a gcc version older than 4.3, or |
117 | - Don't use the flags -std=c99 or -std=gnu99. | 123 | - Don't use the flags -std=c99 or -std=gnu99. |
118 | Configuration aborted.]) | 124 | Configuration aborted.]) |
119 | fi | 125 | fi |
120 | ]) | 126 | ]) |
121 | 127 | ||
128 | # gl_WCHAR_MODULE_INDICATOR([modulename]) | ||
129 | # sets the shell variable that indicates the presence of the given module | ||
130 | # to a C preprocessor expression that will evaluate to 1. | ||
131 | # This macro invocation must not occur in macros that are AC_REQUIREd. | ||
122 | AC_DEFUN([gl_WCHAR_MODULE_INDICATOR], | 132 | AC_DEFUN([gl_WCHAR_MODULE_INDICATOR], |
123 | [ | 133 | [ |
124 | dnl Use AC_REQUIRE here, so that the default settings are expanded once only. | 134 | dnl Ensure to expand the default settings once only. |
125 | AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) | 135 | gl_WCHAR_H_REQUIRE_DEFAULTS |
126 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) | 136 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) |
127 | dnl Define it also as a C macro, for the benefit of the unit tests. | 137 | dnl Define it also as a C macro, for the benefit of the unit tests. |
128 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) | 138 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) |
129 | ]) | 139 | ]) |
130 | 140 | ||
141 | # Initializes the default values for AC_SUBSTed shell variables. | ||
142 | # This macro must not be AC_REQUIREd. It must only be invoked, and only | ||
143 | # outside of macros or in macros that are not AC_REQUIREd. | ||
144 | AC_DEFUN([gl_WCHAR_H_REQUIRE_DEFAULTS], | ||
145 | [ | ||
146 | m4_defun(GL_MODULE_INDICATOR_PREFIX[_WCHAR_H_MODULE_INDICATOR_DEFAULTS], [ | ||
147 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_BTOWC]) | ||
148 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTOB]) | ||
149 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSINIT]) | ||
150 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBRTOWC]) | ||
151 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBRLEN]) | ||
152 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSRTOWCS]) | ||
153 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSNRTOWCS]) | ||
154 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCRTOMB]) | ||
155 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSRTOMBS]) | ||
156 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNRTOMBS]) | ||
157 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCWIDTH]) | ||
158 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMCHR]) | ||
159 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMCMP]) | ||
160 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMCPY]) | ||
161 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMMOVE]) | ||
162 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMPCPY]) | ||
163 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMSET]) | ||
164 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSLEN]) | ||
165 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNLEN]) | ||
166 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCPY]) | ||
167 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCPCPY]) | ||
168 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNCPY]) | ||
169 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCPNCPY]) | ||
170 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCAT]) | ||
171 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNCAT]) | ||
172 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCMP]) | ||
173 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNCMP]) | ||
174 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCASECMP]) | ||
175 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNCASECMP]) | ||
176 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCOLL]) | ||
177 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSXFRM]) | ||
178 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSDUP]) | ||
179 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCHR]) | ||
180 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSRCHR]) | ||
181 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCSPN]) | ||
182 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSSPN]) | ||
183 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSPBRK]) | ||
184 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSSTR]) | ||
185 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSTOK]) | ||
186 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSWIDTH]) | ||
187 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSFTIME]) | ||
188 | dnl Support Microsoft deprecated alias function names by default. | ||
189 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_WCSDUP], [1]) | ||
190 | ]) | ||
191 | m4_require(GL_MODULE_INDICATOR_PREFIX[_WCHAR_H_MODULE_INDICATOR_DEFAULTS]) | ||
192 | dnl Make sure the shell variable for GNULIB_FREE_POSIX is initialized. | ||
193 | gl_STDLIB_H_REQUIRE_DEFAULTS | ||
194 | AC_REQUIRE([gl_WCHAR_H_DEFAULTS]) | ||
195 | ]) | ||
196 | |||
131 | AC_DEFUN([gl_WCHAR_H_DEFAULTS], | 197 | AC_DEFUN([gl_WCHAR_H_DEFAULTS], |
132 | [ | 198 | [ |
133 | GNULIB_BTOWC=0; AC_SUBST([GNULIB_BTOWC]) | ||
134 | GNULIB_WCTOB=0; AC_SUBST([GNULIB_WCTOB]) | ||
135 | GNULIB_MBSINIT=0; AC_SUBST([GNULIB_MBSINIT]) | ||
136 | GNULIB_MBRTOWC=0; AC_SUBST([GNULIB_MBRTOWC]) | ||
137 | GNULIB_MBRLEN=0; AC_SUBST([GNULIB_MBRLEN]) | ||
138 | GNULIB_MBSRTOWCS=0; AC_SUBST([GNULIB_MBSRTOWCS]) | ||
139 | GNULIB_MBSNRTOWCS=0; AC_SUBST([GNULIB_MBSNRTOWCS]) | ||
140 | GNULIB_WCRTOMB=0; AC_SUBST([GNULIB_WCRTOMB]) | ||
141 | GNULIB_WCSRTOMBS=0; AC_SUBST([GNULIB_WCSRTOMBS]) | ||
142 | GNULIB_WCSNRTOMBS=0; AC_SUBST([GNULIB_WCSNRTOMBS]) | ||
143 | GNULIB_WCWIDTH=0; AC_SUBST([GNULIB_WCWIDTH]) | ||
144 | GNULIB_WMEMCHR=0; AC_SUBST([GNULIB_WMEMCHR]) | ||
145 | GNULIB_WMEMCMP=0; AC_SUBST([GNULIB_WMEMCMP]) | ||
146 | GNULIB_WMEMCPY=0; AC_SUBST([GNULIB_WMEMCPY]) | ||
147 | GNULIB_WMEMMOVE=0; AC_SUBST([GNULIB_WMEMMOVE]) | ||
148 | GNULIB_WMEMSET=0; AC_SUBST([GNULIB_WMEMSET]) | ||
149 | GNULIB_WCSLEN=0; AC_SUBST([GNULIB_WCSLEN]) | ||
150 | GNULIB_WCSNLEN=0; AC_SUBST([GNULIB_WCSNLEN]) | ||
151 | GNULIB_WCSCPY=0; AC_SUBST([GNULIB_WCSCPY]) | ||
152 | GNULIB_WCPCPY=0; AC_SUBST([GNULIB_WCPCPY]) | ||
153 | GNULIB_WCSNCPY=0; AC_SUBST([GNULIB_WCSNCPY]) | ||
154 | GNULIB_WCPNCPY=0; AC_SUBST([GNULIB_WCPNCPY]) | ||
155 | GNULIB_WCSCAT=0; AC_SUBST([GNULIB_WCSCAT]) | ||
156 | GNULIB_WCSNCAT=0; AC_SUBST([GNULIB_WCSNCAT]) | ||
157 | GNULIB_WCSCMP=0; AC_SUBST([GNULIB_WCSCMP]) | ||
158 | GNULIB_WCSNCMP=0; AC_SUBST([GNULIB_WCSNCMP]) | ||
159 | GNULIB_WCSCASECMP=0; AC_SUBST([GNULIB_WCSCASECMP]) | ||
160 | GNULIB_WCSNCASECMP=0; AC_SUBST([GNULIB_WCSNCASECMP]) | ||
161 | GNULIB_WCSCOLL=0; AC_SUBST([GNULIB_WCSCOLL]) | ||
162 | GNULIB_WCSXFRM=0; AC_SUBST([GNULIB_WCSXFRM]) | ||
163 | GNULIB_WCSDUP=0; AC_SUBST([GNULIB_WCSDUP]) | ||
164 | GNULIB_WCSCHR=0; AC_SUBST([GNULIB_WCSCHR]) | ||
165 | GNULIB_WCSRCHR=0; AC_SUBST([GNULIB_WCSRCHR]) | ||
166 | GNULIB_WCSCSPN=0; AC_SUBST([GNULIB_WCSCSPN]) | ||
167 | GNULIB_WCSSPN=0; AC_SUBST([GNULIB_WCSSPN]) | ||
168 | GNULIB_WCSPBRK=0; AC_SUBST([GNULIB_WCSPBRK]) | ||
169 | GNULIB_WCSSTR=0; AC_SUBST([GNULIB_WCSSTR]) | ||
170 | GNULIB_WCSTOK=0; AC_SUBST([GNULIB_WCSTOK]) | ||
171 | GNULIB_WCSWIDTH=0; AC_SUBST([GNULIB_WCSWIDTH]) | ||
172 | dnl Assume proper GNU behavior unless another module says otherwise. | 199 | dnl Assume proper GNU behavior unless another module says otherwise. |
173 | HAVE_BTOWC=1; AC_SUBST([HAVE_BTOWC]) | 200 | HAVE_BTOWC=1; AC_SUBST([HAVE_BTOWC]) |
174 | HAVE_MBSINIT=1; AC_SUBST([HAVE_MBSINIT]) | 201 | HAVE_MBSINIT=1; AC_SUBST([HAVE_MBSINIT]) |
@@ -183,6 +210,7 @@ AC_DEFUN([gl_WCHAR_H_DEFAULTS], | |||
183 | HAVE_WMEMCMP=1; AC_SUBST([HAVE_WMEMCMP]) | 210 | HAVE_WMEMCMP=1; AC_SUBST([HAVE_WMEMCMP]) |
184 | HAVE_WMEMCPY=1; AC_SUBST([HAVE_WMEMCPY]) | 211 | HAVE_WMEMCPY=1; AC_SUBST([HAVE_WMEMCPY]) |
185 | HAVE_WMEMMOVE=1; AC_SUBST([HAVE_WMEMMOVE]) | 212 | HAVE_WMEMMOVE=1; AC_SUBST([HAVE_WMEMMOVE]) |
213 | HAVE_WMEMPCPY=1; AC_SUBST([HAVE_WMEMPCPY]) | ||
186 | HAVE_WMEMSET=1; AC_SUBST([HAVE_WMEMSET]) | 214 | HAVE_WMEMSET=1; AC_SUBST([HAVE_WMEMSET]) |
187 | HAVE_WCSLEN=1; AC_SUBST([HAVE_WCSLEN]) | 215 | HAVE_WCSLEN=1; AC_SUBST([HAVE_WCSLEN]) |
188 | HAVE_WCSNLEN=1; AC_SUBST([HAVE_WCSNLEN]) | 216 | HAVE_WCSNLEN=1; AC_SUBST([HAVE_WCSNLEN]) |
@@ -207,7 +235,9 @@ AC_DEFUN([gl_WCHAR_H_DEFAULTS], | |||
207 | HAVE_WCSSTR=1; AC_SUBST([HAVE_WCSSTR]) | 235 | HAVE_WCSSTR=1; AC_SUBST([HAVE_WCSSTR]) |
208 | HAVE_WCSTOK=1; AC_SUBST([HAVE_WCSTOK]) | 236 | HAVE_WCSTOK=1; AC_SUBST([HAVE_WCSTOK]) |
209 | HAVE_WCSWIDTH=1; AC_SUBST([HAVE_WCSWIDTH]) | 237 | HAVE_WCSWIDTH=1; AC_SUBST([HAVE_WCSWIDTH]) |
238 | HAVE_WCSFTIME=1; AC_SUBST([HAVE_WCSFTIME]) | ||
210 | HAVE_DECL_WCTOB=1; AC_SUBST([HAVE_DECL_WCTOB]) | 239 | HAVE_DECL_WCTOB=1; AC_SUBST([HAVE_DECL_WCTOB]) |
240 | HAVE_DECL_WCSDUP=1; AC_SUBST([HAVE_DECL_WCSDUP]) | ||
211 | HAVE_DECL_WCWIDTH=1; AC_SUBST([HAVE_DECL_WCWIDTH]) | 241 | HAVE_DECL_WCWIDTH=1; AC_SUBST([HAVE_DECL_WCWIDTH]) |
212 | REPLACE_MBSTATE_T=0; AC_SUBST([REPLACE_MBSTATE_T]) | 242 | REPLACE_MBSTATE_T=0; AC_SUBST([REPLACE_MBSTATE_T]) |
213 | REPLACE_BTOWC=0; AC_SUBST([REPLACE_BTOWC]) | 243 | REPLACE_BTOWC=0; AC_SUBST([REPLACE_BTOWC]) |
@@ -222,4 +252,6 @@ AC_DEFUN([gl_WCHAR_H_DEFAULTS], | |||
222 | REPLACE_WCSNRTOMBS=0; AC_SUBST([REPLACE_WCSNRTOMBS]) | 252 | REPLACE_WCSNRTOMBS=0; AC_SUBST([REPLACE_WCSNRTOMBS]) |
223 | REPLACE_WCWIDTH=0; AC_SUBST([REPLACE_WCWIDTH]) | 253 | REPLACE_WCWIDTH=0; AC_SUBST([REPLACE_WCWIDTH]) |
224 | REPLACE_WCSWIDTH=0; AC_SUBST([REPLACE_WCSWIDTH]) | 254 | REPLACE_WCSWIDTH=0; AC_SUBST([REPLACE_WCSWIDTH]) |
255 | REPLACE_WCSFTIME=0; AC_SUBST([REPLACE_WCSFTIME]) | ||
256 | REPLACE_WCSTOK=0; AC_SUBST([REPLACE_WCSTOK]) | ||
225 | ]) | 257 | ]) |
diff --git a/gl/m4/wchar_t.m4 b/gl/m4/wchar_t.m4 index e1e1e699..50bde08a 100644 --- a/gl/m4/wchar_t.m4 +++ b/gl/m4/wchar_t.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # wchar_t.m4 serial 4 (gettext-0.18.2) | 1 | # wchar_t.m4 serial 4 (gettext-0.18.2) |
2 | dnl Copyright (C) 2002-2003, 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2002-2003, 2008-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
diff --git a/gl/m4/wcrtomb.m4 b/gl/m4/wcrtomb.m4 index f56b5bae..d51b36e1 100644 --- a/gl/m4/wcrtomb.m4 +++ b/gl/m4/wcrtomb.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # wcrtomb.m4 serial 11 | 1 | # wcrtomb.m4 serial 17 |
2 | dnl Copyright (C) 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2008-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
@@ -15,15 +15,8 @@ AC_DEFUN([gl_FUNC_WCRTOMB], | |||
15 | if test $ac_cv_func_wcrtomb = no; then | 15 | if test $ac_cv_func_wcrtomb = no; then |
16 | HAVE_WCRTOMB=0 | 16 | HAVE_WCRTOMB=0 |
17 | AC_CHECK_DECLS([wcrtomb],,, [[ | 17 | AC_CHECK_DECLS([wcrtomb],,, [[ |
18 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | 18 | #include <wchar.h> |
19 | <wchar.h>. | 19 | ]]) |
20 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | ||
21 | included before <wchar.h>. */ | ||
22 | #include <stddef.h> | ||
23 | #include <stdio.h> | ||
24 | #include <time.h> | ||
25 | #include <wchar.h> | ||
26 | ]]) | ||
27 | if test $ac_cv_have_decl_wcrtomb = yes; then | 20 | if test $ac_cv_have_decl_wcrtomb = yes; then |
28 | dnl On Minix 3.1.8, the system's <wchar.h> declares wcrtomb() although | 21 | dnl On Minix 3.1.8, the system's <wchar.h> declares wcrtomb() although |
29 | dnl it does not have the function. Avoid a collision with gnulib's | 22 | dnl it does not have the function. Avoid a collision with gnulib's |
@@ -31,17 +24,56 @@ AC_DEFUN([gl_FUNC_WCRTOMB], | |||
31 | REPLACE_WCRTOMB=1 | 24 | REPLACE_WCRTOMB=1 |
32 | fi | 25 | fi |
33 | else | 26 | else |
34 | if test $REPLACE_MBSTATE_T = 1; then | 27 | dnl We don't actually need to override wcrtomb when redefining the semantics |
35 | REPLACE_WCRTOMB=1 | 28 | dnl of the mbstate_t type. Tested on 32-bit AIX. |
36 | else | 29 | dnl if test $REPLACE_MBSTATE_T = 1; then |
37 | dnl On AIX 4.3, OSF/1 5.1 and Solaris 10, wcrtomb (NULL, 0, NULL) sometimes | 30 | dnl REPLACE_WCRTOMB=1 |
38 | dnl returns 0 instead of 1. | 31 | dnl fi |
32 | if test $REPLACE_WCRTOMB = 0; then | ||
33 | dnl On Android 4.3, wcrtomb produces wrong characters in the C locale. | ||
34 | dnl On AIX 4.3, OSF/1 5.1 and Solaris <= 11.3, wcrtomb (NULL, 0, NULL) | ||
35 | dnl sometimes returns 0 instead of 1. | ||
39 | AC_REQUIRE([AC_PROG_CC]) | 36 | AC_REQUIRE([AC_PROG_CC]) |
40 | AC_REQUIRE([gt_LOCALE_FR]) | 37 | AC_REQUIRE([gt_LOCALE_FR]) |
41 | AC_REQUIRE([gt_LOCALE_FR_UTF8]) | 38 | AC_REQUIRE([gt_LOCALE_FR_UTF8]) |
42 | AC_REQUIRE([gt_LOCALE_JA]) | 39 | AC_REQUIRE([gt_LOCALE_JA]) |
43 | AC_REQUIRE([gt_LOCALE_ZH_CN]) | 40 | AC_REQUIRE([gt_LOCALE_ZH_CN]) |
44 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | 41 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles |
42 | AC_CACHE_CHECK([whether wcrtomb works in the C locale], | ||
43 | [gl_cv_func_wcrtomb_works], | ||
44 | [AC_RUN_IFELSE( | ||
45 | [AC_LANG_SOURCE([[ | ||
46 | #include <string.h> | ||
47 | #include <stdlib.h> | ||
48 | #include <wchar.h> | ||
49 | int main () | ||
50 | { | ||
51 | mbstate_t state; | ||
52 | char out[64]; | ||
53 | int count; | ||
54 | memset (&state, 0, sizeof (state)); | ||
55 | out[0] = 'x'; | ||
56 | count = wcrtomb (out, L'a', &state); | ||
57 | return !(count == 1 && out[0] == 'a'); | ||
58 | }]])], | ||
59 | [gl_cv_func_wcrtomb_works=yes], | ||
60 | [gl_cv_func_wcrtomb_works=no], | ||
61 | [case "$host_os" in | ||
62 | # Guess no on Android. | ||
63 | linux*-android*) gl_cv_func_wcrtomb_works="guessing no";; | ||
64 | # Guess yes otherwise. | ||
65 | *) gl_cv_func_wcrtomb_works="guessing yes";; | ||
66 | esac | ||
67 | ]) | ||
68 | ]) | ||
69 | case "$gl_cv_func_wcrtomb_works" in | ||
70 | *yes) ;; | ||
71 | *) AC_DEFINE([WCRTOMB_C_LOCALE_BUG], [1], | ||
72 | [Define if the wcrtomb function does not work in the C locale.]) | ||
73 | REPLACE_WCRTOMB=1 ;; | ||
74 | esac | ||
75 | fi | ||
76 | if test $REPLACE_WCRTOMB = 0; then | ||
45 | AC_CACHE_CHECK([whether wcrtomb return value is correct], | 77 | AC_CACHE_CHECK([whether wcrtomb return value is correct], |
46 | [gl_cv_func_wcrtomb_retval], | 78 | [gl_cv_func_wcrtomb_retval], |
47 | [ | 79 | [ |
@@ -49,10 +81,10 @@ AC_DEFUN([gl_FUNC_WCRTOMB], | |||
49 | dnl is present. | 81 | dnl is present. |
50 | changequote(,)dnl | 82 | changequote(,)dnl |
51 | case "$host_os" in | 83 | case "$host_os" in |
52 | # Guess no on AIX 4, OSF/1 and Solaris. | 84 | # Guess no on AIX 4, OSF/1, Solaris, native Windows. |
53 | aix4* | osf* | solaris*) gl_cv_func_wcrtomb_retval="guessing no" ;; | 85 | aix4* | osf* | solaris* | mingw*) gl_cv_func_wcrtomb_retval="guessing no" ;; |
54 | # Guess yes otherwise. | 86 | # Guess yes otherwise. |
55 | *) gl_cv_func_wcrtomb_retval="guessing yes" ;; | 87 | *) gl_cv_func_wcrtomb_retval="guessing yes" ;; |
56 | esac | 88 | esac |
57 | changequote([,])dnl | 89 | changequote([,])dnl |
58 | if test $LOCALE_FR != none || test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none || test $LOCALE_ZH_CN != none; then | 90 | if test $LOCALE_FR != none || test $LOCALE_FR_UTF8 != none || test $LOCALE_JA != none || test $LOCALE_ZH_CN != none; then |
@@ -60,14 +92,8 @@ changequote([,])dnl | |||
60 | [AC_LANG_SOURCE([[ | 92 | [AC_LANG_SOURCE([[ |
61 | #include <locale.h> | 93 | #include <locale.h> |
62 | #include <string.h> | 94 | #include <string.h> |
63 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | ||
64 | <wchar.h>. | ||
65 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | ||
66 | included before <wchar.h>. */ | ||
67 | #include <stddef.h> | ||
68 | #include <stdio.h> | ||
69 | #include <time.h> | ||
70 | #include <wchar.h> | 95 | #include <wchar.h> |
96 | #include <stdlib.h> | ||
71 | int main () | 97 | int main () |
72 | { | 98 | { |
73 | int result = 0; | 99 | int result = 0; |
@@ -80,6 +106,12 @@ int main () | |||
80 | { | 106 | { |
81 | if (wcrtomb (NULL, 0, NULL) != 1) | 107 | if (wcrtomb (NULL, 0, NULL) != 1) |
82 | result |= 2; | 108 | result |= 2; |
109 | { | ||
110 | wchar_t wc = (wchar_t) 0xBADFACE; | ||
111 | if (mbtowc (&wc, "\303\274", 2) == 2) | ||
112 | if (wcrtomb (NULL, wc, NULL) != 1) | ||
113 | result |= 2; | ||
114 | } | ||
83 | } | 115 | } |
84 | if (setlocale (LC_ALL, "$LOCALE_JA") != NULL) | 116 | if (setlocale (LC_ALL, "$LOCALE_JA") != NULL) |
85 | { | 117 | { |
@@ -100,7 +132,9 @@ int main () | |||
100 | ]) | 132 | ]) |
101 | case "$gl_cv_func_wcrtomb_retval" in | 133 | case "$gl_cv_func_wcrtomb_retval" in |
102 | *yes) ;; | 134 | *yes) ;; |
103 | *) REPLACE_WCRTOMB=1 ;; | 135 | *) AC_DEFINE([WCRTOMB_RETVAL_BUG], [1], |
136 | [Define if the wcrtomb function has an incorrect return value.]) | ||
137 | REPLACE_WCRTOMB=1 ;; | ||
104 | esac | 138 | esac |
105 | fi | 139 | fi |
106 | fi | 140 | fi |
diff --git a/gl/m4/wctype_h.m4 b/gl/m4/wctype_h.m4 index 82ada0ee..6856a735 100644 --- a/gl/m4/wctype_h.m4 +++ b/gl/m4/wctype_h.m4 | |||
@@ -1,15 +1,15 @@ | |||
1 | # wctype_h.m4 serial 18 | 1 | # wctype_h.m4 serial 30 |
2 | 2 | ||
3 | dnl A placeholder for ISO C99 <wctype.h>, for platforms that lack it. | 3 | dnl A placeholder for ISO C99 <wctype.h>, for platforms that lack it. |
4 | 4 | ||
5 | dnl Copyright (C) 2006-2013 Free Software Foundation, Inc. | 5 | dnl Copyright (C) 2006-2023 Free Software Foundation, Inc. |
6 | dnl This file is free software; the Free Software Foundation | 6 | dnl This file is free software; the Free Software Foundation |
7 | dnl gives unlimited permission to copy and/or distribute it, | 7 | dnl gives unlimited permission to copy and/or distribute it, |
8 | dnl with or without modifications, as long as this notice is preserved. | 8 | dnl with or without modifications, as long as this notice is preserved. |
9 | 9 | ||
10 | dnl Written by Paul Eggert. | 10 | dnl Written by Paul Eggert. |
11 | 11 | ||
12 | AC_DEFUN([gl_WCTYPE_H], | 12 | AC_DEFUN_ONCE([gl_WCTYPE_H], |
13 | [ | 13 | [ |
14 | AC_REQUIRE([gl_WCTYPE_H_DEFAULTS]) | 14 | AC_REQUIRE([gl_WCTYPE_H_DEFAULTS]) |
15 | AC_REQUIRE([AC_PROG_CC]) | 15 | AC_REQUIRE([AC_PROG_CC]) |
@@ -30,6 +30,8 @@ AC_DEFUN([gl_WCTYPE_H], | |||
30 | fi | 30 | fi |
31 | AC_SUBST([HAVE_WINT_T]) | 31 | AC_SUBST([HAVE_WINT_T]) |
32 | 32 | ||
33 | AC_REQUIRE([gl_TYPE_WINT_T_PREREQ]) | ||
34 | |||
33 | gl_CHECK_NEXT_HEADERS([wctype.h]) | 35 | gl_CHECK_NEXT_HEADERS([wctype.h]) |
34 | if test $ac_cv_header_wctype_h = yes; then | 36 | if test $ac_cv_header_wctype_h = yes; then |
35 | if test $ac_cv_func_iswcntrl = yes; then | 37 | if test $ac_cv_func_iswcntrl = yes; then |
@@ -39,22 +41,16 @@ AC_DEFUN([gl_WCTYPE_H], | |||
39 | [ | 41 | [ |
40 | AC_RUN_IFELSE( | 42 | AC_RUN_IFELSE( |
41 | [AC_LANG_SOURCE([[ | 43 | [AC_LANG_SOURCE([[ |
42 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be | ||
43 | included before <wchar.h>. | ||
44 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> | ||
45 | must be included before <wchar.h>. */ | ||
46 | #include <stddef.h> | ||
47 | #include <stdio.h> | ||
48 | #include <time.h> | ||
49 | #include <wchar.h> | 44 | #include <wchar.h> |
50 | #include <wctype.h> | 45 | #include <wctype.h> |
51 | int main () { return iswprint ('x') == 0; } | 46 | int main () { return iswprint ('x') == 0; } |
52 | ]])], | 47 | ]])], |
53 | [gl_cv_func_iswcntrl_works=yes], [gl_cv_func_iswcntrl_works=no], | 48 | [gl_cv_func_iswcntrl_works=yes], [gl_cv_func_iswcntrl_works=no], |
54 | [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h> | 49 | [dnl Guess no on Linux libc5, yes otherwise. |
50 | AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdlib.h> | ||
55 | #if __GNU_LIBRARY__ == 1 | 51 | #if __GNU_LIBRARY__ == 1 |
56 | Linux libc5 i18n is broken. | 52 | Linux libc5 i18n is broken. |
57 | #endif]], [])], | 53 | #endif]], [[]])], |
58 | [gl_cv_func_iswcntrl_works="guessing yes"], | 54 | [gl_cv_func_iswcntrl_works="guessing yes"], |
59 | [gl_cv_func_iswcntrl_works="guessing no"]) | 55 | [gl_cv_func_iswcntrl_works="guessing no"]) |
60 | ]) | 56 | ]) |
@@ -66,10 +62,14 @@ AC_DEFUN([gl_WCTYPE_H], | |||
66 | fi | 62 | fi |
67 | AC_SUBST([HAVE_WCTYPE_H]) | 63 | AC_SUBST([HAVE_WCTYPE_H]) |
68 | 64 | ||
69 | case "$gl_cv_func_iswcntrl_works" in | 65 | if test $GNULIBHEADERS_OVERRIDE_WINT_T = 1; then |
70 | *yes) REPLACE_ISWCNTRL=0 ;; | 66 | REPLACE_ISWCNTRL=1 |
71 | *) REPLACE_ISWCNTRL=1 ;; | 67 | else |
72 | esac | 68 | case "$gl_cv_func_iswcntrl_works" in |
69 | *yes) REPLACE_ISWCNTRL=0 ;; | ||
70 | *) REPLACE_ISWCNTRL=1 ;; | ||
71 | esac | ||
72 | fi | ||
73 | AC_SUBST([REPLACE_ISWCNTRL]) | 73 | AC_SUBST([REPLACE_ISWCNTRL]) |
74 | 74 | ||
75 | if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then | 75 | if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then |
@@ -85,14 +85,7 @@ AC_DEFUN([gl_WCTYPE_H], | |||
85 | REPLACE_TOWLOWER=0 | 85 | REPLACE_TOWLOWER=0 |
86 | else | 86 | else |
87 | AC_CHECK_DECLS([towlower],,, | 87 | AC_CHECK_DECLS([towlower],,, |
88 | [[/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be | 88 | [[#include <wchar.h> |
89 | included before <wchar.h>. | ||
90 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> | ||
91 | must be included before <wchar.h>. */ | ||
92 | #include <stddef.h> | ||
93 | #include <stdio.h> | ||
94 | #include <time.h> | ||
95 | #include <wchar.h> | ||
96 | #if HAVE_WCTYPE_H | 89 | #if HAVE_WCTYPE_H |
97 | # include <wctype.h> | 90 | # include <wctype.h> |
98 | #endif | 91 | #endif |
@@ -121,14 +114,7 @@ AC_DEFUN([gl_WCTYPE_H], | |||
121 | AC_CACHE_CHECK([for wctype_t], [gl_cv_type_wctype_t], | 114 | AC_CACHE_CHECK([for wctype_t], [gl_cv_type_wctype_t], |
122 | [AC_COMPILE_IFELSE( | 115 | [AC_COMPILE_IFELSE( |
123 | [AC_LANG_PROGRAM( | 116 | [AC_LANG_PROGRAM( |
124 | [[/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be | 117 | [[#include <wchar.h> |
125 | included before <wchar.h>. | ||
126 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> | ||
127 | must be included before <wchar.h>. */ | ||
128 | #include <stddef.h> | ||
129 | #include <stdio.h> | ||
130 | #include <time.h> | ||
131 | #include <wchar.h> | ||
132 | #if HAVE_WCTYPE_H | 118 | #if HAVE_WCTYPE_H |
133 | # include <wctype.h> | 119 | # include <wctype.h> |
134 | #endif | 120 | #endif |
@@ -147,14 +133,7 @@ AC_DEFUN([gl_WCTYPE_H], | |||
147 | AC_CACHE_CHECK([for wctrans_t], [gl_cv_type_wctrans_t], | 133 | AC_CACHE_CHECK([for wctrans_t], [gl_cv_type_wctrans_t], |
148 | [AC_COMPILE_IFELSE( | 134 | [AC_COMPILE_IFELSE( |
149 | [AC_LANG_PROGRAM( | 135 | [AC_LANG_PROGRAM( |
150 | [[/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be | 136 | [[#include <wchar.h> |
151 | included before <wchar.h>. | ||
152 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> | ||
153 | must be included before <wchar.h>. */ | ||
154 | #include <stddef.h> | ||
155 | #include <stdio.h> | ||
156 | #include <time.h> | ||
157 | #include <wchar.h> | ||
158 | #include <wctype.h> | 137 | #include <wctype.h> |
159 | wctrans_t a; | 138 | wctrans_t a; |
160 | ]], | 139 | ]], |
@@ -169,14 +148,7 @@ AC_DEFUN([gl_WCTYPE_H], | |||
169 | dnl Check for declarations of anything we want to poison if the | 148 | dnl Check for declarations of anything we want to poison if the |
170 | dnl corresponding gnulib module is not in use. | 149 | dnl corresponding gnulib module is not in use. |
171 | gl_WARN_ON_USE_PREPARE([[ | 150 | gl_WARN_ON_USE_PREPARE([[ |
172 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | ||
173 | <wchar.h>. | ||
174 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be | ||
175 | included before <wchar.h>. */ | ||
176 | #if !(defined __GLIBC__ && !defined __UCLIBC__) | 151 | #if !(defined __GLIBC__ && !defined __UCLIBC__) |
177 | # include <stddef.h> | ||
178 | # include <stdio.h> | ||
179 | # include <time.h> | ||
180 | # include <wchar.h> | 152 | # include <wchar.h> |
181 | #endif | 153 | #endif |
182 | #include <wctype.h> | 154 | #include <wctype.h> |
@@ -185,25 +157,44 @@ AC_DEFUN([gl_WCTYPE_H], | |||
185 | ]) | 157 | ]) |
186 | ]) | 158 | ]) |
187 | 159 | ||
160 | # gl_WCTYPE_MODULE_INDICATOR([modulename]) | ||
161 | # sets the shell variable that indicates the presence of the given module | ||
162 | # to a C preprocessor expression that will evaluate to 1. | ||
163 | # This macro invocation must not occur in macros that are AC_REQUIREd. | ||
188 | AC_DEFUN([gl_WCTYPE_MODULE_INDICATOR], | 164 | AC_DEFUN([gl_WCTYPE_MODULE_INDICATOR], |
189 | [ | 165 | [ |
190 | dnl Use AC_REQUIRE here, so that the default settings are expanded once only. | 166 | dnl Ensure to expand the default settings once only. |
191 | AC_REQUIRE([gl_WCTYPE_H_DEFAULTS]) | 167 | gl_WCTYPE_H_REQUIRE_DEFAULTS |
192 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) | 168 | gl_MODULE_INDICATOR_SET_VARIABLE([$1]) |
193 | dnl Define it also as a C macro, for the benefit of the unit tests. | 169 | dnl Define it also as a C macro, for the benefit of the unit tests. |
194 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) | 170 | gl_MODULE_INDICATOR_FOR_TESTS([$1]) |
195 | ]) | 171 | ]) |
196 | 172 | ||
173 | # Initializes the default values for AC_SUBSTed shell variables. | ||
174 | # This macro must not be AC_REQUIREd. It must only be invoked, and only | ||
175 | # outside of macros or in macros that are not AC_REQUIREd. | ||
176 | AC_DEFUN([gl_WCTYPE_H_REQUIRE_DEFAULTS], | ||
177 | [ | ||
178 | m4_defun(GL_MODULE_INDICATOR_PREFIX[_WCTYPE_H_MODULE_INDICATOR_DEFAULTS], [ | ||
179 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWBLANK]) | ||
180 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWDIGIT]) | ||
181 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWXDIGIT]) | ||
182 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTYPE]) | ||
183 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISWCTYPE]) | ||
184 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTRANS]) | ||
185 | gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TOWCTRANS]) | ||
186 | ]) | ||
187 | m4_require(GL_MODULE_INDICATOR_PREFIX[_WCTYPE_H_MODULE_INDICATOR_DEFAULTS]) | ||
188 | AC_REQUIRE([gl_WCTYPE_H_DEFAULTS]) | ||
189 | ]) | ||
190 | |||
197 | AC_DEFUN([gl_WCTYPE_H_DEFAULTS], | 191 | AC_DEFUN([gl_WCTYPE_H_DEFAULTS], |
198 | [ | 192 | [ |
199 | GNULIB_ISWBLANK=0; AC_SUBST([GNULIB_ISWBLANK]) | ||
200 | GNULIB_WCTYPE=0; AC_SUBST([GNULIB_WCTYPE]) | ||
201 | GNULIB_ISWCTYPE=0; AC_SUBST([GNULIB_ISWCTYPE]) | ||
202 | GNULIB_WCTRANS=0; AC_SUBST([GNULIB_WCTRANS]) | ||
203 | GNULIB_TOWCTRANS=0; AC_SUBST([GNULIB_TOWCTRANS]) | ||
204 | dnl Assume proper GNU behavior unless another module says otherwise. | 193 | dnl Assume proper GNU behavior unless another module says otherwise. |
205 | HAVE_ISWBLANK=1; AC_SUBST([HAVE_ISWBLANK]) | 194 | HAVE_ISWBLANK=1; AC_SUBST([HAVE_ISWBLANK]) |
206 | HAVE_WCTYPE_T=1; AC_SUBST([HAVE_WCTYPE_T]) | 195 | HAVE_WCTYPE_T=1; AC_SUBST([HAVE_WCTYPE_T]) |
207 | HAVE_WCTRANS_T=1; AC_SUBST([HAVE_WCTRANS_T]) | 196 | HAVE_WCTRANS_T=1; AC_SUBST([HAVE_WCTRANS_T]) |
208 | REPLACE_ISWBLANK=0; AC_SUBST([REPLACE_ISWBLANK]) | 197 | REPLACE_ISWBLANK=0; AC_SUBST([REPLACE_ISWBLANK]) |
198 | REPLACE_ISWDIGIT=0; AC_SUBST([REPLACE_ISWDIGIT]) | ||
199 | REPLACE_ISWXDIGIT=0; AC_SUBST([REPLACE_ISWXDIGIT]) | ||
209 | ]) | 200 | ]) |
diff --git a/gl/m4/wint_t.m4 b/gl/m4/wint_t.m4 index d7cd3db9..dfd743b3 100644 --- a/gl/m4/wint_t.m4 +++ b/gl/m4/wint_t.m4 | |||
@@ -1,11 +1,12 @@ | |||
1 | # wint_t.m4 serial 5 (gettext-0.18.2) | 1 | # wint_t.m4 serial 11 |
2 | dnl Copyright (C) 2003, 2007-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2003, 2007-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | dnl From Bruno Haible. | 7 | dnl From Bruno Haible. |
8 | dnl Test whether <wchar.h> has the 'wint_t' type. | 8 | dnl Test whether <wchar.h> has the 'wint_t' type and whether gnulib's |
9 | dnl <wchar.h> or <wctype.h> would, if present, override 'wint_t'. | ||
9 | dnl Prerequisite: AC_PROG_CC | 10 | dnl Prerequisite: AC_PROG_CC |
10 | 11 | ||
11 | AC_DEFUN([gt_TYPE_WINT_T], | 12 | AC_DEFUN([gt_TYPE_WINT_T], |
@@ -13,20 +14,44 @@ AC_DEFUN([gt_TYPE_WINT_T], | |||
13 | AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t], | 14 | AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t], |
14 | [AC_COMPILE_IFELSE( | 15 | [AC_COMPILE_IFELSE( |
15 | [AC_LANG_PROGRAM( | 16 | [AC_LANG_PROGRAM( |
16 | [[ | 17 | [[#include <wchar.h> |
17 | /* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before | ||
18 | <wchar.h>. | ||
19 | BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included | ||
20 | before <wchar.h>. */ | ||
21 | #include <stddef.h> | ||
22 | #include <stdio.h> | ||
23 | #include <time.h> | ||
24 | #include <wchar.h> | ||
25 | wint_t foo = (wchar_t)'\0';]], | 18 | wint_t foo = (wchar_t)'\0';]], |
26 | [[]])], | 19 | [[]])], |
27 | [gt_cv_c_wint_t=yes], | 20 | [gt_cv_c_wint_t=yes], |
28 | [gt_cv_c_wint_t=no])]) | 21 | [gt_cv_c_wint_t=no])]) |
29 | if test $gt_cv_c_wint_t = yes; then | 22 | if test $gt_cv_c_wint_t = yes; then |
30 | AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.]) | 23 | AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.]) |
24 | |||
25 | dnl Determine whether gnulib's <wchar.h> or <wctype.h> would, if present, | ||
26 | dnl override 'wint_t'. | ||
27 | AC_CACHE_CHECK([whether wint_t is large enough], | ||
28 | [gl_cv_type_wint_t_large_enough], | ||
29 | [AC_COMPILE_IFELSE( | ||
30 | [AC_LANG_PROGRAM( | ||
31 | [[#include <wchar.h> | ||
32 | int verify[sizeof (wint_t) < sizeof (int) ? -1 : 1]; | ||
33 | ]])], | ||
34 | [gl_cv_type_wint_t_large_enough=yes], | ||
35 | [gl_cv_type_wint_t_large_enough=no])]) | ||
36 | if test $gl_cv_type_wint_t_large_enough = no; then | ||
37 | GNULIBHEADERS_OVERRIDE_WINT_T=1 | ||
38 | else | ||
39 | GNULIBHEADERS_OVERRIDE_WINT_T=0 | ||
40 | fi | ||
41 | else | ||
42 | GNULIBHEADERS_OVERRIDE_WINT_T=0 | ||
43 | fi | ||
44 | AC_SUBST([GNULIBHEADERS_OVERRIDE_WINT_T]) | ||
45 | ]) | ||
46 | |||
47 | dnl Prerequisites of the 'wint_t' override. | ||
48 | AC_DEFUN([gl_TYPE_WINT_T_PREREQ], | ||
49 | [ | ||
50 | AC_CHECK_HEADERS_ONCE([crtdefs.h]) | ||
51 | if test $ac_cv_header_crtdefs_h = yes; then | ||
52 | HAVE_CRTDEFS_H=1 | ||
53 | else | ||
54 | HAVE_CRTDEFS_H=0 | ||
31 | fi | 55 | fi |
56 | AC_SUBST([HAVE_CRTDEFS_H]) | ||
32 | ]) | 57 | ]) |
diff --git a/gl/m4/xalloc.m4 b/gl/m4/xalloc.m4 index 64ca7014..fc56f59a 100644 --- a/gl/m4/xalloc.m4 +++ b/gl/m4/xalloc.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # xalloc.m4 serial 18 | 1 | # xalloc.m4 serial 18 |
2 | dnl Copyright (C) 2002-2006, 2009-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2002-2006, 2009-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
diff --git a/gl/m4/xsize.m4 b/gl/m4/xsize.m4 index 8ea9f2cd..649db9c5 100644 --- a/gl/m4/xsize.m4 +++ b/gl/m4/xsize.m4 | |||
@@ -1,5 +1,5 @@ | |||
1 | # xsize.m4 serial 5 | 1 | # xsize.m4 serial 5 |
2 | dnl Copyright (C) 2003-2004, 2008-2013 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2003-2004, 2008-2023 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
diff --git a/gl/m4/xstrndup.m4 b/gl/m4/xstrndup.m4 deleted file mode 100644 index 4a9330bb..00000000 --- a/gl/m4/xstrndup.m4 +++ /dev/null | |||
@@ -1,15 +0,0 @@ | |||
1 | # xstrndup.m4 serial 2 | ||
2 | dnl Copyright (C) 2003, 2009-2013 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | AC_DEFUN([gl_XSTRNDUP], | ||
8 | [ | ||
9 | gl_PREREQ_XSTRNDUP | ||
10 | ]) | ||
11 | |||
12 | # Prerequisites of lib/xstrndup.c. | ||
13 | AC_DEFUN([gl_PREREQ_XSTRNDUP], [ | ||
14 | : | ||
15 | ]) | ||
diff --git a/gl/m4/zzgnulib.m4 b/gl/m4/zzgnulib.m4 new file mode 100644 index 00000000..362102b6 --- /dev/null +++ b/gl/m4/zzgnulib.m4 | |||
@@ -0,0 +1,23 @@ | |||
1 | # zzgnulib.m4 serial 1 | ||
2 | dnl Copyright (C) 2020-2023 Free Software Foundation, Inc. | ||
3 | dnl This file is free software; the Free Software Foundation | ||
4 | dnl gives unlimited permission to copy and/or distribute it, | ||
5 | dnl with or without modifications, as long as this notice is preserved. | ||
6 | |||
7 | dnl This file must be named something that sorts after all other | ||
8 | dnl package- or gnulib-provided .m4 files - at least for those packages | ||
9 | dnl that redefine AC_PROG_CC. | ||
10 | |||
11 | dnl Redefine AC_PROG_CC so that it ends with invocations of gl_COMPILER_CLANG | ||
12 | dnl and gl_COMPILER_PREPARE_CHECK_DECL. | ||
13 | m4_define([AC_PROG_CC], | ||
14 | m4_defn([AC_PROG_CC])[ | ||
15 | gl_COMPILER_CLANG | ||
16 | gl_COMPILER_PREPARE_CHECK_DECL | ||
17 | ]) | ||
18 | |||
19 | # gl_ZZGNULIB | ||
20 | # ----------- | ||
21 | # Witness macro that this file has been included. Needed to force | ||
22 | # Automake to include this file after all other gnulib .m4 files. | ||
23 | AC_DEFUN([gl_ZZGNULIB]) | ||