Commit db7470b048a14bdc69a34fbd192ec626e1786411

Guillem Jover 2017-01-10T04:27:25

Gracefully handle lack of system <sys/cdefs.h> This is the case on musl. Fixes: https://bugs.debian.org/810589

diff --git a/include/bsd/sys/cdefs.h b/include/bsd/sys/cdefs.h
index 75d3955..044f221 100644
--- a/include/bsd/sys/cdefs.h
+++ b/include/bsd/sys/cdefs.h
@@ -24,15 +24,40 @@
  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+#ifndef __has_include
+#define __has_include 1
+#endif
+#ifndef __has_include_next
+#define __has_include_next 1
+#endif
+
 #ifdef LIBBSD_OVERLAY
+/*
+ * Some libc implementations do not have a <sys/cdefs.h>, in particular
+ * musl, try to handle this gracefully.
+ */
+#if __has_include_next(<sys/cdefs.h>)
 #include_next <sys/cdefs.h>
+#endif
 #else
+#if __has_include(<sys/cdefs.h>)
 #include <sys/cdefs.h>
 #endif
+#endif
 
 #ifndef LIBBSD_SYS_CDEFS_H
 #define LIBBSD_SYS_CDEFS_H
 
+#ifndef __BEGIN_DECLS
+#ifdef __cplusplus
+#define __BEGIN_DECLS	extern "C" {
+#define __END_DECLS	}
+#else
+#define __BEGIN_DECLS
+#define __END_DECLS
+#endif
+#endif
+
 /*
  * Some kFreeBSD headers expect those macros to be set for sanity checks.
  */