From 7986a219dcb6a003eb44aa4d6acffbef23a539cd Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sat, 10 Sep 2022 18:56:14 +0200 Subject: 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. --- ChangeLog | 7 +++++++ doc/posix-headers/uchar.texi | 3 +++ lib/uchar.in.h | 8 ++++++++ 3 files changed, 18 insertions(+) diff --git a/ChangeLog b/ChangeLog index cb60228ec3..8b8f32ad17 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2022-09-10 Bruno Haible + + 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 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 -- cgit v1.2.1