Original patch from Gentoo.

-= BEGIN original header =-
-= END original header =-

diff -durN uClibc-0.9.30.orig/include/assert.h uClibc-0.9.30/include/assert.h
--- uClibc-0.9.30.orig/include/assert.h	2008-07-23 13:23:36.000000000 +0200
+++ uClibc-0.9.30/include/assert.h	2009-02-07 09:57:59.000000000 +0100
@@ -31,7 +31,7 @@
 #define	_ASSERT_H	1
 #include <features.h>
 
-#if defined __cplusplus && __GNUC_PREREQ (2,95)
+#if defined __cplusplus && __GNUC_PREREQ(2,95)
 # define __ASSERT_VOID_CAST static_cast<void>
 #else
 # define __ASSERT_VOID_CAST (void)
@@ -60,12 +60,15 @@
 		       (__assert (__STRING(expr), __FILE__, __LINE__,    \
 				       __ASSERT_FUNCTION), 0)))
 
+/* Define some temporaries to workaround tinyx makedepend bug */
+#define	__GNUC_PREREQ_2_6	__GNUC_PREREQ(2, 6)
+#define	__GNUC_PREREQ_2_4	__GNUC_PREREQ(2, 4)
 /* Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__'
    which contains the name of the function currently being defined.
    This is broken in G++ before version 2.6.
    C9x has a similar variable called __func__, but prefer the GCC one since
    it demangles C++ function names.  */
-# if defined __cplusplus ? __GNUC_PREREQ (2, 6) : __GNUC_PREREQ (2, 4)
+# if defined __cplusplus ? __GNUC_PREREQ_2_6 : __GNUC_PREREQ_2_4
 #   define __ASSERT_FUNCTION	__PRETTY_FUNCTION__
 # else
 #  if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
diff -durN uClibc-0.9.30.orig/include/complex.h uClibc-0.9.30/include/complex.h
--- uClibc-0.9.30.orig/include/complex.h	2008-10-03 16:24:28.000000000 +0200
+++ uClibc-0.9.30/include/complex.h	2009-02-07 09:57:59.000000000 +0100
@@ -33,7 +33,7 @@
 /* We might need to add support for more compilers here.  But since ISO
    C99 is out hopefully all maintained compilers will soon provide the data
    types `float complex' and `double complex'.  */
-#if __GNUC_PREREQ (2, 7) && !__GNUC_PREREQ (2, 97)
+#if __GNUC_PREREQ(2, 7) && !__GNUC_PREREQ(2, 97)
 # define _Complex __complex__
 #endif
 
diff -durN uClibc-0.9.30.orig/include/features.h uClibc-0.9.30/include/features.h
--- uClibc-0.9.30.orig/include/features.h	2008-09-06 18:45:07.000000000 +0200
+++ uClibc-0.9.30/include/features.h	2009-02-07 09:57:59.000000000 +0100
@@ -143,7 +143,7 @@
 
 /* Convenience macros to test the versions of glibc and gcc.
    Use them like this:
-   #if __GNUC_PREREQ (2,8)
+   #if __GNUC_PREREQ(2,8)
    ... code requiring gcc 2.8 or later ...
    #endif
    Note - they won't work for gcc1 or glibc1, since the _MINOR macros
@@ -297,7 +297,7 @@
 /* uClibc does not support _FORTIFY_SOURCE */
 #undef _FORTIFY_SOURCE
 #if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0 \
-    && __GNUC_PREREQ (4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0
+    && __GNUC_PREREQ(4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0
 # if _FORTIFY_SOURCE > 1
 #  define __USE_FORTIFY_LEVEL 2
 # else
@@ -366,7 +366,7 @@
  * uclibc itself is usually built without __USE_EXTERN_INLINES,
  * remove "&& !defined __OPTIMIZE_SIZE__" part to do otherwise.
  */
-#if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \
+#if __GNUC_PREREQ(2, 7) && defined __OPTIMIZE__ \
     && !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__ \
     && (defined __extern_inline || defined __GNUC_GNU_INLINE__)
 # define __USE_EXTERN_INLINES	1
diff -durN uClibc-0.9.30.orig/include/tgmath.h uClibc-0.9.30/include/tgmath.h
--- uClibc-0.9.30.orig/include/tgmath.h	2008-10-03 16:24:28.000000000 +0200
+++ uClibc-0.9.30/include/tgmath.h	2009-02-07 09:57:59.000000000 +0100
@@ -34,7 +34,7 @@
    do not try this for now and instead concentrate only on GNU CC.  Once
    we have more information support for other compilers might follow.  */
 
-#if __GNUC_PREREQ (2, 7)
+#if __GNUC_PREREQ(2, 7)
 
 # ifdef __NO_LONG_DOUBLE_MATH
 #  define __tgml(fct) fct
