Home | History | Annotate | Download | only in curl
      1 #***************************************************************************
      2 #                                  _   _ ____  _
      3 #  Project                     ___| | | |  _ \| |
      4 #                             / __| | | | |_) | |
      5 #                            | (__| |_| |  _ <| |___
      6 #                             \___|\___/|_| \_\_____|
      7 #
      8 # Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel (a] 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 http://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 
     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.
     32 
     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.])
     38   fi
     39   if test -z "$GREP"; then
     40     AC_MSG_ERROR([GREP not set. Cannot continue without GREP being set.])
     41   fi
     42   ifelse($3,,[AC_MSG_CHECKING([for preprocessor definition of $1])])
     43   tmp_exp=""
     44   AC_PREPROC_IFELSE([
     45     AC_LANG_SOURCE(
     46 ifelse($2,,,[$2])[[
     47 #ifdef $1
     48 CURL_DEF_TOKEN $1
     49 #endif
     50     ]])
     51   ],[
     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
     57       tmp_exp=""
     58     fi
     59   ])
     60   if test -z "$tmp_exp"; then
     61     AS_VAR_SET(ac_HaveDef, no)
     62     ifelse($3,,[AC_MSG_RESULT([no])])
     63   else
     64     AS_VAR_SET(ac_HaveDef, yes)
     65     AS_VAR_SET(ac_Def, $tmp_exp)
     66     ifelse($3,,[AC_MSG_RESULT([$tmp_exp])])
     67   fi
     68   AS_VAR_POPDEF([ac_Def])dnl
     69   AS_VAR_POPDEF([ac_HaveDef])dnl
     70 ])
     71 
     72 
     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.
     79 
     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])])
     83   AC_COMPILE_IFELSE([
     84     AC_LANG_SOURCE(
     85 ifelse($2,,,[$2])[[
     86 int main (void)
     87 {
     88 #ifdef $1
     89   return 0;
     90 #else
     91   force compilation error
     92 #endif
     93 }
     94     ]])
     95   ],[
     96     tst_symbol_defined="yes"
     97   ],[
     98     tst_symbol_defined="no"
     99   ])
    100   if test "$tst_symbol_defined" = "yes"; then
    101     AS_VAR_SET(ac_HaveDef, yes)
    102     ifelse($3,,[AC_MSG_RESULT([yes])])
    103   else
    104     AS_VAR_SET(ac_HaveDef, no)
    105     ifelse($3,,[AC_MSG_RESULT([no])])
    106   fi
    107   AS_VAR_POPDEF([ac_HaveDef])dnl
    108 ])
    109 
    110 
    111 dnl CURL_CHECK_LIB_XNET
    112 dnl -------------------------------------------------
    113 dnl Verify if X/Open network library is required.
    114 
    115 AC_DEFUN([CURL_CHECK_LIB_XNET], [
    116   AC_MSG_CHECKING([if X/Open network library is required])
    117   tst_lib_xnet_required="no"
    118   AC_COMPILE_IFELSE([
    119     AC_LANG_SOURCE([[
    120 int main (void)
    121 {
    122 #if defined(__hpux) && defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 600)
    123   return 0;
    124 #elif defined(__hpux) && defined(_XOPEN_SOURCE_EXTENDED)
    125   return 0;
    126 #else
    127   force compilation error
    128 #endif
    129 }
    130     ]])
    131   ],[
    132     tst_lib_xnet_required="yes"
    133     LIBS="-lxnet $LIBS"
    134   ])
    135   AC_MSG_RESULT([$tst_lib_xnet_required])
    136 ])
    137 
    138 
    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.
    144 
    145 AC_DEFUN([CURL_CHECK_AIX_ALL_SOURCE], [
    146   AH_VERBATIM([_ALL_SOURCE],
    147     [/* Define to 1 if OS is AIX. */
    148 #ifndef _ALL_SOURCE
    149 #  undef _ALL_SOURCE
    150 #endif])
    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],[
    156 #ifdef _AIX
    157    yes_this_is_aix
    158 #endif
    159   ],[
    160     AC_MSG_RESULT([yes])
    161     AC_DEFINE(_ALL_SOURCE)
    162   ],[
    163     AC_MSG_RESULT([no])
    164   ])
    165 ])
    166 
    167 
    168 dnl CURL_CHECK_HEADER_WINDOWS
    169 dnl -------------------------------------------------
    170 dnl Check for compilable and valid windows.h header
    171 
    172 AC_DEFUN([CURL_CHECK_HEADER_WINDOWS], [
    173   AC_CACHE_CHECK([for windows.h], [ac_cv_header_windows_h], [
    174     AC_COMPILE_IFELSE([
    175       AC_LANG_PROGRAM([[
    176 #undef inline
    177 #ifndef WIN32_LEAN_AND_MEAN
    178 #define WIN32_LEAN_AND_MEAN
    179 #endif
    180 #include <windows.h>
    181       ]],[[
    182 #if defined(__CYGWIN__) || defined(__CEGCC__)
    183         HAVE_WINDOWS_H shall not be defined.
    184 #else
    185         int dummy=2*WINVER;
    186 #endif
    187       ]])
    188     ],[
    189       ac_cv_header_windows_h="yes"
    190     ],[
    191       ac_cv_header_windows_h="no"
    192     ])
    193   ])
    194   case "$ac_cv_header_windows_h" in
    195     yes)
    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])
    200       ;;
    201   esac
    202 ])
    203 
    204 
    205 dnl CURL_CHECK_NATIVE_WINDOWS
    206 dnl -------------------------------------------------
    207 dnl Check if building a native Windows target
    208 
    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"
    214     else
    215       AC_COMPILE_IFELSE([
    216         AC_LANG_PROGRAM([[
    217         ]],[[
    218 #if defined(__MINGW32__) || defined(__MINGW32CE__) || \
    219    (defined(_MSC_VER) && (defined(_WIN32) || defined(_WIN64)))
    220           int dummy=1;
    221 #else
    222           Not a native Windows build target.
    223 #endif
    224         ]])
    225       ],[
    226         ac_cv_native_windows="yes"
    227       ],[
    228         ac_cv_native_windows="no"
    229       ])
    230     fi
    231   ])
    232   AM_CONDITIONAL(DOING_NATIVE_WINDOWS, test "x$ac_cv_native_windows" = xyes)
    233 ])
    234 
    235 
    236 dnl CURL_CHECK_HEADER_WINSOCK
    237 dnl -------------------------------------------------
    238 dnl Check for compilable and valid winsock.h header
    239 
    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], [
    243     AC_COMPILE_IFELSE([
    244       AC_LANG_PROGRAM([[
    245 #undef inline
    246 #ifndef WIN32_LEAN_AND_MEAN
    247 #define WIN32_LEAN_AND_MEAN
    248 #endif
    249 #include <windows.h>
    250 #include <winsock.h>
    251       ]],[[
    252 #if defined(__CYGWIN__) || defined(__CEGCC__)
    253         HAVE_WINSOCK_H shall not be defined.
    254 #else
    255         int dummy=WSACleanup();
    256 #endif
    257       ]])
    258     ],[
    259       ac_cv_header_winsock_h="yes"
    260     ],[
    261       ac_cv_header_winsock_h="no"
    262     ])
    263   ])
    264   case "$ac_cv_header_winsock_h" in
    265     yes)
    266       AC_DEFINE_UNQUOTED(HAVE_WINSOCK_H, 1,
    267         [Define to 1 if you have the winsock.h header file.])
    268       ;;
    269   esac
    270 ])
    271 
    272 
    273 dnl CURL_CHECK_HEADER_WINSOCK2
    274 dnl -------------------------------------------------
    275 dnl Check for compilable and valid winsock2.h header
    276 
    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], [
    280     AC_COMPILE_IFELSE([
    281       AC_LANG_PROGRAM([[
    282 #undef inline
    283 #ifndef WIN32_LEAN_AND_MEAN
    284 #define WIN32_LEAN_AND_MEAN
    285 #endif
    286 #include <windows.h>
    287 #include <winsock2.h>
    288       ]],[[
    289 #if defined(__CYGWIN__) || defined(__CEGCC__) || defined(__MINGW32CE__)
    290         HAVE_WINSOCK2_H shall not be defined.
    291 #else
    292         int dummy=2*IPPROTO_ESP;
    293 #endif
    294       ]])
    295     ],[
    296       ac_cv_header_winsock2_h="yes"
    297     ],[
    298       ac_cv_header_winsock2_h="no"
    299     ])
    300   ])
    301   case "$ac_cv_header_winsock2_h" in
    302     yes)
    303       AC_DEFINE_UNQUOTED(HAVE_WINSOCK2_H, 1,
    304         [Define to 1 if you have the winsock2.h header file.])
    305       ;;
    306   esac
    307 ])
    308 
    309 
    310 dnl CURL_CHECK_HEADER_WS2TCPIP
    311 dnl -------------------------------------------------
    312 dnl Check for compilable and valid ws2tcpip.h header
    313 
    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], [
    317     AC_COMPILE_IFELSE([
    318       AC_LANG_PROGRAM([[
    319 #undef inline
    320 #ifndef WIN32_LEAN_AND_MEAN
    321 #define WIN32_LEAN_AND_MEAN
    322 #endif
    323 #include <windows.h>
    324 #include <winsock2.h>
    325 #include <ws2tcpip.h>
    326       ]],[[
    327 #if defined(__CYGWIN__) || defined(__CEGCC__) || defined(__MINGW32CE__)
    328         HAVE_WS2TCPIP_H shall not be defined.
    329 #else
    330         int dummy=2*IP_PKTINFO;
    331 #endif
    332       ]])
    333     ],[
    334       ac_cv_header_ws2tcpip_h="yes"
    335     ],[
    336       ac_cv_header_ws2tcpip_h="no"
    337     ])
    338   ])
    339   case "$ac_cv_header_ws2tcpip_h" in
    340     yes)
    341       AC_DEFINE_UNQUOTED(HAVE_WS2TCPIP_H, 1,
    342         [Define to 1 if you have the ws2tcpip.h header file.])
    343       ;;
    344   esac
    345 ])
    346 
    347 
    348 dnl CURL_CHECK_HEADER_WINLDAP
    349 dnl -------------------------------------------------
    350 dnl Check for compilable and valid winldap.h header
    351 
    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], [
    355     AC_COMPILE_IFELSE([
    356       AC_LANG_PROGRAM([[
    357 #undef inline
    358 #ifdef HAVE_WINDOWS_H
    359 #ifndef WIN32_LEAN_AND_MEAN
    360 #define WIN32_LEAN_AND_MEAN
    361 #endif
    362 #include <windows.h>
    363 #endif
    364 #include <winldap.h>
    365       ]],[[
    366 #if defined(__CYGWIN__) || defined(__CEGCC__)
    367         HAVE_WINLDAP_H shall not be defined.
    368 #else
    369         LDAP *ldp = ldap_init("dummy", LDAP_PORT);
    370         ULONG res = ldap_unbind(ldp);
    371 #endif
    372       ]])
    373     ],[
    374       ac_cv_header_winldap_h="yes"
    375     ],[
    376       ac_cv_header_winldap_h="no"
    377     ])
    378   ])
    379   case "$ac_cv_header_winldap_h" in
    380     yes)
    381       AC_DEFINE_UNQUOTED(HAVE_WINLDAP_H, 1,
    382         [Define to 1 if you have the winldap.h header file.])
    383       ;;
    384   esac
    385 ])
    386 
    387 
    388 dnl CURL_CHECK_HEADER_WINBER
    389 dnl -------------------------------------------------
    390 dnl Check for compilable and valid winber.h header
    391 
    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], [
    395     AC_COMPILE_IFELSE([
    396       AC_LANG_PROGRAM([[
    397 #undef inline
    398 #ifdef HAVE_WINDOWS_H
    399 #ifndef WIN32_LEAN_AND_MEAN
    400 #define WIN32_LEAN_AND_MEAN
    401 #endif
    402 #include <windows.h>
    403 #endif
    404 #include <winldap.h>
    405 #include <winber.h>
    406       ]],[[
    407 #if defined(__CYGWIN__) || defined(__CEGCC__)
    408         HAVE_WINBER_H shall not be defined.
    409 #else
    410         BERVAL *bvp = NULL;
    411         BerElement *bep = ber_init(bvp);
    412         ber_free(bep, 1);
    413 #endif
    414       ]])
    415     ],[
    416       ac_cv_header_winber_h="yes"
    417     ],[
    418       ac_cv_header_winber_h="no"
    419     ])
    420   ])
    421   case "$ac_cv_header_winber_h" in
    422     yes)
    423       AC_DEFINE_UNQUOTED(HAVE_WINBER_H, 1,
    424         [Define to 1 if you have the winber.h header file.])
    425       ;;
    426   esac
    427 ])
    428 
    429 
    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
    434 
    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], [
    438     AC_COMPILE_IFELSE([
    439       AC_LANG_PROGRAM([[
    440 #undef inline
    441 #ifdef HAVE_WINDOWS_H
    442 #ifndef WIN32_LEAN_AND_MEAN
    443 #define WIN32_LEAN_AND_MEAN
    444 #endif
    445 #include <windows.h>
    446 #else
    447 #ifdef HAVE_SYS_TYPES_H
    448 #include <sys/types.h>
    449 #endif
    450 #endif
    451 #ifndef NULL
    452 #define NULL (void *)0
    453 #endif
    454 #include <lber.h>
    455       ]],[[
    456         BerValue *bvp = NULL;
    457         BerElement *bep = ber_init(bvp);
    458         ber_free(bep, 1);
    459       ]])
    460     ],[
    461       ac_cv_header_lber_h="yes"
    462     ],[
    463       ac_cv_header_lber_h="no"
    464     ])
    465   ])
    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.])
    469     #
    470     AC_COMPILE_IFELSE([
    471       AC_LANG_PROGRAM([[
    472 #undef inline
    473 #ifdef HAVE_WINDOWS_H
    474 #ifndef WIN32_LEAN_AND_MEAN
    475 #define WIN32_LEAN_AND_MEAN
    476 #endif
    477 #include <windows.h>
    478 #else
    479 #ifdef HAVE_SYS_TYPES_H
    480 #include <sys/types.h>
    481 #endif
    482 #endif
    483 #ifndef NULL
    484 #define NULL (void *)0
    485 #endif
    486 #ifndef LDAP_DEPRECATED
    487 #define LDAP_DEPRECATED 1
    488 #endif
    489 #include <ldap.h>
    490       ]],[[
    491         BerValue *bvp = NULL;
    492         BerElement *bep = ber_init(bvp);
    493         ber_free(bep, 1);
    494       ]])
    495     ],[
    496       curl_cv_need_header_lber_h="no"
    497     ],[
    498       curl_cv_need_header_lber_h="yes"
    499     ])
    500     #
    501     case "$curl_cv_need_header_lber_h" in
    502       yes)
    503         AC_DEFINE_UNQUOTED(NEED_LBER_H, 1,
    504           [Define to 1 if you need the lber.h header file even with ldap.h])
    505         ;;
    506     esac
    507   fi
    508 ])
    509 
    510 
    511 dnl CURL_CHECK_HEADER_LDAP
    512 dnl -------------------------------------------------
    513 dnl Check for compilable and valid ldap.h header
    514 
    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], [
    518     AC_COMPILE_IFELSE([
    519       AC_LANG_PROGRAM([[
    520 #undef inline
    521 #ifdef HAVE_WINDOWS_H
    522 #ifndef WIN32_LEAN_AND_MEAN
    523 #define WIN32_LEAN_AND_MEAN
    524 #endif
    525 #include <windows.h>
    526 #else
    527 #ifdef HAVE_SYS_TYPES_H
    528 #include <sys/types.h>
    529 #endif
    530 #endif
    531 #ifndef LDAP_DEPRECATED
    532 #define LDAP_DEPRECATED 1
    533 #endif
    534 #ifdef NEED_LBER_H
    535 #include <lber.h>
    536 #endif
    537 #include <ldap.h>
    538       ]],[[
    539         LDAP *ldp = ldap_init("dummy", LDAP_PORT);
    540         int res = ldap_unbind(ldp);
    541       ]])
    542     ],[
    543       ac_cv_header_ldap_h="yes"
    544     ],[
    545       ac_cv_header_ldap_h="no"
    546     ])
    547   ])
    548   case "$ac_cv_header_ldap_h" in
    549     yes)
    550       AC_DEFINE_UNQUOTED(HAVE_LDAP_H, 1,
    551         [Define to 1 if you have the ldap.h header file.])
    552       ;;
    553   esac
    554 ])
    555 
    556 
    557 dnl CURL_CHECK_HEADER_LDAP_SSL
    558 dnl -------------------------------------------------
    559 dnl Check for compilable and valid ldap_ssl.h header
    560 
    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], [
    564     AC_COMPILE_IFELSE([
    565       AC_LANG_PROGRAM([[
    566 #undef inline
    567 #ifdef HAVE_WINDOWS_H
    568 #ifndef WIN32_LEAN_AND_MEAN
    569 #define WIN32_LEAN_AND_MEAN
    570 #endif
    571 #include <windows.h>
    572 #else
    573 #ifdef HAVE_SYS_TYPES_H
    574 #include <sys/types.h>
    575 #endif
    576 #endif
    577 #ifndef LDAP_DEPRECATED
    578 #define LDAP_DEPRECATED 1
    579 #endif
    580 #ifdef NEED_LBER_H
    581 #include <lber.h>
    582 #endif
    583 #ifdef HAVE_LDAP_H
    584 #include <ldap.h>
    585 #endif
    586 #include <ldap_ssl.h>
    587       ]],[[
    588         LDAP *ldp = ldapssl_init("dummy", LDAPS_PORT, 1);
    589       ]])
    590     ],[
    591       ac_cv_header_ldap_ssl_h="yes"
    592     ],[
    593       ac_cv_header_ldap_ssl_h="no"
    594     ])
    595   ])
    596   case "$ac_cv_header_ldap_ssl_h" in
    597     yes)
    598       AC_DEFINE_UNQUOTED(HAVE_LDAP_SSL_H, 1,
    599         [Define to 1 if you have the ldap_ssl.h header file.])
    600       ;;
    601   esac
    602 ])
    603 
    604 
    605 dnl CURL_CHECK_HEADER_LDAPSSL
    606 dnl -------------------------------------------------
    607 dnl Check for compilable and valid ldapssl.h header
    608 
    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], [
    612     AC_COMPILE_IFELSE([
    613       AC_LANG_PROGRAM([[
    614 #undef inline
    615 #ifdef HAVE_WINDOWS_H
    616 #ifndef WIN32_LEAN_AND_MEAN
    617 #define WIN32_LEAN_AND_MEAN
    618 #endif
    619 #include <windows.h>
    620 #else
    621 #ifdef HAVE_SYS_TYPES_H
    622 #include <sys/types.h>
    623 #endif
    624 #endif
    625 #ifndef NULL
    626 #define NULL (void *)0
    627 #endif
    628 #ifndef LDAP_DEPRECATED
    629 #define LDAP_DEPRECATED 1
    630 #endif
    631 #ifdef NEED_LBER_H
    632 #include <lber.h>
    633 #endif
    634 #ifdef HAVE_LDAP_H
    635 #include <ldap.h>
    636 #endif
    637 #include <ldapssl.h>
    638       ]],[[
    639         char *cert_label = NULL;
    640         LDAP *ldp = ldap_ssl_init("dummy", LDAPS_PORT, cert_label);
    641       ]])
    642     ],[
    643       ac_cv_header_ldapssl_h="yes"
    644     ],[
    645       ac_cv_header_ldapssl_h="no"
    646     ])
    647   ])
    648   case "$ac_cv_header_ldapssl_h" in
    649     yes)
    650       AC_DEFINE_UNQUOTED(HAVE_LDAPSSL_H, 1,
    651         [Define to 1 if you have the ldapssl.h header file.])
    652       ;;
    653   esac
    654 ])
    655 
    656 
    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.
    664 
    665 AC_DEFUN([CURL_CHECK_LIBS_WINLDAP], [
    666   AC_REQUIRE([CURL_CHECK_HEADER_WINBER])dnl
    667   #
    668   AC_MSG_CHECKING([for WINLDAP libraries])
    669   #
    670   u_libs=""
    671   #
    672   ifelse($1,,,[
    673     for x_lib in $1; do
    674       case "$x_lib" in
    675         -l*)
    676           l_lib="$x_lib"
    677           ;;
    678         *)
    679           l_lib="-l$x_lib"
    680           ;;
    681       esac
    682       if test -z "$u_libs"; then
    683         u_libs="$l_lib"
    684       else
    685         u_libs="$u_libs $l_lib"
    686       fi
    687     done
    688   ])
    689   #
    690   curl_cv_save_LIBS="$LIBS"
    691   curl_cv_ldap_LIBS="unknown"
    692   #
    693   for x_nlibs in '' "$u_libs" \
    694     '-lwldap32' ; do
    695     if test "$curl_cv_ldap_LIBS" = "unknown"; then
    696       if test -z "$x_nlibs"; then
    697         LIBS="$curl_cv_save_LIBS"
    698       else
    699         LIBS="$x_nlibs $curl_cv_save_LIBS"
    700       fi
    701       AC_LINK_IFELSE([
    702         AC_LANG_PROGRAM([[
    703 #undef inline
    704 #ifdef HAVE_WINDOWS_H
    705 #ifndef WIN32_LEAN_AND_MEAN
    706 #define WIN32_LEAN_AND_MEAN
    707 #endif
    708 #include <windows.h>
    709 #ifdef HAVE_WINLDAP_H
    710 #include <winldap.h>
    711 #endif
    712 #ifdef HAVE_WINBER_H
    713 #include <winber.h>
    714 #endif
    715 #endif
    716         ]],[[
    717           BERVAL *bvp = NULL;
    718           BerElement *bep = ber_init(bvp);
    719           LDAP *ldp = ldap_init("dummy", LDAP_PORT);
    720           ULONG res = ldap_unbind(ldp);
    721           ber_free(bep, 1);
    722         ]])
    723       ],[
    724         curl_cv_ldap_LIBS="$x_nlibs"
    725       ])
    726     fi
    727   done
    728   #
    729   LIBS="$curl_cv_save_LIBS"
    730   #
    731   case X-"$curl_cv_ldap_LIBS" in
    732     X-unknown)
    733       AC_MSG_RESULT([cannot find WINLDAP libraries])
    734       ;;
    735     X-)
    736       AC_MSG_RESULT([no additional lib required])
    737       ;;
    738     *)
    739       if test -z "$curl_cv_save_LIBS"; then
    740         LIBS="$curl_cv_ldap_LIBS"
    741       else
    742         LIBS="$curl_cv_ldap_LIBS $curl_cv_save_LIBS"
    743       fi
    744       AC_MSG_RESULT([$curl_cv_ldap_LIBS])
    745       ;;
    746   esac
    747   #
    748 ])
    749 
    750 
    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.
    758 
    759 AC_DEFUN([CURL_CHECK_LIBS_LDAP], [
    760   AC_REQUIRE([CURL_CHECK_HEADER_LDAP])dnl
    761   #
    762   AC_MSG_CHECKING([for LDAP libraries])
    763   #
    764   u_libs=""
    765   #
    766   ifelse($1,,,[
    767     for x_lib in $1; do
    768       case "$x_lib" in
    769         -l*)
    770           l_lib="$x_lib"
    771           ;;
    772         *)
    773           l_lib="-l$x_lib"
    774           ;;
    775       esac
    776       if test -z "$u_libs"; then
    777         u_libs="$l_lib"
    778       else
    779         u_libs="$u_libs $l_lib"
    780       fi
    781     done
    782   ])
    783   #
    784   curl_cv_save_LIBS="$LIBS"
    785   curl_cv_ldap_LIBS="unknown"
    786   #
    787   for x_nlibs in '' "$u_libs" \
    788     '-lldap' \
    789     '-llber -lldap' \
    790     '-lldap -llber' \
    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"
    796       else
    797         LIBS="$x_nlibs $curl_cv_save_LIBS"
    798       fi
    799       AC_LINK_IFELSE([
    800         AC_LANG_PROGRAM([[
    801 #undef inline
    802 #ifdef HAVE_WINDOWS_H
    803 #ifndef WIN32_LEAN_AND_MEAN
    804 #define WIN32_LEAN_AND_MEAN
    805 #endif
    806 #include <windows.h>
    807 #else
    808 #ifdef HAVE_SYS_TYPES_H
    809 #include <sys/types.h>
    810 #endif
    811 #endif
    812 #ifndef NULL
    813 #define NULL (void *)0
    814 #endif
    815 #ifndef LDAP_DEPRECATED
    816 #define LDAP_DEPRECATED 1
    817 #endif
    818 #ifdef NEED_LBER_H
    819 #include <lber.h>
    820 #endif
    821 #ifdef HAVE_LDAP_H
    822 #include <ldap.h>
    823 #endif
    824         ]],[[
    825           BerValue *bvp = NULL;
    826           BerElement *bep = ber_init(bvp);
    827           LDAP *ldp = ldap_init("dummy", LDAP_PORT);
    828           int res = ldap_unbind(ldp);
    829           ber_free(bep, 1);
    830         ]])
    831       ],[
    832         curl_cv_ldap_LIBS="$x_nlibs"
    833       ])
    834     fi
    835   done
    836   #
    837   LIBS="$curl_cv_save_LIBS"
    838   #
    839   case X-"$curl_cv_ldap_LIBS" in
    840     X-unknown)
    841       AC_MSG_RESULT([cannot find LDAP libraries])
    842       ;;
    843     X-)
    844       AC_MSG_RESULT([no additional lib required])
    845       ;;
    846     *)
    847       if test -z "$curl_cv_save_LIBS"; then
    848         LIBS="$curl_cv_ldap_LIBS"
    849       else
    850         LIBS="$curl_cv_ldap_LIBS $curl_cv_save_LIBS"
    851       fi
    852       AC_MSG_RESULT([$curl_cv_ldap_LIBS])
    853       ;;
    854   esac
    855   #
    856 ])
    857 
    858 
    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
    863 
    864 AC_DEFUN([CURL_CHECK_HEADER_MALLOC], [
    865   AC_CACHE_CHECK([for malloc.h], [ac_cv_header_malloc_h], [
    866     AC_COMPILE_IFELSE([
    867       AC_LANG_PROGRAM([[
    868 #include <malloc.h>
    869       ]],[[
    870         void *p = malloc(10);
    871         void *q = calloc(10,10);
    872         free(p);
    873         free(q);
    874       ]])
    875     ],[
    876       ac_cv_header_malloc_h="yes"
    877     ],[
    878       ac_cv_header_malloc_h="no"
    879     ])
    880   ])
    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.])
    884     #
    885     AC_COMPILE_IFELSE([
    886       AC_LANG_PROGRAM([[
    887 #include <stdlib.h>
    888       ]],[[
    889         void *p = malloc(10);
    890         void *q = calloc(10,10);
    891         free(p);
    892         free(q);
    893       ]])
    894     ],[
    895       curl_cv_need_header_malloc_h="no"
    896     ],[
    897       curl_cv_need_header_malloc_h="yes"
    898     ])
    899     #
    900     case "$curl_cv_need_header_malloc_h" in
    901       yes)
    902         AC_DEFINE_UNQUOTED(NEED_MALLOC_H, 1,
    903           [Define to 1 if you need the malloc.h header file even with stdlib.h])
    904         ;;
    905     esac
    906   fi
    907 ])
    908 
    909 
    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.
    915 
    916 AC_DEFUN([CURL_CHECK_HEADER_MEMORY], [
    917   AC_CACHE_CHECK([for memory.h], [ac_cv_header_memory_h], [
    918     AC_COMPILE_IFELSE([
    919       AC_LANG_PROGRAM([[
    920 #include <memory.h>
    921       ]],[[
    922         void *p = malloc(10);
    923         void *q = calloc(10,10);
    924         free(p);
    925         free(q);
    926       ]])
    927     ],[
    928       ac_cv_header_memory_h="yes"
    929     ],[
    930       ac_cv_header_memory_h="no"
    931     ])
    932   ])
    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.])
    936     #
    937     AC_COMPILE_IFELSE([
    938       AC_LANG_PROGRAM([[
    939 #include <stdlib.h>
    940       ]],[[
    941         void *p = malloc(10);
    942         void *q = calloc(10,10);
    943         free(p);
    944         free(q);
    945       ]])
    946     ],[
    947       curl_cv_need_header_memory_h="no"
    948     ],[
    949       curl_cv_need_header_memory_h="yes"
    950     ])
    951     #
    952     case "$curl_cv_need_header_memory_h" in
    953       yes)
    954         AC_DEFINE_UNQUOTED(NEED_MEMORY_H, 1,
    955           [Define to 1 if you need the memory.h header file even with stdlib.h])
    956         ;;
    957     esac
    958   fi
    959 ])
    960 
    961 
    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.
    972 
    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)
    976   #
    977   AC_MSG_CHECKING([for getnameinfo])
    978   AC_LINK_IFELSE([
    979     AC_LANG_FUNC_LINK_TRY([getnameinfo])
    980   ],[
    981     AC_MSG_RESULT([yes])
    982     curl_cv_getnameinfo="yes"
    983   ],[
    984     AC_MSG_RESULT([no])
    985     curl_cv_getnameinfo="no"
    986   ])
    987   #
    988   if test "$curl_cv_getnameinfo" != "yes"; then
    989     AC_MSG_CHECKING([deeper for getnameinfo])
    990     AC_LINK_IFELSE([
    991       AC_LANG_PROGRAM([[
    992       ]],[[
    993         getnameinfo();
    994       ]])
    995     ],[
    996       AC_MSG_RESULT([yes])
    997       curl_cv_getnameinfo="yes"
    998     ],[
    999       AC_MSG_RESULT([but still no])
   1000       curl_cv_getnameinfo="no"
   1001     ])
   1002   fi
   1003   #
   1004   if test "$curl_cv_getnameinfo" != "yes"; then
   1005     AC_MSG_CHECKING([deeper and deeper for getnameinfo])
   1006     AC_LINK_IFELSE([
   1007       AC_LANG_PROGRAM([[
   1008 #undef inline
   1009 #ifdef HAVE_WINDOWS_H
   1010 #ifndef WIN32_LEAN_AND_MEAN
   1011 #define WIN32_LEAN_AND_MEAN
   1012 #endif
   1013 #include <windows.h>
   1014 #ifdef HAVE_WINSOCK2_H
   1015 #include <winsock2.h>
   1016 #ifdef HAVE_WS2TCPIP_H
   1017 #include <ws2tcpip.h>
   1018 #endif
   1019 #endif
   1020 #else
   1021 #ifdef HAVE_SYS_TYPES_H
   1022 #include <sys/types.h>
   1023 #endif
   1024 #ifdef HAVE_SYS_SOCKET_H
   1025 #include <sys/socket.h>
   1026 #endif
   1027 #ifdef HAVE_NETDB_H
   1028 #include <netdb.h>
   1029 #endif
   1030 #endif
   1031       ]],[[
   1032         getnameinfo(0, 0, 0, 0, 0, 0, 0);
   1033       ]])
   1034     ],[
   1035       AC_MSG_RESULT([yes])
   1036       curl_cv_getnameinfo="yes"
   1037     ],[
   1038       AC_MSG_RESULT([but still no])
   1039       curl_cv_getnameinfo="no"
   1040     ])
   1041   fi
   1042   #
   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
   1052                 AC_COMPILE_IFELSE([
   1053                   AC_LANG_PROGRAM([[
   1054 #undef inline
   1055 #ifdef HAVE_WINDOWS_H
   1056 #ifndef WIN32_LEAN_AND_MEAN
   1057 #define WIN32_LEAN_AND_MEAN
   1058 #endif
   1059 #if (!defined(_WIN32_WINNT)) || (_WIN32_WINNT < 0x0501)
   1060 #undef _WIN32_WINNT
   1061 #define _WIN32_WINNT 0x0501
   1062 #endif
   1063 #include <windows.h>
   1064 #ifdef HAVE_WINSOCK2_H
   1065 #include <winsock2.h>
   1066 #ifdef HAVE_WS2TCPIP_H
   1067 #include <ws2tcpip.h>
   1068 #endif
   1069 #endif
   1070 #define GNICALLCONV WSAAPI
   1071 #else
   1072 #ifdef HAVE_SYS_TYPES_H
   1073 #include <sys/types.h>
   1074 #endif
   1075 #ifdef HAVE_SYS_SOCKET_H
   1076 #include <sys/socket.h>
   1077 #endif
   1078 #ifdef HAVE_NETDB_H
   1079 #include <netdb.h>
   1080 #endif
   1081 #define GNICALLCONV
   1082 #endif
   1083                     extern int GNICALLCONV getnameinfo($gni_arg1, $gni_arg2,
   1084                                            char *, $gni_arg46,
   1085                                            char *, $gni_arg46,
   1086                                            $gni_arg7);
   1087                   ]],[[
   1088                     $gni_arg2 salen=0;
   1089                     $gni_arg46 hostlen=0;
   1090                     $gni_arg46 servlen=0;
   1091                     $gni_arg7 flags=0;
   1092                     int res = getnameinfo(0, salen, 0, hostlen, 0, servlen, flags);
   1093                   ]])
   1094                 ],[
   1095                   curl_cv_func_getnameinfo_args="$gni_arg1,$gni_arg2,$gni_arg46,$gni_arg7"
   1096                 ])
   1097               fi
   1098             done
   1099           done
   1100         done
   1101       done
   1102     ]) # AC-CACHE-CHECK
   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])
   1106     else
   1107       gni_prev_IFS=$IFS; IFS=','
   1108       set dummy `echo "$curl_cv_func_getnameinfo_args" | sed 's/\*/\*/g'`
   1109       IFS=$gni_prev_IFS
   1110       shift
   1111       #
   1112       gni_qual_type_arg1=$[1]
   1113       #
   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.])
   1120       #
   1121       prev_sh_opts=$-
   1122       #
   1123       case $prev_sh_opts in
   1124         *f*)
   1125           ;;
   1126         *)
   1127           set -f
   1128           ;;
   1129       esac
   1130       #
   1131       case "$gni_qual_type_arg1" in
   1132         const*)
   1133           gni_qual_arg1=const
   1134           gni_type_arg1=`echo $gni_qual_type_arg1 | sed 's/^const //'`
   1135         ;;
   1136         *)
   1137           gni_qual_arg1=
   1138           gni_type_arg1=$gni_qual_type_arg1
   1139         ;;
   1140       esac
   1141       #
   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.])
   1146       #
   1147       case $prev_sh_opts in
   1148         *f*)
   1149           ;;
   1150         *)
   1151           set +f
   1152           ;;
   1153       esac
   1154       #
   1155       AC_DEFINE_UNQUOTED(HAVE_GETNAMEINFO, 1,
   1156         [Define to 1 if you have the getnameinfo function.])
   1157       ac_cv_func_getnameinfo="yes"
   1158     fi
   1159   fi
   1160 ])
   1161 
   1162 
   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.
   1167 
   1168 AC_DEFUN([TYPE_SOCKADDR_STORAGE],
   1169 [
   1170    AC_CHECK_TYPE([struct sockaddr_storage],
   1171         AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1,
   1172                   [if struct sockaddr_storage is defined]), ,
   1173    [
   1174 #undef inline
   1175 #ifdef HAVE_WINDOWS_H
   1176 #ifndef WIN32_LEAN_AND_MEAN
   1177 #define WIN32_LEAN_AND_MEAN
   1178 #endif
   1179 #include <windows.h>
   1180 #ifdef HAVE_WINSOCK2_H
   1181 #include <winsock2.h>
   1182 #endif
   1183 #else
   1184 #ifdef HAVE_SYS_TYPES_H
   1185 #include <sys/types.h>
   1186 #endif
   1187 #ifdef HAVE_SYS_SOCKET_H
   1188 #include <sys/socket.h>
   1189 #endif
   1190 #ifdef HAVE_NETINET_IN_H
   1191 #include <netinet/in.h>
   1192 #endif
   1193 #ifdef HAVE_ARPA_INET_H
   1194 #include <arpa/inet.h>
   1195 #endif
   1196 #endif
   1197    ])
   1198 ])
   1199 
   1200 
   1201 dnl CURL_CHECK_NI_WITHSCOPEID
   1202 dnl -------------------------------------------------
   1203 dnl Check for working NI_WITHSCOPEID in getnameinfo()
   1204 
   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)
   1210   #
   1211   AC_CACHE_CHECK([for working NI_WITHSCOPEID],
   1212     [ac_cv_working_ni_withscopeid], [
   1213     AC_RUN_IFELSE([
   1214       AC_LANG_PROGRAM([[
   1215 #ifdef HAVE_STDLIB_H
   1216 #include <stdlib.h>
   1217 #endif
   1218 #ifdef HAVE_STDIO_H
   1219 #include <stdio.h>
   1220 #endif
   1221 #ifdef HAVE_SYS_TYPES_H
   1222 #include <sys/types.h>
   1223 #endif
   1224 #ifdef HAVE_SYS_SOCKET_H
   1225 #include <sys/socket.h>
   1226 #endif
   1227 #ifdef HAVE_NETDB_H
   1228 #include <netdb.h>
   1229 #endif
   1230 #ifdef HAVE_NETINET_IN_H
   1231 #include <netinet/in.h>
   1232 #endif
   1233 #ifdef HAVE_ARPA_INET_H
   1234 #include <arpa/inet.h>
   1235 #endif
   1236       ]],[[
   1237 #if defined(NI_WITHSCOPEID) && defined(HAVE_GETNAMEINFO)
   1238 #ifdef HAVE_STRUCT_SOCKADDR_STORAGE
   1239         struct sockaddr_storage sa;
   1240 #else
   1241         unsigned char sa[256];
   1242 #endif
   1243         char hostbuf[NI_MAXHOST];
   1244         int rc;
   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);
   1249         if(fd < 0) {
   1250           perror("socket()");
   1251           return 1; /* Error creating socket */
   1252         }
   1253         rc = getsockname(fd, (GETNAMEINFO_TYPE_ARG1)&sa, &salen);
   1254         if(rc) {
   1255           perror("getsockname()");
   1256           return 2; /* Error retrieving socket name */
   1257         }
   1258         rc = getnameinfo((GETNAMEINFO_TYPE_ARG1)&sa, salen, hostbuf, hostlen, NULL, 0, flags);
   1259         if(rc) {
   1260           printf("rc = %s\n", gai_strerror(rc));
   1261           return 3; /* Error translating socket address */
   1262         }
   1263         return 0; /* Ok, NI_WITHSCOPEID works */
   1264 #else
   1265         return 4; /* Error, NI_WITHSCOPEID not defined or no getnameinfo() */
   1266 #endif
   1267       ]]) # AC-LANG-PROGRAM
   1268     ],[
   1269       # Exit code == 0. Program worked.
   1270       ac_cv_working_ni_withscopeid="yes"
   1271     ],[
   1272       # Exit code != 0. Program failed.
   1273       ac_cv_working_ni_withscopeid="no"
   1274     ],[
   1275       # Program is not run when cross-compiling. So we assume
   1276       # NI_WITHSCOPEID will work if we are able to compile it.
   1277       AC_COMPILE_IFELSE([
   1278         AC_LANG_PROGRAM([[
   1279 #include <sys/types.h>
   1280 #include <sys/socket.h>
   1281 #include <netdb.h>
   1282         ]],[[
   1283           unsigned int dummy= NI_NUMERICHOST | NI_NUMERICSERV | NI_WITHSCOPEID;
   1284         ]])
   1285       ],[
   1286         ac_cv_working_ni_withscopeid="yes"
   1287       ],[
   1288         ac_cv_working_ni_withscopeid="no"
   1289       ]) # AC-COMPILE-IFELSE
   1290     ]) # AC-RUN-IFELSE
   1291   ]) # AC-CACHE-CHECK
   1292   case "$ac_cv_working_ni_withscopeid" in
   1293     yes)
   1294       AC_DEFINE(HAVE_NI_WITHSCOPEID, 1,
   1295         [Define to 1 if NI_WITHSCOPEID exists and works.])
   1296       ;;
   1297   esac
   1298 ])
   1299 
   1300 
   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.
   1310 
   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)
   1315   #
   1316   AC_MSG_CHECKING([for recv])
   1317   AC_LINK_IFELSE([
   1318     AC_LANG_PROGRAM([[
   1319 #undef inline
   1320 #ifdef HAVE_WINDOWS_H
   1321 #ifndef WIN32_LEAN_AND_MEAN
   1322 #define WIN32_LEAN_AND_MEAN
   1323 #endif
   1324 #include <windows.h>
   1325 #ifdef HAVE_WINSOCK2_H
   1326 #include <winsock2.h>
   1327 #else
   1328 #ifdef HAVE_WINSOCK_H
   1329 #include <winsock.h>
   1330 #endif
   1331 #endif
   1332 #else
   1333 #ifdef HAVE_SYS_TYPES_H
   1334 #include <sys/types.h>
   1335 #endif
   1336 #ifdef HAVE_SYS_SOCKET_H
   1337 #include <sys/socket.h>
   1338 #endif
   1339 #endif
   1340     ]],[[
   1341       recv(0, 0, 0, 0);
   1342     ]])
   1343   ],[
   1344     AC_MSG_RESULT([yes])
   1345     curl_cv_recv="yes"
   1346   ],[
   1347     AC_MSG_RESULT([no])
   1348     curl_cv_recv="no"
   1349   ])
   1350   #
   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
   1361                   AC_COMPILE_IFELSE([
   1362                     AC_LANG_PROGRAM([[
   1363 #undef inline
   1364 #ifdef HAVE_WINDOWS_H
   1365 #ifndef WIN32_LEAN_AND_MEAN
   1366 #define WIN32_LEAN_AND_MEAN
   1367 #endif
   1368 #include <windows.h>
   1369 #ifdef HAVE_WINSOCK2_H
   1370 #include <winsock2.h>
   1371 #else
   1372 #ifdef HAVE_WINSOCK_H
   1373 #include <winsock.h>
   1374 #endif
   1375 #endif
   1376 #define RECVCALLCONV PASCAL
   1377 #else
   1378 #ifdef HAVE_SYS_TYPES_H
   1379 #include <sys/types.h>
   1380 #endif
   1381 #ifdef HAVE_SYS_SOCKET_H
   1382 #include <sys/socket.h>
   1383 #endif
   1384 #define RECVCALLCONV
   1385 #endif
   1386                       extern $recv_retv RECVCALLCONV
   1387                       recv($recv_arg1, $recv_arg2, $recv_arg3, $recv_arg4);
   1388                     ]],[[
   1389                       $recv_arg1 s=0;
   1390                       $recv_arg2 buf=0;
   1391                       $recv_arg3 len=0;
   1392                       $recv_arg4 flags=0;
   1393                       $recv_retv res = recv(s, buf, len, flags);
   1394                     ]])
   1395                   ],[
   1396                     curl_cv_func_recv_args="$recv_arg1,$recv_arg2,$recv_arg3,$recv_arg4,$recv_retv"
   1397                   ])
   1398                 fi
   1399               done
   1400             done
   1401           done
   1402         done
   1403       done
   1404     ]) # AC-CACHE-CHECK
   1405     if test "$curl_cv_func_recv_args" = "unknown"; then
   1406       AC_MSG_ERROR([Cannot find proper types to use for recv args])
   1407     else
   1408       recv_prev_IFS=$IFS; IFS=','
   1409       set dummy `echo "$curl_cv_func_recv_args" | sed 's/\*/\*/g'`
   1410       IFS=$recv_prev_IFS
   1411       shift
   1412       #
   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.])
   1423       #
   1424       AC_DEFINE_UNQUOTED(HAVE_RECV, 1,
   1425         [Define to 1 if you have the recv function.])
   1426       ac_cv_func_recv="yes"
   1427     fi
   1428   else
   1429     AC_MSG_ERROR([Unable to link function recv])
   1430   fi
   1431 ])
   1432 
   1433 
   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.
   1444 
   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)
   1449   #
   1450   AC_MSG_CHECKING([for send])
   1451   AC_LINK_IFELSE([
   1452     AC_LANG_PROGRAM([[
   1453 #undef inline
   1454 #ifdef HAVE_WINDOWS_H
   1455 #ifndef WIN32_LEAN_AND_MEAN
   1456 #define WIN32_LEAN_AND_MEAN
   1457 #endif
   1458 #include <windows.h>
   1459 #ifdef HAVE_WINSOCK2_H
   1460 #include <winsock2.h>
   1461 #else
   1462 #ifdef HAVE_WINSOCK_H
   1463 #include <winsock.h>
   1464 #endif
   1465 #endif
   1466 #else
   1467 #ifdef HAVE_SYS_TYPES_H
   1468 #include <sys/types.h>
   1469 #endif
   1470 #ifdef HAVE_SYS_SOCKET_H
   1471 #include <sys/socket.h>
   1472 #endif
   1473 #endif
   1474     ]],[[
   1475       send(0, 0, 0, 0);
   1476     ]])
   1477   ],[
   1478     AC_MSG_RESULT([yes])
   1479     curl_cv_send="yes"
   1480   ],[
   1481     AC_MSG_RESULT([no])
   1482     curl_cv_send="no"
   1483   ])
   1484   #
   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
   1495                   AC_COMPILE_IFELSE([
   1496                     AC_LANG_PROGRAM([[
   1497 #undef inline
   1498 #ifdef HAVE_WINDOWS_H
   1499 #ifndef WIN32_LEAN_AND_MEAN
   1500 #define WIN32_LEAN_AND_MEAN
   1501 #endif
   1502 #include <windows.h>
   1503 #ifdef HAVE_WINSOCK2_H
   1504 #include <winsock2.h>
   1505 #else
   1506 #ifdef HAVE_WINSOCK_H
   1507 #include <winsock.h>
   1508 #endif
   1509 #endif
   1510 #define SENDCALLCONV PASCAL
   1511 #else
   1512 #ifdef HAVE_SYS_TYPES_H
   1513 #include <sys/types.h>
   1514 #endif
   1515 #ifdef HAVE_SYS_SOCKET_H
   1516 #include <sys/socket.h>
   1517 #endif
   1518 #define SENDCALLCONV
   1519 #endif
   1520                       extern $send_retv SENDCALLCONV
   1521                       send($send_arg1, $send_arg2, $send_arg3, $send_arg4);
   1522                     ]],[[
   1523                       $send_arg1 s=0;
   1524                       $send_arg3 len=0;
   1525                       $send_arg4 flags=0;
   1526                       $send_retv res = send(s, 0, len, flags);
   1527                     ]])
   1528                   ],[
   1529                     curl_cv_func_send_args="$send_arg1,$send_arg2,$send_arg3,$send_arg4,$send_retv"
   1530                   ])
   1531                 fi
   1532               done
   1533             done
   1534           done
   1535         done
   1536       done
   1537     ]) # AC-CACHE-CHECK
   1538     if test "$curl_cv_func_send_args" = "unknown"; then
   1539       AC_MSG_ERROR([Cannot find proper types to use for send args])
   1540     else
   1541       send_prev_IFS=$IFS; IFS=','
   1542       set dummy `echo "$curl_cv_func_send_args" | sed 's/\*/\*/g'`
   1543       IFS=$send_prev_IFS
   1544       shift
   1545       #
   1546       send_qual_type_arg2=$[2]
   1547       #
   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.])
   1556       #
   1557       prev_sh_opts=$-
   1558       #
   1559       case $prev_sh_opts in
   1560         *f*)
   1561           ;;
   1562         *)
   1563           set -f
   1564           ;;
   1565       esac
   1566       #
   1567       case "$send_qual_type_arg2" in
   1568         const*)
   1569           send_qual_arg2=const
   1570           send_type_arg2=`echo $send_qual_type_arg2 | sed 's/^const //'`
   1571         ;;
   1572         *)
   1573           send_qual_arg2=
   1574           send_type_arg2=$send_qual_type_arg2
   1575         ;;
   1576       esac
   1577       #
   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.])
   1582       #
   1583       case $prev_sh_opts in
   1584         *f*)
   1585           ;;
   1586         *)
   1587           set +f
   1588           ;;
   1589       esac
   1590       #
   1591       AC_DEFINE_UNQUOTED(HAVE_SEND, 1,
   1592         [Define to 1 if you have the send function.])
   1593       ac_cv_func_send="yes"
   1594     fi
   1595   else
   1596     AC_MSG_ERROR([Unable to link function send])
   1597   fi
   1598 ])
   1599 
   1600 dnl CURL_CHECK_MSG_NOSIGNAL
   1601 dnl -------------------------------------------------
   1602 dnl Check for MSG_NOSIGNAL
   1603 
   1604 AC_DEFUN([CURL_CHECK_MSG_NOSIGNAL], [
   1605   AC_CHECK_HEADERS(sys/types.h sys/socket.h)
   1606   AC_CACHE_CHECK([for MSG_NOSIGNAL], [ac_cv_msg_nosignal], [
   1607     AC_COMPILE_IFELSE([
   1608       AC_LANG_PROGRAM([[
   1609 #undef inline
   1610 #ifdef HAVE_WINDOWS_H
   1611 #ifndef WIN32_LEAN_AND_MEAN
   1612 #define WIN32_LEAN_AND_MEAN
   1613 #endif
   1614 #include <windows.h>
   1615 #ifdef HAVE_WINSOCK2_H
   1616 #include <winsock2.h>
   1617 #else
   1618 #ifdef HAVE_WINSOCK_H
   1619 #include <winsock.h>
   1620 #endif
   1621 #endif
   1622 #else
   1623 #ifdef HAVE_SYS_TYPES_H
   1624 #include <sys/types.h>
   1625 #endif
   1626 #ifdef HAVE_SYS_SOCKET_H
   1627 #include <sys/socket.h>
   1628 #endif
   1629 #endif
   1630       ]],[[
   1631         int flag=MSG_NOSIGNAL;
   1632       ]])
   1633     ],[
   1634       ac_cv_msg_nosignal="yes"
   1635     ],[
   1636       ac_cv_msg_nosignal="no"
   1637     ])
   1638   ])
   1639   case "$ac_cv_msg_nosignal" in
   1640     yes)
   1641       AC_DEFINE_UNQUOTED(HAVE_MSG_NOSIGNAL, 1,
   1642         [Define to 1 if you have the MSG_NOSIGNAL flag.])
   1643       ;;
   1644   esac
   1645 ])
   1646 
   1647 
   1648 dnl CURL_CHECK_STRUCT_TIMEVAL
   1649 dnl -------------------------------------------------
   1650 dnl Check for timeval struct
   1651 
   1652 AC_DEFUN([CURL_CHECK_STRUCT_TIMEVAL], [
   1653   AC_REQUIRE([AC_HEADER_TIME])dnl
   1654   AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK])dnl
   1655   AC_REQUIRE([CURL_CHECK_HEADER_WINSOCK2])dnl
   1656   AC_CHECK_HEADERS(sys/types.h sys/time.h time.h sys/socket.h)
   1657   AC_CACHE_CHECK([for struct timeval], [ac_cv_struct_timeval], [
   1658     AC_COMPILE_IFELSE([
   1659       AC_LANG_PROGRAM([[
   1660 #undef inline
   1661 #ifdef HAVE_WINDOWS_H
   1662 #ifndef WIN32_LEAN_AND_MEAN
   1663 #define WIN32_LEAN_AND_MEAN
   1664 #endif
   1665 #include <windows.h>
   1666 #ifdef HAVE_WINSOCK2_H
   1667 #include <winsock2.h>
   1668 #else
   1669 #ifdef HAVE_WINSOCK_H
   1670 #include <winsock.h>
   1671 #endif
   1672 #endif
   1673 #endif
   1674 #ifdef HAVE_SYS_TYPES_H
   1675 #include <sys/types.h>
   1676 #endif
   1677 #ifdef HAVE_SYS_TIME_H
   1678 #include <sys/time.h>
   1679 #ifdef TIME_WITH_SYS_TIME
   1680 #include <time.h>
   1681 #endif
   1682 #else
   1683 #ifdef HAVE_TIME_H
   1684 #include <time.h>
   1685 #endif
   1686 #endif
   1687 #ifdef HAVE_SYS_SOCKET_H
   1688 #include <sys/socket.h>
   1689 #endif
   1690       ]],[[
   1691         struct timeval ts;
   1692         ts.tv_sec  = 0;
   1693         ts.tv_usec = 0;
   1694       ]])
   1695     ],[
   1696       ac_cv_struct_timeval="yes"
   1697     ],[
   1698       ac_cv_struct_timeval="no"
   1699     ])
   1700   ])
   1701   case "$ac_cv_struct_timeval" in
   1702     yes)
   1703       AC_DEFINE_UNQUOTED(HAVE_STRUCT_TIMEVAL, 1,
   1704         [Define to 1 if you have the timeval struct.])
   1705       ;;
   1706   esac
   1707 ])
   1708 
   1709 
   1710 dnl TYPE_SIG_ATOMIC_T
   1711 dnl -------------------------------------------------
   1712 dnl Check if the sig_atomic_t type is available, and
   1713 dnl verify if it is already defined as volatile.
   1714 
   1715 AC_DEFUN([TYPE_SIG_ATOMIC_T], [
   1716   AC_CHECK_HEADERS(signal.h)
   1717   AC_CHECK_TYPE([sig_atomic_t],[
   1718     AC_DEFINE(HAVE_SIG_ATOMIC_T, 1,
   1719       [Define to 1 if sig_atomic_t is an available typedef.])
   1720   ], ,[
   1721 #ifdef HAVE_SIGNAL_H
   1722 #include <signal.h>
   1723 #endif
   1724   ])
   1725   case "$ac_cv_type_sig_atomic_t" in
   1726     yes)
   1727       #
   1728       AC_MSG_CHECKING([if sig_atomic_t is already defined as volatile])
   1729       AC_LINK_IFELSE([
   1730         AC_LANG_PROGRAM([[
   1731 #ifdef HAVE_SIGNAL_H
   1732 #include <signal.h>
   1733 #endif
   1734         ]],[[
   1735           static volatile sig_atomic_t dummy = 0;
   1736         ]])
   1737       ],[
   1738         AC_MSG_RESULT([no])
   1739         ac_cv_sig_atomic_t_volatile="no"
   1740       ],[
   1741         AC_MSG_RESULT([yes])
   1742         ac_cv_sig_atomic_t_volatile="yes"
   1743       ])
   1744       #
   1745       if test "$ac_cv_sig_atomic_t_volatile" = "yes"; then
   1746         AC_DEFINE(HAVE_SIG_ATOMIC_T_VOLATILE, 1,
   1747           [Define to 1 if sig_atomic_t is already defined as volatile.])
   1748       fi
   1749       ;;
   1750   esac
   1751 ])
   1752 
   1753 
   1754 dnl TYPE_IN_ADDR_T
   1755 dnl -------------------------------------------------
   1756 dnl Check for in_addr_t: it is used to receive the return code of inet_addr()
   1757 dnl and a few other things.
   1758 
   1759 AC_DEFUN([TYPE_IN_ADDR_T], [
   1760   AC_CHECK_TYPE([in_addr_t], ,[
   1761     dnl in_addr_t not available
   1762     AC_CACHE_CHECK([for in_addr_t equivalent],
   1763       [curl_cv_in_addr_t_equiv], [
   1764       curl_cv_in_addr_t_equiv="unknown"
   1765       for t in "unsigned long" int size_t unsigned long; do
   1766         if test "$curl_cv_in_addr_t_equiv" = "unknown"; then
   1767           AC_LINK_IFELSE([
   1768             AC_LANG_PROGRAM([[
   1769 #undef inline
   1770 #ifdef HAVE_WINDOWS_H
   1771 #ifndef WIN32_LEAN_AND_MEAN
   1772 #define WIN32_LEAN_AND_MEAN
   1773 #endif
   1774 #include <windows.h>
   1775 #ifdef HAVE_WINSOCK2_H
   1776 #include <winsock2.h>
   1777 #else
   1778 #ifdef HAVE_WINSOCK_H
   1779 #include <winsock.h>
   1780 #endif
   1781 #endif
   1782 #else
   1783 #ifdef HAVE_SYS_TYPES_H
   1784 #include <sys/types.h>
   1785 #endif
   1786 #ifdef HAVE_SYS_SOCKET_H
   1787 #include <sys/socket.h>
   1788 #endif
   1789 #ifdef HAVE_NETINET_IN_H
   1790 #include <netinet/in.h>
   1791 #endif
   1792 #ifdef HAVE_ARPA_INET_H
   1793 #include <arpa/inet.h>
   1794 #endif
   1795 #endif
   1796             ]],[[
   1797               $t data = inet_addr ("1.2.3.4");
   1798             ]])
   1799           ],[
   1800             curl_cv_in_addr_t_equiv="$t"
   1801           ])
   1802         fi
   1803       done
   1804     ])
   1805     case "$curl_cv_in_addr_t_equiv" in
   1806       unknown)
   1807         AC_MSG_ERROR([Cannot find a type to use in place of in_addr_t])
   1808         ;;
   1809       *)
   1810         AC_DEFINE_UNQUOTED(in_addr_t, $curl_cv_in_addr_t_equiv,
   1811           [Type to use in place of in_addr_t when system does not provide it.])
   1812         ;;
   1813     esac
   1814   ],[
   1815 #undef inline
   1816 #ifdef HAVE_WINDOWS_H
   1817 #ifndef WIN32_LEAN_AND_MEAN
   1818 #define WIN32_LEAN_AND_MEAN
   1819 #endif
   1820 #include <windows.h>
   1821 #ifdef HAVE_WINSOCK2_H
   1822 #include <winsock2.h>
   1823 #else
   1824 #ifdef HAVE_WINSOCK_H
   1825 #include <winsock.h>
   1826 #endif
   1827 #endif
   1828 #else
   1829 #ifdef HAVE_SYS_TYPES_H
   1830 #include <sys/types.h>
   1831 #endif
   1832 #ifdef HAVE_SYS_SOCKET_H
   1833 #include <sys/socket.h>
   1834 #endif
   1835 #ifdef HAVE_NETINET_IN_H
   1836 #include <netinet/in.h>
   1837 #endif
   1838 #ifdef HAVE_ARPA_INET_H
   1839 #include <arpa/inet.h>
   1840 #endif
   1841 #endif
   1842   ])
   1843 ])
   1844 
   1845 
   1846 dnl CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC
   1847 dnl -------------------------------------------------
   1848 dnl Check if monotonic clock_gettime is available.
   1849 
   1850 AC_DEFUN([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC], [
   1851   AC_REQUIRE([AC_HEADER_TIME])dnl
   1852   AC_CHECK_HEADERS(sys/types.h sys/time.h time.h)
   1853   AC_MSG_CHECKING([for monotonic clock_gettime])
   1854   AC_COMPILE_IFELSE([
   1855     AC_LANG_PROGRAM([[
   1856 #ifdef HAVE_SYS_TYPES_H
   1857 #include <sys/types.h>
   1858 #endif
   1859 #ifdef HAVE_SYS_TIME_H
   1860 #include <sys/time.h>
   1861 #ifdef TIME_WITH_SYS_TIME
   1862 #include <time.h>
   1863 #endif
   1864 #else
   1865 #ifdef HAVE_TIME_H
   1866 #include <time.h>
   1867 #endif
   1868 #endif
   1869     ]],[[
   1870       struct timespec ts;
   1871       (void)clock_gettime(CLOCK_MONOTONIC, &ts);
   1872     ]])
   1873   ],[
   1874     AC_MSG_RESULT([yes])
   1875     ac_cv_func_clock_gettime="yes"
   1876   ],[
   1877     AC_MSG_RESULT([no])
   1878     ac_cv_func_clock_gettime="no"
   1879   ])
   1880   dnl Definition of HAVE_CLOCK_GETTIME_MONOTONIC is intentionally postponed
   1881   dnl until library linking and run-time checks for clock_gettime succeed.
   1882 ])
   1883 
   1884 
   1885 dnl CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
   1886 dnl -------------------------------------------------
   1887 dnl If monotonic clock_gettime is available then,
   1888 dnl check and prepended to LIBS any needed libraries.
   1889 
   1890 AC_DEFUN([CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC], [
   1891   AC_REQUIRE([CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC])dnl
   1892   #
   1893   if test "$ac_cv_func_clock_gettime" = "yes"; then
   1894     #
   1895     AC_MSG_CHECKING([for clock_gettime in libraries])
   1896     #
   1897     curl_cv_save_LIBS="$LIBS"
   1898     curl_cv_gclk_LIBS="unknown"
   1899     #
   1900     for x_xlibs in '' '-lrt' '-lposix4' ; do
   1901       if test "$curl_cv_gclk_LIBS" = "unknown"; then
   1902         if test -z "$x_xlibs"; then
   1903           LIBS="$curl_cv_save_LIBS"
   1904         else
   1905           LIBS="$x_xlibs $curl_cv_save_LIBS"
   1906         fi
   1907         AC_LINK_IFELSE([
   1908           AC_LANG_PROGRAM([[
   1909 #ifdef HAVE_SYS_TYPES_H
   1910 #include <sys/types.h>
   1911 #endif
   1912 #ifdef HAVE_SYS_TIME_H
   1913 #include <sys/time.h>
   1914 #ifdef TIME_WITH_SYS_TIME
   1915 #include <time.h>
   1916 #endif
   1917 #else
   1918 #ifdef HAVE_TIME_H
   1919 #include <time.h>
   1920 #endif
   1921 #endif
   1922           ]],[[
   1923             struct timespec ts;
   1924             (void)clock_gettime(CLOCK_MONOTONIC, &ts);
   1925           ]])
   1926         ],[
   1927           curl_cv_gclk_LIBS="$x_xlibs"
   1928         ])
   1929       fi
   1930     done
   1931     #
   1932     LIBS="$curl_cv_save_LIBS"
   1933     #
   1934     case X-"$curl_cv_gclk_LIBS" in
   1935       X-unknown)
   1936         AC_MSG_RESULT([cannot find clock_gettime])
   1937         AC_MSG_WARN([HAVE_CLOCK_GETTIME_MONOTONIC will not be defined])
   1938         ac_cv_func_clock_gettime="no"
   1939         ;;
   1940       X-)
   1941         AC_MSG_RESULT([no additional lib required])
   1942         ac_cv_func_clock_gettime="yes"
   1943         ;;
   1944       *)
   1945         if test -z "$curl_cv_save_LIBS"; then
   1946           LIBS="$curl_cv_gclk_LIBS"
   1947         else
   1948           LIBS="$curl_cv_gclk_LIBS $curl_cv_save_LIBS"
   1949         fi
   1950         AC_MSG_RESULT([$curl_cv_gclk_LIBS])
   1951         ac_cv_func_clock_gettime="yes"
   1952         ;;
   1953     esac
   1954     #
   1955     dnl only do runtime verification when not cross-compiling
   1956     if test "x$cross_compiling" != "xyes" &&
   1957       test "$ac_cv_func_clock_gettime" = "yes"; then
   1958       AC_MSG_CHECKING([if monotonic clock_gettime works])
   1959       AC_RUN_IFELSE([
   1960         AC_LANG_PROGRAM([[
   1961 #ifdef HAVE_STDLIB_H
   1962 #include <stdlib.h>
   1963 #endif
   1964 #ifdef HAVE_SYS_TYPES_H
   1965 #include <sys/types.h>
   1966 #endif
   1967 #ifdef HAVE_SYS_TIME_H
   1968 #include <sys/time.h>
   1969 #ifdef TIME_WITH_SYS_TIME
   1970 #include <time.h>
   1971 #endif
   1972 #else
   1973 #ifdef HAVE_TIME_H
   1974 #include <time.h>
   1975 #endif
   1976 #endif
   1977         ]],[[
   1978           struct timespec ts;
   1979           if (0 == clock_gettime(CLOCK_MONOTONIC, &ts))
   1980             exit(0);
   1981           else
   1982             exit(1);
   1983         ]])
   1984       ],[
   1985         AC_MSG_RESULT([yes])
   1986       ],[
   1987         AC_MSG_RESULT([no])
   1988         AC_MSG_WARN([HAVE_CLOCK_GETTIME_MONOTONIC will not be defined])
   1989         ac_cv_func_clock_gettime="no"
   1990         LIBS="$curl_cv_save_LIBS"
   1991       ])
   1992     fi
   1993     #
   1994     case "$ac_cv_func_clock_gettime" in
   1995       yes)
   1996         AC_DEFINE_UNQUOTED(HAVE_CLOCK_GETTIME_MONOTONIC, 1,
   1997           [Define to 1 if you have the clock_gettime function and monotonic timer.])
   1998         ;;
   1999     esac
   2000     #
   2001   fi
   2002   #
   2003 ])
   2004 
   2005 
   2006 dnl CURL_CHECK_LIBS_CONNECT
   2007 dnl -------------------------------------------------
   2008 dnl Verify if network connect function is already available
   2009 dnl using current libraries or if another one is required.
   2010 
   2011 AC_DEFUN([CURL_CHECK_LIBS_CONNECT], [
   2012   AC_REQUIRE([CURL_INCLUDES_WINSOCK2])dnl
   2013   AC_MSG_CHECKING([for connect in libraries])
   2014   tst_connect_save_LIBS="$LIBS"
   2015   tst_connect_need_LIBS="unknown"
   2016   for tst_lib in '' '-lsocket' ; do
   2017     if test "$tst_connect_need_LIBS" = "unknown"; then
   2018       LIBS="$tst_lib $tst_connect_save_LIBS"
   2019       AC_LINK_IFELSE([
   2020         AC_LANG_PROGRAM([[
   2021           $curl_includes_winsock2
   2022           #ifndef HAVE_WINDOWS_H
   2023             int connect(int, void*, int);
   2024           #endif
   2025         ]],[[
   2026           if(0 != connect(0, 0, 0))
   2027             return 1;
   2028         ]])
   2029       ],[
   2030         tst_connect_need_LIBS="$tst_lib"
   2031       ])
   2032     fi
   2033   done
   2034   LIBS="$tst_connect_save_LIBS"
   2035   #
   2036   case X-"$tst_connect_need_LIBS" in
   2037     X-unknown)
   2038       AC_MSG_RESULT([cannot find connect])
   2039       AC_MSG_ERROR([cannot find connect function in libraries.])
   2040       ;;
   2041     X-)
   2042       AC_MSG_RESULT([yes])
   2043       ;;
   2044     *)
   2045       AC_MSG_RESULT([$tst_connect_need_LIBS])
   2046       LIBS="$tst_connect_need_LIBS $tst_connect_save_LIBS"
   2047       ;;
   2048   esac
   2049 ])
   2050 
   2051 
   2052 dnl CURL_DEFINE_UNQUOTED (VARIABLE, [VALUE])
   2053 dnl -------------------------------------------------
   2054 dnl Like AC_DEFINE_UNQUOTED this macro will define a C preprocessor
   2055 dnl symbol that can be further used in custom template configuration
   2056 dnl files. This macro, unlike AC_DEFINE_UNQUOTED, does not use a third
   2057 dnl argument for the description. Symbol definitions done with this
   2058 dnl macro are intended to be exclusively used in handcrafted *.h.in
   2059 dnl template files. Contrary to what AC_DEFINE_UNQUOTED does, this one
   2060 dnl prevents autoheader generation and insertion of symbol template
   2061 dnl stub and definition into the first configuration header file. Do
   2062 dnl not use this macro as a replacement for AC_DEFINE_UNQUOTED, each
   2063 dnl one serves different functional needs.
   2064 
   2065 AC_DEFUN([CURL_DEFINE_UNQUOTED], [
   2066 cat >>confdefs.h <<_EOF
   2067 [@%:@define] $1 ifelse($#, 2, [$2], 1)
   2068 _EOF
   2069 ])
   2070 
   2071 
   2072 dnl CURL_CONFIGURE_LONG
   2073 dnl -------------------------------------------------
   2074 dnl Find out the size of long as reported by sizeof() and define
   2075 dnl CURL_SIZEOF_LONG as appropriate to be used in template file
   2076 dnl include/curl/curlbuild.h.in to properly configure the library.
   2077 dnl The size of long is a build time characteristic and as such
   2078 dnl must be recorded in curlbuild.h
   2079 
   2080 AC_DEFUN([CURL_CONFIGURE_LONG], [
   2081   if test -z "$ac_cv_sizeof_long" ||
   2082     test "$ac_cv_sizeof_long" -eq "0"; then
   2083     AC_MSG_ERROR([cannot find out size of long.])
   2084   fi
   2085   CURL_DEFINE_UNQUOTED([CURL_SIZEOF_LONG], [$ac_cv_sizeof_long])
   2086 ])
   2087 
   2088 
   2089 dnl CURL_CONFIGURE_CURL_SOCKLEN_T
   2090 dnl -------------------------------------------------
   2091 dnl Find out suitable curl_socklen_t data type definition and size, making
   2092 dnl appropriate definitions for template file include/curl/curlbuild.h.in
   2093 dnl to properly configure and use the library.
   2094 dnl
   2095 dnl The need for the curl_socklen_t definition arises mainly to properly
   2096 dnl interface HP-UX systems which on one hand have a typedef'ed socklen_t
   2097 dnl data type which is 32 or 64-Bit wide depending on the data model being
   2098 dnl used, and that on the other hand is only actually used when interfacing
   2099 dnl the X/Open sockets provided in the xnet library.
   2100 
   2101 AC_DEFUN([CURL_CONFIGURE_CURL_SOCKLEN_T], [
   2102   AC_REQUIRE([CURL_INCLUDES_WS2TCPIP])dnl
   2103   AC_REQUIRE([CURL_INCLUDES_SYS_SOCKET])dnl
   2104   AC_REQUIRE([CURL_PREPROCESS_CALLCONV])dnl
   2105   #
   2106   AC_BEFORE([$0], [CURL_CONFIGURE_PULL_SYS_POLL])dnl
   2107   #
   2108   AC_MSG_CHECKING([for curl_socklen_t data type])
   2109   curl_typeof_curl_socklen_t="unknown"
   2110   for arg1 in int SOCKET; do
   2111     for arg2 in 'struct sockaddr' void; do
   2112       for t in socklen_t int size_t 'unsigned int' long 'unsigned long' void; do
   2113         if test "$curl_typeof_curl_socklen_t" = "unknown"; then
   2114           AC_COMPILE_IFELSE([
   2115             AC_LANG_PROGRAM([[
   2116               $curl_includes_ws2tcpip
   2117               $curl_includes_sys_socket
   2118               $curl_preprocess_callconv
   2119               extern int FUNCALLCONV getpeername($arg1, $arg2 *, $t *);
   2120             ]],[[
   2121               $t *lenptr = 0;
   2122               if(0 != getpeername(0, 0, lenptr))
   2123                 return 1;
   2124             ]])
   2125           ],[
   2126             curl_typeof_curl_socklen_t="$t"
   2127           ])
   2128         fi
   2129       done
   2130     done
   2131   done
   2132   for t in socklen_t int; do
   2133     if test "$curl_typeof_curl_socklen_t" = "void"; then
   2134       AC_COMPILE_IFELSE([
   2135         AC_LANG_PROGRAM([[
   2136           $curl_includes_sys_socket
   2137           typedef $t curl_socklen_t;
   2138         ]],[[
   2139           curl_socklen_t dummy;
   2140         ]])
   2141       ],[
   2142         curl_typeof_curl_socklen_t="$t"
   2143       ])
   2144     fi
   2145   done
   2146   AC_MSG_RESULT([$curl_typeof_curl_socklen_t])
   2147   if test "$curl_typeof_curl_socklen_t" = "void" ||
   2148     test "$curl_typeof_curl_socklen_t" = "unknown"; then
   2149     AC_MSG_ERROR([cannot find data type for curl_socklen_t.])
   2150   fi
   2151   #
   2152   AC_MSG_CHECKING([size of curl_socklen_t])
   2153   curl_sizeof_curl_socklen_t="unknown"
   2154   curl_pull_headers_socklen_t="unknown"
   2155   if test "$ac_cv_header_ws2tcpip_h" = "yes"; then
   2156     tst_pull_header_checks='none ws2tcpip'
   2157     tst_size_checks='4'
   2158   else
   2159     tst_pull_header_checks='none systypes syssocket'
   2160     tst_size_checks='4 8 2'
   2161   fi
   2162   for tst_size in $tst_size_checks; do
   2163     for tst_pull_headers in $tst_pull_header_checks; do
   2164       if test "$curl_sizeof_curl_socklen_t" = "unknown"; then
   2165         case $tst_pull_headers in
   2166           ws2tcpip)
   2167             tmp_includes="$curl_includes_ws2tcpip"
   2168             ;;
   2169           systypes)
   2170             tmp_includes="$curl_includes_sys_types"
   2171             ;;
   2172           syssocket)
   2173             tmp_includes="$curl_includes_sys_socket"
   2174             ;;
   2175           *)
   2176             tmp_includes=""
   2177             ;;
   2178         esac
   2179         AC_COMPILE_IFELSE([
   2180           AC_LANG_PROGRAM([[
   2181             $tmp_includes
   2182             typedef $curl_typeof_curl_socklen_t curl_socklen_t;
   2183             typedef char dummy_arr[sizeof(curl_socklen_t) == $tst_size ? 1 : -1];
   2184           ]],[[
   2185             curl_socklen_t dummy;
   2186           ]])
   2187         ],[
   2188           curl_sizeof_curl_socklen_t="$tst_size"
   2189           curl_pull_headers_socklen_t="$tst_pull_headers"
   2190         ])
   2191       fi
   2192     done
   2193   done
   2194   AC_MSG_RESULT([$curl_sizeof_curl_socklen_t])
   2195   if test "$curl_sizeof_curl_socklen_t" = "unknown"; then
   2196     AC_MSG_ERROR([cannot find out size of curl_socklen_t.])
   2197   fi
   2198   #
   2199   case $curl_pull_headers_socklen_t in
   2200     ws2tcpip)
   2201       CURL_DEFINE_UNQUOTED([CURL_PULL_WS2TCPIP_H])
   2202       ;;
   2203     systypes)
   2204       CURL_DEFINE_UNQUOTED([CURL_PULL_SYS_TYPES_H])
   2205       ;;
   2206     syssocket)
   2207       CURL_DEFINE_UNQUOTED([CURL_PULL_SYS_TYPES_H])
   2208       CURL_DEFINE_UNQUOTED([CURL_PULL_SYS_SOCKET_H])
   2209       ;;
   2210   esac
   2211   CURL_DEFINE_UNQUOTED([CURL_TYPEOF_CURL_SOCKLEN_T], [$curl_typeof_curl_socklen_t])
   2212   CURL_DEFINE_UNQUOTED([CURL_SIZEOF_CURL_SOCKLEN_T], [$curl_sizeof_curl_socklen_t])
   2213 ])
   2214 
   2215 
   2216 dnl CURL_CONFIGURE_PULL_SYS_POLL
   2217 dnl -------------------------------------------------
   2218 dnl Find out if system header file sys/poll.h must be included by the
   2219 dnl external interface, making appropriate definitions for template file
   2220 dnl include/curl/curlbuild.h.in to properly configure and use the library.
   2221 dnl
   2222 dnl The need for the sys/poll.h inclusion arises mainly to properly
   2223 dnl interface AIX systems which define macros 'events' and 'revents'.
   2224 
   2225 AC_DEFUN([CURL_CONFIGURE_PULL_SYS_POLL], [
   2226   AC_REQUIRE([CURL_INCLUDES_POLL])dnl
   2227   #
   2228   tst_poll_events_macro_defined="unknown"
   2229   #
   2230   AC_COMPILE_IFELSE([
   2231     AC_LANG_PROGRAM([[
   2232       $curl_includes_poll
   2233     ]],[[
   2234 #if defined(events) || defined(revents)
   2235       return 0;
   2236 #else
   2237       force compilation error
   2238 #endif
   2239     ]])
   2240   ],[
   2241     tst_poll_events_macro_defined="yes"
   2242   ],[
   2243     tst_poll_events_macro_defined="no"
   2244   ])
   2245   #
   2246   if test "$tst_poll_events_macro_defined" = "yes"; then
   2247     if test "x$ac_cv_header_sys_poll_h" = "xyes"; then
   2248       CURL_DEFINE_UNQUOTED([CURL_PULL_SYS_POLL_H])
   2249     fi
   2250   fi
   2251   #
   2252 ])
   2253 
   2254 
   2255 dnl CURL_CHECK_FUNC_SELECT
   2256 dnl -------------------------------------------------
   2257 dnl Test if the socket select() function is available,
   2258 dnl and check its return type and the types of its
   2259 dnl arguments. If the function succeeds HAVE_SELECT
   2260 dnl will be defined, defining the types of the
   2261 dnl arguments in SELECT_TYPE_ARG1, SELECT_TYPE_ARG234
   2262 dnl and SELECT_TYPE_ARG5, defining the type of the
   2263 dnl function return value in SELECT_TYPE_RETV, and
   2264 dnl also defining the type qualifier of fifth argument
   2265 dnl in SELECT_QUAL_ARG5.
   2266 
   2267 AC_DEFUN([CURL_CHECK_FUNC_SELECT], [
   2268   AC_REQUIRE([CURL_CHECK_STRUCT_TIMEVAL])dnl
   2269   AC_CHECK_HEADERS(sys/select.h sys/socket.h)
   2270   #
   2271   AC_MSG_CHECKING([for select])
   2272   AC_LINK_IFELSE([
   2273     AC_LANG_PROGRAM([[
   2274 #undef inline
   2275 #ifdef HAVE_WINDOWS_H
   2276 #ifndef WIN32_LEAN_AND_MEAN
   2277 #define WIN32_LEAN_AND_MEAN
   2278 #endif
   2279 #include <windows.h>
   2280 #ifdef HAVE_WINSOCK2_H
   2281 #include <winsock2.h>
   2282 #else
   2283 #ifdef HAVE_WINSOCK_H
   2284 #include <winsock.h>
   2285 #endif
   2286 #endif
   2287 #endif
   2288 #ifdef HAVE_SYS_TYPES_H
   2289 #include <sys/types.h>
   2290 #endif
   2291 #ifdef HAVE_SYS_TIME_H
   2292 #include <sys/time.h>
   2293 #ifdef TIME_WITH_SYS_TIME
   2294 #include <time.h>
   2295 #endif
   2296 #else
   2297 #ifdef HAVE_TIME_H
   2298 #include <time.h>
   2299 #endif
   2300 #endif
   2301 #ifndef HAVE_WINDOWS_H
   2302 #ifdef HAVE_SYS_SELECT_H
   2303 #include <sys/select.h>
   2304 #endif
   2305 #ifdef HAVE_SYS_SOCKET_H
   2306 #include <sys/socket.h>
   2307 #endif
   2308 #endif
   2309     ]],[[
   2310       select(0, 0, 0, 0, 0);
   2311     ]])
   2312   ],[
   2313     AC_MSG_RESULT([yes])
   2314     curl_cv_select="yes"
   2315   ],[
   2316     AC_MSG_RESULT([no])
   2317     curl_cv_select="no"
   2318   ])
   2319   #
   2320   if test "$curl_cv_select" = "yes"; then
   2321     AC_CACHE_CHECK([types of args and return type for select],
   2322       [curl_cv_func_select_args], [
   2323       curl_cv_func_select_args="unknown"
   2324       for sel_retv in 'int' 'ssize_t'; do
   2325         for sel_arg1 in 'int' 'ssize_t' 'size_t' 'unsigned long int' 'unsigned int'; do
   2326           for sel_arg234 in 'fd_set *' 'int *' 'void *'; do
   2327             for sel_arg5 in 'struct timeval *' 'const struct timeval *'; do
   2328               if test "$curl_cv_func_select_args" = "unknown"; then
   2329                 AC_COMPILE_IFELSE([
   2330                   AC_LANG_PROGRAM([[
   2331 #undef inline
   2332 #ifdef HAVE_WINDOWS_H
   2333 #ifndef WIN32_LEAN_AND_MEAN
   2334 #define WIN32_LEAN_AND_MEAN
   2335 #endif
   2336 #include <windows.h>
   2337 #ifdef HAVE_WINSOCK2_H
   2338 #include <winsock2.h>
   2339 #else
   2340 #ifdef HAVE_WINSOCK_H
   2341 #include <winsock.h>
   2342 #endif
   2343 #endif
   2344 #define SELECTCALLCONV PASCAL
   2345 #endif
   2346 #ifdef HAVE_SYS_TYPES_H
   2347 #include <sys/types.h>
   2348 #endif
   2349 #ifdef HAVE_SYS_TIME_H
   2350 #include <sys/time.h>
   2351 #ifdef TIME_WITH_SYS_TIME
   2352 #include <time.h>
   2353 #endif
   2354 #else
   2355 #ifdef HAVE_TIME_H
   2356 #include <time.h>
   2357 #endif
   2358 #endif
   2359 #ifndef HAVE_WINDOWS_H
   2360 #ifdef HAVE_SYS_SELECT_H
   2361 #include <sys/select.h>
   2362 #endif
   2363 #ifdef HAVE_SYS_SOCKET_H
   2364 #include <sys/socket.h>
   2365 #endif
   2366 #define SELECTCALLCONV
   2367 #endif
   2368 #ifndef HAVE_STRUCT_TIMEVAL
   2369                     struct timeval {
   2370                       long tv_sec;
   2371                       long tv_usec;
   2372                     };
   2373 #endif
   2374                     extern $sel_retv SELECTCALLCONV select($sel_arg1,
   2375                                                            $sel_arg234,
   2376                                                            $sel_arg234,
   2377                                                            $sel_arg234,
   2378                                                            $sel_arg5);
   2379                   ]],[[
   2380                     $sel_arg1   nfds=0;
   2381                     $sel_arg234 rfds=0;
   2382                     $sel_arg234 wfds=0;
   2383                     $sel_arg234 efds=0;
   2384                     $sel_retv res = select(nfds, rfds, wfds, efds, 0);
   2385                   ]])
   2386                 ],[
   2387                   curl_cv_func_select_args="$sel_arg1,$sel_arg234,$sel_arg5,$sel_retv"
   2388                 ])
   2389               fi
   2390             done
   2391           done
   2392         done
   2393       done
   2394     ]) # AC-CACHE-CHECK
   2395     if test "$curl_cv_func_select_args" = "unknown"; then
   2396       AC_MSG_WARN([Cannot find proper types to use for select args])
   2397       AC_MSG_WARN([HAVE_SELECT will not be defined])
   2398     else
   2399       select_prev_IFS=$IFS; IFS=','
   2400       set dummy `echo "$curl_cv_func_select_args" | sed 's/\*/\*/g'`
   2401       IFS=$select_prev_IFS
   2402       shift
   2403       #
   2404       sel_qual_type_arg5=$[3]
   2405       #
   2406       AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG1, $[1],
   2407         [Define to the type of arg 1 for select.])
   2408       AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG234, $[2],
   2409         [Define to the type of args 2, 3 and 4 for select.])
   2410       AC_DEFINE_UNQUOTED(SELECT_TYPE_RETV, $[4],
   2411         [Define to the function return type for select.])
   2412       #
   2413       prev_sh_opts=$-
   2414       #
   2415       case $prev_sh_opts in
   2416         *f*)
   2417           ;;
   2418         *)
   2419           set -f
   2420           ;;
   2421       esac
   2422       #
   2423       case "$sel_qual_type_arg5" in
   2424         const*)
   2425           sel_qual_arg5=const
   2426           sel_type_arg5=`echo $sel_qual_type_arg5 | sed 's/^const //'`
   2427         ;;
   2428         *)
   2429           sel_qual_arg5=
   2430           sel_type_arg5=$sel_qual_type_arg5
   2431         ;;
   2432       esac
   2433       #
   2434       AC_DEFINE_UNQUOTED(SELECT_QUAL_ARG5, $sel_qual_arg5,
   2435         [Define to the type qualifier of arg 5 for select.])
   2436       AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG5, $sel_type_arg5,
   2437         [Define to the type of arg 5 for select.])
   2438       #
   2439       case $prev_sh_opts in
   2440         *f*)
   2441           ;;
   2442         *)
   2443           set +f
   2444           ;;
   2445       esac
   2446       #
   2447       AC_DEFINE_UNQUOTED(HAVE_SELECT, 1,
   2448         [Define to 1 if you have the select function.])
   2449       ac_cv_func_select="yes"
   2450     fi
   2451   fi
   2452 ])
   2453 
   2454 
   2455 dnl CURL_VERIFY_RUNTIMELIBS
   2456 dnl -------------------------------------------------
   2457 dnl Verify that the shared libs found so far can be used when running
   2458 dnl programs, since otherwise the situation will create odd configure errors
   2459 dnl that are misleading people.
   2460 dnl
   2461 dnl Make sure this test is run BEFORE the first test in the script that
   2462 dnl runs anything, which at the time of this writing is the AC_CHECK_SIZEOF
   2463 dnl macro. It must also run AFTER all lib-checking macros are complete.
   2464 
   2465 AC_DEFUN([CURL_VERIFY_RUNTIMELIBS], [
   2466 
   2467   dnl this test is of course not sensible if we are cross-compiling!
   2468   if test "x$cross_compiling" != xyes; then
   2469 
   2470     dnl just run a program to verify that the libs checked for previous to this
   2471     dnl point also is available run-time!
   2472     AC_MSG_CHECKING([run-time libs availability])
   2473     AC_TRY_RUN([
   2474 main()
   2475 {
   2476   return 0;
   2477 }
   2478 ],
   2479     AC_MSG_RESULT([fine]),
   2480     AC_MSG_RESULT([failed])
   2481     AC_MSG_ERROR([one or more libs available at link-time are not available run-time. Libs used at link-time: $LIBS])
   2482     )
   2483 
   2484     dnl if this test fails, configure has already stopped
   2485   fi
   2486 ])
   2487 
   2488 
   2489 dnl CURL_CHECK_VARIADIC_MACROS
   2490 dnl -------------------------------------------------
   2491 dnl Check compiler support of variadic macros
   2492 
   2493 AC_DEFUN([CURL_CHECK_VARIADIC_MACROS], [
   2494   AC_CACHE_CHECK([for compiler support of C99 variadic macro style],
   2495     [curl_cv_variadic_macros_c99], [
   2496     AC_COMPILE_IFELSE([
   2497       AC_LANG_PROGRAM([[
   2498 #define c99_vmacro3(first, ...) fun3(first, __VA_ARGS__)
   2499 #define c99_vmacro2(first, ...) fun2(first, __VA_ARGS__)
   2500         int fun3(int arg1, int arg2, int arg3);
   2501         int fun2(int arg1, int arg2);
   2502         int fun3(int arg1, int arg2, int arg3)
   2503         { return arg1 + arg2 + arg3; }
   2504         int fun2(int arg1, int arg2)
   2505         { return arg1 + arg2; }
   2506       ]],[[
   2507         int res3 = c99_vmacro3(1, 2, 3);
   2508         int res2 = c99_vmacro2(1, 2);
   2509       ]])
   2510     ],[
   2511       curl_cv_variadic_macros_c99="yes"
   2512     ],[
   2513       curl_cv_variadic_macros_c99="no"
   2514     ])
   2515   ])
   2516   case "$curl_cv_variadic_macros_c99" in
   2517     yes)
   2518       AC_DEFINE_UNQUOTED(HAVE_VARIADIC_MACROS_C99, 1,
   2519         [Define to 1 if compiler supports C99 variadic macro style.])
   2520       ;;
   2521   esac
   2522   AC_CACHE_CHECK([for compiler support of old gcc variadic macro style],
   2523     [curl_cv_variadic_macros_gcc], [
   2524     AC_COMPILE_IFELSE([
   2525       AC_LANG_PROGRAM([[
   2526 #define gcc_vmacro3(first, args...) fun3(first, args)
   2527 #define gcc_vmacro2(first, args...) fun2(first, args)
   2528         int fun3(int arg1, int arg2, int arg3);
   2529         int fun2(int arg1, int arg2);
   2530         int fun3(int arg1, int arg2, int arg3)
   2531         { return arg1 + arg2 + arg3; }
   2532         int fun2(int arg1, int arg2)
   2533         { return arg1 + arg2; }
   2534       ]],[[
   2535         int res3 = gcc_vmacro3(1, 2, 3);
   2536         int res2 = gcc_vmacro2(1, 2);
   2537       ]])
   2538     ],[
   2539       curl_cv_variadic_macros_gcc="yes"
   2540     ],[
   2541       curl_cv_variadic_macros_gcc="no"
   2542     ])
   2543   ])
   2544   case "$curl_cv_variadic_macros_gcc" in
   2545     yes)
   2546       AC_DEFINE_UNQUOTED(HAVE_VARIADIC_MACROS_GCC, 1,
   2547         [Define to 1 if compiler supports old gcc variadic macro style.])
   2548       ;;
   2549   esac
   2550 ])
   2551 
   2552 
   2553 dnl CURL_CHECK_CA_BUNDLE
   2554 dnl -------------------------------------------------
   2555 dnl Check if a default ca-bundle should be used
   2556 dnl
   2557 dnl regarding the paths this will scan:
   2558 dnl /etc/ssl/certs/ca-certificates.crt Debian systems
   2559 dnl /etc/pki/tls/certs/ca-bundle.crt Redhat and Mandriva
   2560 dnl /usr/share/ssl/certs/ca-bundle.crt old(er) Redhat
   2561 dnl /usr/local/share/certs/ca-root.crt FreeBSD
   2562 dnl /etc/ssl/cert.pem OpenBSD
   2563 dnl /etc/ssl/certs/ (ca path) SUSE
   2564 
   2565 AC_DEFUN([CURL_CHECK_CA_BUNDLE], [
   2566 
   2567   AC_MSG_CHECKING([default CA cert bundle/path])
   2568 
   2569   AC_ARG_WITH(ca-bundle,
   2570 AC_HELP_STRING([--with-ca-bundle=FILE], [File name to use as CA bundle])
   2571 AC_HELP_STRING([--without-ca-bundle], [Don't use a default CA bundle]),
   2572   [
   2573     want_ca="$withval"
   2574     if test "x$want_ca" = "xyes"; then
   2575       AC_MSG_ERROR([--with-ca-bundle=FILE requires a path to the CA bundle])
   2576     fi
   2577   ],
   2578   [ want_ca="unset" ])
   2579   AC_ARG_WITH(ca-path,
   2580 AC_HELP_STRING([--with-ca-path=DIRECTORY], [Directory to use as CA path])
   2581 AC_HELP_STRING([--without-ca-path], [Don't use a default CA path]),
   2582   [
   2583     want_capath="$withval"
   2584     if test "x$want_capath" = "xyes"; then
   2585       AC_MSG_ERROR([--with-ca-path=DIRECTORY requires a path to the CA path directory])
   2586     fi
   2587   ],
   2588   [ want_capath="unset"])
   2589 
   2590   if test "x$want_ca" != "xno" -a "x$want_ca" != "xunset" -a \
   2591           "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
   2592     dnl both given
   2593     ca="$want_ca"
   2594     capath="$want_capath"
   2595   elif test "x$want_ca" != "xno" -a "x$want_ca" != "xunset"; then
   2596     dnl --with-ca-bundle given
   2597     ca="$want_ca"
   2598     capath="no"
   2599   elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then
   2600     dnl --with-ca-path given
   2601     if test "x$OPENSSL_ENABLED" != "x1" -a "x$GNUTLS_ENABLED" != "x1" -a "x$POLARSSL_ENABLED" != "x1"; then
   2602       AC_MSG_ERROR([--with-ca-path only works with OpenSSL, GnuTLS or PolarSSL])
   2603     fi
   2604     capath="$want_capath"
   2605     ca="no"
   2606   else
   2607     dnl first try autodetecting a CA bundle , then a CA path
   2608     dnl both autodetections can be skipped by --without-ca-*
   2609     ca="no"
   2610     capath="no"
   2611     if test "x$cross_compiling" != "xyes"; then
   2612       dnl NOT cross-compiling and...
   2613       dnl neither of the --with-ca-* options are provided
   2614       if test "x$want_ca" = "xunset"; then
   2615         dnl the path we previously would have installed the curl ca bundle
   2616         dnl to, and thus we now check for an already existing cert in that
   2617         dnl place in case we find no other
   2618         if test "x$prefix" != xNONE; then
   2619           cac="${prefix}/share/curl/curl-ca-bundle.crt"
   2620         else
   2621           cac="$ac_default_prefix/share/curl/curl-ca-bundle.crt"
   2622         fi
   2623 
   2624         for a in /etc/ssl/certs/ca-certificates.crt \
   2625                  /etc/pki/tls/certs/ca-bundle.crt \
   2626                  /usr/share/ssl/certs/ca-bundle.crt \
   2627                  /usr/local/share/certs/ca-root.crt \
   2628                  /etc/ssl/cert.pem \
   2629                  "$cac"; do
   2630           if test -f "$a"; then
   2631             ca="$a"
   2632             break
   2633           fi
   2634         done
   2635       fi
   2636       if test "x$want_capath" = "xunset" -a "x$ca" = "xno" -a \
   2637               "x$OPENSSL_ENABLED" = "x1"; then
   2638         for a in /etc/ssl/certs/; do
   2639           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
   2640             capath="$a"
   2641             break
   2642           fi
   2643         done
   2644       fi
   2645     else
   2646       dnl no option given and cross-compiling
   2647       AC_MSG_WARN([skipped the ca-cert path detection when cross-compiling])
   2648     fi
   2649   fi
   2650 
   2651   if test "x$ca" != "xno"; then
   2652     CURL_CA_BUNDLE='"'$ca'"'
   2653     AC_DEFINE_UNQUOTED(CURL_CA_BUNDLE, "$ca", [Location of default ca bundle])
   2654     AC_SUBST(CURL_CA_BUNDLE)
   2655     AC_MSG_RESULT([$ca])
   2656   fi
   2657   if test "x$capath" != "xno"; then
   2658     CURL_CA_PATH="\"$capath\""
   2659     AC_DEFINE_UNQUOTED(CURL_CA_PATH, "$capath", [Location of default ca path])
   2660     AC_MSG_RESULT([$capath (capath)])
   2661   fi
   2662   if test "x$ca" = "xno" && test "x$capath" = "xno"; then
   2663     AC_MSG_RESULT([no])
   2664   fi
   2665 ])
   2666 
   2667 
   2668 dnl DO_CURL_OFF_T_CHECK (TYPE, SIZE)
   2669 dnl -------------------------------------------------
   2670 dnl Internal macro for CURL_CONFIGURE_CURL_OFF_T
   2671 
   2672 AC_DEFUN([DO_CURL_OFF_T_CHECK], [
   2673   AC_REQUIRE([CURL_INCLUDES_INTTYPES])dnl
   2674   if test "$curl_typeof_curl_off_t" = "unknown" && test ! -z "$1"; then
   2675     tmp_includes=""
   2676     tmp_source=""
   2677     tmp_fmt=""
   2678     case XC_SH_TR_SH([$1]) in
   2679       int64_t)
   2680         tmp_includes="$curl_includes_inttypes"
   2681         tmp_source="char f@<:@@:>@ = PRId64;"
   2682         tmp_fmt="PRId64"
   2683         ;;
   2684       int32_t)
   2685         tmp_includes="$curl_includes_inttypes"
   2686         tmp_source="char f@<:@@:>@ = PRId32;"
   2687         tmp_fmt="PRId32"
   2688         ;;
   2689       int16_t)
   2690         tmp_includes="$curl_includes_inttypes"
   2691         tmp_source="char f@<:@@:>@ = PRId16;"
   2692         tmp_fmt="PRId16"
   2693         ;;
   2694     esac
   2695     AC_COMPILE_IFELSE([
   2696       AC_LANG_PROGRAM([[
   2697         $tmp_includes
   2698         typedef $1 curl_off_t;
   2699         typedef char dummy_arr[sizeof(curl_off_t) == $2 ? 1 : -1];
   2700       ]],[[
   2701         $tmp_source
   2702         curl_off_t dummy;
   2703       ]])
   2704     ],[
   2705       if test -z "$tmp_fmt"; then
   2706         curl_typeof_curl_off_t="$1"
   2707         curl_sizeof_curl_off_t="$2"
   2708       else
   2709         CURL_CHECK_DEF([$tmp_fmt], [$curl_includes_inttypes], [silent])
   2710         AS_VAR_PUSHDEF([tmp_HaveFmtDef], [curl_cv_have_def_$tmp_fmt])dnl
   2711         AS_VAR_PUSHDEF([tmp_FmtDef], [curl_cv_def_$tmp_fmt])dnl
   2712         if test AS_VAR_GET(tmp_HaveFmtDef) = "yes"; then
   2713           curl_format_curl_off_t=AS_VAR_GET(tmp_FmtDef)
   2714           curl_typeof_curl_off_t="$1"
   2715           curl_sizeof_curl_off_t="$2"
   2716         fi
   2717         AS_VAR_POPDEF([tmp_FmtDef])dnl
   2718         AS_VAR_POPDEF([tmp_HaveFmtDef])dnl
   2719       fi
   2720     ])
   2721   fi
   2722 ])
   2723 
   2724 
   2725 dnl DO_CURL_OFF_T_SUFFIX_CHECK (TYPE)
   2726 dnl -------------------------------------------------
   2727 dnl Internal macro for CURL_CONFIGURE_CURL_OFF_T
   2728 
   2729 AC_DEFUN([DO_CURL_OFF_T_SUFFIX_CHECK], [
   2730   AC_REQUIRE([CURL_INCLUDES_INTTYPES])dnl
   2731   AC_MSG_CHECKING([constant suffix string for curl_off_t])
   2732   #
   2733   curl_suffix_curl_off_t="unknown"
   2734   curl_suffix_curl_off_tu="unknown"
   2735   #
   2736   case XC_SH_TR_SH([$1]) in
   2737     long_long | __longlong | __longlong_t)
   2738       tst_suffixes="LL::"
   2739       ;;
   2740     long)
   2741       tst_suffixes="L::"
   2742       ;;
   2743     int)
   2744       tst_suffixes="::"
   2745       ;;
   2746     __int64 | int64_t)
   2747       tst_suffixes="LL:i64::"
   2748       ;;
   2749     __int32 | int32_t)
   2750       tst_suffixes="L:i32::"
   2751       ;;
   2752     __int16 | int16_t)
   2753       tst_suffixes="L:i16::"
   2754       ;;
   2755     *)
   2756       AC_MSG_ERROR([unexpected data type $1])
   2757       ;;
   2758   esac
   2759   #
   2760   old_IFS=$IFS; IFS=':'
   2761   for tmp_ssuf in $tst_suffixes ; do
   2762     IFS=$old_IFS
   2763     if test "x$curl_suffix_curl_off_t" = "xunknown"; then
   2764       case $tmp_ssuf in
   2765         i64 | i32 | i16)
   2766           tmp_usuf="u$tmp_ssuf"
   2767           ;;
   2768         LL | L)
   2769           tmp_usuf="U$tmp_ssuf"
   2770           ;;
   2771         *)
   2772           tmp_usuf=""
   2773           ;;
   2774       esac
   2775       AC_COMPILE_IFELSE([
   2776         AC_LANG_PROGRAM([[
   2777           $curl_includes_inttypes
   2778           typedef $1 new_t;
   2779         ]],[[
   2780           new_t s1;
   2781           new_t s2;
   2782           s1 = -10$tmp_ssuf ;
   2783           s2 =  20$tmp_ssuf ;
   2784           if(s1 > s2)
   2785             return 1;
   2786         ]])
   2787       ],[
   2788         curl_suffix_curl_off_t="$tmp_ssuf"
   2789         curl_suffix_curl_off_tu="$tmp_usuf"
   2790       ])
   2791     fi
   2792   done
   2793   IFS=$old_IFS
   2794   #
   2795   if test "x$curl_suffix_curl_off_t" = "xunknown"; then
   2796     AC_MSG_ERROR([cannot find constant suffix string for curl_off_t.])
   2797   else
   2798     AC_MSG_RESULT([$curl_suffix_curl_off_t])
   2799     AC_MSG_CHECKING([constant suffix string for unsigned curl_off_t])
   2800     AC_MSG_RESULT([$curl_suffix_curl_off_tu])
   2801   fi
   2802   #
   2803 ])
   2804 
   2805 
   2806 dnl CURL_CONFIGURE_CURL_OFF_T
   2807 dnl -------------------------------------------------
   2808 dnl Find out suitable curl_off_t data type definition and associated
   2809 dnl items, and make the appropriate definitions used in template file
   2810 dnl include/curl/curlbuild.h.in to properly configure the library.
   2811 
   2812 AC_DEFUN([CURL_CONFIGURE_CURL_OFF_T], [
   2813   AC_REQUIRE([CURL_INCLUDES_INTTYPES])dnl
   2814   #
   2815   AC_BEFORE([$0],[AC_SYS_LARGEFILE])dnl
   2816   AC_BEFORE([$0],[CURL_CONFIGURE_REENTRANT])dnl
   2817   AC_BEFORE([$0],[CURL_CHECK_AIX_ALL_SOURCE])dnl
   2818   #
   2819   if test -z "$SED"; then
   2820     AC_MSG_ERROR([SED not set. Cannot continue without SED being set.])
   2821   fi
   2822   #
   2823   AC_CHECK_SIZEOF(long)
   2824   AC_CHECK_SIZEOF(void*)
   2825   #
   2826   if test -z "$ac_cv_sizeof_long" ||
   2827     test "$ac_cv_sizeof_long" -eq "0"; then
   2828     AC_MSG_ERROR([cannot find out size of long.])
   2829   fi
   2830   if test -z "$ac_cv_sizeof_voidp" ||
   2831      test "$ac_cv_sizeof_voidp" -eq "0"; then
   2832     AC_MSG_ERROR([cannot find out size of void*.])
   2833   fi
   2834   #
   2835   x_LP64_long=""
   2836   x_LP32_long=""
   2837   x_LP16_long=""
   2838   #
   2839   if test "$ac_cv_sizeof_long" -eq "8" &&
   2840      test "$ac_cv_sizeof_voidp" -ge "8"; then
   2841     x_LP64_long="long"
   2842   elif test "$ac_cv_sizeof_long" -eq "4" &&
   2843        test "$ac_cv_sizeof_voidp" -ge "4"; then
   2844     x_LP32_long="long"
   2845   elif test "$ac_cv_sizeof_long" -eq "2" &&
   2846        test "$ac_cv_sizeof_voidp" -ge "2"; then
   2847     x_LP16_long="long"
   2848   fi
   2849   #
   2850   dnl DO_CURL_OFF_T_CHECK results are stored in next 3 vars
   2851   #
   2852   curl_typeof_curl_off_t="unknown"
   2853   curl_sizeof_curl_off_t="unknown"
   2854   curl_format_curl_off_t="unknown"
   2855   curl_format_curl_off_tu="unknown"
   2856   #
   2857   if test "$curl_typeof_curl_off_t" = "unknown"; then
   2858     AC_MSG_CHECKING([for 64-bit curl_off_t data type])
   2859     for t8 in          \
   2860       "$x_LP64_long"   \
   2861       'int64_t'        \
   2862       '__int64'        \
   2863       'long long'      \
   2864       '__longlong'     \
   2865       '__longlong_t'   ; do
   2866       DO_CURL_OFF_T_CHECK([$t8], [8])
   2867     done
   2868     AC_MSG_RESULT([$curl_typeof_curl_off_t])
   2869   fi
   2870   if test "$curl_typeof_curl_off_t" = "unknown"; then
   2871     AC_MSG_CHECKING([for 32-bit curl_off_t data type])
   2872     for t4 in          \
   2873       "$x_LP32_long"   \
   2874       'int32_t'        \
   2875       '__int32'        \
   2876       'int'            ; do
   2877       DO_CURL_OFF_T_CHECK([$t4], [4])
   2878     done
   2879     AC_MSG_RESULT([$curl_typeof_curl_off_t])
   2880   fi
   2881   if test "$curl_typeof_curl_off_t" = "unknown"; then
   2882     AC_MSG_CHECKING([for 16-bit curl_off_t data type])
   2883     for t2 in          \
   2884       "$x_LP16_long"   \
   2885       'int16_t'        \
   2886       '__int16'        \
   2887       'int'            ; do
   2888       DO_CURL_OFF_T_CHECK([$t2], [2])
   2889     done
   2890     AC_MSG_RESULT([$curl_typeof_curl_off_t])
   2891   fi
   2892   if test "$curl_typeof_curl_off_t" = "unknown"; then
   2893     AC_MSG_ERROR([cannot find data type for curl_off_t.])
   2894   fi
   2895   #
   2896   AC_MSG_CHECKING([size of curl_off_t])
   2897   AC_MSG_RESULT([$curl_sizeof_curl_off_t])
   2898   #
   2899   AC_MSG_CHECKING([formatting string directive for curl_off_t])
   2900   if test "$curl_format_curl_off_t" != "unknown"; then
   2901     x_pull_headers="yes"
   2902     curl_format_curl_off_t=`echo "$curl_format_curl_off_t" | "$SED" 's/[["]]//g'`
   2903     curl_format_curl_off_tu=`echo "$curl_format_curl_off_t" | "$SED" 's/i$/u/'`
   2904     curl_format_curl_off_tu=`echo "$curl_format_curl_off_tu" | "$SED" 's/d$/u/'`
   2905     curl_format_curl_off_tu=`echo "$curl_format_curl_off_tu" | "$SED" 's/D$/U/'`
   2906   else
   2907     x_pull_headers="no"
   2908     case XC_SH_TR_SH([$curl_typeof_curl_off_t]) in
   2909       long_long | __longlong | __longlong_t)
   2910         curl_format_curl_off_t="lld"
   2911         curl_format_curl_off_tu="llu"
   2912         ;;
   2913       long)
   2914         curl_format_curl_off_t="ld"
   2915         curl_format_curl_off_tu="lu"
   2916         ;;
   2917       int)
   2918         curl_format_curl_off_t="d"
   2919         curl_format_curl_off_tu="u"
   2920         ;;
   2921       __int64)
   2922         curl_format_curl_off_t="I64d"
   2923         curl_format_curl_off_tu="I64u"
   2924         ;;
   2925       __int32)
   2926         curl_format_curl_off_t="I32d"
   2927         curl_format_curl_off_tu="I32u"
   2928         ;;
   2929       __int16)
   2930         curl_format_curl_off_t="I16d"
   2931         curl_format_curl_off_tu="I16u"
   2932         ;;
   2933       *)
   2934         AC_MSG_ERROR([cannot find print format string for curl_off_t.])
   2935         ;;
   2936     esac
   2937   fi
   2938   AC_MSG_RESULT(["$curl_format_curl_off_t"])
   2939   #
   2940   AC_MSG_CHECKING([formatting string directive for unsigned curl_off_t])
   2941   AC_MSG_RESULT(["$curl_format_curl_off_tu"])
   2942   #
   2943   DO_CURL_OFF_T_SUFFIX_CHECK([$curl_typeof_curl_off_t])
   2944   #
   2945   if test "$x_pull_headers" = "yes"; then
   2946     if test "x$ac_cv_header_sys_types_h" = "xyes"; then
   2947       CURL_DEFINE_UNQUOTED([CURL_PULL_SYS_TYPES_H])
   2948     fi
   2949     if test "x$ac_cv_header_stdint_h" = "xyes"; then
   2950       CURL_DEFINE_UNQUOTED([CURL_PULL_STDINT_H])
   2951     fi
   2952     if test "x$ac_cv_header_inttypes_h" = "xyes"; then
   2953       CURL_DEFINE_UNQUOTED([CURL_PULL_INTTYPES_H])
   2954     fi
   2955   fi
   2956   #
   2957   CURL_DEFINE_UNQUOTED([CURL_TYPEOF_CURL_OFF_T], [$curl_typeof_curl_off_t])
   2958   CURL_DEFINE_UNQUOTED([CURL_FORMAT_CURL_OFF_T], ["$curl_format_curl_off_t"])
   2959   CURL_DEFINE_UNQUOTED([CURL_FORMAT_CURL_OFF_TU], ["$curl_format_curl_off_tu"])
   2960   CURL_DEFINE_UNQUOTED([CURL_FORMAT_OFF_T], ["%$curl_format_curl_off_t"])
   2961   CURL_DEFINE_UNQUOTED([CURL_SIZEOF_CURL_OFF_T], [$curl_sizeof_curl_off_t])
   2962   CURL_DEFINE_UNQUOTED([CURL_SUFFIX_CURL_OFF_T], [$curl_suffix_curl_off_t])
   2963   CURL_DEFINE_UNQUOTED([CURL_SUFFIX_CURL_OFF_TU], [$curl_suffix_curl_off_tu])
   2964   #
   2965 ])
   2966 
   2967 
   2968 dnl CURL_CHECK_WIN32_LARGEFILE
   2969 dnl -------------------------------------------------
   2970 dnl Check if curl's WIN32 large file will be used
   2971 
   2972 AC_DEFUN([CURL_CHECK_WIN32_LARGEFILE], [
   2973   AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl
   2974   AC_MSG_CHECKING([whether build target supports WIN32 file API])
   2975   curl_win32_file_api="no"
   2976   if test "$ac_cv_header_windows_h" = "yes"; then
   2977     if test x"$enable_largefile" != "xno"; then
   2978       AC_COMPILE_IFELSE([
   2979         AC_LANG_PROGRAM([[
   2980         ]],[[
   2981 #if !defined(_WIN32_WCE) && \
   2982     (defined(__MINGW32__) || \
   2983     (defined(_MSC_VER) && (defined(_WIN32) || defined(_WIN64))))
   2984           int dummy=1;
   2985 #else
   2986           WIN32 large file API not supported.
   2987 #endif
   2988         ]])
   2989       ],[
   2990         curl_win32_file_api="win32_large_files"
   2991       ])
   2992     fi
   2993     if test "$curl_win32_file_api" = "no"; then
   2994       AC_COMPILE_IFELSE([
   2995         AC_LANG_PROGRAM([[
   2996         ]],[[
   2997 #if defined(_WIN32_WCE) || defined(__MINGW32__) || defined(_MSC_VER)
   2998           int dummy=1;
   2999 #else
   3000           WIN32 small file API not supported.
   3001 #endif
   3002         ]])
   3003       ],[
   3004         curl_win32_file_api="win32_small_files"
   3005       ])
   3006     fi
   3007   fi
   3008   case "$curl_win32_file_api" in
   3009     win32_large_files)
   3010       AC_MSG_RESULT([yes (large file enabled)])
   3011       AC_DEFINE_UNQUOTED(USE_WIN32_LARGE_FILES, 1,
   3012         [Define to 1 if you are building a Windows target with large file support.])
   3013       ;;
   3014     win32_small_files)
   3015       AC_MSG_RESULT([yes (large file disabled)])
   3016       AC_DEFINE_UNQUOTED(USE_WIN32_SMALL_FILES, 1,
   3017         [Define to 1 if you are building a Windows target without large file support.])
   3018       ;;
   3019     *)
   3020       AC_MSG_RESULT([no])
   3021       ;;
   3022   esac
   3023 ])
   3024 
   3025 dnl CURL_EXPORT_PCDIR ($pcdir)
   3026 dnl ------------------------
   3027 dnl if $pcdir is not empty, set PKG_CONFIG_LIBDIR to $pcdir and export
   3028 dnl
   3029 dnl we need this macro since pkg-config distinguishes among empty and unset
   3030 dnl variable while checking PKG_CONFIG_LIBDIR
   3031 dnl
   3032 
   3033 AC_DEFUN([CURL_EXPORT_PCDIR], [
   3034     if test -n "$1"; then
   3035       PKG_CONFIG_LIBDIR="$1"
   3036       export PKG_CONFIG_LIBDIR
   3037     fi
   3038 ])
   3039 
   3040 dnl CURL_CHECK_PKGCONFIG ($module, [$pcdir])
   3041 dnl ------------------------
   3042 dnl search for the pkg-config tool. Set the PKGCONFIG variable to hold the
   3043 dnl path to it, or 'no' if not found/present.
   3044 dnl
   3045 dnl If pkg-config is present, check that it has info about the $module or
   3046 dnl return "no" anyway!
   3047 dnl
   3048 dnl Optionally PKG_CONFIG_LIBDIR may be given as $pcdir.
   3049 dnl
   3050 
   3051 AC_DEFUN([CURL_CHECK_PKGCONFIG], [
   3052 
   3053     PKGCONFIG="no"
   3054 
   3055     AC_PATH_TOOL( PKGCONFIG, pkg-config, no, $PATH:/usr/bin:/usr/local/bin)
   3056 
   3057     if test x$PKGCONFIG != xno; then
   3058       AC_MSG_CHECKING([for $1 options with pkg-config])
   3059       dnl ask pkg-config about $1
   3060       itexists=`CURL_EXPORT_PCDIR([$2]) dnl
   3061         $PKGCONFIG --exists $1 >/dev/null 2>&1 && echo 1`
   3062 
   3063       if test -z "$itexists"; then
   3064         dnl pkg-config does not have info about the given module! set the
   3065         dnl variable to 'no'
   3066         PKGCONFIG="no"
   3067         AC_MSG_RESULT([no])
   3068       else
   3069         AC_MSG_RESULT([found])
   3070       fi
   3071     fi
   3072 ])
   3073 
   3074 
   3075 dnl CURL_GENERATE_CONFIGUREHELP_PM
   3076 dnl -------------------------------------------------
   3077 dnl Generate test harness configurehelp.pm module, defining and
   3078 dnl initializing some perl variables with values which are known
   3079 dnl when the configure script runs. For portability reasons, test
   3080 dnl harness needs information on how to run the C preprocessor.
   3081 
   3082 AC_DEFUN([CURL_GENERATE_CONFIGUREHELP_PM], [
   3083   AC_REQUIRE([AC_PROG_CPP])dnl
   3084   tmp_cpp=`eval echo "$ac_cpp" 2>/dev/null`
   3085   if test -z "$tmp_cpp"; then
   3086     tmp_cpp='cpp'
   3087   fi
   3088   cat >./tests/configurehelp.pm <<_EOF
   3089 [@%:@] This is a generated file.  Do not edit.
   3090 
   3091 package configurehelp;
   3092 
   3093 use strict;
   3094 use warnings;
   3095 use Exporter;
   3096 
   3097 use vars qw(
   3098     @ISA
   3099     @EXPORT_OK
   3100     \$Cpreprocessor
   3101     );
   3102 
   3103 @ISA = qw(Exporter);
   3104 
   3105 @EXPORT_OK = qw(
   3106     \$Cpreprocessor
   3107     );
   3108 
   3109 \$Cpreprocessor = '$tmp_cpp';
   3110 
   3111 1;
   3112 _EOF
   3113 ])
   3114