From: Bruno Haible Date: Sat, 10 Sep 2022 16:56:14 +0000 (+0200) Subject: uchar: Work around error in C++ mode on AIX 7.2 with xlclang. X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=2a9cec2949df93e9c8384408b626e12b24e43b1c;p=gnulib.git 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. --- diff --git a/ChangeLog b/ChangeLog index d13cd554e7..7646452295 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 Bruno Haible string: Fix compilation error in C++ mode on AIX 7.2 with xlclang. 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