generic-poky/meta/recipes-kernel/kmod/kmod/0001-Fix-build-with-older-g...

45 lines
1.3 KiB
Diff

Upstream-Status: Inappropriate [kmod is new]
From 30e1839a46b0b9449f272765193a0da61bf85997 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 26 Aug 2013 15:32:36 -0700
Subject: [PATCH] Fix build with older gcc < 4.6
Static_assert is new feature in C11 standards and older than gcc 4.6
does not support it. So define it to make the old gcc happy
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
libkmod/macro.h | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/libkmod/macro.h b/libkmod/macro.h
index c6ba855..5032f54 100644
--- a/libkmod/macro.h
+++ b/libkmod/macro.h
@@ -20,9 +20,19 @@
#pragma once
#include <stddef.h>
-
-#define assert_cc(expr) \
+#if defined(__GNUC__)
+/* Determine which version of GNU C we're using */
+#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
+#endif
+#if (GCC_VERSION >= 40600)
+# define assert_cc(expr) \
_Static_assert((expr), #expr)
+#else
+# define STATIC_ASSERT_GLUE1(x, y) x##y
+# define STATIC_ASSERT_GLUE(x, y) STATIC_ASSERT_GLUE1(x, y)
+# define assert_cc(expr) \
+extern void STATIC_ASSERT_GLUE(static_assert, __LINE__)(int arg[(expr) ? 1 : -1]) __attribute__((unused))
+#endif
#if HAVE_TYPEOF
#define check_types_match(expr1, expr2) \
--
1.8.3.4