1dnl Functions for pthread
2dnl
3dnl Version: 20130509
4
5dnl Function to detect if pthread is available
6AC_DEFUN([AX_PTHREAD_CHECK_LIB],
7 [dnl Check if parameters were provided
8 AS_IF(
9  [test "x$ac_cv_with_pthread" != x && test "x$ac_cv_with_pthread" != xno && test "x$ac_cv_with_pthread" != xauto-detect],
10  [AS_IF(
11   [test -d "$ac_cv_with_pthread"],
12   [CFLAGS="$CFLAGS -I${ac_cv_with_pthread}/include"
13   LDFLAGS="$LDFLAGS -L${ac_cv_with_pthread}/lib"],
14   [AC_MSG_WARN([no such directory: $ac_cv_with_pthread])
15   ])
16  ])
17
18 AS_IF(
19  [test "x$ac_cv_with_pthread" = xno],
20  [ac_cv_pthread=no],
21  [dnl Check for headers
22  AC_CHECK_HEADERS([pthread.h])
23
24  AS_IF(
25   [test "x$ac_cv_header_pthread_h" = xno],
26   [ac_cv_pthread=no],
27   [dnl Check for the individual functions
28   ac_cv_pthread=pthread
29
30   dnl Thread functions
31   AC_CHECK_LIB(
32    pthread,
33    pthread_create,
34    [ac_pthread_dummy=yes],
35    [ac_cv_pthread=no])
36   AC_CHECK_LIB(
37    pthread,
38    pthread_exit,
39    [ac_pthread_dummy=yes],
40    [ac_cv_pthread=no])
41   AC_CHECK_LIB(
42    pthread,
43    pthread_join,
44    [ac_pthread_dummy=yes],
45    [ac_cv_pthread=no])
46
47   dnl Condition functions
48   AC_CHECK_LIB(
49    pthread,
50    pthread_cond_init,
51    [ac_pthread_dummy=yes],
52    [ac_cv_pthread=no])
53   AC_CHECK_LIB(
54    pthread,
55    pthread_cond_destroy,
56    [ac_pthread_dummy=yes],
57    [ac_cv_pthread=no])
58   AC_CHECK_LIB(
59    pthread,
60    pthread_cond_broadcast,
61    [ac_pthread_dummy=yes],
62    [ac_cv_pthread=no])
63   AC_CHECK_LIB(
64    pthread,
65    pthread_cond_signal,
66    [ac_pthread_dummy=yes],
67    [ac_cv_pthread=no])
68   AC_CHECK_LIB(
69    pthread,
70    pthread_cond_wait,
71    [ac_pthread_dummy=yes],
72    [ac_cv_pthread=no])
73
74   dnl Mutex functions
75   AC_CHECK_LIB(
76    pthread,
77    pthread_mutex_init,
78    [ac_pthread_dummy=yes],
79    [ac_cv_pthread=no])
80   AC_CHECK_LIB(
81    pthread,
82    pthread_mutex_destroy,
83    [ac_pthread_dummy=yes],
84    [ac_cv_pthread=no])
85   AC_CHECK_LIB(
86    pthread,
87    pthread_mutex_lock,
88    [ac_pthread_dummy=yes],
89    [ac_cv_pthread=no])
90   AC_CHECK_LIB(
91    pthread,
92    pthread_mutex_trylock,
93    [ac_pthread_dummy=yes],
94    [ac_cv_pthread=no])
95   AC_CHECK_LIB(
96    pthread,
97    pthread_mutex_unlock,
98    [ac_pthread_dummy=yes],
99    [ac_cv_pthread=no])
100
101   dnl Read/Write lock functions
102   AC_CHECK_LIB(
103    pthread,
104    pthread_rwlock_init,
105    [ac_pthread_dummy=yes],
106    [ac_cv_pthread=no])
107   AC_CHECK_LIB(
108    pthread,
109    pthread_rwlock_destroy,
110    [ac_pthread_dummy=yes],
111    [ac_cv_pthread=no])
112   AC_CHECK_LIB(
113    pthread,
114    pthread_rwlock_rdlock,
115    [ac_pthread_dummy=yes],
116    [ac_cv_pthread=no])
117   AC_CHECK_LIB(
118    pthread,
119    pthread_rwlock_wrlock,
120    [ac_pthread_dummy=yes],
121    [ac_cv_pthread=no])
122   AC_CHECK_LIB(
123    pthread,
124    pthread_rwlock_unlock,
125    [ac_pthread_dummy=yes],
126    [ac_cv_pthread=no])
127
128   ac_cv_pthread_LIBADD="-lpthread";
129   ])
130  ])
131
132 AS_IF(
133  [test "x$ac_cv_pthread" = xpthread],
134  [AC_DEFINE(
135   [HAVE_PTHREAD],
136   [1],
137   [Define to 1 if you have the 'pthread' library (-lpthread).])
138  ])
139
140 AS_IF(
141  [test "x$ac_cv_pthread" != xno],
142  [AC_SUBST(
143   [HAVE_PTHREAD],
144   [1]) ],
145  [AC_SUBST(
146   [HAVE_PTHREAD],
147   [0])
148  ])
149 ])
150
151dnl Function to detect how to enable pthread
152AC_DEFUN([AX_PTHREAD_CHECK_ENABLE],
153 [AX_COMMON_ARG_WITH(
154  [pthread],
155  [pthread],
156  [search for pthread in includedir and libdir or in the specified DIR, or no if not to use pthread],
157  [auto-detect],
158  [DIR])
159
160 dnl Check for a shared library version
161 AX_PTHREAD_CHECK_LIB
162
163 AS_IF(
164  [test "x$ac_cv_pthread_CPPFLAGS" != "x"],
165  [AC_SUBST(
166   [PTHREAD_CPPFLAGS],
167   [$ac_cv_pthread_CPPFLAGS])
168  ])
169 AS_IF(
170  [test "x$ac_cv_pthread_LIBADD" != "x"],
171  [AC_SUBST(
172   [PTHREAD_LIBADD],
173   [$ac_cv_pthread_LIBADD])
174  ])
175
176 AS_IF(
177  [test "x$ac_cv_pthread" = xpthread],
178  [AC_SUBST(
179   [ax_pthread_pc_libs_private],
180   [-lpthread])
181  ])
182 ])
183
184