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