1 #***************************************************************************
3 # Project ___| | | | _ \| |
5 # | (__| |_| | _ <| |___
6 # \___|\___/|_| \_\_____|
8 # Copyright (C) 1998 - 2011, 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 - 2011 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 src/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_ARES
49 CURL_CHECK_PATH_SEPARATOR_REQUIRED
52 # save the configure arguments
54 CONFIGURE_OPTIONS="\"$ac_configure_args\""
55 AC_SUBST(CONFIGURE_OPTIONS)
58 if test X"$want_werror" = Xyes; then
59 CURL_CFLAG_EXTRAS="-Werror"
61 AC_SUBST(CURL_CFLAG_EXTRAS)
63 dnl SED is mandatory for configure process and libtool.
64 dnl Set it now, allowing it to be changed later.
65 if test -z "$SED"; then
66 dnl allow it to be overridden
67 AC_PATH_PROG([SED], [sed], [not_found],
68 [$PATH:/usr/bin:/usr/local/bin])
69 if test -z "$SED" || test "$SED" = "not_found"; then
70 AC_MSG_ERROR([sed not found in PATH. Cannot continue without sed.])
75 dnl GREP is mandatory for configure process and libtool.
76 dnl Set it now, allowing it to be changed later.
77 if test -z "$GREP"; then
78 dnl allow it to be overridden
79 AC_PATH_PROG([GREP], [grep], [not_found],
80 [$PATH:/usr/bin:/usr/local/bin])
81 if test -z "$GREP" || test "$GREP" = "not_found"; then
82 AC_MSG_ERROR([grep not found in PATH. Cannot continue without grep.])
87 dnl EGREP is mandatory for configure process and libtool.
88 dnl Set it now, allowing it to be changed later.
89 if test -z "$EGREP"; then
90 dnl allow it to be overridden
91 if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
92 AC_MSG_CHECKING([for egrep])
94 AC_MSG_RESULT([$EGREP])
96 AC_PATH_PROG([EGREP], [egrep], [not_found],
97 [$PATH:/usr/bin:/usr/local/bin])
100 if test -z "$EGREP" || test "$EGREP" = "not_found"; then
101 AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.])
105 dnl AR is mandatory for configure process and libtool.
106 dnl This is target dependent, so check it as a tool.
107 if test -z "$AR"; then
108 dnl allow it to be overridden
109 AC_PATH_TOOL([AR], [ar], [not_found],
110 [$PATH:/usr/bin:/usr/local/bin])
111 if test -z "$AR" || test "$AR" = "not_found"; then
112 AC_MSG_ERROR([ar not found in PATH. Cannot continue without ar.])
119 dnl Remove non-configure distributed curlbuild.h
120 if test -f ${srcdir}/include/curl/curlbuild.h; then
121 rm -f ${srcdir}/include/curl/curlbuild.h
124 dnl figure out the libcurl version
125 CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curlver.h`
127 AC_MSG_CHECKING([curl version])
128 AC_MSG_RESULT($CURLVERSION)
130 AC_SUBST(CURLVERSION)
133 dnl we extract the numerical version for curl-config only
134 VERSIONNUM=`$SED -ne 's/^#define LIBCURL_VERSION_NUM 0x\(.*\)/\1/p' ${srcdir}/include/curl/curlver.h`
137 dnl Solaris pkgadd support definitions
138 PKGADD_PKG="HAXXcurl"
139 PKGADD_NAME="cURL - a client that groks URLs"
140 PKGADD_VENDOR="curl.haxx.se"
142 AC_SUBST(PKGADD_NAME)
143 AC_SUBST(PKGADD_VENDOR)
146 dnl initialize all the info variables
147 curl_ssl_msg="no (--with-{ssl,gnutls,nss,polarssl,cyassl,axtls} )"
148 curl_ssh_msg="no (--with-libssh2)"
149 curl_zlib_msg="no (--with-zlib)"
150 curl_krb4_msg="no (--with-krb4*)"
151 curl_gss_msg="no (--with-gssapi)"
152 curl_spnego_msg="no (--with-spnego)"
153 curl_tls_srp_msg="no (--enable-tls-srp)"
154 curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
155 curl_ipv6_msg="no (--enable-ipv6)"
156 curl_idn_msg="no (--with-libidn)"
157 curl_manual_msg="no (--enable-manual)"
158 curl_verbose_msg="enabled (--disable-verbose)"
159 curl_sspi_msg="no (--enable-sspi)"
160 curl_ldap_msg="no (--enable-ldap / --with-ldap-lib / --with-lber-lib)"
161 curl_ldaps_msg="no (--enable-ldaps)"
162 curl_rtsp_msg="no (--enable-rtsp)"
163 curl_rtmp_msg="no (--with-librtmp)"
164 init_ssl_msg=${curl_ssl_msg}
167 dnl Save anything in $LIBS for later
172 dnl Detect the canonical host and target build environment
176 dnl Get system canonical name
177 AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
179 dnl Checks for programs.
182 dnl Our curl_off_t internal and external configure settings
183 CURL_CONFIGURE_CURL_OFF_T
185 dnl This defines _ALL_SOURCE for AIX
186 CURL_CHECK_AIX_ALL_SOURCE
188 dnl Our configure and build reentrant settings
189 CURL_CONFIGURE_THREAD_SAFE
190 CURL_CONFIGURE_REENTRANT
192 dnl check for how to do large files
195 dnl support building of Windows DLLs
198 dnl force libtool to build static libraries with PIC on AMD64-Linux & FreeBSD
199 AC_MSG_CHECKING([if arch-OS host is AMD64-Linux/FreeBSD (to build static libraries with PIC)])
201 x86_64*linux*|amd64*freebsd*|ia64*freebsd*)
210 AC_MSG_CHECKING([if compiler is icc (to build with PIC)])
224 AC_MSG_CHECKING([if we need -mimpure-text])
228 if test "$GCC" = "yes"; then
235 AC_MSG_RESULT($mimpure)
236 AM_CONDITIONAL(MIMPURE, test x$mimpure = xyes)
238 dnl 'STATICLIB' is, in spite of its name, not generic but only for static-only
239 dnl builds on Windows
240 AM_CONDITIONAL(STATICLIB, false)
242 AC_MSG_CHECKING([if we need BUILDING_LIBCURL])
245 AC_DEFINE(BUILDING_LIBCURL, 1, [when building libcurl itself])
247 AC_MSG_CHECKING([if we need CURL_STATICLIB])
248 if test "X$enable_shared" = "Xno"
250 AC_DEFINE(CURL_STATICLIB, 1, [when not building a shared library])
252 AM_CONDITIONAL(STATICLIB, true)
262 # Determine whether all dependent libraries must be specified when linking
263 if test "X$enable_shared" = "Xyes" -a "X$link_all_deplibs" = "Xno"
269 AC_SUBST(REQUIRE_LIB_DEPS)
271 dnl The install stuff has already been taken care of by the automake stuff
275 dnl check if there's a way to force code inline
278 dnl **********************************************************************
279 dnl platform/compiler/architecture specific checks/flags
280 dnl **********************************************************************
283 CURL_SET_COMPILER_BASIC_OPTS
284 CURL_SET_COMPILER_DEBUG_OPTS
285 CURL_SET_COMPILER_OPTIMIZE_OPTS
286 CURL_SET_COMPILER_WARNING_OPTS
288 if test "$compiler_id" = "INTEL_UNIX_C"; then
290 if test "$compiler_num" -ge "1000"; then
291 dnl icc 10.X or later
292 CFLAGS="$CFLAGS -shared-intel"
293 elif test "$compiler_num" -ge "900"; then
295 CFLAGS="$CFLAGS -i-dynamic"
300 CURL_CHECK_COMPILER_HALT_ON_ERROR
301 CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
303 CURL_CHECK_NO_UNDEFINED
304 AM_CONDITIONAL(NO_UNDEFINED, test x$need_no_undefined = xyes)
307 AM_CONDITIONAL(CURLDEBUG, test x$want_curldebug = xyes)
309 supports_unittests=yes
310 # cross-compilation of unit tests static library/programs fails when
311 # libcurl shared library is built. This might be due to a libtool or
312 # automake issue. In this case we disable unit tests.
313 if test "x$cross_compiling" != "xno" &&
314 test "x$enable_shared" != "xno"; then
315 supports_unittests=no
318 # IRIX 6.5.24 gcc 3.3 autobuilds fail unittests library compilation due to
319 # a problem related with OpenSSL headers and library versions not matching.
320 # Disable unit tests while time to further investigate this is found.
323 if test "$compiler_id" = "GNU_C"; then
324 supports_unittests=no
329 # All AIX autobuilds fails unit tests linking against unittests library
330 # due to unittests library being built with no symbols or members. Libtool ?
331 # Disable unit tests while time to further investigate this is found.
334 supports_unittests=no
338 dnl Build unit tests when option --enable-debug is given.
339 if test "x$want_debug" = "xyes" &&
340 test "x$supports_unittests" = "xyes"; then
345 AM_CONDITIONAL(BUILD_UNITTESTS, test x$want_unittests = xyes)
347 dnl **********************************************************************
348 dnl Compilation based checks should not be done before this point.
349 dnl **********************************************************************
351 dnl **********************************************************************
352 dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
353 dnl and ws2tcpip.h take precedence over any other further checks which
354 dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
355 dnl this specific header files. And do them before its results are used.
356 dnl **********************************************************************
358 CURL_CHECK_HEADER_WINDOWS
359 CURL_CHECK_NATIVE_WINDOWS
360 case X-"$ac_cv_native_windows" in
362 CURL_CHECK_HEADER_WINSOCK
363 CURL_CHECK_HEADER_WINSOCK2
364 CURL_CHECK_HEADER_WS2TCPIP
365 CURL_CHECK_HEADER_WINLDAP
366 CURL_CHECK_HEADER_WINBER
369 ac_cv_header_winsock_h="no"
370 ac_cv_header_winsock2_h="no"
371 ac_cv_header_ws2tcpip_h="no"
372 ac_cv_header_winldap_h="no"
373 ac_cv_header_winber_h="no"
376 CURL_CHECK_WIN32_LARGEFILE
378 dnl ************************************************************
379 dnl switch off particular protocols
381 AC_MSG_CHECKING([whether to support http])
383 AC_HELP_STRING([--enable-http],[Enable HTTP support])
384 AC_HELP_STRING([--disable-http],[Disable HTTP support]),
385 [ case "$enableval" in
388 AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP])
389 AC_MSG_WARN([disable HTTP disables FTP over proxy and RTSP])
390 AC_SUBST(CURL_DISABLE_HTTP, [1])
391 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
392 AC_SUBST(CURL_DISABLE_RTSP, [1])
394 *) AC_MSG_RESULT(yes)
399 AC_MSG_CHECKING([whether to support ftp])
401 AC_HELP_STRING([--enable-ftp],[Enable FTP support])
402 AC_HELP_STRING([--disable-ftp],[Disable FTP support]),
403 [ case "$enableval" in
406 AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP])
407 AC_SUBST(CURL_DISABLE_FTP, [1])
409 *) AC_MSG_RESULT(yes)
414 AC_MSG_CHECKING([whether to support file])
416 AC_HELP_STRING([--enable-file],[Enable FILE support])
417 AC_HELP_STRING([--disable-file],[Disable FILE support]),
418 [ case "$enableval" in
421 AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE])
422 AC_SUBST(CURL_DISABLE_FILE, [1])
424 *) AC_MSG_RESULT(yes)
429 AC_MSG_CHECKING([whether to support ldap])
431 AC_HELP_STRING([--enable-ldap],[Enable LDAP support])
432 AC_HELP_STRING([--disable-ldap],[Disable LDAP support]),
433 [ case "$enableval" in
436 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
437 AC_SUBST(CURL_DISABLE_LDAP, [1])
445 AC_MSG_CHECKING([whether to support ldaps])
447 AC_HELP_STRING([--enable-ldaps],[Enable LDAPS support])
448 AC_HELP_STRING([--disable-ldaps],[Disable LDAPS support]),
449 [ case "$enableval" in
452 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
453 AC_SUBST(CURL_DISABLE_LDAPS, [1])
455 *) if test "x$CURL_DISABLE_LDAP" = "x1" ; then
456 AC_MSG_RESULT(LDAP needs to be enabled to support LDAPS)
457 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
458 AC_SUBST(CURL_DISABLE_LDAPS, [1])
461 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
462 AC_SUBST(HAVE_LDAP_SSL, [1])
466 if test "x$CURL_DISABLE_LDAP" = "x1" ; then
468 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
469 AC_SUBST(CURL_DISABLE_LDAPS, [1])
472 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
473 AC_SUBST(HAVE_LDAP_SSL, [1])
477 AC_MSG_CHECKING([whether to support rtsp])
479 AC_HELP_STRING([--enable-rtsp],[Enable RTSP support])
480 AC_HELP_STRING([--disable-rtsp],[Disable RTSP support]),
481 [ case "$enableval" in
484 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
485 AC_SUBST(CURL_DISABLE_RTSP, [1])
487 *) if test x$CURL_DISABLE_HTTP = x1 ; then
488 AC_MSG_ERROR(HTTP support needs to be enabled in order to enable RTSP support!)
491 curl_rtsp_msg="enabled"
495 if test "x$CURL_DISABLE_HTTP" != "x1"; then
497 curl_rtsp_msg="enabled"
503 AC_MSG_CHECKING([whether to support proxies])
505 AC_HELP_STRING([--enable-proxy],[Enable proxy support])
506 AC_HELP_STRING([--disable-proxy],[Disable proxy support]),
507 [ case "$enableval" in
510 AC_DEFINE(CURL_DISABLE_PROXY, 1, [to disable proxies])
511 AC_SUBST(CURL_DISABLE_PROXY, [1])
513 *) AC_MSG_RESULT(yes)
519 AC_MSG_CHECKING([whether to support dict])
521 AC_HELP_STRING([--enable-dict],[Enable DICT support])
522 AC_HELP_STRING([--disable-dict],[Disable DICT support]),
523 [ case "$enableval" in
526 AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT])
527 AC_SUBST(CURL_DISABLE_DICT, [1])
529 *) AC_MSG_RESULT(yes)
534 AC_MSG_CHECKING([whether to support telnet])
535 AC_ARG_ENABLE(telnet,
536 AC_HELP_STRING([--enable-telnet],[Enable TELNET support])
537 AC_HELP_STRING([--disable-telnet],[Disable TELNET support]),
538 [ case "$enableval" in
541 AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
542 AC_SUBST(CURL_DISABLE_TELNET, [1])
544 *) AC_MSG_RESULT(yes)
549 AC_MSG_CHECKING([whether to support tftp])
551 AC_HELP_STRING([--enable-tftp],[Enable TFTP support])
552 AC_HELP_STRING([--disable-tftp],[Disable TFTP support]),
553 [ case "$enableval" in
556 AC_DEFINE(CURL_DISABLE_TFTP, 1, [to disable TFTP])
557 AC_SUBST(CURL_DISABLE_TFTP, [1])
559 *) AC_MSG_RESULT(yes)
565 AC_MSG_CHECKING([whether to support pop3])
567 AC_HELP_STRING([--enable-pop3],[Enable POP3 support])
568 AC_HELP_STRING([--disable-pop3],[Disable POP3 support]),
569 [ case "$enableval" in
572 AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3])
573 AC_SUBST(CURL_DISABLE_POP3, [1])
575 *) AC_MSG_RESULT(yes)
582 AC_MSG_CHECKING([whether to support imap])
584 AC_HELP_STRING([--enable-imap],[Enable IMAP support])
585 AC_HELP_STRING([--disable-imap],[Disable IMAP support]),
586 [ case "$enableval" in
589 AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP])
590 AC_SUBST(CURL_DISABLE_IMAP, [1])
592 *) AC_MSG_RESULT(yes)
599 AC_MSG_CHECKING([whether to support smtp])
601 AC_HELP_STRING([--enable-smtp],[Enable SMTP support])
602 AC_HELP_STRING([--disable-smtp],[Disable SMTP support]),
603 [ case "$enableval" in
606 AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP])
607 AC_SUBST(CURL_DISABLE_SMTP, [1])
609 *) AC_MSG_RESULT(yes)
615 AC_MSG_CHECKING([whether to support gopher])
616 AC_ARG_ENABLE(gopher,
617 AC_HELP_STRING([--enable-gopher],[Enable Gopher support])
618 AC_HELP_STRING([--disable-gopher],[Disable Gopher support]),
619 [ case "$enableval" in
622 AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable Gopher])
623 AC_SUBST(CURL_DISABLE_GOPHER, [1])
625 *) AC_MSG_RESULT(yes)
632 dnl **********************************************************************
633 dnl Check for built-in manual
634 dnl **********************************************************************
636 AC_MSG_CHECKING([whether to provide built-in manual])
637 AC_ARG_ENABLE(manual,
638 AC_HELP_STRING([--enable-manual],[Enable built-in manual])
639 AC_HELP_STRING([--disable-manual],[Disable built-in manual]),
640 [ case "$enableval" in
644 *) AC_MSG_RESULT(yes)
651 dnl The actual use of the USE_MANUAL variable is done much later in this
652 dnl script to allow other actions to disable it as well.
654 dnl **********************************************************************
655 dnl Checks for libraries.
656 dnl **********************************************************************
660 dnl gethostbyname without lib or in the nsl lib?
661 AC_CHECK_FUNC(gethostbyname,
662 [HAVE_GETHOSTBYNAME="1"
664 [ AC_CHECK_LIB(nsl, gethostbyname,
665 [HAVE_GETHOSTBYNAME="1"
670 if test "$HAVE_GETHOSTBYNAME" != "1"
672 dnl gethostbyname in the socket lib?
673 AC_CHECK_LIB(socket, gethostbyname,
674 [HAVE_GETHOSTBYNAME="1"
675 LIBS="$LIBS -lsocket"
679 dnl At least one system has been identified to require BOTH nsl and socket
680 dnl libs at the same time to link properly.
681 if test "$HAVE_GETHOSTBYNAME" != "1"
683 AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs])
684 my_ac_save_LIBS=$LIBS
685 LIBS="-lnsl -lsocket $LIBS"
693 HAVE_GETHOSTBYNAME="1"
696 LIBS=$my_ac_save_LIBS
700 if test "$HAVE_GETHOSTBYNAME" != "1"
702 dnl This is for winsock systems
703 if test "$ac_cv_header_windows_h" = "yes"; then
704 if test "$ac_cv_header_winsock_h" = "yes"; then
707 winsock_LIB="-lwinsock"
710 winsock_LIB="-lwsock32"
714 if test "$ac_cv_header_winsock2_h" = "yes"; then
715 winsock_LIB="-lws2_32"
717 if test ! -z "$winsock_LIB"; then
718 my_ac_save_LIBS=$LIBS
719 LIBS="$winsock_LIB $LIBS"
720 AC_MSG_CHECKING([for gethostbyname in $winsock_LIB])
723 #ifdef HAVE_WINDOWS_H
724 #ifndef WIN32_LEAN_AND_MEAN
725 #define WIN32_LEAN_AND_MEAN
728 #ifdef HAVE_WINSOCK2_H
729 #include <winsock2.h>
731 #ifdef HAVE_WINSOCK_H
737 gethostbyname("www.dummysite.com");
741 HAVE_GETHOSTBYNAME="1"
745 LIBS=$my_ac_save_LIBS
751 if test "$HAVE_GETHOSTBYNAME" != "1"
753 dnl This is for Minix 3.1
754 AC_MSG_CHECKING([for gethostbyname for Minix 3])
757 /* Older Minix versions may need <net/gen/netdb.h> here instead */
760 gethostbyname("www.dummysite.com");
764 HAVE_GETHOSTBYNAME="1"
770 if test "$HAVE_GETHOSTBYNAME" != "1"
772 dnl This is for eCos with a stubbed DNS implementation
773 AC_MSG_CHECKING([for gethostbyname for eCos])
779 gethostbyname("www.dummysite.com");
783 HAVE_GETHOSTBYNAME="1"
789 if test "$HAVE_GETHOSTBYNAME" != "1"
791 dnl gethostbyname in the network lib - for Haiku OS
792 AC_CHECK_LIB(network, gethostbyname,
793 [HAVE_GETHOSTBYNAME="1"
794 LIBS="$LIBS -lnetwork"
798 if test "$HAVE_GETHOSTBYNAME" != "1"
800 dnl gethostbyname in the net lib - for BeOS
801 AC_CHECK_LIB(net, gethostbyname,
802 [HAVE_GETHOSTBYNAME="1"
808 if test "$HAVE_GETHOSTBYNAME" != "1"; then
809 AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
813 AC_CHECK_FUNC(strcasecmp, , [ AC_CHECK_LIB(resolve, strcasecmp) ])
815 if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
816 AC_CHECK_LIB(resolve, strcasecmp,
817 [LIBS="-lresolve $LIBS"],
821 ac_cv_func_strcasecmp="no"
823 CURL_CHECK_LIBS_CONNECT
825 CURL_NETWORK_LIBS=$LIBS
827 dnl **********************************************************************
828 dnl In case that function clock_gettime with monotonic timer is available,
829 dnl check for additional required libraries.
830 dnl **********************************************************************
831 CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
833 dnl **********************************************************************
834 dnl The preceding library checks are all potentially useful for test
835 dnl servers (for providing networking support). Save the list of required
836 dnl libraries at this point for use while linking those test servers.
837 dnl **********************************************************************
838 TEST_SERVER_LIBS=$LIBS
840 dnl **********************************************************************
841 AC_MSG_CHECKING([whether to use libgcc])
842 AC_ARG_ENABLE(libgcc,
843 AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
844 [ case "$enableval" in
846 ALL_LIBS="$ALL_LIBS -lgcc"
855 dnl **********************************************************************
857 dnl **********************************************************************
860 AC_ARG_WITH(ldap-lib,
861 AC_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]),
862 [LDAPLIBNAME="$withval"])
865 AC_ARG_WITH(lber-lib,
866 AC_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]),
867 [LBERLIBNAME="$withval"])
869 if test x$CURL_DISABLE_LDAP != x1 ; then
871 CURL_CHECK_HEADER_LBER
872 CURL_CHECK_HEADER_LDAP
873 CURL_CHECK_HEADER_LDAPSSL
874 CURL_CHECK_HEADER_LDAP_SSL
876 if test -z "$LDAPLIBNAME" ; then
877 if test "$ac_cv_native_windows" = "yes"; then
878 dnl Windows uses a single and unique LDAP library name
879 LDAPLIBNAME="wldap32"
884 if test "$LDAPLIBNAME" ; then
885 AC_CHECK_LIB("$LDAPLIBNAME", ldap_init,, [
886 AC_MSG_WARN(["$LDAPLIBNAME" is not an LDAP library: LDAP disabled])
887 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
888 AC_SUBST(CURL_DISABLE_LDAP, [1])])
889 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
890 AC_SUBST(CURL_DISABLE_LDAPS, [1])
892 dnl Try to find the right ldap libraries for this system
894 case X-"$curl_cv_ldap_LIBS" in
896 AC_MSG_WARN([Cannot find libraries for LDAP support: LDAP disabled])
897 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
898 AC_SUBST(CURL_DISABLE_LDAP, [1])
899 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
900 AC_SUBST(CURL_DISABLE_LDAPS, [1])
906 if test x$CURL_DISABLE_LDAP != x1 ; then
908 if test "$LBERLIBNAME" ; then
909 dnl If name is "no" then don't define this library at all
910 dnl (it's only needed if libldap.so's dependencies are broken).
911 if test "$LBERLIBNAME" != "no" ; then
912 AC_CHECK_LIB("$LBERLIBNAME", ber_free,, [
913 AC_MSG_WARN(["$LBERLIBNAME" is not an LBER library: LDAP disabled])
914 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
915 AC_SUBST(CURL_DISABLE_LDAP, [1])])
916 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
917 AC_SUBST(CURL_DISABLE_LDAPS, [1])
922 if test x$CURL_DISABLE_LDAP != x1 ; then
923 AC_CHECK_FUNCS([ldap_url_parse ldap_init_fd])
925 if test "$LDAPLIBNAME" = "wldap32"; then
926 curl_ldap_msg="enabled (winldap)"
927 AC_DEFINE(CURL_LDAP_WIN, 1, [Use Windows LDAP implementation])
929 curl_ldap_msg="enabled (OpenLDAP)"
930 if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then
931 AC_DEFINE(USE_OPENLDAP, 1, [Use OpenLDAP-specific code])
932 AC_SUBST(USE_OPENLDAP, [1])
937 if test x$CURL_DISABLE_LDAPS != x1 ; then
938 curl_ldaps_msg="enabled"
941 dnl **********************************************************************
943 dnl **********************************************************************
945 AC_MSG_CHECKING([whether to enable ipv6])
947 AC_HELP_STRING([--enable-ipv6],[Enable ipv6 (with ipv4) support])
948 AC_HELP_STRING([--disable-ipv6],[Disable ipv6 support]),
949 [ case "$enableval" in
954 *) AC_MSG_RESULT(yes)
959 AC_TRY_RUN([ /* is AF_INET6 available? */
960 #include <sys/types.h>
961 #include <sys/socket.h>
964 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
978 if test "$ipv6" = "yes"; then
979 curl_ipv6_msg="enabled"
982 # Check if struct sockaddr_in6 have sin6_scope_id member
983 if test "$ipv6" = yes; then
984 AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member])
986 #include <sys/types.h>
987 #include <netinet/in.h>] ,
988 struct sockaddr_in6 s; s.sin6_scope_id = 0; , have_sin6_scope_id=yes)
989 if test "$have_sin6_scope_id" = yes; then
991 AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member])
997 dnl **********************************************************************
998 dnl Check if the operating system allows programs to write to their own argv[]
999 dnl **********************************************************************
1001 AC_MSG_CHECKING([if argv can be written to])
1004 int main(int argc, char ** argv) {
1006 return (argv[0][0] == ' ')?0:1;
1010 curl_cv_writable_argv=yes
1012 curl_cv_writable_argv=no
1014 curl_cv_writable_argv=cross
1016 case $curl_cv_writable_argv in
1018 AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv])
1026 AC_MSG_WARN([the previous check could not be made default was used])
1030 dnl **********************************************************************
1031 dnl Check for the presence of Kerberos4 libraries and headers
1032 dnl **********************************************************************
1034 AC_ARG_WITH(krb4-includes,
1035 AC_HELP_STRING([--with-krb4-includes=DIR],
1036 [Specify location of kerberos4 headers]),[
1037 CPPFLAGS="$CPPFLAGS -I$withval"
1042 AC_ARG_WITH(krb4-libs,
1043 AC_HELP_STRING([--with-krb4-libs=DIR],[Specify location of kerberos4 libs]),[
1044 LDFLAGS="$LDFLAGS -L$withval"
1051 AC_ARG_WITH(krb4,dnl
1052 AC_HELP_STRING([--with-krb4=DIR],[where to look for Kerberos4]),[
1054 if test X"$OPT_KRB4" != Xno; then
1056 if test X"$OPT_KRB4" != Xyes; then
1057 LDFLAGS="$LDFLAGS -L$OPT_KRB4/lib$libsuff"
1058 KRB4LIB="$OPT_KRB4/lib$libsuff"
1059 CPPFLAGS="$CPPFLAGS -I$OPT_KRB4/include"
1060 KRB4INC="$OPT_KRB4/include"
1065 AC_MSG_CHECKING([if Kerberos4 support is requested])
1067 if test "$want_krb4" = yes
1069 if test "$ipv6" = "yes"; then
1070 echo krb4 is not compatible with IPv6
1075 dnl Check for & handle argument to --with-krb4
1077 AC_MSG_CHECKING(where to look for Kerberos4)
1078 if test X"$OPT_KRB4" = Xyes
1080 AC_MSG_RESULT([defaults])
1082 AC_MSG_RESULT([libs in $KRB4LIB, headers in $KRB4INC])
1085 dnl Check for DES library
1086 AC_CHECK_LIB(des, des_pcbc_encrypt,
1088 AC_CHECK_HEADERS(des.h)
1091 AC_CHECK_FUNC(res_search, , [AC_CHECK_LIB(resolv, res_search)])
1093 dnl Check for the Kerberos4 library
1094 AC_CHECK_LIB(krb, krb_net_read,
1096 dnl Check for header files
1097 AC_CHECK_HEADERS(krb.h)
1099 dnl we found the required libraries, add to LIBS
1100 LIBS="-lkrb -lcom_err -ldes $LIBS"
1102 dnl Check for function krb_get_our_ip_for_realm
1103 dnl this is needed for NAT networks
1104 AC_CHECK_FUNCS(krb_get_our_ip_for_realm)
1107 AC_DEFINE(HAVE_KRB4, 1,
1108 [if you have the Kerberos4 libraries (including -ldes)])
1110 dnl substitute it too!
1112 AC_SUBST(KRB4_ENABLED)
1114 curl_krb4_msg="enabled"
1116 dnl the krb4 stuff needs a strlcpy()
1117 AC_CHECK_FUNCS(strlcpy)
1125 dnl **********************************************************************
1126 dnl Check for FBopenssl(SPNEGO) libraries
1127 dnl **********************************************************************
1130 AC_HELP_STRING([--with-spnego=DIR],
1131 [Specify location of SPNEGO library fbopenssl]), [
1132 SPNEGO_ROOT="$withval"
1133 if test x"$SPNEGO_ROOT" != xno; then
1138 AC_MSG_CHECKING([if SPNEGO support is requested])
1139 if test x"$want_spnego" = xyes; then
1141 if test X"$SPNEGO_ROOT" = Xyes; then
1142 AC_MSG_ERROR([FBOpenSSL libs and/or directories were not found where specified!])
1145 if test -z "$SPNEGO_LIB_DIR"; then
1146 LDFLAGS="$LDFLAGS -L$SPNEGO_ROOT -lfbopenssl"
1148 LDFLAGS="$LDFLAGS $SPNEGO_LIB_DIR"
1152 AC_DEFINE(HAVE_SPNEGO, 1,
1153 [Define this if you have the SPNEGO library fbopenssl])
1154 curl_spnego_msg="enabled"
1160 dnl **********************************************************************
1161 dnl Check for GSS-API libraries
1162 dnl **********************************************************************
1164 dnl check for gss stuff in the /usr as default
1167 AC_ARG_WITH(gssapi-includes,
1168 AC_HELP_STRING([--with-gssapi-includes=DIR],
1169 [Specify location of GSSAPI header]),
1170 [ GSSAPI_INCS="-I$withval"
1174 AC_ARG_WITH(gssapi-libs,
1175 AC_HELP_STRING([--with-gssapi-libs=DIR],
1176 [Specify location of GSSAPI libs]),
1177 [ GSSAPI_LIB_DIR="-L$withval"
1182 AC_HELP_STRING([--with-gssapi=DIR],
1183 [Where to look for GSSAPI]), [
1184 GSSAPI_ROOT="$withval"
1185 if test x"$GSSAPI_ROOT" != xno; then
1187 if test x"$GSSAPI_ROOT" = xyes; then
1188 dnl if yes, then use default root
1194 save_CPPFLAGS="$CPPFLAGS"
1195 AC_MSG_CHECKING([if GSSAPI support is requested])
1196 if test x"$want_gss" = xyes; then
1199 if test -z "$GSSAPI_INCS"; then
1200 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1201 GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
1202 elif test "$GSSAPI_ROOT" != "yes"; then
1203 GSSAPI_INCS="-I$GSSAPI_ROOT/include"
1207 CPPFLAGS="$CPPFLAGS $GSSAPI_INCS"
1209 AC_CHECK_HEADER(gss.h,
1211 dnl found in the given dirs
1212 AC_DEFINE(HAVE_GSSGNU, 1, [if you have the GNU gssapi libraries])
1216 dnl not found, check Heimdal or MIT
1217 AC_CHECK_HEADERS([gssapi/gssapi.h], [], [not_mit=1])
1219 [gssapi/gssapi_generic.h gssapi/gssapi_krb5.h],
1224 #ifdef HAVE_GSSAPI_GSSAPI_H
1225 #include <gssapi/gssapi.h>
1228 if test "x$not_mit" = "x1"; then
1229 dnl MIT not found, check for Heimdal
1230 AC_CHECK_HEADER(gssapi.h,
1233 AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have the Heimdal gssapi libraries])
1236 dnl no header found, disabling GSS
1238 AC_MSG_WARN(disabling GSSAPI since no header files was found)
1243 AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
1244 dnl check if we have a really old MIT kerberos (<= 1.2)
1245 AC_MSG_CHECKING([if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE])
1248 #include <gssapi/gssapi.h>
1249 #include <gssapi/gssapi_generic.h>
1250 #include <gssapi/gssapi_krb5.h>
1255 GSS_C_NT_HOSTBASED_SERVICE,
1259 AC_MSG_RESULT([yes])
1262 AC_DEFINE(HAVE_OLD_GSSMIT, 1,
1263 [if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE])
1271 if test x"$want_gss" = xyes; then
1272 AC_DEFINE(HAVE_GSSAPI, 1, [if you have the gssapi libraries])
1274 curl_gss_msg="enabled (MIT/Heimdal)"
1276 if test -n "$gnu_gss"; then
1277 curl_gss_msg="enabled (GNU GSS)"
1278 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1280 elif test -z "$GSSAPI_LIB_DIR"; then
1283 LIBS="$LIBS -lgssapi_krb5 -lresolv"
1286 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1287 dnl krb5-config doesn't have --libs-only-L or similar, put everything
1289 gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
1290 LIBS="$LIBS $gss_libs"
1291 elif test "$GSSAPI_ROOT" != "yes"; then
1292 LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
1293 LIBS="$LIBS -lgssapi"
1295 LIBS="$LIBS -lgssapi"
1300 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1301 LIBS="$LIBS -lgssapi"
1304 CPPFLAGS="$save_CPPFLAGS"
1307 dnl **********************************************************************
1308 dnl Check for the presence of SSL libraries and headers
1309 dnl **********************************************************************
1311 dnl Default to compiler & linker defaults for SSL files & libraries.
1313 dnl Default to no CA bundle
1316 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])
1317 AC_HELP_STRING([--without-ssl], [disable OpenSSL]),
1320 if test X"$OPT_SSL" != Xno; then
1321 dnl backup the pre-ssl variables
1322 CLEANLDFLAGS="$LDFLAGS"
1323 CLEANCPPFLAGS="$CPPFLAGS"
1328 dnl --with-ssl (without path) used
1329 if test x$cross_compiling != xyes; then
1330 dnl only do pkg-config magic when not cross-compiling
1333 PREFIX_OPENSSL=/usr/local/ssl
1334 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1337 dnl no --with-ssl option given, just check default places
1338 if test x$cross_compiling != xyes; then
1339 dnl only do pkg-config magic when not cross-compiling
1345 dnl check the given --with-ssl spot
1347 PREFIX_OPENSSL=$OPT_SSL
1349 dnl Try pkg-config even when cross-compiling. Since we
1350 dnl specify PKG_CONFIG_LIBDIR we're only looking where
1351 dnl the user told us to look
1352 OPENSSL_PCDIR="$OPT_SSL/lib/pkgconfig"
1353 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$OPENSSL_PCDIR"])
1354 if test -f "$OPENSSL_PCDIR/openssl.pc"; then
1358 dnl in case pkg-config comes up empty, use what we got
1360 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1361 if test "$PREFIX_OPENSSL" != "/usr" ; then
1362 SSL_LDFLAGS="-L$LIB_OPENSSL"
1363 SSL_CPPFLAGS="-I$PREFIX_OPENSSL/include"
1365 SSL_CPPFLAGS="$SSL_CPPFLAGS -I$PREFIX_OPENSSL/include/openssl"
1369 if test "$PKGTEST" = "yes"; then
1371 CURL_CHECK_PKGCONFIG(openssl, [$OPENSSL_PCDIR])
1373 if test "$PKGCONFIG" != "no" ; then
1374 SSL_LIBS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1375 $PKGCONFIG --libs-only-l openssl 2>/dev/null`
1377 SSL_LDFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1378 $PKGCONFIG --libs-only-L openssl 2>/dev/null`
1380 SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1381 $PKGCONFIG --cflags-only-I openssl 2>/dev/null`
1383 AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"])
1384 AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"])
1385 AC_MSG_NOTICE([pkg-config: SSL_CPPFLAGS: "$SSL_CPPFLAGS"])
1387 LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/-L//g'`
1389 dnl use the values pkg-config reported. This is here
1390 dnl instead of below with CPPFLAGS and LDFLAGS because we only
1391 dnl learn about this via pkg-config. If we only have
1392 dnl the argument to --with-ssl we don't know what
1393 dnl additional libs may be necessary. Hope that we
1395 LIBS="$LIBS $SSL_LIBS"
1399 dnl finally, set flags to use SSL
1400 CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
1401 LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
1403 dnl This is for Msys/Mingw
1405 *-*-msys* | *-*-mingw*)
1406 AC_MSG_CHECKING([for gdi32])
1407 my_ac_save_LIBS=$LIBS
1408 LIBS="-lgdi32 $LIBS"
1409 AC_TRY_LINK([#include <windef.h>
1410 #include <wingdi.h>],
1413 AC_MSG_RESULT([yes])],
1414 [ dnl failed, restore LIBS
1415 LIBS=$my_ac_save_LIBS
1421 AC_CHECK_LIB(crypto, CRYPTO_lock,[
1423 LIBS="-lcrypto $LIBS"
1425 LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL"
1426 CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include"
1427 AC_CHECK_LIB(crypto, CRYPTO_add_lock,[
1429 LIBS="-lcrypto $LIBS"], [
1430 LDFLAGS="$CLEANLDFLAGS"
1431 CPPFLAGS="$CLEANCPPFLAGS"
1437 if test X"$HAVECRYPTO" = X"yes"; then
1438 dnl This is only reasonable to do if crypto actually is there: check for
1439 dnl SSL libs NOTE: it is important to do this AFTER the crypto lib
1441 AC_CHECK_LIB(ssl, SSL_connect)
1443 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1444 dnl we didn't find the SSL lib, try the RSAglue/rsaref stuff
1445 AC_MSG_CHECKING(for ssl with RSAglue/rsaref libs in use);
1447 LIBS="$LIBS -lRSAglue -lrsaref"
1448 AC_CHECK_LIB(ssl, SSL_connect)
1449 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1450 dnl still no SSL_connect
1459 dnl Have the libraries--check for SSLeay/OpenSSL headers
1460 AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
1461 openssl/pem.h openssl/ssl.h openssl/err.h,
1462 curl_ssl_msg="enabled (OpenSSL)"
1464 AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]))
1466 if test $ac_cv_header_openssl_x509_h = no; then
1467 dnl we don't use the "action" part of the AC_CHECK_HEADERS macro
1468 dnl since 'err.h' might in fact find a krb4 header with the same
1470 AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h)
1472 if test $ac_cv_header_x509_h = yes &&
1473 test $ac_cv_header_crypto_h = yes &&
1474 test $ac_cv_header_ssl_h = yes; then
1476 curl_ssl_msg="enabled (OpenSSL)"
1482 if test X"$OPENSSL_ENABLED" = X"1"; then
1483 AC_DEFINE(USE_SSLEAY, 1, [if SSL is enabled])
1485 dnl is there a pkcs12.h header present?
1486 AC_CHECK_HEADERS(openssl/pkcs12.h)
1490 dnl USE_SSLEAY is the historical name for what configure calls
1491 dnl OPENSSL_ENABLED; the names should really be unified
1492 USE_SSLEAY="$OPENSSL_ENABLED"
1493 AC_SUBST(USE_SSLEAY)
1495 if test X"$OPT_SSL" != Xoff &&
1496 test "$OPENSSL_ENABLED" != "1"; then
1497 AC_MSG_ERROR([OpenSSL libs and/or directories were not found where specified!])
1501 if test X"$OPENSSL_ENABLED" = X"1"; then
1502 dnl If the ENGINE library seems to be around, check for the OpenSSL engine
1503 dnl stuff, it is kind of "separated" from the main SSL check
1504 AC_CHECK_FUNC(ENGINE_init,
1506 AC_CHECK_HEADERS(openssl/engine.h)
1507 AC_CHECK_FUNCS( ENGINE_load_builtin_engines )
1510 dnl these can only exist if openssl exists
1511 dnl yassl doesn't have SSL_get_shutdown
1513 AC_CHECK_FUNCS( RAND_status \
1517 CRYPTO_cleanup_all_ex_data \
1519 SSLv2_client_method )
1521 dnl Make an attempt to detect if this is actually yassl's headers and
1522 dnl OpenSSL emulation layer. We still leave everything else believing
1523 dnl and acting like OpenSSL.
1525 AC_MSG_CHECKING([for yaSSL using OpenSSL compatibility mode])
1528 #include <openssl/ssl.h>
1530 #if defined(YASSL_VERSION) && defined(OPENSSL_VERSION_NUMBER)
1531 int dummy = SSL_ERROR_NONE;
1533 Not the yaSSL OpenSSL compatibility header.
1537 AC_MSG_RESULT([yes])
1538 AC_DEFINE_UNQUOTED(USE_YASSLEMUL, 1,
1539 [Define to 1 if using yaSSL in OpenSSL compatibility mode.])
1540 curl_ssl_msg="enabled (OpenSSL emulation by yaSSL)"
1546 if test "$OPENSSL_ENABLED" = "1"; then
1547 if test -n "$LIB_OPENSSL"; then
1548 dnl when the ssl shared libs were found in a path that the run-time
1549 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
1550 dnl to prevent further configure tests to fail due to this
1552 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_OPENSSL"
1553 export LD_LIBRARY_PATH
1554 AC_MSG_NOTICE([Added $LIB_OPENSSL to LD_LIBRARY_PATH])
1556 CURL_CHECK_OPENSSL_API
1561 dnl **********************************************************************
1562 dnl Check for the presence of ZLIB libraries and headers
1563 dnl **********************************************************************
1565 dnl Check for & handle argument to --with-zlib.
1570 AC_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
1571 AC_HELP_STRING([--without-zlib],[disable use of zlib]),
1572 [OPT_ZLIB="$withval"])
1574 if test "$OPT_ZLIB" = "no" ; then
1575 AC_MSG_WARN([zlib disabled])
1577 if test "$OPT_ZLIB" = "yes" ; then
1581 if test -z "$OPT_ZLIB" ; then
1582 dnl check for the lib first without setting any new path, since many
1583 dnl people have it in the default path
1585 AC_CHECK_LIB(z, inflateEnd,
1586 dnl libz found, set the variable
1588 dnl if no lib found, try /usr/local
1589 [OPT_ZLIB="/usr/local"])
1593 dnl Add a nonempty path to the compiler flags
1594 if test -n "$OPT_ZLIB"; then
1595 CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include"
1596 LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff"
1599 AC_CHECK_HEADER(zlib.h,
1601 dnl zlib.h was found
1603 dnl if the lib wasn't found already, try again with the new paths
1604 if test "$HAVE_LIBZ" != "1"; then
1605 AC_CHECK_LIB(z, gzread,
1607 dnl the lib was found!
1610 [ CPPFLAGS=$_cppflags
1615 dnl zlib.h was not found, restore the flags
1620 if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1"
1622 AC_MSG_WARN([configure found only the libz lib, not the header file!])
1624 elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1"
1626 AC_MSG_WARN([configure found only the libz header file, not the lib!])
1627 elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1"
1629 dnl both header and lib were found!
1631 AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file])
1632 AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available])
1634 CURL_LIBS="$CURL_LIBS -lz"
1637 dnl replace 'HAVE_LIBZ' in the automake makefile.ams
1639 AC_MSG_NOTICE([found both libz and libz.h header])
1640 curl_zlib_msg="enabled"
1644 dnl set variable for use in automakefile(s)
1645 AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1)
1647 dnl **********************************************************************
1648 dnl Check for the random seed preferences
1649 dnl **********************************************************************
1651 if test X"$OPENSSL_ENABLED" = X"1"; then
1652 AC_ARG_WITH(egd-socket,
1653 AC_HELP_STRING([--with-egd-socket=FILE],
1654 [Entropy Gathering Daemon socket pathname]),
1655 [ EGD_SOCKET="$withval" ]
1657 if test -n "$EGD_SOCKET" ; then
1658 AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET",
1659 [your Entropy Gathering Daemon socket pathname] )
1662 dnl Check for user-specified random device
1664 AC_HELP_STRING([--with-random=FILE],
1665 [read randomness from FILE (default=/dev/urandom)]),
1666 [ RANDOM_FILE="$withval" ],
1668 if test x$cross_compiling != xyes; then
1669 dnl Check for random device
1670 AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
1672 AC_MSG_WARN([skipped the /dev/urandom detection when cross-compiling])
1676 if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
1677 AC_SUBST(RANDOM_FILE)
1678 AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
1679 [a suitable file to read random data from])
1684 dnl We require OpenSSL with SRP support.
1686 if test "$OPENSSL_ENABLED" = "1"; then
1687 AC_CHECK_LIB(crypto, SRP_Calc_client_key,
1689 AC_DEFINE(HAVE_SSLEAY_SRP, 1, [if you have the function SRP_Calc_client_key])
1690 AC_SUBST(HAVE_SSLEAY_SRP, [1])
1694 dnl ----------------------------------------------------
1695 dnl check for GnuTLS
1696 dnl ----------------------------------------------------
1698 dnl Default to compiler & linker defaults for GnuTLS files & libraries.
1701 AC_ARG_WITH(gnutls,dnl
1702 AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root])
1703 AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]),
1704 OPT_GNUTLS=$withval)
1706 if test "$OPENSSL_ENABLED" != "1"; then
1708 if test X"$OPT_GNUTLS" != Xno; then
1711 if test "x$OPT_GNUTLS" = "xyes"; then
1712 dnl this is with no partiular path given
1713 CURL_CHECK_PKGCONFIG(gnutls)
1715 if test "$PKGCONFIG" != "no" ; then
1716 addlib=`$PKGCONFIG --libs-only-l gnutls`
1717 addld=`$PKGCONFIG --libs-only-L gnutls`
1718 addcflags=`$PKGCONFIG --cflags-only-I gnutls`
1719 version=`$PKGCONFIG --modversion gnutls`
1720 gtlslib=`echo $addld | $SED -e 's/-L//'`
1722 dnl without pkg-config, we try libgnutls-config as that was how it
1724 check=`libgnutls-config --version 2>/dev/null`
1725 if test -n "$check"; then
1726 addlib=`libgnutls-config --libs`
1727 addcflags=`libgnutls-config --cflags`
1728 version=`libgnutls-config --version`
1729 gtlslib=`libgnutls-config --prefix`/lib$libsuff
1733 dnl this is with a given path, first check if there's a libgnutls-config
1734 dnl there and if not, make an educated guess
1735 cfg=$OPT_GNUTLS/bin/libgnutls-config
1736 check=`$cfg --version 2>/dev/null`
1737 if test -n "$check"; then
1738 addlib=`$cfg --libs`
1739 addcflags=`$cfg --cflags`
1740 version=`$cfg --version`
1741 gtlslib=`$cfg --prefix`/lib$libsuff
1743 dnl without pkg-config and libgnutls-config, we guess a lot!
1745 addld=-L$OPT_GNUTLS/lib$libsuff
1746 addcflags=-I$OPT_GNUTLS/include
1747 version="" # we just don't know
1748 gtlslib=$OPT_GNUTLS/lib$libsuff
1752 if test -z "$version"; then
1753 dnl lots of efforts, still no go
1757 if test -n "$addlib"; then
1760 CLEANCPPFLAGS="$CPPFLAGS"
1761 CLEADLDFLAGS="$LDFLAGS"
1763 LIBS="$LIBS $addlib"
1764 LDFLAGS="$LDFLAGS $addld"
1765 if test "$addcflags" != "-I/usr/include"; then
1766 CPPFLAGS="$CPPFLAGS $addcflags"
1769 AC_CHECK_LIB(gnutls, gnutls_check_version,
1771 AC_DEFINE(USE_GNUTLS, 1, [if GnuTLS is enabled])
1772 AC_SUBST(USE_GNUTLS, [1])
1775 curl_ssl_msg="enabled (GnuTLS)"
1779 CPPFLAGS="$CLEANCPPFLAGS"
1782 if test "x$USE_GNUTLS" = "xyes"; then
1783 AC_MSG_NOTICE([detected GnuTLS version $version])
1785 if test -n "$gtlslib"; then
1786 dnl when shared libs were found in a path that the run-time
1787 dnl linker doesn't search through, we need to add it to
1788 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1791 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlslib"
1792 export LD_LIBRARY_PATH
1793 AC_MSG_NOTICE([Added $gtlslib to LD_LIBRARY_PATH])
1799 fi dnl GNUTLS not disabled
1804 dnl Check which crypto backend GnuTLS uses
1807 if test "$GNUTLS_ENABLED" = "1"; then
1809 # First check if we can detect either crypto library via transitive linking
1810 AC_CHECK_LIB(gnutls, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1811 if test "$USE_GNUTLS_NETTLE" = ""; then
1812 AC_CHECK_LIB(gnutls, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1814 # If not, try linking directly to both of them to see if they are available
1815 if test "$USE_GNUTLS_NETTLE" = ""; then
1816 AC_CHECK_LIB(nettle, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1818 if test "$USE_GNUTLS_NETTLE" = ""; then
1819 AC_CHECK_LIB(gcrypt, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1821 if test "$USE_GNUTLS_NETTLE" = ""; then
1822 AC_MSG_ERROR([GnuTLS found, but neither gcrypt nor nettle found])
1824 if test "$USE_GNUTLS_NETTLE" = "1"; then
1825 AC_DEFINE(USE_GNUTLS_NETTLE, 1, [if GnuTLS uses nettle as crypto backend])
1826 AC_SUBST(USE_GNUTLS_NETTLE, [1])
1831 dnl We require GnuTLS with SRP support.
1833 if test "$GNUTLS_ENABLED" = "1"; then
1834 AC_CHECK_LIB(gnutls, gnutls_srp_verifier,
1836 AC_DEFINE(HAVE_GNUTLS_SRP, 1, [if you have the function gnutls_srp_verifier])
1837 AC_SUBST(HAVE_GNUTLS_SRP, [1])
1841 dnl ----------------------------------------------------
1842 dnl check for PolarSSL
1843 dnl ----------------------------------------------------
1845 dnl Default to compiler & linker defaults for PolarSSL files & libraries.
1850 AC_ARG_WITH(polarssl,dnl
1851 AC_HELP_STRING([--with-polarssl=PATH],[where to look for PolarSSL, PATH points to the installation root])
1852 AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]),
1853 OPT_POLARSSL=$withval)
1855 if test "$OPENSSL_ENABLED" != "1"; then
1857 if test X"$OPT_POLARSSL" != Xno; then
1859 if test "$OPT_POLARSSL" = "yes"; then
1863 if test -z "$OPT_POLARSSL" ; then
1864 dnl check for lib first without setting any new path
1866 AC_CHECK_LIB(polarssl, havege_init,
1867 dnl libpolarssl found, set the variable
1869 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1870 AC_SUBST(USE_POLARSSL, [1])
1873 curl_ssl_msg="enabled (PolarSSL)"
1877 if test "x$USE_POLARSSL" != "xyes"; then
1878 dnl add the path and test again
1879 addld=-L$OPT_POLARSSL/lib$libsuff
1880 addcflags=-I$OPT_POLARSSL/include
1881 polarssllib=$OPT_POLARSSL/lib$libsuff
1883 LDFLAGS="$LDFLAGS $addld"
1884 if test "$addcflags" != "-I/usr/include"; then
1885 CPPFLAGS="$CPPFLAGS $addcflags"
1888 AC_CHECK_LIB(polarssl, ssl_init,
1890 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1891 AC_SUBST(USE_POLARSSL, [1])
1894 curl_ssl_msg="enabled (PolarSSL)"
1902 if test "x$USE_POLARSSL" = "xyes"; then
1903 AC_MSG_NOTICE([detected PolarSSL])
1905 CURL_LIBS="$CURL_LIBS -lpolarssl"
1906 LIBS="$LIBS -lpolarssl"
1908 if test -n "$polarssllib"; then
1909 dnl when shared libs were found in a path that the run-time
1910 dnl linker doesn't search through, we need to add it to
1911 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1914 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$polarssllib"
1915 export LD_LIBRARY_PATH
1916 AC_MSG_NOTICE([Added $polarssllib to LD_LIBRARY_PATH])
1921 fi dnl PolarSSL not disabled
1925 dnl ----------------------------------------------------
1926 dnl check for CyaSSL
1927 dnl ----------------------------------------------------
1929 dnl Default to compiler & linker defaults for CyaSSL files & libraries.
1934 AC_ARG_WITH(cyassl,dnl
1935 AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to the installation root (default: /usr/local/cyassl)])
1936 AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
1937 OPT_CYASSL=$withval)
1939 if test "$OPENSSL_ENABLED" != "1"; then
1941 if test X"$OPT_CYASSL" != Xno; then
1943 if test "$OPT_CYASSL" = "yes"; then
1947 if test -z "$OPT_CYASSL" ; then
1948 dnl check for lib in default first
1950 trycyassldir="/usr/local/cyassl"
1952 LDFLAGS="$LDFLAGS -L$trycyassldir/lib"
1953 CPPFLAGS="$CPPFLAGS -I$trycyassldir/include"
1955 AC_CHECK_LIB(cyassl, InitCyaSSL,
1956 dnl libcyassl found, set the variable
1958 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
1959 AC_SUBST(USE_CYASSL, [1])
1962 curl_ssl_msg="enabled (CyaSSL)"
1966 if test "x$USE_CYASSL" != "xyes"; then
1967 dnl add the path and test again
1968 addld=-L$OPT_CYASSL/lib$libsuff
1969 addcflags=-I$OPT_CYASSL/include
1970 cyassllib=$OPT_CYASSL/lib$libsuff
1972 LDFLAGS="$LDFLAGS $addld"
1973 if test "$addcflags" != "-I/usr/include"; then
1974 CPPFLAGS="$CPPFLAGS $addcflags"
1977 AC_CHECK_LIB(cyassl, InitCyaSSL,
1979 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
1980 AC_SUBST(USE_CYASSL, [1])
1983 curl_ssl_msg="enabled (CyaSSL)"
1991 if test "x$USE_CYASSL" = "xyes"; then
1992 AC_MSG_NOTICE([detected CyaSSL])
1994 CURL_LIBS="$CURL_LIBS -lcyassl -lm"
1995 LIBS="$LIBS -lcyassl -lm"
1997 if test -n "$cyassllib"; then
1998 dnl when shared libs were found in a path that the run-time
1999 dnl linker doesn't search through, we need to add it to
2000 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2003 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$cyassllib"
2004 export LD_LIBRARY_PATH
2005 AC_MSG_NOTICE([Added $cyassllib to LD_LIBRARY_PATH])
2010 fi dnl CyaSSL not disabled
2014 dnl ----------------------------------------------------
2015 dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
2016 dnl ----------------------------------------------------
2018 dnl Default to compiler & linker defaults for NSS files & libraries.
2022 AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root])
2023 AC_HELP_STRING([--without-nss], [disable NSS detection]),
2026 if test "$OPENSSL_ENABLED" != "1" -a "$GNUTLS_ENABLED" != "1"; then
2028 if test X"$OPT_NSS" != Xno; then
2029 if test "x$OPT_NSS" = "xyes"; then
2031 CURL_CHECK_PKGCONFIG(nss)
2033 if test "$PKGCONFIG" != "no" ; then
2034 addlib=`$PKGCONFIG --libs nss`
2035 addcflags=`$PKGCONFIG --cflags nss`
2036 version=`$PKGCONFIG --modversion nss`
2037 nssprefix=`$PKGCONFIG --variable=prefix nss`
2039 dnl Without pkg-config, we check for nss-config
2041 check=`nss-config --version 2>/dev/null`
2042 if test -n "$check"; then
2043 addlib=`nss-config --libs`
2044 addcflags=`nss-config --cflags`
2045 version=`nss-config --version`
2046 nssprefix=`nss-config --prefix`
2054 # Without pkg-config, we'll kludge in some defaults
2055 addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
2056 addcflags="-I$OPT_NSS/include"
2061 dnl Check for functionPK11_CreateGenericObject
2062 dnl this is needed for using the PEM PKCS#11 module
2063 AC_CHECK_LIB(nss3, PK11_CreateGenericObject,
2065 AC_DEFINE(HAVE_PK11_CREATEGENERICOBJECT, 1, [if you have the function PK11_CreateGenericObject])
2066 AC_SUBST(HAVE_PK11_CREATEGENERICOBJECT, [1])
2068 if test -n "$addlib"; then
2071 CLEANCPPFLAGS="$CPPFLAGS"
2073 LIBS="$LIBS $addlib"
2074 if test "$addcflags" != "-I/usr/include"; then
2075 CPPFLAGS="$CPPFLAGS $addcflags"
2078 AC_CHECK_LIB(nss3, NSS_Initialize,
2080 AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
2081 AC_SUBST(USE_NSS, [1])
2084 curl_ssl_msg="enabled (NSS)"
2088 CPPFLAGS="$CLEANCPPFLAGS"
2091 if test "x$USE_NSS" = "xyes"; then
2092 AC_MSG_NOTICE([detected NSS version $version])
2094 dnl when shared libs were found in a path that the run-time
2095 dnl linker doesn't search through, we need to add it to
2096 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2099 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
2100 export LD_LIBRARY_PATH
2101 AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
2106 fi dnl NSS not disabled
2108 fi dnl OPENSSL != 1 -a GNUTLS_ENABLED != 1
2112 AC_ARG_WITH(axtls,dnl
2113 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.])
2114 AC_HELP_STRING([--without-axtls], [disable axTLS]),
2117 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2118 if test X"$OPT_AXTLS" != Xno; then
2119 dnl backup the pre-axtls variables
2120 CLEANLDFLAGS="$LDFLAGS"
2121 CLEANCPPFLAGS="$CPPFLAGS"
2124 case "$OPT_AXTLS" in
2126 dnl --with-axtls (without path) used
2127 PREFIX_AXTLS=/usr/local
2128 LIB_AXTLS="$PREFIX_AXTLS/lib"
2129 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2130 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2133 dnl no --with-axtls option given, just check default places
2137 dnl check the given --with-axtls spot
2138 PREFIX_AXTLS=$OPT_AXTLS
2139 LIB_AXTLS="$PREFIX_AXTLS/lib"
2140 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2141 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2145 AC_CHECK_LIB(axtls, ssl_version,[
2146 LIBS="-laxtls $LIBS"
2147 AC_DEFINE(USE_AXTLS, 1, [if axTLS is enabled])
2148 AC_SUBST(USE_AXTLS, [1])
2151 curl_ssl_msg="enabled (axTLS)"
2154 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
2155 export LD_LIBRARY_PATH
2156 AC_MSG_NOTICE([Added $LIB_AXTLS to LD_LIBRARY_PATH])
2158 LDFLAGS="$CLEANLDFLAGS"
2159 CPPFLAGS="$CLEANCPPFLAGS"
2165 if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED" = "x"; then
2166 AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
2167 AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss or --with-axtls to address this.])
2169 # SSL is enabled, genericly
2170 AC_SUBST(SSL_ENABLED)
2174 dnl **********************************************************************
2175 dnl Check for the CA bundle
2176 dnl **********************************************************************
2178 CURL_CHECK_CA_BUNDLE
2180 dnl **********************************************************************
2181 dnl Check for the presence of LIBSSH2 libraries and headers
2182 dnl **********************************************************************
2184 dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
2186 AC_ARG_WITH(libssh2,dnl
2187 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])
2188 AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
2189 OPT_LIBSSH2=$withval)
2191 if test X"$OPT_LIBSSH2" != Xno; then
2192 dnl backup the pre-libssh2 variables
2193 CLEANLDFLAGS="$LDFLAGS"
2194 CLEANCPPFLAGS="$CPPFLAGS"
2197 case "$OPT_LIBSSH2" in
2199 dnl --with-libssh2 (without path) used
2200 CURL_CHECK_PKGCONFIG(libssh2)
2202 if test "$PKGCONFIG" != "no" ; then
2203 LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2`
2204 LD_SSH2=`$PKGCONFIG --libs-only-L libssh2`
2205 CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2`
2206 version=`$PKGCONFIG --modversion libssh2`
2207 DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'`
2212 dnl no --with-libssh2 option given, just check default places
2215 dnl use the given --with-libssh2 spot
2216 PREFIX_SSH2=$OPT_LIBSSH2
2220 dnl if given with a prefix, we set -L and -I based on that
2221 if test -n "$PREFIX_SSH2"; then
2223 LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff
2224 CPP_SSH2=-I${PREFIX_SSH2}/include
2225 DIR_SSH2=${PREFIX_SSH2}/lib$libsuff
2228 LDFLAGS="$LDFLAGS $LD_SSH2"
2229 CPPFLAGS="$CPPFLAGS $CPP_SSH2"
2230 LIBS="$LIBS $LIB_SSH2"
2232 AC_CHECK_LIB(ssh2, libssh2_channel_open_ex)
2234 AC_CHECK_HEADERS(libssh2.h,
2235 curl_ssh_msg="enabled (libSSH2)"
2237 AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
2238 AC_SUBST(USE_LIBSSH2, [1])
2241 if test X"$OPT_LIBSSH2" != Xoff &&
2242 test "$LIBSSH2_ENABLED" != "1"; then
2243 AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!])
2246 if test "$LIBSSH2_ENABLED" = "1"; then
2247 if test -n "$DIR_SSH2"; then
2248 dnl when the libssh2 shared libs were found in a path that the run-time
2249 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
2250 dnl to prevent further configure tests to fail due to this
2252 dnl libssh2_version is a post 1.0 addition
2253 dnl libssh2_init and libssh2_exit were added in 1.2.5
2254 dnl libssh2_scp_send64 was added in 1.2.6
2255 dnl libssh2_session_handshake was added in 1.2.8
2256 AC_CHECK_FUNCS( libssh2_version libssh2_init libssh2_exit \
2257 libssh2_scp_send64 libssh2_session_handshake)
2259 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
2260 export LD_LIBRARY_PATH
2261 AC_MSG_NOTICE([Added $DIR_SSH2 to LD_LIBRARY_PATH])
2264 dnl no libssh2, revert back to clean variables
2265 LDFLAGS=$CLEANLDFLAGS
2266 CPPFLAGS=$CLEANCPPFLAGS
2271 dnl **********************************************************************
2272 dnl Check for the presence of LIBRTMP libraries and headers
2273 dnl **********************************************************************
2275 dnl Default to compiler & linker defaults for LIBRTMP files & libraries.
2277 AC_ARG_WITH(librtmp,dnl
2278 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])
2279 AC_HELP_STRING([--without-librtmp], [disable LIBRTMP]),
2280 OPT_LIBRTMP=$withval)
2282 if test X"$OPT_LIBRTMP" != Xno; then
2283 dnl backup the pre-librtmp variables
2284 CLEANLDFLAGS="$LDFLAGS"
2285 CLEANCPPFLAGS="$CPPFLAGS"
2288 case "$OPT_LIBRTMP" in
2290 dnl --with-librtmp (without path) used
2291 CURL_CHECK_PKGCONFIG(librtmp)
2293 if test "$PKGCONFIG" != "no" ; then
2294 LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp`
2295 LD_RTMP=`$PKGCONFIG --libs-only-L librtmp`
2296 CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp`
2297 version=`$PKGCONFIG --modversion librtmp`
2298 DIR_RTMP=`echo $LD_RTMP | $SED -e 's/-L//'`
2300 dnl To avoid link errors, we do not allow --librtmp without
2301 dnl a pkgconfig file
2302 AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.])
2307 dnl no --with-librtmp option given, just check default places
2311 dnl use the given --with-librtmp spot
2312 PREFIX_RTMP=$OPT_LIBRTMP
2316 dnl if given with a prefix, we set -L and -I based on that
2317 if test -n "$PREFIX_RTMP"; then
2318 LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff
2319 CPP_RTMP=-I${PREFIX_RTMP}/include
2320 DIR_RTMP=${PREFIX_RTMP}/lib$libsuff
2323 LDFLAGS="$LDFLAGS $LD_RTMP"
2324 CPPFLAGS="$CPPFLAGS $CPP_RTMP"
2325 LIBS="$LIBS $LIB_RTMP"
2327 AC_CHECK_LIB(rtmp, RTMP_Init,
2329 AC_CHECK_HEADERS(librtmp/rtmp.h,
2330 curl_rtmp_msg="enabled (librtmp)"
2332 AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use])
2333 AC_SUBST(USE_LIBRTMP, [1])
2336 dnl not found, revert back to clean variables
2337 LDFLAGS=$CLEANLDFLAGS
2338 CPPFLAGS=$CLEANCPPFLAGS
2342 if test X"$OPT_LIBRTMP" != Xoff &&
2343 test "$LIBRTMP_ENABLED" != "1"; then
2344 AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!])
2349 dnl **********************************************************************
2350 dnl Check for linker switch for versioned symbols
2351 dnl **********************************************************************
2353 AC_MSG_CHECKING([if libraries can be versioned])
2354 GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
2355 if test -z "$GLD"; then
2356 versioned_symbols_flavour=
2359 *** You need an ld version supporting the --version-script option.
2364 AC_MSG_CHECKING([whether versioned symbols are wanted])
2365 versioned_symbols_flavour=
2367 AC_ARG_ENABLE(versioned-symbols,
2368 AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library])
2369 AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]),
2370 [ case "$enableval" in
2371 yes) AC_MSG_RESULT(yes)
2372 if test "x$OPENSSL_ENABLED" = "x1"; then
2373 versioned_symbols_flavour="OPENSSL_"
2374 elif test "x$GNUTLS_ENABLED" == "x1"; then
2375 versioned_symbols_flavour="GNUTLS_"
2376 elif test "x$NSS_ENABLED" == "x1"; then
2377 versioned_symbols_flavour="NSS_"
2378 elif test "x$POLARSSL_ENABLED" == "x1"; then
2379 versioned_symbols_flavour="POLARSSL_"
2380 elif test "x$CYASSL_ENABLED" == "x1"; then
2381 versioned_symbols_flavour="CYASSL_"
2382 elif test "x$AXTLS_ENABLED" == "x1"; then
2383 versioned_symbols_flavour="AXTLS_"
2385 versioned_symbols_flavour=""
2387 versioned_symbols="yes"
2390 *) AC_MSG_RESULT(no)
2399 AC_SUBST(VERSIONED_FLAVOUR, ["$versioned_symbols_flavour"])
2400 AM_CONDITIONAL(VERSIONED_SYMBOLS, test "x$versioned_symbols" = "xyes")
2403 dnl **********************************************************************
2404 dnl Check for the presence of IDN libraries and headers
2405 dnl **********************************************************************
2407 AC_MSG_CHECKING([whether to build with libidn])
2410 AC_HELP_STRING([--with-libidn=PATH],[Enable libidn usage])
2411 AC_HELP_STRING([--without-libidn],[Disable libidn usage]),
2415 dnl --without-libidn option used
2420 dnl configure option not specified
2422 want_idn_path="default"
2423 AC_MSG_RESULT([(assumed) yes])
2426 dnl --with-libidn option used without path
2428 want_idn_path="default"
2429 AC_MSG_RESULT([yes])
2432 dnl --with-libidn option used with path
2434 want_idn_path="$withval"
2435 AC_MSG_RESULT([yes ($withval)])
2439 if test "$want_idn" = "yes"; then
2440 dnl idn library support has been requested
2441 clean_CPPFLAGS="$CPPFLAGS"
2442 clean_LDFLAGS="$LDFLAGS"
2446 if test "$want_idn_path" != "default"; then
2447 dnl path has been specified
2448 IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig"
2449 CURL_CHECK_PKGCONFIG(libidn, [$IDN_PCDIR])
2450 if test "$PKGCONFIG" != "no"; then
2451 IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2452 $PKGCONFIG --libs-only-l libidn 2>/dev/null`
2453 IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2454 $PKGCONFIG --libs-only-L libidn 2>/dev/null`
2455 IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2456 $PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2457 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2459 dnl pkg-config not available or provides no info
2461 IDN_LDFLAGS="-L$want_idn_path/lib$libsuff"
2462 IDN_CPPFLAGS="-I$want_idn_path/include"
2463 IDN_DIR="$want_idn_path/lib$libsuff"
2466 dnl path not specified
2467 CURL_CHECK_PKGCONFIG(libidn)
2468 if test "$PKGCONFIG" != "no"; then
2469 IDN_LIBS=`$PKGCONFIG --libs-only-l libidn 2>/dev/null`
2470 IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn 2>/dev/null`
2471 IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2472 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2474 dnl pkg-config not available or provides no info
2479 if test "$PKGCONFIG" != "no"; then
2480 AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"])
2481 AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"])
2482 AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2483 AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"])
2485 AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"])
2486 AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"])
2487 AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2488 AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"])
2491 CPPFLAGS="$IDN_CPPFLAGS $CPPFLAGS"
2492 LDFLAGS="$IDN_LDFLAGS $LDFLAGS"
2493 LIBS="$IDN_LIBS $LIBS"
2495 AC_MSG_CHECKING([if idna_to_ascii_4i can be linked])
2497 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_4i])
2499 AC_MSG_RESULT([yes])
2500 tst_links_libidn="yes"
2503 tst_links_libidn="no"
2505 if test "$tst_links_libidn" = "no"; then
2506 AC_MSG_CHECKING([if idna_to_ascii_lz can be linked])
2508 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_lz])
2510 AC_MSG_RESULT([yes])
2511 tst_links_libidn="yes"
2514 tst_links_libidn="no"
2518 if test "$tst_links_libidn" = "yes"; then
2519 AC_DEFINE(HAVE_LIBIDN, 1, [Define to 1 if you have the `idn' library (-lidn).])
2520 dnl different versions of libidn have different setups of these:
2521 AC_CHECK_FUNCS( idn_free idna_strerror tld_strerror )
2522 AC_CHECK_HEADERS( idn-free.h tld.h )
2523 if test "x$ac_cv_header_tld_h" = "xyes"; then
2524 AC_SUBST([IDN_ENABLED], [1])
2525 curl_idn_msg="enabled"
2526 if test -n "$IDN_DIR"; then
2527 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
2528 export LD_LIBRARY_PATH
2529 AC_MSG_NOTICE([Added $IDN_DIR to LD_LIBRARY_PATH])
2532 AC_MSG_WARN([Libraries for IDN support too old: IDN disabled])
2533 CPPFLAGS="$clean_CPPFLAGS"
2534 LDFLAGS="$clean_LDFLAGS"
2538 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2539 CPPFLAGS="$clean_CPPFLAGS"
2540 LDFLAGS="$clean_LDFLAGS"
2546 dnl Let's hope this split URL remains working:
2547 dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
2548 dnl genprogc/thread_quick_ref.htm
2551 dnl **********************************************************************
2552 dnl Back to "normal" configuring
2553 dnl **********************************************************************
2555 dnl Checks for header files.
2558 CURL_CHECK_HEADER_MALLOC
2559 CURL_CHECK_HEADER_MEMORY
2561 dnl Now check for the very most basic headers. Then we can use these
2562 dnl ones as default-headers when checking for the rest!
2605 dnl to do if not found
2609 dnl default includes
2611 #ifdef HAVE_SYS_TYPES_H
2612 #include <sys/types.h>
2614 #ifdef HAVE_SYS_TIME_H
2615 #include <sys/time.h>
2617 #ifdef HAVE_SYS_SELECT_H
2618 #include <sys/select.h>
2620 #ifdef HAVE_SYS_SOCKET_H
2621 #include <sys/socket.h>
2623 #ifdef HAVE_NETINET_IN_H
2624 #include <netinet/in.h>
2626 #ifdef HAVE_SYS_UN_H
2632 dnl Checks for typedefs, structures, and compiler characteristics.
2634 CURL_CHECK_VARIADIC_MACROS
2637 CURL_CHECK_STRUCT_TIMEVAL
2638 CURL_VERIFY_RUNTIMELIBS
2640 AC_CHECK_SIZEOF(size_t)
2641 AC_CHECK_SIZEOF(long)
2642 AC_CHECK_SIZEOF(int)
2643 AC_CHECK_SIZEOF(short)
2645 AC_CHECK_SIZEOF(time_t)
2646 AC_CHECK_SIZEOF(off_t)
2649 if test x"$ac_cv_native_windows" != "xyes" &&
2650 test $ac_cv_sizeof_off_t -ne $curl_sizeof_curl_off_t; then
2651 AC_MSG_WARN([This libcurl built is probably not ABI compatible with previous])
2652 AC_MSG_WARN([builds! You MUST read lib/README.curl_off_t to figure it out.])
2657 AC_CHECK_TYPE(long long,
2658 [AC_DEFINE(HAVE_LONGLONG, 1,
2659 [Define to 1 if the compiler supports the 'long long' data type.])]
2663 if test "xyes" = "x$longlong"; then
2664 AC_MSG_CHECKING([if numberLL works])
2668 long long val = 1000LL;
2671 AC_MSG_RESULT([yes])
2672 AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
2680 AC_CHECK_TYPE(ssize_t, ,
2681 AC_DEFINE(ssize_t, int, [the signed version of size_t]))
2683 # check for bool type
2684 AC_CHECK_TYPE([bool],[
2685 AC_DEFINE(HAVE_BOOL_T, 1,
2686 [Define to 1 if bool is an available type.])
2688 #ifdef HAVE_SYS_TYPES_H
2689 #include <sys/types.h>
2691 #ifdef HAVE_STDBOOL_H
2692 #include <stdbool.h>
2696 CURL_CONFIGURE_CURL_SOCKLEN_T
2700 TYPE_SOCKADDR_STORAGE
2706 CURL_CHECK_FUNC_SELECT
2708 CURL_CHECK_FUNC_RECV
2709 CURL_CHECK_FUNC_RECVFROM
2710 CURL_CHECK_FUNC_SEND
2711 CURL_CHECK_MSG_NOSIGNAL
2713 CURL_CHECK_FUNC_ALARM
2714 CURL_CHECK_FUNC_BASENAME
2715 CURL_CHECK_FUNC_CLOSESOCKET
2716 CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
2717 CURL_CHECK_FUNC_CONNECT
2718 CURL_CHECK_FUNC_FCNTL
2719 CURL_CHECK_FUNC_FDOPEN
2720 CURL_CHECK_FUNC_FREEADDRINFO
2721 CURL_CHECK_FUNC_FREEIFADDRS
2722 CURL_CHECK_FUNC_FSETXATTR
2723 CURL_CHECK_FUNC_FTRUNCATE
2724 CURL_CHECK_FUNC_GETADDRINFO
2725 CURL_CHECK_FUNC_GAI_STRERROR
2726 CURL_CHECK_FUNC_GETHOSTBYADDR
2727 CURL_CHECK_FUNC_GETHOSTBYADDR_R
2728 CURL_CHECK_FUNC_GETHOSTBYNAME
2729 CURL_CHECK_FUNC_GETHOSTBYNAME_R
2730 CURL_CHECK_FUNC_GETHOSTNAME
2731 CURL_CHECK_FUNC_GETIFADDRS
2732 CURL_CHECK_FUNC_GETSERVBYPORT_R
2733 CURL_CHECK_FUNC_GMTIME_R
2734 CURL_CHECK_FUNC_INET_NTOA_R
2735 CURL_CHECK_FUNC_INET_NTOP
2736 CURL_CHECK_FUNC_INET_PTON
2737 CURL_CHECK_FUNC_IOCTL
2738 CURL_CHECK_FUNC_IOCTLSOCKET
2739 CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
2740 CURL_CHECK_FUNC_LOCALTIME_R
2741 CURL_CHECK_FUNC_MEMRCHR
2742 CURL_CHECK_FUNC_POLL
2743 CURL_CHECK_FUNC_SETSOCKOPT
2744 CURL_CHECK_FUNC_SIGACTION
2745 CURL_CHECK_FUNC_SIGINTERRUPT
2746 CURL_CHECK_FUNC_SIGNAL
2747 CURL_CHECK_FUNC_SIGSETJMP
2748 CURL_CHECK_FUNC_SOCKET
2749 CURL_CHECK_FUNC_SOCKETPAIR
2750 CURL_CHECK_FUNC_STRCASECMP
2751 CURL_CHECK_FUNC_STRCASESTR
2752 CURL_CHECK_FUNC_STRCMPI
2753 CURL_CHECK_FUNC_STRDUP
2754 CURL_CHECK_FUNC_STRERROR_R
2755 CURL_CHECK_FUNC_STRICMP
2756 CURL_CHECK_FUNC_STRLCAT
2757 CURL_CHECK_FUNC_STRNCASECMP
2758 CURL_CHECK_FUNC_STRNCMPI
2759 CURL_CHECK_FUNC_STRNICMP
2760 CURL_CHECK_FUNC_STRSTR
2761 CURL_CHECK_FUNC_STRTOK_R
2762 CURL_CHECK_FUNC_STRTOLL
2763 CURL_CHECK_FUNC_WRITEV
2769 AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
2773 AC_CHECK_FUNCS([fork \
2792 eval skipcheck=\$skipcheck_$func
2793 if test "x$skipcheck" != "xyes"; then
2794 AC_MSG_CHECKING([deeper for $func])
2801 AC_MSG_RESULT([yes])
2802 eval "ac_cv_func_$func=yes"
2803 AC_DEFINE_UNQUOTED(XC_SH_TR_CPP([HAVE_$func]), [1],
2804 [Define to 1 if you have the $func function.])
2806 AC_MSG_RESULT([but still no])
2811 dnl Check if the getnameinfo function is available
2812 dnl and get the types of five of its arguments.
2813 CURL_CHECK_FUNC_GETNAMEINFO
2815 if test "$ipv6" = "yes"; then
2816 if test "$ac_cv_func_getaddrinfo" = "yes"; then
2817 AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
2819 AC_SUBST(IPV6_ENABLED)
2821 CURL_CHECK_NI_WITHSCOPEID
2824 dnl ************************************************************
2825 dnl enable non-blocking communications
2827 CURL_CHECK_OPTION_NONBLOCKING
2828 CURL_CHECK_NONBLOCKING_SOCKET
2830 dnl ************************************************************
2831 dnl nroff tool stuff
2834 AC_PATH_PROG( PERL, perl, ,
2835 $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
2838 AC_PATH_PROGS( NROFF, gnroff nroff, ,
2839 $PATH:/usr/bin/:/usr/local/bin )
2842 if test -n "$NROFF"; then
2843 dnl only check for nroff options if an nroff command was found
2845 AC_MSG_CHECKING([how to use *nroff to get plain text from man pages])
2847 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
2848 if test -z "$mancheck"; then
2850 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
2851 if test -z "$mancheck"; then
2853 AC_MSG_RESULT([failed])
2854 AC_MSG_WARN([found no *nroff option to get plaintext from man pages])
2856 AC_MSG_RESULT([$MANOPT])
2859 AC_MSG_RESULT([$MANOPT])
2864 if test -z "$MANOPT"
2866 dnl if no nroff tool was found, or no option that could convert man pages
2867 dnl was found, then disable the built-in manual stuff
2868 AC_MSG_WARN([disabling built-in manual])
2872 dnl *************************************************************************
2873 dnl If the manual variable still is set, then we go with providing a built-in
2876 if test "$USE_MANUAL" = "1"; then
2877 AC_DEFINE(USE_MANUAL, 1, [If you want to build curl with the built-in manual])
2878 curl_manual_msg="enabled"
2881 dnl set variable for use in automakefile(s)
2882 AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
2885 AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
2887 if test "x$ac_cv_native_windows" != "xyes" &&
2888 test "x$enable_shared" = "xyes"; then
2889 build_libhostname=yes
2891 build_libhostname=no
2893 AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes)
2895 CURL_CHECK_OPTION_THREADED_RESOLVER
2897 if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
2899 [Options --enable-threaded-resolver and --enable-ares are mutually exclusive])
2902 if test "$want_thres" = "yes"; then
2903 AC_CHECK_HEADER(pthread.h,
2904 [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>])
2905 save_CFLAGS="$CFLAGS"
2906 CFLAGS="$CFLAGS -pthread"
2907 AC_CHECK_LIB(pthread, pthread_create,
2908 [ AC_MSG_NOTICE([using POSIX threaded DNS lookup])
2909 AC_DEFINE(USE_THREADS_POSIX, 1, [if you want POSIX threaded DNS lookup])
2911 curl_res_msg="threaded"
2913 [ CFLAGS="$save_CFLAGS"])
2917 dnl ************************************************************
2918 dnl disable verbose text strings
2920 AC_MSG_CHECKING([whether to enable verbose strings])
2921 AC_ARG_ENABLE(verbose,
2922 AC_HELP_STRING([--enable-verbose],[Enable verbose strings])
2923 AC_HELP_STRING([--disable-verbose],[Disable verbose strings]),
2924 [ case "$enableval" in
2927 AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings])
2928 curl_verbose_msg="no"
2930 *) AC_MSG_RESULT(yes)
2936 dnl ************************************************************
2937 dnl enable SSPI support
2939 AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)])
2941 AC_HELP_STRING([--enable-sspi],[Enable SSPI])
2942 AC_HELP_STRING([--disable-sspi],[Disable SSPI]),
2943 [ case "$enableval" in
2945 if test "$ac_cv_native_windows" = "yes"; then
2947 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
2948 AC_SUBST(USE_WINDOWS_SSPI, [1])
2949 curl_sspi_msg="enabled"
2952 AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.])
2962 dnl ************************************************************
2963 dnl disable cryptographic authentication
2965 AC_MSG_CHECKING([whether to enable cryptographic authentication methods])
2966 AC_ARG_ENABLE(crypto-auth,
2967 AC_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication])
2968 AC_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]),
2969 [ case "$enableval" in
2972 AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication])
2974 *) AC_MSG_RESULT(yes)
2980 CURL_CHECK_OPTION_NTLM_WB
2984 dnl ************************************************************
2985 dnl disable TLS-SRP authentication
2987 AC_MSG_CHECKING([whether to enable TLS-SRP authentication])
2988 AC_ARG_ENABLE(tls-srp,
2989 AC_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication])
2990 AC_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]),
2991 [ case "$enableval" in
2994 AC_DEFINE(CURL_DISABLE_TLS_SRP, 1, [to disable TLS-SRP authentication])
2997 *) AC_MSG_RESULT(yes)
3005 if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_SSLEAY_SRP" = "x1") ; then
3006 AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication])
3008 curl_tls_srp_msg="enabled"
3011 dnl ************************************************************
3012 dnl disable cookies support
3014 AC_MSG_CHECKING([whether to enable support for cookies])
3015 AC_ARG_ENABLE(cookies,
3016 AC_HELP_STRING([--enable-cookies],[Enable cookies support])
3017 AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
3018 [ case "$enableval" in
3021 AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support])
3023 *) AC_MSG_RESULT(yes)
3029 dnl ************************************************************
3030 dnl Enable hiding of internal symbols in library to reduce its size and
3031 dnl speed dynamic linking of applications. This currently is only supported
3032 dnl on gcc >= 4.0 and SunPro C.
3034 AC_MSG_CHECKING([whether to enable hidden symbols in the library])
3035 AC_ARG_ENABLE(hidden-symbols,
3036 AC_HELP_STRING([--enable-hidden-symbols],[Hide internal symbols in library])
3037 AC_HELP_STRING([--disable-hidden-symbols],[Leave all symbols with default visibility in library]),
3038 [ case "$enableval" in
3043 AC_MSG_CHECKING([whether $CC supports it])
3044 if test "$GCC" = yes ; then
3045 if $CC --help --verbose 2>&1 | grep fvisibility= > /dev/null ||
3046 dnl clang always supports -fvisibility= but it doesn't show up
3048 test "$compiler_id" = "CLANG"; then
3050 AC_DEFINE(CURL_HIDDEN_SYMBOLS, 1, [to enable hidden symbols])
3051 AC_DEFINE(CURL_EXTERN_SYMBOL, [__attribute__ ((visibility ("default")))], [to make a symbol visible])
3052 CFLAGS="$CFLAGS -fvisibility=hidden"
3058 dnl Test for SunPro cc
3059 if $CC 2>&1 | grep flags >/dev/null && $CC -flags | grep xldscope= >/dev/null ; then
3061 AC_DEFINE(CURL_HIDDEN_SYMBOLS, 1, [to enable hidden symbols])
3062 AC_DEFINE(CURL_EXTERN_SYMBOL, [__global], [to make a symbol visible])
3063 CFLAGS="$CFLAGS -xldscope=hidden"
3073 dnl ************************************************************
3074 dnl enforce SONAME bump
3077 AC_MSG_CHECKING([whether to enforce SONAME bump])
3078 AC_ARG_ENABLE(soname-bump,
3079 AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump])
3080 AC_HELP_STRING([--disable-soname-bump],[Disable enforced SONAME bump]),
3081 [ case "$enableval" in
3082 yes) AC_MSG_RESULT(yes)
3089 AC_MSG_RESULT($soname_bump)
3091 AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes)
3094 dnl ************************************************************
3095 if test ! -z "$winsock_LIB"; then
3097 dnl If ws2_32 is wanted, make sure it is the _last_ lib in LIBS (makes
3098 dnl things work when built with c-ares). But we can't just move it last
3099 dnl since then other stuff (SSL) won't build. So we simply append it to the
3102 LIBS="$LIBS $winsock_LIB"
3103 TEST_SERVER_LIBS="$TEST_SERVER_LIBS $winsock_LIB"
3108 dnl All the library dependencies put into $LIB apply to libcurl only.
3109 dnl Those in $CURL_LIBS apply to the curl command-line client only.
3110 dnl Those in $TEST_SERVER_LIBS apply to test servers only.
3111 dnl Those in $ALL_LIBS apply to all targets, including test targets.
3115 AC_SUBST(LIBCURL_LIBS)
3117 AC_SUBST(TEST_SERVER_LIBS)
3118 AC_SUBST(CURL_NETWORK_LIBS)
3119 LIBS=$ALL_LIBS dnl LIBS is a magic variable that's used for every link
3121 AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes)
3124 ENABLE_SHARED="$enable_shared"
3125 AC_SUBST(ENABLE_SHARED)
3128 dnl For keeping supported features and protocols also in pkg-config file
3129 dnl since it is more cross-compile frient than curl-config
3132 if test "x$USE_SSLEAY" = "x1"; then
3133 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3134 elif test -n "$SSL_ENABLED"; then
3135 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3137 if test "@KRB4_ENABLED@" = "x1"; then
3138 SUPPORT_FEATURES="$SUPPORT_FEATURES KRB4"
3140 if test "x$IPV6_ENABLED" = "x1"; then
3141 SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
3143 if test "x$HAVE_LIBZ" = "x1"; then
3144 SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
3146 if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1"; then
3147 SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
3149 if test "x$IDN_ENABLED" = "x1"; then
3150 SUPPORT_FEATURES="$SUPPORT_FEATURES IDN"
3152 if test "x$USE_WINDOWS_SSPI" = "x1"; then
3153 SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
3155 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3156 if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
3157 -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1"; then
3158 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
3159 if test "x$NTLM_WB_ENABLED" = "x1"; then
3160 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
3164 if test "x$USE_TLS_SRP" = "x1"; then
3165 SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
3168 AC_SUBST(SUPPORT_FEATURES)
3170 dnl For supported protocols in pkg-config file
3171 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3172 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
3173 if test "x$SSL_ENABLED" = "x1"; then
3174 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS"
3177 if test "x$CURL_DISABLE_FTP" != "x1"; then
3178 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP"
3179 if test "x$SSL_ENABLED" = "x1"; then
3180 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS"
3183 if test "x$CURL_DISABLE_FILE" != "x1"; then
3184 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE"
3186 if test "x$CURL_DISABLE_TELNET" != "x1"; then
3187 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET"
3189 if test "x$CURL_DISABLE_LDAP" != "x1"; then
3190 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP"
3191 if test "x$CURL_DISABLE_LDAPS" != "x1"; then
3192 if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") ||
3193 (test "x$USE_OPENLDAP" != "x1" && test "x$HAVE_LDAP_SSL" = "x1"); then
3194 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS"
3198 if test "x$CURL_DISABLE_DICT" != "x1"; then
3199 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT"
3201 if test "x$CURL_DISABLE_TFTP" != "x1"; then
3202 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP"
3204 if test "x$CURL_DISABLE_GOPHER" != "x1"; then
3205 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER"
3207 if test "x$CURL_DISABLE_POP3" != "x1"; then
3208 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3"
3209 if test "x$SSL_ENABLED" = "x1"; then
3210 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S"
3213 if test "x$CURL_DISABLE_IMAP" != "x1"; then
3214 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
3215 if test "x$SSL_ENABLED" = "x1"; then
3216 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
3219 if test "x$CURL_DISABLE_SMTP" != "x1"; then
3220 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
3221 if test "x$SSL_ENABLED" = "x1"; then
3222 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS"
3225 if test "x$USE_LIBSSH2" = "x1"; then
3226 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
3227 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
3229 if test "x$CURL_DISABLE_RTSP" != "x1"; then
3230 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
3232 if test "x$USE_LIBRTMP" = "x1"; then
3233 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP"
3236 dnl replace spaces with newlines
3238 dnl replace the newlines back to spaces
3239 SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '`
3241 AC_SUBST(SUPPORT_PROTOCOLS)
3243 dnl squeeze whitespace out of some variables
3252 squeeze LIBCURL_LIBS
3253 squeeze TEST_SERVER_LIBS
3254 squeeze CURL_NETWORK_LIBS
3256 squeeze SUPPORT_FEATURES
3257 squeeze SUPPORT_PROTOCOLS
3259 if test "x$want_curldebug_assumed" = "xyes" &&
3260 test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
3261 ac_configure_args="$ac_configure_args --enable-curldebug"
3264 AC_CONFIG_FILES([Makefile \
3266 docs/examples/Makefile \
3267 docs/libcurl/Makefile \
3269 include/curl/Makefile \
3274 tests/data/Makefile \
3275 tests/server/Makefile \
3276 tests/libtest/Makefile \
3277 tests/unit/Makefile \
3279 packages/Win32/Makefile \
3280 packages/Win32/cygwin/Makefile \
3281 packages/Linux/Makefile \
3282 packages/Linux/RPM/Makefile \
3283 packages/Linux/RPM/curl.spec \
3284 packages/Linux/RPM/curl-ssl.spec \
3285 packages/Solaris/Makefile \
3286 packages/EPM/curl.list \
3287 packages/EPM/Makefile \
3288 packages/vms/Makefile \
3289 packages/AIX/Makefile \
3290 packages/AIX/RPM/Makefile \
3291 packages/AIX/RPM/curl.spec \
3297 CURL_GENERATE_CONFIGUREHELP_PM
3299 AC_MSG_NOTICE([Configured to build curl/libcurl:
3301 curl version: ${CURLVERSION}
3303 Install prefix: ${prefix}
3305 SSL support: ${curl_ssl_msg}
3306 SSH support: ${curl_ssh_msg}
3307 zlib support: ${curl_zlib_msg}
3308 krb4 support: ${curl_krb4_msg}
3309 GSSAPI support: ${curl_gss_msg}
3310 SPNEGO support: ${curl_spnego_msg}
3311 TLS-SRP support: ${curl_tls_srp_msg}
3312 resolver: ${curl_res_msg}
3313 ipv6 support: ${curl_ipv6_msg}
3314 IDN support: ${curl_idn_msg}
3315 Build libcurl: Shared=${enable_shared}, Static=${enable_static}
3316 Built-in manual: ${curl_manual_msg}
3317 Verbose errors: ${curl_verbose_msg}
3318 SSPI support: ${curl_sspi_msg}
3319 ca cert bundle: ${ca}
3320 ca cert path: ${capath}
3321 LDAP support: ${curl_ldap_msg}
3322 LDAPS support: ${curl_ldaps_msg}
3323 RTSP support: ${curl_rtsp_msg}
3324 RTMP support: ${curl_rtmp_msg}
3325 Protocols: ${SUPPORT_PROTOCOLS}
3328 if test "x$soname_bump" = "xyes"; then
3331 SONAME bump: yes - WARNING: this library will be built with the SONAME
3332 number bumped due to (a detected) ABI breakage.
3333 See lib/README.curl_off_t for details on this.