2001-11-18 Ravi Pratap <ravi@ximian.com>
[mono.git] / configure.in
index 2d12e7eb7d6db494bdb834cbd670b965f6154699..9e596e77c387c8fdd3e30c180801296d4566af6a 100644 (file)
@@ -161,6 +161,41 @@ if test x$platform_win32 = xno; then
                ])
                CPPFLAGS=$orig_CPPFLAGS
                CFLAGS="$CFLAGS $pthread_CFLAGS"
+
+               # Need PTHREAD_MUTEX_RECURSIVE
+               pthread_CFLAGS=""
+               orig_CPPFLAGS=$CPPFLAGS
+               # This is a gcc-specific error, but we already set
+               # gcc-specific options in CFLAGS
+               CPPFLAGS="$CPPFLAGS -Werror-implicit-function-declaration"
+               AC_MSG_CHECKING(for PTHREAD_MUTEX_RECURSIVE)
+               AC_TRY_COMPILE([ #include <pthread.h>], [
+                       pthread_mutexattr_t attr;
+                       pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
+               ], [
+                       # Works!
+                       AC_MSG_RESULT(ok)
+               ], [
+                       AC_MSG_RESULT(no)
+
+                       # glibc requires -D_GNU_SOURCE before it will declare
+                       # this macro
+                       AC_MSG_CHECKING(whether _GNU_SOURCE is needed for PTHREAD_MUTEX_RECURSIVE)
+                       CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
+                       AC_TRY_COMPILE([ #include <pthread.h>], [
+                               pthread_mutexattr_t attr;
+                               pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
+                       ], [
+                               AC_MSG_RESULT(ok)
+                               pthread_CFLAGS="-D_GNU_SOURCE"
+                       ], [
+                               AC_MSG_RESULT(no)
+                               dnl Add other variants here
+                               AC_MSG_ERROR([PTHREAD_MUTEX_RECURSIVE not found])
+                       ])
+               ])
+               CPPFLAGS=$orig_CPPFLAGS
+               CFLAGS="$CFLAGS $pthread_CFLAGS"
        ], [
                AC_MSG_ERROR([libpthread is required on non-win32 hosts])
        ])