Unfortunately it is not possible in C to check for the existence of an enum
value at compile-time. Implement an alternative "kernel version check"-based
approach to workaround MTD_FILE_MODE_RAW related build problems with kernel
versions prior to 3.2.0

The same approach is already used elsewhere in busybox,
e.g. in ecce3a1999f3c5ded4baebbc0b17c48d80fe2781

Signed-off-by: Eugene Rudoy <[email protected]>
---
 miscutils/nandwrite.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/miscutils/nandwrite.c b/miscutils/nandwrite.c
index 29c800612..bfa4ea478 100644
--- a/miscutils/nandwrite.c
+++ b/miscutils/nandwrite.c
@@ -53,12 +53,16 @@
 #include "libbb.h"
 #include <mtd/mtd-user.h>
 
-/* Old headers call it MTD_MODE_RAW.
- * FIXME: In kernel headers, MTD_FILE_MODE_RAW is not a define,
- * it's an enum. How I can test for existence of an enum?
+#include <linux/version.h>
+/*
+ * MTD_FILE_MODE_RAW is an enum (i.e. cannot be tested for using #ifdef) and 
is available since kernel 3.2
+ * s. http://elixir.free-electrons.com/linux/v3.2/ident/MTD_FILE_MODE_RAW
+ *
+ * In versions before 3.2 it's called MTD_MODE_RAW
+ * s. http://elixir.free-electrons.com/linux/v3.1/ident/MTD_MODE_RAW
  */
-#if !defined(MTD_FILE_MODE_RAW)
-# define MTD_FILE_MODE_RAW 3
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3,2,0)
+#define MTD_FILE_MODE_RAW MTD_MODE_RAW
 #endif
 
 
--
2.15.1
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to