1#*************************************************************************** 2# _ _ ____ _ 3# Project ___| | | | _ \| | 4# / __| | | | |_) | | 5# | (__| |_| | _ <| |___ 6# \___|\___/|_| \_\_____| 7# 8# Copyright (C) 1998 - 2013, 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 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 24dnl CURL_CHECK_DEF (SYMBOL, [INCLUDES], [SILENT]) 25dnl ------------------------------------------------- 26dnl Use the C preprocessor to find out if the given object-style symbol 27dnl is defined and get its expansion. This macro will not use default 28dnl includes even if no INCLUDES argument is given. This macro will run 29dnl silently when invoked with three arguments. If the expansion would 30dnl result in a set of double-quoted strings the returned expansion will 31dnl actually be a single double-quoted string concatenating all them. 32 33AC_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( 46ifelse($2,,,[$2])[[ 47#ifdef $1 48CURL_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 73dnl CURL_CHECK_DEF_CC (SYMBOL, [INCLUDES], [SILENT]) 74dnl ------------------------------------------------- 75dnl Use the C compiler to find out only if the given symbol is defined 76dnl or not, this can not find out its expansion. This macro will not use 77dnl default includes even if no INCLUDES argument is given. This macro 78dnl will run silently when invoked with three arguments. 79 80AC_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( 85ifelse($2,,,[$2])[[ 86int 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 111dnl CURL_CHECK_LIB_XNET 112dnl ------------------------------------------------- 113dnl Verify if X/Open network library is required. 114 115AC_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([[ 120int 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 139dnl CURL_CHECK_AIX_ALL_SOURCE 140dnl ------------------------------------------------- 141dnl Provides a replacement of traditional AC_AIX with 142dnl an uniform behaviour across all autoconf versions, 143dnl and with our own placement rules. 144 145AC_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 168dnl CURL_CHECK_HEADER_WINDOWS 169dnl ------------------------------------------------- 170dnl Check for compilable and valid windows.h header 171 172AC_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 205dnl CURL_CHECK_NATIVE_WINDOWS 206dnl ------------------------------------------------- 207dnl Check if building a native Windows target 208 209AC_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 236dnl CURL_CHECK_HEADER_WINSOCK 237dnl ------------------------------------------------- 238dnl Check for compilable and valid winsock.h header 239 240AC_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 273dnl CURL_CHECK_HEADER_WINSOCK2 274dnl ------------------------------------------------- 275dnl Check for compilable and valid winsock2.h header 276 277AC_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 310dnl CURL_CHECK_HEADER_WS2TCPIP 311dnl ------------------------------------------------- 312dnl Check for compilable and valid ws2tcpip.h header 313 314AC_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 348dnl CURL_CHECK_HEADER_WINLDAP 349dnl ------------------------------------------------- 350dnl Check for compilable and valid winldap.h header 351 352AC_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 388dnl CURL_CHECK_HEADER_WINBER 389dnl ------------------------------------------------- 390dnl Check for compilable and valid winber.h header 391 392AC_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 430dnl CURL_CHECK_HEADER_LBER 431dnl ------------------------------------------------- 432dnl Check for compilable and valid lber.h header, 433dnl and check if it is needed even with ldap.h 434 435AC_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 511dnl CURL_CHECK_HEADER_LDAP 512dnl ------------------------------------------------- 513dnl Check for compilable and valid ldap.h header 514 515AC_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 557dnl CURL_CHECK_HEADER_LDAP_SSL 558dnl ------------------------------------------------- 559dnl Check for compilable and valid ldap_ssl.h header 560 561AC_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 605dnl CURL_CHECK_HEADER_LDAPSSL 606dnl ------------------------------------------------- 607dnl Check for compilable and valid ldapssl.h header 608 609AC_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 657dnl CURL_CHECK_LIBS_WINLDAP 658dnl ------------------------------------------------- 659dnl Check for libraries needed for WINLDAP support, 660dnl and prepended to LIBS any needed libraries. 661dnl This macro can take an optional parameter with a 662dnl white space separated list of libraries to check 663dnl before the WINLDAP default ones. 664 665AC_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 751dnl CURL_CHECK_LIBS_LDAP 752dnl ------------------------------------------------- 753dnl Check for libraries needed for LDAP support, 754dnl and prepended to LIBS any needed libraries. 755dnl This macro can take an optional parameter with a 756dnl white space separated list of libraries to check 757dnl before the default ones. 758 759AC_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 859dnl CURL_CHECK_HEADER_MALLOC 860dnl ------------------------------------------------- 861dnl Check for compilable and valid malloc.h header, 862dnl and check if it is needed even with stdlib.h 863 864AC_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 910dnl CURL_CHECK_HEADER_MEMORY 911dnl ------------------------------------------------- 912dnl Check for compilable and valid memory.h header, 913dnl and check if it is needed even with stdlib.h for 914dnl memory related functions. 915 916AC_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 962dnl CURL_CHECK_FUNC_GETNAMEINFO 963dnl ------------------------------------------------- 964dnl Test if the getnameinfo function is available, 965dnl and check the types of five of its arguments. 966dnl If the function succeeds HAVE_GETNAMEINFO will be 967dnl defined, defining the types of the arguments in 968dnl GETNAMEINFO_TYPE_ARG1, GETNAMEINFO_TYPE_ARG2, 969dnl GETNAMEINFO_TYPE_ARG46 and GETNAMEINFO_TYPE_ARG7, 970dnl and also defining the type qualifier of first 971dnl argument in GETNAMEINFO_QUAL_ARG1. 972 973AC_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 1163dnl TYPE_SOCKADDR_STORAGE 1164dnl ------------------------------------------------- 1165dnl Check for struct sockaddr_storage. Most IPv6-enabled 1166dnl hosts have it, but AIX 4.3 is one known exception. 1167 1168AC_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 1201dnl CURL_CHECK_NI_WITHSCOPEID 1202dnl ------------------------------------------------- 1203dnl Check for working NI_WITHSCOPEID in getnameinfo() 1204 1205AC_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 1301dnl CURL_CHECK_FUNC_RECV 1302dnl ------------------------------------------------- 1303dnl Test if the socket recv() function is available, 1304dnl and check its return type and the types of its 1305dnl arguments. If the function succeeds HAVE_RECV 1306dnl will be defined, defining the types of the arguments 1307dnl in RECV_TYPE_ARG1, RECV_TYPE_ARG2, RECV_TYPE_ARG3 1308dnl and RECV_TYPE_ARG4, defining the type of the function 1309dnl return value in RECV_TYPE_RETV. 1310 1311AC_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 1434dnl CURL_CHECK_FUNC_SEND 1435dnl ------------------------------------------------- 1436dnl Test if the socket send() function is available, 1437dnl and check its return type and the types of its 1438dnl arguments. If the function succeeds HAVE_SEND 1439dnl will be defined, defining the types of the arguments 1440dnl in SEND_TYPE_ARG1, SEND_TYPE_ARG2, SEND_TYPE_ARG3 1441dnl and SEND_TYPE_ARG4, defining the type of the function 1442dnl return value in SEND_TYPE_RETV, and also defining the 1443dnl type qualifier of second argument in SEND_QUAL_ARG2. 1444 1445AC_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 1600dnl CURL_CHECK_MSG_NOSIGNAL 1601dnl ------------------------------------------------- 1602dnl Check for MSG_NOSIGNAL 1603 1604AC_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 1648dnl CURL_CHECK_STRUCT_TIMEVAL 1649dnl ------------------------------------------------- 1650dnl Check for timeval struct 1651 1652AC_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 1710dnl TYPE_SIG_ATOMIC_T 1711dnl ------------------------------------------------- 1712dnl Check if the sig_atomic_t type is available, and 1713dnl verify if it is already defined as volatile. 1714 1715AC_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 1754dnl TYPE_IN_ADDR_T 1755dnl ------------------------------------------------- 1756dnl Check for in_addr_t: it is used to receive the return code of inet_addr() 1757dnl and a few other things. 1758 1759AC_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 1846dnl CURL_CHECK_FUNC_CLOCK_GETTIME_MONOTONIC 1847dnl ------------------------------------------------- 1848dnl Check if monotonic clock_gettime is available. 1849 1850AC_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 1885dnl CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC 1886dnl ------------------------------------------------- 1887dnl If monotonic clock_gettime is available then, 1888dnl check and prepended to LIBS any needed libraries. 1889 1890AC_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 2006dnl CURL_CHECK_LIBS_CONNECT 2007dnl ------------------------------------------------- 2008dnl Verify if network connect function is already available 2009dnl using current libraries or if another one is required. 2010 2011AC_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 2052dnl CURL_DEFINE_UNQUOTED (VARIABLE, [VALUE]) 2053dnl ------------------------------------------------- 2054dnl Like AC_DEFINE_UNQUOTED this macro will define a C preprocessor 2055dnl symbol that can be further used in custom template configuration 2056dnl files. This macro, unlike AC_DEFINE_UNQUOTED, does not use a third 2057dnl argument for the description. Symbol definitions done with this 2058dnl macro are intended to be exclusively used in handcrafted *.h.in 2059dnl template files. Contrary to what AC_DEFINE_UNQUOTED does, this one 2060dnl prevents autoheader generation and insertion of symbol template 2061dnl stub and definition into the first configuration header file. Do 2062dnl not use this macro as a replacement for AC_DEFINE_UNQUOTED, each 2063dnl one serves different functional needs. 2064 2065AC_DEFUN([CURL_DEFINE_UNQUOTED], [ 2066cat >>confdefs.h <<_EOF 2067[@%:@define] $1 ifelse($#, 2, [$2], 1) 2068_EOF 2069]) 2070 2071 2072dnl CURL_CONFIGURE_LONG 2073dnl ------------------------------------------------- 2074dnl Find out the size of long as reported by sizeof() and define 2075dnl CURL_SIZEOF_LONG as appropriate to be used in template file 2076dnl include/curl/curlbuild.h.in to properly configure the library. 2077dnl The size of long is a build time characteristic and as such 2078dnl must be recorded in curlbuild.h 2079 2080AC_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 2089dnl CURL_CONFIGURE_CURL_SOCKLEN_T 2090dnl ------------------------------------------------- 2091dnl Find out suitable curl_socklen_t data type definition and size, making 2092dnl appropriate definitions for template file include/curl/curlbuild.h.in 2093dnl to properly configure and use the library. 2094dnl 2095dnl The need for the curl_socklen_t definition arises mainly to properly 2096dnl interface HP-UX systems which on one hand have a typedef'ed socklen_t 2097dnl data type which is 32 or 64-Bit wide depending on the data model being 2098dnl used, and that on the other hand is only actually used when interfacing 2099dnl the X/Open sockets provided in the xnet library. 2100 2101AC_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 2216dnl CURL_CONFIGURE_PULL_SYS_POLL 2217dnl ------------------------------------------------- 2218dnl Find out if system header file sys/poll.h must be included by the 2219dnl external interface, making appropriate definitions for template file 2220dnl include/curl/curlbuild.h.in to properly configure and use the library. 2221dnl 2222dnl The need for the sys/poll.h inclusion arises mainly to properly 2223dnl interface AIX systems which define macros 'events' and 'revents'. 2224 2225AC_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 2255dnl CURL_CHECK_FUNC_SELECT 2256dnl ------------------------------------------------- 2257dnl Test if the socket select() function is available, 2258dnl and check its return type and the types of its 2259dnl arguments. If the function succeeds HAVE_SELECT 2260dnl will be defined, defining the types of the 2261dnl arguments in SELECT_TYPE_ARG1, SELECT_TYPE_ARG234 2262dnl and SELECT_TYPE_ARG5, defining the type of the 2263dnl function return value in SELECT_TYPE_RETV, and 2264dnl also defining the type qualifier of fifth argument 2265dnl in SELECT_QUAL_ARG5. 2266 2267AC_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# This is only a temporary fix. This macro is here to replace the broken one 2456# delivered by the automake project (including the 1.9.6 release). As soon as 2457# they ship a working version we SHOULD remove this work-around. 2458 2459AC_DEFUN([AM_MISSING_HAS_RUN], 2460[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl 2461test x"${MISSING+set}" = xset || MISSING="\${SHELL} \"$am_aux_dir/missing\"" 2462# Use eval to expand $SHELL 2463if eval "$MISSING --run true"; then 2464 am_missing_run="$MISSING --run " 2465else 2466 am_missing_run= 2467 AC_MSG_WARN([`missing' script is too old or missing]) 2468fi 2469]) 2470 2471 2472dnl CURL_VERIFY_RUNTIMELIBS 2473dnl ------------------------------------------------- 2474dnl Verify that the shared libs found so far can be used when running 2475dnl programs, since otherwise the situation will create odd configure errors 2476dnl that are misleading people. 2477dnl 2478dnl Make sure this test is run BEFORE the first test in the script that 2479dnl runs anything, which at the time of this writing is the AC_CHECK_SIZEOF 2480dnl macro. It must also run AFTER all lib-checking macros are complete. 2481 2482AC_DEFUN([CURL_VERIFY_RUNTIMELIBS], [ 2483 2484 dnl this test is of course not sensible if we are cross-compiling! 2485 if test "x$cross_compiling" != xyes; then 2486 2487 dnl just run a program to verify that the libs checked for previous to this 2488 dnl point also is available run-time! 2489 AC_MSG_CHECKING([run-time libs availability]) 2490 AC_TRY_RUN([ 2491main() 2492{ 2493 return 0; 2494} 2495], 2496 AC_MSG_RESULT([fine]), 2497 AC_MSG_RESULT([failed]) 2498 AC_MSG_ERROR([one or more libs available at link-time are not available run-time. Libs used at link-time: $LIBS]) 2499 ) 2500 2501 dnl if this test fails, configure has already stopped 2502 fi 2503]) 2504 2505 2506dnl CURL_CHECK_VARIADIC_MACROS 2507dnl ------------------------------------------------- 2508dnl Check compiler support of variadic macros 2509 2510AC_DEFUN([CURL_CHECK_VARIADIC_MACROS], [ 2511 AC_CACHE_CHECK([for compiler support of C99 variadic macro style], 2512 [curl_cv_variadic_macros_c99], [ 2513 AC_COMPILE_IFELSE([ 2514 AC_LANG_PROGRAM([[ 2515#define c99_vmacro3(first, ...) fun3(first, __VA_ARGS__) 2516#define c99_vmacro2(first, ...) fun2(first, __VA_ARGS__) 2517 int fun3(int arg1, int arg2, int arg3); 2518 int fun2(int arg1, int arg2); 2519 int fun3(int arg1, int arg2, int arg3) 2520 { return arg1 + arg2 + arg3; } 2521 int fun2(int arg1, int arg2) 2522 { return arg1 + arg2; } 2523 ]],[[ 2524 int res3 = c99_vmacro3(1, 2, 3); 2525 int res2 = c99_vmacro2(1, 2); 2526 ]]) 2527 ],[ 2528 curl_cv_variadic_macros_c99="yes" 2529 ],[ 2530 curl_cv_variadic_macros_c99="no" 2531 ]) 2532 ]) 2533 case "$curl_cv_variadic_macros_c99" in 2534 yes) 2535 AC_DEFINE_UNQUOTED(HAVE_VARIADIC_MACROS_C99, 1, 2536 [Define to 1 if compiler supports C99 variadic macro style.]) 2537 ;; 2538 esac 2539 AC_CACHE_CHECK([for compiler support of old gcc variadic macro style], 2540 [curl_cv_variadic_macros_gcc], [ 2541 AC_COMPILE_IFELSE([ 2542 AC_LANG_PROGRAM([[ 2543#define gcc_vmacro3(first, args...) fun3(first, args) 2544#define gcc_vmacro2(first, args...) fun2(first, args) 2545 int fun3(int arg1, int arg2, int arg3); 2546 int fun2(int arg1, int arg2); 2547 int fun3(int arg1, int arg2, int arg3) 2548 { return arg1 + arg2 + arg3; } 2549 int fun2(int arg1, int arg2) 2550 { return arg1 + arg2; } 2551 ]],[[ 2552 int res3 = gcc_vmacro3(1, 2, 3); 2553 int res2 = gcc_vmacro2(1, 2); 2554 ]]) 2555 ],[ 2556 curl_cv_variadic_macros_gcc="yes" 2557 ],[ 2558 curl_cv_variadic_macros_gcc="no" 2559 ]) 2560 ]) 2561 case "$curl_cv_variadic_macros_gcc" in 2562 yes) 2563 AC_DEFINE_UNQUOTED(HAVE_VARIADIC_MACROS_GCC, 1, 2564 [Define to 1 if compiler supports old gcc variadic macro style.]) 2565 ;; 2566 esac 2567]) 2568 2569 2570dnl CURL_CHECK_CA_BUNDLE 2571dnl ------------------------------------------------- 2572dnl Check if a default ca-bundle should be used 2573dnl 2574dnl regarding the paths this will scan: 2575dnl /etc/ssl/certs/ca-certificates.crt Debian systems 2576dnl /etc/pki/tls/certs/ca-bundle.crt Redhat and Mandriva 2577dnl /usr/share/ssl/certs/ca-bundle.crt old(er) Redhat 2578dnl /usr/local/share/certs/ca-root.crt FreeBSD 2579dnl /etc/ssl/cert.pem OpenBSD 2580dnl /etc/ssl/certs/ (ca path) SUSE 2581 2582AC_DEFUN([CURL_CHECK_CA_BUNDLE], [ 2583 2584 AC_MSG_CHECKING([default CA cert bundle/path]) 2585 2586 AC_ARG_WITH(ca-bundle, 2587AC_HELP_STRING([--with-ca-bundle=FILE], [File name to use as CA bundle]) 2588AC_HELP_STRING([--without-ca-bundle], [Don't use a default CA bundle]), 2589 [ 2590 want_ca="$withval" 2591 if test "x$want_ca" = "xyes"; then 2592 AC_MSG_ERROR([--with-ca-bundle=FILE requires a path to the CA bundle]) 2593 fi 2594 ], 2595 [ want_ca="unset" ]) 2596 AC_ARG_WITH(ca-path, 2597AC_HELP_STRING([--with-ca-path=DIRECTORY], [Directory to use as CA path]) 2598AC_HELP_STRING([--without-ca-path], [Don't use a default CA path]), 2599 [ 2600 want_capath="$withval" 2601 if test "x$want_capath" = "xyes"; then 2602 AC_MSG_ERROR([--with-ca-path=DIRECTORY requires a path to the CA path directory]) 2603 fi 2604 ], 2605 [ want_capath="unset"]) 2606 2607 if test "x$want_ca" != "xno" -a "x$want_ca" != "xunset" -a \ 2608 "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then 2609 dnl both given 2610 AC_MSG_ERROR([Can't specify both --with-ca-bundle and --with-ca-path.]) 2611 elif test "x$want_ca" != "xno" -a "x$want_ca" != "xunset"; then 2612 dnl --with-ca-bundle given 2613 ca="$want_ca" 2614 capath="no" 2615 elif test "x$want_capath" != "xno" -a "x$want_capath" != "xunset"; then 2616 dnl --with-ca-path given 2617 if test "x$OPENSSL_ENABLED" != "x1"; then 2618 AC_MSG_ERROR([--with-ca-path only works with openSSL]) 2619 fi 2620 capath="$want_capath" 2621 ca="no" 2622 else 2623 dnl first try autodetecting a CA bundle , then a CA path 2624 dnl both autodetections can be skipped by --without-ca-* 2625 ca="no" 2626 capath="no" 2627 if test "x$cross_compiling" != "xyes"; then 2628 dnl NOT cross-compiling and... 2629 dnl neither of the --with-ca-* options are provided 2630 if test "x$want_ca" = "xunset"; then 2631 dnl the path we previously would have installed the curl ca bundle 2632 dnl to, and thus we now check for an already existing cert in that 2633 dnl place in case we find no other 2634 if test "x$prefix" != xNONE; then 2635 cac="${prefix}/share/curl/curl-ca-bundle.crt" 2636 else 2637 cac="$ac_default_prefix/share/curl/curl-ca-bundle.crt" 2638 fi 2639 2640 for a in /etc/ssl/certs/ca-certificates.crt \ 2641 /etc/pki/tls/certs/ca-bundle.crt \ 2642 /usr/share/ssl/certs/ca-bundle.crt \ 2643 /usr/local/share/certs/ca-root.crt \ 2644 /etc/ssl/cert.pem \ 2645 "$cac"; do 2646 if test -f "$a"; then 2647 ca="$a" 2648 break 2649 fi 2650 done 2651 fi 2652 if test "x$want_capath" = "xunset" -a "x$ca" = "xno" -a \ 2653 "x$OPENSSL_ENABLED" = "x1"; then 2654 for a in /etc/ssl/certs/; do 2655 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 2656 capath="$a" 2657 break 2658 fi 2659 done 2660 fi 2661 else 2662 dnl no option given and cross-compiling 2663 AC_MSG_WARN([skipped the ca-cert path detection when cross-compiling]) 2664 fi 2665 fi 2666 2667 if test "x$ca" != "xno"; then 2668 CURL_CA_BUNDLE='"'$ca'"' 2669 AC_DEFINE_UNQUOTED(CURL_CA_BUNDLE, "$ca", [Location of default ca bundle]) 2670 AC_SUBST(CURL_CA_BUNDLE) 2671 AC_MSG_RESULT([$ca]) 2672 elif test "x$capath" != "xno"; then 2673 CURL_CA_PATH="\"$capath\"" 2674 AC_DEFINE_UNQUOTED(CURL_CA_PATH, "$capath", [Location of default ca path]) 2675 AC_MSG_RESULT([$capath (capath)]) 2676 else 2677 AC_MSG_RESULT([no]) 2678 fi 2679]) 2680 2681 2682dnl DO_CURL_OFF_T_CHECK (TYPE, SIZE) 2683dnl ------------------------------------------------- 2684dnl Internal macro for CURL_CONFIGURE_CURL_OFF_T 2685 2686AC_DEFUN([DO_CURL_OFF_T_CHECK], [ 2687 AC_REQUIRE([CURL_INCLUDES_INTTYPES])dnl 2688 if test "$curl_typeof_curl_off_t" = "unknown" && test ! -z "$1"; then 2689 tmp_includes="" 2690 tmp_source="" 2691 tmp_fmt="" 2692 case XC_SH_TR_SH([$1]) in 2693 int64_t) 2694 tmp_includes="$curl_includes_inttypes" 2695 tmp_source="char f@<:@@:>@ = PRId64;" 2696 tmp_fmt="PRId64" 2697 ;; 2698 int32_t) 2699 tmp_includes="$curl_includes_inttypes" 2700 tmp_source="char f@<:@@:>@ = PRId32;" 2701 tmp_fmt="PRId32" 2702 ;; 2703 int16_t) 2704 tmp_includes="$curl_includes_inttypes" 2705 tmp_source="char f@<:@@:>@ = PRId16;" 2706 tmp_fmt="PRId16" 2707 ;; 2708 esac 2709 AC_COMPILE_IFELSE([ 2710 AC_LANG_PROGRAM([[ 2711 $tmp_includes 2712 typedef $1 curl_off_t; 2713 typedef char dummy_arr[sizeof(curl_off_t) == $2 ? 1 : -1]; 2714 ]],[[ 2715 $tmp_source 2716 curl_off_t dummy; 2717 ]]) 2718 ],[ 2719 if test -z "$tmp_fmt"; then 2720 curl_typeof_curl_off_t="$1" 2721 curl_sizeof_curl_off_t="$2" 2722 else 2723 CURL_CHECK_DEF([$tmp_fmt], [$curl_includes_inttypes], [silent]) 2724 AS_VAR_PUSHDEF([tmp_HaveFmtDef], [curl_cv_have_def_$tmp_fmt])dnl 2725 AS_VAR_PUSHDEF([tmp_FmtDef], [curl_cv_def_$tmp_fmt])dnl 2726 if test AS_VAR_GET(tmp_HaveFmtDef) = "yes"; then 2727 curl_format_curl_off_t=AS_VAR_GET(tmp_FmtDef) 2728 curl_typeof_curl_off_t="$1" 2729 curl_sizeof_curl_off_t="$2" 2730 fi 2731 AS_VAR_POPDEF([tmp_FmtDef])dnl 2732 AS_VAR_POPDEF([tmp_HaveFmtDef])dnl 2733 fi 2734 ]) 2735 fi 2736]) 2737 2738 2739dnl DO_CURL_OFF_T_SUFFIX_CHECK (TYPE) 2740dnl ------------------------------------------------- 2741dnl Internal macro for CURL_CONFIGURE_CURL_OFF_T 2742 2743AC_DEFUN([DO_CURL_OFF_T_SUFFIX_CHECK], [ 2744 AC_REQUIRE([CURL_INCLUDES_INTTYPES])dnl 2745 AC_MSG_CHECKING([constant suffix string for curl_off_t]) 2746 # 2747 curl_suffix_curl_off_t="unknown" 2748 curl_suffix_curl_off_tu="unknown" 2749 # 2750 case XC_SH_TR_SH([$1]) in 2751 long_long | __longlong | __longlong_t) 2752 tst_suffixes="LL::" 2753 ;; 2754 long) 2755 tst_suffixes="L::" 2756 ;; 2757 int) 2758 tst_suffixes="::" 2759 ;; 2760 __int64 | int64_t) 2761 tst_suffixes="LL:i64::" 2762 ;; 2763 __int32 | int32_t) 2764 tst_suffixes="L:i32::" 2765 ;; 2766 __int16 | int16_t) 2767 tst_suffixes="L:i16::" 2768 ;; 2769 *) 2770 AC_MSG_ERROR([unexpected data type $1]) 2771 ;; 2772 esac 2773 # 2774 old_IFS=$IFS; IFS=':' 2775 for tmp_ssuf in $tst_suffixes ; do 2776 IFS=$old_IFS 2777 if test "x$curl_suffix_curl_off_t" = "xunknown"; then 2778 case $tmp_ssuf in 2779 i64 | i32 | i16) 2780 tmp_usuf="u$tmp_ssuf" 2781 ;; 2782 LL | L) 2783 tmp_usuf="U$tmp_ssuf" 2784 ;; 2785 *) 2786 tmp_usuf="" 2787 ;; 2788 esac 2789 AC_COMPILE_IFELSE([ 2790 AC_LANG_PROGRAM([[ 2791 $curl_includes_inttypes 2792 typedef $1 new_t; 2793 ]],[[ 2794 new_t s1; 2795 new_t s2; 2796 s1 = -10$tmp_ssuf ; 2797 s2 = 20$tmp_ssuf ; 2798 if(s1 > s2) 2799 return 1; 2800 ]]) 2801 ],[ 2802 curl_suffix_curl_off_t="$tmp_ssuf" 2803 curl_suffix_curl_off_tu="$tmp_usuf" 2804 ]) 2805 fi 2806 done 2807 IFS=$old_IFS 2808 # 2809 if test "x$curl_suffix_curl_off_t" = "xunknown"; then 2810 AC_MSG_ERROR([cannot find constant suffix string for curl_off_t.]) 2811 else 2812 AC_MSG_RESULT([$curl_suffix_curl_off_t]) 2813 AC_MSG_CHECKING([constant suffix string for unsigned curl_off_t]) 2814 AC_MSG_RESULT([$curl_suffix_curl_off_tu]) 2815 fi 2816 # 2817]) 2818 2819 2820dnl CURL_CONFIGURE_CURL_OFF_T 2821dnl ------------------------------------------------- 2822dnl Find out suitable curl_off_t data type definition and associated 2823dnl items, and make the appropriate definitions used in template file 2824dnl include/curl/curlbuild.h.in to properly configure the library. 2825 2826AC_DEFUN([CURL_CONFIGURE_CURL_OFF_T], [ 2827 AC_REQUIRE([CURL_INCLUDES_INTTYPES])dnl 2828 # 2829 AC_BEFORE([$0],[AC_SYS_LARGEFILE])dnl 2830 AC_BEFORE([$0],[CURL_CONFIGURE_REENTRANT])dnl 2831 AC_BEFORE([$0],[CURL_CHECK_AIX_ALL_SOURCE])dnl 2832 # 2833 if test -z "$SED"; then 2834 AC_MSG_ERROR([SED not set. Cannot continue without SED being set.]) 2835 fi 2836 # 2837 AC_CHECK_SIZEOF(long) 2838 AC_CHECK_SIZEOF(void*) 2839 # 2840 if test -z "$ac_cv_sizeof_long" || 2841 test "$ac_cv_sizeof_long" -eq "0"; then 2842 AC_MSG_ERROR([cannot find out size of long.]) 2843 fi 2844 if test -z "$ac_cv_sizeof_voidp" || 2845 test "$ac_cv_sizeof_voidp" -eq "0"; then 2846 AC_MSG_ERROR([cannot find out size of void*.]) 2847 fi 2848 # 2849 x_LP64_long="" 2850 x_LP32_long="" 2851 x_LP16_long="" 2852 # 2853 if test "$ac_cv_sizeof_long" -eq "8" && 2854 test "$ac_cv_sizeof_voidp" -ge "8"; then 2855 x_LP64_long="long" 2856 elif test "$ac_cv_sizeof_long" -eq "4" && 2857 test "$ac_cv_sizeof_voidp" -ge "4"; then 2858 x_LP32_long="long" 2859 elif test "$ac_cv_sizeof_long" -eq "2" && 2860 test "$ac_cv_sizeof_voidp" -ge "2"; then 2861 x_LP16_long="long" 2862 fi 2863 # 2864 dnl DO_CURL_OFF_T_CHECK results are stored in next 3 vars 2865 # 2866 curl_typeof_curl_off_t="unknown" 2867 curl_sizeof_curl_off_t="unknown" 2868 curl_format_curl_off_t="unknown" 2869 curl_format_curl_off_tu="unknown" 2870 # 2871 if test "$curl_typeof_curl_off_t" = "unknown"; then 2872 AC_MSG_CHECKING([for 64-bit curl_off_t data type]) 2873 for t8 in \ 2874 "$x_LP64_long" \ 2875 'int64_t' \ 2876 '__int64' \ 2877 'long long' \ 2878 '__longlong' \ 2879 '__longlong_t' ; do 2880 DO_CURL_OFF_T_CHECK([$t8], [8]) 2881 done 2882 AC_MSG_RESULT([$curl_typeof_curl_off_t]) 2883 fi 2884 if test "$curl_typeof_curl_off_t" = "unknown"; then 2885 AC_MSG_CHECKING([for 32-bit curl_off_t data type]) 2886 for t4 in \ 2887 "$x_LP32_long" \ 2888 'int32_t' \ 2889 '__int32' \ 2890 'int' ; do 2891 DO_CURL_OFF_T_CHECK([$t4], [4]) 2892 done 2893 AC_MSG_RESULT([$curl_typeof_curl_off_t]) 2894 fi 2895 if test "$curl_typeof_curl_off_t" = "unknown"; then 2896 AC_MSG_CHECKING([for 16-bit curl_off_t data type]) 2897 for t2 in \ 2898 "$x_LP16_long" \ 2899 'int16_t' \ 2900 '__int16' \ 2901 'int' ; do 2902 DO_CURL_OFF_T_CHECK([$t2], [2]) 2903 done 2904 AC_MSG_RESULT([$curl_typeof_curl_off_t]) 2905 fi 2906 if test "$curl_typeof_curl_off_t" = "unknown"; then 2907 AC_MSG_ERROR([cannot find data type for curl_off_t.]) 2908 fi 2909 # 2910 AC_MSG_CHECKING([size of curl_off_t]) 2911 AC_MSG_RESULT([$curl_sizeof_curl_off_t]) 2912 # 2913 AC_MSG_CHECKING([formatting string directive for curl_off_t]) 2914 if test "$curl_format_curl_off_t" != "unknown"; then 2915 x_pull_headers="yes" 2916 curl_format_curl_off_t=`echo "$curl_format_curl_off_t" | "$SED" 's/[["]]//g'` 2917 curl_format_curl_off_tu=`echo "$curl_format_curl_off_t" | "$SED" 's/i$/u/'` 2918 curl_format_curl_off_tu=`echo "$curl_format_curl_off_tu" | "$SED" 's/d$/u/'` 2919 curl_format_curl_off_tu=`echo "$curl_format_curl_off_tu" | "$SED" 's/D$/U/'` 2920 else 2921 x_pull_headers="no" 2922 case XC_SH_TR_SH([$curl_typeof_curl_off_t]) in 2923 long_long | __longlong | __longlong_t) 2924 curl_format_curl_off_t="lld" 2925 curl_format_curl_off_tu="llu" 2926 ;; 2927 long) 2928 curl_format_curl_off_t="ld" 2929 curl_format_curl_off_tu="lu" 2930 ;; 2931 int) 2932 curl_format_curl_off_t="d" 2933 curl_format_curl_off_tu="u" 2934 ;; 2935 __int64) 2936 curl_format_curl_off_t="I64d" 2937 curl_format_curl_off_tu="I64u" 2938 ;; 2939 __int32) 2940 curl_format_curl_off_t="I32d" 2941 curl_format_curl_off_tu="I32u" 2942 ;; 2943 __int16) 2944 curl_format_curl_off_t="I16d" 2945 curl_format_curl_off_tu="I16u" 2946 ;; 2947 *) 2948 AC_MSG_ERROR([cannot find print format string for curl_off_t.]) 2949 ;; 2950 esac 2951 fi 2952 AC_MSG_RESULT(["$curl_format_curl_off_t"]) 2953 # 2954 AC_MSG_CHECKING([formatting string directive for unsigned curl_off_t]) 2955 AC_MSG_RESULT(["$curl_format_curl_off_tu"]) 2956 # 2957 DO_CURL_OFF_T_SUFFIX_CHECK([$curl_typeof_curl_off_t]) 2958 # 2959 if test "$x_pull_headers" = "yes"; then 2960 if test "x$ac_cv_header_sys_types_h" = "xyes"; then 2961 CURL_DEFINE_UNQUOTED([CURL_PULL_SYS_TYPES_H]) 2962 fi 2963 if test "x$ac_cv_header_stdint_h" = "xyes"; then 2964 CURL_DEFINE_UNQUOTED([CURL_PULL_STDINT_H]) 2965 fi 2966 if test "x$ac_cv_header_inttypes_h" = "xyes"; then 2967 CURL_DEFINE_UNQUOTED([CURL_PULL_INTTYPES_H]) 2968 fi 2969 fi 2970 # 2971 CURL_DEFINE_UNQUOTED([CURL_TYPEOF_CURL_OFF_T], [$curl_typeof_curl_off_t]) 2972 CURL_DEFINE_UNQUOTED([CURL_FORMAT_CURL_OFF_T], ["$curl_format_curl_off_t"]) 2973 CURL_DEFINE_UNQUOTED([CURL_FORMAT_CURL_OFF_TU], ["$curl_format_curl_off_tu"]) 2974 CURL_DEFINE_UNQUOTED([CURL_FORMAT_OFF_T], ["%$curl_format_curl_off_t"]) 2975 CURL_DEFINE_UNQUOTED([CURL_SIZEOF_CURL_OFF_T], [$curl_sizeof_curl_off_t]) 2976 CURL_DEFINE_UNQUOTED([CURL_SUFFIX_CURL_OFF_T], [$curl_suffix_curl_off_t]) 2977 CURL_DEFINE_UNQUOTED([CURL_SUFFIX_CURL_OFF_TU], [$curl_suffix_curl_off_tu]) 2978 # 2979]) 2980 2981 2982dnl CURL_CHECK_WIN32_LARGEFILE 2983dnl ------------------------------------------------- 2984dnl Check if curl's WIN32 large file will be used 2985 2986AC_DEFUN([CURL_CHECK_WIN32_LARGEFILE], [ 2987 AC_REQUIRE([CURL_CHECK_HEADER_WINDOWS])dnl 2988 AC_MSG_CHECKING([whether build target supports WIN32 file API]) 2989 curl_win32_file_api="no" 2990 if test "$ac_cv_header_windows_h" = "yes"; then 2991 if test x"$enable_largefile" != "xno"; then 2992 AC_COMPILE_IFELSE([ 2993 AC_LANG_PROGRAM([[ 2994 ]],[[ 2995#if !defined(_WIN32_WCE) && \ 2996 (defined(__MINGW32__) || \ 2997 (defined(_MSC_VER) && (defined(_WIN32) || defined(_WIN64)))) 2998 int dummy=1; 2999#else 3000 WIN32 large file API not supported. 3001#endif 3002 ]]) 3003 ],[ 3004 curl_win32_file_api="win32_large_files" 3005 ]) 3006 fi 3007 if test "$curl_win32_file_api" = "no"; then 3008 AC_COMPILE_IFELSE([ 3009 AC_LANG_PROGRAM([[ 3010 ]],[[ 3011#if defined(_WIN32_WCE) || defined(__MINGW32__) || defined(_MSC_VER) 3012 int dummy=1; 3013#else 3014 WIN32 small file API not supported. 3015#endif 3016 ]]) 3017 ],[ 3018 curl_win32_file_api="win32_small_files" 3019 ]) 3020 fi 3021 fi 3022 case "$curl_win32_file_api" in 3023 win32_large_files) 3024 AC_MSG_RESULT([yes (large file enabled)]) 3025 AC_DEFINE_UNQUOTED(USE_WIN32_LARGE_FILES, 1, 3026 [Define to 1 if you are building a Windows target with large file support.]) 3027 ;; 3028 win32_small_files) 3029 AC_MSG_RESULT([yes (large file disabled)]) 3030 AC_DEFINE_UNQUOTED(USE_WIN32_SMALL_FILES, 1, 3031 [Define to 1 if you are building a Windows target without large file support.]) 3032 ;; 3033 *) 3034 AC_MSG_RESULT([no]) 3035 ;; 3036 esac 3037]) 3038 3039dnl CURL_EXPORT_PCDIR ($pcdir) 3040dnl ------------------------ 3041dnl if $pcdir is not empty, set PKG_CONFIG_LIBDIR to $pcdir and export 3042dnl 3043dnl we need this macro since pkg-config distinguishes among empty and unset 3044dnl variable while checking PKG_CONFIG_LIBDIR 3045dnl 3046 3047AC_DEFUN([CURL_EXPORT_PCDIR], [ 3048 if test -n "$1"; then 3049 PKG_CONFIG_LIBDIR="$1" 3050 export PKG_CONFIG_LIBDIR 3051 fi 3052]) 3053 3054dnl CURL_CHECK_PKGCONFIG ($module, [$pcdir]) 3055dnl ------------------------ 3056dnl search for the pkg-config tool. Set the PKGCONFIG variable to hold the 3057dnl path to it, or 'no' if not found/present. 3058dnl 3059dnl If pkg-config is present, check that it has info about the $module or 3060dnl return "no" anyway! 3061dnl 3062dnl Optionally PKG_CONFIG_LIBDIR may be given as $pcdir. 3063dnl 3064 3065AC_DEFUN([CURL_CHECK_PKGCONFIG], [ 3066 3067 PKGCONFIG="no" 3068 3069 AC_PATH_TOOL( PKGCONFIG, pkg-config, no, $PATH:/usr/bin:/usr/local/bin) 3070 3071 if test x$PKGCONFIG != xno; then 3072 AC_MSG_CHECKING([for $1 options with pkg-config]) 3073 dnl ask pkg-config about $1 3074 itexists=`CURL_EXPORT_PCDIR([$2]) dnl 3075 $PKGCONFIG --exists $1 >/dev/null 2>&1 && echo 1` 3076 3077 if test -z "$itexists"; then 3078 dnl pkg-config does not have info about the given module! set the 3079 dnl variable to 'no' 3080 PKGCONFIG="no" 3081 AC_MSG_RESULT([no]) 3082 else 3083 AC_MSG_RESULT([found]) 3084 fi 3085 fi 3086]) 3087 3088 3089dnl CURL_GENERATE_CONFIGUREHELP_PM 3090dnl ------------------------------------------------- 3091dnl Generate test harness configurehelp.pm module, defining and 3092dnl initializing some perl variables with values which are known 3093dnl when the configure script runs. For portability reasons, test 3094dnl harness needs information on how to run the C preprocessor. 3095 3096AC_DEFUN([CURL_GENERATE_CONFIGUREHELP_PM], [ 3097 AC_REQUIRE([AC_PROG_CPP])dnl 3098 tmp_cpp=`eval echo "$ac_cpp" 2>/dev/null` 3099 if test -z "$tmp_cpp"; then 3100 tmp_cpp='cpp' 3101 fi 3102 cat >./tests/configurehelp.pm <<_EOF 3103[@%:@] This is a generated file. Do not edit. 3104 3105package configurehelp; 3106 3107use strict; 3108use warnings; 3109use Exporter; 3110 3111use vars qw( 3112 @ISA 3113 @EXPORT_OK 3114 \$Cpreprocessor 3115 ); 3116 3117@ISA = qw(Exporter); 3118 3119@EXPORT_OK = qw( 3120 \$Cpreprocessor 3121 ); 3122 3123\$Cpreprocessor = '$tmp_cpp'; 3124 31251; 3126_EOF 3127]) 3128