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/])
29 CURL_OVERRIDE_AUTOCONF
31 dnl configure script copyright
32 AC_COPYRIGHT([Copyright (c) 1998 - 2011 Daniel Stenberg, <daniel@haxx.se>
33 This configure script may be copied, distributed and modified under the
34 terms of the curl license; see COPYING for more details])
36 AC_CONFIG_SRCDIR([lib/urldata.h])
37 AM_CONFIG_HEADER(lib/curl_config.h src/curl_config.h include/curl/curlbuild.h)
38 AC_CONFIG_MACRO_DIR([m4])
41 CURL_CHECK_OPTION_DEBUG
42 CURL_CHECK_OPTION_OPTIMIZE
43 CURL_CHECK_OPTION_WARNINGS
44 CURL_CHECK_OPTION_WERROR
45 CURL_CHECK_OPTION_CURLDEBUG
46 CURL_CHECK_OPTION_ARES
48 CURL_CHECK_PATH_SEPARATOR_REQUIRED
51 # save the configure arguments
53 CONFIGURE_OPTIONS="\"$ac_configure_args\""
54 AC_SUBST(CONFIGURE_OPTIONS)
57 if test X"$want_werror" = Xyes; then
58 CURL_CFLAG_EXTRAS="-Werror"
60 AC_SUBST(CURL_CFLAG_EXTRAS)
62 dnl SED is mandatory for configure process and libtool.
63 dnl Set it now, allowing it to be changed later.
64 if test -z "$SED"; then
65 dnl allow it to be overridden
66 AC_PATH_PROG([SED], [sed], [not_found],
67 [$PATH:/usr/bin:/usr/local/bin])
68 if test -z "$SED" || test "$SED" = "not_found"; then
69 AC_MSG_ERROR([sed not found in PATH. Cannot continue without sed.])
74 dnl GREP is mandatory for configure process and libtool.
75 dnl Set it now, allowing it to be changed later.
76 if test -z "$GREP"; then
77 dnl allow it to be overridden
78 AC_PATH_PROG([GREP], [grep], [not_found],
79 [$PATH:/usr/bin:/usr/local/bin])
80 if test -z "$GREP" || test "$GREP" = "not_found"; then
81 AC_MSG_ERROR([grep not found in PATH. Cannot continue without grep.])
86 dnl EGREP is mandatory for configure process and libtool.
87 dnl Set it now, allowing it to be changed later.
88 if test -z "$EGREP"; then
89 dnl allow it to be overridden
90 if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
91 AC_MSG_CHECKING([for egrep])
93 AC_MSG_RESULT([$EGREP])
95 AC_PATH_PROG([EGREP], [egrep], [not_found],
96 [$PATH:/usr/bin:/usr/local/bin])
99 if test -z "$EGREP" || test "$EGREP" = "not_found"; then
100 AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.])
104 dnl AR is mandatory for configure process and libtool.
105 dnl This is target dependent, so check it as a tool.
106 if test -z "$AR"; then
107 dnl allow it to be overridden
108 AC_PATH_TOOL([AR], [ar], [not_found],
109 [$PATH:/usr/bin:/usr/local/bin])
110 if test -z "$AR" || test "$AR" = "not_found"; then
111 AC_MSG_ERROR([ar not found in PATH. Cannot continue without ar.])
118 dnl Remove non-configure distributed curlbuild.h
119 if test -f ${srcdir}/include/curl/curlbuild.h; then
120 rm -f ${srcdir}/include/curl/curlbuild.h
123 dnl figure out the libcurl version
124 CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curlver.h`
126 AC_MSG_CHECKING([curl version])
127 AC_MSG_RESULT($CURLVERSION)
129 AC_SUBST(CURLVERSION)
132 dnl we extract the numerical version for curl-config only
133 VERSIONNUM=`$SED -ne 's/^#define LIBCURL_VERSION_NUM 0x\(.*\)/\1/p' ${srcdir}/include/curl/curlver.h`
136 dnl Solaris pkgadd support definitions
137 PKGADD_PKG="HAXXcurl"
138 PKGADD_NAME="cURL - a client that groks URLs"
139 PKGADD_VENDOR="curl.haxx.se"
141 AC_SUBST(PKGADD_NAME)
142 AC_SUBST(PKGADD_VENDOR)
145 dnl initialize all the info variables
146 curl_ssl_msg="no (--with-{ssl,gnutls,nss,polarssl,cyassl,axtls} )"
147 curl_ssh_msg="no (--with-libssh2)"
148 curl_zlib_msg="no (--with-zlib)"
149 curl_krb4_msg="no (--with-krb4*)"
150 curl_gss_msg="no (--with-gssapi)"
151 curl_spnego_msg="no (--with-spnego)"
152 curl_tls_srp_msg="no (--enable-tls-srp)"
153 curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
154 curl_ipv6_msg="no (--enable-ipv6)"
155 curl_idn_msg="no (--with-libidn)"
156 curl_manual_msg="no (--enable-manual)"
157 curl_verbose_msg="enabled (--disable-verbose)"
158 curl_sspi_msg="no (--enable-sspi)"
159 curl_ldap_msg="no (--enable-ldap / --with-ldap-lib / --with-lber-lib)"
160 curl_ldaps_msg="no (--enable-ldaps)"
161 curl_rtsp_msg="no (--enable-rtsp)"
162 curl_rtmp_msg="no (--with-librtmp)"
163 init_ssl_msg=${curl_ssl_msg}
166 dnl Save anything in $LIBS for later
171 dnl Detect the canonical host and target build environment
175 dnl Get system canonical name
176 AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
178 dnl Checks for programs.
181 dnl Our curl_off_t internal and external configure settings
182 CURL_CONFIGURE_CURL_OFF_T
184 dnl This defines _ALL_SOURCE for AIX
185 CURL_CHECK_AIX_ALL_SOURCE
187 dnl Our configure and build reentrant settings
188 CURL_CONFIGURE_THREAD_SAFE
189 CURL_CONFIGURE_REENTRANT
191 dnl check for how to do large files
194 dnl support building of Windows DLLs
197 dnl force libtool to build static libraries with PIC on AMD64-Linux & FreeBSD
198 AC_MSG_CHECKING([if arch-OS host is AMD64-Linux/FreeBSD (to build static libraries with PIC)])
200 x86_64*linux*|amd64*freebsd*|ia64*freebsd*)
209 AC_MSG_CHECKING([if compiler is icc (to build with PIC)])
223 AC_MSG_CHECKING([if we need -mimpure-text])
227 if test "$GCC" = "yes"; then
234 AC_MSG_RESULT($mimpure)
235 AM_CONDITIONAL(MIMPURE, test x$mimpure = xyes)
237 dnl 'STATICLIB' is, in spite of its name, not generic but only for static-only
238 dnl builds on Windows
239 AM_CONDITIONAL(STATICLIB, false)
241 AC_MSG_CHECKING([if we need BUILDING_LIBCURL])
244 AC_DEFINE(BUILDING_LIBCURL, 1, [when building libcurl itself])
246 AC_MSG_CHECKING([if we need CURL_STATICLIB])
247 if test "X$enable_shared" = "Xno"
249 AC_DEFINE(CURL_STATICLIB, 1, [when not building a shared library])
251 AM_CONDITIONAL(STATICLIB, true)
261 # Determine whether all dependent libraries must be specified when linking
262 if test "X$enable_shared" = "Xyes" -a "X$link_all_deplibs" = "Xno"
268 AC_SUBST(REQUIRE_LIB_DEPS)
270 dnl The install stuff has already been taken care of by the automake stuff
274 dnl check if there's a way to force code inline
277 dnl **********************************************************************
278 dnl platform/compiler/architecture specific checks/flags
279 dnl **********************************************************************
282 CURL_SET_COMPILER_BASIC_OPTS
283 CURL_SET_COMPILER_DEBUG_OPTS
284 CURL_SET_COMPILER_OPTIMIZE_OPTS
285 CURL_SET_COMPILER_WARNING_OPTS
287 if test "$compiler_id" = "INTEL_UNIX_C"; then
289 if test "$compiler_num" -ge "1000"; then
290 dnl icc 10.X or later
291 CFLAGS="$CFLAGS -shared-intel"
292 elif test "$compiler_num" -ge "900"; then
294 CFLAGS="$CFLAGS -i-dynamic"
299 CURL_CHECK_COMPILER_HALT_ON_ERROR
300 CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
302 CURL_CHECK_NO_UNDEFINED
303 AM_CONDITIONAL(NO_UNDEFINED, test x$need_no_undefined = xyes)
306 AM_CONDITIONAL(CURLDEBUG, test x$want_curldebug = xyes)
308 supports_unittests=yes
309 # cross-compilation of unit tests static library/programs fails when
310 # libcurl shared library is built. This might be due to a libtool or
311 # automake issue. In this case we disable unit tests.
312 if test "x$cross_compiling" != "xno" &&
313 test "x$enable_shared" != "xno"; then
314 supports_unittests=no
317 # IRIX 6.5.24 gcc 3.3 autobuilds fail unittests library compilation due to
318 # a problem related with OpenSSL headers and library versions not matching.
319 # Disable unit tests while time to further investigate this is found.
322 if test "$compiler_id" = "GNU_C"; then
323 supports_unittests=no
328 # All AIX autobuilds fails unit tests linking against unittests library
329 # due to unittests library being built with no symbols or members. Libtool ?
330 # Disable unit tests while time to further investigate this is found.
333 supports_unittests=no
337 dnl Build unit tests when option --enable-debug is given.
338 if test "x$want_debug" = "xyes" &&
339 test "x$supports_unittests" = "xyes"; then
344 AM_CONDITIONAL(BUILD_UNITTESTS, test x$want_unittests = xyes)
346 dnl **********************************************************************
347 dnl Compilation based checks should not be done before this point.
348 dnl **********************************************************************
350 dnl **********************************************************************
351 dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
352 dnl and ws2tcpip.h take precedence over any other further checks which
353 dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
354 dnl this specific header files. And do them before its results are used.
355 dnl **********************************************************************
357 CURL_CHECK_HEADER_WINDOWS
358 CURL_CHECK_NATIVE_WINDOWS
359 case X-"$ac_cv_native_windows" in
361 CURL_CHECK_HEADER_WINSOCK
362 CURL_CHECK_HEADER_WINSOCK2
363 CURL_CHECK_HEADER_WS2TCPIP
364 CURL_CHECK_HEADER_WINLDAP
365 CURL_CHECK_HEADER_WINBER
368 ac_cv_header_winsock_h="no"
369 ac_cv_header_winsock2_h="no"
370 ac_cv_header_ws2tcpip_h="no"
371 ac_cv_header_winldap_h="no"
372 ac_cv_header_winber_h="no"
375 CURL_CHECK_WIN32_LARGEFILE
377 dnl ************************************************************
378 dnl switch off particular protocols
380 AC_MSG_CHECKING([whether to support http])
382 AC_HELP_STRING([--enable-http],[Enable HTTP support])
383 AC_HELP_STRING([--disable-http],[Disable HTTP support]),
384 [ case "$enableval" in
387 AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP])
388 AC_MSG_WARN([disable HTTP disables FTP over proxy and RTSP])
389 AC_SUBST(CURL_DISABLE_HTTP, [1])
390 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
391 AC_SUBST(CURL_DISABLE_RTSP, [1])
393 *) AC_MSG_RESULT(yes)
398 AC_MSG_CHECKING([whether to support ftp])
400 AC_HELP_STRING([--enable-ftp],[Enable FTP support])
401 AC_HELP_STRING([--disable-ftp],[Disable FTP support]),
402 [ case "$enableval" in
405 AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP])
406 AC_SUBST(CURL_DISABLE_FTP, [1])
408 *) AC_MSG_RESULT(yes)
413 AC_MSG_CHECKING([whether to support file])
415 AC_HELP_STRING([--enable-file],[Enable FILE support])
416 AC_HELP_STRING([--disable-file],[Disable FILE support]),
417 [ case "$enableval" in
420 AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE])
421 AC_SUBST(CURL_DISABLE_FILE, [1])
423 *) AC_MSG_RESULT(yes)
428 AC_MSG_CHECKING([whether to support ldap])
430 AC_HELP_STRING([--enable-ldap],[Enable LDAP support])
431 AC_HELP_STRING([--disable-ldap],[Disable LDAP support]),
432 [ case "$enableval" in
435 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
436 AC_SUBST(CURL_DISABLE_LDAP, [1])
444 AC_MSG_CHECKING([whether to support ldaps])
446 AC_HELP_STRING([--enable-ldaps],[Enable LDAPS support])
447 AC_HELP_STRING([--disable-ldaps],[Disable LDAPS support]),
448 [ case "$enableval" in
451 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
452 AC_SUBST(CURL_DISABLE_LDAPS, [1])
454 *) if test "x$CURL_DISABLE_LDAP" = "x1" ; then
455 AC_MSG_RESULT(LDAP needs to be enabled to support LDAPS)
456 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
457 AC_SUBST(CURL_DISABLE_LDAPS, [1])
460 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
461 AC_SUBST(HAVE_LDAP_SSL, [1])
465 if test "x$CURL_DISABLE_LDAP" = "x1" ; then
467 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
468 AC_SUBST(CURL_DISABLE_LDAPS, [1])
471 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
472 AC_SUBST(HAVE_LDAP_SSL, [1])
476 AC_MSG_CHECKING([whether to support rtsp])
478 AC_HELP_STRING([--enable-rtsp],[Enable RTSP support])
479 AC_HELP_STRING([--disable-rtsp],[Disable RTSP support]),
480 [ case "$enableval" in
483 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
484 AC_SUBST(CURL_DISABLE_RTSP, [1])
486 *) if test x$CURL_DISABLE_HTTP = x1 ; then
487 AC_MSG_ERROR(HTTP support needs to be enabled in order to enable RTSP support!)
490 curl_rtsp_msg="enabled"
494 if test "x$CURL_DISABLE_HTTP" != "x1"; then
496 curl_rtsp_msg="enabled"
502 AC_MSG_CHECKING([whether to support proxies])
504 AC_HELP_STRING([--enable-proxy],[Enable proxy support])
505 AC_HELP_STRING([--disable-proxy],[Disable proxy support]),
506 [ case "$enableval" in
509 AC_DEFINE(CURL_DISABLE_PROXY, 1, [to disable proxies])
510 AC_SUBST(CURL_DISABLE_PROXY, [1])
512 *) AC_MSG_RESULT(yes)
518 AC_MSG_CHECKING([whether to support dict])
520 AC_HELP_STRING([--enable-dict],[Enable DICT support])
521 AC_HELP_STRING([--disable-dict],[Disable DICT support]),
522 [ case "$enableval" in
525 AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT])
526 AC_SUBST(CURL_DISABLE_DICT, [1])
528 *) AC_MSG_RESULT(yes)
533 AC_MSG_CHECKING([whether to support telnet])
534 AC_ARG_ENABLE(telnet,
535 AC_HELP_STRING([--enable-telnet],[Enable TELNET support])
536 AC_HELP_STRING([--disable-telnet],[Disable TELNET support]),
537 [ case "$enableval" in
540 AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
541 AC_SUBST(CURL_DISABLE_TELNET, [1])
543 *) AC_MSG_RESULT(yes)
548 AC_MSG_CHECKING([whether to support tftp])
550 AC_HELP_STRING([--enable-tftp],[Enable TFTP support])
551 AC_HELP_STRING([--disable-tftp],[Disable TFTP support]),
552 [ case "$enableval" in
555 AC_DEFINE(CURL_DISABLE_TFTP, 1, [to disable TFTP])
556 AC_SUBST(CURL_DISABLE_TFTP, [1])
558 *) AC_MSG_RESULT(yes)
564 AC_MSG_CHECKING([whether to support pop3])
566 AC_HELP_STRING([--enable-pop3],[Enable POP3 support])
567 AC_HELP_STRING([--disable-pop3],[Disable POP3 support]),
568 [ case "$enableval" in
571 AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3])
572 AC_SUBST(CURL_DISABLE_POP3, [1])
574 *) AC_MSG_RESULT(yes)
581 AC_MSG_CHECKING([whether to support imap])
583 AC_HELP_STRING([--enable-imap],[Enable IMAP support])
584 AC_HELP_STRING([--disable-imap],[Disable IMAP support]),
585 [ case "$enableval" in
588 AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP])
589 AC_SUBST(CURL_DISABLE_IMAP, [1])
591 *) AC_MSG_RESULT(yes)
598 AC_MSG_CHECKING([whether to support smtp])
600 AC_HELP_STRING([--enable-smtp],[Enable SMTP support])
601 AC_HELP_STRING([--disable-smtp],[Disable SMTP support]),
602 [ case "$enableval" in
605 AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP])
606 AC_SUBST(CURL_DISABLE_SMTP, [1])
608 *) AC_MSG_RESULT(yes)
614 AC_MSG_CHECKING([whether to support gopher])
615 AC_ARG_ENABLE(gopher,
616 AC_HELP_STRING([--enable-gopher],[Enable Gopher support])
617 AC_HELP_STRING([--disable-gopher],[Disable Gopher support]),
618 [ case "$enableval" in
621 AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable Gopher])
622 AC_SUBST(CURL_DISABLE_GOPHER, [1])
624 *) AC_MSG_RESULT(yes)
631 dnl **********************************************************************
632 dnl Check for built-in manual
633 dnl **********************************************************************
635 AC_MSG_CHECKING([whether to provide built-in manual])
636 AC_ARG_ENABLE(manual,
637 AC_HELP_STRING([--enable-manual],[Enable built-in manual])
638 AC_HELP_STRING([--disable-manual],[Disable built-in manual]),
639 [ case "$enableval" in
643 *) AC_MSG_RESULT(yes)
650 dnl The actual use of the USE_MANUAL variable is done much later in this
651 dnl script to allow other actions to disable it as well.
653 dnl **********************************************************************
654 dnl Checks for libraries.
655 dnl **********************************************************************
659 dnl gethostbyname without lib or in the nsl lib?
660 AC_CHECK_FUNC(gethostbyname,
661 [HAVE_GETHOSTBYNAME="1"
663 [ AC_CHECK_LIB(nsl, gethostbyname,
664 [HAVE_GETHOSTBYNAME="1"
669 if test "$HAVE_GETHOSTBYNAME" != "1"
671 dnl gethostbyname in the socket lib?
672 AC_CHECK_LIB(socket, gethostbyname,
673 [HAVE_GETHOSTBYNAME="1"
674 LIBS="$LIBS -lsocket"
678 dnl At least one system has been identified to require BOTH nsl and socket
679 dnl libs at the same time to link properly.
680 if test "$HAVE_GETHOSTBYNAME" != "1"
682 AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs])
683 my_ac_save_LIBS=$LIBS
684 LIBS="-lnsl -lsocket $LIBS"
692 HAVE_GETHOSTBYNAME="1"
695 LIBS=$my_ac_save_LIBS
699 if test "$HAVE_GETHOSTBYNAME" != "1"
701 dnl This is for winsock systems
702 if test "$ac_cv_header_windows_h" = "yes"; then
703 if test "$ac_cv_header_winsock_h" = "yes"; then
706 winsock_LIB="-lwinsock"
709 winsock_LIB="-lwsock32"
713 if test "$ac_cv_header_winsock2_h" = "yes"; then
714 winsock_LIB="-lws2_32"
716 if test ! -z "$winsock_LIB"; then
717 my_ac_save_LIBS=$LIBS
718 LIBS="$winsock_LIB $LIBS"
719 AC_MSG_CHECKING([for gethostbyname in $winsock_LIB])
722 #ifdef HAVE_WINDOWS_H
723 #ifndef WIN32_LEAN_AND_MEAN
724 #define WIN32_LEAN_AND_MEAN
727 #ifdef HAVE_WINSOCK2_H
728 #include <winsock2.h>
730 #ifdef HAVE_WINSOCK_H
736 gethostbyname("www.dummysite.com");
740 HAVE_GETHOSTBYNAME="1"
744 LIBS=$my_ac_save_LIBS
750 if test "$HAVE_GETHOSTBYNAME" != "1"
752 dnl This is for Minix 3.1
753 AC_MSG_CHECKING([for gethostbyname for Minix 3])
756 /* Older Minix versions may need <net/gen/netdb.h> here instead */
759 gethostbyname("www.dummysite.com");
763 HAVE_GETHOSTBYNAME="1"
769 if test "$HAVE_GETHOSTBYNAME" != "1"
771 dnl This is for eCos with a stubbed DNS implementation
772 AC_MSG_CHECKING([for gethostbyname for eCos])
778 gethostbyname("www.dummysite.com");
782 HAVE_GETHOSTBYNAME="1"
788 if test "$HAVE_GETHOSTBYNAME" != "1"
790 dnl gethostbyname in the network lib - for Haiku OS
791 AC_CHECK_LIB(network, gethostbyname,
792 [HAVE_GETHOSTBYNAME="1"
793 LIBS="$LIBS -lnetwork"
797 if test "$HAVE_GETHOSTBYNAME" != "1"
799 dnl gethostbyname in the net lib - for BeOS
800 AC_CHECK_LIB(net, gethostbyname,
801 [HAVE_GETHOSTBYNAME="1"
807 if test "$HAVE_GETHOSTBYNAME" != "1"; then
808 AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
812 AC_CHECK_FUNC(strcasecmp, , [ AC_CHECK_LIB(resolve, strcasecmp) ])
814 if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
815 AC_CHECK_LIB(resolve, strcasecmp,
816 [LIBS="-lresolve $LIBS"],
820 ac_cv_func_strcasecmp="no"
822 CURL_CHECK_LIBS_CONNECT
824 CURL_NETWORK_LIBS=$LIBS
826 dnl **********************************************************************
827 dnl In case that function clock_gettime with monotonic timer is available,
828 dnl check for additional required libraries.
829 dnl **********************************************************************
830 CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
832 dnl **********************************************************************
833 dnl The preceding library checks are all potentially useful for test
834 dnl servers (for providing networking support). Save the list of required
835 dnl libraries at this point for use while linking those test servers.
836 dnl **********************************************************************
837 TEST_SERVER_LIBS=$LIBS
839 dnl **********************************************************************
840 AC_MSG_CHECKING([whether to use libgcc])
841 AC_ARG_ENABLE(libgcc,
842 AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
843 [ case "$enableval" in
845 ALL_LIBS="$ALL_LIBS -lgcc"
854 dnl **********************************************************************
856 dnl **********************************************************************
859 AC_ARG_WITH(ldap-lib,
860 AC_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]),
861 [LDAPLIBNAME="$withval"])
864 AC_ARG_WITH(lber-lib,
865 AC_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]),
866 [LBERLIBNAME="$withval"])
868 if test x$CURL_DISABLE_LDAP != x1 ; then
870 CURL_CHECK_HEADER_LBER
871 CURL_CHECK_HEADER_LDAP
872 CURL_CHECK_HEADER_LDAPSSL
873 CURL_CHECK_HEADER_LDAP_SSL
875 if test -z "$LDAPLIBNAME" ; then
876 if test "$ac_cv_native_windows" = "yes"; then
877 dnl Windows uses a single and unique LDAP library name
878 LDAPLIBNAME="wldap32"
883 if test "$LDAPLIBNAME" ; then
884 AC_CHECK_LIB("$LDAPLIBNAME", ldap_init,, [
885 AC_MSG_WARN(["$LDAPLIBNAME" is not an LDAP library: LDAP disabled])
886 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
887 AC_SUBST(CURL_DISABLE_LDAP, [1])])
888 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
889 AC_SUBST(CURL_DISABLE_LDAPS, [1])
891 dnl Try to find the right ldap libraries for this system
893 case X-"$curl_cv_ldap_LIBS" in
895 AC_MSG_WARN([Cannot find libraries for LDAP support: LDAP disabled])
896 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
897 AC_SUBST(CURL_DISABLE_LDAP, [1])
898 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
899 AC_SUBST(CURL_DISABLE_LDAPS, [1])
905 if test x$CURL_DISABLE_LDAP != x1 ; then
907 if test "$LBERLIBNAME" ; then
908 dnl If name is "no" then don't define this library at all
909 dnl (it's only needed if libldap.so's dependencies are broken).
910 if test "$LBERLIBNAME" != "no" ; then
911 AC_CHECK_LIB("$LBERLIBNAME", ber_free,, [
912 AC_MSG_WARN(["$LBERLIBNAME" is not an LBER library: LDAP disabled])
913 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
914 AC_SUBST(CURL_DISABLE_LDAP, [1])])
915 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
916 AC_SUBST(CURL_DISABLE_LDAPS, [1])
921 if test x$CURL_DISABLE_LDAP != x1 ; then
922 AC_CHECK_FUNCS([ldap_url_parse ldap_init_fd])
924 if test "$LDAPLIBNAME" = "wldap32"; then
925 curl_ldap_msg="enabled (winldap)"
926 AC_DEFINE(CURL_LDAP_WIN, 1, [Use Windows LDAP implementation])
928 curl_ldap_msg="enabled (OpenLDAP)"
929 if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then
930 AC_DEFINE(USE_OPENLDAP, 1, [Use OpenLDAP-specific code])
931 AC_SUBST(USE_OPENLDAP, [1])
936 if test x$CURL_DISABLE_LDAPS != x1 ; then
937 curl_ldaps_msg="enabled"
940 dnl **********************************************************************
942 dnl **********************************************************************
944 AC_MSG_CHECKING([whether to enable ipv6])
946 AC_HELP_STRING([--enable-ipv6],[Enable ipv6 (with ipv4) support])
947 AC_HELP_STRING([--disable-ipv6],[Disable ipv6 support]),
948 [ case "$enableval" in
953 *) AC_MSG_RESULT(yes)
958 AC_TRY_RUN([ /* is AF_INET6 available? */
959 #include <sys/types.h>
960 #include <sys/socket.h>
963 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
977 if test "$ipv6" = "yes"; then
978 curl_ipv6_msg="enabled"
981 # Check if struct sockaddr_in6 have sin6_scope_id member
982 if test "$ipv6" = yes; then
983 AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member])
985 #include <sys/types.h>
986 #include <netinet/in.h>] ,
987 struct sockaddr_in6 s; s.sin6_scope_id = 0; , have_sin6_scope_id=yes)
988 if test "$have_sin6_scope_id" = yes; then
990 AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member])
996 dnl **********************************************************************
997 dnl Check if the operating system allows programs to write to their own argv[]
998 dnl **********************************************************************
1000 AC_MSG_CHECKING([if argv can be written to])
1003 int main(int argc, char ** argv) {
1005 return (argv[0][0] == ' ')?0:1;
1009 curl_cv_writable_argv=yes
1011 curl_cv_writable_argv=no
1013 curl_cv_writable_argv=cross
1015 case $curl_cv_writable_argv in
1017 AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv])
1025 AC_MSG_WARN([the previous check could not be made default was used])
1029 dnl **********************************************************************
1030 dnl Check for the presence of Kerberos4 libraries and headers
1031 dnl **********************************************************************
1033 AC_ARG_WITH(krb4-includes,
1034 AC_HELP_STRING([--with-krb4-includes=DIR],
1035 [Specify location of kerberos4 headers]),[
1036 CPPFLAGS="$CPPFLAGS -I$withval"
1041 AC_ARG_WITH(krb4-libs,
1042 AC_HELP_STRING([--with-krb4-libs=DIR],[Specify location of kerberos4 libs]),[
1043 LDFLAGS="$LDFLAGS -L$withval"
1050 AC_ARG_WITH(krb4,dnl
1051 AC_HELP_STRING([--with-krb4=DIR],[where to look for Kerberos4]),[
1053 if test X"$OPT_KRB4" != Xno; then
1055 if test X"$OPT_KRB4" != Xyes; then
1056 LDFLAGS="$LDFLAGS -L$OPT_KRB4/lib$libsuff"
1057 KRB4LIB="$OPT_KRB4/lib$libsuff"
1058 CPPFLAGS="$CPPFLAGS -I$OPT_KRB4/include"
1059 KRB4INC="$OPT_KRB4/include"
1064 AC_MSG_CHECKING([if Kerberos4 support is requested])
1066 if test "$want_krb4" = yes
1068 if test "$ipv6" = "yes"; then
1069 echo krb4 is not compatible with IPv6
1074 dnl Check for & handle argument to --with-krb4
1076 AC_MSG_CHECKING(where to look for Kerberos4)
1077 if test X"$OPT_KRB4" = Xyes
1079 AC_MSG_RESULT([defaults])
1081 AC_MSG_RESULT([libs in $KRB4LIB, headers in $KRB4INC])
1084 dnl Check for DES library
1085 AC_CHECK_LIB(des, des_pcbc_encrypt,
1087 AC_CHECK_HEADERS(des.h)
1090 AC_CHECK_FUNC(res_search, , [AC_CHECK_LIB(resolv, res_search)])
1092 dnl Check for the Kerberos4 library
1093 AC_CHECK_LIB(krb, krb_net_read,
1095 dnl Check for header files
1096 AC_CHECK_HEADERS(krb.h)
1098 dnl we found the required libraries, add to LIBS
1099 LIBS="-lkrb -lcom_err -ldes $LIBS"
1101 dnl Check for function krb_get_our_ip_for_realm
1102 dnl this is needed for NAT networks
1103 AC_CHECK_FUNCS(krb_get_our_ip_for_realm)
1106 AC_DEFINE(HAVE_KRB4, 1,
1107 [if you have the Kerberos4 libraries (including -ldes)])
1109 dnl substitute it too!
1111 AC_SUBST(KRB4_ENABLED)
1113 curl_krb4_msg="enabled"
1115 dnl the krb4 stuff needs a strlcpy()
1116 AC_CHECK_FUNCS(strlcpy)
1124 dnl **********************************************************************
1125 dnl Check for FBopenssl(SPNEGO) libraries
1126 dnl **********************************************************************
1129 AC_HELP_STRING([--with-spnego=DIR],
1130 [Specify location of SPNEGO library fbopenssl]), [
1131 SPNEGO_ROOT="$withval"
1132 if test x"$SPNEGO_ROOT" != xno; then
1137 AC_MSG_CHECKING([if SPNEGO support is requested])
1138 if test x"$want_spnego" = xyes; then
1140 if test X"$SPNEGO_ROOT" = Xyes; then
1141 AC_MSG_ERROR([FBOpenSSL libs and/or directories were not found where specified!])
1144 if test -z "$SPNEGO_LIB_DIR"; then
1145 LDFLAGS="$LDFLAGS -L$SPNEGO_ROOT -lfbopenssl"
1147 LDFLAGS="$LDFLAGS $SPNEGO_LIB_DIR"
1151 AC_DEFINE(HAVE_SPNEGO, 1,
1152 [Define this if you have the SPNEGO library fbopenssl])
1153 curl_spnego_msg="enabled"
1159 dnl **********************************************************************
1160 dnl Check for GSS-API libraries
1161 dnl **********************************************************************
1163 dnl check for gss stuff in the /usr as default
1166 AC_ARG_WITH(gssapi-includes,
1167 AC_HELP_STRING([--with-gssapi-includes=DIR],
1168 [Specify location of GSSAPI header]),
1169 [ GSSAPI_INCS="-I$withval"
1173 AC_ARG_WITH(gssapi-libs,
1174 AC_HELP_STRING([--with-gssapi-libs=DIR],
1175 [Specify location of GSSAPI libs]),
1176 [ GSSAPI_LIB_DIR="-L$withval"
1181 AC_HELP_STRING([--with-gssapi=DIR],
1182 [Where to look for GSSAPI]), [
1183 GSSAPI_ROOT="$withval"
1184 if test x"$GSSAPI_ROOT" != xno; then
1186 if test x"$GSSAPI_ROOT" = xyes; then
1187 dnl if yes, then use default root
1193 save_CPPFLAGS="$CPPFLAGS"
1194 AC_MSG_CHECKING([if GSSAPI support is requested])
1195 if test x"$want_gss" = xyes; then
1198 if test -z "$GSSAPI_INCS"; then
1199 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1200 GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
1201 elif test "$GSSAPI_ROOT" != "yes"; then
1202 GSSAPI_INCS="-I$GSSAPI_ROOT/include"
1206 CPPFLAGS="$CPPFLAGS $GSSAPI_INCS"
1208 AC_CHECK_HEADER(gss.h,
1210 dnl found in the given dirs
1211 AC_DEFINE(HAVE_GSSGNU, 1, [if you have the GNU gssapi libraries])
1215 dnl not found, check Heimdal or MIT
1216 AC_CHECK_HEADERS([gssapi/gssapi.h], [], [not_mit=1])
1218 [gssapi/gssapi_generic.h gssapi/gssapi_krb5.h],
1223 #ifdef HAVE_GSSAPI_GSSAPI_H
1224 #include <gssapi/gssapi.h>
1227 if test "x$not_mit" = "x1"; then
1228 dnl MIT not found, check for Heimdal
1229 AC_CHECK_HEADER(gssapi.h,
1232 AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have the Heimdal gssapi libraries])
1235 dnl no header found, disabling GSS
1237 AC_MSG_WARN(disabling GSSAPI since no header files was found)
1242 AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
1243 dnl check if we have a really old MIT kerberos (<= 1.2)
1244 AC_MSG_CHECKING([if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE])
1247 #include <gssapi/gssapi.h>
1248 #include <gssapi/gssapi_generic.h>
1249 #include <gssapi/gssapi_krb5.h>
1254 GSS_C_NT_HOSTBASED_SERVICE,
1258 AC_MSG_RESULT([yes])
1261 AC_DEFINE(HAVE_OLD_GSSMIT, 1,
1262 [if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE])
1270 if test x"$want_gss" = xyes; then
1271 AC_DEFINE(HAVE_GSSAPI, 1, [if you have the gssapi libraries])
1273 curl_gss_msg="enabled (MIT/Heimdal)"
1275 if test -n "$gnu_gss"; then
1276 curl_gss_msg="enabled (GNU GSS)"
1277 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1279 elif test -z "$GSSAPI_LIB_DIR"; then
1282 LIBS="$LIBS -lgssapi_krb5 -lresolv"
1285 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1286 dnl krb5-config doesn't have --libs-only-L or similar, put everything
1288 gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
1289 LIBS="$LIBS $gss_libs"
1290 elif test "$GSSAPI_ROOT" != "yes"; then
1291 LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
1292 LIBS="$LIBS -lgssapi"
1294 LIBS="$LIBS -lgssapi"
1299 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1300 LIBS="$LIBS -lgssapi"
1303 CPPFLAGS="$save_CPPFLAGS"
1306 dnl **********************************************************************
1307 dnl Check for the presence of SSL libraries and headers
1308 dnl **********************************************************************
1310 dnl Default to compiler & linker defaults for SSL files & libraries.
1312 dnl Default to no CA bundle
1315 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])
1316 AC_HELP_STRING([--without-ssl], [disable OpenSSL]),
1319 if test X"$OPT_SSL" != Xno; then
1320 dnl backup the pre-ssl variables
1321 CLEANLDFLAGS="$LDFLAGS"
1322 CLEANCPPFLAGS="$CPPFLAGS"
1327 dnl --with-ssl (without path) used
1328 if test x$cross_compiling != xyes; then
1329 dnl only do pkg-config magic when not cross-compiling
1332 PREFIX_OPENSSL=/usr/local/ssl
1333 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1336 dnl no --with-ssl option given, just check default places
1337 if test x$cross_compiling != xyes; then
1338 dnl only do pkg-config magic when not cross-compiling
1344 dnl check the given --with-ssl spot
1346 PREFIX_OPENSSL=$OPT_SSL
1348 dnl Try pkg-config even when cross-compiling. Since we
1349 dnl specify PKG_CONFIG_LIBDIR we're only looking where
1350 dnl the user told us to look
1351 OPENSSL_PCDIR="$OPT_SSL/lib/pkgconfig"
1352 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$OPENSSL_PCDIR"])
1353 if test -f "$OPENSSL_PCDIR/openssl.pc"; then
1357 dnl in case pkg-config comes up empty, use what we got
1359 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1360 if test "$PREFIX_OPENSSL" != "/usr" ; then
1361 SSL_LDFLAGS="-L$LIB_OPENSSL"
1362 SSL_CPPFLAGS="-I$PREFIX_OPENSSL/include"
1364 SSL_CPPFLAGS="$SSL_CPPFLAGS -I$PREFIX_OPENSSL/include/openssl"
1368 if test "$PKGTEST" = "yes"; then
1370 CURL_CHECK_PKGCONFIG(openssl, [$OPENSSL_PCDIR])
1372 if test "$PKGCONFIG" != "no" ; then
1373 SSL_LIBS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1374 $PKGCONFIG --libs-only-l openssl 2>/dev/null`
1376 SSL_LDFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1377 $PKGCONFIG --libs-only-L openssl 2>/dev/null`
1379 SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1380 $PKGCONFIG --cflags-only-I openssl 2>/dev/null`
1382 AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"])
1383 AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"])
1384 AC_MSG_NOTICE([pkg-config: SSL_CPPFLAGS: "$SSL_CPPFLAGS"])
1386 LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/-L//g'`
1388 dnl use the values pkg-config reported. This is here
1389 dnl instead of below with CPPFLAGS and LDFLAGS because we only
1390 dnl learn about this via pkg-config. If we only have
1391 dnl the argument to --with-ssl we don't know what
1392 dnl additional libs may be necessary. Hope that we
1394 LIBS="$LIBS $SSL_LIBS"
1398 dnl finally, set flags to use SSL
1399 CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
1400 LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
1402 dnl This is for Msys/Mingw
1404 *-*-msys* | *-*-mingw*)
1405 AC_MSG_CHECKING([for gdi32])
1406 my_ac_save_LIBS=$LIBS
1407 LIBS="-lgdi32 $LIBS"
1408 AC_TRY_LINK([#include <windef.h>
1409 #include <wingdi.h>],
1412 AC_MSG_RESULT([yes])],
1413 [ dnl failed, restore LIBS
1414 LIBS=$my_ac_save_LIBS
1420 AC_CHECK_LIB(crypto, CRYPTO_lock,[
1422 LIBS="-lcrypto $LIBS"
1424 LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL"
1425 CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include"
1426 AC_CHECK_LIB(crypto, CRYPTO_add_lock,[
1428 LIBS="-lcrypto $LIBS"], [
1429 LDFLAGS="$CLEANLDFLAGS"
1430 CPPFLAGS="$CLEANCPPFLAGS"
1436 if test X"$HAVECRYPTO" = X"yes"; then
1437 dnl This is only reasonable to do if crypto actually is there: check for
1438 dnl SSL libs NOTE: it is important to do this AFTER the crypto lib
1440 AC_CHECK_LIB(ssl, SSL_connect)
1442 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1443 dnl we didn't find the SSL lib, try the RSAglue/rsaref stuff
1444 AC_MSG_CHECKING(for ssl with RSAglue/rsaref libs in use);
1446 LIBS="$LIBS -lRSAglue -lrsaref"
1447 AC_CHECK_LIB(ssl, SSL_connect)
1448 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1449 dnl still no SSL_connect
1458 dnl Have the libraries--check for SSLeay/OpenSSL headers
1459 AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
1460 openssl/pem.h openssl/ssl.h openssl/err.h,
1461 curl_ssl_msg="enabled (OpenSSL)"
1463 AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]))
1465 if test $ac_cv_header_openssl_x509_h = no; then
1466 dnl we don't use the "action" part of the AC_CHECK_HEADERS macro
1467 dnl since 'err.h' might in fact find a krb4 header with the same
1469 AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h)
1471 if test $ac_cv_header_x509_h = yes &&
1472 test $ac_cv_header_crypto_h = yes &&
1473 test $ac_cv_header_ssl_h = yes; then
1475 curl_ssl_msg="enabled (OpenSSL)"
1481 if test X"$OPENSSL_ENABLED" = X"1"; then
1482 AC_DEFINE(USE_SSLEAY, 1, [if SSL is enabled])
1484 dnl is there a pkcs12.h header present?
1485 AC_CHECK_HEADERS(openssl/pkcs12.h)
1489 dnl USE_SSLEAY is the historical name for what configure calls
1490 dnl OPENSSL_ENABLED; the names should really be unified
1491 USE_SSLEAY="$OPENSSL_ENABLED"
1492 AC_SUBST(USE_SSLEAY)
1494 if test X"$OPT_SSL" != Xoff &&
1495 test "$OPENSSL_ENABLED" != "1"; then
1496 AC_MSG_ERROR([OpenSSL libs and/or directories were not found where specified!])
1500 if test X"$OPENSSL_ENABLED" = X"1"; then
1501 dnl If the ENGINE library seems to be around, check for the OpenSSL engine
1502 dnl stuff, it is kind of "separated" from the main SSL check
1503 AC_CHECK_FUNC(ENGINE_init,
1505 AC_CHECK_HEADERS(openssl/engine.h)
1506 AC_CHECK_FUNCS( ENGINE_load_builtin_engines )
1509 dnl these can only exist if openssl exists
1510 dnl yassl doesn't have SSL_get_shutdown
1512 AC_CHECK_FUNCS( RAND_status \
1516 CRYPTO_cleanup_all_ex_data \
1518 SSLv2_client_method )
1520 dnl Make an attempt to detect if this is actually yassl's headers and
1521 dnl OpenSSL emulation layer. We still leave everything else believing
1522 dnl and acting like OpenSSL.
1524 AC_MSG_CHECKING([for yaSSL using OpenSSL compatibility mode])
1527 #include <openssl/ssl.h>
1529 #if defined(YASSL_VERSION) && defined(OPENSSL_VERSION_NUMBER)
1530 int dummy = SSL_ERROR_NONE;
1532 Not the yaSSL OpenSSL compatibility header.
1536 AC_MSG_RESULT([yes])
1537 AC_DEFINE_UNQUOTED(USE_YASSLEMUL, 1,
1538 [Define to 1 if using yaSSL in OpenSSL compatibility mode.])
1539 curl_ssl_msg="enabled (OpenSSL emulation by yaSSL)"
1545 if test "$OPENSSL_ENABLED" = "1"; then
1546 if test -n "$LIB_OPENSSL"; then
1547 dnl when the ssl shared libs were found in a path that the run-time
1548 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
1549 dnl to prevent further configure tests to fail due to this
1551 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_OPENSSL"
1552 export LD_LIBRARY_PATH
1553 AC_MSG_NOTICE([Added $LIB_OPENSSL to LD_LIBRARY_PATH])
1555 CURL_CHECK_OPENSSL_API
1560 dnl **********************************************************************
1561 dnl Check for the presence of ZLIB libraries and headers
1562 dnl **********************************************************************
1564 dnl Check for & handle argument to --with-zlib.
1569 AC_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
1570 AC_HELP_STRING([--without-zlib],[disable use of zlib]),
1571 [OPT_ZLIB="$withval"])
1573 if test "$OPT_ZLIB" = "no" ; then
1574 AC_MSG_WARN([zlib disabled])
1576 if test "$OPT_ZLIB" = "yes" ; then
1580 if test -z "$OPT_ZLIB" ; then
1581 dnl check for the lib first without setting any new path, since many
1582 dnl people have it in the default path
1584 AC_CHECK_LIB(z, inflateEnd,
1585 dnl libz found, set the variable
1587 dnl if no lib found, try /usr/local
1588 [OPT_ZLIB="/usr/local"])
1592 dnl Add a nonempty path to the compiler flags
1593 if test -n "$OPT_ZLIB"; then
1594 CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include"
1595 LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff"
1598 AC_CHECK_HEADER(zlib.h,
1600 dnl zlib.h was found
1602 dnl if the lib wasn't found already, try again with the new paths
1603 if test "$HAVE_LIBZ" != "1"; then
1604 AC_CHECK_LIB(z, gzread,
1606 dnl the lib was found!
1609 [ CPPFLAGS=$_cppflags
1614 dnl zlib.h was not found, restore the flags
1619 if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1"
1621 AC_MSG_WARN([configure found only the libz lib, not the header file!])
1623 elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1"
1625 AC_MSG_WARN([configure found only the libz header file, not the lib!])
1626 elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1"
1628 dnl both header and lib were found!
1630 AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file])
1631 AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available])
1633 CURL_LIBS="$CURL_LIBS -lz"
1636 dnl replace 'HAVE_LIBZ' in the automake makefile.ams
1638 AC_MSG_NOTICE([found both libz and libz.h header])
1639 curl_zlib_msg="enabled"
1643 dnl set variable for use in automakefile(s)
1644 AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1)
1646 dnl **********************************************************************
1647 dnl Check for the random seed preferences
1648 dnl **********************************************************************
1650 if test X"$OPENSSL_ENABLED" = X"1"; then
1651 AC_ARG_WITH(egd-socket,
1652 AC_HELP_STRING([--with-egd-socket=FILE],
1653 [Entropy Gathering Daemon socket pathname]),
1654 [ EGD_SOCKET="$withval" ]
1656 if test -n "$EGD_SOCKET" ; then
1657 AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET",
1658 [your Entropy Gathering Daemon socket pathname] )
1661 dnl Check for user-specified random device
1663 AC_HELP_STRING([--with-random=FILE],
1664 [read randomness from FILE (default=/dev/urandom)]),
1665 [ RANDOM_FILE="$withval" ],
1667 if test x$cross_compiling != xyes; then
1668 dnl Check for random device
1669 AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
1671 AC_MSG_WARN([skipped the /dev/urandom detection when cross-compiling])
1675 if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
1676 AC_SUBST(RANDOM_FILE)
1677 AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
1678 [a suitable file to read random data from])
1683 dnl We require OpenSSL with SRP support.
1685 if test "$OPENSSL_ENABLED" = "1"; then
1686 AC_CHECK_LIB(crypto, SRP_Calc_client_key,
1688 AC_DEFINE(HAVE_SSLEAY_SRP, 1, [if you have the function SRP_Calc_client_key])
1689 AC_SUBST(HAVE_SSLEAY_SRP, [1])
1693 dnl ----------------------------------------------------
1694 dnl check for GnuTLS
1695 dnl ----------------------------------------------------
1697 dnl Default to compiler & linker defaults for GnuTLS files & libraries.
1700 AC_ARG_WITH(gnutls,dnl
1701 AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root])
1702 AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]),
1703 OPT_GNUTLS=$withval)
1705 if test "$OPENSSL_ENABLED" != "1"; then
1707 if test X"$OPT_GNUTLS" != Xno; then
1710 if test "x$OPT_GNUTLS" = "xyes"; then
1711 dnl this is with no partiular path given
1712 CURL_CHECK_PKGCONFIG(gnutls)
1714 if test "$PKGCONFIG" != "no" ; then
1715 addlib=`$PKGCONFIG --libs-only-l gnutls`
1716 addld=`$PKGCONFIG --libs-only-L gnutls`
1717 addcflags=`$PKGCONFIG --cflags-only-I gnutls`
1718 version=`$PKGCONFIG --modversion gnutls`
1719 gtlslib=`echo $addld | $SED -e 's/-L//'`
1721 dnl without pkg-config, we try libgnutls-config as that was how it
1723 check=`libgnutls-config --version 2>/dev/null`
1724 if test -n "$check"; then
1725 addlib=`libgnutls-config --libs`
1726 addcflags=`libgnutls-config --cflags`
1727 version=`libgnutls-config --version`
1728 gtlslib=`libgnutls-config --prefix`/lib$libsuff
1732 dnl this is with a given path, first check if there's a libgnutls-config
1733 dnl there and if not, make an educated guess
1734 cfg=$OPT_GNUTLS/bin/libgnutls-config
1735 check=`$cfg --version 2>/dev/null`
1736 if test -n "$check"; then
1737 addlib=`$cfg --libs`
1738 addcflags=`$cfg --cflags`
1739 version=`$cfg --version`
1740 gtlslib=`$cfg --prefix`/lib$libsuff
1742 dnl without pkg-config and libgnutls-config, we guess a lot!
1744 addld=-L$OPT_GNUTLS/lib$libsuff
1745 addcflags=-I$OPT_GNUTLS/include
1746 version="" # we just don't know
1747 gtlslib=$OPT_GNUTLS/lib$libsuff
1751 if test -z "$version"; then
1752 dnl lots of efforts, still no go
1756 if test -n "$addlib"; then
1759 CLEANCPPFLAGS="$CPPFLAGS"
1760 CLEADLDFLAGS="$LDFLAGS"
1762 LIBS="$LIBS $addlib"
1763 LDFLAGS="$LDFLAGS $addld"
1764 if test "$addcflags" != "-I/usr/include"; then
1765 CPPFLAGS="$CPPFLAGS $addcflags"
1768 AC_CHECK_LIB(gnutls, gnutls_check_version,
1770 AC_DEFINE(USE_GNUTLS, 1, [if GnuTLS is enabled])
1771 AC_SUBST(USE_GNUTLS, [1])
1774 curl_ssl_msg="enabled (GnuTLS)"
1778 CPPFLAGS="$CLEANCPPFLAGS"
1781 if test "x$USE_GNUTLS" = "xyes"; then
1782 AC_MSG_NOTICE([detected GnuTLS version $version])
1784 if test -n "$gtlslib"; then
1785 dnl when shared libs were found in a path that the run-time
1786 dnl linker doesn't search through, we need to add it to
1787 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1790 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlslib"
1791 export LD_LIBRARY_PATH
1792 AC_MSG_NOTICE([Added $gtlslib to LD_LIBRARY_PATH])
1798 fi dnl GNUTLS not disabled
1803 dnl Check which crypto backend GnuTLS uses
1806 if test "$GNUTLS_ENABLED" = "1"; then
1808 # First check if we can detect either crypto library via transitive linking
1809 AC_CHECK_LIB(gnutls, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1810 if test "$USE_GNUTLS_NETTLE" = ""; then
1811 AC_CHECK_LIB(gnutls, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1813 # If not, try linking directly to both of them to see if they are available
1814 if test "$USE_GNUTLS_NETTLE" = ""; then
1815 AC_CHECK_LIB(nettle, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1817 if test "$USE_GNUTLS_NETTLE" = ""; then
1818 AC_CHECK_LIB(gcrypt, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1820 if test "$USE_GNUTLS_NETTLE" = ""; then
1821 AC_MSG_ERROR([GnuTLS found, but neither gcrypt nor nettle found])
1823 if test "$USE_GNUTLS_NETTLE" = "1"; then
1824 AC_DEFINE(USE_GNUTLS_NETTLE, 1, [if GnuTLS uses nettle as crypto backend])
1825 AC_SUBST(USE_GNUTLS_NETTLE, [1])
1830 dnl We require GnuTLS with SRP support.
1832 if test "$GNUTLS_ENABLED" = "1"; then
1833 AC_CHECK_LIB(gnutls, gnutls_srp_verifier,
1835 AC_DEFINE(HAVE_GNUTLS_SRP, 1, [if you have the function gnutls_srp_verifier])
1836 AC_SUBST(HAVE_GNUTLS_SRP, [1])
1840 dnl ----------------------------------------------------
1841 dnl check for PolarSSL
1842 dnl ----------------------------------------------------
1844 dnl Default to compiler & linker defaults for PolarSSL files & libraries.
1849 AC_ARG_WITH(polarssl,dnl
1850 AC_HELP_STRING([--with-polarssl=PATH],[where to look for PolarSSL, PATH points to the installation root])
1851 AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]),
1852 OPT_POLARSSL=$withval)
1854 if test "$OPENSSL_ENABLED" != "1"; then
1856 if test X"$OPT_POLARSSL" != Xno; then
1858 if test "$OPT_POLARSSL" = "yes"; then
1862 if test -z "$OPT_POLARSSL" ; then
1863 dnl check for lib first without setting any new path
1865 AC_CHECK_LIB(polarssl, havege_init,
1866 dnl libpolarssl found, set the variable
1868 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1869 AC_SUBST(USE_POLARSSL, [1])
1872 curl_ssl_msg="enabled (PolarSSL)"
1876 if test "x$USE_POLARSSL" != "xyes"; then
1877 dnl add the path and test again
1878 addld=-L$OPT_POLARSSL/lib$libsuff
1879 addcflags=-I$OPT_POLARSSL/include
1880 polarssllib=$OPT_POLARSSL/lib$libsuff
1882 LDFLAGS="$LDFLAGS $addld"
1883 if test "$addcflags" != "-I/usr/include"; then
1884 CPPFLAGS="$CPPFLAGS $addcflags"
1887 AC_CHECK_LIB(polarssl, ssl_init,
1889 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1890 AC_SUBST(USE_POLARSSL, [1])
1893 curl_ssl_msg="enabled (PolarSSL)"
1901 if test "x$USE_POLARSSL" = "xyes"; then
1902 AC_MSG_NOTICE([detected PolarSSL])
1904 CURL_LIBS="$CURL_LIBS -lpolarssl"
1905 LIBS="$LIBS -lpolarssl"
1907 if test -n "$polarssllib"; then
1908 dnl when shared libs were found in a path that the run-time
1909 dnl linker doesn't search through, we need to add it to
1910 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1913 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$polarssllib"
1914 export LD_LIBRARY_PATH
1915 AC_MSG_NOTICE([Added $polarssllib to LD_LIBRARY_PATH])
1920 fi dnl PolarSSL not disabled
1924 dnl ----------------------------------------------------
1925 dnl check for CyaSSL
1926 dnl ----------------------------------------------------
1928 dnl Default to compiler & linker defaults for CyaSSL files & libraries.
1933 AC_ARG_WITH(cyassl,dnl
1934 AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to the installation root (default: /usr/local/cyassl)])
1935 AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
1936 OPT_CYASSL=$withval)
1938 if test "$OPENSSL_ENABLED" != "1"; then
1940 if test X"$OPT_CYASSL" != Xno; then
1942 if test "$OPT_CYASSL" = "yes"; then
1946 if test -z "$OPT_CYASSL" ; then
1947 dnl check for lib in default first
1949 trycyassldir="/usr/local/cyassl"
1951 LDFLAGS="$LDFLAGS -L$trycyassldir/lib"
1952 CPPFLAGS="$CPPFLAGS -I$trycyassldir/include"
1954 AC_CHECK_LIB(cyassl, InitCyaSSL,
1955 dnl libcyassl found, set the variable
1957 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
1958 AC_SUBST(USE_CYASSL, [1])
1961 curl_ssl_msg="enabled (CyaSSL)"
1965 if test "x$USE_CYASSL" != "xyes"; then
1966 dnl add the path and test again
1967 addld=-L$OPT_CYASSL/lib$libsuff
1968 addcflags=-I$OPT_CYASSL/include
1969 cyassllib=$OPT_CYASSL/lib$libsuff
1971 LDFLAGS="$LDFLAGS $addld"
1972 if test "$addcflags" != "-I/usr/include"; then
1973 CPPFLAGS="$CPPFLAGS $addcflags"
1976 AC_CHECK_LIB(cyassl, InitCyaSSL,
1978 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
1979 AC_SUBST(USE_CYASSL, [1])
1982 curl_ssl_msg="enabled (CyaSSL)"
1990 if test "x$USE_CYASSL" = "xyes"; then
1991 AC_MSG_NOTICE([detected CyaSSL])
1993 CURL_LIBS="$CURL_LIBS -lcyassl -lm"
1994 LIBS="$LIBS -lcyassl -lm"
1996 if test -n "$cyassllib"; then
1997 dnl when shared libs were found in a path that the run-time
1998 dnl linker doesn't search through, we need to add it to
1999 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2002 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$cyassllib"
2003 export LD_LIBRARY_PATH
2004 AC_MSG_NOTICE([Added $cyassllib to LD_LIBRARY_PATH])
2009 fi dnl CyaSSL not disabled
2013 dnl ----------------------------------------------------
2014 dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
2015 dnl ----------------------------------------------------
2017 dnl Default to compiler & linker defaults for NSS files & libraries.
2021 AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root])
2022 AC_HELP_STRING([--without-nss], [disable NSS detection]),
2025 if test "$OPENSSL_ENABLED" != "1" -a "$GNUTLS_ENABLED" != "1"; then
2027 if test X"$OPT_NSS" != Xno; then
2028 if test "x$OPT_NSS" = "xyes"; then
2030 CURL_CHECK_PKGCONFIG(nss)
2032 if test "$PKGCONFIG" != "no" ; then
2033 addlib=`$PKGCONFIG --libs nss`
2034 addcflags=`$PKGCONFIG --cflags nss`
2035 version=`$PKGCONFIG --modversion nss`
2036 nssprefix=`$PKGCONFIG --variable=prefix nss`
2038 dnl Without pkg-config, we check for nss-config
2040 check=`nss-config --version 2>/dev/null`
2041 if test -n "$check"; then
2042 addlib=`nss-config --libs`
2043 addcflags=`nss-config --cflags`
2044 version=`nss-config --version`
2045 nssprefix=`nss-config --prefix`
2053 # Without pkg-config, we'll kludge in some defaults
2054 addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
2055 addcflags="-I$OPT_NSS/include"
2060 dnl Check for functionPK11_CreateGenericObject
2061 dnl this is needed for using the PEM PKCS#11 module
2062 AC_CHECK_LIB(nss3, PK11_CreateGenericObject,
2064 AC_DEFINE(HAVE_PK11_CREATEGENERICOBJECT, 1, [if you have the function PK11_CreateGenericObject])
2065 AC_SUBST(HAVE_PK11_CREATEGENERICOBJECT, [1])
2067 if test -n "$addlib"; then
2070 CLEANCPPFLAGS="$CPPFLAGS"
2072 LIBS="$LIBS $addlib"
2073 if test "$addcflags" != "-I/usr/include"; then
2074 CPPFLAGS="$CPPFLAGS $addcflags"
2077 AC_CHECK_LIB(nss3, NSS_Initialize,
2079 AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
2080 AC_SUBST(USE_NSS, [1])
2083 curl_ssl_msg="enabled (NSS)"
2087 CPPFLAGS="$CLEANCPPFLAGS"
2090 if test "x$USE_NSS" = "xyes"; then
2091 AC_MSG_NOTICE([detected NSS version $version])
2093 dnl when shared libs were found in a path that the run-time
2094 dnl linker doesn't search through, we need to add it to
2095 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2098 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
2099 export LD_LIBRARY_PATH
2100 AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
2105 fi dnl NSS not disabled
2107 fi dnl OPENSSL != 1 -a GNUTLS_ENABLED != 1
2111 AC_ARG_WITH(axtls,dnl
2112 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.])
2113 AC_HELP_STRING([--without-axtls], [disable axTLS]),
2116 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2117 if test X"$OPT_AXTLS" != Xno; then
2118 dnl backup the pre-axtls variables
2119 CLEANLDFLAGS="$LDFLAGS"
2120 CLEANCPPFLAGS="$CPPFLAGS"
2123 case "$OPT_AXTLS" in
2125 dnl --with-axtls (without path) used
2126 PREFIX_AXTLS=/usr/local
2127 LIB_AXTLS="$PREFIX_AXTLS/lib"
2128 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2129 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2132 dnl no --with-axtls option given, just check default places
2136 dnl check the given --with-axtls spot
2137 PREFIX_AXTLS=$OPT_AXTLS
2138 LIB_AXTLS="$PREFIX_AXTLS/lib"
2139 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2140 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2144 AC_CHECK_LIB(axtls, ssl_version,[
2145 LIBS="-laxtls $LIBS"
2146 AC_DEFINE(USE_AXTLS, 1, [if axTLS is enabled])
2147 AC_SUBST(USE_AXTLS, [1])
2150 curl_ssl_msg="enabled (axTLS)"
2153 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
2154 export LD_LIBRARY_PATH
2155 AC_MSG_NOTICE([Added $LIB_AXTLS to LD_LIBRARY_PATH])
2157 LDFLAGS="$CLEANLDFLAGS"
2158 CPPFLAGS="$CLEANCPPFLAGS"
2164 if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED" = "x"; then
2165 AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
2166 AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss or --with-axtls to address this.])
2168 # SSL is enabled, genericly
2169 AC_SUBST(SSL_ENABLED)
2173 dnl **********************************************************************
2174 dnl Check for the CA bundle
2175 dnl **********************************************************************
2177 CURL_CHECK_CA_BUNDLE
2179 dnl **********************************************************************
2180 dnl Check for the presence of LIBSSH2 libraries and headers
2181 dnl **********************************************************************
2183 dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
2185 AC_ARG_WITH(libssh2,dnl
2186 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])
2187 AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
2188 OPT_LIBSSH2=$withval)
2190 if test X"$OPT_LIBSSH2" != Xno; then
2191 dnl backup the pre-libssh2 variables
2192 CLEANLDFLAGS="$LDFLAGS"
2193 CLEANCPPFLAGS="$CPPFLAGS"
2196 case "$OPT_LIBSSH2" in
2198 dnl --with-libssh2 (without path) used
2199 CURL_CHECK_PKGCONFIG(libssh2)
2201 if test "$PKGCONFIG" != "no" ; then
2202 LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2`
2203 LD_SSH2=`$PKGCONFIG --libs-only-L libssh2`
2204 CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2`
2205 version=`$PKGCONFIG --modversion libssh2`
2206 DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'`
2211 dnl no --with-libssh2 option given, just check default places
2214 dnl use the given --with-libssh2 spot
2215 PREFIX_SSH2=$OPT_LIBSSH2
2219 dnl if given with a prefix, we set -L and -I based on that
2220 if test -n "$PREFIX_SSH2"; then
2222 LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff
2223 CPP_SSH2=-I${PREFIX_SSH2}/include
2224 DIR_SSH2=${PREFIX_SSH2}/lib$libsuff
2227 LDFLAGS="$LDFLAGS $LD_SSH2"
2228 CPPFLAGS="$CPPFLAGS $CPP_SSH2"
2229 LIBS="$LIBS $LIB_SSH2"
2231 AC_CHECK_LIB(ssh2, libssh2_channel_open_ex)
2233 AC_CHECK_HEADERS(libssh2.h,
2234 curl_ssh_msg="enabled (libSSH2)"
2236 AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
2237 AC_SUBST(USE_LIBSSH2, [1])
2240 if test X"$OPT_LIBSSH2" != Xoff &&
2241 test "$LIBSSH2_ENABLED" != "1"; then
2242 AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!])
2245 if test "$LIBSSH2_ENABLED" = "1"; then
2246 if test -n "$DIR_SSH2"; then
2247 dnl when the libssh2 shared libs were found in a path that the run-time
2248 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
2249 dnl to prevent further configure tests to fail due to this
2251 dnl libssh2_version is a post 1.0 addition
2252 dnl libssh2_init and libssh2_exit were added in 1.2.5
2253 dnl libssh2_scp_send64 was added in 1.2.6
2254 dnl libssh2_session_handshake was added in 1.2.8
2255 AC_CHECK_FUNCS( libssh2_version libssh2_init libssh2_exit \
2256 libssh2_scp_send64 libssh2_session_handshake)
2258 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
2259 export LD_LIBRARY_PATH
2260 AC_MSG_NOTICE([Added $DIR_SSH2 to LD_LIBRARY_PATH])
2263 dnl no libssh2, revert back to clean variables
2264 LDFLAGS=$CLEANLDFLAGS
2265 CPPFLAGS=$CLEANCPPFLAGS
2270 dnl **********************************************************************
2271 dnl Check for the presence of LIBRTMP libraries and headers
2272 dnl **********************************************************************
2274 dnl Default to compiler & linker defaults for LIBRTMP files & libraries.
2276 AC_ARG_WITH(librtmp,dnl
2277 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])
2278 AC_HELP_STRING([--without-librtmp], [disable LIBRTMP]),
2279 OPT_LIBRTMP=$withval)
2281 if test X"$OPT_LIBRTMP" != Xno; then
2282 dnl backup the pre-librtmp variables
2283 CLEANLDFLAGS="$LDFLAGS"
2284 CLEANCPPFLAGS="$CPPFLAGS"
2287 case "$OPT_LIBRTMP" in
2289 dnl --with-librtmp (without path) used
2290 CURL_CHECK_PKGCONFIG(librtmp)
2292 if test "$PKGCONFIG" != "no" ; then
2293 LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp`
2294 LD_RTMP=`$PKGCONFIG --libs-only-L librtmp`
2295 CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp`
2296 version=`$PKGCONFIG --modversion librtmp`
2297 DIR_RTMP=`echo $LD_RTMP | $SED -e 's/-L//'`
2299 dnl To avoid link errors, we do not allow --librtmp without
2300 dnl a pkgconfig file
2301 AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.])
2306 dnl no --with-librtmp option given, just check default places
2310 dnl use the given --with-librtmp spot
2311 PREFIX_RTMP=$OPT_LIBRTMP
2315 dnl if given with a prefix, we set -L and -I based on that
2316 if test -n "$PREFIX_RTMP"; then
2317 LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff
2318 CPP_RTMP=-I${PREFIX_RTMP}/include
2319 DIR_RTMP=${PREFIX_RTMP}/lib$libsuff
2322 LDFLAGS="$LDFLAGS $LD_RTMP"
2323 CPPFLAGS="$CPPFLAGS $CPP_RTMP"
2324 LIBS="$LIBS $LIB_RTMP"
2326 AC_CHECK_LIB(rtmp, RTMP_Init,
2328 AC_CHECK_HEADERS(librtmp/rtmp.h,
2329 curl_rtmp_msg="enabled (librtmp)"
2331 AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use])
2332 AC_SUBST(USE_LIBRTMP, [1])
2335 dnl not found, revert back to clean variables
2336 LDFLAGS=$CLEANLDFLAGS
2337 CPPFLAGS=$CLEANCPPFLAGS
2341 if test X"$OPT_LIBRTMP" != Xoff &&
2342 test "$LIBRTMP_ENABLED" != "1"; then
2343 AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!])
2348 dnl **********************************************************************
2349 dnl Check for the presence of IDN libraries and headers
2350 dnl **********************************************************************
2352 AC_MSG_CHECKING([whether to build with libidn])
2355 AC_HELP_STRING([--with-libidn=PATH],[Enable libidn usage])
2356 AC_HELP_STRING([--without-libidn],[Disable libidn usage]),
2360 dnl --without-libidn option used
2365 dnl configure option not specified
2367 want_idn_path="default"
2368 AC_MSG_RESULT([(assumed) yes])
2371 dnl --with-libidn option used without path
2373 want_idn_path="default"
2374 AC_MSG_RESULT([yes])
2377 dnl --with-libidn option used with path
2379 want_idn_path="$withval"
2380 AC_MSG_RESULT([yes ($withval)])
2384 if test "$want_idn" = "yes"; then
2385 dnl idn library support has been requested
2386 clean_CPPFLAGS="$CPPFLAGS"
2387 clean_LDFLAGS="$LDFLAGS"
2391 if test "$want_idn_path" != "default"; then
2392 dnl path has been specified
2393 IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig"
2394 CURL_CHECK_PKGCONFIG(libidn, [$IDN_PCDIR])
2395 if test "$PKGCONFIG" != "no"; then
2396 IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2397 $PKGCONFIG --libs-only-l libidn 2>/dev/null`
2398 IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2399 $PKGCONFIG --libs-only-L libidn 2>/dev/null`
2400 IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2401 $PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2402 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2404 dnl pkg-config not available or provides no info
2406 IDN_LDFLAGS="-L$want_idn_path/lib$libsuff"
2407 IDN_CPPFLAGS="-I$want_idn_path/include"
2408 IDN_DIR="$want_idn_path/lib$libsuff"
2411 dnl path not specified
2412 CURL_CHECK_PKGCONFIG(libidn)
2413 if test "$PKGCONFIG" != "no"; then
2414 IDN_LIBS=`$PKGCONFIG --libs-only-l libidn 2>/dev/null`
2415 IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn 2>/dev/null`
2416 IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2417 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2419 dnl pkg-config not available or provides no info
2424 if test "$PKGCONFIG" != "no"; then
2425 AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"])
2426 AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"])
2427 AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2428 AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"])
2430 AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"])
2431 AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"])
2432 AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2433 AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"])
2436 CPPFLAGS="$IDN_CPPFLAGS $CPPFLAGS"
2437 LDFLAGS="$IDN_LDFLAGS $LDFLAGS"
2438 LIBS="$IDN_LIBS $LIBS"
2440 AC_MSG_CHECKING([if idna_to_ascii_4i can be linked])
2442 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_4i])
2444 AC_MSG_RESULT([yes])
2445 tst_links_libidn="yes"
2448 tst_links_libidn="no"
2450 if test "$tst_links_libidn" = "no"; then
2451 AC_MSG_CHECKING([if idna_to_ascii_lz can be linked])
2453 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_lz])
2455 AC_MSG_RESULT([yes])
2456 tst_links_libidn="yes"
2459 tst_links_libidn="no"
2463 if test "$tst_links_libidn" = "yes"; then
2464 AC_DEFINE(HAVE_LIBIDN, 1, [Define to 1 if you have the `idn' library (-lidn).])
2465 dnl different versions of libidn have different setups of these:
2466 AC_CHECK_FUNCS( idn_free idna_strerror tld_strerror )
2467 AC_CHECK_HEADERS( idn-free.h tld.h )
2468 if test "x$ac_cv_header_tld_h" = "xyes"; then
2469 AC_SUBST([IDN_ENABLED], [1])
2470 curl_idn_msg="enabled"
2471 if test -n "$IDN_DIR"; then
2472 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
2473 export LD_LIBRARY_PATH
2474 AC_MSG_NOTICE([Added $IDN_DIR to LD_LIBRARY_PATH])
2477 AC_MSG_WARN([Libraries for IDN support too old: IDN disabled])
2478 CPPFLAGS="$clean_CPPFLAGS"
2479 LDFLAGS="$clean_LDFLAGS"
2483 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2484 CPPFLAGS="$clean_CPPFLAGS"
2485 LDFLAGS="$clean_LDFLAGS"
2491 dnl Let's hope this split URL remains working:
2492 dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
2493 dnl genprogc/thread_quick_ref.htm
2496 dnl **********************************************************************
2497 dnl Back to "normal" configuring
2498 dnl **********************************************************************
2500 dnl Checks for header files.
2503 CURL_CHECK_HEADER_MALLOC
2504 CURL_CHECK_HEADER_MEMORY
2506 dnl Now check for the very most basic headers. Then we can use these
2507 dnl ones as default-headers when checking for the rest!
2550 dnl to do if not found
2554 dnl default includes
2556 #ifdef HAVE_SYS_TYPES_H
2557 #include <sys/types.h>
2559 #ifdef HAVE_SYS_TIME_H
2560 #include <sys/time.h>
2562 #ifdef HAVE_SYS_SELECT_H
2563 #include <sys/select.h>
2565 #ifdef HAVE_SYS_SOCKET_H
2566 #include <sys/socket.h>
2568 #ifdef HAVE_NETINET_IN_H
2569 #include <netinet/in.h>
2571 #ifdef HAVE_SYS_UN_H
2577 dnl Checks for typedefs, structures, and compiler characteristics.
2579 CURL_CHECK_VARIADIC_MACROS
2582 CURL_CHECK_STRUCT_TIMEVAL
2583 CURL_VERIFY_RUNTIMELIBS
2585 AC_CHECK_SIZEOF(size_t)
2586 AC_CHECK_SIZEOF(long)
2587 AC_CHECK_SIZEOF(int)
2588 AC_CHECK_SIZEOF(short)
2590 AC_CHECK_SIZEOF(time_t)
2591 AC_CHECK_SIZEOF(off_t)
2594 if test x"$ac_cv_native_windows" != "xyes" &&
2595 test $ac_cv_sizeof_off_t -ne $curl_sizeof_curl_off_t; then
2596 AC_MSG_WARN([This libcurl built is probably not ABI compatible with previous])
2597 AC_MSG_WARN([builds! You MUST read lib/README.curl_off_t to figure it out.])
2602 AC_CHECK_TYPE(long long,
2603 [AC_DEFINE(HAVE_LONGLONG, 1,
2604 [Define to 1 if the compiler supports the 'long long' data type.])]
2608 if test "xyes" = "x$longlong"; then
2609 AC_MSG_CHECKING([if numberLL works])
2613 long long val = 1000LL;
2616 AC_MSG_RESULT([yes])
2617 AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
2625 AC_CHECK_TYPE(ssize_t, ,
2626 AC_DEFINE(ssize_t, int, [the signed version of size_t]))
2628 # check for bool type
2629 AC_CHECK_TYPE([bool],[
2630 AC_DEFINE(HAVE_BOOL_T, 1,
2631 [Define to 1 if bool is an available type.])
2633 #ifdef HAVE_SYS_TYPES_H
2634 #include <sys/types.h>
2636 #ifdef HAVE_STDBOOL_H
2637 #include <stdbool.h>
2641 CURL_CONFIGURE_CURL_SOCKLEN_T
2645 TYPE_SOCKADDR_STORAGE
2651 CURL_CHECK_FUNC_SELECT
2653 CURL_CHECK_FUNC_RECV
2654 CURL_CHECK_FUNC_RECVFROM
2655 CURL_CHECK_FUNC_SEND
2656 CURL_CHECK_MSG_NOSIGNAL
2658 CURL_CHECK_FUNC_ALARM
2659 CURL_CHECK_FUNC_BASENAME
2660 CURL_CHECK_FUNC_CLOSESOCKET
2661 CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
2662 CURL_CHECK_FUNC_CONNECT
2663 CURL_CHECK_FUNC_FCNTL
2664 CURL_CHECK_FUNC_FDOPEN
2665 CURL_CHECK_FUNC_FREEADDRINFO
2666 CURL_CHECK_FUNC_FREEIFADDRS
2667 CURL_CHECK_FUNC_FSETXATTR
2668 CURL_CHECK_FUNC_FTRUNCATE
2669 CURL_CHECK_FUNC_GETADDRINFO
2670 CURL_CHECK_FUNC_GAI_STRERROR
2671 CURL_CHECK_FUNC_GETHOSTBYADDR
2672 CURL_CHECK_FUNC_GETHOSTBYADDR_R
2673 CURL_CHECK_FUNC_GETHOSTBYNAME
2674 CURL_CHECK_FUNC_GETHOSTBYNAME_R
2675 CURL_CHECK_FUNC_GETHOSTNAME
2676 CURL_CHECK_FUNC_GETIFADDRS
2677 CURL_CHECK_FUNC_GETSERVBYPORT_R
2678 CURL_CHECK_FUNC_GMTIME_R
2679 CURL_CHECK_FUNC_INET_NTOA_R
2680 CURL_CHECK_FUNC_INET_NTOP
2681 CURL_CHECK_FUNC_INET_PTON
2682 CURL_CHECK_FUNC_IOCTL
2683 CURL_CHECK_FUNC_IOCTLSOCKET
2684 CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
2685 CURL_CHECK_FUNC_LOCALTIME_R
2686 CURL_CHECK_FUNC_MEMRCHR
2687 CURL_CHECK_FUNC_POLL
2688 CURL_CHECK_FUNC_SETSOCKOPT
2689 CURL_CHECK_FUNC_SIGACTION
2690 CURL_CHECK_FUNC_SIGINTERRUPT
2691 CURL_CHECK_FUNC_SIGNAL
2692 CURL_CHECK_FUNC_SIGSETJMP
2693 CURL_CHECK_FUNC_SOCKET
2694 CURL_CHECK_FUNC_SOCKETPAIR
2695 CURL_CHECK_FUNC_STRCASECMP
2696 CURL_CHECK_FUNC_STRCASESTR
2697 CURL_CHECK_FUNC_STRCMPI
2698 CURL_CHECK_FUNC_STRDUP
2699 CURL_CHECK_FUNC_STRERROR_R
2700 CURL_CHECK_FUNC_STRICMP
2701 CURL_CHECK_FUNC_STRLCAT
2702 CURL_CHECK_FUNC_STRNCASECMP
2703 CURL_CHECK_FUNC_STRNCMPI
2704 CURL_CHECK_FUNC_STRNICMP
2705 CURL_CHECK_FUNC_STRSTR
2706 CURL_CHECK_FUNC_STRTOK_R
2707 CURL_CHECK_FUNC_STRTOLL
2708 CURL_CHECK_FUNC_WRITEV
2714 AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
2718 AC_CHECK_FUNCS([fork \
2737 eval skipcheck=\$skipcheck_$func
2738 if test "x$skipcheck" != "xyes"; then
2739 AC_MSG_CHECKING([deeper for $func])
2746 AC_MSG_RESULT([yes])
2747 eval "ac_cv_func_$func=yes"
2748 AC_DEFINE_UNQUOTED(XC_SH_TR_CPP([HAVE_$func]), [1],
2749 [Define to 1 if you have the $func function.])
2751 AC_MSG_RESULT([but still no])
2756 dnl Check if the getnameinfo function is available
2757 dnl and get the types of five of its arguments.
2758 CURL_CHECK_FUNC_GETNAMEINFO
2760 if test "$ipv6" = "yes"; then
2761 if test "$ac_cv_func_getaddrinfo" = "yes"; then
2762 AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
2764 AC_SUBST(IPV6_ENABLED)
2766 CURL_CHECK_NI_WITHSCOPEID
2769 dnl ************************************************************
2770 dnl enable non-blocking communications
2772 CURL_CHECK_OPTION_NONBLOCKING
2773 CURL_CHECK_NONBLOCKING_SOCKET
2775 dnl ************************************************************
2776 dnl nroff tool stuff
2779 AC_PATH_PROG( PERL, perl, ,
2780 $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
2783 AC_PATH_PROGS( NROFF, gnroff nroff, ,
2784 $PATH:/usr/bin/:/usr/local/bin )
2787 if test -n "$NROFF"; then
2788 dnl only check for nroff options if an nroff command was found
2790 AC_MSG_CHECKING([how to use *nroff to get plain text from man pages])
2792 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
2793 if test -z "$mancheck"; then
2795 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
2796 if test -z "$mancheck"; then
2798 AC_MSG_RESULT([failed])
2799 AC_MSG_WARN([found no *nroff option to get plaintext from man pages])
2801 AC_MSG_RESULT([$MANOPT])
2804 AC_MSG_RESULT([$MANOPT])
2809 if test -z "$MANOPT"
2811 dnl if no nroff tool was found, or no option that could convert man pages
2812 dnl was found, then disable the built-in manual stuff
2813 AC_MSG_WARN([disabling built-in manual])
2817 dnl *************************************************************************
2818 dnl If the manual variable still is set, then we go with providing a built-in
2821 if test "$USE_MANUAL" = "1"; then
2822 AC_DEFINE(USE_MANUAL, 1, [If you want to build curl with the built-in manual])
2823 curl_manual_msg="enabled"
2826 dnl set variable for use in automakefile(s)
2827 AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
2830 AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
2832 if test "x$ac_cv_native_windows" != "xyes" &&
2833 test "x$enable_shared" = "xyes"; then
2834 build_libhostname=yes
2836 build_libhostname=no
2838 AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes)
2840 CURL_CHECK_OPTION_THREADED_RESOLVER
2842 if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
2844 [Options --enable-threaded-resolver and --enable-ares are mutually exclusive])
2847 if test "$want_thres" = "yes"; then
2848 AC_CHECK_HEADER(pthread.h,
2849 [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>])
2850 save_CFLAGS="$CFLAGS"
2851 CFLAGS="$CFLAGS -pthread"
2852 AC_CHECK_LIB(pthread, pthread_create,
2853 [ AC_MSG_NOTICE([using POSIX threaded DNS lookup])
2854 AC_DEFINE(USE_THREADS_POSIX, 1, [if you want POSIX threaded DNS lookup])
2856 curl_res_msg="threaded"
2858 [ CFLAGS="$save_CFLAGS"])
2862 dnl ************************************************************
2863 dnl disable verbose text strings
2865 AC_MSG_CHECKING([whether to enable verbose strings])
2866 AC_ARG_ENABLE(verbose,
2867 AC_HELP_STRING([--enable-verbose],[Enable verbose strings])
2868 AC_HELP_STRING([--disable-verbose],[Disable verbose strings]),
2869 [ case "$enableval" in
2872 AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings])
2873 curl_verbose_msg="no"
2875 *) AC_MSG_RESULT(yes)
2881 dnl ************************************************************
2882 dnl enable SSPI support
2884 AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)])
2886 AC_HELP_STRING([--enable-sspi],[Enable SSPI])
2887 AC_HELP_STRING([--disable-sspi],[Disable SSPI]),
2888 [ case "$enableval" in
2890 if test "$ac_cv_native_windows" = "yes"; then
2892 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
2893 AC_SUBST(USE_WINDOWS_SSPI, [1])
2894 curl_sspi_msg="enabled"
2897 AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.])
2907 dnl ************************************************************
2908 dnl disable cryptographic authentication
2910 AC_MSG_CHECKING([whether to enable cryptographic authentication methods])
2911 AC_ARG_ENABLE(crypto-auth,
2912 AC_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication])
2913 AC_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]),
2914 [ case "$enableval" in
2917 AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication])
2919 *) AC_MSG_RESULT(yes)
2925 CURL_CHECK_OPTION_NTLM_WB
2929 dnl ************************************************************
2930 dnl disable TLS-SRP authentication
2932 AC_MSG_CHECKING([whether to enable TLS-SRP authentication])
2933 AC_ARG_ENABLE(tls-srp,
2934 AC_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication])
2935 AC_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]),
2936 [ case "$enableval" in
2939 AC_DEFINE(CURL_DISABLE_TLS_SRP, 1, [to disable TLS-SRP authentication])
2942 *) AC_MSG_RESULT(yes)
2950 if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_SSLEAY_SRP" = "x1") ; then
2951 AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication])
2953 curl_tls_srp_msg="enabled"
2956 dnl ************************************************************
2957 dnl disable cookies support
2959 AC_MSG_CHECKING([whether to enable support for cookies])
2960 AC_ARG_ENABLE(cookies,
2961 AC_HELP_STRING([--enable-cookies],[Enable cookies support])
2962 AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
2963 [ case "$enableval" in
2966 AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support])
2968 *) AC_MSG_RESULT(yes)
2974 dnl ************************************************************
2975 dnl Enable hiding of internal symbols in library to reduce its size and
2976 dnl speed dynamic linking of applications. This currently is only supported
2977 dnl on gcc >= 4.0 and SunPro C.
2979 AC_MSG_CHECKING([whether to enable hidden symbols in the library])
2980 AC_ARG_ENABLE(hidden-symbols,
2981 AC_HELP_STRING([--enable-hidden-symbols],[Hide internal symbols in library])
2982 AC_HELP_STRING([--disable-hidden-symbols],[Leave all symbols with default visibility in library]),
2983 [ case "$enableval" in
2988 AC_MSG_CHECKING([whether $CC supports it])
2989 if test "$GCC" = yes ; then
2990 if $CC --help --verbose 2>&1 | grep fvisibility= > /dev/null ||
2991 dnl clang always supports -fvisibility= but it doesn't show up
2993 test "$compiler_id" = "CLANG"; then
2995 AC_DEFINE(CURL_HIDDEN_SYMBOLS, 1, [to enable hidden symbols])
2996 AC_DEFINE(CURL_EXTERN_SYMBOL, [__attribute__ ((visibility ("default")))], [to make a symbol visible])
2997 CFLAGS="$CFLAGS -fvisibility=hidden"
3003 dnl Test for SunPro cc
3004 if $CC 2>&1 | grep flags >/dev/null && $CC -flags | grep xldscope= >/dev/null ; then
3006 AC_DEFINE(CURL_HIDDEN_SYMBOLS, 1, [to enable hidden symbols])
3007 AC_DEFINE(CURL_EXTERN_SYMBOL, [__global], [to make a symbol visible])
3008 CFLAGS="$CFLAGS -xldscope=hidden"
3018 dnl ************************************************************
3019 dnl enforce SONAME bump
3022 AC_MSG_CHECKING([whether to enforce SONAME bump])
3023 AC_ARG_ENABLE(soname-bump,
3024 AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump])
3025 AC_HELP_STRING([--disable-soname-bump],[Disable enforced SONAME bump]),
3026 [ case "$enableval" in
3027 yes) AC_MSG_RESULT(yes)
3034 AC_MSG_RESULT($soname_bump)
3036 AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes)
3039 dnl ************************************************************
3040 if test ! -z "$winsock_LIB"; then
3042 dnl If ws2_32 is wanted, make sure it is the _last_ lib in LIBS (makes
3043 dnl things work when built with c-ares). But we can't just move it last
3044 dnl since then other stuff (SSL) won't build. So we simply append it to the
3047 LIBS="$LIBS $winsock_LIB"
3048 TEST_SERVER_LIBS="$TEST_SERVER_LIBS $winsock_LIB"
3053 dnl All the library dependencies put into $LIB apply to libcurl only.
3054 dnl Those in $CURL_LIBS apply to the curl command-line client only.
3055 dnl Those in $TEST_SERVER_LIBS apply to test servers only.
3056 dnl Those in $ALL_LIBS apply to all targets, including test targets.
3060 AC_SUBST(LIBCURL_LIBS)
3062 AC_SUBST(TEST_SERVER_LIBS)
3063 AC_SUBST(CURL_NETWORK_LIBS)
3064 LIBS=$ALL_LIBS dnl LIBS is a magic variable that's used for every link
3066 AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes)
3069 ENABLE_SHARED="$enable_shared"
3070 AC_SUBST(ENABLE_SHARED)
3073 dnl For keeping supported features and protocols also in pkg-config file
3074 dnl since it is more cross-compile frient than curl-config
3077 if test "x$USE_SSLEAY" = "x1"; then
3078 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3079 elif test -n "$SSL_ENABLED"; then
3080 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3082 if test "@KRB4_ENABLED@" = "x1"; then
3083 SUPPORT_FEATURES="$SUPPORT_FEATURES KRB4"
3085 if test "x$IPV6_ENABLED" = "x1"; then
3086 SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
3088 if test "x$HAVE_LIBZ" = "x1"; then
3089 SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
3091 if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1"; then
3092 SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
3094 if test "x$IDN_ENABLED" = "x1"; then
3095 SUPPORT_FEATURES="$SUPPORT_FEATURES IDN"
3097 if test "x$USE_WINDOWS_SSPI" = "x1"; then
3098 SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
3100 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3101 if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
3102 -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1"; then
3103 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
3104 if test "x$NTLM_WB_ENABLED" = "x1"; then
3105 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
3109 if test "x$USE_TLS_SRP" = "x1"; then
3110 SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
3113 AC_SUBST(SUPPORT_FEATURES)
3115 dnl For supported protocols in pkg-config file
3116 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3117 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
3118 if test "x$SSL_ENABLED" = "x1"; then
3119 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS"
3122 if test "x$CURL_DISABLE_FTP" != "x1"; then
3123 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP"
3124 if test "x$SSL_ENABLED" = "x1"; then
3125 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS"
3128 if test "x$CURL_DISABLE_FILE" != "x1"; then
3129 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE"
3131 if test "x$CURL_DISABLE_TELNET" != "x1"; then
3132 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET"
3134 if test "x$CURL_DISABLE_LDAP" != "x1"; then
3135 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP"
3136 if test "x$CURL_DISABLE_LDAPS" != "x1"; then
3137 if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") ||
3138 (test "x$USE_OPENLDAP" != "x1" && test "x$HAVE_LDAP_SSL" = "x1"); then
3139 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS"
3143 if test "x$CURL_DISABLE_DICT" != "x1"; then
3144 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT"
3146 if test "x$CURL_DISABLE_TFTP" != "x1"; then
3147 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP"
3149 if test "x$CURL_DISABLE_GOPHER" != "x1"; then
3150 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER"
3152 if test "x$CURL_DISABLE_POP3" != "x1"; then
3153 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3"
3154 if test "x$SSL_ENABLED" = "x1"; then
3155 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S"
3158 if test "x$CURL_DISABLE_IMAP" != "x1"; then
3159 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
3160 if test "x$SSL_ENABLED" = "x1"; then
3161 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
3164 if test "x$CURL_DISABLE_SMTP" != "x1"; then
3165 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
3166 if test "x$SSL_ENABLED" = "x1"; then
3167 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS"
3170 if test "x$USE_LIBSSH2" = "x1"; then
3171 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
3172 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
3174 if test "x$CURL_DISABLE_RTSP" != "x1"; then
3175 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
3177 if test "x$USE_LIBRTMP" = "x1"; then
3178 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP"
3181 dnl replace spaces with newlines
3183 dnl replace the newlines back to spaces
3184 SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '`
3186 AC_SUBST(SUPPORT_PROTOCOLS)
3188 dnl squeeze whitespace out of some variables
3197 squeeze LIBCURL_LIBS
3198 squeeze TEST_SERVER_LIBS
3199 squeeze CURL_NETWORK_LIBS
3201 squeeze SUPPORT_FEATURES
3202 squeeze SUPPORT_PROTOCOLS
3204 if test "x$want_curldebug_assumed" = "xyes" &&
3205 test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
3206 ac_configure_args="$ac_configure_args --enable-curldebug"
3209 AC_CONFIG_FILES([Makefile \
3211 docs/examples/Makefile \
3212 docs/libcurl/Makefile \
3214 include/curl/Makefile \
3218 tests/data/Makefile \
3219 tests/server/Makefile \
3220 tests/libtest/Makefile \
3221 tests/unit/Makefile \
3223 packages/Win32/Makefile \
3224 packages/Win32/cygwin/Makefile \
3225 packages/Linux/Makefile \
3226 packages/Linux/RPM/Makefile \
3227 packages/Linux/RPM/curl.spec \
3228 packages/Linux/RPM/curl-ssl.spec \
3229 packages/Solaris/Makefile \
3230 packages/EPM/curl.list \
3231 packages/EPM/Makefile \
3232 packages/vms/Makefile \
3233 packages/AIX/Makefile \
3234 packages/AIX/RPM/Makefile \
3235 packages/AIX/RPM/curl.spec \
3241 CURL_GENERATE_CONFIGUREHELP_PM
3243 AC_MSG_NOTICE([Configured to build curl/libcurl:
3245 curl version: ${CURLVERSION}
3247 Install prefix: ${prefix}
3249 SSL support: ${curl_ssl_msg}
3250 SSH support: ${curl_ssh_msg}
3251 zlib support: ${curl_zlib_msg}
3252 krb4 support: ${curl_krb4_msg}
3253 GSSAPI support: ${curl_gss_msg}
3254 SPNEGO support: ${curl_spnego_msg}
3255 TLS-SRP support: ${curl_tls_srp_msg}
3256 resolver: ${curl_res_msg}
3257 ipv6 support: ${curl_ipv6_msg}
3258 IDN support: ${curl_idn_msg}
3259 Build libcurl: Shared=${enable_shared}, Static=${enable_static}
3260 Built-in manual: ${curl_manual_msg}
3261 Verbose errors: ${curl_verbose_msg}
3262 SSPI support: ${curl_sspi_msg}
3263 ca cert bundle: ${ca}
3264 ca cert path: ${capath}
3265 LDAP support: ${curl_ldap_msg}
3266 LDAPS support: ${curl_ldaps_msg}
3267 RTSP support: ${curl_rtsp_msg}
3268 RTMP support: ${curl_rtmp_msg}
3269 Protocols: ${SUPPORT_PROTOCOLS}
3272 if test "x$soname_bump" = "xyes"; then
3275 SONAME bump: yes - WARNING: this library will be built with the SONAME
3276 number bumped due to (a detected) ABI breakage.
3277 See lib/README.curl_off_t for details on this.