comparison mupdf-source/thirdparty/curl/acinclude.m4 @ 2:b50eed0cc0ef upstream

ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4. The directory name has changed: no version number in the expanded directory now.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 15 Sep 2025 11:43:07 +0200
parents
children
comparison
equal deleted inserted replaced
1:1d09e1dec1d9 2:b50eed0cc0ef
1 #***************************************************************************
2 # _ _ ____ _
3 # Project ___| | | | _ \| |
4 # / __| | | | |_) | |
5 # | (__| |_| | _ <| |___
6 # \___|\___/|_| \_\_____|
7 #
8 # Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al.
9 #
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 https://curl.haxx.se/docs/copyright.html.
13 #
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.
17 #
18 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19 # KIND, either express or implied.
20 #
21 #***************************************************************************
22
23 dnl CURL_CHECK_DEF (SYMBOL, [INCLUDES], [SILENT])
24 dnl -------------------------------------------------
25 dnl Use the C preprocessor to find out if the given object-style symbol
26 dnl is defined and get its expansion. This macro will not use default
27 dnl includes even if no INCLUDES argument is given. This macro will run
28 dnl silently when invoked with three arguments. If the expansion would
29 dnl result in a set of double-quoted strings the returned expansion will
30 dnl actually be a single double-quoted string concatenating all them.
31
32 AC_DEFUN([CURL_CHECK_DEF], [
33 AC_REQUIRE([CURL_CPP_P])dnl
34 OLDCPPFLAGS=$CPPFLAGS
35 # CPPPFLAG comes from CURL_CPP_P
36 CPPFLAGS="$CPPFLAGS $CPPPFLAG"
37 AS_VAR_PUSHDEF([ac_HaveDef], [curl_cv_have_def_$1])dnl
38 AS_VAR_PUSHDEF([ac_Def], [curl_cv_def_$1])dnl
39 if test -z "$SED"; then
40 AC_MSG_ERROR([SED not set. Cannot continue without SED being set.])
41 fi
42 if test -z "$GREP"; then
43 AC_MSG_ERROR([GREP not set. Cannot continue without GREP being set.])
44 fi
45 ifelse($3,,[AC_MSG_CHECKING([for preprocessor definition of $1])])
46 tmp_exp=""
47 AC_PREPROC_IFELSE([
48 AC_LANG_SOURCE(
49 ifelse($2,,,[$2])[[
50 #ifdef $1
51 CURL_DEF_TOKEN $1
52 #endif
53 ]])
54 ],[
55 tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \
56 "$GREP" CURL_DEF_TOKEN 2>/dev/null | \
57 "$SED" 's/.*CURL_DEF_TOKEN[[ ]][[ ]]*//' 2>/dev/null | \
58 "$SED" 's/[["]][[ ]]*[["]]//g' 2>/dev/null`
59 if test -z "$tmp_exp" || test "$tmp_exp" = "$1"; then
60 tmp_exp=""
61 fi
62 ])
63 if test -z "$tmp_exp"; then
64 AS_VAR_SET(ac_HaveDef, no)
65 ifelse($3,,[AC_MSG_RESULT([no])])
66 else
67 AS_VAR_SET(ac_HaveDef, yes)
68 AS_VAR_SET(ac_Def, $tmp_exp)
69 ifelse($3,,[AC_MSG_RESULT([$tmp_exp])])
70 fi
71 AS_VAR_POPDEF([ac_Def])dnl
72 AS_VAR_POPDEF([ac_HaveDef])dnl
73 CPPFLAGS=$OLDCPPFLAGS
74 ])
75
76
77 dnl CURL_CHECK_DEF_CC (SYMBOL, [INCLUDES], [SILENT])
78 dnl -------------------------------------------------
79 dnl Use the C compiler to find out only if the given symbol is defined
80 dnl or not, this can not find out its expansion. This macro will not use
81 dnl default includes even if no INCLUDES argument is given. This macro
82 dnl will run silently when invoked with three arguments.
83
84 AC_DEFUN([CURL_CHECK_DEF_CC], [
85 AS_VAR_PUSHDEF([ac_HaveDef], [curl_cv_have_def_$1])dnl
86 ifelse($3,,[AC_MSG_CHECKING([for compiler definition of $1])])
87 AC_COMPILE_IFELSE([
88 AC_LANG_SOURCE(
89 ifelse($2,,,[$2])[[
90 int main (void)
91 {
92 #ifdef $1
93 return 0;
94 #else
95 force compilation error
96 #endif
97 }
98 ]])
99 ],[
100 tst_symbol_defined="yes"
101 ],[
102 tst_symbol_defined="no"
103 ])
104 if test "$tst_symbol_defined" = "yes"; then
105 AS_VAR_SET(ac_HaveDef, yes)
106 ifelse($3,,[AC_MSG_RESULT([yes])])
107 else
108 AS_VAR_SET(ac_HaveDef, no)
109 ifelse($3,,[AC_MSG_RESULT([no])])
110 fi
111 AS_VAR_POPDEF([ac_HaveDef])dnl
112 ])
113
114
115 dnl CURL_CHECK_LIB_XNET
116 dnl -------------------------------------------------
117 dnl Verify if X/Open network library is required.
118
119 AC_DEFUN([CURL_CHECK_LIB_XNET], [
120 AC_MSG_CHECKING([if X/Open network library is required])
121 tst_lib_xnet_required="no"
122 AC_COMPILE_IFELSE([
123 AC_LANG_SOURCE([[
124 int main (void)
125 {
126 #if defined(__hpux) && defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 600)
127 return 0;
128 #elif defined(__hpux) && defined(_XOPEN_SOURCE_EXTENDED)
129 return 0;
130 #else
131 force compilation error
132 #endif
133 }
134 ]])
135 ],[
136 tst_lib_xnet_required="yes"
137 LIBS="-lxnet $LIBS"
138 ])
139 AC_MSG_RESULT([$tst_lib_xnet_required])
140 ])
141
142
143 dnl CURL_CHECK_AIX_ALL_SOURCE
144 dnl -------------------------------------------------
145 dnl Provides a replacement of traditional AC_AIX with
146 dnl an uniform behaviour across all autoconf versions,
147 dnl and with our own placement rules.
148
149 AC_DEFUN([CURL_CHECK_AIX_ALL_SOURCE], [
150 AH_VERBATIM([_ALL_SOURCE],
151 [/* Define to 1 if OS is AIX. */
152 #ifndef _ALL_SOURCE
153 # undef _ALL_SOURCE
154 #endif])
155 AC_BEFORE([$0], [AC_SYS_LARGEFILE])dnl
156 AC_BEFORE([$0], [CURL_CONFIGURE_REENTRANT])dnl
157 AC_BEFORE([$0], [CURL_CONFIGURE_PULL_SYS_POLL])dnl
158 AC_MSG_CHECKING([if OS is AIX (to define _ALL_SOURCE)])
159 AC_EGREP_CPP([yes_this_is_aix],[
160 #ifdef _AIX
161 yes_this_is_aix
162 #endif
163 ],[
164 AC_MSG_RESULT([yes])
165 AC_DEFINE(_ALL_SOURCE)
166 ],[
167 AC_MSG_RESULT([no])
168 ])
169 ])
170
171
172 dnl CURL_CHECK_HEADER_WINDOWS
173 dnl -------------------------------------------------
174 dnl Check for compilable and valid windows.h header
175
176 AC_DEFUN([CURL_CHECK_HEADER_WINDOWS], [
177 AC_CACHE_CHECK([for windows.h], [curl_cv_header_windows_h], [
178 AC_COMPILE_IFELSE([
179 AC_LANG_PROGRAM([[
180 #undef inline
181 #ifndef WIN32_LEAN_AND_MEAN
182 #define WIN32_LEAN_AND_MEAN
183 #endif
184 #include <windows.h>
185 ]],[[
186 #if defined(__CYGWIN__) || defined(__CEGCC__)
187 HAVE_WINDOWS_H shall not be defined.
188 #else
189 int dummy=2*WINVER;
190 #endif
191 ]])
192 ],[
193 curl_cv_header_windows_h="yes"
194 ],[
195 curl_cv_header_windows_h="no"
196 ])
197 ])
198 case "$curl_cv_header_windows_h" in
199 yes)
200 AC_DEFINE_UNQUOTED(HAVE_WINDOWS_H, 1,
201 [Define to 1 if you have the windows.h header file.])
202 ;;
203 esac
204 ])
205
206
207 dnl CURL_CHECK_NATIVE_WINDOWS
208 dnl -------------------------------------------------
209 dnl Check if building a native Windows target
210
211 AC_DEFUN([CURL_CHECK_NATIVE_WINDOWS], [
212 AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
213 AC_CACHE_CHECK([whether build target is a native Windows one], [curl_cv_native_windows], [
214 if test "$curl_cv_header_windows_h" = "no"; then
215 curl_cv_native_windows="no"
216 else
217 AC_COMPILE_IFELSE([
218 AC_LANG_PROGRAM([[
219 ]],[[
220 #if defined(__MINGW32__) || defined(__MINGW32CE__) || \
221 (defined(_MSC_VER) && (defined(_WIN32) || defined(_WIN64)))
222 int dummy=1;
223 #else
224 Not a native Windows build target.
225 #endif
226 ]])
227 ],[
228 curl_cv_native_windows="yes"
229 ],[
230 curl_cv_native_windows="no"
231 ])
232 fi
233 ])
234 AM_CONDITIONAL(DOING_NATIVE_WINDOWS, test "x$curl_cv_native_windows" = xyes)
235 ])
236
237
238 dnl CURL_CHECK_HEADER_WINSOCK
239 dnl -------------------------------------------------
240 dnl Check for compilable and valid winsock.h header
241
242 AC_DEFUN([CURL_CHECK_HEADER_WINSOCK], [
243 AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
244 AC_CACHE_CHECK([for winsock.h], [curl_cv_header_winsock_h], [
245 AC_COMPILE_IFELSE([
246 AC_LANG_PROGRAM([[
247 #undef inline
248 #ifndef WIN32_LEAN_AND_MEAN
249 #define WIN32_LEAN_AND_MEAN
250 #endif
251 #include <windows.h>
252 #include <winsock.h>
253 ]],[[
254 #if defined(__CYGWIN__) || defined(__CEGCC__)
255 HAVE_WINSOCK_H shall not be defined.
256 #else
257 int dummy=WSACleanup();
258 #endif
259 ]])
260 ],[
261 curl_cv_header_winsock_h="yes"
262 ],[
263 curl_cv_header_winsock_h="no"
264 ])
265 ])
266 case "$curl_cv_header_winsock_h" in
267 yes)
268 AC_DEFINE_UNQUOTED(HAVE_WINSOCK_H, 1,
269 [Define to 1 if you have the winsock.h header file.])
270 ;;
271 esac
272 ])
273
274
275 dnl CURL_CHECK_HEADER_WINSOCK2
276 dnl -------------------------------------------------
277 dnl Check for compilable and valid winsock2.h header
278
279 AC_DEFUN([CURL_CHECK_HEADER_WINSOCK2], [
280 AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
281 AC_CACHE_CHECK([for winsock2.h], [curl_cv_header_winsock2_h], [
282 AC_COMPILE_IFELSE([
283 AC_LANG_PROGRAM([[
284 #undef inline
285 #ifndef WIN32_LEAN_AND_MEAN
286 #define WIN32_LEAN_AND_MEAN
287 #endif
288 #include <windows.h>
289 #include <winsock2.h>
290 ]],[[
291 #if defined(__CYGWIN__) || defined(__CEGCC__) || defined(__MINGW32CE__)
292 HAVE_WINSOCK2_H shall not be defined.
293 #else
294 int dummy=2*IPPROTO_ESP;
295 #endif
296 ]])
297 ],[
298 curl_cv_header_winsock2_h="yes"
299 ],[
300 curl_cv_header_winsock2_h="no"
301 ])
302 ])
303 case "$curl_cv_header_winsock2_h" in
304 yes)
305 AC_DEFINE_UNQUOTED(HAVE_WINSOCK2_H, 1,
306 [Define to 1 if you have the winsock2.h header file.])
307 ;;
308 esac
309 ])
310
311
312 dnl CURL_CHECK_HEADER_WS2TCPIP
313 dnl -------------------------------------------------
314 dnl Check for compilable and valid ws2tcpip.h header
315
316 AC_DEFUN([CURL_CHECK_HEADER_WS2TCPIP], [
317 AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
318 AC_CACHE_CHECK([for ws2tcpip.h], [curl_cv_header_ws2tcpip_h], [
319 AC_COMPILE_IFELSE([
320 AC_LANG_PROGRAM([[
321 #undef inline
322 #ifndef WIN32_LEAN_AND_MEAN
323 #define WIN32_LEAN_AND_MEAN
324 #endif
325 #include <windows.h>
326 #include <winsock2.h>
327 #include <ws2tcpip.h>
328 ]],[[
329 #if defined(__CYGWIN__) || defined(__CEGCC__) || defined(__MINGW32CE__)
330 HAVE_WS2TCPIP_H shall not be defined.
331 #else
332 int dummy=2*IP_PKTINFO;
333 #endif
334 ]])
335 ],[
336 curl_cv_header_ws2tcpip_h="yes"
337 ],[
338 curl_cv_header_ws2tcpip_h="no"
339 ])
340 ])
341 case "$curl_cv_header_ws2tcpip_h" in
342 yes)
343 AC_DEFINE_UNQUOTED(HAVE_WS2TCPIP_H, 1,
344 [Define to 1 if you have the ws2tcpip.h header file.])
345 ;;
346 esac
347 ])
348
349
350 dnl CURL_CHECK_HEADER_WINLDAP
351 dnl -------------------------------------------------
352 dnl Check for compilable and valid winldap.h header
353
354 AC_DEFUN([CURL_CHECK_HEADER_WINLDAP], [
355 AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
356 AC_CACHE_CHECK([for winldap.h], [curl_cv_header_winldap_h], [
357 AC_COMPILE_IFELSE([
358 AC_LANG_PROGRAM([[
359 #undef inline
360 #ifdef HAVE_WINDOWS_H
361 #ifndef WIN32_LEAN_AND_MEAN
362 #define WIN32_LEAN_AND_MEAN
363 #endif
364 #include <windows.h>
365 #endif
366 #include <winldap.h>
367 ]],[[
368 #if defined(__CYGWIN__) || defined(__CEGCC__)
369 HAVE_WINLDAP_H shall not be defined.
370 #else
371 LDAP *ldp = ldap_init("dummy", LDAP_PORT);
372 ULONG res = ldap_unbind(ldp);
373 #endif
374 ]])
375 ],[
376 curl_cv_header_winldap_h="yes"
377 ],[
378 curl_cv_header_winldap_h="no"
379 ])
380 ])
381 case "$curl_cv_header_winldap_h" in
382 yes)
383 AC_DEFINE_UNQUOTED(HAVE_WINLDAP_H, 1,
384 [Define to 1 if you have the winldap.h header file.])
385 ;;
386 esac
387 ])
388
389
390 dnl CURL_CHECK_HEADER_WINBER
391 dnl -------------------------------------------------
392 dnl Check for compilable and valid winber.h header
393
394 AC_DEFUN([CURL_CHECK_HEADER_WINBER], [
395 AC_REQUIRE([CURL_CHECK_HEADER_WINLDAP])dnl
396 AC_CACHE_CHECK([for winber.h], [curl_cv_header_winber_h], [
397 AC_COMPILE_IFELSE([
398 AC_LANG_PROGRAM([[
399 #undef inline
400 #ifdef HAVE_WINDOWS_H
401 #ifndef WIN32_LEAN_AND_MEAN
402 #define WIN32_LEAN_AND_MEAN
403 #endif
404 #include <windows.h>
405 #endif
406 #include <winldap.h>
407 #include <winber.h>
408 ]],[[
409 #if defined(__CYGWIN__) || defined(__CEGCC__)
410 HAVE_WINBER_H shall not be defined.
411 #else
412 BERVAL *bvp = NULL;
413 BerElement *bep = ber_init(bvp);
414 ber_free(bep, 1);
415 #endif
416 ]])
417 ],[
418 curl_cv_header_winber_h="yes"
419 ],[
420 curl_cv_header_winber_h="no"
421 ])
422 ])
423 case "$curl_cv_header_winber_h" in
424 yes)
425 AC_DEFINE_UNQUOTED(HAVE_WINBER_H, 1,
426 [Define to 1 if you have the winber.h header file.])
427 ;;
428 esac
429 ])
430
431
432 dnl CURL_CHECK_HEADER_LBER
433 dnl -------------------------------------------------
434 dnl Check for compilable and valid lber.h header,
435 dnl and check if it is needed even with ldap.h
436
437 AC_DEFUN([CURL_CHECK_HEADER_LBER], [
438 AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
439 AC_CACHE_CHECK([for lber.h], [curl_cv_header_lber_h], [
440 AC_COMPILE_IFELSE([
441 AC_LANG_PROGRAM([[
442 #undef inline
443 #ifdef HAVE_WINDOWS_H
444 #ifndef WIN32_LEAN_AND_MEAN
445 #define WIN32_LEAN_AND_MEAN
446 #endif
447 #include <windows.h>
448 #else
449 #ifdef HAVE_SYS_TYPES_H
450 #include <sys/types.h>
451 #endif
452 #endif
453 #ifndef NULL
454 #define NULL (void *)0
455 #endif
456 #include <lber.h>
457 ]],[[
458 BerValue *bvp = NULL;
459 BerElement *bep = ber_init(bvp);
460 ber_free(bep, 1);
461 ]])
462 ],[
463 curl_cv_header_lber_h="yes"
464 ],[
465 curl_cv_header_lber_h="no"
466 ])
467 ])
468 if test "$curl_cv_header_lber_h" = "yes"; then
469 AC_DEFINE_UNQUOTED(HAVE_LBER_H, 1,
470 [Define to 1 if you have the lber.h header file.])
471 #
472 AC_COMPILE_IFELSE([
473 AC_LANG_PROGRAM([[
474 #undef inline
475 #ifdef HAVE_WINDOWS_H
476 #ifndef WIN32_LEAN_AND_MEAN
477 #define WIN32_LEAN_AND_MEAN
478 #endif
479 #include <windows.h>
480 #else
481 #ifdef HAVE_SYS_TYPES_H
482 #include <sys/types.h>
483 #endif
484 #endif
485 #ifndef NULL
486 #define NULL (void *)0
487 #endif
488 #ifndef LDAP_DEPRECATED
489 #define LDAP_DEPRECATED 1
490 #endif
491 #include <ldap.h>
492 ]],[[
493 BerValue *bvp = NULL;
494 BerElement *bep = ber_init(bvp);
495 ber_free(bep, 1);
496 ]])
497 ],[
498 curl_cv_need_header_lber_h="no"
499 ],[
500 curl_cv_need_header_lber_h="yes"
501 ])
502 #
503 case "$curl_cv_need_header_lber_h" in
504 yes)
505 AC_DEFINE_UNQUOTED(NEED_LBER_H, 1,
506 [Define to 1 if you need the lber.h header file even with ldap.h])
507 ;;
508 esac
509 fi
510 ])
511
512
513 dnl CURL_CHECK_HEADER_LDAP
514 dnl -------------------------------------------------
515 dnl Check for compilable and valid ldap.h header
516
517 AC_DEFUN([CURL_CHECK_HEADER_LDAP], [
518 AC_REQUIRE([CURL_CHECK_HEADER_LBER])dnl
519 AC_CACHE_CHECK([for ldap.h], [curl_cv_header_ldap_h], [
520 AC_COMPILE_IFELSE([
521 AC_LANG_PROGRAM([[
522 #undef inline
523 #ifdef HAVE_WINDOWS_H
524 #ifndef WIN32_LEAN_AND_MEAN
525 #define WIN32_LEAN_AND_MEAN
526 #endif
527 #include <windows.h>
528 #else
529 #ifdef HAVE_SYS_TYPES_H
530 #include <sys/types.h>
531 #endif
532 #endif
533 #ifndef LDAP_DEPRECATED
534 #define LDAP_DEPRECATED 1
535 #endif
536 #ifdef NEED_LBER_H
537 #include <lber.h>
538 #endif
539 #include <ldap.h>
540 ]],[[
541 LDAP *ldp = ldap_init("dummy", LDAP_PORT);
542 int res = ldap_unbind(ldp);
543 ]])
544 ],[
545 curl_cv_header_ldap_h="yes"
546 ],[
547 curl_cv_header_ldap_h="no"
548 ])
549 ])
550 case "$curl_cv_header_ldap_h" in
551 yes)
552 AC_DEFINE_UNQUOTED(HAVE_LDAP_H, 1,
553 [Define to 1 if you have the ldap.h header file.])
554 ;;
555 esac
556 ])
557
558
559 dnl CURL_CHECK_HEADER_LDAP_SSL
560 dnl -------------------------------------------------
561 dnl Check for compilable and valid ldap_ssl.h header
562
563 AC_DEFUN([CURL_CHECK_HEADER_LDAP_SSL], [
564 AC_REQUIRE([CURL_CHECK_HEADER_LDAP])dnl
565 AC_CACHE_CHECK([for ldap_ssl.h], [curl_cv_header_ldap_ssl_h], [
566 AC_COMPILE_IFELSE([
567 AC_LANG_PROGRAM([[
568 #undef inline
569 #ifdef HAVE_WINDOWS_H
570 #ifndef WIN32_LEAN_AND_MEAN
571 #define WIN32_LEAN_AND_MEAN
572 #endif
573 #include <windows.h>
574 #else
575 #ifdef HAVE_SYS_TYPES_H
576 #include <sys/types.h>
577 #endif
578 #endif
579 #ifndef LDAP_DEPRECATED
580 #define LDAP_DEPRECATED 1
581 #endif
582 #ifdef NEED_LBER_H
583 #include <lber.h>
584 #endif
585 #ifdef HAVE_LDAP_H
586 #include <ldap.h>
587 #endif
588 #include <ldap_ssl.h>
589 ]],[[
590 LDAP *ldp = ldapssl_init("dummy", LDAPS_PORT, 1);
591 ]])
592 ],[
593 curl_cv_header_ldap_ssl_h="yes"
594 ],[
595 curl_cv_header_ldap_ssl_h="no"
596 ])
597 ])
598 case "$curl_cv_header_ldap_ssl_h" in
599 yes)
600 AC_DEFINE_UNQUOTED(HAVE_LDAP_SSL_H, 1,
601 [Define to 1 if you have the ldap_ssl.h header file.])
602 ;;
603 esac
604 ])
605
606
607 dnl CURL_CHECK_HEADER_LDAPSSL
608 dnl -------------------------------------------------
609 dnl Check for compilable and valid ldapssl.h header
610
611 AC_DEFUN([CURL_CHECK_HEADER_LDAPSSL], [
612 AC_REQUIRE([CURL_CHECK_HEADER_LDAP])dnl
613 AC_CACHE_CHECK([for ldapssl.h], [curl_cv_header_ldapssl_h], [
614 AC_COMPILE_IFELSE([
615 AC_LANG_PROGRAM([[
616 #undef inline
617 #ifdef HAVE_WINDOWS_H
618 #ifndef WIN32_LEAN_AND_MEAN
619 #define WIN32_LEAN_AND_MEAN
620 #endif
621 #include <windows.h>
622 #else
623 #ifdef HAVE_SYS_TYPES_H
624 #include <sys/types.h>
625 #endif
626 #endif
627 #ifndef NULL
628 #define NULL (void *)0
629 #endif
630 #ifndef LDAP_DEPRECATED
631 #define LDAP_DEPRECATED 1
632 #endif
633 #ifdef NEED_LBER_H
634 #include <lber.h>
635 #endif
636 #ifdef HAVE_LDAP_H
637 #include <ldap.h>
638 #endif
639 #include <ldapssl.h>
640 ]],[[
641 char *cert_label = NULL;
642 LDAP *ldp = ldap_ssl_init("dummy", LDAPS_PORT, cert_label);
643 ]])
644 ],[
645 curl_cv_header_ldapssl_h="yes"
646 ],[
647 curl_cv_header_ldapssl_h="no"
648 ])
649 ])
650 case "$curl_cv_header_ldapssl_h" in
651 yes)
652 AC_DEFINE_UNQUOTED(HAVE_LDAPSSL_H, 1,
653 [Define to 1 if you have the ldapssl.h header file.])
654 ;;
655 esac
656 ])
657
658
659 dnl CURL_CHECK_LIBS_WINLDAP
660 dnl -------------------------------------------------
661 dnl Check for libraries needed for WINLDAP support,
662 dnl and prepended to LIBS any needed libraries.
663 dnl This macro can take an optional parameter with a
664 dnl white space separated list of libraries to check
665 dnl before the WINLDAP default ones.
666
667 AC_DEFUN([CURL_CHECK_LIBS_WINLDAP], [
668 AC_REQUIRE([CURL_CHECK_HEADER_WINBER])dnl
669 #
670 AC_MSG_CHECKING([for WINLDAP libraries])
671 #
672 u_libs=""
673 #
674 ifelse($1,,,[
675 for x_lib in $1; do
676 case "$x_lib" in
677 -l*)
678 l_lib="$x_lib"
679 ;;
680 *)
681 l_lib="-l$x_lib"
682 ;;
683 esac
684 if test -z "$u_libs"; then
685 u_libs="$l_lib"
686 else
687 u_libs="$u_libs $l_lib"
688 fi
689 done
690 ])
691 #
692 curl_cv_save_LIBS="$LIBS"
693 curl_cv_ldap_LIBS="unknown"
694 #
695 for x_nlibs in '' "$u_libs" \
696 '-lwldap32' ; do
697 if test "$curl_cv_ldap_LIBS" = "unknown"; then
698 if test -z "$x_nlibs"; then
699 LIBS="$curl_cv_save_LIBS"
700 else
701 LIBS="$x_nlibs $curl_cv_save_LIBS"
702 fi
703 AC_LINK_IFELSE([
704 AC_LANG_PROGRAM([[
705 #undef inline
706 #ifdef HAVE_WINDOWS_H
707 #ifndef WIN32_LEAN_AND_MEAN
708 #define WIN32_LEAN_AND_MEAN
709 #endif
710 #include <windows.h>
711 #ifdef HAVE_WINLDAP_H
712 #include <winldap.h>
713 #endif
714 #ifdef HAVE_WINBER_H
715 #include <winber.h>
716 #endif
717 #endif
718 ]],[[
719 BERVAL *bvp = NULL;
720 BerElement *bep = ber_init(bvp);
721 LDAP *ldp = ldap_init("dummy", LDAP_PORT);
722 ULONG res = ldap_unbind(ldp);
723 ber_free(bep, 1);
724 ]])
725 ],[
726 curl_cv_ldap_LIBS="$x_nlibs"
727 ])
728 fi
729 done
730 #
731 LIBS="$curl_cv_save_LIBS"
732 #
733 case X-"$curl_cv_ldap_LIBS" in
734 X-unknown)
735 AC_MSG_RESULT([cannot find WINLDAP libraries])
736 ;;
737 X-)
738 AC_MSG_RESULT([no additional lib required])
739 ;;
740 *)
741 if test -z "$curl_cv_save_LIBS"; then
742 LIBS="$curl_cv_ldap_LIBS"
743 else
744 LIBS="$curl_cv_ldap_LIBS $curl_cv_save_LIBS"
745 fi
746 AC_MSG_RESULT([$curl_cv_ldap_LIBS])
747 ;;
748 esac
749 #
750 ])
751
752
753 dnl CURL_CHECK_LIBS_LDAP
754 dnl -------------------------------------------------
755 dnl Check for libraries needed for LDAP support,
756 dnl and prepended to LIBS any needed libraries.
757 dnl This macro can take an optional parameter with a
758 dnl white space separated list of libraries to check
759 dnl before the default ones.
760
761 AC_DEFUN([CURL_CHECK_LIBS_LDAP], [
762 AC_REQUIRE([CURL_CHECK_HEADER_LDAP])dnl
763 #
764 AC_MSG_CHECKING([for LDAP libraries])
765 #
766 u_libs=""
767 #
768 ifelse($1,,,[
769 for x_lib in $1; do
770 case "$x_lib" in
771 -l*)
772 l_lib="$x_lib"
773 ;;
774 *)
775 l_lib="-l$x_lib"
776 ;;
777 esac
778 if test -z "$u_libs"; then
779 u_libs="$l_lib"
780 else
781 u_libs="$u_libs $l_lib"
782 fi
783 done
784 ])
785 #
786 curl_cv_save_LIBS="$LIBS"
787 curl_cv_ldap_LIBS="unknown"
788 #
789 for x_nlibs in '' "$u_libs" \
790 '-lldap' \
791 '-lldap -llber' \
792 '-llber -lldap' \
793 '-lldapssl -lldapx -lldapsdk' \
794 '-lldapsdk -lldapx -lldapssl' \
795 '-lldap -llber -lssl -lcrypto' ; do
796
797 if test "$curl_cv_ldap_LIBS" = "unknown"; then
798 if test -z "$x_nlibs"; then
799 LIBS="$curl_cv_save_LIBS"
800 else
801 LIBS="$x_nlibs $curl_cv_save_LIBS"
802 fi
803 AC_LINK_IFELSE([
804 AC_LANG_PROGRAM([[
805 #undef inline
806 #ifdef HAVE_WINDOWS_H
807 #ifndef WIN32_LEAN_AND_MEAN
808 #define WIN32_LEAN_AND_MEAN
809 #endif
810 #include <windows.h>
811 #else
812 #ifdef HAVE_SYS_TYPES_H
813 #include <sys/types.h>
814 #endif
815 #endif
816 #ifndef NULL
817 #define NULL (void *)0
818 #endif
819 #ifndef LDAP_DEPRECATED
820 #define LDAP_DEPRECATED 1
821 #endif
822 #ifdef NEED_LBER_H
823 #include <lber.h>
824 #endif
825 #ifdef HAVE_LDAP_H
826 #include <ldap.h>
827 #endif
828 ]],[[
829 BerValue *bvp = NULL;
830 BerElement *bep = ber_init(bvp);
831 LDAP *ldp = ldap_init("dummy", LDAP_PORT);
832 int res = ldap_unbind(ldp);
833 ber_free(bep, 1);
834 ]])
835 ],[
836 curl_cv_ldap_LIBS="$x_nlibs"
837 ])
838 fi
839 done
840 #
841 LIBS="$curl_cv_save_LIBS"
842 #
843 case X-"$curl_cv_ldap_LIBS" in
844 X-unknown)
845 AC_MSG_RESULT([cannot find LDAP libraries])
846 ;;
847 X-)
848 AC_MSG_RESULT([no additional lib required])
849 ;;
850 *)
851 if test -z "$curl_cv_save_LIBS"; then
852 LIBS="$curl_cv_ldap_LIBS"
853 else
854 LIBS="$curl_cv_ldap_LIBS $curl_cv_save_LIBS"
855 fi
856 AC_MSG_RESULT([$curl_cv_ldap_LIBS])
857 ;;
858 esac
859 #
860 ])
861
862
863 dnl CURL_CHECK_HEADER_MALLOC
864 dnl -------------------------------------------------
865 dnl Check for compilable and valid malloc.h header,
866 dnl and check if it is needed even with stdlib.h
867
868 AC_DEFUN([CURL_CHECK_HEADER_MALLOC], [
869 AC_CACHE_CHECK([for malloc.h], [curl_cv_header_malloc_h], [
870 AC_COMPILE_IFELSE([
871 AC_LANG_PROGRAM([[
872 #include <malloc.h>
873 ]],[[
874 void *p = malloc(10);
875 void *q = calloc(10,10);
876 free(p);
877 free(q);
878 ]])
879 ],[
880 curl_cv_header_malloc_h="yes"
881 ],[
882 curl_cv_header_malloc_h="no"
883 ])
884 ])
885 if test "$curl_cv_header_malloc_h" = "yes"; then
886 AC_DEFINE_UNQUOTED(HAVE_MALLOC_H, 1,
887 [Define to 1 if you have the malloc.h header file.])
888 #
889 AC_COMPILE_IFELSE([
890 AC_LANG_PROGRAM([[
891 #include <stdlib.h>
892 ]],[[
893 void *p = malloc(10);
894 void *q = calloc(10,10);
895 free(p);
896 free(q);
897 ]])
898 ],[
899 curl_cv_need_header_malloc_h="no"
900 ],[
901 curl_cv_need_header_malloc_h="yes"
902 ])
903 #
904 case "$curl_cv_need_header_malloc_h" in
905 yes)
906 AC_DEFINE_UNQUOTED(NEED_MALLOC_H, 1,
907 [Define to 1 if you need the malloc.h header file even with stdlib.h])
908 ;;
909 esac
910 fi
911 ])
912
913
914 dnl CURL_CHECK_HEADER_MEMORY
915 dnl -------------------------------------------------
916 dnl Check for compilable and valid memory.h header,
917 dnl and check if it is needed even with stdlib.h for
918 dnl memory related functions.
919
920 AC_DEFUN([CURL_CHECK_HEADER_MEMORY], [
921 AC_CACHE_CHECK([for memory.h], [curl_cv_header_memory_h], [
922 AC_COMPILE_IFELSE([
923 AC_LANG_PROGRAM([[
924 #include <memory.h>
925 ]],[[
926 void *p = malloc(10);
927 void *q = calloc(10,10);
928 free(p);
929 free(q);
930 ]])
931 ],[
932 curl_cv_header_memory_h="yes"
933 ],[
934 curl_cv_header_memory_h="no"
935 ])
936 ])
937 if test "$curl_cv_header_memory_h" = "yes"; then
938 AC_DEFINE_UNQUOTED(HAVE_MEMORY_H, 1,
939 [Define to 1 if you have the memory.h header file.])
940 #
941 AC_COMPILE_IFELSE([
942 AC_LANG_PROGRAM([[
943 #include <stdlib.h>
944 ]],[[
945 void *p = malloc(10);
946 void *q = calloc(10,10);
947 free(p);
948 free(q);
949 ]])
950 ],[
951 curl_cv_need_header_memory_h="no"
952 ],[
953 curl_cv_need_header_memory_h="yes"
954 ])
955 #
956 case "$curl_cv_need_header_memory_h" in
957 yes)
958 AC_DEFINE_UNQUOTED(NEED_MEMORY_H, 1,
959 [Define to 1 if you need the memory.h header file even with stdlib.h])
960 ;;
961 esac
962 fi
963 ])
964
965 dnl TYPE_SOCKADDR_STORAGE
966 dnl -------------------------------------------------
967 dnl Check for struct sockaddr_storage. Most IPv6-enabled
968 dnl hosts have it, but AIX 4.3 is one known exception.
969
970 AC_DEFUN([TYPE_SOCKADDR_STORAGE],
971 [
972 AC_CHECK_TYPE([struct sockaddr_storage],
973 AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1,
974 [if struct sockaddr_storage is defined]), ,
975 [
976 #undef inline
977 #ifdef HAVE_WINDOWS_H
978 #ifndef WIN32_LEAN_AND_MEAN
979 #define WIN32_LEAN_AND_MEAN
980 #endif
981 #include <windows.h>
982 #ifdef HAVE_WINSOCK2_H
983 #include <winsock2.h>
984 #endif
985 #else
986 #ifdef HAVE_SYS_TYPES_H
987 #include <sys/types.h>
988 #endif
989 #ifdef HAVE_SYS_SOCKET_H
990 #include <sys/socket.h>
991 #endif
992 #ifdef HAVE_NETINET_IN_H
993 #include <netinet/in.h>
994 #endif
995 #ifdef HAVE_ARPA_INET_H
996 #include <arpa/inet.h>
997 #endif
998 #endif
999 ])
1000 ])
1001
1002 dnl CURL_CHECK_FUNC_RECV
1003 dnl -------------------------------------------------
1004 dnl Test if the socket recv() function is available,
1005 dnl and check its return type and the types of its
1006 dnl arguments. If the function succeeds HAVE_RECV
1007 dnl will be defined, defining the types of the arguments
1008 dnl in RECV_TYPE_ARG1, RECV_TYPE_ARG2, RECV_TYPE_ARG3
1009 dnl and RECV_TYPE_ARG4, defining the type of the function
1010 dnl return value in RECV_TYPE_RETV.
1011
1012 AC_DEFUN([CURL_CHECK_FUNC_RECV], [
1013 AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl
1014 AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
1015 AC_CHECK_HEADERS(sys/types.h sys/socket.h)
1016 #
1017 AC_MSG_CHECKING([for recv])
1018 AC_LINK_IFELSE([
1019 AC_LANG_PROGRAM([[
1020 #undef inline
1021 #ifdef HAVE_WINDOWS_H
1022 #ifndef WIN32_LEAN_AND_MEAN
1023 #define WIN32_LEAN_AND_MEAN
1024 #endif
1025 #include <windows.h>
1026 #ifdef HAVE_WINSOCK2_H
1027 #include <winsock2.h>
1028 #else
1029 #ifdef HAVE_WINSOCK_H
1030 #include <winsock.h>
1031 #endif
1032 #endif
1033 #else
1034 #ifdef HAVE_PROTO_BSDSOCKET_H
1035 #include <proto/bsdsocket.h>
1036 struct Library *SocketBase = NULL;
1037 #endif
1038 #ifdef HAVE_SYS_TYPES_H
1039 #include <sys/types.h>
1040 #endif
1041 #ifdef HAVE_SYS_SOCKET_H
1042 #include <sys/socket.h>
1043 #endif
1044 #endif
1045 ]],[[
1046 recv(0, 0, 0, 0);
1047 ]])
1048 ],[
1049 AC_MSG_RESULT([yes])
1050 curl_cv_recv="yes"
1051 ],[
1052 AC_MSG_RESULT([no])
1053 curl_cv_recv="no"
1054 ])
1055 #
1056 if test "$curl_cv_recv" = "yes"; then
1057 AC_CACHE_CHECK([types of args and return type for recv],
1058 [curl_cv_func_recv_args], [
1059 curl_cv_func_recv_args="unknown"
1060 for recv_retv in 'int' 'ssize_t'; do
1061 for recv_arg1 in 'int' 'ssize_t' 'SOCKET'; do
1062 for recv_arg2 in 'char *' 'void *'; do
1063 for recv_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
1064 for recv_arg4 in 'int' 'unsigned int'; do
1065 if test "$curl_cv_func_recv_args" = "unknown"; then
1066 AC_COMPILE_IFELSE([
1067 AC_LANG_PROGRAM([[
1068 #undef inline
1069 #ifdef HAVE_WINDOWS_H
1070 #ifndef WIN32_LEAN_AND_MEAN
1071 #define WIN32_LEAN_AND_MEAN
1072 #endif
1073 #include <windows.h>
1074 #ifdef HAVE_WINSOCK2_H
1075 #include <winsock2.h>
1076 #else
1077 #ifdef HAVE_WINSOCK_H
1078 #include <winsock.h>
1079 #endif
1080 #endif
1081 #define RECVCALLCONV PASCAL
1082 #else
1083 #ifdef HAVE_PROTO_BSDSOCKET_H
1084 #include <proto/bsdsocket.h>
1085 struct Library *SocketBase = NULL;
1086 #endif
1087 #ifdef HAVE_SYS_TYPES_H
1088 #include <sys/types.h>
1089 #endif
1090 #ifdef HAVE_SYS_SOCKET_H
1091 #include <sys/socket.h>
1092 #endif
1093 #define RECVCALLCONV
1094 #endif
1095 #ifndef HAVE_PROTO_BSDSOCKET_H
1096 extern $recv_retv RECVCALLCONV
1097 recv($recv_arg1, $recv_arg2, $recv_arg3, $recv_arg4);
1098 #endif
1099 ]],[[
1100 $recv_arg1 s=0;
1101 $recv_arg2 buf=0;
1102 $recv_arg3 len=0;
1103 $recv_arg4 flags=0;
1104 $recv_retv res = recv(s, buf, len, flags);
1105 ]])
1106 ],[
1107 curl_cv_func_recv_args="$recv_arg1,$recv_arg2,$recv_arg3,$recv_arg4,$recv_retv"
1108 ])
1109 fi
1110 done
1111 done
1112 done
1113 done
1114 done
1115 ]) # AC-CACHE-CHECK
1116 if test "$curl_cv_func_recv_args" = "unknown"; then
1117 AC_MSG_ERROR([Cannot find proper types to use for recv args])
1118 else
1119 recv_prev_IFS=$IFS; IFS=','
1120 set dummy `echo "$curl_cv_func_recv_args" | sed 's/\*/\*/g'`
1121 IFS=$recv_prev_IFS
1122 shift
1123 #
1124 AC_DEFINE_UNQUOTED(RECV_TYPE_ARG1, $[1],
1125 [Define to the type of arg 1 for recv.])
1126 AC_DEFINE_UNQUOTED(RECV_TYPE_ARG2, $[2],
1127 [Define to the type of arg 2 for recv.])
1128 AC_DEFINE_UNQUOTED(RECV_TYPE_ARG3, $[3],
1129 [Define to the type of arg 3 for recv.])
1130 AC_DEFINE_UNQUOTED(RECV_TYPE_ARG4, $[4],
1131 [Define to the type of arg 4 for recv.])
1132 AC_DEFINE_UNQUOTED(RECV_TYPE_RETV, $[5],
1133 [Define to the function return type for recv.])
1134 #
1135 AC_DEFINE_UNQUOTED(HAVE_RECV, 1,
1136 [Define to 1 if you have the recv function.])
1137 curl_cv_func_recv="yes"
1138 fi
1139 else
1140 AC_MSG_ERROR([Unable to link function recv])
1141 fi
1142 ])
1143
1144
1145 dnl CURL_CHECK_FUNC_SEND
1146 dnl -------------------------------------------------
1147 dnl Test if the socket send() function is available,
1148 dnl and check its return type and the types of its
1149 dnl arguments. If the function succeeds HAVE_SEND
1150 dnl will be defined, defining the types of the arguments
1151 dnl in SEND_TYPE_ARG1, SEND_TYPE_ARG2, SEND_TYPE_ARG3
1152 dnl and SEND_TYPE_ARG4, defining the type of the function
1153 dnl return value in SEND_TYPE_RETV, and also defining the
1154 dnl type qualifier of second argument in SEND_QUAL_ARG2.
1155
1156 AC_DEFUN([CURL_CHECK_FUNC_SEND], [
1157 AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl
1158 AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
1159 AC_CHECK_HEADERS(sys/types.h sys/socket.h)
1160 #
1161 AC_MSG_CHECKING([for send])
1162 AC_LINK_IFELSE([
1163 AC_LANG_PROGRAM([[
1164 #undef inline
1165 #ifdef HAVE_WINDOWS_H
1166 #ifndef WIN32_LEAN_AND_MEAN
1167 #define WIN32_LEAN_AND_MEAN
1168 #endif
1169 #include <windows.h>
1170 #ifdef HAVE_WINSOCK2_H
1171 #include <winsock2.h>
1172 #else
1173 #ifdef HAVE_WINSOCK_H
1174 #include <winsock.h>
1175 #endif
1176 #endif
1177 #else
1178 #ifdef HAVE_PROTO_BSDSOCKET_H
1179 #include <proto/bsdsocket.h>
1180 struct Library *SocketBase = NULL;
1181 #endif
1182 #ifdef HAVE_SYS_TYPES_H
1183 #include <sys/types.h>
1184 #endif
1185 #ifdef HAVE_SYS_SOCKET_H
1186 #include <sys/socket.h>
1187 #endif
1188 #endif
1189 ]],[[
1190 send(0, 0, 0, 0);
1191 ]])
1192 ],[
1193 AC_MSG_RESULT([yes])
1194 curl_cv_send="yes"
1195 ],[
1196 AC_MSG_RESULT([no])
1197 curl_cv_send="no"
1198 ])
1199 #
1200 if test "$curl_cv_send" = "yes"; then
1201 AC_CACHE_CHECK([types of args and return type for send],
1202 [curl_cv_func_send_args], [
1203 curl_cv_func_send_args="unknown"
1204 for send_retv in 'int' 'ssize_t'; do
1205 for send_arg1 in 'int' 'ssize_t' 'SOCKET'; do
1206 for send_arg2 in 'char *' 'void *' 'const char *' 'const void *'; do
1207 for send_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
1208 for send_arg4 in 'int' 'unsigned int'; do
1209 if test "$curl_cv_func_send_args" = "unknown"; then
1210 AC_COMPILE_IFELSE([
1211 AC_LANG_PROGRAM([[
1212 #undef inline
1213 #ifdef HAVE_WINDOWS_H
1214 #ifndef WIN32_LEAN_AND_MEAN
1215 #define WIN32_LEAN_AND_MEAN
1216 #endif
1217 #include <windows.h>
1218 #ifdef HAVE_WINSOCK2_H
1219 #include <winsock2.h>
1220 #else
1221 #ifdef HAVE_WINSOCK_H
1222 #include <winsock.h>
1223 #endif
1224 #endif
1225 #define SENDCALLCONV PASCAL
1226 #else
1227 #ifdef HAVE_PROTO_BSDSOCKET_H
1228 #include <proto/bsdsocket.h>
1229 struct Library *SocketBase = NULL;
1230 #endif
1231 #ifdef HAVE_SYS_TYPES_H
1232 #include <sys/types.h>
1233 #endif
1234 #ifdef HAVE_SYS_SOCKET_H
1235 #include <sys/socket.h>
1236 #endif
1237 #define SENDCALLCONV
1238 #endif
1239 #ifndef HAVE_PROTO_BSDSOCKET_H
1240 extern $send_retv SENDCALLCONV
1241 send($send_arg1, $send_arg2, $send_arg3, $send_arg4);
1242 #endif
1243 ]],[[
1244 $send_arg1 s=0;
1245 $send_arg3 len=0;
1246 $send_arg4 flags=0;
1247 $send_retv res = send(s, 0, len, flags);
1248 ]])
1249 ],[
1250 curl_cv_func_send_args="$send_arg1,$send_arg2,$send_arg3,$send_arg4,$send_retv"
1251 ])
1252 fi
1253 done
1254 done
1255 done
1256 done
1257 done
1258 ]) # AC-CACHE-CHECK
1259 if test "$curl_cv_func_send_args" = "unknown"; then
1260 AC_MSG_ERROR([Cannot find proper types to use for send args])
1261 else
1262 send_prev_IFS=$IFS; IFS=','
1263 set dummy `echo "$curl_cv_func_send_args" | sed 's/\*/\*/g'`
1264 IFS=$send_prev_IFS
1265 shift
1266 #
1267 send_qual_type_arg2=$[2]
1268 #
1269 AC_DEFINE_UNQUOTED(SEND_TYPE_ARG1, $[1],
1270 [Define to the type of arg 1 for send.])
1271 AC_DEFINE_UNQUOTED(SEND_TYPE_ARG3, $[3],
1272 [Define to the type of arg 3 for send.])
1273 AC_DEFINE_UNQUOTED(SEND_TYPE_ARG4, $[4],
1274 [Define to the type of arg 4 for send.])
1275 AC_DEFINE_UNQUOTED(SEND_TYPE_RETV, $[5],
1276 [Define to the function return type for send.])
1277 #
1278 prev_sh_opts=$-
1279 #
1280 case $prev_sh_opts in
1281 *f*)
1282 ;;
1283 *)
1284 set -f
1285 ;;
1286 esac
1287 #
1288 case "$send_qual_type_arg2" in
1289 const*)
1290 send_qual_arg2=const
1291 send_type_arg2=`echo $send_qual_type_arg2 | sed 's/^const //'`
1292 ;;
1293 *)
1294 send_qual_arg2=
1295 send_type_arg2=$send_qual_type_arg2
1296 ;;
1297 esac
1298 #
1299 AC_DEFINE_UNQUOTED(SEND_QUAL_ARG2, $send_qual_arg2,
1300 [Define to the type qualifier of arg 2 for send.])
1301 AC_DEFINE_UNQUOTED(SEND_TYPE_ARG2, $send_type_arg2,
1302 [Define to the type of arg 2 for send.])
1303 #
1304 case $prev_sh_opts in
1305 *f*)
1306 ;;
1307 *)
1308 set +f
1309 ;;
1310 esac
1311 #
1312 AC_DEFINE_UNQUOTED(HAVE_SEND, 1,
1313 [Define to 1 if you have the send function.])
1314 curl_cv_func_send="yes"
1315 fi
1316 else
1317 AC_MSG_ERROR([Unable to link function send])
1318 fi
1319 ])
1320
1321 dnl CURL_CHECK_MSG_NOSIGNAL
1322 dnl -------------------------------------------------
1323 dnl Check for MSG_NOSIGNAL
1324
1325 AC_DEFUN([CURL_CHECK_MSG_NOSIGNAL], [
1326 AC_CHECK_HEADERS(sys/types.h sys/socket.h)
1327 AC_CACHE_CHECK([for MSG_NOSIGNAL], [curl_cv_msg_nosignal], [
1328 AC_COMPILE_IFELSE([
1329 AC_LANG_PROGRAM([[
1330 #undef inline
1331 #ifdef HAVE_WINDOWS_H
1332 #ifndef WIN32_LEAN_AND_MEAN
1333 #define WIN32_LEAN_AND_MEAN
1334 #endif
1335 #include <windows.h>
1336 #ifdef HAVE_WINSOCK2_H
1337 #include <winsock2.h>
1338 #else
1339 #ifdef HAVE_WINSOCK_H
1340 #include <winsock.h>
1341 #endif
1342 #endif
1343 #else
1344 #ifdef HAVE_PROTO_BSDSOCKET_H
1345 #include <proto/bsdsocket.h>
1346 struct Library *SocketBase = NULL;
1347 #endif
1348 #ifdef HAVE_SYS_TYPES_H
1349 #include <sys/types.h>
1350 #endif
1351 #ifdef HAVE_SYS_SOCKET_H
1352 #include <sys/socket.h>
1353 #endif
1354 #endif
1355 ]],[[
1356 int flag=MSG_NOSIGNAL;
1357 ]])
1358 ],[
1359 curl_cv_msg_nosignal="yes"
1360 ],[
1361 curl_cv_msg_nosignal="no"
1362 ])
1363 ])
1364 case "$curl_cv_msg_nosignal" in
1365 yes)
1366 AC_DEFINE_UNQUOTED(HAVE_MSG_NOSIGNAL, 1,
1367 [Define to 1 if you have the MSG_NOSIGNAL flag.])
1368 ;;
1369 esac
1370 ])
1371
1372
1373 dnl CURL_CHECK_STRUCT_TIMEVAL
1374 dnl -------------------------------------------------
1375 dnl Check for timeval struct
1376
1377 AC_DEFUN([CURL_CHECK_STRUCT_TIMEVAL], [
1378 AC_REQUIRE([AC_HEADER_TIME])dnl
1379 AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl
1380 AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
1381 AC_CHECK_HEADERS(sys/types.h sys/time.h time.h sys/socket.h)
1382 AC_CACHE_CHECK([for struct timeval], [curl_cv_struct_timeval], [
1383 AC_COMPILE_IFELSE([
1384 AC_LANG_PROGRAM([[
1385 #undef inline
1386 #ifdef HAVE_WINDOWS_H
1387 #ifndef WIN32_LEAN_AND_MEAN
1388 #define WIN32_LEAN_AND_MEAN
1389 #endif
1390 #include <windows.h>
1391 #ifdef HAVE_WINSOCK2_H
1392 #include <winsock2.h>
1393 #else
1394 #ifdef HAVE_WINSOCK_H
1395 #include <winsock.h>
1396 #endif
1397 #endif
1398 #endif
1399 #ifdef HAVE_SYS_TYPES_H
1400 #include <sys/types.h>
1401 #endif
1402 #ifdef HAVE_SYS_TIME_H
1403 #include <sys/time.h>
1404 #ifdef TIME_WITH_SYS_TIME
1405 #include <time.h>
1406 #endif
1407 #else
1408 #ifdef HAVE_TIME_H
1409 #include <time.h>
1410 #endif
1411 #endif
1412 #ifdef HAVE_SYS_SOCKET_H
1413 #include <sys/socket.h>
1414 #endif
1415 ]],[[
1416 struct timeval ts;
1417 ts.tv_sec = 0;
1418 ts.tv_usec = 0;
1419 ]])
1420 ],[
1421 curl_cv_struct_timeval="yes"
1422 ],[
1423 curl_cv_struct_timeval="no"
1424 ])
1425 ])
1426 case "$curl_cv_struct_timeval" in
1427 yes)
1428 AC_DEFINE_UNQUOTED(HAVE_STRUCT_TIMEVAL, 1,
1429 [Define to 1 if you have the timeval struct.])
1430 ;;
1431 esac
1432 ])
1433
1434
1435 dnl TYPE_SIG_ATOMIC_T
1436 dnl -------------------------------------------------
1437 dnl Check if the sig_atomic_t type is available, and
1438 dnl verify if it is already defined as volatile.
1439
1440 AC_DEFUN([TYPE_SIG_ATOMIC_T], [
1441 AC_CHECK_HEADERS(signal.h)
1442 AC_CHECK_TYPE([sig_atomic_t],[
1443 AC_DEFINE(HAVE_SIG_ATOMIC_T, 1,
1444 [Define to 1 if sig_atomic_t is an available typedef.])
1445 ], ,[
1446 #ifdef HAVE_SIGNAL_H
1447 #include <signal.h>
1448 #endif
1449 ])
1450 case "$ac_cv_type_sig_atomic_t" in
1451 yes)
1452 #
1453 AC_MSG_CHECKING([if sig_atomic_t is already defined as volatile])
1454 AC_LINK_IFELSE([
1455 AC_LANG_PROGRAM([[
1456 #ifdef HAVE_SIGNAL_H
1457 #include <signal.h>
1458 #endif
1459 ]],[[
1460 static volatile sig_atomic_t dummy = 0;
1461 ]])
1462 ],[
1463 AC_MSG_RESULT([no])
1464 curl_cv_sig_atomic_t_volatile="no"
1465 ],[
1466 AC_MSG_RESULT([yes])
1467 curl_cv_sig_atomic_t_volatile="yes"
1468 ])
1469 #
1470 if test "$curl_cv_sig_atomic_t_volatile" = "yes"; then
1471 AC_DEFINE(HAVE_SIG_ATOMIC_T_VOLATILE, 1,
1472 [Define to 1 if sig_atomic_t is already defined as volatile.])
1473 fi
1474 ;;
1475 esac
1476 ])
1477
1478
1479 dnl TYPE_IN_ADDR_T
1480 dnl -------------------------------------------------
1481 dnl Check for in_addr_t: it is used to receive the return code of inet_addr()
1482 dnl and a few other things.
1483
1484 AC_DEFUN([TYPE_IN_ADDR_T], [
1485 AC_CHECK_TYPE([in_addr_t], ,[
1486 dnl in_addr_t not available
1487 AC_CACHE_CHECK([for in_addr_t equivalent],
1488 [curl_cv_in_addr_t_equiv], [
1489 curl_cv_in_addr_t_equiv="unknown"
1490 for t in "unsigned long" int size_t unsigned long; do
1491 if test "$curl_cv_in_addr_t_equiv" = "unknown"; then
1492 AC_LINK_IFELSE([
1493 AC_LANG_PROGRAM([[
1494 #undef inline
1495 #ifdef HAVE_WINDOWS_H
1496 #ifndef WIN32_LEAN_AND_MEAN
1497 #define WIN32_LEAN_AND_MEAN
1498 #endif
1499 #include <windows.h>
1500 #ifdef HAVE_WINSOCK2_H
1501 #include <winsock2.h>
1502 #else
1503 #ifdef HAVE_WINSOCK_H
1504 #include <winsock.h>
1505 #endif
1506 #endif
1507 #else
1508 #ifdef HAVE_SYS_TYPES_H
1509 #include <sys/types.h>
1510 #endif
1511 #ifdef HAVE_SYS_SOCKET_H
1512 #include <sys/socket.h>
1513 #endif
1514 #ifdef HAVE_NETINET_IN_H
1515 #include <netinet/in.h>
1516 #endif
1517 #ifdef HAVE_ARPA_INET_H
1518 #include <arpa/inet.h>
1519 #endif
1520 #endif
1521 ]],[[
1522 $t data = inet_addr ("1.2.3.4");
1523 ]])
1524 ],[
1525 curl_cv_in_addr_t_equiv="$t"
1526 ])
1527 fi
1528 done
1529 ])
1530 case "$curl_cv_in_addr_t_equiv" in
1531 unknown)
1532 AC_MSG_ERROR([Cannot find a type to use in place of in_addr_t])
1533 ;;
1534 *)
1535 AC_DEFINE_UNQUOTED(in_addr_t, $curl_cv_in_addr_t_equiv,
1536 [Type to use in place of in_addr_t when system does not provide it.])
1537 ;;
1538 esac
1539 ],[
1540 #undef inline
1541 #ifdef HAVE_WINDOWS_H
1542 #ifndef WIN32_LEAN_AND_MEAN
1543 #define WIN32_LEAN_AND_MEAN
1544 #endif
1545 #include <windows.h>
1546 #ifdef HAVE_WINSOCK2_H
1547 #include <winsock2.h>
1548 #else
1549 #ifdef HAVE_WINSOCK_H
1550 #include <winsock.h>
1551 #endif
1552 #endif
1553 #else
1554 #ifdef HAVE_SYS_TYPES_H
1555 #include <sys/types.h>
1556 #endif
1557 #ifdef HAVE_SYS_SOCKET_H
1558 #include <sys/socket.h>
1559 #endif
1560 #ifdef HAVE_NETINET_IN_H
1561 #include <netinet/in.h>
1562 #endif
1563 #ifdef HAVE_ARPA_INET_H
1564 #include <arpa/inet.h>
1565 #endif
1566 #endif
1567 ])
1568 ])
1569
1570
1571 dnl CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC
1572 dnl -------------------------------------------------
1573 dnl Check if monotonic clock_gettime is available.
1574
1575 AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [
1576 AC_REQUIRE([AC_HEADER_TIME])dnl
1577 AC_CHECK_HEADERS(sys/types.h sys/time.h time.h)
1578 AC_MSG_CHECKING([for monotonic clock_gettime])
1579 #
1580 if test "x$dontwant_rt" = "xno" ; then
1581 AC_COMPILE_IFELSE([
1582 AC_LANG_PROGRAM([[
1583 #ifdef HAVE_SYS_TYPES_H
1584 #include <sys/types.h>
1585 #endif
1586 #ifdef HAVE_SYS_TIME_H
1587 #include <sys/time.h>
1588 #ifdef TIME_WITH_SYS_TIME
1589 #include <time.h>
1590 #endif
1591 #else
1592 #ifdef HAVE_TIME_H
1593 #include <time.h>
1594 #endif
1595 #endif
1596 ]],[[
1597 struct timespec ts;
1598 (void)clock_gettime(CLOCK_MONOTONIC, &ts);
1599 ]])
1600 ],[
1601 AC_MSG_RESULT([yes])
1602 curl_func_clock_gettime="yes"
1603 ],[
1604 AC_MSG_RESULT([no])
1605 curl_func_clock_gettime="no"
1606 ])
1607 fi
1608 dnl Definition of HAVE_CLOCK_GETTIME_MONOTONIC is intentionally postponed
1609 dnl until library linking and run-time checks for clock_gettime succeed.
1610 ])
1611
1612
1613 dnl CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
1614 dnl -------------------------------------------------
1615 dnl If monotonic clock_gettime is available then,
1616 dnl check and prepended to LIBS any needed libraries.
1617
1618 AC_DEFUN([CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC], [
1619 AC_REQUIRE([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC])dnl
1620 #
1621 if test "$curl_func_clock_gettime" = "yes"; then
1622 #
1623 AC_MSG_CHECKING([for clock_gettime in libraries])
1624 #
1625 curl_cv_save_LIBS="$LIBS"
1626 curl_cv_gclk_LIBS="unknown"
1627 #
1628 for x_xlibs in '' '-lrt' '-lposix4' ; do
1629 if test "$curl_cv_gclk_LIBS" = "unknown"; then
1630 if test -z "$x_xlibs"; then
1631 LIBS="$curl_cv_save_LIBS"
1632 else
1633 LIBS="$x_xlibs $curl_cv_save_LIBS"
1634 fi
1635 AC_LINK_IFELSE([
1636 AC_LANG_PROGRAM([[
1637 #ifdef HAVE_SYS_TYPES_H
1638 #include <sys/types.h>
1639 #endif
1640 #ifdef HAVE_SYS_TIME_H
1641 #include <sys/time.h>
1642 #ifdef TIME_WITH_SYS_TIME
1643 #include <time.h>
1644 #endif
1645 #else
1646 #ifdef HAVE_TIME_H
1647 #include <time.h>
1648 #endif
1649 #endif
1650 ]],[[
1651 struct timespec ts;
1652 (void)clock_gettime(CLOCK_MONOTONIC, &ts);
1653 ]])
1654 ],[
1655 curl_cv_gclk_LIBS="$x_xlibs"
1656 ])
1657 fi
1658 done
1659 #
1660 LIBS="$curl_cv_save_LIBS"
1661 #
1662 case X-"$curl_cv_gclk_LIBS" in
1663 X-unknown)
1664 AC_MSG_RESULT([cannot find clock_gettime])
1665 AC_MSG_WARN([HAVE_CLOCK_GETTIME_MONOTONIC will not be defined])
1666 curl_func_clock_gettime="no"
1667 ;;
1668 X-)
1669 AC_MSG_RESULT([no additional lib required])
1670 curl_func_clock_gettime="yes"
1671 ;;
1672 *)
1673 if test -z "$curl_cv_save_LIBS"; then
1674 LIBS="$curl_cv_gclk_LIBS"
1675 else
1676 LIBS="$curl_cv_gclk_LIBS $curl_cv_save_LIBS"
1677 fi
1678 AC_MSG_RESULT([$curl_cv_gclk_LIBS])
1679 curl_func_clock_gettime="yes"
1680 ;;
1681 esac
1682 #
1683 dnl only do runtime verification when not cross-compiling
1684 if test "x$cross_compiling" != "xyes" &&
1685 test "$curl_func_clock_gettime" = "yes"; then
1686 AC_MSG_CHECKING([if monotonic clock_gettime works])
1687 CURL_RUN_IFELSE([
1688 AC_LANG_PROGRAM([[
1689 #ifdef HAVE_STDLIB_H
1690 #include <stdlib.h>
1691 #endif
1692 #ifdef HAVE_SYS_TYPES_H
1693 #include <sys/types.h>
1694 #endif
1695 #ifdef HAVE_SYS_TIME_H
1696 #include <sys/time.h>
1697 #ifdef TIME_WITH_SYS_TIME
1698 #include <time.h>
1699 #endif
1700 #else
1701 #ifdef HAVE_TIME_H
1702 #include <time.h>
1703 #endif
1704 #endif
1705 ]],[[
1706 struct timespec ts;
1707 if (0 == clock_gettime(CLOCK_MONOTONIC, &ts))
1708 exit(0);
1709 else
1710 exit(1);
1711 ]])
1712 ],[
1713 AC_MSG_RESULT([yes])
1714 ],[
1715 AC_MSG_RESULT([no])
1716 AC_MSG_WARN([HAVE_CLOCK_GETTIME_MONOTONIC will not be defined])
1717 curl_func_clock_gettime="no"
1718 LIBS="$curl_cv_save_LIBS"
1719 ])
1720 fi
1721 #
1722 case "$curl_func_clock_gettime" in
1723 yes)
1724 AC_DEFINE_UNQUOTED(HAVE_CLOCK_GETTIME_MONOTONIC, 1,
1725 [Define to 1 if you have the clock_gettime function and monotonic timer.])
1726 ;;
1727 esac
1728 #
1729 fi
1730 #
1731 ])
1732
1733
1734 dnl CURL_CHECK_LIBS_CONNECT
1735 dnl -------------------------------------------------
1736 dnl Verify if network connect function is already available
1737 dnl using current libraries or if another one is required.
1738
1739 AC_DEFUN([CURL_CHECK_LIBS_CONNECT], [
1740 AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
1741 AC_REQUIRE([CURL_INCLUDES_BSDSOCKET])dnl
1742 AC_MSG_CHECKING([for connect in libraries])
1743 tst_connect_save_LIBS="$LIBS"
1744 tst_connect_need_LIBS="unknown"
1745 for tst_lib in '' '-lsocket' ; do
1746 if test "$tst_connect_need_LIBS" = "unknown"; then
1747 LIBS="$tst_lib $tst_connect_save_LIBS"
1748 AC_LINK_IFELSE([
1749 AC_LANG_PROGRAM([[
1750 $curl_includes_winsock2
1751 $curl_includes_bsdsocket
1752 #if !defined(HAVE_WINDOWS_H) && !defined(HAVE_PROTO_BSDSOCKET_H)
1753 int connect(int, void*, int);
1754 #endif
1755 ]],[[
1756 if(0 != connect(0, 0, 0))
1757 return 1;
1758 ]])
1759 ],[
1760 tst_connect_need_LIBS="$tst_lib"
1761 ])
1762 fi
1763 done
1764 LIBS="$tst_connect_save_LIBS"
1765 #
1766 case X-"$tst_connect_need_LIBS" in
1767 X-unknown)
1768 AC_MSG_RESULT([cannot find connect])
1769 AC_MSG_ERROR([cannot find connect function in libraries.])
1770 ;;
1771 X-)
1772 AC_MSG_RESULT([yes])
1773 ;;
1774 *)
1775 AC_MSG_RESULT([$tst_connect_need_LIBS])
1776 LIBS="$tst_connect_need_LIBS $tst_connect_save_LIBS"
1777 ;;
1778 esac
1779 ])
1780
1781
1782 dnl CURL_DEFINE_UNQUOTED (VARIABLE, [VALUE])
1783 dnl -------------------------------------------------
1784 dnl Like AC_DEFINE_UNQUOTED this macro will define a C preprocessor
1785 dnl symbol that can be further used in custom template configuration
1786 dnl files. This macro, unlike AC_DEFINE_UNQUOTED, does not use a third
1787 dnl argument for the description. Symbol definitions done with this
1788 dnl macro are intended to be exclusively used in handcrafted *.h.in
1789 dnl template files. Contrary to what AC_DEFINE_UNQUOTED does, this one
1790 dnl prevents autoheader generation and insertion of symbol template
1791 dnl stub and definition into the first configuration header file. Do
1792 dnl not use this macro as a replacement for AC_DEFINE_UNQUOTED, each
1793 dnl one serves different functional needs.
1794
1795 AC_DEFUN([CURL_DEFINE_UNQUOTED], [
1796 cat >>confdefs.h <<_EOF
1797 [@%:@define] $1 ifelse($#, 2, [$2], 1)
1798 _EOF
1799 ])
1800
1801 dnl CURL_CONFIGURE_PULL_SYS_POLL
1802 dnl -------------------------------------------------
1803 dnl The need for the sys/poll.h inclusion arises mainly to properly
1804 dnl interface AIX systems which define macros 'events' and 'revents'.
1805
1806 AC_DEFUN([CURL_CONFIGURE_PULL_SYS_POLL], [
1807 AC_REQUIRE([CURL_INCLUDES_POLL])dnl
1808 #
1809 tst_poll_events_macro_defined="unknown"
1810 #
1811 AC_COMPILE_IFELSE([
1812 AC_LANG_PROGRAM([[
1813 $curl_includes_poll
1814 ]],[[
1815 #if defined(events) || defined(revents)
1816 return 0;
1817 #else
1818 force compilation error
1819 #endif
1820 ]])
1821 ],[
1822 tst_poll_events_macro_defined="yes"
1823 ],[
1824 tst_poll_events_macro_defined="no"
1825 ])
1826 #
1827 if test "$tst_poll_events_macro_defined" = "yes"; then
1828 if test "x$ac_cv_header_sys_poll_h" = "xyes"; then
1829 CURL_DEFINE_UNQUOTED([CURL_PULL_SYS_POLL_H])
1830 fi
1831 fi
1832 #
1833 ])
1834
1835
1836 dnl CURL_CHECK_FUNC_SELECT
1837 dnl -------------------------------------------------
1838 dnl Test if the socket select() function is available,
1839 dnl and check its return type and the types of its
1840 dnl arguments. If the function succeeds HAVE_SELECT
1841 dnl will be defined, defining the types of the
1842 dnl arguments in SELECT_TYPE_ARG1, SELECT_TYPE_ARG234
1843 dnl and SELECT_TYPE_ARG5, defining the type of the
1844 dnl function return value in SELECT_TYPE_RETV, and
1845 dnl also defining the type qualifier of fifth argument
1846 dnl in SELECT_QUAL_ARG5.
1847
1848 AC_DEFUN([CURL_CHECK_FUNC_SELECT], [
1849 AC_REQUIRE([CURL_CHECK_STRUCT_TIMEVAL])dnl
1850 AC_CHECK_HEADERS(sys/select.h sys/socket.h)
1851 #
1852 AC_MSG_CHECKING([for select])
1853 AC_LINK_IFELSE([
1854 AC_LANG_PROGRAM([[
1855 #undef inline
1856 #ifdef HAVE_WINDOWS_H
1857 #ifndef WIN32_LEAN_AND_MEAN
1858 #define WIN32_LEAN_AND_MEAN
1859 #endif
1860 #include <windows.h>
1861 #ifdef HAVE_WINSOCK2_H
1862 #include <winsock2.h>
1863 #else
1864 #ifdef HAVE_WINSOCK_H
1865 #include <winsock.h>
1866 #endif
1867 #endif
1868 #endif
1869 #ifdef HAVE_SYS_TYPES_H
1870 #include <sys/types.h>
1871 #endif
1872 #ifdef HAVE_SYS_TIME_H
1873 #include <sys/time.h>
1874 #ifdef TIME_WITH_SYS_TIME
1875 #include <time.h>
1876 #endif
1877 #else
1878 #ifdef HAVE_TIME_H
1879 #include <time.h>
1880 #endif
1881 #endif
1882 #ifndef HAVE_WINDOWS_H
1883 #ifdef HAVE_PROTO_BSDSOCKET_H
1884 #include <proto/bsdsocket.h>
1885 struct Library *SocketBase = NULL;
1886 #define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
1887 #endif
1888 #ifdef HAVE_SYS_SELECT_H
1889 #include <sys/select.h>
1890 #endif
1891 #ifdef HAVE_SYS_SOCKET_H
1892 #include <sys/socket.h>
1893 #endif
1894 #endif
1895 ]],[[
1896 select(0, 0, 0, 0, 0);
1897 ]])
1898 ],[
1899 AC_MSG_RESULT([yes])
1900 curl_cv_select="yes"
1901 ],[
1902 AC_MSG_RESULT([no])
1903 curl_cv_select="no"
1904 ])
1905 #
1906 if test "$curl_cv_select" = "yes"; then
1907 AC_CACHE_CHECK([types of args and return type for select],
1908 [curl_cv_func_select_args], [
1909 curl_cv_func_select_args="unknown"
1910 for sel_retv in 'int' 'ssize_t'; do
1911 for sel_arg1 in 'int' 'ssize_t' 'size_t' 'unsigned long int' 'unsigned int'; do
1912 for sel_arg234 in 'fd_set *' 'int *' 'void *'; do
1913 for sel_arg5 in 'struct timeval *' 'const struct timeval *'; do
1914 if test "$curl_cv_func_select_args" = "unknown"; then
1915 AC_COMPILE_IFELSE([
1916 AC_LANG_PROGRAM([[
1917 #undef inline
1918 #ifdef HAVE_WINDOWS_H
1919 #ifndef WIN32_LEAN_AND_MEAN
1920 #define WIN32_LEAN_AND_MEAN
1921 #endif
1922 #include <windows.h>
1923 #ifdef HAVE_WINSOCK2_H
1924 #include <winsock2.h>
1925 #else
1926 #ifdef HAVE_WINSOCK_H
1927 #include <winsock.h>
1928 #endif
1929 #endif
1930 #define SELECTCALLCONV PASCAL
1931 #endif
1932 #ifdef HAVE_SYS_TYPES_H
1933 #include <sys/types.h>
1934 #endif
1935 #ifdef HAVE_SYS_TIME_H
1936 #include <sys/time.h>
1937 #ifdef TIME_WITH_SYS_TIME
1938 #include <time.h>
1939 #endif
1940 #else
1941 #ifdef HAVE_TIME_H
1942 #include <time.h>
1943 #endif
1944 #endif
1945 #ifndef HAVE_WINDOWS_H
1946 #ifdef HAVE_PROTO_BSDSOCKET_H
1947 #include <proto/bsdsocket.h>
1948 struct Library *SocketBase = NULL;
1949 #define select(a,b,c,d,e) WaitSelect(a,b,c,d,e,0)
1950 #endif
1951 #ifdef HAVE_SYS_SELECT_H
1952 #include <sys/select.h>
1953 #endif
1954 #ifdef HAVE_SYS_SOCKET_H
1955 #include <sys/socket.h>
1956 #endif
1957 #define SELECTCALLCONV
1958 #endif
1959 #ifndef HAVE_STRUCT_TIMEVAL
1960 struct timeval {
1961 long tv_sec;
1962 long tv_usec;
1963 };
1964 #endif
1965 #ifndef HAVE_PROTO_BSDSOCKET_H
1966 extern $sel_retv SELECTCALLCONV
1967 select($sel_arg1,
1968 $sel_arg234,
1969 $sel_arg234,
1970 $sel_arg234,
1971 $sel_arg5);
1972 #endif
1973 ]],[[
1974 $sel_arg1 nfds=0;
1975 $sel_arg234 rfds=0;
1976 $sel_arg234 wfds=0;
1977 $sel_arg234 efds=0;
1978 $sel_retv res = select(nfds, rfds, wfds, efds, 0);
1979 ]])
1980 ],[
1981 curl_cv_func_select_args="$sel_arg1,$sel_arg234,$sel_arg5,$sel_retv"
1982 ])
1983 fi
1984 done
1985 done
1986 done
1987 done
1988 ]) # AC-CACHE-CHECK
1989 if test "$curl_cv_func_select_args" = "unknown"; then
1990 AC_MSG_WARN([Cannot find proper types to use for select args])
1991 AC_MSG_WARN([HAVE_SELECT will not be defined])
1992 else
1993 select_prev_IFS=$IFS; IFS=','
1994 set dummy `echo "$curl_cv_func_select_args" | sed 's/\*/\*/g'`
1995 IFS=$select_prev_IFS
1996 shift
1997 #
1998 sel_qual_type_arg5=$[3]
1999 #
2000 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG1, $[1],
2001 [Define to the type of arg 1 for select.])
2002 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG234, $[2],
2003 [Define to the type of args 2, 3 and 4 for select.])
2004 AC_DEFINE_UNQUOTED(SELECT_TYPE_RETV, $[4],
2005 [Define to the function return type for select.])
2006 #
2007 prev_sh_opts=$-
2008 #
2009 case $prev_sh_opts in
2010 *f*)
2011 ;;
2012 *)
2013 set -f
2014 ;;
2015 esac
2016 #
2017 case "$sel_qual_type_arg5" in
2018 const*)
2019 sel_qual_arg5=const
2020 sel_type_arg5=`echo $sel_qual_type_arg5 | sed 's/^const //'`
2021 ;;
2022 *)
2023 sel_qual_arg5=
2024 sel_type_arg5=$sel_qual_type_arg5
2025 ;;
2026 esac
2027 #
2028 AC_DEFINE_UNQUOTED(SELECT_QUAL_ARG5, $sel_qual_arg5,
2029 [Define to the type qualifier of arg 5 for select.])
2030 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG5, $sel_type_arg5,
2031 [Define to the type of arg 5 for select.])
2032 #
2033 case $prev_sh_opts in
2034 *f*)
2035 ;;
2036 *)
2037 set +f
2038 ;;
2039 esac
2040 #
2041 AC_DEFINE_UNQUOTED(HAVE_SELECT, 1,
2042 [Define to 1 if you have the select function.])
2043 curl_cv_func_select="yes"
2044 fi
2045 fi
2046 ])
2047
2048
2049 dnl CURL_VERIFY_RUNTIMELIBS
2050 dnl -------------------------------------------------
2051 dnl Verify that the shared libs found so far can be used when running
2052 dnl programs, since otherwise the situation will create odd configure errors
2053 dnl that are misleading people.
2054 dnl
2055 dnl Make sure this test is run BEFORE the first test in the script that
2056 dnl runs anything, which at the time of this writing is the AC_CHECK_SIZEOF
2057 dnl macro. It must also run AFTER all lib-checking macros are complete.
2058
2059 AC_DEFUN([CURL_VERIFY_RUNTIMELIBS], [
2060
2061 dnl this test is of course not sensible if we are cross-compiling!
2062 if test "x$cross_compiling" != xyes; then
2063
2064 dnl just run a program to verify that the libs checked for previous to this
2065 dnl point also is available run-time!
2066 AC_MSG_CHECKING([run-time libs availability])
2067 CURL_RUN_IFELSE([
2068 int main()
2069 {
2070 return 0;
2071 }
2072 ],
2073 AC_MSG_RESULT([fine]),
2074 AC_MSG_RESULT([failed])
2075 AC_MSG_ERROR([one or more libs available at link-time are not available run-time. Libs used at link-time: $LIBS])
2076 )
2077
2078 dnl if this test fails, configure has already stopped
2079 fi
2080 ])
2081
2082
2083 dnl CURL_CHECK_VARIADIC_MACROS
2084 dnl -------------------------------------------------
2085 dnl Check compiler support of variadic macros
2086
2087 AC_DEFUN([CURL_CHECK_VARIADIC_MACROS], [
2088 AC_CACHE_CHECK([for compiler support of C99 variadic macro style],
2089 [curl_cv_variadic_macros_c99], [
2090 AC_COMPILE_IFELSE([
2091 AC_LANG_PROGRAM([[
2092 #define c99_vmacro3(first, ...) fun3(first, __VA_ARGS__)
2093 #define c99_vmacro2(first, ...) fun2(first, __VA_ARGS__)
2094 int fun3(int arg1, int arg2, int arg3);
2095 int fun2(int arg1, int arg2);
2096 int fun3(int arg1, int arg2, int arg3)
2097 { return arg1 + arg2 + arg3; }
2098 int fun2(int arg1, int arg2)
2099 { return arg1 + arg2; }
2100 ]],[[
2101 int res3 = c99_vmacro3(1, 2, 3);
2102 int res2 = c99_vmacro2(1, 2);
2103 ]])
2104 ],[
2105 curl_cv_variadic_macros_c99="yes"
2106 ],[
2107 curl_cv_variadic_macros_c99="no"
2108 ])
2109 ])
2110 case "$curl_cv_variadic_macros_c99" in
2111 yes)
2112 AC_DEFINE_UNQUOTED(HAVE_VARIADIC_MACROS_C99, 1,
2113 [Define to 1 if compiler supports C99 variadic macro style.])
2114 ;;
2115 esac
2116 AC_CACHE_CHECK([for compiler support of old gcc variadic macro style],
2117 [curl_cv_variadic_macros_gcc], [
2118 AC_COMPILE_IFELSE([
2119 AC_LANG_PROGRAM([[
2120 #define gcc_vmacro3(first, args...) fun3(first, args)
2121 #define gcc_vmacro2(first, args...) fun2(first, args)
2122 int fun3(int arg1, int arg2, int arg3);
2123 int fun2(int arg1, int arg2);
2124 int fun3(int arg1, int arg2, int arg3)
2125 { return arg1 + arg2 + arg3; }
2126 int fun2(int arg1, int arg2)
2127 { return arg1 + arg2; }
2128 ]],[[
2129 int res3 = gcc_vmacro3(1, 2, 3);
2130 int res2 = gcc_vmacro2(1, 2);
2131 ]])
2132 ],[
2133 curl_cv_variadic_macros_gcc="yes"
2134 ],[
2135 curl_cv_variadic_macros_gcc="no"
2136 ])
2137 ])
2138 case "$curl_cv_variadic_macros_gcc" in
2139 yes)
2140 AC_DEFINE_UNQUOTED(HAVE_VARIADIC_MACROS_GCC, 1,
2141 [Define to 1 if compiler supports old gcc variadic macro style.])
2142 ;;
2143 esac
2144 ])
2145
2146
2147 dnl CURL_CHECK_CA_BUNDLE
2148 dnl -------------------------------------------------
2149 dnl Check if a default ca-bundle should be used
2150 dnl
2151 dnl regarding the paths this will scan:
2152 dnl /etc/ssl/certs/ca-certificates.crt Debian systems
2153 dnl /etc/pki/tls/certs/ca-bundle.crt Redhat and Mandriva
2154 dnl /usr/share/ssl/certs/ca-bundle.crt old(er) Redhat
2155 dnl /usr/local/share/certs/ca-root-nss.crt FreeBSD
2156 dnl /etc/ssl/cert.pem OpenBSD, FreeBSD (symlink)
2157 dnl /etc/ssl/certs/ (ca path) SUSE
2158
2159 AC_DEFUN([CURL_CHECK_CA_BUNDLE], [
2160
2161 AC_MSG_CHECKING([default CA cert bundle/path])
2162
2163 AC_ARG_WITH(ca-bundle,
2164 AC_HELP_STRING([--with-ca-bundle=FILE],
2165 [Path to a file containing CA certificates (example: /etc/ca-bundle.crt)])
2166 AC_HELP_STRING([--without-ca-bundle], [Don't use a default CA bundle]),
2167 [
2168 want_ca="$withval"
2169 if test "x$want_ca" = "xyes"; then
2170 AC_MSG_ERROR([--with-ca-bundle=FILE requires a path to the CA bundle])
2171 fi
2172 ],
2173 [ want_ca="unset" ])
2174 AC_ARG_WITH(ca-path,
2175 AC_HELP_STRING([--with-ca-path=DIRECTORY],
2176 [Path to a directory containing CA certificates stored individually, with \
2177 their filenames in a hash format. This option can be used with OpenSSL, \
2178 GnuTLS and PolarSSL backends. Refer to OpenSSL c_rehash for details. \
2179 (example: /etc/certificates)])
2180 AC_HELP_STRING([--without-ca-path], [Don't use a default CA path]),
2181 [
2182 want_capath="$withval"
2183 if test "x$want_capath" = "xyes"; then
2184 AC_MSG_ERROR([--with-ca-path=DIRECTORY requires a path to the CA path directory])
2185 fi
2186 ],
2187 [ want_capath="unset"])
2188
2189 ca_warning=" (warning: certs not found)"
2190 capath_warning=" (warning: certs not found)"
2191 check_capath=""
2192
2193 if test "x$want_ca" != "xno" -a "x$want_ca" != "xunset" -a \
2194 "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
2195 dnl both given
2196 ca="$want_ca"
2197 capath="$want_capath"
2198 elif test "x$want_ca" != "xno" -a "x$want_ca" != "xunset"; then
2199 dnl --with-ca-bundle given
2200 ca="$want_ca"
2201 capath="no"
2202 elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
2203 dnl --with-ca-path given
2204 if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then
2205 AC_MSG_ERROR([--with-ca-path only works with OpenSSL, GnuTLS or PolarSSL])
2206 fi
2207 capath="$want_capath"
2208 ca="no"
2209 else
2210 dnl first try autodetecting a CA bundle , then a CA path
2211 dnl both autodetections can be skipped by --without-ca-*
2212 ca="no"
2213 capath="no"
2214 if test "x$cross_compiling" != "xyes"; then
2215 dnl NOT cross-compiling and...
2216 dnl neither of the --with-ca-* options are provided
2217 if test "x$want_ca" = "xunset"; then
2218 dnl the path we previously would have installed the curl ca bundle
2219 dnl to, and thus we now check for an already existing cert in that
2220 dnl place in case we find no other
2221 if test "x$prefix" != xNONE; then
2222 cac="${prefix}/share/curl/curl-ca-bundle.crt"
2223 else
2224 cac="$ac_default_prefix/share/curl/curl-ca-bundle.crt"
2225 fi
2226
2227 for a in /etc/ssl/certs/ca-certificates.crt \
2228 /etc/pki/tls/certs/ca-bundle.crt \
2229 /usr/share/ssl/certs/ca-bundle.crt \
2230 /usr/local/share/certs/ca-root-nss.crt \
2231 /etc/ssl/cert.pem \
2232 "$cac"; do
2233 if test -f "$a"; then
2234 ca="$a"
2235 break
2236 fi
2237 done
2238 fi
2239 if test "x$want_capath" = "xunset" -a "x$ca" = "xno" -a \
2240 "x$OPENSSL_ENABLED" = "x1"; then
2241 check_capath="/etc/ssl/certs/"
2242 fi
2243 else
2244 dnl no option given and cross-compiling
2245 AC_MSG_WARN([skipped the ca-cert path detection when cross-compiling])
2246 fi
2247 fi
2248
2249 if test "x$ca" = "xno" || test -f "$ca"; then
2250 ca_warning=""
2251 fi
2252
2253 if test "x$capath" != "xno"; then
2254 check_capath="$capath"
2255 fi
2256
2257 if test ! -z "$check_capath"; then
2258 for a in "$check_capath"; do
2259 if test -d "$a" && ls "$a"/[[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]].0 >/dev/null 2>/dev/null; then
2260 if test "x$capath" = "xno"; then
2261 capath="$a"
2262 fi
2263 capath_warning=""
2264 break
2265 fi
2266 done
2267 fi
2268
2269 if test "x$capath" = "xno"; then
2270 capath_warning=""
2271 fi
2272
2273 if test "x$ca" != "xno"; then
2274 CURL_CA_BUNDLE='"'$ca'"'
2275 AC_DEFINE_UNQUOTED(CURL_CA_BUNDLE, "$ca", [Location of default ca bundle])
2276 AC_SUBST(CURL_CA_BUNDLE)
2277 AC_MSG_RESULT([$ca])
2278 fi
2279 if test "x$capath" != "xno"; then
2280 CURL_CA_PATH="\"$capath\""
2281 AC_DEFINE_UNQUOTED(CURL_CA_PATH, "$capath", [Location of default ca path])
2282 AC_MSG_RESULT([$capath (capath)])
2283 fi
2284 if test "x$ca" = "xno" && test "x$capath" = "xno"; then
2285 AC_MSG_RESULT([no])
2286 fi
2287
2288 AC_MSG_CHECKING([whether to use builtin CA store of SSL library])
2289 AC_ARG_WITH(ca-fallback,
2290 AC_HELP_STRING([--with-ca-fallback], [Use the built in CA store of the SSL library])
2291 AC_HELP_STRING([--without-ca-fallback], [Don't use the built in CA store of the SSL library]),
2292 [
2293 if test "x$with_ca_fallback" != "xyes" -a "x$with_ca_fallback" != "xno"; then
2294 AC_MSG_ERROR([--with-ca-fallback only allows yes or no as parameter])
2295 fi
2296 ],
2297 [ with_ca_fallback="no"])
2298 AC_MSG_RESULT([$with_ca_fallback])
2299 if test "x$with_ca_fallback" = "xyes"; then
2300 if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1"; then
2301 AC_MSG_ERROR([--with-ca-fallback only works with OpenSSL or GnuTLS])
2302 fi
2303 AC_DEFINE_UNQUOTED(CURL_CA_FALLBACK, 1, [define "1" to use built in CA store of SSL library ])
2304 fi
2305 ])
2306
2307 dnl CURL_CHECK_WIN32_LARGEFILE
2308 dnl -------------------------------------------------
2309 dnl Check if curl's WIN32 large file will be used
2310
2311 AC_DEFUN([CURL_CHECK_WIN32_LARGEFILE], [
2312 AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
2313 AC_MSG_CHECKING([whether build target supports WIN32 file API])
2314 curl_win32_file_api="no"
2315 if test "$curl_cv_header_windows_h" = "yes"; then
2316 if test x"$enable_largefile" != "xno"; then
2317 AC_COMPILE_IFELSE([
2318 AC_LANG_PROGRAM([[
2319 ]],[[
2320 #if !defined(_WIN32_WCE) && \
2321 (defined(__MINGW32__) || \
2322 (defined(_MSC_VER) && (defined(_WIN32) || defined(_WIN64))))
2323 int dummy=1;
2324 #else
2325 WIN32 large file API not supported.
2326 #endif
2327 ]])
2328 ],[
2329 curl_win32_file_api="win32_large_files"
2330 ])
2331 fi
2332 if test "$curl_win32_file_api" = "no"; then
2333 AC_COMPILE_IFELSE([
2334 AC_LANG_PROGRAM([[
2335 ]],[[
2336 #if defined(_WIN32_WCE) || defined(__MINGW32__) || defined(_MSC_VER)
2337 int dummy=1;
2338 #else
2339 WIN32 small file API not supported.
2340 #endif
2341 ]])
2342 ],[
2343 curl_win32_file_api="win32_small_files"
2344 ])
2345 fi
2346 fi
2347 case "$curl_win32_file_api" in
2348 win32_large_files)
2349 AC_MSG_RESULT([yes (large file enabled)])
2350 AC_DEFINE_UNQUOTED(USE_WIN32_LARGE_FILES, 1,
2351 [Define to 1 if you are building a Windows target with large file support.])
2352 ;;
2353 win32_small_files)
2354 AC_MSG_RESULT([yes (large file disabled)])
2355 AC_DEFINE_UNQUOTED(USE_WIN32_SMALL_FILES, 1,
2356 [Define to 1 if you are building a Windows target without large file support.])
2357 ;;
2358 *)
2359 AC_MSG_RESULT([no])
2360 ;;
2361 esac
2362 ])
2363
2364 dnl CURL_EXPORT_PCDIR ($pcdir)
2365 dnl ------------------------
2366 dnl if $pcdir is not empty, set PKG_CONFIG_LIBDIR to $pcdir and export
2367 dnl
2368 dnl we need this macro since pkg-config distinguishes among empty and unset
2369 dnl variable while checking PKG_CONFIG_LIBDIR
2370 dnl
2371
2372 AC_DEFUN([CURL_EXPORT_PCDIR], [
2373 if test -n "$1"; then
2374 PKG_CONFIG_LIBDIR="$1"
2375 export PKG_CONFIG_LIBDIR
2376 fi
2377 ])
2378
2379 dnl CURL_CHECK_PKGCONFIG ($module, [$pcdir])
2380 dnl ------------------------
2381 dnl search for the pkg-config tool. Set the PKGCONFIG variable to hold the
2382 dnl path to it, or 'no' if not found/present.
2383 dnl
2384 dnl If pkg-config is present, check that it has info about the $module or
2385 dnl return "no" anyway!
2386 dnl
2387 dnl Optionally PKG_CONFIG_LIBDIR may be given as $pcdir.
2388 dnl
2389
2390 AC_DEFUN([CURL_CHECK_PKGCONFIG], [
2391 if test -n "$PKG_CONFIG"; then
2392 PKGCONFIG="$PKG_CONFIG"
2393 else
2394 AC_PATH_TOOL([PKGCONFIG], [pkg-config], [no],
2395 [$PATH:/usr/bin:/usr/local/bin])
2396 fi
2397
2398 if test "x$PKGCONFIG" != "xno"; then
2399 AC_MSG_CHECKING([for $1 options with pkg-config])
2400 dnl ask pkg-config about $1
2401 itexists=`CURL_EXPORT_PCDIR([$2]) dnl
2402 $PKGCONFIG --exists $1 >/dev/null 2>&1 && echo 1`
2403
2404 if test -z "$itexists"; then
2405 dnl pkg-config does not have info about the given module! set the
2406 dnl variable to 'no'
2407 PKGCONFIG="no"
2408 AC_MSG_RESULT([no])
2409 else
2410 AC_MSG_RESULT([found])
2411 fi
2412 fi
2413 ])
2414
2415
2416 dnl CURL_GENERATE_CONFIGUREHELP_PM
2417 dnl -------------------------------------------------
2418 dnl Generate test harness configurehelp.pm module, defining and
2419 dnl initializing some perl variables with values which are known
2420 dnl when the configure script runs. For portability reasons, test
2421 dnl harness needs information on how to run the C preprocessor.
2422
2423 AC_DEFUN([CURL_GENERATE_CONFIGUREHELP_PM], [
2424 AC_REQUIRE([AC_PROG_CPP])dnl
2425 tmp_cpp=`eval echo "$ac_cpp" 2>/dev/null`
2426 if test -z "$tmp_cpp"; then
2427 tmp_cpp='cpp'
2428 fi
2429 cat >./tests/configurehelp.pm <<_EOF
2430 [@%:@] This is a generated file. Do not edit.
2431
2432 package configurehelp;
2433
2434 use strict;
2435 use warnings;
2436 use Exporter;
2437
2438 use vars qw(
2439 @ISA
2440 @EXPORT_OK
2441 \$Cpreprocessor
2442 );
2443
2444 @ISA = qw(Exporter);
2445
2446 @EXPORT_OK = qw(
2447 \$Cpreprocessor
2448 );
2449
2450 \$Cpreprocessor = '$tmp_cpp';
2451
2452 1;
2453 _EOF
2454 ])
2455
2456 dnl CURL_CPP_P
2457 dnl
2458 dnl Check if $cpp -P should be used for extract define values due to gcc 5
2459 dnl splitting up strings and defines between line outputs. gcc by default
2460 dnl (without -P) will show TEST EINVAL TEST as
2461 dnl
2462 dnl # 13 "conftest.c"
2463 dnl TEST
2464 dnl # 13 "conftest.c" 3 4
2465 dnl 22
2466 dnl # 13 "conftest.c"
2467 dnl TEST
2468
2469 AC_DEFUN([CURL_CPP_P], [
2470 AC_MSG_CHECKING([if cpp -P is needed])
2471 AC_EGREP_CPP([TEST.*TEST], [
2472 #include <errno.h>
2473 TEST EINVAL TEST
2474 ], [cpp=no], [cpp=yes])
2475 AC_MSG_RESULT([$cpp])
2476
2477 dnl we need cpp -P so check if it works then
2478 if test "x$cpp" = "xyes"; then
2479 AC_MSG_CHECKING([if cpp -P works])
2480 OLDCPPFLAGS=$CPPFLAGS
2481 CPPFLAGS="$CPPFLAGS -P"
2482 AC_EGREP_CPP([TEST.*TEST], [
2483 #include <errno.h>
2484 TEST EINVAL TEST
2485 ], [cpp_p=yes], [cpp_p=no])
2486 AC_MSG_RESULT([$cpp_p])
2487
2488 if test "x$cpp_p" = "xno"; then
2489 AC_MSG_WARN([failed to figure out cpp -P alternative])
2490 # without -P
2491 CPPPFLAG=""
2492 else
2493 # with -P
2494 CPPPFLAG="-P"
2495 fi
2496 dnl restore CPPFLAGS
2497 CPPFLAGS=$OLDCPPFLAGS
2498 else
2499 # without -P
2500 CPPPFLAG=""
2501 fi
2502 ])
2503
2504
2505 dnl CURL_MAC_CFLAGS
2506 dnl
2507 dnl Check if -mmacosx-version-min, -miphoneos-version-min or any
2508 dnl similar are set manually, otherwise do. And set
2509 dnl -Werror=partial-availability.
2510 dnl
2511
2512 AC_DEFUN([CURL_MAC_CFLAGS], [
2513
2514 tst_cflags="no"
2515 case $host_os in
2516 darwin*)
2517 tst_cflags="yes"
2518 ;;
2519 esac
2520
2521 AC_MSG_CHECKING([for good-to-use Mac CFLAGS])
2522 AC_MSG_RESULT([$tst_cflags]);
2523
2524 if test "$tst_cflags" = "yes"; then
2525 AC_MSG_CHECKING([for *version-min in CFLAGS])
2526 min=""
2527 if test -z "$(echo $CFLAGS | grep m.*os.*-version-min)"; then
2528 min="-mmacosx-version-min=10.8"
2529 CFLAGS="$CFLAGS $min"
2530 fi
2531 if test -z "$min"; then
2532 AC_MSG_RESULT([set by user])
2533 else
2534 AC_MSG_RESULT([$min set])
2535 fi
2536
2537 old_CFLAGS=$CFLAGS
2538 CFLAGS="$CFLAGS -Werror=partial-availability"
2539 AC_MSG_CHECKING([whether $CC accepts -Werror=partial-availability])
2540 AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],
2541 [AC_MSG_RESULT([yes])],
2542 [AC_MSG_RESULT([no])
2543 CFLAGS=$old_CFLAGS])
2544 fi
2545
2546 ])
2547
2548
2549 dnl CURL_SUPPORTS_BUILTIN_AVAILABLE
2550 dnl
2551 dnl Check to see if the compiler supports __builtin_available. This built-in
2552 dnl compiler function first appeared in Apple LLVM 9.0.0. It's so new that, at
2553 dnl the time this macro was written, the function was not yet documented. Its
2554 dnl purpose is to return true if the code is running under a certain OS version
2555 dnl or later.
2556
2557 AC_DEFUN([CURL_SUPPORTS_BUILTIN_AVAILABLE], [
2558 AC_MSG_CHECKING([to see if the compiler supports __builtin_available()])
2559 AC_COMPILE_IFELSE([
2560 AC_LANG_PROGRAM([[
2561 #include <stdlib.h>
2562 ]],[[
2563 if (__builtin_available(macOS 10.8, iOS 5.0, *)) {}
2564 ]])
2565 ],[
2566 AC_MSG_RESULT([yes])
2567 AC_DEFINE_UNQUOTED(HAVE_BUILTIN_AVAILABLE, 1,
2568 [Define to 1 if you have the __builtin_available function.])
2569 ],[
2570 AC_MSG_RESULT([no])
2571 ])
2572 ])