1 #***************************************************************************
3 # Project ___| | | | _ \| |
5 # | (__| |_| | _ <| |___
6 # \___|\___/|_| \_\_____|
8 # Copyright (C) 1998 - 2012, 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 #***************************************************************************
24 dnl CURL_CHECK_DEF (SYMBOL, [INCLUDES], [SILENT])
25 dnl -------------------------------------------------
26 dnl Use the C preprocessor to find out if the given object-style symbol
27 dnl is defined and get its expansion. This macro will not use default
28 dnl includes even if no INCLUDES argument is given. This macro will run
29 dnl silently when invoked with three arguments. If the expansion would
30 dnl result in a set of double-quoted strings the returned expansion will
31 dnl actually be a single double-quoted string concatenating all them.
33 AC_DEFUN([CURL_CHECK_DEF], [
34 AS_VAR_PUSHDEF([ac_HaveDef], [curl_cv_have_def_$1])dnl
35 AS_VAR_PUSHDEF([ac_Def], [curl_cv_def_$1])dnl
36 if test -z "$SED"; then
37 AC_MSG_ERROR([SED not set. Cannot continue without SED being set.])
39 if test -z "$GREP"; then
40 AC_MSG_ERROR([GREP not set. Cannot continue without GREP being set.])
42 ifelse($3,,[AC_MSG_CHECKING([for preprocessor definition of $1])])
52 tmp_exp=`eval "$ac_cpp conftest.$ac_ext" 2>/dev/null | \
53 "$GREP" CURL_DEF_TOKEN 2>/dev/null | \
54 "$SED" 's/.*CURL_DEF_TOKEN[[ ]][[ ]]*//' 2>/dev/null | \
55 "$SED" 's/[["]][[ ]]*[["]]//g' 2>/dev/null`
56 if test -z "$tmp_exp" || test "$tmp_exp" = "$1"; then
60 if test -z "$tmp_exp"; then
61 AS_VAR_SET(ac_HaveDef, no)
62 ifelse($3,,[AC_MSG_RESULT([no])])
64 AS_VAR_SET(ac_HaveDef, yes)
65 AS_VAR_SET(ac_Def, $tmp_exp)
66 ifelse($3,,[AC_MSG_RESULT([$tmp_exp])])
68 AS_VAR_POPDEF([ac_Def])dnl
69 AS_VAR_POPDEF([ac_HaveDef])dnl
73 dnl CURL_CHECK_DEF_CC (SYMBOL, [INCLUDES], [SILENT])
74 dnl -------------------------------------------------
75 dnl Use the C compiler to find out only if the given symbol is defined
76 dnl or not, this can not find out its expansion. This macro will not use
77 dnl default includes even if no INCLUDES argument is given. This macro
78 dnl will run silently when invoked with three arguments.
80 AC_DEFUN([CURL_CHECK_DEF_CC], [
81 AS_VAR_PUSHDEF([ac_HaveDef], [curl_cv_have_def_$1])dnl
82 ifelse($3,,[AC_MSG_CHECKING([for compiler definition of $1])])
91 force compilation error
96 tst_symbol_defined="yes"
98 tst_symbol_defined="no"
100 if test "$tst_symbol_defined" = "yes"; then
101 AS_VAR_SET(ac_HaveDef, yes)
102 ifelse($3,,[AC_MSG_RESULT([yes])])
104 AS_VAR_SET(ac_HaveDef, no)
105 ifelse($3,,[AC_MSG_RESULT([no])])
107 AS_VAR_POPDEF([ac_HaveDef])dnl
111 dnl CURL_CHECK_LIB_XNET
112 dnl -------------------------------------------------
113 dnl Verify if X/Open network library is required.
115 AC_DEFUN([CURL_CHECK_LIB_XNET], [
116 AC_MSG_CHECKING([if X/Open network library is required])
117 tst_lib_xnet_required="no"
122 #if defined(__hpux) && defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 600)
124 #elif defined(__hpux) && defined(_XOPEN_SOURCE_EXTENDED)
127 force compilation error
132 tst_lib_xnet_required="yes"
135 AC_MSG_RESULT([$tst_lib_xnet_required])
139 dnl CURL_CHECK_AIX_ALL_SOURCE
140 dnl -------------------------------------------------
141 dnl Provides a replacement of traditional AC_AIX with
142 dnl an uniform behaviour across all autoconf versions,
143 dnl and with our own placement rules.
145 AC_DEFUN([CURL_CHECK_AIX_ALL_SOURCE], [
146 AH_VERBATIM([_ALL_SOURCE],
147 [/* Define to 1 if OS is AIX. */
151 AC_BEFORE([$0], [AC_SYS_LARGEFILE])dnl
152 AC_BEFORE([$0], [CURL_CONFIGURE_REENTRANT])dnl
153 AC_BEFORE([$0], [CURL_CONFIGURE_PULL_SYS_POLL])dnl
154 AC_MSG_CHECKING([if OS is AIX (to define _ALL_SOURCE)])
155 AC_EGREP_CPP([yes_this_is_aix],[
161 AC_DEFINE(_ALL_SOURCE)
168 dnl CURL_CHECK_HEADER_WINDOWS
169 dnl -------------------------------------------------
170 dnl Check for compilable and valid windows.h header
172 AC_DEFUN([CURL_CHECK_HEADER_WINDOWS], [
173 AC_CACHE_CHECK([for windows.h], [ac_cv_header_windows_h], [
177 #ifndef WIN32_LEAN_AND_MEAN
178 #define WIN32_LEAN_AND_MEAN
182 #if defined(__CYGWIN__) || defined(__CEGCC__)
183 HAVE_WINDOWS_H shall not be defined.
189 ac_cv_header_windows_h="yes"
191 ac_cv_header_windows_h="no"
194 case "$ac_cv_header_windows_h" in
196 AC_DEFINE_UNQUOTED(HAVE_WINDOWS_H, 1,
197 [Define to 1 if you have the windows.h header file.])
198 AC_DEFINE_UNQUOTED(WIN32_LEAN_AND_MEAN, 1,
199 [Define to avoid automatic inclusion of winsock.h])
205 dnl CURL_CHECK_NATIVE_WINDOWS
206 dnl -------------------------------------------------
207 dnl Check if building a native Windows target
209 AC_DEFUN([CURL_CHECK_NATIVE_WINDOWS], [
210 AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
211 AC_CACHE_CHECK([whether build target is a native Windows one], [ac_cv_native_windows], [
212 if test "$ac_cv_header_windows_h" = "no"; then
213 ac_cv_native_windows="no"
218 #if defined(__MINGW32__) || defined(__MINGW32CE__) || \
219 (defined(_MSC_VER) && (defined(_WIN32) || defined(_WIN64)))
222 Not a native Windows build target.
226 ac_cv_native_windows="yes"
228 ac_cv_native_windows="no"
232 AM_CONDITIONAL(DOING_NATIVE_WINDOWS, test "x$ac_cv_native_windows" = xyes)
236 dnl CURL_CHECK_HEADER_WINSOCK
237 dnl -------------------------------------------------
238 dnl Check for compilable and valid winsock.h header
240 AC_DEFUN([CURL_CHECK_HEADER_WINSOCK], [
241 AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
242 AC_CACHE_CHECK([for winsock.h], [ac_cv_header_winsock_h], [
246 #ifndef WIN32_LEAN_AND_MEAN
247 #define WIN32_LEAN_AND_MEAN
252 #if defined(__CYGWIN__) || defined(__CEGCC__)
253 HAVE_WINSOCK_H shall not be defined.
255 int dummy=WSACleanup();
259 ac_cv_header_winsock_h="yes"
261 ac_cv_header_winsock_h="no"
264 case "$ac_cv_header_winsock_h" in
266 AC_DEFINE_UNQUOTED(HAVE_WINSOCK_H, 1,
267 [Define to 1 if you have the winsock.h header file.])
273 dnl CURL_CHECK_HEADER_WINSOCK2
274 dnl -------------------------------------------------
275 dnl Check for compilable and valid winsock2.h header
277 AC_DEFUN([CURL_CHECK_HEADER_WINSOCK2], [
278 AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
279 AC_CACHE_CHECK([for winsock2.h], [ac_cv_header_winsock2_h], [
283 #ifndef WIN32_LEAN_AND_MEAN
284 #define WIN32_LEAN_AND_MEAN
287 #include <winsock2.h>
289 #if defined(__CYGWIN__) || defined(__CEGCC__) || defined(__MINGW32CE__)
290 HAVE_WINSOCK2_H shall not be defined.
292 int dummy=2*IPPROTO_ESP;
296 ac_cv_header_winsock2_h="yes"
298 ac_cv_header_winsock2_h="no"
301 case "$ac_cv_header_winsock2_h" in
303 AC_DEFINE_UNQUOTED(HAVE_WINSOCK2_H, 1,
304 [Define to 1 if you have the winsock2.h header file.])
310 dnl CURL_CHECK_HEADER_WS2TCPIP
311 dnl -------------------------------------------------
312 dnl Check for compilable and valid ws2tcpip.h header
314 AC_DEFUN([CURL_CHECK_HEADER_WS2TCPIP], [
315 AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
316 AC_CACHE_CHECK([for ws2tcpip.h], [ac_cv_header_ws2tcpip_h], [
320 #ifndef WIN32_LEAN_AND_MEAN
321 #define WIN32_LEAN_AND_MEAN
324 #include <winsock2.h>
325 #include <ws2tcpip.h>
327 #if defined(__CYGWIN__) || defined(__CEGCC__) || defined(__MINGW32CE__)
328 HAVE_WS2TCPIP_H shall not be defined.
330 int dummy=2*IP_PKTINFO;
334 ac_cv_header_ws2tcpip_h="yes"
336 ac_cv_header_ws2tcpip_h="no"
339 case "$ac_cv_header_ws2tcpip_h" in
341 AC_DEFINE_UNQUOTED(HAVE_WS2TCPIP_H, 1,
342 [Define to 1 if you have the ws2tcpip.h header file.])
348 dnl CURL_CHECK_HEADER_WINLDAP
349 dnl -------------------------------------------------
350 dnl Check for compilable and valid winldap.h header
352 AC_DEFUN([CURL_CHECK_HEADER_WINLDAP], [
353 AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
354 AC_CACHE_CHECK([for winldap.h], [ac_cv_header_winldap_h], [
358 #ifdef HAVE_WINDOWS_H
359 #ifndef WIN32_LEAN_AND_MEAN
360 #define WIN32_LEAN_AND_MEAN
366 #if defined(__CYGWIN__) || defined(__CEGCC__)
367 HAVE_WINLDAP_H shall not be defined.
369 LDAP *ldp = ldap_init("dummy", LDAP_PORT);
370 ULONG res = ldap_unbind(ldp);
374 ac_cv_header_winldap_h="yes"
376 ac_cv_header_winldap_h="no"
379 case "$ac_cv_header_winldap_h" in
381 AC_DEFINE_UNQUOTED(HAVE_WINLDAP_H, 1,
382 [Define to 1 if you have the winldap.h header file.])
388 dnl CURL_CHECK_HEADER_WINBER
389 dnl -------------------------------------------------
390 dnl Check for compilable and valid winber.h header
392 AC_DEFUN([CURL_CHECK_HEADER_WINBER], [
393 AC_REQUIRE([CURL_CHECK_HEADER_WINLDAP])dnl
394 AC_CACHE_CHECK([for winber.h], [ac_cv_header_winber_h], [
398 #ifdef HAVE_WINDOWS_H
399 #ifndef WIN32_LEAN_AND_MEAN
400 #define WIN32_LEAN_AND_MEAN
407 #if defined(__CYGWIN__) || defined(__CEGCC__)
408 HAVE_WINBER_H shall not be defined.
411 BerElement *bep = ber_init(bvp);
416 ac_cv_header_winber_h="yes"
418 ac_cv_header_winber_h="no"
421 case "$ac_cv_header_winber_h" in
423 AC_DEFINE_UNQUOTED(HAVE_WINBER_H, 1,
424 [Define to 1 if you have the winber.h header file.])
430 dnl CURL_CHECK_HEADER_LBER
431 dnl -------------------------------------------------
432 dnl Check for compilable and valid lber.h header,
433 dnl and check if it is needed even with ldap.h
435 AC_DEFUN([CURL_CHECK_HEADER_LBER], [
436 AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
437 AC_CACHE_CHECK([for lber.h], [ac_cv_header_lber_h], [
441 #ifdef HAVE_WINDOWS_H
442 #ifndef WIN32_LEAN_AND_MEAN
443 #define WIN32_LEAN_AND_MEAN
447 #ifdef HAVE_SYS_TYPES_H
448 #include <sys/types.h>
452 #define NULL (void *)0
456 BerValue *bvp = NULL;
457 BerElement *bep = ber_init(bvp);
461 ac_cv_header_lber_h="yes"
463 ac_cv_header_lber_h="no"
466 if test "$ac_cv_header_lber_h" = "yes"; then
467 AC_DEFINE_UNQUOTED(HAVE_LBER_H, 1,
468 [Define to 1 if you have the lber.h header file.])
473 #ifdef HAVE_WINDOWS_H
474 #ifndef WIN32_LEAN_AND_MEAN
475 #define WIN32_LEAN_AND_MEAN
479 #ifdef HAVE_SYS_TYPES_H
480 #include <sys/types.h>
484 #define NULL (void *)0
486 #ifndef LDAP_DEPRECATED
487 #define LDAP_DEPRECATED 1
491 BerValue *bvp = NULL;
492 BerElement *bep = ber_init(bvp);
496 curl_cv_need_header_lber_h="no"
498 curl_cv_need_header_lber_h="yes"
501 case "$curl_cv_need_header_lber_h" in
503 AC_DEFINE_UNQUOTED(NEED_LBER_H, 1,
504 [Define to 1 if you need the lber.h header file even with ldap.h])
511 dnl CURL_CHECK_HEADER_LDAP
512 dnl -------------------------------------------------
513 dnl Check for compilable and valid ldap.h header
515 AC_DEFUN([CURL_CHECK_HEADER_LDAP], [
516 AC_REQUIRE([CURL_CHECK_HEADER_LBER])dnl
517 AC_CACHE_CHECK([for ldap.h], [ac_cv_header_ldap_h], [
521 #ifdef HAVE_WINDOWS_H
522 #ifndef WIN32_LEAN_AND_MEAN
523 #define WIN32_LEAN_AND_MEAN
527 #ifdef HAVE_SYS_TYPES_H
528 #include <sys/types.h>
531 #ifndef LDAP_DEPRECATED
532 #define LDAP_DEPRECATED 1
539 LDAP *ldp = ldap_init("dummy", LDAP_PORT);
540 int res = ldap_unbind(ldp);
543 ac_cv_header_ldap_h="yes"
545 ac_cv_header_ldap_h="no"
548 case "$ac_cv_header_ldap_h" in
550 AC_DEFINE_UNQUOTED(HAVE_LDAP_H, 1,
551 [Define to 1 if you have the ldap.h header file.])
557 dnl CURL_CHECK_HEADER_LDAP_SSL
558 dnl -------------------------------------------------
559 dnl Check for compilable and valid ldap_ssl.h header
561 AC_DEFUN([CURL_CHECK_HEADER_LDAP_SSL], [
562 AC_REQUIRE([CURL_CHECK_HEADER_LDAP])dnl
563 AC_CACHE_CHECK([for ldap_ssl.h], [ac_cv_header_ldap_ssl_h], [
567 #ifdef HAVE_WINDOWS_H
568 #ifndef WIN32_LEAN_AND_MEAN
569 #define WIN32_LEAN_AND_MEAN
573 #ifdef HAVE_SYS_TYPES_H
574 #include <sys/types.h>
577 #ifndef LDAP_DEPRECATED
578 #define LDAP_DEPRECATED 1
586 #include <ldap_ssl.h>
588 LDAP *ldp = ldapssl_init("dummy", LDAPS_PORT, 1);
591 ac_cv_header_ldap_ssl_h="yes"
593 ac_cv_header_ldap_ssl_h="no"
596 case "$ac_cv_header_ldap_ssl_h" in
598 AC_DEFINE_UNQUOTED(HAVE_LDAP_SSL_H, 1,
599 [Define to 1 if you have the ldap_ssl.h header file.])
605 dnl CURL_CHECK_HEADER_LDAPSSL
606 dnl -------------------------------------------------
607 dnl Check for compilable and valid ldapssl.h header
609 AC_DEFUN([CURL_CHECK_HEADER_LDAPSSL], [
610 AC_REQUIRE([CURL_CHECK_HEADER_LDAP])dnl
611 AC_CACHE_CHECK([for ldapssl.h], [ac_cv_header_ldapssl_h], [
615 #ifdef HAVE_WINDOWS_H
616 #ifndef WIN32_LEAN_AND_MEAN
617 #define WIN32_LEAN_AND_MEAN
621 #ifdef HAVE_SYS_TYPES_H
622 #include <sys/types.h>
626 #define NULL (void *)0
628 #ifndef LDAP_DEPRECATED
629 #define LDAP_DEPRECATED 1
639 char *cert_label = NULL;
640 LDAP *ldp = ldap_ssl_init("dummy", LDAPS_PORT, cert_label);
643 ac_cv_header_ldapssl_h="yes"
645 ac_cv_header_ldapssl_h="no"
648 case "$ac_cv_header_ldapssl_h" in
650 AC_DEFINE_UNQUOTED(HAVE_LDAPSSL_H, 1,
651 [Define to 1 if you have the ldapssl.h header file.])
657 dnl CURL_CHECK_LIBS_WINLDAP
658 dnl -------------------------------------------------
659 dnl Check for libraries needed for WINLDAP support,
660 dnl and prepended to LIBS any needed libraries.
661 dnl This macro can take an optional parameter with a
662 dnl white space separated list of libraries to check
663 dnl before the WINLDAP default ones.
665 AC_DEFUN([CURL_CHECK_LIBS_WINLDAP], [
666 AC_REQUIRE([CURL_CHECK_HEADER_WINBER])dnl
668 AC_MSG_CHECKING([for WINLDAP libraries])
682 if test -z "$u_libs"; then
685 u_libs="$u_libs $l_lib"
690 curl_cv_save_LIBS="$LIBS"
691 curl_cv_ldap_LIBS="unknown"
693 for x_nlibs in '' "$u_libs" \
695 if test "$curl_cv_ldap_LIBS" = "unknown"; then
696 if test -z "$x_nlibs"; then
697 LIBS="$curl_cv_save_LIBS"
699 LIBS="$x_nlibs $curl_cv_save_LIBS"
704 #ifdef HAVE_WINDOWS_H
705 #ifndef WIN32_LEAN_AND_MEAN
706 #define WIN32_LEAN_AND_MEAN
709 #ifdef HAVE_WINLDAP_H
718 BerElement *bep = ber_init(bvp);
719 LDAP *ldp = ldap_init("dummy", LDAP_PORT);
720 ULONG res = ldap_unbind(ldp);
724 curl_cv_ldap_LIBS="$x_nlibs"
729 LIBS="$curl_cv_save_LIBS"
731 case X-"$curl_cv_ldap_LIBS" in
733 AC_MSG_RESULT([cannot find WINLDAP libraries])
736 AC_MSG_RESULT([no additional lib required])
739 if test -z "$curl_cv_save_LIBS"; then
740 LIBS="$curl_cv_ldap_LIBS"
742 LIBS="$curl_cv_ldap_LIBS $curl_cv_save_LIBS"
744 AC_MSG_RESULT([$curl_cv_ldap_LIBS])
751 dnl CURL_CHECK_LIBS_LDAP
752 dnl -------------------------------------------------
753 dnl Check for libraries needed for LDAP support,
754 dnl and prepended to LIBS any needed libraries.
755 dnl This macro can take an optional parameter with a
756 dnl white space separated list of libraries to check
757 dnl before the default ones.
759 AC_DEFUN([CURL_CHECK_LIBS_LDAP], [
760 AC_REQUIRE([CURL_CHECK_HEADER_LDAP])dnl
762 AC_MSG_CHECKING([for LDAP libraries])
776 if test -z "$u_libs"; then
779 u_libs="$u_libs $l_lib"
784 curl_cv_save_LIBS="$LIBS"
785 curl_cv_ldap_LIBS="unknown"
787 for x_nlibs in '' "$u_libs" \
791 '-lldapssl -lldapx -lldapsdk' \
792 '-lldapsdk -lldapx -lldapssl' ; do
793 if test "$curl_cv_ldap_LIBS" = "unknown"; then
794 if test -z "$x_nlibs"; then
795 LIBS="$curl_cv_save_LIBS"
797 LIBS="$x_nlibs $curl_cv_save_LIBS"
802 #ifdef HAVE_WINDOWS_H
803 #ifndef WIN32_LEAN_AND_MEAN
804 #define WIN32_LEAN_AND_MEAN
808 #ifdef HAVE_SYS_TYPES_H
809 #include <sys/types.h>
813 #define NULL (void *)0
815 #ifndef LDAP_DEPRECATED
816 #define LDAP_DEPRECATED 1
825 BerValue *bvp = NULL;
826 BerElement *bep = ber_init(bvp);
827 LDAP *ldp = ldap_init("dummy", LDAP_PORT);
828 int res = ldap_unbind(ldp);
832 curl_cv_ldap_LIBS="$x_nlibs"
837 LIBS="$curl_cv_save_LIBS"
839 case X-"$curl_cv_ldap_LIBS" in
841 AC_MSG_RESULT([cannot find LDAP libraries])
844 AC_MSG_RESULT([no additional lib required])
847 if test -z "$curl_cv_save_LIBS"; then
848 LIBS="$curl_cv_ldap_LIBS"
850 LIBS="$curl_cv_ldap_LIBS $curl_cv_save_LIBS"
852 AC_MSG_RESULT([$curl_cv_ldap_LIBS])
859 dnl CURL_CHECK_HEADER_MALLOC
860 dnl -------------------------------------------------
861 dnl Check for compilable and valid malloc.h header,
862 dnl and check if it is needed even with stdlib.h
864 AC_DEFUN([CURL_CHECK_HEADER_MALLOC], [
865 AC_CACHE_CHECK([for malloc.h], [ac_cv_header_malloc_h], [
870 void *p = malloc(10);
871 void *q = calloc(10,10);
876 ac_cv_header_malloc_h="yes"
878 ac_cv_header_malloc_h="no"
881 if test "$ac_cv_header_malloc_h" = "yes"; then
882 AC_DEFINE_UNQUOTED(HAVE_MALLOC_H, 1,
883 [Define to 1 if you have the malloc.h header file.])
889 void *p = malloc(10);
890 void *q = calloc(10,10);
895 curl_cv_need_header_malloc_h="no"
897 curl_cv_need_header_malloc_h="yes"
900 case "$curl_cv_need_header_malloc_h" in
902 AC_DEFINE_UNQUOTED(NEED_MALLOC_H, 1,
903 [Define to 1 if you need the malloc.h header file even with stdlib.h])
910 dnl CURL_CHECK_HEADER_MEMORY
911 dnl -------------------------------------------------
912 dnl Check for compilable and valid memory.h header,
913 dnl and check if it is needed even with stdlib.h for
914 dnl memory related functions.
916 AC_DEFUN([CURL_CHECK_HEADER_MEMORY], [
917 AC_CACHE_CHECK([for memory.h], [ac_cv_header_memory_h], [
922 void *p = malloc(10);
923 void *q = calloc(10,10);
928 ac_cv_header_memory_h="yes"
930 ac_cv_header_memory_h="no"
933 if test "$ac_cv_header_memory_h" = "yes"; then
934 AC_DEFINE_UNQUOTED(HAVE_MEMORY_H, 1,
935 [Define to 1 if you have the memory.h header file.])
941 void *p = malloc(10);
942 void *q = calloc(10,10);
947 curl_cv_need_header_memory_h="no"
949 curl_cv_need_header_memory_h="yes"
952 case "$curl_cv_need_header_memory_h" in
954 AC_DEFINE_UNQUOTED(NEED_MEMORY_H, 1,
955 [Define to 1 if you need the memory.h header file even with stdlib.h])
962 dnl CURL_CHECK_FUNC_GETNAMEINFO
963 dnl -------------------------------------------------
964 dnl Test if the getnameinfo function is available,
965 dnl and check the types of five of its arguments.
966 dnl If the function succeeds HAVE_GETNAMEINFO will be
967 dnl defined, defining the types of the arguments in
968 dnl GETNAMEINFO_TYPE_ARG1, GETNAMEINFO_TYPE_ARG2,
969 dnl GETNAMEINFO_TYPE_ARG46 and GETNAMEINFO_TYPE_ARG7,
970 dnl and also defining the type qualifier of first
971 dnl argument in GETNAMEINFO_QUAL_ARG1.
973 AC_DEFUN([CURL_CHECK_FUNC_GETNAMEINFO], [
974 AC_REQUIRE([CURL_CHECK_HEADER_WS2TCPIP])dnl
975 AC_CHECK_HEADERS(sys/types.h sys/socket.h netdb.h)
977 AC_MSG_CHECKING([for getnameinfo])
979 AC_LANG_FUNC_LINK_TRY([getnameinfo])
982 curl_cv_getnameinfo="yes"
985 curl_cv_getnameinfo="no"
988 if test "$curl_cv_getnameinfo" != "yes"; then
989 AC_MSG_CHECKING([deeper for getnameinfo])
997 curl_cv_getnameinfo="yes"
999 AC_MSG_RESULT([but still no])
1000 curl_cv_getnameinfo="no"
1004 if test "$curl_cv_getnameinfo" != "yes"; then
1005 AC_MSG_CHECKING([deeper and deeper for getnameinfo])
1009 #ifdef HAVE_WINDOWS_H
1010 #ifndef WIN32_LEAN_AND_MEAN
1011 #define WIN32_LEAN_AND_MEAN
1013 #include <windows.h>
1014 #ifdef HAVE_WINSOCK2_H
1015 #include <winsock2.h>
1016 #ifdef HAVE_WS2TCPIP_H
1017 #include <ws2tcpip.h>
1021 #ifdef HAVE_SYS_TYPES_H
1022 #include <sys/types.h>
1024 #ifdef HAVE_SYS_SOCKET_H
1025 #include <sys/socket.h>
1032 getnameinfo(0, 0, 0, 0, 0, 0, 0);
1035 AC_MSG_RESULT([yes])
1036 curl_cv_getnameinfo="yes"
1038 AC_MSG_RESULT([but still no])
1039 curl_cv_getnameinfo="no"
1043 if test "$curl_cv_getnameinfo" = "yes"; then
1044 AC_CACHE_CHECK([types of arguments for getnameinfo],
1045 [curl_cv_func_getnameinfo_args], [
1046 curl_cv_func_getnameinfo_args="unknown"
1047 for gni_arg1 in 'struct sockaddr *' 'const struct sockaddr *' 'void *'; do
1048 for gni_arg2 in 'socklen_t' 'size_t' 'int'; do
1049 for gni_arg46 in 'size_t' 'int' 'socklen_t' 'unsigned int' 'DWORD'; do
1050 for gni_arg7 in 'int' 'unsigned int'; do
1051 if test "$curl_cv_func_getnameinfo_args" = "unknown"; then
1055 #ifdef HAVE_WINDOWS_H
1056 #ifndef WIN32_LEAN_AND_MEAN
1057 #define WIN32_LEAN_AND_MEAN
1059 #if (!defined(_WIN32_WINNT)) || (_WIN32_WINNT < 0x0501)
1061 #define _WIN32_WINNT 0x0501
1063 #include <windows.h>
1064 #ifdef HAVE_WINSOCK2_H
1065 #include <winsock2.h>
1066 #ifdef HAVE_WS2TCPIP_H
1067 #include <ws2tcpip.h>
1070 #define GNICALLCONV WSAAPI
1072 #ifdef HAVE_SYS_TYPES_H
1073 #include <sys/types.h>
1075 #ifdef HAVE_SYS_SOCKET_H
1076 #include <sys/socket.h>
1083 extern int GNICALLCONV getnameinfo($gni_arg1, $gni_arg2,
1089 $gni_arg46 hostlen=0;
1090 $gni_arg46 servlen=0;
1092 int res = getnameinfo(0, salen, 0, hostlen, 0, servlen, flags);
1095 curl_cv_func_getnameinfo_args="$gni_arg1,$gni_arg2,$gni_arg46,$gni_arg7"
1103 if test "$curl_cv_func_getnameinfo_args" = "unknown"; then
1104 AC_MSG_WARN([Cannot find proper types to use for getnameinfo args])
1105 AC_MSG_WARN([HAVE_GETNAMEINFO will not be defined])
1107 gni_prev_IFS=$IFS; IFS=','
1108 set dummy `echo "$curl_cv_func_getnameinfo_args" | sed 's/\*/\*/g'`
1112 gni_qual_type_arg1=$[1]
1114 AC_DEFINE_UNQUOTED(GETNAMEINFO_TYPE_ARG2, $[2],
1115 [Define to the type of arg 2 for getnameinfo.])
1116 AC_DEFINE_UNQUOTED(GETNAMEINFO_TYPE_ARG46, $[3],
1117 [Define to the type of args 4 and 6 for getnameinfo.])
1118 AC_DEFINE_UNQUOTED(GETNAMEINFO_TYPE_ARG7, $[4],
1119 [Define to the type of arg 7 for getnameinfo.])
1123 case $prev_sh_opts in
1131 case "$gni_qual_type_arg1" in
1134 gni_type_arg1=`echo $gni_qual_type_arg1 | sed 's/^const //'`
1138 gni_type_arg1=$gni_qual_type_arg1
1142 AC_DEFINE_UNQUOTED(GETNAMEINFO_QUAL_ARG1, $gni_qual_arg1,
1143 [Define to the type qualifier of arg 1 for getnameinfo.])
1144 AC_DEFINE_UNQUOTED(GETNAMEINFO_TYPE_ARG1, $gni_type_arg1,
1145 [Define to the type of arg 1 for getnameinfo.])
1147 case $prev_sh_opts in
1155 AC_DEFINE_UNQUOTED(HAVE_GETNAMEINFO, 1,
1156 [Define to 1 if you have the getnameinfo function.])
1157 ac_cv_func_getnameinfo="yes"
1163 dnl TYPE_SOCKADDR_STORAGE
1164 dnl -------------------------------------------------
1165 dnl Check for struct sockaddr_storage. Most IPv6-enabled
1166 dnl hosts have it, but AIX 4.3 is one known exception.
1168 AC_DEFUN([TYPE_SOCKADDR_STORAGE],
1170 AC_CHECK_TYPE([struct sockaddr_storage],
1171 AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1,
1172 [if struct sockaddr_storage is defined]), ,
1175 #ifdef HAVE_WINDOWS_H
1176 #ifndef WIN32_LEAN_AND_MEAN
1177 #define WIN32_LEAN_AND_MEAN
1179 #include <windows.h>
1180 #ifdef HAVE_WINSOCK2_H
1181 #include <winsock2.h>
1184 #ifdef HAVE_SYS_TYPES_H
1185 #include <sys/types.h>
1187 #ifdef HAVE_SYS_SOCKET_H
1188 #include <sys/socket.h>
1190 #ifdef HAVE_NETINET_IN_H
1191 #include <netinet/in.h>
1193 #ifdef HAVE_ARPA_INET_H
1194 #include <arpa/inet.h>
1201 dnl CURL_CHECK_NI_WITHSCOPEID
1202 dnl -------------------------------------------------
1203 dnl Check for working NI_WITHSCOPEID in getnameinfo()
1205 AC_DEFUN([CURL_CHECK_NI_WITHSCOPEID], [
1206 AC_REQUIRE([CURL_CHECK_FUNC_GETNAMEINFO])dnl
1207 AC_REQUIRE([TYPE_SOCKADDR_STORAGE])dnl
1208 AC_CHECK_HEADERS(stdio.h sys/types.h sys/socket.h \
1209 netdb.h netinet/in.h arpa/inet.h)
1211 AC_CACHE_CHECK([for working NI_WITHSCOPEID],
1212 [ac_cv_working_ni_withscopeid], [
1215 #ifdef HAVE_STDLIB_H
1221 #ifdef HAVE_SYS_TYPES_H
1222 #include <sys/types.h>
1224 #ifdef HAVE_SYS_SOCKET_H
1225 #include <sys/socket.h>
1230 #ifdef HAVE_NETINET_IN_H
1231 #include <netinet/in.h>
1233 #ifdef HAVE_ARPA_INET_H
1234 #include <arpa/inet.h>
1237 #if defined(NI_WITHSCOPEID) && defined(HAVE_GETNAMEINFO)
1238 #ifdef HAVE_STRUCT_SOCKADDR_STORAGE
1239 struct sockaddr_storage sa;
1241 unsigned char sa[256];
1243 char hostbuf[NI_MAXHOST];
1245 GETNAMEINFO_TYPE_ARG2 salen = (GETNAMEINFO_TYPE_ARG2)sizeof(sa);
1246 GETNAMEINFO_TYPE_ARG46 hostlen = (GETNAMEINFO_TYPE_ARG46)sizeof(hostbuf);
1247 GETNAMEINFO_TYPE_ARG7 flags = NI_NUMERICHOST | NI_NUMERICSERV | NI_WITHSCOPEID;
1248 int fd = socket(AF_INET6, SOCK_STREAM, 0);
1251 return 1; /* Error creating socket */
1253 rc = getsockname(fd, (GETNAMEINFO_TYPE_ARG1)&sa, &salen);
1255 perror("getsockname()");
1256 return 2; /* Error retrieving socket name */
1258 rc = getnameinfo((GETNAMEINFO_TYPE_ARG1)&sa, salen, hostbuf, hostlen, NULL, 0, flags);
1260 printf("rc = %s\n", gai_strerror(rc));
1261 return 3; /* Error translating socket address */
1263 return 0; /* Ok, NI_WITHSCOPEID works */
1265 return 4; /* Error, NI_WITHSCOPEID not defined or no getnameinfo() */
1267 ]]) # AC-LANG-PROGRAM
1269 # Exit code == 0. Program worked.
1270 ac_cv_working_ni_withscopeid="yes"
1272 # Exit code != 0. Program failed.
1273 ac_cv_working_ni_withscopeid="no"
1275 # Program is not run when cross-compiling. So we assume
1276 # NI_WITHSCOPEID will work if we are able to compile it.
1279 #include <sys/types.h>
1280 #include <sys/socket.h>
1283 unsigned int dummy= NI_NUMERICHOST | NI_NUMERICSERV | NI_WITHSCOPEID;
1286 ac_cv_working_ni_withscopeid="yes"
1288 ac_cv_working_ni_withscopeid="no"
1289 ]) # AC-COMPILE-IFELSE
1292 case "$ac_cv_working_ni_withscopeid" in
1294 AC_DEFINE(HAVE_NI_WITHSCOPEID, 1,
1295 [Define to 1 if NI_WITHSCOPEID exists and works.])
1301 dnl CURL_CHECK_FUNC_RECV
1302 dnl -------------------------------------------------
1303 dnl Test if the socket recv() function is available,
1304 dnl and check its return type and the types of its
1305 dnl arguments. If the function succeeds HAVE_RECV
1306 dnl will be defined, defining the types of the arguments
1307 dnl in RECV_TYPE_ARG1, RECV_TYPE_ARG2, RECV_TYPE_ARG3
1308 dnl and RECV_TYPE_ARG4, defining the type of the function
1309 dnl return value in RECV_TYPE_RETV.
1311 AC_DEFUN([CURL_CHECK_FUNC_RECV], [
1312 AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl
1313 AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
1314 AC_CHECK_HEADERS(sys/types.h sys/socket.h)
1316 AC_MSG_CHECKING([for recv])
1320 #ifdef HAVE_WINDOWS_H
1321 #ifndef WIN32_LEAN_AND_MEAN
1322 #define WIN32_LEAN_AND_MEAN
1324 #include <windows.h>
1325 #ifdef HAVE_WINSOCK2_H
1326 #include <winsock2.h>
1328 #ifdef HAVE_WINSOCK_H
1329 #include <winsock.h>
1333 #ifdef HAVE_SYS_TYPES_H
1334 #include <sys/types.h>
1336 #ifdef HAVE_SYS_SOCKET_H
1337 #include <sys/socket.h>
1344 AC_MSG_RESULT([yes])
1351 if test "$curl_cv_recv" = "yes"; then
1352 AC_CACHE_CHECK([types of args and return type for recv],
1353 [curl_cv_func_recv_args], [
1354 curl_cv_func_recv_args="unknown"
1355 for recv_retv in 'int' 'ssize_t'; do
1356 for recv_arg1 in 'int' 'ssize_t' 'SOCKET'; do
1357 for recv_arg2 in 'char *' 'void *'; do
1358 for recv_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
1359 for recv_arg4 in 'int' 'unsigned int'; do
1360 if test "$curl_cv_func_recv_args" = "unknown"; then
1364 #ifdef HAVE_WINDOWS_H
1365 #ifndef WIN32_LEAN_AND_MEAN
1366 #define WIN32_LEAN_AND_MEAN
1368 #include <windows.h>
1369 #ifdef HAVE_WINSOCK2_H
1370 #include <winsock2.h>
1372 #ifdef HAVE_WINSOCK_H
1373 #include <winsock.h>
1376 #define RECVCALLCONV PASCAL
1378 #ifdef HAVE_SYS_TYPES_H
1379 #include <sys/types.h>
1381 #ifdef HAVE_SYS_SOCKET_H
1382 #include <sys/socket.h>
1384 #define RECVCALLCONV
1386 extern $recv_retv RECVCALLCONV
1387 recv($recv_arg1, $recv_arg2, $recv_arg3, $recv_arg4);
1393 $recv_retv res = recv(s, buf, len, flags);
1396 curl_cv_func_recv_args="$recv_arg1,$recv_arg2,$recv_arg3,$recv_arg4,$recv_retv"
1405 if test "$curl_cv_func_recv_args" = "unknown"; then
1406 AC_MSG_ERROR([Cannot find proper types to use for recv args])
1408 recv_prev_IFS=$IFS; IFS=','
1409 set dummy `echo "$curl_cv_func_recv_args" | sed 's/\*/\*/g'`
1413 AC_DEFINE_UNQUOTED(RECV_TYPE_ARG1, $[1],
1414 [Define to the type of arg 1 for recv.])
1415 AC_DEFINE_UNQUOTED(RECV_TYPE_ARG2, $[2],
1416 [Define to the type of arg 2 for recv.])
1417 AC_DEFINE_UNQUOTED(RECV_TYPE_ARG3, $[3],
1418 [Define to the type of arg 3 for recv.])
1419 AC_DEFINE_UNQUOTED(RECV_TYPE_ARG4, $[4],
1420 [Define to the type of arg 4 for recv.])
1421 AC_DEFINE_UNQUOTED(RECV_TYPE_RETV, $[5],
1422 [Define to the function return type for recv.])
1424 AC_DEFINE_UNQUOTED(HAVE_RECV, 1,
1425 [Define to 1 if you have the recv function.])
1426 ac_cv_func_recv="yes"
1429 AC_MSG_ERROR([Unable to link function recv])
1434 dnl CURL_CHECK_FUNC_SEND
1435 dnl -------------------------------------------------
1436 dnl Test if the socket send() function is available,
1437 dnl and check its return type and the types of its
1438 dnl arguments. If the function succeeds HAVE_SEND
1439 dnl will be defined, defining the types of the arguments
1440 dnl in SEND_TYPE_ARG1, SEND_TYPE_ARG2, SEND_TYPE_ARG3
1441 dnl and SEND_TYPE_ARG4, defining the type of the function
1442 dnl return value in SEND_TYPE_RETV, and also defining the
1443 dnl type qualifier of second argument in SEND_QUAL_ARG2.
1445 AC_DEFUN([CURL_CHECK_FUNC_SEND], [
1446 AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl
1447 AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
1448 AC_CHECK_HEADERS(sys/types.h sys/socket.h)
1450 AC_MSG_CHECKING([for send])
1454 #ifdef HAVE_WINDOWS_H
1455 #ifndef WIN32_LEAN_AND_MEAN
1456 #define WIN32_LEAN_AND_MEAN
1458 #include <windows.h>
1459 #ifdef HAVE_WINSOCK2_H
1460 #include <winsock2.h>
1462 #ifdef HAVE_WINSOCK_H
1463 #include <winsock.h>
1467 #ifdef HAVE_SYS_TYPES_H
1468 #include <sys/types.h>
1470 #ifdef HAVE_SYS_SOCKET_H
1471 #include <sys/socket.h>
1478 AC_MSG_RESULT([yes])
1485 if test "$curl_cv_send" = "yes"; then
1486 AC_CACHE_CHECK([types of args and return type for send],
1487 [curl_cv_func_send_args], [
1488 curl_cv_func_send_args="unknown"
1489 for send_retv in 'int' 'ssize_t'; do
1490 for send_arg1 in 'int' 'ssize_t' 'SOCKET'; do
1491 for send_arg2 in 'char *' 'void *' 'const char *' 'const void *'; do
1492 for send_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
1493 for send_arg4 in 'int' 'unsigned int'; do
1494 if test "$curl_cv_func_send_args" = "unknown"; then
1498 #ifdef HAVE_WINDOWS_H
1499 #ifndef WIN32_LEAN_AND_MEAN
1500 #define WIN32_LEAN_AND_MEAN
1502 #include <windows.h>
1503 #ifdef HAVE_WINSOCK2_H
1504 #include <winsock2.h>
1506 #ifdef HAVE_WINSOCK_H
1507 #include <winsock.h>
1510 #define SENDCALLCONV PASCAL
1512 #ifdef HAVE_SYS_TYPES_H
1513 #include <sys/types.h>
1515 #ifdef HAVE_SYS_SOCKET_H
1516 #include <sys/socket.h>
1518 #define SENDCALLCONV
1520 extern $send_retv SENDCALLCONV
1521 send($send_arg1, $send_arg2, $send_arg3, $send_arg4);
1526 $send_retv res = send(s, 0, len, flags);
1529 curl_cv_func_send_args="$send_arg1,$send_arg2,$send_arg3,$send_arg4,$send_retv"
1538 if test "$curl_cv_func_send_args" = "unknown"; then
1539 AC_MSG_ERROR([Cannot find proper types to use for send args])
1541 send_prev_IFS=$IFS; IFS=','
1542 set dummy `echo "$curl_cv_func_send_args" | sed 's/\*/\*/g'`
1546 send_qual_type_arg2=$[2]
1548 AC_DEFINE_UNQUOTED(SEND_TYPE_ARG1, $[1],
1549 [Define to the type of arg 1 for send.])
1550 AC_DEFINE_UNQUOTED(SEND_TYPE_ARG3, $[3],
1551 [Define to the type of arg 3 for send.])
1552 AC_DEFINE_UNQUOTED(SEND_TYPE_ARG4, $[4],
1553 [Define to the type of arg 4 for send.])
1554 AC_DEFINE_UNQUOTED(SEND_TYPE_RETV, $[5],
1555 [Define to the function return type for send.])
1559 case $prev_sh_opts in
1567 case "$send_qual_type_arg2" in
1569 send_qual_arg2=const
1570 send_type_arg2=`echo $send_qual_type_arg2 | sed 's/^const //'`
1574 send_type_arg2=$send_qual_type_arg2
1578 AC_DEFINE_UNQUOTED(SEND_QUAL_ARG2, $send_qual_arg2,
1579 [Define to the type qualifier of arg 2 for send.])
1580 AC_DEFINE_UNQUOTED(SEND_TYPE_ARG2, $send_type_arg2,
1581 [Define to the type of arg 2 for send.])
1583 case $prev_sh_opts in
1591 AC_DEFINE_UNQUOTED(HAVE_SEND, 1,
1592 [Define to 1 if you have the send function.])
1593 ac_cv_func_send="yes"
1596 AC_MSG_ERROR([Unable to link function send])
1601 dnl CURL_CHECK_FUNC_RECVFROM
1602 dnl -------------------------------------------------
1603 dnl Test if the socket recvfrom() function is available,
1604 dnl and check its return type and the types of its
1605 dnl arguments. If the function succeeds HAVE_RECVFROM
1606 dnl will be defined, defining the types of the arguments
1607 dnl in RECVFROM_TYPE_ARG1, RECVFROM_TYPE_ARG2, and so on
1608 dnl to RECVFROM_TYPE_ARG6, defining also the type of the
1609 dnl function return value in RECVFROM_TYPE_RETV.
1610 dnl Notice that the types returned for pointer arguments
1611 dnl will actually be the type pointed by the pointer.
1613 AC_DEFUN([CURL_CHECK_FUNC_RECVFROM], [
1614 AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl
1615 AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
1616 AC_CHECK_HEADERS(sys/types.h sys/socket.h)
1618 AC_MSG_CHECKING([for recvfrom])
1622 #ifdef HAVE_WINDOWS_H
1623 #ifndef WIN32_LEAN_AND_MEAN
1624 #define WIN32_LEAN_AND_MEAN
1626 #include <windows.h>
1627 #ifdef HAVE_WINSOCK2_H
1628 #include <winsock2.h>
1630 #ifdef HAVE_WINSOCK_H
1631 #include <winsock.h>
1635 #ifdef HAVE_SYS_TYPES_H
1636 #include <sys/types.h>
1638 #ifdef HAVE_SYS_SOCKET_H
1639 #include <sys/socket.h>
1643 recvfrom(0, 0, 0, 0, 0, 0);
1646 AC_MSG_RESULT([yes])
1647 curl_cv_recvfrom="yes"
1650 curl_cv_recvfrom="no"
1653 if test "$curl_cv_recvfrom" = "yes"; then
1654 AC_CACHE_CHECK([types of args and return type for recvfrom],
1655 [curl_cv_func_recvfrom_args], [
1656 curl_cv_func_recvfrom_args="unknown"
1657 for recvfrom_retv in 'int' 'ssize_t'; do
1658 for recvfrom_arg1 in 'int' 'ssize_t' 'SOCKET'; do
1659 for recvfrom_arg2 in 'char *' 'void *'; do
1660 for recvfrom_arg3 in 'size_t' 'int' 'socklen_t' 'unsigned int'; do
1661 for recvfrom_arg4 in 'int' 'unsigned int'; do
1662 for recvfrom_arg5 in 'struct sockaddr *' 'void *' 'const struct sockaddr *'; do
1663 for recvfrom_arg6 in 'socklen_t *' 'int *' 'unsigned int *' 'size_t *' 'void *'; do
1664 if test "$curl_cv_func_recvfrom_args" = "unknown"; then
1668 #ifdef HAVE_WINDOWS_H
1669 #ifndef WIN32_LEAN_AND_MEAN
1670 #define WIN32_LEAN_AND_MEAN
1672 #include <windows.h>
1673 #ifdef HAVE_WINSOCK2_H
1674 #include <winsock2.h>
1676 #ifdef HAVE_WINSOCK_H
1677 #include <winsock.h>
1680 #define RECVFROMCALLCONV PASCAL
1682 #ifdef HAVE_SYS_TYPES_H
1683 #include <sys/types.h>
1685 #ifdef HAVE_SYS_SOCKET_H
1686 #include <sys/socket.h>
1688 #define RECVFROMCALLCONV
1690 extern $recvfrom_retv RECVFROMCALLCONV
1691 recvfrom($recvfrom_arg1, $recvfrom_arg2,
1692 $recvfrom_arg3, $recvfrom_arg4,
1693 $recvfrom_arg5, $recvfrom_arg6);
1696 $recvfrom_arg2 buf=0;
1697 $recvfrom_arg3 len=0;
1698 $recvfrom_arg4 flags=0;
1699 $recvfrom_arg5 addr=0;
1700 $recvfrom_arg6 addrlen=0;
1701 $recvfrom_retv res=0;
1702 res = recvfrom(s, buf, len, flags, addr, addrlen);
1705 curl_cv_func_recvfrom_args="$recvfrom_arg1,$recvfrom_arg2,$recvfrom_arg3,$recvfrom_arg4,$recvfrom_arg5,$recvfrom_arg6,$recvfrom_retv"
1716 # Nearly last minute change for this release starts here
1717 AC_DEFINE_UNQUOTED(HAVE_RECVFROM, 1,
1718 [Define to 1 if you have the recvfrom function.])
1719 ac_cv_func_recvfrom="yes"
1720 # Nearly last minute change for this release ends here
1721 if test "$curl_cv_func_recvfrom_args" = "unknown"; then
1722 AC_MSG_WARN([Cannot find proper types to use for recvfrom args])
1724 recvfrom_prev_IFS=$IFS; IFS=','
1725 set dummy `echo "$curl_cv_func_recvfrom_args" | sed 's/\*/\*/g'`
1726 IFS=$recvfrom_prev_IFS
1729 recvfrom_ptrt_arg2=$[2]
1730 recvfrom_qual_ptrt_arg5=$[5]
1731 recvfrom_ptrt_arg6=$[6]
1733 AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG1, $[1],
1734 [Define to the type of arg 1 for recvfrom.])
1735 AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG3, $[3],
1736 [Define to the type of arg 3 for recvfrom.])
1737 AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG4, $[4],
1738 [Define to the type of arg 4 for recvfrom.])
1739 AC_DEFINE_UNQUOTED(RECVFROM_TYPE_RETV, $[7],
1740 [Define to the function return type for recvfrom.])
1744 case $prev_sh_opts in
1752 case "$recvfrom_qual_ptrt_arg5" in
1754 recvfrom_qual_arg5=const
1755 recvfrom_ptrt_arg5=`echo $recvfrom_qual_ptrt_arg5 | sed 's/^const //'`
1759 recvfrom_ptrt_arg5=$recvfrom_qual_ptrt_arg5
1763 recvfrom_type_arg2=`echo $recvfrom_ptrt_arg2 | sed 's/ \*//'`
1764 recvfrom_type_arg5=`echo $recvfrom_ptrt_arg5 | sed 's/ \*//'`
1765 recvfrom_type_arg6=`echo $recvfrom_ptrt_arg6 | sed 's/ \*//'`
1767 AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG2, $recvfrom_type_arg2,
1768 [Define to the type pointed by arg 2 for recvfrom.])
1769 AC_DEFINE_UNQUOTED(RECVFROM_QUAL_ARG5, $recvfrom_qual_arg5,
1770 [Define to the type qualifier pointed by arg 5 for recvfrom.])
1771 AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG5, $recvfrom_type_arg5,
1772 [Define to the type pointed by arg 5 for recvfrom.])
1773 AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG6, $recvfrom_type_arg6,
1774 [Define to the type pointed by arg 6 for recvfrom.])
1776 if test "$recvfrom_type_arg2" = "void"; then
1777 AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG2_IS_VOID, 1,
1778 [Define to 1 if the type pointed by arg 2 for recvfrom is void.])
1780 if test "$recvfrom_type_arg5" = "void"; then
1781 AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG5_IS_VOID, 1,
1782 [Define to 1 if the type pointed by arg 5 for recvfrom is void.])
1784 if test "$recvfrom_type_arg6" = "void"; then
1785 AC_DEFINE_UNQUOTED(RECVFROM_TYPE_ARG6_IS_VOID, 1,
1786 [Define to 1 if the type pointed by arg 6 for recvfrom is void.])
1789 case $prev_sh_opts in
1797 AC_DEFINE_UNQUOTED(HAVE_RECVFROM, 1,
1798 [Define to 1 if you have the recvfrom function.])
1799 ac_cv_func_recvfrom="yes"
1802 AC_MSG_WARN([Unable to link function recvfrom])
1807 dnl CURL_CHECK_MSG_NOSIGNAL
1808 dnl -------------------------------------------------
1809 dnl Check for MSG_NOSIGNAL
1811 AC_DEFUN([CURL_CHECK_MSG_NOSIGNAL], [
1812 AC_CHECK_HEADERS(sys/types.h sys/socket.h)
1813 AC_CACHE_CHECK([for MSG_NOSIGNAL], [ac_cv_msg_nosignal], [
1817 #ifdef HAVE_WINDOWS_H
1818 #ifndef WIN32_LEAN_AND_MEAN
1819 #define WIN32_LEAN_AND_MEAN
1821 #include <windows.h>
1822 #ifdef HAVE_WINSOCK2_H
1823 #include <winsock2.h>
1825 #ifdef HAVE_WINSOCK_H
1826 #include <winsock.h>
1830 #ifdef HAVE_SYS_TYPES_H
1831 #include <sys/types.h>
1833 #ifdef HAVE_SYS_SOCKET_H
1834 #include <sys/socket.h>
1838 int flag=MSG_NOSIGNAL;
1841 ac_cv_msg_nosignal="yes"
1843 ac_cv_msg_nosignal="no"
1846 case "$ac_cv_msg_nosignal" in
1848 AC_DEFINE_UNQUOTED(HAVE_MSG_NOSIGNAL, 1,
1849 [Define to 1 if you have the MSG_NOSIGNAL flag.])
1855 dnl CURL_CHECK_STRUCT_TIMEVAL
1856 dnl -------------------------------------------------
1857 dnl Check for timeval struct
1859 AC_DEFUN([CURL_CHECK_STRUCT_TIMEVAL], [
1860 AC_REQUIRE([AC_HEADER_TIME])dnl
1861 AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl
1862 AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
1863 AC_CHECK_HEADERS(sys/types.h sys/time.h time.h sys/socket.h)
1864 AC_CACHE_CHECK([for struct timeval], [ac_cv_struct_timeval], [
1868 #ifdef HAVE_WINDOWS_H
1869 #ifndef WIN32_LEAN_AND_MEAN
1870 #define WIN32_LEAN_AND_MEAN
1872 #include <windows.h>
1873 #ifdef HAVE_WINSOCK2_H
1874 #include <winsock2.h>
1876 #ifdef HAVE_WINSOCK_H
1877 #include <winsock.h>
1881 #ifdef HAVE_SYS_TYPES_H
1882 #include <sys/types.h>
1884 #ifdef HAVE_SYS_TIME_H
1885 #include <sys/time.h>
1886 #ifdef TIME_WITH_SYS_TIME
1894 #ifdef HAVE_SYS_SOCKET_H
1895 #include <sys/socket.h>
1903 ac_cv_struct_timeval="yes"
1905 ac_cv_struct_timeval="no"
1908 case "$ac_cv_struct_timeval" in
1910 AC_DEFINE_UNQUOTED(HAVE_STRUCT_TIMEVAL, 1,
1911 [Define to 1 if you have the timeval struct.])
1917 dnl TYPE_SIG_ATOMIC_T
1918 dnl -------------------------------------------------
1919 dnl Check if the sig_atomic_t type is available, and
1920 dnl verify if it is already defined as volatile.
1922 AC_DEFUN([TYPE_SIG_ATOMIC_T], [
1923 AC_CHECK_HEADERS(signal.h)
1924 AC_CHECK_TYPE([sig_atomic_t],[
1925 AC_DEFINE(HAVE_SIG_ATOMIC_T, 1,
1926 [Define to 1 if sig_atomic_t is an available typedef.])
1928 #ifdef HAVE_SIGNAL_H
1932 case "$ac_cv_type_sig_atomic_t" in
1935 AC_MSG_CHECKING([if sig_atomic_t is already defined as volatile])
1938 #ifdef HAVE_SIGNAL_H
1942 static volatile sig_atomic_t dummy = 0;
1946 ac_cv_sig_atomic_t_volatile="no"
1948 AC_MSG_RESULT([yes])
1949 ac_cv_sig_atomic_t_volatile="yes"
1952 if test "$ac_cv_sig_atomic_t_volatile" = "yes"; then
1953 AC_DEFINE(HAVE_SIG_ATOMIC_T_VOLATILE, 1,
1954 [Define to 1 if sig_atomic_t is already defined as volatile.])
1962 dnl -------------------------------------------------
1963 dnl Check for in_addr_t: it is used to receive the return code of inet_addr()
1964 dnl and a few other things.
1966 AC_DEFUN([TYPE_IN_ADDR_T], [
1967 AC_CHECK_TYPE([in_addr_t], ,[
1968 dnl in_addr_t not available
1969 AC_CACHE_CHECK([for in_addr_t equivalent],
1970 [curl_cv_in_addr_t_equiv], [
1971 curl_cv_in_addr_t_equiv="unknown"
1972 for t in "unsigned long" int size_t unsigned long; do
1973 if test "$curl_cv_in_addr_t_equiv" = "unknown"; then
1977 #ifdef HAVE_WINDOWS_H
1978 #ifndef WIN32_LEAN_AND_MEAN
1979 #define WIN32_LEAN_AND_MEAN
1981 #include <windows.h>
1982 #ifdef HAVE_WINSOCK2_H
1983 #include <winsock2.h>
1985 #ifdef HAVE_WINSOCK_H
1986 #include <winsock.h>
1990 #ifdef HAVE_SYS_TYPES_H
1991 #include <sys/types.h>
1993 #ifdef HAVE_SYS_SOCKET_H
1994 #include <sys/socket.h>
1996 #ifdef HAVE_NETINET_IN_H
1997 #include <netinet/in.h>
1999 #ifdef HAVE_ARPA_INET_H
2000 #include <arpa/inet.h>
2004 $t data = inet_addr ("1.2.3.4");
2007 curl_cv_in_addr_t_equiv="$t"
2012 case "$curl_cv_in_addr_t_equiv" in
2014 AC_MSG_ERROR([Cannot find a type to use in place of in_addr_t])
2017 AC_DEFINE_UNQUOTED(in_addr_t, $curl_cv_in_addr_t_equiv,
2018 [Type to use in place of in_addr_t when system does not provide it.])
2023 #ifdef HAVE_WINDOWS_H
2024 #ifndef WIN32_LEAN_AND_MEAN
2025 #define WIN32_LEAN_AND_MEAN
2027 #include <windows.h>
2028 #ifdef HAVE_WINSOCK2_H
2029 #include <winsock2.h>
2031 #ifdef HAVE_WINSOCK_H
2032 #include <winsock.h>
2036 #ifdef HAVE_SYS_TYPES_H
2037 #include <sys/types.h>
2039 #ifdef HAVE_SYS_SOCKET_H
2040 #include <sys/socket.h>
2042 #ifdef HAVE_NETINET_IN_H
2043 #include <netinet/in.h>
2045 #ifdef HAVE_ARPA_INET_H
2046 #include <arpa/inet.h>
2053 dnl CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC
2054 dnl -------------------------------------------------
2055 dnl Check if monotonic clock_gettime is available.
2057 AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [
2058 AC_REQUIRE([AC_HEADER_TIME])dnl
2059 AC_CHECK_HEADERS(sys/types.h sys/time.h time.h)
2060 AC_MSG_CHECKING([for monotonic clock_gettime])
2063 #ifdef HAVE_SYS_TYPES_H
2064 #include <sys/types.h>
2066 #ifdef HAVE_SYS_TIME_H
2067 #include <sys/time.h>
2068 #ifdef TIME_WITH_SYS_TIME
2078 (void)clock_gettime(CLOCK_MONOTONIC, &ts);
2081 AC_MSG_RESULT([yes])
2082 ac_cv_func_clock_gettime="yes"
2085 ac_cv_func_clock_gettime="no"
2087 dnl Definition of HAVE_CLOCK_GETTIME_MONOTONIC is intentionally postponed
2088 dnl until library linking and run-time checks for clock_gettime succeed.
2092 dnl CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
2093 dnl -------------------------------------------------
2094 dnl If monotonic clock_gettime is available then,
2095 dnl check and prepended to LIBS any needed libraries.
2097 AC_DEFUN([CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC], [
2098 AC_REQUIRE([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC])dnl
2100 if test "$ac_cv_func_clock_gettime" = "yes"; then
2102 AC_MSG_CHECKING([for clock_gettime in libraries])
2104 curl_cv_save_LIBS="$LIBS"
2105 curl_cv_gclk_LIBS="unknown"
2107 for x_xlibs in '' '-lrt' '-lposix4' ; do
2108 if test "$curl_cv_gclk_LIBS" = "unknown"; then
2109 if test -z "$x_xlibs"; then
2110 LIBS="$curl_cv_save_LIBS"
2112 LIBS="$x_xlibs $curl_cv_save_LIBS"
2116 #ifdef HAVE_SYS_TYPES_H
2117 #include <sys/types.h>
2119 #ifdef HAVE_SYS_TIME_H
2120 #include <sys/time.h>
2121 #ifdef TIME_WITH_SYS_TIME
2131 (void)clock_gettime(CLOCK_MONOTONIC, &ts);
2134 curl_cv_gclk_LIBS="$x_xlibs"
2139 LIBS="$curl_cv_save_LIBS"
2141 case X-"$curl_cv_gclk_LIBS" in
2143 AC_MSG_RESULT([cannot find clock_gettime])
2144 AC_MSG_WARN([HAVE_CLOCK_GETTIME_MONOTONIC will not be defined])
2145 ac_cv_func_clock_gettime="no"
2148 AC_MSG_RESULT([no additional lib required])
2149 ac_cv_func_clock_gettime="yes"
2152 if test -z "$curl_cv_save_LIBS"; then
2153 LIBS="$curl_cv_gclk_LIBS"
2155 LIBS="$curl_cv_gclk_LIBS $curl_cv_save_LIBS"
2157 AC_MSG_RESULT([$curl_cv_gclk_LIBS])
2158 ac_cv_func_clock_gettime="yes"
2162 dnl only do runtime verification when not cross-compiling
2163 if test "x$cross_compiling" != "xyes" &&
2164 test "$ac_cv_func_clock_gettime" = "yes"; then
2165 AC_MSG_CHECKING([if monotonic clock_gettime works])
2168 #ifdef HAVE_STDLIB_H
2171 #ifdef HAVE_SYS_TYPES_H
2172 #include <sys/types.h>
2174 #ifdef HAVE_SYS_TIME_H
2175 #include <sys/time.h>
2176 #ifdef TIME_WITH_SYS_TIME
2186 if (0 == clock_gettime(CLOCK_MONOTONIC, &ts))
2192 AC_MSG_RESULT([yes])
2195 AC_MSG_WARN([HAVE_CLOCK_GETTIME_MONOTONIC will not be defined])
2196 ac_cv_func_clock_gettime="no"
2197 LIBS="$curl_cv_save_LIBS"
2201 case "$ac_cv_func_clock_gettime" in
2203 AC_DEFINE_UNQUOTED(HAVE_CLOCK_GETTIME_MONOTONIC, 1,
2204 [Define to 1 if you have the clock_gettime function and monotonic timer.])
2213 dnl CURL_CHECK_LIBS_CONNECT
2214 dnl -------------------------------------------------
2215 dnl Verify if network connect function is already available
2216 dnl using current libraries or if another one is required.
2218 AC_DEFUN([CURL_CHECK_LIBS_CONNECT], [
2219 AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
2220 AC_MSG_CHECKING([for connect in libraries])
2221 tst_connect_save_LIBS="$LIBS"
2222 tst_connect_need_LIBS="unknown"
2223 for tst_lib in '' '-lsocket' ; do
2224 if test "$tst_connect_need_LIBS" = "unknown"; then
2225 LIBS="$tst_lib $tst_connect_save_LIBS"
2228 $curl_includes_winsock2
2229 #ifndef HAVE_WINDOWS_H
2230 int connect(int, void*, int);
2233 if(0 != connect(0, 0, 0))
2237 tst_connect_need_LIBS="$tst_lib"
2241 LIBS="$tst_connect_save_LIBS"
2243 case X-"$tst_connect_need_LIBS" in
2245 AC_MSG_RESULT([cannot find connect])
2246 AC_MSG_ERROR([cannot find connect function in libraries.])
2249 AC_MSG_RESULT([yes])
2252 AC_MSG_RESULT([$tst_connect_need_LIBS])
2253 LIBS="$tst_connect_need_LIBS $tst_connect_save_LIBS"
2259 dnl CURL_DEFINE_UNQUOTED (VARIABLE, [VALUE])
2260 dnl -------------------------------------------------
2261 dnl Like AC_DEFINE_UNQUOTED this macro will define a C preprocessor
2262 dnl symbol that can be further used in custom template configuration
2263 dnl files. This macro, unlike AC_DEFINE_UNQUOTED, does not use a third
2264 dnl argument for the description. Symbol definitions done with this
2265 dnl macro are intended to be exclusively used in handcrafted *.h.in
2266 dnl template files. Contrary to what AC_DEFINE_UNQUOTED does, this one
2267 dnl prevents autoheader generation and insertion of symbol template
2268 dnl stub and definition into the first configuration header file. Do
2269 dnl not use this macro as a replacement for AC_DEFINE_UNQUOTED, each
2270 dnl one serves different functional needs.
2272 AC_DEFUN([CURL_DEFINE_UNQUOTED], [
2273 cat >>confdefs.h <<_EOF
2274 [@%:@define] $1 ifelse($#, 2, [$2], 1)
2279 dnl CURL_CONFIGURE_LONG
2280 dnl -------------------------------------------------
2281 dnl Find out the size of long as reported by sizeof() and define
2282 dnl CURL_SIZEOF_LONG as appropriate to be used in template file
2283 dnl include/curl/curlbuild.h.in to properly configure the library.
2284 dnl The size of long is a build time characteristic and as such
2285 dnl must be recorded in curlbuild.h
2287 AC_DEFUN([CURL_CONFIGURE_LONG], [
2288 if test -z "$ac_cv_sizeof_long" ||
2289 test "$ac_cv_sizeof_long" -eq "0"; then
2290 AC_MSG_ERROR([cannot find out size of long.])
2292 CURL_DEFINE_UNQUOTED([CURL_SIZEOF_LONG], [$ac_cv_sizeof_long])
2296 dnl CURL_CONFIGURE_CURL_SOCKLEN_T
2297 dnl -------------------------------------------------
2298 dnl Find out suitable curl_socklen_t data type definition and size, making
2299 dnl appropriate definitions for template file include/curl/curlbuild.h.in
2300 dnl to properly configure and use the library.
2302 dnl The need for the curl_socklen_t definition arises mainly to properly
2303 dnl interface HP-UX systems which on one hand have a typedef'ed socklen_t
2304 dnl data type which is 32 or 64-Bit wide depending on the data model being
2305 dnl used, and that on the other hand is only actually used when interfacing
2306 dnl the X/Open sockets provided in the xnet library.
2308 AC_DEFUN([CURL_CONFIGURE_CURL_SOCKLEN_T], [
2309 AC_REQUIRE([CURL_INCLUDES_WS2TCPIP])dnl
2310 AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
2311 AC_REQUIRE([CURL_PREPROCESS_CALLCONV])dnl
2313 AC_BEFORE([$0], [CURL_CONFIGURE_PULL_SYS_POLL])dnl
2315 AC_MSG_CHECKING([for curl_socklen_t data type])
2316 curl_typeof_curl_socklen_t="unknown"
2317 for arg1 in int SOCKET; do
2318 for arg2 in 'struct sockaddr' void; do
2319 for t in socklen_t int size_t 'unsigned int' long 'unsigned long' void; do
2320 if test "$curl_typeof_curl_socklen_t" = "unknown"; then
2323 $curl_includes_ws2tcpip
2324 $curl_includes_sys_socket
2325 $curl_preprocess_callconv
2326 extern int FUNCALLCONV getpeername($arg1, $arg2 *, $t *);
2329 if(0 != getpeername(0, 0, lenptr))
2333 curl_typeof_curl_socklen_t="$t"
2339 for t in socklen_t int; do
2340 if test "$curl_typeof_curl_socklen_t" = "void"; then
2343 $curl_includes_sys_socket
2344 typedef $t curl_socklen_t;
2346 curl_socklen_t dummy;
2349 curl_typeof_curl_socklen_t="$t"
2353 AC_MSG_RESULT([$curl_typeof_curl_socklen_t])
2354 if test "$curl_typeof_curl_socklen_t" = "void" ||
2355 test "$curl_typeof_curl_socklen_t" = "unknown"; then
2356 AC_MSG_ERROR([cannot find data type for curl_socklen_t.])
2359 AC_MSG_CHECKING([size of curl_socklen_t])
2360 curl_sizeof_curl_socklen_t="unknown"
2361 curl_pull_headers_socklen_t="unknown"
2362 if test "$ac_cv_header_ws2tcpip_h" = "yes"; then
2363 tst_pull_header_checks='none ws2tcpip'
2366 tst_pull_header_checks='none systypes syssocket'
2367 tst_size_checks='4 8 2'
2369 for tst_size in $tst_size_checks; do
2370 for tst_pull_headers in $tst_pull_header_checks; do
2371 if test "$curl_sizeof_curl_socklen_t" = "unknown"; then
2372 case $tst_pull_headers in
2374 tmp_includes="$curl_includes_ws2tcpip"
2377 tmp_includes="$curl_includes_sys_types"
2380 tmp_includes="$curl_includes_sys_socket"
2389 typedef $curl_typeof_curl_socklen_t curl_socklen_t;
2390 typedef char dummy_arr[sizeof(curl_socklen_t) == $tst_size ? 1 : -1];
2392 curl_socklen_t dummy;
2395 curl_sizeof_curl_socklen_t="$tst_size"
2396 curl_pull_headers_socklen_t="$tst_pull_headers"
2401 AC_MSG_RESULT([$curl_sizeof_curl_socklen_t])
2402 if test "$curl_sizeof_curl_socklen_t" = "unknown"; then
2403 AC_MSG_ERROR([cannot find out size of curl_socklen_t.])
2406 case $curl_pull_headers_socklen_t in
2408 CURL_DEFINE_UNQUOTED([CURL_PULL_WS2TCPIP_H])
2411 CURL_DEFINE_UNQUOTED([CURL_PULL_SYS_TYPES_H])
2414 CURL_DEFINE_UNQUOTED([CURL_PULL_SYS_TYPES_H])
2415 CURL_DEFINE_UNQUOTED([CURL_PULL_SYS_SOCKET_H])
2418 CURL_DEFINE_UNQUOTED([CURL_TYPEOF_CURL_SOCKLEN_T], [$curl_typeof_curl_socklen_t])
2419 CURL_DEFINE_UNQUOTED([CURL_SIZEOF_CURL_SOCKLEN_T], [$curl_sizeof_curl_socklen_t])
2423 dnl CURL_CONFIGURE_PULL_SYS_POLL
2424 dnl -------------------------------------------------
2425 dnl Find out if system header file sys/poll.h must be included by the
2426 dnl external interface, making appropriate definitions for template file
2427 dnl include/curl/curlbuild.h.in to properly configure and use the library.
2429 dnl The need for the sys/poll.h inclusion arises mainly to properly
2430 dnl interface AIX systems which define macros 'events' and 'revents'.
2432 AC_DEFUN([CURL_CONFIGURE_PULL_SYS_POLL], [
2433 AC_REQUIRE([CURL_INCLUDES_POLL])dnl
2435 tst_poll_events_macro_defined="unknown"
2441 #if defined(events) || defined(revents)
2444 force compilation error
2448 tst_poll_events_macro_defined="yes"
2450 tst_poll_events_macro_defined="no"
2453 if test "$tst_poll_events_macro_defined" = "yes"; then
2454 if test "x$ac_cv_header_sys_poll_h" = "xyes"; then
2455 CURL_DEFINE_UNQUOTED([CURL_PULL_SYS_POLL_H])
2462 dnl CURL_CHECK_FUNC_SELECT
2463 dnl -------------------------------------------------
2464 dnl Test if the socket select() function is available,
2465 dnl and check its return type and the types of its
2466 dnl arguments. If the function succeeds HAVE_SELECT
2467 dnl will be defined, defining the types of the
2468 dnl arguments in SELECT_TYPE_ARG1, SELECT_TYPE_ARG234
2469 dnl and SELECT_TYPE_ARG5, defining the type of the
2470 dnl function return value in SELECT_TYPE_RETV, and
2471 dnl also defining the type qualifier of fifth argument
2472 dnl in SELECT_QUAL_ARG5.
2474 AC_DEFUN([CURL_CHECK_FUNC_SELECT], [
2475 AC_REQUIRE([CURL_CHECK_STRUCT_TIMEVAL])dnl
2476 AC_CHECK_HEADERS(sys/select.h sys/socket.h)
2478 AC_MSG_CHECKING([for select])
2482 #ifdef HAVE_WINDOWS_H
2483 #ifndef WIN32_LEAN_AND_MEAN
2484 #define WIN32_LEAN_AND_MEAN
2486 #include <windows.h>
2487 #ifdef HAVE_WINSOCK2_H
2488 #include <winsock2.h>
2490 #ifdef HAVE_WINSOCK_H
2491 #include <winsock.h>
2495 #ifdef HAVE_SYS_TYPES_H
2496 #include <sys/types.h>
2498 #ifdef HAVE_SYS_TIME_H
2499 #include <sys/time.h>
2500 #ifdef TIME_WITH_SYS_TIME
2508 #ifndef HAVE_WINDOWS_H
2509 #ifdef HAVE_SYS_SELECT_H
2510 #include <sys/select.h>
2512 #ifdef HAVE_SYS_SOCKET_H
2513 #include <sys/socket.h>
2517 select(0, 0, 0, 0, 0);
2520 AC_MSG_RESULT([yes])
2521 curl_cv_select="yes"
2527 if test "$curl_cv_select" = "yes"; then
2528 AC_CACHE_CHECK([types of args and return type for select],
2529 [curl_cv_func_select_args], [
2530 curl_cv_func_select_args="unknown"
2531 for sel_retv in 'int' 'ssize_t'; do
2532 for sel_arg1 in 'int' 'ssize_t' 'size_t' 'unsigned long int' 'unsigned int'; do
2533 for sel_arg234 in 'fd_set *' 'int *' 'void *'; do
2534 for sel_arg5 in 'struct timeval *' 'const struct timeval *'; do
2535 if test "$curl_cv_func_select_args" = "unknown"; then
2539 #ifdef HAVE_WINDOWS_H
2540 #ifndef WIN32_LEAN_AND_MEAN
2541 #define WIN32_LEAN_AND_MEAN
2543 #include <windows.h>
2544 #ifdef HAVE_WINSOCK2_H
2545 #include <winsock2.h>
2547 #ifdef HAVE_WINSOCK_H
2548 #include <winsock.h>
2551 #define SELECTCALLCONV PASCAL
2553 #ifdef HAVE_SYS_TYPES_H
2554 #include <sys/types.h>
2556 #ifdef HAVE_SYS_TIME_H
2557 #include <sys/time.h>
2558 #ifdef TIME_WITH_SYS_TIME
2566 #ifndef HAVE_WINDOWS_H
2567 #ifdef HAVE_SYS_SELECT_H
2568 #include <sys/select.h>
2570 #ifdef HAVE_SYS_SOCKET_H
2571 #include <sys/socket.h>
2573 #define SELECTCALLCONV
2575 #ifndef HAVE_STRUCT_TIMEVAL
2581 extern $sel_retv SELECTCALLCONV select($sel_arg1,
2591 $sel_retv res = select(nfds, rfds, wfds, efds, 0);
2594 curl_cv_func_select_args="$sel_arg1,$sel_arg234,$sel_arg5,$sel_retv"
2602 if test "$curl_cv_func_select_args" = "unknown"; then
2603 AC_MSG_WARN([Cannot find proper types to use for select args])
2604 AC_MSG_WARN([HAVE_SELECT will not be defined])
2606 select_prev_IFS=$IFS; IFS=','
2607 set dummy `echo "$curl_cv_func_select_args" | sed 's/\*/\*/g'`
2608 IFS=$select_prev_IFS
2611 sel_qual_type_arg5=$[3]
2613 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG1, $[1],
2614 [Define to the type of arg 1 for select.])
2615 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG234, $[2],
2616 [Define to the type of args 2, 3 and 4 for select.])
2617 AC_DEFINE_UNQUOTED(SELECT_TYPE_RETV, $[4],
2618 [Define to the function return type for select.])
2622 case $prev_sh_opts in
2630 case "$sel_qual_type_arg5" in
2633 sel_type_arg5=`echo $sel_qual_type_arg5 | sed 's/^const //'`
2637 sel_type_arg5=$sel_qual_type_arg5
2641 AC_DEFINE_UNQUOTED(SELECT_QUAL_ARG5, $sel_qual_arg5,
2642 [Define to the type qualifier of arg 5 for select.])
2643 AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG5, $sel_type_arg5,
2644 [Define to the type of arg 5 for select.])
2646 case $prev_sh_opts in
2654 AC_DEFINE_UNQUOTED(HAVE_SELECT, 1,
2655 [Define to 1 if you have the select function.])
2656 ac_cv_func_select="yes"
2662 # This is only a temporary fix. This macro is here to replace the broken one
2663 # delivered by the automake project (including the 1.9.6 release). As soon as
2664 # they ship a working version we SHOULD remove this work-around.
2666 AC_DEFUN([AM_MISSING_HAS_RUN],
2667 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
2668 test x"${MISSING+set}" = xset || MISSING="\${SHELL} \"$am_aux_dir/missing\""
2669 # Use eval to expand $SHELL
2670 if eval "$MISSING --run true"; then
2671 am_missing_run="$MISSING --run "
2674 AC_MSG_WARN([`missing' script is too old or missing])
2679 dnl CURL_VERIFY_RUNTIMELIBS
2680 dnl -------------------------------------------------
2681 dnl Verify that the shared libs found so far can be used when running
2682 dnl programs, since otherwise the situation will create odd configure errors
2683 dnl that are misleading people.
2685 dnl Make sure this test is run BEFORE the first test in the script that
2686 dnl runs anything, which at the time of this writing is the AC_CHECK_SIZEOF
2687 dnl macro. It must also run AFTER all lib-checking macros are complete.
2689 AC_DEFUN([CURL_VERIFY_RUNTIMELIBS], [
2691 dnl this test is of course not sensible if we are cross-compiling!
2692 if test "x$cross_compiling" != xyes; then
2694 dnl just run a program to verify that the libs checked for previous to this
2695 dnl point also is available run-time!
2696 AC_MSG_CHECKING([run-time libs availability])
2703 AC_MSG_RESULT([fine]),
2704 AC_MSG_RESULT([failed])
2705 AC_MSG_ERROR([one or more libs available at link-time are not available run-time. Libs used at link-time: $LIBS])
2708 dnl if this test fails, configure has already stopped
2713 dnl CURL_CHECK_VARIADIC_MACROS
2714 dnl -------------------------------------------------
2715 dnl Check compiler support of variadic macros
2717 AC_DEFUN([CURL_CHECK_VARIADIC_MACROS], [
2718 AC_CACHE_CHECK([for compiler support of C99 variadic macro style],
2719 [curl_cv_variadic_macros_c99], [
2722 #define c99_vmacro3(first, ...) fun3(first, __VA_ARGS__)
2723 #define c99_vmacro2(first, ...) fun2(first, __VA_ARGS__)
2724 int fun3(int arg1, int arg2, int arg3);
2725 int fun2(int arg1, int arg2);
2726 int fun3(int arg1, int arg2, int arg3)
2727 { return arg1 + arg2 + arg3; }
2728 int fun2(int arg1, int arg2)
2729 { return arg1 + arg2; }
2731 int res3 = c99_vmacro3(1, 2, 3);
2732 int res2 = c99_vmacro2(1, 2);
2735 curl_cv_variadic_macros_c99="yes"
2737 curl_cv_variadic_macros_c99="no"
2740 case "$curl_cv_variadic_macros_c99" in
2742 AC_DEFINE_UNQUOTED(HAVE_VARIADIC_MACROS_C99, 1,
2743 [Define to 1 if compiler supports C99 variadic macro style.])
2746 AC_CACHE_CHECK([for compiler support of old gcc variadic macro style],
2747 [curl_cv_variadic_macros_gcc], [
2750 #define gcc_vmacro3(first, args...) fun3(first, args)
2751 #define gcc_vmacro2(first, args...) fun2(first, args)
2752 int fun3(int arg1, int arg2, int arg3);
2753 int fun2(int arg1, int arg2);
2754 int fun3(int arg1, int arg2, int arg3)
2755 { return arg1 + arg2 + arg3; }
2756 int fun2(int arg1, int arg2)
2757 { return arg1 + arg2; }
2759 int res3 = gcc_vmacro3(1, 2, 3);
2760 int res2 = gcc_vmacro2(1, 2);
2763 curl_cv_variadic_macros_gcc="yes"
2765 curl_cv_variadic_macros_gcc="no"
2768 case "$curl_cv_variadic_macros_gcc" in
2770 AC_DEFINE_UNQUOTED(HAVE_VARIADIC_MACROS_GCC, 1,
2771 [Define to 1 if compiler supports old gcc variadic macro style.])
2777 dnl CURL_CHECK_CA_BUNDLE
2778 dnl -------------------------------------------------
2779 dnl Check if a default ca-bundle should be used
2781 dnl regarding the paths this will scan:
2782 dnl /etc/ssl/certs/ca-certificates.crt Debian systems
2783 dnl /etc/pki/tls/certs/ca-bundle.crt Redhat and Mandriva
2784 dnl /usr/share/ssl/certs/ca-bundle.crt old(er) Redhat
2785 dnl /usr/local/share/certs/ca-root.crt FreeBSD
2786 dnl /etc/ssl/cert.pem OpenBSD
2787 dnl /etc/ssl/certs/ (ca path) SUSE
2789 AC_DEFUN([CURL_CHECK_CA_BUNDLE], [
2791 AC_MSG_CHECKING([default CA cert bundle/path])
2793 AC_ARG_WITH(ca-bundle,
2794 AC_HELP_STRING([--with-ca-bundle=FILE], [File name to use as CA bundle])
2795 AC_HELP_STRING([--without-ca-bundle], [Don't use a default CA bundle]),
2798 if test "x$want_ca" = "xyes"; then
2799 AC_MSG_ERROR([--with-ca-bundle=FILE requires a path to the CA bundle])
2802 [ want_ca="unset" ])
2803 AC_ARG_WITH(ca-path,
2804 AC_HELP_STRING([--with-ca-path=DIRECTORY], [Directory to use as CA path])
2805 AC_HELP_STRING([--without-ca-path], [Don't use a default CA path]),
2807 want_capath="$withval"
2808 if test "x$want_capath" = "xyes"; then
2809 AC_MSG_ERROR([--with-ca-path=DIRECTORY requires a path to the CA path directory])
2812 [ want_capath="unset"])
2814 if test "x$want_ca" != "xno" -a "x$want_ca" != "xunset" -a \
2815 "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
2817 AC_MSG_ERROR([Can't specify both --with-ca-bundle and --with-ca-path.])
2818 elif test "x$want_ca" != "xno" -a "x$want_ca" != "xunset"; then
2819 dnl --with-ca-bundle given
2822 elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
2823 dnl --with-ca-path given
2824 if test "x$OPENSSL_ENABLED" != "x1"; then
2825 AC_MSG_ERROR([--with-ca-path only works with openSSL])
2827 capath="$want_capath"
2830 dnl neither of --with-ca-* given
2831 dnl first try autodetecting a CA bundle , then a CA path
2832 dnl both autodetections can be skipped by --without-ca-*
2835 if test "x$want_ca" = "xunset"; then
2836 dnl the path we previously would have installed the curl ca bundle
2837 dnl to, and thus we now check for an already existing cert in that place
2838 dnl in case we find no other
2839 if test "x$prefix" != xNONE; then
2840 cac="${prefix}/share/curl/curl-ca-bundle.crt"
2842 cac="$ac_default_prefix/share/curl/curl-ca-bundle.crt"
2845 for a in /etc/ssl/certs/ca-certificates.crt \
2846 /etc/pki/tls/certs/ca-bundle.crt \
2847 /usr/share/ssl/certs/ca-bundle.crt \
2848 /usr/local/share/certs/ca-root.crt \
2851 if test -f "$a"; then
2857 if test "x$want_capath" = "xunset" -a "x$ca" = "xno" -a \
2858 "x$OPENSSL_ENABLED" = "x1"; then
2859 for a in /etc/ssl/certs/; do
2860 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
2870 if test "x$ca" != "xno"; then
2871 CURL_CA_BUNDLE='"'$ca'"'
2872 AC_DEFINE_UNQUOTED(CURL_CA_BUNDLE, "$ca", [Location of default ca bundle])
2873 AC_SUBST(CURL_CA_BUNDLE)
2874 AC_MSG_RESULT([$ca])
2875 elif test "x$capath" != "xno"; then
2876 CURL_CA_PATH="\"$capath\""
2877 AC_DEFINE_UNQUOTED(CURL_CA_PATH, "$capath", [Location of default ca path])
2878 AC_MSG_RESULT([$capath (capath)])
2885 dnl DO_CURL_OFF_T_CHECK (TYPE, SIZE)
2886 dnl -------------------------------------------------
2887 dnl Internal macro for CURL_CONFIGURE_CURL_OFF_T
2889 AC_DEFUN([DO_CURL_OFF_T_CHECK], [
2890 AC_REQUIRE([CURL_INCLUDES_INTTYPES])dnl
2891 if test "$curl_typeof_curl_off_t" = "unknown" && test ! -z "$1"; then
2895 case XC_SH_TR_SH([$1]) in
2897 tmp_includes="$curl_includes_inttypes"
2898 tmp_source="char f@<:@@:>@ = PRId64;"
2902 tmp_includes="$curl_includes_inttypes"
2903 tmp_source="char f@<:@@:>@ = PRId32;"
2907 tmp_includes="$curl_includes_inttypes"
2908 tmp_source="char f@<:@@:>@ = PRId16;"
2915 typedef $1 curl_off_t;
2916 typedef char dummy_arr[sizeof(curl_off_t) == $2 ? 1 : -1];
2922 if test -z "$tmp_fmt"; then
2923 curl_typeof_curl_off_t="$1"
2924 curl_sizeof_curl_off_t="$2"
2926 CURL_CHECK_DEF([$tmp_fmt], [$curl_includes_inttypes], [silent])
2927 AS_VAR_PUSHDEF([tmp_HaveFmtDef], [curl_cv_have_def_$tmp_fmt])dnl
2928 AS_VAR_PUSHDEF([tmp_FmtDef], [curl_cv_def_$tmp_fmt])dnl
2929 if test AS_VAR_GET(tmp_HaveFmtDef) = "yes"; then
2930 curl_format_curl_off_t=AS_VAR_GET(tmp_FmtDef)
2931 curl_typeof_curl_off_t="$1"
2932 curl_sizeof_curl_off_t="$2"
2934 AS_VAR_POPDEF([tmp_FmtDef])dnl
2935 AS_VAR_POPDEF([tmp_HaveFmtDef])dnl
2942 dnl DO_CURL_OFF_T_SUFFIX_CHECK (TYPE)
2943 dnl -------------------------------------------------
2944 dnl Internal macro for CURL_CONFIGURE_CURL_OFF_T
2946 AC_DEFUN([DO_CURL_OFF_T_SUFFIX_CHECK], [
2947 AC_REQUIRE([CURL_INCLUDES_INTTYPES])dnl
2948 AC_MSG_CHECKING([constant suffix string for curl_off_t])
2950 curl_suffix_curl_off_t="unknown"
2951 curl_suffix_curl_off_tu="unknown"
2953 case XC_SH_TR_SH([$1]) in
2954 long_long | __longlong | __longlong_t)
2964 tst_suffixes="LL:i64::"
2967 tst_suffixes="L:i32::"
2970 tst_suffixes="L:i16::"
2973 AC_MSG_ERROR([unexpected data type $1])
2977 old_IFS=$IFS; IFS=':'
2978 for tmp_ssuf in $tst_suffixes ; do
2980 if test "x$curl_suffix_curl_off_t" = "xunknown"; then
2983 tmp_usuf="u$tmp_ssuf"
2986 tmp_usuf="U$tmp_ssuf"
2994 $curl_includes_inttypes
3005 curl_suffix_curl_off_t="$tmp_ssuf"
3006 curl_suffix_curl_off_tu="$tmp_usuf"
3012 if test "x$curl_suffix_curl_off_t" = "xunknown"; then
3013 AC_MSG_ERROR([cannot find constant suffix string for curl_off_t.])
3015 AC_MSG_RESULT([$curl_suffix_curl_off_t])
3016 AC_MSG_CHECKING([constant suffix string for unsigned curl_off_t])
3017 AC_MSG_RESULT([$curl_suffix_curl_off_tu])
3023 dnl CURL_CONFIGURE_CURL_OFF_T
3024 dnl -------------------------------------------------
3025 dnl Find out suitable curl_off_t data type definition and associated
3026 dnl items, and make the appropriate definitions used in template file
3027 dnl include/curl/curlbuild.h.in to properly configure the library.
3029 AC_DEFUN([CURL_CONFIGURE_CURL_OFF_T], [
3030 AC_REQUIRE([CURL_INCLUDES_INTTYPES])dnl
3032 AC_BEFORE([$0],[AC_SYS_LARGEFILE])dnl
3033 AC_BEFORE([$0],[CURL_CONFIGURE_REENTRANT])dnl
3034 AC_BEFORE([$0],[CURL_CHECK_AIX_ALL_SOURCE])dnl
3036 if test -z "$SED"; then
3037 AC_MSG_ERROR([SED not set. Cannot continue without SED being set.])
3040 AC_CHECK_SIZEOF(long)
3041 AC_CHECK_SIZEOF(void*)
3043 if test -z "$ac_cv_sizeof_long" ||
3044 test "$ac_cv_sizeof_long" -eq "0"; then
3045 AC_MSG_ERROR([cannot find out size of long.])
3047 if test -z "$ac_cv_sizeof_voidp" ||
3048 test "$ac_cv_sizeof_voidp" -eq "0"; then
3049 AC_MSG_ERROR([cannot find out size of void*.])
3056 if test "$ac_cv_sizeof_long" -eq "8" &&
3057 test "$ac_cv_sizeof_voidp" -ge "8"; then
3059 elif test "$ac_cv_sizeof_long" -eq "4" &&
3060 test "$ac_cv_sizeof_voidp" -ge "4"; then
3062 elif test "$ac_cv_sizeof_long" -eq "2" &&
3063 test "$ac_cv_sizeof_voidp" -ge "2"; then
3067 dnl DO_CURL_OFF_T_CHECK results are stored in next 3 vars
3069 curl_typeof_curl_off_t="unknown"
3070 curl_sizeof_curl_off_t="unknown"
3071 curl_format_curl_off_t="unknown"
3072 curl_format_curl_off_tu="unknown"
3074 if test "$curl_typeof_curl_off_t" = "unknown"; then
3075 AC_MSG_CHECKING([for 64-bit curl_off_t data type])
3083 DO_CURL_OFF_T_CHECK([$t8], [8])
3085 AC_MSG_RESULT([$curl_typeof_curl_off_t])
3087 if test "$curl_typeof_curl_off_t" = "unknown"; then
3088 AC_MSG_CHECKING([for 32-bit curl_off_t data type])
3094 DO_CURL_OFF_T_CHECK([$t4], [4])
3096 AC_MSG_RESULT([$curl_typeof_curl_off_t])
3098 if test "$curl_typeof_curl_off_t" = "unknown"; then
3099 AC_MSG_CHECKING([for 16-bit curl_off_t data type])
3105 DO_CURL_OFF_T_CHECK([$t2], [2])
3107 AC_MSG_RESULT([$curl_typeof_curl_off_t])
3109 if test "$curl_typeof_curl_off_t" = "unknown"; then
3110 AC_MSG_ERROR([cannot find data type for curl_off_t.])
3113 AC_MSG_CHECKING([size of curl_off_t])
3114 AC_MSG_RESULT([$curl_sizeof_curl_off_t])
3116 AC_MSG_CHECKING([formatting string directive for curl_off_t])
3117 if test "$curl_format_curl_off_t" != "unknown"; then
3118 x_pull_headers="yes"
3119 curl_format_curl_off_t=`echo "$curl_format_curl_off_t" | "$SED" 's/[["]]//g'`
3120 curl_format_curl_off_tu=`echo "$curl_format_curl_off_t" | "$SED" 's/i$/u/'`
3121 curl_format_curl_off_tu=`echo "$curl_format_curl_off_tu" | "$SED" 's/d$/u/'`
3122 curl_format_curl_off_tu=`echo "$curl_format_curl_off_tu" | "$SED" 's/D$/U/'`
3125 case XC_SH_TR_SH([$curl_typeof_curl_off_t]) in
3126 long_long | __longlong | __longlong_t)
3127 curl_format_curl_off_t="lld"
3128 curl_format_curl_off_tu="llu"
3131 curl_format_curl_off_t="ld"
3132 curl_format_curl_off_tu="lu"
3135 curl_format_curl_off_t="d"
3136 curl_format_curl_off_tu="u"
3139 curl_format_curl_off_t="I64d"
3140 curl_format_curl_off_tu="I64u"
3143 curl_format_curl_off_t="I32d"
3144 curl_format_curl_off_tu="I32u"
3147 curl_format_curl_off_t="I16d"
3148 curl_format_curl_off_tu="I16u"
3151 AC_MSG_ERROR([cannot find print format string for curl_off_t.])
3155 AC_MSG_RESULT(["$curl_format_curl_off_t"])
3157 AC_MSG_CHECKING([formatting string directive for unsigned curl_off_t])
3158 AC_MSG_RESULT(["$curl_format_curl_off_tu"])
3160 DO_CURL_OFF_T_SUFFIX_CHECK([$curl_typeof_curl_off_t])
3162 if test "$x_pull_headers" = "yes"; then
3163 if test "x$ac_cv_header_sys_types_h" = "xyes"; then
3164 CURL_DEFINE_UNQUOTED([CURL_PULL_SYS_TYPES_H])
3166 if test "x$ac_cv_header_stdint_h" = "xyes"; then
3167 CURL_DEFINE_UNQUOTED([CURL_PULL_STDINT_H])
3169 if test "x$ac_cv_header_inttypes_h" = "xyes"; then
3170 CURL_DEFINE_UNQUOTED([CURL_PULL_INTTYPES_H])
3174 CURL_DEFINE_UNQUOTED([CURL_TYPEOF_CURL_OFF_T], [$curl_typeof_curl_off_t])
3175 CURL_DEFINE_UNQUOTED([CURL_FORMAT_CURL_OFF_T], ["$curl_format_curl_off_t"])
3176 CURL_DEFINE_UNQUOTED([CURL_FORMAT_CURL_OFF_TU], ["$curl_format_curl_off_tu"])
3177 CURL_DEFINE_UNQUOTED([CURL_FORMAT_OFF_T], ["%$curl_format_curl_off_t"])
3178 CURL_DEFINE_UNQUOTED([CURL_SIZEOF_CURL_OFF_T], [$curl_sizeof_curl_off_t])
3179 CURL_DEFINE_UNQUOTED([CURL_SUFFIX_CURL_OFF_T], [$curl_suffix_curl_off_t])
3180 CURL_DEFINE_UNQUOTED([CURL_SUFFIX_CURL_OFF_TU], [$curl_suffix_curl_off_tu])
3185 dnl CURL_CHECK_WIN32_LARGEFILE
3186 dnl -------------------------------------------------
3187 dnl Check if curl's WIN32 large file will be used
3189 AC_DEFUN([CURL_CHECK_WIN32_LARGEFILE], [
3190 AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
3191 AC_MSG_CHECKING([whether build target supports WIN32 file API])
3192 curl_win32_file_api="no"
3193 if test "$ac_cv_header_windows_h" = "yes"; then
3194 if test x"$enable_largefile" != "xno"; then
3198 #if !defined(_WIN32_WCE) && \
3199 (defined(__MINGW32__) || \
3200 (defined(_MSC_VER) && (defined(_WIN32) || defined(_WIN64))))
3203 WIN32 large file API not supported.
3207 curl_win32_file_api="win32_large_files"
3210 if test "$curl_win32_file_api" = "no"; then
3214 #if defined(_WIN32_WCE) || defined(__MINGW32__) || defined(_MSC_VER)
3217 WIN32 small file API not supported.
3221 curl_win32_file_api="win32_small_files"
3225 case "$curl_win32_file_api" in
3227 AC_MSG_RESULT([yes (large file enabled)])
3228 AC_DEFINE_UNQUOTED(USE_WIN32_LARGE_FILES, 1,
3229 [Define to 1 if you are building a Windows target with large file support.])
3232 AC_MSG_RESULT([yes (large file disabled)])
3233 AC_DEFINE_UNQUOTED(USE_WIN32_SMALL_FILES, 1,
3234 [Define to 1 if you are building a Windows target without large file support.])
3242 dnl CURL_EXPORT_PCDIR ($pcdir)
3243 dnl ------------------------
3244 dnl if $pcdir is not empty, set PKG_CONFIG_LIBDIR to $pcdir and export
3246 dnl we need this macro since pkg-config distinguishes among empty and unset
3247 dnl variable while checking PKG_CONFIG_LIBDIR
3250 AC_DEFUN([CURL_EXPORT_PCDIR], [
3251 if test -n "$1"; then
3252 PKG_CONFIG_LIBDIR="$1"
3253 export PKG_CONFIG_LIBDIR
3257 dnl CURL_CHECK_PKGCONFIG ($module, [$pcdir])
3258 dnl ------------------------
3259 dnl search for the pkg-config tool. Set the PKGCONFIG variable to hold the
3260 dnl path to it, or 'no' if not found/present.
3262 dnl If pkg-config is present, check that it has info about the $module or
3263 dnl return "no" anyway!
3265 dnl Optionally PKG_CONFIG_LIBDIR may be given as $pcdir.
3268 AC_DEFUN([CURL_CHECK_PKGCONFIG], [
3272 AC_PATH_TOOL( PKGCONFIG, pkg-config, no, $PATH:/usr/bin:/usr/local/bin)
3274 if test x$PKGCONFIG != xno; then
3275 AC_MSG_CHECKING([for $1 options with pkg-config])
3276 dnl ask pkg-config about $1
3277 itexists=`CURL_EXPORT_PCDIR([$2]) dnl
3278 $PKGCONFIG --exists $1 >/dev/null 2>&1 && echo 1`
3280 if test -z "$itexists"; then
3281 dnl pkg-config does not have info about the given module! set the
3282 dnl variable to 'no'
3286 AC_MSG_RESULT([found])
3292 dnl CURL_GENERATE_CONFIGUREHELP_PM
3293 dnl -------------------------------------------------
3294 dnl Generate test harness configurehelp.pm module, defining and
3295 dnl initializing some perl variables with values which are known
3296 dnl when the configure script runs. For portability reasons, test
3297 dnl harness needs information on how to run the C preprocessor.
3299 AC_DEFUN([CURL_GENERATE_CONFIGUREHELP_PM], [
3300 AC_REQUIRE([AC_PROG_CPP])dnl
3301 tmp_cpp=`eval echo "$ac_cpp" 2>/dev/null`
3302 if test -z "$tmp_cpp"; then
3305 cat >./tests/configurehelp.pm <<_EOF
3306 [@%:@] This is a generated file. Do not edit.
3308 package configurehelp;
3320 @ISA = qw(Exporter);
3326 \$Cpreprocessor = '$tmp_cpp';