Resync
[CMakeLuaTailorHgBridge.git] / CMakeLua / Utilities / cmcurl-7.19.0 / m4 / curl-reentrant.m4
blob81fc799cf8225d6953e09ded4104fa0705d1f38f
1 #***************************************************************************
2 #                                  _   _ ____  _
3 #  Project                     ___| | | |  _ \| |
4 #                             / __| | | | |_) | |
5 #                            | (__| |_| |  _ <| |___
6 #                             \___|\___/|_| \_\_____|
8 # Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
10 # This software is licensed as described in the file COPYING, which
11 # you should have received as part of this distribution. The terms
12 # are also available at http://curl.haxx.se/docs/copyright.html.
14 # You may opt to use, copy, modify, merge, publish, distribute and/or sell
15 # copies of the Software, and permit persons to whom the Software is
16 # furnished to do so, under the terms of the COPYING file.
18 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19 # KIND, either express or implied.
21 # $Id: curl-reentrant.m4,v 1.1.1.1 2008-09-23 16:32:05 hoffman Exp $
22 #***************************************************************************
24 # File version for 'aclocal' use. Keep it a single number.
25 # serial 2
27 dnl Note 1
28 dnl ------
29 dnl None of the CURL_CHECK_NEED_REENTRANT_* macros shall use HAVE_FOO_H to
30 dnl conditionally include header files. These macros are used early in the
31 dnl configure process much before header file availability is known.
34 dnl CURL_CHECK_NEED_REENTRANT_GMTIME_R
35 dnl -------------------------------------------------
36 dnl Checks if the preprocessor _REENTRANT definition
37 dnl makes function gmtime_r compiler visible.
39 AC_DEFUN([CURL_CHECK_NEED_REENTRANT_GMTIME_R], [
40   AC_LINK_IFELSE([
41     AC_LANG_FUNC_LINK_TRY([gmtime_r])
42   ],[
43     tmp_gmtime_r="yes"
44   ],[
45     tmp_gmtime_r="no"
46   ])
47   if test "$tmp_gmtime_r" = "yes"; then
48     AC_EGREP_CPP([gmtime_r],[
49 #include <sys/types.h>
50 #include <time.h>
51     ],[
52       tmp_gmtime_r="proto_declared"
53     ],[
54       AC_EGREP_CPP([gmtime_r],[
55 #define _REENTRANT
56 #include <sys/types.h>
57 #include <time.h>
58       ],[
59         tmp_gmtime_r="proto_needs_reentrant"
60         tmp_need_reentrant="yes"
61       ])
62     ])
63   fi
67 dnl CURL_CHECK_NEED_REENTRANT_LOCALTIME_R
68 dnl -------------------------------------------------
69 dnl Checks if the preprocessor _REENTRANT definition
70 dnl makes function localtime_r compiler visible.
72 AC_DEFUN([CURL_CHECK_NEED_REENTRANT_LOCALTIME_R], [
73   AC_LINK_IFELSE([
74     AC_LANG_FUNC_LINK_TRY([localtime_r])
75   ],[
76     tmp_localtime_r="yes"
77   ],[
78     tmp_localtime_r="no"
79   ])
80   if test "$tmp_localtime_r" = "yes"; then
81     AC_EGREP_CPP([localtime_r],[
82 #include <sys/types.h>
83 #include <time.h>
84     ],[
85       tmp_localtime_r="proto_declared"
86     ],[
87       AC_EGREP_CPP([localtime_r],[
88 #define _REENTRANT
89 #include <sys/types.h>
90 #include <time.h>
91       ],[
92         tmp_localtime_r="proto_needs_reentrant"
93         tmp_need_reentrant="yes"
94       ])
95     ])
96   fi
100 dnl CURL_CHECK_NEED_REENTRANT_STRERROR_R
101 dnl -------------------------------------------------
102 dnl Checks if the preprocessor _REENTRANT definition
103 dnl makes function strerror_r compiler visible.
105 AC_DEFUN([CURL_CHECK_NEED_REENTRANT_STRERROR_R], [
106   AC_LINK_IFELSE([
107     AC_LANG_FUNC_LINK_TRY([strerror_r])
108   ],[
109     tmp_strerror_r="yes"
110   ],[
111     tmp_strerror_r="no"
112   ])
113   if test "$tmp_strerror_r" = "yes"; then
114     AC_EGREP_CPP([strerror_r],[
115 #include <sys/types.h>
116 #include <string.h>
117     ],[
118       tmp_strerror_r="proto_declared"
119     ],[
120       AC_EGREP_CPP([strerror_r],[
121 #define _REENTRANT
122 #include <sys/types.h>
123 #include <string.h>
124       ],[
125         tmp_strerror_r="proto_needs_reentrant"
126         tmp_need_reentrant="yes"
127       ])
128     ])
129   fi
133 dnl CURL_CHECK_NEED_REENTRANT_STRTOK_R
134 dnl -------------------------------------------------
135 dnl Checks if the preprocessor _REENTRANT definition
136 dnl makes function strtok_r compiler visible.
138 AC_DEFUN([CURL_CHECK_NEED_REENTRANT_STRTOK_R], [
139   AC_LINK_IFELSE([
140     AC_LANG_FUNC_LINK_TRY([strtok_r])
141   ],[
142     tmp_strtok_r="yes"
143   ],[
144     tmp_strtok_r="no"
145   ])
146   if test "$tmp_strtok_r" = "yes"; then
147     AC_EGREP_CPP([strtok_r],[
148 #include <sys/types.h>
149 #include <string.h>
150     ],[
151       tmp_strtok_r="proto_declared"
152     ],[
153       AC_EGREP_CPP([strtok_r],[
154 #define _REENTRANT
155 #include <sys/types.h>
156 #include <string.h>
157       ],[
158         tmp_strtok_r="proto_needs_reentrant"
159         tmp_need_reentrant="yes"
160       ])
161     ])
162   fi
166 dnl CURL_CHECK_NEED_REENTRANT_INET_NTOA_R
167 dnl -------------------------------------------------
168 dnl Checks if the preprocessor _REENTRANT definition
169 dnl makes function inet_ntoa_r compiler visible.
171 AC_DEFUN([CURL_CHECK_NEED_REENTRANT_INET_NTOA_R], [
172   AC_LINK_IFELSE([
173     AC_LANG_FUNC_LINK_TRY([inet_ntoa_r])
174   ],[
175     tmp_inet_ntoa_r="yes"
176   ],[
177     tmp_inet_ntoa_r="no"
178   ])
179   if test "$tmp_inet_ntoa_r" = "yes"; then
180     AC_EGREP_CPP([inet_ntoa_r],[
181 #include <sys/types.h>
182 #include <sys/socket.h>
183 #include <netinet/in.h>
184 #include <arpa/inet.h>
185     ],[
186       tmp_inet_ntoa_r="proto_declared"
187     ],[
188       AC_EGREP_CPP([inet_ntoa_r],[
189 #define _REENTRANT
190 #include <sys/types.h>
191 #include <sys/socket.h>
192 #include <netinet/in.h>
193 #include <arpa/inet.h>
194       ],[
195         tmp_inet_ntoa_r="proto_needs_reentrant"
196         tmp_need_reentrant="yes"
197       ])
198     ])
199   fi
203 dnl CURL_CHECK_NEED_REENTRANT_GETHOSTBYADDR_R
204 dnl -------------------------------------------------
205 dnl Checks if the preprocessor _REENTRANT definition
206 dnl makes function gethostbyaddr_r compiler visible.
208 AC_DEFUN([CURL_CHECK_NEED_REENTRANT_GETHOSTBYADDR_R], [
209   AC_LINK_IFELSE([
210     AC_LANG_FUNC_LINK_TRY([gethostbyaddr_r])
211   ],[
212     tmp_gethostbyaddr_r="yes"
213   ],[
214     tmp_gethostbyaddr_r="no"
215   ])
216   if test "$tmp_gethostbyaddr_r" = "yes"; then
217     AC_EGREP_CPP([gethostbyaddr_r],[
218 #include <sys/types.h>
219 #include <netdb.h>
220     ],[
221       tmp_gethostbyaddr_r="proto_declared"
222     ],[
223       AC_EGREP_CPP([gethostbyaddr_r],[
224 #define _REENTRANT
225 #include <sys/types.h>
226 #include <netdb.h>
227       ],[
228         tmp_gethostbyaddr_r="proto_needs_reentrant"
229         tmp_need_reentrant="yes"
230       ])
231     ])
232   fi
236 dnl CURL_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R
237 dnl -------------------------------------------------
238 dnl Checks if the preprocessor _REENTRANT definition
239 dnl makes function gethostbyname_r compiler visible.
241 AC_DEFUN([CURL_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R], [
242   AC_LINK_IFELSE([
243     AC_LANG_FUNC_LINK_TRY([gethostbyname_r])
244   ],[
245     tmp_gethostbyname_r="yes"
246   ],[
247     tmp_gethostbyname_r="no"
248   ])
249   if test "$tmp_gethostbyname_r" = "yes"; then
250     AC_EGREP_CPP([gethostbyname_r],[
251 #include <sys/types.h>
252 #include <netdb.h>
253     ],[
254       tmp_gethostbyname_r="proto_declared"
255     ],[
256       AC_EGREP_CPP([gethostbyname_r],[
257 #define _REENTRANT
258 #include <sys/types.h>
259 #include <netdb.h>
260       ],[
261         tmp_gethostbyname_r="proto_needs_reentrant"
262         tmp_need_reentrant="yes"
263       ])
264     ])
265   fi
269 dnl CURL_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R
270 dnl -------------------------------------------------
271 dnl Checks if the preprocessor _REENTRANT definition
272 dnl makes function getprotobyname_r compiler visible.
274 AC_DEFUN([CURL_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R], [
275   AC_LINK_IFELSE([
276     AC_LANG_FUNC_LINK_TRY([getprotobyname_r])
277   ],[
278     tmp_getprotobyname_r="yes"
279   ],[
280     tmp_getprotobyname_r="no"
281   ])
282   if test "$tmp_getprotobyname_r" = "yes"; then
283     AC_EGREP_CPP([getprotobyname_r],[
284 #include <sys/types.h>
285 #include <netdb.h>
286     ],[
287       tmp_getprotobyname_r="proto_declared"
288     ],[
289       AC_EGREP_CPP([getprotobyname_r],[
290 #define _REENTRANT
291 #include <sys/types.h>
292 #include <netdb.h>
293       ],[
294         tmp_getprotobyname_r="proto_needs_reentrant"
295         tmp_need_reentrant="yes"
296       ])
297     ])
298   fi
302 dnl CURL_CHECK_NEED_REENTRANT_GETSERVBYPORT_R
303 dnl -------------------------------------------------
304 dnl Checks if the preprocessor _REENTRANT definition
305 dnl makes function getservbyport_r compiler visible.
307 AC_DEFUN([CURL_CHECK_NEED_REENTRANT_GETSERVBYPORT_R], [
308   AC_LINK_IFELSE([
309     AC_LANG_FUNC_LINK_TRY([getservbyport_r])
310   ],[
311     tmp_getservbyport_r="yes"
312   ],[
313     tmp_getservbyport_r="no"
314   ])
315   if test "$tmp_getservbyport_r" = "yes"; then
316     AC_EGREP_CPP([getservbyport_r],[
317 #include <sys/types.h>
318 #include <netdb.h>
319     ],[
320       tmp_getservbyport_r="proto_declared"
321     ],[
322       AC_EGREP_CPP([getservbyport_r],[
323 #define _REENTRANT
324 #include <sys/types.h>
325 #include <netdb.h>
326       ],[
327         tmp_getservbyport_r="proto_needs_reentrant"
328         tmp_need_reentrant="yes"
329       ])
330     ])
331   fi
335 dnl CURL_CHECK_NEED_REENTRANT_FUNCTIONS_R
336 dnl -------------------------------------------------
337 dnl Checks if the preprocessor _REENTRANT definition
338 dnl makes several _r functions compiler visible.
339 dnl Internal macro for CURL_CONFIGURE_REENTRANT.
341 AC_DEFUN([CURL_CHECK_NEED_REENTRANT_FUNCTIONS_R], [
342   #
343   tmp_need_reentrant="no"
344   #
345   if test "$tmp_need_reentrant" = "no"; then
346     CURL_CHECK_NEED_REENTRANT_GMTIME_R
347   fi
348   if test "$tmp_need_reentrant" = "no"; then
349     CURL_CHECK_NEED_REENTRANT_LOCALTIME_R
350   fi
351   if test "$tmp_need_reentrant" = "no"; then
352     CURL_CHECK_NEED_REENTRANT_STRERROR_R
353   fi
354   if test "$tmp_need_reentrant" = "no"; then
355     CURL_CHECK_NEED_REENTRANT_STRTOK_R
356   fi
357   if test "$tmp_need_reentrant" = "no"; then
358     CURL_CHECK_NEED_REENTRANT_INET_NTOA_R
359   fi
360   if test "$tmp_need_reentrant" = "no"; then
361     CURL_CHECK_NEED_REENTRANT_GETHOSTBYADDR_R
362   fi
363   if test "$tmp_need_reentrant" = "no"; then
364     CURL_CHECK_NEED_REENTRANT_GETHOSTBYNAME_R
365   fi
366   if test "$tmp_need_reentrant" = "no"; then
367     CURL_CHECK_NEED_REENTRANT_GETPROTOBYNAME_R
368   fi
369   if test "$tmp_need_reentrant" = "no"; then
370     CURL_CHECK_NEED_REENTRANT_GETSERVBYPORT_R
371   fi
375 dnl CURL_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT
376 dnl -------------------------------------------------
377 dnl This macro ensures that configuration tests done
378 dnl after this will execute with preprocessor symbol
379 dnl _REENTRANT defined. This macro also ensures that
380 dnl the generated config file defines NEED_REENTRANT
381 dnl and that in turn setup.h will define _REENTRANT.
382 dnl Internal macro for CURL_CONFIGURE_REENTRANT.
384 AC_DEFUN([CURL_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT], [
385 AC_DEFINE(NEED_REENTRANT, 1,
386   [Define to 1 if _REENTRANT preprocessor symbol must be defined.])
387 cat >>confdefs.h <<_EOF
388 #ifndef _REENTRANT
389 #  define _REENTRANT
390 #endif
391 _EOF
395 dnl CURL_CONFIGURE_REENTRANT
396 dnl -------------------------------------------------
397 dnl This first checks if the preprocessor _REENTRANT
398 dnl symbol is already defined. If it isn't currently
399 dnl defined a set of checks are performed to verify
400 dnl if its definition is required to make visible to
401 dnl the compiler a set of *_r functions. Finally, if
402 dnl _REENTRANT is already defined or needed it takes
403 dnl care of making adjustments necessary to ensure
404 dnl that it is defined equally for further configure
405 dnl tests and generated config file.
407 AC_DEFUN([CURL_CONFIGURE_REENTRANT], [
408   AC_PREREQ([2.50])dnl
409   #
410   AC_MSG_CHECKING([if _REENTRANT is already defined])
411   AC_COMPILE_IFELSE([
412     AC_LANG_PROGRAM([[
413     ]],[[
414 #ifdef _REENTRANT
415       int dummy=1;
416 #else
417       force compilation error
418 #endif
419     ]])
420   ],[
421     AC_MSG_RESULT([yes])
422     tmp_reentrant_initially_defined="yes"
423   ],[
424     AC_MSG_RESULT([no])
425     tmp_reentrant_initially_defined="no"
426   ])
427   #
428   if test "$tmp_reentrant_initially_defined" = "no"; then
429     AC_MSG_CHECKING([if _REENTRANT is actually needed])
430     CURL_CHECK_NEED_REENTRANT_FUNCTIONS_R
431     if test "$tmp_need_reentrant" = "yes"; then
432       AC_MSG_RESULT([yes])
433     else
434       AC_MSG_RESULT([no])
435     fi
436   fi
437   #
438   AC_MSG_CHECKING([if _REENTRANT is onwards defined])
439   if test "$tmp_reentrant_initially_defined" = "yes" ||
440     test "$tmp_need_reentrant" = "yes"; then
441     CURL_CONFIGURE_FROM_NOW_ON_WITH_REENTRANT
442     AC_MSG_RESULT([yes])
443   else
444     AC_MSG_RESULT([no])
445   fi
446   #