Could someone please clarify where Darwin should go here? Current macros
just ignore its existence, but it also uses IBM long double, like AIX.
In relation to:
https://github.com/coreutils/gnulib/commit/1ce8849f3a5bd1063fb8dcc161c14a36310a549d
Please notice that while the default OS compiler is gcc-4.2, gcc15 can be
and is used as well (so C23 is supported, but not necessarily by a chosen
compiler).
This has to be addressed, since gettext uses gnulib, and due to this issue
gettext 0.26 fails to build with undefined _gl_LDBL_MAX
P. S. FWIW, the following patch fixes the build, but I am not sure it is
the right thing to do here:
--- gettext-runtime/gnulib-lib/float.in.h 2025-07-09 14:16:38.000000000
+0800
+++ gettext-runtime/gnulib-lib/float.in.h 2025-10-25 08:13:48.000000000
+0800
@@ -115,7 +115,7 @@
/* On PowerPC with gcc 15 when using __ibm128 long double, the value of
LDBL_MIN_EXP, LDBL_MIN, LDBL_MAX, and LDBL_NORM_MAX are wrong. */
-#if ((defined _ARCH_PPC || defined _POWER) && LDBL_MANT_DIG == 106 \
+#if ((defined _ARCH_PPC || defined _POWER || defined __POWERPC__) &&
LDBL_MANT_DIG == 106 \
&& defined __GNUC__)
# undef LDBL_MIN_EXP
# define LDBL_MIN_EXP DBL_MIN_EXP
@@ -187,7 +187,7 @@
numbers with mantissas of the form 1.<52 bits><many zeroes><52 bits> are
called "unnormalized". And since LDBL_EPSILON must be normalized (per
ISO C 23 ยง 5.2.5.3.3.(33)), it must be 2^-105. */
-#if defined __powerpc__ && LDBL_MANT_DIG == 106
+#if (defined __powerpc__ || defined __POWERPC__) && LDBL_MANT_DIG == 106
# undef LDBL_EPSILON
# define LDBL_EPSILON 2.46519032881566189191165176650870696773e-32L
/* 2^-105 */
#endif
--- gettext-runtime/gnulib-lib/float.c 2025-07-09 14:16:38.000000000 +0800
+++ gettext-runtime/gnulib-lib/float.c 2025-10-25 08:15:07.000000000 +0800
@@ -21,7 +21,7 @@
#include <float.h>
#if GNULIB_defined_long_double_union
-# if (defined _ARCH_PPC || defined _POWER) && (defined _AIX ||
defined __linux__) && (LDBL_MANT_DIG == 106) && defined __GNUC__
+# if (defined _ARCH_PPC || defined _POWER || defined __POWERPC__) &&
(defined _AIX || defined __linux__ || defined __APPLE__) &&
(LDBL_MANT_DIG == 106) && defined __GNUC__
const union gl_long_double_union gl_LDBL_MAX =
{ { DBL_MAX, DBL_MAX / 0x1p53 } };
# elif defined __i386__