1#*************************************************************************** 2# _ _ ____ _ 3# Project ___| | | | _ \| | 4# / __| | | | |_) | | 5# | (__| |_| | _ <| |___ 6# \___|\___/|_| \_\_____| 7# 8# Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al. 9# 10# This software is licensed as described in the file COPYING, which 11# you should have received as part of this distribution. The terms 12# are also available at http://curl.haxx.se/docs/copyright.html. 13# 14# You may opt to use, copy, modify, merge, publish, distribute and/or sell 15# copies of the Software, and permit persons to whom the Software is 16# furnished to do so, under the terms of the COPYING file. 17# 18# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 19# KIND, either express or implied. 20# 21#*************************************************************************** 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: http://curl.haxx.se/mail/]) 28 29XC_OVR_ZZ50 30XC_OVR_ZZ60 31CURL_OVERRIDE_AUTOCONF 32 33dnl configure script copyright 34AC_COPYRIGHT([Copyright (c) 1998 - 2014 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 include/curl/curlbuild.h) 40AC_CONFIG_MACRO_DIR([m4]) 41AM_MAINTAINER_MODE 42 43CURL_CHECK_OPTION_DEBUG 44CURL_CHECK_OPTION_OPTIMIZE 45CURL_CHECK_OPTION_WARNINGS 46CURL_CHECK_OPTION_WERROR 47CURL_CHECK_OPTION_CURLDEBUG 48CURL_CHECK_OPTION_SYMBOL_HIDING 49CURL_CHECK_OPTION_ARES 50 51XC_CHECK_PATH_SEPARATOR 52 53# 54# save the configure arguments 55# 56CONFIGURE_OPTIONS="\"$ac_configure_args\"" 57AC_SUBST(CONFIGURE_OPTIONS) 58 59CURL_CFLAG_EXTRAS="" 60if test X"$want_werror" = Xyes; then 61 CURL_CFLAG_EXTRAS="-Werror" 62fi 63AC_SUBST(CURL_CFLAG_EXTRAS) 64 65dnl SED is mandatory for configure process and libtool. 66dnl Set it now, allowing it to be changed later. 67if test -z "$SED"; then 68 dnl allow it to be overridden 69 AC_PATH_PROG([SED], [sed], [not_found], 70 [$PATH:/usr/bin:/usr/local/bin]) 71 if test -z "$SED" || test "$SED" = "not_found"; then 72 AC_MSG_ERROR([sed not found in PATH. Cannot continue without sed.]) 73 fi 74fi 75AC_SUBST([SED]) 76 77dnl GREP is mandatory for configure process and libtool. 78dnl Set it now, allowing it to be changed later. 79if test -z "$GREP"; then 80 dnl allow it to be overridden 81 AC_PATH_PROG([GREP], [grep], [not_found], 82 [$PATH:/usr/bin:/usr/local/bin]) 83 if test -z "$GREP" || test "$GREP" = "not_found"; then 84 AC_MSG_ERROR([grep not found in PATH. Cannot continue without grep.]) 85 fi 86fi 87AC_SUBST([GREP]) 88 89dnl EGREP is mandatory for configure process and libtool. 90dnl Set it now, allowing it to be changed later. 91if test -z "$EGREP"; then 92 dnl allow it to be overridden 93 if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then 94 AC_MSG_CHECKING([for egrep]) 95 EGREP="$GREP -E" 96 AC_MSG_RESULT([$EGREP]) 97 else 98 AC_PATH_PROG([EGREP], [egrep], [not_found], 99 [$PATH:/usr/bin:/usr/local/bin]) 100 fi 101fi 102if test -z "$EGREP" || test "$EGREP" = "not_found"; then 103 AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.]) 104fi 105AC_SUBST([EGREP]) 106 107dnl AR is mandatory for configure process and libtool. 108dnl This is target dependent, so check it as a tool. 109if test -z "$AR"; then 110 dnl allow it to be overridden 111 AC_PATH_TOOL([AR], [ar], [not_found], 112 [$PATH:/usr/bin:/usr/local/bin]) 113 if test -z "$AR" || test "$AR" = "not_found"; then 114 AC_MSG_ERROR([ar not found in PATH. Cannot continue without ar.]) 115 fi 116fi 117AC_SUBST([AR]) 118 119AC_SUBST(libext) 120 121dnl Remove non-configure distributed curlbuild.h 122if test -f ${srcdir}/include/curl/curlbuild.h; then 123 rm -f ${srcdir}/include/curl/curlbuild.h 124fi 125 126dnl figure out the libcurl version 127CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curlver.h` 128XC_CHECK_PROG_CC 129XC_AUTOMAKE 130AC_MSG_CHECKING([curl version]) 131AC_MSG_RESULT($CURLVERSION) 132 133AC_SUBST(CURLVERSION) 134 135dnl 136dnl we extract the numerical version for curl-config only 137VERSIONNUM=`$SED -ne 's/^#define LIBCURL_VERSION_NUM 0x\(.*\)/\1/p' ${srcdir}/include/curl/curlver.h` 138AC_SUBST(VERSIONNUM) 139 140dnl Solaris pkgadd support definitions 141PKGADD_PKG="HAXXcurl" 142PKGADD_NAME="cURL - a client that groks URLs" 143PKGADD_VENDOR="curl.haxx.se" 144AC_SUBST(PKGADD_PKG) 145AC_SUBST(PKGADD_NAME) 146AC_SUBST(PKGADD_VENDOR) 147 148dnl 149dnl initialize all the info variables 150 curl_ssl_msg="no (--with-{ssl,gnutls,nss,polarssl,cyassl,axtls,winssl,darwinssl} )" 151 curl_ssh_msg="no (--with-libssh2)" 152 curl_zlib_msg="no (--with-zlib)" 153 curl_gss_msg="no (--with-gssapi)" 154curl_tls_srp_msg="no (--enable-tls-srp)" 155 curl_res_msg="default (--enable-ares / --enable-threaded-resolver)" 156 curl_ipv6_msg="no (--enable-ipv6)" 157curl_unix_sockets_msg="no (--enable-unix-sockets)" 158 curl_idn_msg="no (--with-{libidn,winidn})" 159 curl_manual_msg="no (--enable-manual)" 160curl_libcurl_msg="enabled (--disable-libcurl-option)" 161curl_verbose_msg="enabled (--disable-verbose)" 162 curl_sspi_msg="no (--enable-sspi)" 163 curl_ldap_msg="no (--enable-ldap / --with-ldap-lib / --with-lber-lib)" 164 curl_ldaps_msg="no (--enable-ldaps)" 165 curl_rtsp_msg="no (--enable-rtsp)" 166 curl_rtmp_msg="no (--with-librtmp)" 167 curl_mtlnk_msg="no (--with-libmetalink)" 168 169 init_ssl_msg=${curl_ssl_msg} 170 171dnl 172dnl Save some initial values the user might have provided 173dnl 174INITIAL_LDFLAGS=$LDFLAGS 175INITIAL_LIBS=$LIBS 176 177dnl Checks for programs. 178 179dnl Our curl_off_t internal and external configure settings 180CURL_CONFIGURE_CURL_OFF_T 181 182dnl This defines _ALL_SOURCE for AIX 183CURL_CHECK_AIX_ALL_SOURCE 184 185dnl Our configure and build reentrant settings 186CURL_CONFIGURE_THREAD_SAFE 187CURL_CONFIGURE_REENTRANT 188 189dnl check for how to do large files 190AC_SYS_LARGEFILE 191 192XC_LIBTOOL 193 194# 195# Automake conditionals based on libtool related checks 196# 197 198AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSION_INFO], 199 [test "x$xc_lt_shlib_use_version_info" = 'xyes']) 200AM_CONDITIONAL([CURL_LT_SHLIB_USE_NO_UNDEFINED], 201 [test "x$xc_lt_shlib_use_no_undefined" = 'xyes']) 202AM_CONDITIONAL([CURL_LT_SHLIB_USE_MIMPURE_TEXT], 203 [test "x$xc_lt_shlib_use_mimpure_text" = 'xyes']) 204 205# 206# Due to libtool and automake machinery limitations of not allowing 207# specifying separate CPPFLAGS or CFLAGS when compiling objects for 208# inclusion of these in shared or static libraries, we are forced to 209# build using separate configure runs for shared and static libraries 210# on systems where different CPPFLAGS or CFLAGS are mandatory in order 211# to compile objects for each kind of library. Notice that relying on 212# the '-DPIC' CFLAG that libtool provides is not valid given that the 213# user might for example choose to build static libraries with PIC. 214# 215 216# 217# Make our Makefile.am files use the staticlib CPPFLAG only when strictly 218# targeting a static library and not building its shared counterpart. 219# 220 221AM_CONDITIONAL([USE_CPPFLAG_CURL_STATICLIB], 222 [test "x$xc_lt_build_static_only" = 'xyes']) 223 224# 225# Make staticlib CPPFLAG variable and its definition visible in output 226# files unconditionally, providing an empty definition unless strictly 227# targeting a static library and not building its shared counterpart. 228# 229 230CPPFLAG_CURL_STATICLIB= 231if test "x$xc_lt_build_static_only" = 'xyes'; then 232 CPPFLAG_CURL_STATICLIB='-DCURL_STATICLIB' 233fi 234AC_SUBST([CPPFLAG_CURL_STATICLIB]) 235 236 237# Determine whether all dependent libraries must be specified when linking 238if test "X$enable_shared" = "Xyes" -a "X$link_all_deplibs" = "Xno" 239then 240 REQUIRE_LIB_DEPS=no 241else 242 REQUIRE_LIB_DEPS=yes 243fi 244AC_SUBST(REQUIRE_LIB_DEPS) 245AM_CONDITIONAL(USE_EXPLICIT_LIB_DEPS, test x$REQUIRE_LIB_DEPS = xyes) 246 247dnl check if there's a way to force code inline 248AC_C_INLINE 249 250dnl ********************************************************************** 251dnl platform/compiler/architecture specific checks/flags 252dnl ********************************************************************** 253 254CURL_CHECK_COMPILER 255CURL_SET_COMPILER_BASIC_OPTS 256CURL_SET_COMPILER_DEBUG_OPTS 257CURL_SET_COMPILER_OPTIMIZE_OPTS 258CURL_SET_COMPILER_WARNING_OPTS 259 260if test "$compiler_id" = "INTEL_UNIX_C"; then 261 # 262 if test "$compiler_num" -ge "1000"; then 263 dnl icc 10.X or later 264 CFLAGS="$CFLAGS -shared-intel" 265 elif test "$compiler_num" -ge "900"; then 266 dnl icc 9.X specific 267 CFLAGS="$CFLAGS -i-dynamic" 268 fi 269 # 270fi 271 272CURL_CHECK_COMPILER_HALT_ON_ERROR 273CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE 274CURL_CHECK_COMPILER_PROTOTYPE_MISMATCH 275CURL_CHECK_COMPILER_SYMBOL_HIDING 276 277CURL_CHECK_CURLDEBUG 278AM_CONDITIONAL(CURLDEBUG, test x$want_curldebug = xyes) 279 280supports_unittests=yes 281# cross-compilation of unit tests static library/programs fails when 282# libcurl shared library is built. This might be due to a libtool or 283# automake issue. In this case we disable unit tests. 284if test "x$cross_compiling" != "xno" && 285 test "x$enable_shared" != "xno"; then 286 supports_unittests=no 287fi 288 289# IRIX 6.5.24 gcc 3.3 autobuilds fail unittests library compilation due to 290# a problem related with OpenSSL headers and library versions not matching. 291# Disable unit tests while time to further investigate this is found. 292case $host in 293 mips-sgi-irix6.5) 294 if test "$compiler_id" = "GNU_C"; then 295 supports_unittests=no 296 fi 297 ;; 298esac 299 300# All AIX autobuilds fails unit tests linking against unittests library 301# due to unittests library being built with no symbols or members. Libtool ? 302# Disable unit tests while time to further investigate this is found. 303case $host_os in 304 aix*) 305 supports_unittests=no 306 ;; 307esac 308 309dnl Build unit tests when option --enable-debug is given. 310if test "x$want_debug" = "xyes" && 311 test "x$supports_unittests" = "xyes"; then 312 want_unittests=yes 313else 314 want_unittests=no 315fi 316AM_CONDITIONAL(BUILD_UNITTESTS, test x$want_unittests = xyes) 317 318dnl ********************************************************************** 319dnl Compilation based checks should not be done before this point. 320dnl ********************************************************************** 321 322dnl ********************************************************************** 323dnl Make sure that our checks for headers windows.h winsock.h winsock2.h 324dnl and ws2tcpip.h take precedence over any other further checks which 325dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for 326dnl this specific header files. And do them before its results are used. 327dnl ********************************************************************** 328 329CURL_CHECK_HEADER_WINDOWS 330CURL_CHECK_NATIVE_WINDOWS 331case X-"$ac_cv_native_windows" in 332 X-yes) 333 CURL_CHECK_HEADER_WINSOCK 334 CURL_CHECK_HEADER_WINSOCK2 335 CURL_CHECK_HEADER_WS2TCPIP 336 CURL_CHECK_HEADER_WINLDAP 337 CURL_CHECK_HEADER_WINBER 338 ;; 339 *) 340 ac_cv_header_winsock_h="no" 341 ac_cv_header_winsock2_h="no" 342 ac_cv_header_ws2tcpip_h="no" 343 ac_cv_header_winldap_h="no" 344 ac_cv_header_winber_h="no" 345 ;; 346esac 347CURL_CHECK_WIN32_LARGEFILE 348 349dnl ************************************************************ 350dnl switch off particular protocols 351dnl 352AC_MSG_CHECKING([whether to support http]) 353AC_ARG_ENABLE(http, 354AC_HELP_STRING([--enable-http],[Enable HTTP support]) 355AC_HELP_STRING([--disable-http],[Disable HTTP support]), 356[ case "$enableval" in 357 no) 358 AC_MSG_RESULT(no) 359 AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP]) 360 AC_MSG_WARN([disable HTTP disables FTP over proxy and RTSP]) 361 AC_SUBST(CURL_DISABLE_HTTP, [1]) 362 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP]) 363 AC_SUBST(CURL_DISABLE_RTSP, [1]) 364 ;; 365 *) AC_MSG_RESULT(yes) 366 ;; 367 esac ], 368 AC_MSG_RESULT(yes) 369) 370AC_MSG_CHECKING([whether to support ftp]) 371AC_ARG_ENABLE(ftp, 372AC_HELP_STRING([--enable-ftp],[Enable FTP support]) 373AC_HELP_STRING([--disable-ftp],[Disable FTP support]), 374[ case "$enableval" in 375 no) 376 AC_MSG_RESULT(no) 377 AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP]) 378 AC_SUBST(CURL_DISABLE_FTP, [1]) 379 ;; 380 *) AC_MSG_RESULT(yes) 381 ;; 382 esac ], 383 AC_MSG_RESULT(yes) 384) 385AC_MSG_CHECKING([whether to support file]) 386AC_ARG_ENABLE(file, 387AC_HELP_STRING([--enable-file],[Enable FILE support]) 388AC_HELP_STRING([--disable-file],[Disable FILE support]), 389[ case "$enableval" in 390 no) 391 AC_MSG_RESULT(no) 392 AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE]) 393 AC_SUBST(CURL_DISABLE_FILE, [1]) 394 ;; 395 *) AC_MSG_RESULT(yes) 396 ;; 397 esac ], 398 AC_MSG_RESULT(yes) 399) 400AC_MSG_CHECKING([whether to support ldap]) 401AC_ARG_ENABLE(ldap, 402AC_HELP_STRING([--enable-ldap],[Enable LDAP support]) 403AC_HELP_STRING([--disable-ldap],[Disable LDAP support]), 404[ case "$enableval" in 405 no) 406 AC_MSG_RESULT(no) 407 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP]) 408 AC_SUBST(CURL_DISABLE_LDAP, [1]) 409 ;; 410 *) 411 AC_MSG_RESULT(yes) 412 ;; 413 esac ],[ 414 AC_MSG_RESULT(yes) ] 415) 416AC_MSG_CHECKING([whether to support ldaps]) 417AC_ARG_ENABLE(ldaps, 418AC_HELP_STRING([--enable-ldaps],[Enable LDAPS support]) 419AC_HELP_STRING([--disable-ldaps],[Disable LDAPS support]), 420[ case "$enableval" in 421 no) 422 AC_MSG_RESULT(no) 423 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) 424 AC_SUBST(CURL_DISABLE_LDAPS, [1]) 425 ;; 426 *) if test "x$CURL_DISABLE_LDAP" = "x1" ; then 427 AC_MSG_RESULT(LDAP needs to be enabled to support LDAPS) 428 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) 429 AC_SUBST(CURL_DISABLE_LDAPS, [1]) 430 else 431 AC_MSG_RESULT(yes) 432 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation]) 433 AC_SUBST(HAVE_LDAP_SSL, [1]) 434 fi 435 ;; 436 esac ],[ 437 if test "x$CURL_DISABLE_LDAP" = "x1" ; then 438 AC_MSG_RESULT(no) 439 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) 440 AC_SUBST(CURL_DISABLE_LDAPS, [1]) 441 else 442 AC_MSG_RESULT(yes) 443 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation]) 444 AC_SUBST(HAVE_LDAP_SSL, [1]) 445 fi ] 446) 447 448AC_MSG_CHECKING([whether to support rtsp]) 449AC_ARG_ENABLE(rtsp, 450AC_HELP_STRING([--enable-rtsp],[Enable RTSP support]) 451AC_HELP_STRING([--disable-rtsp],[Disable RTSP support]), 452[ case "$enableval" in 453 no) 454 AC_MSG_RESULT(no) 455 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP]) 456 AC_SUBST(CURL_DISABLE_RTSP, [1]) 457 ;; 458 *) if test x$CURL_DISABLE_HTTP = x1 ; then 459 AC_MSG_ERROR(HTTP support needs to be enabled in order to enable RTSP support!) 460 else 461 AC_MSG_RESULT(yes) 462 curl_rtsp_msg="enabled" 463 fi 464 ;; 465 esac ], 466 if test "x$CURL_DISABLE_HTTP" != "x1"; then 467 AC_MSG_RESULT(yes) 468 curl_rtsp_msg="enabled" 469 else 470 AC_MSG_RESULT(no) 471 fi 472) 473 474AC_MSG_CHECKING([whether to support proxies]) 475AC_ARG_ENABLE(proxy, 476AC_HELP_STRING([--enable-proxy],[Enable proxy support]) 477AC_HELP_STRING([--disable-proxy],[Disable proxy support]), 478[ case "$enableval" in 479 no) 480 AC_MSG_RESULT(no) 481 AC_DEFINE(CURL_DISABLE_PROXY, 1, [to disable proxies]) 482 AC_SUBST(CURL_DISABLE_PROXY, [1]) 483 ;; 484 *) AC_MSG_RESULT(yes) 485 ;; 486 esac ], 487 AC_MSG_RESULT(yes) 488) 489 490AC_MSG_CHECKING([whether to support dict]) 491AC_ARG_ENABLE(dict, 492AC_HELP_STRING([--enable-dict],[Enable DICT support]) 493AC_HELP_STRING([--disable-dict],[Disable DICT support]), 494[ case "$enableval" in 495 no) 496 AC_MSG_RESULT(no) 497 AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT]) 498 AC_SUBST(CURL_DISABLE_DICT, [1]) 499 ;; 500 *) AC_MSG_RESULT(yes) 501 ;; 502 esac ], 503 AC_MSG_RESULT(yes) 504) 505AC_MSG_CHECKING([whether to support telnet]) 506AC_ARG_ENABLE(telnet, 507AC_HELP_STRING([--enable-telnet],[Enable TELNET support]) 508AC_HELP_STRING([--disable-telnet],[Disable TELNET support]), 509[ case "$enableval" in 510 no) 511 AC_MSG_RESULT(no) 512 AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET]) 513 AC_SUBST(CURL_DISABLE_TELNET, [1]) 514 ;; 515 *) AC_MSG_RESULT(yes) 516 ;; 517 esac ], 518 AC_MSG_RESULT(yes) 519) 520AC_MSG_CHECKING([whether to support tftp]) 521AC_ARG_ENABLE(tftp, 522AC_HELP_STRING([--enable-tftp],[Enable TFTP support]) 523AC_HELP_STRING([--disable-tftp],[Disable TFTP support]), 524[ case "$enableval" in 525 no) 526 AC_MSG_RESULT(no) 527 AC_DEFINE(CURL_DISABLE_TFTP, 1, [to disable TFTP]) 528 AC_SUBST(CURL_DISABLE_TFTP, [1]) 529 ;; 530 *) AC_MSG_RESULT(yes) 531 ;; 532 esac ], 533 AC_MSG_RESULT(yes) 534) 535 536AC_MSG_CHECKING([whether to support pop3]) 537AC_ARG_ENABLE(pop3, 538AC_HELP_STRING([--enable-pop3],[Enable POP3 support]) 539AC_HELP_STRING([--disable-pop3],[Disable POP3 support]), 540[ case "$enableval" in 541 no) 542 AC_MSG_RESULT(no) 543 AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3]) 544 AC_SUBST(CURL_DISABLE_POP3, [1]) 545 ;; 546 *) AC_MSG_RESULT(yes) 547 ;; 548 esac ], 549 AC_MSG_RESULT(yes) 550) 551 552 553AC_MSG_CHECKING([whether to support imap]) 554AC_ARG_ENABLE(imap, 555AC_HELP_STRING([--enable-imap],[Enable IMAP support]) 556AC_HELP_STRING([--disable-imap],[Disable IMAP support]), 557[ case "$enableval" in 558 no) 559 AC_MSG_RESULT(no) 560 AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP]) 561 AC_SUBST(CURL_DISABLE_IMAP, [1]) 562 ;; 563 *) AC_MSG_RESULT(yes) 564 ;; 565 esac ], 566 AC_MSG_RESULT(yes) 567) 568 569 570AC_MSG_CHECKING([whether to support smb]) 571AC_ARG_ENABLE(smb, 572AC_HELP_STRING([--enable-smb],[Enable SMB/CIFS support]) 573AC_HELP_STRING([--disable-smb],[Disable SMB/CIFS support]), 574[ case "$enableval" in 575 no) 576 AC_MSG_RESULT(no) 577 AC_DEFINE(CURL_DISABLE_SMB, 1, [to disable SMB/CIFS]) 578 AC_SUBST(CURL_DISABLE_SMB, [1]) 579 ;; 580 *) AC_MSG_RESULT(yes) 581 ;; 582 esac ], 583 AC_MSG_RESULT(yes) 584) 585 586AC_MSG_CHECKING([whether to support smtp]) 587AC_ARG_ENABLE(smtp, 588AC_HELP_STRING([--enable-smtp],[Enable SMTP support]) 589AC_HELP_STRING([--disable-smtp],[Disable SMTP support]), 590[ case "$enableval" in 591 no) 592 AC_MSG_RESULT(no) 593 AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP]) 594 AC_SUBST(CURL_DISABLE_SMTP, [1]) 595 ;; 596 *) AC_MSG_RESULT(yes) 597 ;; 598 esac ], 599 AC_MSG_RESULT(yes) 600) 601 602AC_MSG_CHECKING([whether to support gopher]) 603AC_ARG_ENABLE(gopher, 604AC_HELP_STRING([--enable-gopher],[Enable Gopher support]) 605AC_HELP_STRING([--disable-gopher],[Disable Gopher support]), 606[ case "$enableval" in 607 no) 608 AC_MSG_RESULT(no) 609 AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable Gopher]) 610 AC_SUBST(CURL_DISABLE_GOPHER, [1]) 611 ;; 612 *) AC_MSG_RESULT(yes) 613 ;; 614 esac ], 615 AC_MSG_RESULT(yes) 616) 617 618 619dnl ********************************************************************** 620dnl Check for built-in manual 621dnl ********************************************************************** 622 623AC_MSG_CHECKING([whether to provide built-in manual]) 624AC_ARG_ENABLE(manual, 625AC_HELP_STRING([--enable-manual],[Enable built-in manual]) 626AC_HELP_STRING([--disable-manual],[Disable built-in manual]), 627[ case "$enableval" in 628 no) 629 AC_MSG_RESULT(no) 630 ;; 631 *) AC_MSG_RESULT(yes) 632 USE_MANUAL="1" 633 ;; 634 esac ], 635 AC_MSG_RESULT(yes) 636 USE_MANUAL="1" 637) 638dnl The actual use of the USE_MANUAL variable is done much later in this 639dnl script to allow other actions to disable it as well. 640 641dnl ************************************************************ 642dnl disable C code generation support 643dnl 644AC_MSG_CHECKING([whether to enable generation of C code]) 645AC_ARG_ENABLE(libcurl_option, 646AC_HELP_STRING([--enable-libcurl-option],[Enable --libcurl C code generation support]) 647AC_HELP_STRING([--disable-libcurl-option],[Disable --libcurl C code generation support]), 648[ case "$enableval" in 649 no) 650 AC_MSG_RESULT(no) 651 AC_DEFINE(CURL_DISABLE_LIBCURL_OPTION, 1, [to disable --libcurl C code generation option]) 652 curl_libcurl_msg="no" 653 ;; 654 *) AC_MSG_RESULT(yes) 655 ;; 656 esac ], 657 AC_MSG_RESULT(yes) 658) 659 660dnl ********************************************************************** 661dnl Checks for libraries. 662dnl ********************************************************************** 663 664AC_MSG_CHECKING([whether to use libgcc]) 665AC_ARG_ENABLE(libgcc, 666AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]), 667[ case "$enableval" in 668 yes) 669 LIBS="-lgcc $LIBS" 670 AC_MSG_RESULT(yes) 671 ;; 672 *) AC_MSG_RESULT(no) 673 ;; 674 esac ], 675 AC_MSG_RESULT(no) 676) 677 678CURL_CHECK_LIB_XNET 679 680dnl gethostbyname without lib or in the nsl lib? 681AC_CHECK_FUNC(gethostbyname, 682 [HAVE_GETHOSTBYNAME="1" 683 ], 684 [ AC_CHECK_LIB(nsl, gethostbyname, 685 [HAVE_GETHOSTBYNAME="1" 686 LIBS="-lnsl $LIBS" 687 ]) 688 ]) 689 690if test "$HAVE_GETHOSTBYNAME" != "1" 691then 692 dnl gethostbyname in the socket lib? 693 AC_CHECK_LIB(socket, gethostbyname, 694 [HAVE_GETHOSTBYNAME="1" 695 LIBS="-lsocket $LIBS" 696 ]) 697fi 698 699if test "$HAVE_GETHOSTBYNAME" != "1" 700then 701 dnl gethostbyname in the watt lib? 702 AC_CHECK_LIB(watt, gethostbyname, 703 [HAVE_GETHOSTBYNAME="1" 704 CPPFLAGS="-I/dev/env/WATT_ROOT/inc" 705 LDFLAGS="-L/dev/env/WATT_ROOT/lib" 706 LIBS="-lwatt $LIBS" 707 ]) 708fi 709 710dnl At least one system has been identified to require BOTH nsl and socket 711dnl libs at the same time to link properly. 712if test "$HAVE_GETHOSTBYNAME" != "1" 713then 714 AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs]) 715 my_ac_save_LIBS=$LIBS 716 LIBS="-lnsl -lsocket $LIBS" 717 AC_LINK_IFELSE([ 718 AC_LANG_PROGRAM([[ 719 ]],[[ 720 gethostbyname(); 721 ]]) 722 ],[ 723 AC_MSG_RESULT([yes]) 724 HAVE_GETHOSTBYNAME="1" 725 ],[ 726 AC_MSG_RESULT([no]) 727 LIBS=$my_ac_save_LIBS 728 ]) 729fi 730 731if test "$HAVE_GETHOSTBYNAME" != "1" 732then 733 dnl This is for winsock systems 734 if test "$ac_cv_header_windows_h" = "yes"; then 735 if test "$ac_cv_header_winsock_h" = "yes"; then 736 case $host in 737 *-*-mingw32ce*) 738 winsock_LIB="-lwinsock" 739 ;; 740 *) 741 winsock_LIB="-lwsock32" 742 ;; 743 esac 744 fi 745 if test "$ac_cv_header_winsock2_h" = "yes"; then 746 winsock_LIB="-lws2_32" 747 fi 748 if test ! -z "$winsock_LIB"; then 749 my_ac_save_LIBS=$LIBS 750 LIBS="$winsock_LIB $LIBS" 751 AC_MSG_CHECKING([for gethostbyname in $winsock_LIB]) 752 AC_LINK_IFELSE([ 753 AC_LANG_PROGRAM([[ 754#ifdef HAVE_WINDOWS_H 755#ifndef WIN32_LEAN_AND_MEAN 756#define WIN32_LEAN_AND_MEAN 757#endif 758#include <windows.h> 759#ifdef HAVE_WINSOCK2_H 760#include <winsock2.h> 761#else 762#ifdef HAVE_WINSOCK_H 763#include <winsock.h> 764#endif 765#endif 766#endif 767 ]],[[ 768 gethostbyname("www.dummysite.com"); 769 ]]) 770 ],[ 771 AC_MSG_RESULT([yes]) 772 HAVE_GETHOSTBYNAME="1" 773 ],[ 774 AC_MSG_RESULT([no]) 775 winsock_LIB="" 776 LIBS=$my_ac_save_LIBS 777 ]) 778 fi 779 fi 780fi 781 782if test "$HAVE_GETHOSTBYNAME" != "1" 783then 784 dnl This is for Minix 3.1 785 AC_MSG_CHECKING([for gethostbyname for Minix 3]) 786 AC_LINK_IFELSE([ 787 AC_LANG_PROGRAM([[ 788/* Older Minix versions may need <net/gen/netdb.h> here instead */ 789#include <netdb.h> 790 ]],[[ 791 gethostbyname("www.dummysite.com"); 792 ]]) 793 ],[ 794 AC_MSG_RESULT([yes]) 795 HAVE_GETHOSTBYNAME="1" 796 ],[ 797 AC_MSG_RESULT([no]) 798 ]) 799fi 800 801if test "$HAVE_GETHOSTBYNAME" != "1" 802then 803 dnl This is for eCos with a stubbed DNS implementation 804 AC_MSG_CHECKING([for gethostbyname for eCos]) 805 AC_LINK_IFELSE([ 806 AC_LANG_PROGRAM([[ 807#include <stdio.h> 808#include <netdb.h> 809 ]],[[ 810 gethostbyname("www.dummysite.com"); 811 ]]) 812 ],[ 813 AC_MSG_RESULT([yes]) 814 HAVE_GETHOSTBYNAME="1" 815 ],[ 816 AC_MSG_RESULT([no]) 817 ]) 818fi 819 820if test "$HAVE_GETHOSTBYNAME" != "1" 821then 822 dnl gethostbyname in the network lib - for Haiku OS 823 AC_CHECK_LIB(network, gethostbyname, 824 [HAVE_GETHOSTBYNAME="1" 825 LIBS="-lnetwork $LIBS" 826 ]) 827fi 828 829if test "$HAVE_GETHOSTBYNAME" != "1" 830then 831 dnl gethostbyname in the net lib - for BeOS 832 AC_CHECK_LIB(net, gethostbyname, 833 [HAVE_GETHOSTBYNAME="1" 834 LIBS="-lnet $LIBS" 835 ]) 836fi 837 838 839if test "$HAVE_GETHOSTBYNAME" != "1"; then 840 AC_MSG_ERROR([couldn't find libraries for gethostbyname()]) 841fi 842 843dnl resolve lib? 844AC_CHECK_FUNC(strcasecmp, , [ AC_CHECK_LIB(resolve, strcasecmp) ]) 845 846if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then 847 AC_CHECK_LIB(resolve, strcasecmp, 848 [LIBS="-lresolve $LIBS"], 849 , 850 -lnsl) 851fi 852ac_cv_func_strcasecmp="no" 853 854CURL_CHECK_LIBS_CONNECT 855 856CURL_NETWORK_LIBS=$LIBS 857 858dnl ********************************************************************** 859dnl In case that function clock_gettime with monotonic timer is available, 860dnl check for additional required libraries. 861dnl ********************************************************************** 862CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC 863 864dnl ********************************************************************** 865dnl The preceding library checks are all potentially useful for test 866dnl servers and libtest cases which require networking and clock_gettime 867dnl support. Save the list of required libraries at this point for use 868dnl while linking those test servers and programs. 869dnl ********************************************************************** 870CURL_NETWORK_AND_TIME_LIBS=$LIBS 871 872dnl ********************************************************************** 873dnl Check for the presence of ZLIB libraries and headers 874dnl ********************************************************************** 875 876dnl Check for & handle argument to --with-zlib. 877 878clean_CPPFLAGS=$CPPFLAGS 879clean_LDFLAGS=$LDFLAGS 880clean_LIBS=$LIBS 881ZLIB_LIBS="" 882AC_ARG_WITH(zlib, 883AC_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH]) 884AC_HELP_STRING([--without-zlib],[disable use of zlib]), 885 [OPT_ZLIB="$withval"]) 886 887if test "$OPT_ZLIB" = "no" ; then 888 AC_MSG_WARN([zlib disabled]) 889else 890 if test "$OPT_ZLIB" = "yes" ; then 891 OPT_ZLIB="" 892 fi 893 894 if test -z "$OPT_ZLIB" ; then 895 dnl check for the lib first without setting any new path, since many 896 dnl people have it in the default path 897 898 AC_CHECK_LIB(z, inflateEnd, 899 dnl libz found, set the variable 900 [HAVE_LIBZ="1" 901 LIBS="-lz $LIBS"], 902 dnl if no lib found, try /usr/local 903 [OPT_ZLIB="/usr/local"]) 904 905 fi 906 907 dnl Add a nonempty path to the compiler flags 908 if test -n "$OPT_ZLIB"; then 909 CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include" 910 LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff" 911 fi 912 913 AC_CHECK_HEADER(zlib.h, 914 [ 915 dnl zlib.h was found 916 HAVE_ZLIB_H="1" 917 dnl if the lib wasn't found already, try again with the new paths 918 if test "$HAVE_LIBZ" != "1"; then 919 AC_CHECK_LIB(z, gzread, 920 [ 921 dnl the lib was found! 922 HAVE_LIBZ="1" 923 LIBS="-lz $LIBS" 924 ], 925 [ CPPFLAGS=$clean_CPPFLAGS 926 LDFLAGS=$clean_LDFLAGS]) 927 fi 928 ], 929 [ 930 dnl zlib.h was not found, restore the flags 931 CPPFLAGS=$clean_CPPFLAGS 932 LDFLAGS=$clean_LDFLAGS] 933 ) 934 935 if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1" 936 then 937 AC_MSG_WARN([configure found only the libz lib, not the header file!]) 938 HAVE_LIBZ="" 939 CPPFLAGS=$clean_CPPFLAGS 940 LDFLAGS=$clean_LDFLAGS 941 LIBS=$clean_LIBS 942 elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1" 943 then 944 AC_MSG_WARN([configure found only the libz header file, not the lib!]) 945 CPPFLAGS=$clean_CPPFLAGS 946 LDFLAGS=$clean_LDFLAGS 947 LIBS=$clean_LIBS 948 elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1" 949 then 950 dnl both header and lib were found! 951 AC_SUBST(HAVE_LIBZ) 952 AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file]) 953 AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available]) 954 955 ZLIB_LIBS="-lz" 956 LIBS="-lz $clean_LIBS" 957 958 dnl replace 'HAVE_LIBZ' in the automake makefile.ams 959 AMFIXLIB="1" 960 AC_MSG_NOTICE([found both libz and libz.h header]) 961 curl_zlib_msg="enabled" 962 fi 963fi 964 965dnl set variable for use in automakefile(s) 966AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1) 967AC_SUBST(ZLIB_LIBS) 968 969dnl ********************************************************************** 970dnl Check for LDAP 971dnl ********************************************************************** 972 973LDAPLIBNAME="" 974AC_ARG_WITH(ldap-lib, 975AC_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]), 976 [LDAPLIBNAME="$withval"]) 977 978LBERLIBNAME="" 979AC_ARG_WITH(lber-lib, 980AC_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]), 981 [LBERLIBNAME="$withval"]) 982 983if test x$CURL_DISABLE_LDAP != x1 ; then 984 985 CURL_CHECK_HEADER_LBER 986 CURL_CHECK_HEADER_LDAP 987 CURL_CHECK_HEADER_LDAPSSL 988 CURL_CHECK_HEADER_LDAP_SSL 989 990 if test -z "$LDAPLIBNAME" ; then 991 if test "$ac_cv_native_windows" = "yes"; then 992 dnl Windows uses a single and unique LDAP library name 993 LDAPLIBNAME="wldap32" 994 LBERLIBNAME="no" 995 fi 996 fi 997 998 if test "$LDAPLIBNAME" ; then 999 AC_CHECK_LIB("$LDAPLIBNAME", ldap_init,, [ 1000 AC_MSG_WARN(["$LDAPLIBNAME" is not an LDAP library: LDAP disabled]) 1001 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP]) 1002 AC_SUBST(CURL_DISABLE_LDAP, [1]) 1003 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) 1004 AC_SUBST(CURL_DISABLE_LDAPS, [1])]) 1005 else 1006 dnl Try to find the right ldap libraries for this system 1007 CURL_CHECK_LIBS_LDAP 1008 case X-"$curl_cv_ldap_LIBS" in 1009 X-unknown) 1010 AC_MSG_WARN([Cannot find libraries for LDAP support: LDAP disabled]) 1011 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP]) 1012 AC_SUBST(CURL_DISABLE_LDAP, [1]) 1013 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) 1014 AC_SUBST(CURL_DISABLE_LDAPS, [1]) 1015 ;; 1016 esac 1017 fi 1018fi 1019 1020if test x$CURL_DISABLE_LDAP != x1 ; then 1021 1022 if test "$LBERLIBNAME" ; then 1023 dnl If name is "no" then don't define this library at all 1024 dnl (it's only needed if libldap.so's dependencies are broken). 1025 if test "$LBERLIBNAME" != "no" ; then 1026 AC_CHECK_LIB("$LBERLIBNAME", ber_free,, [ 1027 AC_MSG_WARN(["$LBERLIBNAME" is not an LBER library: LDAP disabled]) 1028 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP]) 1029 AC_SUBST(CURL_DISABLE_LDAP, [1]) 1030 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS]) 1031 AC_SUBST(CURL_DISABLE_LDAPS, [1])]) 1032 fi 1033 fi 1034fi 1035 1036if test x$CURL_DISABLE_LDAP != x1 ; then 1037 AC_CHECK_FUNCS([ldap_url_parse ldap_init_fd]) 1038 1039 if test "$LDAPLIBNAME" = "wldap32"; then 1040 curl_ldap_msg="enabled (winldap)" 1041 AC_DEFINE(USE_WIN32_LDAP, 1, [Use Windows LDAP implementation]) 1042 else 1043 curl_ldap_msg="enabled (OpenLDAP)" 1044 if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then 1045 AC_DEFINE(USE_OPENLDAP, 1, [Use OpenLDAP-specific code]) 1046 AC_SUBST(USE_OPENLDAP, [1]) 1047 fi 1048 fi 1049fi 1050 1051if test x$CURL_DISABLE_LDAPS != x1 ; then 1052 curl_ldaps_msg="enabled" 1053fi 1054 1055dnl ********************************************************************** 1056dnl Checks for IPv6 1057dnl ********************************************************************** 1058 1059AC_MSG_CHECKING([whether to enable IPv6]) 1060AC_ARG_ENABLE(ipv6, 1061AC_HELP_STRING([--enable-ipv6],[Enable IPv6 (with IPv4) support]) 1062AC_HELP_STRING([--disable-ipv6],[Disable IPv6 support]), 1063[ case "$enableval" in 1064 no) 1065 AC_MSG_RESULT(no) 1066 ipv6=no 1067 ;; 1068 *) AC_MSG_RESULT(yes) 1069 ipv6=yes 1070 ;; 1071 esac ], 1072 1073 AC_TRY_RUN([ /* is AF_INET6 available? */ 1074#include <sys/types.h> 1075#include <sys/socket.h> 1076#include <stdlib.h> /* for exit() */ 1077main() 1078{ 1079 if (socket(AF_INET6, SOCK_STREAM, 0) < 0) 1080 exit(1); 1081 else 1082 exit(0); 1083} 1084], 1085 AC_MSG_RESULT(yes) 1086 ipv6=yes, 1087 AC_MSG_RESULT(no) 1088 ipv6=no, 1089 AC_MSG_RESULT(no) 1090 ipv6=no 1091)) 1092 1093if test "$ipv6" = "yes"; then 1094 curl_ipv6_msg="enabled" 1095fi 1096 1097# Check if struct sockaddr_in6 have sin6_scope_id member 1098if test "$ipv6" = yes; then 1099 AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member]) 1100 AC_TRY_COMPILE([ 1101#include <sys/types.h> 1102#include <netinet/in.h>] , 1103 struct sockaddr_in6 s; s.sin6_scope_id = 0; , have_sin6_scope_id=yes) 1104 if test "$have_sin6_scope_id" = yes; then 1105 AC_MSG_RESULT([yes]) 1106 AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member]) 1107 else 1108 AC_MSG_RESULT([no]) 1109 fi 1110fi 1111 1112dnl ********************************************************************** 1113dnl Check if the operating system allows programs to write to their own argv[] 1114dnl ********************************************************************** 1115 1116AC_MSG_CHECKING([if argv can be written to]) 1117AC_RUN_IFELSE([ 1118 AC_LANG_SOURCE([[ 1119int main(int argc, char ** argv) { 1120 argv[0][0] = ' '; 1121 return (argv[0][0] == ' ')?0:1; 1122} 1123 ]]) 1124],[ 1125 curl_cv_writable_argv=yes 1126],[ 1127 curl_cv_writable_argv=no 1128],[ 1129 curl_cv_writable_argv=cross 1130]) 1131case $curl_cv_writable_argv in 1132yes) 1133 AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv]) 1134 AC_MSG_RESULT(yes) 1135 ;; 1136no) 1137 AC_MSG_RESULT(no) 1138 ;; 1139*) 1140 AC_MSG_RESULT(no) 1141 AC_MSG_WARN([the previous check could not be made default was used]) 1142 ;; 1143esac 1144 1145dnl ********************************************************************** 1146dnl Check for GSS-API libraries 1147dnl ********************************************************************** 1148 1149dnl check for GSS-API stuff in the /usr as default 1150 1151GSSAPI_ROOT="/usr" 1152AC_ARG_WITH(gssapi-includes, 1153 AC_HELP_STRING([--with-gssapi-includes=DIR], 1154 [Specify location of GSS-API headers]), 1155 [ GSSAPI_INCS="-I$withval" 1156 want_gss="yes" ] 1157) 1158 1159AC_ARG_WITH(gssapi-libs, 1160 AC_HELP_STRING([--with-gssapi-libs=DIR], 1161 [Specify location of GSS-API libs]), 1162 [ GSSAPI_LIB_DIR="-L$withval" 1163 want_gss="yes" ] 1164) 1165 1166AC_ARG_WITH(gssapi, 1167 AC_HELP_STRING([--with-gssapi=DIR], 1168 [Where to look for GSS-API]), [ 1169 GSSAPI_ROOT="$withval" 1170 if test x"$GSSAPI_ROOT" != xno; then 1171 want_gss="yes" 1172 if test x"$GSSAPI_ROOT" = xyes; then 1173 dnl if yes, then use default root 1174 GSSAPI_ROOT="/usr" 1175 fi 1176 fi 1177]) 1178 1179: ${KRB5CONFIG:="$GSSAPI_ROOT/bin/krb5-config"} 1180 1181save_CPPFLAGS="$CPPFLAGS" 1182AC_MSG_CHECKING([if GSS-API support is requested]) 1183if test x"$want_gss" = xyes; then 1184 AC_MSG_RESULT(yes) 1185 1186 if test -z "$GSSAPI_INCS"; then 1187 if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then 1188 GSSAPI_INCS=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --cflags gssapi` 1189 elif test -f "$KRB5CONFIG"; then 1190 GSSAPI_INCS=`$KRB5CONFIG --cflags gssapi` 1191 elif test "$GSSAPI_ROOT" != "yes"; then 1192 GSSAPI_INCS="-I$GSSAPI_ROOT/include" 1193 fi 1194 fi 1195 1196 CPPFLAGS="$CPPFLAGS $GSSAPI_INCS" 1197 1198 AC_CHECK_HEADER(gss.h, 1199 [ 1200 dnl found in the given dirs 1201 AC_DEFINE(HAVE_GSSGNU, 1, [if you have GNU GSS]) 1202 gnu_gss=yes 1203 ], 1204 [ 1205 dnl not found, check Heimdal or MIT 1206 AC_CHECK_HEADERS([gssapi/gssapi.h], [], [not_mit=1]) 1207 AC_CHECK_HEADERS( 1208 [gssapi/gssapi_generic.h gssapi/gssapi_krb5.h], 1209 [], 1210 [not_mit=1], 1211 [ 1212AC_INCLUDES_DEFAULT 1213#ifdef HAVE_GSSAPI_GSSAPI_H 1214#include <gssapi/gssapi.h> 1215#endif 1216 ]) 1217 if test "x$not_mit" = "x1"; then 1218 dnl MIT not found, check for Heimdal 1219 AC_CHECK_HEADER(gssapi.h, 1220 [ 1221 dnl found 1222 AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have Heimdal]) 1223 ], 1224 [ 1225 dnl no header found, disabling GSS 1226 want_gss=no 1227 AC_MSG_WARN(disabling GSS-API support since no header files were found) 1228 ] 1229 ) 1230 else 1231 dnl MIT found 1232 AC_DEFINE(HAVE_GSSMIT, 1, [if you have MIT Kerberos]) 1233 dnl check if we have a really old MIT Kerberos version (<= 1.2) 1234 AC_MSG_CHECKING([if GSS-API headers declare GSS_C_NT_HOSTBASED_SERVICE]) 1235 AC_COMPILE_IFELSE([ 1236 AC_LANG_PROGRAM([[ 1237#include <gssapi/gssapi.h> 1238#include <gssapi/gssapi_generic.h> 1239#include <gssapi/gssapi_krb5.h> 1240 ]],[[ 1241 gss_import_name( 1242 (OM_uint32 *)0, 1243 (gss_buffer_t)0, 1244 GSS_C_NT_HOSTBASED_SERVICE, 1245 (gss_name_t *)0); 1246 ]]) 1247 ],[ 1248 AC_MSG_RESULT([yes]) 1249 ],[ 1250 AC_MSG_RESULT([no]) 1251 AC_DEFINE(HAVE_OLD_GSSMIT, 1, 1252 [if you have an old MIT Kerberos version, lacking GSS_C_NT_HOSTBASED_SERVICE]) 1253 ]) 1254 fi 1255 ] 1256 ) 1257else 1258 AC_MSG_RESULT(no) 1259fi 1260if test x"$want_gss" = xyes; then 1261 AC_DEFINE(HAVE_GSSAPI, 1, [if you have GSS-API libraries]) 1262 HAVE_GSSAPI=1 1263 curl_gss_msg="enabled (MIT Kerberos/Heimdal)" 1264 1265 if test -n "$gnu_gss"; then 1266 curl_gss_msg="enabled (GNU GSS)" 1267 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR" 1268 LIBS="-lgss $LIBS" 1269 elif test -z "$GSSAPI_LIB_DIR"; then 1270 case $host in 1271 *-*-darwin*) 1272 LIBS="-lgssapi_krb5 -lresolv $LIBS" 1273 ;; 1274 *) 1275 if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then 1276 dnl krb5-config doesn't have --libs-only-L or similar, put everything 1277 dnl into LIBS 1278 gss_libs=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --libs gssapi` 1279 LIBS="$gss_libs $LIBS" 1280 elif test -f "$KRB5CONFIG"; then 1281 dnl krb5-config doesn't have --libs-only-L or similar, put everything 1282 dnl into LIBS 1283 gss_libs=`$KRB5CONFIG --libs gssapi` 1284 LIBS="$gss_libs $LIBS" 1285 else 1286 case $host in 1287 *-hp-hpux*) 1288 gss_libname="gss" 1289 ;; 1290 *) 1291 gss_libname="gssapi" 1292 ;; 1293 esac 1294 1295 if test "$GSSAPI_ROOT" != "yes"; then 1296 LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff" 1297 LIBS="-l$gss_libname $LIBS" 1298 else 1299 LIBS="-l$gss_libname $LIBS" 1300 fi 1301 fi 1302 ;; 1303 esac 1304 else 1305 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR" 1306 case $host in 1307 *-hp-hpux*) 1308 LIBS="-lgss $LIBS" 1309 ;; 1310 *) 1311 LIBS="-lgssapi $LIBS" 1312 ;; 1313 esac 1314 fi 1315else 1316 CPPFLAGS="$save_CPPFLAGS" 1317fi 1318 1319dnl ------------------------------------------------- 1320dnl check winssl option before other SSL libraries 1321dnl ------------------------------------------------- 1322 1323OPT_WINSSL=no 1324AC_ARG_WITH(winssl,dnl 1325AC_HELP_STRING([--with-winssl],[enable Windows native SSL/TLS]) 1326AC_HELP_STRING([--without-winssl], [disable Windows native SSL/TLS]), 1327 OPT_WINSSL=$withval) 1328 1329AC_MSG_CHECKING([whether to enable Windows native SSL/TLS (Windows native builds only)]) 1330if test "$curl_ssl_msg" = "$init_ssl_msg"; then 1331 if test "x$OPT_WINSSL" != "xno" && 1332 test "x$ac_cv_native_windows" = "xyes"; then 1333 AC_MSG_RESULT(yes) 1334 AC_DEFINE(USE_SCHANNEL, 1, [to enable Windows native SSL/TLS support]) 1335 AC_SUBST(USE_SCHANNEL, [1]) 1336 curl_ssl_msg="enabled (Windows-native)" 1337 WINSSL_ENABLED=1 1338 # --with-winssl implies --enable-sspi 1339 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support]) 1340 AC_SUBST(USE_WINDOWS_SSPI, [1]) 1341 curl_sspi_msg="enabled" 1342 else 1343 AC_MSG_RESULT(no) 1344 fi 1345else 1346 AC_MSG_RESULT(no) 1347fi 1348 1349OPT_DARWINSSL=no 1350AC_ARG_WITH(darwinssl,dnl 1351AC_HELP_STRING([--with-darwinssl],[enable iOS/Mac OS X native SSL/TLS]) 1352AC_HELP_STRING([--without-darwinssl], [disable iOS/Mac OS X native SSL/TLS]), 1353 OPT_DARWINSSL=$withval) 1354 1355AC_MSG_CHECKING([whether to enable iOS/Mac OS X native SSL/TLS]) 1356if test "$curl_ssl_msg" = "$init_ssl_msg"; then 1357 if test "x$OPT_DARWINSSL" != "xno" && 1358 test -d "/System/Library/Frameworks/Security.framework"; then 1359 AC_MSG_RESULT(yes) 1360 AC_DEFINE(USE_DARWINSSL, 1, [to enable iOS/Mac OS X native SSL/TLS support]) 1361 AC_SUBST(USE_DARWINSSL, [1]) 1362 curl_ssl_msg="enabled (iOS/Mac OS X-native)" 1363 DARWINSSL_ENABLED=1 1364 LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Security" 1365 else 1366 AC_MSG_RESULT(no) 1367 fi 1368else 1369 AC_MSG_RESULT(no) 1370fi 1371 1372dnl ********************************************************************** 1373dnl Check for the presence of SSL libraries and headers 1374dnl ********************************************************************** 1375 1376dnl Default to compiler & linker defaults for SSL files & libraries. 1377OPT_SSL=off 1378dnl Default to no CA bundle 1379ca="no" 1380AC_ARG_WITH(ssl,dnl 1381AC_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]) 1382AC_HELP_STRING([--without-ssl], [disable OpenSSL]), 1383 OPT_SSL=$withval) 1384 1385if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then 1386 dnl backup the pre-ssl variables 1387 CLEANLDFLAGS="$LDFLAGS" 1388 CLEANCPPFLAGS="$CPPFLAGS" 1389 CLEANLIBS="$LIBS" 1390 1391 case "$OPT_SSL" in 1392 yes) 1393 dnl --with-ssl (without path) used 1394 if test x$cross_compiling != xyes; then 1395 dnl only do pkg-config magic when not cross-compiling 1396 PKGTEST="yes" 1397 fi 1398 PREFIX_OPENSSL=/usr/local/ssl 1399 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff" 1400 ;; 1401 off) 1402 dnl no --with-ssl option given, just check default places 1403 if test x$cross_compiling != xyes; then 1404 dnl only do pkg-config magic when not cross-compiling 1405 PKGTEST="yes" 1406 fi 1407 PREFIX_OPENSSL= 1408 ;; 1409 *) 1410 dnl check the given --with-ssl spot 1411 PKGTEST="no" 1412 PREFIX_OPENSSL=$OPT_SSL 1413 1414 dnl Try pkg-config even when cross-compiling. Since we 1415 dnl specify PKG_CONFIG_LIBDIR we're only looking where 1416 dnl the user told us to look 1417 OPENSSL_PCDIR="$OPT_SSL/lib/pkgconfig" 1418 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$OPENSSL_PCDIR"]) 1419 if test -f "$OPENSSL_PCDIR/openssl.pc"; then 1420 PKGTEST="yes" 1421 fi 1422 1423 dnl in case pkg-config comes up empty, use what we got 1424 dnl via --with-ssl 1425 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff" 1426 if test "$PREFIX_OPENSSL" != "/usr" ; then 1427 SSL_LDFLAGS="-L$LIB_OPENSSL" 1428 SSL_CPPFLAGS="-I$PREFIX_OPENSSL/include" 1429 fi 1430 SSL_CPPFLAGS="$SSL_CPPFLAGS -I$PREFIX_OPENSSL/include/openssl" 1431 ;; 1432 esac 1433 1434 if test "$PKGTEST" = "yes"; then 1435 1436 CURL_CHECK_PKGCONFIG(openssl, [$OPENSSL_PCDIR]) 1437 1438 if test "$PKGCONFIG" != "no" ; then 1439 SSL_LIBS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl 1440 $PKGCONFIG --libs-only-l openssl 2>/dev/null` 1441 1442 SSL_LDFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl 1443 $PKGCONFIG --libs-only-L openssl 2>/dev/null` 1444 1445 SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl 1446 $PKGCONFIG --cflags-only-I openssl 2>/dev/null` 1447 1448 AC_SUBST(SSL_LIBS) 1449 AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"]) 1450 AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"]) 1451 AC_MSG_NOTICE([pkg-config: SSL_CPPFLAGS: "$SSL_CPPFLAGS"]) 1452 1453 LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/-L//g'` 1454 1455 dnl use the values pkg-config reported. This is here 1456 dnl instead of below with CPPFLAGS and LDFLAGS because we only 1457 dnl learn about this via pkg-config. If we only have 1458 dnl the argument to --with-ssl we don't know what 1459 dnl additional libs may be necessary. Hope that we 1460 dnl don't need any. 1461 LIBS="$SSL_LIBS $LIBS" 1462 fi 1463 fi 1464 1465 dnl finally, set flags to use SSL 1466 CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS" 1467 LDFLAGS="$LDFLAGS $SSL_LDFLAGS" 1468 1469 dnl This is for Msys/Mingw 1470 case $host in 1471 *-*-msys* | *-*-mingw*) 1472 AC_MSG_CHECKING([for gdi32]) 1473 my_ac_save_LIBS=$LIBS 1474 LIBS="-lgdi32 $LIBS" 1475 AC_TRY_LINK([#include <windef.h> 1476 #include <wingdi.h>], 1477 [GdiFlush();], 1478 [ dnl worked! 1479 AC_MSG_RESULT([yes])], 1480 [ dnl failed, restore LIBS 1481 LIBS=$my_ac_save_LIBS 1482 AC_MSG_RESULT(no)] 1483 ) 1484 ;; 1485 esac 1486 1487 AC_CHECK_LIB(crypto, CRYPTO_lock,[ 1488 HAVECRYPTO="yes" 1489 LIBS="-lcrypto $LIBS" 1490 ],[ 1491 LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL" 1492 CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include" 1493 AC_CHECK_LIB(crypto, HMAC_Init,[ 1494 HAVECRYPTO="yes" 1495 LIBS="-lcrypto $LIBS"], [ 1496 LDFLAGS="$CLEANLDFLAGS" 1497 CPPFLAGS="$CLEANCPPFLAGS" 1498 LIBS="$CLEANLIBS" 1499 ]) 1500 ]) 1501 1502 1503 if test X"$HAVECRYPTO" = X"yes"; then 1504 dnl This is only reasonable to do if crypto actually is there: check for 1505 dnl SSL libs NOTE: it is important to do this AFTER the crypto lib 1506 1507 AC_CHECK_LIB(ssl, SSL_connect) 1508 1509 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then 1510 dnl we didn't find the SSL lib, try the RSAglue/rsaref stuff 1511 AC_MSG_CHECKING(for ssl with RSAglue/rsaref libs in use); 1512 OLIBS=$LIBS 1513 LIBS="-lRSAglue -lrsaref $LIBS" 1514 AC_CHECK_LIB(ssl, SSL_connect) 1515 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then 1516 dnl still no SSL_connect 1517 AC_MSG_RESULT(no) 1518 LIBS=$OLIBS 1519 else 1520 AC_MSG_RESULT(yes) 1521 fi 1522 1523 else 1524 1525 dnl Have the libraries--check for OpenSSL headers 1526 AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \ 1527 openssl/pem.h openssl/ssl.h openssl/err.h, 1528 curl_ssl_msg="enabled (OpenSSL)" 1529 OPENSSL_ENABLED=1 1530 AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use])) 1531 1532 if test $ac_cv_header_openssl_x509_h = no; then 1533 dnl we don't use the "action" part of the AC_CHECK_HEADERS macro 1534 dnl since 'err.h' might in fact find a krb4 header with the same 1535 dnl name 1536 AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h) 1537 1538 if test $ac_cv_header_x509_h = yes && 1539 test $ac_cv_header_crypto_h = yes && 1540 test $ac_cv_header_ssl_h = yes; then 1541 dnl three matches 1542 curl_ssl_msg="enabled (OpenSSL)" 1543 OPENSSL_ENABLED=1 1544 fi 1545 fi 1546 fi 1547 1548 if test X"$OPENSSL_ENABLED" = X"1"; then 1549 dnl is there a pkcs12.h header present? 1550 AC_CHECK_HEADERS(openssl/pkcs12.h) 1551 else 1552 LIBS="$CLEANLIBS" 1553 fi 1554 1555 if test X"$OPT_SSL" != Xoff && 1556 test "$OPENSSL_ENABLED" != "1"; then 1557 AC_MSG_ERROR([OpenSSL libs and/or directories were not found where specified!]) 1558 fi 1559 fi 1560 1561 if test X"$OPENSSL_ENABLED" = X"1"; then 1562 dnl If the ENGINE library seems to be around, check for the OpenSSL engine 1563 dnl stuff, it is kind of "separated" from the main SSL check 1564 AC_CHECK_FUNC(ENGINE_init, 1565 [ 1566 AC_CHECK_HEADERS(openssl/engine.h) 1567 AC_CHECK_FUNCS( ENGINE_load_builtin_engines ) 1568 ]) 1569 1570 dnl These can only exist if OpenSSL exists 1571 dnl Older versions of Cyassl (some time before 2.9.4) don't have 1572 dnl SSL_get_shutdown (but this check won't actually detect it there 1573 dnl as it's a macro that needs the header files be included) 1574 dnl BoringSSL doesn't have DES_set_odd_parity 1575 1576 AC_CHECK_FUNCS( RAND_status \ 1577 RAND_screen \ 1578 RAND_egd \ 1579 ENGINE_cleanup \ 1580 CRYPTO_cleanup_all_ex_data \ 1581 SSL_get_shutdown \ 1582 SSLv2_client_method \ 1583 DES_set_odd_parity ) 1584 1585 AC_MSG_CHECKING([for BoringSSL]) 1586 AC_COMPILE_IFELSE([ 1587 AC_LANG_PROGRAM([[ 1588#include <openssl/base.h> 1589 ]],[[ 1590#ifndef OPENSSL_IS_BORINGSSL 1591#error not boringssl 1592#endif 1593 ]]) 1594 ],[ 1595 AC_MSG_RESULT([yes]) 1596 AC_DEFINE_UNQUOTED(HAVE_BORINGSSL, 1, 1597 [Define to 1 if using BoringSSL.]) 1598 ],[ 1599 AC_MSG_RESULT([no]) 1600 ]) 1601 1602 AC_MSG_CHECKING([for libressl]) 1603 AC_COMPILE_IFELSE([ 1604 AC_LANG_PROGRAM([[ 1605#include <openssl/opensslv.h> 1606 ]],[[ 1607 int dummy = LIBRESSL_VERSION_NUMBER; 1608 ]]) 1609 ],[ 1610 AC_MSG_RESULT([yes]) 1611 AC_DEFINE_UNQUOTED(HAVE_LIBRESSL, 1, 1612 [Define to 1 if using libressl.]) 1613 curl_ssl_msg="enabled (libressl)" 1614 ],[ 1615 AC_MSG_RESULT([no]) 1616 ]) 1617 fi 1618 1619 if test "$OPENSSL_ENABLED" = "1"; then 1620 if test -n "$LIB_OPENSSL"; then 1621 dnl when the ssl shared libs were found in a path that the run-time 1622 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH 1623 dnl to prevent further configure tests to fail due to this 1624 if test "x$cross_compiling" != "xyes"; then 1625 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_OPENSSL" 1626 export LD_LIBRARY_PATH 1627 AC_MSG_NOTICE([Added $LIB_OPENSSL to LD_LIBRARY_PATH]) 1628 fi 1629 fi 1630 CURL_CHECK_OPENSSL_API 1631 fi 1632 1633fi 1634 1635dnl ********************************************************************** 1636dnl Check for the random seed preferences 1637dnl ********************************************************************** 1638 1639if test X"$OPENSSL_ENABLED" = X"1"; then 1640 AC_ARG_WITH(egd-socket, 1641 AC_HELP_STRING([--with-egd-socket=FILE], 1642 [Entropy Gathering Daemon socket pathname]), 1643 [ EGD_SOCKET="$withval" ] 1644 ) 1645 if test -n "$EGD_SOCKET" ; then 1646 AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET", 1647 [your Entropy Gathering Daemon socket pathname] ) 1648 fi 1649 1650 dnl Check for user-specified random device 1651 AC_ARG_WITH(random, 1652 AC_HELP_STRING([--with-random=FILE], 1653 [read randomness from FILE (default=/dev/urandom)]), 1654 [ RANDOM_FILE="$withval" ], 1655 [ 1656 if test x$cross_compiling != xyes; then 1657 dnl Check for random device 1658 AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] ) 1659 else 1660 AC_MSG_WARN([skipped the /dev/urandom detection when cross-compiling]) 1661 fi 1662 ] 1663 ) 1664 if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then 1665 AC_SUBST(RANDOM_FILE) 1666 AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE", 1667 [a suitable file to read random data from]) 1668 fi 1669fi 1670 1671dnl --- 1672dnl We require OpenSSL with SRP support. 1673dnl --- 1674if test "$OPENSSL_ENABLED" = "1"; then 1675 AC_CHECK_LIB(crypto, SRP_Calc_client_key, 1676 [ 1677 AC_DEFINE(HAVE_OPENSSL_SRP, 1, [if you have the function SRP_Calc_client_key]) 1678 AC_SUBST(HAVE_OPENSSL_SRP, [1]) 1679 ]) 1680fi 1681 1682dnl ---------------------------------------------------- 1683dnl check for GnuTLS 1684dnl ---------------------------------------------------- 1685 1686dnl Default to compiler & linker defaults for GnuTLS files & libraries. 1687OPT_GNUTLS=no 1688 1689AC_ARG_WITH(gnutls,dnl 1690AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root]) 1691AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]), 1692 OPT_GNUTLS=$withval) 1693 1694if test "$curl_ssl_msg" = "$init_ssl_msg"; then 1695 1696 if test X"$OPT_GNUTLS" != Xno; then 1697 1698 addld="" 1699 addlib="" 1700 gtlslib="" 1701 version="" 1702 addcflags="" 1703 1704 if test "x$OPT_GNUTLS" = "xyes"; then 1705 dnl this is with no partiular path given 1706 CURL_CHECK_PKGCONFIG(gnutls) 1707 1708 if test "$PKGCONFIG" != "no" ; then 1709 addlib=`$PKGCONFIG --libs-only-l gnutls` 1710 addld=`$PKGCONFIG --libs-only-L gnutls` 1711 addcflags=`$PKGCONFIG --cflags-only-I gnutls` 1712 version=`$PKGCONFIG --modversion gnutls` 1713 gtlslib=`echo $addld | $SED -e 's/-L//'` 1714 else 1715 dnl without pkg-config, we try libgnutls-config as that was how it 1716 dnl used to be done 1717 check=`libgnutls-config --version 2>/dev/null` 1718 if test -n "$check"; then 1719 addlib=`libgnutls-config --libs` 1720 addcflags=`libgnutls-config --cflags` 1721 version=`libgnutls-config --version` 1722 gtlslib=`libgnutls-config --prefix`/lib$libsuff 1723 fi 1724 fi 1725 else 1726 dnl this is with a given path, first check if there's a libgnutls-config 1727 dnl there and if not, make an educated guess 1728 cfg=$OPT_GNUTLS/bin/libgnutls-config 1729 check=`$cfg --version 2>/dev/null` 1730 if test -n "$check"; then 1731 addlib=`$cfg --libs` 1732 addcflags=`$cfg --cflags` 1733 version=`$cfg --version` 1734 gtlslib=`$cfg --prefix`/lib$libsuff 1735 else 1736 dnl without pkg-config and libgnutls-config, we guess a lot! 1737 addlib=-lgnutls 1738 addld=-L$OPT_GNUTLS/lib$libsuff 1739 addcflags=-I$OPT_GNUTLS/include 1740 version="" # we just don't know 1741 gtlslib=$OPT_GNUTLS/lib$libsuff 1742 fi 1743 fi 1744 1745 if test -z "$version"; then 1746 dnl lots of efforts, still no go 1747 version="unknown" 1748 fi 1749 1750 if test -n "$addlib"; then 1751 1752 CLEANLIBS="$LIBS" 1753 CLEANCPPFLAGS="$CPPFLAGS" 1754 CLEANLDFLAGS="$LDFLAGS" 1755 1756 LIBS="$addlib $LIBS" 1757 LDFLAGS="$LDFLAGS $addld" 1758 if test "$addcflags" != "-I/usr/include"; then 1759 CPPFLAGS="$CPPFLAGS $addcflags" 1760 fi 1761 1762 AC_CHECK_LIB(gnutls, gnutls_check_version, 1763 [ 1764 AC_DEFINE(USE_GNUTLS, 1, [if GnuTLS is enabled]) 1765 AC_SUBST(USE_GNUTLS, [1]) 1766 GNUTLS_ENABLED=1 1767 USE_GNUTLS="yes" 1768 curl_ssl_msg="enabled (GnuTLS)" 1769 ], 1770 [ 1771 LIBS="$CLEANLIBS" 1772 CPPFLAGS="$CLEANCPPFLAGS" 1773 ]) 1774 1775 if test "x$USE_GNUTLS" = "xyes"; then 1776 AC_MSG_NOTICE([detected GnuTLS version $version]) 1777 1778 if test -n "$gtlslib"; then 1779 dnl when shared libs were found in a path that the run-time 1780 dnl linker doesn't search through, we need to add it to 1781 dnl LD_LIBRARY_PATH to prevent further configure tests to fail 1782 dnl due to this 1783 if test "x$cross_compiling" != "xyes"; then 1784 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlslib" 1785 export LD_LIBRARY_PATH 1786 AC_MSG_NOTICE([Added $gtlslib to LD_LIBRARY_PATH]) 1787 fi 1788 fi 1789 fi 1790 1791 fi 1792 1793 fi dnl GNUTLS not disabled 1794 1795fi 1796 1797dnl --- 1798dnl Check which crypto backend GnuTLS uses 1799dnl --- 1800 1801if test "$GNUTLS_ENABLED" = "1"; then 1802 USE_GNUTLS_NETTLE= 1803 # First check if we can detect either crypto library via transitive linking 1804 AC_CHECK_LIB(gnutls, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ]) 1805 if test "$USE_GNUTLS_NETTLE" = ""; then 1806 AC_CHECK_LIB(gnutls, gcry_control, [ USE_GNUTLS_NETTLE=0 ]) 1807 fi 1808 # If not, try linking directly to both of them to see if they are available 1809 if test "$USE_GNUTLS_NETTLE" = ""; then 1810 AC_CHECK_LIB(nettle, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ]) 1811 fi 1812 if test "$USE_GNUTLS_NETTLE" = ""; then 1813 AC_CHECK_LIB(gcrypt, gcry_control, [ USE_GNUTLS_NETTLE=0 ]) 1814 fi 1815 if test "$USE_GNUTLS_NETTLE" = ""; then 1816 AC_MSG_ERROR([GnuTLS found, but neither gcrypt nor nettle found]) 1817 fi 1818 if test "$USE_GNUTLS_NETTLE" = "1"; then 1819 AC_DEFINE(USE_GNUTLS_NETTLE, 1, [if GnuTLS uses nettle as crypto backend]) 1820 AC_SUBST(USE_GNUTLS_NETTLE, [1]) 1821 LIBS="-lnettle $LIBS" 1822 else 1823 LIBS="-lgcrypt $LIBS" 1824 fi 1825fi 1826 1827dnl --- 1828dnl We require GnuTLS with SRP support. 1829dnl --- 1830if test "$GNUTLS_ENABLED" = "1"; then 1831 AC_CHECK_LIB(gnutls, gnutls_srp_verifier, 1832 [ 1833 AC_DEFINE(HAVE_GNUTLS_SRP, 1, [if you have the function gnutls_srp_verifier]) 1834 AC_SUBST(HAVE_GNUTLS_SRP, [1]) 1835 ]) 1836fi 1837 1838dnl ---------------------------------------------------- 1839dnl check for PolarSSL 1840dnl ---------------------------------------------------- 1841 1842dnl Default to compiler & linker defaults for PolarSSL files & libraries. 1843OPT_POLARSSL=no 1844 1845_cppflags=$CPPFLAGS 1846_ldflags=$LDFLAGS 1847AC_ARG_WITH(polarssl,dnl 1848AC_HELP_STRING([--with-polarssl=PATH],[where to look for PolarSSL, PATH points to the installation root]) 1849AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]), 1850 OPT_POLARSSL=$withval) 1851 1852if test "$curl_ssl_msg" = "$init_ssl_msg"; then 1853 1854 if test X"$OPT_POLARSSL" != Xno; then 1855 1856 if test "$OPT_POLARSSL" = "yes"; then 1857 OPT_POLARSSL="" 1858 fi 1859 1860 if test -z "$OPT_POLARSSL" ; then 1861 dnl check for lib first without setting any new path 1862 1863 AC_CHECK_LIB(polarssl, havege_init, 1864 dnl libpolarssl found, set the variable 1865 [ 1866 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled]) 1867 AC_SUBST(USE_POLARSSL, [1]) 1868 POLARSSL_ENABLED=1 1869 USE_POLARSSL="yes" 1870 curl_ssl_msg="enabled (PolarSSL)" 1871 ]) 1872 fi 1873 1874 addld="" 1875 addlib="" 1876 addcflags="" 1877 polarssllib="" 1878 1879 if test "x$USE_POLARSSL" != "xyes"; then 1880 dnl add the path and test again 1881 addld=-L$OPT_POLARSSL/lib$libsuff 1882 addcflags=-I$OPT_POLARSSL/include 1883 polarssllib=$OPT_POLARSSL/lib$libsuff 1884 1885 LDFLAGS="$LDFLAGS $addld" 1886 if test "$addcflags" != "-I/usr/include"; then 1887 CPPFLAGS="$CPPFLAGS $addcflags" 1888 fi 1889 1890 AC_CHECK_LIB(polarssl, ssl_init, 1891 [ 1892 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled]) 1893 AC_SUBST(USE_POLARSSL, [1]) 1894 POLARSSL_ENABLED=1 1895 USE_POLARSSL="yes" 1896 curl_ssl_msg="enabled (PolarSSL)" 1897 ], 1898 [ 1899 CPPFLAGS=$_cppflags 1900 LDFLAGS=$_ldflags 1901 ]) 1902 fi 1903 1904 if test "x$USE_POLARSSL" = "xyes"; then 1905 AC_MSG_NOTICE([detected PolarSSL]) 1906 1907 LIBS="-lpolarssl $LIBS" 1908 1909 if test -n "$polarssllib"; then 1910 dnl when shared libs were found in a path that the run-time 1911 dnl linker doesn't search through, we need to add it to 1912 dnl LD_LIBRARY_PATH to prevent further configure tests to fail 1913 dnl due to this 1914 if test "x$cross_compiling" != "xyes"; then 1915 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$polarssllib" 1916 export LD_LIBRARY_PATH 1917 AC_MSG_NOTICE([Added $polarssllib to LD_LIBRARY_PATH]) 1918 fi 1919 fi 1920 fi 1921 1922 fi dnl PolarSSL not disabled 1923 1924fi 1925 1926dnl ---------------------------------------------------- 1927dnl check for CyaSSL 1928dnl ---------------------------------------------------- 1929 1930dnl Default to compiler & linker defaults for CyaSSL files & libraries. 1931OPT_CYASSL=no 1932 1933_cppflags=$CPPFLAGS 1934_ldflags=$LDFLAGS 1935AC_ARG_WITH(cyassl,dnl 1936AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to the installation root (default: system lib default)]) 1937AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]), 1938 OPT_CYASSL=$withval) 1939 1940if test "$curl_ssl_msg" = "$init_ssl_msg"; then 1941 1942 if test X"$OPT_CYASSL" != Xno; then 1943 1944 if test "$OPT_CYASSL" = "yes"; then 1945 OPT_CYASSL="" 1946 fi 1947 1948 dnl This should be reworked to use pkg-config instead 1949 1950 cyassllibname=cyassl 1951 1952 if test -z "$OPT_CYASSL" ; then 1953 dnl check for lib in system default first 1954 1955 AC_CHECK_LIB(cyassl, CyaSSL_Init, 1956 dnl libcyassl found, set the variable 1957 [ 1958 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled]) 1959 AC_SUBST(USE_CYASSL, [1]) 1960 CYASSL_ENABLED=1 1961 USE_CYASSL="yes" 1962 curl_ssl_msg="enabled (CyaSSL)" 1963 ]) 1964 fi 1965 1966 addld="" 1967 addlib="" 1968 addcflags="" 1969 cyassllib="" 1970 1971 if test "x$USE_CYASSL" != "xyes"; then 1972 dnl add the path and test again 1973 addld=-L$OPT_CYASSL/lib$libsuff 1974 addcflags=-I$OPT_CYASSL/include 1975 cyassllib=$OPT_CYASSL/lib$libsuff 1976 1977 LDFLAGS="$LDFLAGS $addld" 1978 if test "$addcflags" != "-I/usr/include"; then 1979 CPPFLAGS="$CPPFLAGS $addcflags" 1980 fi 1981 1982 AC_CHECK_LIB(cyassl, CyaSSL_Init, 1983 [ 1984 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled]) 1985 AC_SUBST(USE_CYASSL, [1]) 1986 CYASSL_ENABLED=1 1987 USE_CYASSL="yes" 1988 curl_ssl_msg="enabled (CyaSSL)" 1989 ], 1990 [ 1991 CPPFLAGS=$_cppflags 1992 LDFLAGS=$_ldflags 1993 cyassllib="" 1994 ]) 1995 fi 1996 1997 addld="" 1998 addlib="" 1999 addcflags="" 2000 2001 if test "x$USE_CYASSL" != "xyes"; then 2002 dnl libcyassl renamed to libwolfssl as of 3.4.0 2003 addld=-L$OPT_CYASSL/lib$libsuff 2004 addcflags=-I$OPT_CYASSL/include 2005 cyassllib=$OPT_CYASSL/lib$libsuff 2006 2007 LDFLAGS="$LDFLAGS $addld" 2008 if test "$addcflags" != "-I/usr/include"; then 2009 CPPFLAGS="$CPPFLAGS $addcflags" 2010 fi 2011 2012 cyassllibname=wolfssl 2013 my_ac_save_LIBS="$LIBS" 2014 LIBS="-l$cyassllibname -lm $LIBS" 2015 2016 AC_MSG_CHECKING([for CyaSSL_Init in -lwolfssl]) 2017 AC_LINK_IFELSE([ 2018 AC_LANG_PROGRAM([[ 2019/* These aren't needed for detection and confuse WolfSSL. 2020 They are set up properly later if it is detected. */ 2021#undef SIZEOF_LONG 2022#undef SIZEOF_LONG_LONG 2023#include <cyassl/ssl.h> 2024 ]],[[ 2025 return CyaSSL_Init(); 2026 ]]) 2027 ],[ 2028 AC_MSG_RESULT(yes) 2029 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled]) 2030 AC_SUBST(USE_CYASSL, [1]) 2031 CYASSL_ENABLED=1 2032 USE_CYASSL="yes" 2033 curl_ssl_msg="enabled (CyaSSL)" 2034 ], 2035 [ 2036 AC_MSG_RESULT(no) 2037 CPPFLAGS=$_cppflags 2038 LDFLAGS=$_ldflags 2039 cyassllib="" 2040 ]) 2041 LIBS="$my_ac_save_LIBS" 2042 fi 2043 2044 if test "x$USE_CYASSL" = "xyes"; then 2045 AC_MSG_NOTICE([detected CyaSSL]) 2046 2047 dnl cyassl/ctaocrypt/types.h needs SIZEOF_LONG_LONG defined! 2048 AC_CHECK_SIZEOF(long long) 2049 2050 dnl Versions since at least 2.6.0 may have options.h 2051 AC_CHECK_HEADERS(cyassl/options.h) 2052 2053 dnl Versions since at least 2.9.4 renamed error.h to error-ssl.h 2054 AC_CHECK_HEADERS(cyassl/error-ssl.h) 2055 2056 LIBS="-l$cyassllibname -lm $LIBS" 2057 2058 if test -n "$cyassllib"; then 2059 dnl when shared libs were found in a path that the run-time 2060 dnl linker doesn't search through, we need to add it to 2061 dnl LD_LIBRARY_PATH to prevent further configure tests to fail 2062 dnl due to this 2063 if test "x$cross_compiling" != "xyes"; then 2064 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$cyassllib" 2065 export LD_LIBRARY_PATH 2066 AC_MSG_NOTICE([Added $cyassllib to LD_LIBRARY_PATH]) 2067 fi 2068 fi 2069 2070 fi 2071 2072 fi dnl CyaSSL not disabled 2073 2074fi 2075 2076dnl ---------------------------------------------------- 2077dnl NSS. Only check if GnuTLS and OpenSSL are not enabled 2078dnl ---------------------------------------------------- 2079 2080dnl Default to compiler & linker defaults for NSS files & libraries. 2081OPT_NSS=no 2082 2083AC_ARG_WITH(nss,dnl 2084AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root]) 2085AC_HELP_STRING([--without-nss], [disable NSS detection]), 2086 OPT_NSS=$withval) 2087 2088if test "$curl_ssl_msg" = "$init_ssl_msg"; then 2089 2090 if test X"$OPT_NSS" != Xno; then 2091 2092 addld="" 2093 addlib="" 2094 addcflags="" 2095 nssprefix="" 2096 version="" 2097 2098 if test "x$OPT_NSS" = "xyes"; then 2099 2100 CURL_CHECK_PKGCONFIG(nss) 2101 2102 if test "$PKGCONFIG" != "no" ; then 2103 addlib=`$PKGCONFIG --libs nss` 2104 addcflags=`$PKGCONFIG --cflags nss` 2105 version=`$PKGCONFIG --modversion nss` 2106 nssprefix=`$PKGCONFIG --variable=prefix nss` 2107 else 2108 dnl Without pkg-config, we check for nss-config 2109 2110 check=`nss-config --version 2>/dev/null` 2111 if test -n "$check"; then 2112 addlib=`nss-config --libs` 2113 addcflags=`nss-config --cflags` 2114 version=`nss-config --version` 2115 nssprefix=`nss-config --prefix` 2116 else 2117 addlib="-lnss3" 2118 addcflags="" 2119 version="unknown" 2120 fi 2121 fi 2122 else 2123 NSS_PCDIR="$OPT_NSS/lib/pkgconfig" 2124 if test -f "$NSS_PCDIR/nss.pc"; then 2125 CURL_CHECK_PKGCONFIG(nss, [$NSS_PCDIR]) 2126 if test "$PKGCONFIG" != "no" ; then 2127 addld=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --libs-only-L nss` 2128 addlib=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --libs-only-l nss` 2129 addcflags=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --cflags nss` 2130 version=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --modversion nss` 2131 nssprefix=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --variable=prefix nss` 2132 fi 2133 fi 2134 fi 2135 2136 if test -z "$addlib"; then 2137 # Without pkg-config, we'll kludge in some defaults 2138 AC_MSG_WARN([Using hard-wired libraries and compilation flags for NSS.]) 2139 addld="-L$OPT_NSS/lib" 2140 addlib="-lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4" 2141 addcflags="-I$OPT_NSS/include" 2142 version="unknown" 2143 nssprefix=$OPT_NSS 2144 fi 2145 2146 CLEANLDFLAGS="$LDFLAGS" 2147 CLEANLIBS="$LIBS" 2148 CLEANCPPFLAGS="$CPPFLAGS" 2149 2150 LDFLAGS="$addld $LDFLAGS" 2151 LIBS="$addlib $LIBS" 2152 if test "$addcflags" != "-I/usr/include"; then 2153 CPPFLAGS="$CPPFLAGS $addcflags" 2154 fi 2155 2156 dnl The function SSL_VersionRangeSet() is needed to enable TLS > 1.0 2157 AC_CHECK_LIB(nss3, SSL_VersionRangeSet, 2158 [ 2159 AC_DEFINE(USE_NSS, 1, [if NSS is enabled]) 2160 AC_SUBST(USE_NSS, [1]) 2161 USE_NSS="yes" 2162 NSS_ENABLED=1 2163 curl_ssl_msg="enabled (NSS)" 2164 ], 2165 [ 2166 LDFLAGS="$CLEANLDFLAGS" 2167 LIBS="$CLEANLIBS" 2168 CPPFLAGS="$CLEANCPPFLAGS" 2169 ]) 2170 2171 if test "x$USE_NSS" = "xyes"; then 2172 AC_MSG_NOTICE([detected NSS version $version]) 2173 2174 dnl needed when linking the curl tool without USE_EXPLICIT_LIB_DEPS 2175 NSS_LIBS=$addlib 2176 AC_SUBST([NSS_LIBS]) 2177 2178 dnl when shared libs were found in a path that the run-time 2179 dnl linker doesn't search through, we need to add it to 2180 dnl LD_LIBRARY_PATH to prevent further configure tests to fail 2181 dnl due to this 2182 if test "x$cross_compiling" != "xyes"; then 2183 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff" 2184 export LD_LIBRARY_PATH 2185 AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH]) 2186 fi 2187 2188 fi dnl NSS found 2189 2190 fi dnl NSS not disabled 2191 2192fi dnl curl_ssl_msg = init_ssl_msg 2193 2194OPT_AXTLS=off 2195 2196AC_ARG_WITH(axtls,dnl 2197AC_HELP_STRING([--with-axtls=PATH],[Where to look for axTLS, PATH points to the axTLS installation prefix (default: /usr/local). Ignored if another SSL engine is selected.]) 2198AC_HELP_STRING([--without-axtls], [disable axTLS]), 2199 OPT_AXTLS=$withval) 2200 2201if test "$curl_ssl_msg" = "$init_ssl_msg"; then 2202 if test X"$OPT_AXTLS" != Xno; then 2203 dnl backup the pre-axtls variables 2204 CLEANLDFLAGS="$LDFLAGS" 2205 CLEANCPPFLAGS="$CPPFLAGS" 2206 CLEANLIBS="$LIBS" 2207 2208 case "$OPT_AXTLS" in 2209 yes) 2210 dnl --with-axtls (without path) used 2211 PREFIX_AXTLS=/usr/local 2212 LIB_AXTLS="$PREFIX_AXTLS/lib" 2213 LDFLAGS="$LDFLAGS -L$LIB_AXTLS" 2214 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include" 2215 ;; 2216 off) 2217 dnl no --with-axtls option given, just check default places 2218 PREFIX_AXTLS= 2219 ;; 2220 *) 2221 dnl check the given --with-axtls spot 2222 PREFIX_AXTLS=$OPT_AXTLS 2223 LIB_AXTLS="$PREFIX_AXTLS/lib" 2224 LDFLAGS="$LDFLAGS -L$LIB_AXTLS" 2225 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include" 2226 ;; 2227 esac 2228 2229 AC_CHECK_LIB(axtls, ssl_version,[ 2230 LIBS="-laxtls $LIBS" 2231 AC_DEFINE(USE_AXTLS, 1, [if axTLS is enabled]) 2232 AC_SUBST(USE_AXTLS, [1]) 2233 AXTLS_ENABLED=1 2234 USE_AXTLS="yes" 2235 curl_ssl_msg="enabled (axTLS)" 2236 2237 if test "x$cross_compiling" != "xyes"; then 2238 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS" 2239 export LD_LIBRARY_PATH 2240 AC_MSG_NOTICE([Added $LIB_AXTLS to LD_LIBRARY_PATH]) 2241 fi 2242 ],[ 2243 LDFLAGS="$CLEANLDFLAGS" 2244 CPPFLAGS="$CLEANCPPFLAGS" 2245 LIBS="$CLEANLIBS" 2246 ]) 2247 fi 2248fi 2249 2250if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$DARWINSSL_ENABLED" = "x"; then 2251 AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.]) 2252 AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls, --with-winssl, or --with-darwinssl to address this.]) 2253else 2254 # SSL is enabled, genericly 2255 AC_SUBST(SSL_ENABLED) 2256 SSL_ENABLED="1" 2257fi 2258 2259dnl ********************************************************************** 2260dnl Check for the CA bundle 2261dnl ********************************************************************** 2262 2263CURL_CHECK_CA_BUNDLE 2264 2265dnl ********************************************************************** 2266dnl Check for libmetalink 2267dnl ********************************************************************** 2268 2269OPT_LIBMETALINK=no 2270 2271AC_ARG_WITH(libmetalink,dnl 2272AC_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root]) 2273AC_HELP_STRING([--without-libmetalink], [disable libmetalink detection]), 2274 OPT_LIBMETALINK=$withval) 2275 2276if test X"$OPT_LIBMETALINK" != Xno; then 2277 2278 addld="" 2279 addlib="" 2280 addcflags="" 2281 version="" 2282 libmetalinklib="" 2283 2284 PKGTEST="no" 2285 if test "x$OPT_LIBMETALINK" = "xyes"; then 2286 dnl this is with no partiular path given 2287 PKGTEST="yes" 2288 CURL_CHECK_PKGCONFIG(libmetalink) 2289 else 2290 dnl When particular path is given, set PKG_CONFIG_LIBDIR using the path. 2291 LIBMETALINK_PCDIR="$OPT_LIBMETALINK/lib/pkgconfig" 2292 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$LIBMETALINK_PCDIR"]) 2293 if test -f "$LIBMETALINK_PCDIR/libmetalink.pc"; then 2294 PKGTEST="yes" 2295 fi 2296 if test "$PKGTEST" = "yes"; then 2297 CURL_CHECK_PKGCONFIG(libmetalink, [$LIBMETALINK_PCDIR]) 2298 fi 2299 fi 2300 if test "$PKGTEST" = "yes" && test "$PKGCONFIG" != "no"; then 2301 addlib=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl 2302 $PKGCONFIG --libs-only-l libmetalink` 2303 addld=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl 2304 $PKGCONFIG --libs-only-L libmetalink` 2305 addcflags=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl 2306 $PKGCONFIG --cflags-only-I libmetalink` 2307 version=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl 2308 $PKGCONFIG --modversion libmetalink` 2309 libmetalinklib=`echo $addld | $SED -e 's/-L//'` 2310 fi 2311 if test -n "$addlib"; then 2312 2313 clean_CPPFLAGS="$CPPFLAGS" 2314 clean_LDFLAGS="$LDFLAGS" 2315 clean_LIBS="$LIBS" 2316 CPPFLAGS="$addcflags $clean_CPPFLAGS" 2317 LDFLAGS="$addld $clean_LDFLAGS" 2318 LIBS="$addlib $clean_LIBS" 2319 AC_MSG_CHECKING([if libmetalink is recent enough]) 2320 AC_LINK_IFELSE([ 2321 AC_LANG_PROGRAM([[ 2322# include <metalink/metalink.h> 2323 ]],[[ 2324 if(0 != metalink_strerror(0)) /* added in 0.1.0 */ 2325 return 1; 2326 ]]) 2327 ],[ 2328 AC_MSG_RESULT([yes ($version)]) 2329 want_metalink="yes" 2330 ],[ 2331 AC_MSG_RESULT([no ($version)]) 2332 AC_MSG_NOTICE([libmetalink library defective or too old]) 2333 want_metalink="no" 2334 ]) 2335 CPPFLAGS="$clean_CPPFLAGS" 2336 LDFLAGS="$clean_LDFLAGS" 2337 LIBS="$clean_LIBS" 2338 if test "$want_metalink" = "yes"; then 2339 dnl finally libmetalink will be used 2340 AC_DEFINE(USE_METALINK, 1, [Define to enable metalink support]) 2341 LIBMETALINK_LIBS=$addlib 2342 LIBMETALINK_LDFLAGS=$addld 2343 LIBMETALINK_CPPFLAGS=$addcflags 2344 AC_SUBST([LIBMETALINK_LIBS]) 2345 AC_SUBST([LIBMETALINK_LDFLAGS]) 2346 AC_SUBST([LIBMETALINK_CPPFLAGS]) 2347 curl_mtlnk_msg="enabled" 2348 fi 2349 2350 fi 2351fi 2352 2353dnl ********************************************************************** 2354dnl Check for the presence of LIBSSH2 libraries and headers 2355dnl ********************************************************************** 2356 2357dnl Default to compiler & linker defaults for LIBSSH2 files & libraries. 2358OPT_LIBSSH2=off 2359AC_ARG_WITH(libssh2,dnl 2360AC_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]) 2361AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]), 2362 OPT_LIBSSH2=$withval) 2363 2364if test X"$OPT_LIBSSH2" != Xno; then 2365 dnl backup the pre-libssh2 variables 2366 CLEANLDFLAGS="$LDFLAGS" 2367 CLEANCPPFLAGS="$CPPFLAGS" 2368 CLEANLIBS="$LIBS" 2369 2370 case "$OPT_LIBSSH2" in 2371 yes) 2372 dnl --with-libssh2 (without path) used 2373 CURL_CHECK_PKGCONFIG(libssh2) 2374 2375 if test "$PKGCONFIG" != "no" ; then 2376 LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2` 2377 LD_SSH2=`$PKGCONFIG --libs-only-L libssh2` 2378 CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2` 2379 version=`$PKGCONFIG --modversion libssh2` 2380 DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'` 2381 fi 2382 2383 ;; 2384 off) 2385 dnl no --with-libssh2 option given, just check default places 2386 ;; 2387 *) 2388 dnl use the given --with-libssh2 spot 2389 PREFIX_SSH2=$OPT_LIBSSH2 2390 ;; 2391 esac 2392 2393 dnl if given with a prefix, we set -L and -I based on that 2394 if test -n "$PREFIX_SSH2"; then 2395 LIB_SSH2="-lssh2" 2396 LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff 2397 CPP_SSH2=-I${PREFIX_SSH2}/include 2398 DIR_SSH2=${PREFIX_SSH2}/lib$libsuff 2399 fi 2400 2401 LDFLAGS="$LDFLAGS $LD_SSH2" 2402 CPPFLAGS="$CPPFLAGS $CPP_SSH2" 2403 LIBS="$LIB_SSH2 $LIBS" 2404 2405 AC_CHECK_LIB(ssh2, libssh2_channel_open_ex) 2406 2407 AC_CHECK_HEADERS(libssh2.h, 2408 curl_ssh_msg="enabled (libSSH2)" 2409 LIBSSH2_ENABLED=1 2410 AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use]) 2411 AC_SUBST(USE_LIBSSH2, [1]) 2412 ) 2413 2414 if test X"$OPT_LIBSSH2" != Xoff && 2415 test "$LIBSSH2_ENABLED" != "1"; then 2416 AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!]) 2417 fi 2418 2419 if test "$LIBSSH2_ENABLED" = "1"; then 2420 if test -n "$DIR_SSH2"; then 2421 dnl when the libssh2 shared libs were found in a path that the run-time 2422 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH 2423 dnl to prevent further configure tests to fail due to this 2424 2425 if test "x$cross_compiling" != "xyes"; then 2426 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2" 2427 export LD_LIBRARY_PATH 2428 AC_MSG_NOTICE([Added $DIR_SSH2 to LD_LIBRARY_PATH]) 2429 fi 2430 fi 2431 else 2432 dnl no libssh2, revert back to clean variables 2433 LDFLAGS=$CLEANLDFLAGS 2434 CPPFLAGS=$CLEANCPPFLAGS 2435 LIBS=$CLEANLIBS 2436 fi 2437fi 2438 2439dnl ********************************************************************** 2440dnl Check for the presence of LIBRTMP libraries and headers 2441dnl ********************************************************************** 2442 2443dnl Default to compiler & linker defaults for LIBRTMP files & libraries. 2444OPT_LIBRTMP=off 2445AC_ARG_WITH(librtmp,dnl 2446AC_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]) 2447AC_HELP_STRING([--without-librtmp], [disable LIBRTMP]), 2448 OPT_LIBRTMP=$withval) 2449 2450if test X"$OPT_LIBRTMP" != Xno; then 2451 dnl backup the pre-librtmp variables 2452 CLEANLDFLAGS="$LDFLAGS" 2453 CLEANCPPFLAGS="$CPPFLAGS" 2454 CLEANLIBS="$LIBS" 2455 2456 case "$OPT_LIBRTMP" in 2457 yes) 2458 dnl --with-librtmp (without path) used 2459 CURL_CHECK_PKGCONFIG(librtmp) 2460 2461 if test "$PKGCONFIG" != "no" ; then 2462 LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp` 2463 LD_RTMP=`$PKGCONFIG --libs-only-L librtmp` 2464 CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp` 2465 version=`$PKGCONFIG --modversion librtmp` 2466 DIR_RTMP=`echo $LD_RTMP | $SED -e 's/-L//'` 2467 else 2468 dnl To avoid link errors, we do not allow --librtmp without 2469 dnl a pkgconfig file 2470 AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.]) 2471 fi 2472 2473 ;; 2474 off) 2475 dnl no --with-librtmp option given, just check default places 2476 LIB_RTMP="-lrtmp" 2477 ;; 2478 *) 2479 dnl use the given --with-librtmp spot 2480 PREFIX_RTMP=$OPT_LIBRTMP 2481 ;; 2482 esac 2483 2484 dnl if given with a prefix, we set -L and -I based on that 2485 if test -n "$PREFIX_RTMP"; then 2486 LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff 2487 CPP_RTMP=-I${PREFIX_RTMP}/include 2488 DIR_RTMP=${PREFIX_RTMP}/lib$libsuff 2489 fi 2490 2491 LDFLAGS="$LDFLAGS $LD_RTMP" 2492 CPPFLAGS="$CPPFLAGS $CPP_RTMP" 2493 LIBS="$LIB_RTMP $LIBS" 2494 2495 AC_CHECK_LIB(rtmp, RTMP_Init, 2496 [ 2497 AC_CHECK_HEADERS(librtmp/rtmp.h, 2498 curl_rtmp_msg="enabled (librtmp)" 2499 LIBRTMP_ENABLED=1 2500 AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use]) 2501 AC_SUBST(USE_LIBRTMP, [1]) 2502 ) 2503 ], 2504 dnl not found, revert back to clean variables 2505 LDFLAGS=$CLEANLDFLAGS 2506 CPPFLAGS=$CLEANCPPFLAGS 2507 LIBS=$CLEANLIBS 2508 ) 2509 2510 if test X"$OPT_LIBRTMP" != Xoff && 2511 test "$LIBRTMP_ENABLED" != "1"; then 2512 AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!]) 2513 fi 2514 2515fi 2516 2517dnl ********************************************************************** 2518dnl Check for linker switch for versioned symbols 2519dnl ********************************************************************** 2520 2521versioned_symbols_flavour= 2522AC_MSG_CHECKING([whether versioned symbols are wanted]) 2523AC_ARG_ENABLE(versioned-symbols, 2524AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library]) 2525AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]), 2526[ case "$enableval" in 2527 yes) AC_MSG_RESULT(yes) 2528 AC_MSG_CHECKING([if libraries can be versioned]) 2529 GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script` 2530 if test -z "$GLD"; then 2531 AC_MSG_RESULT(no) 2532 AC_MSG_WARN([You need an ld version supporting the --version-script option]) 2533 else 2534 AC_MSG_RESULT(yes) 2535 if test "x$OPENSSL_ENABLED" = "x1"; then 2536 versioned_symbols_flavour="OPENSSL_" 2537 elif test "x$GNUTLS_ENABLED" = "x1"; then 2538 versioned_symbols_flavour="GNUTLS_" 2539 elif test "x$NSS_ENABLED" = "x1"; then 2540 versioned_symbols_flavour="NSS_" 2541 elif test "x$POLARSSL_ENABLED" = "x1"; then 2542 versioned_symbols_flavour="POLARSSL_" 2543 elif test "x$CYASSL_ENABLED" = "x1"; then 2544 versioned_symbols_flavour="CYASSL_" 2545 elif test "x$AXTLS_ENABLED" = "x1"; then 2546 versioned_symbols_flavour="AXTLS_" 2547 elif test "x$WINSSL_ENABLED" = "x1"; then 2548 versioned_symbols_flavour="WINSSL_" 2549 elif test "x$DARWINSSL_ENABLED" = "x1"; then 2550 versioned_symbols_flavour="DARWINSSL_" 2551 else 2552 versioned_symbols_flavour="" 2553 fi 2554 versioned_symbols="yes" 2555 fi 2556 ;; 2557 2558 *) AC_MSG_RESULT(no) 2559 ;; 2560 esac 2561], [ 2562AC_MSG_RESULT(no) 2563] 2564) 2565 2566AC_SUBST([CURL_LT_SHLIB_VERSIONED_FLAVOUR], 2567 ["$versioned_symbols_flavour"]) 2568AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS], 2569 [test "x$versioned_symbols" = 'xyes']) 2570 2571dnl ------------------------------------------------- 2572dnl check winidn option before other IDN libraries 2573dnl ------------------------------------------------- 2574 2575AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)]) 2576OPT_WINIDN="default" 2577AC_ARG_WITH(winidn, 2578AC_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN]) 2579AC_HELP_STRING([--without-winidn], [disable Windows native IDN]), 2580 OPT_WINIDN=$withval) 2581case "$OPT_WINIDN" in 2582 no|default) 2583 dnl --without-winidn option used or configure option not specified 2584 want_winidn="no" 2585 AC_MSG_RESULT([no]) 2586 ;; 2587 yes) 2588 dnl --with-winidn option used without path 2589 want_winidn="yes" 2590 want_winidn_path="default" 2591 AC_MSG_RESULT([yes]) 2592 ;; 2593 *) 2594 dnl --with-winidn option used with path 2595 want_winidn="yes" 2596 want_winidn_path="$withval" 2597 AC_MSG_RESULT([yes ($withval)]) 2598 ;; 2599esac 2600 2601if test "$want_winidn" = "yes"; then 2602 dnl winidn library support has been requested 2603 clean_CPPFLAGS="$CPPFLAGS" 2604 clean_LDFLAGS="$LDFLAGS" 2605 clean_LIBS="$LIBS" 2606 WINIDN_LIBS="-lnormaliz" 2607 # 2608 if test "$want_winidn_path" != "default"; then 2609 dnl path has been specified 2610 dnl pkg-config not available or provides no info 2611 WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff" 2612 WINIDN_CPPFLAGS="-I$want_winidn_path/include" 2613 WINIDN_DIR="$want_winidn_path/lib$libsuff" 2614 fi 2615 # 2616 CPPFLAGS="$WINIDN_CPPFLAGS $CPPFLAGS" 2617 LDFLAGS="$WINIDN_LDFLAGS $LDFLAGS" 2618 LIBS="$WINIDN_LIBS $LIBS" 2619 # 2620 AC_MSG_CHECKING([if IdnToUnicode can be linked]) 2621 AC_LINK_IFELSE([ 2622 AC_LANG_FUNC_LINK_TRY([IdnToUnicode]) 2623 ],[ 2624 AC_MSG_RESULT([yes]) 2625 tst_links_winidn="yes" 2626 ],[ 2627 AC_MSG_RESULT([no]) 2628 tst_links_winidn="no" 2629 ]) 2630 # 2631 if test "$tst_links_winidn" = "yes"; then 2632 AC_DEFINE(USE_WIN32_IDN, 1, [Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz).]) 2633 AC_DEFINE(WANT_IDN_PROTOTYPES, 1, [Define to 1 to provide own prototypes.]) 2634 AC_SUBST([IDN_ENABLED], [1]) 2635 curl_idn_msg="enabled (Windows-native)" 2636 else 2637 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled]) 2638 CPPFLAGS="$clean_CPPFLAGS" 2639 LDFLAGS="$clean_LDFLAGS" 2640 LIBS="$clean_LIBS" 2641 fi 2642fi 2643 2644dnl ********************************************************************** 2645dnl Check for the presence of IDN libraries and headers 2646dnl ********************************************************************** 2647 2648AC_MSG_CHECKING([whether to build with libidn]) 2649OPT_IDN="default" 2650AC_ARG_WITH(libidn, 2651AC_HELP_STRING([--with-libidn=PATH],[Enable libidn usage]) 2652AC_HELP_STRING([--without-libidn],[Disable libidn usage]), 2653 [OPT_IDN=$withval]) 2654case "$OPT_IDN" in 2655 no) 2656 dnl --without-libidn option used 2657 want_idn="no" 2658 AC_MSG_RESULT([no]) 2659 ;; 2660 default) 2661 dnl configure option not specified 2662 want_idn="yes" 2663 want_idn_path="default" 2664 AC_MSG_RESULT([(assumed) yes]) 2665 ;; 2666 yes) 2667 dnl --with-libidn option used without path 2668 want_idn="yes" 2669 want_idn_path="default" 2670 AC_MSG_RESULT([yes]) 2671 ;; 2672 *) 2673 dnl --with-libidn option used with path 2674 want_idn="yes" 2675 want_idn_path="$withval" 2676 AC_MSG_RESULT([yes ($withval)]) 2677 ;; 2678esac 2679 2680if test "$want_idn" = "yes"; then 2681 dnl idn library support has been requested 2682 clean_CPPFLAGS="$CPPFLAGS" 2683 clean_LDFLAGS="$LDFLAGS" 2684 clean_LIBS="$LIBS" 2685 PKGCONFIG="no" 2686 # 2687 if test "$want_idn_path" != "default"; then 2688 dnl path has been specified 2689 IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig" 2690 CURL_CHECK_PKGCONFIG(libidn, [$IDN_PCDIR]) 2691 if test "$PKGCONFIG" != "no"; then 2692 IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl 2693 $PKGCONFIG --libs-only-l libidn 2>/dev/null` 2694 IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl 2695 $PKGCONFIG --libs-only-L libidn 2>/dev/null` 2696 IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl 2697 $PKGCONFIG --cflags-only-I libidn 2>/dev/null` 2698 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'` 2699 else 2700 dnl pkg-config not available or provides no info 2701 IDN_LIBS="-lidn" 2702 IDN_LDFLAGS="-L$want_idn_path/lib$libsuff" 2703 IDN_CPPFLAGS="-I$want_idn_path/include" 2704 IDN_DIR="$want_idn_path/lib$libsuff" 2705 fi 2706 else 2707 dnl path not specified 2708 CURL_CHECK_PKGCONFIG(libidn) 2709 if test "$PKGCONFIG" != "no"; then 2710 IDN_LIBS=`$PKGCONFIG --libs-only-l libidn 2>/dev/null` 2711 IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn 2>/dev/null` 2712 IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn 2>/dev/null` 2713 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'` 2714 else 2715 dnl pkg-config not available or provides no info 2716 IDN_LIBS="-lidn" 2717 fi 2718 fi 2719 # 2720 if test "$PKGCONFIG" != "no"; then 2721 AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"]) 2722 AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"]) 2723 AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"]) 2724 AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"]) 2725 else 2726 AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"]) 2727 AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"]) 2728 AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"]) 2729 AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"]) 2730 fi 2731 # 2732 CPPFLAGS="$IDN_CPPFLAGS $CPPFLAGS" 2733 LDFLAGS="$IDN_LDFLAGS $LDFLAGS" 2734 LIBS="$IDN_LIBS $LIBS" 2735 # 2736 AC_MSG_CHECKING([if idna_to_ascii_4i can be linked]) 2737 AC_LINK_IFELSE([ 2738 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_4i]) 2739 ],[ 2740 AC_MSG_RESULT([yes]) 2741 tst_links_libidn="yes" 2742 ],[ 2743 AC_MSG_RESULT([no]) 2744 tst_links_libidn="no" 2745 ]) 2746 if test "$tst_links_libidn" = "no"; then 2747 AC_MSG_CHECKING([if idna_to_ascii_lz can be linked]) 2748 AC_LINK_IFELSE([ 2749 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_lz]) 2750 ],[ 2751 AC_MSG_RESULT([yes]) 2752 tst_links_libidn="yes" 2753 ],[ 2754 AC_MSG_RESULT([no]) 2755 tst_links_libidn="no" 2756 ]) 2757 fi 2758 # 2759 if test "$tst_links_libidn" = "yes"; then 2760 AC_DEFINE(HAVE_LIBIDN, 1, [Define to 1 if you have the `idn' library (-lidn).]) 2761 dnl different versions of libidn have different setups of these: 2762 AC_CHECK_FUNCS( idn_free idna_strerror tld_strerror ) 2763 AC_CHECK_HEADERS( idn-free.h tld.h ) 2764 if test "x$ac_cv_header_tld_h" = "xyes"; then 2765 AC_SUBST([IDN_ENABLED], [1]) 2766 curl_idn_msg="enabled" 2767 if test -n "$IDN_DIR" -a "x$cross_compiling" != "xyes"; then 2768 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR" 2769 export LD_LIBRARY_PATH 2770 AC_MSG_NOTICE([Added $IDN_DIR to LD_LIBRARY_PATH]) 2771 fi 2772 else 2773 AC_MSG_WARN([Libraries for IDN support too old: IDN disabled]) 2774 CPPFLAGS="$clean_CPPFLAGS" 2775 LDFLAGS="$clean_LDFLAGS" 2776 LIBS="$clean_LIBS" 2777 fi 2778 else 2779 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled]) 2780 CPPFLAGS="$clean_CPPFLAGS" 2781 LDFLAGS="$clean_LDFLAGS" 2782 LIBS="$clean_LIBS" 2783 fi 2784fi 2785 2786 2787dnl Let's hope this split URL remains working: 2788dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \ 2789dnl genprogc/thread_quick_ref.htm 2790 2791 2792dnl ********************************************************************** 2793dnl Check for nghttp2 2794dnl ********************************************************************** 2795 2796OPT_H2="yes" 2797AC_ARG_WITH(nghttp2, 2798AC_HELP_STRING([--with-nghttp2=PATH],[Enable nghttp2 usage]) 2799AC_HELP_STRING([--without-nghttp2],[Disable nghttp2 usage]), 2800 [OPT_H2=$withval]) 2801case "$OPT_H2" in 2802 no) 2803 dnl --without-nghttp2 option used 2804 want_h2="no" 2805 ;; 2806 yes) 2807 dnl --with-nghttp2 option used without path 2808 want_h2="default" 2809 want_h2_path="" 2810 ;; 2811 *) 2812 dnl --with-nghttp2 option used with path 2813 want_h2="yes" 2814 want_h2_path="$withval/lib/pkgconfig" 2815 ;; 2816esac 2817 2818curl_h2_msg="disabled (--with-nghttp2)" 2819if test X"$want_h2" != Xno; then 2820 dnl backup the pre-nghttp2 variables 2821 CLEANLDFLAGS="$LDFLAGS" 2822 CLEANCPPFLAGS="$CPPFLAGS" 2823 CLEANLIBS="$LIBS" 2824 2825 CURL_CHECK_PKGCONFIG(libnghttp2, $want_h2_path) 2826 2827 if test "$PKGCONFIG" != "no" ; then 2828 LIB_H2=`CURL_EXPORT_PCDIR([$want_h2_path]) 2829 $PKGCONFIG --libs-only-l libnghttp2` 2830 AC_MSG_NOTICE([-l is $LIB_H2]) 2831 2832 CPP_H2=`CURL_EXPORT_PCDIR([$want_h2_path]) dnl 2833 $PKGCONFIG --cflags-only-I libnghttp2` 2834 AC_MSG_NOTICE([-I is $CPP_H2]) 2835 2836 LD_H2=`CURL_EXPORT_PCDIR([$want_h2_path]) 2837 $PKGCONFIG --libs-only-L libnghttp2` 2838 AC_MSG_NOTICE([-L is $LD_H2]) 2839 2840 LDFLAGS="$LDFLAGS $LD_H2" 2841 CPPFLAGS="$CPPFLAGS $CPP_H2" 2842 LIBS="$LIB_H2 $LIBS" 2843 2844 # use nghttp2_option_set_no_recv_client_magic to require nghttp2 2845 # >= 1.0.0 2846 AC_CHECK_LIB(nghttp2, nghttp2_option_set_no_recv_client_magic, 2847 [ 2848 AC_CHECK_HEADERS(nghttp2/nghttp2.h, 2849 curl_h2_msg="enabled (nghttp2)" 2850 NGHTTP2_ENABLED=1 2851 AC_DEFINE(USE_NGHTTP2, 1, [if nghttp2 is in use]) 2852 AC_SUBST(USE_NGHTTP2, [1]) 2853 ) 2854 ], 2855 dnl not found, revert back to clean variables 2856 LDFLAGS=$CLEANLDFLAGS 2857 CPPFLAGS=$CLEANCPPFLAGS 2858 LIBS=$CLEANLIBS 2859 ) 2860 2861 else 2862 dnl no nghttp2 pkg-config found, deal with it 2863 if test X"$want_h2" != Xdefault; then 2864 dnl To avoid link errors, we do not allow --with-nghttp2 without 2865 dnl a pkgconfig file 2866 AC_MSG_ERROR([--with-nghttp2 was specified but could not find libnghttp2 pkg-config file.]) 2867 fi 2868 fi 2869 2870fi 2871 2872dnl ********************************************************************** 2873dnl Back to "normal" configuring 2874dnl ********************************************************************** 2875 2876dnl Checks for header files. 2877AC_HEADER_STDC 2878 2879CURL_CHECK_HEADER_MALLOC 2880CURL_CHECK_HEADER_MEMORY 2881 2882dnl Now check for the very most basic headers. Then we can use these 2883dnl ones as default-headers when checking for the rest! 2884AC_CHECK_HEADERS( 2885 sys/types.h \ 2886 sys/time.h \ 2887 sys/select.h \ 2888 sys/socket.h \ 2889 sys/ioctl.h \ 2890 sys/uio.h \ 2891 assert.h \ 2892 unistd.h \ 2893 stdlib.h \ 2894 limits.h \ 2895 arpa/inet.h \ 2896 net/if.h \ 2897 netinet/in.h \ 2898 sys/un.h \ 2899 netinet/tcp.h \ 2900 netdb.h \ 2901 sys/sockio.h \ 2902 sys/stat.h \ 2903 sys/param.h \ 2904 termios.h \ 2905 termio.h \ 2906 sgtty.h \ 2907 fcntl.h \ 2908 alloca.h \ 2909 time.h \ 2910 io.h \ 2911 pwd.h \ 2912 utime.h \ 2913 sys/utime.h \ 2914 sys/poll.h \ 2915 poll.h \ 2916 socket.h \ 2917 sys/resource.h \ 2918 libgen.h \ 2919 locale.h \ 2920 errno.h \ 2921 stdbool.h \ 2922 arpa/tftp.h \ 2923 sys/filio.h \ 2924 sys/wait.h \ 2925 setjmp.h, 2926dnl to do if not found 2927[], 2928dnl to do if found 2929[], 2930dnl default includes 2931[ 2932#ifdef HAVE_SYS_TYPES_H 2933#include <sys/types.h> 2934#endif 2935#ifdef HAVE_SYS_TIME_H 2936#include <sys/time.h> 2937#endif 2938#ifdef HAVE_SYS_SELECT_H 2939#include <sys/select.h> 2940#endif 2941#ifdef HAVE_SYS_SOCKET_H 2942#include <sys/socket.h> 2943#endif 2944#ifdef HAVE_NETINET_IN_H 2945#include <netinet/in.h> 2946#endif 2947#ifdef HAVE_SYS_UN_H 2948#include <sys/un.h> 2949#endif 2950] 2951) 2952 2953dnl Checks for typedefs, structures, and compiler characteristics. 2954AC_C_CONST 2955CURL_CHECK_VARIADIC_MACROS 2956AC_TYPE_SIZE_T 2957AC_HEADER_TIME 2958CURL_CHECK_STRUCT_TIMEVAL 2959CURL_VERIFY_RUNTIMELIBS 2960 2961AC_CHECK_SIZEOF(off_t) 2962 2963soname_bump=no 2964if test x"$ac_cv_native_windows" != "xyes" && 2965 test $ac_cv_sizeof_off_t -ne $curl_sizeof_curl_off_t; then 2966 AC_MSG_WARN([This libcurl built is probably not ABI compatible with previous]) 2967 AC_MSG_WARN([builds! You MUST read lib/README.curl_off_t to figure it out.]) 2968 soname_bump=yes 2969fi 2970 2971 2972AC_CHECK_TYPE(long long, 2973 [AC_DEFINE(HAVE_LONGLONG, 1, 2974 [Define to 1 if the compiler supports the 'long long' data type.])] 2975 longlong="yes" 2976) 2977 2978if test "xyes" = "x$longlong"; then 2979 AC_MSG_CHECKING([if numberLL works]) 2980 AC_COMPILE_IFELSE([ 2981 AC_LANG_PROGRAM([[ 2982 ]],[[ 2983 long long val = 1000LL; 2984 ]]) 2985 ],[ 2986 AC_MSG_RESULT([yes]) 2987 AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL]) 2988 ],[ 2989 AC_MSG_RESULT([no]) 2990 ]) 2991fi 2992 2993 2994# check for ssize_t 2995AC_CHECK_TYPE(ssize_t, , 2996 AC_DEFINE(ssize_t, int, [the signed version of size_t])) 2997 2998# check for bool type 2999AC_CHECK_TYPE([bool],[ 3000 AC_DEFINE(HAVE_BOOL_T, 1, 3001 [Define to 1 if bool is an available type.]) 3002], ,[ 3003#ifdef HAVE_SYS_TYPES_H 3004#include <sys/types.h> 3005#endif 3006#ifdef HAVE_STDBOOL_H 3007#include <stdbool.h> 3008#endif 3009]) 3010 3011CURL_CONFIGURE_CURL_SOCKLEN_T 3012 3013CURL_CONFIGURE_PULL_SYS_POLL 3014 3015TYPE_IN_ADDR_T 3016 3017TYPE_SOCKADDR_STORAGE 3018 3019TYPE_SIG_ATOMIC_T 3020 3021AC_TYPE_SIGNAL 3022 3023CURL_CHECK_FUNC_SELECT 3024 3025CURL_CHECK_FUNC_RECV 3026CURL_CHECK_FUNC_SEND 3027CURL_CHECK_MSG_NOSIGNAL 3028 3029CURL_CHECK_FUNC_ALARM 3030CURL_CHECK_FUNC_BASENAME 3031CURL_CHECK_FUNC_CLOSESOCKET 3032CURL_CHECK_FUNC_CLOSESOCKET_CAMEL 3033CURL_CHECK_FUNC_CONNECT 3034CURL_CHECK_FUNC_FCNTL 3035CURL_CHECK_FUNC_FDOPEN 3036CURL_CHECK_FUNC_FREEADDRINFO 3037CURL_CHECK_FUNC_FREEIFADDRS 3038CURL_CHECK_FUNC_FSETXATTR 3039CURL_CHECK_FUNC_FTRUNCATE 3040CURL_CHECK_FUNC_GETADDRINFO 3041CURL_CHECK_FUNC_GAI_STRERROR 3042CURL_CHECK_FUNC_GETHOSTBYADDR 3043CURL_CHECK_FUNC_GETHOSTBYADDR_R 3044CURL_CHECK_FUNC_GETHOSTBYNAME 3045CURL_CHECK_FUNC_GETHOSTBYNAME_R 3046CURL_CHECK_FUNC_GETHOSTNAME 3047CURL_CHECK_FUNC_GETIFADDRS 3048CURL_CHECK_FUNC_GETSERVBYPORT_R 3049CURL_CHECK_FUNC_GMTIME_R 3050CURL_CHECK_FUNC_INET_NTOA_R 3051CURL_CHECK_FUNC_INET_NTOP 3052CURL_CHECK_FUNC_INET_PTON 3053CURL_CHECK_FUNC_IOCTL 3054CURL_CHECK_FUNC_IOCTLSOCKET 3055CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL 3056CURL_CHECK_FUNC_LOCALTIME_R 3057CURL_CHECK_FUNC_MEMRCHR 3058CURL_CHECK_FUNC_POLL 3059CURL_CHECK_FUNC_SETSOCKOPT 3060CURL_CHECK_FUNC_SIGACTION 3061CURL_CHECK_FUNC_SIGINTERRUPT 3062CURL_CHECK_FUNC_SIGNAL 3063CURL_CHECK_FUNC_SIGSETJMP 3064CURL_CHECK_FUNC_SOCKET 3065CURL_CHECK_FUNC_SOCKETPAIR 3066CURL_CHECK_FUNC_STRCASECMP 3067CURL_CHECK_FUNC_STRCMPI 3068CURL_CHECK_FUNC_STRDUP 3069CURL_CHECK_FUNC_STRERROR_R 3070CURL_CHECK_FUNC_STRICMP 3071CURL_CHECK_FUNC_STRNCASECMP 3072CURL_CHECK_FUNC_STRNCMPI 3073CURL_CHECK_FUNC_STRNICMP 3074CURL_CHECK_FUNC_STRSTR 3075CURL_CHECK_FUNC_STRTOK_R 3076CURL_CHECK_FUNC_STRTOLL 3077CURL_CHECK_FUNC_WRITEV 3078 3079case $host in 3080 *msdosdjgpp) 3081 ac_cv_func_pipe=no 3082 skipcheck_pipe=yes 3083 AC_MSG_NOTICE([skip check for pipe on msdosdjgpp]) 3084 ;; 3085esac 3086 3087AC_CHECK_FUNCS([fork \ 3088 geteuid \ 3089 getpass_r \ 3090 getppid \ 3091 getprotobyname \ 3092 getpwuid \ 3093 getpwuid_r \ 3094 getrlimit \ 3095 gettimeofday \ 3096 if_nametoindex \ 3097 inet_addr \ 3098 perror \ 3099 pipe \ 3100 setlocale \ 3101 setmode \ 3102 setrlimit \ 3103 uname \ 3104 utime 3105],[ 3106],[ 3107 func="$ac_func" 3108 eval skipcheck=\$skipcheck_$func 3109 if test "x$skipcheck" != "xyes"; then 3110 AC_MSG_CHECKING([deeper for $func]) 3111 AC_LINK_IFELSE([ 3112 AC_LANG_PROGRAM([[ 3113 ]],[[ 3114 $func (); 3115 ]]) 3116 ],[ 3117 AC_MSG_RESULT([yes]) 3118 eval "ac_cv_func_$func=yes" 3119 AC_DEFINE_UNQUOTED(XC_SH_TR_CPP([HAVE_$func]), [1], 3120 [Define to 1 if you have the $func function.]) 3121 ],[ 3122 AC_MSG_RESULT([but still no]) 3123 ]) 3124 fi 3125]) 3126 3127dnl Check if the getnameinfo function is available 3128dnl and get the types of five of its arguments. 3129CURL_CHECK_FUNC_GETNAMEINFO 3130 3131if test "$ipv6" = "yes"; then 3132 if test "$ac_cv_func_getaddrinfo" = "yes"; then 3133 AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support]) 3134 IPV6_ENABLED=1 3135 AC_SUBST(IPV6_ENABLED) 3136 fi 3137 CURL_CHECK_NI_WITHSCOPEID 3138fi 3139 3140CURL_CHECK_NONBLOCKING_SOCKET 3141 3142dnl ************************************************************ 3143dnl nroff tool stuff 3144dnl 3145 3146AC_PATH_PROG( PERL, perl, , 3147 $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin ) 3148AC_SUBST(PERL) 3149 3150AC_PATH_PROGS( NROFF, gnroff nroff, , 3151 $PATH:/usr/bin/:/usr/local/bin ) 3152AC_SUBST(NROFF) 3153 3154if test -n "$NROFF"; then 3155 dnl only check for nroff options if an nroff command was found 3156 3157 AC_MSG_CHECKING([how to use *nroff to get plain text from man pages]) 3158 MANOPT="-man" 3159 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null` 3160 if test -z "$mancheck"; then 3161 MANOPT="-mandoc" 3162 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null` 3163 if test -z "$mancheck"; then 3164 MANOPT="" 3165 AC_MSG_RESULT([failed]) 3166 AC_MSG_WARN([found no *nroff option to get plaintext from man pages]) 3167 else 3168 AC_MSG_RESULT([$MANOPT]) 3169 fi 3170 else 3171 AC_MSG_RESULT([$MANOPT]) 3172 fi 3173 AC_SUBST(MANOPT) 3174fi 3175 3176if test -z "$MANOPT" 3177then 3178 dnl if no nroff tool was found, or no option that could convert man pages 3179 dnl was found, then disable the built-in manual stuff 3180 AC_MSG_WARN([disabling built-in manual]) 3181 USE_MANUAL="no"; 3182fi 3183 3184dnl ************************************************************************* 3185dnl If the manual variable still is set, then we go with providing a built-in 3186dnl manual 3187 3188if test "$USE_MANUAL" = "1"; then 3189 AC_DEFINE(USE_MANUAL, 1, [If you want to build curl with the built-in manual]) 3190 curl_manual_msg="enabled" 3191fi 3192 3193dnl set variable for use in automakefile(s) 3194AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1) 3195 3196CURL_CHECK_LIB_ARES 3197AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes) 3198 3199if test "x$ac_cv_native_windows" != "xyes" && 3200 test "x$enable_shared" = "xyes"; then 3201 build_libhostname=yes 3202else 3203 build_libhostname=no 3204fi 3205AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes) 3206 3207CURL_CHECK_OPTION_THREADED_RESOLVER 3208 3209if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then 3210 AC_MSG_ERROR( 3211[Options --enable-threaded-resolver and --enable-ares are mutually exclusive]) 3212fi 3213 3214if test "$want_thres" = "yes"; then 3215 AC_CHECK_HEADER(pthread.h, 3216 [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>]) 3217 save_CFLAGS="$CFLAGS" 3218 3219 dnl first check for function without lib 3220 AC_CHECK_FUNC(pthread_create, [USE_THREADS_POSIX=1] ) 3221 3222 dnl if it wasn't found without lib, search for it in pthread lib 3223 if test "$USE_THREADS_POSIX" != "1" 3224 then 3225 CFLAGS="$CFLAGS -pthread" 3226 AC_CHECK_LIB(pthread, pthread_create, 3227 [USE_THREADS_POSIX=1], 3228 [ CFLAGS="$save_CFLAGS"]) 3229 fi 3230 3231 if test "x$USE_THREADS_POSIX" = "x1" 3232 then 3233 AC_DEFINE(USE_THREADS_POSIX, 1, [if you want POSIX threaded DNS lookup]) 3234 curl_res_msg="POSIX threaded" 3235 fi 3236 3237 3238 ]) 3239fi 3240 3241dnl ************************************************************ 3242dnl disable verbose text strings 3243dnl 3244AC_MSG_CHECKING([whether to enable verbose strings]) 3245AC_ARG_ENABLE(verbose, 3246AC_HELP_STRING([--enable-verbose],[Enable verbose strings]) 3247AC_HELP_STRING([--disable-verbose],[Disable verbose strings]), 3248[ case "$enableval" in 3249 no) 3250 AC_MSG_RESULT(no) 3251 AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings]) 3252 curl_verbose_msg="no" 3253 ;; 3254 *) AC_MSG_RESULT(yes) 3255 ;; 3256 esac ], 3257 AC_MSG_RESULT(yes) 3258) 3259 3260dnl ************************************************************ 3261dnl enable SSPI support 3262dnl 3263AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)]) 3264AC_ARG_ENABLE(sspi, 3265AC_HELP_STRING([--enable-sspi],[Enable SSPI]) 3266AC_HELP_STRING([--disable-sspi],[Disable SSPI]), 3267[ case "$enableval" in 3268 yes) 3269 if test "$ac_cv_native_windows" = "yes"; then 3270 AC_MSG_RESULT(yes) 3271 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support]) 3272 AC_SUBST(USE_WINDOWS_SSPI, [1]) 3273 curl_sspi_msg="enabled" 3274 else 3275 AC_MSG_RESULT(no) 3276 AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.]) 3277 fi 3278 ;; 3279 *) 3280 if test "x$WINSSL_ENABLED" = "x1"; then 3281 # --with-winssl implies --enable-sspi 3282 AC_MSG_RESULT(yes) 3283 else 3284 AC_MSG_RESULT(no) 3285 fi 3286 ;; 3287 esac ], 3288 if test "x$WINSSL_ENABLED" = "x1"; then 3289 # --with-winssl implies --enable-sspi 3290 AC_MSG_RESULT(yes) 3291 else 3292 AC_MSG_RESULT(no) 3293 fi 3294) 3295 3296dnl ************************************************************ 3297dnl disable cryptographic authentication 3298dnl 3299AC_MSG_CHECKING([whether to enable cryptographic authentication methods]) 3300AC_ARG_ENABLE(crypto-auth, 3301AC_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication]) 3302AC_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]), 3303[ case "$enableval" in 3304 no) 3305 AC_MSG_RESULT(no) 3306 AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication]) 3307 CURL_DISABLE_CRYPTO_AUTH=1 3308 ;; 3309 *) AC_MSG_RESULT(yes) 3310 ;; 3311 esac ], 3312 AC_MSG_RESULT(yes) 3313) 3314 3315CURL_CHECK_OPTION_NTLM_WB 3316 3317CURL_CHECK_NTLM_WB 3318 3319dnl ************************************************************ 3320dnl disable TLS-SRP authentication 3321dnl 3322AC_MSG_CHECKING([whether to enable TLS-SRP authentication]) 3323AC_ARG_ENABLE(tls-srp, 3324AC_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication]) 3325AC_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]), 3326[ case "$enableval" in 3327 no) 3328 AC_MSG_RESULT(no) 3329 AC_DEFINE(CURL_DISABLE_TLS_SRP, 1, [to disable TLS-SRP authentication]) 3330 want_tls_srp=no 3331 ;; 3332 *) AC_MSG_RESULT(yes) 3333 want_tls_srp=yes 3334 ;; 3335 esac ], 3336 AC_MSG_RESULT(yes) 3337 want_tls_srp=yes 3338) 3339 3340if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_OPENSSL_SRP" = "x1") ; then 3341 AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication]) 3342 USE_TLS_SRP=1 3343 curl_tls_srp_msg="enabled" 3344fi 3345 3346dnl ************************************************************ 3347dnl disable Unix domain sockets support 3348dnl 3349AC_MSG_CHECKING([whether to enable Unix domain sockets]) 3350AC_ARG_ENABLE(unix-sockets, 3351AC_HELP_STRING([--enable-unix-sockets],[Enable Unix domain sockets]) 3352AC_HELP_STRING([--disable-unix-sockets],[Disable Unix domain sockets]), 3353[ case "$enableval" in 3354 no) AC_MSG_RESULT(no) 3355 want_unix_sockets=no 3356 ;; 3357 *) AC_MSG_RESULT(yes) 3358 want_unix_sockets=yes 3359 ;; 3360 esac ], [ 3361 AC_MSG_RESULT(auto) 3362 want_unix_sockets=auto 3363 ] 3364) 3365if test "x$want_unix_sockets" != "xno"; then 3366 AC_CHECK_MEMBER([struct sockaddr_un.sun_path], [ 3367 AC_DEFINE(USE_UNIX_SOCKETS, 1, [Use Unix domain sockets]) 3368 AC_SUBST(USE_UNIX_SOCKETS, [1]) 3369 curl_unix_sockets_msg="enabled" 3370 ], [ 3371 if test "x$want_unix_sockets" = "xyes"; then 3372 AC_MSG_ERROR([--enable-unix-sockets is not available on this platform!]) 3373 fi 3374 ], [ 3375 #include <sys/un.h> 3376 ]) 3377fi 3378 3379dnl ************************************************************ 3380dnl disable cookies support 3381dnl 3382AC_MSG_CHECKING([whether to enable support for cookies]) 3383AC_ARG_ENABLE(cookies, 3384AC_HELP_STRING([--enable-cookies],[Enable cookies support]) 3385AC_HELP_STRING([--disable-cookies],[Disable cookies support]), 3386[ case "$enableval" in 3387 no) 3388 AC_MSG_RESULT(no) 3389 AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support]) 3390 ;; 3391 *) AC_MSG_RESULT(yes) 3392 ;; 3393 esac ], 3394 AC_MSG_RESULT(yes) 3395) 3396 3397dnl ************************************************************ 3398dnl hiding of library internal symbols 3399dnl 3400CURL_CONFIGURE_SYMBOL_HIDING 3401 3402dnl ************************************************************ 3403dnl enforce SONAME bump 3404dnl 3405 3406AC_MSG_CHECKING([whether to enforce SONAME bump]) 3407AC_ARG_ENABLE(soname-bump, 3408AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump]) 3409AC_HELP_STRING([--disable-soname-bump],[Disable enforced SONAME bump]), 3410[ case "$enableval" in 3411 yes) AC_MSG_RESULT(yes) 3412 soname_bump=yes 3413 ;; 3414 *) 3415 AC_MSG_RESULT(no) 3416 ;; 3417 esac ], 3418 AC_MSG_RESULT($soname_bump) 3419) 3420AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes) 3421 3422dnl 3423dnl All the library dependencies put into $LIB apply to libcurl only. 3424dnl 3425LIBCURL_LIBS=$LIBS 3426 3427AC_SUBST(LIBCURL_LIBS) 3428AC_SUBST(CURL_NETWORK_LIBS) 3429AC_SUBST(CURL_NETWORK_AND_TIME_LIBS) 3430 3431dnl BLANK_AT_MAKETIME may be used in our Makefile.am files to blank 3432dnl LIBS variable used in generated makefile at makefile processing 3433dnl time. Doing this functionally prevents LIBS from being used for 3434dnl all link targets in given makefile. 3435BLANK_AT_MAKETIME= 3436AC_SUBST(BLANK_AT_MAKETIME) 3437 3438AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes) 3439 3440dnl yes or no 3441ENABLE_SHARED="$enable_shared" 3442AC_SUBST(ENABLE_SHARED) 3443 3444dnl to let curl-config output the static libraries correctly 3445ENABLE_STATIC="$enable_static" 3446AC_SUBST(ENABLE_STATIC) 3447 3448 3449dnl 3450dnl For keeping supported features and protocols also in pkg-config file 3451dnl since it is more cross-compile friendly than curl-config 3452dnl 3453 3454if test "x$OPENSSL_ENABLED" = "x1"; then 3455 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL" 3456elif test -n "$SSL_ENABLED"; then 3457 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL" 3458fi 3459if test "x$IPV6_ENABLED" = "x1"; then 3460 SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6" 3461fi 3462if test "x$USE_UNIX_SOCKETS" = "x1"; then 3463 SUPPORT_FEATURES="$SUPPORT_FEATURES UnixSockets" 3464fi 3465if test "x$HAVE_LIBZ" = "x1"; then 3466 SUPPORT_FEATURES="$SUPPORT_FEATURES libz" 3467fi 3468if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1"; then 3469 SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS" 3470fi 3471if test "x$IDN_ENABLED" = "x1"; then 3472 SUPPORT_FEATURES="$SUPPORT_FEATURES IDN" 3473fi 3474if test "x$USE_WINDOWS_SSPI" = "x1"; then 3475 SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI" 3476fi 3477 3478if test "x$HAVE_GSSAPI" = "x1"; then 3479 SUPPORT_FEATURES="$SUPPORT_FEATURES GSS-API" 3480fi 3481 3482if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \ 3483 \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then 3484 SUPPORT_FEATURES="$SUPPORT_FEATURES SPNEGO" 3485fi 3486 3487if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \ 3488 \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then 3489 SUPPORT_FEATURES="$SUPPORT_FEATURES Kerberos" 3490fi 3491 3492if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1"; then 3493 if test "x$OPENSSL_ENABLED" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \ 3494 -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \ 3495 -o "x$DARWINSSL_ENABLED" = "x1"; then 3496 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM" 3497 3498 if test "x$CURL_DISABLE_HTTP" != "x1" -a \ 3499 "x$NTLM_WB_ENABLED" = "x1"; then 3500 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB" 3501 fi 3502 fi 3503fi 3504 3505if test "x$USE_TLS_SRP" = "x1"; then 3506 SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP" 3507fi 3508 3509if test "x$USE_NGHTTP2" = "x1"; then 3510 SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2" 3511fi 3512 3513AC_SUBST(SUPPORT_FEATURES) 3514 3515dnl For supported protocols in pkg-config file 3516if test "x$CURL_DISABLE_HTTP" != "x1"; then 3517 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP" 3518 if test "x$SSL_ENABLED" = "x1"; then 3519 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS" 3520 fi 3521fi 3522if test "x$CURL_DISABLE_FTP" != "x1"; then 3523 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP" 3524 if test "x$SSL_ENABLED" = "x1"; then 3525 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS" 3526 fi 3527fi 3528if test "x$CURL_DISABLE_FILE" != "x1"; then 3529 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE" 3530fi 3531if test "x$CURL_DISABLE_TELNET" != "x1"; then 3532 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET" 3533fi 3534if test "x$CURL_DISABLE_LDAP" != "x1"; then 3535 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP" 3536 if test "x$CURL_DISABLE_LDAPS" != "x1"; then 3537 if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") || 3538 (test "x$USE_OPENLDAP" != "x1" && test "x$HAVE_LDAP_SSL" = "x1"); then 3539 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS" 3540 fi 3541 fi 3542fi 3543if test "x$CURL_DISABLE_DICT" != "x1"; then 3544 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT" 3545fi 3546if test "x$CURL_DISABLE_TFTP" != "x1"; then 3547 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP" 3548fi 3549if test "x$CURL_DISABLE_GOPHER" != "x1"; then 3550 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER" 3551fi 3552if test "x$CURL_DISABLE_POP3" != "x1"; then 3553 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3" 3554 if test "x$SSL_ENABLED" = "x1"; then 3555 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S" 3556 fi 3557fi 3558if test "x$CURL_DISABLE_IMAP" != "x1"; then 3559 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP" 3560 if test "x$SSL_ENABLED" = "x1"; then 3561 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS" 3562 fi 3563fi 3564if test "x$CURL_DISABLE_SMB" != "x1" \ 3565 -a "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" \ 3566 -a \( "x$OPENSSL_ENABLED" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \ 3567 -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \ 3568 -o "x$DARWINSSL_ENABLED" = "x1" \); then 3569 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB" 3570 if test "x$SSL_ENABLED" = "x1"; then 3571 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMBS" 3572 fi 3573fi 3574if test "x$CURL_DISABLE_SMTP" != "x1"; then 3575 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP" 3576 if test "x$SSL_ENABLED" = "x1"; then 3577 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS" 3578 fi 3579fi 3580if test "x$USE_LIBSSH2" = "x1"; then 3581 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP" 3582 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP" 3583fi 3584if test "x$CURL_DISABLE_RTSP" != "x1"; then 3585 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP" 3586fi 3587if test "x$USE_LIBRTMP" = "x1"; then 3588 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP" 3589fi 3590 3591dnl replace spaces with newlines 3592dnl sort the lines 3593dnl replace the newlines back to spaces 3594SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '` 3595 3596AC_SUBST(SUPPORT_PROTOCOLS) 3597 3598dnl squeeze whitespace out of some variables 3599 3600squeeze CFLAGS 3601squeeze CPPFLAGS 3602squeeze DEFS 3603squeeze LDFLAGS 3604squeeze LIBS 3605 3606squeeze LIBCURL_LIBS 3607squeeze CURL_NETWORK_LIBS 3608squeeze CURL_NETWORK_AND_TIME_LIBS 3609 3610squeeze SUPPORT_FEATURES 3611squeeze SUPPORT_PROTOCOLS 3612 3613XC_CHECK_BUILD_FLAGS 3614 3615if test "x$want_curldebug_assumed" = "xyes" && 3616 test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then 3617 ac_configure_args="$ac_configure_args --enable-curldebug" 3618fi 3619 3620AC_CONFIG_FILES([Makefile \ 3621 docs/Makefile \ 3622 docs/examples/Makefile \ 3623 docs/libcurl/Makefile \ 3624 docs/libcurl/opts/Makefile \ 3625 include/Makefile \ 3626 include/curl/Makefile \ 3627 src/Makefile \ 3628 lib/Makefile \ 3629 lib/libcurl.vers \ 3630 tests/Makefile \ 3631 tests/certs/Makefile \ 3632 tests/certs/scripts/Makefile \ 3633 tests/data/Makefile \ 3634 tests/server/Makefile \ 3635 tests/libtest/Makefile \ 3636 tests/unit/Makefile \ 3637 packages/Makefile \ 3638 packages/Win32/Makefile \ 3639 packages/Win32/cygwin/Makefile \ 3640 packages/Linux/Makefile \ 3641 packages/Linux/RPM/Makefile \ 3642 packages/Linux/RPM/curl.spec \ 3643 packages/Linux/RPM/curl-ssl.spec \ 3644 packages/Solaris/Makefile \ 3645 packages/EPM/curl.list \ 3646 packages/EPM/Makefile \ 3647 packages/vms/Makefile \ 3648 packages/AIX/Makefile \ 3649 packages/AIX/RPM/Makefile \ 3650 packages/AIX/RPM/curl.spec \ 3651 curl-config \ 3652 libcurl.pc 3653]) 3654AC_OUTPUT 3655 3656CURL_GENERATE_CONFIGUREHELP_PM 3657 3658XC_AMEND_DISTCLEAN([lib src tests/unit tests/server tests/libtest docs/examples]) 3659 3660AC_MSG_NOTICE([Configured to build curl/libcurl: 3661 3662 curl version: ${CURLVERSION} 3663 Host setup: ${host} 3664 Install prefix: ${prefix} 3665 Compiler: ${CC} 3666 SSL support: ${curl_ssl_msg} 3667 SSH support: ${curl_ssh_msg} 3668 zlib support: ${curl_zlib_msg} 3669 GSS-API support: ${curl_gss_msg} 3670 TLS-SRP support: ${curl_tls_srp_msg} 3671 resolver: ${curl_res_msg} 3672 IPv6 support: ${curl_ipv6_msg} 3673 Unix sockets support: ${curl_unix_sockets_msg} 3674 IDN support: ${curl_idn_msg} 3675 Build libcurl: Shared=${enable_shared}, Static=${enable_static} 3676 Built-in manual: ${curl_manual_msg} 3677 --libcurl option: ${curl_libcurl_msg} 3678 Verbose errors: ${curl_verbose_msg} 3679 SSPI support: ${curl_sspi_msg} 3680 ca cert bundle: ${ca} 3681 ca cert path: ${capath} 3682 LDAP support: ${curl_ldap_msg} 3683 LDAPS support: ${curl_ldaps_msg} 3684 RTSP support: ${curl_rtsp_msg} 3685 RTMP support: ${curl_rtmp_msg} 3686 metalink support: ${curl_mtlnk_msg} 3687 HTTP2 support: ${curl_h2_msg} 3688 Protocols: ${SUPPORT_PROTOCOLS} 3689]) 3690 3691if test "x$soname_bump" = "xyes"; then 3692 3693cat <<EOM 3694 SONAME bump: yes - WARNING: this library will be built with the SONAME 3695 number bumped due to (a detected) ABI breakage. 3696 See lib/README.curl_off_t for details on this. 3697EOM 3698 3699fi 3700 3701