From 123dca7d2598f12466bf27f79129da2e491eef30 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 25 Sep 2005 22:48:06 +0000 Subject: [PATCH] don't declare pthread_mutexattr_settype() ourselves if the system already does it, we might have a slightly different declaration and this causes problems git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35702 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- configure | 73 ++++++++++++++++++++++++++++++++++++++---- configure.in | 25 ++++++++++++--- setup.h.in | 3 ++ setup.h_vms | 3 ++ src/unix/threadpsx.cpp | 3 +- 5 files changed, 95 insertions(+), 12 deletions(-) diff --git a/configure b/configure index 23c7f53690..cf9ac1eca3 100755 --- a/configure +++ b/configure @@ -37064,16 +37064,12 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - - wx_cv_type_pthread_mutexattr_t=yes - + wx_cv_type_pthread_mutexattr_t=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - - wx_cv_type_pthread_mutexattr_t=no - +wx_cv_type_pthread_mutexattr_t=no fi rm -f conftest.err conftest.$ac_objext conftest.$ac_ext @@ -37087,6 +37083,71 @@ echo "${ECHO_T}$wx_cv_type_pthread_mutexattr_t" >&6 #define HAVE_PTHREAD_MUTEXATTR_T 1 _ACEOF + + echo "$as_me:$LINENO: checking for pthread_mutexattr_settype declaration" >&5 +echo $ECHO_N "checking for pthread_mutexattr_settype declaration... $ECHO_C" >&6 +if test "${wx_cv_func_pthread_mutexattr_settype_decl+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ + + pthread_mutexattr_t attr; + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + wx_cv_func_pthread_mutexattr_settype_decl=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +wx_cv_func_pthread_mutexattr_settype_decl=no + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +echo "$as_me:$LINENO: result: $wx_cv_func_pthread_mutexattr_settype_decl" >&5 +echo "${ECHO_T}$wx_cv_func_pthread_mutexattr_settype_decl" >&6 + if test "$wx_cv_func_pthread_mutexattr_settype_decl" = "yes"; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_PTHREAD_MUTEXATTR_SETTYPE_DECL 1 +_ACEOF + + fi else echo "$as_me:$LINENO: checking for PTHREAD_RECURSIVE_MUTEX_INITIALIZER" >&5 echo $ECHO_N "checking for PTHREAD_RECURSIVE_MUTEX_INITIALIZER... $ECHO_C" >&6 diff --git a/configure.in b/configure.in index 5673ec1cb9..5b21d7585a 100644 --- a/configure.in +++ b/configure.in @@ -4842,16 +4842,31 @@ if test "$TOOLKIT" != "MSW" -a "$USE_OS2" != 1; then [ pthread_mutexattr_t attr; pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); - ], [ - wx_cv_type_pthread_mutexattr_t=yes - ], [ - wx_cv_type_pthread_mutexattr_t=no - ] + ], + wx_cv_type_pthread_mutexattr_t=yes, + wx_cv_type_pthread_mutexattr_t=no ) ]) if test "$wx_cv_type_pthread_mutexattr_t" = "yes"; then AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_T) + + dnl check if we already have the declaration we need, it is not + dnl present in some systems' headers + AC_CACHE_CHECK([for pthread_mutexattr_settype declaration], + wx_cv_func_pthread_mutexattr_settype_decl, [ + AC_TRY_COMPILE([#include ], + [ + pthread_mutexattr_t attr; + pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); + ], + wx_cv_func_pthread_mutexattr_settype_decl=yes, + wx_cv_func_pthread_mutexattr_settype_decl=no + ) + ]) + if test "$wx_cv_func_pthread_mutexattr_settype_decl" = "yes"; then + AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_SETTYPE_DECL) + fi else dnl don't despair, there may be another way to do it AC_CACHE_CHECK([for PTHREAD_RECURSIVE_MUTEX_INITIALIZER], diff --git a/setup.h.in b/setup.h.in index 7cca609a4a..dd47c31404 100644 --- a/setup.h.in +++ b/setup.h.in @@ -741,6 +741,9 @@ /* Define if you have pthread_mutexattr_t and functions to work with it */ #undef HAVE_PTHREAD_MUTEXATTR_T +/* Define if you have pthread_mutexattr_settype() declaration */ +#undef HAVE_PTHREAD_MUTEXATTR_SETTYPE_DECL + /* Define if you have PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP */ #undef HAVE_PTHREAD_RECURSIVE_MUTEX_INITIALIZER diff --git a/setup.h_vms b/setup.h_vms index 92cc838cc5..6ab4166914 100644 --- a/setup.h_vms +++ b/setup.h_vms @@ -779,6 +779,9 @@ /* Define if you have pthread_mutexattr_t and functions to work with it */ #undef HAVE_PTHREAD_MUTEXATTR_T +/* Define if you have pthread_mutexattr_settype() declaration */ +#undef HAVE_PTHREAD_MUTEXATTR_SETTYPE_DECL + /* Define if you have PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP */ #undef HAVE_PTHREAD_RECURSIVE_MUTEX_INITIALIZER diff --git a/src/unix/threadpsx.cpp b/src/unix/threadpsx.cpp index 94c3b21af2..1a9aaf6cfd 100644 --- a/src/unix/threadpsx.cpp +++ b/src/unix/threadpsx.cpp @@ -170,7 +170,8 @@ private: friend class wxConditionInternal; }; -#ifdef HAVE_PTHREAD_MUTEXATTR_T +#if defined(HAVE_PTHREAD_MUTEXATTR_T) && \ + wxUSE_UNIX && !defined(HAVE_PTHREAD_MUTEXATTR_SETTYPE_DECL) // on some systems pthread_mutexattr_settype() is not in the headers (but it is // in the library, otherwise we wouldn't compile this code at all) extern "C" int pthread_mutexattr_settype(pthread_mutexattr_t *, int); -- 2.45.2