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
1854 if test "x$OPT_GNUTLS" = "xyes"; then
1855 dnl this is with no partiular path given
1856 CURL_CHECK_PKGCONFIG(gnutls)
1858 if test "$PKGCONFIG" != "no" ; then
1859 addlib=`$PKGCONFIG --libs-only-l gnutls`
1860 addld=`$PKGCONFIG --libs-only-L gnutls`
1861 addcflags=`$PKGCONFIG --cflags-only-I gnutls`
1862 version=`$PKGCONFIG --modversion gnutls`
1863 gtlslib=`echo $addld | $SED -e 's/-L//'`
1865 dnl without pkg-config, we try libgnutls-config as that was how it
1867 check=`libgnutls-config --version 2>/dev/null`
1868 if test -n "$check"; then
1869 addlib=`libgnutls-config --libs`
1870 addcflags=`libgnutls-config --cflags`
1871 version=`libgnutls-config --version`
1872 gtlslib=`libgnutls-config --prefix`/lib$libsuff
1876 dnl this is with a given path, first check if there's a libgnutls-config
1877 dnl there and if not, make an educated guess
1878 cfg=$OPT_GNUTLS/bin/libgnutls-config
1879 check=`$cfg --version 2>/dev/null`
1880 if test -n "$check"; then
1881 addlib=`$cfg --libs`
1882 addcflags=`$cfg --cflags`
1883 version=`$cfg --version`
1884 gtlslib=`$cfg --prefix`/lib$libsuff
1886 dnl without pkg-config and libgnutls-config, we guess a lot!
1888 addld=-L$OPT_GNUTLS/lib$libsuff
1889 addcflags=-I$OPT_GNUTLS/include
1890 version="" # we just don't know
1891 gtlslib=$OPT_GNUTLS/lib$libsuff
1895 if test -z "$version"; then
1896 dnl lots of efforts, still no go
1900 if test -n "$addlib"; then
1903 CLEANCPPFLAGS="$CPPFLAGS"
1904 CLEADLDFLAGS="$LDFLAGS"
1906 LIBS="$addlib $LIBS"
1907 LDFLAGS="$LDFLAGS $addld"
1908 if test "$addcflags" != "-I/usr/include"; then
1909 CPPFLAGS="$CPPFLAGS $addcflags"
1912 AC_CHECK_LIB(gnutls, gnutls_check_version,
1914 AC_DEFINE(USE_GNUTLS, 1, [if GnuTLS is enabled])
1915 AC_SUBST(USE_GNUTLS, [1])
1918 curl_ssl_msg="enabled (GnuTLS)"
1922 CPPFLAGS="$CLEANCPPFLAGS"
1925 if test "x$USE_GNUTLS" = "xyes"; then
1926 AC_MSG_NOTICE([detected GnuTLS version $version])
1928 if test -n "$gtlslib"; then
1929 dnl when shared libs were found in a path that the run-time
1930 dnl linker doesn't search through, we need to add it to
1931 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1933 if test "x$cross_compiling" != "xyes"; then
1934 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlslib"
1935 export LD_LIBRARY_PATH
1936 AC_MSG_NOTICE([Added $gtlslib to LD_LIBRARY_PATH])
1943 fi dnl GNUTLS not disabled
1948 dnl Check which crypto backend GnuTLS uses
1951 if test "$GNUTLS_ENABLED" = "1"; then
1953 # First check if we can detect either crypto library via transitive linking
1954 AC_CHECK_LIB(gnutls, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1955 if test "$USE_GNUTLS_NETTLE" = ""; then
1956 AC_CHECK_LIB(gnutls, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1958 # If not, try linking directly to both of them to see if they are available
1959 if test "$USE_GNUTLS_NETTLE" = ""; then
1960 AC_CHECK_LIB(nettle, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1962 if test "$USE_GNUTLS_NETTLE" = ""; then
1963 AC_CHECK_LIB(gcrypt, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1965 if test "$USE_GNUTLS_NETTLE" = ""; then
1966 AC_MSG_ERROR([GnuTLS found, but neither gcrypt nor nettle found])
1968 if test "$USE_GNUTLS_NETTLE" = "1"; then
1969 AC_DEFINE(USE_GNUTLS_NETTLE, 1, [if GnuTLS uses nettle as crypto backend])
1970 AC_SUBST(USE_GNUTLS_NETTLE, [1])
1971 LIBS="-lnettle $LIBS"
1973 LIBS="-lgcrypt $LIBS"
1978 dnl We require GnuTLS with SRP support.
1980 if test "$GNUTLS_ENABLED" = "1"; then
1981 AC_CHECK_LIB(gnutls, gnutls_srp_verifier,
1983 AC_DEFINE(HAVE_GNUTLS_SRP, 1, [if you have the function gnutls_srp_verifier])
1984 AC_SUBST(HAVE_GNUTLS_SRP, [1])
1988 dnl ----------------------------------------------------
1989 dnl check for PolarSSL
1990 dnl ----------------------------------------------------
1992 dnl Default to compiler & linker defaults for PolarSSL files & libraries.
1997 AC_ARG_WITH(polarssl,dnl
1998 AC_HELP_STRING([--with-polarssl=PATH],[where to look for PolarSSL, PATH points to the installation root])
1999 AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]),
2000 OPT_POLARSSL=$withval)
2002 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2004 if test X"$OPT_POLARSSL" != Xno; then
2006 if test "$OPT_POLARSSL" = "yes"; then
2010 if test -z "$OPT_POLARSSL" ; then
2011 dnl check for lib first without setting any new path
2013 AC_CHECK_LIB(polarssl, havege_init,
2014 dnl libpolarssl found, set the variable
2016 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
2017 AC_SUBST(USE_POLARSSL, [1])
2020 curl_ssl_msg="enabled (PolarSSL)"
2029 if test "x$USE_POLARSSL" != "xyes"; then
2030 dnl add the path and test again
2031 addld=-L$OPT_POLARSSL/lib$libsuff
2032 addcflags=-I$OPT_POLARSSL/include
2033 polarssllib=$OPT_POLARSSL/lib$libsuff
2035 LDFLAGS="$LDFLAGS $addld"
2036 if test "$addcflags" != "-I/usr/include"; then
2037 CPPFLAGS="$CPPFLAGS $addcflags"
2040 AC_CHECK_LIB(polarssl, ssl_init,
2042 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
2043 AC_SUBST(USE_POLARSSL, [1])
2046 curl_ssl_msg="enabled (PolarSSL)"
2054 if test "x$USE_POLARSSL" = "xyes"; then
2055 AC_MSG_NOTICE([detected PolarSSL])
2057 LIBS="-lpolarssl $LIBS"
2059 if test -n "$polarssllib"; then
2060 dnl when shared libs were found in a path that the run-time
2061 dnl linker doesn't search through, we need to add it to
2062 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2064 if test "x$cross_compiling" != "xyes"; then
2065 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$polarssllib"
2066 export LD_LIBRARY_PATH
2067 AC_MSG_NOTICE([Added $polarssllib to LD_LIBRARY_PATH])
2072 fi dnl PolarSSL not disabled
2076 dnl ----------------------------------------------------
2077 dnl check for CyaSSL
2078 dnl ----------------------------------------------------
2080 dnl Default to compiler & linker defaults for CyaSSL files & libraries.
2085 AC_ARG_WITH(cyassl,dnl
2086 AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to the installation root (default: system lib default)])
2087 AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
2088 OPT_CYASSL=$withval)
2090 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2092 if test X"$OPT_CYASSL" != Xno; then
2094 if test "$OPT_CYASSL" = "yes"; then
2098 if test -z "$OPT_CYASSL" ; then
2099 dnl check for lib in system default first
2101 AC_CHECK_LIB(cyassl, CyaSSL_Init,
2102 dnl libcyassl found, set the variable
2104 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2105 AC_SUBST(USE_CYASSL, [1])
2108 curl_ssl_msg="enabled (CyaSSL)"
2117 if test "x$USE_CYASSL" != "xyes"; then
2118 dnl add the path and test again
2119 addld=-L$OPT_CYASSL/lib$libsuff
2120 addcflags=-I$OPT_CYASSL/include
2121 cyassllib=$OPT_CYASSL/lib$libsuff
2123 LDFLAGS="$LDFLAGS $addld"
2124 if test "$addcflags" != "-I/usr/include"; then
2125 CPPFLAGS="$CPPFLAGS $addcflags"
2128 AC_CHECK_LIB(cyassl, CyaSSL_Init,
2130 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2131 AC_SUBST(USE_CYASSL, [1])
2134 curl_ssl_msg="enabled (CyaSSL)"
2142 if test "x$USE_CYASSL" = "xyes"; then
2143 AC_MSG_NOTICE([detected CyaSSL])
2145 LIBS="-lcyassl -lm $LIBS"
2147 if test -n "$cyassllib"; then
2148 dnl when shared libs were found in a path that the run-time
2149 dnl linker doesn't search through, we need to add it to
2150 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2152 if test "x$cross_compiling" != "xyes"; then
2153 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$cyassllib"
2154 export LD_LIBRARY_PATH
2155 AC_MSG_NOTICE([Added $cyassllib to LD_LIBRARY_PATH])
2161 fi dnl CyaSSL not disabled
2165 dnl ----------------------------------------------------
2166 dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
2167 dnl ----------------------------------------------------
2169 dnl Default to compiler & linker defaults for NSS files & libraries.
2173 AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root])
2174 AC_HELP_STRING([--without-nss], [disable NSS detection]),
2177 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2179 if test X"$OPT_NSS" != Xno; then
2187 if test "x$OPT_NSS" = "xyes"; then
2189 CURL_CHECK_PKGCONFIG(nss)
2191 if test "$PKGCONFIG" != "no" ; then
2192 addlib=`$PKGCONFIG --libs nss`
2193 addcflags=`$PKGCONFIG --cflags nss`
2194 version=`$PKGCONFIG --modversion nss`
2195 nssprefix=`$PKGCONFIG --variable=prefix nss`
2197 dnl Without pkg-config, we check for nss-config
2199 check=`nss-config --version 2>/dev/null`
2200 if test -n "$check"; then
2201 addlib=`nss-config --libs`
2202 addcflags=`nss-config --cflags`
2203 version=`nss-config --version`
2204 nssprefix=`nss-config --prefix`
2212 # Without pkg-config, we'll kludge in some defaults
2213 addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
2214 addcflags="-I$OPT_NSS/include"
2219 if test -n "$addlib"; then
2222 CLEANCPPFLAGS="$CPPFLAGS"
2224 LIBS="$addlib $LIBS"
2225 if test "$addcflags" != "-I/usr/include"; then
2226 CPPFLAGS="$CPPFLAGS $addcflags"
2229 dnl The function PK11_CreateGenericObject is needed to load libnsspem.so
2230 AC_CHECK_LIB(nss3, PK11_CreateGenericObject,
2232 AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
2233 AC_SUBST(USE_NSS, [1])
2236 curl_ssl_msg="enabled (NSS)"
2240 CPPFLAGS="$CLEANCPPFLAGS"
2243 if test "x$USE_NSS" = "xyes"; then
2244 AC_MSG_NOTICE([detected NSS version $version])
2246 dnl NSS_InitContext() was introduced in NSS 3.12.5 and helps to prevent
2247 dnl collisions on NSS initialization/shutdown with other libraries
2248 AC_CHECK_FUNC(NSS_InitContext,
2250 AC_DEFINE(HAVE_NSS_INITCONTEXT, 1, [if you have the NSS_InitContext function])
2251 AC_SUBST(HAVE_NSS_INITCONTEXT, [1])
2254 dnl when shared libs were found in a path that the run-time
2255 dnl linker doesn't search through, we need to add it to
2256 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2258 if test "x$cross_compiling" != "xyes"; then
2259 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
2260 export LD_LIBRARY_PATH
2261 AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
2267 fi dnl NSS not disabled
2269 fi dnl curl_ssl_msg = init_ssl_msg
2273 AC_ARG_WITH(axtls,dnl
2274 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.])
2275 AC_HELP_STRING([--without-axtls], [disable axTLS]),
2278 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2279 if test X"$OPT_AXTLS" != Xno; then
2280 dnl backup the pre-axtls variables
2281 CLEANLDFLAGS="$LDFLAGS"
2282 CLEANCPPFLAGS="$CPPFLAGS"
2285 case "$OPT_AXTLS" in
2287 dnl --with-axtls (without path) used
2288 PREFIX_AXTLS=/usr/local
2289 LIB_AXTLS="$PREFIX_AXTLS/lib"
2290 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2291 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2294 dnl no --with-axtls option given, just check default places
2298 dnl check the given --with-axtls spot
2299 PREFIX_AXTLS=$OPT_AXTLS
2300 LIB_AXTLS="$PREFIX_AXTLS/lib"
2301 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2302 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2306 AC_CHECK_LIB(axtls, ssl_version,[
2307 LIBS="-laxtls $LIBS"
2308 AC_DEFINE(USE_AXTLS, 1, [if axTLS is enabled])
2309 AC_SUBST(USE_AXTLS, [1])
2312 curl_ssl_msg="enabled (axTLS)"
2315 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
2316 export LD_LIBRARY_PATH
2317 AC_MSG_NOTICE([Added $LIB_AXTLS to LD_LIBRARY_PATH])
2319 LDFLAGS="$CLEANLDFLAGS"
2320 CPPFLAGS="$CLEANCPPFLAGS"
2326 if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$DARWINSSL_ENABLED" = "x"; then
2327 AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
2328 AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls or --with-winssl to address this.])
2330 # SSL is enabled, genericly
2331 AC_SUBST(SSL_ENABLED)
2335 dnl **********************************************************************
2336 dnl Check for the CA bundle
2337 dnl **********************************************************************
2339 CURL_CHECK_CA_BUNDLE
2341 dnl **********************************************************************
2342 dnl Check for libmetalink
2343 dnl **********************************************************************
2347 AC_ARG_WITH(libmetalink,dnl
2348 AC_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root])
2349 AC_HELP_STRING([--without-libmetalink], [disable libmetalink detection]),
2350 OPT_LIBMETALINK=$withval)
2352 if test X"$OPT_LIBMETALINK" != Xno; then
2361 if test "x$OPT_LIBMETALINK" = "xyes"; then
2362 dnl this is with no partiular path given
2364 CURL_CHECK_PKGCONFIG(libmetalink)
2366 dnl When particular path is given, set PKG_CONFIG_LIBDIR using the path.
2367 LIBMETALINK_PCDIR="$OPT_LIBMETALINK/lib/pkgconfig"
2368 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$LIBMETALINK_PCDIR"])
2369 if test -f "$LIBMETALINK_PCDIR/libmetalink.pc"; then
2372 if test "$PKGTEST" = "yes"; then
2373 CURL_CHECK_PKGCONFIG(libmetalink, [$LIBMETALINK_PCDIR])
2376 if test "$PKGTEST" = "yes" && test "$PKGCONFIG" != "no"; then
2377 addlib=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2378 $PKGCONFIG --libs-only-l libmetalink`
2379 addld=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2380 $PKGCONFIG --libs-only-L libmetalink`
2381 addcflags=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2382 $PKGCONFIG --cflags-only-I libmetalink`
2383 version=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2384 $PKGCONFIG --modversion libmetalink`
2385 libmetalinklib=`echo $addld | $SED -e 's/-L//'`
2387 if test -n "$addlib"; then
2389 clean_CPPFLAGS="$CPPFLAGS"
2390 clean_LDFLAGS="$LDFLAGS"
2392 CPPFLAGS="$addcflags $clean_CPPFLAGS"
2393 LDFLAGS="$addld $clean_LDFLAGS"
2394 LIBS="$addlib $clean_LIBS"
2395 AC_MSG_CHECKING([if libmetalink is recent enough])
2398 # include <metalink/metalink.h>
2400 if(0 != metalink_strerror(0)) /* added in 0.1.0 */
2404 AC_MSG_RESULT([yes ($version)])
2407 AC_MSG_RESULT([no ($version)])
2408 AC_MSG_NOTICE([libmetalink library defective or too old])
2411 CPPFLAGS="$clean_CPPFLAGS"
2412 LDFLAGS="$clean_LDFLAGS"
2414 if test "$want_metalink" = "yes"; then
2415 dnl finally libmetalink will be used
2416 AC_DEFINE(USE_METALINK, 1, [Define to enable metalink support])
2417 LIBMETALINK_LIBS=$addlib
2418 LIBMETALINK_LDFLAGS=$addld
2419 LIBMETALINK_CFLAGS=$addcflags
2420 AC_SUBST([LIBMETALINK_LIBS])
2421 AC_SUBST([LIBMETALINK_LDFLAGS])
2422 AC_SUBST([LIBMETALINK_CFLAGS])
2423 curl_mtlnk_msg="enabled"
2429 dnl **********************************************************************
2430 dnl Check for the presence of LIBSSH2 libraries and headers
2431 dnl **********************************************************************
2433 dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
2435 AC_ARG_WITH(libssh2,dnl
2436 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])
2437 AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
2438 OPT_LIBSSH2=$withval)
2440 if test X"$OPT_LIBSSH2" != Xno; then
2441 dnl backup the pre-libssh2 variables
2442 CLEANLDFLAGS="$LDFLAGS"
2443 CLEANCPPFLAGS="$CPPFLAGS"
2446 case "$OPT_LIBSSH2" in
2448 dnl --with-libssh2 (without path) used
2449 CURL_CHECK_PKGCONFIG(libssh2)
2451 if test "$PKGCONFIG" != "no" ; then
2452 LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2`
2453 LD_SSH2=`$PKGCONFIG --libs-only-L libssh2`
2454 CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2`
2455 version=`$PKGCONFIG --modversion libssh2`
2456 DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'`
2461 dnl no --with-libssh2 option given, just check default places
2464 dnl use the given --with-libssh2 spot
2465 PREFIX_SSH2=$OPT_LIBSSH2
2469 dnl if given with a prefix, we set -L and -I based on that
2470 if test -n "$PREFIX_SSH2"; then
2472 LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff
2473 CPP_SSH2=-I${PREFIX_SSH2}/include
2474 DIR_SSH2=${PREFIX_SSH2}/lib$libsuff
2477 LDFLAGS="$LDFLAGS $LD_SSH2"
2478 CPPFLAGS="$CPPFLAGS $CPP_SSH2"
2479 LIBS="$LIB_SSH2 $LIBS"
2481 AC_CHECK_LIB(ssh2, libssh2_channel_open_ex)
2483 AC_CHECK_HEADERS(libssh2.h,
2484 curl_ssh_msg="enabled (libSSH2)"
2486 AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
2487 AC_SUBST(USE_LIBSSH2, [1])
2490 if test X"$OPT_LIBSSH2" != Xoff &&
2491 test "$LIBSSH2_ENABLED" != "1"; then
2492 AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!])
2495 if test "$LIBSSH2_ENABLED" = "1"; then
2496 if test -n "$DIR_SSH2"; then
2497 dnl when the libssh2 shared libs were found in a path that the run-time
2498 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
2499 dnl to prevent further configure tests to fail due to this
2501 dnl libssh2_version is a post 1.0 addition
2502 dnl libssh2_init and libssh2_exit were added in 1.2.5
2503 dnl libssh2_scp_send64 was added in 1.2.6
2504 dnl libssh2_session_handshake was added in 1.2.8
2505 AC_CHECK_FUNCS( libssh2_version libssh2_init libssh2_exit \
2506 libssh2_scp_send64 libssh2_session_handshake)
2507 if test "x$cross_compiling" != "xyes"; then
2508 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
2509 export LD_LIBRARY_PATH
2510 AC_MSG_NOTICE([Added $DIR_SSH2 to LD_LIBRARY_PATH])
2514 dnl no libssh2, revert back to clean variables
2515 LDFLAGS=$CLEANLDFLAGS
2516 CPPFLAGS=$CLEANCPPFLAGS
2521 dnl **********************************************************************
2522 dnl Check for the presence of LIBRTMP libraries and headers
2523 dnl **********************************************************************
2525 dnl Default to compiler & linker defaults for LIBRTMP files & libraries.
2527 AC_ARG_WITH(librtmp,dnl
2528 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])
2529 AC_HELP_STRING([--without-librtmp], [disable LIBRTMP]),
2530 OPT_LIBRTMP=$withval)
2532 if test X"$OPT_LIBRTMP" != Xno; then
2533 dnl backup the pre-librtmp variables
2534 CLEANLDFLAGS="$LDFLAGS"
2535 CLEANCPPFLAGS="$CPPFLAGS"
2538 case "$OPT_LIBRTMP" in
2540 dnl --with-librtmp (without path) used
2541 CURL_CHECK_PKGCONFIG(librtmp)
2543 if test "$PKGCONFIG" != "no" ; then
2544 LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp`
2545 LD_RTMP=`$PKGCONFIG --libs-only-L librtmp`
2546 CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp`
2547 version=`$PKGCONFIG --modversion librtmp`
2548 DIR_RTMP=`echo $LD_RTMP | $SED -e 's/-L//'`
2550 dnl To avoid link errors, we do not allow --librtmp without
2551 dnl a pkgconfig file
2552 AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.])
2557 dnl no --with-librtmp option given, just check default places
2561 dnl use the given --with-librtmp spot
2562 PREFIX_RTMP=$OPT_LIBRTMP
2566 dnl if given with a prefix, we set -L and -I based on that
2567 if test -n "$PREFIX_RTMP"; then
2568 LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff
2569 CPP_RTMP=-I${PREFIX_RTMP}/include
2570 DIR_RTMP=${PREFIX_RTMP}/lib$libsuff
2573 LDFLAGS="$LDFLAGS $LD_RTMP"
2574 CPPFLAGS="$CPPFLAGS $CPP_RTMP"
2575 LIBS="$LIB_RTMP $LIBS"
2577 AC_CHECK_LIB(rtmp, RTMP_Init,
2579 AC_CHECK_HEADERS(librtmp/rtmp.h,
2580 curl_rtmp_msg="enabled (librtmp)"
2582 AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use])
2583 AC_SUBST(USE_LIBRTMP, [1])
2586 dnl not found, revert back to clean variables
2587 LDFLAGS=$CLEANLDFLAGS
2588 CPPFLAGS=$CLEANCPPFLAGS
2592 if test X"$OPT_LIBRTMP" != Xoff &&
2593 test "$LIBRTMP_ENABLED" != "1"; then
2594 AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!])
2599 dnl **********************************************************************
2600 dnl Check for linker switch for versioned symbols
2601 dnl **********************************************************************
2603 versioned_symbols_flavour=
2604 AC_MSG_CHECKING([whether versioned symbols are wanted])
2605 AC_ARG_ENABLE(versioned-symbols,
2606 AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library])
2607 AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]),
2608 [ case "$enableval" in
2609 yes) AC_MSG_RESULT(yes)
2610 AC_MSG_CHECKING([if libraries can be versioned])
2611 GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
2612 if test -z "$GLD"; then
2614 AC_MSG_WARN([You need an ld version supporting the --version-script option])
2617 if test "x$OPENSSL_ENABLED" = "x1"; then
2618 versioned_symbols_flavour="OPENSSL_"
2619 elif test "x$GNUTLS_ENABLED" == "x1"; then
2620 versioned_symbols_flavour="GNUTLS_"
2621 elif test "x$NSS_ENABLED" == "x1"; then
2622 versioned_symbols_flavour="NSS_"
2623 elif test "x$POLARSSL_ENABLED" == "x1"; then
2624 versioned_symbols_flavour="POLARSSL_"
2625 elif test "x$CYASSL_ENABLED" == "x1"; then
2626 versioned_symbols_flavour="CYASSL_"
2627 elif test "x$AXTLS_ENABLED" == "x1"; then
2628 versioned_symbols_flavour="AXTLS_"
2629 elif test "x$WINSSL_ENABLED" == "x1"; then
2630 versioned_symbols_flavour="WINSSL_"
2631 elif test "x$DARWINSSL_ENABLED" == "x1"; then
2632 versioned_symbols_flavour="DARWINSSL_"
2634 versioned_symbols_flavour=""
2636 versioned_symbols="yes"
2640 *) AC_MSG_RESULT(no)
2648 AC_SUBST(VERSIONED_FLAVOUR, ["$versioned_symbols_flavour"])
2649 AM_CONDITIONAL(VERSIONED_SYMBOLS, test "x$versioned_symbols" = "xyes")
2651 dnl -------------------------------------------------
2652 dnl check winidn option before other IDN libraries
2653 dnl -------------------------------------------------
2655 AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)])
2656 OPT_WINIDN="default"
2658 AC_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN])
2659 AC_HELP_STRING([--without-winidn], [disable Windows native IDN]),
2660 OPT_WINIDN=$withval)
2661 case "$OPT_WINIDN" in
2663 dnl --without-winidn option used or configure option not specified
2668 dnl --with-winidn option used without path
2670 want_winidn_path="default"
2671 AC_MSG_RESULT([yes])
2674 dnl --with-winidn option used with path
2676 want_winidn_path="$withval"
2677 AC_MSG_RESULT([yes ($withval)])
2681 if test "$want_winidn" = "yes"; then
2682 dnl winidn library support has been requested
2683 clean_CPPFLAGS="$CPPFLAGS"
2684 clean_LDFLAGS="$LDFLAGS"
2686 WINIDN_LIBS="-lnormaliz"
2688 if test "$want_winidn_path" != "default"; then
2689 dnl path has been specified
2690 dnl pkg-config not available or provides no info
2691 WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff"
2692 WINIDN_CPPFLAGS="-I$want_winidn_path/include"
2693 WINIDN_DIR="$want_winidn_path/lib$libsuff"
2696 CPPFLAGS="$WINIDN_CPPFLAGS $CPPFLAGS"
2697 LDFLAGS="$WINIDN_LDFLAGS $LDFLAGS"
2698 LIBS="$WINIDN_LIBS $LIBS"
2700 AC_MSG_CHECKING([if IdnToUnicode can be linked])
2702 AC_LANG_FUNC_LINK_TRY([IdnToUnicode])
2704 AC_MSG_RESULT([yes])
2705 tst_links_winidn="yes"
2708 tst_links_winidn="no"
2711 if test "$tst_links_winidn" = "yes"; then
2712 AC_DEFINE(USE_WIN32_IDN, 1, [Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz).])
2713 AC_DEFINE(WANT_IDN_PROTOTYPES, 1, [Define to 1 to provide own prototypes.])
2714 AC_SUBST([IDN_ENABLED], [1])
2715 curl_idn_msg="enabled (Windows-native)"
2717 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2718 CPPFLAGS="$clean_CPPFLAGS"
2719 LDFLAGS="$clean_LDFLAGS"
2724 dnl **********************************************************************
2725 dnl Check for the presence of IDN libraries and headers
2726 dnl **********************************************************************
2728 AC_MSG_CHECKING([whether to build with libidn])
2731 AC_HELP_STRING([--with-libidn=PATH],[Enable libidn usage])
2732 AC_HELP_STRING([--without-libidn],[Disable libidn usage]),
2736 dnl --without-libidn option used
2741 dnl configure option not specified
2743 want_idn_path="default"
2744 AC_MSG_RESULT([(assumed) yes])
2747 dnl --with-libidn option used without path
2749 want_idn_path="default"
2750 AC_MSG_RESULT([yes])
2753 dnl --with-libidn option used with path
2755 want_idn_path="$withval"
2756 AC_MSG_RESULT([yes ($withval)])
2760 if test "$want_idn" = "yes"; then
2761 dnl idn library support has been requested
2762 clean_CPPFLAGS="$CPPFLAGS"
2763 clean_LDFLAGS="$LDFLAGS"
2767 if test "$want_idn_path" != "default"; then
2768 dnl path has been specified
2769 IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig"
2770 CURL_CHECK_PKGCONFIG(libidn, [$IDN_PCDIR])
2771 if test "$PKGCONFIG" != "no"; then
2772 IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2773 $PKGCONFIG --libs-only-l libidn 2>/dev/null`
2774 IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2775 $PKGCONFIG --libs-only-L libidn 2>/dev/null`
2776 IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2777 $PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2778 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2780 dnl pkg-config not available or provides no info
2782 IDN_LDFLAGS="-L$want_idn_path/lib$libsuff"
2783 IDN_CPPFLAGS="-I$want_idn_path/include"
2784 IDN_DIR="$want_idn_path/lib$libsuff"
2787 dnl path not specified
2788 CURL_CHECK_PKGCONFIG(libidn)
2789 if test "$PKGCONFIG" != "no"; then
2790 IDN_LIBS=`$PKGCONFIG --libs-only-l libidn 2>/dev/null`
2791 IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn 2>/dev/null`
2792 IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2793 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2795 dnl pkg-config not available or provides no info
2800 if test "$PKGCONFIG" != "no"; then
2801 AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"])
2802 AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"])
2803 AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2804 AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"])
2806 AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"])
2807 AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"])
2808 AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2809 AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"])
2812 CPPFLAGS="$IDN_CPPFLAGS $CPPFLAGS"
2813 LDFLAGS="$IDN_LDFLAGS $LDFLAGS"
2814 LIBS="$IDN_LIBS $LIBS"
2816 AC_MSG_CHECKING([if idna_to_ascii_4i can be linked])
2818 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_4i])
2820 AC_MSG_RESULT([yes])
2821 tst_links_libidn="yes"
2824 tst_links_libidn="no"
2826 if test "$tst_links_libidn" = "no"; then
2827 AC_MSG_CHECKING([if idna_to_ascii_lz can be linked])
2829 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_lz])
2831 AC_MSG_RESULT([yes])
2832 tst_links_libidn="yes"
2835 tst_links_libidn="no"
2839 if test "$tst_links_libidn" = "yes"; then
2840 AC_DEFINE(HAVE_LIBIDN, 1, [Define to 1 if you have the `idn' library (-lidn).])
2841 dnl different versions of libidn have different setups of these:
2842 AC_CHECK_FUNCS( idn_free idna_strerror tld_strerror )
2843 AC_CHECK_HEADERS( idn-free.h tld.h )
2844 if test "x$ac_cv_header_tld_h" = "xyes"; then
2845 AC_SUBST([IDN_ENABLED], [1])
2846 curl_idn_msg="enabled"
2847 if test -n "$IDN_DIR"; then
2848 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
2849 export LD_LIBRARY_PATH
2850 AC_MSG_NOTICE([Added $IDN_DIR to LD_LIBRARY_PATH])
2853 AC_MSG_WARN([Libraries for IDN support too old: IDN disabled])
2854 CPPFLAGS="$clean_CPPFLAGS"
2855 LDFLAGS="$clean_LDFLAGS"
2859 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2860 CPPFLAGS="$clean_CPPFLAGS"
2861 LDFLAGS="$clean_LDFLAGS"
2867 dnl Let's hope this split URL remains working:
2868 dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
2869 dnl genprogc/thread_quick_ref.htm
2872 dnl **********************************************************************
2873 dnl Back to "normal" configuring
2874 dnl **********************************************************************
2876 dnl Checks for header files.
2879 CURL_CHECK_HEADER_MALLOC
2880 CURL_CHECK_HEADER_MEMORY
2882 dnl Now check for the very most basic headers. Then we can use these
2883 dnl ones as default-headers when checking for the rest!
2926 dnl to do if not found
2930 dnl default includes
2932 #ifdef HAVE_SYS_TYPES_H
2933 #include <sys/types.h>
2935 #ifdef HAVE_SYS_TIME_H
2936 #include <sys/time.h>
2938 #ifdef HAVE_SYS_SELECT_H
2939 #include <sys/select.h>
2941 #ifdef HAVE_SYS_SOCKET_H
2942 #include <sys/socket.h>
2944 #ifdef HAVE_NETINET_IN_H
2945 #include <netinet/in.h>
2947 #ifdef HAVE_SYS_UN_H
2953 dnl Checks for typedefs, structures, and compiler characteristics.
2955 CURL_CHECK_VARIADIC_MACROS
2958 CURL_CHECK_STRUCT_TIMEVAL
2959 CURL_VERIFY_RUNTIMELIBS
2961 AC_CHECK_SIZEOF(size_t)
2962 AC_CHECK_SIZEOF(long)
2963 AC_CHECK_SIZEOF(int)
2964 AC_CHECK_SIZEOF(short)
2966 AC_CHECK_SIZEOF(time_t)
2967 AC_CHECK_SIZEOF(off_t)
2970 if test x"$ac_cv_native_windows" != "xyes" &&
2971 test $ac_cv_sizeof_off_t -ne $curl_sizeof_curl_off_t; then
2972 AC_MSG_WARN([This libcurl built is probably not ABI compatible with previous])
2973 AC_MSG_WARN([builds! You MUST read lib/README.curl_off_t to figure it out.])
2978 AC_CHECK_TYPE(long long,
2979 [AC_DEFINE(HAVE_LONGLONG, 1,
2980 [Define to 1 if the compiler supports the 'long long' data type.])]
2984 if test "xyes" = "x$longlong"; then
2985 AC_MSG_CHECKING([if numberLL works])
2989 long long val = 1000LL;
2992 AC_MSG_RESULT([yes])
2993 AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
3001 AC_CHECK_TYPE(ssize_t, ,
3002 AC_DEFINE(ssize_t, int, [the signed version of size_t]))
3004 # check for bool type
3005 AC_CHECK_TYPE([bool],[
3006 AC_DEFINE(HAVE_BOOL_T, 1,
3007 [Define to 1 if bool is an available type.])
3009 #ifdef HAVE_SYS_TYPES_H
3010 #include <sys/types.h>
3012 #ifdef HAVE_STDBOOL_H
3013 #include <stdbool.h>
3017 CURL_CONFIGURE_CURL_SOCKLEN_T
3019 CURL_CONFIGURE_PULL_SYS_POLL
3023 TYPE_SOCKADDR_STORAGE
3029 CURL_CHECK_FUNC_SELECT
3031 CURL_CHECK_FUNC_RECV
3032 CURL_CHECK_FUNC_RECVFROM
3033 CURL_CHECK_FUNC_SEND
3034 CURL_CHECK_MSG_NOSIGNAL
3036 CURL_CHECK_FUNC_ALARM
3037 CURL_CHECK_FUNC_BASENAME
3038 CURL_CHECK_FUNC_CLOSESOCKET
3039 CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
3040 CURL_CHECK_FUNC_CONNECT
3041 CURL_CHECK_FUNC_FCNTL
3042 CURL_CHECK_FUNC_FDOPEN
3043 CURL_CHECK_FUNC_FREEADDRINFO
3044 CURL_CHECK_FUNC_FREEIFADDRS
3045 CURL_CHECK_FUNC_FSETXATTR
3046 CURL_CHECK_FUNC_FTRUNCATE
3047 CURL_CHECK_FUNC_GETADDRINFO
3048 CURL_CHECK_FUNC_GAI_STRERROR
3049 CURL_CHECK_FUNC_GETHOSTBYADDR
3050 CURL_CHECK_FUNC_GETHOSTBYADDR_R
3051 CURL_CHECK_FUNC_GETHOSTBYNAME
3052 CURL_CHECK_FUNC_GETHOSTBYNAME_R
3053 CURL_CHECK_FUNC_GETHOSTNAME
3054 CURL_CHECK_FUNC_GETIFADDRS
3055 CURL_CHECK_FUNC_GETSERVBYPORT_R
3056 CURL_CHECK_FUNC_GMTIME_R
3057 CURL_CHECK_FUNC_INET_NTOA_R
3058 CURL_CHECK_FUNC_INET_NTOP
3059 CURL_CHECK_FUNC_INET_PTON
3060 CURL_CHECK_FUNC_IOCTL
3061 CURL_CHECK_FUNC_IOCTLSOCKET
3062 CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
3063 CURL_CHECK_FUNC_LOCALTIME_R
3064 CURL_CHECK_FUNC_MEMRCHR
3065 CURL_CHECK_FUNC_POLL
3066 CURL_CHECK_FUNC_SETSOCKOPT
3067 CURL_CHECK_FUNC_SIGACTION
3068 CURL_CHECK_FUNC_SIGINTERRUPT
3069 CURL_CHECK_FUNC_SIGNAL
3070 CURL_CHECK_FUNC_SIGSETJMP
3071 CURL_CHECK_FUNC_SOCKET
3072 CURL_CHECK_FUNC_SOCKETPAIR
3073 CURL_CHECK_FUNC_STRCASECMP
3074 CURL_CHECK_FUNC_STRCASESTR
3075 CURL_CHECK_FUNC_STRCMPI
3076 CURL_CHECK_FUNC_STRDUP
3077 CURL_CHECK_FUNC_STRERROR_R
3078 CURL_CHECK_FUNC_STRICMP
3079 CURL_CHECK_FUNC_STRLCAT
3080 CURL_CHECK_FUNC_STRNCASECMP
3081 CURL_CHECK_FUNC_STRNCMPI
3082 CURL_CHECK_FUNC_STRNICMP
3083 CURL_CHECK_FUNC_STRSTR
3084 CURL_CHECK_FUNC_STRTOK_R
3085 CURL_CHECK_FUNC_STRTOLL
3086 CURL_CHECK_FUNC_WRITEV
3092 AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
3096 AC_CHECK_FUNCS([fork \
3115 eval skipcheck=\$skipcheck_$func
3116 if test "x$skipcheck" != "xyes"; then
3117 AC_MSG_CHECKING([deeper for $func])
3124 AC_MSG_RESULT([yes])
3125 eval "ac_cv_func_$func=yes"
3126 AC_DEFINE_UNQUOTED(XC_SH_TR_CPP([HAVE_$func]), [1],
3127 [Define to 1 if you have the $func function.])
3129 AC_MSG_RESULT([but still no])
3134 dnl Check if the getnameinfo function is available
3135 dnl and get the types of five of its arguments.
3136 CURL_CHECK_FUNC_GETNAMEINFO
3138 if test "$ipv6" = "yes"; then
3139 if test "$ac_cv_func_getaddrinfo" = "yes"; then
3140 AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
3142 AC_SUBST(IPV6_ENABLED)
3144 CURL_CHECK_NI_WITHSCOPEID
3147 CURL_CHECK_NONBLOCKING_SOCKET
3149 dnl ************************************************************
3150 dnl nroff tool stuff
3153 AC_PATH_PROG( PERL, perl, ,
3154 $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
3157 AC_PATH_PROGS( NROFF, gnroff nroff, ,
3158 $PATH:/usr/bin/:/usr/local/bin )
3161 if test -n "$NROFF"; then
3162 dnl only check for nroff options if an nroff command was found
3164 AC_MSG_CHECKING([how to use *nroff to get plain text from man pages])
3166 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3167 if test -z "$mancheck"; then
3169 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3170 if test -z "$mancheck"; then
3172 AC_MSG_RESULT([failed])
3173 AC_MSG_WARN([found no *nroff option to get plaintext from man pages])
3175 AC_MSG_RESULT([$MANOPT])
3178 AC_MSG_RESULT([$MANOPT])
3183 if test -z "$MANOPT"
3185 dnl if no nroff tool was found, or no option that could convert man pages
3186 dnl was found, then disable the built-in manual stuff
3187 AC_MSG_WARN([disabling built-in manual])
3191 dnl *************************************************************************
3192 dnl If the manual variable still is set, then we go with providing a built-in
3195 if test "$USE_MANUAL" = "1"; then
3196 AC_DEFINE(USE_MANUAL, 1, [If you want to build curl with the built-in manual])
3197 curl_manual_msg="enabled"
3200 dnl set variable for use in automakefile(s)
3201 AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
3204 AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
3206 if test "x$ac_cv_native_windows" != "xyes" &&
3207 test "x$enable_shared" = "xyes"; then
3208 build_libhostname=yes
3210 build_libhostname=no
3212 AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes)
3214 CURL_CHECK_OPTION_THREADED_RESOLVER
3216 if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
3218 [Options --enable-threaded-resolver and --enable-ares are mutually exclusive])
3221 if test "$want_thres" = "yes"; then
3222 AC_CHECK_HEADER(pthread.h,
3223 [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>])
3224 save_CFLAGS="$CFLAGS"
3225 CFLAGS="$CFLAGS -pthread"
3226 AC_CHECK_LIB(pthread, pthread_create,
3227 [ AC_MSG_NOTICE([using POSIX threaded DNS lookup])
3228 AC_DEFINE(USE_THREADS_POSIX, 1, [if you want POSIX threaded DNS lookup])
3230 curl_res_msg="threaded"
3232 [ CFLAGS="$save_CFLAGS"])
3236 dnl ************************************************************
3237 dnl disable verbose text strings
3239 AC_MSG_CHECKING([whether to enable verbose strings])
3240 AC_ARG_ENABLE(verbose,
3241 AC_HELP_STRING([--enable-verbose],[Enable verbose strings])
3242 AC_HELP_STRING([--disable-verbose],[Disable verbose strings]),
3243 [ case "$enableval" in
3246 AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings])
3247 curl_verbose_msg="no"
3249 *) AC_MSG_RESULT(yes)
3255 dnl ************************************************************
3256 dnl enable SSPI support
3258 AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)])
3260 AC_HELP_STRING([--enable-sspi],[Enable SSPI])
3261 AC_HELP_STRING([--disable-sspi],[Disable SSPI]),
3262 [ case "$enableval" in
3264 if test "$ac_cv_native_windows" = "yes"; then
3266 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
3267 AC_SUBST(USE_WINDOWS_SSPI, [1])
3268 curl_sspi_msg="enabled"
3271 AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.])
3275 if test "x$WINSSL_ENABLED" = "x1"; then
3276 # --with-winssl implies --enable-sspi
3283 if test "x$WINSSL_ENABLED" = "x1"; then
3284 # --with-winssl implies --enable-sspi
3291 dnl ************************************************************
3292 dnl disable cryptographic authentication
3294 AC_MSG_CHECKING([whether to enable cryptographic authentication methods])
3295 AC_ARG_ENABLE(crypto-auth,
3296 AC_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication])
3297 AC_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]),
3298 [ case "$enableval" in
3301 AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication])
3303 *) AC_MSG_RESULT(yes)
3309 CURL_CHECK_OPTION_NTLM_WB
3313 dnl ************************************************************
3314 dnl disable TLS-SRP authentication
3316 AC_MSG_CHECKING([whether to enable TLS-SRP authentication])
3317 AC_ARG_ENABLE(tls-srp,
3318 AC_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication])
3319 AC_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]),
3320 [ case "$enableval" in
3323 AC_DEFINE(CURL_DISABLE_TLS_SRP, 1, [to disable TLS-SRP authentication])
3326 *) AC_MSG_RESULT(yes)
3334 if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_SSLEAY_SRP" = "x1") ; then
3335 AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication])
3337 curl_tls_srp_msg="enabled"
3340 dnl ************************************************************
3341 dnl disable cookies support
3343 AC_MSG_CHECKING([whether to enable support for cookies])
3344 AC_ARG_ENABLE(cookies,
3345 AC_HELP_STRING([--enable-cookies],[Enable cookies support])
3346 AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
3347 [ case "$enableval" in
3350 AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support])
3352 *) AC_MSG_RESULT(yes)
3358 dnl ************************************************************
3359 dnl hiding of library internal symbols
3361 CURL_CONFIGURE_SYMBOL_HIDING
3363 dnl ************************************************************
3364 dnl enforce SONAME bump
3367 AC_MSG_CHECKING([whether to enforce SONAME bump])
3368 AC_ARG_ENABLE(soname-bump,
3369 AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump])
3370 AC_HELP_STRING([--disable-soname-bump],[Disable enforced SONAME bump]),
3371 [ case "$enableval" in
3372 yes) AC_MSG_RESULT(yes)
3379 AC_MSG_RESULT($soname_bump)
3381 AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes)
3384 dnl All the library dependencies put into $LIB apply to libcurl only.
3388 AC_SUBST(LIBCURL_LIBS)
3389 AC_SUBST(CURL_NETWORK_LIBS)
3390 AC_SUBST(CURL_NETWORK_AND_TIME_LIBS)
3392 dnl BLANK_AT_MAKETIME may be used in our Makefile.am files to blank
3393 dnl LIBS variable used in generated makefile at makefile processing
3394 dnl time. Doing this functionally prevents LIBS from being used for
3395 dnl all link targets in given makefile.
3397 AC_SUBST(BLANK_AT_MAKETIME)
3399 AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes)
3402 ENABLE_SHARED="$enable_shared"
3403 AC_SUBST(ENABLE_SHARED)
3406 dnl For keeping supported features and protocols also in pkg-config file
3407 dnl since it is more cross-compile friendly than curl-config
3410 if test "x$USE_SSLEAY" = "x1"; then
3411 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3412 elif test -n "$SSL_ENABLED"; then
3413 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3415 if test "@KRB4_ENABLED@" = "x1"; then
3416 SUPPORT_FEATURES="$SUPPORT_FEATURES KRB4"
3418 if test "x$IPV6_ENABLED" = "x1"; then
3419 SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
3421 if test "x$HAVE_LIBZ" = "x1"; then
3422 SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
3424 if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1"; then
3425 SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
3427 if test "x$IDN_ENABLED" = "x1"; then
3428 SUPPORT_FEATURES="$SUPPORT_FEATURES IDN"
3430 if test "x$USE_WINDOWS_SSPI" = "x1"; then
3431 SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
3433 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3434 if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
3435 -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
3436 -o "x$DARWINSSL_ENABLED" = "x1"; then
3437 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
3438 if test "x$NTLM_WB_ENABLED" = "x1"; then
3439 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
3443 if test "x$USE_TLS_SRP" = "x1"; then
3444 SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
3447 AC_SUBST(SUPPORT_FEATURES)
3449 dnl For supported protocols in pkg-config file
3450 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3451 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
3452 if test "x$SSL_ENABLED" = "x1"; then
3453 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS"
3456 if test "x$CURL_DISABLE_FTP" != "x1"; then
3457 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP"
3458 if test "x$SSL_ENABLED" = "x1"; then
3459 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS"
3462 if test "x$CURL_DISABLE_FILE" != "x1"; then
3463 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE"
3465 if test "x$CURL_DISABLE_TELNET" != "x1"; then
3466 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET"
3468 if test "x$CURL_DISABLE_LDAP" != "x1"; then
3469 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP"
3470 if test "x$CURL_DISABLE_LDAPS" != "x1"; then
3471 if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") ||
3472 (test "x$USE_OPENLDAP" != "x1" && test "x$HAVE_LDAP_SSL" = "x1"); then
3473 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS"
3477 if test "x$CURL_DISABLE_DICT" != "x1"; then
3478 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT"
3480 if test "x$CURL_DISABLE_TFTP" != "x1"; then
3481 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP"
3483 if test "x$CURL_DISABLE_GOPHER" != "x1"; then
3484 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER"
3486 if test "x$CURL_DISABLE_POP3" != "x1"; then
3487 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3"
3488 if test "x$SSL_ENABLED" = "x1"; then
3489 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S"
3492 if test "x$CURL_DISABLE_IMAP" != "x1"; then
3493 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
3494 if test "x$SSL_ENABLED" = "x1"; then
3495 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
3498 if test "x$CURL_DISABLE_SMTP" != "x1"; then
3499 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
3500 if test "x$SSL_ENABLED" = "x1"; then
3501 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS"
3504 if test "x$USE_LIBSSH2" = "x1"; then
3505 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
3506 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
3508 if test "x$CURL_DISABLE_RTSP" != "x1"; then
3509 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
3511 if test "x$USE_LIBRTMP" = "x1"; then
3512 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP"
3515 dnl replace spaces with newlines
3517 dnl replace the newlines back to spaces
3518 SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '`
3520 AC_SUBST(SUPPORT_PROTOCOLS)
3522 dnl squeeze whitespace out of some variables
3530 squeeze LIBCURL_LIBS
3531 squeeze CURL_NETWORK_LIBS
3532 squeeze CURL_NETWORK_AND_TIME_LIBS
3534 squeeze SUPPORT_FEATURES
3535 squeeze SUPPORT_PROTOCOLS
3537 if test "x$want_curldebug_assumed" = "xyes" &&
3538 test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
3539 ac_configure_args="$ac_configure_args --enable-curldebug"
3542 AC_CONFIG_FILES([Makefile \
3544 docs/examples/Makefile \
3545 docs/libcurl/Makefile \
3547 include/curl/Makefile \
3552 tests/data/Makefile \
3553 tests/server/Makefile \
3554 tests/libtest/Makefile \
3555 tests/unit/Makefile \
3557 packages/Win32/Makefile \
3558 packages/Win32/cygwin/Makefile \
3559 packages/Linux/Makefile \
3560 packages/Linux/RPM/Makefile \
3561 packages/Linux/RPM/curl.spec \
3562 packages/Linux/RPM/curl-ssl.spec \
3563 packages/Solaris/Makefile \
3564 packages/EPM/curl.list \
3565 packages/EPM/Makefile \
3566 packages/vms/Makefile \
3567 packages/AIX/Makefile \
3568 packages/AIX/RPM/Makefile \
3569 packages/AIX/RPM/curl.spec \
3575 CURL_GENERATE_CONFIGUREHELP_PM
3577 AC_MSG_NOTICE([Configured to build curl/libcurl:
3579 curl version: ${CURLVERSION}
3581 Install prefix: ${prefix}
3583 SSL support: ${curl_ssl_msg}
3584 SSH support: ${curl_ssh_msg}
3585 zlib support: ${curl_zlib_msg}
3586 krb4 support: ${curl_krb4_msg}
3587 GSSAPI support: ${curl_gss_msg}
3588 SPNEGO support: ${curl_spnego_msg}
3589 TLS-SRP support: ${curl_tls_srp_msg}
3590 resolver: ${curl_res_msg}
3591 ipv6 support: ${curl_ipv6_msg}
3592 IDN support: ${curl_idn_msg}
3593 Build libcurl: Shared=${enable_shared}, Static=${enable_static}
3594 Built-in manual: ${curl_manual_msg}
3595 --libcurl option: ${curl_libcurl_msg}
3596 Verbose errors: ${curl_verbose_msg}
3597 SSPI support: ${curl_sspi_msg}
3598 ca cert bundle: ${ca}
3599 ca cert path: ${capath}
3600 LDAP support: ${curl_ldap_msg}
3601 LDAPS support: ${curl_ldaps_msg}
3602 RTSP support: ${curl_rtsp_msg}
3603 RTMP support: ${curl_rtmp_msg}
3604 metalink support: ${curl_mtlnk_msg}
3605 Protocols: ${SUPPORT_PROTOCOLS}
3608 if test "x$soname_bump" = "xyes"; then
3611 SONAME bump: yes - WARNING: this library will be built with the SONAME
3612 number bumped due to (a detected) ABI breakage.
3613 See lib/README.curl_off_t for details on this.