summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/features.h8
-rw-r--r--include/gnu-versions.h29
2 files changed, 34 insertions, 3 deletions
diff --git a/include/features.h b/include/features.h
index 6f920d8ad..f5b8cf74e 100644
--- a/include/features.h
+++ b/include/features.h
@@ -15,9 +15,11 @@
* their developers intended. This is IMHO, pardonable, since these defines
* are not really intended to check for the presence of a particular library,
* but rather are used to define an _interface_. */
-#define __GNU_LIBRARY__ 6
-#define __GLIBC__ 2
-#define __GLIBC_MINOR__ 1
+#if !defined __LIBC__ || defined __FORCE_GLIBC__
+# define __GNU_LIBRARY__ 6
+# define __GLIBC__ 2
+# define __GLIBC_MINOR__ 1
+#endif
/* Make a half-hearted attempt to accomodate non-gcc compilers */
#ifndef __GNUC__
diff --git a/include/gnu-versions.h b/include/gnu-versions.h
new file mode 100644
index 000000000..f642f6aee
--- /dev/null
+++ b/include/gnu-versions.h
@@ -0,0 +1,29 @@
+/* Header to ignore some special GNU libc interfaces not provided
+ * by uClibc. */
+
+#ifndef _GNU_VERSIONS_H
+#define _GNU_VERSIONS_H 1
+
+/* This file exists to avoid uClibc getting into trouble these macros
+ such as the following:
+
+ #define OBSTACK_INTERFACE_VERSION 1
+ #if !defined (_LIBC) && defined (__GNU_LIBRARY__) && __GNU_LIBRARY__ > 1
+ #include <gnu-versions.h>
+ #if _GNU_OBSTACK_INTERFACE_VERSION == OBSTACK_INTERFACE_VERSION
+ #define ELIDE_CODE
+ #endif
+ #endif
+
+ By defining bogus interface versions, I believe we can safely get
+ past such things while continuing to lie and define __GNU_LIBRARY__,
+ thereby getting better compatibility with the majority of the code
+ written for Linux. */
+
+#define _GNU_OBSTACK_INTERFACE_VERSION -1 /* vs malloc/obstack.c */
+#define _GNU_REGEX_INTERFACE_VERSION -1 /* vs posix/regex.c */
+#define _GNU_GLOB_INTERFACE_VERSION -1 /* vs posix/glob.c */
+#define _GNU_GETOPT_INTERFACE_VERSION -1 /* vs posix/getopt.c and
+ posix/getopt1.c */
+
+#endif /* gnu-versions.h */