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__

Reply via email to