Imported Upstream version 3.8
[platform/upstream/diffutils.git] / m4 / pthread_h.m4
1 # pthread_h.m4 serial 8
2 dnl Copyright (C) 2009-2021 Free Software Foundation, Inc.
3 dnl This file is free software; the Free Software Foundation
4 dnl gives unlimited permission to copy and/or distribute it,
5 dnl with or without modifications, as long as this notice is preserved.
6
7 AC_DEFUN_ONCE([gl_PTHREAD_H],
8 [
9   dnl Ensure to expand the default settings once only, before all statements
10   dnl that occur in other macros.
11   AC_REQUIRE([gl_PTHREAD_H_DEFAULTS])
12
13   AC_REQUIRE([AC_CANONICAL_HOST])
14   AC_REQUIRE([gl_PTHREADLIB])
15
16   gl_CHECK_NEXT_HEADERS([pthread.h])
17   if test $ac_cv_header_pthread_h = yes; then
18     HAVE_PTHREAD_H=1
19     dnl On mingw, if --enable-threads=windows or gl_AVOID_WINPTHREAD is used,
20     dnl ignore the <pthread.h> from the mingw-w64 winpthreads library.
21     m4_ifdef([gl_][THREADLIB], [
22       AC_REQUIRE([gl_][THREADLIB])
23       if { case "$host_os" in mingw*) true;; *) false;; esac; } \
24          && test $gl_threads_api = windows; then
25         HAVE_PTHREAD_H=0
26       fi
27     ])
28   else
29     HAVE_PTHREAD_H=0
30   fi
31   AC_SUBST([HAVE_PTHREAD_H])
32
33   AC_CHECK_TYPES([pthread_t, pthread_spinlock_t], [], [],
34     [AC_INCLUDES_DEFAULT[
35      #if HAVE_PTHREAD_H
36       #include <pthread.h>
37      #endif]])
38   if test $ac_cv_type_pthread_t != yes; then
39     HAVE_PTHREAD_T=0
40   fi
41   if test $ac_cv_type_pthread_spinlock_t != yes; then
42     HAVE_PTHREAD_SPINLOCK_T=0
43   fi
44
45   dnl Constants may be defined as C preprocessor macros or as enum items.
46
47   AC_CACHE_CHECK([for PTHREAD_CREATE_DETACHED],
48     [gl_cv_const_PTHREAD_CREATE_DETACHED],
49     [AC_COMPILE_IFELSE(
50        [AC_LANG_PROGRAM(
51           [[#include <pthread.h>
52             int x = PTHREAD_CREATE_DETACHED;
53           ]],
54           [[]])],
55        [gl_cv_const_PTHREAD_CREATE_DETACHED=yes],
56        [gl_cv_const_PTHREAD_CREATE_DETACHED=no])
57     ])
58   if test $gl_cv_const_PTHREAD_CREATE_DETACHED != yes; then
59     HAVE_PTHREAD_CREATE_DETACHED=0
60   fi
61
62   AC_CACHE_CHECK([for PTHREAD_MUTEX_RECURSIVE],
63     [gl_cv_const_PTHREAD_MUTEX_RECURSIVE],
64     [AC_COMPILE_IFELSE(
65        [AC_LANG_PROGRAM(
66           [[#include <pthread.h>
67             int x = PTHREAD_MUTEX_RECURSIVE;
68           ]],
69           [[]])],
70        [gl_cv_const_PTHREAD_MUTEX_RECURSIVE=yes],
71        [gl_cv_const_PTHREAD_MUTEX_RECURSIVE=no])
72     ])
73   if test $gl_cv_const_PTHREAD_MUTEX_RECURSIVE != yes; then
74     HAVE_PTHREAD_MUTEX_RECURSIVE=0
75   fi
76
77   AC_CACHE_CHECK([for PTHREAD_MUTEX_ROBUST],
78     [gl_cv_const_PTHREAD_MUTEX_ROBUST],
79     [AC_COMPILE_IFELSE(
80        [AC_LANG_PROGRAM(
81           [[#include <pthread.h>
82             int x = PTHREAD_MUTEX_ROBUST;
83           ]],
84           [[]])],
85        [gl_cv_const_PTHREAD_MUTEX_ROBUST=yes],
86        [gl_cv_const_PTHREAD_MUTEX_ROBUST=no])
87     ])
88   if test $gl_cv_const_PTHREAD_MUTEX_ROBUST != yes; then
89     HAVE_PTHREAD_MUTEX_ROBUST=0
90   fi
91
92   AC_CACHE_CHECK([for PTHREAD_PROCESS_SHARED],
93     [gl_cv_const_PTHREAD_PROCESS_SHARED],
94     [AC_COMPILE_IFELSE(
95        [AC_LANG_PROGRAM(
96           [[#include <pthread.h>
97             int x = PTHREAD_PROCESS_SHARED;
98           ]],
99           [[]])],
100        [gl_cv_const_PTHREAD_PROCESS_SHARED=yes],
101        [gl_cv_const_PTHREAD_PROCESS_SHARED=no])
102     ])
103   if test $gl_cv_const_PTHREAD_PROCESS_SHARED != yes; then
104     HAVE_PTHREAD_PROCESS_SHARED=0
105   fi
106
107   dnl Check for declarations of anything we want to poison if the
108   dnl corresponding gnulib module is not in use, if it is not common
109   dnl enough to be declared everywhere.
110   gl_WARN_ON_USE_PREPARE([[#include <pthread.h>
111     ]], [
112     pthread_create pthread_attr_init pthread_attr_getdetachstate
113     pthread_attr_setdetachstate pthread_attr_destroy pthread_self pthread_equal
114     pthread_detach pthread_join pthread_exit
115     pthread_once
116     pthread_mutex_init pthread_mutexattr_init pthread_mutexattr_gettype
117     pthread_mutexattr_settype pthread_mutexattr_getrobust
118     pthread_mutexattr_setrobust pthread_mutexattr_destroy pthread_mutex_lock
119     pthread_mutex_trylock pthread_mutex_timedlock pthread_mutex_unlock
120     pthread_mutex_destroy
121     pthread_rwlock_init pthread_rwlockattr_init pthread_rwlockattr_destroy
122     pthread_rwlock_rdlock pthread_rwlock_wrlock pthread_rwlock_tryrdlock
123     pthread_rwlock_trywrlock pthread_rwlock_timedrdlock
124     pthread_rwlock_timedwrlock pthread_rwlock_unlock pthread_rwlock_destroy
125     pthread_cond_init pthread_condattr_init pthread_condattr_destroy
126     pthread_cond_wait pthread_cond_timedwait pthread_cond_signal
127     pthread_cond_broadcast pthread_cond_destroy
128     pthread_key_create pthread_setspecific pthread_getspecific
129     pthread_key_delete
130     pthread_spin_init pthread_spin_lock pthread_spin_trylock pthread_spin_unlock
131     pthread_spin_destroy])
132
133   AC_REQUIRE([AC_C_RESTRICT])
134
135   dnl For backward compatibility with gnulib versions <= 2019-07.
136   LIB_PTHREAD="$LIBPMULTITHREAD"
137   AC_SUBST([LIB_PTHREAD])
138 ])
139
140 # gl_PTHREAD_MODULE_INDICATOR([modulename])
141 # sets the shell variable that indicates the presence of the given module
142 # to a C preprocessor expression that will evaluate to 1.
143 # This macro invocation must not occur in macros that are AC_REQUIREd.
144 AC_DEFUN([gl_PTHREAD_MODULE_INDICATOR],
145 [
146   dnl Ensure to expand the default settings once only.
147   gl_PTHREAD_H_REQUIRE_DEFAULTS
148   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
149   dnl Define it also as a C macro, for the benefit of the unit tests.
150   gl_MODULE_INDICATOR_FOR_TESTS([$1])
151 ])
152
153 # Initializes the default values for AC_SUBSTed shell variables.
154 # This macro must not be AC_REQUIREd.  It must only be invoked, and only
155 # outside of macros or in macros that are not AC_REQUIREd.
156 AC_DEFUN([gl_PTHREAD_H_REQUIRE_DEFAULTS],
157 [
158   m4_defun(GL_MODULE_INDICATOR_PREFIX[_PTHREAD_H_MODULE_INDICATOR_DEFAULTS], [
159     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTHREAD_THREAD])
160     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTHREAD_ONCE])
161     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTHREAD_MUTEX])
162     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTHREAD_RWLOCK])
163     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTHREAD_COND])
164     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTHREAD_TSS])
165     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTHREAD_SPIN])
166     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_PTHREAD_MUTEX_TIMEDLOCK])
167   ])
168   m4_require(GL_MODULE_INDICATOR_PREFIX[_PTHREAD_H_MODULE_INDICATOR_DEFAULTS])
169   AC_REQUIRE([gl_PTHREAD_H_DEFAULTS])
170 ])
171
172 AC_DEFUN([gl_PTHREAD_H_DEFAULTS],
173 [
174   dnl Assume proper GNU behavior unless another module says otherwise.
175   HAVE_PTHREAD_T=1;                      AC_SUBST([HAVE_PTHREAD_T])
176   HAVE_PTHREAD_SPINLOCK_T=1;             AC_SUBST([HAVE_PTHREAD_SPINLOCK_T])
177   HAVE_PTHREAD_CREATE_DETACHED=1;        AC_SUBST([HAVE_PTHREAD_CREATE_DETACHED])
178   HAVE_PTHREAD_MUTEX_RECURSIVE=1;        AC_SUBST([HAVE_PTHREAD_MUTEX_RECURSIVE])
179   HAVE_PTHREAD_MUTEX_ROBUST=1;           AC_SUBST([HAVE_PTHREAD_MUTEX_ROBUST])
180   HAVE_PTHREAD_PROCESS_SHARED=1;         AC_SUBST([HAVE_PTHREAD_PROCESS_SHARED])
181   HAVE_PTHREAD_CREATE=1;                 AC_SUBST([HAVE_PTHREAD_CREATE])
182   HAVE_PTHREAD_ATTR_INIT=1;              AC_SUBST([HAVE_PTHREAD_ATTR_INIT])
183   HAVE_PTHREAD_ATTR_GETDETACHSTATE=1;    AC_SUBST([HAVE_PTHREAD_ATTR_GETDETACHSTATE])
184   HAVE_PTHREAD_ATTR_SETDETACHSTATE=1;    AC_SUBST([HAVE_PTHREAD_ATTR_SETDETACHSTATE])
185   HAVE_PTHREAD_ATTR_DESTROY=1;           AC_SUBST([HAVE_PTHREAD_ATTR_DESTROY])
186   HAVE_PTHREAD_SELF=1;                   AC_SUBST([HAVE_PTHREAD_SELF])
187   HAVE_PTHREAD_EQUAL=1;                  AC_SUBST([HAVE_PTHREAD_EQUAL])
188   HAVE_PTHREAD_DETACH=1;                 AC_SUBST([HAVE_PTHREAD_DETACH])
189   HAVE_PTHREAD_JOIN=1;                   AC_SUBST([HAVE_PTHREAD_JOIN])
190   HAVE_PTHREAD_EXIT=1;                   AC_SUBST([HAVE_PTHREAD_EXIT])
191   HAVE_PTHREAD_ONCE=1;                   AC_SUBST([HAVE_PTHREAD_ONCE])
192   HAVE_PTHREAD_MUTEX_INIT=1;             AC_SUBST([HAVE_PTHREAD_MUTEX_INIT])
193   HAVE_PTHREAD_MUTEXATTR_INIT=1;         AC_SUBST([HAVE_PTHREAD_MUTEXATTR_INIT])
194   HAVE_PTHREAD_MUTEXATTR_GETTYPE=1;      AC_SUBST([HAVE_PTHREAD_MUTEXATTR_GETTYPE])
195   HAVE_PTHREAD_MUTEXATTR_SETTYPE=1;      AC_SUBST([HAVE_PTHREAD_MUTEXATTR_SETTYPE])
196   HAVE_PTHREAD_MUTEXATTR_GETROBUST=1;    AC_SUBST([HAVE_PTHREAD_MUTEXATTR_GETROBUST])
197   HAVE_PTHREAD_MUTEXATTR_SETROBUST=1;    AC_SUBST([HAVE_PTHREAD_MUTEXATTR_SETROBUST])
198   HAVE_PTHREAD_MUTEXATTR_DESTROY=1;      AC_SUBST([HAVE_PTHREAD_MUTEXATTR_DESTROY])
199   HAVE_PTHREAD_MUTEX_LOCK=1;             AC_SUBST([HAVE_PTHREAD_MUTEX_LOCK])
200   HAVE_PTHREAD_MUTEX_TRYLOCK=1;          AC_SUBST([HAVE_PTHREAD_MUTEX_TRYLOCK])
201   HAVE_PTHREAD_MUTEX_TIMEDLOCK=1;        AC_SUBST([HAVE_PTHREAD_MUTEX_TIMEDLOCK])
202   HAVE_PTHREAD_MUTEX_UNLOCK=1;           AC_SUBST([HAVE_PTHREAD_MUTEX_UNLOCK])
203   HAVE_PTHREAD_MUTEX_DESTROY=1;          AC_SUBST([HAVE_PTHREAD_MUTEX_DESTROY])
204   HAVE_PTHREAD_RWLOCK_INIT=1;            AC_SUBST([HAVE_PTHREAD_RWLOCK_INIT])
205   HAVE_PTHREAD_RWLOCKATTR_INIT=1;        AC_SUBST([HAVE_PTHREAD_RWLOCKATTR_INIT])
206   HAVE_PTHREAD_RWLOCKATTR_DESTROY=1;     AC_SUBST([HAVE_PTHREAD_RWLOCKATTR_DESTROY])
207   HAVE_PTHREAD_RWLOCK_RDLOCK=1;          AC_SUBST([HAVE_PTHREAD_RWLOCK_RDLOCK])
208   HAVE_PTHREAD_RWLOCK_WRLOCK=1;          AC_SUBST([HAVE_PTHREAD_RWLOCK_WRLOCK])
209   HAVE_PTHREAD_RWLOCK_TRYRDLOCK=1;       AC_SUBST([HAVE_PTHREAD_RWLOCK_TRYRDLOCK])
210   HAVE_PTHREAD_RWLOCK_TRYWRLOCK=1;       AC_SUBST([HAVE_PTHREAD_RWLOCK_TRYWRLOCK])
211   HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK=1;     AC_SUBST([HAVE_PTHREAD_RWLOCK_TIMEDRDLOCK])
212   HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK=1;     AC_SUBST([HAVE_PTHREAD_RWLOCK_TIMEDWRLOCK])
213   HAVE_PTHREAD_RWLOCK_UNLOCK=1;          AC_SUBST([HAVE_PTHREAD_RWLOCK_UNLOCK])
214   HAVE_PTHREAD_RWLOCK_DESTROY=1;         AC_SUBST([HAVE_PTHREAD_RWLOCK_DESTROY])
215   HAVE_PTHREAD_COND_INIT=1;              AC_SUBST([HAVE_PTHREAD_COND_INIT])
216   HAVE_PTHREAD_CONDATTR_INIT=1;          AC_SUBST([HAVE_PTHREAD_CONDATTR_INIT])
217   HAVE_PTHREAD_CONDATTR_DESTROY=1;       AC_SUBST([HAVE_PTHREAD_CONDATTR_DESTROY])
218   HAVE_PTHREAD_COND_WAIT=1;              AC_SUBST([HAVE_PTHREAD_COND_WAIT])
219   HAVE_PTHREAD_COND_TIMEDWAIT=1;         AC_SUBST([HAVE_PTHREAD_COND_TIMEDWAIT])
220   HAVE_PTHREAD_COND_SIGNAL=1;            AC_SUBST([HAVE_PTHREAD_COND_SIGNAL])
221   HAVE_PTHREAD_COND_BROADCAST=1;         AC_SUBST([HAVE_PTHREAD_COND_BROADCAST])
222   HAVE_PTHREAD_COND_DESTROY=1;           AC_SUBST([HAVE_PTHREAD_COND_DESTROY])
223   HAVE_PTHREAD_KEY_CREATE=1;             AC_SUBST([HAVE_PTHREAD_KEY_CREATE])
224   HAVE_PTHREAD_SETSPECIFIC=1;            AC_SUBST([HAVE_PTHREAD_SETSPECIFIC])
225   HAVE_PTHREAD_GETSPECIFIC=1;            AC_SUBST([HAVE_PTHREAD_GETSPECIFIC])
226   HAVE_PTHREAD_KEY_DELETE=1;             AC_SUBST([HAVE_PTHREAD_KEY_DELETE])
227   HAVE_PTHREAD_SPIN_INIT=1;              AC_SUBST([HAVE_PTHREAD_SPIN_INIT])
228   HAVE_PTHREAD_SPIN_LOCK=1;              AC_SUBST([HAVE_PTHREAD_SPIN_LOCK])
229   HAVE_PTHREAD_SPIN_TRYLOCK=1;           AC_SUBST([HAVE_PTHREAD_SPIN_TRYLOCK])
230   HAVE_PTHREAD_SPIN_UNLOCK=1;            AC_SUBST([HAVE_PTHREAD_SPIN_UNLOCK])
231   HAVE_PTHREAD_SPIN_DESTROY=1;           AC_SUBST([HAVE_PTHREAD_SPIN_DESTROY])
232   REPLACE_PTHREAD_CREATE=0;              AC_SUBST([REPLACE_PTHREAD_CREATE])
233   REPLACE_PTHREAD_ATTR_INIT=0;           AC_SUBST([REPLACE_PTHREAD_ATTR_INIT])
234   REPLACE_PTHREAD_ATTR_GETDETACHSTATE=0; AC_SUBST([REPLACE_PTHREAD_ATTR_GETDETACHSTATE])
235   REPLACE_PTHREAD_ATTR_SETDETACHSTATE=0; AC_SUBST([REPLACE_PTHREAD_ATTR_SETDETACHSTATE])
236   REPLACE_PTHREAD_ATTR_DESTROY=0;        AC_SUBST([REPLACE_PTHREAD_ATTR_DESTROY])
237   REPLACE_PTHREAD_SELF=0;                AC_SUBST([REPLACE_PTHREAD_SELF])
238   REPLACE_PTHREAD_EQUAL=0;               AC_SUBST([REPLACE_PTHREAD_EQUAL])
239   REPLACE_PTHREAD_DETACH=0;              AC_SUBST([REPLACE_PTHREAD_DETACH])
240   REPLACE_PTHREAD_JOIN=0;                AC_SUBST([REPLACE_PTHREAD_JOIN])
241   REPLACE_PTHREAD_EXIT=0;                AC_SUBST([REPLACE_PTHREAD_EXIT])
242   REPLACE_PTHREAD_ONCE=0;                AC_SUBST([REPLACE_PTHREAD_ONCE])
243   REPLACE_PTHREAD_MUTEX_INIT=0;          AC_SUBST([REPLACE_PTHREAD_MUTEX_INIT])
244   REPLACE_PTHREAD_MUTEXATTR_INIT=0;      AC_SUBST([REPLACE_PTHREAD_MUTEXATTR_INIT])
245   REPLACE_PTHREAD_MUTEXATTR_GETTYPE=0;   AC_SUBST([REPLACE_PTHREAD_MUTEXATTR_GETTYPE])
246   REPLACE_PTHREAD_MUTEXATTR_SETTYPE=0;   AC_SUBST([REPLACE_PTHREAD_MUTEXATTR_SETTYPE])
247   REPLACE_PTHREAD_MUTEXATTR_GETROBUST=0; AC_SUBST([REPLACE_PTHREAD_MUTEXATTR_GETROBUST])
248   REPLACE_PTHREAD_MUTEXATTR_SETROBUST=0; AC_SUBST([REPLACE_PTHREAD_MUTEXATTR_SETROBUST])
249   REPLACE_PTHREAD_MUTEXATTR_DESTROY=0;   AC_SUBST([REPLACE_PTHREAD_MUTEXATTR_DESTROY])
250   REPLACE_PTHREAD_MUTEX_LOCK=0;          AC_SUBST([REPLACE_PTHREAD_MUTEX_LOCK])
251   REPLACE_PTHREAD_MUTEX_TRYLOCK=0;       AC_SUBST([REPLACE_PTHREAD_MUTEX_TRYLOCK])
252   REPLACE_PTHREAD_MUTEX_TIMEDLOCK=0;     AC_SUBST([REPLACE_PTHREAD_MUTEX_TIMEDLOCK])
253   REPLACE_PTHREAD_MUTEX_UNLOCK=0;        AC_SUBST([REPLACE_PTHREAD_MUTEX_UNLOCK])
254   REPLACE_PTHREAD_MUTEX_DESTROY=0;       AC_SUBST([REPLACE_PTHREAD_MUTEX_DESTROY])
255   REPLACE_PTHREAD_RWLOCK_INIT=0;         AC_SUBST([REPLACE_PTHREAD_RWLOCK_INIT])
256   REPLACE_PTHREAD_RWLOCKATTR_INIT=0;     AC_SUBST([REPLACE_PTHREAD_RWLOCKATTR_INIT])
257   REPLACE_PTHREAD_RWLOCKATTR_DESTROY=0;  AC_SUBST([REPLACE_PTHREAD_RWLOCKATTR_DESTROY])
258   REPLACE_PTHREAD_RWLOCK_RDLOCK=0;       AC_SUBST([REPLACE_PTHREAD_RWLOCK_RDLOCK])
259   REPLACE_PTHREAD_RWLOCK_WRLOCK=0;       AC_SUBST([REPLACE_PTHREAD_RWLOCK_WRLOCK])
260   REPLACE_PTHREAD_RWLOCK_TRYRDLOCK=0;    AC_SUBST([REPLACE_PTHREAD_RWLOCK_TRYRDLOCK])
261   REPLACE_PTHREAD_RWLOCK_TRYWRLOCK=0;    AC_SUBST([REPLACE_PTHREAD_RWLOCK_TRYWRLOCK])
262   REPLACE_PTHREAD_RWLOCK_TIMEDRDLOCK=0;  AC_SUBST([REPLACE_PTHREAD_RWLOCK_TIMEDRDLOCK])
263   REPLACE_PTHREAD_RWLOCK_TIMEDWRLOCK=0;  AC_SUBST([REPLACE_PTHREAD_RWLOCK_TIMEDWRLOCK])
264   REPLACE_PTHREAD_RWLOCK_UNLOCK=0;       AC_SUBST([REPLACE_PTHREAD_RWLOCK_UNLOCK])
265   REPLACE_PTHREAD_RWLOCK_DESTROY=0;      AC_SUBST([REPLACE_PTHREAD_RWLOCK_DESTROY])
266   REPLACE_PTHREAD_COND_INIT=0;           AC_SUBST([REPLACE_PTHREAD_COND_INIT])
267   REPLACE_PTHREAD_CONDATTR_INIT=0;       AC_SUBST([REPLACE_PTHREAD_CONDATTR_INIT])
268   REPLACE_PTHREAD_CONDATTR_DESTROY=0;    AC_SUBST([REPLACE_PTHREAD_CONDATTR_DESTROY])
269   REPLACE_PTHREAD_COND_WAIT=0;           AC_SUBST([REPLACE_PTHREAD_COND_WAIT])
270   REPLACE_PTHREAD_COND_TIMEDWAIT=0;      AC_SUBST([REPLACE_PTHREAD_COND_TIMEDWAIT])
271   REPLACE_PTHREAD_COND_SIGNAL=0;         AC_SUBST([REPLACE_PTHREAD_COND_SIGNAL])
272   REPLACE_PTHREAD_COND_BROADCAST=0;      AC_SUBST([REPLACE_PTHREAD_COND_BROADCAST])
273   REPLACE_PTHREAD_COND_DESTROY=0;        AC_SUBST([REPLACE_PTHREAD_COND_DESTROY])
274   REPLACE_PTHREAD_KEY_CREATE=0;          AC_SUBST([REPLACE_PTHREAD_KEY_CREATE])
275   REPLACE_PTHREAD_SETSPECIFIC=0;         AC_SUBST([REPLACE_PTHREAD_SETSPECIFIC])
276   REPLACE_PTHREAD_GETSPECIFIC=0;         AC_SUBST([REPLACE_PTHREAD_GETSPECIFIC])
277   REPLACE_PTHREAD_KEY_DELETE=0;          AC_SUBST([REPLACE_PTHREAD_KEY_DELETE])
278   REPLACE_PTHREAD_SPIN_INIT=0;           AC_SUBST([REPLACE_PTHREAD_SPIN_INIT])
279   REPLACE_PTHREAD_SPIN_LOCK=0;           AC_SUBST([REPLACE_PTHREAD_SPIN_LOCK])
280   REPLACE_PTHREAD_SPIN_TRYLOCK=0;        AC_SUBST([REPLACE_PTHREAD_SPIN_TRYLOCK])
281   REPLACE_PTHREAD_SPIN_UNLOCK=0;         AC_SUBST([REPLACE_PTHREAD_SPIN_UNLOCK])
282   REPLACE_PTHREAD_SPIN_DESTROY=0;        AC_SUBST([REPLACE_PTHREAD_SPIN_DESTROY])
283 ])