Fix libbsd's cdefs.h to be compatible with gcc 4.8.x (#4979)

* Fix cdefs macro to be compatible with gcc 4.8.x

See the discussion in #4945 (after the merge) for additional
background.

libbsd builds with gcc@5.4.0 on CentOS 7, but not with the system's
gcc@4.8.5.  Others have reported problems with gcc@4.8.3 on Fedora 19.

The problem boils down to the lack of support for the clang extension
`__has_include_next`.  The immediate symptom seems to be the
pre-processor using defining macro like this

```
```

then then tripping over an expansion of it like this:

```
blah.h:13:23: error: missing binary operator before token "("
```

This patch changes the macro definition to:

```
```

which swallows the arguments with which the macro is invoked.

The end result is that libbsd builds for me on CentOS 7 using the
system compiler.

* Apply this patch for any compiler version before 5

This includes subversions of 4, like 4.8.5.
This commit is contained in:
George Hartzell 2017-08-05 11:33:24 -07:00 committed by Adam J. Stewart
parent 9f6c9d8afa
commit ab0ea3cec4
2 changed files with 17 additions and 0 deletions

View File

@ -0,0 +1,15 @@
--- a/nclude/bsd/sys/cdefs.h.orig 2017-08-04 16:34:56.404995800 -0700
+++ b/include/bsd/sys/cdefs.h 2017-08-04 16:35:19.345043883 -0700
@@ -25,10 +25,10 @@
*/
#ifndef __has_include
-#define __has_include 1
+#define __has_include(X) 1
#endif
#ifndef __has_include_next
-#define __has_include_next 1
+#define __has_include_next(X) 1
#endif
#ifdef LIBBSD_OVERLAY

View File

@ -36,3 +36,5 @@ class Libbsd(AutotoolsPackage):
url = "https://libbsd.freedesktop.org/releases/libbsd-0.8.6.tar.xz" url = "https://libbsd.freedesktop.org/releases/libbsd-0.8.6.tar.xz"
version('0.8.6', '4ab7bec639af17d0aacb50222b479110') version('0.8.6', '4ab7bec639af17d0aacb50222b479110')
patch('cdefs.h.patch', when='%gcc@:4')