mesa/gallium: add FFS_DEFINED to protect ffs() from multiple definitions
authorBrian Paul <brianp@vmware.com>
Thu, 12 Jan 2012 15:41:24 +0000 (08:41 -0700)
committerBrian Paul <brianp@vmware.com>
Thu, 12 Jan 2012 16:18:34 +0000 (09:18 -0700)
We include both imports.h and u_math.h in the state tracker.  This
leads to multiple, conflicting definitions of ffs() with MSVC.
Use FFS_DEFINED to skip the ffs() in u_math.h.

Reviewed-by: José Fonseca <jfonseca@vmware.com>
src/gallium/auxiliary/util/u_math.h
src/mesa/main/imports.h

index 404bd21e1c595532533410d8fa52221d71633f7e..f6196665f4f22d4d0fe9b4ee62555e2f709fd75a 100644 (file)
@@ -340,6 +340,9 @@ util_is_inf_or_nan(float x)
  * Find first bit set in word.  Least significant bit is 1.
  * Return 0 if no bits set.
  */
+#ifndef FFS_DEFINED
+#define FFS_DEFINED 1
+
 #if defined(_MSC_VER) && _MSC_VER >= 1300 && (_M_IX86 || _M_AMD64 || _M_IA64)
 unsigned char _BitScanForward(unsigned long* Index, unsigned long Mask);
 #pragma intrinsic(_BitScanForward)
@@ -372,6 +375,8 @@ unsigned ffs( unsigned u )
 #define ffs __builtin_ffs
 #endif
 
+#endif /* FFS_DEFINED */
+
 
 /* Destructively loop over all of the bits in a mask as in:
  *
index bcf125ada762f1f822620d9eb694031f39a2af9d..ce7b45d7733d0cf74df4bb8bdb413ab83d93bced 100644 (file)
@@ -566,6 +566,9 @@ _mesa_inv_sqrtf(float x);
 extern void
 _mesa_init_sqrt_table(void);
 
+
+#ifndef FFS_DEFINED
+#define FFS_DEFINED 1
 #ifdef __GNUC__
 
 #if defined(__MINGW32__) || defined(__CYGWIN__) || defined(ANDROID) || defined(__APPLE__)
@@ -579,6 +582,7 @@ extern int ffs(int i);
 extern int ffsll(long long int i);
 
 #endif /*__ GNUC__ */
+#endif /* FFS_DEFINED */
 
 
 #if defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 304) /* gcc 3.4 or later */