When compiling a Gnulib testdir with clang15 with -std=gnu2x option,
I see this compilation error:
../../gltests/test-limits-h.c:113:22: error: use of undeclared identifier
'BOOL_MAX'
int bool_attrs[] = { BOOL_MAX, BOOL_WIDTH };
^
../../gltests/test-limits-h.c:114:16: error: use of undeclared identifier
'BOOL_MAX'
static_assert (BOOL_MAX == (((1U << (BOOL_WIDTH - 1)) - 1) * 2) + 1);
^
2 errors generated.
make[4]: *** [Makefile:23558: test-limits-h.o] Error 1
The reason is that clang's <limits.h> defines BOOL_WIDTH but not BOOL_MAX.
This patch provides a workaround.
2023-02-09 Bruno Haible <[email protected]>
limits-h: Work around a clang 15 bug.
* m4/limits-h.m4 (gl_LIMITS_H): Test also for BOOL_MAX.
* doc/posix-headers/limits.texi: Mention the clang bug.
diff --git a/doc/posix-headers/limits.texi b/doc/posix-headers/limits.texi
index 22dc4239f7..09440cac8d 100644
--- a/doc/posix-headers/limits.texi
+++ b/doc/posix-headers/limits.texi
@@ -21,6 +21,9 @@ glibc 2.24, NetBSD 9.0, many others.
The macros @code{BOOL_MAX} and @code{BOOL_WIDTH} are not defined on
some platforms:
glibc 2.32, many others.
+@item
+The macro @code{BOOL_MAX} is not defined with some compilers:
+clang 15.0.6.
@end itemize
Portability problems fixed by Gnulib module @code{gethostname}:
diff --git a/m4/limits-h.m4 b/m4/limits-h.m4
index 5088fa16fd..4f8ce41098 100644
--- a/m4/limits-h.m4
+++ b/m4/limits-h.m4
@@ -23,6 +23,7 @@ AC_DEFUN_ONCE([gl_LIMITS_H],
int wb = WORD_BIT;
int ullw = ULLONG_WIDTH;
int bw = BOOL_WIDTH;
+ int bm = BOOL_MAX;
]])],
[gl_cv_header_limits_width=yes],
[gl_cv_header_limits_width=no])])