1 #***************************************************************************
3 # Project ___| | | | _ \| |
5 # | (__| |_| | _ <| |___
6 # \___|\___/|_| \_\_____|
8 # Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
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.
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.
18 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19 # KIND, either express or implied.
21 #***************************************************************************
22 dnl Process this file with autoconf to produce a configure script.
26 dnl We don't know the version number "statically" so we use a dash here
27 AC_INIT([curl], [-], [a suitable curl mailing list: http://curl.haxx.se/mail/])
30 CURL_OVERRIDE_AUTOCONF
32 dnl configure script copyright
33 AC_COPYRIGHT([Copyright (c) 1998 - 2012 Daniel Stenberg, <daniel@haxx.se>
34 This configure script may be copied, distributed and modified under the
35 terms of the curl license; see COPYING for more details])
37 AC_CONFIG_SRCDIR([lib/urldata.h])
38 AM_CONFIG_HEADER(lib/curl_config.h include/curl/curlbuild.h)
39 AC_CONFIG_MACRO_DIR([m4])
42 CURL_CHECK_OPTION_DEBUG
43 CURL_CHECK_OPTION_OPTIMIZE
44 CURL_CHECK_OPTION_WARNINGS
45 CURL_CHECK_OPTION_WERROR
46 CURL_CHECK_OPTION_CURLDEBUG
47 CURL_CHECK_OPTION_SYMBOL_HIDING
48 CURL_CHECK_OPTION_ARES
50 CURL_CHECK_PATH_SEPARATOR_REQUIRED
53 # save the configure arguments
55 CONFIGURE_OPTIONS="\"$ac_configure_args\""
56 AC_SUBST(CONFIGURE_OPTIONS)
59 if test X"$want_werror" = Xyes; then
60 CURL_CFLAG_EXTRAS="-Werror"
62 AC_SUBST(CURL_CFLAG_EXTRAS)
64 dnl SED is mandatory for configure process and libtool.
65 dnl Set it now, allowing it to be changed later.
66 if test -z "$SED"; then
67 dnl allow it to be overridden
68 AC_PATH_PROG([SED], [sed], [not_found],
69 [$PATH:/usr/bin:/usr/local/bin])
70 if test -z "$SED" || test "$SED" = "not_found"; then
71 AC_MSG_ERROR([sed not found in PATH. Cannot continue without sed.])
76 dnl GREP is mandatory for configure process and libtool.
77 dnl Set it now, allowing it to be changed later.
78 if test -z "$GREP"; then
79 dnl allow it to be overridden
80 AC_PATH_PROG([GREP], [grep], [not_found],
81 [$PATH:/usr/bin:/usr/local/bin])
82 if test -z "$GREP" || test "$GREP" = "not_found"; then
83 AC_MSG_ERROR([grep not found in PATH. Cannot continue without grep.])
88 dnl EGREP is mandatory for configure process and libtool.
89 dnl Set it now, allowing it to be changed later.
90 if test -z "$EGREP"; then
91 dnl allow it to be overridden
92 if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
93 AC_MSG_CHECKING([for egrep])
95 AC_MSG_RESULT([$EGREP])
97 AC_PATH_PROG([EGREP], [egrep], [not_found],
98 [$PATH:/usr/bin:/usr/local/bin])
101 if test -z "$EGREP" || test "$EGREP" = "not_found"; then
102 AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.])
106 dnl AR is mandatory for configure process and libtool.
107 dnl This is target dependent, so check it as a tool.
108 if test -z "$AR"; then
109 dnl allow it to be overridden
110 AC_PATH_TOOL([AR], [ar], [not_found],
111 [$PATH:/usr/bin:/usr/local/bin])
112 if test -z "$AR" || test "$AR" = "not_found"; then
113 AC_MSG_ERROR([ar not found in PATH. Cannot continue without ar.])
120 dnl Remove non-configure distributed curlbuild.h
121 if test -f ${srcdir}/include/curl/curlbuild.h; then
122 rm -f ${srcdir}/include/curl/curlbuild.h
125 dnl figure out the libcurl version
126 CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curlver.h`
128 AC_MSG_CHECKING([curl version])
129 AC_MSG_RESULT($CURLVERSION)
131 AC_SUBST(CURLVERSION)
134 dnl we extract the numerical version for curl-config only
135 VERSIONNUM=`$SED -ne 's/^#define LIBCURL_VERSION_NUM 0x\(.*\)/\1/p' ${srcdir}/include/curl/curlver.h`
138 dnl Solaris pkgadd support definitions
139 PKGADD_PKG="HAXXcurl"
140 PKGADD_NAME="cURL - a client that groks URLs"
141 PKGADD_VENDOR="curl.haxx.se"
143 AC_SUBST(PKGADD_NAME)
144 AC_SUBST(PKGADD_VENDOR)
147 dnl initialize all the info variables
148 curl_ssl_msg="no (--with-{ssl,gnutls,nss,polarssl,cyassl,axtls,winssl} )"
149 curl_ssh_msg="no (--with-libssh2)"
150 curl_zlib_msg="no (--with-zlib)"
151 curl_krb4_msg="no (--with-krb4*)"
152 curl_gss_msg="no (--with-gssapi)"
153 curl_spnego_msg="no (--with-spnego)"
154 curl_tls_srp_msg="no (--enable-tls-srp)"
155 curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
156 curl_ipv6_msg="no (--enable-ipv6)"
157 curl_idn_msg="no (--with-{libidn,winidn})"
158 curl_manual_msg="no (--enable-manual)"
159 curl_libcurl_msg="enabled (--disable-libcurl-option)"
160 curl_verbose_msg="enabled (--disable-verbose)"
161 curl_sspi_msg="no (--enable-sspi)"
162 curl_ldap_msg="no (--enable-ldap / --with-ldap-lib / --with-lber-lib)"
163 curl_ldaps_msg="no (--enable-ldaps)"
164 curl_rtsp_msg="no (--enable-rtsp)"
165 curl_rtmp_msg="no (--with-librtmp)"
166 curl_mtlnk_msg="no (--with-libmetalink)"
168 init_ssl_msg=${curl_ssl_msg}
171 dnl LIBS should only specify libraries
174 for word1 in $LIBS; do
180 tst_bad_libspec="yes"
184 if test "$tst_bad_libspec" = "yes"; then
185 AC_MSG_ERROR([linker flags present in LIBS must be specified via LDFLAGS.])
189 dnl LDFLAGS should only specify linker flags
192 for word1 in $LDFLAGS; do
195 tst_bad_libspec="yes"
199 if test "$tst_bad_libspec" = "yes"; then
200 AC_MSG_ERROR([libraries present in LDFLAGS must be specified via LIBS.])
204 dnl Save some initial values the user might have provided
206 INITIAL_LDFLAGS=$LDFLAGS
210 dnl Detect the canonical host and target build environment
214 dnl Get system canonical name
215 AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
217 dnl Checks for programs.
220 dnl Our curl_off_t internal and external configure settings
221 CURL_CONFIGURE_CURL_OFF_T
223 dnl This defines _ALL_SOURCE for AIX
224 CURL_CHECK_AIX_ALL_SOURCE
226 dnl Our configure and build reentrant settings
227 CURL_CONFIGURE_THREAD_SAFE
228 CURL_CONFIGURE_REENTRANT
230 dnl check for how to do large files
233 dnl support building of Windows DLLs
236 dnl force libtool to build static libraries with PIC on AMD64-Linux & FreeBSD
237 AC_MSG_CHECKING([if arch-OS host is AMD64-Linux/FreeBSD (to build static libraries with PIC)])
239 x86_64*linux*|amd64*freebsd*|ia64*freebsd*)
248 AC_MSG_CHECKING([if compiler is icc (to build with PIC)])
262 AC_MSG_CHECKING([if we need -mimpure-text])
266 if test "$GCC" = "yes"; then
273 AC_MSG_RESULT($mimpure)
274 AM_CONDITIONAL(MIMPURE, test x$mimpure = xyes)
276 AC_MSG_CHECKING([if we need BUILDING_LIBCURL])
277 use_cppflag_building_libcurl="no"
278 use_cppflag_curl_staticlib="no"
279 CPPFLAG_CURL_STATICLIB=""
283 use_cppflag_building_libcurl="yes"
284 AC_MSG_CHECKING([if we need CURL_STATICLIB])
285 if test "X$enable_shared" = "Xno"
288 use_cppflag_curl_staticlib="yes"
289 CPPFLAG_CURL_STATICLIB="-DCURL_STATICLIB"
298 AM_CONDITIONAL(USE_CPPFLAG_BUILDING_LIBCURL, test x$use_cppflag_building_libcurl = xyes)
299 AM_CONDITIONAL(USE_CPPFLAG_CURL_STATICLIB, test x$use_cppflag_curl_staticlib = xyes)
300 AC_SUBST(CPPFLAG_CURL_STATICLIB)
302 # Determine whether all dependent libraries must be specified when linking
303 if test "X$enable_shared" = "Xyes" -a "X$link_all_deplibs" = "Xno"
309 AC_SUBST(REQUIRE_LIB_DEPS)
310 AM_CONDITIONAL(USE_EXPLICIT_LIB_DEPS, test x$REQUIRE_LIB_DEPS = xyes)
312 dnl The install stuff has already been taken care of by the automake stuff
316 dnl check if there's a way to force code inline
319 dnl **********************************************************************
320 dnl platform/compiler/architecture specific checks/flags
321 dnl **********************************************************************
324 CURL_SET_COMPILER_BASIC_OPTS
325 CURL_SET_COMPILER_DEBUG_OPTS
326 CURL_SET_COMPILER_OPTIMIZE_OPTS
327 CURL_SET_COMPILER_WARNING_OPTS
329 if test "$compiler_id" = "INTEL_UNIX_C"; then
331 if test "$compiler_num" -ge "1000"; then
332 dnl icc 10.X or later
333 CFLAGS="$CFLAGS -shared-intel"
334 elif test "$compiler_num" -ge "900"; then
336 CFLAGS="$CFLAGS -i-dynamic"
341 CURL_CHECK_COMPILER_HALT_ON_ERROR
342 CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
343 CURL_CHECK_COMPILER_SYMBOL_HIDING
345 CURL_CHECK_NO_UNDEFINED
346 AM_CONDITIONAL(NO_UNDEFINED, test x$need_no_undefined = xyes)
349 AM_CONDITIONAL(CURLDEBUG, test x$want_curldebug = xyes)
351 supports_unittests=yes
352 # cross-compilation of unit tests static library/programs fails when
353 # libcurl shared library is built. This might be due to a libtool or
354 # automake issue. In this case we disable unit tests.
355 if test "x$cross_compiling" != "xno" &&
356 test "x$enable_shared" != "xno"; then
357 supports_unittests=no
360 # IRIX 6.5.24 gcc 3.3 autobuilds fail unittests library compilation due to
361 # a problem related with OpenSSL headers and library versions not matching.
362 # Disable unit tests while time to further investigate this is found.
365 if test "$compiler_id" = "GNU_C"; then
366 supports_unittests=no
371 # All AIX autobuilds fails unit tests linking against unittests library
372 # due to unittests library being built with no symbols or members. Libtool ?
373 # Disable unit tests while time to further investigate this is found.
376 supports_unittests=no
380 dnl Build unit tests when option --enable-debug is given.
381 if test "x$want_debug" = "xyes" &&
382 test "x$supports_unittests" = "xyes"; then
387 AM_CONDITIONAL(BUILD_UNITTESTS, test x$want_unittests = xyes)
389 dnl **********************************************************************
390 dnl Compilation based checks should not be done before this point.
391 dnl **********************************************************************
393 dnl **********************************************************************
394 dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
395 dnl and ws2tcpip.h take precedence over any other further checks which
396 dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
397 dnl this specific header files. And do them before its results are used.
398 dnl **********************************************************************
400 CURL_CHECK_HEADER_WINDOWS
401 CURL_CHECK_NATIVE_WINDOWS
402 case X-"$ac_cv_native_windows" in
404 CURL_CHECK_HEADER_WINSOCK
405 CURL_CHECK_HEADER_WINSOCK2
406 CURL_CHECK_HEADER_WS2TCPIP
407 CURL_CHECK_HEADER_WINLDAP
408 CURL_CHECK_HEADER_WINBER
411 ac_cv_header_winsock_h="no"
412 ac_cv_header_winsock2_h="no"
413 ac_cv_header_ws2tcpip_h="no"
414 ac_cv_header_winldap_h="no"
415 ac_cv_header_winber_h="no"
418 CURL_CHECK_WIN32_LARGEFILE
420 dnl ************************************************************
421 dnl switch off particular protocols
423 AC_MSG_CHECKING([whether to support http])
425 AC_HELP_STRING([--enable-http],[Enable HTTP support])
426 AC_HELP_STRING([--disable-http],[Disable HTTP support]),
427 [ case "$enableval" in
430 AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP])
431 AC_MSG_WARN([disable HTTP disables FTP over proxy and RTSP])
432 AC_SUBST(CURL_DISABLE_HTTP, [1])
433 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
434 AC_SUBST(CURL_DISABLE_RTSP, [1])
436 *) AC_MSG_RESULT(yes)
441 AC_MSG_CHECKING([whether to support ftp])
443 AC_HELP_STRING([--enable-ftp],[Enable FTP support])
444 AC_HELP_STRING([--disable-ftp],[Disable FTP support]),
445 [ case "$enableval" in
448 AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP])
449 AC_SUBST(CURL_DISABLE_FTP, [1])
451 *) AC_MSG_RESULT(yes)
456 AC_MSG_CHECKING([whether to support file])
458 AC_HELP_STRING([--enable-file],[Enable FILE support])
459 AC_HELP_STRING([--disable-file],[Disable FILE support]),
460 [ case "$enableval" in
463 AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE])
464 AC_SUBST(CURL_DISABLE_FILE, [1])
466 *) AC_MSG_RESULT(yes)
471 AC_MSG_CHECKING([whether to support ldap])
473 AC_HELP_STRING([--enable-ldap],[Enable LDAP support])
474 AC_HELP_STRING([--disable-ldap],[Disable LDAP support]),
475 [ case "$enableval" in
478 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
479 AC_SUBST(CURL_DISABLE_LDAP, [1])
487 AC_MSG_CHECKING([whether to support ldaps])
489 AC_HELP_STRING([--enable-ldaps],[Enable LDAPS support])
490 AC_HELP_STRING([--disable-ldaps],[Disable LDAPS support]),
491 [ case "$enableval" in
494 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
495 AC_SUBST(CURL_DISABLE_LDAPS, [1])
497 *) if test "x$CURL_DISABLE_LDAP" = "x1" ; then
498 AC_MSG_RESULT(LDAP needs to be enabled to support LDAPS)
499 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
500 AC_SUBST(CURL_DISABLE_LDAPS, [1])
503 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
504 AC_SUBST(HAVE_LDAP_SSL, [1])
508 if test "x$CURL_DISABLE_LDAP" = "x1" ; then
510 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
511 AC_SUBST(CURL_DISABLE_LDAPS, [1])
514 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
515 AC_SUBST(HAVE_LDAP_SSL, [1])
519 AC_MSG_CHECKING([whether to support rtsp])
521 AC_HELP_STRING([--enable-rtsp],[Enable RTSP support])
522 AC_HELP_STRING([--disable-rtsp],[Disable RTSP support]),
523 [ case "$enableval" in
526 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
527 AC_SUBST(CURL_DISABLE_RTSP, [1])
529 *) if test x$CURL_DISABLE_HTTP = x1 ; then
530 AC_MSG_ERROR(HTTP support needs to be enabled in order to enable RTSP support!)
533 curl_rtsp_msg="enabled"
537 if test "x$CURL_DISABLE_HTTP" != "x1"; then
539 curl_rtsp_msg="enabled"
545 AC_MSG_CHECKING([whether to support proxies])
547 AC_HELP_STRING([--enable-proxy],[Enable proxy support])
548 AC_HELP_STRING([--disable-proxy],[Disable proxy support]),
549 [ case "$enableval" in
552 AC_DEFINE(CURL_DISABLE_PROXY, 1, [to disable proxies])
553 AC_SUBST(CURL_DISABLE_PROXY, [1])
555 *) AC_MSG_RESULT(yes)
561 AC_MSG_CHECKING([whether to support dict])
563 AC_HELP_STRING([--enable-dict],[Enable DICT support])
564 AC_HELP_STRING([--disable-dict],[Disable DICT support]),
565 [ case "$enableval" in
568 AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT])
569 AC_SUBST(CURL_DISABLE_DICT, [1])
571 *) AC_MSG_RESULT(yes)
576 AC_MSG_CHECKING([whether to support telnet])
577 AC_ARG_ENABLE(telnet,
578 AC_HELP_STRING([--enable-telnet],[Enable TELNET support])
579 AC_HELP_STRING([--disable-telnet],[Disable TELNET support]),
580 [ case "$enableval" in
583 AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
584 AC_SUBST(CURL_DISABLE_TELNET, [1])
586 *) AC_MSG_RESULT(yes)
591 AC_MSG_CHECKING([whether to support tftp])
593 AC_HELP_STRING([--enable-tftp],[Enable TFTP support])
594 AC_HELP_STRING([--disable-tftp],[Disable TFTP support]),
595 [ case "$enableval" in
598 AC_DEFINE(CURL_DISABLE_TFTP, 1, [to disable TFTP])
599 AC_SUBST(CURL_DISABLE_TFTP, [1])
601 *) AC_MSG_RESULT(yes)
607 AC_MSG_CHECKING([whether to support pop3])
609 AC_HELP_STRING([--enable-pop3],[Enable POP3 support])
610 AC_HELP_STRING([--disable-pop3],[Disable POP3 support]),
611 [ case "$enableval" in
614 AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3])
615 AC_SUBST(CURL_DISABLE_POP3, [1])
617 *) AC_MSG_RESULT(yes)
624 AC_MSG_CHECKING([whether to support imap])
626 AC_HELP_STRING([--enable-imap],[Enable IMAP support])
627 AC_HELP_STRING([--disable-imap],[Disable IMAP support]),
628 [ case "$enableval" in
631 AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP])
632 AC_SUBST(CURL_DISABLE_IMAP, [1])
634 *) AC_MSG_RESULT(yes)
641 AC_MSG_CHECKING([whether to support smtp])
643 AC_HELP_STRING([--enable-smtp],[Enable SMTP support])
644 AC_HELP_STRING([--disable-smtp],[Disable SMTP support]),
645 [ case "$enableval" in
648 AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP])
649 AC_SUBST(CURL_DISABLE_SMTP, [1])
651 *) AC_MSG_RESULT(yes)
657 AC_MSG_CHECKING([whether to support gopher])
658 AC_ARG_ENABLE(gopher,
659 AC_HELP_STRING([--enable-gopher],[Enable Gopher support])
660 AC_HELP_STRING([--disable-gopher],[Disable Gopher support]),
661 [ case "$enableval" in
664 AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable Gopher])
665 AC_SUBST(CURL_DISABLE_GOPHER, [1])
667 *) AC_MSG_RESULT(yes)
674 dnl **********************************************************************
675 dnl Check for built-in manual
676 dnl **********************************************************************
678 AC_MSG_CHECKING([whether to provide built-in manual])
679 AC_ARG_ENABLE(manual,
680 AC_HELP_STRING([--enable-manual],[Enable built-in manual])
681 AC_HELP_STRING([--disable-manual],[Disable built-in manual]),
682 [ case "$enableval" in
686 *) AC_MSG_RESULT(yes)
693 dnl The actual use of the USE_MANUAL variable is done much later in this
694 dnl script to allow other actions to disable it as well.
696 dnl ************************************************************
697 dnl disable C code generation support
699 AC_MSG_CHECKING([whether to enable generation of C code])
700 AC_ARG_ENABLE(libcurl_option,
701 AC_HELP_STRING([--enable-libcurl-option],[Enable --libcurl C code generation support])
702 AC_HELP_STRING([--disable-libcurl-option],[Disable --libcurl C code generation support]),
703 [ case "$enableval" in
706 AC_DEFINE(CURL_DISABLE_LIBCURL_OPTION, 1, [to disable --libcurl C code generation option])
707 curl_libcurl_msg="no"
709 *) AC_MSG_RESULT(yes)
715 dnl **********************************************************************
716 dnl Checks for libraries.
717 dnl **********************************************************************
719 AC_MSG_CHECKING([whether to use libgcc])
720 AC_ARG_ENABLE(libgcc,
721 AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
722 [ case "$enableval" in
735 dnl gethostbyname without lib or in the nsl lib?
736 AC_CHECK_FUNC(gethostbyname,
737 [HAVE_GETHOSTBYNAME="1"
739 [ AC_CHECK_LIB(nsl, gethostbyname,
740 [HAVE_GETHOSTBYNAME="1"
745 if test "$HAVE_GETHOSTBYNAME" != "1"
747 dnl gethostbyname in the socket lib?
748 AC_CHECK_LIB(socket, gethostbyname,
749 [HAVE_GETHOSTBYNAME="1"
750 LIBS="-lsocket $LIBS"
754 if test "$HAVE_GETHOSTBYNAME" != "1"
756 dnl gethostbyname in the watt lib?
757 AC_CHECK_LIB(watt, gethostbyname,
758 [HAVE_GETHOSTBYNAME="1"
759 CPPFLAGS="-I/dev/env/WATT_ROOT/inc"
760 LDFLAGS="-L/dev/env/WATT_ROOT/lib"
765 dnl At least one system has been identified to require BOTH nsl and socket
766 dnl libs at the same time to link properly.
767 if test "$HAVE_GETHOSTBYNAME" != "1"
769 AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs])
770 my_ac_save_LIBS=$LIBS
771 LIBS="-lnsl -lsocket $LIBS"
779 HAVE_GETHOSTBYNAME="1"
782 LIBS=$my_ac_save_LIBS
786 if test "$HAVE_GETHOSTBYNAME" != "1"
788 dnl This is for winsock systems
789 if test "$ac_cv_header_windows_h" = "yes"; then
790 if test "$ac_cv_header_winsock_h" = "yes"; then
793 winsock_LIB="-lwinsock"
796 winsock_LIB="-lwsock32"
800 if test "$ac_cv_header_winsock2_h" = "yes"; then
801 winsock_LIB="-lws2_32"
803 if test ! -z "$winsock_LIB"; then
804 my_ac_save_LIBS=$LIBS
805 LIBS="$winsock_LIB $LIBS"
806 AC_MSG_CHECKING([for gethostbyname in $winsock_LIB])
809 #ifdef HAVE_WINDOWS_H
810 #ifndef WIN32_LEAN_AND_MEAN
811 #define WIN32_LEAN_AND_MEAN
814 #ifdef HAVE_WINSOCK2_H
815 #include <winsock2.h>
817 #ifdef HAVE_WINSOCK_H
823 gethostbyname("www.dummysite.com");
827 HAVE_GETHOSTBYNAME="1"
831 LIBS=$my_ac_save_LIBS
837 if test "$HAVE_GETHOSTBYNAME" != "1"
839 dnl This is for Minix 3.1
840 AC_MSG_CHECKING([for gethostbyname for Minix 3])
843 /* Older Minix versions may need <net/gen/netdb.h> here instead */
846 gethostbyname("www.dummysite.com");
850 HAVE_GETHOSTBYNAME="1"
856 if test "$HAVE_GETHOSTBYNAME" != "1"
858 dnl This is for eCos with a stubbed DNS implementation
859 AC_MSG_CHECKING([for gethostbyname for eCos])
865 gethostbyname("www.dummysite.com");
869 HAVE_GETHOSTBYNAME="1"
875 if test "$HAVE_GETHOSTBYNAME" != "1"
877 dnl gethostbyname in the network lib - for Haiku OS
878 AC_CHECK_LIB(network, gethostbyname,
879 [HAVE_GETHOSTBYNAME="1"
880 LIBS="-lnetwork $LIBS"
884 if test "$HAVE_GETHOSTBYNAME" != "1"
886 dnl gethostbyname in the net lib - for BeOS
887 AC_CHECK_LIB(net, gethostbyname,
888 [HAVE_GETHOSTBYNAME="1"
894 if test "$HAVE_GETHOSTBYNAME" != "1"; then
895 AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
899 AC_CHECK_FUNC(strcasecmp, , [ AC_CHECK_LIB(resolve, strcasecmp) ])
901 if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
902 AC_CHECK_LIB(resolve, strcasecmp,
903 [LIBS="-lresolve $LIBS"],
907 ac_cv_func_strcasecmp="no"
909 CURL_CHECK_LIBS_CONNECT
911 CURL_NETWORK_LIBS=$LIBS
913 dnl **********************************************************************
914 dnl In case that function clock_gettime with monotonic timer is available,
915 dnl check for additional required libraries.
916 dnl **********************************************************************
917 CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
919 dnl **********************************************************************
920 dnl The preceding library checks are all potentially useful for test
921 dnl servers and libtest cases which require networking and clock_gettime
922 dnl support. Save the list of required libraries at this point for use
923 dnl while linking those test servers and programs.
924 dnl **********************************************************************
925 CURL_NETWORK_AND_TIME_LIBS=$LIBS
927 dnl **********************************************************************
928 dnl Check for the presence of ZLIB libraries and headers
929 dnl **********************************************************************
931 dnl Check for & handle argument to --with-zlib.
933 clean_CPPFLAGS=$CPPFLAGS
934 clean_LDFLAGS=$LDFLAGS
938 AC_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
939 AC_HELP_STRING([--without-zlib],[disable use of zlib]),
940 [OPT_ZLIB="$withval"])
942 if test "$OPT_ZLIB" = "no" ; then
943 AC_MSG_WARN([zlib disabled])
945 if test "$OPT_ZLIB" = "yes" ; then
949 if test -z "$OPT_ZLIB" ; then
950 dnl check for the lib first without setting any new path, since many
951 dnl people have it in the default path
953 AC_CHECK_LIB(z, inflateEnd,
954 dnl libz found, set the variable
957 dnl if no lib found, try /usr/local
958 [OPT_ZLIB="/usr/local"])
962 dnl Add a nonempty path to the compiler flags
963 if test -n "$OPT_ZLIB"; then
964 CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include"
965 LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff"
968 AC_CHECK_HEADER(zlib.h,
972 dnl if the lib wasn't found already, try again with the new paths
973 if test "$HAVE_LIBZ" != "1"; then
974 AC_CHECK_LIB(z, gzread,
976 dnl the lib was found!
980 [ CPPFLAGS=$clean_CPPFLAGS
981 LDFLAGS=$clean_LDFLAGS])
985 dnl zlib.h was not found, restore the flags
986 CPPFLAGS=$clean_CPPFLAGS
987 LDFLAGS=$clean_LDFLAGS]
990 if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1"
992 AC_MSG_WARN([configure found only the libz lib, not the header file!])
994 CPPFLAGS=$clean_CPPFLAGS
995 LDFLAGS=$clean_LDFLAGS
997 elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1"
999 AC_MSG_WARN([configure found only the libz header file, not the lib!])
1000 CPPFLAGS=$clean_CPPFLAGS
1001 LDFLAGS=$clean_LDFLAGS
1003 elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1"
1005 dnl both header and lib were found!
1007 AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file])
1008 AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available])
1011 LIBS="-lz $clean_LIBS"
1013 dnl replace 'HAVE_LIBZ' in the automake makefile.ams
1015 AC_MSG_NOTICE([found both libz and libz.h header])
1016 curl_zlib_msg="enabled"
1020 dnl set variable for use in automakefile(s)
1021 AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1)
1024 dnl **********************************************************************
1026 dnl **********************************************************************
1029 AC_ARG_WITH(ldap-lib,
1030 AC_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]),
1031 [LDAPLIBNAME="$withval"])
1034 AC_ARG_WITH(lber-lib,
1035 AC_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]),
1036 [LBERLIBNAME="$withval"])
1038 if test x$CURL_DISABLE_LDAP != x1 ; then
1040 CURL_CHECK_HEADER_LBER
1041 CURL_CHECK_HEADER_LDAP
1042 CURL_CHECK_HEADER_LDAPSSL
1043 CURL_CHECK_HEADER_LDAP_SSL
1045 if test -z "$LDAPLIBNAME" ; then
1046 if test "$ac_cv_native_windows" = "yes"; then
1047 dnl Windows uses a single and unique LDAP library name
1048 LDAPLIBNAME="wldap32"
1053 if test "$LDAPLIBNAME" ; then
1054 AC_CHECK_LIB("$LDAPLIBNAME", ldap_init,, [
1055 AC_MSG_WARN(["$LDAPLIBNAME" is not an LDAP library: LDAP disabled])
1056 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1057 AC_SUBST(CURL_DISABLE_LDAP, [1])
1058 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1059 AC_SUBST(CURL_DISABLE_LDAPS, [1])])
1061 dnl Try to find the right ldap libraries for this system
1062 CURL_CHECK_LIBS_LDAP
1063 case X-"$curl_cv_ldap_LIBS" in
1065 AC_MSG_WARN([Cannot find libraries for LDAP support: LDAP disabled])
1066 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1067 AC_SUBST(CURL_DISABLE_LDAP, [1])
1068 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1069 AC_SUBST(CURL_DISABLE_LDAPS, [1])
1075 if test x$CURL_DISABLE_LDAP != x1 ; then
1077 if test "$LBERLIBNAME" ; then
1078 dnl If name is "no" then don't define this library at all
1079 dnl (it's only needed if libldap.so's dependencies are broken).
1080 if test "$LBERLIBNAME" != "no" ; then
1081 AC_CHECK_LIB("$LBERLIBNAME", ber_free,, [
1082 AC_MSG_WARN(["$LBERLIBNAME" is not an LBER library: LDAP disabled])
1083 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1084 AC_SUBST(CURL_DISABLE_LDAP, [1])
1085 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1086 AC_SUBST(CURL_DISABLE_LDAPS, [1])])
1091 if test x$CURL_DISABLE_LDAP != x1 ; then
1092 AC_CHECK_FUNCS([ldap_url_parse ldap_init_fd])
1094 if test "$LDAPLIBNAME" = "wldap32"; then
1095 curl_ldap_msg="enabled (winldap)"
1096 AC_DEFINE(CURL_LDAP_WIN, 1, [Use Windows LDAP implementation])
1098 curl_ldap_msg="enabled (OpenLDAP)"
1099 if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then
1100 AC_DEFINE(USE_OPENLDAP, 1, [Use OpenLDAP-specific code])
1101 AC_SUBST(USE_OPENLDAP, [1])
1106 if test x$CURL_DISABLE_LDAPS != x1 ; then
1107 curl_ldaps_msg="enabled"
1110 dnl **********************************************************************
1112 dnl **********************************************************************
1114 AC_MSG_CHECKING([whether to enable ipv6])
1116 AC_HELP_STRING([--enable-ipv6],[Enable ipv6 (with ipv4) support])
1117 AC_HELP_STRING([--disable-ipv6],[Disable ipv6 support]),
1118 [ case "$enableval" in
1123 *) AC_MSG_RESULT(yes)
1128 AC_TRY_RUN([ /* is AF_INET6 available? */
1129 #include <sys/types.h>
1130 #include <sys/socket.h>
1133 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1147 if test "$ipv6" = "yes"; then
1148 curl_ipv6_msg="enabled"
1151 # Check if struct sockaddr_in6 have sin6_scope_id member
1152 if test "$ipv6" = yes; then
1153 AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member])
1155 #include <sys/types.h>
1156 #include <netinet/in.h>] ,
1157 struct sockaddr_in6 s; s.sin6_scope_id = 0; , have_sin6_scope_id=yes)
1158 if test "$have_sin6_scope_id" = yes; then
1159 AC_MSG_RESULT([yes])
1160 AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member])
1166 dnl **********************************************************************
1167 dnl Check if the operating system allows programs to write to their own argv[]
1168 dnl **********************************************************************
1170 AC_MSG_CHECKING([if argv can be written to])
1173 int main(int argc, char ** argv) {
1175 return (argv[0][0] == ' ')?0:1;
1179 curl_cv_writable_argv=yes
1181 curl_cv_writable_argv=no
1183 curl_cv_writable_argv=cross
1185 case $curl_cv_writable_argv in
1187 AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv])
1195 AC_MSG_WARN([the previous check could not be made default was used])
1199 dnl **********************************************************************
1200 dnl Check for the presence of Kerberos4 libraries and headers
1201 dnl **********************************************************************
1203 AC_ARG_WITH(krb4-includes,
1204 AC_HELP_STRING([--with-krb4-includes=DIR],
1205 [Specify location of kerberos4 headers]),[
1206 CPPFLAGS="$CPPFLAGS -I$withval"
1211 AC_ARG_WITH(krb4-libs,
1212 AC_HELP_STRING([--with-krb4-libs=DIR],[Specify location of kerberos4 libs]),[
1213 LDFLAGS="$LDFLAGS -L$withval"
1220 AC_ARG_WITH(krb4,dnl
1221 AC_HELP_STRING([--with-krb4=DIR],[where to look for Kerberos4]),[
1223 if test X"$OPT_KRB4" != Xno; then
1225 if test X"$OPT_KRB4" != Xyes; then
1226 LDFLAGS="$LDFLAGS -L$OPT_KRB4/lib$libsuff"
1227 KRB4LIB="$OPT_KRB4/lib$libsuff"
1228 CPPFLAGS="$CPPFLAGS -I$OPT_KRB4/include"
1229 KRB4INC="$OPT_KRB4/include"
1234 AC_MSG_CHECKING([if Kerberos4 support is requested])
1236 if test "$want_krb4" = yes
1238 if test "$ipv6" = "yes"; then
1239 echo krb4 is not compatible with IPv6
1244 dnl Check for & handle argument to --with-krb4
1246 AC_MSG_CHECKING(where to look for Kerberos4)
1247 if test X"$OPT_KRB4" = Xyes
1249 AC_MSG_RESULT([defaults])
1251 AC_MSG_RESULT([libs in $KRB4LIB, headers in $KRB4INC])
1254 dnl Check for DES library
1255 AC_CHECK_LIB(des, des_pcbc_encrypt,
1257 AC_CHECK_HEADERS(des.h)
1260 AC_CHECK_FUNC(res_search, , [AC_CHECK_LIB(resolv, res_search)])
1262 dnl Check for the Kerberos4 library
1263 AC_CHECK_LIB(krb, krb_net_read,
1265 dnl Check for header files
1266 AC_CHECK_HEADERS(krb.h)
1268 dnl we found the required libraries, add to LIBS
1269 LIBS="-lkrb -lcom_err -ldes $LIBS"
1271 dnl Check for function krb_get_our_ip_for_realm
1272 dnl this is needed for NAT networks
1273 AC_CHECK_FUNCS(krb_get_our_ip_for_realm)
1276 AC_DEFINE(HAVE_KRB4, 1,
1277 [if you have the Kerberos4 libraries (including -ldes)])
1279 dnl substitute it too!
1281 AC_SUBST(KRB4_ENABLED)
1283 curl_krb4_msg="enabled"
1285 dnl the krb4 stuff needs a strlcpy()
1286 AC_CHECK_FUNCS(strlcpy)
1294 dnl **********************************************************************
1295 dnl Check for FBopenssl(SPNEGO) libraries
1296 dnl **********************************************************************
1299 AC_HELP_STRING([--with-spnego=DIR],
1300 [Specify location of SPNEGO library fbopenssl]), [
1301 SPNEGO_ROOT="$withval"
1302 if test x"$SPNEGO_ROOT" != xno; then
1307 AC_MSG_CHECKING([if SPNEGO support is requested])
1308 if test x"$want_spnego" = xyes; then
1310 if test X"$SPNEGO_ROOT" = Xyes; then
1311 AC_MSG_ERROR([FBOpenSSL libs and/or directories were not found where specified!])
1314 if test -z "$SPNEGO_LIB_DIR"; then
1315 LDFLAGS="$LDFLAGS -L$SPNEGO_ROOT -lfbopenssl"
1317 LDFLAGS="$LDFLAGS $SPNEGO_LIB_DIR"
1321 AC_DEFINE(HAVE_SPNEGO, 1,
1322 [Define this if you have the SPNEGO library fbopenssl])
1323 curl_spnego_msg="enabled"
1329 dnl **********************************************************************
1330 dnl Check for GSS-API libraries
1331 dnl **********************************************************************
1333 dnl check for gss stuff in the /usr as default
1336 AC_ARG_WITH(gssapi-includes,
1337 AC_HELP_STRING([--with-gssapi-includes=DIR],
1338 [Specify location of GSSAPI header]),
1339 [ GSSAPI_INCS="-I$withval"
1343 AC_ARG_WITH(gssapi-libs,
1344 AC_HELP_STRING([--with-gssapi-libs=DIR],
1345 [Specify location of GSSAPI libs]),
1346 [ GSSAPI_LIB_DIR="-L$withval"
1351 AC_HELP_STRING([--with-gssapi=DIR],
1352 [Where to look for GSSAPI]), [
1353 GSSAPI_ROOT="$withval"
1354 if test x"$GSSAPI_ROOT" != xno; then
1356 if test x"$GSSAPI_ROOT" = xyes; then
1357 dnl if yes, then use default root
1363 save_CPPFLAGS="$CPPFLAGS"
1364 AC_MSG_CHECKING([if GSSAPI support is requested])
1365 if test x"$want_gss" = xyes; then
1368 if test -z "$GSSAPI_INCS"; then
1369 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1370 GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
1371 elif test "$GSSAPI_ROOT" != "yes"; then
1372 GSSAPI_INCS="-I$GSSAPI_ROOT/include"
1376 CPPFLAGS="$CPPFLAGS $GSSAPI_INCS"
1378 AC_CHECK_HEADER(gss.h,
1380 dnl found in the given dirs
1381 AC_DEFINE(HAVE_GSSGNU, 1, [if you have the GNU gssapi libraries])
1385 dnl not found, check Heimdal or MIT
1386 AC_CHECK_HEADERS([gssapi/gssapi.h], [], [not_mit=1])
1388 [gssapi/gssapi_generic.h gssapi/gssapi_krb5.h],
1393 #ifdef HAVE_GSSAPI_GSSAPI_H
1394 #include <gssapi/gssapi.h>
1397 if test "x$not_mit" = "x1"; then
1398 dnl MIT not found, check for Heimdal
1399 AC_CHECK_HEADER(gssapi.h,
1402 AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have the Heimdal gssapi libraries])
1405 dnl no header found, disabling GSS
1407 AC_MSG_WARN(disabling GSSAPI since no header files was found)
1412 AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
1413 dnl check if we have a really old MIT kerberos (<= 1.2)
1414 AC_MSG_CHECKING([if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE])
1417 #include <gssapi/gssapi.h>
1418 #include <gssapi/gssapi_generic.h>
1419 #include <gssapi/gssapi_krb5.h>
1424 GSS_C_NT_HOSTBASED_SERVICE,
1428 AC_MSG_RESULT([yes])
1431 AC_DEFINE(HAVE_OLD_GSSMIT, 1,
1432 [if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE])
1440 if test x"$want_gss" = xyes; then
1441 AC_DEFINE(HAVE_GSSAPI, 1, [if you have the gssapi libraries])
1443 curl_gss_msg="enabled (MIT/Heimdal)"
1445 if test -n "$gnu_gss"; then
1446 curl_gss_msg="enabled (GNU GSS)"
1447 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1449 elif test -z "$GSSAPI_LIB_DIR"; then
1452 LIBS="-lgssapi_krb5 -lresolv $LIBS"
1455 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1456 dnl krb5-config doesn't have --libs-only-L or similar, put everything
1458 gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
1459 LIBS="$gss_libs $LIBS"
1460 elif test "$GSSAPI_ROOT" != "yes"; then
1461 LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
1462 LIBS="-lgssapi $LIBS"
1464 LIBS="-lgssapi $LIBS"
1469 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1470 LIBS="-lgssapi $LIBS"
1473 CPPFLAGS="$save_CPPFLAGS"
1476 dnl -------------------------------------------------
1477 dnl check winssl option before other SSL libraries
1478 dnl -------------------------------------------------
1481 AC_ARG_WITH(winssl,dnl
1482 AC_HELP_STRING([--with-winssl],[enable Windows native SSL/TLS])
1483 AC_HELP_STRING([--without-winssl], [disable Windows native SSL/TLS]),
1484 OPT_WINSSL=$withval)
1486 AC_MSG_CHECKING([whether to enable Windows native SSL/TLS (Windows native builds only)])
1487 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1488 if test "x$OPT_WINSSL" != "xno" &&
1489 test "x$ac_cv_native_windows" = "xyes"; then
1491 AC_DEFINE(USE_SCHANNEL, 1, [to enable Windows native SSL/TLS support])
1492 AC_SUBST(USE_SCHANNEL, [1])
1493 curl_ssl_msg="enabled (Windows-native)"
1495 # --with-winssl implies --enable-sspi
1496 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
1497 AC_SUBST(USE_WINDOWS_SSPI, [1])
1498 curl_sspi_msg="enabled"
1507 AC_ARG_WITH(darwinssl,dnl
1508 AC_HELP_STRING([--with-darwinssl],[enable iOS/Mac OS X native SSL/TLS])
1509 AC_HELP_STRING([--without-darwinssl], [disable iOS/Mac OS X native SSL/TLS]),
1510 OPT_DARWINSSL=$withval)
1512 AC_MSG_CHECKING([whether to enable iOS/Mac OS X native SSL/TLS])
1513 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1514 if test "x$OPT_DARWINSSL" != "xno" &&
1515 test -d "/System/Library/Frameworks/Security.framework"; then
1517 AC_DEFINE(USE_DARWINSSL, 1, [to enable iOS/Mac OS X native SSL/TLS support])
1518 AC_SUBST(USE_DARWINSSL, [1])
1519 curl_ssl_msg="enabled (iOS/Mac OS X-native)"
1521 LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Security"
1529 dnl **********************************************************************
1530 dnl Check for the presence of SSL libraries and headers
1531 dnl **********************************************************************
1533 dnl Default to compiler & linker defaults for SSL files & libraries.
1535 dnl Default to no CA bundle
1538 AC_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])
1539 AC_HELP_STRING([--without-ssl], [disable OpenSSL]),
1542 if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
1543 dnl backup the pre-ssl variables
1544 CLEANLDFLAGS="$LDFLAGS"
1545 CLEANCPPFLAGS="$CPPFLAGS"
1550 dnl --with-ssl (without path) used
1551 if test x$cross_compiling != xyes; then
1552 dnl only do pkg-config magic when not cross-compiling
1555 PREFIX_OPENSSL=/usr/local/ssl
1556 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1559 dnl no --with-ssl option given, just check default places
1560 if test x$cross_compiling != xyes; then
1561 dnl only do pkg-config magic when not cross-compiling
1567 dnl check the given --with-ssl spot
1569 PREFIX_OPENSSL=$OPT_SSL
1571 dnl Try pkg-config even when cross-compiling. Since we
1572 dnl specify PKG_CONFIG_LIBDIR we're only looking where
1573 dnl the user told us to look
1574 OPENSSL_PCDIR="$OPT_SSL/lib/pkgconfig"
1575 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$OPENSSL_PCDIR"])
1576 if test -f "$OPENSSL_PCDIR/openssl.pc"; then
1580 dnl in case pkg-config comes up empty, use what we got
1582 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1583 if test "$PREFIX_OPENSSL" != "/usr" ; then
1584 SSL_LDFLAGS="-L$LIB_OPENSSL"
1585 SSL_CPPFLAGS="-I$PREFIX_OPENSSL/include"
1587 SSL_CPPFLAGS="$SSL_CPPFLAGS -I$PREFIX_OPENSSL/include/openssl"
1591 if test "$PKGTEST" = "yes"; then
1593 CURL_CHECK_PKGCONFIG(openssl, [$OPENSSL_PCDIR])
1595 if test "$PKGCONFIG" != "no" ; then
1596 SSL_LIBS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1597 $PKGCONFIG --libs-only-l openssl 2>/dev/null`
1599 SSL_LDFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1600 $PKGCONFIG --libs-only-L openssl 2>/dev/null`
1602 SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1603 $PKGCONFIG --cflags-only-I openssl 2>/dev/null`
1605 AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"])
1606 AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"])
1607 AC_MSG_NOTICE([pkg-config: SSL_CPPFLAGS: "$SSL_CPPFLAGS"])
1609 LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/-L//g'`
1611 dnl use the values pkg-config reported. This is here
1612 dnl instead of below with CPPFLAGS and LDFLAGS because we only
1613 dnl learn about this via pkg-config. If we only have
1614 dnl the argument to --with-ssl we don't know what
1615 dnl additional libs may be necessary. Hope that we
1617 LIBS="$SSL_LIBS $LIBS"
1621 dnl finally, set flags to use SSL
1622 CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
1623 LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
1625 dnl This is for Msys/Mingw
1627 *-*-msys* | *-*-mingw*)
1628 AC_MSG_CHECKING([for gdi32])
1629 my_ac_save_LIBS=$LIBS
1630 LIBS="-lgdi32 $LIBS"
1631 AC_TRY_LINK([#include <windef.h>
1632 #include <wingdi.h>],
1635 AC_MSG_RESULT([yes])],
1636 [ dnl failed, restore LIBS
1637 LIBS=$my_ac_save_LIBS
1643 AC_CHECK_LIB(crypto, CRYPTO_lock,[
1645 LIBS="-lcrypto $LIBS"
1647 LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL"
1648 CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include"
1649 AC_CHECK_LIB(crypto, CRYPTO_add_lock,[
1651 LIBS="-lcrypto $LIBS"], [
1652 LDFLAGS="$CLEANLDFLAGS"
1653 CPPFLAGS="$CLEANCPPFLAGS"
1659 if test X"$HAVECRYPTO" = X"yes"; then
1660 dnl This is only reasonable to do if crypto actually is there: check for
1661 dnl SSL libs NOTE: it is important to do this AFTER the crypto lib
1663 AC_CHECK_LIB(ssl, SSL_connect)
1665 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1666 dnl we didn't find the SSL lib, try the RSAglue/rsaref stuff
1667 AC_MSG_CHECKING(for ssl with RSAglue/rsaref libs in use);
1669 LIBS="-lRSAglue -lrsaref $LIBS"
1670 AC_CHECK_LIB(ssl, SSL_connect)
1671 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1672 dnl still no SSL_connect
1681 dnl Have the libraries--check for SSLeay/OpenSSL headers
1682 AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
1683 openssl/pem.h openssl/ssl.h openssl/err.h,
1684 curl_ssl_msg="enabled (OpenSSL)"
1686 AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]))
1688 if test $ac_cv_header_openssl_x509_h = no; then
1689 dnl we don't use the "action" part of the AC_CHECK_HEADERS macro
1690 dnl since 'err.h' might in fact find a krb4 header with the same
1692 AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h)
1694 if test $ac_cv_header_x509_h = yes &&
1695 test $ac_cv_header_crypto_h = yes &&
1696 test $ac_cv_header_ssl_h = yes; then
1698 curl_ssl_msg="enabled (OpenSSL)"
1704 if test X"$OPENSSL_ENABLED" = X"1"; then
1705 AC_DEFINE(USE_SSLEAY, 1, [if SSL is enabled])
1707 dnl is there a pkcs12.h header present?
1708 AC_CHECK_HEADERS(openssl/pkcs12.h)
1712 dnl USE_SSLEAY is the historical name for what configure calls
1713 dnl OPENSSL_ENABLED; the names should really be unified
1714 USE_SSLEAY="$OPENSSL_ENABLED"
1715 AC_SUBST(USE_SSLEAY)
1717 if test X"$OPT_SSL" != Xoff &&
1718 test "$OPENSSL_ENABLED" != "1"; then
1719 AC_MSG_ERROR([OpenSSL libs and/or directories were not found where specified!])
1723 if test X"$OPENSSL_ENABLED" = X"1"; then
1724 dnl If the ENGINE library seems to be around, check for the OpenSSL engine
1725 dnl stuff, it is kind of "separated" from the main SSL check
1726 AC_CHECK_FUNC(ENGINE_init,
1728 AC_CHECK_HEADERS(openssl/engine.h)
1729 AC_CHECK_FUNCS( ENGINE_load_builtin_engines )
1732 dnl these can only exist if openssl exists
1733 dnl yassl doesn't have SSL_get_shutdown
1735 AC_CHECK_FUNCS( RAND_status \
1739 CRYPTO_cleanup_all_ex_data \
1741 SSLv2_client_method )
1743 dnl Make an attempt to detect if this is actually yassl's headers and
1744 dnl OpenSSL emulation layer. We still leave everything else believing
1745 dnl and acting like OpenSSL.
1747 AC_MSG_CHECKING([for yaSSL using OpenSSL compatibility mode])
1750 #include <openssl/ssl.h>
1752 #if defined(YASSL_VERSION) && defined(OPENSSL_VERSION_NUMBER)
1753 int dummy = SSL_ERROR_NONE;
1755 Not the yaSSL OpenSSL compatibility header.
1759 AC_MSG_RESULT([yes])
1760 AC_DEFINE_UNQUOTED(USE_YASSLEMUL, 1,
1761 [Define to 1 if using yaSSL in OpenSSL compatibility mode.])
1762 curl_ssl_msg="enabled (OpenSSL emulation by yaSSL)"
1768 if test "$OPENSSL_ENABLED" = "1"; then
1769 if test -n "$LIB_OPENSSL"; then
1770 dnl when the ssl shared libs were found in a path that the run-time
1771 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
1772 dnl to prevent further configure tests to fail due to this
1773 if test "x$cross_compiling" != "xyes"; then
1774 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_OPENSSL"
1775 export LD_LIBRARY_PATH
1776 AC_MSG_NOTICE([Added $LIB_OPENSSL to LD_LIBRARY_PATH])
1779 CURL_CHECK_OPENSSL_API
1784 dnl **********************************************************************
1785 dnl Check for the random seed preferences
1786 dnl **********************************************************************
1788 if test X"$OPENSSL_ENABLED" = X"1"; then
1789 AC_ARG_WITH(egd-socket,
1790 AC_HELP_STRING([--with-egd-socket=FILE],
1791 [Entropy Gathering Daemon socket pathname]),
1792 [ EGD_SOCKET="$withval" ]
1794 if test -n "$EGD_SOCKET" ; then
1795 AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET",
1796 [your Entropy Gathering Daemon socket pathname] )
1799 dnl Check for user-specified random device
1801 AC_HELP_STRING([--with-random=FILE],
1802 [read randomness from FILE (default=/dev/urandom)]),
1803 [ RANDOM_FILE="$withval" ],
1805 if test x$cross_compiling != xyes; then
1806 dnl Check for random device
1807 AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
1809 AC_MSG_WARN([skipped the /dev/urandom detection when cross-compiling])
1813 if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
1814 AC_SUBST(RANDOM_FILE)
1815 AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
1816 [a suitable file to read random data from])
1821 dnl We require OpenSSL with SRP support.
1823 if test "$OPENSSL_ENABLED" = "1"; then
1824 AC_CHECK_LIB(crypto, SRP_Calc_client_key,
1826 AC_DEFINE(HAVE_SSLEAY_SRP, 1, [if you have the function SRP_Calc_client_key])
1827 AC_SUBST(HAVE_SSLEAY_SRP, [1])
1831 dnl ----------------------------------------------------
1832 dnl check for GnuTLS
1833 dnl ----------------------------------------------------
1835 dnl Default to compiler & linker defaults for GnuTLS files & libraries.
1838 AC_ARG_WITH(gnutls,dnl
1839 AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root])
1840 AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]),
1841 OPT_GNUTLS=$withval)
1843 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1845 if test X"$OPT_GNUTLS" != Xno; then
1848 if test "x$OPT_GNUTLS" = "xyes"; then
1849 dnl this is with no partiular path given
1850 CURL_CHECK_PKGCONFIG(gnutls)
1852 if test "$PKGCONFIG" != "no" ; then
1853 addlib=`$PKGCONFIG --libs-only-l gnutls`
1854 addld=`$PKGCONFIG --libs-only-L gnutls`
1855 addcflags=`$PKGCONFIG --cflags-only-I gnutls`
1856 version=`$PKGCONFIG --modversion gnutls`
1857 gtlslib=`echo $addld | $SED -e 's/-L//'`
1859 dnl without pkg-config, we try libgnutls-config as that was how it
1861 check=`libgnutls-config --version 2>/dev/null`
1862 if test -n "$check"; then
1863 addlib=`libgnutls-config --libs`
1864 addcflags=`libgnutls-config --cflags`
1865 version=`libgnutls-config --version`
1866 gtlslib=`libgnutls-config --prefix`/lib$libsuff
1870 dnl this is with a given path, first check if there's a libgnutls-config
1871 dnl there and if not, make an educated guess
1872 cfg=$OPT_GNUTLS/bin/libgnutls-config
1873 check=`$cfg --version 2>/dev/null`
1874 if test -n "$check"; then
1875 addlib=`$cfg --libs`
1876 addcflags=`$cfg --cflags`
1877 version=`$cfg --version`
1878 gtlslib=`$cfg --prefix`/lib$libsuff
1880 dnl without pkg-config and libgnutls-config, we guess a lot!
1882 addld=-L$OPT_GNUTLS/lib$libsuff
1883 addcflags=-I$OPT_GNUTLS/include
1884 version="" # we just don't know
1885 gtlslib=$OPT_GNUTLS/lib$libsuff
1889 if test -z "$version"; then
1890 dnl lots of efforts, still no go
1894 if test -n "$addlib"; then
1897 CLEANCPPFLAGS="$CPPFLAGS"
1898 CLEADLDFLAGS="$LDFLAGS"
1900 LIBS="$addlib $LIBS"
1901 LDFLAGS="$LDFLAGS $addld"
1902 if test "$addcflags" != "-I/usr/include"; then
1903 CPPFLAGS="$CPPFLAGS $addcflags"
1906 AC_CHECK_LIB(gnutls, gnutls_check_version,
1908 AC_DEFINE(USE_GNUTLS, 1, [if GnuTLS is enabled])
1909 AC_SUBST(USE_GNUTLS, [1])
1912 curl_ssl_msg="enabled (GnuTLS)"
1916 CPPFLAGS="$CLEANCPPFLAGS"
1919 if test "x$USE_GNUTLS" = "xyes"; then
1920 AC_MSG_NOTICE([detected GnuTLS version $version])
1922 if test -n "$gtlslib"; then
1923 dnl when shared libs were found in a path that the run-time
1924 dnl linker doesn't search through, we need to add it to
1925 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1927 if test "x$cross_compiling" != "xyes"; then
1928 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlslib"
1929 export LD_LIBRARY_PATH
1930 AC_MSG_NOTICE([Added $gtlslib to LD_LIBRARY_PATH])
1937 fi dnl GNUTLS not disabled
1942 dnl Check which crypto backend GnuTLS uses
1945 if test "$GNUTLS_ENABLED" = "1"; then
1947 # First check if we can detect either crypto library via transitive linking
1948 AC_CHECK_LIB(gnutls, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1949 if test "$USE_GNUTLS_NETTLE" = ""; then
1950 AC_CHECK_LIB(gnutls, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1952 # If not, try linking directly to both of them to see if they are available
1953 if test "$USE_GNUTLS_NETTLE" = ""; then
1954 AC_CHECK_LIB(nettle, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1956 if test "$USE_GNUTLS_NETTLE" = ""; then
1957 AC_CHECK_LIB(gcrypt, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1959 if test "$USE_GNUTLS_NETTLE" = ""; then
1960 AC_MSG_ERROR([GnuTLS found, but neither gcrypt nor nettle found])
1962 if test "$USE_GNUTLS_NETTLE" = "1"; then
1963 AC_DEFINE(USE_GNUTLS_NETTLE, 1, [if GnuTLS uses nettle as crypto backend])
1964 AC_SUBST(USE_GNUTLS_NETTLE, [1])
1965 LIBS="-lnettle $LIBS"
1967 LIBS="-lgcrypt $LIBS"
1972 dnl We require GnuTLS with SRP support.
1974 if test "$GNUTLS_ENABLED" = "1"; then
1975 AC_CHECK_LIB(gnutls, gnutls_srp_verifier,
1977 AC_DEFINE(HAVE_GNUTLS_SRP, 1, [if you have the function gnutls_srp_verifier])
1978 AC_SUBST(HAVE_GNUTLS_SRP, [1])
1982 dnl ----------------------------------------------------
1983 dnl check for PolarSSL
1984 dnl ----------------------------------------------------
1986 dnl Default to compiler & linker defaults for PolarSSL files & libraries.
1991 AC_ARG_WITH(polarssl,dnl
1992 AC_HELP_STRING([--with-polarssl=PATH],[where to look for PolarSSL, PATH points to the installation root])
1993 AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]),
1994 OPT_POLARSSL=$withval)
1996 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1998 if test X"$OPT_POLARSSL" != Xno; then
2000 if test "$OPT_POLARSSL" = "yes"; then
2004 if test -z "$OPT_POLARSSL" ; then
2005 dnl check for lib first without setting any new path
2007 AC_CHECK_LIB(polarssl, havege_init,
2008 dnl libpolarssl found, set the variable
2010 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
2011 AC_SUBST(USE_POLARSSL, [1])
2014 curl_ssl_msg="enabled (PolarSSL)"
2018 if test "x$USE_POLARSSL" != "xyes"; then
2019 dnl add the path and test again
2020 addld=-L$OPT_POLARSSL/lib$libsuff
2021 addcflags=-I$OPT_POLARSSL/include
2022 polarssllib=$OPT_POLARSSL/lib$libsuff
2024 LDFLAGS="$LDFLAGS $addld"
2025 if test "$addcflags" != "-I/usr/include"; then
2026 CPPFLAGS="$CPPFLAGS $addcflags"
2029 AC_CHECK_LIB(polarssl, ssl_init,
2031 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
2032 AC_SUBST(USE_POLARSSL, [1])
2035 curl_ssl_msg="enabled (PolarSSL)"
2043 if test "x$USE_POLARSSL" = "xyes"; then
2044 AC_MSG_NOTICE([detected PolarSSL])
2046 LIBS="-lpolarssl $LIBS"
2048 if test -n "$polarssllib"; then
2049 dnl when shared libs were found in a path that the run-time
2050 dnl linker doesn't search through, we need to add it to
2051 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2053 if test "x$cross_compiling" != "xyes"; then
2054 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$polarssllib"
2055 export LD_LIBRARY_PATH
2056 AC_MSG_NOTICE([Added $polarssllib to LD_LIBRARY_PATH])
2061 fi dnl PolarSSL not disabled
2065 dnl ----------------------------------------------------
2066 dnl check for CyaSSL
2067 dnl ----------------------------------------------------
2069 dnl Default to compiler & linker defaults for CyaSSL files & libraries.
2074 AC_ARG_WITH(cyassl,dnl
2075 AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to the installation root (default: system lib default)])
2076 AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
2077 OPT_CYASSL=$withval)
2079 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2081 if test X"$OPT_CYASSL" != Xno; then
2083 if test "$OPT_CYASSL" = "yes"; then
2087 if test -z "$OPT_CYASSL" ; then
2088 dnl check for lib in system default first
2090 AC_CHECK_LIB(cyassl, CyaSSL_Init,
2091 dnl libcyassl found, set the variable
2093 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2094 AC_SUBST(USE_CYASSL, [1])
2097 curl_ssl_msg="enabled (CyaSSL)"
2101 if test "x$USE_CYASSL" != "xyes"; then
2102 dnl add the path and test again
2103 addld=-L$OPT_CYASSL/lib$libsuff
2104 addcflags=-I$OPT_CYASSL/include
2105 cyassllib=$OPT_CYASSL/lib$libsuff
2107 LDFLAGS="$LDFLAGS $addld"
2108 if test "$addcflags" != "-I/usr/include"; then
2109 CPPFLAGS="$CPPFLAGS $addcflags"
2112 AC_CHECK_LIB(cyassl, CyaSSL_Init,
2114 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2115 AC_SUBST(USE_CYASSL, [1])
2118 curl_ssl_msg="enabled (CyaSSL)"
2126 if test "x$USE_CYASSL" = "xyes"; then
2127 AC_MSG_NOTICE([detected CyaSSL])
2129 LIBS="-lcyassl -lm $LIBS"
2131 if test -n "$cyassllib"; then
2132 dnl when shared libs were found in a path that the run-time
2133 dnl linker doesn't search through, we need to add it to
2134 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2136 if test "x$cross_compiling" != "xyes"; then
2137 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$cyassllib"
2138 export LD_LIBRARY_PATH
2139 AC_MSG_NOTICE([Added $cyassllib to LD_LIBRARY_PATH])
2145 fi dnl CyaSSL not disabled
2149 dnl ----------------------------------------------------
2150 dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
2151 dnl ----------------------------------------------------
2153 dnl Default to compiler & linker defaults for NSS files & libraries.
2157 AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root])
2158 AC_HELP_STRING([--without-nss], [disable NSS detection]),
2161 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2163 if test X"$OPT_NSS" != Xno; then
2164 if test "x$OPT_NSS" = "xyes"; then
2166 CURL_CHECK_PKGCONFIG(nss)
2168 if test "$PKGCONFIG" != "no" ; then
2169 addlib=`$PKGCONFIG --libs nss`
2170 addcflags=`$PKGCONFIG --cflags nss`
2171 version=`$PKGCONFIG --modversion nss`
2172 nssprefix=`$PKGCONFIG --variable=prefix nss`
2174 dnl Without pkg-config, we check for nss-config
2176 check=`nss-config --version 2>/dev/null`
2177 if test -n "$check"; then
2178 addlib=`nss-config --libs`
2179 addcflags=`nss-config --cflags`
2180 version=`nss-config --version`
2181 nssprefix=`nss-config --prefix`
2189 # Without pkg-config, we'll kludge in some defaults
2190 addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
2191 addcflags="-I$OPT_NSS/include"
2196 if test -n "$addlib"; then
2199 CLEANCPPFLAGS="$CPPFLAGS"
2201 LIBS="$addlib $LIBS"
2202 if test "$addcflags" != "-I/usr/include"; then
2203 CPPFLAGS="$CPPFLAGS $addcflags"
2206 dnl The function PK11_CreateGenericObject is needed to load libnsspem.so
2207 AC_CHECK_LIB(nss3, PK11_CreateGenericObject,
2209 AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
2210 AC_SUBST(USE_NSS, [1])
2213 curl_ssl_msg="enabled (NSS)"
2217 CPPFLAGS="$CLEANCPPFLAGS"
2220 if test "x$USE_NSS" = "xyes"; then
2221 AC_MSG_NOTICE([detected NSS version $version])
2223 dnl NSS_InitContext() was introduced in NSS 3.12.5 and helps to prevent
2224 dnl collisions on NSS initialization/shutdown with other libraries
2225 AC_CHECK_FUNC(NSS_InitContext,
2227 AC_DEFINE(HAVE_NSS_INITCONTEXT, 1, [if you have the NSS_InitContext function])
2228 AC_SUBST(HAVE_NSS_INITCONTEXT, [1])
2231 dnl when shared libs were found in a path that the run-time
2232 dnl linker doesn't search through, we need to add it to
2233 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2235 if test "x$cross_compiling" != "xyes"; then
2236 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
2237 export LD_LIBRARY_PATH
2238 AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
2244 fi dnl NSS not disabled
2246 fi dnl curl_ssl_msg = init_ssl_msg
2250 AC_ARG_WITH(axtls,dnl
2251 AC_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.])
2252 AC_HELP_STRING([--without-axtls], [disable axTLS]),
2255 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2256 if test X"$OPT_AXTLS" != Xno; then
2257 dnl backup the pre-axtls variables
2258 CLEANLDFLAGS="$LDFLAGS"
2259 CLEANCPPFLAGS="$CPPFLAGS"
2262 case "$OPT_AXTLS" in
2264 dnl --with-axtls (without path) used
2265 PREFIX_AXTLS=/usr/local
2266 LIB_AXTLS="$PREFIX_AXTLS/lib"
2267 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2268 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2271 dnl no --with-axtls option given, just check default places
2275 dnl check the given --with-axtls spot
2276 PREFIX_AXTLS=$OPT_AXTLS
2277 LIB_AXTLS="$PREFIX_AXTLS/lib"
2278 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2279 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2283 AC_CHECK_LIB(axtls, ssl_version,[
2284 LIBS="-laxtls $LIBS"
2285 AC_DEFINE(USE_AXTLS, 1, [if axTLS is enabled])
2286 AC_SUBST(USE_AXTLS, [1])
2289 curl_ssl_msg="enabled (axTLS)"
2292 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
2293 export LD_LIBRARY_PATH
2294 AC_MSG_NOTICE([Added $LIB_AXTLS to LD_LIBRARY_PATH])
2296 LDFLAGS="$CLEANLDFLAGS"
2297 CPPFLAGS="$CLEANCPPFLAGS"
2303 if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$DARWINSSL_ENABLED" = "x"; then
2304 AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
2305 AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls or --with-winssl to address this.])
2307 # SSL is enabled, genericly
2308 AC_SUBST(SSL_ENABLED)
2312 dnl **********************************************************************
2313 dnl Check for the CA bundle
2314 dnl **********************************************************************
2316 CURL_CHECK_CA_BUNDLE
2318 dnl **********************************************************************
2319 dnl Check for libmetalink
2320 dnl **********************************************************************
2324 AC_ARG_WITH(libmetalink,dnl
2325 AC_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root])
2326 AC_HELP_STRING([--without-libmetalink], [disable libmetalink detection]),
2327 OPT_LIBMETALINK=$withval)
2329 if test X"$OPT_LIBMETALINK" != Xno; then
2337 if test "x$OPT_LIBMETALINK" = "xyes"; then
2338 dnl this is with no partiular path given
2340 CURL_CHECK_PKGCONFIG(libmetalink)
2342 dnl When particular path is given, set PKG_CONFIG_LIBDIR using the path.
2343 LIBMETALINK_PCDIR="$OPT_LIBMETALINK/lib/pkgconfig"
2344 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$LIBMETALINK_PCDIR"])
2345 if test -f "$LIBMETALINK_PCDIR/libmetalink.pc"; then
2348 if test "$PKGTEST" = "yes"; then
2349 CURL_CHECK_PKGCONFIG(libmetalink, [$LIBMETALINK_PCDIR])
2352 if test "$PKGTEST" = "yes" && test "$PKGCONFIG" != "no"; then
2353 addlib=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2354 $PKGCONFIG --libs-only-l libmetalink`
2355 addld=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2356 $PKGCONFIG --libs-only-L libmetalink`
2357 addcflags=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2358 $PKGCONFIG --cflags-only-I libmetalink`
2359 version=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2360 $PKGCONFIG --modversion libmetalink`
2361 libmetalinklib=`echo $addld | $SED -e 's/-L//'`
2363 if test -n "$addlib"; then
2365 clean_CPPFLAGS="$CPPFLAGS"
2366 clean_LDFLAGS="$LDFLAGS"
2368 CPPFLAGS="$addcflags $clean_CPPFLAGS"
2369 LDFLAGS="$addld $clean_LDFLAGS"
2370 LIBS="$addlib $clean_LIBS"
2371 AC_MSG_CHECKING([if libmetalink is recent enough])
2374 # include <metalink/metalink.h>
2376 if(0 != metalink_strerror(0)) /* added in 0.1.0 */
2380 AC_MSG_RESULT([yes ($version)])
2383 AC_MSG_RESULT([no ($version)])
2384 AC_MSG_NOTICE([libmetalink library defective or too old])
2387 CPPFLAGS="$clean_CPPFLAGS"
2388 LDFLAGS="$clean_LDFLAGS"
2390 if test "$want_metalink" = "yes"; then
2391 dnl finally libmetalink will be used
2392 AC_DEFINE(USE_METALINK, 1, [Define to enable metalink support])
2393 LIBMETALINK_LIBS=$addlib
2394 LIBMETALINK_LDFLAGS=$addld
2395 LIBMETALINK_CFLAGS=$addcflags
2396 AC_SUBST([LIBMETALINK_LIBS])
2397 AC_SUBST([LIBMETALINK_LDFLAGS])
2398 AC_SUBST([LIBMETALINK_CFLAGS])
2399 curl_mtlnk_msg="enabled"
2405 dnl **********************************************************************
2406 dnl Check for the presence of LIBSSH2 libraries and headers
2407 dnl **********************************************************************
2409 dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
2411 AC_ARG_WITH(libssh2,dnl
2412 AC_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])
2413 AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
2414 OPT_LIBSSH2=$withval)
2416 if test X"$OPT_LIBSSH2" != Xno; then
2417 dnl backup the pre-libssh2 variables
2418 CLEANLDFLAGS="$LDFLAGS"
2419 CLEANCPPFLAGS="$CPPFLAGS"
2422 case "$OPT_LIBSSH2" in
2424 dnl --with-libssh2 (without path) used
2425 CURL_CHECK_PKGCONFIG(libssh2)
2427 if test "$PKGCONFIG" != "no" ; then
2428 LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2`
2429 LD_SSH2=`$PKGCONFIG --libs-only-L libssh2`
2430 CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2`
2431 version=`$PKGCONFIG --modversion libssh2`
2432 DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'`
2437 dnl no --with-libssh2 option given, just check default places
2440 dnl use the given --with-libssh2 spot
2441 PREFIX_SSH2=$OPT_LIBSSH2
2445 dnl if given with a prefix, we set -L and -I based on that
2446 if test -n "$PREFIX_SSH2"; then
2448 LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff
2449 CPP_SSH2=-I${PREFIX_SSH2}/include
2450 DIR_SSH2=${PREFIX_SSH2}/lib$libsuff
2453 LDFLAGS="$LDFLAGS $LD_SSH2"
2454 CPPFLAGS="$CPPFLAGS $CPP_SSH2"
2455 LIBS="$LIB_SSH2 $LIBS"
2457 AC_CHECK_LIB(ssh2, libssh2_channel_open_ex)
2459 AC_CHECK_HEADERS(libssh2.h,
2460 curl_ssh_msg="enabled (libSSH2)"
2462 AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
2463 AC_SUBST(USE_LIBSSH2, [1])
2466 if test X"$OPT_LIBSSH2" != Xoff &&
2467 test "$LIBSSH2_ENABLED" != "1"; then
2468 AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!])
2471 if test "$LIBSSH2_ENABLED" = "1"; then
2472 if test -n "$DIR_SSH2"; then
2473 dnl when the libssh2 shared libs were found in a path that the run-time
2474 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
2475 dnl to prevent further configure tests to fail due to this
2477 dnl libssh2_version is a post 1.0 addition
2478 dnl libssh2_init and libssh2_exit were added in 1.2.5
2479 dnl libssh2_scp_send64 was added in 1.2.6
2480 dnl libssh2_session_handshake was added in 1.2.8
2481 AC_CHECK_FUNCS( libssh2_version libssh2_init libssh2_exit \
2482 libssh2_scp_send64 libssh2_session_handshake)
2483 if test "x$cross_compiling" != "xyes"; then
2484 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
2485 export LD_LIBRARY_PATH
2486 AC_MSG_NOTICE([Added $DIR_SSH2 to LD_LIBRARY_PATH])
2490 dnl no libssh2, revert back to clean variables
2491 LDFLAGS=$CLEANLDFLAGS
2492 CPPFLAGS=$CLEANCPPFLAGS
2497 dnl **********************************************************************
2498 dnl Check for the presence of LIBRTMP libraries and headers
2499 dnl **********************************************************************
2501 dnl Default to compiler & linker defaults for LIBRTMP files & libraries.
2503 AC_ARG_WITH(librtmp,dnl
2504 AC_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])
2505 AC_HELP_STRING([--without-librtmp], [disable LIBRTMP]),
2506 OPT_LIBRTMP=$withval)
2508 if test X"$OPT_LIBRTMP" != Xno; then
2509 dnl backup the pre-librtmp variables
2510 CLEANLDFLAGS="$LDFLAGS"
2511 CLEANCPPFLAGS="$CPPFLAGS"
2514 case "$OPT_LIBRTMP" in
2516 dnl --with-librtmp (without path) used
2517 CURL_CHECK_PKGCONFIG(librtmp)
2519 if test "$PKGCONFIG" != "no" ; then
2520 LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp`
2521 LD_RTMP=`$PKGCONFIG --libs-only-L librtmp`
2522 CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp`
2523 version=`$PKGCONFIG --modversion librtmp`
2524 DIR_RTMP=`echo $LD_RTMP | $SED -e 's/-L//'`
2526 dnl To avoid link errors, we do not allow --librtmp without
2527 dnl a pkgconfig file
2528 AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.])
2533 dnl no --with-librtmp option given, just check default places
2537 dnl use the given --with-librtmp spot
2538 PREFIX_RTMP=$OPT_LIBRTMP
2542 dnl if given with a prefix, we set -L and -I based on that
2543 if test -n "$PREFIX_RTMP"; then
2544 LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff
2545 CPP_RTMP=-I${PREFIX_RTMP}/include
2546 DIR_RTMP=${PREFIX_RTMP}/lib$libsuff
2549 LDFLAGS="$LDFLAGS $LD_RTMP"
2550 CPPFLAGS="$CPPFLAGS $CPP_RTMP"
2551 LIBS="$LIB_RTMP $LIBS"
2553 AC_CHECK_LIB(rtmp, RTMP_Init,
2555 AC_CHECK_HEADERS(librtmp/rtmp.h,
2556 curl_rtmp_msg="enabled (librtmp)"
2558 AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use])
2559 AC_SUBST(USE_LIBRTMP, [1])
2562 dnl not found, revert back to clean variables
2563 LDFLAGS=$CLEANLDFLAGS
2564 CPPFLAGS=$CLEANCPPFLAGS
2568 if test X"$OPT_LIBRTMP" != Xoff &&
2569 test "$LIBRTMP_ENABLED" != "1"; then
2570 AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!])
2575 dnl **********************************************************************
2576 dnl Check for linker switch for versioned symbols
2577 dnl **********************************************************************
2579 versioned_symbols_flavour=
2580 AC_MSG_CHECKING([whether versioned symbols are wanted])
2581 AC_ARG_ENABLE(versioned-symbols,
2582 AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library])
2583 AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]),
2584 [ case "$enableval" in
2585 yes) AC_MSG_RESULT(yes)
2586 AC_MSG_CHECKING([if libraries can be versioned])
2587 GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
2588 if test -z "$GLD"; then
2590 AC_MSG_WARN([You need an ld version supporting the --version-script option])
2593 if test "x$OPENSSL_ENABLED" = "x1"; then
2594 versioned_symbols_flavour="OPENSSL_"
2595 elif test "x$GNUTLS_ENABLED" == "x1"; then
2596 versioned_symbols_flavour="GNUTLS_"
2597 elif test "x$NSS_ENABLED" == "x1"; then
2598 versioned_symbols_flavour="NSS_"
2599 elif test "x$POLARSSL_ENABLED" == "x1"; then
2600 versioned_symbols_flavour="POLARSSL_"
2601 elif test "x$CYASSL_ENABLED" == "x1"; then
2602 versioned_symbols_flavour="CYASSL_"
2603 elif test "x$AXTLS_ENABLED" == "x1"; then
2604 versioned_symbols_flavour="AXTLS_"
2605 elif test "x$WINSSL_ENABLED" == "x1"; then
2606 versioned_symbols_flavour="WINSSL_"
2607 elif test "x$DARWINSSL_ENABLED" == "x1"; then
2608 versioned_symbols_flavour="DARWINSSL_"
2610 versioned_symbols_flavour=""
2612 versioned_symbols="yes"
2616 *) AC_MSG_RESULT(no)
2624 AC_SUBST(VERSIONED_FLAVOUR, ["$versioned_symbols_flavour"])
2625 AM_CONDITIONAL(VERSIONED_SYMBOLS, test "x$versioned_symbols" = "xyes")
2627 dnl -------------------------------------------------
2628 dnl check winidn option before other IDN libraries
2629 dnl -------------------------------------------------
2631 AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)])
2632 OPT_WINIDN="default"
2634 AC_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN])
2635 AC_HELP_STRING([--without-winidn], [disable Windows native IDN]),
2636 OPT_WINIDN=$withval)
2637 case "$OPT_WINIDN" in
2639 dnl --without-winidn option used or configure option not specified
2644 dnl --with-winidn option used without path
2646 want_winidn_path="default"
2647 AC_MSG_RESULT([yes])
2650 dnl --with-winidn option used with path
2652 want_winidn_path="$withval"
2653 AC_MSG_RESULT([yes ($withval)])
2657 if test "$want_winidn" = "yes"; then
2658 dnl winidn library support has been requested
2659 clean_CPPFLAGS="$CPPFLAGS"
2660 clean_LDFLAGS="$LDFLAGS"
2662 WINIDN_LIBS="-lnormaliz"
2664 if test "$want_winidn_path" != "default"; then
2665 dnl path has been specified
2666 dnl pkg-config not available or provides no info
2667 WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff"
2668 WINIDN_CPPFLAGS="-I$want_winidn_path/include"
2669 WINIDN_DIR="$want_winidn_path/lib$libsuff"
2672 CPPFLAGS="$WINIDN_CPPFLAGS $CPPFLAGS"
2673 LDFLAGS="$WINIDN_LDFLAGS $LDFLAGS"
2674 LIBS="$WINIDN_LIBS $LIBS"
2676 AC_MSG_CHECKING([if IdnToUnicode can be linked])
2678 AC_LANG_FUNC_LINK_TRY([IdnToUnicode])
2680 AC_MSG_RESULT([yes])
2681 tst_links_winidn="yes"
2684 tst_links_winidn="no"
2687 if test "$tst_links_winidn" = "yes"; then
2688 AC_DEFINE(USE_WIN32_IDN, 1, [Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz).])
2689 AC_DEFINE(WANT_IDN_PROTOTYPES, 1, [Define to 1 to provide own prototypes.])
2690 AC_SUBST([IDN_ENABLED], [1])
2691 curl_idn_msg="enabled (Windows-native)"
2693 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2694 CPPFLAGS="$clean_CPPFLAGS"
2695 LDFLAGS="$clean_LDFLAGS"
2700 dnl **********************************************************************
2701 dnl Check for the presence of IDN libraries and headers
2702 dnl **********************************************************************
2704 AC_MSG_CHECKING([whether to build with libidn])
2707 AC_HELP_STRING([--with-libidn=PATH],[Enable libidn usage])
2708 AC_HELP_STRING([--without-libidn],[Disable libidn usage]),
2712 dnl --without-libidn option used
2717 dnl configure option not specified
2719 want_idn_path="default"
2720 AC_MSG_RESULT([(assumed) yes])
2723 dnl --with-libidn option used without path
2725 want_idn_path="default"
2726 AC_MSG_RESULT([yes])
2729 dnl --with-libidn option used with path
2731 want_idn_path="$withval"
2732 AC_MSG_RESULT([yes ($withval)])
2736 if test "$want_idn" = "yes"; then
2737 dnl idn library support has been requested
2738 clean_CPPFLAGS="$CPPFLAGS"
2739 clean_LDFLAGS="$LDFLAGS"
2743 if test "$want_idn_path" != "default"; then
2744 dnl path has been specified
2745 IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig"
2746 CURL_CHECK_PKGCONFIG(libidn, [$IDN_PCDIR])
2747 if test "$PKGCONFIG" != "no"; then
2748 IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2749 $PKGCONFIG --libs-only-l libidn 2>/dev/null`
2750 IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2751 $PKGCONFIG --libs-only-L libidn 2>/dev/null`
2752 IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2753 $PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2754 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2756 dnl pkg-config not available or provides no info
2758 IDN_LDFLAGS="-L$want_idn_path/lib$libsuff"
2759 IDN_CPPFLAGS="-I$want_idn_path/include"
2760 IDN_DIR="$want_idn_path/lib$libsuff"
2763 dnl path not specified
2764 CURL_CHECK_PKGCONFIG(libidn)
2765 if test "$PKGCONFIG" != "no"; then
2766 IDN_LIBS=`$PKGCONFIG --libs-only-l libidn 2>/dev/null`
2767 IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn 2>/dev/null`
2768 IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2769 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2771 dnl pkg-config not available or provides no info
2776 if test "$PKGCONFIG" != "no"; then
2777 AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"])
2778 AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"])
2779 AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2780 AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"])
2782 AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"])
2783 AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"])
2784 AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2785 AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"])
2788 CPPFLAGS="$IDN_CPPFLAGS $CPPFLAGS"
2789 LDFLAGS="$IDN_LDFLAGS $LDFLAGS"
2790 LIBS="$IDN_LIBS $LIBS"
2792 AC_MSG_CHECKING([if idna_to_ascii_4i can be linked])
2794 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_4i])
2796 AC_MSG_RESULT([yes])
2797 tst_links_libidn="yes"
2800 tst_links_libidn="no"
2802 if test "$tst_links_libidn" = "no"; then
2803 AC_MSG_CHECKING([if idna_to_ascii_lz can be linked])
2805 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_lz])
2807 AC_MSG_RESULT([yes])
2808 tst_links_libidn="yes"
2811 tst_links_libidn="no"
2815 if test "$tst_links_libidn" = "yes"; then
2816 AC_DEFINE(HAVE_LIBIDN, 1, [Define to 1 if you have the `idn' library (-lidn).])
2817 dnl different versions of libidn have different setups of these:
2818 AC_CHECK_FUNCS( idn_free idna_strerror tld_strerror )
2819 AC_CHECK_HEADERS( idn-free.h tld.h )
2820 if test "x$ac_cv_header_tld_h" = "xyes"; then
2821 AC_SUBST([IDN_ENABLED], [1])
2822 curl_idn_msg="enabled"
2823 if test -n "$IDN_DIR"; then
2824 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
2825 export LD_LIBRARY_PATH
2826 AC_MSG_NOTICE([Added $IDN_DIR to LD_LIBRARY_PATH])
2829 AC_MSG_WARN([Libraries for IDN support too old: IDN disabled])
2830 CPPFLAGS="$clean_CPPFLAGS"
2831 LDFLAGS="$clean_LDFLAGS"
2835 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2836 CPPFLAGS="$clean_CPPFLAGS"
2837 LDFLAGS="$clean_LDFLAGS"
2843 dnl Let's hope this split URL remains working:
2844 dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
2845 dnl genprogc/thread_quick_ref.htm
2848 dnl **********************************************************************
2849 dnl Back to "normal" configuring
2850 dnl **********************************************************************
2852 dnl Checks for header files.
2855 CURL_CHECK_HEADER_MALLOC
2856 CURL_CHECK_HEADER_MEMORY
2858 dnl Now check for the very most basic headers. Then we can use these
2859 dnl ones as default-headers when checking for the rest!
2902 dnl to do if not found
2906 dnl default includes
2908 #ifdef HAVE_SYS_TYPES_H
2909 #include <sys/types.h>
2911 #ifdef HAVE_SYS_TIME_H
2912 #include <sys/time.h>
2914 #ifdef HAVE_SYS_SELECT_H
2915 #include <sys/select.h>
2917 #ifdef HAVE_SYS_SOCKET_H
2918 #include <sys/socket.h>
2920 #ifdef HAVE_NETINET_IN_H
2921 #include <netinet/in.h>
2923 #ifdef HAVE_SYS_UN_H
2929 dnl Checks for typedefs, structures, and compiler characteristics.
2931 CURL_CHECK_VARIADIC_MACROS
2934 CURL_CHECK_STRUCT_TIMEVAL
2935 CURL_VERIFY_RUNTIMELIBS
2937 AC_CHECK_SIZEOF(size_t)
2938 AC_CHECK_SIZEOF(long)
2939 AC_CHECK_SIZEOF(int)
2940 AC_CHECK_SIZEOF(short)
2942 AC_CHECK_SIZEOF(time_t)
2943 AC_CHECK_SIZEOF(off_t)
2946 if test x"$ac_cv_native_windows" != "xyes" &&
2947 test $ac_cv_sizeof_off_t -ne $curl_sizeof_curl_off_t; then
2948 AC_MSG_WARN([This libcurl built is probably not ABI compatible with previous])
2949 AC_MSG_WARN([builds! You MUST read lib/README.curl_off_t to figure it out.])
2954 AC_CHECK_TYPE(long long,
2955 [AC_DEFINE(HAVE_LONGLONG, 1,
2956 [Define to 1 if the compiler supports the 'long long' data type.])]
2960 if test "xyes" = "x$longlong"; then
2961 AC_MSG_CHECKING([if numberLL works])
2965 long long val = 1000LL;
2968 AC_MSG_RESULT([yes])
2969 AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
2977 AC_CHECK_TYPE(ssize_t, ,
2978 AC_DEFINE(ssize_t, int, [the signed version of size_t]))
2980 # check for bool type
2981 AC_CHECK_TYPE([bool],[
2982 AC_DEFINE(HAVE_BOOL_T, 1,
2983 [Define to 1 if bool is an available type.])
2985 #ifdef HAVE_SYS_TYPES_H
2986 #include <sys/types.h>
2988 #ifdef HAVE_STDBOOL_H
2989 #include <stdbool.h>
2993 CURL_CONFIGURE_CURL_SOCKLEN_T
2995 CURL_CONFIGURE_PULL_SYS_POLL
2999 TYPE_SOCKADDR_STORAGE
3005 CURL_CHECK_FUNC_SELECT
3007 CURL_CHECK_FUNC_RECV
3008 CURL_CHECK_FUNC_RECVFROM
3009 CURL_CHECK_FUNC_SEND
3010 CURL_CHECK_MSG_NOSIGNAL
3012 CURL_CHECK_FUNC_ALARM
3013 CURL_CHECK_FUNC_BASENAME
3014 CURL_CHECK_FUNC_CLOSESOCKET
3015 CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
3016 CURL_CHECK_FUNC_CONNECT
3017 CURL_CHECK_FUNC_FCNTL
3018 CURL_CHECK_FUNC_FDOPEN
3019 CURL_CHECK_FUNC_FREEADDRINFO
3020 CURL_CHECK_FUNC_FREEIFADDRS
3021 CURL_CHECK_FUNC_FSETXATTR
3022 CURL_CHECK_FUNC_FTRUNCATE
3023 CURL_CHECK_FUNC_GETADDRINFO
3024 CURL_CHECK_FUNC_GAI_STRERROR
3025 CURL_CHECK_FUNC_GETHOSTBYADDR
3026 CURL_CHECK_FUNC_GETHOSTBYADDR_R
3027 CURL_CHECK_FUNC_GETHOSTBYNAME
3028 CURL_CHECK_FUNC_GETHOSTBYNAME_R
3029 CURL_CHECK_FUNC_GETHOSTNAME
3030 CURL_CHECK_FUNC_GETIFADDRS
3031 CURL_CHECK_FUNC_GETSERVBYPORT_R
3032 CURL_CHECK_FUNC_GMTIME_R
3033 CURL_CHECK_FUNC_INET_NTOA_R
3034 CURL_CHECK_FUNC_INET_NTOP
3035 CURL_CHECK_FUNC_INET_PTON
3036 CURL_CHECK_FUNC_IOCTL
3037 CURL_CHECK_FUNC_IOCTLSOCKET
3038 CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
3039 CURL_CHECK_FUNC_LOCALTIME_R
3040 CURL_CHECK_FUNC_MEMRCHR
3041 CURL_CHECK_FUNC_POLL
3042 CURL_CHECK_FUNC_SETSOCKOPT
3043 CURL_CHECK_FUNC_SIGACTION
3044 CURL_CHECK_FUNC_SIGINTERRUPT
3045 CURL_CHECK_FUNC_SIGNAL
3046 CURL_CHECK_FUNC_SIGSETJMP
3047 CURL_CHECK_FUNC_SOCKET
3048 CURL_CHECK_FUNC_SOCKETPAIR
3049 CURL_CHECK_FUNC_STRCASECMP
3050 CURL_CHECK_FUNC_STRCASESTR
3051 CURL_CHECK_FUNC_STRCMPI
3052 CURL_CHECK_FUNC_STRDUP
3053 CURL_CHECK_FUNC_STRERROR_R
3054 CURL_CHECK_FUNC_STRICMP
3055 CURL_CHECK_FUNC_STRLCAT
3056 CURL_CHECK_FUNC_STRNCASECMP
3057 CURL_CHECK_FUNC_STRNCMPI
3058 CURL_CHECK_FUNC_STRNICMP
3059 CURL_CHECK_FUNC_STRSTR
3060 CURL_CHECK_FUNC_STRTOK_R
3061 CURL_CHECK_FUNC_STRTOLL
3062 CURL_CHECK_FUNC_WRITEV
3068 AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
3072 AC_CHECK_FUNCS([fork \
3091 eval skipcheck=\$skipcheck_$func
3092 if test "x$skipcheck" != "xyes"; then
3093 AC_MSG_CHECKING([deeper for $func])
3100 AC_MSG_RESULT([yes])
3101 eval "ac_cv_func_$func=yes"
3102 AC_DEFINE_UNQUOTED(XC_SH_TR_CPP([HAVE_$func]), [1],
3103 [Define to 1 if you have the $func function.])
3105 AC_MSG_RESULT([but still no])
3110 dnl Check if the getnameinfo function is available
3111 dnl and get the types of five of its arguments.
3112 CURL_CHECK_FUNC_GETNAMEINFO
3114 if test "$ipv6" = "yes"; then
3115 if test "$ac_cv_func_getaddrinfo" = "yes"; then
3116 AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
3118 AC_SUBST(IPV6_ENABLED)
3120 CURL_CHECK_NI_WITHSCOPEID
3123 CURL_CHECK_NONBLOCKING_SOCKET
3125 dnl ************************************************************
3126 dnl nroff tool stuff
3129 AC_PATH_PROG( PERL, perl, ,
3130 $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
3133 AC_PATH_PROGS( NROFF, gnroff nroff, ,
3134 $PATH:/usr/bin/:/usr/local/bin )
3137 if test -n "$NROFF"; then
3138 dnl only check for nroff options if an nroff command was found
3140 AC_MSG_CHECKING([how to use *nroff to get plain text from man pages])
3142 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3143 if test -z "$mancheck"; then
3145 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3146 if test -z "$mancheck"; then
3148 AC_MSG_RESULT([failed])
3149 AC_MSG_WARN([found no *nroff option to get plaintext from man pages])
3151 AC_MSG_RESULT([$MANOPT])
3154 AC_MSG_RESULT([$MANOPT])
3159 if test -z "$MANOPT"
3161 dnl if no nroff tool was found, or no option that could convert man pages
3162 dnl was found, then disable the built-in manual stuff
3163 AC_MSG_WARN([disabling built-in manual])
3167 dnl *************************************************************************
3168 dnl If the manual variable still is set, then we go with providing a built-in
3171 if test "$USE_MANUAL" = "1"; then
3172 AC_DEFINE(USE_MANUAL, 1, [If you want to build curl with the built-in manual])
3173 curl_manual_msg="enabled"
3176 dnl set variable for use in automakefile(s)
3177 AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
3180 AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
3182 if test "x$ac_cv_native_windows" != "xyes" &&
3183 test "x$enable_shared" = "xyes"; then
3184 build_libhostname=yes
3186 build_libhostname=no
3188 AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes)
3190 CURL_CHECK_OPTION_THREADED_RESOLVER
3192 if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
3194 [Options --enable-threaded-resolver and --enable-ares are mutually exclusive])
3197 if test "$want_thres" = "yes"; then
3198 AC_CHECK_HEADER(pthread.h,
3199 [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>])
3200 save_CFLAGS="$CFLAGS"
3201 CFLAGS="$CFLAGS -pthread"
3202 AC_CHECK_LIB(pthread, pthread_create,
3203 [ AC_MSG_NOTICE([using POSIX threaded DNS lookup])
3204 AC_DEFINE(USE_THREADS_POSIX, 1, [if you want POSIX threaded DNS lookup])
3206 curl_res_msg="threaded"
3208 [ CFLAGS="$save_CFLAGS"])
3212 dnl ************************************************************
3213 dnl disable verbose text strings
3215 AC_MSG_CHECKING([whether to enable verbose strings])
3216 AC_ARG_ENABLE(verbose,
3217 AC_HELP_STRING([--enable-verbose],[Enable verbose strings])
3218 AC_HELP_STRING([--disable-verbose],[Disable verbose strings]),
3219 [ case "$enableval" in
3222 AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings])
3223 curl_verbose_msg="no"
3225 *) AC_MSG_RESULT(yes)
3231 dnl ************************************************************
3232 dnl enable SSPI support
3234 AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)])
3236 AC_HELP_STRING([--enable-sspi],[Enable SSPI])
3237 AC_HELP_STRING([--disable-sspi],[Disable SSPI]),
3238 [ case "$enableval" in
3240 if test "$ac_cv_native_windows" = "yes"; then
3242 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
3243 AC_SUBST(USE_WINDOWS_SSPI, [1])
3244 curl_sspi_msg="enabled"
3247 AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.])
3251 if test "x$WINSSL_ENABLED" = "x1"; then
3252 # --with-winssl implies --enable-sspi
3259 if test "x$WINSSL_ENABLED" = "x1"; then
3260 # --with-winssl implies --enable-sspi
3267 dnl ************************************************************
3268 dnl disable cryptographic authentication
3270 AC_MSG_CHECKING([whether to enable cryptographic authentication methods])
3271 AC_ARG_ENABLE(crypto-auth,
3272 AC_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication])
3273 AC_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]),
3274 [ case "$enableval" in
3277 AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication])
3279 *) AC_MSG_RESULT(yes)
3285 CURL_CHECK_OPTION_NTLM_WB
3289 dnl ************************************************************
3290 dnl disable TLS-SRP authentication
3292 AC_MSG_CHECKING([whether to enable TLS-SRP authentication])
3293 AC_ARG_ENABLE(tls-srp,
3294 AC_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication])
3295 AC_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]),
3296 [ case "$enableval" in
3299 AC_DEFINE(CURL_DISABLE_TLS_SRP, 1, [to disable TLS-SRP authentication])
3302 *) AC_MSG_RESULT(yes)
3310 if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_SSLEAY_SRP" = "x1") ; then
3311 AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication])
3313 curl_tls_srp_msg="enabled"
3316 dnl ************************************************************
3317 dnl disable cookies support
3319 AC_MSG_CHECKING([whether to enable support for cookies])
3320 AC_ARG_ENABLE(cookies,
3321 AC_HELP_STRING([--enable-cookies],[Enable cookies support])
3322 AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
3323 [ case "$enableval" in
3326 AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support])
3328 *) AC_MSG_RESULT(yes)
3334 dnl ************************************************************
3335 dnl hiding of library internal symbols
3337 CURL_CONFIGURE_SYMBOL_HIDING
3339 dnl ************************************************************
3340 dnl enforce SONAME bump
3343 AC_MSG_CHECKING([whether to enforce SONAME bump])
3344 AC_ARG_ENABLE(soname-bump,
3345 AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump])
3346 AC_HELP_STRING([--disable-soname-bump],[Disable enforced SONAME bump]),
3347 [ case "$enableval" in
3348 yes) AC_MSG_RESULT(yes)
3355 AC_MSG_RESULT($soname_bump)
3357 AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes)
3360 dnl All the library dependencies put into $LIB apply to libcurl only.
3364 AC_SUBST(LIBCURL_LIBS)
3365 AC_SUBST(CURL_NETWORK_LIBS)
3366 AC_SUBST(CURL_NETWORK_AND_TIME_LIBS)
3368 dnl BLANK_AT_MAKETIME may be used in our Makefile.am files to blank
3369 dnl LIBS variable used in generated makefile at makefile processing
3370 dnl time. Doing this functionally prevents LIBS from being used for
3371 dnl all link targets in given makefile.
3373 AC_SUBST(BLANK_AT_MAKETIME)
3375 AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes)
3378 ENABLE_SHARED="$enable_shared"
3379 AC_SUBST(ENABLE_SHARED)
3382 dnl For keeping supported features and protocols also in pkg-config file
3383 dnl since it is more cross-compile friendly than curl-config
3386 if test "x$USE_SSLEAY" = "x1"; then
3387 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3388 elif test -n "$SSL_ENABLED"; then
3389 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3391 if test "@KRB4_ENABLED@" = "x1"; then
3392 SUPPORT_FEATURES="$SUPPORT_FEATURES KRB4"
3394 if test "x$IPV6_ENABLED" = "x1"; then
3395 SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
3397 if test "x$HAVE_LIBZ" = "x1"; then
3398 SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
3400 if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1"; then
3401 SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
3403 if test "x$IDN_ENABLED" = "x1"; then
3404 SUPPORT_FEATURES="$SUPPORT_FEATURES IDN"
3406 if test "x$USE_WINDOWS_SSPI" = "x1"; then
3407 SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
3409 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3410 if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
3411 -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
3412 -o "x$DARWINSSL_ENABLED" = "x1"; then
3413 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
3414 if test "x$NTLM_WB_ENABLED" = "x1"; then
3415 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
3419 if test "x$USE_TLS_SRP" = "x1"; then
3420 SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
3423 AC_SUBST(SUPPORT_FEATURES)
3425 dnl For supported protocols in pkg-config file
3426 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3427 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
3428 if test "x$SSL_ENABLED" = "x1"; then
3429 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS"
3432 if test "x$CURL_DISABLE_FTP" != "x1"; then
3433 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP"
3434 if test "x$SSL_ENABLED" = "x1"; then
3435 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS"
3438 if test "x$CURL_DISABLE_FILE" != "x1"; then
3439 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE"
3441 if test "x$CURL_DISABLE_TELNET" != "x1"; then
3442 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET"
3444 if test "x$CURL_DISABLE_LDAP" != "x1"; then
3445 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP"
3446 if test "x$CURL_DISABLE_LDAPS" != "x1"; then
3447 if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") ||
3448 (test "x$USE_OPENLDAP" != "x1" && test "x$HAVE_LDAP_SSL" = "x1"); then
3449 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS"
3453 if test "x$CURL_DISABLE_DICT" != "x1"; then
3454 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT"
3456 if test "x$CURL_DISABLE_TFTP" != "x1"; then
3457 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP"
3459 if test "x$CURL_DISABLE_GOPHER" != "x1"; then
3460 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER"
3462 if test "x$CURL_DISABLE_POP3" != "x1"; then
3463 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3"
3464 if test "x$SSL_ENABLED" = "x1"; then
3465 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S"
3468 if test "x$CURL_DISABLE_IMAP" != "x1"; then
3469 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
3470 if test "x$SSL_ENABLED" = "x1"; then
3471 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
3474 if test "x$CURL_DISABLE_SMTP" != "x1"; then
3475 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
3476 if test "x$SSL_ENABLED" = "x1"; then
3477 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS"
3480 if test "x$USE_LIBSSH2" = "x1"; then
3481 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
3482 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
3484 if test "x$CURL_DISABLE_RTSP" != "x1"; then
3485 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
3487 if test "x$USE_LIBRTMP" = "x1"; then
3488 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP"
3491 dnl replace spaces with newlines
3493 dnl replace the newlines back to spaces
3494 SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '`
3496 AC_SUBST(SUPPORT_PROTOCOLS)
3498 dnl squeeze whitespace out of some variables
3506 squeeze LIBCURL_LIBS
3507 squeeze CURL_NETWORK_LIBS
3508 squeeze CURL_NETWORK_AND_TIME_LIBS
3510 squeeze SUPPORT_FEATURES
3511 squeeze SUPPORT_PROTOCOLS
3513 if test "x$want_curldebug_assumed" = "xyes" &&
3514 test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
3515 ac_configure_args="$ac_configure_args --enable-curldebug"
3518 AC_CONFIG_FILES([Makefile \
3520 docs/examples/Makefile \
3521 docs/libcurl/Makefile \
3523 include/curl/Makefile \
3528 tests/data/Makefile \
3529 tests/server/Makefile \
3530 tests/libtest/Makefile \
3531 tests/unit/Makefile \
3533 packages/Win32/Makefile \
3534 packages/Win32/cygwin/Makefile \
3535 packages/Linux/Makefile \
3536 packages/Linux/RPM/Makefile \
3537 packages/Linux/RPM/curl.spec \
3538 packages/Linux/RPM/curl-ssl.spec \
3539 packages/Solaris/Makefile \
3540 packages/EPM/curl.list \
3541 packages/EPM/Makefile \
3542 packages/vms/Makefile \
3543 packages/AIX/Makefile \
3544 packages/AIX/RPM/Makefile \
3545 packages/AIX/RPM/curl.spec \
3551 CURL_GENERATE_CONFIGUREHELP_PM
3553 AC_MSG_NOTICE([Configured to build curl/libcurl:
3555 curl version: ${CURLVERSION}
3557 Install prefix: ${prefix}
3559 SSL support: ${curl_ssl_msg}
3560 SSH support: ${curl_ssh_msg}
3561 zlib support: ${curl_zlib_msg}
3562 krb4 support: ${curl_krb4_msg}
3563 GSSAPI support: ${curl_gss_msg}
3564 SPNEGO support: ${curl_spnego_msg}
3565 TLS-SRP support: ${curl_tls_srp_msg}
3566 resolver: ${curl_res_msg}
3567 ipv6 support: ${curl_ipv6_msg}
3568 IDN support: ${curl_idn_msg}
3569 Build libcurl: Shared=${enable_shared}, Static=${enable_static}
3570 Built-in manual: ${curl_manual_msg}
3571 --libcurl option: ${curl_libcurl_msg}
3572 Verbose errors: ${curl_verbose_msg}
3573 SSPI support: ${curl_sspi_msg}
3574 ca cert bundle: ${ca}
3575 ca cert path: ${capath}
3576 LDAP support: ${curl_ldap_msg}
3577 LDAPS support: ${curl_ldaps_msg}
3578 RTSP support: ${curl_rtsp_msg}
3579 RTMP support: ${curl_rtmp_msg}
3580 metalink support: ${curl_mtlnk_msg}
3581 Protocols: ${SUPPORT_PROTOCOLS}
3584 if test "x$soname_bump" = "xyes"; then
3587 SONAME bump: yes - WARNING: this library will be built with the SONAME
3588 number bumped due to (a detected) ABI breakage.
3589 See lib/README.curl_off_t for details on this.