xref: /OK3568_Linux_fs/buildroot/package/gamin/0003-fix-missing-PTHREAD_MUTEX_RECURSIVE_NP.patch (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593SmuzhiyunFix missing PTHREAD_MUTEX_RECURSIVE_NP
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunThe musl C library does not provide the non portable
4*4882a593SmuzhiyunPTHREAD_MUTEX_RECURSIVE_NP. In addition, uClibc does not define it as
5*4882a593Smuzhiyuna #define, but as an enum value, so doing a #if defined() check
6*4882a593Smuzhiyundoesn't work properly. Instead, add a AC_CHECK_DECL() autoconf check.
7*4882a593Smuzhiyun
8*4882a593SmuzhiyunSigned-off-by: Baruch Siach <baruch@tkos.co.il>
9*4882a593Smuzhiyun[Thomas: switch to an autoconf check.]
10*4882a593SmuzhiyunSigned-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
11*4882a593Smuzhiyun
12*4882a593SmuzhiyunIndex: b/configure.in
13*4882a593Smuzhiyun===================================================================
14*4882a593Smuzhiyun--- a/configure.in
15*4882a593Smuzhiyun+++ b/configure.in
16*4882a593Smuzhiyun@@ -294,6 +294,10 @@
17*4882a593Smuzhiyun 	   AC_DEFINE([HAVE_LIBPTHREAD], [], [Define if pthread library is there (-lpthread)])
18*4882a593Smuzhiyun 	   AC_DEFINE([HAVE_PTHREAD_H], [], [Define if <pthread.h> is there])
19*4882a593Smuzhiyun 	   WITH_THREADS="1"]))
20*4882a593Smuzhiyun+
21*4882a593Smuzhiyun+    AC_CHECK_DECL([PTHREAD_MUTEX_RECURSIVE_NP],
22*4882a593Smuzhiyun+		[AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE_NP], [], [whether HAVE_PTHREAD_MUTEX_RECURSIVE_NP is defined])],
23*4882a593Smuzhiyun+		[], [#include <pthread.h>])
24*4882a593Smuzhiyun fi
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun dnl Use weak symbols on linux/gcc to avoid imposing libpthreads to apps
27*4882a593SmuzhiyunIndex: b/libgamin/gam_data.c
28*4882a593Smuzhiyun===================================================================
29*4882a593Smuzhiyun--- a/libgamin/gam_data.c
30*4882a593Smuzhiyun+++ b/libgamin/gam_data.c
31*4882a593Smuzhiyun@@ -470,7 +470,7 @@
32*4882a593Smuzhiyun     }
33*4882a593Smuzhiyun     if (is_threaded > 0) {
34*4882a593Smuzhiyun 	pthread_mutexattr_init(&attr);
35*4882a593Smuzhiyun-#if defined(linux) || defined(PTHREAD_MUTEX_RECURSIVE_NP)
36*4882a593Smuzhiyun+#if defined(HAVE_PTHREAD_MUTEX_RECURSIVE_NP)
37*4882a593Smuzhiyun 	pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP);
38*4882a593Smuzhiyun #else
39*4882a593Smuzhiyun 	pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
40