Clang and GCC originally interpreted the spec differently when
implementing _Generic. Some of the gnulib code doesn't work with the
old clang implementation.

https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2396.htm#dr_481

--- gettext-tools/libgettextpo/string-desc.h.orig	2026-01-13 21:57:46
+++ gettext-tools/libgettextpo/string-desc.h	2026-03-07 20:01:18
@@ -54,7 +54,10 @@
      int f (int x) { return _Generic (x, char *: 2, int: 3); }
  */
 #if (defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 && !defined __cplusplus) /* C mode */ \
-    || (defined __clang__ && __clang_major__ >= 3) /* both C and C++ mode */ \
+    || (defined __clang__ && ((!defined __apple_build_version__ && (__clang_major__ > 3 \
+            || (__clang_major__ == 3 && __clang_minor__ >= 8))) \
+        || (defined __apple_build_version__ && (__clang_major__ > 7 \
+            || (__clang_major__ == 7 && __clang_minor__ >= 3))))) /* both C and C++ mode */ \
     || (defined __SUNPRO_C && __SUNPRO_C >= 0x5150) /* C mode */ \
     || (__STDC_VERSION__ >= 201112L && !defined __GNUC__) /* C mode */
 # define HAVE__GENERIC 1
--- gettext-tools/gnulib-lib/string-desc.h.orig	2026-01-13 21:57:46
+++ gettext-tools/gnulib-lib/string-desc.h	2026-03-07 20:01:18
@@ -54,7 +54,10 @@
      int f (int x) { return _Generic (x, char *: 2, int: 3); }
  */
 #if (defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 && !defined __cplusplus) /* C mode */ \
-    || (defined __clang__ && __clang_major__ >= 3) /* both C and C++ mode */ \
+    || (defined __clang__ && ((!defined __apple_build_version__ && (__clang_major__ > 3 \
+            || (__clang_major__ == 3 && __clang_minor__ >= 8))) \
+        || (defined __apple_build_version__ && (__clang_major__ > 7 \
+            || (__clang_major__ == 7 && __clang_minor__ >= 3))))) /* both C and C++ mode */ \
     || (defined __SUNPRO_C && __SUNPRO_C >= 0x5150) /* C mode */ \
     || (__STDC_VERSION__ >= 201112L && !defined __GNUC__) /* C mode */
 # define HAVE__GENERIC 1
--- gettext-runtime/gnulib-lib/string-desc.h.orig	2026-01-13 21:57:46
+++ gettext-runtime/gnulib-lib/string-desc.h	2026-03-07 20:01:18
@@ -54,7 +54,10 @@
      int f (int x) { return _Generic (x, char *: 2, int: 3); }
  */
 #if (defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 9) > 4 && !defined __cplusplus) /* C mode */ \
-    || (defined __clang__ && __clang_major__ >= 3) /* both C and C++ mode */ \
+    || (defined __clang__ && ((!defined __apple_build_version__ && (__clang_major__ > 3 \
+            || (__clang_major__ == 3 && __clang_minor__ >= 8))) \
+        || (defined __apple_build_version__ && (__clang_major__ > 7 \
+            || (__clang_major__ == 7 && __clang_minor__ >= 3))))) /* both C and C++ mode */ \
     || (defined __SUNPRO_C && __SUNPRO_C >= 0x5150) /* C mode */ \
     || (__STDC_VERSION__ >= 201112L && !defined __GNUC__) /* C mode */
 # define HAVE__GENERIC 1
