1#*************************************************************************** 2# _ _ ____ _ 3# Project ___| | | | _ \| | 4# / __| | | | |_) | | 5# | (__| |_| | _ <| |___ 6# \___|\___/|_| \_\_____| 7# 8# Copyright (C) 1998 - 2019, 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#*************************************************************************** 22dnl Process this file with autoconf to produce a configure script. 23 24AC_PREREQ(2.57) 25 26dnl We don't know the version number "statically" so we use a dash here 27AC_INIT([curl], [-], [a suitable curl mailing list: https://curl.haxx.se/mail/]) 28 29XC_OVR_ZZ50 30XC_OVR_ZZ60 31CURL_OVERRIDE_AUTOCONF 32 33dnl configure script copyright 34AC_COPYRIGHT([Copyright (c) 1998 - 2019 Daniel Stenberg, <daniel@haxx.se> 35This configure script may be copied, distributed and modified under the 36terms of the curl license; see COPYING for more details]) 37 38AC_CONFIG_SRCDIR([lib/urldata.h]) 39AC_CONFIG_HEADERS(lib/curl_config.h) 40AC_CONFIG_MACRO_DIR([m4]) 41AM_MAINTAINER_MODE 42m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) 43 44CURL_CHECK_OPTION_DEBUG 45CURL_CHECK_OPTION_OPTIMIZE 46CURL_CHECK_OPTION_WARNINGS 47CURL_CHECK_OPTION_WERROR 48CURL_CHECK_OPTION_CURLDEBUG 49CURL_CHECK_OPTION_SYMBOL_HIDING 50CURL_CHECK_OPTION_ARES 51CURL_CHECK_OPTION_RT 52 53XC_CHECK_PATH_SEPARATOR 54 55# 56# save the configure arguments 57# 58CONFIGURE_OPTIONS="\"$ac_configure_args\"" 59AC_SUBST(CONFIGURE_OPTIONS) 60 61CURL_CFLAG_EXTRAS="" 62if test X"$want_werror" = Xyes; then 63 CURL_CFLAG_EXTRAS="-Werror" 64 if test "$compiler_id" = "GNU_C"; then 65 dnl enable -pedantic-errors for GCC 5 and later, 66 dnl as before that it was the same as -Werror=pedantic 67 if test "$compiler_num" -ge "500"; then 68 CURL_CFLAG_EXTRAS="$CURL_CFLAG_EXTRAS -pedantic-errors" 69 fi 70 fi 71fi 72AC_SUBST(CURL_CFLAG_EXTRAS) 73 74dnl SED is mandatory for configure process and libtool. 75dnl Set it now, allowing it to be changed later. 76if test -z "$SED"; then 77 dnl allow it to be overridden 78 AC_PATH_PROG([SED], [sed], [not_found], 79 [$PATH:/usr/bin:/usr/local/bin]) 80 if test -z "$SED" || test "$SED" = "not_found"; then 81 AC_MSG_ERROR([sed not found in PATH. Cannot continue without sed.]) 82 fi 83fi 84AC_SUBST([SED]) 85 86dnl GREP is mandatory for configure process and libtool. 87dnl Set it now, allowing it to be changed later. 88if test -z "$GREP"; then 89 dnl allow it to be overridden 90 AC_PATH_PROG([GREP], [grep], [not_found], 91 [$PATH:/usr/bin:/usr/local/bin]) 92 if test -z "$GREP" || test "$GREP" = "not_found"; then 93 AC_MSG_ERROR([grep not found in PATH. Cannot continue without grep.]) 94 fi 95fi 96AC_SUBST([GREP]) 97 98dnl EGREP is mandatory for configure process and libtool. 99dnl Set it now, allowing it to be changed later. 100if test -z "$EGREP"; then 101 dnl allow it to be overridden 102 if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then 103 AC_MSG_CHECKING([for egrep]) 104 EGREP="$GREP -E" 105 AC_MSG_RESULT([$EGREP]) 106 else 107 AC_PATH_PROG([EGREP], [egrep], [not_found], 108 [$PATH:/usr/bin:/usr/local/bin]) 109 fi 110fi 111if test -z "$EGREP" || test "$EGREP" = "not_found"; then 112 AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.]) 113fi 114AC_SUBST([EGREP]) 115 116dnl AR is mandatory for configure process and libtool. 117dnl This is target dependent, so check it as a tool. 118if test -z "$AR"; then 119 dnl allow it to be overridden 120 AC_PATH_TOOL([AR], [ar], [not_found], 121 [$PATH:/usr/bin:/usr/local/bin]) 122 if test -z "$AR" || test "$AR" = "not_found"; then 123 AC_MSG_ERROR([ar not found in PATH. Cannot continue without ar.]) 124 fi 125fi 126AC_SUBST([AR]) 127 128AC_SUBST(libext) 129 130dnl figure out the libcurl version 131CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)".*/\1/p' ${srcdir}/include/curl/curlver.h` 132XC_CHECK_PROG_CC 133 134dnl for --enable-code-coverage 135CURL_COVERAGE 136 137XC_AUTOMAKE 138AC_MSG_CHECKING([curl version]) 139AC_MSG_RESULT($CURLVERSION) 140 141AC_SUBST(CURLVERSION) 142 143dnl 144dnl we extract the numerical version for curl-config only 145VERSIONNUM=`$SED -ne 's/^#define LIBCURL_VERSION_NUM 0x\([0-9A-Fa-f]*\).*/\1/p' ${srcdir}/include/curl/curlver.h` 146AC_SUBST(VERSIONNUM) 147 148dnl Solaris pkgadd support definitions 149PKGADD_PKG="HAXXcurl" 150PKGADD_NAME="curl - a client that groks URLs" 151PKGADD_VENDOR="curl.haxx.se" 152AC_SUBST(PKGADD_PKG) 153AC_SUBST(PKGADD_NAME) 154AC_SUBST(PKGADD_VENDOR) 155 156dnl 157dnl initialize all the info variables 158 curl_ssl_msg="no (--with-{ssl,gnutls,nss,mbedtls,wolfssl,schannel,secure-transport,mesalink,amissl} )" 159 curl_ssh_msg="no (--with-libssh2)" 160 curl_zlib_msg="no (--with-zlib)" 161 curl_brotli_msg="no (--with-brotli)" 162 curl_gss_msg="no (--with-gssapi)" 163curl_tls_srp_msg="no (--enable-tls-srp)" 164 curl_res_msg="default (--enable-ares / --enable-threaded-resolver)" 165 curl_ipv6_msg="no (--enable-ipv6)" 166curl_unix_sockets_msg="no (--enable-unix-sockets)" 167 curl_idn_msg="no (--with-{libidn2,winidn})" 168 curl_manual_msg="no (--enable-manual)" 169curl_libcurl_msg="enabled (--disable-libcurl-option)" 170curl_verbose_msg="enabled (--disable-verbose)" 171 curl_sspi_msg="no (--enable-sspi)" 172 curl_ldap_msg="no (--enable-ldap / --with-ldap-lib / --with-lber-lib)" 173 curl_ldaps_msg="no (--enable-ldaps)" 174 curl_rtsp_msg="no (--enable-rtsp)" 175 curl_rtmp_msg="no (--with-librtmp)" 176 curl_mtlnk_msg="no (--with-libmetalink)" 177 curl_psl_msg="no (--with-libpsl)" 178 179 ssl_backends= 180 181dnl 182dnl Save some initial values the user might have provided 183dnl 184INITIAL_LDFLAGS=$LDFLAGS 185INITIAL_LIBS=$LIBS 186 187dnl 188dnl Detect the canonical host and target build environment 189dnl 190 191AC_CANONICAL_HOST 192dnl Get system canonical name 193AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS]) 194 195# Silence warning: ar: 'u' modifier ignored since 'D' is the default 196AC_SUBST(AR_FLAGS, [cr]) 197 198dnl This defines _ALL_SOURCE for AIX 199CURL_CHECK_AIX_ALL_SOURCE 200 201dnl Our configure and build reentrant settings 202CURL_CONFIGURE_THREAD_SAFE 203CURL_CONFIGURE_REENTRANT 204 205dnl check for how to do large files 206AC_SYS_LARGEFILE 207 208XC_LIBTOOL 209 210# 211# Automake conditionals based on libtool related checks 212# 213 214AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSION_INFO], 215 [test "x$xc_lt_shlib_use_version_info" = 'xyes']) 216AM_CONDITIONAL([CURL_LT_SHLIB_USE_NO_UNDEFINED], 217 [test "x$xc_lt_shlib_use_no_undefined" = 'xyes']) 218AM_CONDITIONAL([CURL_LT_SHLIB_USE_MIMPURE_TEXT], 219 [test "x$xc_lt_shlib_use_mimpure_text" = 'xyes']) 220 221# 222# Due to libtool and automake machinery limitations of not allowing 223# specifying separate CPPFLAGS or CFLAGS when compiling objects for 224# inclusion of these in shared or static libraries, we are forced to 225# build using separate configure runs for shared and static libraries 226# on systems where different CPPFLAGS or CFLAGS are mandatory in order 227# to compile objects for each kind of library. Notice that relying on 228# the '-DPIC' CFLAG that libtool provides is not valid given that the 229# user might for example choose to build static libraries with PIC. 230# 231 232# 233# Make our Makefile.am files use the staticlib CPPFLAG only when strictly 234# targeting a static library and not building its shared counterpart. 235# 236 237AM_CONDITIONAL([USE_CPPFLAG_CURL_STATICLIB], 238 [test "x$xc_lt_build_static_only" = 'xyes']) 239 240# 241# Make staticlib CPPFLAG variable and its definition visible in output 242# files unconditionally, providing an empty definition unless strictly 243# targeting a static library and not building its shared counterpart. 244# 245 246CPPFLAG_CURL_STATICLIB= 247if test "x$xc_lt_build_static_only" = 'xyes'; then 248 CPPFLAG_CURL_STATICLIB='-DCURL_STATICLIB' 249fi 250AC_SUBST([CPPFLAG_CURL_STATICLIB]) 251 252 253# Determine whether all dependent libraries must be specified when linking 254if test "X$enable_shared" = "Xyes" -a "X$link_all_deplibs" = "Xno" 255then 256 REQUIRE_LIB_DEPS=no 257else 258 REQUIRE_LIB_DEPS=yes 259fi 260AC_SUBST(REQUIRE_LIB_DEPS) 261AM_CONDITIONAL(USE_EXPLICIT_LIB_DEPS, test x$REQUIRE_LIB_DEPS = xyes) 262 263dnl check if there's a way to force code inline 264AC_C_INLINE 265 266dnl ********************************************************************** 267dnl platform/compiler/architecture specific checks/flags 268dnl ********************************************************************** 269 270CURL_CHECK_COMPILER 271CURL_SET_COMPILER_BASIC_OPTS 272CURL_SET_COMPILER_DEBUG_OPTS 273CURL_SET_COMPILER_OPTIMIZE_OPTS 274CURL_SET_COMPILER_WARNING_OPTS 275 276if test "$compiler_id" = "INTEL_UNIX_C"; then 277 # 278 if test "$compiler_num" -ge "1000"; then 279 dnl icc 10.X or later 280 CFLAGS="$CFLAGS -shared-intel" 281 elif test "$compiler_num" -ge "900"; then 282 dnl icc 9.X specific 283 CFLAGS="$CFLAGS -i-dynamic" 284 fi 285 # 286fi 287 288CURL_CHECK_COMPILER_HALT_ON_ERROR 289CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE 290CURL_CHECK_COMPILER_PROTOTYPE_MISMATCH 291CURL_CHECK_COMPILER_SYMBOL_HIDING 292 293CURL_CHECK_CURLDEBUG 294AM_CONDITIONAL(CURLDEBUG, test x$want_curldebug = xyes) 295 296supports_unittests=yes 297# cross-compilation of unit tests static library/programs fails when 298# libcurl shared library is built. This might be due to a libtool or 299# automake issue. In this case we disable unit tests. 300if test "x$cross_compiling" != "xno" && 301 test "x$enable_shared" != "xno"; then 302 supports_unittests=no 303fi 304 305# IRIX 6.5.24 gcc 3.3 autobuilds fail unittests library compilation due to 306# a problem related with OpenSSL headers and library versions not matching. 307# Disable unit tests while time to further investigate this is found. 308case $host in 309 mips-sgi-irix6.5) 310 if test "$compiler_id" = "GNU_C"; then 311 supports_unittests=no 312 fi 313 ;; 314esac 315 316# All AIX autobuilds fails unit tests linking against unittests library 317# due to unittests library being built with no symbols or members. Libtool ? 318# Disable unit tests while time to further investigate this is found. 319case $host_os in 320 aix*) 321 supports_unittests=no 322 ;; 323esac 324 325dnl Build unit tests when option --enable-debug is given. 326if test "x$want_debug" = "xyes" && 327 test "x$supports_unittests" = "xyes"; then 328 want_unittests=yes 329else 330 want_unittests=no 331fi 332AM_CONDITIONAL(BUILD_UNITTESTS, test x$want_unittests = xyes) 333 334dnl ********************************************************************** 335dnl Compilation based checks should not be done before this point. 336dnl ********************************************************************** 337 338dnl ********************************************************************** 339dnl Make sure that our checks for headers windows.h winsock.h winsock2.h 340dnl and ws2tcpip.h take precedence over any other further checks which 341dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for 342dnl this specific header files. And do them before its results are used. 343dnl ********************************************************************** 344 345CURL_CHECK_HEADER_WINDOWS 346CURL_CHECK_NATIVE_WINDOWS 347case X-"$curl_cv_native_windows" in 348 X-yes) 349 CURL_CHECK_HEADER_WINSOCK 350 CURL_CHECK_HEADER_WINSOCK2 351 CURL_CHECK_HEADER_WS2TCPIP 352 CURL_CHECK_HEADER_WINLDAP 353 CURL_CHECK_HEADER_WINBER 354 ;; 355 *) 356 curl_cv_header_winsock_h="no" 357 curl_cv_header_winsock2_h="no" 358 curl_cv_header_ws2tcpip_h="no" 359 curl_cv_header_winldap_h="no" 360 curl_cv_header_winber_h="no" 361 ;; 362esac 363CURL_CHECK_WIN32_LARGEFILE 364 365CURL_MAC_CFLAGS 366CURL_SUPPORTS_BUILTIN_AVAILABLE 367 368 369dnl ************************************************************ 370dnl switch off particular protocols 371dnl 372AC_MSG_CHECKING([whether to support http]) 373AC_ARG_ENABLE(http, 374AC_HELP_STRING([--enable-http],[Enable HTTP support]) 375AC_HELP_STRING([--disable-http],[Disable HTTP support]), 376[ case "$enableval" in 377 no) 378 AC_MSG_RESULT(no) 379 AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP]) 380 disable_http="yes" 381 AC_MSG_WARN([disable HTTP disables FTP over proxy and RTSP]) 382 AC_SUBST(CURL_DISABLE_HTTP, [1]) 383 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP]) 384 AC_SUBST(CURL_DISABLE_RTSP, [1]) 385 ;; 386 *) AC_MSG_RESULT(yes) 387 ;; 388 esac ], 389 AC_MSG_RESULT(yes) 390) 391AC_MSG_CHECKING([whether to support ftp]) 392AC_ARG_ENABLE(ftp, 393AC_HELP_STRING([--enable-ftp],[Enable FTP support]) 394AC_HELP_STRING([--disable-ftp],[Disable FTP support]), 395[ case "$enableval" in 396 no) 397 AC_MSG_RESULT(no) 398 AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP]) 399 AC_SUBST(CURL_DISABLE_FTP, [1]) 400 ;; 401 *) AC_MSG_RESULT(yes) 402 ;; 403 esac ], 404 AC_MSG_RESULT(yes) 405) 406AC_MSG_CHECKING([whether to support file]) 407AC_ARG_ENABLE(file, 408AC_HELP_STRING([--enable-file],[Enable FILE support]) 409AC_HELP_STRING([--disable-file],[Disable FILE support]), 410[ case "$enableval" in 411 no) 412 AC_MSG_RESULT(no) 413 AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE]) 414 AC_SUBST(CURL_DISABLE_FILE, [1]) 415 ;; 416 *) AC_MSG_RESULT(yes) 417 ;; 418 esac ], 419 AC_MSG_RESULT(yes) 420) 421AC_MSG_CHECKING([whether to support ldap]) 422AC_ARG_ENABLE(ldap, 423AC_HELP_STRING([--enable-ldap],[Enable LDAP support]) 424AC_HELP_STRING([--disable-ldap],[Disable LDAP support]), 425[ case "$enableval" in 426 no) 427 AC_MSG_RESULT(no) 428 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP]) 429 AC_SUBST(CURL_DISABLE_LDAP, [1]) 430 ;; 431 *) 432 AC_MSG_RESULT(yes) 433 ;; 434 esac ],[ 435 AC_MSG_RESULT(yes) ] 436) 437AC_MSG_CHECKING([whether to support ldaps]) 438AC_ARG_ENABLE(ldaps, 439AC_HELP_STRING([--enable-ldaps],[Enable LDAPS support]) 440AC_HELP_STRING([--disable-ldaps],[Disable LDAPS support]), 441[ case "$enableval" in 442 no) 443 AC_MSG_RESULT(no) 444 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) 445 AC_SUBST(CURL_DISABLE_LDAPS, [1]) 446 ;; 447 *) if test "x$CURL_DISABLE_LDAP" = "x1" ; then 448 AC_MSG_RESULT(LDAP needs to be enabled to support LDAPS) 449 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) 450 AC_SUBST(CURL_DISABLE_LDAPS, [1]) 451 else 452 AC_MSG_RESULT(yes) 453 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation]) 454 AC_SUBST(HAVE_LDAP_SSL, [1]) 455 fi 456 ;; 457 esac ],[ 458 if test "x$CURL_DISABLE_LDAP" = "x1" ; then 459 AC_MSG_RESULT(no) 460 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) 461 AC_SUBST(CURL_DISABLE_LDAPS, [1]) 462 else 463 AC_MSG_RESULT(yes) 464 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation]) 465 AC_SUBST(HAVE_LDAP_SSL, [1]) 466 fi ] 467) 468 469AC_MSG_CHECKING([whether to support rtsp]) 470AC_ARG_ENABLE(rtsp, 471AC_HELP_STRING([--enable-rtsp],[Enable RTSP support]) 472AC_HELP_STRING([--disable-rtsp],[Disable RTSP support]), 473[ case "$enableval" in 474 no) 475 AC_MSG_RESULT(no) 476 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP]) 477 AC_SUBST(CURL_DISABLE_RTSP, [1]) 478 ;; 479 *) if test x$CURL_DISABLE_HTTP = x1 ; then 480 AC_MSG_ERROR(HTTP support needs to be enabled in order to enable RTSP support!) 481 else 482 AC_MSG_RESULT(yes) 483 curl_rtsp_msg="enabled" 484 fi 485 ;; 486 esac ], 487 if test "x$CURL_DISABLE_HTTP" != "x1"; then 488 AC_MSG_RESULT(yes) 489 curl_rtsp_msg="enabled" 490 else 491 AC_MSG_RESULT(no) 492 fi 493) 494 495AC_MSG_CHECKING([whether to support proxies]) 496AC_ARG_ENABLE(proxy, 497AC_HELP_STRING([--enable-proxy],[Enable proxy support]) 498AC_HELP_STRING([--disable-proxy],[Disable proxy support]), 499[ case "$enableval" in 500 no) 501 AC_MSG_RESULT(no) 502 AC_DEFINE(CURL_DISABLE_PROXY, 1, [to disable proxies]) 503 AC_SUBST(CURL_DISABLE_PROXY, [1]) 504 ;; 505 *) AC_MSG_RESULT(yes) 506 ;; 507 esac ], 508 AC_MSG_RESULT(yes) 509) 510 511AC_MSG_CHECKING([whether to support dict]) 512AC_ARG_ENABLE(dict, 513AC_HELP_STRING([--enable-dict],[Enable DICT support]) 514AC_HELP_STRING([--disable-dict],[Disable DICT support]), 515[ case "$enableval" in 516 no) 517 AC_MSG_RESULT(no) 518 AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT]) 519 AC_SUBST(CURL_DISABLE_DICT, [1]) 520 ;; 521 *) AC_MSG_RESULT(yes) 522 ;; 523 esac ], 524 AC_MSG_RESULT(yes) 525) 526AC_MSG_CHECKING([whether to support telnet]) 527AC_ARG_ENABLE(telnet, 528AC_HELP_STRING([--enable-telnet],[Enable TELNET support]) 529AC_HELP_STRING([--disable-telnet],[Disable TELNET support]), 530[ case "$enableval" in 531 no) 532 AC_MSG_RESULT(no) 533 AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET]) 534 AC_SUBST(CURL_DISABLE_TELNET, [1]) 535 ;; 536 *) AC_MSG_RESULT(yes) 537 ;; 538 esac ], 539 AC_MSG_RESULT(yes) 540) 541AC_MSG_CHECKING([whether to support tftp]) 542AC_ARG_ENABLE(tftp, 543AC_HELP_STRING([--enable-tftp],[Enable TFTP support]) 544AC_HELP_STRING([--disable-tftp],[Disable TFTP support]), 545[ case "$enableval" in 546 no) 547 AC_MSG_RESULT(no) 548 AC_DEFINE(CURL_DISABLE_TFTP, 1, [to disable TFTP]) 549 AC_SUBST(CURL_DISABLE_TFTP, [1]) 550 ;; 551 *) AC_MSG_RESULT(yes) 552 ;; 553 esac ], 554 AC_MSG_RESULT(yes) 555) 556 557AC_MSG_CHECKING([whether to support pop3]) 558AC_ARG_ENABLE(pop3, 559AC_HELP_STRING([--enable-pop3],[Enable POP3 support]) 560AC_HELP_STRING([--disable-pop3],[Disable POP3 support]), 561[ case "$enableval" in 562 no) 563 AC_MSG_RESULT(no) 564 AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3]) 565 AC_SUBST(CURL_DISABLE_POP3, [1]) 566 ;; 567 *) AC_MSG_RESULT(yes) 568 ;; 569 esac ], 570 AC_MSG_RESULT(yes) 571) 572 573 574AC_MSG_CHECKING([whether to support imap]) 575AC_ARG_ENABLE(imap, 576AC_HELP_STRING([--enable-imap],[Enable IMAP support]) 577AC_HELP_STRING([--disable-imap],[Disable IMAP support]), 578[ case "$enableval" in 579 no) 580 AC_MSG_RESULT(no) 581 AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP]) 582 AC_SUBST(CURL_DISABLE_IMAP, [1]) 583 ;; 584 *) AC_MSG_RESULT(yes) 585 ;; 586 esac ], 587 AC_MSG_RESULT(yes) 588) 589 590 591AC_MSG_CHECKING([whether to support smb]) 592AC_ARG_ENABLE(smb, 593AC_HELP_STRING([--enable-smb],[Enable SMB/CIFS support]) 594AC_HELP_STRING([--disable-smb],[Disable SMB/CIFS support]), 595[ case "$enableval" in 596 no) 597 AC_MSG_RESULT(no) 598 AC_DEFINE(CURL_DISABLE_SMB, 1, [to disable SMB/CIFS]) 599 AC_SUBST(CURL_DISABLE_SMB, [1]) 600 ;; 601 *) AC_MSG_RESULT(yes) 602 ;; 603 esac ], 604 AC_MSG_RESULT(yes) 605) 606 607AC_MSG_CHECKING([whether to support smtp]) 608AC_ARG_ENABLE(smtp, 609AC_HELP_STRING([--enable-smtp],[Enable SMTP support]) 610AC_HELP_STRING([--disable-smtp],[Disable SMTP support]), 611[ case "$enableval" in 612 no) 613 AC_MSG_RESULT(no) 614 AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP]) 615 AC_SUBST(CURL_DISABLE_SMTP, [1]) 616 ;; 617 *) AC_MSG_RESULT(yes) 618 ;; 619 esac ], 620 AC_MSG_RESULT(yes) 621) 622 623AC_MSG_CHECKING([whether to support gopher]) 624AC_ARG_ENABLE(gopher, 625AC_HELP_STRING([--enable-gopher],[Enable Gopher support]) 626AC_HELP_STRING([--disable-gopher],[Disable Gopher support]), 627[ case "$enableval" in 628 no) 629 AC_MSG_RESULT(no) 630 AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable Gopher]) 631 AC_SUBST(CURL_DISABLE_GOPHER, [1]) 632 ;; 633 *) AC_MSG_RESULT(yes) 634 ;; 635 esac ], 636 AC_MSG_RESULT(yes) 637) 638 639 640dnl ********************************************************************** 641dnl Check for built-in manual 642dnl ********************************************************************** 643 644AC_MSG_CHECKING([whether to provide built-in manual]) 645AC_ARG_ENABLE(manual, 646AC_HELP_STRING([--enable-manual],[Enable built-in manual]) 647AC_HELP_STRING([--disable-manual],[Disable built-in manual]), 648[ case "$enableval" in 649 no) 650 AC_MSG_RESULT(no) 651 ;; 652 *) AC_MSG_RESULT(yes) 653 USE_MANUAL="1" 654 ;; 655 esac ], 656 AC_MSG_RESULT(yes) 657 USE_MANUAL="1" 658) 659dnl The actual use of the USE_MANUAL variable is done much later in this 660dnl script to allow other actions to disable it as well. 661 662dnl ************************************************************ 663dnl disable C code generation support 664dnl 665AC_MSG_CHECKING([whether to enable generation of C code]) 666AC_ARG_ENABLE(libcurl_option, 667AC_HELP_STRING([--enable-libcurl-option],[Enable --libcurl C code generation support]) 668AC_HELP_STRING([--disable-libcurl-option],[Disable --libcurl C code generation support]), 669[ case "$enableval" in 670 no) 671 AC_MSG_RESULT(no) 672 AC_DEFINE(CURL_DISABLE_LIBCURL_OPTION, 1, [to disable --libcurl C code generation option]) 673 curl_libcurl_msg="no" 674 ;; 675 *) AC_MSG_RESULT(yes) 676 ;; 677 esac ], 678 AC_MSG_RESULT(yes) 679) 680 681dnl ********************************************************************** 682dnl Checks for libraries. 683dnl ********************************************************************** 684 685AC_MSG_CHECKING([whether to use libgcc]) 686AC_ARG_ENABLE(libgcc, 687AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]), 688[ case "$enableval" in 689 yes) 690 LIBS="-lgcc $LIBS" 691 AC_MSG_RESULT(yes) 692 ;; 693 *) AC_MSG_RESULT(no) 694 ;; 695 esac ], 696 AC_MSG_RESULT(no) 697) 698 699CURL_CHECK_LIB_XNET 700 701dnl gethostbyname without lib or in the nsl lib? 702AC_CHECK_FUNC(gethostbyname, 703 [HAVE_GETHOSTBYNAME="1" 704 ], 705 [ AC_CHECK_LIB(nsl, gethostbyname, 706 [HAVE_GETHOSTBYNAME="1" 707 LIBS="-lnsl $LIBS" 708 ]) 709 ]) 710 711if test "$HAVE_GETHOSTBYNAME" != "1" 712then 713 dnl gethostbyname in the socket lib? 714 AC_CHECK_LIB(socket, gethostbyname, 715 [HAVE_GETHOSTBYNAME="1" 716 LIBS="-lsocket $LIBS" 717 ]) 718fi 719 720if test "$HAVE_GETHOSTBYNAME" != "1" 721then 722 dnl gethostbyname in the watt lib? 723 AC_CHECK_LIB(watt, gethostbyname, 724 [HAVE_GETHOSTBYNAME="1" 725 CPPFLAGS="-I/dev/env/WATT_ROOT/inc" 726 LDFLAGS="-L/dev/env/WATT_ROOT/lib" 727 LIBS="-lwatt $LIBS" 728 ]) 729fi 730 731dnl At least one system has been identified to require BOTH nsl and socket 732dnl libs at the same time to link properly. 733if test "$HAVE_GETHOSTBYNAME" != "1" 734then 735 AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs]) 736 my_ac_save_LIBS=$LIBS 737 LIBS="-lnsl -lsocket $LIBS" 738 AC_LINK_IFELSE([ 739 AC_LANG_PROGRAM([[ 740 ]],[[ 741 gethostbyname(); 742 ]]) 743 ],[ 744 AC_MSG_RESULT([yes]) 745 HAVE_GETHOSTBYNAME="1" 746 ],[ 747 AC_MSG_RESULT([no]) 748 LIBS=$my_ac_save_LIBS 749 ]) 750fi 751 752if test "$HAVE_GETHOSTBYNAME" != "1" 753then 754 dnl This is for winsock systems 755 if test "$curl_cv_header_windows_h" = "yes"; then 756 if test "$curl_cv_header_winsock_h" = "yes"; then 757 case $host in 758 *-*-mingw32ce*) 759 winsock_LIB="-lwinsock" 760 ;; 761 *) 762 winsock_LIB="-lwsock32" 763 ;; 764 esac 765 fi 766 if test "$curl_cv_header_winsock2_h" = "yes"; then 767 winsock_LIB="-lws2_32" 768 fi 769 if test ! -z "$winsock_LIB"; then 770 my_ac_save_LIBS=$LIBS 771 LIBS="$winsock_LIB $LIBS" 772 AC_MSG_CHECKING([for gethostbyname in $winsock_LIB]) 773 AC_LINK_IFELSE([ 774 AC_LANG_PROGRAM([[ 775#ifdef HAVE_WINDOWS_H 776#ifndef WIN32_LEAN_AND_MEAN 777#define WIN32_LEAN_AND_MEAN 778#endif 779#include <windows.h> 780#ifdef HAVE_WINSOCK2_H 781#include <winsock2.h> 782#else 783#ifdef HAVE_WINSOCK_H 784#include <winsock.h> 785#endif 786#endif 787#endif 788 ]],[[ 789 gethostbyname("www.dummysite.com"); 790 ]]) 791 ],[ 792 AC_MSG_RESULT([yes]) 793 HAVE_GETHOSTBYNAME="1" 794 ],[ 795 AC_MSG_RESULT([no]) 796 winsock_LIB="" 797 LIBS=$my_ac_save_LIBS 798 ]) 799 fi 800 fi 801fi 802 803if test "$HAVE_GETHOSTBYNAME" != "1" 804then 805 dnl This is for Minix 3.1 806 AC_MSG_CHECKING([for gethostbyname for Minix 3]) 807 AC_LINK_IFELSE([ 808 AC_LANG_PROGRAM([[ 809/* Older Minix versions may need <net/gen/netdb.h> here instead */ 810#include <netdb.h> 811 ]],[[ 812 gethostbyname("www.dummysite.com"); 813 ]]) 814 ],[ 815 AC_MSG_RESULT([yes]) 816 HAVE_GETHOSTBYNAME="1" 817 ],[ 818 AC_MSG_RESULT([no]) 819 ]) 820fi 821 822if test "$HAVE_GETHOSTBYNAME" != "1" 823then 824 dnl This is for eCos with a stubbed DNS implementation 825 AC_MSG_CHECKING([for gethostbyname for eCos]) 826 AC_LINK_IFELSE([ 827 AC_LANG_PROGRAM([[ 828#include <stdio.h> 829#include <netdb.h> 830 ]],[[ 831 gethostbyname("www.dummysite.com"); 832 ]]) 833 ],[ 834 AC_MSG_RESULT([yes]) 835 HAVE_GETHOSTBYNAME="1" 836 ],[ 837 AC_MSG_RESULT([no]) 838 ]) 839fi 840 841if test "$HAVE_GETHOSTBYNAME" != "1" 842then 843 dnl This is for AmigaOS with bsdsocket.library - needs testing before -lnet 844 AC_MSG_CHECKING([for gethostbyname for AmigaOS bsdsocket.library]) 845 AC_LINK_IFELSE([ 846 AC_LANG_PROGRAM([[ 847#include <proto/bsdsocket.h> 848struct Library *SocketBase = NULL; 849 ]],[[ 850 gethostbyname("www.dummysite.com"); 851 ]]) 852 ],[ 853 AC_MSG_RESULT([yes]) 854 HAVE_GETHOSTBYNAME="1" 855 HAVE_PROTO_BSDSOCKET_H="1" 856 AC_DEFINE(HAVE_PROTO_BSDSOCKET_H, 1, [if Amiga bsdsocket.library is in use]) 857 AC_SUBST(HAVE_PROTO_BSDSOCKET_H, [1]) 858 ],[ 859 AC_MSG_RESULT([no]) 860 ]) 861fi 862 863if test "$HAVE_GETHOSTBYNAME" != "1" 864then 865 dnl gethostbyname in the network lib - for Haiku OS 866 AC_CHECK_LIB(network, gethostbyname, 867 [HAVE_GETHOSTBYNAME="1" 868 LIBS="-lnetwork $LIBS" 869 ]) 870fi 871 872if test "$HAVE_GETHOSTBYNAME" != "1" 873then 874 dnl gethostbyname in the net lib - for BeOS 875 AC_CHECK_LIB(net, gethostbyname, 876 [HAVE_GETHOSTBYNAME="1" 877 LIBS="-lnet $LIBS" 878 ]) 879fi 880 881 882if test "$HAVE_GETHOSTBYNAME" != "1"; then 883 AC_MSG_ERROR([couldn't find libraries for gethostbyname()]) 884fi 885 886CURL_CHECK_LIBS_CONNECT 887 888CURL_NETWORK_LIBS=$LIBS 889 890dnl ********************************************************************** 891dnl In case that function clock_gettime with monotonic timer is available, 892dnl check for additional required libraries. 893dnl ********************************************************************** 894CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC 895 896dnl ********************************************************************** 897dnl The preceding library checks are all potentially useful for test 898dnl servers and libtest cases which require networking and clock_gettime 899dnl support. Save the list of required libraries at this point for use 900dnl while linking those test servers and programs. 901dnl ********************************************************************** 902CURL_NETWORK_AND_TIME_LIBS=$LIBS 903 904dnl ********************************************************************** 905dnl Check for the presence of ZLIB libraries and headers 906dnl ********************************************************************** 907 908dnl Check for & handle argument to --with-zlib. 909 910clean_CPPFLAGS=$CPPFLAGS 911clean_LDFLAGS=$LDFLAGS 912clean_LIBS=$LIBS 913ZLIB_LIBS="" 914AC_ARG_WITH(zlib, 915AC_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH]) 916AC_HELP_STRING([--without-zlib],[disable use of zlib]), 917 [OPT_ZLIB="$withval"]) 918 919if test "$OPT_ZLIB" = "no" ; then 920 AC_MSG_WARN([zlib disabled]) 921else 922 if test "$OPT_ZLIB" = "yes" ; then 923 OPT_ZLIB="" 924 fi 925 926 if test -z "$OPT_ZLIB" ; then 927 CURL_CHECK_PKGCONFIG(zlib) 928 929 if test "$PKGCONFIG" != "no" ; then 930 LIBS="`$PKGCONFIG --libs-only-l zlib` $LIBS" 931 LDFLAGS="$LDFLAGS `$PKGCONFIG --libs-only-L zlib`" 932 CPPFLAGS="$CPPFLAGS `$PKGCONFIG --cflags-only-I zlib`" 933 OPT_ZLIB="" 934 HAVE_LIBZ="1" 935 fi 936 937 if test -z "$HAVE_LIBZ"; then 938 939 dnl Check for the lib without setting any new path, since many 940 dnl people have it in the default path 941 942 AC_CHECK_LIB(z, inflateEnd, 943 dnl libz found, set the variable 944 [HAVE_LIBZ="1" 945 LIBS="-lz $LIBS"], 946 dnl if no lib found, try /usr/local 947 [OPT_ZLIB="/usr/local"]) 948 fi 949 fi 950 951 dnl Add a nonempty path to the compiler flags 952 if test -n "$OPT_ZLIB"; then 953 CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include" 954 LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff" 955 fi 956 957 AC_CHECK_HEADER(zlib.h, 958 [ 959 dnl zlib.h was found 960 HAVE_ZLIB_H="1" 961 dnl if the lib wasn't found already, try again with the new paths 962 if test "$HAVE_LIBZ" != "1"; then 963 AC_CHECK_LIB(z, gzread, 964 [ 965 dnl the lib was found! 966 HAVE_LIBZ="1" 967 LIBS="-lz $LIBS" 968 ], 969 [ CPPFLAGS=$clean_CPPFLAGS 970 LDFLAGS=$clean_LDFLAGS]) 971 fi 972 ], 973 [ 974 dnl zlib.h was not found, restore the flags 975 CPPFLAGS=$clean_CPPFLAGS 976 LDFLAGS=$clean_LDFLAGS] 977 ) 978 979 if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1" 980 then 981 AC_MSG_WARN([configure found only the libz lib, not the header file!]) 982 HAVE_LIBZ="" 983 CPPFLAGS=$clean_CPPFLAGS 984 LDFLAGS=$clean_LDFLAGS 985 LIBS=$clean_LIBS 986 elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1" 987 then 988 AC_MSG_WARN([configure found only the libz header file, not the lib!]) 989 CPPFLAGS=$clean_CPPFLAGS 990 LDFLAGS=$clean_LDFLAGS 991 LIBS=$clean_LIBS 992 elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1" 993 then 994 dnl both header and lib were found! 995 AC_SUBST(HAVE_LIBZ) 996 AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file]) 997 AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available]) 998 999 ZLIB_LIBS="-lz" 1000 LIBS="-lz $clean_LIBS" 1001 1002 dnl replace 'HAVE_LIBZ' in the automake makefile.ams 1003 AMFIXLIB="1" 1004 AC_MSG_NOTICE([found both libz and libz.h header]) 1005 curl_zlib_msg="enabled" 1006 fi 1007fi 1008 1009dnl set variable for use in automakefile(s) 1010AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1) 1011AC_SUBST(ZLIB_LIBS) 1012 1013dnl ********************************************************************** 1014dnl Check for the presence of BROTLI decoder libraries and headers 1015dnl ********************************************************************** 1016 1017dnl Brotli project home page: https://github.com/google/brotli 1018 1019dnl Default to compiler & linker defaults for BROTLI files & libraries. 1020OPT_BROTLI=off 1021AC_ARG_WITH(brotli,dnl 1022AC_HELP_STRING([--with-brotli=PATH],[Where to look for brotli, PATH points to the BROTLI installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]) 1023AC_HELP_STRING([--without-brotli], [disable BROTLI]), 1024 OPT_BROTLI=$withval) 1025 1026if test X"$OPT_BROTLI" != Xno; then 1027 dnl backup the pre-brotli variables 1028 CLEANLDFLAGS="$LDFLAGS" 1029 CLEANCPPFLAGS="$CPPFLAGS" 1030 CLEANLIBS="$LIBS" 1031 1032 case "$OPT_BROTLI" in 1033 yes) 1034 dnl --with-brotli (without path) used 1035 CURL_CHECK_PKGCONFIG(libbrotlidec) 1036 1037 if test "$PKGCONFIG" != "no" ; then 1038 LIB_BROTLI=`$PKGCONFIG --libs-only-l libbrotlidec` 1039 LD_BROTLI=`$PKGCONFIG --libs-only-L libbrotlidec` 1040 CPP_BROTLI=`$PKGCONFIG --cflags-only-I libbrotlidec` 1041 version=`$PKGCONFIG --modversion libbrotlidec` 1042 DIR_BROTLI=`echo $LD_BROTLI | $SED -e 's/-L//'` 1043 fi 1044 1045 ;; 1046 off) 1047 dnl no --with-brotli option given, just check default places 1048 ;; 1049 *) 1050 dnl use the given --with-brotli spot 1051 PREFIX_BROTLI=$OPT_BROTLI 1052 ;; 1053 esac 1054 1055 dnl if given with a prefix, we set -L and -I based on that 1056 if test -n "$PREFIX_BROTLI"; then 1057 LIB_BROTLI="-lbrotlidec" 1058 LD_BROTLI=-L${PREFIX_BROTLI}/lib$libsuff 1059 CPP_BROTLI=-I${PREFIX_BROTLI}/include 1060 DIR_BROTLI=${PREFIX_BROTLI}/lib$libsuff 1061 fi 1062 1063 LDFLAGS="$LDFLAGS $LD_BROTLI" 1064 CPPFLAGS="$CPPFLAGS $CPP_BROTLI" 1065 LIBS="$LIB_BROTLI $LIBS" 1066 1067 AC_CHECK_LIB(brotlidec, BrotliDecoderDecompress) 1068 1069 AC_CHECK_HEADERS(brotli/decode.h, 1070 curl_brotli_msg="enabled (libbrotlidec)" 1071 HAVE_BROTLI=1 1072 AC_DEFINE(HAVE_BROTLI, 1, [if BROTLI is in use]) 1073 AC_SUBST(HAVE_BROTLI, [1]) 1074 ) 1075 1076 if test X"$OPT_BROTLI" != Xoff && 1077 test "$HAVE_BROTLI" != "1"; then 1078 AC_MSG_ERROR([BROTLI libs and/or directories were not found where specified!]) 1079 fi 1080 1081 if test "$HAVE_BROTLI" = "1"; then 1082 if test -n "$DIR_BROTLI"; then 1083 dnl when the brotli shared libs were found in a path that the run-time 1084 dnl linker doesn't search through, we need to add it to CURL_LIBRARY_PATH 1085 dnl to prevent further configure tests to fail due to this 1086 1087 if test "x$cross_compiling" != "xyes"; then 1088 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_BROTLI" 1089 export CURL_LIBRARY_PATH 1090 AC_MSG_NOTICE([Added $DIR_BROTLI to CURL_LIBRARY_PATH]) 1091 fi 1092 fi 1093 else 1094 dnl no brotli, revert back to clean variables 1095 LDFLAGS=$CLEANLDFLAGS 1096 CPPFLAGS=$CLEANCPPFLAGS 1097 LIBS=$CLEANLIBS 1098 fi 1099fi 1100 1101dnl ********************************************************************** 1102dnl Check for LDAP 1103dnl ********************************************************************** 1104 1105LDAPLIBNAME="" 1106AC_ARG_WITH(ldap-lib, 1107AC_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]), 1108 [LDAPLIBNAME="$withval"]) 1109 1110LBERLIBNAME="" 1111AC_ARG_WITH(lber-lib, 1112AC_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]), 1113 [LBERLIBNAME="$withval"]) 1114 1115if test x$CURL_DISABLE_LDAP != x1 ; then 1116 1117 CURL_CHECK_HEADER_LBER 1118 CURL_CHECK_HEADER_LDAP 1119 CURL_CHECK_HEADER_LDAPSSL 1120 CURL_CHECK_HEADER_LDAP_SSL 1121 1122 if test -z "$LDAPLIBNAME" ; then 1123 if test "$curl_cv_native_windows" = "yes"; then 1124 dnl Windows uses a single and unique LDAP library name 1125 LDAPLIBNAME="wldap32" 1126 LBERLIBNAME="no" 1127 fi 1128 fi 1129 1130 if test "$LDAPLIBNAME" ; then 1131 AC_CHECK_LIB("$LDAPLIBNAME", ldap_init,, [ 1132 AC_MSG_WARN(["$LDAPLIBNAME" is not an LDAP library: LDAP disabled]) 1133 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP]) 1134 AC_SUBST(CURL_DISABLE_LDAP, [1]) 1135 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) 1136 AC_SUBST(CURL_DISABLE_LDAPS, [1])]) 1137 else 1138 dnl Try to find the right ldap libraries for this system 1139 CURL_CHECK_LIBS_LDAP 1140 case X-"$curl_cv_ldap_LIBS" in 1141 X-unknown) 1142 AC_MSG_WARN([Cannot find libraries for LDAP support: LDAP disabled]) 1143 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP]) 1144 AC_SUBST(CURL_DISABLE_LDAP, [1]) 1145 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) 1146 AC_SUBST(CURL_DISABLE_LDAPS, [1]) 1147 ;; 1148 esac 1149 fi 1150fi 1151 1152if test x$CURL_DISABLE_LDAP != x1 ; then 1153 1154 if test "$LBERLIBNAME" ; then 1155 dnl If name is "no" then don't define this library at all 1156 dnl (it's only needed if libldap.so's dependencies are broken). 1157 if test "$LBERLIBNAME" != "no" ; then 1158 AC_CHECK_LIB("$LBERLIBNAME", ber_free,, [ 1159 AC_MSG_WARN(["$LBERLIBNAME" is not an LBER library: LDAP disabled]) 1160 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP]) 1161 AC_SUBST(CURL_DISABLE_LDAP, [1]) 1162 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) 1163 AC_SUBST(CURL_DISABLE_LDAPS, [1])]) 1164 fi 1165 fi 1166fi 1167 1168if test x$CURL_DISABLE_LDAP != x1 ; then 1169 AC_CHECK_FUNCS([ldap_url_parse ldap_init_fd]) 1170 1171 if test "$LDAPLIBNAME" = "wldap32"; then 1172 curl_ldap_msg="enabled (winldap)" 1173 AC_DEFINE(USE_WIN32_LDAP, 1, [Use Windows LDAP implementation]) 1174 else 1175 curl_ldap_msg="enabled (OpenLDAP)" 1176 if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then 1177 AC_DEFINE(USE_OPENLDAP, 1, [Use OpenLDAP-specific code]) 1178 AC_SUBST(USE_OPENLDAP, [1]) 1179 fi 1180 fi 1181fi 1182 1183if test x$CURL_DISABLE_LDAPS != x1 ; then 1184 curl_ldaps_msg="enabled" 1185fi 1186 1187dnl ********************************************************************** 1188dnl Checks for IPv6 1189dnl ********************************************************************** 1190 1191AC_MSG_CHECKING([whether to enable IPv6]) 1192AC_ARG_ENABLE(ipv6, 1193AC_HELP_STRING([--enable-ipv6],[Enable IPv6 (with IPv4) support]) 1194AC_HELP_STRING([--disable-ipv6],[Disable IPv6 support]), 1195[ case "$enableval" in 1196 no) 1197 AC_MSG_RESULT(no) 1198 ipv6=no 1199 ;; 1200 *) AC_MSG_RESULT(yes) 1201 ipv6=yes 1202 ;; 1203 esac ], 1204 1205 AC_TRY_RUN([ /* is AF_INET6 available? */ 1206#include <sys/types.h> 1207#ifdef HAVE_WINSOCK2_H 1208#include <winsock2.h> 1209#else 1210#include <sys/socket.h> 1211#endif 1212#include <stdlib.h> /* for exit() */ 1213main() 1214{ 1215 if (socket(AF_INET6, SOCK_STREAM, 0) < 0) 1216 exit(1); 1217 else 1218 exit(0); 1219} 1220], 1221 AC_MSG_RESULT(yes) 1222 ipv6=yes, 1223 AC_MSG_RESULT(no) 1224 ipv6=no, 1225 AC_MSG_RESULT(yes) 1226 ipv6=yes 1227)) 1228 1229if test "$ipv6" = "yes"; then 1230 curl_ipv6_msg="enabled" 1231fi 1232 1233# Check if struct sockaddr_in6 have sin6_scope_id member 1234if test "$ipv6" = yes; then 1235 AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member]) 1236 AC_TRY_COMPILE([ 1237#include <sys/types.h> 1238#ifdef HAVE_WINSOCK2_H 1239#include <winsock2.h> 1240#include <ws2tcpip.h> 1241#else 1242#include <netinet/in.h> 1243#if defined (__TANDEM) 1244# include <netinet/in6.h> 1245#endif 1246#endif] , 1247 struct sockaddr_in6 s; s.sin6_scope_id = 0; , have_sin6_scope_id=yes) 1248 if test "$have_sin6_scope_id" = yes; then 1249 AC_MSG_RESULT([yes]) 1250 AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member]) 1251 else 1252 AC_MSG_RESULT([no]) 1253 fi 1254fi 1255 1256dnl ********************************************************************** 1257dnl Check if the operating system allows programs to write to their own argv[] 1258dnl ********************************************************************** 1259 1260AC_MSG_CHECKING([if argv can be written to]) 1261CURL_RUN_IFELSE([ 1262int main(int argc, char ** argv) { 1263 argv[0][0] = ' '; 1264 return (argv[0][0] == ' ')?0:1; 1265} 1266],[ 1267 curl_cv_writable_argv=yes 1268],[ 1269 curl_cv_writable_argv=no 1270],[ 1271 curl_cv_writable_argv=cross 1272]) 1273case $curl_cv_writable_argv in 1274yes) 1275 AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv]) 1276 AC_MSG_RESULT(yes) 1277 ;; 1278no) 1279 AC_MSG_RESULT(no) 1280 ;; 1281*) 1282 AC_MSG_RESULT(no) 1283 AC_MSG_WARN([the previous check could not be made default was used]) 1284 ;; 1285esac 1286 1287dnl ********************************************************************** 1288dnl Check for GSS-API libraries 1289dnl ********************************************************************** 1290 1291dnl check for GSS-API stuff in the /usr as default 1292 1293GSSAPI_ROOT="/usr" 1294AC_ARG_WITH(gssapi-includes, 1295 AC_HELP_STRING([--with-gssapi-includes=DIR], 1296 [Specify location of GSS-API headers]), 1297 [ GSSAPI_INCS="-I$withval" 1298 want_gss="yes" ] 1299) 1300 1301AC_ARG_WITH(gssapi-libs, 1302 AC_HELP_STRING([--with-gssapi-libs=DIR], 1303 [Specify location of GSS-API libs]), 1304 [ GSSAPI_LIB_DIR="-L$withval" 1305 want_gss="yes" ] 1306) 1307 1308AC_ARG_WITH(gssapi, 1309 AC_HELP_STRING([--with-gssapi=DIR], 1310 [Where to look for GSS-API]), [ 1311 GSSAPI_ROOT="$withval" 1312 if test x"$GSSAPI_ROOT" != xno; then 1313 want_gss="yes" 1314 if test x"$GSSAPI_ROOT" = xyes; then 1315 dnl if yes, then use default root 1316 GSSAPI_ROOT="/usr" 1317 fi 1318 fi 1319]) 1320 1321: ${KRB5CONFIG:="$GSSAPI_ROOT/bin/krb5-config"} 1322 1323save_CPPFLAGS="$CPPFLAGS" 1324AC_MSG_CHECKING([if GSS-API support is requested]) 1325if test x"$want_gss" = xyes; then 1326 AC_MSG_RESULT(yes) 1327 1328 if test -z "$GSSAPI_INCS"; then 1329 if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then 1330 GSSAPI_INCS=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --cflags gssapi` 1331 elif test -f "$KRB5CONFIG"; then 1332 GSSAPI_INCS=`$KRB5CONFIG --cflags gssapi` 1333 elif test "$GSSAPI_ROOT" != "yes"; then 1334 GSSAPI_INCS="-I$GSSAPI_ROOT/include" 1335 fi 1336 fi 1337 1338 CPPFLAGS="$CPPFLAGS $GSSAPI_INCS" 1339 1340 AC_CHECK_HEADER(gss.h, 1341 [ 1342 dnl found in the given dirs 1343 AC_DEFINE(HAVE_GSSGNU, 1, [if you have GNU GSS]) 1344 gnu_gss=yes 1345 ], 1346 [ 1347 dnl not found, check Heimdal or MIT 1348 AC_CHECK_HEADERS([gssapi/gssapi.h], [], [not_mit=1]) 1349 AC_CHECK_HEADERS( 1350 [gssapi/gssapi_generic.h gssapi/gssapi_krb5.h], 1351 [], 1352 [not_mit=1], 1353 [ 1354AC_INCLUDES_DEFAULT 1355#ifdef HAVE_GSSAPI_GSSAPI_H 1356#include <gssapi/gssapi.h> 1357#endif 1358 ]) 1359 if test "x$not_mit" = "x1"; then 1360 dnl MIT not found, check for Heimdal 1361 AC_CHECK_HEADER(gssapi.h, 1362 [ 1363 dnl found 1364 AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have Heimdal]) 1365 ], 1366 [ 1367 dnl no header found, disabling GSS 1368 want_gss=no 1369 AC_MSG_WARN(disabling GSS-API support since no header files were found) 1370 ] 1371 ) 1372 else 1373 dnl MIT found 1374 AC_DEFINE(HAVE_GSSMIT, 1, [if you have MIT Kerberos]) 1375 dnl check if we have a really old MIT Kerberos version (<= 1.2) 1376 AC_MSG_CHECKING([if GSS-API headers declare GSS_C_NT_HOSTBASED_SERVICE]) 1377 AC_COMPILE_IFELSE([ 1378 AC_LANG_PROGRAM([[ 1379#include <gssapi/gssapi.h> 1380#include <gssapi/gssapi_generic.h> 1381#include <gssapi/gssapi_krb5.h> 1382 ]],[[ 1383 gss_import_name( 1384 (OM_uint32 *)0, 1385 (gss_buffer_t)0, 1386 GSS_C_NT_HOSTBASED_SERVICE, 1387 (gss_name_t *)0); 1388 ]]) 1389 ],[ 1390 AC_MSG_RESULT([yes]) 1391 ],[ 1392 AC_MSG_RESULT([no]) 1393 AC_DEFINE(HAVE_OLD_GSSMIT, 1, 1394 [if you have an old MIT Kerberos version, lacking GSS_C_NT_HOSTBASED_SERVICE]) 1395 ]) 1396 fi 1397 ] 1398 ) 1399else 1400 AC_MSG_RESULT(no) 1401fi 1402if test x"$want_gss" = xyes; then 1403 AC_DEFINE(HAVE_GSSAPI, 1, [if you have GSS-API libraries]) 1404 HAVE_GSSAPI=1 1405 curl_gss_msg="enabled (MIT Kerberos/Heimdal)" 1406 1407 if test -n "$gnu_gss"; then 1408 curl_gss_msg="enabled (GNU GSS)" 1409 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR" 1410 LIBS="-lgss $LIBS" 1411 elif test -z "$GSSAPI_LIB_DIR"; then 1412 case $host in 1413 *-*-darwin*) 1414 LIBS="-lgssapi_krb5 -lresolv $LIBS" 1415 ;; 1416 *) 1417 if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then 1418 dnl krb5-config doesn't have --libs-only-L or similar, put everything 1419 dnl into LIBS 1420 gss_libs=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --libs gssapi` 1421 LIBS="$gss_libs $LIBS" 1422 elif test -f "$KRB5CONFIG"; then 1423 dnl krb5-config doesn't have --libs-only-L or similar, put everything 1424 dnl into LIBS 1425 gss_libs=`$KRB5CONFIG --libs gssapi` 1426 LIBS="$gss_libs $LIBS" 1427 else 1428 case $host in 1429 *-hp-hpux*) 1430 gss_libname="gss" 1431 ;; 1432 *) 1433 gss_libname="gssapi" 1434 ;; 1435 esac 1436 1437 if test "$GSSAPI_ROOT" != "yes"; then 1438 LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff" 1439 LIBS="-l$gss_libname $LIBS" 1440 else 1441 LIBS="-l$gss_libname $LIBS" 1442 fi 1443 fi 1444 ;; 1445 esac 1446 else 1447 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR" 1448 case $host in 1449 *-hp-hpux*) 1450 LIBS="-lgss $LIBS" 1451 ;; 1452 *) 1453 LIBS="-lgssapi $LIBS" 1454 ;; 1455 esac 1456 fi 1457else 1458 CPPFLAGS="$save_CPPFLAGS" 1459fi 1460 1461build_libstubgss=no 1462if test x"$want_gss" = "xyes"; then 1463 build_libstubgss=yes 1464fi 1465 1466AM_CONDITIONAL(BUILD_STUB_GSS, test "x$build_libstubgss" = "xyes") 1467 1468dnl ------------------------------------------------------------- 1469dnl parse --with-default-ssl-backend so it can be validated below 1470dnl ------------------------------------------------------------- 1471 1472DEFAULT_SSL_BACKEND=no 1473VALID_DEFAULT_SSL_BACKEND= 1474AC_ARG_WITH(default-ssl-backend, 1475AC_HELP_STRING([--with-default-ssl-backend=NAME],[Use NAME as default SSL backend]) 1476AC_HELP_STRING([--without-default-ssl-backend],[Use implicit default SSL backend]), 1477 [DEFAULT_SSL_BACKEND=$withval]) 1478case "$DEFAULT_SSL_BACKEND" in 1479 no) 1480 dnl --without-default-ssl-backend option used 1481 ;; 1482 default|yes) 1483 dnl --with-default-ssl-backend option used without name 1484 AC_MSG_ERROR([The name of the default SSL backend is required.]) 1485 ;; 1486 *) 1487 dnl --with-default-ssl-backend option used with name 1488 AC_SUBST(DEFAULT_SSL_BACKEND) 1489 dnl needs to be validated below 1490 VALID_DEFAULT_SSL_BACKEND=no 1491 ;; 1492esac 1493 1494dnl ********************************************************************** 1495 1496dnl ------------------------------------------------- 1497dnl check winssl option before other SSL libraries 1498dnl ------------------------------------------------- 1499 1500OPT_WINSSL=no 1501AC_ARG_WITH(winssl,dnl 1502AC_HELP_STRING([--with-winssl],[enable Windows native SSL/TLS]) 1503AC_HELP_STRING([--without-winssl], [disable Windows native SSL/TLS]), 1504 OPT_WINSSL=$withval) 1505 1506AC_ARG_WITH(schannel,dnl 1507AC_HELP_STRING([--with-schannel],[enable Windows native SSL/TLS]) 1508AC_HELP_STRING([--without-schannel], [disable Windows native SSL/TLS]), 1509 OPT_WINSSL=$withval) 1510 1511AC_MSG_CHECKING([whether to enable Windows native SSL/TLS (Windows native builds only)]) 1512if test -z "$ssl_backends" -o "x$OPT_WINSSL" != xno; then 1513 ssl_msg= 1514 if test "x$OPT_WINSSL" != "xno" && 1515 test "x$curl_cv_native_windows" = "xyes"; then 1516 AC_MSG_RESULT(yes) 1517 AC_DEFINE(USE_SCHANNEL, 1, [to enable Windows native SSL/TLS support]) 1518 AC_SUBST(USE_SCHANNEL, [1]) 1519 ssl_msg="Windows-native" 1520 test schannel != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes 1521 WINSSL_ENABLED=1 1522 # --with-winssl implies --enable-sspi 1523 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support]) 1524 AC_SUBST(USE_WINDOWS_SSPI, [1]) 1525 curl_sspi_msg="enabled" 1526 LIBS="-lcrypt32 $LIBS" 1527 else 1528 AC_MSG_RESULT(no) 1529 fi 1530 test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" 1531else 1532 AC_MSG_RESULT(no) 1533fi 1534 1535OPT_SECURETRANSPORT=no 1536AC_ARG_WITH(darwinssl,dnl 1537AC_HELP_STRING([--with-darwinssl],[enable Apple OS native SSL/TLS]) 1538AC_HELP_STRING([--without-darwinssl], [disable Apple OS native SSL/TLS]), 1539 OPT_SECURETRANSPORT=$withval) 1540 1541AC_ARG_WITH(secure-transport,dnl 1542AC_HELP_STRING([--with-secure-transport],[enable Apple OS native SSL/TLS]) 1543AC_HELP_STRING([--without-secure-transport], [disable Apple OS native SSL/TLS]), 1544 OPT_SECURETRANSPORT=$withval) 1545 1546AC_MSG_CHECKING([whether to enable Secure Transport]) 1547if test -z "$ssl_backends" -o "x$OPT_SECURETRANSPORT" != xno; then 1548 if test "x$OPT_SECURETRANSPORT" != "xno" && 1549 test -d "/System/Library/Frameworks/Security.framework"; then 1550 AC_MSG_RESULT(yes) 1551 AC_DEFINE(USE_SECTRANSP, 1, [enable Secure Transport]) 1552 AC_SUBST(USE_SECTRANSP, [1]) 1553 ssl_msg="Secure Transport" 1554 test secure-transport != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes 1555 SECURETRANSPORT_ENABLED=1 1556 LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Security" 1557 else 1558 AC_MSG_RESULT(no) 1559 fi 1560 test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" 1561else 1562 AC_MSG_RESULT(no) 1563fi 1564 1565OPT_AMISSL=no 1566AC_ARG_WITH(amissl,dnl 1567AC_HELP_STRING([--with-amissl],[enable Amiga native SSL/TLS (AmiSSL)]) 1568AC_HELP_STRING([--without-amissl], [disable Amiga native SSL/TLS (AmiSSL)]), 1569 OPT_AMISSL=$withval) 1570 1571AC_MSG_CHECKING([whether to enable Amiga native SSL/TLS (AmiSSL)]) 1572if test "$HAVE_PROTO_BSDSOCKET_H" = "1"; then 1573 if test -z "$ssl_backends" -o "x$OPT_AMISSL" != xno; then 1574 ssl_msg= 1575 if test "x$OPT_AMISSL" != "xno"; then 1576 AC_MSG_RESULT(yes) 1577 ssl_msg="AmiSSL" 1578 test amissl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes 1579 AMISSL_ENABLED=1 1580 LIBS="-lamisslauto $LIBS" 1581 AC_DEFINE(USE_AMISSL, 1, [if AmiSSL is in use]) 1582 AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]) 1583 else 1584 AC_MSG_RESULT(no) 1585 fi 1586 test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" 1587 else 1588 AC_MSG_RESULT(no) 1589 fi 1590else 1591 AC_MSG_RESULT(no) 1592fi 1593 1594dnl ********************************************************************** 1595dnl Check for the presence of SSL libraries and headers 1596dnl ********************************************************************** 1597 1598dnl Default to compiler & linker defaults for SSL files & libraries. 1599OPT_SSL=off 1600dnl Default to no CA bundle 1601ca="no" 1602AC_ARG_WITH(ssl,dnl 1603AC_HELP_STRING([--with-ssl=PATH],[Where to look for OpenSSL, PATH points to the SSL installation (default: /usr/local/ssl); when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]) 1604AC_HELP_STRING([--without-ssl], [disable OpenSSL]), 1605 OPT_SSL=$withval) 1606 1607if test -z "$ssl_backends" -o "x$OPT_SSL" != xno && 1608 test X"$OPT_SSL" != Xno; then 1609 ssl_msg= 1610 1611 dnl backup the pre-ssl variables 1612 CLEANLDFLAGS="$LDFLAGS" 1613 CLEANCPPFLAGS="$CPPFLAGS" 1614 CLEANLIBS="$LIBS" 1615 1616 dnl This is for Msys/Mingw 1617 case $host in 1618 *-*-msys* | *-*-mingw*) 1619 AC_MSG_CHECKING([for gdi32]) 1620 my_ac_save_LIBS=$LIBS 1621 LIBS="-lgdi32 $LIBS" 1622 AC_TRY_LINK([#include <windef.h> 1623 #include <wingdi.h>], 1624 [GdiFlush();], 1625 [ dnl worked! 1626 AC_MSG_RESULT([yes])], 1627 [ dnl failed, restore LIBS 1628 LIBS=$my_ac_save_LIBS 1629 AC_MSG_RESULT(no)] 1630 ) 1631 ;; 1632 esac 1633 1634 case "$OPT_SSL" in 1635 yes) 1636 dnl --with-ssl (without path) used 1637 if test x$cross_compiling != xyes; then 1638 dnl only do pkg-config magic when not cross-compiling 1639 PKGTEST="yes" 1640 fi 1641 PREFIX_OPENSSL=/usr/local/ssl 1642 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff" 1643 ;; 1644 off) 1645 dnl no --with-ssl option given, just check default places 1646 if test x$cross_compiling != xyes; then 1647 dnl only do pkg-config magic when not cross-compiling 1648 PKGTEST="yes" 1649 fi 1650 PREFIX_OPENSSL= 1651 ;; 1652 *) 1653 dnl check the given --with-ssl spot 1654 PKGTEST="no" 1655 PREFIX_OPENSSL=$OPT_SSL 1656 1657 dnl Try pkg-config even when cross-compiling. Since we 1658 dnl specify PKG_CONFIG_LIBDIR we're only looking where 1659 dnl the user told us to look 1660 OPENSSL_PCDIR="$OPT_SSL/lib/pkgconfig" 1661 if test -f "$OPENSSL_PCDIR/openssl.pc"; then 1662 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$OPENSSL_PCDIR"]) 1663 PKGTEST="yes" 1664 elif test ! -f "$PREFIX_OPENSSL/include/openssl/ssl.h"; then 1665 AC_MSG_ERROR([$PREFIX_OPENSSL is a bad --with-ssl prefix!]) 1666 fi 1667 1668 dnl in case pkg-config comes up empty, use what we got 1669 dnl via --with-ssl 1670 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff" 1671 if test "$PREFIX_OPENSSL" != "/usr" ; then 1672 SSL_LDFLAGS="-L$LIB_OPENSSL" 1673 SSL_CPPFLAGS="-I$PREFIX_OPENSSL/include" 1674 fi 1675 SSL_CPPFLAGS="$SSL_CPPFLAGS -I$PREFIX_OPENSSL/include/openssl" 1676 ;; 1677 esac 1678 1679 if test "$PKGTEST" = "yes"; then 1680 1681 CURL_CHECK_PKGCONFIG(openssl, [$OPENSSL_PCDIR]) 1682 1683 if test "$PKGCONFIG" != "no" ; then 1684 SSL_LIBS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl 1685 $PKGCONFIG --libs-only-l --libs-only-other openssl 2>/dev/null` 1686 1687 SSL_LDFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl 1688 $PKGCONFIG --libs-only-L openssl 2>/dev/null` 1689 1690 SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl 1691 $PKGCONFIG --cflags-only-I openssl 2>/dev/null` 1692 1693 AC_SUBST(SSL_LIBS) 1694 AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"]) 1695 AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"]) 1696 AC_MSG_NOTICE([pkg-config: SSL_CPPFLAGS: "$SSL_CPPFLAGS"]) 1697 1698 LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/-L//g'` 1699 1700 dnl use the values pkg-config reported. This is here 1701 dnl instead of below with CPPFLAGS and LDFLAGS because we only 1702 dnl learn about this via pkg-config. If we only have 1703 dnl the argument to --with-ssl we don't know what 1704 dnl additional libs may be necessary. Hope that we 1705 dnl don't need any. 1706 LIBS="$SSL_LIBS $LIBS" 1707 fi 1708 fi 1709 1710 dnl finally, set flags to use SSL 1711 CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS" 1712 LDFLAGS="$LDFLAGS $SSL_LDFLAGS" 1713 1714 AC_CHECK_LIB(crypto, HMAC_Update,[ 1715 HAVECRYPTO="yes" 1716 LIBS="-lcrypto $LIBS" 1717 ],[ 1718 LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL" 1719 if test "$PKGCONFIG" = "no" ; then 1720 # only set this if pkg-config wasn't used 1721 CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include" 1722 fi 1723 AC_CHECK_LIB(crypto, HMAC_Init_ex,[ 1724 HAVECRYPTO="yes" 1725 LIBS="-lcrypto $LIBS"], [ 1726 1727 dnl still no, but what about with -ldl? 1728 AC_MSG_CHECKING([OpenSSL linking with -ldl]) 1729 LIBS="$CLEANLIBS -lcrypto -ldl" 1730 AC_TRY_LINK( 1731 [ 1732 #include <openssl/err.h> 1733 ], 1734 [ 1735 ERR_clear_error(); 1736 ], 1737 [ 1738 AC_MSG_RESULT(yes) 1739 HAVECRYPTO="yes" 1740 ], 1741 [ 1742 AC_MSG_RESULT(no) 1743 dnl ok, so what about both -ldl and -lpthread? 1744 1745 AC_MSG_CHECKING([OpenSSL linking with -ldl and -lpthread]) 1746 LIBS="$CLEANLIBS -lcrypto -ldl -lpthread" 1747 AC_TRY_LINK( 1748 [ 1749 #include <openssl/err.h> 1750 ], 1751 [ 1752 ERR_clear_error(); 1753 ], 1754 [ 1755 AC_MSG_RESULT(yes) 1756 HAVECRYPTO="yes" 1757 ], 1758 [ 1759 AC_MSG_RESULT(no) 1760 LDFLAGS="$CLEANLDFLAGS" 1761 CPPFLAGS="$CLEANCPPFLAGS" 1762 LIBS="$CLEANLIBS" 1763 1764 ]) 1765 1766 ]) 1767 1768 ]) 1769 ]) 1770 1771 if test X"$HAVECRYPTO" = X"yes"; then 1772 dnl This is only reasonable to do if crypto actually is there: check for 1773 dnl SSL libs NOTE: it is important to do this AFTER the crypto lib 1774 1775 AC_CHECK_LIB(ssl, SSL_connect) 1776 1777 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then 1778 dnl we didn't find the SSL lib, try the RSAglue/rsaref stuff 1779 AC_MSG_CHECKING(for ssl with RSAglue/rsaref libs in use); 1780 OLIBS=$LIBS 1781 LIBS="-lRSAglue -lrsaref $LIBS" 1782 AC_CHECK_LIB(ssl, SSL_connect) 1783 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then 1784 dnl still no SSL_connect 1785 AC_MSG_RESULT(no) 1786 LIBS=$OLIBS 1787 else 1788 AC_MSG_RESULT(yes) 1789 fi 1790 1791 else 1792 1793 dnl Have the libraries--check for OpenSSL headers 1794 AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \ 1795 openssl/pem.h openssl/ssl.h openssl/err.h, 1796 ssl_msg="OpenSSL" 1797 test openssl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes 1798 OPENSSL_ENABLED=1 1799 AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use])) 1800 1801 if test $ac_cv_header_openssl_x509_h = no; then 1802 dnl we don't use the "action" part of the AC_CHECK_HEADERS macro 1803 dnl since 'err.h' might in fact find a krb4 header with the same 1804 dnl name 1805 AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h) 1806 1807 if test $ac_cv_header_x509_h = yes && 1808 test $ac_cv_header_crypto_h = yes && 1809 test $ac_cv_header_ssl_h = yes; then 1810 dnl three matches 1811 ssl_msg="OpenSSL" 1812 OPENSSL_ENABLED=1 1813 fi 1814 fi 1815 fi 1816 1817 if test X"$OPENSSL_ENABLED" != X"1"; then 1818 LIBS="$CLEANLIBS" 1819 fi 1820 1821 if test X"$OPT_SSL" != Xoff && 1822 test "$OPENSSL_ENABLED" != "1"; then 1823 AC_MSG_ERROR([OpenSSL libs and/or directories were not found where specified!]) 1824 fi 1825 fi 1826 1827 if test X"$OPENSSL_ENABLED" = X"1"; then 1828 dnl These can only exist if OpenSSL exists 1829 dnl OpenSSL_version is introduced in 3.0.0 1830 1831 AC_CHECK_FUNCS( RAND_egd \ 1832 SSLv2_client_method \ 1833 OpenSSL_version ) 1834 1835 AC_MSG_CHECKING([for BoringSSL]) 1836 AC_COMPILE_IFELSE([ 1837 AC_LANG_PROGRAM([[ 1838 #include <openssl/base.h> 1839 ]],[[ 1840 #ifndef OPENSSL_IS_BORINGSSL 1841 #error not boringssl 1842 #endif 1843 ]]) 1844 ],[ 1845 AC_MSG_RESULT([yes]) 1846 AC_DEFINE_UNQUOTED(HAVE_BORINGSSL, 1, 1847 [Define to 1 if using BoringSSL.]) 1848 ssl_msg="BoringSSL" 1849 ],[ 1850 AC_MSG_RESULT([no]) 1851 ]) 1852 1853 AC_MSG_CHECKING([for libressl]) 1854 AC_COMPILE_IFELSE([ 1855 AC_LANG_PROGRAM([[ 1856#include <openssl/opensslv.h> 1857 ]],[[ 1858 int dummy = LIBRESSL_VERSION_NUMBER; 1859 ]]) 1860 ],[ 1861 AC_MSG_RESULT([yes]) 1862 AC_DEFINE_UNQUOTED(HAVE_LIBRESSL, 1, 1863 [Define to 1 if using libressl.]) 1864 ssl_msg="libressl" 1865 ],[ 1866 AC_MSG_RESULT([no]) 1867 ]) 1868 fi 1869 1870 if test "$OPENSSL_ENABLED" = "1"; then 1871 if test -n "$LIB_OPENSSL"; then 1872 dnl when the ssl shared libs were found in a path that the run-time 1873 dnl linker doesn't search through, we need to add it to CURL_LIBRARY_PATH 1874 dnl to prevent further configure tests to fail due to this 1875 if test "x$cross_compiling" != "xyes"; then 1876 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$LIB_OPENSSL" 1877 export CURL_LIBRARY_PATH 1878 AC_MSG_NOTICE([Added $LIB_OPENSSL to CURL_LIBRARY_PATH]) 1879 fi 1880 fi 1881 CURL_CHECK_OPENSSL_API 1882 check_for_ca_bundle=1 1883 fi 1884 1885 test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" 1886fi 1887 1888if test X"$OPT_SSL" != Xoff && 1889 test X"$OPT_SSL" != Xno && 1890 test "$OPENSSL_ENABLED" != "1"; then 1891 AC_MSG_NOTICE([OPT_SSL: $OPT_SSL]) 1892 AC_MSG_NOTICE([OPENSSL_ENABLED: $OPENSSL_ENABLED]) 1893 AC_MSG_ERROR([--with-ssl was given but OpenSSL could not be detected]) 1894fi 1895 1896dnl ********************************************************************** 1897dnl Check for the random seed preferences 1898dnl ********************************************************************** 1899 1900if test X"$OPENSSL_ENABLED" = X"1"; then 1901 AC_ARG_WITH(egd-socket, 1902 AC_HELP_STRING([--with-egd-socket=FILE], 1903 [Entropy Gathering Daemon socket pathname]), 1904 [ EGD_SOCKET="$withval" ] 1905 ) 1906 if test -n "$EGD_SOCKET" ; then 1907 AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET", 1908 [your Entropy Gathering Daemon socket pathname] ) 1909 fi 1910 1911 dnl Check for user-specified random device 1912 AC_ARG_WITH(random, 1913 AC_HELP_STRING([--with-random=FILE], 1914 [read randomness from FILE (default=/dev/urandom)]), 1915 [ RANDOM_FILE="$withval" ], 1916 [ 1917 if test x$cross_compiling != xyes; then 1918 dnl Check for random device 1919 AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] ) 1920 else 1921 AC_MSG_WARN([skipped the /dev/urandom detection when cross-compiling]) 1922 fi 1923 ] 1924 ) 1925 if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then 1926 AC_SUBST(RANDOM_FILE) 1927 AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE", 1928 [a suitable file to read random data from]) 1929 fi 1930fi 1931 1932dnl --- 1933dnl We require OpenSSL with SRP support. 1934dnl --- 1935if test "$OPENSSL_ENABLED" = "1"; then 1936 AC_CHECK_LIB(crypto, SRP_Calc_client_key, 1937 [ 1938 AC_DEFINE(HAVE_OPENSSL_SRP, 1, [if you have the function SRP_Calc_client_key]) 1939 AC_SUBST(HAVE_OPENSSL_SRP, [1]) 1940 ]) 1941fi 1942 1943dnl --- 1944dnl Whether the OpenSSL configuration will be loaded automatically 1945dnl --- 1946if test X"$OPENSSL_ENABLED" = X"1"; then 1947AC_ARG_ENABLE(openssl-auto-load-config, 1948AC_HELP_STRING([--enable-openssl-auto-load-config],[Enable automatic loading of OpenSSL configuration]) 1949AC_HELP_STRING([--disable-openssl-auto-load-config],[Disable automatic loading of OpenSSL configuration]), 1950[ if test X"$enableval" = X"no"; then 1951 AC_MSG_NOTICE([automatic loading of OpenSSL configuration disabled]) 1952 AC_DEFINE(CURL_DISABLE_OPENSSL_AUTO_LOAD_CONFIG, 1, [if the OpenSSL configuration won't be loaded automatically]) 1953 fi 1954]) 1955fi 1956 1957dnl ---------------------------------------------------- 1958dnl check for GnuTLS 1959dnl ---------------------------------------------------- 1960 1961dnl Default to compiler & linker defaults for GnuTLS files & libraries. 1962OPT_GNUTLS=no 1963 1964AC_ARG_WITH(gnutls,dnl 1965AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root]) 1966AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]), 1967 OPT_GNUTLS=$withval) 1968 1969if test -z "$ssl_backends" -o "x$OPT_GNUTLS" != xno; then 1970 ssl_msg= 1971 1972 if test X"$OPT_GNUTLS" != Xno; then 1973 1974 addld="" 1975 addlib="" 1976 gtlslib="" 1977 version="" 1978 addcflags="" 1979 1980 if test "x$OPT_GNUTLS" = "xyes"; then 1981 dnl this is with no partiular path given 1982 CURL_CHECK_PKGCONFIG(gnutls) 1983 1984 if test "$PKGCONFIG" != "no" ; then 1985 addlib=`$PKGCONFIG --libs-only-l gnutls` 1986 addld=`$PKGCONFIG --libs-only-L gnutls` 1987 addcflags=`$PKGCONFIG --cflags-only-I gnutls` 1988 version=`$PKGCONFIG --modversion gnutls` 1989 gtlslib=`echo $addld | $SED -e 's/-L//'` 1990 else 1991 dnl without pkg-config, we try libgnutls-config as that was how it 1992 dnl used to be done 1993 check=`libgnutls-config --version 2>/dev/null` 1994 if test -n "$check"; then 1995 addlib=`libgnutls-config --libs` 1996 addcflags=`libgnutls-config --cflags` 1997 version=`libgnutls-config --version` 1998 gtlslib=`libgnutls-config --prefix`/lib$libsuff 1999 fi 2000 fi 2001 else 2002 dnl this is with a given path, first check if there's a libgnutls-config 2003 dnl there and if not, make an educated guess 2004 cfg=$OPT_GNUTLS/bin/libgnutls-config 2005 check=`$cfg --version 2>/dev/null` 2006 if test -n "$check"; then 2007 addlib=`$cfg --libs` 2008 addcflags=`$cfg --cflags` 2009 version=`$cfg --version` 2010 gtlslib=`$cfg --prefix`/lib$libsuff 2011 else 2012 dnl without pkg-config and libgnutls-config, we guess a lot! 2013 addlib=-lgnutls 2014 addld=-L$OPT_GNUTLS/lib$libsuff 2015 addcflags=-I$OPT_GNUTLS/include 2016 version="" # we just don't know 2017 gtlslib=$OPT_GNUTLS/lib$libsuff 2018 fi 2019 fi 2020 2021 if test -z "$version"; then 2022 dnl lots of efforts, still no go 2023 version="unknown" 2024 fi 2025 2026 if test -n "$addlib"; then 2027 2028 CLEANLIBS="$LIBS" 2029 CLEANCPPFLAGS="$CPPFLAGS" 2030 CLEANLDFLAGS="$LDFLAGS" 2031 2032 LIBS="$addlib $LIBS" 2033 LDFLAGS="$LDFLAGS $addld" 2034 if test "$addcflags" != "-I/usr/include"; then 2035 CPPFLAGS="$CPPFLAGS $addcflags" 2036 fi 2037 2038 AC_CHECK_LIB(gnutls, gnutls_check_version, 2039 [ 2040 AC_DEFINE(USE_GNUTLS, 1, [if GnuTLS is enabled]) 2041 AC_SUBST(USE_GNUTLS, [1]) 2042 GNUTLS_ENABLED=1 2043 USE_GNUTLS="yes" 2044 ssl_msg="GnuTLS" 2045 test gnutls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes 2046 ], 2047 [ 2048 LIBS="$CLEANLIBS" 2049 CPPFLAGS="$CLEANCPPFLAGS" 2050 ]) 2051 2052 if test "x$USE_GNUTLS" = "xyes"; then 2053 AC_MSG_NOTICE([detected GnuTLS version $version]) 2054 check_for_ca_bundle=1 2055 if test -n "$gtlslib"; then 2056 dnl when shared libs were found in a path that the run-time 2057 dnl linker doesn't search through, we need to add it to 2058 dnl CURL_LIBRARY_PATH to prevent further configure tests to fail 2059 dnl due to this 2060 if test "x$cross_compiling" != "xyes"; then 2061 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$gtlslib" 2062 export CURL_LIBRARY_PATH 2063 AC_MSG_NOTICE([Added $gtlslib to CURL_LIBRARY_PATH]) 2064 fi 2065 fi 2066 AC_CHECK_FUNCS([gnutls_certificate_set_x509_key_file2 gnutls_alpn_set_protocols gnutls_ocsp_req_init]) 2067 fi 2068 2069 fi 2070 2071 fi dnl GNUTLS not disabled 2072 2073 test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" 2074fi 2075 2076dnl --- 2077dnl Check which crypto backend GnuTLS uses 2078dnl --- 2079 2080if test "$GNUTLS_ENABLED" = "1"; then 2081 USE_GNUTLS_NETTLE= 2082 # First check if we can detect either crypto library via transitive linking 2083 AC_CHECK_LIB(gnutls, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ]) 2084 if test "$USE_GNUTLS_NETTLE" = ""; then 2085 AC_CHECK_LIB(gnutls, gcry_control, [ USE_GNUTLS_NETTLE=0 ]) 2086 fi 2087 # If not, try linking directly to both of them to see if they are available 2088 if test "$USE_GNUTLS_NETTLE" = ""; then 2089 AC_CHECK_LIB(nettle, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ]) 2090 fi 2091 if test "$USE_GNUTLS_NETTLE" = ""; then 2092 AC_CHECK_LIB(gcrypt, gcry_control, [ USE_GNUTLS_NETTLE=0 ]) 2093 fi 2094 if test "$USE_GNUTLS_NETTLE" = ""; then 2095 AC_MSG_ERROR([GnuTLS found, but neither gcrypt nor nettle found]) 2096 fi 2097 if test "$USE_GNUTLS_NETTLE" = "1"; then 2098 AC_DEFINE(USE_GNUTLS_NETTLE, 1, [if GnuTLS uses nettle as crypto backend]) 2099 AC_SUBST(USE_GNUTLS_NETTLE, [1]) 2100 LIBS="-lnettle $LIBS" 2101 else 2102 LIBS="-lgcrypt $LIBS" 2103 fi 2104fi 2105 2106dnl --- 2107dnl We require GnuTLS with SRP support. 2108dnl --- 2109if test "$GNUTLS_ENABLED" = "1"; then 2110 AC_CHECK_LIB(gnutls, gnutls_srp_verifier, 2111 [ 2112 AC_DEFINE(HAVE_GNUTLS_SRP, 1, [if you have the function gnutls_srp_verifier]) 2113 AC_SUBST(HAVE_GNUTLS_SRP, [1]) 2114 ]) 2115fi 2116 2117dnl ---------------------------------------------------- 2118dnl check for mbedTLS 2119dnl ---------------------------------------------------- 2120 2121OPT_MBEDTLS=no 2122 2123_cppflags=$CPPFLAGS 2124_ldflags=$LDFLAGS 2125AC_ARG_WITH(mbedtls,dnl 2126AC_HELP_STRING([--with-mbedtls=PATH],[where to look for mbedTLS, PATH points to the installation root]) 2127AC_HELP_STRING([--without-mbedtls], [disable mbedTLS detection]), 2128 OPT_MBEDTLS=$withval) 2129 2130if test -z "$ssl_backends" -o "x$OPT_MBEDTLS" != xno; then 2131 ssl_msg= 2132 2133 if test X"$OPT_MBEDTLS" != Xno; then 2134 2135 if test "$OPT_MBEDTLS" = "yes"; then 2136 OPT_MBEDTLS="" 2137 fi 2138 2139 if test -z "$OPT_MBEDTLS" ; then 2140 dnl check for lib first without setting any new path 2141 2142 AC_CHECK_LIB(mbedtls, mbedtls_havege_init, 2143 dnl libmbedtls found, set the variable 2144 [ 2145 AC_DEFINE(USE_MBEDTLS, 1, [if mbedTLS is enabled]) 2146 AC_SUBST(USE_MBEDTLS, [1]) 2147 MBEDTLS_ENABLED=1 2148 USE_MBEDTLS="yes" 2149 ssl_msg="mbedTLS" 2150 test mbedtls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes 2151 ], [], -lmbedx509 -lmbedcrypto) 2152 fi 2153 2154 addld="" 2155 addlib="" 2156 addcflags="" 2157 mbedtlslib="" 2158 2159 if test "x$USE_MBEDTLS" != "xyes"; then 2160 dnl add the path and test again 2161 addld=-L$OPT_MBEDTLS/lib$libsuff 2162 addcflags=-I$OPT_MBEDTLS/include 2163 mbedtlslib=$OPT_MBEDTLS/lib$libsuff 2164 2165 LDFLAGS="$LDFLAGS $addld" 2166 if test "$addcflags" != "-I/usr/include"; then 2167 CPPFLAGS="$CPPFLAGS $addcflags" 2168 fi 2169 2170 AC_CHECK_LIB(mbedtls, mbedtls_ssl_init, 2171 [ 2172 AC_DEFINE(USE_MBEDTLS, 1, [if mbedTLS is enabled]) 2173 AC_SUBST(USE_MBEDTLS, [1]) 2174 MBEDTLS_ENABLED=1 2175 USE_MBEDTLS="yes" 2176 ssl_msg="mbedTLS" 2177 test mbedtls != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes 2178 ], 2179 [ 2180 CPPFLAGS=$_cppflags 2181 LDFLAGS=$_ldflags 2182 ], -lmbedx509 -lmbedcrypto) 2183 fi 2184 2185 if test "x$USE_MBEDTLS" = "xyes"; then 2186 AC_MSG_NOTICE([detected mbedTLS]) 2187 check_for_ca_bundle=1 2188 2189 LIBS="-lmbedtls -lmbedx509 -lmbedcrypto $LIBS" 2190 2191 if test -n "$mbedtlslib"; then 2192 dnl when shared libs were found in a path that the run-time 2193 dnl linker doesn't search through, we need to add it to 2194 dnl CURL_LIBRARY_PATH to prevent further configure tests to fail 2195 dnl due to this 2196 if test "x$cross_compiling" != "xyes"; then 2197 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$mbedtlslib" 2198 export CURL_LIBRARY_PATH 2199 AC_MSG_NOTICE([Added $mbedtlslib to CURL_LIBRARY_PATH]) 2200 fi 2201 fi 2202 fi 2203 2204 fi dnl mbedTLS not disabled 2205 2206 test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" 2207fi 2208 2209dnl ---------------------------------------------------- 2210dnl check for wolfSSL 2211dnl ---------------------------------------------------- 2212 2213dnl Default to compiler & linker defaults for wolfSSL files & libraries. 2214OPT_WOLFSSL=no 2215 2216_cppflags=$CPPFLAGS 2217_ldflags=$LDFLAGS 2218AC_ARG_WITH(cyassl,dnl 2219AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to the installation root (default: system lib default)]) 2220AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]), 2221 OPT_WOLFSSL=$withval) 2222 2223dnl provide --with-wolfssl as an alias for --with-cyassl 2224AC_ARG_WITH(wolfssl,dnl 2225AC_HELP_STRING([--with-wolfssl=PATH],[where to look for WolfSSL, PATH points to the installation root (default: system lib default)]) 2226AC_HELP_STRING([--without-wolfssl], [disable WolfSSL detection]), 2227 OPT_WOLFSSL=$withval) 2228 2229if test -z "$ssl_backends" -o "x$OPT_WOLFSSL" != xno; then 2230 ssl_msg= 2231 2232 if test X"$OPT_WOLFSSL" != Xno; then 2233 2234 if test "$OPT_WOLFSSL" = "yes"; then 2235 OPT_WOLFSSL="" 2236 fi 2237 2238 dnl This should be reworked to use pkg-config instead 2239 2240 cyassllibname=cyassl 2241 2242 if test -z "$OPT_WOLFSSL" ; then 2243 dnl check for lib in system default first 2244 2245 AC_CHECK_LIB(cyassl, CyaSSL_Init, 2246 dnl libcyassl found, set the variable 2247 [ 2248 AC_DEFINE(USE_WOLFSSL, 1, [if wolfSSL is enabled]) 2249 AC_SUBST(USE_WOLFSSL, [1]) 2250 WOLFSSL_ENABLED=1 2251 USE_WOLFSSL="yes" 2252 ssl_msg="CyaSSL" 2253 test cyassl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes 2254 ]) 2255 fi 2256 2257 addld="" 2258 addlib="" 2259 addcflags="" 2260 cyassllib="" 2261 2262 if test "x$USE_WOLFSSL" != "xyes"; then 2263 dnl add the path and test again 2264 addld=-L$OPT_WOLFSSL/lib$libsuff 2265 addcflags=-I$OPT_WOLFSSL/include 2266 cyassllib=$OPT_WOLFSSL/lib$libsuff 2267 2268 LDFLAGS="$LDFLAGS $addld" 2269 if test "$addcflags" != "-I/usr/include"; then 2270 CPPFLAGS="$CPPFLAGS $addcflags" 2271 fi 2272 2273 AC_CHECK_LIB(cyassl, CyaSSL_Init, 2274 [ 2275 AC_DEFINE(USE_WOLFSSL, 1, [if CyaSSL is enabled]) 2276 AC_SUBST(USE_WOLFSSL, [1]) 2277 WOLFSSL_ENABLED=1 2278 USE_WOLFSSL="yes" 2279 ssl_msg="CyaSSL" 2280 test cyassl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes 2281 ], 2282 [ 2283 CPPFLAGS=$_cppflags 2284 LDFLAGS=$_ldflags 2285 cyassllib="" 2286 ]) 2287 fi 2288 2289 addld="" 2290 addlib="" 2291 addcflags="" 2292 2293 if test "x$USE_WOLFSSL" != "xyes"; then 2294 dnl libcyassl renamed to libwolfssl as of 3.4.0 2295 addld=-L$OPT_WOLFSSL/lib$libsuff 2296 addcflags=-I$OPT_WOLFSSL/include 2297 cyassllib=$OPT_WOLFSSL/lib$libsuff 2298 2299 LDFLAGS="$LDFLAGS $addld" 2300 if test "$addcflags" != "-I/usr/include"; then 2301 CPPFLAGS="$CPPFLAGS $addcflags" 2302 fi 2303 2304 cyassllibname=wolfssl 2305 my_ac_save_LIBS="$LIBS" 2306 LIBS="-l$cyassllibname -lm $LIBS" 2307 2308 AC_MSG_CHECKING([for CyaSSL_Init in -lwolfssl]) 2309 AC_LINK_IFELSE([ 2310 AC_LANG_PROGRAM([[ 2311/* These aren't needed for detection and confuse WolfSSL. 2312 They are set up properly later if it is detected. */ 2313#undef SIZEOF_LONG 2314#undef SIZEOF_LONG_LONG 2315#include <cyassl/ssl.h> 2316 ]],[[ 2317 return CyaSSL_Init(); 2318 ]]) 2319 ],[ 2320 AC_MSG_RESULT(yes) 2321 AC_DEFINE(USE_WOLFSSL, 1, [if wolfSSL is enabled]) 2322 AC_SUBST(USE_WOLFSSL, [1]) 2323 WOLFSSL_ENABLED=1 2324 USE_WOLFSSL="yes" 2325 ssl_msg="WolfSSL" 2326 test cyassl != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes 2327 ], 2328 [ 2329 AC_MSG_RESULT(no) 2330 CPPFLAGS=$_cppflags 2331 LDFLAGS=$_ldflags 2332 cyassllib="" 2333 ]) 2334 LIBS="$my_ac_save_LIBS" 2335 fi 2336 2337 if test "x$USE_WOLFSSL" = "xyes"; then 2338 AC_MSG_NOTICE([detected $cyassllibname]) 2339 check_for_ca_bundle=1 2340 2341 dnl cyassl/ctaocrypt/types.h needs SIZEOF_LONG_LONG defined! 2342 AX_COMPILE_CHECK_SIZEOF(long long) 2343 2344 LIBS="-l$cyassllibname -lm $LIBS" 2345 2346 dnl Recent WolfSSL versions build without SSLv3 by default 2347 dnl WolfSSL needs configure --enable-opensslextra to have *get_peer* 2348 AC_CHECK_FUNCS(wolfSSLv3_client_method \ 2349 wolfSSL_get_peer_certificate \ 2350 wolfSSL_UseALPN) 2351 2352 if test -n "$cyassllib"; then 2353 dnl when shared libs were found in a path that the run-time 2354 dnl linker doesn't search through, we need to add it to 2355 dnl CURL_LIBRARY_PATH to prevent further configure tests to fail 2356 dnl due to this 2357 if test "x$cross_compiling" != "xyes"; then 2358 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$cyassllib" 2359 export CURL_LIBRARY_PATH 2360 AC_MSG_NOTICE([Added $cyassllib to CURL_LIBRARY_PATH]) 2361 fi 2362 fi 2363 2364 fi 2365 2366 fi dnl wolfSSL not disabled 2367 2368 test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" 2369fi 2370 2371dnl ---------------------------------------------------- 2372dnl check for MesaLink 2373dnl ---------------------------------------------------- 2374 2375dnl Default to compiler & linker defaults for MesaLink files & libraries. 2376OPT_MESALINK=no 2377 2378_cppflags=$CPPFLAGS 2379_ldflags=$LDFLAGS 2380AC_ARG_WITH(mesalink,dnl 2381AC_HELP_STRING([--with-mesalink=PATH],[where to look for MesaLink, PATH points to the installation root]) 2382AC_HELP_STRING([--without-mesalink], [disable MesaLink detection]), 2383 OPT_MESALINK=$withval) 2384 2385if test -z "$ssl_backends" -o "x$OPT_MESALINK" != xno; then 2386 ssl_msg= 2387 2388 if test X"$OPT_MESALINK" != Xno; then 2389 2390 if test "$OPT_MESALINK" = "yes"; then 2391 OPT_MESALINK="" 2392 fi 2393 2394 if test -z "$OPT_MESALINK" ; then 2395 dnl check for lib first without setting any new path 2396 2397 AC_CHECK_LIB(mesalink, mesalink_library_init, 2398 dnl libmesalink found, set the variable 2399 [ 2400 AC_DEFINE(USE_MESALINK, 1, [if MesaLink is enabled]) 2401 AC_SUBST(USE_MESALINK, [1]) 2402 MESALINK_ENABLED=1 2403 USE_MESALINK="yes" 2404 ssl_msg="MesaLink" 2405 test mesalink != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes 2406 ]) 2407 fi 2408 2409 addld="" 2410 addlib="" 2411 addcflags="" 2412 mesalinklib="" 2413 2414 if test "x$USE_MESALINK" != "xyes"; then 2415 dnl add the path and test again 2416 addld=-L$OPT_MESALINK/lib$libsuff 2417 addcflags=-I$OPT_MESALINK/include 2418 mesalinklib=$OPT_MESALINK/lib$libsuff 2419 2420 LDFLAGS="$LDFLAGS $addld" 2421 if test "$addcflags" != "-I/usr/include"; then 2422 CPPFLAGS="$CPPFLAGS $addcflags" 2423 fi 2424 2425 AC_CHECK_LIB(mesalink, mesalink_library_init, 2426 [ 2427 AC_DEFINE(USE_MESALINK, 1, [if MesaLink is enabled]) 2428 AC_SUBST(USE_MESALINK, [1]) 2429 MESALINK_ENABLED=1 2430 USE_MESALINK="yes" 2431 ssl_msg="MesaLink" 2432 test mesalink != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes 2433 ], 2434 [ 2435 CPPFLAGS=$_cppflags 2436 LDFLAGS=$_ldflags 2437 ]) 2438 fi 2439 2440 if test "x$USE_MESALINK" = "xyes"; then 2441 AC_MSG_NOTICE([detected MesaLink]) 2442 2443 LIBS="-lmesalink $LIBS" 2444 2445 if test -n "$mesalinklib"; then 2446 dnl when shared libs were found in a path that the run-time 2447 dnl linker doesn't search through, we need to add it to 2448 dnl LD_LIBRARY_PATH to prevent further configure tests to fail 2449 dnl due to this 2450 if test "x$cross_compiling" != "xyes"; then 2451 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$mesalinklib" 2452 export LD_LIBRARY_PATH 2453 AC_MSG_NOTICE([Added $mesalinklib to LD_LIBRARY_PATH]) 2454 fi 2455 fi 2456 fi 2457 2458 fi dnl MesaLink not disabled 2459 2460 test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" 2461fi 2462 2463dnl ---------------------------------------------------- 2464dnl NSS. Only check if GnuTLS and OpenSSL are not enabled 2465dnl ---------------------------------------------------- 2466 2467dnl Default to compiler & linker defaults for NSS files & libraries. 2468OPT_NSS=no 2469 2470AC_ARG_WITH(nss,dnl 2471AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root]) 2472AC_HELP_STRING([--without-nss], [disable NSS detection]), 2473 OPT_NSS=$withval) 2474 2475if test -z "$ssl_backends" -o "x$OPT_NSS" != xno; then 2476 ssl_msg= 2477 2478 if test X"$OPT_NSS" != Xno; then 2479 2480 addld="" 2481 addlib="" 2482 addcflags="" 2483 nssprefix="" 2484 version="" 2485 2486 if test "x$OPT_NSS" = "xyes"; then 2487 2488 CURL_CHECK_PKGCONFIG(nss) 2489 2490 if test "$PKGCONFIG" != "no" ; then 2491 addlib=`$PKGCONFIG --libs nss` 2492 addcflags=`$PKGCONFIG --cflags nss` 2493 version=`$PKGCONFIG --modversion nss` 2494 nssprefix=`$PKGCONFIG --variable=prefix nss` 2495 else 2496 dnl Without pkg-config, we check for nss-config 2497 2498 check=`nss-config --version 2>/dev/null` 2499 if test -n "$check"; then 2500 addlib=`nss-config --libs` 2501 addcflags=`nss-config --cflags` 2502 version=`nss-config --version` 2503 nssprefix=`nss-config --prefix` 2504 else 2505 addlib="-lnss3" 2506 addcflags="" 2507 version="unknown" 2508 fi 2509 fi 2510 else 2511 NSS_PCDIR="$OPT_NSS/lib/pkgconfig" 2512 if test -f "$NSS_PCDIR/nss.pc"; then 2513 CURL_CHECK_PKGCONFIG(nss, [$NSS_PCDIR]) 2514 if test "$PKGCONFIG" != "no" ; then 2515 addld=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --libs-only-L nss` 2516 addlib=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --libs-only-l nss` 2517 addcflags=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --cflags nss` 2518 version=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --modversion nss` 2519 nssprefix=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --variable=prefix nss` 2520 fi 2521 fi 2522 fi 2523 2524 if test -z "$addlib"; then 2525 # Without pkg-config, we'll kludge in some defaults 2526 AC_MSG_WARN([Using hard-wired libraries and compilation flags for NSS.]) 2527 addld="-L$OPT_NSS/lib" 2528 addlib="-lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4" 2529 addcflags="-I$OPT_NSS/include" 2530 version="unknown" 2531 nssprefix=$OPT_NSS 2532 fi 2533 2534 CLEANLDFLAGS="$LDFLAGS" 2535 CLEANLIBS="$LIBS" 2536 CLEANCPPFLAGS="$CPPFLAGS" 2537 2538 LDFLAGS="$addld $LDFLAGS" 2539 LIBS="$addlib $LIBS" 2540 if test "$addcflags" != "-I/usr/include"; then 2541 CPPFLAGS="$CPPFLAGS $addcflags" 2542 fi 2543 2544 dnl The function SSL_VersionRangeSet() is needed to enable TLS > 1.0 2545 AC_CHECK_LIB(nss3, SSL_VersionRangeSet, 2546 [ 2547 AC_DEFINE(USE_NSS, 1, [if NSS is enabled]) 2548 AC_SUBST(USE_NSS, [1]) 2549 USE_NSS="yes" 2550 NSS_ENABLED=1 2551 ssl_msg="NSS" 2552 test nss != "$DEFAULT_SSL_BACKEND" || VALID_DEFAULT_SSL_BACKEND=yes 2553 ], 2554 [ 2555 LDFLAGS="$CLEANLDFLAGS" 2556 LIBS="$CLEANLIBS" 2557 CPPFLAGS="$CLEANCPPFLAGS" 2558 ]) 2559 2560 if test "x$USE_NSS" = "xyes"; then 2561 AC_MSG_NOTICE([detected NSS version $version]) 2562 2563 dnl PK11_CreateManagedGenericObject() was introduced in NSS 3.34 because 2564 dnl PK11_DestroyGenericObject() does not release resources allocated by 2565 dnl PK11_CreateGenericObject() early enough. 2566 AC_CHECK_FUNC(PK11_CreateManagedGenericObject, 2567 [ 2568 AC_DEFINE(HAVE_PK11_CREATEMANAGEDGENERICOBJECT, 1, 2569 [if you have the PK11_CreateManagedGenericObject function]) 2570 ]) 2571 2572 dnl needed when linking the curl tool without USE_EXPLICIT_LIB_DEPS 2573 NSS_LIBS=$addlib 2574 AC_SUBST([NSS_LIBS]) 2575 2576 dnl when shared libs were found in a path that the run-time 2577 dnl linker doesn't search through, we need to add it to 2578 dnl CURL_LIBRARY_PATH to prevent further configure tests to fail 2579 dnl due to this 2580 if test "x$cross_compiling" != "xyes"; then 2581 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$nssprefix/lib$libsuff" 2582 export CURL_LIBRARY_PATH 2583 AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to CURL_LIBRARY_PATH]) 2584 fi 2585 2586 fi dnl NSS found 2587 2588 fi dnl NSS not disabled 2589 2590 test -z "$ssl_msg" || ssl_backends="${ssl_backends:+$ssl_backends, }$ssl_msg" 2591fi 2592 2593case "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$MBEDTLS_ENABLED$WOLFSSL_ENABLED$WINSSL_ENABLED$SECURETRANSPORT_ENABLED$MESALINK_ENABLED$AMISSL_ENABLED" in 2594x) 2595 AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.]) 2596 AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-wolfssl, --with-mbedtls, --with-nss, --with-schannel, --with-secure-transport, --with-mesalink or --with-amissl to address this.]) 2597 ;; 2598x1) 2599 # one SSL backend is enabled 2600 AC_SUBST(SSL_ENABLED) 2601 SSL_ENABLED="1" 2602 AC_MSG_NOTICE([built with one SSL backend]) 2603 ;; 2604*) 2605 # more than one SSL backend is enabled 2606 AC_SUBST(SSL_ENABLED) 2607 SSL_ENABLED="1" 2608 AC_SUBST(CURL_WITH_MULTI_SSL) 2609 CURL_WITH_MULTI_SSL="1" 2610 AC_DEFINE(CURL_WITH_MULTI_SSL, 1, [built with multiple SSL backends]) 2611 AC_MSG_NOTICE([built with multiple SSL backends]) 2612 ;; 2613esac 2614 2615if test -n "$ssl_backends"; then 2616 curl_ssl_msg="enabled ($ssl_backends)" 2617fi 2618 2619if test no = "$VALID_DEFAULT_SSL_BACKEND" 2620then 2621 if test -n "$SSL_ENABLED" 2622 then 2623 AC_MSG_ERROR([Default SSL backend $DEFAULT_SSL_BACKEND not enabled!]) 2624 else 2625 AC_MSG_ERROR([Default SSL backend requires SSL!]) 2626 fi 2627elif test yes = "$VALID_DEFAULT_SSL_BACKEND" 2628then 2629 AC_DEFINE_UNQUOTED([CURL_DEFAULT_SSL_BACKEND], ["$DEFAULT_SSL_BACKEND"], [Default SSL backend]) 2630fi 2631 2632dnl ********************************************************************** 2633dnl Check for the CA bundle 2634dnl ********************************************************************** 2635 2636if test -n "$check_for_ca_bundle"; then 2637 CURL_CHECK_CA_BUNDLE 2638fi 2639 2640dnl ********************************************************************** 2641dnl Check for libpsl 2642dnl ********************************************************************** 2643 2644AC_ARG_WITH(libpsl, 2645 AS_HELP_STRING([--without-libpsl], 2646 [disable support for libpsl cookie checking]), 2647 with_libpsl=$withval, 2648 with_libpsl=yes) 2649if test $with_libpsl != "no"; then 2650 AC_SEARCH_LIBS(psl_builtin, psl, 2651 [curl_psl_msg="enabled"; 2652 AC_DEFINE([USE_LIBPSL], [1], [PSL support enabled]) 2653 ], 2654 [curl_psl_msg="no (libpsl not found)"; 2655 AC_MSG_WARN([libpsl was not found]) 2656 ] 2657 ) 2658fi 2659AM_CONDITIONAL([USE_LIBPSL], [test "$curl_psl_msg" = "enabled"]) 2660 2661dnl ********************************************************************** 2662dnl Check for libmetalink 2663dnl ********************************************************************** 2664 2665OPT_LIBMETALINK=no 2666 2667AC_ARG_WITH(libmetalink,dnl 2668AC_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root]) 2669AC_HELP_STRING([--without-libmetalink], [disable libmetalink detection]), 2670 OPT_LIBMETALINK=$withval) 2671 2672if test X"$OPT_LIBMETALINK" != Xno; then 2673 2674 addld="" 2675 addlib="" 2676 addcflags="" 2677 version="" 2678 libmetalinklib="" 2679 2680 PKGTEST="no" 2681 if test "x$OPT_LIBMETALINK" = "xyes"; then 2682 dnl this is with no partiular path given 2683 PKGTEST="yes" 2684 CURL_CHECK_PKGCONFIG(libmetalink) 2685 else 2686 dnl When particular path is given, set PKG_CONFIG_LIBDIR using the path. 2687 LIBMETALINK_PCDIR="$OPT_LIBMETALINK/lib/pkgconfig" 2688 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$LIBMETALINK_PCDIR"]) 2689 if test -f "$LIBMETALINK_PCDIR/libmetalink.pc"; then 2690 PKGTEST="yes" 2691 fi 2692 if test "$PKGTEST" = "yes"; then 2693 CURL_CHECK_PKGCONFIG(libmetalink, [$LIBMETALINK_PCDIR]) 2694 fi 2695 fi 2696 if test "$PKGTEST" = "yes" && test "$PKGCONFIG" != "no"; then 2697 addlib=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl 2698 $PKGCONFIG --libs-only-l libmetalink` 2699 addld=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl 2700 $PKGCONFIG --libs-only-L libmetalink` 2701 addcflags=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl 2702 $PKGCONFIG --cflags-only-I libmetalink` 2703 version=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl 2704 $PKGCONFIG --modversion libmetalink` 2705 libmetalinklib=`echo $addld | $SED -e 's/-L//'` 2706 fi 2707 if test -n "$addlib"; then 2708 2709 clean_CPPFLAGS="$CPPFLAGS" 2710 clean_LDFLAGS="$LDFLAGS" 2711 clean_LIBS="$LIBS" 2712 CPPFLAGS="$clean_CPPFLAGS $addcflags" 2713 LDFLAGS="$clean_LDFLAGS $addld" 2714 LIBS="$addlib $clean_LIBS" 2715 AC_MSG_CHECKING([if libmetalink is recent enough]) 2716 AC_LINK_IFELSE([ 2717 AC_LANG_PROGRAM([[ 2718# include <metalink/metalink.h> 2719 ]],[[ 2720 if(0 != metalink_strerror(0)) /* added in 0.1.0 */ 2721 return 1; 2722 ]]) 2723 ],[ 2724 AC_MSG_RESULT([yes ($version)]) 2725 want_metalink="yes" 2726 ],[ 2727 AC_MSG_RESULT([no ($version)]) 2728 AC_MSG_NOTICE([libmetalink library defective or too old]) 2729 want_metalink="no" 2730 ]) 2731 CPPFLAGS="$clean_CPPFLAGS" 2732 LDFLAGS="$clean_LDFLAGS" 2733 LIBS="$clean_LIBS" 2734 if test "$want_metalink" = "yes"; then 2735 dnl finally libmetalink will be used 2736 AC_DEFINE(USE_METALINK, 1, [Define to enable metalink support]) 2737 LIBMETALINK_LIBS=$addlib 2738 LIBMETALINK_LDFLAGS=$addld 2739 LIBMETALINK_CPPFLAGS=$addcflags 2740 AC_SUBST([LIBMETALINK_LIBS]) 2741 AC_SUBST([LIBMETALINK_LDFLAGS]) 2742 AC_SUBST([LIBMETALINK_CPPFLAGS]) 2743 curl_mtlnk_msg="enabled" 2744 fi 2745 2746 fi 2747fi 2748 2749dnl ********************************************************************** 2750dnl Check for the presence of LIBSSH2 libraries and headers 2751dnl ********************************************************************** 2752 2753dnl Default to compiler & linker defaults for LIBSSH2 files & libraries. 2754OPT_LIBSSH2=off 2755AC_ARG_WITH(libssh2,dnl 2756AC_HELP_STRING([--with-libssh2=PATH],[Where to look for libssh2, PATH points to the LIBSSH2 installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]) 2757AC_HELP_STRING([--with-libssh2], [enable LIBSSH2]), 2758 OPT_LIBSSH2=$withval, OPT_LIBSSH2=no) 2759 2760 2761OPT_LIBSSH=off 2762AC_ARG_WITH(libssh,dnl 2763AC_HELP_STRING([--with-libssh=PATH],[Where to look for libssh, PATH points to the LIBSSH installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]) 2764AC_HELP_STRING([--with-libssh], [enable LIBSSH]), 2765 OPT_LIBSSH=$withval, OPT_LIBSSH=no) 2766 2767if test X"$OPT_LIBSSH2" != Xno; then 2768 dnl backup the pre-libssh2 variables 2769 CLEANLDFLAGS="$LDFLAGS" 2770 CLEANCPPFLAGS="$CPPFLAGS" 2771 CLEANLIBS="$LIBS" 2772 2773 case "$OPT_LIBSSH2" in 2774 yes) 2775 dnl --with-libssh2 (without path) used 2776 CURL_CHECK_PKGCONFIG(libssh2) 2777 2778 if test "$PKGCONFIG" != "no" ; then 2779 LIB_SSH2=`$PKGCONFIG --libs libssh2` 2780 LD_SSH2=`$PKGCONFIG --libs-only-L libssh2` 2781 CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2` 2782 version=`$PKGCONFIG --modversion libssh2` 2783 DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'` 2784 fi 2785 2786 ;; 2787 off) 2788 dnl no --with-libssh2 option given, just check default places 2789 ;; 2790 *) 2791 dnl use the given --with-libssh2 spot 2792 PREFIX_SSH2=$OPT_LIBSSH2 2793 ;; 2794 esac 2795 2796 dnl if given with a prefix, we set -L and -I based on that 2797 if test -n "$PREFIX_SSH2"; then 2798 LIB_SSH2="-lssh2" 2799 LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff 2800 CPP_SSH2=-I${PREFIX_SSH2}/include 2801 DIR_SSH2=${PREFIX_SSH2}/lib$libsuff 2802 fi 2803 2804 LDFLAGS="$LDFLAGS $LD_SSH2" 2805 CPPFLAGS="$CPPFLAGS $CPP_SSH2" 2806 LIBS="$LIB_SSH2 $LIBS" 2807 2808 AC_CHECK_LIB(ssh2, libssh2_channel_open_ex) 2809 2810 AC_CHECK_HEADERS(libssh2.h, 2811 curl_ssh_msg="enabled (libSSH2)" 2812 LIBSSH2_ENABLED=1 2813 AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use]) 2814 AC_SUBST(USE_LIBSSH2, [1]) 2815 ) 2816 2817 if test X"$OPT_LIBSSH2" != Xoff && 2818 test "$LIBSSH2_ENABLED" != "1"; then 2819 AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!]) 2820 fi 2821 2822 if test "$LIBSSH2_ENABLED" = "1"; then 2823 if test -n "$DIR_SSH2"; then 2824 dnl when the libssh2 shared libs were found in a path that the run-time 2825 dnl linker doesn't search through, we need to add it to CURL_LIBRARY_PATH 2826 dnl to prevent further configure tests to fail due to this 2827 2828 if test "x$cross_compiling" != "xyes"; then 2829 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_SSH2" 2830 export CURL_LIBRARY_PATH 2831 AC_MSG_NOTICE([Added $DIR_SSH2 to CURL_LIBRARY_PATH]) 2832 fi 2833 fi 2834 else 2835 dnl no libssh2, revert back to clean variables 2836 LDFLAGS=$CLEANLDFLAGS 2837 CPPFLAGS=$CLEANCPPFLAGS 2838 LIBS=$CLEANLIBS 2839 fi 2840elif test X"$OPT_LIBSSH" != Xno; then 2841 dnl backup the pre-libssh variables 2842 CLEANLDFLAGS="$LDFLAGS" 2843 CLEANCPPFLAGS="$CPPFLAGS" 2844 CLEANLIBS="$LIBS" 2845 2846 case "$OPT_LIBSSH" in 2847 yes) 2848 dnl --with-libssh (without path) used 2849 CURL_CHECK_PKGCONFIG(libssh) 2850 2851 if test "$PKGCONFIG" != "no" ; then 2852 LIB_SSH=`$PKGCONFIG --libs-only-l libssh` 2853 LD_SSH=`$PKGCONFIG --libs-only-L libssh` 2854 CPP_SSH=`$PKGCONFIG --cflags-only-I libssh` 2855 version=`$PKGCONFIG --modversion libssh` 2856 DIR_SSH=`echo $LD_SSH | $SED -e 's/-L//'` 2857 fi 2858 2859 ;; 2860 off) 2861 dnl no --with-libssh option given, just check default places 2862 ;; 2863 *) 2864 dnl use the given --with-libssh spot 2865 PREFIX_SSH=$OPT_LIBSSH 2866 ;; 2867 esac 2868 2869 dnl if given with a prefix, we set -L and -I based on that 2870 if test -n "$PREFIX_SSH"; then 2871 LIB_SSH="-lssh" 2872 LD_SSH=-L${PREFIX_SSH}/lib$libsuff 2873 CPP_SSH=-I${PREFIX_SSH}/include 2874 DIR_SSH=${PREFIX_SSH}/lib$libsuff 2875 fi 2876 2877 LDFLAGS="$LDFLAGS $LD_SSH" 2878 CPPFLAGS="$CPPFLAGS $CPP_SSH" 2879 LIBS="$LIB_SSH $LIBS" 2880 2881 AC_CHECK_LIB(ssh, ssh_new) 2882 2883 AC_CHECK_HEADERS(libssh/libssh.h, 2884 curl_ssh_msg="enabled (libSSH)" 2885 LIBSSH_ENABLED=1 2886 AC_DEFINE(USE_LIBSSH, 1, [if libSSH is in use]) 2887 AC_SUBST(USE_LIBSSH, [1]) 2888 ) 2889 2890 if test X"$OPT_LIBSSH" != Xoff && 2891 test "$LIBSSH_ENABLED" != "1"; then 2892 AC_MSG_ERROR([libSSH libs and/or directories were not found where specified!]) 2893 fi 2894 2895 if test "$LIBSSH_ENABLED" = "1"; then 2896 if test -n "$DIR_SSH"; then 2897 dnl when the libssh shared libs were found in a path that the run-time 2898 dnl linker doesn't search through, we need to add it to CURL_LIBRARY_PATH 2899 dnl to prevent further configure tests to fail due to this 2900 2901 if test "x$cross_compiling" != "xyes"; then 2902 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_SSH" 2903 export CURL_LIBRARY_PATH 2904 AC_MSG_NOTICE([Added $DIR_SSH to CURL_LIBRARY_PATH]) 2905 fi 2906 fi 2907 else 2908 dnl no libssh, revert back to clean variables 2909 LDFLAGS=$CLEANLDFLAGS 2910 CPPFLAGS=$CLEANCPPFLAGS 2911 LIBS=$CLEANLIBS 2912 fi 2913fi 2914 2915dnl ********************************************************************** 2916dnl Check for the presence of LIBRTMP libraries and headers 2917dnl ********************************************************************** 2918 2919dnl Default to compiler & linker defaults for LIBRTMP files & libraries. 2920OPT_LIBRTMP=off 2921AC_ARG_WITH(librtmp,dnl 2922AC_HELP_STRING([--with-librtmp=PATH],[Where to look for librtmp, PATH points to the LIBRTMP installation; when possible, set the PKG_CONFIG_PATH environment variable instead of using this option]) 2923AC_HELP_STRING([--without-librtmp], [disable LIBRTMP]), 2924 OPT_LIBRTMP=$withval) 2925 2926if test X"$OPT_LIBRTMP" != Xno; then 2927 dnl backup the pre-librtmp variables 2928 CLEANLDFLAGS="$LDFLAGS" 2929 CLEANCPPFLAGS="$CPPFLAGS" 2930 CLEANLIBS="$LIBS" 2931 2932 case "$OPT_LIBRTMP" in 2933 yes) 2934 dnl --with-librtmp (without path) used 2935 CURL_CHECK_PKGCONFIG(librtmp) 2936 2937 if test "$PKGCONFIG" != "no" ; then 2938 LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp` 2939 LD_RTMP=`$PKGCONFIG --libs-only-L librtmp` 2940 CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp` 2941 version=`$PKGCONFIG --modversion librtmp` 2942 DIR_RTMP=`echo $LD_RTMP | $SED -e 's/-L//'` 2943 else 2944 dnl To avoid link errors, we do not allow --librtmp without 2945 dnl a pkgconfig file 2946 AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.]) 2947 fi 2948 2949 ;; 2950 off) 2951 dnl no --with-librtmp option given, just check default places 2952 LIB_RTMP="-lrtmp" 2953 ;; 2954 *) 2955 dnl use the given --with-librtmp spot 2956 LIB_RTMP="-lrtmp" 2957 PREFIX_RTMP=$OPT_LIBRTMP 2958 ;; 2959 esac 2960 2961 dnl if given with a prefix, we set -L and -I based on that 2962 if test -n "$PREFIX_RTMP"; then 2963 LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff 2964 CPP_RTMP=-I${PREFIX_RTMP}/include 2965 DIR_RTMP=${PREFIX_RTMP}/lib$libsuff 2966 fi 2967 2968 LDFLAGS="$LDFLAGS $LD_RTMP" 2969 CPPFLAGS="$CPPFLAGS $CPP_RTMP" 2970 LIBS="$LIB_RTMP $LIBS" 2971 2972 AC_CHECK_LIB(rtmp, RTMP_Init, 2973 [ 2974 AC_CHECK_HEADERS(librtmp/rtmp.h, 2975 curl_rtmp_msg="enabled (librtmp)" 2976 LIBRTMP_ENABLED=1 2977 AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use]) 2978 AC_SUBST(USE_LIBRTMP, [1]) 2979 ) 2980 ], 2981 dnl not found, revert back to clean variables 2982 LDFLAGS=$CLEANLDFLAGS 2983 CPPFLAGS=$CLEANCPPFLAGS 2984 LIBS=$CLEANLIBS 2985 ) 2986 2987 if test X"$OPT_LIBRTMP" != Xoff && 2988 test "$LIBRTMP_ENABLED" != "1"; then 2989 AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!]) 2990 fi 2991 2992fi 2993 2994dnl ********************************************************************** 2995dnl Check for linker switch for versioned symbols 2996dnl ********************************************************************** 2997 2998versioned_symbols_flavour= 2999AC_MSG_CHECKING([whether versioned symbols are wanted]) 3000AC_ARG_ENABLE(versioned-symbols, 3001AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library]) 3002AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]), 3003[ case "$enableval" in 3004 yes) AC_MSG_RESULT(yes) 3005 AC_MSG_CHECKING([if libraries can be versioned]) 3006 GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script` 3007 if test -z "$GLD"; then 3008 AC_MSG_RESULT(no) 3009 AC_MSG_WARN([You need an ld version supporting the --version-script option]) 3010 else 3011 AC_MSG_RESULT(yes) 3012 if test "x$CURL_WITH_MULTI_SSL" = "x1"; then 3013 versioned_symbols_flavour="MULTISSL_" 3014 elif test "x$OPENSSL_ENABLED" = "x1"; then 3015 versioned_symbols_flavour="OPENSSL_" 3016 elif test "x$GNUTLS_ENABLED" = "x1"; then 3017 versioned_symbols_flavour="GNUTLS_" 3018 elif test "x$NSS_ENABLED" = "x1"; then 3019 versioned_symbols_flavour="NSS_" 3020 elif test "x$WOLFSSL_ENABLED" = "x1"; then 3021 versioned_symbols_flavour="WOLFSSL_" 3022 elif test "x$WINSSL_ENABLED" = "x1"; then 3023 versioned_symbols_flavour="SCHANNEL_" 3024 elif test "x$SECURETRANSPORT_ENABLED" = "x1"; then 3025 versioned_symbols_flavour="SECURE_TRANSPORT_" 3026 else 3027 versioned_symbols_flavour="" 3028 fi 3029 versioned_symbols="yes" 3030 fi 3031 ;; 3032 3033 *) AC_MSG_RESULT(no) 3034 ;; 3035 esac 3036], [ 3037AC_MSG_RESULT(no) 3038] 3039) 3040 3041AC_SUBST([CURL_LT_SHLIB_VERSIONED_FLAVOUR], 3042 ["$versioned_symbols_flavour"]) 3043AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS], 3044 [test "x$versioned_symbols" = 'xyes']) 3045 3046dnl ------------------------------------------------- 3047dnl check winidn option before other IDN libraries 3048dnl ------------------------------------------------- 3049 3050AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)]) 3051OPT_WINIDN="default" 3052AC_ARG_WITH(winidn, 3053AC_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN]) 3054AC_HELP_STRING([--without-winidn], [disable Windows native IDN]), 3055 OPT_WINIDN=$withval) 3056case "$OPT_WINIDN" in 3057 no|default) 3058 dnl --without-winidn option used or configure option not specified 3059 want_winidn="no" 3060 AC_MSG_RESULT([no]) 3061 ;; 3062 yes) 3063 dnl --with-winidn option used without path 3064 want_winidn="yes" 3065 want_winidn_path="default" 3066 AC_MSG_RESULT([yes]) 3067 ;; 3068 *) 3069 dnl --with-winidn option used with path 3070 want_winidn="yes" 3071 want_winidn_path="$withval" 3072 AC_MSG_RESULT([yes ($withval)]) 3073 ;; 3074esac 3075 3076if test "$want_winidn" = "yes"; then 3077 dnl winidn library support has been requested 3078 clean_CPPFLAGS="$CPPFLAGS" 3079 clean_LDFLAGS="$LDFLAGS" 3080 clean_LIBS="$LIBS" 3081 WINIDN_LIBS="-lnormaliz" 3082 WINIDN_CPPFLAGS="-DWINVER=0x0600" 3083 # 3084 if test "$want_winidn_path" != "default"; then 3085 dnl path has been specified 3086 dnl pkg-config not available or provides no info 3087 WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff" 3088 WINIDN_CPPFLAGS="-I$want_winidn_path/include" 3089 WINIDN_DIR="$want_winidn_path/lib$libsuff" 3090 fi 3091 # 3092 CPPFLAGS="$CPPFLAGS $WINIDN_CPPFLAGS" 3093 LDFLAGS="$LDFLAGS $WINIDN_LDFLAGS" 3094 LIBS="$WINIDN_LIBS $LIBS" 3095 # 3096 AC_MSG_CHECKING([if IdnToUnicode can be linked]) 3097 AC_LINK_IFELSE([ 3098 AC_LANG_PROGRAM([[ 3099 #include <windows.h> 3100 ]],[[ 3101 IdnToUnicode(0, NULL, 0, NULL, 0); 3102 ]]) 3103 ],[ 3104 AC_MSG_RESULT([yes]) 3105 tst_links_winidn="yes" 3106 ],[ 3107 AC_MSG_RESULT([no]) 3108 tst_links_winidn="no" 3109 ]) 3110 # 3111 if test "$tst_links_winidn" = "yes"; then 3112 AC_DEFINE(USE_WIN32_IDN, 1, [Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz).]) 3113 AC_DEFINE(WANT_IDN_PROTOTYPES, 1, [Define to 1 to provide own prototypes.]) 3114 AC_SUBST([IDN_ENABLED], [1]) 3115 curl_idn_msg="enabled (Windows-native)" 3116 else 3117 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled]) 3118 CPPFLAGS="$clean_CPPFLAGS" 3119 LDFLAGS="$clean_LDFLAGS" 3120 LIBS="$clean_LIBS" 3121 fi 3122fi 3123 3124dnl ********************************************************************** 3125dnl Check for the presence of IDN libraries and headers 3126dnl ********************************************************************** 3127 3128AC_MSG_CHECKING([whether to build with libidn2]) 3129OPT_IDN="default" 3130AC_ARG_WITH(libidn2, 3131AC_HELP_STRING([--with-libidn2=PATH],[Enable libidn2 usage]) 3132AC_HELP_STRING([--without-libidn2],[Disable libidn2 usage]), 3133 [OPT_IDN=$withval]) 3134case "$OPT_IDN" in 3135 no) 3136 dnl --without-libidn2 option used 3137 want_idn="no" 3138 AC_MSG_RESULT([no]) 3139 ;; 3140 default) 3141 dnl configure option not specified 3142 want_idn="yes" 3143 want_idn_path="default" 3144 AC_MSG_RESULT([(assumed) yes]) 3145 ;; 3146 yes) 3147 dnl --with-libidn2 option used without path 3148 want_idn="yes" 3149 want_idn_path="default" 3150 AC_MSG_RESULT([yes]) 3151 ;; 3152 *) 3153 dnl --with-libidn2 option used with path 3154 want_idn="yes" 3155 want_idn_path="$withval" 3156 AC_MSG_RESULT([yes ($withval)]) 3157 ;; 3158esac 3159 3160if test "$want_idn" = "yes"; then 3161 dnl idn library support has been requested 3162 clean_CPPFLAGS="$CPPFLAGS" 3163 clean_LDFLAGS="$LDFLAGS" 3164 clean_LIBS="$LIBS" 3165 PKGCONFIG="no" 3166 # 3167 if test "$want_idn_path" != "default"; then 3168 dnl path has been specified 3169 IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig" 3170 CURL_CHECK_PKGCONFIG(libidn2, [$IDN_PCDIR]) 3171 if test "$PKGCONFIG" != "no"; then 3172 IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl 3173 $PKGCONFIG --libs-only-l libidn2 2>/dev/null` 3174 IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl 3175 $PKGCONFIG --libs-only-L libidn2 2>/dev/null` 3176 IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl 3177 $PKGCONFIG --cflags-only-I libidn2 2>/dev/null` 3178 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'` 3179 else 3180 dnl pkg-config not available or provides no info 3181 IDN_LIBS="-lidn2" 3182 IDN_LDFLAGS="-L$want_idn_path/lib$libsuff" 3183 IDN_CPPFLAGS="-I$want_idn_path/include" 3184 IDN_DIR="$want_idn_path/lib$libsuff" 3185 fi 3186 else 3187 dnl path not specified 3188 CURL_CHECK_PKGCONFIG(libidn2) 3189 if test "$PKGCONFIG" != "no"; then 3190 IDN_LIBS=`$PKGCONFIG --libs-only-l libidn2 2>/dev/null` 3191 IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn2 2>/dev/null` 3192 IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn2 2>/dev/null` 3193 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'` 3194 else 3195 dnl pkg-config not available or provides no info 3196 IDN_LIBS="-lidn2" 3197 fi 3198 fi 3199 # 3200 if test "$PKGCONFIG" != "no"; then 3201 AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"]) 3202 AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"]) 3203 AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"]) 3204 AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"]) 3205 else 3206 AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"]) 3207 AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"]) 3208 AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"]) 3209 AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"]) 3210 fi 3211 # 3212 CPPFLAGS="$CPPFLAGS $IDN_CPPFLAGS" 3213 LDFLAGS="$LDFLAGS $IDN_LDFLAGS" 3214 LIBS="$IDN_LIBS $LIBS" 3215 # 3216 AC_MSG_CHECKING([if idn2_lookup_ul can be linked]) 3217 AC_LINK_IFELSE([ 3218 AC_LANG_FUNC_LINK_TRY([idn2_lookup_ul]) 3219 ],[ 3220 AC_MSG_RESULT([yes]) 3221 tst_links_libidn="yes" 3222 ],[ 3223 AC_MSG_RESULT([no]) 3224 tst_links_libidn="no" 3225 ]) 3226 # 3227 AC_CHECK_HEADERS( idn2.h ) 3228 3229 if test "$tst_links_libidn" = "yes"; then 3230 AC_DEFINE(HAVE_LIBIDN2, 1, [Define to 1 if you have the `idn2' library (-lidn2).]) 3231 dnl different versions of libidn have different setups of these: 3232 3233 AC_SUBST([IDN_ENABLED], [1]) 3234 curl_idn_msg="enabled (libidn2)" 3235 if test -n "$IDN_DIR" -a "x$cross_compiling" != "xyes"; then 3236 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$IDN_DIR" 3237 export CURL_LIBRARY_PATH 3238 AC_MSG_NOTICE([Added $IDN_DIR to CURL_LIBRARY_PATH]) 3239 fi 3240 else 3241 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled]) 3242 CPPFLAGS="$clean_CPPFLAGS" 3243 LDFLAGS="$clean_LDFLAGS" 3244 LIBS="$clean_LIBS" 3245 fi 3246fi 3247 3248 3249dnl Let's hope this split URL remains working: 3250dnl https://www15.software.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \ 3251dnl genprogc/thread_quick_ref.htm 3252 3253 3254dnl ********************************************************************** 3255dnl Check for nghttp2 3256dnl ********************************************************************** 3257 3258OPT_H2="yes" 3259 3260if test "x$disable_http" = "xyes"; then 3261 # without HTTP, nghttp2 is no use 3262 OPT_H2="no" 3263fi 3264 3265AC_ARG_WITH(nghttp2, 3266AC_HELP_STRING([--with-nghttp2=PATH],[Enable nghttp2 usage]) 3267AC_HELP_STRING([--without-nghttp2],[Disable nghttp2 usage]), 3268 [OPT_H2=$withval]) 3269case "$OPT_H2" in 3270 no) 3271 dnl --without-nghttp2 option used 3272 want_h2="no" 3273 ;; 3274 yes) 3275 dnl --with-nghttp2 option used without path 3276 want_h2="default" 3277 want_h2_path="" 3278 ;; 3279 *) 3280 dnl --with-nghttp2 option used with path 3281 want_h2="yes" 3282 want_h2_path="$withval/lib/pkgconfig" 3283 ;; 3284esac 3285 3286curl_h2_msg="disabled (--with-nghttp2)" 3287if test X"$want_h2" != Xno; then 3288 dnl backup the pre-nghttp2 variables 3289 CLEANLDFLAGS="$LDFLAGS" 3290 CLEANCPPFLAGS="$CPPFLAGS" 3291 CLEANLIBS="$LIBS" 3292 3293 CURL_CHECK_PKGCONFIG(libnghttp2, $want_h2_path) 3294 3295 if test "$PKGCONFIG" != "no" ; then 3296 LIB_H2=`CURL_EXPORT_PCDIR([$want_h2_path]) 3297 $PKGCONFIG --libs-only-l libnghttp2` 3298 AC_MSG_NOTICE([-l is $LIB_H2]) 3299 3300 CPP_H2=`CURL_EXPORT_PCDIR([$want_h2_path]) dnl 3301 $PKGCONFIG --cflags-only-I libnghttp2` 3302 AC_MSG_NOTICE([-I is $CPP_H2]) 3303 3304 LD_H2=`CURL_EXPORT_PCDIR([$want_h2_path]) 3305 $PKGCONFIG --libs-only-L libnghttp2` 3306 AC_MSG_NOTICE([-L is $LD_H2]) 3307 3308 LDFLAGS="$LDFLAGS $LD_H2" 3309 CPPFLAGS="$CPPFLAGS $CPP_H2" 3310 LIBS="$LIB_H2 $LIBS" 3311 3312 # use nghttp2_option_set_no_recv_client_magic to require nghttp2 3313 # >= 1.0.0 3314 AC_CHECK_LIB(nghttp2, nghttp2_option_set_no_recv_client_magic, 3315 [ 3316 AC_CHECK_HEADERS(nghttp2/nghttp2.h, 3317 curl_h2_msg="enabled (nghttp2)" 3318 NGHTTP2_ENABLED=1 3319 AC_DEFINE(USE_NGHTTP2, 1, [if nghttp2 is in use]) 3320 AC_SUBST(USE_NGHTTP2, [1]) 3321 ) 3322 ], 3323 dnl not found, revert back to clean variables 3324 LDFLAGS=$CLEANLDFLAGS 3325 CPPFLAGS=$CLEANCPPFLAGS 3326 LIBS=$CLEANLIBS 3327 ) 3328 3329 else 3330 dnl no nghttp2 pkg-config found, deal with it 3331 if test X"$want_h2" != Xdefault; then 3332 dnl To avoid link errors, we do not allow --with-nghttp2 without 3333 dnl a pkgconfig file 3334 AC_MSG_ERROR([--with-nghttp2 was specified but could not find libnghttp2 pkg-config file.]) 3335 fi 3336 fi 3337 3338fi 3339 3340dnl ********************************************************************** 3341dnl Check for ngtcp2 (QUIC) 3342dnl ********************************************************************** 3343 3344OPT_TCP2="yes" 3345curl_h3_msg="disabled (--with-ngtcp2, --with-quiche)" 3346 3347if test "x$disable_http" = "xyes"; then 3348 # without HTTP, ngtcp2 is no use 3349 OPT_TCP2="no" 3350fi 3351 3352AC_ARG_WITH(ngtcp2, 3353AC_HELP_STRING([--with-ngtcp2=PATH],[Enable ngtcp2 usage]) 3354AC_HELP_STRING([--without-ngtcp2],[Disable ngtcp2 usage]), 3355 [OPT_TCP2=$withval]) 3356case "$OPT_TCP2" in 3357 no) 3358 dnl --without-ngtcp2 option used 3359 want_tcp2="no" 3360 ;; 3361 yes) 3362 dnl --with-ngtcp2 option used without path 3363 want_tcp2="default" 3364 want_tcp2_path="" 3365 ;; 3366 *) 3367 dnl --with-ngtcp2 option used with path 3368 want_tcp2="yes" 3369 want_tcp2_path="$withval/lib/pkgconfig" 3370 ;; 3371esac 3372 3373curl_tcp2_msg="disabled (--with-ngtcp2)" 3374if test X"$want_tcp2" != Xno; then 3375 dnl backup the pre-ngtcp2 variables 3376 CLEANLDFLAGS="$LDFLAGS" 3377 CLEANCPPFLAGS="$CPPFLAGS" 3378 CLEANLIBS="$LIBS" 3379 3380 CURL_CHECK_PKGCONFIG(libngtcp2, $want_tcp2_path) 3381 3382 if test "$PKGCONFIG" != "no" ; then 3383 LIB_TCP2=`CURL_EXPORT_PCDIR([$want_tcp2_path]) 3384 $PKGCONFIG --libs-only-l libngtcp2` 3385 AC_MSG_NOTICE([-l is $LIB_TCP2]) 3386 3387 CPP_TCP2=`CURL_EXPORT_PCDIR([$want_tcp2_path]) dnl 3388 $PKGCONFIG --cflags-only-I libngtcp2` 3389 AC_MSG_NOTICE([-I is $CPP_TCP2]) 3390 3391 LD_TCP2=`CURL_EXPORT_PCDIR([$want_tcp2_path]) 3392 $PKGCONFIG --libs-only-L libngtcp2` 3393 AC_MSG_NOTICE([-L is $LD_TCP2]) 3394 3395 LDFLAGS="$LDFLAGS $LD_TCP2" 3396 CPPFLAGS="$CPPFLAGS $CPP_TCP2" 3397 LIBS="$LIB_TCP2 $LIBS" 3398 3399 if test "x$cross_compiling" != "xyes"; then 3400 DIR_TCP2=`echo $LD_TCP2 | $SED -e 's/-L//'` 3401 fi 3402 AC_CHECK_LIB(ngtcp2, ngtcp2_conn_client_new, 3403 [ 3404 AC_CHECK_HEADERS(ngtcp2/ngtcp2.h, 3405 NGTCP2_ENABLED=1 3406 AC_DEFINE(USE_NGTCP2, 1, [if ngtcp2 is in use]) 3407 AC_SUBST(USE_NGTCP2, [1]) 3408 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_TCP2" 3409 export CURL_LIBRARY_PATH 3410 AC_MSG_NOTICE([Added $DIR_TCP2 to CURL_LIBRARY_PATH]) 3411 ) 3412 ], 3413 dnl not found, revert back to clean variables 3414 LDFLAGS=$CLEANLDFLAGS 3415 CPPFLAGS=$CLEANCPPFLAGS 3416 LIBS=$CLEANLIBS 3417 ) 3418 3419 else 3420 dnl no ngtcp2 pkg-config found, deal with it 3421 if test X"$want_tcp2" != Xdefault; then 3422 dnl To avoid link errors, we do not allow --with-ngtcp2 without 3423 dnl a pkgconfig file 3424 AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2 pkg-config file.]) 3425 fi 3426 fi 3427 3428fi 3429 3430if test "x$NGTCP2_ENABLED" = "x1"; then 3431 dnl backup the pre-ngtcp2_crypto_openssl variables 3432 CLEANLDFLAGS="$LDFLAGS" 3433 CLEANCPPFLAGS="$CPPFLAGS" 3434 CLEANLIBS="$LIBS" 3435 3436 CURL_CHECK_PKGCONFIG(libngtcp2_crypto_openssl, $want_tcp2_path) 3437 3438 if test "$PKGCONFIG" != "no" ; then 3439 LIB_NGTCP2_CRYPTO_OPENSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path]) 3440 $PKGCONFIG --libs-only-l libngtcp2_crypto_openssl` 3441 AC_MSG_NOTICE([-l is $LIB_NGTCP2_CRYPTO_OPENSSL]) 3442 3443 CPP_NGTCP2_CRYPTO_OPENSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path]) dnl 3444 $PKGCONFIG --cflags-only-I libngtcp2_crypto_openssl` 3445 AC_MSG_NOTICE([-I is $CPP_NGTCP2_CRYPTO_OPENSSL]) 3446 3447 LD_NGTCP2_CRYPTO_OPENSSL=`CURL_EXPORT_PCDIR([$want_tcp2_path]) 3448 $PKGCONFIG --libs-only-L libngtcp2_crypto_openssl` 3449 AC_MSG_NOTICE([-L is $LD_NGTCP2_CRYPTO_OPENSSL]) 3450 3451 LDFLAGS="$LDFLAGS $LD_NGTCP2_CRYPTO_OPENSSL" 3452 CPPFLAGS="$CPPFLAGS $CPP_NGTCP2_CRYPTO_OPENSSL" 3453 LIBS="$LIB_NGTCP2_CRYPTO_OPENSSL $LIBS" 3454 3455 if test "x$cross_compiling" != "xyes"; then 3456 DIR_NGTCP2_CRYPTO_OPENSSL=`echo $LD_NGTCP2_CRYPTO_OPENSSL | $SED -e 's/-L//'` 3457 fi 3458 AC_CHECK_LIB(ngtcp2_crypto_openssl, ngtcp2_crypto_ctx_initial, 3459 [ 3460 AC_CHECK_HEADERS(ngtcp2/ngtcp2_crypto.h, 3461 NGTCP2_ENABLED=1 3462 AC_DEFINE(USE_NGTCP2_CRYPTO_OPENSSL, 1, [if ngtcp2_crypto_openssl is in use]) 3463 AC_SUBST(USE_NGTCP2_CRYPTO_OPENSSL, [1]) 3464 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGTCP2_CRYPTO_OPENSSL" 3465 export CURL_LIBRARY_PATH 3466 AC_MSG_NOTICE([Added $DIR_NGTCP2_CRYPTO_OPENSSL to CURL_LIBRARY_PATH]) 3467 ) 3468 ], 3469 dnl not found, revert back to clean variables 3470 LDFLAGS=$CLEANLDFLAGS 3471 CPPFLAGS=$CLEANCPPFLAGS 3472 LIBS=$CLEANLIBS 3473 ) 3474 3475 else 3476 dnl no ngtcp2_crypto_openssl pkg-config found, deal with it 3477 if test X"$want_tcp2" != Xdefault; then 3478 dnl To avoid link errors, we do not allow --with-ngtcp2 without 3479 dnl a pkgconfig file 3480 AC_MSG_ERROR([--with-ngtcp2 was specified but could not find ngtcp2_crypto_openssl pkg-config file.]) 3481 fi 3482 fi 3483fi 3484 3485dnl ********************************************************************** 3486dnl Check for nghttp3 (HTTP/3 with ngtcp2) 3487dnl ********************************************************************** 3488 3489OPT_NGHTTP3="yes" 3490 3491if test "x$NGTCP2_ENABLED" = "x"; then 3492 # without ngtcp2, nghttp3 is of no use for us 3493 OPT_NGHTTP3="no" 3494fi 3495 3496AC_ARG_WITH(nghttp3, 3497AC_HELP_STRING([--with-nghttp3=PATH],[Enable nghttp3 usage]) 3498AC_HELP_STRING([--without-nghttp3],[Disable nghttp3 usage]), 3499 [OPT_NGHTTP3=$withval]) 3500case "$OPT_NGHTTP3" in 3501 no) 3502 dnl --without-nghttp3 option used 3503 want_nghttp3="no" 3504 ;; 3505 yes) 3506 dnl --with-nghttp3 option used without path 3507 want_nghttp3="default" 3508 want_nghttp3_path="" 3509 ;; 3510 *) 3511 dnl --with-nghttp3 option used with path 3512 want_nghttp3="yes" 3513 want_nghttp3_path="$withval/lib/pkgconfig" 3514 ;; 3515esac 3516 3517curl_http3_msg="disabled (--with-nghttp3)" 3518if test X"$want_nghttp3" != Xno; then 3519 dnl backup the pre-nghttp3 variables 3520 CLEANLDFLAGS="$LDFLAGS" 3521 CLEANCPPFLAGS="$CPPFLAGS" 3522 CLEANLIBS="$LIBS" 3523 3524 CURL_CHECK_PKGCONFIG(libnghttp3, $want_nghttp3_path) 3525 3526 if test "$PKGCONFIG" != "no" ; then 3527 LIB_NGHTTP3=`CURL_EXPORT_PCDIR([$want_nghttp3_path]) 3528 $PKGCONFIG --libs-only-l libnghttp3` 3529 AC_MSG_NOTICE([-l is $LIB_NGHTTP3]) 3530 3531 CPP_NGHTTP3=`CURL_EXPORT_PCDIR([$want_nghttp3_path]) dnl 3532 $PKGCONFIG --cflags-only-I libnghttp3` 3533 AC_MSG_NOTICE([-I is $CPP_NGHTTP3]) 3534 3535 LD_NGHTTP3=`CURL_EXPORT_PCDIR([$want_nghttp3_path]) 3536 $PKGCONFIG --libs-only-L libnghttp3` 3537 AC_MSG_NOTICE([-L is $LD_NGHTTP3]) 3538 3539 LDFLAGS="$LDFLAGS $LD_NGHTTP3" 3540 CPPFLAGS="$CPPFLAGS $CPP_NGHTTP3" 3541 LIBS="$LIB_NGHTTP3 $LIBS" 3542 3543 if test "x$cross_compiling" != "xyes"; then 3544 DIR_NGHTTP3=`echo $LD_NGHTTP3 | $SED -e 's/-L//'` 3545 fi 3546 AC_CHECK_LIB(nghttp3, nghttp3_conn_client_new, 3547 [ 3548 AC_CHECK_HEADERS(nghttp3/nghttp3.h, 3549 curl_h3_msg="enabled (ngtcp2 + nghttp3)" 3550 NGHTTP3_ENABLED=1 3551 AC_DEFINE(USE_NGHTTP3, 1, [if nghttp3 is in use]) 3552 AC_SUBST(USE_NGHTTP3, [1]) 3553 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_NGHTTP3" 3554 export CURL_LIBRARY_PATH 3555 AC_MSG_NOTICE([Added $DIR_NGHTTP3 to CURL_LIBRARY_PATH]) 3556 experimental="$experimental HTTP3" 3557 ) 3558 ], 3559 dnl not found, revert back to clean variables 3560 LDFLAGS=$CLEANLDFLAGS 3561 CPPFLAGS=$CLEANCPPFLAGS 3562 LIBS=$CLEANLIBS 3563 ) 3564 3565 else 3566 dnl no nghttp3 pkg-config found, deal with it 3567 if test X"$want_nghttp3" != Xdefault; then 3568 dnl To avoid link errors, we do not allow --with-nghttp3 without 3569 dnl a pkgconfig file 3570 AC_MSG_ERROR([--with-nghttp3 was specified but could not find nghttp3 pkg-config file.]) 3571 fi 3572 fi 3573 3574fi 3575 3576dnl ********************************************************************** 3577dnl Check for quiche (QUIC) 3578dnl ********************************************************************** 3579 3580OPT_QUICHE="yes" 3581 3582if test "x$disable_http" = "xyes" -o "x$USE_NGTCP" = "x1"; then 3583 # without HTTP or with ngtcp2, quiche is no use 3584 OPT_QUICHE="no" 3585fi 3586 3587AC_ARG_WITH(quiche, 3588AC_HELP_STRING([--with-quiche=PATH],[Enable quiche usage]) 3589AC_HELP_STRING([--without-quiche],[Disable quiche usage]), 3590 [OPT_QUICHE=$withval]) 3591case "$OPT_QUICHE" in 3592 no) 3593 dnl --without-quiche option used 3594 want_quiche="no" 3595 ;; 3596 yes) 3597 dnl --with-quiche option used without path 3598 want_quiche="default" 3599 want_quiche_path="" 3600 ;; 3601 *) 3602 dnl --with-quiche option used with path 3603 want_quiche="yes" 3604 want_quiche_path="$withval" 3605 ;; 3606esac 3607 3608if test X"$want_quiche" != Xno; then 3609 dnl backup the pre-quiche variables 3610 CLEANLDFLAGS="$LDFLAGS" 3611 CLEANCPPFLAGS="$CPPFLAGS" 3612 CLEANLIBS="$LIBS" 3613 3614 CURL_CHECK_PKGCONFIG(quiche, $want_quiche_path) 3615 3616 if test "$PKGCONFIG" != "no" ; then 3617 LIB_QUICHE=`CURL_EXPORT_PCDIR([$want_quiche_path]) 3618 $PKGCONFIG --libs-only-l quiche` 3619 AC_MSG_NOTICE([-l is $LIB_QUICHE]) 3620 3621 CPP_QUICHE=`CURL_EXPORT_PCDIR([$want_quiche_path]) dnl 3622 $PKGCONFIG --cflags-only-I quiche` 3623 AC_MSG_NOTICE([-I is $CPP_QUICHE]) 3624 3625 LD_QUICHE=`CURL_EXPORT_PCDIR([$want_quiche_path]) 3626 $PKGCONFIG --libs-only-L quiche` 3627 AC_MSG_NOTICE([-L is $LD_QUICHE]) 3628 3629 LDFLAGS="$LDFLAGS $LD_QUICHE" 3630 CPPFLAGS="$CPPFLAGS $CPP_QUICHE" 3631 LIBS="$LIB_QUICHE $LIBS" 3632 3633 if test "x$cross_compiling" != "xyes"; then 3634 DIR_QUICHE=`echo $LD_QUICHE | $SED -e 's/-L//'` 3635 fi 3636 AC_CHECK_LIB(quiche, quiche_connect, 3637 [ 3638 AC_CHECK_HEADERS(quiche.h, 3639 experimental="$experimental HTTP3" 3640 AC_MSG_NOTICE([HTTP3 support is experimental]) 3641 curl_h3_msg="enabled (quiche)" 3642 QUICHE_ENABLED=1 3643 AC_DEFINE(USE_QUICHE, 1, [if quiche is in use]) 3644 AC_SUBST(USE_QUICHE, [1]) 3645 CURL_LIBRARY_PATH="$CURL_LIBRARY_PATH:$DIR_QUICHE" 3646 export CURL_LIBRARY_PATH 3647 AC_MSG_NOTICE([Added $DIR_QUICHE to CURL_LIBRARY_PATH]), 3648 ) 3649 ], 3650 dnl not found, revert back to clean variables 3651 LDFLAGS=$CLEANLDFLAGS 3652 CPPFLAGS=$CLEANCPPFLAGS 3653 LIBS=$CLEANLIBS 3654 ) 3655 else 3656 dnl no nghttp3 pkg-config found, deal with it 3657 if test X"$want_quiche" != Xdefault; then 3658 dnl To avoid link errors, we do not allow --with-nghttp3 without 3659 dnl a pkgconfig file 3660 AC_MSG_ERROR([--with-quiche was specified but could not find quiche pkg-config file.]) 3661 fi 3662 fi 3663fi 3664 3665dnl ********************************************************************** 3666dnl Check for zsh completion path 3667dnl ********************************************************************** 3668 3669OPT_ZSH_FPATH=default 3670AC_ARG_WITH(zsh-functions-dir, 3671AC_HELP_STRING([--with-zsh-functions-dir=PATH],[Install zsh completions to PATH]) 3672AC_HELP_STRING([--without-zsh-functions-dir],[Do not install zsh completions]), 3673 [OPT_ZSH_FPATH=$withval]) 3674case "$OPT_ZSH_FPATH" in 3675 no) 3676 dnl --without-zsh-functions-dir option used 3677 ;; 3678 default|yes) 3679 dnl --with-zsh-functions-dir option used without path 3680 ZSH_FUNCTIONS_DIR="$datarootdir/zsh/site-functions" 3681 AC_SUBST(ZSH_FUNCTIONS_DIR) 3682 ;; 3683 *) 3684 dnl --with-zsh-functions-dir option used with path 3685 ZSH_FUNCTIONS_DIR="$withval" 3686 AC_SUBST(ZSH_FUNCTIONS_DIR) 3687 ;; 3688esac 3689 3690dnl ********************************************************************** 3691dnl Check for fish completion path 3692dnl ********************************************************************** 3693 3694OPT_FISH_FPATH=default 3695AC_ARG_WITH(fish-functions-dir, 3696AC_HELP_STRING([--with-fish-functions-dir=PATH],[Install fish completions to PATH]) 3697AC_HELP_STRING([--without-fish-functions-dir],[Do not install fish completions]), 3698 [OPT_FISH_FPATH=$withval]) 3699case "$OPT_FISH_FPATH" in 3700 no) 3701 dnl --without-fish-functions-dir option used 3702 ;; 3703 default|yes) 3704 dnl --with-fish-functions-dir option used without path 3705 CURL_CHECK_PKGCONFIG(fish) 3706 if test "$PKGCONFIG" != "no" ; then 3707 FISH_FUNCTIONS_DIR="$($PKGCONFIG --variable completionsdir fish)" 3708 else 3709 FISH_FUNCTIONS_DIR="$datarootdir/fish/vendor_completions.d" 3710 fi 3711 AC_SUBST(FISH_FUNCTIONS_DIR) 3712 ;; 3713 *) 3714 dnl --with-fish-functions-dir option used with path 3715 FISH_FUNCTIONS_DIR="$withval" 3716 AC_SUBST(FISH_FUNCTIONS_DIR) 3717 ;; 3718esac 3719 3720dnl ********************************************************************** 3721dnl Back to "normal" configuring 3722dnl ********************************************************************** 3723 3724dnl Checks for header files. 3725AC_HEADER_STDC 3726 3727CURL_CHECK_HEADER_MALLOC 3728CURL_CHECK_HEADER_MEMORY 3729 3730dnl Now check for the very most basic headers. Then we can use these 3731dnl ones as default-headers when checking for the rest! 3732AC_CHECK_HEADERS( 3733 sys/types.h \ 3734 sys/time.h \ 3735 sys/select.h \ 3736 sys/socket.h \ 3737 sys/ioctl.h \ 3738 sys/uio.h \ 3739 assert.h \ 3740 unistd.h \ 3741 stdlib.h \ 3742 arpa/inet.h \ 3743 net/if.h \ 3744 netinet/in.h \ 3745 netinet/in6.h \ 3746 sys/un.h \ 3747 linux/tcp.h \ 3748 netinet/tcp.h \ 3749 netdb.h \ 3750 sys/sockio.h \ 3751 sys/stat.h \ 3752 sys/param.h \ 3753 termios.h \ 3754 termio.h \ 3755 sgtty.h \ 3756 fcntl.h \ 3757 alloca.h \ 3758 time.h \ 3759 io.h \ 3760 pwd.h \ 3761 utime.h \ 3762 sys/utime.h \ 3763 sys/poll.h \ 3764 poll.h \ 3765 socket.h \ 3766 sys/resource.h \ 3767 libgen.h \ 3768 locale.h \ 3769 errno.h \ 3770 stdbool.h \ 3771 arpa/tftp.h \ 3772 sys/filio.h \ 3773 sys/wait.h \ 3774 setjmp.h, 3775dnl to do if not found 3776[], 3777dnl to do if found 3778[], 3779dnl default includes 3780[ 3781#ifdef HAVE_SYS_TYPES_H 3782#include <sys/types.h> 3783#endif 3784#ifdef HAVE_SYS_TIME_H 3785#include <sys/time.h> 3786#endif 3787#ifdef HAVE_SYS_SELECT_H 3788#include <sys/select.h> 3789#endif 3790#ifdef HAVE_SYS_SOCKET_H 3791#include <sys/socket.h> 3792#endif 3793#ifdef HAVE_NETINET_IN_H 3794#include <netinet/in.h> 3795#endif 3796#ifdef HAVE_NETINET_IN6_H 3797#include <netinet/in6.h> 3798#endif 3799#ifdef HAVE_SYS_UN_H 3800#include <sys/un.h> 3801#endif 3802] 3803) 3804 3805 3806dnl Checks for typedefs, structures, and compiler characteristics. 3807AC_C_CONST 3808CURL_CHECK_VARIADIC_MACROS 3809AC_TYPE_SIZE_T 3810AC_HEADER_TIME 3811CURL_CHECK_STRUCT_TIMEVAL 3812CURL_VERIFY_RUNTIMELIBS 3813 3814AX_COMPILE_CHECK_SIZEOF(size_t) 3815AX_COMPILE_CHECK_SIZEOF(long) 3816AX_COMPILE_CHECK_SIZEOF(int) 3817AX_COMPILE_CHECK_SIZEOF(short) 3818AX_COMPILE_CHECK_SIZEOF(time_t) 3819AX_COMPILE_CHECK_SIZEOF(off_t) 3820 3821o=$CPPFLAGS 3822CPPFLAGS="-I$srcdir/include $CPPFLAGS" 3823AX_COMPILE_CHECK_SIZEOF(curl_off_t, [ 3824#include <curl/system.h> 3825]) 3826CPPFLAGS=$o 3827 3828AC_CHECK_TYPE(long long, 3829 [AC_DEFINE(HAVE_LONGLONG, 1, 3830 [Define to 1 if the compiler supports the 'long long' data type.])] 3831 longlong="yes" 3832) 3833 3834if test "xyes" = "x$longlong"; then 3835 AC_MSG_CHECKING([if numberLL works]) 3836 AC_COMPILE_IFELSE([ 3837 AC_LANG_PROGRAM([[ 3838 ]],[[ 3839 long long val = 1000LL; 3840 ]]) 3841 ],[ 3842 AC_MSG_RESULT([yes]) 3843 AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL]) 3844 ],[ 3845 AC_MSG_RESULT([no]) 3846 ]) 3847fi 3848 3849 3850# check for ssize_t 3851AC_CHECK_TYPE(ssize_t, , 3852 AC_DEFINE(ssize_t, int, [the signed version of size_t])) 3853 3854# check for bool type 3855AC_CHECK_TYPE([bool],[ 3856 AC_DEFINE(HAVE_BOOL_T, 1, 3857 [Define to 1 if bool is an available type.]) 3858], ,[ 3859#ifdef HAVE_SYS_TYPES_H 3860#include <sys/types.h> 3861#endif 3862#ifdef HAVE_STDBOOL_H 3863#include <stdbool.h> 3864#endif 3865]) 3866 3867# check for sa_family_t 3868AC_CHECK_TYPE(sa_family_t, 3869 AC_DEFINE(CURL_SA_FAMILY_T, sa_family_t, [IP address type in sockaddr]), 3870 [ 3871 # The windows name? 3872 AC_CHECK_TYPE(ADDRESS_FAMILY, 3873 AC_DEFINE(CURL_SA_FAMILY_T, ADDRESS_FAMILY, [IP address type in sockaddr]), 3874 AC_DEFINE(CURL_SA_FAMILY_T, unsigned short, [IP address type in sockaddr]), 3875 [ 3876#ifdef HAVE_SYS_SOCKET_H 3877#include <sys/socket.h> 3878#endif 3879 ]) 3880 ], 3881[ 3882#ifdef HAVE_SYS_SOCKET_H 3883#include <sys/socket.h> 3884#endif 3885]) 3886 3887AC_MSG_CHECKING([if time_t is unsigned]) 3888CURL_RUN_IFELSE( 3889 [ 3890 #include <time.h> 3891 #include <limits.h> 3892 time_t t = -1; 3893 return (t > 0); 3894 ],[ 3895 AC_MSG_RESULT([yes]) 3896 AC_DEFINE(HAVE_TIME_T_UNSIGNED, 1, [Define this if time_t is unsigned]) 3897],[ 3898 AC_MSG_RESULT([no]) 3899],[ 3900 dnl cross-compiling, most systems are unsigned 3901 AC_MSG_RESULT([no]) 3902]) 3903 3904CURL_CONFIGURE_PULL_SYS_POLL 3905 3906TYPE_IN_ADDR_T 3907 3908TYPE_SOCKADDR_STORAGE 3909 3910TYPE_SIG_ATOMIC_T 3911 3912AC_TYPE_SIGNAL 3913 3914CURL_CHECK_FUNC_SELECT 3915 3916CURL_CHECK_FUNC_RECV 3917CURL_CHECK_FUNC_SEND 3918CURL_CHECK_MSG_NOSIGNAL 3919 3920CURL_CHECK_FUNC_ALARM 3921CURL_CHECK_FUNC_BASENAME 3922CURL_CHECK_FUNC_CLOSESOCKET 3923CURL_CHECK_FUNC_CLOSESOCKET_CAMEL 3924CURL_CHECK_FUNC_CONNECT 3925CURL_CHECK_FUNC_FCNTL 3926CURL_CHECK_FUNC_FREEADDRINFO 3927CURL_CHECK_FUNC_FREEIFADDRS 3928CURL_CHECK_FUNC_FSETXATTR 3929CURL_CHECK_FUNC_FTRUNCATE 3930CURL_CHECK_FUNC_GETADDRINFO 3931CURL_CHECK_FUNC_GAI_STRERROR 3932CURL_CHECK_FUNC_GETHOSTBYADDR 3933CURL_CHECK_FUNC_GETHOSTBYADDR_R 3934CURL_CHECK_FUNC_GETHOSTBYNAME 3935CURL_CHECK_FUNC_GETHOSTBYNAME_R 3936CURL_CHECK_FUNC_GETHOSTNAME 3937CURL_CHECK_FUNC_GETPEERNAME 3938CURL_CHECK_FUNC_GETSOCKNAME 3939CURL_CHECK_FUNC_IF_NAMETOINDEX 3940CURL_CHECK_FUNC_GETIFADDRS 3941CURL_CHECK_FUNC_GETSERVBYPORT_R 3942CURL_CHECK_FUNC_GMTIME_R 3943CURL_CHECK_FUNC_INET_NTOA_R 3944CURL_CHECK_FUNC_INET_NTOP 3945CURL_CHECK_FUNC_INET_PTON 3946CURL_CHECK_FUNC_IOCTL 3947CURL_CHECK_FUNC_IOCTLSOCKET 3948CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL 3949CURL_CHECK_FUNC_LOCALTIME_R 3950CURL_CHECK_FUNC_MEMRCHR 3951CURL_CHECK_FUNC_POLL 3952CURL_CHECK_FUNC_SETSOCKOPT 3953CURL_CHECK_FUNC_SIGACTION 3954CURL_CHECK_FUNC_SIGINTERRUPT 3955CURL_CHECK_FUNC_SIGNAL 3956CURL_CHECK_FUNC_SIGSETJMP 3957CURL_CHECK_FUNC_SOCKET 3958CURL_CHECK_FUNC_SOCKETPAIR 3959CURL_CHECK_FUNC_STRCASECMP 3960CURL_CHECK_FUNC_STRCMPI 3961CURL_CHECK_FUNC_STRDUP 3962CURL_CHECK_FUNC_STRERROR_R 3963CURL_CHECK_FUNC_STRICMP 3964CURL_CHECK_FUNC_STRNCASECMP 3965CURL_CHECK_FUNC_STRNCMPI 3966CURL_CHECK_FUNC_STRNICMP 3967CURL_CHECK_FUNC_STRSTR 3968CURL_CHECK_FUNC_STRTOK_R 3969CURL_CHECK_FUNC_STRTOLL 3970CURL_CHECK_FUNC_WRITEV 3971 3972case $host in 3973 *msdosdjgpp) 3974 ac_cv_func_pipe=no 3975 skipcheck_pipe=yes 3976 AC_MSG_NOTICE([skip check for pipe on msdosdjgpp]) 3977 ;; 3978esac 3979 3980AC_CHECK_DECLS([getpwuid_r], [], [AC_DEFINE(HAVE_DECL_GETPWUID_R_MISSING, 1, "Set if getpwuid_r() declaration is missing")], 3981 [[#include <pwd.h> 3982 #include <sys/types.h>]]) 3983 3984 3985AC_CHECK_FUNCS([fnmatch \ 3986 geteuid \ 3987 getpass_r \ 3988 getppid \ 3989 getpwuid \ 3990 getpwuid_r \ 3991 getrlimit \ 3992 gettimeofday \ 3993 if_nametoindex \ 3994 mach_absolute_time \ 3995 pipe \ 3996 setlocale \ 3997 setmode \ 3998 setrlimit \ 3999 usleep \ 4000 utime \ 4001 utimes 4002],[ 4003],[ 4004 func="$ac_func" 4005 eval skipcheck=\$skipcheck_$func 4006 if test "x$skipcheck" != "xyes"; then 4007 AC_MSG_CHECKING([deeper for $func]) 4008 AC_LINK_IFELSE([ 4009 AC_LANG_PROGRAM([[ 4010 ]],[[ 4011 $func (); 4012 ]]) 4013 ],[ 4014 AC_MSG_RESULT([yes]) 4015 eval "ac_cv_func_$func=yes" 4016 AC_DEFINE_UNQUOTED(XC_SH_TR_CPP([HAVE_$func]), [1], 4017 [Define to 1 if you have the $func function.]) 4018 ],[ 4019 AC_MSG_RESULT([but still no]) 4020 ]) 4021 fi 4022]) 4023 4024if test "$ipv6" = "yes"; then 4025 if test "$curl_cv_func_getaddrinfo" = "yes"; then 4026 AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support]) 4027 IPV6_ENABLED=1 4028 AC_SUBST(IPV6_ENABLED) 4029 fi 4030fi 4031 4032CURL_CHECK_NONBLOCKING_SOCKET 4033 4034dnl ************************************************************ 4035dnl nroff tool stuff 4036dnl 4037 4038AC_PATH_PROG( PERL, perl, , 4039 $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin ) 4040AC_SUBST(PERL) 4041 4042AC_PATH_PROGS( NROFF, gnroff nroff, , 4043 $PATH:/usr/bin/:/usr/local/bin ) 4044AC_SUBST(NROFF) 4045 4046if test -n "$NROFF"; then 4047 dnl only check for nroff options if an nroff command was found 4048 4049 AC_MSG_CHECKING([how to use *nroff to get plain text from man pages]) 4050 MANOPT="-man" 4051 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null` 4052 if test -z "$mancheck"; then 4053 MANOPT="-mandoc" 4054 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null` 4055 if test -z "$mancheck"; then 4056 MANOPT="" 4057 AC_MSG_RESULT([failed]) 4058 AC_MSG_WARN([found no *nroff option to get plaintext from man pages]) 4059 else 4060 AC_MSG_RESULT([$MANOPT]) 4061 fi 4062 else 4063 AC_MSG_RESULT([$MANOPT]) 4064 fi 4065 AC_SUBST(MANOPT) 4066fi 4067 4068if test -z "$MANOPT" 4069then 4070 dnl if no nroff tool was found, or no option that could convert man pages 4071 dnl was found, then disable the built-in manual stuff 4072 AC_MSG_WARN([disabling built-in manual]) 4073 USE_MANUAL="no"; 4074fi 4075 4076dnl ************************************************************************* 4077dnl If the manual variable still is set, then we go with providing a built-in 4078dnl manual 4079 4080if test "$USE_MANUAL" = "1"; then 4081 AC_DEFINE(USE_MANUAL, 1, [If you want to build curl with the built-in manual]) 4082 curl_manual_msg="enabled" 4083fi 4084 4085dnl set variable for use in automakefile(s) 4086AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1) 4087 4088CURL_CHECK_LIB_ARES 4089AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes) 4090 4091if test "x$curl_cv_native_windows" != "xyes" && 4092 test "x$enable_shared" = "xyes"; then 4093 build_libhostname=yes 4094else 4095 build_libhostname=no 4096fi 4097AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes) 4098 4099if test "x$want_ares" != xyes; then 4100 CURL_CHECK_OPTION_THREADED_RESOLVER 4101fi 4102 4103dnl ************************************************************ 4104dnl disable POSIX threads 4105dnl 4106AC_MSG_CHECKING([whether to use POSIX threads for threaded resolver]) 4107AC_ARG_ENABLE(pthreads, 4108AC_HELP_STRING([--enable-pthreads], 4109 [Enable POSIX threads (default for threaded resolver)]) 4110AC_HELP_STRING([--disable-pthreads],[Disable POSIX threads]), 4111[ case "$enableval" in 4112 no) AC_MSG_RESULT(no) 4113 want_pthreads=no 4114 ;; 4115 *) AC_MSG_RESULT(yes) 4116 want_pthreads=yes 4117 ;; 4118 esac ], [ 4119 AC_MSG_RESULT(auto) 4120 want_pthreads=auto 4121 ] 4122) 4123 4124dnl turn off pthreads if rt is disabled 4125if test "$want_pthreads" != "no"; then 4126 if test "$want_pthreads" = "yes" && test "$dontwant_rt" = "yes"; then 4127 AC_MSG_ERROR([options --enable-pthreads and --disable-rt are mutually exclusive]) 4128 fi 4129 if test "$dontwant_rt" != "no"; then 4130 dnl if --enable-pthreads was explicit then warn it's being ignored 4131 if test "$want_pthreads" = "yes"; then 4132 AC_MSG_WARN([--enable-pthreads Ignored since librt is disabled.]) 4133 fi 4134 want_pthreads=no 4135 fi 4136fi 4137 4138dnl turn off pthreads if no threaded resolver 4139if test "$want_pthreads" != "no" && test "$want_thres" != "yes"; then 4140 want_pthreads=no 4141fi 4142 4143dnl detect pthreads 4144if test "$want_pthreads" != "no"; then 4145 AC_CHECK_HEADER(pthread.h, 4146 [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>]) 4147 save_CFLAGS="$CFLAGS" 4148 4149 dnl first check for function without lib 4150 AC_CHECK_FUNC(pthread_create, [USE_THREADS_POSIX=1] ) 4151 4152 dnl on HPUX, life is more complicated... 4153 case $host in 4154 *-hp-hpux*) 4155 dnl it doesn't actually work without -lpthread 4156 USE_THREADS_POSIX="" 4157 ;; 4158 *) 4159 ;; 4160 esac 4161 4162 dnl if it wasn't found without lib, search for it in pthread lib 4163 if test "$USE_THREADS_POSIX" != "1" 4164 then 4165 CFLAGS="$CFLAGS -pthread" 4166 AC_CHECK_LIB(pthread, pthread_create, 4167 [USE_THREADS_POSIX=1], 4168 [ CFLAGS="$save_CFLAGS"]) 4169 fi 4170 4171 if test "x$USE_THREADS_POSIX" = "x1" 4172 then 4173 AC_DEFINE(USE_THREADS_POSIX, 1, [if you want POSIX threaded DNS lookup]) 4174 curl_res_msg="POSIX threaded" 4175 fi 4176 ]) 4177fi 4178 4179dnl threaded resolver check 4180if test "$want_thres" = "yes" && test "x$USE_THREADS_POSIX" != "x1"; then 4181 if test "$want_pthreads" = "yes"; then 4182 AC_MSG_ERROR([--enable-pthreads but pthreads was not found]) 4183 fi 4184 dnl If native Windows fallback on Win32 threads since no POSIX threads 4185 if test "$curl_cv_native_windows" = "yes"; then 4186 USE_THREADS_WIN32=1 4187 AC_DEFINE(USE_THREADS_WIN32, 1, [if you want Win32 threaded DNS lookup]) 4188 curl_res_msg="Win32 threaded" 4189 else 4190 AC_MSG_ERROR([Threaded resolver enabled but no thread library found]) 4191 fi 4192fi 4193 4194dnl ************************************************************ 4195dnl disable verbose text strings 4196dnl 4197AC_MSG_CHECKING([whether to enable verbose strings]) 4198AC_ARG_ENABLE(verbose, 4199AC_HELP_STRING([--enable-verbose],[Enable verbose strings]) 4200AC_HELP_STRING([--disable-verbose],[Disable verbose strings]), 4201[ case "$enableval" in 4202 no) 4203 AC_MSG_RESULT(no) 4204 AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings]) 4205 curl_verbose_msg="no" 4206 ;; 4207 *) AC_MSG_RESULT(yes) 4208 ;; 4209 esac ], 4210 AC_MSG_RESULT(yes) 4211) 4212 4213dnl ************************************************************ 4214dnl enable SSPI support 4215dnl 4216AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)]) 4217AC_ARG_ENABLE(sspi, 4218AC_HELP_STRING([--enable-sspi],[Enable SSPI]) 4219AC_HELP_STRING([--disable-sspi],[Disable SSPI]), 4220[ case "$enableval" in 4221 yes) 4222 if test "$curl_cv_native_windows" = "yes"; then 4223 AC_MSG_RESULT(yes) 4224 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support]) 4225 AC_SUBST(USE_WINDOWS_SSPI, [1]) 4226 curl_sspi_msg="enabled" 4227 else 4228 AC_MSG_RESULT(no) 4229 AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.]) 4230 fi 4231 ;; 4232 *) 4233 if test "x$WINSSL_ENABLED" = "x1"; then 4234 # --with-winssl implies --enable-sspi 4235 AC_MSG_RESULT(yes) 4236 else 4237 AC_MSG_RESULT(no) 4238 fi 4239 ;; 4240 esac ], 4241 if test "x$WINSSL_ENABLED" = "x1"; then 4242 # --with-winssl implies --enable-sspi 4243 AC_MSG_RESULT(yes) 4244 else 4245 AC_MSG_RESULT(no) 4246 fi 4247) 4248 4249dnl ************************************************************ 4250dnl disable cryptographic authentication 4251dnl 4252AC_MSG_CHECKING([whether to enable cryptographic authentication methods]) 4253AC_ARG_ENABLE(crypto-auth, 4254AC_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication]) 4255AC_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]), 4256[ case "$enableval" in 4257 no) 4258 AC_MSG_RESULT(no) 4259 AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication]) 4260 CURL_DISABLE_CRYPTO_AUTH=1 4261 ;; 4262 *) AC_MSG_RESULT(yes) 4263 ;; 4264 esac ], 4265 AC_MSG_RESULT(yes) 4266) 4267 4268CURL_CHECK_OPTION_NTLM_WB 4269 4270CURL_CHECK_NTLM_WB 4271 4272dnl ************************************************************ 4273dnl disable TLS-SRP authentication 4274dnl 4275AC_MSG_CHECKING([whether to enable TLS-SRP authentication]) 4276AC_ARG_ENABLE(tls-srp, 4277AC_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication]) 4278AC_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]), 4279[ case "$enableval" in 4280 no) 4281 AC_MSG_RESULT(no) 4282 want_tls_srp=no 4283 ;; 4284 *) AC_MSG_RESULT(yes) 4285 want_tls_srp=yes 4286 ;; 4287 esac ], 4288 AC_MSG_RESULT(yes) 4289 want_tls_srp=yes 4290) 4291 4292if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_OPENSSL_SRP" = "x1") ; then 4293 AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication]) 4294 USE_TLS_SRP=1 4295 curl_tls_srp_msg="enabled" 4296fi 4297 4298dnl ************************************************************ 4299dnl disable Unix domain sockets support 4300dnl 4301AC_MSG_CHECKING([whether to enable Unix domain sockets]) 4302AC_ARG_ENABLE(unix-sockets, 4303AC_HELP_STRING([--enable-unix-sockets],[Enable Unix domain sockets]) 4304AC_HELP_STRING([--disable-unix-sockets],[Disable Unix domain sockets]), 4305[ case "$enableval" in 4306 no) AC_MSG_RESULT(no) 4307 want_unix_sockets=no 4308 ;; 4309 *) AC_MSG_RESULT(yes) 4310 want_unix_sockets=yes 4311 ;; 4312 esac ], [ 4313 AC_MSG_RESULT(auto) 4314 want_unix_sockets=auto 4315 ] 4316) 4317if test "x$want_unix_sockets" != "xno"; then 4318 AC_CHECK_MEMBER([struct sockaddr_un.sun_path], [ 4319 AC_DEFINE(USE_UNIX_SOCKETS, 1, [Use Unix domain sockets]) 4320 AC_SUBST(USE_UNIX_SOCKETS, [1]) 4321 curl_unix_sockets_msg="enabled" 4322 ], [ 4323 if test "x$want_unix_sockets" = "xyes"; then 4324 AC_MSG_ERROR([--enable-unix-sockets is not available on this platform!]) 4325 fi 4326 ], [ 4327 #include <sys/un.h> 4328 ]) 4329fi 4330 4331dnl ************************************************************ 4332dnl disable cookies support 4333dnl 4334AC_MSG_CHECKING([whether to support cookies]) 4335AC_ARG_ENABLE(cookies, 4336AC_HELP_STRING([--enable-cookies],[Enable cookies support]) 4337AC_HELP_STRING([--disable-cookies],[Disable cookies support]), 4338[ case "$enableval" in 4339 no) 4340 AC_MSG_RESULT(no) 4341 AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support]) 4342 ;; 4343 *) AC_MSG_RESULT(yes) 4344 ;; 4345 esac ], 4346 AC_MSG_RESULT(yes) 4347) 4348 4349dnl ************************************************************ 4350dnl disable HTTP authentication support 4351dnl 4352AC_MSG_CHECKING([whether to support HTTP authentication]) 4353AC_ARG_ENABLE(http-auth, 4354AC_HELP_STRING([--enable-http-auth],[Enable HTTP authentication support]) 4355AC_HELP_STRING([--disable-http-auth],[Disable HTTP authentication support]), 4356[ case "$enableval" in 4357 no) 4358 AC_MSG_RESULT(no) 4359 AC_DEFINE(CURL_DISABLE_HTTP_AUTH, 1, [disable HTTP authentication]) 4360 ;; 4361 *) AC_MSG_RESULT(yes) 4362 ;; 4363 esac ], 4364 AC_MSG_RESULT(yes) 4365) 4366 4367dnl ************************************************************ 4368dnl disable DoH support 4369dnl 4370AC_MSG_CHECKING([whether to support DoH]) 4371AC_ARG_ENABLE(doh, 4372AC_HELP_STRING([--enable-doh],[Enable DoH support]) 4373AC_HELP_STRING([--disable-doh],[Disable DoH support]), 4374[ case "$enableval" in 4375 no) 4376 AC_MSG_RESULT(no) 4377 AC_DEFINE(CURL_DISABLE_DOH, 1, [disable DoH]) 4378 ;; 4379 *) AC_MSG_RESULT(yes) 4380 ;; 4381 esac ], 4382 AC_MSG_RESULT(yes) 4383) 4384 4385dnl ************************************************************ 4386dnl disable mime API support 4387dnl 4388AC_MSG_CHECKING([whether to support the MIME API]) 4389AC_ARG_ENABLE(mime, 4390AC_HELP_STRING([--enable-mime],[Enable mime API support]) 4391AC_HELP_STRING([--disable-mime],[Disable mime API support]), 4392[ case "$enableval" in 4393 no) 4394 AC_MSG_RESULT(no) 4395 AC_DEFINE(CURL_DISABLE_MIME, 1, [disable mime API]) 4396 ;; 4397 *) AC_MSG_RESULT(yes) 4398 ;; 4399 esac ], 4400 AC_MSG_RESULT(yes) 4401) 4402 4403dnl ************************************************************ 4404dnl disable date parsing 4405dnl 4406AC_MSG_CHECKING([whether to support date parsing]) 4407AC_ARG_ENABLE(dateparse, 4408AC_HELP_STRING([--enable-dateparse],[Enable date parsing]) 4409AC_HELP_STRING([--disable-dateparse],[Disable date parsing]), 4410[ case "$enableval" in 4411 no) 4412 AC_MSG_RESULT(no) 4413 AC_DEFINE(CURL_DISABLE_PARSEDATE, 1, [disable date parsing]) 4414 ;; 4415 *) AC_MSG_RESULT(yes) 4416 ;; 4417 esac ], 4418 AC_MSG_RESULT(yes) 4419) 4420 4421dnl ************************************************************ 4422dnl disable netrc 4423dnl 4424AC_MSG_CHECKING([whether to support netrc parsing]) 4425AC_ARG_ENABLE(netrc, 4426AC_HELP_STRING([--enable-netrc],[Enable netrc parsing]) 4427AC_HELP_STRING([--disable-netrc],[Disable netrc parsing]), 4428[ case "$enableval" in 4429 no) 4430 AC_MSG_RESULT(no) 4431 AC_DEFINE(CURL_DISABLE_NETRC, 1, [disable netrc parsing]) 4432 ;; 4433 *) AC_MSG_RESULT(yes) 4434 ;; 4435 esac ], 4436 AC_MSG_RESULT(yes) 4437) 4438 4439dnl ************************************************************ 4440dnl disable progress-meter 4441dnl 4442AC_MSG_CHECKING([whether to support progress-meter]) 4443AC_ARG_ENABLE(progress-meter, 4444AC_HELP_STRING([--enable-progress-meter],[Enable progress-meter]) 4445AC_HELP_STRING([--disable-progress-meter],[Disable progress-meter]), 4446[ case "$enableval" in 4447 no) 4448 AC_MSG_RESULT(no) 4449 AC_DEFINE(CURL_DISABLE_PROGRESS_METER, 1, [disable progress-meter]) 4450 ;; 4451 *) AC_MSG_RESULT(yes) 4452 ;; 4453 esac ], 4454 AC_MSG_RESULT(yes) 4455) 4456 4457dnl ************************************************************ 4458dnl disable shuffle DNS support 4459dnl 4460AC_MSG_CHECKING([whether to support DNS shuffling]) 4461AC_ARG_ENABLE(dnsshuffle, 4462AC_HELP_STRING([--enable-dnsshuffle],[Enable DNS shuffling]) 4463AC_HELP_STRING([--disable-dnsshuffle],[Disable DNS shufflinf]), 4464[ case "$enableval" in 4465 no) 4466 AC_MSG_RESULT(no) 4467 AC_DEFINE(CURL_DISABLE_SHUFFLE_DNS, 1, [disable DNS shuffling]) 4468 ;; 4469 *) AC_MSG_RESULT(yes) 4470 ;; 4471 esac ], 4472 AC_MSG_RESULT(yes) 4473) 4474 4475dnl ************************************************************ 4476dnl switch on/off alt-svc 4477dnl 4478curl_altsvc_msg="no (--enable-alt-svc)"; 4479AC_MSG_CHECKING([whether to support alt-svc]) 4480AC_ARG_ENABLE(alt-svc, 4481AC_HELP_STRING([--enable-alt-svc],[Enable alt-svc support]) 4482AC_HELP_STRING([--disable-alt-svc],[Disable alt-svc support]), 4483[ case "$enableval" in 4484 no) 4485 AC_MSG_RESULT(no) 4486 ;; 4487 *) AC_MSG_RESULT(yes) 4488 curl_altsvc_msg="enabled"; 4489 enable_altsvc="yes" 4490 ;; 4491 esac ], 4492 AC_MSG_RESULT(no) 4493) 4494 4495if test "$enable_altsvc" = "yes"; then 4496 AC_DEFINE(USE_ALTSVC, 1, [to enable alt-svc]) 4497 experimental="$experimental alt-svc" 4498fi 4499 4500dnl ************************************************************ 4501dnl hiding of library internal symbols 4502dnl 4503CURL_CONFIGURE_SYMBOL_HIDING 4504 4505dnl 4506dnl All the library dependencies put into $LIB apply to libcurl only. 4507dnl 4508LIBCURL_LIBS=$LIBS 4509 4510AC_SUBST(LIBCURL_LIBS) 4511AC_SUBST(CURL_NETWORK_LIBS) 4512AC_SUBST(CURL_NETWORK_AND_TIME_LIBS) 4513 4514dnl BLANK_AT_MAKETIME may be used in our Makefile.am files to blank 4515dnl LIBS variable used in generated makefile at makefile processing 4516dnl time. Doing this functionally prevents LIBS from being used for 4517dnl all link targets in given makefile. 4518BLANK_AT_MAKETIME= 4519AC_SUBST(BLANK_AT_MAKETIME) 4520 4521AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes) 4522 4523dnl yes or no 4524ENABLE_SHARED="$enable_shared" 4525AC_SUBST(ENABLE_SHARED) 4526 4527dnl to let curl-config output the static libraries correctly 4528ENABLE_STATIC="$enable_static" 4529AC_SUBST(ENABLE_STATIC) 4530 4531 4532dnl 4533dnl For keeping supported features and protocols also in pkg-config file 4534dnl since it is more cross-compile friendly than curl-config 4535dnl 4536 4537if test "x$OPENSSL_ENABLED" = "x1"; then 4538 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL" 4539elif test -n "$SSL_ENABLED"; then 4540 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL" 4541fi 4542if test "x$IPV6_ENABLED" = "x1"; then 4543 SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6" 4544fi 4545if test "x$USE_UNIX_SOCKETS" = "x1"; then 4546 SUPPORT_FEATURES="$SUPPORT_FEATURES UnixSockets" 4547fi 4548if test "x$HAVE_LIBZ" = "x1"; then 4549 SUPPORT_FEATURES="$SUPPORT_FEATURES libz" 4550fi 4551if test "x$HAVE_BROTLI" = "x1"; then 4552 SUPPORT_FEATURES="$SUPPORT_FEATURES brotli" 4553fi 4554if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1" \ 4555 -o "x$USE_THREADS_WIN32" = "x1"; then 4556 SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS" 4557fi 4558if test "x$IDN_ENABLED" = "x1"; then 4559 SUPPORT_FEATURES="$SUPPORT_FEATURES IDN" 4560fi 4561if test "x$USE_WINDOWS_SSPI" = "x1"; then 4562 SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI" 4563fi 4564 4565if test "x$HAVE_GSSAPI" = "x1"; then 4566 SUPPORT_FEATURES="$SUPPORT_FEATURES GSS-API" 4567fi 4568 4569if test "x$curl_psl_msg" = "xenabled"; then 4570 SUPPORT_FEATURES="$SUPPORT_FEATURES PSL" 4571fi 4572 4573if test "x$enable_altsvc" = "xyes"; then 4574 SUPPORT_FEATURES="$SUPPORT_FEATURES alt-svc" 4575fi 4576 4577if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \ 4578 \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then 4579 SUPPORT_FEATURES="$SUPPORT_FEATURES SPNEGO" 4580fi 4581 4582if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \ 4583 \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then 4584 SUPPORT_FEATURES="$SUPPORT_FEATURES Kerberos" 4585fi 4586 4587if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1"; then 4588 if test "x$OPENSSL_ENABLED" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \ 4589 -o "x$GNUTLS_ENABLED" = "x1" -o "x$MBEDTLS_ENABLED" = "x1" \ 4590 -o "x$NSS_ENABLED" = "x1" -o "x$SECURETRANSPORT_ENABLED" = "x1"; then 4591 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM" 4592 4593 if test "x$CURL_DISABLE_HTTP" != "x1" -a \ 4594 "x$NTLM_WB_ENABLED" = "x1"; then 4595 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB" 4596 fi 4597 fi 4598fi 4599 4600if test "x$USE_TLS_SRP" = "x1"; then 4601 SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP" 4602fi 4603 4604if test "x$USE_NGHTTP2" = "x1"; then 4605 SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2" 4606fi 4607 4608if test "x$USE_NGTCP2" = "x1" -o "x$USE_QUICHE" = "x1"; then 4609 SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP3" 4610fi 4611 4612if test "x$CURL_WITH_MULTI_SSL" = "x1"; then 4613 SUPPORT_FEATURES="$SUPPORT_FEATURES MultiSSL" 4614fi 4615 4616if test "x$OPENSSL_ENABLED" = "x1" -o "x$GNUTLS_ENABLED" = "x1" \ 4617 -o "x$NSS_ENABLED" = "x1"; then 4618 SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy" 4619fi 4620 4621AC_SUBST(SUPPORT_FEATURES) 4622 4623dnl For supported protocols in pkg-config file 4624if test "x$CURL_DISABLE_HTTP" != "x1"; then 4625 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP" 4626 if test "x$SSL_ENABLED" = "x1"; then 4627 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS" 4628 fi 4629fi 4630if test "x$CURL_DISABLE_FTP" != "x1"; then 4631 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP" 4632 if test "x$SSL_ENABLED" = "x1"; then 4633 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS" 4634 fi 4635fi 4636if test "x$CURL_DISABLE_FILE" != "x1"; then 4637 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE" 4638fi 4639if test "x$CURL_DISABLE_TELNET" != "x1"; then 4640 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET" 4641fi 4642if test "x$CURL_DISABLE_LDAP" != "x1"; then 4643 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP" 4644 if test "x$CURL_DISABLE_LDAPS" != "x1"; then 4645 if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") || 4646 (test "x$USE_OPENLDAP" != "x1" && test "x$HAVE_LDAP_SSL" = "x1"); then 4647 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS" 4648 fi 4649 fi 4650fi 4651if test "x$CURL_DISABLE_DICT" != "x1"; then 4652 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT" 4653fi 4654if test "x$CURL_DISABLE_TFTP" != "x1"; then 4655 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP" 4656fi 4657if test "x$CURL_DISABLE_GOPHER" != "x1"; then 4658 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER" 4659fi 4660if test "x$CURL_DISABLE_POP3" != "x1"; then 4661 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3" 4662 if test "x$SSL_ENABLED" = "x1"; then 4663 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S" 4664 fi 4665fi 4666if test "x$CURL_DISABLE_IMAP" != "x1"; then 4667 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP" 4668 if test "x$SSL_ENABLED" = "x1"; then 4669 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS" 4670 fi 4671fi 4672if test "x$CURL_DISABLE_SMB" != "x1" \ 4673 -a "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" \ 4674 -a \( "x$OPENSSL_ENABLED" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \ 4675 -o "x$GNUTLS_ENABLED" = "x1" -o "x$MBEDTLS_ENABLED" = "x1" \ 4676 -o "x$NSS_ENABLED" = "x1" -o "x$SECURETRANSPORT_ENABLED" = "x1" \); then 4677 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB" 4678 if test "x$SSL_ENABLED" = "x1"; then 4679 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMBS" 4680 fi 4681fi 4682if test "x$CURL_DISABLE_SMTP" != "x1"; then 4683 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP" 4684 if test "x$SSL_ENABLED" = "x1"; then 4685 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS" 4686 fi 4687fi 4688if test "x$USE_LIBSSH2" = "x1"; then 4689 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP" 4690 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP" 4691fi 4692if test "x$USE_LIBSSH" = "x1"; then 4693 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP" 4694 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP" 4695fi 4696if test "x$CURL_DISABLE_RTSP" != "x1"; then 4697 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP" 4698fi 4699if test "x$USE_LIBRTMP" = "x1"; then 4700 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP" 4701fi 4702 4703dnl replace spaces with newlines 4704dnl sort the lines 4705dnl replace the newlines back to spaces 4706SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '` 4707 4708AC_SUBST(SUPPORT_PROTOCOLS) 4709 4710dnl squeeze whitespace out of some variables 4711 4712squeeze CFLAGS 4713squeeze CPPFLAGS 4714squeeze DEFS 4715squeeze LDFLAGS 4716squeeze LIBS 4717 4718squeeze LIBCURL_LIBS 4719squeeze CURL_NETWORK_LIBS 4720squeeze CURL_NETWORK_AND_TIME_LIBS 4721 4722squeeze SUPPORT_FEATURES 4723squeeze SUPPORT_PROTOCOLS 4724 4725XC_CHECK_BUILD_FLAGS 4726 4727SSL_BACKENDS=${ssl_backends} 4728AC_SUBST(SSL_BACKENDS) 4729 4730if test "x$want_curldebug_assumed" = "xyes" && 4731 test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then 4732 ac_configure_args="$ac_configure_args --enable-curldebug" 4733fi 4734 4735AC_CONFIG_FILES([Makefile \ 4736 docs/Makefile \ 4737 docs/examples/Makefile \ 4738 docs/libcurl/Makefile \ 4739 docs/libcurl/opts/Makefile \ 4740 docs/cmdline-opts/Makefile \ 4741 include/Makefile \ 4742 include/curl/Makefile \ 4743 src/Makefile \ 4744 lib/Makefile \ 4745 scripts/Makefile \ 4746 lib/libcurl.vers \ 4747 tests/Makefile \ 4748 tests/certs/Makefile \ 4749 tests/certs/scripts/Makefile \ 4750 tests/data/Makefile \ 4751 tests/server/Makefile \ 4752 tests/libtest/Makefile \ 4753 tests/unit/Makefile \ 4754 packages/Makefile \ 4755 packages/vms/Makefile \ 4756 curl-config \ 4757 libcurl.pc 4758]) 4759AC_OUTPUT 4760 4761CURL_GENERATE_CONFIGUREHELP_PM 4762 4763XC_AMEND_DISTCLEAN([lib src tests/unit tests/server tests/libtest docs/examples]) 4764 4765AC_MSG_NOTICE([Configured to build curl/libcurl: 4766 4767 Host setup: ${host} 4768 Install prefix: ${prefix} 4769 Compiler: ${CC} 4770 CFLAGS: ${CFLAGS} 4771 CPPFLAGS: ${CPPFLAGS} 4772 LDFLAGS: ${LDFLAGS} 4773 LIBS: ${LIBS} 4774 4775 curl version: ${CURLVERSION} 4776 SSL: ${curl_ssl_msg} 4777 SSH: ${curl_ssh_msg} 4778 zlib: ${curl_zlib_msg} 4779 brotli: ${curl_brotli_msg} 4780 GSS-API: ${curl_gss_msg} 4781 TLS-SRP: ${curl_tls_srp_msg} 4782 resolver: ${curl_res_msg} 4783 IPv6: ${curl_ipv6_msg} 4784 Unix sockets: ${curl_unix_sockets_msg} 4785 IDN: ${curl_idn_msg} 4786 Build libcurl: Shared=${enable_shared}, Static=${enable_static} 4787 Built-in manual: ${curl_manual_msg} 4788 --libcurl option: ${curl_libcurl_msg} 4789 Verbose errors: ${curl_verbose_msg} 4790 Code coverage: ${curl_coverage_msg} 4791 SSPI: ${curl_sspi_msg} 4792 ca cert bundle: ${ca}${ca_warning} 4793 ca cert path: ${capath}${capath_warning} 4794 ca fallback: ${with_ca_fallback} 4795 LDAP: ${curl_ldap_msg} 4796 LDAPS: ${curl_ldaps_msg} 4797 RTSP: ${curl_rtsp_msg} 4798 RTMP: ${curl_rtmp_msg} 4799 Metalink: ${curl_mtlnk_msg} 4800 PSL: ${curl_psl_msg} 4801 Alt-svc: ${curl_altsvc_msg} 4802 HTTP2: ${curl_h2_msg} 4803 HTTP3: ${curl_h3_msg} 4804 Protocols: ${SUPPORT_PROTOCOLS} 4805 Features: ${SUPPORT_FEATURES} 4806]) 4807if test -n "$experimental"; then 4808 cat >&2 << _EOF 4809 WARNING: $experimental enabled but marked EXPERIMENTAL. Use with caution! 4810_EOF 4811fi 4812