Collin Funk <collin.fu...@gmail.com> writes:

> This patch broke Coreutils on some systems due to not defining
> __GNU_PREREQ [1].

Forgot to attach the pushed patch

Collin

>From a92aa179978a136fa9cc9023d02b5529b19a2210 Mon Sep 17 00:00:00 2001
From: Collin Funk <collin.fu...@gmail.com>
Date: Sun, 11 May 2025 09:41:48 -0700
Subject: [PATCH] fts: Make sure __GNU_PREREQ is defined (regression
 yesterday).

Reported by <nroycea+...@gmail.com> in
<https://debbugs.gnu.org/cgi/bugreport.cgi?bug=78376>.

* lib/fts_.h (__GNUC_PREREQ): Define macro on clang or if the system
does not define it.
---
 ChangeLog  |  8 ++++++++
 lib/fts_.h | 12 ++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index 2db4885fb0..2ddb9c3ba9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2025-05-11  Collin Funk  <collin.fu...@gmail.com>
+
+	fts: Make sure __GNU_PREREQ is defined (regression yesterday).
+	Reported by <nroycea+...@gmail.com> in
+	<https://debbugs.gnu.org/cgi/bugreport.cgi?bug=78376>.
+	* lib/fts_.h (__GNUC_PREREQ): Define macro on clang or if the system
+	does not define it.
+
 2025-05-10  Bruno Haible  <br...@clisp.org>
 
 	string-desc: Fixes for string literals and older GCC versions.
diff --git a/lib/fts_.h b/lib/fts_.h
index 052858da7b..aa5b88f19c 100644
--- a/lib/fts_.h
+++ b/lib/fts_.h
@@ -66,6 +66,18 @@
 #   include <sys/cdefs.h>
 #  endif
 #  define __FLEXIBLE_ARRAY_MEMBER FLEXIBLE_ARRAY_MEMBER
+#  if defined __clang__
+  /* clang really only groks GNU C 4.2, regardless of its value of __GNUC__.  */
+#   undef __GNUC_PREREQ
+#   define __GNUC_PREREQ(maj, min) ((maj) < 4 + ((min) <= 2))
+#  endif
+#  ifndef __GNUC_PREREQ
+#   if defined __GNUC__ && defined __GNUC_MINOR__
+#    define __GNUC_PREREQ(maj, min) ((maj) < __GNUC__ + ((min) <= __GNUC_MINOR__))
+#   else
+#    define __GNUC_PREREQ(maj, min) 0
+#   endif
+#  endif
 #  ifndef __THROW
 #   if defined __cplusplus && (__GNUC_PREREQ (2,8) || __clang_major__ >= 4)
 #    if __cplusplus >= 201103L
-- 
2.49.0

Reply via email to