From e2f5f28714de471d98cabe50096a5fdf3aeef0a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ture=20P=C3=A5lsson?= Date: Wed, 9 Sep 2015 19:18:28 +0200 Subject: Use autoconf for PTHREAD_MUTEX_RECURSIVE (#302) On FreeBSD 10, PTHREAD_MUTEX_RECURSIVE exists, but as an enum constant, not a #define macro, so it cannot be detected using #ifdef. --- configure.in | 4 ++++ src/pj_mutex.c | 8 +++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/configure.in b/configure.in index 095a191f..30f7a16d 100644 --- a/configure.in +++ b/configure.in @@ -98,6 +98,10 @@ if test "$with_mutex" = yes -o x"$with_mutex" = x ; then THREAD_LIB="-lpthread" fi AC_CHECK_LIB(pthread,pthread_mutexattr_settype,,,) + AC_CHECK_DECL(PTHREAD_MUTEX_RECURSIVE, + AC_DEFINE(HAVE_PTHREAD_MUTEX_RECURSIVE, [], [Define if your pthreads implementation have PTHREAD_MUTEX_RECURSIVE]), + , + [#include ]) AC_MSG_RESULT([enabled, pthread]) else MUTEX_SETTING=stub diff --git a/src/pj_mutex.c b/src/pj_mutex.c index 349537c8..037c4bbb 100644 --- a/src/pj_mutex.c +++ b/src/pj_mutex.c @@ -33,6 +33,8 @@ #define _XOPEN_SOURCE 500 #endif +#include "proj_config.h" + #ifndef _WIN32 #include #else @@ -120,10 +122,10 @@ void pj_acquire_lock() pthread_mutex_lock( &pj_precreated_lock); pthread_mutexattr_init(&mutex_attr); -#ifndef PTHREAD_MUTEX_RECURSIVE - pthread_mutexattr_settype(&mutex_attr, PTHREAD_MUTEX_RECURSIVE_NP); -#else +#ifdef HAVE_PTHREAD_MUTEX_RECURSIVE pthread_mutexattr_settype(&mutex_attr, PTHREAD_MUTEX_RECURSIVE); +#else + pthread_mutexattr_settype(&mutex_attr, PTHREAD_MUTEX_RECURSIVE_NP); #endif pthread_mutex_init(&pj_core_lock, &mutex_attr); pj_core_lock_created = 1; -- cgit v1.2.3