xref: /aosp_15_r20/external/curl/m4/curl-reentrant.m4 (revision 6236dae45794135f37c4eb022389c904c8b0090d)
1*6236dae4SAndroid Build Coastguard Worker#***************************************************************************
2*6236dae4SAndroid Build Coastguard Worker#                                  _   _ ____  _
3*6236dae4SAndroid Build Coastguard Worker#  Project                     ___| | | |  _ \| |
4*6236dae4SAndroid Build Coastguard Worker#                             / __| | | | |_) | |
5*6236dae4SAndroid Build Coastguard Worker#                            | (__| |_| |  _ <| |___
6*6236dae4SAndroid Build Coastguard Worker#                             \___|\___/|_| \_\_____|
7*6236dae4SAndroid Build Coastguard Worker#
8*6236dae4SAndroid Build Coastguard Worker# Copyright (C) Daniel Stenberg, <[email protected]>, et al.
9*6236dae4SAndroid Build Coastguard Worker#
10*6236dae4SAndroid Build Coastguard Worker# This software is licensed as described in the file COPYING, which
11*6236dae4SAndroid Build Coastguard Worker# you should have received as part of this distribution. The terms
12*6236dae4SAndroid Build Coastguard Worker# are also available at https://curl.se/docs/copyright.html.
13*6236dae4SAndroid Build Coastguard Worker#
14*6236dae4SAndroid Build Coastguard Worker# You may opt to use, copy, modify, merge, publish, distribute and/or sell
15*6236dae4SAndroid Build Coastguard Worker# copies of the Software, and permit persons to whom the Software is
16*6236dae4SAndroid Build Coastguard Worker# furnished to do so, under the terms of the COPYING file.
17*6236dae4SAndroid Build Coastguard Worker#
18*6236dae4SAndroid Build Coastguard Worker# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19*6236dae4SAndroid Build Coastguard Worker# KIND, either express or implied.
20*6236dae4SAndroid Build Coastguard Worker#
21*6236dae4SAndroid Build Coastguard Worker# SPDX-License-Identifier: curl
22*6236dae4SAndroid Build Coastguard Worker#
23*6236dae4SAndroid Build Coastguard Worker#***************************************************************************
24*6236dae4SAndroid Build Coastguard Worker
25*6236dae4SAndroid Build Coastguard Worker# File version for 'aclocal' use. Keep it a single number.
26*6236dae4SAndroid Build Coastguard Worker# serial 10
27*6236dae4SAndroid Build Coastguard Worker
28*6236dae4SAndroid Build Coastguard Workerdnl Note 1
29*6236dae4SAndroid Build Coastguard Workerdnl ------
30*6236dae4SAndroid Build Coastguard Workerdnl None of the CURL_CHECK_NEED_REENTRANT_* macros shall use HAVE_FOO_H to
31*6236dae4SAndroid Build Coastguard Workerdnl conditionally include header files. These macros are used early in the
32*6236dae4SAndroid Build Coastguard Workerdnl configure process much before header file availability is known.
33*6236dae4SAndroid Build Coastguard Worker
34*6236dae4SAndroid Build Coastguard Worker
35*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_NEED_REENTRANT_ERRNO
36*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
37*6236dae4SAndroid Build Coastguard Workerdnl Checks if the preprocessor _REENTRANT definition
38*6236dae4SAndroid Build Coastguard Workerdnl makes errno available as a preprocessor macro.
39*6236dae4SAndroid Build Coastguard Worker
40*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_NEED_REENTRANT_ERRNO], [
41*6236dae4SAndroid Build Coastguard Worker  AC_COMPILE_IFELSE([
42*6236dae4SAndroid Build Coastguard Worker    AC_LANG_PROGRAM([[
43*6236dae4SAndroid Build Coastguard Worker      #include <errno.h>
44*6236dae4SAndroid Build Coastguard Worker    ]],[[
45*6236dae4SAndroid Build Coastguard Worker      if(0 != errno)
46*6236dae4SAndroid Build Coastguard Worker        return 1;
47*6236dae4SAndroid Build Coastguard Worker    ]])
48*6236dae4SAndroid Build Coastguard Worker  ],[
49*6236dae4SAndroid Build Coastguard Worker    tmp_errno="yes"
50*6236dae4SAndroid Build Coastguard Worker  ],[
51*6236dae4SAndroid Build Coastguard Worker    tmp_errno="no"
52*6236dae4SAndroid Build Coastguard Worker  ])
53*6236dae4SAndroid Build Coastguard Worker  if test "$tmp_errno" = "yes"; then
54*6236dae4SAndroid Build Coastguard Worker    AC_COMPILE_IFELSE([
55*6236dae4SAndroid Build Coastguard Worker      AC_LANG_PROGRAM([[
56*6236dae4SAndroid Build Coastguard Worker        #include <errno.h>
57*6236dae4SAndroid Build Coastguard Worker      ]],[[
58*6236dae4SAndroid Build Coastguard Worker        #ifdef errno
59*6236dae4SAndroid Build Coastguard Worker          int dummy=1;
60*6236dae4SAndroid Build Coastguard Worker        #else
61*6236dae4SAndroid Build Coastguard Worker          #error force compilation error
62*6236dae4SAndroid Build Coastguard Worker        #endif
63*6236dae4SAndroid Build Coastguard Worker      ]])
64*6236dae4SAndroid Build Coastguard Worker    ],[
65*6236dae4SAndroid Build Coastguard Worker      tmp_errno="errno_macro_defined"
66*6236dae4SAndroid Build Coastguard Worker    ],[
67*6236dae4SAndroid Build Coastguard Worker      AC_COMPILE_IFELSE([
68*6236dae4SAndroid Build Coastguard Worker        AC_LANG_PROGRAM([[
69*6236dae4SAndroid Build Coastguard Worker          #define _REENTRANT
70*6236dae4SAndroid Build Coastguard Worker          #include <errno.h>
71*6236dae4SAndroid Build Coastguard Worker        ]],[[
72*6236dae4SAndroid Build Coastguard Worker          #ifdef errno
73*6236dae4SAndroid Build Coastguard Worker            int dummy=1;
74*6236dae4SAndroid Build Coastguard Worker          #else
75*6236dae4SAndroid Build Coastguard Worker            #error force compilation error
76*6236dae4SAndroid Build Coastguard Worker          #endif
77*6236dae4SAndroid Build Coastguard Worker        ]])
78*6236dae4SAndroid Build Coastguard Worker      ],[
79*6236dae4SAndroid Build Coastguard Worker        tmp_errno="errno_macro_needs_reentrant"
80*6236dae4SAndroid Build Coastguard Worker        tmp_need_reentrant="yes"
81*6236dae4SAndroid Build Coastguard Worker      ])
82*6236dae4SAndroid Build Coastguard Worker    ])
83*6236dae4SAndroid Build Coastguard Worker  fi
84*6236dae4SAndroid Build Coastguard Worker])
85*6236dae4SAndroid Build Coastguard Worker
86*6236dae4SAndroid Build Coastguard Worker
87*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_NEED_REENTRANT_GMTIME_R
88*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
89*6236dae4SAndroid Build Coastguard Workerdnl Checks if the preprocessor _REENTRANT definition
90*6236dae4SAndroid Build Coastguard Workerdnl makes function gmtime_r compiler visible.
91*6236dae4SAndroid Build Coastguard Worker
92*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_NEED_REENTRANT_GMTIME_R], [
93*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
94*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([gmtime_r])
95*6236dae4SAndroid Build Coastguard Worker  ],[
96*6236dae4SAndroid Build Coastguard Worker    tmp_gmtime_r="yes"
97*6236dae4SAndroid Build Coastguard Worker  ],[
98*6236dae4SAndroid Build Coastguard Worker    tmp_gmtime_r="no"
99*6236dae4SAndroid Build Coastguard Worker  ])
100*6236dae4SAndroid Build Coastguard Worker  if test "$tmp_gmtime_r" = "yes"; then
101*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([gmtime_r],[
102*6236dae4SAndroid Build Coastguard Worker      #include <sys/types.h>
103*6236dae4SAndroid Build Coastguard Worker      #include <time.h>
104*6236dae4SAndroid Build Coastguard Worker    ],[
105*6236dae4SAndroid Build Coastguard Worker      tmp_gmtime_r="proto_declared"
106*6236dae4SAndroid Build Coastguard Worker    ],[
107*6236dae4SAndroid Build Coastguard Worker      AC_EGREP_CPP([gmtime_r],[
108*6236dae4SAndroid Build Coastguard Worker        #define _REENTRANT
109*6236dae4SAndroid Build Coastguard Worker        #include <sys/types.h>
110*6236dae4SAndroid Build Coastguard Worker        #include <time.h>
111*6236dae4SAndroid Build Coastguard Worker      ],[
112*6236dae4SAndroid Build Coastguard Worker        tmp_gmtime_r="proto_needs_reentrant"
113*6236dae4SAndroid Build Coastguard Worker        tmp_need_reentrant="yes"
114*6236dae4SAndroid Build Coastguard Worker      ])
115*6236dae4SAndroid Build Coastguard Worker    ])
116*6236dae4SAndroid Build Coastguard Worker  fi
117*6236dae4SAndroid Build Coastguard Worker])
118*6236dae4SAndroid Build Coastguard Worker
119*6236dae4SAndroid Build Coastguard Worker
120*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_NEED_REENTRANT_LOCALTIME_R
121*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
122*6236dae4SAndroid Build Coastguard Workerdnl Checks if the preprocessor _REENTRANT definition
123*6236dae4SAndroid Build Coastguard Workerdnl makes function localtime_r compiler visible.
124*6236dae4SAndroid Build Coastguard Worker
125*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_NEED_REENTRANT_LOCALTIME_R], [
126*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
127*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([localtime_r])
128*6236dae4SAndroid Build Coastguard Worker  ],[
129*6236dae4SAndroid Build Coastguard Worker    tmp_localtime_r="yes"
130*6236dae4SAndroid Build Coastguard Worker  ],[
131*6236dae4SAndroid Build Coastguard Worker    tmp_localtime_r="no"
132*6236dae4SAndroid Build Coastguard Worker  ])
133*6236dae4SAndroid Build Coastguard Worker  if test "$tmp_localtime_r" = "yes"; then
134*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([localtime_r],[
135*6236dae4SAndroid Build Coastguard Worker      #include <sys/types.h>
136*6236dae4SAndroid Build Coastguard Worker      #include <time.h>
137*6236dae4SAndroid Build Coastguard Worker    ],[
138*6236dae4SAndroid Build Coastguard Worker      tmp_localtime_r="proto_declared"
139*6236dae4SAndroid Build Coastguard Worker    ],[
140*6236dae4SAndroid Build Coastguard Worker      AC_EGREP_CPP([localtime_r],[
141*6236dae4SAndroid Build Coastguard Worker        #define _REENTRANT
142*6236dae4SAndroid Build Coastguard Worker        #include <sys/types.h>
143*6236dae4SAndroid Build Coastguard Worker        #include <time.h>
144*6236dae4SAndroid Build Coastguard Worker      ],[
145*6236dae4SAndroid Build Coastguard Worker        tmp_localtime_r="proto_needs_reentrant"
146*6236dae4SAndroid Build Coastguard Worker        tmp_need_reentrant="yes"
147*6236dae4SAndroid Build Coastguard Worker      ])
148*6236dae4SAndroid Build Coastguard Worker    ])
149*6236dae4SAndroid Build Coastguard Worker  fi
150*6236dae4SAndroid Build Coastguard Worker])
151*6236dae4SAndroid Build Coastguard Worker
152*6236dae4SAndroid Build Coastguard Worker
153*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_NEED_REENTRANT_STRERROR_R
154*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
155*6236dae4SAndroid Build Coastguard Workerdnl Checks if the preprocessor _REENTRANT definition
156*6236dae4SAndroid Build Coastguard Workerdnl makes function strerror_r compiler visible.
157*6236dae4SAndroid Build Coastguard Worker
158*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_NEED_REENTRANT_STRERROR_R], [
159*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
160*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([strerror_r])
161*6236dae4SAndroid Build Coastguard Worker  ],[
162*6236dae4SAndroid Build Coastguard Worker    tmp_strerror_r="yes"
163*6236dae4SAndroid Build Coastguard Worker  ],[
164*6236dae4SAndroid Build Coastguard Worker    tmp_strerror_r="no"
165*6236dae4SAndroid Build Coastguard Worker  ])
166*6236dae4SAndroid Build Coastguard Worker  if test "$tmp_strerror_r" = "yes"; then
167*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([strerror_r],[
168*6236dae4SAndroid Build Coastguard Worker      #include <sys/types.h>
169*6236dae4SAndroid Build Coastguard Worker      #include <string.h>
170*6236dae4SAndroid Build Coastguard Worker    ],[
171*6236dae4SAndroid Build Coastguard Worker      tmp_strerror_r="proto_declared"
172*6236dae4SAndroid Build Coastguard Worker    ],[
173*6236dae4SAndroid Build Coastguard Worker      AC_EGREP_CPP([strerror_r],[
174*6236dae4SAndroid Build Coastguard Worker        #define _REENTRANT
175*6236dae4SAndroid Build Coastguard Worker        #include <sys/types.h>
176*6236dae4SAndroid Build Coastguard Worker        #include <string.h>
177*6236dae4SAndroid Build Coastguard Worker      ],[
178*6236dae4SAndroid Build Coastguard Worker        tmp_strerror_r="proto_needs_reentrant"
179*6236dae4SAndroid Build Coastguard Worker        tmp_need_reentrant="yes"
180*6236dae4SAndroid Build Coastguard Worker      ])
181*6236dae4SAndroid Build Coastguard Worker    ])
182*6236dae4SAndroid Build Coastguard Worker  fi
183*6236dae4SAndroid Build Coastguard Worker])
184*6236dae4SAndroid Build Coastguard Worker
185*6236dae4SAndroid Build Coastguard Worker
186*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_NEED_REENTRANT_STRTOK_R
187*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
188*6236dae4SAndroid Build Coastguard Workerdnl Checks if the preprocessor _REENTRANT definition
189*6236dae4SAndroid Build Coastguard Workerdnl makes function strtok_r compiler visible.
190*6236dae4SAndroid Build Coastguard Worker
191*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_NEED_REENTRANT_STRTOK_R], [
192*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
193*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([strtok_r])
194*6236dae4SAndroid Build Coastguard Worker  ],[
195*6236dae4SAndroid Build Coastguard Worker    tmp_strtok_r="yes"
196*6236dae4SAndroid Build Coastguard Worker  ],[
197*6236dae4SAndroid Build Coastguard Worker    tmp_strtok_r="no"
198*6236dae4SAndroid Build Coastguard Worker  ])
199*6236dae4SAndroid Build Coastguard Worker  if test "$tmp_strtok_r" = "yes"; then
200*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([strtok_r],[
201*6236dae4SAndroid Build Coastguard Worker      #include <sys/types.h>
202*6236dae4SAndroid Build Coastguard Worker      #include <string.h>
203*6236dae4SAndroid Build Coastguard Worker    ],[
204*6236dae4SAndroid Build Coastguard Worker      tmp_strtok_r="proto_declared"
205*6236dae4SAndroid Build Coastguard Worker    ],[
206*6236dae4SAndroid Build Coastguard Worker      AC_EGREP_CPP([strtok_r],[
207*6236dae4SAndroid Build Coastguard Worker        #define _REENTRANT
208*6236dae4SAndroid Build Coastguard Worker        #include <sys/types.h>
209*6236dae4SAndroid Build Coastguard Worker        #include <string.h>
210*6236dae4SAndroid Build Coastguard Worker      ],[
211*6236dae4SAndroid Build Coastguard Worker        tmp_strtok_r="proto_needs_reentrant"
212*6236dae4SAndroid Build Coastguard Worker        tmp_need_reentrant="yes"
213*6236dae4SAndroid Build Coastguard Worker      ])
214*6236dae4SAndroid Build Coastguard Worker    ])
215*6236dae4SAndroid Build Coastguard Worker  fi
216*6236dae4SAndroid Build Coastguard Worker])
217*6236dae4SAndroid Build Coastguard Worker
218*6236dae4SAndroid Build Coastguard Worker
219*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R
220*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
221*6236dae4SAndroid Build Coastguard Workerdnl Checks if the preprocessor _REENTRANT definition
222*6236dae4SAndroid Build Coastguard Workerdnl makes function gethostbyname_r compiler visible.
223*6236dae4SAndroid Build Coastguard Worker
224*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R], [
225*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
226*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([gethostbyname_r])
227*6236dae4SAndroid Build Coastguard Worker  ],[
228*6236dae4SAndroid Build Coastguard Worker    tmp_gethostbyname_r="yes"
229*6236dae4SAndroid Build Coastguard Worker  ],[
230*6236dae4SAndroid Build Coastguard Worker    tmp_gethostbyname_r="no"
231*6236dae4SAndroid Build Coastguard Worker  ])
232*6236dae4SAndroid Build Coastguard Worker  if test "$tmp_gethostbyname_r" = "yes"; then
233*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([gethostbyname_r],[
234*6236dae4SAndroid Build Coastguard Worker      #include <sys/types.h>
235*6236dae4SAndroid Build Coastguard Worker      #include <netdb.h>
236*6236dae4SAndroid Build Coastguard Worker    ],[
237*6236dae4SAndroid Build Coastguard Worker      tmp_gethostbyname_r="proto_declared"
238*6236dae4SAndroid Build Coastguard Worker    ],[
239*6236dae4SAndroid Build Coastguard Worker      AC_EGREP_CPP([gethostbyname_r],[
240*6236dae4SAndroid Build Coastguard Worker        #define _REENTRANT
241*6236dae4SAndroid Build Coastguard Worker        #include <sys/types.h>
242*6236dae4SAndroid Build Coastguard Worker        #include <netdb.h>
243*6236dae4SAndroid Build Coastguard Worker      ],[
244*6236dae4SAndroid Build Coastguard Worker        tmp_gethostbyname_r="proto_needs_reentrant"
245*6236dae4SAndroid Build Coastguard Worker        tmp_need_reentrant="yes"
246*6236dae4SAndroid Build Coastguard Worker      ])
247*6236dae4SAndroid Build Coastguard Worker    ])
248*6236dae4SAndroid Build Coastguard Worker  fi
249*6236dae4SAndroid Build Coastguard Worker])
250*6236dae4SAndroid Build Coastguard Worker
251*6236dae4SAndroid Build Coastguard Worker
252*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R
253*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
254*6236dae4SAndroid Build Coastguard Workerdnl Checks if the preprocessor _REENTRANT definition
255*6236dae4SAndroid Build Coastguard Workerdnl makes function getprotobyname_r compiler visible.
256*6236dae4SAndroid Build Coastguard Worker
257*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R], [
258*6236dae4SAndroid Build Coastguard Worker  AC_LINK_IFELSE([
259*6236dae4SAndroid Build Coastguard Worker    AC_LANG_FUNC_LINK_TRY([getprotobyname_r])
260*6236dae4SAndroid Build Coastguard Worker  ],[
261*6236dae4SAndroid Build Coastguard Worker    tmp_getprotobyname_r="yes"
262*6236dae4SAndroid Build Coastguard Worker  ],[
263*6236dae4SAndroid Build Coastguard Worker    tmp_getprotobyname_r="no"
264*6236dae4SAndroid Build Coastguard Worker  ])
265*6236dae4SAndroid Build Coastguard Worker  if test "$tmp_getprotobyname_r" = "yes"; then
266*6236dae4SAndroid Build Coastguard Worker    AC_EGREP_CPP([getprotobyname_r],[
267*6236dae4SAndroid Build Coastguard Worker      #include <sys/types.h>
268*6236dae4SAndroid Build Coastguard Worker      #include <netdb.h>
269*6236dae4SAndroid Build Coastguard Worker    ],[
270*6236dae4SAndroid Build Coastguard Worker      tmp_getprotobyname_r="proto_declared"
271*6236dae4SAndroid Build Coastguard Worker    ],[
272*6236dae4SAndroid Build Coastguard Worker      AC_EGREP_CPP([getprotobyname_r],[
273*6236dae4SAndroid Build Coastguard Worker        #define _REENTRANT
274*6236dae4SAndroid Build Coastguard Worker        #include <sys/types.h>
275*6236dae4SAndroid Build Coastguard Worker        #include <netdb.h>
276*6236dae4SAndroid Build Coastguard Worker      ],[
277*6236dae4SAndroid Build Coastguard Worker        tmp_getprotobyname_r="proto_needs_reentrant"
278*6236dae4SAndroid Build Coastguard Worker        tmp_need_reentrant="yes"
279*6236dae4SAndroid Build Coastguard Worker      ])
280*6236dae4SAndroid Build Coastguard Worker    ])
281*6236dae4SAndroid Build Coastguard Worker  fi
282*6236dae4SAndroid Build Coastguard Worker])
283*6236dae4SAndroid Build Coastguard Worker
284*6236dae4SAndroid Build Coastguard Worker
285*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_NEED_REENTRANT_FUNCTIONS_R
286*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
287*6236dae4SAndroid Build Coastguard Workerdnl Checks if the preprocessor _REENTRANT definition
288*6236dae4SAndroid Build Coastguard Workerdnl makes several _r functions compiler visible.
289*6236dae4SAndroid Build Coastguard Workerdnl Internal macro for CURL_CONFIGURE_REENTRANT.
290*6236dae4SAndroid Build Coastguard Worker
291*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_NEED_REENTRANT_FUNCTIONS_R], [
292*6236dae4SAndroid Build Coastguard Worker  if test "$tmp_need_reentrant" = "no"; then
293*6236dae4SAndroid Build Coastguard Worker    CURL_CHECK_NEED_REENTRANT_GMTIME_R
294*6236dae4SAndroid Build Coastguard Worker  fi
295*6236dae4SAndroid Build Coastguard Worker  if test "$tmp_need_reentrant" = "no"; then
296*6236dae4SAndroid Build Coastguard Worker    CURL_CHECK_NEED_REENTRANT_LOCALTIME_R
297*6236dae4SAndroid Build Coastguard Worker  fi
298*6236dae4SAndroid Build Coastguard Worker  if test "$tmp_need_reentrant" = "no"; then
299*6236dae4SAndroid Build Coastguard Worker    CURL_CHECK_NEED_REENTRANT_STRERROR_R
300*6236dae4SAndroid Build Coastguard Worker  fi
301*6236dae4SAndroid Build Coastguard Worker  if test "$tmp_need_reentrant" = "no"; then
302*6236dae4SAndroid Build Coastguard Worker    CURL_CHECK_NEED_REENTRANT_STRTOK_R
303*6236dae4SAndroid Build Coastguard Worker  fi
304*6236dae4SAndroid Build Coastguard Worker  if test "$tmp_need_reentrant" = "no"; then
305*6236dae4SAndroid Build Coastguard Worker    CURL_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R
306*6236dae4SAndroid Build Coastguard Worker  fi
307*6236dae4SAndroid Build Coastguard Worker  if test "$tmp_need_reentrant" = "no"; then
308*6236dae4SAndroid Build Coastguard Worker    CURL_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R
309*6236dae4SAndroid Build Coastguard Worker  fi
310*6236dae4SAndroid Build Coastguard Worker])
311*6236dae4SAndroid Build Coastguard Worker
312*6236dae4SAndroid Build Coastguard Worker
313*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_NEED_REENTRANT_SYSTEM
314*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
315*6236dae4SAndroid Build Coastguard Workerdnl Checks if the preprocessor _REENTRANT definition
316*6236dae4SAndroid Build Coastguard Workerdnl must be unconditionally done for this platform.
317*6236dae4SAndroid Build Coastguard Workerdnl Internal macro for CURL_CONFIGURE_REENTRANT.
318*6236dae4SAndroid Build Coastguard Worker
319*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_NEED_REENTRANT_SYSTEM], [
320*6236dae4SAndroid Build Coastguard Worker  case $host_os in
321*6236dae4SAndroid Build Coastguard Worker    solaris*)
322*6236dae4SAndroid Build Coastguard Worker      tmp_need_reentrant="yes"
323*6236dae4SAndroid Build Coastguard Worker      ;;
324*6236dae4SAndroid Build Coastguard Worker    *)
325*6236dae4SAndroid Build Coastguard Worker      tmp_need_reentrant="no"
326*6236dae4SAndroid Build Coastguard Worker      ;;
327*6236dae4SAndroid Build Coastguard Worker  esac
328*6236dae4SAndroid Build Coastguard Worker])
329*6236dae4SAndroid Build Coastguard Worker
330*6236dae4SAndroid Build Coastguard Worker
331*6236dae4SAndroid Build Coastguard Workerdnl CURL_CHECK_NEED_THREAD_SAFE_SYSTEM
332*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
333*6236dae4SAndroid Build Coastguard Workerdnl Checks if the preprocessor _THREAD_SAFE definition
334*6236dae4SAndroid Build Coastguard Workerdnl must be unconditionally done for this platform.
335*6236dae4SAndroid Build Coastguard Workerdnl Internal macro for CURL_CONFIGURE_THREAD_SAFE.
336*6236dae4SAndroid Build Coastguard Worker
337*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CHECK_NEED_THREAD_SAFE_SYSTEM], [
338*6236dae4SAndroid Build Coastguard Worker  case $host_os in
339*6236dae4SAndroid Build Coastguard Worker    aix[[123]].* | aix4.[[012]].*)
340*6236dae4SAndroid Build Coastguard Worker      dnl aix 4.2 and older
341*6236dae4SAndroid Build Coastguard Worker      tmp_need_thread_safe="no"
342*6236dae4SAndroid Build Coastguard Worker      ;;
343*6236dae4SAndroid Build Coastguard Worker    aix*)
344*6236dae4SAndroid Build Coastguard Worker      dnl AIX 4.3 and newer
345*6236dae4SAndroid Build Coastguard Worker      tmp_need_thread_safe="yes"
346*6236dae4SAndroid Build Coastguard Worker      ;;
347*6236dae4SAndroid Build Coastguard Worker    *)
348*6236dae4SAndroid Build Coastguard Worker      tmp_need_thread_safe="no"
349*6236dae4SAndroid Build Coastguard Worker      ;;
350*6236dae4SAndroid Build Coastguard Worker  esac
351*6236dae4SAndroid Build Coastguard Worker])
352*6236dae4SAndroid Build Coastguard Worker
353*6236dae4SAndroid Build Coastguard Worker
354*6236dae4SAndroid Build Coastguard Workerdnl CURL_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT
355*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
356*6236dae4SAndroid Build Coastguard Workerdnl This macro ensures that configuration tests done
357*6236dae4SAndroid Build Coastguard Workerdnl after this will execute with preprocessor symbol
358*6236dae4SAndroid Build Coastguard Workerdnl _REENTRANT defined. This macro also ensures that
359*6236dae4SAndroid Build Coastguard Workerdnl the generated config file defines NEED_REENTRANT
360*6236dae4SAndroid Build Coastguard Workerdnl and that in turn curl_setup.h will define _REENTRANT.
361*6236dae4SAndroid Build Coastguard Workerdnl Internal macro for CURL_CONFIGURE_REENTRANT.
362*6236dae4SAndroid Build Coastguard Worker
363*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT], [
364*6236dae4SAndroid Build Coastguard WorkerAC_DEFINE(NEED_REENTRANT, 1,
365*6236dae4SAndroid Build Coastguard Worker  [Define to 1 if _REENTRANT preprocessor symbol must be defined.])
366*6236dae4SAndroid Build Coastguard Workercat >>confdefs.h <<_EOF
367*6236dae4SAndroid Build Coastguard Worker#ifndef _REENTRANT
368*6236dae4SAndroid Build Coastguard Worker#  define _REENTRANT
369*6236dae4SAndroid Build Coastguard Worker#endif
370*6236dae4SAndroid Build Coastguard Worker_EOF
371*6236dae4SAndroid Build Coastguard Worker])
372*6236dae4SAndroid Build Coastguard Worker
373*6236dae4SAndroid Build Coastguard Worker
374*6236dae4SAndroid Build Coastguard Workerdnl CURL_CONFIGURE_FROM_NOW_ON_WITH_THREAD_SAFE
375*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
376*6236dae4SAndroid Build Coastguard Workerdnl This macro ensures that configuration tests done
377*6236dae4SAndroid Build Coastguard Workerdnl after this will execute with preprocessor symbol
378*6236dae4SAndroid Build Coastguard Workerdnl _THREAD_SAFE defined. This macro also ensures that
379*6236dae4SAndroid Build Coastguard Workerdnl the generated config file defines NEED_THREAD_SAFE
380*6236dae4SAndroid Build Coastguard Workerdnl and that in turn curl_setup.h will define _THREAD_SAFE.
381*6236dae4SAndroid Build Coastguard Workerdnl Internal macro for CURL_CONFIGURE_THREAD_SAFE.
382*6236dae4SAndroid Build Coastguard Worker
383*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CONFIGURE_FROM_NOW_ON_WITH_THREAD_SAFE], [
384*6236dae4SAndroid Build Coastguard WorkerAC_DEFINE(NEED_THREAD_SAFE, 1,
385*6236dae4SAndroid Build Coastguard Worker  [Define to 1 if _THREAD_SAFE preprocessor symbol must be defined.])
386*6236dae4SAndroid Build Coastguard Workercat >>confdefs.h <<_EOF
387*6236dae4SAndroid Build Coastguard Worker#ifndef _THREAD_SAFE
388*6236dae4SAndroid Build Coastguard Worker#  define _THREAD_SAFE
389*6236dae4SAndroid Build Coastguard Worker#endif
390*6236dae4SAndroid Build Coastguard Worker_EOF
391*6236dae4SAndroid Build Coastguard Worker])
392*6236dae4SAndroid Build Coastguard Worker
393*6236dae4SAndroid Build Coastguard Worker
394*6236dae4SAndroid Build Coastguard Workerdnl CURL_CONFIGURE_REENTRANT
395*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
396*6236dae4SAndroid Build Coastguard Workerdnl This first checks if the preprocessor _REENTRANT
397*6236dae4SAndroid Build Coastguard Workerdnl symbol is already defined. If it isn't currently
398*6236dae4SAndroid Build Coastguard Workerdnl defined a set of checks are performed to verify
399*6236dae4SAndroid Build Coastguard Workerdnl if its definition is required to make visible to
400*6236dae4SAndroid Build Coastguard Workerdnl the compiler a set of *_r functions. Finally, if
401*6236dae4SAndroid Build Coastguard Workerdnl _REENTRANT is already defined or needed it takes
402*6236dae4SAndroid Build Coastguard Workerdnl care of making adjustments necessary to ensure
403*6236dae4SAndroid Build Coastguard Workerdnl that it is defined equally for further configure
404*6236dae4SAndroid Build Coastguard Workerdnl tests and generated config file.
405*6236dae4SAndroid Build Coastguard Worker
406*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CONFIGURE_REENTRANT], [
407*6236dae4SAndroid Build Coastguard Worker  AC_PREREQ([2.50])dnl
408*6236dae4SAndroid Build Coastguard Worker  #
409*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if _REENTRANT is already defined])
410*6236dae4SAndroid Build Coastguard Worker  AC_COMPILE_IFELSE([
411*6236dae4SAndroid Build Coastguard Worker    AC_LANG_PROGRAM([[
412*6236dae4SAndroid Build Coastguard Worker    ]],[[
413*6236dae4SAndroid Build Coastguard Worker      #ifdef _REENTRANT
414*6236dae4SAndroid Build Coastguard Worker        int dummy=1;
415*6236dae4SAndroid Build Coastguard Worker      #else
416*6236dae4SAndroid Build Coastguard Worker        #error force compilation error
417*6236dae4SAndroid Build Coastguard Worker      #endif
418*6236dae4SAndroid Build Coastguard Worker    ]])
419*6236dae4SAndroid Build Coastguard Worker  ],[
420*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
421*6236dae4SAndroid Build Coastguard Worker    tmp_reentrant_initially_defined="yes"
422*6236dae4SAndroid Build Coastguard Worker  ],[
423*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
424*6236dae4SAndroid Build Coastguard Worker    tmp_reentrant_initially_defined="no"
425*6236dae4SAndroid Build Coastguard Worker  ])
426*6236dae4SAndroid Build Coastguard Worker  #
427*6236dae4SAndroid Build Coastguard Worker  if test "$tmp_reentrant_initially_defined" = "no"; then
428*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if _REENTRANT is actually needed])
429*6236dae4SAndroid Build Coastguard Worker    CURL_CHECK_NEED_REENTRANT_SYSTEM
430*6236dae4SAndroid Build Coastguard Worker    if test "$tmp_need_reentrant" = "no"; then
431*6236dae4SAndroid Build Coastguard Worker      CURL_CHECK_NEED_REENTRANT_ERRNO
432*6236dae4SAndroid Build Coastguard Worker    fi
433*6236dae4SAndroid Build Coastguard Worker    if test "$tmp_need_reentrant" = "no"; then
434*6236dae4SAndroid Build Coastguard Worker      CURL_CHECK_NEED_REENTRANT_FUNCTIONS_R
435*6236dae4SAndroid Build Coastguard Worker    fi
436*6236dae4SAndroid Build Coastguard Worker    if test "$tmp_need_reentrant" = "yes"; then
437*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
438*6236dae4SAndroid Build Coastguard Worker    else
439*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
440*6236dae4SAndroid Build Coastguard Worker    fi
441*6236dae4SAndroid Build Coastguard Worker  fi
442*6236dae4SAndroid Build Coastguard Worker  #
443*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if _REENTRANT is onwards defined])
444*6236dae4SAndroid Build Coastguard Worker  if test "$tmp_reentrant_initially_defined" = "yes" ||
445*6236dae4SAndroid Build Coastguard Worker    test "$tmp_need_reentrant" = "yes"; then
446*6236dae4SAndroid Build Coastguard Worker    CURL_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT
447*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
448*6236dae4SAndroid Build Coastguard Worker  else
449*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
450*6236dae4SAndroid Build Coastguard Worker  fi
451*6236dae4SAndroid Build Coastguard Worker  #
452*6236dae4SAndroid Build Coastguard Worker])
453*6236dae4SAndroid Build Coastguard Worker
454*6236dae4SAndroid Build Coastguard Worker
455*6236dae4SAndroid Build Coastguard Workerdnl CURL_CONFIGURE_THREAD_SAFE
456*6236dae4SAndroid Build Coastguard Workerdnl -------------------------------------------------
457*6236dae4SAndroid Build Coastguard Workerdnl This first checks if the preprocessor _THREAD_SAFE
458*6236dae4SAndroid Build Coastguard Workerdnl symbol is already defined. If it isn't currently
459*6236dae4SAndroid Build Coastguard Workerdnl defined a set of checks are performed to verify
460*6236dae4SAndroid Build Coastguard Workerdnl if its definition is required. Finally, if
461*6236dae4SAndroid Build Coastguard Workerdnl _THREAD_SAFE is already defined or needed it takes
462*6236dae4SAndroid Build Coastguard Workerdnl care of making adjustments necessary to ensure
463*6236dae4SAndroid Build Coastguard Workerdnl that it is defined equally for further configure
464*6236dae4SAndroid Build Coastguard Workerdnl tests and generated config file.
465*6236dae4SAndroid Build Coastguard Worker
466*6236dae4SAndroid Build Coastguard WorkerAC_DEFUN([CURL_CONFIGURE_THREAD_SAFE], [
467*6236dae4SAndroid Build Coastguard Worker  AC_PREREQ([2.50])dnl
468*6236dae4SAndroid Build Coastguard Worker  #
469*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if _THREAD_SAFE is already defined])
470*6236dae4SAndroid Build Coastguard Worker  AC_COMPILE_IFELSE([
471*6236dae4SAndroid Build Coastguard Worker    AC_LANG_PROGRAM([[
472*6236dae4SAndroid Build Coastguard Worker    ]],[[
473*6236dae4SAndroid Build Coastguard Worker      #ifdef _THREAD_SAFE
474*6236dae4SAndroid Build Coastguard Worker        int dummy=1;
475*6236dae4SAndroid Build Coastguard Worker      #else
476*6236dae4SAndroid Build Coastguard Worker        #error force compilation error
477*6236dae4SAndroid Build Coastguard Worker      #endif
478*6236dae4SAndroid Build Coastguard Worker    ]])
479*6236dae4SAndroid Build Coastguard Worker  ],[
480*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
481*6236dae4SAndroid Build Coastguard Worker    tmp_thread_safe_initially_defined="yes"
482*6236dae4SAndroid Build Coastguard Worker  ],[
483*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
484*6236dae4SAndroid Build Coastguard Worker    tmp_thread_safe_initially_defined="no"
485*6236dae4SAndroid Build Coastguard Worker  ])
486*6236dae4SAndroid Build Coastguard Worker  #
487*6236dae4SAndroid Build Coastguard Worker  if test "$tmp_thread_safe_initially_defined" = "no"; then
488*6236dae4SAndroid Build Coastguard Worker    AC_MSG_CHECKING([if _THREAD_SAFE is actually needed])
489*6236dae4SAndroid Build Coastguard Worker    CURL_CHECK_NEED_THREAD_SAFE_SYSTEM
490*6236dae4SAndroid Build Coastguard Worker    if test "$tmp_need_thread_safe" = "yes"; then
491*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([yes])
492*6236dae4SAndroid Build Coastguard Worker    else
493*6236dae4SAndroid Build Coastguard Worker      AC_MSG_RESULT([no])
494*6236dae4SAndroid Build Coastguard Worker    fi
495*6236dae4SAndroid Build Coastguard Worker  fi
496*6236dae4SAndroid Build Coastguard Worker  #
497*6236dae4SAndroid Build Coastguard Worker  AC_MSG_CHECKING([if _THREAD_SAFE is onwards defined])
498*6236dae4SAndroid Build Coastguard Worker  if test "$tmp_thread_safe_initially_defined" = "yes" ||
499*6236dae4SAndroid Build Coastguard Worker    test "$tmp_need_thread_safe" = "yes"; then
500*6236dae4SAndroid Build Coastguard Worker    CURL_CONFIGURE_FROM_NOW_ON_WITH_THREAD_SAFE
501*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([yes])
502*6236dae4SAndroid Build Coastguard Worker  else
503*6236dae4SAndroid Build Coastguard Worker    AC_MSG_RESULT([no])
504*6236dae4SAndroid Build Coastguard Worker  fi
505*6236dae4SAndroid Build Coastguard Worker  #
506*6236dae4SAndroid Build Coastguard Worker])
507