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_PROTOTYPE_MISMATCH
344 CURL_CHECK_COMPILER_SYMBOL_HIDING
346 CURL_CHECK_NO_UNDEFINED
347 AM_CONDITIONAL(NO_UNDEFINED, test x$need_no_undefined = xyes)
350 AM_CONDITIONAL(CURLDEBUG, test x$want_curldebug = xyes)
352 supports_unittests=yes
353 # cross-compilation of unit tests static library/programs fails when
354 # libcurl shared library is built. This might be due to a libtool or
355 # automake issue. In this case we disable unit tests.
356 if test "x$cross_compiling" != "xno" &&
357 test "x$enable_shared" != "xno"; then
358 supports_unittests=no
361 # IRIX 6.5.24 gcc 3.3 autobuilds fail unittests library compilation due to
362 # a problem related with OpenSSL headers and library versions not matching.
363 # Disable unit tests while time to further investigate this is found.
366 if test "$compiler_id" = "GNU_C"; then
367 supports_unittests=no
372 # All AIX autobuilds fails unit tests linking against unittests library
373 # due to unittests library being built with no symbols or members. Libtool ?
374 # Disable unit tests while time to further investigate this is found.
377 supports_unittests=no
381 dnl Build unit tests when option --enable-debug is given.
382 if test "x$want_debug" = "xyes" &&
383 test "x$supports_unittests" = "xyes"; then
388 AM_CONDITIONAL(BUILD_UNITTESTS, test x$want_unittests = xyes)
390 dnl **********************************************************************
391 dnl Compilation based checks should not be done before this point.
392 dnl **********************************************************************
394 dnl **********************************************************************
395 dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
396 dnl and ws2tcpip.h take precedence over any other further checks which
397 dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
398 dnl this specific header files. And do them before its results are used.
399 dnl **********************************************************************
401 CURL_CHECK_HEADER_WINDOWS
402 CURL_CHECK_NATIVE_WINDOWS
403 case X-"$ac_cv_native_windows" in
405 CURL_CHECK_HEADER_WINSOCK
406 CURL_CHECK_HEADER_WINSOCK2
407 CURL_CHECK_HEADER_WS2TCPIP
408 CURL_CHECK_HEADER_WINLDAP
409 CURL_CHECK_HEADER_WINBER
412 ac_cv_header_winsock_h="no"
413 ac_cv_header_winsock2_h="no"
414 ac_cv_header_ws2tcpip_h="no"
415 ac_cv_header_winldap_h="no"
416 ac_cv_header_winber_h="no"
419 CURL_CHECK_WIN32_LARGEFILE
421 dnl ************************************************************
422 dnl switch off particular protocols
424 AC_MSG_CHECKING([whether to support http])
426 AC_HELP_STRING([--enable-http],[Enable HTTP support])
427 AC_HELP_STRING([--disable-http],[Disable HTTP support]),
428 [ case "$enableval" in
431 AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP])
432 AC_MSG_WARN([disable HTTP disables FTP over proxy and RTSP])
433 AC_SUBST(CURL_DISABLE_HTTP, [1])
434 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
435 AC_SUBST(CURL_DISABLE_RTSP, [1])
437 *) AC_MSG_RESULT(yes)
442 AC_MSG_CHECKING([whether to support ftp])
444 AC_HELP_STRING([--enable-ftp],[Enable FTP support])
445 AC_HELP_STRING([--disable-ftp],[Disable FTP support]),
446 [ case "$enableval" in
449 AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP])
450 AC_SUBST(CURL_DISABLE_FTP, [1])
452 *) AC_MSG_RESULT(yes)
457 AC_MSG_CHECKING([whether to support file])
459 AC_HELP_STRING([--enable-file],[Enable FILE support])
460 AC_HELP_STRING([--disable-file],[Disable FILE support]),
461 [ case "$enableval" in
464 AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE])
465 AC_SUBST(CURL_DISABLE_FILE, [1])
467 *) AC_MSG_RESULT(yes)
472 AC_MSG_CHECKING([whether to support ldap])
474 AC_HELP_STRING([--enable-ldap],[Enable LDAP support])
475 AC_HELP_STRING([--disable-ldap],[Disable LDAP support]),
476 [ case "$enableval" in
479 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
480 AC_SUBST(CURL_DISABLE_LDAP, [1])
488 AC_MSG_CHECKING([whether to support ldaps])
490 AC_HELP_STRING([--enable-ldaps],[Enable LDAPS support])
491 AC_HELP_STRING([--disable-ldaps],[Disable LDAPS support]),
492 [ case "$enableval" in
495 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
496 AC_SUBST(CURL_DISABLE_LDAPS, [1])
498 *) if test "x$CURL_DISABLE_LDAP" = "x1" ; then
499 AC_MSG_RESULT(LDAP needs to be enabled to support LDAPS)
500 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
501 AC_SUBST(CURL_DISABLE_LDAPS, [1])
504 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
505 AC_SUBST(HAVE_LDAP_SSL, [1])
509 if test "x$CURL_DISABLE_LDAP" = "x1" ; then
511 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
512 AC_SUBST(CURL_DISABLE_LDAPS, [1])
515 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
516 AC_SUBST(HAVE_LDAP_SSL, [1])
520 AC_MSG_CHECKING([whether to support rtsp])
522 AC_HELP_STRING([--enable-rtsp],[Enable RTSP support])
523 AC_HELP_STRING([--disable-rtsp],[Disable RTSP support]),
524 [ case "$enableval" in
527 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
528 AC_SUBST(CURL_DISABLE_RTSP, [1])
530 *) if test x$CURL_DISABLE_HTTP = x1 ; then
531 AC_MSG_ERROR(HTTP support needs to be enabled in order to enable RTSP support!)
534 curl_rtsp_msg="enabled"
538 if test "x$CURL_DISABLE_HTTP" != "x1"; then
540 curl_rtsp_msg="enabled"
546 AC_MSG_CHECKING([whether to support proxies])
548 AC_HELP_STRING([--enable-proxy],[Enable proxy support])
549 AC_HELP_STRING([--disable-proxy],[Disable proxy support]),
550 [ case "$enableval" in
553 AC_DEFINE(CURL_DISABLE_PROXY, 1, [to disable proxies])
554 AC_SUBST(CURL_DISABLE_PROXY, [1])
556 *) AC_MSG_RESULT(yes)
562 AC_MSG_CHECKING([whether to support dict])
564 AC_HELP_STRING([--enable-dict],[Enable DICT support])
565 AC_HELP_STRING([--disable-dict],[Disable DICT support]),
566 [ case "$enableval" in
569 AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT])
570 AC_SUBST(CURL_DISABLE_DICT, [1])
572 *) AC_MSG_RESULT(yes)
577 AC_MSG_CHECKING([whether to support telnet])
578 AC_ARG_ENABLE(telnet,
579 AC_HELP_STRING([--enable-telnet],[Enable TELNET support])
580 AC_HELP_STRING([--disable-telnet],[Disable TELNET support]),
581 [ case "$enableval" in
584 AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
585 AC_SUBST(CURL_DISABLE_TELNET, [1])
587 *) AC_MSG_RESULT(yes)
592 AC_MSG_CHECKING([whether to support tftp])
594 AC_HELP_STRING([--enable-tftp],[Enable TFTP support])
595 AC_HELP_STRING([--disable-tftp],[Disable TFTP support]),
596 [ case "$enableval" in
599 AC_DEFINE(CURL_DISABLE_TFTP, 1, [to disable TFTP])
600 AC_SUBST(CURL_DISABLE_TFTP, [1])
602 *) AC_MSG_RESULT(yes)
608 AC_MSG_CHECKING([whether to support pop3])
610 AC_HELP_STRING([--enable-pop3],[Enable POP3 support])
611 AC_HELP_STRING([--disable-pop3],[Disable POP3 support]),
612 [ case "$enableval" in
615 AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3])
616 AC_SUBST(CURL_DISABLE_POP3, [1])
618 *) AC_MSG_RESULT(yes)
625 AC_MSG_CHECKING([whether to support imap])
627 AC_HELP_STRING([--enable-imap],[Enable IMAP support])
628 AC_HELP_STRING([--disable-imap],[Disable IMAP support]),
629 [ case "$enableval" in
632 AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP])
633 AC_SUBST(CURL_DISABLE_IMAP, [1])
635 *) AC_MSG_RESULT(yes)
642 AC_MSG_CHECKING([whether to support smtp])
644 AC_HELP_STRING([--enable-smtp],[Enable SMTP support])
645 AC_HELP_STRING([--disable-smtp],[Disable SMTP support]),
646 [ case "$enableval" in
649 AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP])
650 AC_SUBST(CURL_DISABLE_SMTP, [1])
652 *) AC_MSG_RESULT(yes)
658 AC_MSG_CHECKING([whether to support gopher])
659 AC_ARG_ENABLE(gopher,
660 AC_HELP_STRING([--enable-gopher],[Enable Gopher support])
661 AC_HELP_STRING([--disable-gopher],[Disable Gopher support]),
662 [ case "$enableval" in
665 AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable Gopher])
666 AC_SUBST(CURL_DISABLE_GOPHER, [1])
668 *) AC_MSG_RESULT(yes)
675 dnl **********************************************************************
676 dnl Check for built-in manual
677 dnl **********************************************************************
679 AC_MSG_CHECKING([whether to provide built-in manual])
680 AC_ARG_ENABLE(manual,
681 AC_HELP_STRING([--enable-manual],[Enable built-in manual])
682 AC_HELP_STRING([--disable-manual],[Disable built-in manual]),
683 [ case "$enableval" in
687 *) AC_MSG_RESULT(yes)
694 dnl The actual use of the USE_MANUAL variable is done much later in this
695 dnl script to allow other actions to disable it as well.
697 dnl ************************************************************
698 dnl disable C code generation support
700 AC_MSG_CHECKING([whether to enable generation of C code])
701 AC_ARG_ENABLE(libcurl_option,
702 AC_HELP_STRING([--enable-libcurl-option],[Enable --libcurl C code generation support])
703 AC_HELP_STRING([--disable-libcurl-option],[Disable --libcurl C code generation support]),
704 [ case "$enableval" in
707 AC_DEFINE(CURL_DISABLE_LIBCURL_OPTION, 1, [to disable --libcurl C code generation option])
708 curl_libcurl_msg="no"
710 *) AC_MSG_RESULT(yes)
716 dnl **********************************************************************
717 dnl Checks for libraries.
718 dnl **********************************************************************
720 AC_MSG_CHECKING([whether to use libgcc])
721 AC_ARG_ENABLE(libgcc,
722 AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
723 [ case "$enableval" in
736 dnl gethostbyname without lib or in the nsl lib?
737 AC_CHECK_FUNC(gethostbyname,
738 [HAVE_GETHOSTBYNAME="1"
740 [ AC_CHECK_LIB(nsl, gethostbyname,
741 [HAVE_GETHOSTBYNAME="1"
746 if test "$HAVE_GETHOSTBYNAME" != "1"
748 dnl gethostbyname in the socket lib?
749 AC_CHECK_LIB(socket, gethostbyname,
750 [HAVE_GETHOSTBYNAME="1"
751 LIBS="-lsocket $LIBS"
755 if test "$HAVE_GETHOSTBYNAME" != "1"
757 dnl gethostbyname in the watt lib?
758 AC_CHECK_LIB(watt, gethostbyname,
759 [HAVE_GETHOSTBYNAME="1"
760 CPPFLAGS="-I/dev/env/WATT_ROOT/inc"
761 LDFLAGS="-L/dev/env/WATT_ROOT/lib"
766 dnl At least one system has been identified to require BOTH nsl and socket
767 dnl libs at the same time to link properly.
768 if test "$HAVE_GETHOSTBYNAME" != "1"
770 AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs])
771 my_ac_save_LIBS=$LIBS
772 LIBS="-lnsl -lsocket $LIBS"
780 HAVE_GETHOSTBYNAME="1"
783 LIBS=$my_ac_save_LIBS
787 if test "$HAVE_GETHOSTBYNAME" != "1"
789 dnl This is for winsock systems
790 if test "$ac_cv_header_windows_h" = "yes"; then
791 if test "$ac_cv_header_winsock_h" = "yes"; then
794 winsock_LIB="-lwinsock"
797 winsock_LIB="-lwsock32"
801 if test "$ac_cv_header_winsock2_h" = "yes"; then
802 winsock_LIB="-lws2_32"
804 if test ! -z "$winsock_LIB"; then
805 my_ac_save_LIBS=$LIBS
806 LIBS="$winsock_LIB $LIBS"
807 AC_MSG_CHECKING([for gethostbyname in $winsock_LIB])
810 #ifdef HAVE_WINDOWS_H
811 #ifndef WIN32_LEAN_AND_MEAN
812 #define WIN32_LEAN_AND_MEAN
815 #ifdef HAVE_WINSOCK2_H
816 #include <winsock2.h>
818 #ifdef HAVE_WINSOCK_H
824 gethostbyname("www.dummysite.com");
828 HAVE_GETHOSTBYNAME="1"
832 LIBS=$my_ac_save_LIBS
838 if test "$HAVE_GETHOSTBYNAME" != "1"
840 dnl This is for Minix 3.1
841 AC_MSG_CHECKING([for gethostbyname for Minix 3])
844 /* Older Minix versions may need <net/gen/netdb.h> here instead */
847 gethostbyname("www.dummysite.com");
851 HAVE_GETHOSTBYNAME="1"
857 if test "$HAVE_GETHOSTBYNAME" != "1"
859 dnl This is for eCos with a stubbed DNS implementation
860 AC_MSG_CHECKING([for gethostbyname for eCos])
866 gethostbyname("www.dummysite.com");
870 HAVE_GETHOSTBYNAME="1"
876 if test "$HAVE_GETHOSTBYNAME" != "1"
878 dnl gethostbyname in the network lib - for Haiku OS
879 AC_CHECK_LIB(network, gethostbyname,
880 [HAVE_GETHOSTBYNAME="1"
881 LIBS="-lnetwork $LIBS"
885 if test "$HAVE_GETHOSTBYNAME" != "1"
887 dnl gethostbyname in the net lib - for BeOS
888 AC_CHECK_LIB(net, gethostbyname,
889 [HAVE_GETHOSTBYNAME="1"
895 if test "$HAVE_GETHOSTBYNAME" != "1"; then
896 AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
900 AC_CHECK_FUNC(strcasecmp, , [ AC_CHECK_LIB(resolve, strcasecmp) ])
902 if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
903 AC_CHECK_LIB(resolve, strcasecmp,
904 [LIBS="-lresolve $LIBS"],
908 ac_cv_func_strcasecmp="no"
910 CURL_CHECK_LIBS_CONNECT
912 CURL_NETWORK_LIBS=$LIBS
914 dnl **********************************************************************
915 dnl In case that function clock_gettime with monotonic timer is available,
916 dnl check for additional required libraries.
917 dnl **********************************************************************
918 CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
920 dnl **********************************************************************
921 dnl The preceding library checks are all potentially useful for test
922 dnl servers and libtest cases which require networking and clock_gettime
923 dnl support. Save the list of required libraries at this point for use
924 dnl while linking those test servers and programs.
925 dnl **********************************************************************
926 CURL_NETWORK_AND_TIME_LIBS=$LIBS
928 dnl **********************************************************************
929 dnl Check for the presence of ZLIB libraries and headers
930 dnl **********************************************************************
932 dnl Check for & handle argument to --with-zlib.
934 clean_CPPFLAGS=$CPPFLAGS
935 clean_LDFLAGS=$LDFLAGS
939 AC_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
940 AC_HELP_STRING([--without-zlib],[disable use of zlib]),
941 [OPT_ZLIB="$withval"])
943 if test "$OPT_ZLIB" = "no" ; then
944 AC_MSG_WARN([zlib disabled])
946 if test "$OPT_ZLIB" = "yes" ; then
950 if test -z "$OPT_ZLIB" ; then
951 dnl check for the lib first without setting any new path, since many
952 dnl people have it in the default path
954 AC_CHECK_LIB(z, inflateEnd,
955 dnl libz found, set the variable
958 dnl if no lib found, try /usr/local
959 [OPT_ZLIB="/usr/local"])
963 dnl Add a nonempty path to the compiler flags
964 if test -n "$OPT_ZLIB"; then
965 CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include"
966 LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff"
969 AC_CHECK_HEADER(zlib.h,
973 dnl if the lib wasn't found already, try again with the new paths
974 if test "$HAVE_LIBZ" != "1"; then
975 AC_CHECK_LIB(z, gzread,
977 dnl the lib was found!
981 [ CPPFLAGS=$clean_CPPFLAGS
982 LDFLAGS=$clean_LDFLAGS])
986 dnl zlib.h was not found, restore the flags
987 CPPFLAGS=$clean_CPPFLAGS
988 LDFLAGS=$clean_LDFLAGS]
991 if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1"
993 AC_MSG_WARN([configure found only the libz lib, not the header file!])
995 CPPFLAGS=$clean_CPPFLAGS
996 LDFLAGS=$clean_LDFLAGS
998 elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1"
1000 AC_MSG_WARN([configure found only the libz header file, not the lib!])
1001 CPPFLAGS=$clean_CPPFLAGS
1002 LDFLAGS=$clean_LDFLAGS
1004 elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1"
1006 dnl both header and lib were found!
1008 AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file])
1009 AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available])
1012 LIBS="-lz $clean_LIBS"
1014 dnl replace 'HAVE_LIBZ' in the automake makefile.ams
1016 AC_MSG_NOTICE([found both libz and libz.h header])
1017 curl_zlib_msg="enabled"
1021 dnl set variable for use in automakefile(s)
1022 AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1)
1025 dnl **********************************************************************
1027 dnl **********************************************************************
1030 AC_ARG_WITH(ldap-lib,
1031 AC_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]),
1032 [LDAPLIBNAME="$withval"])
1035 AC_ARG_WITH(lber-lib,
1036 AC_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]),
1037 [LBERLIBNAME="$withval"])
1039 if test x$CURL_DISABLE_LDAP != x1 ; then
1041 CURL_CHECK_HEADER_LBER
1042 CURL_CHECK_HEADER_LDAP
1043 CURL_CHECK_HEADER_LDAPSSL
1044 CURL_CHECK_HEADER_LDAP_SSL
1046 if test -z "$LDAPLIBNAME" ; then
1047 if test "$ac_cv_native_windows" = "yes"; then
1048 dnl Windows uses a single and unique LDAP library name
1049 LDAPLIBNAME="wldap32"
1054 if test "$LDAPLIBNAME" ; then
1055 AC_CHECK_LIB("$LDAPLIBNAME", ldap_init,, [
1056 AC_MSG_WARN(["$LDAPLIBNAME" is not an LDAP library: LDAP disabled])
1057 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1058 AC_SUBST(CURL_DISABLE_LDAP, [1])
1059 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1060 AC_SUBST(CURL_DISABLE_LDAPS, [1])])
1062 dnl Try to find the right ldap libraries for this system
1063 CURL_CHECK_LIBS_LDAP
1064 case X-"$curl_cv_ldap_LIBS" in
1066 AC_MSG_WARN([Cannot find libraries for LDAP support: LDAP disabled])
1067 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1068 AC_SUBST(CURL_DISABLE_LDAP, [1])
1069 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1070 AC_SUBST(CURL_DISABLE_LDAPS, [1])
1076 if test x$CURL_DISABLE_LDAP != x1 ; then
1078 if test "$LBERLIBNAME" ; then
1079 dnl If name is "no" then don't define this library at all
1080 dnl (it's only needed if libldap.so's dependencies are broken).
1081 if test "$LBERLIBNAME" != "no" ; then
1082 AC_CHECK_LIB("$LBERLIBNAME", ber_free,, [
1083 AC_MSG_WARN(["$LBERLIBNAME" is not an LBER library: LDAP disabled])
1084 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1085 AC_SUBST(CURL_DISABLE_LDAP, [1])
1086 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1087 AC_SUBST(CURL_DISABLE_LDAPS, [1])])
1092 if test x$CURL_DISABLE_LDAP != x1 ; then
1093 AC_CHECK_FUNCS([ldap_url_parse ldap_init_fd])
1095 if test "$LDAPLIBNAME" = "wldap32"; then
1096 curl_ldap_msg="enabled (winldap)"
1097 AC_DEFINE(CURL_LDAP_WIN, 1, [Use Windows LDAP implementation])
1099 curl_ldap_msg="enabled (OpenLDAP)"
1100 if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then
1101 AC_DEFINE(USE_OPENLDAP, 1, [Use OpenLDAP-specific code])
1102 AC_SUBST(USE_OPENLDAP, [1])
1107 if test x$CURL_DISABLE_LDAPS != x1 ; then
1108 curl_ldaps_msg="enabled"
1111 dnl **********************************************************************
1113 dnl **********************************************************************
1115 AC_MSG_CHECKING([whether to enable ipv6])
1117 AC_HELP_STRING([--enable-ipv6],[Enable ipv6 (with ipv4) support])
1118 AC_HELP_STRING([--disable-ipv6],[Disable ipv6 support]),
1119 [ case "$enableval" in
1124 *) AC_MSG_RESULT(yes)
1129 AC_TRY_RUN([ /* is AF_INET6 available? */
1130 #include <sys/types.h>
1131 #include <sys/socket.h>
1134 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1148 if test "$ipv6" = "yes"; then
1149 curl_ipv6_msg="enabled"
1152 # Check if struct sockaddr_in6 have sin6_scope_id member
1153 if test "$ipv6" = yes; then
1154 AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member])
1156 #include <sys/types.h>
1157 #include <netinet/in.h>] ,
1158 struct sockaddr_in6 s; s.sin6_scope_id = 0; , have_sin6_scope_id=yes)
1159 if test "$have_sin6_scope_id" = yes; then
1160 AC_MSG_RESULT([yes])
1161 AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member])
1167 dnl **********************************************************************
1168 dnl Check if the operating system allows programs to write to their own argv[]
1169 dnl **********************************************************************
1171 AC_MSG_CHECKING([if argv can be written to])
1174 int main(int argc, char ** argv) {
1176 return (argv[0][0] == ' ')?0:1;
1180 curl_cv_writable_argv=yes
1182 curl_cv_writable_argv=no
1184 curl_cv_writable_argv=cross
1186 case $curl_cv_writable_argv in
1188 AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv])
1196 AC_MSG_WARN([the previous check could not be made default was used])
1200 dnl **********************************************************************
1201 dnl Check for the presence of Kerberos4 libraries and headers
1202 dnl **********************************************************************
1204 AC_ARG_WITH(krb4-includes,
1205 AC_HELP_STRING([--with-krb4-includes=DIR],
1206 [Specify location of kerberos4 headers]),[
1207 CPPFLAGS="$CPPFLAGS -I$withval"
1212 AC_ARG_WITH(krb4-libs,
1213 AC_HELP_STRING([--with-krb4-libs=DIR],[Specify location of kerberos4 libs]),[
1214 LDFLAGS="$LDFLAGS -L$withval"
1221 AC_ARG_WITH(krb4,dnl
1222 AC_HELP_STRING([--with-krb4=DIR],[where to look for Kerberos4]),[
1224 if test X"$OPT_KRB4" != Xno; then
1226 if test X"$OPT_KRB4" != Xyes; then
1227 LDFLAGS="$LDFLAGS -L$OPT_KRB4/lib$libsuff"
1228 KRB4LIB="$OPT_KRB4/lib$libsuff"
1229 CPPFLAGS="$CPPFLAGS -I$OPT_KRB4/include"
1230 KRB4INC="$OPT_KRB4/include"
1235 AC_MSG_CHECKING([if Kerberos4 support is requested])
1237 if test "$want_krb4" = yes
1239 if test "$ipv6" = "yes"; then
1240 echo krb4 is not compatible with IPv6
1245 dnl Check for & handle argument to --with-krb4
1247 AC_MSG_CHECKING(where to look for Kerberos4)
1248 if test X"$OPT_KRB4" = Xyes
1250 AC_MSG_RESULT([defaults])
1252 AC_MSG_RESULT([libs in $KRB4LIB, headers in $KRB4INC])
1255 dnl Check for DES library
1256 AC_CHECK_LIB(des, des_pcbc_encrypt,
1258 AC_CHECK_HEADERS(des.h)
1261 AC_CHECK_FUNC(res_search, , [AC_CHECK_LIB(resolv, res_search)])
1263 dnl Check for the Kerberos4 library
1264 AC_CHECK_LIB(krb, krb_net_read,
1266 dnl Check for header files
1267 AC_CHECK_HEADERS(krb.h)
1269 dnl we found the required libraries, add to LIBS
1270 LIBS="-lkrb -lcom_err -ldes $LIBS"
1272 dnl Check for function krb_get_our_ip_for_realm
1273 dnl this is needed for NAT networks
1274 AC_CHECK_FUNCS(krb_get_our_ip_for_realm)
1277 AC_DEFINE(HAVE_KRB4, 1,
1278 [if you have the Kerberos4 libraries (including -ldes)])
1280 dnl substitute it too!
1282 AC_SUBST(KRB4_ENABLED)
1284 curl_krb4_msg="enabled"
1286 dnl the krb4 stuff needs a strlcpy()
1287 AC_CHECK_FUNCS(strlcpy)
1295 dnl **********************************************************************
1296 dnl Check for FBopenssl(SPNEGO) libraries
1297 dnl **********************************************************************
1300 AC_HELP_STRING([--with-spnego=DIR],
1301 [Specify location of SPNEGO library fbopenssl]), [
1302 SPNEGO_ROOT="$withval"
1303 if test x"$SPNEGO_ROOT" != xno; then
1308 AC_MSG_CHECKING([if SPNEGO support is requested])
1309 if test x"$want_spnego" = xyes; then
1311 if test X"$SPNEGO_ROOT" = Xyes; then
1312 AC_MSG_ERROR([FBOpenSSL libs and/or directories were not found where specified!])
1315 if test -z "$SPNEGO_LIB_DIR"; then
1316 LDFLAGS="$LDFLAGS -L$SPNEGO_ROOT -lfbopenssl"
1318 LDFLAGS="$LDFLAGS $SPNEGO_LIB_DIR"
1322 AC_DEFINE(HAVE_SPNEGO, 1,
1323 [Define this if you have the SPNEGO library fbopenssl])
1324 curl_spnego_msg="enabled"
1330 dnl **********************************************************************
1331 dnl Check for GSS-API libraries
1332 dnl **********************************************************************
1334 dnl check for gss stuff in the /usr as default
1337 AC_ARG_WITH(gssapi-includes,
1338 AC_HELP_STRING([--with-gssapi-includes=DIR],
1339 [Specify location of GSSAPI header]),
1340 [ GSSAPI_INCS="-I$withval"
1344 AC_ARG_WITH(gssapi-libs,
1345 AC_HELP_STRING([--with-gssapi-libs=DIR],
1346 [Specify location of GSSAPI libs]),
1347 [ GSSAPI_LIB_DIR="-L$withval"
1352 AC_HELP_STRING([--with-gssapi=DIR],
1353 [Where to look for GSSAPI]), [
1354 GSSAPI_ROOT="$withval"
1355 if test x"$GSSAPI_ROOT" != xno; then
1357 if test x"$GSSAPI_ROOT" = xyes; then
1358 dnl if yes, then use default root
1364 save_CPPFLAGS="$CPPFLAGS"
1365 AC_MSG_CHECKING([if GSSAPI support is requested])
1366 if test x"$want_gss" = xyes; then
1369 if test -z "$GSSAPI_INCS"; then
1370 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1371 GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
1372 elif test "$GSSAPI_ROOT" != "yes"; then
1373 GSSAPI_INCS="-I$GSSAPI_ROOT/include"
1377 CPPFLAGS="$CPPFLAGS $GSSAPI_INCS"
1379 AC_CHECK_HEADER(gss.h,
1381 dnl found in the given dirs
1382 AC_DEFINE(HAVE_GSSGNU, 1, [if you have the GNU gssapi libraries])
1386 dnl not found, check Heimdal or MIT
1387 AC_CHECK_HEADERS([gssapi/gssapi.h], [], [not_mit=1])
1389 [gssapi/gssapi_generic.h gssapi/gssapi_krb5.h],
1394 #ifdef HAVE_GSSAPI_GSSAPI_H
1395 #include <gssapi/gssapi.h>
1398 if test "x$not_mit" = "x1"; then
1399 dnl MIT not found, check for Heimdal
1400 AC_CHECK_HEADER(gssapi.h,
1403 AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have the Heimdal gssapi libraries])
1406 dnl no header found, disabling GSS
1408 AC_MSG_WARN(disabling GSSAPI since no header files was found)
1413 AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
1414 dnl check if we have a really old MIT kerberos (<= 1.2)
1415 AC_MSG_CHECKING([if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE])
1418 #include <gssapi/gssapi.h>
1419 #include <gssapi/gssapi_generic.h>
1420 #include <gssapi/gssapi_krb5.h>
1425 GSS_C_NT_HOSTBASED_SERVICE,
1429 AC_MSG_RESULT([yes])
1432 AC_DEFINE(HAVE_OLD_GSSMIT, 1,
1433 [if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE])
1441 if test x"$want_gss" = xyes; then
1442 AC_DEFINE(HAVE_GSSAPI, 1, [if you have the gssapi libraries])
1444 curl_gss_msg="enabled (MIT/Heimdal)"
1446 if test -n "$gnu_gss"; then
1447 curl_gss_msg="enabled (GNU GSS)"
1448 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1450 elif test -z "$GSSAPI_LIB_DIR"; then
1453 LIBS="-lgssapi_krb5 -lresolv $LIBS"
1456 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1457 dnl krb5-config doesn't have --libs-only-L or similar, put everything
1459 gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
1460 LIBS="$gss_libs $LIBS"
1461 elif test "$GSSAPI_ROOT" != "yes"; then
1462 LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
1463 LIBS="-lgssapi $LIBS"
1465 LIBS="-lgssapi $LIBS"
1470 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1471 LIBS="-lgssapi $LIBS"
1474 CPPFLAGS="$save_CPPFLAGS"
1477 dnl -------------------------------------------------
1478 dnl check winssl option before other SSL libraries
1479 dnl -------------------------------------------------
1482 AC_ARG_WITH(winssl,dnl
1483 AC_HELP_STRING([--with-winssl],[enable Windows native SSL/TLS])
1484 AC_HELP_STRING([--without-winssl], [disable Windows native SSL/TLS]),
1485 OPT_WINSSL=$withval)
1487 AC_MSG_CHECKING([whether to enable Windows native SSL/TLS (Windows native builds only)])
1488 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1489 if test "x$OPT_WINSSL" != "xno" &&
1490 test "x$ac_cv_native_windows" = "xyes"; then
1492 AC_DEFINE(USE_SCHANNEL, 1, [to enable Windows native SSL/TLS support])
1493 AC_SUBST(USE_SCHANNEL, [1])
1494 curl_ssl_msg="enabled (Windows-native)"
1496 # --with-winssl implies --enable-sspi
1497 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
1498 AC_SUBST(USE_WINDOWS_SSPI, [1])
1499 curl_sspi_msg="enabled"
1508 AC_ARG_WITH(darwinssl,dnl
1509 AC_HELP_STRING([--with-darwinssl],[enable iOS/Mac OS X native SSL/TLS])
1510 AC_HELP_STRING([--without-darwinssl], [disable iOS/Mac OS X native SSL/TLS]),
1511 OPT_DARWINSSL=$withval)
1513 AC_MSG_CHECKING([whether to enable iOS/Mac OS X native SSL/TLS])
1514 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1515 if test "x$OPT_DARWINSSL" != "xno" &&
1516 test -d "/System/Library/Frameworks/Security.framework"; then
1518 AC_DEFINE(USE_DARWINSSL, 1, [to enable iOS/Mac OS X native SSL/TLS support])
1519 AC_SUBST(USE_DARWINSSL, [1])
1520 curl_ssl_msg="enabled (iOS/Mac OS X-native)"
1522 LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Security"
1530 dnl **********************************************************************
1531 dnl Check for the presence of SSL libraries and headers
1532 dnl **********************************************************************
1534 dnl Default to compiler & linker defaults for SSL files & libraries.
1536 dnl Default to no CA bundle
1539 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])
1540 AC_HELP_STRING([--without-ssl], [disable OpenSSL]),
1543 if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
1544 dnl backup the pre-ssl variables
1545 CLEANLDFLAGS="$LDFLAGS"
1546 CLEANCPPFLAGS="$CPPFLAGS"
1551 dnl --with-ssl (without path) used
1552 if test x$cross_compiling != xyes; then
1553 dnl only do pkg-config magic when not cross-compiling
1556 PREFIX_OPENSSL=/usr/local/ssl
1557 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1560 dnl no --with-ssl option given, just check default places
1561 if test x$cross_compiling != xyes; then
1562 dnl only do pkg-config magic when not cross-compiling
1568 dnl check the given --with-ssl spot
1570 PREFIX_OPENSSL=$OPT_SSL
1572 dnl Try pkg-config even when cross-compiling. Since we
1573 dnl specify PKG_CONFIG_LIBDIR we're only looking where
1574 dnl the user told us to look
1575 OPENSSL_PCDIR="$OPT_SSL/lib/pkgconfig"
1576 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$OPENSSL_PCDIR"])
1577 if test -f "$OPENSSL_PCDIR/openssl.pc"; then
1581 dnl in case pkg-config comes up empty, use what we got
1583 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1584 if test "$PREFIX_OPENSSL" != "/usr" ; then
1585 SSL_LDFLAGS="-L$LIB_OPENSSL"
1586 SSL_CPPFLAGS="-I$PREFIX_OPENSSL/include"
1588 SSL_CPPFLAGS="$SSL_CPPFLAGS -I$PREFIX_OPENSSL/include/openssl"
1592 if test "$PKGTEST" = "yes"; then
1594 CURL_CHECK_PKGCONFIG(openssl, [$OPENSSL_PCDIR])
1596 if test "$PKGCONFIG" != "no" ; then
1597 SSL_LIBS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1598 $PKGCONFIG --libs-only-l openssl 2>/dev/null`
1600 SSL_LDFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1601 $PKGCONFIG --libs-only-L openssl 2>/dev/null`
1603 SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1604 $PKGCONFIG --cflags-only-I openssl 2>/dev/null`
1606 AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"])
1607 AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"])
1608 AC_MSG_NOTICE([pkg-config: SSL_CPPFLAGS: "$SSL_CPPFLAGS"])
1610 LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/-L//g'`
1612 dnl use the values pkg-config reported. This is here
1613 dnl instead of below with CPPFLAGS and LDFLAGS because we only
1614 dnl learn about this via pkg-config. If we only have
1615 dnl the argument to --with-ssl we don't know what
1616 dnl additional libs may be necessary. Hope that we
1618 LIBS="$SSL_LIBS $LIBS"
1622 dnl finally, set flags to use SSL
1623 CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
1624 LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
1626 dnl This is for Msys/Mingw
1628 *-*-msys* | *-*-mingw*)
1629 AC_MSG_CHECKING([for gdi32])
1630 my_ac_save_LIBS=$LIBS
1631 LIBS="-lgdi32 $LIBS"
1632 AC_TRY_LINK([#include <windef.h>
1633 #include <wingdi.h>],
1636 AC_MSG_RESULT([yes])],
1637 [ dnl failed, restore LIBS
1638 LIBS=$my_ac_save_LIBS
1644 AC_CHECK_LIB(crypto, CRYPTO_lock,[
1646 LIBS="-lcrypto $LIBS"
1648 LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL"
1649 CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include"
1650 AC_CHECK_LIB(crypto, CRYPTO_add_lock,[
1652 LIBS="-lcrypto $LIBS"], [
1653 LDFLAGS="$CLEANLDFLAGS"
1654 CPPFLAGS="$CLEANCPPFLAGS"
1660 if test X"$HAVECRYPTO" = X"yes"; then
1661 dnl This is only reasonable to do if crypto actually is there: check for
1662 dnl SSL libs NOTE: it is important to do this AFTER the crypto lib
1664 AC_CHECK_LIB(ssl, SSL_connect)
1666 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1667 dnl we didn't find the SSL lib, try the RSAglue/rsaref stuff
1668 AC_MSG_CHECKING(for ssl with RSAglue/rsaref libs in use);
1670 LIBS="-lRSAglue -lrsaref $LIBS"
1671 AC_CHECK_LIB(ssl, SSL_connect)
1672 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1673 dnl still no SSL_connect
1682 dnl Have the libraries--check for SSLeay/OpenSSL headers
1683 AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
1684 openssl/pem.h openssl/ssl.h openssl/err.h,
1685 curl_ssl_msg="enabled (OpenSSL)"
1687 AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]))
1689 if test $ac_cv_header_openssl_x509_h = no; then
1690 dnl we don't use the "action" part of the AC_CHECK_HEADERS macro
1691 dnl since 'err.h' might in fact find a krb4 header with the same
1693 AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h)
1695 if test $ac_cv_header_x509_h = yes &&
1696 test $ac_cv_header_crypto_h = yes &&
1697 test $ac_cv_header_ssl_h = yes; then
1699 curl_ssl_msg="enabled (OpenSSL)"
1705 if test X"$OPENSSL_ENABLED" = X"1"; then
1706 AC_DEFINE(USE_SSLEAY, 1, [if SSL is enabled])
1708 dnl is there a pkcs12.h header present?
1709 AC_CHECK_HEADERS(openssl/pkcs12.h)
1713 dnl USE_SSLEAY is the historical name for what configure calls
1714 dnl OPENSSL_ENABLED; the names should really be unified
1715 USE_SSLEAY="$OPENSSL_ENABLED"
1716 AC_SUBST(USE_SSLEAY)
1718 if test X"$OPT_SSL" != Xoff &&
1719 test "$OPENSSL_ENABLED" != "1"; then
1720 AC_MSG_ERROR([OpenSSL libs and/or directories were not found where specified!])
1724 if test X"$OPENSSL_ENABLED" = X"1"; then
1725 dnl If the ENGINE library seems to be around, check for the OpenSSL engine
1726 dnl stuff, it is kind of "separated" from the main SSL check
1727 AC_CHECK_FUNC(ENGINE_init,
1729 AC_CHECK_HEADERS(openssl/engine.h)
1730 AC_CHECK_FUNCS( ENGINE_load_builtin_engines )
1733 dnl these can only exist if openssl exists
1734 dnl yassl doesn't have SSL_get_shutdown
1736 AC_CHECK_FUNCS( RAND_status \
1740 CRYPTO_cleanup_all_ex_data \
1742 SSLv2_client_method )
1744 dnl Make an attempt to detect if this is actually yassl's headers and
1745 dnl OpenSSL emulation layer. We still leave everything else believing
1746 dnl and acting like OpenSSL.
1748 AC_MSG_CHECKING([for yaSSL using OpenSSL compatibility mode])
1751 #include <openssl/ssl.h>
1753 #if defined(YASSL_VERSION) && defined(OPENSSL_VERSION_NUMBER)
1754 int dummy = SSL_ERROR_NONE;
1756 Not the yaSSL OpenSSL compatibility header.
1760 AC_MSG_RESULT([yes])
1761 AC_DEFINE_UNQUOTED(USE_YASSLEMUL, 1,
1762 [Define to 1 if using yaSSL in OpenSSL compatibility mode.])
1763 curl_ssl_msg="enabled (OpenSSL emulation by yaSSL)"
1769 if test "$OPENSSL_ENABLED" = "1"; then
1770 if test -n "$LIB_OPENSSL"; then
1771 dnl when the ssl shared libs were found in a path that the run-time
1772 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
1773 dnl to prevent further configure tests to fail due to this
1774 if test "x$cross_compiling" != "xyes"; then
1775 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_OPENSSL"
1776 export LD_LIBRARY_PATH
1777 AC_MSG_NOTICE([Added $LIB_OPENSSL to LD_LIBRARY_PATH])
1780 CURL_CHECK_OPENSSL_API
1785 dnl **********************************************************************
1786 dnl Check for the random seed preferences
1787 dnl **********************************************************************
1789 if test X"$OPENSSL_ENABLED" = X"1"; then
1790 AC_ARG_WITH(egd-socket,
1791 AC_HELP_STRING([--with-egd-socket=FILE],
1792 [Entropy Gathering Daemon socket pathname]),
1793 [ EGD_SOCKET="$withval" ]
1795 if test -n "$EGD_SOCKET" ; then
1796 AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET",
1797 [your Entropy Gathering Daemon socket pathname] )
1800 dnl Check for user-specified random device
1802 AC_HELP_STRING([--with-random=FILE],
1803 [read randomness from FILE (default=/dev/urandom)]),
1804 [ RANDOM_FILE="$withval" ],
1806 if test x$cross_compiling != xyes; then
1807 dnl Check for random device
1808 AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
1810 AC_MSG_WARN([skipped the /dev/urandom detection when cross-compiling])
1814 if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
1815 AC_SUBST(RANDOM_FILE)
1816 AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
1817 [a suitable file to read random data from])
1822 dnl We require OpenSSL with SRP support.
1824 if test "$OPENSSL_ENABLED" = "1"; then
1825 AC_CHECK_LIB(crypto, SRP_Calc_client_key,
1827 AC_DEFINE(HAVE_SSLEAY_SRP, 1, [if you have the function SRP_Calc_client_key])
1828 AC_SUBST(HAVE_SSLEAY_SRP, [1])
1832 dnl ----------------------------------------------------
1833 dnl check for GnuTLS
1834 dnl ----------------------------------------------------
1836 dnl Default to compiler & linker defaults for GnuTLS files & libraries.
1839 AC_ARG_WITH(gnutls,dnl
1840 AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root])
1841 AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]),
1842 OPT_GNUTLS=$withval)
1844 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1846 if test X"$OPT_GNUTLS" != Xno; then
1849 if test "x$OPT_GNUTLS" = "xyes"; then
1850 dnl this is with no partiular path given
1851 CURL_CHECK_PKGCONFIG(gnutls)
1853 if test "$PKGCONFIG" != "no" ; then
1854 addlib=`$PKGCONFIG --libs-only-l gnutls`
1855 addld=`$PKGCONFIG --libs-only-L gnutls`
1856 addcflags=`$PKGCONFIG --cflags-only-I gnutls`
1857 version=`$PKGCONFIG --modversion gnutls`
1858 gtlslib=`echo $addld | $SED -e 's/-L//'`
1860 dnl without pkg-config, we try libgnutls-config as that was how it
1862 check=`libgnutls-config --version 2>/dev/null`
1863 if test -n "$check"; then
1864 addlib=`libgnutls-config --libs`
1865 addcflags=`libgnutls-config --cflags`
1866 version=`libgnutls-config --version`
1867 gtlslib=`libgnutls-config --prefix`/lib$libsuff
1871 dnl this is with a given path, first check if there's a libgnutls-config
1872 dnl there and if not, make an educated guess
1873 cfg=$OPT_GNUTLS/bin/libgnutls-config
1874 check=`$cfg --version 2>/dev/null`
1875 if test -n "$check"; then
1876 addlib=`$cfg --libs`
1877 addcflags=`$cfg --cflags`
1878 version=`$cfg --version`
1879 gtlslib=`$cfg --prefix`/lib$libsuff
1881 dnl without pkg-config and libgnutls-config, we guess a lot!
1883 addld=-L$OPT_GNUTLS/lib$libsuff
1884 addcflags=-I$OPT_GNUTLS/include
1885 version="" # we just don't know
1886 gtlslib=$OPT_GNUTLS/lib$libsuff
1890 if test -z "$version"; then
1891 dnl lots of efforts, still no go
1895 if test -n "$addlib"; then
1898 CLEANCPPFLAGS="$CPPFLAGS"
1899 CLEADLDFLAGS="$LDFLAGS"
1901 LIBS="$addlib $LIBS"
1902 LDFLAGS="$LDFLAGS $addld"
1903 if test "$addcflags" != "-I/usr/include"; then
1904 CPPFLAGS="$CPPFLAGS $addcflags"
1907 AC_CHECK_LIB(gnutls, gnutls_check_version,
1909 AC_DEFINE(USE_GNUTLS, 1, [if GnuTLS is enabled])
1910 AC_SUBST(USE_GNUTLS, [1])
1913 curl_ssl_msg="enabled (GnuTLS)"
1917 CPPFLAGS="$CLEANCPPFLAGS"
1920 if test "x$USE_GNUTLS" = "xyes"; then
1921 AC_MSG_NOTICE([detected GnuTLS version $version])
1923 if test -n "$gtlslib"; then
1924 dnl when shared libs were found in a path that the run-time
1925 dnl linker doesn't search through, we need to add it to
1926 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1928 if test "x$cross_compiling" != "xyes"; then
1929 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlslib"
1930 export LD_LIBRARY_PATH
1931 AC_MSG_NOTICE([Added $gtlslib to LD_LIBRARY_PATH])
1938 fi dnl GNUTLS not disabled
1943 dnl Check which crypto backend GnuTLS uses
1946 if test "$GNUTLS_ENABLED" = "1"; then
1948 # First check if we can detect either crypto library via transitive linking
1949 AC_CHECK_LIB(gnutls, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1950 if test "$USE_GNUTLS_NETTLE" = ""; then
1951 AC_CHECK_LIB(gnutls, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1953 # If not, try linking directly to both of them to see if they are available
1954 if test "$USE_GNUTLS_NETTLE" = ""; then
1955 AC_CHECK_LIB(nettle, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1957 if test "$USE_GNUTLS_NETTLE" = ""; then
1958 AC_CHECK_LIB(gcrypt, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1960 if test "$USE_GNUTLS_NETTLE" = ""; then
1961 AC_MSG_ERROR([GnuTLS found, but neither gcrypt nor nettle found])
1963 if test "$USE_GNUTLS_NETTLE" = "1"; then
1964 AC_DEFINE(USE_GNUTLS_NETTLE, 1, [if GnuTLS uses nettle as crypto backend])
1965 AC_SUBST(USE_GNUTLS_NETTLE, [1])
1966 LIBS="-lnettle $LIBS"
1968 LIBS="-lgcrypt $LIBS"
1973 dnl We require GnuTLS with SRP support.
1975 if test "$GNUTLS_ENABLED" = "1"; then
1976 AC_CHECK_LIB(gnutls, gnutls_srp_verifier,
1978 AC_DEFINE(HAVE_GNUTLS_SRP, 1, [if you have the function gnutls_srp_verifier])
1979 AC_SUBST(HAVE_GNUTLS_SRP, [1])
1983 dnl ----------------------------------------------------
1984 dnl check for PolarSSL
1985 dnl ----------------------------------------------------
1987 dnl Default to compiler & linker defaults for PolarSSL files & libraries.
1992 AC_ARG_WITH(polarssl,dnl
1993 AC_HELP_STRING([--with-polarssl=PATH],[where to look for PolarSSL, PATH points to the installation root])
1994 AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]),
1995 OPT_POLARSSL=$withval)
1997 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1999 if test X"$OPT_POLARSSL" != Xno; then
2001 if test "$OPT_POLARSSL" = "yes"; then
2005 if test -z "$OPT_POLARSSL" ; then
2006 dnl check for lib first without setting any new path
2008 AC_CHECK_LIB(polarssl, havege_init,
2009 dnl libpolarssl found, set the variable
2011 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
2012 AC_SUBST(USE_POLARSSL, [1])
2015 curl_ssl_msg="enabled (PolarSSL)"
2019 if test "x$USE_POLARSSL" != "xyes"; then
2020 dnl add the path and test again
2021 addld=-L$OPT_POLARSSL/lib$libsuff
2022 addcflags=-I$OPT_POLARSSL/include
2023 polarssllib=$OPT_POLARSSL/lib$libsuff
2025 LDFLAGS="$LDFLAGS $addld"
2026 if test "$addcflags" != "-I/usr/include"; then
2027 CPPFLAGS="$CPPFLAGS $addcflags"
2030 AC_CHECK_LIB(polarssl, ssl_init,
2032 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
2033 AC_SUBST(USE_POLARSSL, [1])
2036 curl_ssl_msg="enabled (PolarSSL)"
2044 if test "x$USE_POLARSSL" = "xyes"; then
2045 AC_MSG_NOTICE([detected PolarSSL])
2047 LIBS="-lpolarssl $LIBS"
2049 if test -n "$polarssllib"; then
2050 dnl when shared libs were found in a path that the run-time
2051 dnl linker doesn't search through, we need to add it to
2052 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2054 if test "x$cross_compiling" != "xyes"; then
2055 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$polarssllib"
2056 export LD_LIBRARY_PATH
2057 AC_MSG_NOTICE([Added $polarssllib to LD_LIBRARY_PATH])
2062 fi dnl PolarSSL not disabled
2066 dnl ----------------------------------------------------
2067 dnl check for CyaSSL
2068 dnl ----------------------------------------------------
2070 dnl Default to compiler & linker defaults for CyaSSL files & libraries.
2075 AC_ARG_WITH(cyassl,dnl
2076 AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to the installation root (default: system lib default)])
2077 AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
2078 OPT_CYASSL=$withval)
2080 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2082 if test X"$OPT_CYASSL" != Xno; then
2084 if test "$OPT_CYASSL" = "yes"; then
2088 if test -z "$OPT_CYASSL" ; then
2089 dnl check for lib in system default first
2091 AC_CHECK_LIB(cyassl, CyaSSL_Init,
2092 dnl libcyassl found, set the variable
2094 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2095 AC_SUBST(USE_CYASSL, [1])
2098 curl_ssl_msg="enabled (CyaSSL)"
2102 if test "x$USE_CYASSL" != "xyes"; then
2103 dnl add the path and test again
2104 addld=-L$OPT_CYASSL/lib$libsuff
2105 addcflags=-I$OPT_CYASSL/include
2106 cyassllib=$OPT_CYASSL/lib$libsuff
2108 LDFLAGS="$LDFLAGS $addld"
2109 if test "$addcflags" != "-I/usr/include"; then
2110 CPPFLAGS="$CPPFLAGS $addcflags"
2113 AC_CHECK_LIB(cyassl, CyaSSL_Init,
2115 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2116 AC_SUBST(USE_CYASSL, [1])
2119 curl_ssl_msg="enabled (CyaSSL)"
2127 if test "x$USE_CYASSL" = "xyes"; then
2128 AC_MSG_NOTICE([detected CyaSSL])
2130 LIBS="-lcyassl -lm $LIBS"
2132 if test -n "$cyassllib"; then
2133 dnl when shared libs were found in a path that the run-time
2134 dnl linker doesn't search through, we need to add it to
2135 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2137 if test "x$cross_compiling" != "xyes"; then
2138 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$cyassllib"
2139 export LD_LIBRARY_PATH
2140 AC_MSG_NOTICE([Added $cyassllib to LD_LIBRARY_PATH])
2146 fi dnl CyaSSL not disabled
2150 dnl ----------------------------------------------------
2151 dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
2152 dnl ----------------------------------------------------
2154 dnl Default to compiler & linker defaults for NSS files & libraries.
2158 AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root])
2159 AC_HELP_STRING([--without-nss], [disable NSS detection]),
2162 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2164 if test X"$OPT_NSS" != Xno; then
2165 if test "x$OPT_NSS" = "xyes"; then
2167 CURL_CHECK_PKGCONFIG(nss)
2169 if test "$PKGCONFIG" != "no" ; then
2170 addlib=`$PKGCONFIG --libs nss`
2171 addcflags=`$PKGCONFIG --cflags nss`
2172 version=`$PKGCONFIG --modversion nss`
2173 nssprefix=`$PKGCONFIG --variable=prefix nss`
2175 dnl Without pkg-config, we check for nss-config
2177 check=`nss-config --version 2>/dev/null`
2178 if test -n "$check"; then
2179 addlib=`nss-config --libs`
2180 addcflags=`nss-config --cflags`
2181 version=`nss-config --version`
2182 nssprefix=`nss-config --prefix`
2190 # Without pkg-config, we'll kludge in some defaults
2191 addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
2192 addcflags="-I$OPT_NSS/include"
2197 if test -n "$addlib"; then
2200 CLEANCPPFLAGS="$CPPFLAGS"
2202 LIBS="$addlib $LIBS"
2203 if test "$addcflags" != "-I/usr/include"; then
2204 CPPFLAGS="$CPPFLAGS $addcflags"
2207 dnl The function PK11_CreateGenericObject is needed to load libnsspem.so
2208 AC_CHECK_LIB(nss3, PK11_CreateGenericObject,
2210 AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
2211 AC_SUBST(USE_NSS, [1])
2214 curl_ssl_msg="enabled (NSS)"
2218 CPPFLAGS="$CLEANCPPFLAGS"
2221 if test "x$USE_NSS" = "xyes"; then
2222 AC_MSG_NOTICE([detected NSS version $version])
2224 dnl NSS_InitContext() was introduced in NSS 3.12.5 and helps to prevent
2225 dnl collisions on NSS initialization/shutdown with other libraries
2226 AC_CHECK_FUNC(NSS_InitContext,
2228 AC_DEFINE(HAVE_NSS_INITCONTEXT, 1, [if you have the NSS_InitContext function])
2229 AC_SUBST(HAVE_NSS_INITCONTEXT, [1])
2232 dnl when shared libs were found in a path that the run-time
2233 dnl linker doesn't search through, we need to add it to
2234 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2236 if test "x$cross_compiling" != "xyes"; then
2237 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
2238 export LD_LIBRARY_PATH
2239 AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
2245 fi dnl NSS not disabled
2247 fi dnl curl_ssl_msg = init_ssl_msg
2251 AC_ARG_WITH(axtls,dnl
2252 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.])
2253 AC_HELP_STRING([--without-axtls], [disable axTLS]),
2256 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2257 if test X"$OPT_AXTLS" != Xno; then
2258 dnl backup the pre-axtls variables
2259 CLEANLDFLAGS="$LDFLAGS"
2260 CLEANCPPFLAGS="$CPPFLAGS"
2263 case "$OPT_AXTLS" in
2265 dnl --with-axtls (without path) used
2266 PREFIX_AXTLS=/usr/local
2267 LIB_AXTLS="$PREFIX_AXTLS/lib"
2268 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2269 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2272 dnl no --with-axtls option given, just check default places
2276 dnl check the given --with-axtls spot
2277 PREFIX_AXTLS=$OPT_AXTLS
2278 LIB_AXTLS="$PREFIX_AXTLS/lib"
2279 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2280 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2284 AC_CHECK_LIB(axtls, ssl_version,[
2285 LIBS="-laxtls $LIBS"
2286 AC_DEFINE(USE_AXTLS, 1, [if axTLS is enabled])
2287 AC_SUBST(USE_AXTLS, [1])
2290 curl_ssl_msg="enabled (axTLS)"
2293 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
2294 export LD_LIBRARY_PATH
2295 AC_MSG_NOTICE([Added $LIB_AXTLS to LD_LIBRARY_PATH])
2297 LDFLAGS="$CLEANLDFLAGS"
2298 CPPFLAGS="$CLEANCPPFLAGS"
2304 if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$DARWINSSL_ENABLED" = "x"; then
2305 AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
2306 AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls or --with-winssl to address this.])
2308 # SSL is enabled, genericly
2309 AC_SUBST(SSL_ENABLED)
2313 dnl **********************************************************************
2314 dnl Check for the CA bundle
2315 dnl **********************************************************************
2317 CURL_CHECK_CA_BUNDLE
2319 dnl **********************************************************************
2320 dnl Check for libmetalink
2321 dnl **********************************************************************
2325 AC_ARG_WITH(libmetalink,dnl
2326 AC_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root])
2327 AC_HELP_STRING([--without-libmetalink], [disable libmetalink detection]),
2328 OPT_LIBMETALINK=$withval)
2330 if test X"$OPT_LIBMETALINK" != Xno; then
2338 if test "x$OPT_LIBMETALINK" = "xyes"; then
2339 dnl this is with no partiular path given
2341 CURL_CHECK_PKGCONFIG(libmetalink)
2343 dnl When particular path is given, set PKG_CONFIG_LIBDIR using the path.
2344 LIBMETALINK_PCDIR="$OPT_LIBMETALINK/lib/pkgconfig"
2345 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$LIBMETALINK_PCDIR"])
2346 if test -f "$LIBMETALINK_PCDIR/libmetalink.pc"; then
2349 if test "$PKGTEST" = "yes"; then
2350 CURL_CHECK_PKGCONFIG(libmetalink, [$LIBMETALINK_PCDIR])
2353 if test "$PKGTEST" = "yes" && test "$PKGCONFIG" != "no"; then
2354 addlib=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2355 $PKGCONFIG --libs-only-l libmetalink`
2356 addld=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2357 $PKGCONFIG --libs-only-L libmetalink`
2358 addcflags=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2359 $PKGCONFIG --cflags-only-I libmetalink`
2360 version=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2361 $PKGCONFIG --modversion libmetalink`
2362 libmetalinklib=`echo $addld | $SED -e 's/-L//'`
2364 if test -n "$addlib"; then
2366 clean_CPPFLAGS="$CPPFLAGS"
2367 clean_LDFLAGS="$LDFLAGS"
2369 CPPFLAGS="$addcflags $clean_CPPFLAGS"
2370 LDFLAGS="$addld $clean_LDFLAGS"
2371 LIBS="$addlib $clean_LIBS"
2372 AC_MSG_CHECKING([if libmetalink is recent enough])
2375 # include <metalink/metalink.h>
2377 if(0 != metalink_strerror(0)) /* added in 0.1.0 */
2381 AC_MSG_RESULT([yes ($version)])
2384 AC_MSG_RESULT([no ($version)])
2385 AC_MSG_NOTICE([libmetalink library defective or too old])
2388 CPPFLAGS="$clean_CPPFLAGS"
2389 LDFLAGS="$clean_LDFLAGS"
2391 if test "$want_metalink" = "yes"; then
2392 dnl finally libmetalink will be used
2393 AC_DEFINE(USE_METALINK, 1, [Define to enable metalink support])
2394 LIBMETALINK_LIBS=$addlib
2395 LIBMETALINK_LDFLAGS=$addld
2396 LIBMETALINK_CFLAGS=$addcflags
2397 AC_SUBST([LIBMETALINK_LIBS])
2398 AC_SUBST([LIBMETALINK_LDFLAGS])
2399 AC_SUBST([LIBMETALINK_CFLAGS])
2400 curl_mtlnk_msg="enabled"
2406 dnl **********************************************************************
2407 dnl Check for the presence of LIBSSH2 libraries and headers
2408 dnl **********************************************************************
2410 dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
2412 AC_ARG_WITH(libssh2,dnl
2413 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])
2414 AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
2415 OPT_LIBSSH2=$withval)
2417 if test X"$OPT_LIBSSH2" != Xno; then
2418 dnl backup the pre-libssh2 variables
2419 CLEANLDFLAGS="$LDFLAGS"
2420 CLEANCPPFLAGS="$CPPFLAGS"
2423 case "$OPT_LIBSSH2" in
2425 dnl --with-libssh2 (without path) used
2426 CURL_CHECK_PKGCONFIG(libssh2)
2428 if test "$PKGCONFIG" != "no" ; then
2429 LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2`
2430 LD_SSH2=`$PKGCONFIG --libs-only-L libssh2`
2431 CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2`
2432 version=`$PKGCONFIG --modversion libssh2`
2433 DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'`
2438 dnl no --with-libssh2 option given, just check default places
2441 dnl use the given --with-libssh2 spot
2442 PREFIX_SSH2=$OPT_LIBSSH2
2446 dnl if given with a prefix, we set -L and -I based on that
2447 if test -n "$PREFIX_SSH2"; then
2449 LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff
2450 CPP_SSH2=-I${PREFIX_SSH2}/include
2451 DIR_SSH2=${PREFIX_SSH2}/lib$libsuff
2454 LDFLAGS="$LDFLAGS $LD_SSH2"
2455 CPPFLAGS="$CPPFLAGS $CPP_SSH2"
2456 LIBS="$LIB_SSH2 $LIBS"
2458 AC_CHECK_LIB(ssh2, libssh2_channel_open_ex)
2460 AC_CHECK_HEADERS(libssh2.h,
2461 curl_ssh_msg="enabled (libSSH2)"
2463 AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
2464 AC_SUBST(USE_LIBSSH2, [1])
2467 if test X"$OPT_LIBSSH2" != Xoff &&
2468 test "$LIBSSH2_ENABLED" != "1"; then
2469 AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!])
2472 if test "$LIBSSH2_ENABLED" = "1"; then
2473 if test -n "$DIR_SSH2"; then
2474 dnl when the libssh2 shared libs were found in a path that the run-time
2475 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
2476 dnl to prevent further configure tests to fail due to this
2478 dnl libssh2_version is a post 1.0 addition
2479 dnl libssh2_init and libssh2_exit were added in 1.2.5
2480 dnl libssh2_scp_send64 was added in 1.2.6
2481 dnl libssh2_session_handshake was added in 1.2.8
2482 AC_CHECK_FUNCS( libssh2_version libssh2_init libssh2_exit \
2483 libssh2_scp_send64 libssh2_session_handshake)
2484 if test "x$cross_compiling" != "xyes"; then
2485 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
2486 export LD_LIBRARY_PATH
2487 AC_MSG_NOTICE([Added $DIR_SSH2 to LD_LIBRARY_PATH])
2491 dnl no libssh2, revert back to clean variables
2492 LDFLAGS=$CLEANLDFLAGS
2493 CPPFLAGS=$CLEANCPPFLAGS
2498 dnl **********************************************************************
2499 dnl Check for the presence of LIBRTMP libraries and headers
2500 dnl **********************************************************************
2502 dnl Default to compiler & linker defaults for LIBRTMP files & libraries.
2504 AC_ARG_WITH(librtmp,dnl
2505 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])
2506 AC_HELP_STRING([--without-librtmp], [disable LIBRTMP]),
2507 OPT_LIBRTMP=$withval)
2509 if test X"$OPT_LIBRTMP" != Xno; then
2510 dnl backup the pre-librtmp variables
2511 CLEANLDFLAGS="$LDFLAGS"
2512 CLEANCPPFLAGS="$CPPFLAGS"
2515 case "$OPT_LIBRTMP" in
2517 dnl --with-librtmp (without path) used
2518 CURL_CHECK_PKGCONFIG(librtmp)
2520 if test "$PKGCONFIG" != "no" ; then
2521 LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp`
2522 LD_RTMP=`$PKGCONFIG --libs-only-L librtmp`
2523 CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp`
2524 version=`$PKGCONFIG --modversion librtmp`
2525 DIR_RTMP=`echo $LD_RTMP | $SED -e 's/-L//'`
2527 dnl To avoid link errors, we do not allow --librtmp without
2528 dnl a pkgconfig file
2529 AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.])
2534 dnl no --with-librtmp option given, just check default places
2538 dnl use the given --with-librtmp spot
2539 PREFIX_RTMP=$OPT_LIBRTMP
2543 dnl if given with a prefix, we set -L and -I based on that
2544 if test -n "$PREFIX_RTMP"; then
2545 LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff
2546 CPP_RTMP=-I${PREFIX_RTMP}/include
2547 DIR_RTMP=${PREFIX_RTMP}/lib$libsuff
2550 LDFLAGS="$LDFLAGS $LD_RTMP"
2551 CPPFLAGS="$CPPFLAGS $CPP_RTMP"
2552 LIBS="$LIB_RTMP $LIBS"
2554 AC_CHECK_LIB(rtmp, RTMP_Init,
2556 AC_CHECK_HEADERS(librtmp/rtmp.h,
2557 curl_rtmp_msg="enabled (librtmp)"
2559 AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use])
2560 AC_SUBST(USE_LIBRTMP, [1])
2563 dnl not found, revert back to clean variables
2564 LDFLAGS=$CLEANLDFLAGS
2565 CPPFLAGS=$CLEANCPPFLAGS
2569 if test X"$OPT_LIBRTMP" != Xoff &&
2570 test "$LIBRTMP_ENABLED" != "1"; then
2571 AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!])
2576 dnl **********************************************************************
2577 dnl Check for linker switch for versioned symbols
2578 dnl **********************************************************************
2580 versioned_symbols_flavour=
2581 AC_MSG_CHECKING([whether versioned symbols are wanted])
2582 AC_ARG_ENABLE(versioned-symbols,
2583 AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library])
2584 AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]),
2585 [ case "$enableval" in
2586 yes) AC_MSG_RESULT(yes)
2587 AC_MSG_CHECKING([if libraries can be versioned])
2588 GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
2589 if test -z "$GLD"; then
2591 AC_MSG_WARN([You need an ld version supporting the --version-script option])
2594 if test "x$OPENSSL_ENABLED" = "x1"; then
2595 versioned_symbols_flavour="OPENSSL_"
2596 elif test "x$GNUTLS_ENABLED" == "x1"; then
2597 versioned_symbols_flavour="GNUTLS_"
2598 elif test "x$NSS_ENABLED" == "x1"; then
2599 versioned_symbols_flavour="NSS_"
2600 elif test "x$POLARSSL_ENABLED" == "x1"; then
2601 versioned_symbols_flavour="POLARSSL_"
2602 elif test "x$CYASSL_ENABLED" == "x1"; then
2603 versioned_symbols_flavour="CYASSL_"
2604 elif test "x$AXTLS_ENABLED" == "x1"; then
2605 versioned_symbols_flavour="AXTLS_"
2606 elif test "x$WINSSL_ENABLED" == "x1"; then
2607 versioned_symbols_flavour="WINSSL_"
2608 elif test "x$DARWINSSL_ENABLED" == "x1"; then
2609 versioned_symbols_flavour="DARWINSSL_"
2611 versioned_symbols_flavour=""
2613 versioned_symbols="yes"
2617 *) AC_MSG_RESULT(no)
2625 AC_SUBST(VERSIONED_FLAVOUR, ["$versioned_symbols_flavour"])
2626 AM_CONDITIONAL(VERSIONED_SYMBOLS, test "x$versioned_symbols" = "xyes")
2628 dnl -------------------------------------------------
2629 dnl check winidn option before other IDN libraries
2630 dnl -------------------------------------------------
2632 AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)])
2633 OPT_WINIDN="default"
2635 AC_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN])
2636 AC_HELP_STRING([--without-winidn], [disable Windows native IDN]),
2637 OPT_WINIDN=$withval)
2638 case "$OPT_WINIDN" in
2640 dnl --without-winidn option used or configure option not specified
2645 dnl --with-winidn option used without path
2647 want_winidn_path="default"
2648 AC_MSG_RESULT([yes])
2651 dnl --with-winidn option used with path
2653 want_winidn_path="$withval"
2654 AC_MSG_RESULT([yes ($withval)])
2658 if test "$want_winidn" = "yes"; then
2659 dnl winidn library support has been requested
2660 clean_CPPFLAGS="$CPPFLAGS"
2661 clean_LDFLAGS="$LDFLAGS"
2663 WINIDN_LIBS="-lnormaliz"
2665 if test "$want_winidn_path" != "default"; then
2666 dnl path has been specified
2667 dnl pkg-config not available or provides no info
2668 WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff"
2669 WINIDN_CPPFLAGS="-I$want_winidn_path/include"
2670 WINIDN_DIR="$want_winidn_path/lib$libsuff"
2673 CPPFLAGS="$WINIDN_CPPFLAGS $CPPFLAGS"
2674 LDFLAGS="$WINIDN_LDFLAGS $LDFLAGS"
2675 LIBS="$WINIDN_LIBS $LIBS"
2677 AC_MSG_CHECKING([if IdnToUnicode can be linked])
2679 AC_LANG_FUNC_LINK_TRY([IdnToUnicode])
2681 AC_MSG_RESULT([yes])
2682 tst_links_winidn="yes"
2685 tst_links_winidn="no"
2688 if test "$tst_links_winidn" = "yes"; then
2689 AC_DEFINE(USE_WIN32_IDN, 1, [Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz).])
2690 AC_DEFINE(WANT_IDN_PROTOTYPES, 1, [Define to 1 to provide own prototypes.])
2691 AC_SUBST([IDN_ENABLED], [1])
2692 curl_idn_msg="enabled (Windows-native)"
2694 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2695 CPPFLAGS="$clean_CPPFLAGS"
2696 LDFLAGS="$clean_LDFLAGS"
2701 dnl **********************************************************************
2702 dnl Check for the presence of IDN libraries and headers
2703 dnl **********************************************************************
2705 AC_MSG_CHECKING([whether to build with libidn])
2708 AC_HELP_STRING([--with-libidn=PATH],[Enable libidn usage])
2709 AC_HELP_STRING([--without-libidn],[Disable libidn usage]),
2713 dnl --without-libidn option used
2718 dnl configure option not specified
2720 want_idn_path="default"
2721 AC_MSG_RESULT([(assumed) yes])
2724 dnl --with-libidn option used without path
2726 want_idn_path="default"
2727 AC_MSG_RESULT([yes])
2730 dnl --with-libidn option used with path
2732 want_idn_path="$withval"
2733 AC_MSG_RESULT([yes ($withval)])
2737 if test "$want_idn" = "yes"; then
2738 dnl idn library support has been requested
2739 clean_CPPFLAGS="$CPPFLAGS"
2740 clean_LDFLAGS="$LDFLAGS"
2744 if test "$want_idn_path" != "default"; then
2745 dnl path has been specified
2746 IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig"
2747 CURL_CHECK_PKGCONFIG(libidn, [$IDN_PCDIR])
2748 if test "$PKGCONFIG" != "no"; then
2749 IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2750 $PKGCONFIG --libs-only-l libidn 2>/dev/null`
2751 IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2752 $PKGCONFIG --libs-only-L libidn 2>/dev/null`
2753 IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2754 $PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2755 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2757 dnl pkg-config not available or provides no info
2759 IDN_LDFLAGS="-L$want_idn_path/lib$libsuff"
2760 IDN_CPPFLAGS="-I$want_idn_path/include"
2761 IDN_DIR="$want_idn_path/lib$libsuff"
2764 dnl path not specified
2765 CURL_CHECK_PKGCONFIG(libidn)
2766 if test "$PKGCONFIG" != "no"; then
2767 IDN_LIBS=`$PKGCONFIG --libs-only-l libidn 2>/dev/null`
2768 IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn 2>/dev/null`
2769 IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2770 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2772 dnl pkg-config not available or provides no info
2777 if test "$PKGCONFIG" != "no"; then
2778 AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"])
2779 AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"])
2780 AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2781 AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"])
2783 AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"])
2784 AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"])
2785 AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2786 AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"])
2789 CPPFLAGS="$IDN_CPPFLAGS $CPPFLAGS"
2790 LDFLAGS="$IDN_LDFLAGS $LDFLAGS"
2791 LIBS="$IDN_LIBS $LIBS"
2793 AC_MSG_CHECKING([if idna_to_ascii_4i can be linked])
2795 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_4i])
2797 AC_MSG_RESULT([yes])
2798 tst_links_libidn="yes"
2801 tst_links_libidn="no"
2803 if test "$tst_links_libidn" = "no"; then
2804 AC_MSG_CHECKING([if idna_to_ascii_lz can be linked])
2806 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_lz])
2808 AC_MSG_RESULT([yes])
2809 tst_links_libidn="yes"
2812 tst_links_libidn="no"
2816 if test "$tst_links_libidn" = "yes"; then
2817 AC_DEFINE(HAVE_LIBIDN, 1, [Define to 1 if you have the `idn' library (-lidn).])
2818 dnl different versions of libidn have different setups of these:
2819 AC_CHECK_FUNCS( idn_free idna_strerror tld_strerror )
2820 AC_CHECK_HEADERS( idn-free.h tld.h )
2821 if test "x$ac_cv_header_tld_h" = "xyes"; then
2822 AC_SUBST([IDN_ENABLED], [1])
2823 curl_idn_msg="enabled"
2824 if test -n "$IDN_DIR"; then
2825 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
2826 export LD_LIBRARY_PATH
2827 AC_MSG_NOTICE([Added $IDN_DIR to LD_LIBRARY_PATH])
2830 AC_MSG_WARN([Libraries for IDN support too old: IDN disabled])
2831 CPPFLAGS="$clean_CPPFLAGS"
2832 LDFLAGS="$clean_LDFLAGS"
2836 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2837 CPPFLAGS="$clean_CPPFLAGS"
2838 LDFLAGS="$clean_LDFLAGS"
2844 dnl Let's hope this split URL remains working:
2845 dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
2846 dnl genprogc/thread_quick_ref.htm
2849 dnl **********************************************************************
2850 dnl Back to "normal" configuring
2851 dnl **********************************************************************
2853 dnl Checks for header files.
2856 CURL_CHECK_HEADER_MALLOC
2857 CURL_CHECK_HEADER_MEMORY
2859 dnl Now check for the very most basic headers. Then we can use these
2860 dnl ones as default-headers when checking for the rest!
2903 dnl to do if not found
2907 dnl default includes
2909 #ifdef HAVE_SYS_TYPES_H
2910 #include <sys/types.h>
2912 #ifdef HAVE_SYS_TIME_H
2913 #include <sys/time.h>
2915 #ifdef HAVE_SYS_SELECT_H
2916 #include <sys/select.h>
2918 #ifdef HAVE_SYS_SOCKET_H
2919 #include <sys/socket.h>
2921 #ifdef HAVE_NETINET_IN_H
2922 #include <netinet/in.h>
2924 #ifdef HAVE_SYS_UN_H
2930 dnl Checks for typedefs, structures, and compiler characteristics.
2932 CURL_CHECK_VARIADIC_MACROS
2935 CURL_CHECK_STRUCT_TIMEVAL
2936 CURL_VERIFY_RUNTIMELIBS
2938 AC_CHECK_SIZEOF(size_t)
2939 AC_CHECK_SIZEOF(long)
2940 AC_CHECK_SIZEOF(int)
2941 AC_CHECK_SIZEOF(short)
2943 AC_CHECK_SIZEOF(time_t)
2944 AC_CHECK_SIZEOF(off_t)
2947 if test x"$ac_cv_native_windows" != "xyes" &&
2948 test $ac_cv_sizeof_off_t -ne $curl_sizeof_curl_off_t; then
2949 AC_MSG_WARN([This libcurl built is probably not ABI compatible with previous])
2950 AC_MSG_WARN([builds! You MUST read lib/README.curl_off_t to figure it out.])
2955 AC_CHECK_TYPE(long long,
2956 [AC_DEFINE(HAVE_LONGLONG, 1,
2957 [Define to 1 if the compiler supports the 'long long' data type.])]
2961 if test "xyes" = "x$longlong"; then
2962 AC_MSG_CHECKING([if numberLL works])
2966 long long val = 1000LL;
2969 AC_MSG_RESULT([yes])
2970 AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
2978 AC_CHECK_TYPE(ssize_t, ,
2979 AC_DEFINE(ssize_t, int, [the signed version of size_t]))
2981 # check for bool type
2982 AC_CHECK_TYPE([bool],[
2983 AC_DEFINE(HAVE_BOOL_T, 1,
2984 [Define to 1 if bool is an available type.])
2986 #ifdef HAVE_SYS_TYPES_H
2987 #include <sys/types.h>
2989 #ifdef HAVE_STDBOOL_H
2990 #include <stdbool.h>
2994 CURL_CONFIGURE_CURL_SOCKLEN_T
2996 CURL_CONFIGURE_PULL_SYS_POLL
3000 TYPE_SOCKADDR_STORAGE
3006 CURL_CHECK_FUNC_SELECT
3008 CURL_CHECK_FUNC_RECV
3009 CURL_CHECK_FUNC_RECVFROM
3010 CURL_CHECK_FUNC_SEND
3011 CURL_CHECK_MSG_NOSIGNAL
3013 CURL_CHECK_FUNC_ALARM
3014 CURL_CHECK_FUNC_BASENAME
3015 CURL_CHECK_FUNC_CLOSESOCKET
3016 CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
3017 CURL_CHECK_FUNC_CONNECT
3018 CURL_CHECK_FUNC_FCNTL
3019 CURL_CHECK_FUNC_FDOPEN
3020 CURL_CHECK_FUNC_FREEADDRINFO
3021 CURL_CHECK_FUNC_FREEIFADDRS
3022 CURL_CHECK_FUNC_FSETXATTR
3023 CURL_CHECK_FUNC_FTRUNCATE
3024 CURL_CHECK_FUNC_GETADDRINFO
3025 CURL_CHECK_FUNC_GAI_STRERROR
3026 CURL_CHECK_FUNC_GETHOSTBYADDR
3027 CURL_CHECK_FUNC_GETHOSTBYADDR_R
3028 CURL_CHECK_FUNC_GETHOSTBYNAME
3029 CURL_CHECK_FUNC_GETHOSTBYNAME_R
3030 CURL_CHECK_FUNC_GETHOSTNAME
3031 CURL_CHECK_FUNC_GETIFADDRS
3032 CURL_CHECK_FUNC_GETSERVBYPORT_R
3033 CURL_CHECK_FUNC_GMTIME_R
3034 CURL_CHECK_FUNC_INET_NTOA_R
3035 CURL_CHECK_FUNC_INET_NTOP
3036 CURL_CHECK_FUNC_INET_PTON
3037 CURL_CHECK_FUNC_IOCTL
3038 CURL_CHECK_FUNC_IOCTLSOCKET
3039 CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
3040 CURL_CHECK_FUNC_LOCALTIME_R
3041 CURL_CHECK_FUNC_MEMRCHR
3042 CURL_CHECK_FUNC_POLL
3043 CURL_CHECK_FUNC_SETSOCKOPT
3044 CURL_CHECK_FUNC_SIGACTION
3045 CURL_CHECK_FUNC_SIGINTERRUPT
3046 CURL_CHECK_FUNC_SIGNAL
3047 CURL_CHECK_FUNC_SIGSETJMP
3048 CURL_CHECK_FUNC_SOCKET
3049 CURL_CHECK_FUNC_SOCKETPAIR
3050 CURL_CHECK_FUNC_STRCASECMP
3051 CURL_CHECK_FUNC_STRCASESTR
3052 CURL_CHECK_FUNC_STRCMPI
3053 CURL_CHECK_FUNC_STRDUP
3054 CURL_CHECK_FUNC_STRERROR_R
3055 CURL_CHECK_FUNC_STRICMP
3056 CURL_CHECK_FUNC_STRLCAT
3057 CURL_CHECK_FUNC_STRNCASECMP
3058 CURL_CHECK_FUNC_STRNCMPI
3059 CURL_CHECK_FUNC_STRNICMP
3060 CURL_CHECK_FUNC_STRSTR
3061 CURL_CHECK_FUNC_STRTOK_R
3062 CURL_CHECK_FUNC_STRTOLL
3063 CURL_CHECK_FUNC_WRITEV
3069 AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
3073 AC_CHECK_FUNCS([fork \
3092 eval skipcheck=\$skipcheck_$func
3093 if test "x$skipcheck" != "xyes"; then
3094 AC_MSG_CHECKING([deeper for $func])
3101 AC_MSG_RESULT([yes])
3102 eval "ac_cv_func_$func=yes"
3103 AC_DEFINE_UNQUOTED(XC_SH_TR_CPP([HAVE_$func]), [1],
3104 [Define to 1 if you have the $func function.])
3106 AC_MSG_RESULT([but still no])
3111 dnl Check if the getnameinfo function is available
3112 dnl and get the types of five of its arguments.
3113 CURL_CHECK_FUNC_GETNAMEINFO
3115 if test "$ipv6" = "yes"; then
3116 if test "$ac_cv_func_getaddrinfo" = "yes"; then
3117 AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
3119 AC_SUBST(IPV6_ENABLED)
3121 CURL_CHECK_NI_WITHSCOPEID
3124 CURL_CHECK_NONBLOCKING_SOCKET
3126 dnl ************************************************************
3127 dnl nroff tool stuff
3130 AC_PATH_PROG( PERL, perl, ,
3131 $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
3134 AC_PATH_PROGS( NROFF, gnroff nroff, ,
3135 $PATH:/usr/bin/:/usr/local/bin )
3138 if test -n "$NROFF"; then
3139 dnl only check for nroff options if an nroff command was found
3141 AC_MSG_CHECKING([how to use *nroff to get plain text from man pages])
3143 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3144 if test -z "$mancheck"; then
3146 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3147 if test -z "$mancheck"; then
3149 AC_MSG_RESULT([failed])
3150 AC_MSG_WARN([found no *nroff option to get plaintext from man pages])
3152 AC_MSG_RESULT([$MANOPT])
3155 AC_MSG_RESULT([$MANOPT])
3160 if test -z "$MANOPT"
3162 dnl if no nroff tool was found, or no option that could convert man pages
3163 dnl was found, then disable the built-in manual stuff
3164 AC_MSG_WARN([disabling built-in manual])
3168 dnl *************************************************************************
3169 dnl If the manual variable still is set, then we go with providing a built-in
3172 if test "$USE_MANUAL" = "1"; then
3173 AC_DEFINE(USE_MANUAL, 1, [If you want to build curl with the built-in manual])
3174 curl_manual_msg="enabled"
3177 dnl set variable for use in automakefile(s)
3178 AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
3181 AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
3183 if test "x$ac_cv_native_windows" != "xyes" &&
3184 test "x$enable_shared" = "xyes"; then
3185 build_libhostname=yes
3187 build_libhostname=no
3189 AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes)
3191 CURL_CHECK_OPTION_THREADED_RESOLVER
3193 if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
3195 [Options --enable-threaded-resolver and --enable-ares are mutually exclusive])
3198 if test "$want_thres" = "yes"; then
3199 AC_CHECK_HEADER(pthread.h,
3200 [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>])
3201 save_CFLAGS="$CFLAGS"
3202 CFLAGS="$CFLAGS -pthread"
3203 AC_CHECK_LIB(pthread, pthread_create,
3204 [ AC_MSG_NOTICE([using POSIX threaded DNS lookup])
3205 AC_DEFINE(USE_THREADS_POSIX, 1, [if you want POSIX threaded DNS lookup])
3207 curl_res_msg="threaded"
3209 [ CFLAGS="$save_CFLAGS"])
3213 dnl ************************************************************
3214 dnl disable verbose text strings
3216 AC_MSG_CHECKING([whether to enable verbose strings])
3217 AC_ARG_ENABLE(verbose,
3218 AC_HELP_STRING([--enable-verbose],[Enable verbose strings])
3219 AC_HELP_STRING([--disable-verbose],[Disable verbose strings]),
3220 [ case "$enableval" in
3223 AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings])
3224 curl_verbose_msg="no"
3226 *) AC_MSG_RESULT(yes)
3232 dnl ************************************************************
3233 dnl enable SSPI support
3235 AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)])
3237 AC_HELP_STRING([--enable-sspi],[Enable SSPI])
3238 AC_HELP_STRING([--disable-sspi],[Disable SSPI]),
3239 [ case "$enableval" in
3241 if test "$ac_cv_native_windows" = "yes"; then
3243 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
3244 AC_SUBST(USE_WINDOWS_SSPI, [1])
3245 curl_sspi_msg="enabled"
3248 AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.])
3252 if test "x$WINSSL_ENABLED" = "x1"; then
3253 # --with-winssl implies --enable-sspi
3260 if test "x$WINSSL_ENABLED" = "x1"; then
3261 # --with-winssl implies --enable-sspi
3268 dnl ************************************************************
3269 dnl disable cryptographic authentication
3271 AC_MSG_CHECKING([whether to enable cryptographic authentication methods])
3272 AC_ARG_ENABLE(crypto-auth,
3273 AC_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication])
3274 AC_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]),
3275 [ case "$enableval" in
3278 AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication])
3280 *) AC_MSG_RESULT(yes)
3286 CURL_CHECK_OPTION_NTLM_WB
3290 dnl ************************************************************
3291 dnl disable TLS-SRP authentication
3293 AC_MSG_CHECKING([whether to enable TLS-SRP authentication])
3294 AC_ARG_ENABLE(tls-srp,
3295 AC_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication])
3296 AC_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]),
3297 [ case "$enableval" in
3300 AC_DEFINE(CURL_DISABLE_TLS_SRP, 1, [to disable TLS-SRP authentication])
3303 *) AC_MSG_RESULT(yes)
3311 if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_SSLEAY_SRP" = "x1") ; then
3312 AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication])
3314 curl_tls_srp_msg="enabled"
3317 dnl ************************************************************
3318 dnl disable cookies support
3320 AC_MSG_CHECKING([whether to enable support for cookies])
3321 AC_ARG_ENABLE(cookies,
3322 AC_HELP_STRING([--enable-cookies],[Enable cookies support])
3323 AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
3324 [ case "$enableval" in
3327 AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support])
3329 *) AC_MSG_RESULT(yes)
3335 dnl ************************************************************
3336 dnl hiding of library internal symbols
3338 CURL_CONFIGURE_SYMBOL_HIDING
3340 dnl ************************************************************
3341 dnl enforce SONAME bump
3344 AC_MSG_CHECKING([whether to enforce SONAME bump])
3345 AC_ARG_ENABLE(soname-bump,
3346 AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump])
3347 AC_HELP_STRING([--disable-soname-bump],[Disable enforced SONAME bump]),
3348 [ case "$enableval" in
3349 yes) AC_MSG_RESULT(yes)
3356 AC_MSG_RESULT($soname_bump)
3358 AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes)
3361 dnl All the library dependencies put into $LIB apply to libcurl only.
3365 AC_SUBST(LIBCURL_LIBS)
3366 AC_SUBST(CURL_NETWORK_LIBS)
3367 AC_SUBST(CURL_NETWORK_AND_TIME_LIBS)
3369 dnl BLANK_AT_MAKETIME may be used in our Makefile.am files to blank
3370 dnl LIBS variable used in generated makefile at makefile processing
3371 dnl time. Doing this functionally prevents LIBS from being used for
3372 dnl all link targets in given makefile.
3374 AC_SUBST(BLANK_AT_MAKETIME)
3376 AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes)
3379 ENABLE_SHARED="$enable_shared"
3380 AC_SUBST(ENABLE_SHARED)
3383 dnl For keeping supported features and protocols also in pkg-config file
3384 dnl since it is more cross-compile friendly than curl-config
3387 if test "x$USE_SSLEAY" = "x1"; then
3388 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3389 elif test -n "$SSL_ENABLED"; then
3390 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3392 if test "@KRB4_ENABLED@" = "x1"; then
3393 SUPPORT_FEATURES="$SUPPORT_FEATURES KRB4"
3395 if test "x$IPV6_ENABLED" = "x1"; then
3396 SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
3398 if test "x$HAVE_LIBZ" = "x1"; then
3399 SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
3401 if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1"; then
3402 SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
3404 if test "x$IDN_ENABLED" = "x1"; then
3405 SUPPORT_FEATURES="$SUPPORT_FEATURES IDN"
3407 if test "x$USE_WINDOWS_SSPI" = "x1"; then
3408 SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
3410 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3411 if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
3412 -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
3413 -o "x$DARWINSSL_ENABLED" = "x1"; then
3414 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
3415 if test "x$NTLM_WB_ENABLED" = "x1"; then
3416 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
3420 if test "x$USE_TLS_SRP" = "x1"; then
3421 SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
3424 AC_SUBST(SUPPORT_FEATURES)
3426 dnl For supported protocols in pkg-config file
3427 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3428 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
3429 if test "x$SSL_ENABLED" = "x1"; then
3430 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS"
3433 if test "x$CURL_DISABLE_FTP" != "x1"; then
3434 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP"
3435 if test "x$SSL_ENABLED" = "x1"; then
3436 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS"
3439 if test "x$CURL_DISABLE_FILE" != "x1"; then
3440 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE"
3442 if test "x$CURL_DISABLE_TELNET" != "x1"; then
3443 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET"
3445 if test "x$CURL_DISABLE_LDAP" != "x1"; then
3446 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP"
3447 if test "x$CURL_DISABLE_LDAPS" != "x1"; then
3448 if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") ||
3449 (test "x$USE_OPENLDAP" != "x1" && test "x$HAVE_LDAP_SSL" = "x1"); then
3450 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS"
3454 if test "x$CURL_DISABLE_DICT" != "x1"; then
3455 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT"
3457 if test "x$CURL_DISABLE_TFTP" != "x1"; then
3458 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP"
3460 if test "x$CURL_DISABLE_GOPHER" != "x1"; then
3461 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER"
3463 if test "x$CURL_DISABLE_POP3" != "x1"; then
3464 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3"
3465 if test "x$SSL_ENABLED" = "x1"; then
3466 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S"
3469 if test "x$CURL_DISABLE_IMAP" != "x1"; then
3470 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
3471 if test "x$SSL_ENABLED" = "x1"; then
3472 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
3475 if test "x$CURL_DISABLE_SMTP" != "x1"; then
3476 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
3477 if test "x$SSL_ENABLED" = "x1"; then
3478 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS"
3481 if test "x$USE_LIBSSH2" = "x1"; then
3482 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
3483 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
3485 if test "x$CURL_DISABLE_RTSP" != "x1"; then
3486 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
3488 if test "x$USE_LIBRTMP" = "x1"; then
3489 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP"
3492 dnl replace spaces with newlines
3494 dnl replace the newlines back to spaces
3495 SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '`
3497 AC_SUBST(SUPPORT_PROTOCOLS)
3499 dnl squeeze whitespace out of some variables
3507 squeeze LIBCURL_LIBS
3508 squeeze CURL_NETWORK_LIBS
3509 squeeze CURL_NETWORK_AND_TIME_LIBS
3511 squeeze SUPPORT_FEATURES
3512 squeeze SUPPORT_PROTOCOLS
3514 if test "x$want_curldebug_assumed" = "xyes" &&
3515 test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
3516 ac_configure_args="$ac_configure_args --enable-curldebug"
3519 AC_CONFIG_FILES([Makefile \
3521 docs/examples/Makefile \
3522 docs/libcurl/Makefile \
3524 include/curl/Makefile \
3529 tests/data/Makefile \
3530 tests/server/Makefile \
3531 tests/libtest/Makefile \
3532 tests/unit/Makefile \
3534 packages/Win32/Makefile \
3535 packages/Win32/cygwin/Makefile \
3536 packages/Linux/Makefile \
3537 packages/Linux/RPM/Makefile \
3538 packages/Linux/RPM/curl.spec \
3539 packages/Linux/RPM/curl-ssl.spec \
3540 packages/Solaris/Makefile \
3541 packages/EPM/curl.list \
3542 packages/EPM/Makefile \
3543 packages/vms/Makefile \
3544 packages/AIX/Makefile \
3545 packages/AIX/RPM/Makefile \
3546 packages/AIX/RPM/curl.spec \
3552 CURL_GENERATE_CONFIGUREHELP_PM
3554 AC_MSG_NOTICE([Configured to build curl/libcurl:
3556 curl version: ${CURLVERSION}
3558 Install prefix: ${prefix}
3560 SSL support: ${curl_ssl_msg}
3561 SSH support: ${curl_ssh_msg}
3562 zlib support: ${curl_zlib_msg}
3563 krb4 support: ${curl_krb4_msg}
3564 GSSAPI support: ${curl_gss_msg}
3565 SPNEGO support: ${curl_spnego_msg}
3566 TLS-SRP support: ${curl_tls_srp_msg}
3567 resolver: ${curl_res_msg}
3568 ipv6 support: ${curl_ipv6_msg}
3569 IDN support: ${curl_idn_msg}
3570 Build libcurl: Shared=${enable_shared}, Static=${enable_static}
3571 Built-in manual: ${curl_manual_msg}
3572 --libcurl option: ${curl_libcurl_msg}
3573 Verbose errors: ${curl_verbose_msg}
3574 SSPI support: ${curl_sspi_msg}
3575 ca cert bundle: ${ca}
3576 ca cert path: ${capath}
3577 LDAP support: ${curl_ldap_msg}
3578 LDAPS support: ${curl_ldaps_msg}
3579 RTSP support: ${curl_rtsp_msg}
3580 RTMP support: ${curl_rtmp_msg}
3581 metalink support: ${curl_mtlnk_msg}
3582 Protocols: ${SUPPORT_PROTOCOLS}
3585 if test "x$soname_bump" = "xyes"; then
3588 SONAME bump: yes - WARNING: this library will be built with the SONAME
3589 number bumped due to (a detected) ABI breakage.
3590 See lib/README.curl_off_t for details on this.