diff options
author | Bruno Haible <bruno@clisp.org> | 2022-09-10 18:56:14 +0200 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2022-09-10 19:02:29 +0200 |
commit | 7986a219dcb6a003eb44aa4d6acffbef23a539cd (patch) | |
tree | 5e8ba3db658d99ad9a8039cc6351594f0a0d8ade | |
parent | 2f858e5e4392f6e0dc60ab92670a25eaa9212135 (diff) | |
download | gnulib-7986a219dcb6a003eb44aa4d6acffbef23a539cd.tar.gz |
uchar: Work around error in C++ mode on AIX 7.2 with xlclang.
* lib/uchar.in.h (char16_t, char32_t): On AIX with xlclang++, define
these as macros.
* doc/posix-headers/uchar.texi: Document the AIX + xlclang++ bug.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | doc/posix-headers/uchar.texi | 3 | ||||
-rw-r--r-- | lib/uchar.in.h | 8 |
3 files changed, 18 insertions, 0 deletions
@@ -1,3 +1,10 @@ +2022-09-10 Bruno Haible <bruno@clisp.org> + + uchar: Work around error in C++ mode on AIX 7.2 with xlclang. + * lib/uchar.in.h (char16_t, char32_t): On AIX with xlclang++, define + these as macros. + * doc/posix-headers/uchar.texi: Document the AIX + xlclang++ bug. + 2022-09-10 Paul Eggert <eggert@cs.ucla.edu> Rely on new stdbool behavior diff --git a/doc/posix-headers/uchar.texi b/doc/posix-headers/uchar.texi index ce5ecaf6a8..945ce665fd 100644 --- a/doc/posix-headers/uchar.texi +++ b/doc/posix-headers/uchar.texi @@ -12,6 +12,9 @@ Portability problems fixed by Gnulib: @item This header file is missing on many non-glibc platforms: glibc 2.15, macOS 11.1, FreeBSD 6.4, NetBSD 9.0, OpenBSD 6.7, Minix 3.1.8, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.3, Cygwin, mingw, MSVC 9. +@item +This file produces compilation errors in C++ mode on some platforms: +AIX 7.2 with xlclang++. @end itemize Portability problems not fixed by Gnulib: diff --git a/lib/uchar.in.h b/lib/uchar.in.h index e6a5cddf86..15fd7bc1eb 100644 --- a/lib/uchar.in.h +++ b/lib/uchar.in.h @@ -28,6 +28,14 @@ @PRAGMA_COLUMNS@ #if @HAVE_UCHAR_H@ +/* On AIX 7.2 with xlclang++, /usr/include/uchar.h produces compilation errors + because it contains typedef definitions of char16_t and char32_t, however + char16_t and char32_t are keywords in this situation. To work around it, + define char16_t and char32_t as macros. */ +# if defined __cplusplus && defined _AIX && defined __ibmxl__ && defined __clang__ +# define char16_t gl_char16_t +# define char32_t gl_char32_t +# endif # @INCLUDE_NEXT@ @NEXT_UCHAR_H@ #endif |