1 #***************************************************************************
3 # Project ___| | | | _ \| |
5 # | (__| |_| | _ <| |___
6 # \___|\___/|_| \_\_____|
8 # Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
10 # This software is licensed as described in the file COPYING, which
11 # you should have received as part of this distribution. The terms
12 # are also available at http://curl.haxx.se/docs/copyright.html.
14 # You may opt to use, copy, modify, merge, publish, distribute and/or sell
15 # copies of the Software, and permit persons to whom the Software is
16 # furnished to do so, under the terms of the COPYING file.
18 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19 # KIND, either express or implied.
21 #***************************************************************************
22 dnl Process this file with autoconf to produce a configure script.
26 dnl We don't know the version number "statically" so we use a dash here
27 AC_INIT([curl], [-], [a suitable curl mailing list: http://curl.haxx.se/mail/])
30 CURL_OVERRIDE_AUTOCONF
32 dnl configure script copyright
33 AC_COPYRIGHT([Copyright (c) 1998 - 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 include/curl/curlbuild.h)
39 AC_CONFIG_MACRO_DIR([m4])
42 CURL_CHECK_OPTION_DEBUG
43 CURL_CHECK_OPTION_OPTIMIZE
44 CURL_CHECK_OPTION_WARNINGS
45 CURL_CHECK_OPTION_WERROR
46 CURL_CHECK_OPTION_CURLDEBUG
47 CURL_CHECK_OPTION_SYMBOL_HIDING
48 CURL_CHECK_OPTION_ARES
50 CURL_CHECK_PATH_SEPARATOR_REQUIRED
53 # save the configure arguments
55 CONFIGURE_OPTIONS="\"$ac_configure_args\""
56 AC_SUBST(CONFIGURE_OPTIONS)
59 if test X"$want_werror" = Xyes; then
60 CURL_CFLAG_EXTRAS="-Werror"
62 AC_SUBST(CURL_CFLAG_EXTRAS)
64 dnl SED is mandatory for configure process and libtool.
65 dnl Set it now, allowing it to be changed later.
66 if test -z "$SED"; then
67 dnl allow it to be overridden
68 AC_PATH_PROG([SED], [sed], [not_found],
69 [$PATH:/usr/bin:/usr/local/bin])
70 if test -z "$SED" || test "$SED" = "not_found"; then
71 AC_MSG_ERROR([sed not found in PATH. Cannot continue without sed.])
76 dnl GREP is mandatory for configure process and libtool.
77 dnl Set it now, allowing it to be changed later.
78 if test -z "$GREP"; then
79 dnl allow it to be overridden
80 AC_PATH_PROG([GREP], [grep], [not_found],
81 [$PATH:/usr/bin:/usr/local/bin])
82 if test -z "$GREP" || test "$GREP" = "not_found"; then
83 AC_MSG_ERROR([grep not found in PATH. Cannot continue without grep.])
88 dnl EGREP is mandatory for configure process and libtool.
89 dnl Set it now, allowing it to be changed later.
90 if test -z "$EGREP"; then
91 dnl allow it to be overridden
92 if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
93 AC_MSG_CHECKING([for egrep])
95 AC_MSG_RESULT([$EGREP])
97 AC_PATH_PROG([EGREP], [egrep], [not_found],
98 [$PATH:/usr/bin:/usr/local/bin])
101 if test -z "$EGREP" || test "$EGREP" = "not_found"; then
102 AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.])
106 dnl AR is mandatory for configure process and libtool.
107 dnl This is target dependent, so check it as a tool.
108 if test -z "$AR"; then
109 dnl allow it to be overridden
110 AC_PATH_TOOL([AR], [ar], [not_found],
111 [$PATH:/usr/bin:/usr/local/bin])
112 if test -z "$AR" || test "$AR" = "not_found"; then
113 AC_MSG_ERROR([ar not found in PATH. Cannot continue without ar.])
120 dnl Remove non-configure distributed curlbuild.h
121 if test -f ${srcdir}/include/curl/curlbuild.h; then
122 rm -f ${srcdir}/include/curl/curlbuild.h
125 dnl figure out the libcurl version
126 CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curlver.h`
128 AC_MSG_CHECKING([curl version])
129 AC_MSG_RESULT($CURLVERSION)
131 AC_SUBST(CURLVERSION)
134 dnl we extract the numerical version for curl-config only
135 VERSIONNUM=`$SED -ne 's/^#define LIBCURL_VERSION_NUM 0x\(.*\)/\1/p' ${srcdir}/include/curl/curlver.h`
138 dnl Solaris pkgadd support definitions
139 PKGADD_PKG="HAXXcurl"
140 PKGADD_NAME="cURL - a client that groks URLs"
141 PKGADD_VENDOR="curl.haxx.se"
143 AC_SUBST(PKGADD_NAME)
144 AC_SUBST(PKGADD_VENDOR)
147 dnl initialize all the info variables
148 curl_ssl_msg="no (--with-{ssl,gnutls,nss,polarssl,cyassl,axtls,winssl} )"
149 curl_ssh_msg="no (--with-libssh2)"
150 curl_zlib_msg="no (--with-zlib)"
151 curl_krb4_msg="no (--with-krb4*)"
152 curl_gss_msg="no (--with-gssapi)"
153 curl_spnego_msg="no (--with-spnego)"
154 curl_tls_srp_msg="no (--enable-tls-srp)"
155 curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
156 curl_ipv6_msg="no (--enable-ipv6)"
157 curl_idn_msg="no (--with-{libidn,winidn})"
158 curl_manual_msg="no (--enable-manual)"
159 curl_libcurl_msg="enabled (--disable-libcurl-option)"
160 curl_verbose_msg="enabled (--disable-verbose)"
161 curl_sspi_msg="no (--enable-sspi)"
162 curl_ldap_msg="no (--enable-ldap / --with-ldap-lib / --with-lber-lib)"
163 curl_ldaps_msg="no (--enable-ldaps)"
164 curl_rtsp_msg="no (--enable-rtsp)"
165 curl_rtmp_msg="no (--with-librtmp)"
166 curl_mtlnk_msg="no (--with-libmetalink)"
168 init_ssl_msg=${curl_ssl_msg}
171 dnl Save anything in $LIBS for later
176 dnl Detect the canonical host and target build environment
180 dnl Get system canonical name
181 AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
183 dnl Checks for programs.
186 dnl Our curl_off_t internal and external configure settings
187 CURL_CONFIGURE_CURL_OFF_T
189 dnl This defines _ALL_SOURCE for AIX
190 CURL_CHECK_AIX_ALL_SOURCE
192 dnl Our configure and build reentrant settings
193 CURL_CONFIGURE_THREAD_SAFE
194 CURL_CONFIGURE_REENTRANT
196 dnl check for how to do large files
199 dnl support building of Windows DLLs
202 dnl force libtool to build static libraries with PIC on AMD64-Linux & FreeBSD
203 AC_MSG_CHECKING([if arch-OS host is AMD64-Linux/FreeBSD (to build static libraries with PIC)])
205 x86_64*linux*|amd64*freebsd*|ia64*freebsd*)
214 AC_MSG_CHECKING([if compiler is icc (to build with PIC)])
228 AC_MSG_CHECKING([if we need -mimpure-text])
232 if test "$GCC" = "yes"; then
239 AC_MSG_RESULT($mimpure)
240 AM_CONDITIONAL(MIMPURE, test x$mimpure = xyes)
242 AC_MSG_CHECKING([if we need BUILDING_LIBCURL])
243 use_cppflag_building_libcurl="no"
244 use_cppflag_curl_staticlib="no"
245 CPPFLAG_CURL_STATICLIB=""
249 use_cppflag_building_libcurl="yes"
250 AC_MSG_CHECKING([if we need CURL_STATICLIB])
251 if test "X$enable_shared" = "Xno"
254 use_cppflag_curl_staticlib="yes"
255 CPPFLAG_CURL_STATICLIB="-DCURL_STATICLIB"
264 AM_CONDITIONAL(USE_CPPFLAG_BUILDING_LIBCURL, test x$use_cppflag_building_libcurl = xyes)
265 AM_CONDITIONAL(USE_CPPFLAG_CURL_STATICLIB, test x$use_cppflag_curl_staticlib = xyes)
266 AC_SUBST(CPPFLAG_CURL_STATICLIB)
268 # Determine whether all dependent libraries must be specified when linking
269 if test "X$enable_shared" = "Xyes" -a "X$link_all_deplibs" = "Xno"
275 AC_SUBST(REQUIRE_LIB_DEPS)
277 dnl The install stuff has already been taken care of by the automake stuff
281 dnl check if there's a way to force code inline
284 dnl **********************************************************************
285 dnl platform/compiler/architecture specific checks/flags
286 dnl **********************************************************************
289 CURL_SET_COMPILER_BASIC_OPTS
290 CURL_SET_COMPILER_DEBUG_OPTS
291 CURL_SET_COMPILER_OPTIMIZE_OPTS
292 CURL_SET_COMPILER_WARNING_OPTS
294 if test "$compiler_id" = "INTEL_UNIX_C"; then
296 if test "$compiler_num" -ge "1000"; then
297 dnl icc 10.X or later
298 CFLAGS="$CFLAGS -shared-intel"
299 elif test "$compiler_num" -ge "900"; then
301 CFLAGS="$CFLAGS -i-dynamic"
306 CURL_CHECK_COMPILER_HALT_ON_ERROR
307 CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
308 CURL_CHECK_COMPILER_SYMBOL_HIDING
310 CURL_CHECK_NO_UNDEFINED
311 AM_CONDITIONAL(NO_UNDEFINED, test x$need_no_undefined = xyes)
314 AM_CONDITIONAL(CURLDEBUG, test x$want_curldebug = xyes)
316 supports_unittests=yes
317 # cross-compilation of unit tests static library/programs fails when
318 # libcurl shared library is built. This might be due to a libtool or
319 # automake issue. In this case we disable unit tests.
320 if test "x$cross_compiling" != "xno" &&
321 test "x$enable_shared" != "xno"; then
322 supports_unittests=no
325 # IRIX 6.5.24 gcc 3.3 autobuilds fail unittests library compilation due to
326 # a problem related with OpenSSL headers and library versions not matching.
327 # Disable unit tests while time to further investigate this is found.
330 if test "$compiler_id" = "GNU_C"; then
331 supports_unittests=no
336 # All AIX autobuilds fails unit tests linking against unittests library
337 # due to unittests library being built with no symbols or members. Libtool ?
338 # Disable unit tests while time to further investigate this is found.
341 supports_unittests=no
345 dnl Build unit tests when option --enable-debug is given.
346 if test "x$want_debug" = "xyes" &&
347 test "x$supports_unittests" = "xyes"; then
352 AM_CONDITIONAL(BUILD_UNITTESTS, test x$want_unittests = xyes)
354 dnl **********************************************************************
355 dnl Compilation based checks should not be done before this point.
356 dnl **********************************************************************
358 dnl **********************************************************************
359 dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
360 dnl and ws2tcpip.h take precedence over any other further checks which
361 dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
362 dnl this specific header files. And do them before its results are used.
363 dnl **********************************************************************
365 CURL_CHECK_HEADER_WINDOWS
366 CURL_CHECK_NATIVE_WINDOWS
367 case X-"$ac_cv_native_windows" in
369 CURL_CHECK_HEADER_WINSOCK
370 CURL_CHECK_HEADER_WINSOCK2
371 CURL_CHECK_HEADER_WS2TCPIP
372 CURL_CHECK_HEADER_WINLDAP
373 CURL_CHECK_HEADER_WINBER
376 ac_cv_header_winsock_h="no"
377 ac_cv_header_winsock2_h="no"
378 ac_cv_header_ws2tcpip_h="no"
379 ac_cv_header_winldap_h="no"
380 ac_cv_header_winber_h="no"
383 CURL_CHECK_WIN32_LARGEFILE
385 dnl ************************************************************
386 dnl switch off particular protocols
388 AC_MSG_CHECKING([whether to support http])
390 AC_HELP_STRING([--enable-http],[Enable HTTP support])
391 AC_HELP_STRING([--disable-http],[Disable HTTP support]),
392 [ case "$enableval" in
395 AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP])
396 AC_MSG_WARN([disable HTTP disables FTP over proxy and RTSP])
397 AC_SUBST(CURL_DISABLE_HTTP, [1])
398 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
399 AC_SUBST(CURL_DISABLE_RTSP, [1])
401 *) AC_MSG_RESULT(yes)
406 AC_MSG_CHECKING([whether to support ftp])
408 AC_HELP_STRING([--enable-ftp],[Enable FTP support])
409 AC_HELP_STRING([--disable-ftp],[Disable FTP support]),
410 [ case "$enableval" in
413 AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP])
414 AC_SUBST(CURL_DISABLE_FTP, [1])
416 *) AC_MSG_RESULT(yes)
421 AC_MSG_CHECKING([whether to support file])
423 AC_HELP_STRING([--enable-file],[Enable FILE support])
424 AC_HELP_STRING([--disable-file],[Disable FILE support]),
425 [ case "$enableval" in
428 AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE])
429 AC_SUBST(CURL_DISABLE_FILE, [1])
431 *) AC_MSG_RESULT(yes)
436 AC_MSG_CHECKING([whether to support ldap])
438 AC_HELP_STRING([--enable-ldap],[Enable LDAP support])
439 AC_HELP_STRING([--disable-ldap],[Disable LDAP support]),
440 [ case "$enableval" in
443 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
444 AC_SUBST(CURL_DISABLE_LDAP, [1])
452 AC_MSG_CHECKING([whether to support ldaps])
454 AC_HELP_STRING([--enable-ldaps],[Enable LDAPS support])
455 AC_HELP_STRING([--disable-ldaps],[Disable LDAPS support]),
456 [ case "$enableval" in
459 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
460 AC_SUBST(CURL_DISABLE_LDAPS, [1])
462 *) if test "x$CURL_DISABLE_LDAP" = "x1" ; then
463 AC_MSG_RESULT(LDAP needs to be enabled to support LDAPS)
464 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
465 AC_SUBST(CURL_DISABLE_LDAPS, [1])
468 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
469 AC_SUBST(HAVE_LDAP_SSL, [1])
473 if test "x$CURL_DISABLE_LDAP" = "x1" ; then
475 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
476 AC_SUBST(CURL_DISABLE_LDAPS, [1])
479 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
480 AC_SUBST(HAVE_LDAP_SSL, [1])
484 AC_MSG_CHECKING([whether to support rtsp])
486 AC_HELP_STRING([--enable-rtsp],[Enable RTSP support])
487 AC_HELP_STRING([--disable-rtsp],[Disable RTSP support]),
488 [ case "$enableval" in
491 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
492 AC_SUBST(CURL_DISABLE_RTSP, [1])
494 *) if test x$CURL_DISABLE_HTTP = x1 ; then
495 AC_MSG_ERROR(HTTP support needs to be enabled in order to enable RTSP support!)
498 curl_rtsp_msg="enabled"
502 if test "x$CURL_DISABLE_HTTP" != "x1"; then
504 curl_rtsp_msg="enabled"
510 AC_MSG_CHECKING([whether to support proxies])
512 AC_HELP_STRING([--enable-proxy],[Enable proxy support])
513 AC_HELP_STRING([--disable-proxy],[Disable proxy support]),
514 [ case "$enableval" in
517 AC_DEFINE(CURL_DISABLE_PROXY, 1, [to disable proxies])
518 AC_SUBST(CURL_DISABLE_PROXY, [1])
520 *) AC_MSG_RESULT(yes)
526 AC_MSG_CHECKING([whether to support dict])
528 AC_HELP_STRING([--enable-dict],[Enable DICT support])
529 AC_HELP_STRING([--disable-dict],[Disable DICT support]),
530 [ case "$enableval" in
533 AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT])
534 AC_SUBST(CURL_DISABLE_DICT, [1])
536 *) AC_MSG_RESULT(yes)
541 AC_MSG_CHECKING([whether to support telnet])
542 AC_ARG_ENABLE(telnet,
543 AC_HELP_STRING([--enable-telnet],[Enable TELNET support])
544 AC_HELP_STRING([--disable-telnet],[Disable TELNET support]),
545 [ case "$enableval" in
548 AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
549 AC_SUBST(CURL_DISABLE_TELNET, [1])
551 *) AC_MSG_RESULT(yes)
556 AC_MSG_CHECKING([whether to support tftp])
558 AC_HELP_STRING([--enable-tftp],[Enable TFTP support])
559 AC_HELP_STRING([--disable-tftp],[Disable TFTP support]),
560 [ case "$enableval" in
563 AC_DEFINE(CURL_DISABLE_TFTP, 1, [to disable TFTP])
564 AC_SUBST(CURL_DISABLE_TFTP, [1])
566 *) AC_MSG_RESULT(yes)
572 AC_MSG_CHECKING([whether to support pop3])
574 AC_HELP_STRING([--enable-pop3],[Enable POP3 support])
575 AC_HELP_STRING([--disable-pop3],[Disable POP3 support]),
576 [ case "$enableval" in
579 AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3])
580 AC_SUBST(CURL_DISABLE_POP3, [1])
582 *) AC_MSG_RESULT(yes)
589 AC_MSG_CHECKING([whether to support imap])
591 AC_HELP_STRING([--enable-imap],[Enable IMAP support])
592 AC_HELP_STRING([--disable-imap],[Disable IMAP support]),
593 [ case "$enableval" in
596 AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP])
597 AC_SUBST(CURL_DISABLE_IMAP, [1])
599 *) AC_MSG_RESULT(yes)
606 AC_MSG_CHECKING([whether to support smtp])
608 AC_HELP_STRING([--enable-smtp],[Enable SMTP support])
609 AC_HELP_STRING([--disable-smtp],[Disable SMTP support]),
610 [ case "$enableval" in
613 AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP])
614 AC_SUBST(CURL_DISABLE_SMTP, [1])
616 *) AC_MSG_RESULT(yes)
622 AC_MSG_CHECKING([whether to support gopher])
623 AC_ARG_ENABLE(gopher,
624 AC_HELP_STRING([--enable-gopher],[Enable Gopher support])
625 AC_HELP_STRING([--disable-gopher],[Disable Gopher support]),
626 [ case "$enableval" in
629 AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable Gopher])
630 AC_SUBST(CURL_DISABLE_GOPHER, [1])
632 *) AC_MSG_RESULT(yes)
639 dnl **********************************************************************
640 dnl Check for built-in manual
641 dnl **********************************************************************
643 AC_MSG_CHECKING([whether to provide built-in manual])
644 AC_ARG_ENABLE(manual,
645 AC_HELP_STRING([--enable-manual],[Enable built-in manual])
646 AC_HELP_STRING([--disable-manual],[Disable built-in manual]),
647 [ case "$enableval" in
651 *) AC_MSG_RESULT(yes)
658 dnl The actual use of the USE_MANUAL variable is done much later in this
659 dnl script to allow other actions to disable it as well.
661 dnl ************************************************************
662 dnl disable C code generation support
664 AC_MSG_CHECKING([whether to enable generation of C code])
665 AC_ARG_ENABLE(libcurl_option,
666 AC_HELP_STRING([--enable-libcurl-option],[Enable --libcurl C code generation support])
667 AC_HELP_STRING([--disable-libcurl-option],[Disable --libcurl C code generation support]),
668 [ case "$enableval" in
671 AC_DEFINE(CURL_DISABLE_LIBCURL_OPTION, 1, [to disable --libcurl C code generation option])
672 curl_libcurl_msg="no"
674 *) AC_MSG_RESULT(yes)
680 dnl **********************************************************************
681 dnl Checks for libraries.
682 dnl **********************************************************************
686 dnl gethostbyname without lib or in the nsl lib?
687 AC_CHECK_FUNC(gethostbyname,
688 [HAVE_GETHOSTBYNAME="1"
690 [ AC_CHECK_LIB(nsl, gethostbyname,
691 [HAVE_GETHOSTBYNAME="1"
696 if test "$HAVE_GETHOSTBYNAME" != "1"
698 dnl gethostbyname in the socket lib?
699 AC_CHECK_LIB(socket, gethostbyname,
700 [HAVE_GETHOSTBYNAME="1"
701 LIBS="$LIBS -lsocket"
705 if test "$HAVE_GETHOSTBYNAME" != "1"
707 dnl gethostbyname in the watt lib?
708 AC_CHECK_LIB(watt, gethostbyname,
709 [HAVE_GETHOSTBYNAME="1"
710 CPPFLAGS="-I/dev/env/WATT_ROOT/inc"
711 LDFLAGS="-L/dev/env/WATT_ROOT/lib"
716 dnl At least one system has been identified to require BOTH nsl and socket
717 dnl libs at the same time to link properly.
718 if test "$HAVE_GETHOSTBYNAME" != "1"
720 AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs])
721 my_ac_save_LIBS=$LIBS
722 LIBS="-lnsl -lsocket $LIBS"
730 HAVE_GETHOSTBYNAME="1"
733 LIBS=$my_ac_save_LIBS
737 if test "$HAVE_GETHOSTBYNAME" != "1"
739 dnl This is for winsock systems
740 if test "$ac_cv_header_windows_h" = "yes"; then
741 if test "$ac_cv_header_winsock_h" = "yes"; then
744 winsock_LIB="-lwinsock"
747 winsock_LIB="-lwsock32"
751 if test "$ac_cv_header_winsock2_h" = "yes"; then
752 winsock_LIB="-lws2_32"
754 if test ! -z "$winsock_LIB"; then
755 my_ac_save_LIBS=$LIBS
756 LIBS="$winsock_LIB $LIBS"
757 AC_MSG_CHECKING([for gethostbyname in $winsock_LIB])
760 #ifdef HAVE_WINDOWS_H
761 #ifndef WIN32_LEAN_AND_MEAN
762 #define WIN32_LEAN_AND_MEAN
765 #ifdef HAVE_WINSOCK2_H
766 #include <winsock2.h>
768 #ifdef HAVE_WINSOCK_H
774 gethostbyname("www.dummysite.com");
778 HAVE_GETHOSTBYNAME="1"
782 LIBS=$my_ac_save_LIBS
788 if test "$HAVE_GETHOSTBYNAME" != "1"
790 dnl This is for Minix 3.1
791 AC_MSG_CHECKING([for gethostbyname for Minix 3])
794 /* Older Minix versions may need <net/gen/netdb.h> here instead */
797 gethostbyname("www.dummysite.com");
801 HAVE_GETHOSTBYNAME="1"
807 if test "$HAVE_GETHOSTBYNAME" != "1"
809 dnl This is for eCos with a stubbed DNS implementation
810 AC_MSG_CHECKING([for gethostbyname for eCos])
816 gethostbyname("www.dummysite.com");
820 HAVE_GETHOSTBYNAME="1"
826 if test "$HAVE_GETHOSTBYNAME" != "1"
828 dnl gethostbyname in the network lib - for Haiku OS
829 AC_CHECK_LIB(network, gethostbyname,
830 [HAVE_GETHOSTBYNAME="1"
831 LIBS="$LIBS -lnetwork"
835 if test "$HAVE_GETHOSTBYNAME" != "1"
837 dnl gethostbyname in the net lib - for BeOS
838 AC_CHECK_LIB(net, gethostbyname,
839 [HAVE_GETHOSTBYNAME="1"
845 if test "$HAVE_GETHOSTBYNAME" != "1"; then
846 AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
850 AC_CHECK_FUNC(strcasecmp, , [ AC_CHECK_LIB(resolve, strcasecmp) ])
852 if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
853 AC_CHECK_LIB(resolve, strcasecmp,
854 [LIBS="-lresolve $LIBS"],
858 ac_cv_func_strcasecmp="no"
860 CURL_CHECK_LIBS_CONNECT
862 CURL_NETWORK_LIBS=$LIBS
864 dnl **********************************************************************
865 dnl In case that function clock_gettime with monotonic timer is available,
866 dnl check for additional required libraries.
867 dnl **********************************************************************
868 CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
870 dnl **********************************************************************
871 dnl The preceding library checks are all potentially useful for test
872 dnl servers (for providing networking support). Save the list of required
873 dnl libraries at this point for use while linking those test servers.
874 dnl **********************************************************************
875 TEST_SERVER_LIBS=$LIBS
877 dnl **********************************************************************
878 AC_MSG_CHECKING([whether to use libgcc])
879 AC_ARG_ENABLE(libgcc,
880 AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
881 [ case "$enableval" in
883 ALL_LIBS="$ALL_LIBS -lgcc"
892 dnl **********************************************************************
894 dnl **********************************************************************
897 AC_ARG_WITH(ldap-lib,
898 AC_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]),
899 [LDAPLIBNAME="$withval"])
902 AC_ARG_WITH(lber-lib,
903 AC_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]),
904 [LBERLIBNAME="$withval"])
906 if test x$CURL_DISABLE_LDAP != x1 ; then
908 CURL_CHECK_HEADER_LBER
909 CURL_CHECK_HEADER_LDAP
910 CURL_CHECK_HEADER_LDAPSSL
911 CURL_CHECK_HEADER_LDAP_SSL
913 if test -z "$LDAPLIBNAME" ; then
914 if test "$ac_cv_native_windows" = "yes"; then
915 dnl Windows uses a single and unique LDAP library name
916 LDAPLIBNAME="wldap32"
921 if test "$LDAPLIBNAME" ; then
922 AC_CHECK_LIB("$LDAPLIBNAME", ldap_init,, [
923 AC_MSG_WARN(["$LDAPLIBNAME" is not an LDAP library: LDAP disabled])
924 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
925 AC_SUBST(CURL_DISABLE_LDAP, [1])
926 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
927 AC_SUBST(CURL_DISABLE_LDAPS, [1])])
929 dnl Try to find the right ldap libraries for this system
931 case X-"$curl_cv_ldap_LIBS" in
933 AC_MSG_WARN([Cannot find libraries for LDAP support: LDAP disabled])
934 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
935 AC_SUBST(CURL_DISABLE_LDAP, [1])
936 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
937 AC_SUBST(CURL_DISABLE_LDAPS, [1])
943 if test x$CURL_DISABLE_LDAP != x1 ; then
945 if test "$LBERLIBNAME" ; then
946 dnl If name is "no" then don't define this library at all
947 dnl (it's only needed if libldap.so's dependencies are broken).
948 if test "$LBERLIBNAME" != "no" ; then
949 AC_CHECK_LIB("$LBERLIBNAME", ber_free,, [
950 AC_MSG_WARN(["$LBERLIBNAME" is not an LBER library: LDAP disabled])
951 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
952 AC_SUBST(CURL_DISABLE_LDAP, [1])
953 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
954 AC_SUBST(CURL_DISABLE_LDAPS, [1])])
959 if test x$CURL_DISABLE_LDAP != x1 ; then
960 AC_CHECK_FUNCS([ldap_url_parse ldap_init_fd])
962 if test "$LDAPLIBNAME" = "wldap32"; then
963 curl_ldap_msg="enabled (winldap)"
964 AC_DEFINE(CURL_LDAP_WIN, 1, [Use Windows LDAP implementation])
966 curl_ldap_msg="enabled (OpenLDAP)"
967 if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then
968 AC_DEFINE(USE_OPENLDAP, 1, [Use OpenLDAP-specific code])
969 AC_SUBST(USE_OPENLDAP, [1])
974 if test x$CURL_DISABLE_LDAPS != x1 ; then
975 curl_ldaps_msg="enabled"
978 dnl **********************************************************************
980 dnl **********************************************************************
982 AC_MSG_CHECKING([whether to enable ipv6])
984 AC_HELP_STRING([--enable-ipv6],[Enable ipv6 (with ipv4) support])
985 AC_HELP_STRING([--disable-ipv6],[Disable ipv6 support]),
986 [ case "$enableval" in
991 *) AC_MSG_RESULT(yes)
996 AC_TRY_RUN([ /* is AF_INET6 available? */
997 #include <sys/types.h>
998 #include <sys/socket.h>
1001 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1015 if test "$ipv6" = "yes"; then
1016 curl_ipv6_msg="enabled"
1019 # Check if struct sockaddr_in6 have sin6_scope_id member
1020 if test "$ipv6" = yes; then
1021 AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member])
1023 #include <sys/types.h>
1024 #include <netinet/in.h>] ,
1025 struct sockaddr_in6 s; s.sin6_scope_id = 0; , have_sin6_scope_id=yes)
1026 if test "$have_sin6_scope_id" = yes; then
1027 AC_MSG_RESULT([yes])
1028 AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member])
1034 dnl **********************************************************************
1035 dnl Check if the operating system allows programs to write to their own argv[]
1036 dnl **********************************************************************
1038 AC_MSG_CHECKING([if argv can be written to])
1041 int main(int argc, char ** argv) {
1043 return (argv[0][0] == ' ')?0:1;
1047 curl_cv_writable_argv=yes
1049 curl_cv_writable_argv=no
1051 curl_cv_writable_argv=cross
1053 case $curl_cv_writable_argv in
1055 AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv])
1063 AC_MSG_WARN([the previous check could not be made default was used])
1067 dnl **********************************************************************
1068 dnl Check for the presence of Kerberos4 libraries and headers
1069 dnl **********************************************************************
1071 AC_ARG_WITH(krb4-includes,
1072 AC_HELP_STRING([--with-krb4-includes=DIR],
1073 [Specify location of kerberos4 headers]),[
1074 CPPFLAGS="$CPPFLAGS -I$withval"
1079 AC_ARG_WITH(krb4-libs,
1080 AC_HELP_STRING([--with-krb4-libs=DIR],[Specify location of kerberos4 libs]),[
1081 LDFLAGS="$LDFLAGS -L$withval"
1088 AC_ARG_WITH(krb4,dnl
1089 AC_HELP_STRING([--with-krb4=DIR],[where to look for Kerberos4]),[
1091 if test X"$OPT_KRB4" != Xno; then
1093 if test X"$OPT_KRB4" != Xyes; then
1094 LDFLAGS="$LDFLAGS -L$OPT_KRB4/lib$libsuff"
1095 KRB4LIB="$OPT_KRB4/lib$libsuff"
1096 CPPFLAGS="$CPPFLAGS -I$OPT_KRB4/include"
1097 KRB4INC="$OPT_KRB4/include"
1102 AC_MSG_CHECKING([if Kerberos4 support is requested])
1104 if test "$want_krb4" = yes
1106 if test "$ipv6" = "yes"; then
1107 echo krb4 is not compatible with IPv6
1112 dnl Check for & handle argument to --with-krb4
1114 AC_MSG_CHECKING(where to look for Kerberos4)
1115 if test X"$OPT_KRB4" = Xyes
1117 AC_MSG_RESULT([defaults])
1119 AC_MSG_RESULT([libs in $KRB4LIB, headers in $KRB4INC])
1122 dnl Check for DES library
1123 AC_CHECK_LIB(des, des_pcbc_encrypt,
1125 AC_CHECK_HEADERS(des.h)
1128 AC_CHECK_FUNC(res_search, , [AC_CHECK_LIB(resolv, res_search)])
1130 dnl Check for the Kerberos4 library
1131 AC_CHECK_LIB(krb, krb_net_read,
1133 dnl Check for header files
1134 AC_CHECK_HEADERS(krb.h)
1136 dnl we found the required libraries, add to LIBS
1137 LIBS="-lkrb -lcom_err -ldes $LIBS"
1139 dnl Check for function krb_get_our_ip_for_realm
1140 dnl this is needed for NAT networks
1141 AC_CHECK_FUNCS(krb_get_our_ip_for_realm)
1144 AC_DEFINE(HAVE_KRB4, 1,
1145 [if you have the Kerberos4 libraries (including -ldes)])
1147 dnl substitute it too!
1149 AC_SUBST(KRB4_ENABLED)
1151 curl_krb4_msg="enabled"
1153 dnl the krb4 stuff needs a strlcpy()
1154 AC_CHECK_FUNCS(strlcpy)
1162 dnl **********************************************************************
1163 dnl Check for FBopenssl(SPNEGO) libraries
1164 dnl **********************************************************************
1167 AC_HELP_STRING([--with-spnego=DIR],
1168 [Specify location of SPNEGO library fbopenssl]), [
1169 SPNEGO_ROOT="$withval"
1170 if test x"$SPNEGO_ROOT" != xno; then
1175 AC_MSG_CHECKING([if SPNEGO support is requested])
1176 if test x"$want_spnego" = xyes; then
1178 if test X"$SPNEGO_ROOT" = Xyes; then
1179 AC_MSG_ERROR([FBOpenSSL libs and/or directories were not found where specified!])
1182 if test -z "$SPNEGO_LIB_DIR"; then
1183 LDFLAGS="$LDFLAGS -L$SPNEGO_ROOT -lfbopenssl"
1185 LDFLAGS="$LDFLAGS $SPNEGO_LIB_DIR"
1189 AC_DEFINE(HAVE_SPNEGO, 1,
1190 [Define this if you have the SPNEGO library fbopenssl])
1191 curl_spnego_msg="enabled"
1197 dnl **********************************************************************
1198 dnl Check for GSS-API libraries
1199 dnl **********************************************************************
1201 dnl check for gss stuff in the /usr as default
1204 AC_ARG_WITH(gssapi-includes,
1205 AC_HELP_STRING([--with-gssapi-includes=DIR],
1206 [Specify location of GSSAPI header]),
1207 [ GSSAPI_INCS="-I$withval"
1211 AC_ARG_WITH(gssapi-libs,
1212 AC_HELP_STRING([--with-gssapi-libs=DIR],
1213 [Specify location of GSSAPI libs]),
1214 [ GSSAPI_LIB_DIR="-L$withval"
1219 AC_HELP_STRING([--with-gssapi=DIR],
1220 [Where to look for GSSAPI]), [
1221 GSSAPI_ROOT="$withval"
1222 if test x"$GSSAPI_ROOT" != xno; then
1224 if test x"$GSSAPI_ROOT" = xyes; then
1225 dnl if yes, then use default root
1231 save_CPPFLAGS="$CPPFLAGS"
1232 AC_MSG_CHECKING([if GSSAPI support is requested])
1233 if test x"$want_gss" = xyes; then
1236 if test -z "$GSSAPI_INCS"; then
1237 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1238 GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
1239 elif test "$GSSAPI_ROOT" != "yes"; then
1240 GSSAPI_INCS="-I$GSSAPI_ROOT/include"
1244 CPPFLAGS="$CPPFLAGS $GSSAPI_INCS"
1246 AC_CHECK_HEADER(gss.h,
1248 dnl found in the given dirs
1249 AC_DEFINE(HAVE_GSSGNU, 1, [if you have the GNU gssapi libraries])
1253 dnl not found, check Heimdal or MIT
1254 AC_CHECK_HEADERS([gssapi/gssapi.h], [], [not_mit=1])
1256 [gssapi/gssapi_generic.h gssapi/gssapi_krb5.h],
1261 #ifdef HAVE_GSSAPI_GSSAPI_H
1262 #include <gssapi/gssapi.h>
1265 if test "x$not_mit" = "x1"; then
1266 dnl MIT not found, check for Heimdal
1267 AC_CHECK_HEADER(gssapi.h,
1270 AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have the Heimdal gssapi libraries])
1273 dnl no header found, disabling GSS
1275 AC_MSG_WARN(disabling GSSAPI since no header files was found)
1280 AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
1281 dnl check if we have a really old MIT kerberos (<= 1.2)
1282 AC_MSG_CHECKING([if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE])
1285 #include <gssapi/gssapi.h>
1286 #include <gssapi/gssapi_generic.h>
1287 #include <gssapi/gssapi_krb5.h>
1292 GSS_C_NT_HOSTBASED_SERVICE,
1296 AC_MSG_RESULT([yes])
1299 AC_DEFINE(HAVE_OLD_GSSMIT, 1,
1300 [if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE])
1308 if test x"$want_gss" = xyes; then
1309 AC_DEFINE(HAVE_GSSAPI, 1, [if you have the gssapi libraries])
1311 curl_gss_msg="enabled (MIT/Heimdal)"
1313 if test -n "$gnu_gss"; then
1314 curl_gss_msg="enabled (GNU GSS)"
1315 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1317 elif test -z "$GSSAPI_LIB_DIR"; then
1320 LIBS="$LIBS -lgssapi_krb5 -lresolv"
1323 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1324 dnl krb5-config doesn't have --libs-only-L or similar, put everything
1326 gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
1327 LIBS="$LIBS $gss_libs"
1328 elif test "$GSSAPI_ROOT" != "yes"; then
1329 LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
1330 LIBS="$LIBS -lgssapi"
1332 LIBS="$LIBS -lgssapi"
1337 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1338 LIBS="$LIBS -lgssapi"
1341 CPPFLAGS="$save_CPPFLAGS"
1344 dnl -------------------------------------------------
1345 dnl check winssl option before other SSL libraries
1346 dnl -------------------------------------------------
1349 AC_ARG_WITH(winssl,dnl
1350 AC_HELP_STRING([--with-winssl],[enable Windows native SSL/TLS])
1351 AC_HELP_STRING([--without-winssl], [disable Windows native SSL/TLS]),
1352 OPT_WINSSL=$withval)
1354 AC_MSG_CHECKING([whether to enable Windows native SSL/TLS (Windows native builds only)])
1355 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1356 if test "x$OPT_WINSSL" != "xno" &&
1357 test "x$ac_cv_native_windows" = "xyes"; then
1359 AC_DEFINE(USE_SCHANNEL, 1, [to enable Windows native SSL/TLS support])
1360 AC_SUBST(USE_SCHANNEL, [1])
1361 curl_ssl_msg="enabled (Windows-native)"
1363 # --with-winssl implies --enable-sspi
1364 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
1365 AC_SUBST(USE_WINDOWS_SSPI, [1])
1366 curl_sspi_msg="enabled"
1375 AC_ARG_WITH(darwinssl,dnl
1376 AC_HELP_STRING([--with-darwinssl],[enable iOS/Mac OS X native SSL/TLS])
1377 AC_HELP_STRING([--without-darwinssl], [disable iOS/Mac OS X native SSL/TLS]),
1378 OPT_DARWINSSL=$withval)
1380 AC_MSG_CHECKING([whether to enable iOS/Mac OS X native SSL/TLS])
1381 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1382 if test "x$OPT_DARWINSSL" != "xno" &&
1383 test -d "/System/Library/Frameworks/Security.framework"; then
1385 AC_DEFINE(USE_DARWINSSL, 1, [to enable iOS/Mac OS X native SSL/TLS support])
1386 AC_SUBST(USE_DARWINSSL, [1])
1387 curl_ssl_msg="enabled (iOS/Mac OS X-native)"
1389 LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Security"
1397 dnl **********************************************************************
1398 dnl Check for the presence of SSL libraries and headers
1399 dnl **********************************************************************
1401 dnl Default to compiler & linker defaults for SSL files & libraries.
1403 dnl Default to no CA bundle
1406 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])
1407 AC_HELP_STRING([--without-ssl], [disable OpenSSL]),
1410 if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
1411 dnl backup the pre-ssl variables
1412 CLEANLDFLAGS="$LDFLAGS"
1413 CLEANCPPFLAGS="$CPPFLAGS"
1418 dnl --with-ssl (without path) used
1419 if test x$cross_compiling != xyes; then
1420 dnl only do pkg-config magic when not cross-compiling
1423 PREFIX_OPENSSL=/usr/local/ssl
1424 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1427 dnl no --with-ssl option given, just check default places
1428 if test x$cross_compiling != xyes; then
1429 dnl only do pkg-config magic when not cross-compiling
1435 dnl check the given --with-ssl spot
1437 PREFIX_OPENSSL=$OPT_SSL
1439 dnl Try pkg-config even when cross-compiling. Since we
1440 dnl specify PKG_CONFIG_LIBDIR we're only looking where
1441 dnl the user told us to look
1442 OPENSSL_PCDIR="$OPT_SSL/lib/pkgconfig"
1443 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$OPENSSL_PCDIR"])
1444 if test -f "$OPENSSL_PCDIR/openssl.pc"; then
1448 dnl in case pkg-config comes up empty, use what we got
1450 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1451 if test "$PREFIX_OPENSSL" != "/usr" ; then
1452 SSL_LDFLAGS="-L$LIB_OPENSSL"
1453 SSL_CPPFLAGS="-I$PREFIX_OPENSSL/include"
1455 SSL_CPPFLAGS="$SSL_CPPFLAGS -I$PREFIX_OPENSSL/include/openssl"
1459 if test "$PKGTEST" = "yes"; then
1461 CURL_CHECK_PKGCONFIG(openssl, [$OPENSSL_PCDIR])
1463 if test "$PKGCONFIG" != "no" ; then
1464 SSL_LIBS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1465 $PKGCONFIG --libs-only-l openssl 2>/dev/null`
1467 SSL_LDFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1468 $PKGCONFIG --libs-only-L openssl 2>/dev/null`
1470 SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1471 $PKGCONFIG --cflags-only-I openssl 2>/dev/null`
1473 AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"])
1474 AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"])
1475 AC_MSG_NOTICE([pkg-config: SSL_CPPFLAGS: "$SSL_CPPFLAGS"])
1477 LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/-L//g'`
1479 dnl use the values pkg-config reported. This is here
1480 dnl instead of below with CPPFLAGS and LDFLAGS because we only
1481 dnl learn about this via pkg-config. If we only have
1482 dnl the argument to --with-ssl we don't know what
1483 dnl additional libs may be necessary. Hope that we
1485 LIBS="$LIBS $SSL_LIBS"
1489 dnl finally, set flags to use SSL
1490 CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
1491 LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
1493 dnl This is for Msys/Mingw
1495 *-*-msys* | *-*-mingw*)
1496 AC_MSG_CHECKING([for gdi32])
1497 my_ac_save_LIBS=$LIBS
1498 LIBS="-lgdi32 $LIBS"
1499 AC_TRY_LINK([#include <windef.h>
1500 #include <wingdi.h>],
1503 AC_MSG_RESULT([yes])],
1504 [ dnl failed, restore LIBS
1505 LIBS=$my_ac_save_LIBS
1511 AC_CHECK_LIB(crypto, CRYPTO_lock,[
1513 LIBS="-lcrypto $LIBS"
1515 LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL"
1516 CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include"
1517 AC_CHECK_LIB(crypto, CRYPTO_add_lock,[
1519 LIBS="-lcrypto $LIBS"], [
1520 LDFLAGS="$CLEANLDFLAGS"
1521 CPPFLAGS="$CLEANCPPFLAGS"
1527 if test X"$HAVECRYPTO" = X"yes"; then
1528 dnl This is only reasonable to do if crypto actually is there: check for
1529 dnl SSL libs NOTE: it is important to do this AFTER the crypto lib
1531 AC_CHECK_LIB(ssl, SSL_connect)
1533 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1534 dnl we didn't find the SSL lib, try the RSAglue/rsaref stuff
1535 AC_MSG_CHECKING(for ssl with RSAglue/rsaref libs in use);
1537 LIBS="$LIBS -lRSAglue -lrsaref"
1538 AC_CHECK_LIB(ssl, SSL_connect)
1539 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1540 dnl still no SSL_connect
1549 dnl Have the libraries--check for SSLeay/OpenSSL headers
1550 AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
1551 openssl/pem.h openssl/ssl.h openssl/err.h,
1552 curl_ssl_msg="enabled (OpenSSL)"
1554 AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]))
1556 if test $ac_cv_header_openssl_x509_h = no; then
1557 dnl we don't use the "action" part of the AC_CHECK_HEADERS macro
1558 dnl since 'err.h' might in fact find a krb4 header with the same
1560 AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h)
1562 if test $ac_cv_header_x509_h = yes &&
1563 test $ac_cv_header_crypto_h = yes &&
1564 test $ac_cv_header_ssl_h = yes; then
1566 curl_ssl_msg="enabled (OpenSSL)"
1572 if test X"$OPENSSL_ENABLED" = X"1"; then
1573 AC_DEFINE(USE_SSLEAY, 1, [if SSL is enabled])
1575 dnl is there a pkcs12.h header present?
1576 AC_CHECK_HEADERS(openssl/pkcs12.h)
1580 dnl USE_SSLEAY is the historical name for what configure calls
1581 dnl OPENSSL_ENABLED; the names should really be unified
1582 USE_SSLEAY="$OPENSSL_ENABLED"
1583 AC_SUBST(USE_SSLEAY)
1585 if test X"$OPT_SSL" != Xoff &&
1586 test "$OPENSSL_ENABLED" != "1"; then
1587 AC_MSG_ERROR([OpenSSL libs and/or directories were not found where specified!])
1591 if test X"$OPENSSL_ENABLED" = X"1"; then
1592 dnl If the ENGINE library seems to be around, check for the OpenSSL engine
1593 dnl stuff, it is kind of "separated" from the main SSL check
1594 AC_CHECK_FUNC(ENGINE_init,
1596 AC_CHECK_HEADERS(openssl/engine.h)
1597 AC_CHECK_FUNCS( ENGINE_load_builtin_engines )
1600 dnl these can only exist if openssl exists
1601 dnl yassl doesn't have SSL_get_shutdown
1603 AC_CHECK_FUNCS( RAND_status \
1607 CRYPTO_cleanup_all_ex_data \
1609 SSLv2_client_method )
1611 dnl Make an attempt to detect if this is actually yassl's headers and
1612 dnl OpenSSL emulation layer. We still leave everything else believing
1613 dnl and acting like OpenSSL.
1615 AC_MSG_CHECKING([for yaSSL using OpenSSL compatibility mode])
1618 #include <openssl/ssl.h>
1620 #if defined(YASSL_VERSION) && defined(OPENSSL_VERSION_NUMBER)
1621 int dummy = SSL_ERROR_NONE;
1623 Not the yaSSL OpenSSL compatibility header.
1627 AC_MSG_RESULT([yes])
1628 AC_DEFINE_UNQUOTED(USE_YASSLEMUL, 1,
1629 [Define to 1 if using yaSSL in OpenSSL compatibility mode.])
1630 curl_ssl_msg="enabled (OpenSSL emulation by yaSSL)"
1636 if test "$OPENSSL_ENABLED" = "1"; then
1637 if test -n "$LIB_OPENSSL"; then
1638 dnl when the ssl shared libs were found in a path that the run-time
1639 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
1640 dnl to prevent further configure tests to fail due to this
1641 if test "x$cross_compiling" != "xyes"; then
1642 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_OPENSSL"
1643 export LD_LIBRARY_PATH
1644 AC_MSG_NOTICE([Added $LIB_OPENSSL to LD_LIBRARY_PATH])
1647 CURL_CHECK_OPENSSL_API
1652 dnl **********************************************************************
1653 dnl Check for the presence of ZLIB libraries and headers
1654 dnl **********************************************************************
1656 dnl Check for & handle argument to --with-zlib.
1661 AC_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
1662 AC_HELP_STRING([--without-zlib],[disable use of zlib]),
1663 [OPT_ZLIB="$withval"])
1665 if test "$OPT_ZLIB" = "no" ; then
1666 AC_MSG_WARN([zlib disabled])
1668 if test "$OPT_ZLIB" = "yes" ; then
1672 if test -z "$OPT_ZLIB" ; then
1673 dnl check for the lib first without setting any new path, since many
1674 dnl people have it in the default path
1676 AC_CHECK_LIB(z, inflateEnd,
1677 dnl libz found, set the variable
1679 dnl if no lib found, try /usr/local
1680 [OPT_ZLIB="/usr/local"])
1684 dnl Add a nonempty path to the compiler flags
1685 if test -n "$OPT_ZLIB"; then
1686 CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include"
1687 LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff"
1690 AC_CHECK_HEADER(zlib.h,
1692 dnl zlib.h was found
1694 dnl if the lib wasn't found already, try again with the new paths
1695 if test "$HAVE_LIBZ" != "1"; then
1696 AC_CHECK_LIB(z, gzread,
1698 dnl the lib was found!
1701 [ CPPFLAGS=$_cppflags
1706 dnl zlib.h was not found, restore the flags
1711 if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1"
1713 AC_MSG_WARN([configure found only the libz lib, not the header file!])
1715 elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1"
1717 AC_MSG_WARN([configure found only the libz header file, not the lib!])
1718 elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1"
1720 dnl both header and lib were found!
1722 AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file])
1723 AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available])
1725 CURL_LIBS="$CURL_LIBS -lz"
1728 dnl replace 'HAVE_LIBZ' in the automake makefile.ams
1730 AC_MSG_NOTICE([found both libz and libz.h header])
1731 curl_zlib_msg="enabled"
1735 dnl set variable for use in automakefile(s)
1736 AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1)
1738 dnl **********************************************************************
1739 dnl Check for the random seed preferences
1740 dnl **********************************************************************
1742 if test X"$OPENSSL_ENABLED" = X"1"; then
1743 AC_ARG_WITH(egd-socket,
1744 AC_HELP_STRING([--with-egd-socket=FILE],
1745 [Entropy Gathering Daemon socket pathname]),
1746 [ EGD_SOCKET="$withval" ]
1748 if test -n "$EGD_SOCKET" ; then
1749 AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET",
1750 [your Entropy Gathering Daemon socket pathname] )
1753 dnl Check for user-specified random device
1755 AC_HELP_STRING([--with-random=FILE],
1756 [read randomness from FILE (default=/dev/urandom)]),
1757 [ RANDOM_FILE="$withval" ],
1759 if test x$cross_compiling != xyes; then
1760 dnl Check for random device
1761 AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
1763 AC_MSG_WARN([skipped the /dev/urandom detection when cross-compiling])
1767 if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
1768 AC_SUBST(RANDOM_FILE)
1769 AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
1770 [a suitable file to read random data from])
1775 dnl We require OpenSSL with SRP support.
1777 if test "$OPENSSL_ENABLED" = "1"; then
1778 AC_CHECK_LIB(crypto, SRP_Calc_client_key,
1780 AC_DEFINE(HAVE_SSLEAY_SRP, 1, [if you have the function SRP_Calc_client_key])
1781 AC_SUBST(HAVE_SSLEAY_SRP, [1])
1785 dnl ----------------------------------------------------
1786 dnl check for GnuTLS
1787 dnl ----------------------------------------------------
1789 dnl Default to compiler & linker defaults for GnuTLS files & libraries.
1792 AC_ARG_WITH(gnutls,dnl
1793 AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root])
1794 AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]),
1795 OPT_GNUTLS=$withval)
1797 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1799 if test X"$OPT_GNUTLS" != Xno; then
1802 if test "x$OPT_GNUTLS" = "xyes"; then
1803 dnl this is with no partiular path given
1804 CURL_CHECK_PKGCONFIG(gnutls)
1806 if test "$PKGCONFIG" != "no" ; then
1807 addlib=`$PKGCONFIG --libs-only-l gnutls`
1808 addld=`$PKGCONFIG --libs-only-L gnutls`
1809 addcflags=`$PKGCONFIG --cflags-only-I gnutls`
1810 version=`$PKGCONFIG --modversion gnutls`
1811 gtlslib=`echo $addld | $SED -e 's/-L//'`
1813 dnl without pkg-config, we try libgnutls-config as that was how it
1815 check=`libgnutls-config --version 2>/dev/null`
1816 if test -n "$check"; then
1817 addlib=`libgnutls-config --libs`
1818 addcflags=`libgnutls-config --cflags`
1819 version=`libgnutls-config --version`
1820 gtlslib=`libgnutls-config --prefix`/lib$libsuff
1824 dnl this is with a given path, first check if there's a libgnutls-config
1825 dnl there and if not, make an educated guess
1826 cfg=$OPT_GNUTLS/bin/libgnutls-config
1827 check=`$cfg --version 2>/dev/null`
1828 if test -n "$check"; then
1829 addlib=`$cfg --libs`
1830 addcflags=`$cfg --cflags`
1831 version=`$cfg --version`
1832 gtlslib=`$cfg --prefix`/lib$libsuff
1834 dnl without pkg-config and libgnutls-config, we guess a lot!
1836 addld=-L$OPT_GNUTLS/lib$libsuff
1837 addcflags=-I$OPT_GNUTLS/include
1838 version="" # we just don't know
1839 gtlslib=$OPT_GNUTLS/lib$libsuff
1843 if test -z "$version"; then
1844 dnl lots of efforts, still no go
1848 if test -n "$addlib"; then
1851 CLEANCPPFLAGS="$CPPFLAGS"
1852 CLEADLDFLAGS="$LDFLAGS"
1854 LIBS="$LIBS $addlib"
1855 LDFLAGS="$LDFLAGS $addld"
1856 if test "$addcflags" != "-I/usr/include"; then
1857 CPPFLAGS="$CPPFLAGS $addcflags"
1860 AC_CHECK_LIB(gnutls, gnutls_check_version,
1862 AC_DEFINE(USE_GNUTLS, 1, [if GnuTLS is enabled])
1863 AC_SUBST(USE_GNUTLS, [1])
1866 curl_ssl_msg="enabled (GnuTLS)"
1870 CPPFLAGS="$CLEANCPPFLAGS"
1873 if test "x$USE_GNUTLS" = "xyes"; then
1874 AC_MSG_NOTICE([detected GnuTLS version $version])
1876 if test -n "$gtlslib"; then
1877 dnl when shared libs were found in a path that the run-time
1878 dnl linker doesn't search through, we need to add it to
1879 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1881 if test "x$cross_compiling" != "xyes"; then
1882 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlslib"
1883 export LD_LIBRARY_PATH
1884 AC_MSG_NOTICE([Added $gtlslib to LD_LIBRARY_PATH])
1891 fi dnl GNUTLS not disabled
1896 dnl Check which crypto backend GnuTLS uses
1899 if test "$GNUTLS_ENABLED" = "1"; then
1901 # First check if we can detect either crypto library via transitive linking
1902 AC_CHECK_LIB(gnutls, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1903 if test "$USE_GNUTLS_NETTLE" = ""; then
1904 AC_CHECK_LIB(gnutls, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1906 # If not, try linking directly to both of them to see if they are available
1907 if test "$USE_GNUTLS_NETTLE" = ""; then
1908 AC_CHECK_LIB(nettle, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1910 if test "$USE_GNUTLS_NETTLE" = ""; then
1911 AC_CHECK_LIB(gcrypt, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1913 if test "$USE_GNUTLS_NETTLE" = ""; then
1914 AC_MSG_ERROR([GnuTLS found, but neither gcrypt nor nettle found])
1916 if test "$USE_GNUTLS_NETTLE" = "1"; then
1917 AC_DEFINE(USE_GNUTLS_NETTLE, 1, [if GnuTLS uses nettle as crypto backend])
1918 AC_SUBST(USE_GNUTLS_NETTLE, [1])
1919 LIBS="$LIBS -lnettle"
1921 LIBS="$LIBS -lgcrypt"
1926 dnl We require GnuTLS with SRP support.
1928 if test "$GNUTLS_ENABLED" = "1"; then
1929 AC_CHECK_LIB(gnutls, gnutls_srp_verifier,
1931 AC_DEFINE(HAVE_GNUTLS_SRP, 1, [if you have the function gnutls_srp_verifier])
1932 AC_SUBST(HAVE_GNUTLS_SRP, [1])
1936 dnl ----------------------------------------------------
1937 dnl check for PolarSSL
1938 dnl ----------------------------------------------------
1940 dnl Default to compiler & linker defaults for PolarSSL files & libraries.
1945 AC_ARG_WITH(polarssl,dnl
1946 AC_HELP_STRING([--with-polarssl=PATH],[where to look for PolarSSL, PATH points to the installation root])
1947 AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]),
1948 OPT_POLARSSL=$withval)
1950 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1952 if test X"$OPT_POLARSSL" != Xno; then
1954 if test "$OPT_POLARSSL" = "yes"; then
1958 if test -z "$OPT_POLARSSL" ; then
1959 dnl check for lib first without setting any new path
1961 AC_CHECK_LIB(polarssl, havege_init,
1962 dnl libpolarssl found, set the variable
1964 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1965 AC_SUBST(USE_POLARSSL, [1])
1968 curl_ssl_msg="enabled (PolarSSL)"
1972 if test "x$USE_POLARSSL" != "xyes"; then
1973 dnl add the path and test again
1974 addld=-L$OPT_POLARSSL/lib$libsuff
1975 addcflags=-I$OPT_POLARSSL/include
1976 polarssllib=$OPT_POLARSSL/lib$libsuff
1978 LDFLAGS="$LDFLAGS $addld"
1979 if test "$addcflags" != "-I/usr/include"; then
1980 CPPFLAGS="$CPPFLAGS $addcflags"
1983 AC_CHECK_LIB(polarssl, ssl_init,
1985 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1986 AC_SUBST(USE_POLARSSL, [1])
1989 curl_ssl_msg="enabled (PolarSSL)"
1997 if test "x$USE_POLARSSL" = "xyes"; then
1998 AC_MSG_NOTICE([detected PolarSSL])
2000 CURL_LIBS="$CURL_LIBS -lpolarssl"
2001 LIBS="$LIBS -lpolarssl"
2003 if test -n "$polarssllib"; then
2004 dnl when shared libs were found in a path that the run-time
2005 dnl linker doesn't search through, we need to add it to
2006 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2008 if test "x$cross_compiling" != "xyes"; then
2009 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$polarssllib"
2010 export LD_LIBRARY_PATH
2011 AC_MSG_NOTICE([Added $polarssllib to LD_LIBRARY_PATH])
2016 fi dnl PolarSSL not disabled
2020 dnl ----------------------------------------------------
2021 dnl check for CyaSSL
2022 dnl ----------------------------------------------------
2024 dnl Default to compiler & linker defaults for CyaSSL files & libraries.
2029 AC_ARG_WITH(cyassl,dnl
2030 AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to the installation root (default: system lib default)])
2031 AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
2032 OPT_CYASSL=$withval)
2034 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2036 if test X"$OPT_CYASSL" != Xno; then
2038 if test "$OPT_CYASSL" = "yes"; then
2042 if test -z "$OPT_CYASSL" ; then
2043 dnl check for lib in system default first
2045 AC_CHECK_LIB(cyassl, CyaSSL_Init,
2046 dnl libcyassl found, set the variable
2048 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2049 AC_SUBST(USE_CYASSL, [1])
2052 curl_ssl_msg="enabled (CyaSSL)"
2056 if test "x$USE_CYASSL" != "xyes"; then
2057 dnl add the path and test again
2058 addld=-L$OPT_CYASSL/lib$libsuff
2059 addcflags=-I$OPT_CYASSL/include
2060 cyassllib=$OPT_CYASSL/lib$libsuff
2062 LDFLAGS="$LDFLAGS $addld"
2063 if test "$addcflags" != "-I/usr/include"; then
2064 CPPFLAGS="$CPPFLAGS $addcflags"
2067 AC_CHECK_LIB(cyassl, CyaSSL_Init,
2069 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2070 AC_SUBST(USE_CYASSL, [1])
2073 curl_ssl_msg="enabled (CyaSSL)"
2081 if test "x$USE_CYASSL" = "xyes"; then
2082 AC_MSG_NOTICE([detected CyaSSL])
2084 CURL_LIBS="$CURL_LIBS -lcyassl -lm"
2085 LIBS="$LIBS -lcyassl -lm"
2087 if test -n "$cyassllib"; then
2088 dnl when shared libs were found in a path that the run-time
2089 dnl linker doesn't search through, we need to add it to
2090 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2092 if test "x$cross_compiling" != "xyes"; then
2093 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$cyassllib"
2094 export LD_LIBRARY_PATH
2095 AC_MSG_NOTICE([Added $cyassllib to LD_LIBRARY_PATH])
2101 fi dnl CyaSSL not disabled
2105 dnl ----------------------------------------------------
2106 dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
2107 dnl ----------------------------------------------------
2109 dnl Default to compiler & linker defaults for NSS files & libraries.
2113 AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root])
2114 AC_HELP_STRING([--without-nss], [disable NSS detection]),
2117 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2119 if test X"$OPT_NSS" != Xno; then
2120 if test "x$OPT_NSS" = "xyes"; then
2122 CURL_CHECK_PKGCONFIG(nss)
2124 if test "$PKGCONFIG" != "no" ; then
2125 addlib=`$PKGCONFIG --libs nss`
2126 addcflags=`$PKGCONFIG --cflags nss`
2127 version=`$PKGCONFIG --modversion nss`
2128 nssprefix=`$PKGCONFIG --variable=prefix nss`
2130 dnl Without pkg-config, we check for nss-config
2132 check=`nss-config --version 2>/dev/null`
2133 if test -n "$check"; then
2134 addlib=`nss-config --libs`
2135 addcflags=`nss-config --cflags`
2136 version=`nss-config --version`
2137 nssprefix=`nss-config --prefix`
2145 # Without pkg-config, we'll kludge in some defaults
2146 addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
2147 addcflags="-I$OPT_NSS/include"
2152 if test -n "$addlib"; then
2155 CLEANCPPFLAGS="$CPPFLAGS"
2157 LIBS="$LIBS $addlib"
2158 if test "$addcflags" != "-I/usr/include"; then
2159 CPPFLAGS="$CPPFLAGS $addcflags"
2162 dnl The function PK11_CreateGenericObject is needed to load libnsspem.so
2163 AC_CHECK_LIB(nss3, PK11_CreateGenericObject,
2165 AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
2166 AC_SUBST(USE_NSS, [1])
2169 curl_ssl_msg="enabled (NSS)"
2173 CPPFLAGS="$CLEANCPPFLAGS"
2176 if test "x$USE_NSS" = "xyes"; then
2177 AC_MSG_NOTICE([detected NSS version $version])
2179 dnl NSS_InitContext() was introduced in NSS 3.12.5 and helps to prevent
2180 dnl collisions on NSS initialization/shutdown with other libraries
2181 AC_CHECK_FUNC(NSS_InitContext,
2183 AC_DEFINE(HAVE_NSS_INITCONTEXT, 1, [if you have the NSS_InitContext function])
2184 AC_SUBST(HAVE_NSS_INITCONTEXT, [1])
2187 dnl when shared libs were found in a path that the run-time
2188 dnl linker doesn't search through, we need to add it to
2189 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2191 if test "x$cross_compiling" != "xyes"; then
2192 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
2193 export LD_LIBRARY_PATH
2194 AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
2200 fi dnl NSS not disabled
2202 fi dnl curl_ssl_msg = init_ssl_msg
2206 AC_ARG_WITH(axtls,dnl
2207 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.])
2208 AC_HELP_STRING([--without-axtls], [disable axTLS]),
2211 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2212 if test X"$OPT_AXTLS" != Xno; then
2213 dnl backup the pre-axtls variables
2214 CLEANLDFLAGS="$LDFLAGS"
2215 CLEANCPPFLAGS="$CPPFLAGS"
2218 case "$OPT_AXTLS" in
2220 dnl --with-axtls (without path) used
2221 PREFIX_AXTLS=/usr/local
2222 LIB_AXTLS="$PREFIX_AXTLS/lib"
2223 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2224 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2227 dnl no --with-axtls option given, just check default places
2231 dnl check the given --with-axtls spot
2232 PREFIX_AXTLS=$OPT_AXTLS
2233 LIB_AXTLS="$PREFIX_AXTLS/lib"
2234 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2235 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2239 AC_CHECK_LIB(axtls, ssl_version,[
2240 LIBS="-laxtls $LIBS"
2241 AC_DEFINE(USE_AXTLS, 1, [if axTLS is enabled])
2242 AC_SUBST(USE_AXTLS, [1])
2245 curl_ssl_msg="enabled (axTLS)"
2248 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
2249 export LD_LIBRARY_PATH
2250 AC_MSG_NOTICE([Added $LIB_AXTLS to LD_LIBRARY_PATH])
2252 LDFLAGS="$CLEANLDFLAGS"
2253 CPPFLAGS="$CLEANCPPFLAGS"
2259 if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$DARWINSSL_ENABLED" = "x"; then
2260 AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
2261 AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls or --with-winssl to address this.])
2263 # SSL is enabled, genericly
2264 AC_SUBST(SSL_ENABLED)
2268 dnl **********************************************************************
2269 dnl Check for the CA bundle
2270 dnl **********************************************************************
2272 CURL_CHECK_CA_BUNDLE
2274 dnl **********************************************************************
2275 dnl Check for libmetalink
2276 dnl **********************************************************************
2280 AC_ARG_WITH(libmetalink,dnl
2281 AC_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root])
2282 AC_HELP_STRING([--without-libmetalink], [disable libmetalink detection]),
2283 OPT_LIBMETALINK=$withval)
2285 if test X"$OPT_LIBMETALINK" != Xno; then
2293 if test "x$OPT_LIBMETALINK" = "xyes"; then
2294 dnl this is with no partiular path given
2296 CURL_CHECK_PKGCONFIG(libmetalink)
2298 dnl When particular path is given, set PKG_CONFIG_LIBDIR using the path.
2299 LIBMETALINK_PCDIR="$OPT_LIBMETALINK/lib/pkgconfig"
2300 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$LIBMETALINK_PCDIR"])
2301 if test -f "$LIBMETALINK_PCDIR/libmetalink.pc"; then
2304 if test "$PKGTEST" = "yes"; then
2305 CURL_CHECK_PKGCONFIG(libmetalink, [$LIBMETALINK_PCDIR])
2308 if test "$PKGTEST" = "yes" && test "$PKGCONFIG" != "no"; then
2309 addlib=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2310 $PKGCONFIG --libs-only-l libmetalink`
2311 addld=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2312 $PKGCONFIG --libs-only-L libmetalink`
2313 addcflags=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2314 $PKGCONFIG --cflags-only-I libmetalink`
2315 version=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2316 $PKGCONFIG --modversion libmetalink`
2317 libmetalinklib=`echo $addld | $SED -e 's/-L//'`
2319 if test -n "$addlib"; then
2321 clean_CPPFLAGS="$CPPFLAGS"
2322 clean_LDFLAGS="$LDFLAGS"
2324 CPPFLAGS="$addcflags $clean_CPPFLAGS"
2325 LDFLAGS="$addld $clean_LDFLAGS"
2326 LIBS="$addlib $clean_LIBS"
2327 AC_MSG_CHECKING([if libmetalink is recent enough])
2330 # include <metalink/metalink.h>
2332 if(0 != metalink_strerror(0)) /* added in 0.1.0 */
2336 AC_MSG_RESULT([yes ($version)])
2339 AC_MSG_RESULT([no ($version)])
2340 AC_MSG_NOTICE([libmetalink library defective or too old])
2343 CPPFLAGS="$clean_CPPFLAGS"
2344 LDFLAGS="$clean_LDFLAGS"
2346 if test "$want_metalink" = "yes"; then
2347 dnl finally libmetalink will be used
2348 AC_DEFINE(USE_METALINK, 1, [Define to enable metalink support])
2349 LIBMETALINK_LIBS=$addlib
2350 LIBMETALINK_LDFLAGS=$addld
2351 LIBMETALINK_CFLAGS=$addcflags
2352 AC_SUBST([LIBMETALINK_LIBS])
2353 AC_SUBST([LIBMETALINK_LDFLAGS])
2354 AC_SUBST([LIBMETALINK_CFLAGS])
2355 curl_mtlnk_msg="enabled"
2361 dnl **********************************************************************
2362 dnl Check for the presence of LIBSSH2 libraries and headers
2363 dnl **********************************************************************
2365 dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
2367 AC_ARG_WITH(libssh2,dnl
2368 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])
2369 AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
2370 OPT_LIBSSH2=$withval)
2372 if test X"$OPT_LIBSSH2" != Xno; then
2373 dnl backup the pre-libssh2 variables
2374 CLEANLDFLAGS="$LDFLAGS"
2375 CLEANCPPFLAGS="$CPPFLAGS"
2378 case "$OPT_LIBSSH2" in
2380 dnl --with-libssh2 (without path) used
2381 CURL_CHECK_PKGCONFIG(libssh2)
2383 if test "$PKGCONFIG" != "no" ; then
2384 LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2`
2385 LD_SSH2=`$PKGCONFIG --libs-only-L libssh2`
2386 CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2`
2387 version=`$PKGCONFIG --modversion libssh2`
2388 DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'`
2393 dnl no --with-libssh2 option given, just check default places
2396 dnl use the given --with-libssh2 spot
2397 PREFIX_SSH2=$OPT_LIBSSH2
2401 dnl if given with a prefix, we set -L and -I based on that
2402 if test -n "$PREFIX_SSH2"; then
2404 LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff
2405 CPP_SSH2=-I${PREFIX_SSH2}/include
2406 DIR_SSH2=${PREFIX_SSH2}/lib$libsuff
2409 LDFLAGS="$LDFLAGS $LD_SSH2"
2410 CPPFLAGS="$CPPFLAGS $CPP_SSH2"
2411 LIBS="$LIBS $LIB_SSH2"
2413 AC_CHECK_LIB(ssh2, libssh2_channel_open_ex)
2415 AC_CHECK_HEADERS(libssh2.h,
2416 curl_ssh_msg="enabled (libSSH2)"
2418 AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
2419 AC_SUBST(USE_LIBSSH2, [1])
2422 if test X"$OPT_LIBSSH2" != Xoff &&
2423 test "$LIBSSH2_ENABLED" != "1"; then
2424 AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!])
2427 if test "$LIBSSH2_ENABLED" = "1"; then
2428 if test -n "$DIR_SSH2"; then
2429 dnl when the libssh2 shared libs were found in a path that the run-time
2430 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
2431 dnl to prevent further configure tests to fail due to this
2433 dnl libssh2_version is a post 1.0 addition
2434 dnl libssh2_init and libssh2_exit were added in 1.2.5
2435 dnl libssh2_scp_send64 was added in 1.2.6
2436 dnl libssh2_session_handshake was added in 1.2.8
2437 AC_CHECK_FUNCS( libssh2_version libssh2_init libssh2_exit \
2438 libssh2_scp_send64 libssh2_session_handshake)
2439 if test "x$cross_compiling" != "xyes"; then
2440 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
2441 export LD_LIBRARY_PATH
2442 AC_MSG_NOTICE([Added $DIR_SSH2 to LD_LIBRARY_PATH])
2446 dnl no libssh2, revert back to clean variables
2447 LDFLAGS=$CLEANLDFLAGS
2448 CPPFLAGS=$CLEANCPPFLAGS
2453 dnl **********************************************************************
2454 dnl Check for the presence of LIBRTMP libraries and headers
2455 dnl **********************************************************************
2457 dnl Default to compiler & linker defaults for LIBRTMP files & libraries.
2459 AC_ARG_WITH(librtmp,dnl
2460 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])
2461 AC_HELP_STRING([--without-librtmp], [disable LIBRTMP]),
2462 OPT_LIBRTMP=$withval)
2464 if test X"$OPT_LIBRTMP" != Xno; then
2465 dnl backup the pre-librtmp variables
2466 CLEANLDFLAGS="$LDFLAGS"
2467 CLEANCPPFLAGS="$CPPFLAGS"
2470 case "$OPT_LIBRTMP" in
2472 dnl --with-librtmp (without path) used
2473 CURL_CHECK_PKGCONFIG(librtmp)
2475 if test "$PKGCONFIG" != "no" ; then
2476 LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp`
2477 LD_RTMP=`$PKGCONFIG --libs-only-L librtmp`
2478 CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp`
2479 version=`$PKGCONFIG --modversion librtmp`
2480 DIR_RTMP=`echo $LD_RTMP | $SED -e 's/-L//'`
2482 dnl To avoid link errors, we do not allow --librtmp without
2483 dnl a pkgconfig file
2484 AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.])
2489 dnl no --with-librtmp option given, just check default places
2493 dnl use the given --with-librtmp spot
2494 PREFIX_RTMP=$OPT_LIBRTMP
2498 dnl if given with a prefix, we set -L and -I based on that
2499 if test -n "$PREFIX_RTMP"; then
2500 LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff
2501 CPP_RTMP=-I${PREFIX_RTMP}/include
2502 DIR_RTMP=${PREFIX_RTMP}/lib$libsuff
2505 LDFLAGS="$LDFLAGS $LD_RTMP"
2506 CPPFLAGS="$CPPFLAGS $CPP_RTMP"
2507 LIBS="$LIBS $LIB_RTMP"
2509 AC_CHECK_LIB(rtmp, RTMP_Init,
2511 AC_CHECK_HEADERS(librtmp/rtmp.h,
2512 curl_rtmp_msg="enabled (librtmp)"
2514 AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use])
2515 AC_SUBST(USE_LIBRTMP, [1])
2518 dnl not found, revert back to clean variables
2519 LDFLAGS=$CLEANLDFLAGS
2520 CPPFLAGS=$CLEANCPPFLAGS
2524 if test X"$OPT_LIBRTMP" != Xoff &&
2525 test "$LIBRTMP_ENABLED" != "1"; then
2526 AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!])
2531 dnl **********************************************************************
2532 dnl Check for linker switch for versioned symbols
2533 dnl **********************************************************************
2535 versioned_symbols_flavour=
2536 AC_MSG_CHECKING([whether versioned symbols are wanted])
2537 AC_ARG_ENABLE(versioned-symbols,
2538 AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library])
2539 AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]),
2540 [ case "$enableval" in
2541 yes) AC_MSG_RESULT(yes)
2542 AC_MSG_CHECKING([if libraries can be versioned])
2543 GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
2544 if test -z "$GLD"; then
2546 AC_MSG_WARN([You need an ld version supporting the --version-script option])
2549 if test "x$OPENSSL_ENABLED" = "x1"; then
2550 versioned_symbols_flavour="OPENSSL_"
2551 elif test "x$GNUTLS_ENABLED" == "x1"; then
2552 versioned_symbols_flavour="GNUTLS_"
2553 elif test "x$NSS_ENABLED" == "x1"; then
2554 versioned_symbols_flavour="NSS_"
2555 elif test "x$POLARSSL_ENABLED" == "x1"; then
2556 versioned_symbols_flavour="POLARSSL_"
2557 elif test "x$CYASSL_ENABLED" == "x1"; then
2558 versioned_symbols_flavour="CYASSL_"
2559 elif test "x$AXTLS_ENABLED" == "x1"; then
2560 versioned_symbols_flavour="AXTLS_"
2561 elif test "x$WINSSL_ENABLED" == "x1"; then
2562 versioned_symbols_flavour="WINSSL_"
2563 elif test "x$DARWINSSL_ENABLED" == "x1"; then
2564 versioned_symbols_flavour="DARWINSSL_"
2566 versioned_symbols_flavour=""
2568 versioned_symbols="yes"
2572 *) AC_MSG_RESULT(no)
2580 AC_SUBST(VERSIONED_FLAVOUR, ["$versioned_symbols_flavour"])
2581 AM_CONDITIONAL(VERSIONED_SYMBOLS, test "x$versioned_symbols" = "xyes")
2583 dnl -------------------------------------------------
2584 dnl check winidn option before other IDN libraries
2585 dnl -------------------------------------------------
2587 AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)])
2588 OPT_WINIDN="default"
2590 AC_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN])
2591 AC_HELP_STRING([--without-winidn], [disable Windows native IDN]),
2592 OPT_WINIDN=$withval)
2593 case "$OPT_WINIDN" in
2595 dnl --without-winidn option used or configure option not specified
2600 dnl --with-winidn option used without path
2602 want_winidn_path="default"
2603 AC_MSG_RESULT([yes])
2606 dnl --with-winidn option used with path
2608 want_winidn_path="$withval"
2609 AC_MSG_RESULT([yes ($withval)])
2613 if test "$want_winidn" = "yes"; then
2614 dnl winidn library support has been requested
2615 clean_CPPFLAGS="$CPPFLAGS"
2616 clean_LDFLAGS="$LDFLAGS"
2618 WINIDN_LIBS="-lnormaliz"
2620 if test "$want_winidn_path" != "default"; then
2621 dnl path has been specified
2622 dnl pkg-config not available or provides no info
2623 WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff"
2624 WINIDN_CPPFLAGS="-I$want_winidn_path/include"
2625 WINIDN_DIR="$want_winidn_path/lib$libsuff"
2628 CPPFLAGS="$WINIDN_CPPFLAGS $CPPFLAGS"
2629 LDFLAGS="$WINIDN_LDFLAGS $LDFLAGS"
2630 LIBS="$WINIDN_LIBS $LIBS"
2632 AC_MSG_CHECKING([if IdnToUnicode can be linked])
2634 AC_LANG_FUNC_LINK_TRY([IdnToUnicode])
2636 AC_MSG_RESULT([yes])
2637 tst_links_winidn="yes"
2640 tst_links_winidn="no"
2643 if test "$tst_links_winidn" = "yes"; then
2644 AC_DEFINE(USE_WIN32_IDN, 1, [Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz).])
2645 AC_DEFINE(WANT_IDN_PROTOTYPES, 1, [Define to 1 to provide own prototypes.])
2646 AC_SUBST([IDN_ENABLED], [1])
2647 curl_idn_msg="enabled (Windows-native)"
2649 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2650 CPPFLAGS="$clean_CPPFLAGS"
2651 LDFLAGS="$clean_LDFLAGS"
2656 dnl **********************************************************************
2657 dnl Check for the presence of IDN libraries and headers
2658 dnl **********************************************************************
2660 AC_MSG_CHECKING([whether to build with libidn])
2663 AC_HELP_STRING([--with-libidn=PATH],[Enable libidn usage])
2664 AC_HELP_STRING([--without-libidn],[Disable libidn usage]),
2668 dnl --without-libidn option used
2673 dnl configure option not specified
2675 want_idn_path="default"
2676 AC_MSG_RESULT([(assumed) yes])
2679 dnl --with-libidn option used without path
2681 want_idn_path="default"
2682 AC_MSG_RESULT([yes])
2685 dnl --with-libidn option used with path
2687 want_idn_path="$withval"
2688 AC_MSG_RESULT([yes ($withval)])
2692 if test "$want_idn" = "yes"; then
2693 dnl idn library support has been requested
2694 clean_CPPFLAGS="$CPPFLAGS"
2695 clean_LDFLAGS="$LDFLAGS"
2699 if test "$want_idn_path" != "default"; then
2700 dnl path has been specified
2701 IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig"
2702 CURL_CHECK_PKGCONFIG(libidn, [$IDN_PCDIR])
2703 if test "$PKGCONFIG" != "no"; then
2704 IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2705 $PKGCONFIG --libs-only-l libidn 2>/dev/null`
2706 IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2707 $PKGCONFIG --libs-only-L libidn 2>/dev/null`
2708 IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2709 $PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2710 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2712 dnl pkg-config not available or provides no info
2714 IDN_LDFLAGS="-L$want_idn_path/lib$libsuff"
2715 IDN_CPPFLAGS="-I$want_idn_path/include"
2716 IDN_DIR="$want_idn_path/lib$libsuff"
2719 dnl path not specified
2720 CURL_CHECK_PKGCONFIG(libidn)
2721 if test "$PKGCONFIG" != "no"; then
2722 IDN_LIBS=`$PKGCONFIG --libs-only-l libidn 2>/dev/null`
2723 IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn 2>/dev/null`
2724 IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2725 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2727 dnl pkg-config not available or provides no info
2732 if test "$PKGCONFIG" != "no"; then
2733 AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"])
2734 AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"])
2735 AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2736 AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"])
2738 AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"])
2739 AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"])
2740 AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2741 AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"])
2744 CPPFLAGS="$IDN_CPPFLAGS $CPPFLAGS"
2745 LDFLAGS="$IDN_LDFLAGS $LDFLAGS"
2746 LIBS="$IDN_LIBS $LIBS"
2748 AC_MSG_CHECKING([if idna_to_ascii_4i can be linked])
2750 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_4i])
2752 AC_MSG_RESULT([yes])
2753 tst_links_libidn="yes"
2756 tst_links_libidn="no"
2758 if test "$tst_links_libidn" = "no"; then
2759 AC_MSG_CHECKING([if idna_to_ascii_lz can be linked])
2761 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_lz])
2763 AC_MSG_RESULT([yes])
2764 tst_links_libidn="yes"
2767 tst_links_libidn="no"
2771 if test "$tst_links_libidn" = "yes"; then
2772 AC_DEFINE(HAVE_LIBIDN, 1, [Define to 1 if you have the `idn' library (-lidn).])
2773 dnl different versions of libidn have different setups of these:
2774 AC_CHECK_FUNCS( idn_free idna_strerror tld_strerror )
2775 AC_CHECK_HEADERS( idn-free.h tld.h )
2776 if test "x$ac_cv_header_tld_h" = "xyes"; then
2777 AC_SUBST([IDN_ENABLED], [1])
2778 curl_idn_msg="enabled"
2779 if test -n "$IDN_DIR"; then
2780 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
2781 export LD_LIBRARY_PATH
2782 AC_MSG_NOTICE([Added $IDN_DIR to LD_LIBRARY_PATH])
2785 AC_MSG_WARN([Libraries for IDN support too old: IDN disabled])
2786 CPPFLAGS="$clean_CPPFLAGS"
2787 LDFLAGS="$clean_LDFLAGS"
2791 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2792 CPPFLAGS="$clean_CPPFLAGS"
2793 LDFLAGS="$clean_LDFLAGS"
2799 dnl Let's hope this split URL remains working:
2800 dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
2801 dnl genprogc/thread_quick_ref.htm
2804 dnl **********************************************************************
2805 dnl Back to "normal" configuring
2806 dnl **********************************************************************
2808 dnl Checks for header files.
2811 CURL_CHECK_HEADER_MALLOC
2812 CURL_CHECK_HEADER_MEMORY
2814 dnl Now check for the very most basic headers. Then we can use these
2815 dnl ones as default-headers when checking for the rest!
2858 dnl to do if not found
2862 dnl default includes
2864 #ifdef HAVE_SYS_TYPES_H
2865 #include <sys/types.h>
2867 #ifdef HAVE_SYS_TIME_H
2868 #include <sys/time.h>
2870 #ifdef HAVE_SYS_SELECT_H
2871 #include <sys/select.h>
2873 #ifdef HAVE_SYS_SOCKET_H
2874 #include <sys/socket.h>
2876 #ifdef HAVE_NETINET_IN_H
2877 #include <netinet/in.h>
2879 #ifdef HAVE_SYS_UN_H
2885 dnl Checks for typedefs, structures, and compiler characteristics.
2887 CURL_CHECK_VARIADIC_MACROS
2890 CURL_CHECK_STRUCT_TIMEVAL
2891 CURL_VERIFY_RUNTIMELIBS
2893 AC_CHECK_SIZEOF(size_t)
2894 AC_CHECK_SIZEOF(long)
2895 AC_CHECK_SIZEOF(int)
2896 AC_CHECK_SIZEOF(short)
2898 AC_CHECK_SIZEOF(time_t)
2899 AC_CHECK_SIZEOF(off_t)
2902 if test x"$ac_cv_native_windows" != "xyes" &&
2903 test $ac_cv_sizeof_off_t -ne $curl_sizeof_curl_off_t; then
2904 AC_MSG_WARN([This libcurl built is probably not ABI compatible with previous])
2905 AC_MSG_WARN([builds! You MUST read lib/README.curl_off_t to figure it out.])
2910 AC_CHECK_TYPE(long long,
2911 [AC_DEFINE(HAVE_LONGLONG, 1,
2912 [Define to 1 if the compiler supports the 'long long' data type.])]
2916 if test "xyes" = "x$longlong"; then
2917 AC_MSG_CHECKING([if numberLL works])
2921 long long val = 1000LL;
2924 AC_MSG_RESULT([yes])
2925 AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
2933 AC_CHECK_TYPE(ssize_t, ,
2934 AC_DEFINE(ssize_t, int, [the signed version of size_t]))
2936 # check for bool type
2937 AC_CHECK_TYPE([bool],[
2938 AC_DEFINE(HAVE_BOOL_T, 1,
2939 [Define to 1 if bool is an available type.])
2941 #ifdef HAVE_SYS_TYPES_H
2942 #include <sys/types.h>
2944 #ifdef HAVE_STDBOOL_H
2945 #include <stdbool.h>
2949 CURL_CONFIGURE_CURL_SOCKLEN_T
2953 TYPE_SOCKADDR_STORAGE
2959 CURL_CHECK_FUNC_SELECT
2961 CURL_CHECK_FUNC_RECV
2962 CURL_CHECK_FUNC_RECVFROM
2963 CURL_CHECK_FUNC_SEND
2964 CURL_CHECK_MSG_NOSIGNAL
2966 CURL_CHECK_FUNC_ALARM
2967 CURL_CHECK_FUNC_BASENAME
2968 CURL_CHECK_FUNC_CLOSESOCKET
2969 CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
2970 CURL_CHECK_FUNC_CONNECT
2971 CURL_CHECK_FUNC_FCNTL
2972 CURL_CHECK_FUNC_FDOPEN
2973 CURL_CHECK_FUNC_FREEADDRINFO
2974 CURL_CHECK_FUNC_FREEIFADDRS
2975 CURL_CHECK_FUNC_FSETXATTR
2976 CURL_CHECK_FUNC_FTRUNCATE
2977 CURL_CHECK_FUNC_GETADDRINFO
2978 CURL_CHECK_FUNC_GAI_STRERROR
2979 CURL_CHECK_FUNC_GETHOSTBYADDR
2980 CURL_CHECK_FUNC_GETHOSTBYADDR_R
2981 CURL_CHECK_FUNC_GETHOSTBYNAME
2982 CURL_CHECK_FUNC_GETHOSTBYNAME_R
2983 CURL_CHECK_FUNC_GETHOSTNAME
2984 CURL_CHECK_FUNC_GETIFADDRS
2985 CURL_CHECK_FUNC_GETSERVBYPORT_R
2986 CURL_CHECK_FUNC_GMTIME_R
2987 CURL_CHECK_FUNC_INET_NTOA_R
2988 CURL_CHECK_FUNC_INET_NTOP
2989 CURL_CHECK_FUNC_INET_PTON
2990 CURL_CHECK_FUNC_IOCTL
2991 CURL_CHECK_FUNC_IOCTLSOCKET
2992 CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
2993 CURL_CHECK_FUNC_LOCALTIME_R
2994 CURL_CHECK_FUNC_MEMRCHR
2995 CURL_CHECK_FUNC_POLL
2996 CURL_CHECK_FUNC_SETSOCKOPT
2997 CURL_CHECK_FUNC_SIGACTION
2998 CURL_CHECK_FUNC_SIGINTERRUPT
2999 CURL_CHECK_FUNC_SIGNAL
3000 CURL_CHECK_FUNC_SIGSETJMP
3001 CURL_CHECK_FUNC_SOCKET
3002 CURL_CHECK_FUNC_SOCKETPAIR
3003 CURL_CHECK_FUNC_STRCASECMP
3004 CURL_CHECK_FUNC_STRCASESTR
3005 CURL_CHECK_FUNC_STRCMPI
3006 CURL_CHECK_FUNC_STRDUP
3007 CURL_CHECK_FUNC_STRERROR_R
3008 CURL_CHECK_FUNC_STRICMP
3009 CURL_CHECK_FUNC_STRLCAT
3010 CURL_CHECK_FUNC_STRNCASECMP
3011 CURL_CHECK_FUNC_STRNCMPI
3012 CURL_CHECK_FUNC_STRNICMP
3013 CURL_CHECK_FUNC_STRSTR
3014 CURL_CHECK_FUNC_STRTOK_R
3015 CURL_CHECK_FUNC_STRTOLL
3016 CURL_CHECK_FUNC_WRITEV
3022 AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
3026 AC_CHECK_FUNCS([fork \
3045 eval skipcheck=\$skipcheck_$func
3046 if test "x$skipcheck" != "xyes"; then
3047 AC_MSG_CHECKING([deeper for $func])
3054 AC_MSG_RESULT([yes])
3055 eval "ac_cv_func_$func=yes"
3056 AC_DEFINE_UNQUOTED(XC_SH_TR_CPP([HAVE_$func]), [1],
3057 [Define to 1 if you have the $func function.])
3059 AC_MSG_RESULT([but still no])
3064 dnl Check if the getnameinfo function is available
3065 dnl and get the types of five of its arguments.
3066 CURL_CHECK_FUNC_GETNAMEINFO
3068 if test "$ipv6" = "yes"; then
3069 if test "$ac_cv_func_getaddrinfo" = "yes"; then
3070 AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
3072 AC_SUBST(IPV6_ENABLED)
3074 CURL_CHECK_NI_WITHSCOPEID
3077 dnl ************************************************************
3078 dnl enable non-blocking communications
3080 CURL_CHECK_OPTION_NONBLOCKING
3081 CURL_CHECK_NONBLOCKING_SOCKET
3083 dnl ************************************************************
3084 dnl nroff tool stuff
3087 AC_PATH_PROG( PERL, perl, ,
3088 $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
3091 AC_PATH_PROGS( NROFF, gnroff nroff, ,
3092 $PATH:/usr/bin/:/usr/local/bin )
3095 if test -n "$NROFF"; then
3096 dnl only check for nroff options if an nroff command was found
3098 AC_MSG_CHECKING([how to use *nroff to get plain text from man pages])
3100 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3101 if test -z "$mancheck"; then
3103 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3104 if test -z "$mancheck"; then
3106 AC_MSG_RESULT([failed])
3107 AC_MSG_WARN([found no *nroff option to get plaintext from man pages])
3109 AC_MSG_RESULT([$MANOPT])
3112 AC_MSG_RESULT([$MANOPT])
3117 if test -z "$MANOPT"
3119 dnl if no nroff tool was found, or no option that could convert man pages
3120 dnl was found, then disable the built-in manual stuff
3121 AC_MSG_WARN([disabling built-in manual])
3125 dnl *************************************************************************
3126 dnl If the manual variable still is set, then we go with providing a built-in
3129 if test "$USE_MANUAL" = "1"; then
3130 AC_DEFINE(USE_MANUAL, 1, [If you want to build curl with the built-in manual])
3131 curl_manual_msg="enabled"
3134 dnl set variable for use in automakefile(s)
3135 AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
3138 AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
3140 if test "x$ac_cv_native_windows" != "xyes" &&
3141 test "x$enable_shared" = "xyes"; then
3142 build_libhostname=yes
3144 build_libhostname=no
3146 AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes)
3148 CURL_CHECK_OPTION_THREADED_RESOLVER
3150 if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
3152 [Options --enable-threaded-resolver and --enable-ares are mutually exclusive])
3155 if test "$want_thres" = "yes"; then
3156 AC_CHECK_HEADER(pthread.h,
3157 [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>])
3158 save_CFLAGS="$CFLAGS"
3159 CFLAGS="$CFLAGS -pthread"
3160 AC_CHECK_LIB(pthread, pthread_create,
3161 [ AC_MSG_NOTICE([using POSIX threaded DNS lookup])
3162 AC_DEFINE(USE_THREADS_POSIX, 1, [if you want POSIX threaded DNS lookup])
3164 curl_res_msg="threaded"
3166 [ CFLAGS="$save_CFLAGS"])
3170 dnl ************************************************************
3171 dnl disable verbose text strings
3173 AC_MSG_CHECKING([whether to enable verbose strings])
3174 AC_ARG_ENABLE(verbose,
3175 AC_HELP_STRING([--enable-verbose],[Enable verbose strings])
3176 AC_HELP_STRING([--disable-verbose],[Disable verbose strings]),
3177 [ case "$enableval" in
3180 AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings])
3181 curl_verbose_msg="no"
3183 *) AC_MSG_RESULT(yes)
3189 dnl ************************************************************
3190 dnl enable SSPI support
3192 AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)])
3194 AC_HELP_STRING([--enable-sspi],[Enable SSPI])
3195 AC_HELP_STRING([--disable-sspi],[Disable SSPI]),
3196 [ case "$enableval" in
3198 if test "$ac_cv_native_windows" = "yes"; then
3200 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
3201 AC_SUBST(USE_WINDOWS_SSPI, [1])
3202 curl_sspi_msg="enabled"
3205 AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.])
3209 if test "x$WINSSL_ENABLED" = "x1"; then
3210 # --with-winssl implies --enable-sspi
3217 if test "x$WINSSL_ENABLED" = "x1"; then
3218 # --with-winssl implies --enable-sspi
3225 dnl ************************************************************
3226 dnl disable cryptographic authentication
3228 AC_MSG_CHECKING([whether to enable cryptographic authentication methods])
3229 AC_ARG_ENABLE(crypto-auth,
3230 AC_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication])
3231 AC_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]),
3232 [ case "$enableval" in
3235 AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication])
3237 *) AC_MSG_RESULT(yes)
3243 CURL_CHECK_OPTION_NTLM_WB
3247 dnl ************************************************************
3248 dnl disable TLS-SRP authentication
3250 AC_MSG_CHECKING([whether to enable TLS-SRP authentication])
3251 AC_ARG_ENABLE(tls-srp,
3252 AC_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication])
3253 AC_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]),
3254 [ case "$enableval" in
3257 AC_DEFINE(CURL_DISABLE_TLS_SRP, 1, [to disable TLS-SRP authentication])
3260 *) AC_MSG_RESULT(yes)
3268 if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_SSLEAY_SRP" = "x1") ; then
3269 AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication])
3271 curl_tls_srp_msg="enabled"
3274 dnl ************************************************************
3275 dnl disable cookies support
3277 AC_MSG_CHECKING([whether to enable support for cookies])
3278 AC_ARG_ENABLE(cookies,
3279 AC_HELP_STRING([--enable-cookies],[Enable cookies support])
3280 AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
3281 [ case "$enableval" in
3284 AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support])
3286 *) AC_MSG_RESULT(yes)
3292 dnl ************************************************************
3293 dnl hiding of library internal symbols
3295 CURL_CONFIGURE_SYMBOL_HIDING
3297 dnl ************************************************************
3298 dnl enforce SONAME bump
3301 AC_MSG_CHECKING([whether to enforce SONAME bump])
3302 AC_ARG_ENABLE(soname-bump,
3303 AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump])
3304 AC_HELP_STRING([--disable-soname-bump],[Disable enforced SONAME bump]),
3305 [ case "$enableval" in
3306 yes) AC_MSG_RESULT(yes)
3313 AC_MSG_RESULT($soname_bump)
3315 AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes)
3318 dnl ************************************************************
3319 if test ! -z "$winsock_LIB"; then
3321 dnl If ws2_32 is wanted, make sure it is the _last_ lib in LIBS (makes
3322 dnl things work when built with c-ares). But we can't just move it last
3323 dnl since then other stuff (SSL) won't build. So we simply append it to the
3326 LIBS="$LIBS $winsock_LIB"
3327 TEST_SERVER_LIBS="$TEST_SERVER_LIBS $winsock_LIB"
3332 dnl All the library dependencies put into $LIB apply to libcurl only.
3333 dnl Those in $CURL_LIBS apply to the curl command-line client only.
3334 dnl Those in $TEST_SERVER_LIBS apply to test servers only.
3335 dnl Those in $ALL_LIBS apply to all targets, including test targets.
3339 AC_SUBST(LIBCURL_LIBS)
3341 AC_SUBST(TEST_SERVER_LIBS)
3342 AC_SUBST(CURL_NETWORK_LIBS)
3343 LIBS=$ALL_LIBS dnl LIBS is a magic variable that's used for every link
3345 AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes)
3348 ENABLE_SHARED="$enable_shared"
3349 AC_SUBST(ENABLE_SHARED)
3352 dnl For keeping supported features and protocols also in pkg-config file
3353 dnl since it is more cross-compile friendly than curl-config
3356 if test "x$USE_SSLEAY" = "x1"; then
3357 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3358 elif test -n "$SSL_ENABLED"; then
3359 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3361 if test "@KRB4_ENABLED@" = "x1"; then
3362 SUPPORT_FEATURES="$SUPPORT_FEATURES KRB4"
3364 if test "x$IPV6_ENABLED" = "x1"; then
3365 SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
3367 if test "x$HAVE_LIBZ" = "x1"; then
3368 SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
3370 if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1"; then
3371 SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
3373 if test "x$IDN_ENABLED" = "x1"; then
3374 SUPPORT_FEATURES="$SUPPORT_FEATURES IDN"
3376 if test "x$USE_WINDOWS_SSPI" = "x1"; then
3377 SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
3379 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3380 if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
3381 -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
3382 -o "x$DARWINSSL_ENABLED" = "x1"; then
3383 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
3384 if test "x$NTLM_WB_ENABLED" = "x1"; then
3385 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
3389 if test "x$USE_TLS_SRP" = "x1"; then
3390 SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
3393 AC_SUBST(SUPPORT_FEATURES)
3395 dnl For supported protocols in pkg-config file
3396 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3397 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
3398 if test "x$SSL_ENABLED" = "x1"; then
3399 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS"
3402 if test "x$CURL_DISABLE_FTP" != "x1"; then
3403 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP"
3404 if test "x$SSL_ENABLED" = "x1"; then
3405 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS"
3408 if test "x$CURL_DISABLE_FILE" != "x1"; then
3409 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE"
3411 if test "x$CURL_DISABLE_TELNET" != "x1"; then
3412 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET"
3414 if test "x$CURL_DISABLE_LDAP" != "x1"; then
3415 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP"
3416 if test "x$CURL_DISABLE_LDAPS" != "x1"; then
3417 if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") ||
3418 (test "x$USE_OPENLDAP" != "x1" && test "x$HAVE_LDAP_SSL" = "x1"); then
3419 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS"
3423 if test "x$CURL_DISABLE_DICT" != "x1"; then
3424 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT"
3426 if test "x$CURL_DISABLE_TFTP" != "x1"; then
3427 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP"
3429 if test "x$CURL_DISABLE_GOPHER" != "x1"; then
3430 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER"
3432 if test "x$CURL_DISABLE_POP3" != "x1"; then
3433 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3"
3434 if test "x$SSL_ENABLED" = "x1"; then
3435 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S"
3438 if test "x$CURL_DISABLE_IMAP" != "x1"; then
3439 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
3440 if test "x$SSL_ENABLED" = "x1"; then
3441 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
3444 if test "x$CURL_DISABLE_SMTP" != "x1"; then
3445 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
3446 if test "x$SSL_ENABLED" = "x1"; then
3447 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS"
3450 if test "x$USE_LIBSSH2" = "x1"; then
3451 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
3452 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
3454 if test "x$CURL_DISABLE_RTSP" != "x1"; then
3455 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
3457 if test "x$USE_LIBRTMP" = "x1"; then
3458 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP"
3461 dnl replace spaces with newlines
3463 dnl replace the newlines back to spaces
3464 SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '`
3466 AC_SUBST(SUPPORT_PROTOCOLS)
3468 dnl squeeze whitespace out of some variables
3477 squeeze LIBCURL_LIBS
3478 squeeze TEST_SERVER_LIBS
3479 squeeze CURL_NETWORK_LIBS
3481 squeeze SUPPORT_FEATURES
3482 squeeze SUPPORT_PROTOCOLS
3484 if test "x$want_curldebug_assumed" = "xyes" &&
3485 test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
3486 ac_configure_args="$ac_configure_args --enable-curldebug"
3489 AC_CONFIG_FILES([Makefile \
3491 docs/examples/Makefile \
3492 docs/libcurl/Makefile \
3494 include/curl/Makefile \
3499 tests/data/Makefile \
3500 tests/server/Makefile \
3501 tests/libtest/Makefile \
3502 tests/unit/Makefile \
3504 packages/Win32/Makefile \
3505 packages/Win32/cygwin/Makefile \
3506 packages/Linux/Makefile \
3507 packages/Linux/RPM/Makefile \
3508 packages/Linux/RPM/curl.spec \
3509 packages/Linux/RPM/curl-ssl.spec \
3510 packages/Solaris/Makefile \
3511 packages/EPM/curl.list \
3512 packages/EPM/Makefile \
3513 packages/vms/Makefile \
3514 packages/AIX/Makefile \
3515 packages/AIX/RPM/Makefile \
3516 packages/AIX/RPM/curl.spec \
3522 CURL_GENERATE_CONFIGUREHELP_PM
3524 AC_MSG_NOTICE([Configured to build curl/libcurl:
3526 curl version: ${CURLVERSION}
3528 Install prefix: ${prefix}
3530 SSL support: ${curl_ssl_msg}
3531 SSH support: ${curl_ssh_msg}
3532 zlib support: ${curl_zlib_msg}
3533 krb4 support: ${curl_krb4_msg}
3534 GSSAPI support: ${curl_gss_msg}
3535 SPNEGO support: ${curl_spnego_msg}
3536 TLS-SRP support: ${curl_tls_srp_msg}
3537 resolver: ${curl_res_msg}
3538 ipv6 support: ${curl_ipv6_msg}
3539 IDN support: ${curl_idn_msg}
3540 Build libcurl: Shared=${enable_shared}, Static=${enable_static}
3541 Built-in manual: ${curl_manual_msg}
3542 --libcurl option: ${curl_libcurl_msg}
3543 Verbose errors: ${curl_verbose_msg}
3544 SSPI support: ${curl_sspi_msg}
3545 ca cert bundle: ${ca}
3546 ca cert path: ${capath}
3547 LDAP support: ${curl_ldap_msg}
3548 LDAPS support: ${curl_ldaps_msg}
3549 RTSP support: ${curl_rtsp_msg}
3550 RTMP support: ${curl_rtmp_msg}
3551 metalink support: ${curl_mtlnk_msg}
3552 Protocols: ${SUPPORT_PROTOCOLS}
3555 if test "x$soname_bump" = "xyes"; then
3558 SONAME bump: yes - WARNING: this library will be built with the SONAME
3559 number bumped due to (a detected) ABI breakage.
3560 See lib/README.curl_off_t for details on this.