> diff --git a/lib/getopt-cdefs.in.h b/lib/getopt-cdefs.in.h > index a1d304d49e..95f06045f5 100644 > --- a/lib/getopt-cdefs.in.h > +++ b/lib/getopt-cdefs.in.h > @@ -47,7 +47,7 @@ > #endif > > #ifndef __GNUC_PREREQ > -# if defined __GNUC__ && defined __GNUC_VERSION__ > +# if defined __GNUC__ && defined __GNUC_MINOR__ > # define __GNUC_PREREQ(maj, min) \ > ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) > # else >
What this patch did not fix, is: - Misindentation. - It does not work with masquerading clang, cf. <https://lists.gnu.org/archive/html/bug-gnulib/2024-08/msg00157.html> I'm therefore committing this: 2024-09-21 Bruno Haible <br...@clisp.org> getopt-posix, crypto/md5-buffer: Fix __GNUC_PREREQ re clang. * lib/getopt-cdefs.in.h (__GNUC_PREREQ): Copy definition from lib/libc-config.h. * lib/md5.h (__GNUC_PREREQ): Likewise. diff --git a/lib/getopt-cdefs.in.h b/lib/getopt-cdefs.in.h index 95f06045f5..9d704a9f6e 100644 --- a/lib/getopt-cdefs.in.h +++ b/lib/getopt-cdefs.in.h @@ -46,10 +46,14 @@ # endif #endif +#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) \ - ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) +# define __GNUC_PREREQ(maj, min) ((maj) < __GNUC__ + ((min) <= __GNUC_MINOR__)) # else # define __GNUC_PREREQ(maj, min) 0 # endif diff --git a/lib/md5.h b/lib/md5.h index 2f470703f5..94cc6994cc 100644 --- a/lib/md5.h +++ b/lib/md5.h @@ -52,10 +52,14 @@ #define MD5_DIGEST_SIZE 16 #define MD5_BLOCK_SIZE 64 +#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) \ - ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) +# define __GNUC_PREREQ(maj, min) ((maj) < __GNUC__ + ((min) <= __GNUC_MINOR__)) # else # define __GNUC_PREREQ(maj, min) 0 # endif