1 #***************************************************************************
3 # Project ___| | | | _ \| |
5 # | (__| |_| | _ <| |___
6 # \___|\___/|_| \_\_____|
8 # Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al.
10 # This software is licensed as described in the file COPYING, which
11 # you should have received as part of this distribution. The terms
12 # are also available at http://curl.haxx.se/docs/copyright.html.
14 # You may opt to use, copy, modify, merge, publish, distribute and/or sell
15 # copies of the Software, and permit persons to whom the Software is
16 # furnished to do so, under the terms of the COPYING file.
18 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19 # KIND, either express or implied.
21 #***************************************************************************
22 dnl Process this file with autoconf to produce a configure script.
26 dnl We don't know the version number "statically" so we use a dash here
27 AC_INIT([curl], [-], [a suitable curl mailing list: http://curl.haxx.se/mail/])
30 CURL_OVERRIDE_AUTOCONF
32 dnl configure script copyright
33 AC_COPYRIGHT([Copyright (c) 1998 - 2012 Daniel Stenberg, <daniel@haxx.se>
34 This configure script may be copied, distributed and modified under the
35 terms of the curl license; see COPYING for more details])
37 AC_CONFIG_SRCDIR([lib/urldata.h])
38 AM_CONFIG_HEADER(lib/curl_config.h include/curl/curlbuild.h)
39 AC_CONFIG_MACRO_DIR([m4])
42 CURL_CHECK_OPTION_DEBUG
43 CURL_CHECK_OPTION_OPTIMIZE
44 CURL_CHECK_OPTION_WARNINGS
45 CURL_CHECK_OPTION_WERROR
46 CURL_CHECK_OPTION_CURLDEBUG
47 CURL_CHECK_OPTION_SYMBOL_HIDING
48 CURL_CHECK_OPTION_ARES
50 CURL_CHECK_PATH_SEPARATOR_REQUIRED
53 # save the configure arguments
55 CONFIGURE_OPTIONS="\"$ac_configure_args\""
56 AC_SUBST(CONFIGURE_OPTIONS)
59 if test X"$want_werror" = Xyes; then
60 CURL_CFLAG_EXTRAS="-Werror"
62 AC_SUBST(CURL_CFLAG_EXTRAS)
64 dnl SED is mandatory for configure process and libtool.
65 dnl Set it now, allowing it to be changed later.
66 if test -z "$SED"; then
67 dnl allow it to be overridden
68 AC_PATH_PROG([SED], [sed], [not_found],
69 [$PATH:/usr/bin:/usr/local/bin])
70 if test -z "$SED" || test "$SED" = "not_found"; then
71 AC_MSG_ERROR([sed not found in PATH. Cannot continue without sed.])
76 dnl GREP is mandatory for configure process and libtool.
77 dnl Set it now, allowing it to be changed later.
78 if test -z "$GREP"; then
79 dnl allow it to be overridden
80 AC_PATH_PROG([GREP], [grep], [not_found],
81 [$PATH:/usr/bin:/usr/local/bin])
82 if test -z "$GREP" || test "$GREP" = "not_found"; then
83 AC_MSG_ERROR([grep not found in PATH. Cannot continue without grep.])
88 dnl EGREP is mandatory for configure process and libtool.
89 dnl Set it now, allowing it to be changed later.
90 if test -z "$EGREP"; then
91 dnl allow it to be overridden
92 if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
93 AC_MSG_CHECKING([for egrep])
95 AC_MSG_RESULT([$EGREP])
97 AC_PATH_PROG([EGREP], [egrep], [not_found],
98 [$PATH:/usr/bin:/usr/local/bin])
101 if test -z "$EGREP" || test "$EGREP" = "not_found"; then
102 AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.])
106 dnl AR is mandatory for configure process and libtool.
107 dnl This is target dependent, so check it as a tool.
108 if test -z "$AR"; then
109 dnl allow it to be overridden
110 AC_PATH_TOOL([AR], [ar], [not_found],
111 [$PATH:/usr/bin:/usr/local/bin])
112 if test -z "$AR" || test "$AR" = "not_found"; then
113 AC_MSG_ERROR([ar not found in PATH. Cannot continue without ar.])
120 dnl Remove non-configure distributed curlbuild.h
121 if test -f ${srcdir}/include/curl/curlbuild.h; then
122 rm -f ${srcdir}/include/curl/curlbuild.h
125 dnl figure out the libcurl version
126 CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curlver.h`
128 AC_MSG_CHECKING([curl version])
129 AC_MSG_RESULT($CURLVERSION)
131 AC_SUBST(CURLVERSION)
134 dnl we extract the numerical version for curl-config only
135 VERSIONNUM=`$SED -ne 's/^#define LIBCURL_VERSION_NUM 0x\(.*\)/\1/p' ${srcdir}/include/curl/curlver.h`
138 dnl Solaris pkgadd support definitions
139 PKGADD_PKG="HAXXcurl"
140 PKGADD_NAME="cURL - a client that groks URLs"
141 PKGADD_VENDOR="curl.haxx.se"
143 AC_SUBST(PKGADD_NAME)
144 AC_SUBST(PKGADD_VENDOR)
147 dnl initialize all the info variables
148 curl_ssl_msg="no (--with-{ssl,gnutls,nss,polarssl,cyassl,axtls,winssl} )"
149 curl_ssh_msg="no (--with-libssh2)"
150 curl_zlib_msg="no (--with-zlib)"
151 curl_krb4_msg="no (--with-krb4*)"
152 curl_gss_msg="no (--with-gssapi)"
153 curl_spnego_msg="no (--with-spnego)"
154 curl_tls_srp_msg="no (--enable-tls-srp)"
155 curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
156 curl_ipv6_msg="no (--enable-ipv6)"
157 curl_idn_msg="no (--with-{libidn,winidn})"
158 curl_manual_msg="no (--enable-manual)"
159 curl_libcurl_msg="enabled (--disable-libcurl-option)"
160 curl_verbose_msg="enabled (--disable-verbose)"
161 curl_sspi_msg="no (--enable-sspi)"
162 curl_ldap_msg="no (--enable-ldap / --with-ldap-lib / --with-lber-lib)"
163 curl_ldaps_msg="no (--enable-ldaps)"
164 curl_rtsp_msg="no (--enable-rtsp)"
165 curl_rtmp_msg="no (--with-librtmp)"
166 curl_mtlnk_msg="no (--with-libmetalink)"
168 init_ssl_msg=${curl_ssl_msg}
171 dnl 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="$LIBS $winsock_LIB"
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 and libtest cases which require networking and clock_gettime
873 dnl support. Save the list of required libraries at this point for use
874 dnl while linking those test servers and programs.
875 dnl **********************************************************************
876 CURL_NETWORK_AND_TIME_LIBS=$LIBS
878 dnl **********************************************************************
879 AC_MSG_CHECKING([whether to use libgcc])
880 AC_ARG_ENABLE(libgcc,
881 AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
882 [ case "$enableval" in
884 ALL_LIBS="$ALL_LIBS -lgcc"
893 dnl **********************************************************************
895 dnl **********************************************************************
898 AC_ARG_WITH(ldap-lib,
899 AC_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]),
900 [LDAPLIBNAME="$withval"])
903 AC_ARG_WITH(lber-lib,
904 AC_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]),
905 [LBERLIBNAME="$withval"])
907 if test x$CURL_DISABLE_LDAP != x1 ; then
909 CURL_CHECK_HEADER_LBER
910 CURL_CHECK_HEADER_LDAP
911 CURL_CHECK_HEADER_LDAPSSL
912 CURL_CHECK_HEADER_LDAP_SSL
914 if test -z "$LDAPLIBNAME" ; then
915 if test "$ac_cv_native_windows" = "yes"; then
916 dnl Windows uses a single and unique LDAP library name
917 LDAPLIBNAME="wldap32"
922 if test "$LDAPLIBNAME" ; then
923 AC_CHECK_LIB("$LDAPLIBNAME", ldap_init,, [
924 AC_MSG_WARN(["$LDAPLIBNAME" is not an LDAP library: LDAP disabled])
925 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
926 AC_SUBST(CURL_DISABLE_LDAP, [1])
927 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
928 AC_SUBST(CURL_DISABLE_LDAPS, [1])])
930 dnl Try to find the right ldap libraries for this system
932 case X-"$curl_cv_ldap_LIBS" in
934 AC_MSG_WARN([Cannot find libraries for LDAP support: LDAP disabled])
935 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
936 AC_SUBST(CURL_DISABLE_LDAP, [1])
937 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
938 AC_SUBST(CURL_DISABLE_LDAPS, [1])
944 if test x$CURL_DISABLE_LDAP != x1 ; then
946 if test "$LBERLIBNAME" ; then
947 dnl If name is "no" then don't define this library at all
948 dnl (it's only needed if libldap.so's dependencies are broken).
949 if test "$LBERLIBNAME" != "no" ; then
950 AC_CHECK_LIB("$LBERLIBNAME", ber_free,, [
951 AC_MSG_WARN(["$LBERLIBNAME" is not an LBER library: LDAP disabled])
952 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
953 AC_SUBST(CURL_DISABLE_LDAP, [1])
954 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
955 AC_SUBST(CURL_DISABLE_LDAPS, [1])])
960 if test x$CURL_DISABLE_LDAP != x1 ; then
961 AC_CHECK_FUNCS([ldap_url_parse ldap_init_fd])
963 if test "$LDAPLIBNAME" = "wldap32"; then
964 curl_ldap_msg="enabled (winldap)"
965 AC_DEFINE(CURL_LDAP_WIN, 1, [Use Windows LDAP implementation])
967 curl_ldap_msg="enabled (OpenLDAP)"
968 if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then
969 AC_DEFINE(USE_OPENLDAP, 1, [Use OpenLDAP-specific code])
970 AC_SUBST(USE_OPENLDAP, [1])
975 if test x$CURL_DISABLE_LDAPS != x1 ; then
976 curl_ldaps_msg="enabled"
979 dnl **********************************************************************
981 dnl **********************************************************************
983 AC_MSG_CHECKING([whether to enable ipv6])
985 AC_HELP_STRING([--enable-ipv6],[Enable ipv6 (with ipv4) support])
986 AC_HELP_STRING([--disable-ipv6],[Disable ipv6 support]),
987 [ case "$enableval" in
992 *) AC_MSG_RESULT(yes)
997 AC_TRY_RUN([ /* is AF_INET6 available? */
998 #include <sys/types.h>
999 #include <sys/socket.h>
1002 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1016 if test "$ipv6" = "yes"; then
1017 curl_ipv6_msg="enabled"
1020 # Check if struct sockaddr_in6 have sin6_scope_id member
1021 if test "$ipv6" = yes; then
1022 AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member])
1024 #include <sys/types.h>
1025 #include <netinet/in.h>] ,
1026 struct sockaddr_in6 s; s.sin6_scope_id = 0; , have_sin6_scope_id=yes)
1027 if test "$have_sin6_scope_id" = yes; then
1028 AC_MSG_RESULT([yes])
1029 AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member])
1035 dnl **********************************************************************
1036 dnl Check if the operating system allows programs to write to their own argv[]
1037 dnl **********************************************************************
1039 AC_MSG_CHECKING([if argv can be written to])
1042 int main(int argc, char ** argv) {
1044 return (argv[0][0] == ' ')?0:1;
1048 curl_cv_writable_argv=yes
1050 curl_cv_writable_argv=no
1052 curl_cv_writable_argv=cross
1054 case $curl_cv_writable_argv in
1056 AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv])
1064 AC_MSG_WARN([the previous check could not be made default was used])
1068 dnl **********************************************************************
1069 dnl Check for the presence of Kerberos4 libraries and headers
1070 dnl **********************************************************************
1072 AC_ARG_WITH(krb4-includes,
1073 AC_HELP_STRING([--with-krb4-includes=DIR],
1074 [Specify location of kerberos4 headers]),[
1075 CPPFLAGS="$CPPFLAGS -I$withval"
1080 AC_ARG_WITH(krb4-libs,
1081 AC_HELP_STRING([--with-krb4-libs=DIR],[Specify location of kerberos4 libs]),[
1082 LDFLAGS="$LDFLAGS -L$withval"
1089 AC_ARG_WITH(krb4,dnl
1090 AC_HELP_STRING([--with-krb4=DIR],[where to look for Kerberos4]),[
1092 if test X"$OPT_KRB4" != Xno; then
1094 if test X"$OPT_KRB4" != Xyes; then
1095 LDFLAGS="$LDFLAGS -L$OPT_KRB4/lib$libsuff"
1096 KRB4LIB="$OPT_KRB4/lib$libsuff"
1097 CPPFLAGS="$CPPFLAGS -I$OPT_KRB4/include"
1098 KRB4INC="$OPT_KRB4/include"
1103 AC_MSG_CHECKING([if Kerberos4 support is requested])
1105 if test "$want_krb4" = yes
1107 if test "$ipv6" = "yes"; then
1108 echo krb4 is not compatible with IPv6
1113 dnl Check for & handle argument to --with-krb4
1115 AC_MSG_CHECKING(where to look for Kerberos4)
1116 if test X"$OPT_KRB4" = Xyes
1118 AC_MSG_RESULT([defaults])
1120 AC_MSG_RESULT([libs in $KRB4LIB, headers in $KRB4INC])
1123 dnl Check for DES library
1124 AC_CHECK_LIB(des, des_pcbc_encrypt,
1126 AC_CHECK_HEADERS(des.h)
1129 AC_CHECK_FUNC(res_search, , [AC_CHECK_LIB(resolv, res_search)])
1131 dnl Check for the Kerberos4 library
1132 AC_CHECK_LIB(krb, krb_net_read,
1134 dnl Check for header files
1135 AC_CHECK_HEADERS(krb.h)
1137 dnl we found the required libraries, add to LIBS
1138 LIBS="-lkrb -lcom_err -ldes $LIBS"
1140 dnl Check for function krb_get_our_ip_for_realm
1141 dnl this is needed for NAT networks
1142 AC_CHECK_FUNCS(krb_get_our_ip_for_realm)
1145 AC_DEFINE(HAVE_KRB4, 1,
1146 [if you have the Kerberos4 libraries (including -ldes)])
1148 dnl substitute it too!
1150 AC_SUBST(KRB4_ENABLED)
1152 curl_krb4_msg="enabled"
1154 dnl the krb4 stuff needs a strlcpy()
1155 AC_CHECK_FUNCS(strlcpy)
1163 dnl **********************************************************************
1164 dnl Check for FBopenssl(SPNEGO) libraries
1165 dnl **********************************************************************
1168 AC_HELP_STRING([--with-spnego=DIR],
1169 [Specify location of SPNEGO library fbopenssl]), [
1170 SPNEGO_ROOT="$withval"
1171 if test x"$SPNEGO_ROOT" != xno; then
1176 AC_MSG_CHECKING([if SPNEGO support is requested])
1177 if test x"$want_spnego" = xyes; then
1179 if test X"$SPNEGO_ROOT" = Xyes; then
1180 AC_MSG_ERROR([FBOpenSSL libs and/or directories were not found where specified!])
1183 if test -z "$SPNEGO_LIB_DIR"; then
1184 LDFLAGS="$LDFLAGS -L$SPNEGO_ROOT -lfbopenssl"
1186 LDFLAGS="$LDFLAGS $SPNEGO_LIB_DIR"
1190 AC_DEFINE(HAVE_SPNEGO, 1,
1191 [Define this if you have the SPNEGO library fbopenssl])
1192 curl_spnego_msg="enabled"
1198 dnl **********************************************************************
1199 dnl Check for GSS-API libraries
1200 dnl **********************************************************************
1202 dnl check for gss stuff in the /usr as default
1205 AC_ARG_WITH(gssapi-includes,
1206 AC_HELP_STRING([--with-gssapi-includes=DIR],
1207 [Specify location of GSSAPI header]),
1208 [ GSSAPI_INCS="-I$withval"
1212 AC_ARG_WITH(gssapi-libs,
1213 AC_HELP_STRING([--with-gssapi-libs=DIR],
1214 [Specify location of GSSAPI libs]),
1215 [ GSSAPI_LIB_DIR="-L$withval"
1220 AC_HELP_STRING([--with-gssapi=DIR],
1221 [Where to look for GSSAPI]), [
1222 GSSAPI_ROOT="$withval"
1223 if test x"$GSSAPI_ROOT" != xno; then
1225 if test x"$GSSAPI_ROOT" = xyes; then
1226 dnl if yes, then use default root
1232 save_CPPFLAGS="$CPPFLAGS"
1233 AC_MSG_CHECKING([if GSSAPI support is requested])
1234 if test x"$want_gss" = xyes; then
1237 if test -z "$GSSAPI_INCS"; then
1238 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1239 GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
1240 elif test "$GSSAPI_ROOT" != "yes"; then
1241 GSSAPI_INCS="-I$GSSAPI_ROOT/include"
1245 CPPFLAGS="$CPPFLAGS $GSSAPI_INCS"
1247 AC_CHECK_HEADER(gss.h,
1249 dnl found in the given dirs
1250 AC_DEFINE(HAVE_GSSGNU, 1, [if you have the GNU gssapi libraries])
1254 dnl not found, check Heimdal or MIT
1255 AC_CHECK_HEADERS([gssapi/gssapi.h], [], [not_mit=1])
1257 [gssapi/gssapi_generic.h gssapi/gssapi_krb5.h],
1262 #ifdef HAVE_GSSAPI_GSSAPI_H
1263 #include <gssapi/gssapi.h>
1266 if test "x$not_mit" = "x1"; then
1267 dnl MIT not found, check for Heimdal
1268 AC_CHECK_HEADER(gssapi.h,
1271 AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have the Heimdal gssapi libraries])
1274 dnl no header found, disabling GSS
1276 AC_MSG_WARN(disabling GSSAPI since no header files was found)
1281 AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
1282 dnl check if we have a really old MIT kerberos (<= 1.2)
1283 AC_MSG_CHECKING([if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE])
1286 #include <gssapi/gssapi.h>
1287 #include <gssapi/gssapi_generic.h>
1288 #include <gssapi/gssapi_krb5.h>
1293 GSS_C_NT_HOSTBASED_SERVICE,
1297 AC_MSG_RESULT([yes])
1300 AC_DEFINE(HAVE_OLD_GSSMIT, 1,
1301 [if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE])
1309 if test x"$want_gss" = xyes; then
1310 AC_DEFINE(HAVE_GSSAPI, 1, [if you have the gssapi libraries])
1312 curl_gss_msg="enabled (MIT/Heimdal)"
1314 if test -n "$gnu_gss"; then
1315 curl_gss_msg="enabled (GNU GSS)"
1316 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1318 elif test -z "$GSSAPI_LIB_DIR"; then
1321 LIBS="$LIBS -lgssapi_krb5 -lresolv"
1324 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1325 dnl krb5-config doesn't have --libs-only-L or similar, put everything
1327 gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
1328 LIBS="$LIBS $gss_libs"
1329 elif test "$GSSAPI_ROOT" != "yes"; then
1330 LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
1331 LIBS="$LIBS -lgssapi"
1333 LIBS="$LIBS -lgssapi"
1338 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1339 LIBS="$LIBS -lgssapi"
1342 CPPFLAGS="$save_CPPFLAGS"
1345 dnl -------------------------------------------------
1346 dnl check winssl option before other SSL libraries
1347 dnl -------------------------------------------------
1350 AC_ARG_WITH(winssl,dnl
1351 AC_HELP_STRING([--with-winssl],[enable Windows native SSL/TLS])
1352 AC_HELP_STRING([--without-winssl], [disable Windows native SSL/TLS]),
1353 OPT_WINSSL=$withval)
1355 AC_MSG_CHECKING([whether to enable Windows native SSL/TLS (Windows native builds only)])
1356 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1357 if test "x$OPT_WINSSL" != "xno" &&
1358 test "x$ac_cv_native_windows" = "xyes"; then
1360 AC_DEFINE(USE_SCHANNEL, 1, [to enable Windows native SSL/TLS support])
1361 AC_SUBST(USE_SCHANNEL, [1])
1362 curl_ssl_msg="enabled (Windows-native)"
1364 # --with-winssl implies --enable-sspi
1365 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
1366 AC_SUBST(USE_WINDOWS_SSPI, [1])
1367 curl_sspi_msg="enabled"
1376 AC_ARG_WITH(darwinssl,dnl
1377 AC_HELP_STRING([--with-darwinssl],[enable iOS/Mac OS X native SSL/TLS])
1378 AC_HELP_STRING([--without-darwinssl], [disable iOS/Mac OS X native SSL/TLS]),
1379 OPT_DARWINSSL=$withval)
1381 AC_MSG_CHECKING([whether to enable iOS/Mac OS X native SSL/TLS])
1382 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1383 if test "x$OPT_DARWINSSL" != "xno" &&
1384 test -d "/System/Library/Frameworks/Security.framework"; then
1386 AC_DEFINE(USE_DARWINSSL, 1, [to enable iOS/Mac OS X native SSL/TLS support])
1387 AC_SUBST(USE_DARWINSSL, [1])
1388 curl_ssl_msg="enabled (iOS/Mac OS X-native)"
1390 LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Security"
1398 dnl **********************************************************************
1399 dnl Check for the presence of SSL libraries and headers
1400 dnl **********************************************************************
1402 dnl Default to compiler & linker defaults for SSL files & libraries.
1404 dnl Default to no CA bundle
1407 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])
1408 AC_HELP_STRING([--without-ssl], [disable OpenSSL]),
1411 if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
1412 dnl backup the pre-ssl variables
1413 CLEANLDFLAGS="$LDFLAGS"
1414 CLEANCPPFLAGS="$CPPFLAGS"
1419 dnl --with-ssl (without path) used
1420 if test x$cross_compiling != xyes; then
1421 dnl only do pkg-config magic when not cross-compiling
1424 PREFIX_OPENSSL=/usr/local/ssl
1425 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1428 dnl no --with-ssl option given, just check default places
1429 if test x$cross_compiling != xyes; then
1430 dnl only do pkg-config magic when not cross-compiling
1436 dnl check the given --with-ssl spot
1438 PREFIX_OPENSSL=$OPT_SSL
1440 dnl Try pkg-config even when cross-compiling. Since we
1441 dnl specify PKG_CONFIG_LIBDIR we're only looking where
1442 dnl the user told us to look
1443 OPENSSL_PCDIR="$OPT_SSL/lib/pkgconfig"
1444 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$OPENSSL_PCDIR"])
1445 if test -f "$OPENSSL_PCDIR/openssl.pc"; then
1449 dnl in case pkg-config comes up empty, use what we got
1451 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1452 if test "$PREFIX_OPENSSL" != "/usr" ; then
1453 SSL_LDFLAGS="-L$LIB_OPENSSL"
1454 SSL_CPPFLAGS="-I$PREFIX_OPENSSL/include"
1456 SSL_CPPFLAGS="$SSL_CPPFLAGS -I$PREFIX_OPENSSL/include/openssl"
1460 if test "$PKGTEST" = "yes"; then
1462 CURL_CHECK_PKGCONFIG(openssl, [$OPENSSL_PCDIR])
1464 if test "$PKGCONFIG" != "no" ; then
1465 SSL_LIBS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1466 $PKGCONFIG --libs-only-l openssl 2>/dev/null`
1468 SSL_LDFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1469 $PKGCONFIG --libs-only-L openssl 2>/dev/null`
1471 SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1472 $PKGCONFIG --cflags-only-I openssl 2>/dev/null`
1474 AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"])
1475 AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"])
1476 AC_MSG_NOTICE([pkg-config: SSL_CPPFLAGS: "$SSL_CPPFLAGS"])
1478 LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/-L//g'`
1480 dnl use the values pkg-config reported. This is here
1481 dnl instead of below with CPPFLAGS and LDFLAGS because we only
1482 dnl learn about this via pkg-config. If we only have
1483 dnl the argument to --with-ssl we don't know what
1484 dnl additional libs may be necessary. Hope that we
1486 LIBS="$LIBS $SSL_LIBS"
1490 dnl finally, set flags to use SSL
1491 CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
1492 LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
1494 dnl This is for Msys/Mingw
1496 *-*-msys* | *-*-mingw*)
1497 AC_MSG_CHECKING([for gdi32])
1498 my_ac_save_LIBS=$LIBS
1499 LIBS="-lgdi32 $LIBS"
1500 AC_TRY_LINK([#include <windef.h>
1501 #include <wingdi.h>],
1504 AC_MSG_RESULT([yes])],
1505 [ dnl failed, restore LIBS
1506 LIBS=$my_ac_save_LIBS
1512 AC_CHECK_LIB(crypto, CRYPTO_lock,[
1514 LIBS="-lcrypto $LIBS"
1516 LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL"
1517 CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include"
1518 AC_CHECK_LIB(crypto, CRYPTO_add_lock,[
1520 LIBS="-lcrypto $LIBS"], [
1521 LDFLAGS="$CLEANLDFLAGS"
1522 CPPFLAGS="$CLEANCPPFLAGS"
1528 if test X"$HAVECRYPTO" = X"yes"; then
1529 dnl This is only reasonable to do if crypto actually is there: check for
1530 dnl SSL libs NOTE: it is important to do this AFTER the crypto lib
1532 AC_CHECK_LIB(ssl, SSL_connect)
1534 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1535 dnl we didn't find the SSL lib, try the RSAglue/rsaref stuff
1536 AC_MSG_CHECKING(for ssl with RSAglue/rsaref libs in use);
1538 LIBS="$LIBS -lRSAglue -lrsaref"
1539 AC_CHECK_LIB(ssl, SSL_connect)
1540 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1541 dnl still no SSL_connect
1550 dnl Have the libraries--check for SSLeay/OpenSSL headers
1551 AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
1552 openssl/pem.h openssl/ssl.h openssl/err.h,
1553 curl_ssl_msg="enabled (OpenSSL)"
1555 AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]))
1557 if test $ac_cv_header_openssl_x509_h = no; then
1558 dnl we don't use the "action" part of the AC_CHECK_HEADERS macro
1559 dnl since 'err.h' might in fact find a krb4 header with the same
1561 AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h)
1563 if test $ac_cv_header_x509_h = yes &&
1564 test $ac_cv_header_crypto_h = yes &&
1565 test $ac_cv_header_ssl_h = yes; then
1567 curl_ssl_msg="enabled (OpenSSL)"
1573 if test X"$OPENSSL_ENABLED" = X"1"; then
1574 AC_DEFINE(USE_SSLEAY, 1, [if SSL is enabled])
1576 dnl is there a pkcs12.h header present?
1577 AC_CHECK_HEADERS(openssl/pkcs12.h)
1581 dnl USE_SSLEAY is the historical name for what configure calls
1582 dnl OPENSSL_ENABLED; the names should really be unified
1583 USE_SSLEAY="$OPENSSL_ENABLED"
1584 AC_SUBST(USE_SSLEAY)
1586 if test X"$OPT_SSL" != Xoff &&
1587 test "$OPENSSL_ENABLED" != "1"; then
1588 AC_MSG_ERROR([OpenSSL libs and/or directories were not found where specified!])
1592 if test X"$OPENSSL_ENABLED" = X"1"; then
1593 dnl If the ENGINE library seems to be around, check for the OpenSSL engine
1594 dnl stuff, it is kind of "separated" from the main SSL check
1595 AC_CHECK_FUNC(ENGINE_init,
1597 AC_CHECK_HEADERS(openssl/engine.h)
1598 AC_CHECK_FUNCS( ENGINE_load_builtin_engines )
1601 dnl these can only exist if openssl exists
1602 dnl yassl doesn't have SSL_get_shutdown
1604 AC_CHECK_FUNCS( RAND_status \
1608 CRYPTO_cleanup_all_ex_data \
1610 SSLv2_client_method )
1612 dnl Make an attempt to detect if this is actually yassl's headers and
1613 dnl OpenSSL emulation layer. We still leave everything else believing
1614 dnl and acting like OpenSSL.
1616 AC_MSG_CHECKING([for yaSSL using OpenSSL compatibility mode])
1619 #include <openssl/ssl.h>
1621 #if defined(YASSL_VERSION) && defined(OPENSSL_VERSION_NUMBER)
1622 int dummy = SSL_ERROR_NONE;
1624 Not the yaSSL OpenSSL compatibility header.
1628 AC_MSG_RESULT([yes])
1629 AC_DEFINE_UNQUOTED(USE_YASSLEMUL, 1,
1630 [Define to 1 if using yaSSL in OpenSSL compatibility mode.])
1631 curl_ssl_msg="enabled (OpenSSL emulation by yaSSL)"
1637 if test "$OPENSSL_ENABLED" = "1"; then
1638 if test -n "$LIB_OPENSSL"; then
1639 dnl when the ssl shared libs were found in a path that the run-time
1640 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
1641 dnl to prevent further configure tests to fail due to this
1642 if test "x$cross_compiling" != "xyes"; then
1643 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_OPENSSL"
1644 export LD_LIBRARY_PATH
1645 AC_MSG_NOTICE([Added $LIB_OPENSSL to LD_LIBRARY_PATH])
1648 CURL_CHECK_OPENSSL_API
1653 dnl **********************************************************************
1654 dnl Check for the presence of ZLIB libraries and headers
1655 dnl **********************************************************************
1657 dnl Check for & handle argument to --with-zlib.
1662 AC_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
1663 AC_HELP_STRING([--without-zlib],[disable use of zlib]),
1664 [OPT_ZLIB="$withval"])
1666 if test "$OPT_ZLIB" = "no" ; then
1667 AC_MSG_WARN([zlib disabled])
1669 if test "$OPT_ZLIB" = "yes" ; then
1673 if test -z "$OPT_ZLIB" ; then
1674 dnl check for the lib first without setting any new path, since many
1675 dnl people have it in the default path
1677 AC_CHECK_LIB(z, inflateEnd,
1678 dnl libz found, set the variable
1680 dnl if no lib found, try /usr/local
1681 [OPT_ZLIB="/usr/local"])
1685 dnl Add a nonempty path to the compiler flags
1686 if test -n "$OPT_ZLIB"; then
1687 CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include"
1688 LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff"
1691 AC_CHECK_HEADER(zlib.h,
1693 dnl zlib.h was found
1695 dnl if the lib wasn't found already, try again with the new paths
1696 if test "$HAVE_LIBZ" != "1"; then
1697 AC_CHECK_LIB(z, gzread,
1699 dnl the lib was found!
1702 [ CPPFLAGS=$_cppflags
1707 dnl zlib.h was not found, restore the flags
1712 if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1"
1714 AC_MSG_WARN([configure found only the libz lib, not the header file!])
1716 elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1"
1718 AC_MSG_WARN([configure found only the libz header file, not the lib!])
1719 elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1"
1721 dnl both header and lib were found!
1723 AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file])
1724 AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available])
1726 CURL_LIBS="$CURL_LIBS -lz"
1729 dnl replace 'HAVE_LIBZ' in the automake makefile.ams
1731 AC_MSG_NOTICE([found both libz and libz.h header])
1732 curl_zlib_msg="enabled"
1736 dnl set variable for use in automakefile(s)
1737 AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1)
1739 dnl **********************************************************************
1740 dnl Check for the random seed preferences
1741 dnl **********************************************************************
1743 if test X"$OPENSSL_ENABLED" = X"1"; then
1744 AC_ARG_WITH(egd-socket,
1745 AC_HELP_STRING([--with-egd-socket=FILE],
1746 [Entropy Gathering Daemon socket pathname]),
1747 [ EGD_SOCKET="$withval" ]
1749 if test -n "$EGD_SOCKET" ; then
1750 AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET",
1751 [your Entropy Gathering Daemon socket pathname] )
1754 dnl Check for user-specified random device
1756 AC_HELP_STRING([--with-random=FILE],
1757 [read randomness from FILE (default=/dev/urandom)]),
1758 [ RANDOM_FILE="$withval" ],
1760 if test x$cross_compiling != xyes; then
1761 dnl Check for random device
1762 AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
1764 AC_MSG_WARN([skipped the /dev/urandom detection when cross-compiling])
1768 if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
1769 AC_SUBST(RANDOM_FILE)
1770 AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
1771 [a suitable file to read random data from])
1776 dnl We require OpenSSL with SRP support.
1778 if test "$OPENSSL_ENABLED" = "1"; then
1779 AC_CHECK_LIB(crypto, SRP_Calc_client_key,
1781 AC_DEFINE(HAVE_SSLEAY_SRP, 1, [if you have the function SRP_Calc_client_key])
1782 AC_SUBST(HAVE_SSLEAY_SRP, [1])
1786 dnl ----------------------------------------------------
1787 dnl check for GnuTLS
1788 dnl ----------------------------------------------------
1790 dnl Default to compiler & linker defaults for GnuTLS files & libraries.
1793 AC_ARG_WITH(gnutls,dnl
1794 AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root])
1795 AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]),
1796 OPT_GNUTLS=$withval)
1798 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1800 if test X"$OPT_GNUTLS" != Xno; then
1803 if test "x$OPT_GNUTLS" = "xyes"; then
1804 dnl this is with no partiular path given
1805 CURL_CHECK_PKGCONFIG(gnutls)
1807 if test "$PKGCONFIG" != "no" ; then
1808 addlib=`$PKGCONFIG --libs-only-l gnutls`
1809 addld=`$PKGCONFIG --libs-only-L gnutls`
1810 addcflags=`$PKGCONFIG --cflags-only-I gnutls`
1811 version=`$PKGCONFIG --modversion gnutls`
1812 gtlslib=`echo $addld | $SED -e 's/-L//'`
1814 dnl without pkg-config, we try libgnutls-config as that was how it
1816 check=`libgnutls-config --version 2>/dev/null`
1817 if test -n "$check"; then
1818 addlib=`libgnutls-config --libs`
1819 addcflags=`libgnutls-config --cflags`
1820 version=`libgnutls-config --version`
1821 gtlslib=`libgnutls-config --prefix`/lib$libsuff
1825 dnl this is with a given path, first check if there's a libgnutls-config
1826 dnl there and if not, make an educated guess
1827 cfg=$OPT_GNUTLS/bin/libgnutls-config
1828 check=`$cfg --version 2>/dev/null`
1829 if test -n "$check"; then
1830 addlib=`$cfg --libs`
1831 addcflags=`$cfg --cflags`
1832 version=`$cfg --version`
1833 gtlslib=`$cfg --prefix`/lib$libsuff
1835 dnl without pkg-config and libgnutls-config, we guess a lot!
1837 addld=-L$OPT_GNUTLS/lib$libsuff
1838 addcflags=-I$OPT_GNUTLS/include
1839 version="" # we just don't know
1840 gtlslib=$OPT_GNUTLS/lib$libsuff
1844 if test -z "$version"; then
1845 dnl lots of efforts, still no go
1849 if test -n "$addlib"; then
1852 CLEANCPPFLAGS="$CPPFLAGS"
1853 CLEADLDFLAGS="$LDFLAGS"
1855 LIBS="$LIBS $addlib"
1856 LDFLAGS="$LDFLAGS $addld"
1857 if test "$addcflags" != "-I/usr/include"; then
1858 CPPFLAGS="$CPPFLAGS $addcflags"
1861 AC_CHECK_LIB(gnutls, gnutls_check_version,
1863 AC_DEFINE(USE_GNUTLS, 1, [if GnuTLS is enabled])
1864 AC_SUBST(USE_GNUTLS, [1])
1867 curl_ssl_msg="enabled (GnuTLS)"
1871 CPPFLAGS="$CLEANCPPFLAGS"
1874 if test "x$USE_GNUTLS" = "xyes"; then
1875 AC_MSG_NOTICE([detected GnuTLS version $version])
1877 if test -n "$gtlslib"; then
1878 dnl when shared libs were found in a path that the run-time
1879 dnl linker doesn't search through, we need to add it to
1880 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1882 if test "x$cross_compiling" != "xyes"; then
1883 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlslib"
1884 export LD_LIBRARY_PATH
1885 AC_MSG_NOTICE([Added $gtlslib to LD_LIBRARY_PATH])
1892 fi dnl GNUTLS not disabled
1897 dnl Check which crypto backend GnuTLS uses
1900 if test "$GNUTLS_ENABLED" = "1"; then
1902 # First check if we can detect either crypto library via transitive linking
1903 AC_CHECK_LIB(gnutls, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1904 if test "$USE_GNUTLS_NETTLE" = ""; then
1905 AC_CHECK_LIB(gnutls, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1907 # If not, try linking directly to both of them to see if they are available
1908 if test "$USE_GNUTLS_NETTLE" = ""; then
1909 AC_CHECK_LIB(nettle, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1911 if test "$USE_GNUTLS_NETTLE" = ""; then
1912 AC_CHECK_LIB(gcrypt, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1914 if test "$USE_GNUTLS_NETTLE" = ""; then
1915 AC_MSG_ERROR([GnuTLS found, but neither gcrypt nor nettle found])
1917 if test "$USE_GNUTLS_NETTLE" = "1"; then
1918 AC_DEFINE(USE_GNUTLS_NETTLE, 1, [if GnuTLS uses nettle as crypto backend])
1919 AC_SUBST(USE_GNUTLS_NETTLE, [1])
1920 LIBS="$LIBS -lnettle"
1922 LIBS="$LIBS -lgcrypt"
1927 dnl We require GnuTLS with SRP support.
1929 if test "$GNUTLS_ENABLED" = "1"; then
1930 AC_CHECK_LIB(gnutls, gnutls_srp_verifier,
1932 AC_DEFINE(HAVE_GNUTLS_SRP, 1, [if you have the function gnutls_srp_verifier])
1933 AC_SUBST(HAVE_GNUTLS_SRP, [1])
1937 dnl ----------------------------------------------------
1938 dnl check for PolarSSL
1939 dnl ----------------------------------------------------
1941 dnl Default to compiler & linker defaults for PolarSSL files & libraries.
1946 AC_ARG_WITH(polarssl,dnl
1947 AC_HELP_STRING([--with-polarssl=PATH],[where to look for PolarSSL, PATH points to the installation root])
1948 AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]),
1949 OPT_POLARSSL=$withval)
1951 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1953 if test X"$OPT_POLARSSL" != Xno; then
1955 if test "$OPT_POLARSSL" = "yes"; then
1959 if test -z "$OPT_POLARSSL" ; then
1960 dnl check for lib first without setting any new path
1962 AC_CHECK_LIB(polarssl, havege_init,
1963 dnl libpolarssl found, set the variable
1965 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1966 AC_SUBST(USE_POLARSSL, [1])
1969 curl_ssl_msg="enabled (PolarSSL)"
1973 if test "x$USE_POLARSSL" != "xyes"; then
1974 dnl add the path and test again
1975 addld=-L$OPT_POLARSSL/lib$libsuff
1976 addcflags=-I$OPT_POLARSSL/include
1977 polarssllib=$OPT_POLARSSL/lib$libsuff
1979 LDFLAGS="$LDFLAGS $addld"
1980 if test "$addcflags" != "-I/usr/include"; then
1981 CPPFLAGS="$CPPFLAGS $addcflags"
1984 AC_CHECK_LIB(polarssl, ssl_init,
1986 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1987 AC_SUBST(USE_POLARSSL, [1])
1990 curl_ssl_msg="enabled (PolarSSL)"
1998 if test "x$USE_POLARSSL" = "xyes"; then
1999 AC_MSG_NOTICE([detected PolarSSL])
2001 CURL_LIBS="$CURL_LIBS -lpolarssl"
2002 LIBS="$LIBS -lpolarssl"
2004 if test -n "$polarssllib"; then
2005 dnl when shared libs were found in a path that the run-time
2006 dnl linker doesn't search through, we need to add it to
2007 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2009 if test "x$cross_compiling" != "xyes"; then
2010 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$polarssllib"
2011 export LD_LIBRARY_PATH
2012 AC_MSG_NOTICE([Added $polarssllib to LD_LIBRARY_PATH])
2017 fi dnl PolarSSL not disabled
2021 dnl ----------------------------------------------------
2022 dnl check for CyaSSL
2023 dnl ----------------------------------------------------
2025 dnl Default to compiler & linker defaults for CyaSSL files & libraries.
2030 AC_ARG_WITH(cyassl,dnl
2031 AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to the installation root (default: system lib default)])
2032 AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
2033 OPT_CYASSL=$withval)
2035 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2037 if test X"$OPT_CYASSL" != Xno; then
2039 if test "$OPT_CYASSL" = "yes"; then
2043 if test -z "$OPT_CYASSL" ; then
2044 dnl check for lib in system default first
2046 AC_CHECK_LIB(cyassl, CyaSSL_Init,
2047 dnl libcyassl found, set the variable
2049 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2050 AC_SUBST(USE_CYASSL, [1])
2053 curl_ssl_msg="enabled (CyaSSL)"
2057 if test "x$USE_CYASSL" != "xyes"; then
2058 dnl add the path and test again
2059 addld=-L$OPT_CYASSL/lib$libsuff
2060 addcflags=-I$OPT_CYASSL/include
2061 cyassllib=$OPT_CYASSL/lib$libsuff
2063 LDFLAGS="$LDFLAGS $addld"
2064 if test "$addcflags" != "-I/usr/include"; then
2065 CPPFLAGS="$CPPFLAGS $addcflags"
2068 AC_CHECK_LIB(cyassl, CyaSSL_Init,
2070 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2071 AC_SUBST(USE_CYASSL, [1])
2074 curl_ssl_msg="enabled (CyaSSL)"
2082 if test "x$USE_CYASSL" = "xyes"; then
2083 AC_MSG_NOTICE([detected CyaSSL])
2085 CURL_LIBS="$CURL_LIBS -lcyassl -lm"
2086 LIBS="$LIBS -lcyassl -lm"
2088 if test -n "$cyassllib"; then
2089 dnl when shared libs were found in a path that the run-time
2090 dnl linker doesn't search through, we need to add it to
2091 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2093 if test "x$cross_compiling" != "xyes"; then
2094 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$cyassllib"
2095 export LD_LIBRARY_PATH
2096 AC_MSG_NOTICE([Added $cyassllib to LD_LIBRARY_PATH])
2102 fi dnl CyaSSL not disabled
2106 dnl ----------------------------------------------------
2107 dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
2108 dnl ----------------------------------------------------
2110 dnl Default to compiler & linker defaults for NSS files & libraries.
2114 AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root])
2115 AC_HELP_STRING([--without-nss], [disable NSS detection]),
2118 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2120 if test X"$OPT_NSS" != Xno; then
2121 if test "x$OPT_NSS" = "xyes"; then
2123 CURL_CHECK_PKGCONFIG(nss)
2125 if test "$PKGCONFIG" != "no" ; then
2126 addlib=`$PKGCONFIG --libs nss`
2127 addcflags=`$PKGCONFIG --cflags nss`
2128 version=`$PKGCONFIG --modversion nss`
2129 nssprefix=`$PKGCONFIG --variable=prefix nss`
2131 dnl Without pkg-config, we check for nss-config
2133 check=`nss-config --version 2>/dev/null`
2134 if test -n "$check"; then
2135 addlib=`nss-config --libs`
2136 addcflags=`nss-config --cflags`
2137 version=`nss-config --version`
2138 nssprefix=`nss-config --prefix`
2146 # Without pkg-config, we'll kludge in some defaults
2147 addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
2148 addcflags="-I$OPT_NSS/include"
2153 if test -n "$addlib"; then
2156 CLEANCPPFLAGS="$CPPFLAGS"
2158 LIBS="$LIBS $addlib"
2159 if test "$addcflags" != "-I/usr/include"; then
2160 CPPFLAGS="$CPPFLAGS $addcflags"
2163 dnl The function PK11_CreateGenericObject is needed to load libnsspem.so
2164 AC_CHECK_LIB(nss3, PK11_CreateGenericObject,
2166 AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
2167 AC_SUBST(USE_NSS, [1])
2170 curl_ssl_msg="enabled (NSS)"
2174 CPPFLAGS="$CLEANCPPFLAGS"
2177 if test "x$USE_NSS" = "xyes"; then
2178 AC_MSG_NOTICE([detected NSS version $version])
2180 dnl NSS_InitContext() was introduced in NSS 3.12.5 and helps to prevent
2181 dnl collisions on NSS initialization/shutdown with other libraries
2182 AC_CHECK_FUNC(NSS_InitContext,
2184 AC_DEFINE(HAVE_NSS_INITCONTEXT, 1, [if you have the NSS_InitContext function])
2185 AC_SUBST(HAVE_NSS_INITCONTEXT, [1])
2188 dnl when shared libs were found in a path that the run-time
2189 dnl linker doesn't search through, we need to add it to
2190 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2192 if test "x$cross_compiling" != "xyes"; then
2193 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
2194 export LD_LIBRARY_PATH
2195 AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
2201 fi dnl NSS not disabled
2203 fi dnl curl_ssl_msg = init_ssl_msg
2207 AC_ARG_WITH(axtls,dnl
2208 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.])
2209 AC_HELP_STRING([--without-axtls], [disable axTLS]),
2212 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2213 if test X"$OPT_AXTLS" != Xno; then
2214 dnl backup the pre-axtls variables
2215 CLEANLDFLAGS="$LDFLAGS"
2216 CLEANCPPFLAGS="$CPPFLAGS"
2219 case "$OPT_AXTLS" in
2221 dnl --with-axtls (without path) used
2222 PREFIX_AXTLS=/usr/local
2223 LIB_AXTLS="$PREFIX_AXTLS/lib"
2224 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2225 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2228 dnl no --with-axtls option given, just check default places
2232 dnl check the given --with-axtls spot
2233 PREFIX_AXTLS=$OPT_AXTLS
2234 LIB_AXTLS="$PREFIX_AXTLS/lib"
2235 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2236 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2240 AC_CHECK_LIB(axtls, ssl_version,[
2241 LIBS="-laxtls $LIBS"
2242 AC_DEFINE(USE_AXTLS, 1, [if axTLS is enabled])
2243 AC_SUBST(USE_AXTLS, [1])
2246 curl_ssl_msg="enabled (axTLS)"
2249 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
2250 export LD_LIBRARY_PATH
2251 AC_MSG_NOTICE([Added $LIB_AXTLS to LD_LIBRARY_PATH])
2253 LDFLAGS="$CLEANLDFLAGS"
2254 CPPFLAGS="$CLEANCPPFLAGS"
2260 if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$DARWINSSL_ENABLED" = "x"; then
2261 AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
2262 AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls or --with-winssl to address this.])
2264 # SSL is enabled, genericly
2265 AC_SUBST(SSL_ENABLED)
2269 dnl **********************************************************************
2270 dnl Check for the CA bundle
2271 dnl **********************************************************************
2273 CURL_CHECK_CA_BUNDLE
2275 dnl **********************************************************************
2276 dnl Check for libmetalink
2277 dnl **********************************************************************
2281 AC_ARG_WITH(libmetalink,dnl
2282 AC_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root])
2283 AC_HELP_STRING([--without-libmetalink], [disable libmetalink detection]),
2284 OPT_LIBMETALINK=$withval)
2286 if test X"$OPT_LIBMETALINK" != Xno; then
2294 if test "x$OPT_LIBMETALINK" = "xyes"; then
2295 dnl this is with no partiular path given
2297 CURL_CHECK_PKGCONFIG(libmetalink)
2299 dnl When particular path is given, set PKG_CONFIG_LIBDIR using the path.
2300 LIBMETALINK_PCDIR="$OPT_LIBMETALINK/lib/pkgconfig"
2301 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$LIBMETALINK_PCDIR"])
2302 if test -f "$LIBMETALINK_PCDIR/libmetalink.pc"; then
2305 if test "$PKGTEST" = "yes"; then
2306 CURL_CHECK_PKGCONFIG(libmetalink, [$LIBMETALINK_PCDIR])
2309 if test "$PKGTEST" = "yes" && test "$PKGCONFIG" != "no"; then
2310 addlib=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2311 $PKGCONFIG --libs-only-l libmetalink`
2312 addld=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2313 $PKGCONFIG --libs-only-L libmetalink`
2314 addcflags=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2315 $PKGCONFIG --cflags-only-I libmetalink`
2316 version=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2317 $PKGCONFIG --modversion libmetalink`
2318 libmetalinklib=`echo $addld | $SED -e 's/-L//'`
2320 if test -n "$addlib"; then
2322 clean_CPPFLAGS="$CPPFLAGS"
2323 clean_LDFLAGS="$LDFLAGS"
2325 CPPFLAGS="$addcflags $clean_CPPFLAGS"
2326 LDFLAGS="$addld $clean_LDFLAGS"
2327 LIBS="$addlib $clean_LIBS"
2328 AC_MSG_CHECKING([if libmetalink is recent enough])
2331 # include <metalink/metalink.h>
2333 if(0 != metalink_strerror(0)) /* added in 0.1.0 */
2337 AC_MSG_RESULT([yes ($version)])
2340 AC_MSG_RESULT([no ($version)])
2341 AC_MSG_NOTICE([libmetalink library defective or too old])
2344 CPPFLAGS="$clean_CPPFLAGS"
2345 LDFLAGS="$clean_LDFLAGS"
2347 if test "$want_metalink" = "yes"; then
2348 dnl finally libmetalink will be used
2349 AC_DEFINE(USE_METALINK, 1, [Define to enable metalink support])
2350 LIBMETALINK_LIBS=$addlib
2351 LIBMETALINK_LDFLAGS=$addld
2352 LIBMETALINK_CFLAGS=$addcflags
2353 AC_SUBST([LIBMETALINK_LIBS])
2354 AC_SUBST([LIBMETALINK_LDFLAGS])
2355 AC_SUBST([LIBMETALINK_CFLAGS])
2356 curl_mtlnk_msg="enabled"
2362 dnl **********************************************************************
2363 dnl Check for the presence of LIBSSH2 libraries and headers
2364 dnl **********************************************************************
2366 dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
2368 AC_ARG_WITH(libssh2,dnl
2369 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])
2370 AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
2371 OPT_LIBSSH2=$withval)
2373 if test X"$OPT_LIBSSH2" != Xno; then
2374 dnl backup the pre-libssh2 variables
2375 CLEANLDFLAGS="$LDFLAGS"
2376 CLEANCPPFLAGS="$CPPFLAGS"
2379 case "$OPT_LIBSSH2" in
2381 dnl --with-libssh2 (without path) used
2382 CURL_CHECK_PKGCONFIG(libssh2)
2384 if test "$PKGCONFIG" != "no" ; then
2385 LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2`
2386 LD_SSH2=`$PKGCONFIG --libs-only-L libssh2`
2387 CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2`
2388 version=`$PKGCONFIG --modversion libssh2`
2389 DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'`
2394 dnl no --with-libssh2 option given, just check default places
2397 dnl use the given --with-libssh2 spot
2398 PREFIX_SSH2=$OPT_LIBSSH2
2402 dnl if given with a prefix, we set -L and -I based on that
2403 if test -n "$PREFIX_SSH2"; then
2405 LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff
2406 CPP_SSH2=-I${PREFIX_SSH2}/include
2407 DIR_SSH2=${PREFIX_SSH2}/lib$libsuff
2410 LDFLAGS="$LDFLAGS $LD_SSH2"
2411 CPPFLAGS="$CPPFLAGS $CPP_SSH2"
2412 LIBS="$LIBS $LIB_SSH2"
2414 AC_CHECK_LIB(ssh2, libssh2_channel_open_ex)
2416 AC_CHECK_HEADERS(libssh2.h,
2417 curl_ssh_msg="enabled (libSSH2)"
2419 AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
2420 AC_SUBST(USE_LIBSSH2, [1])
2423 if test X"$OPT_LIBSSH2" != Xoff &&
2424 test "$LIBSSH2_ENABLED" != "1"; then
2425 AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!])
2428 if test "$LIBSSH2_ENABLED" = "1"; then
2429 if test -n "$DIR_SSH2"; then
2430 dnl when the libssh2 shared libs were found in a path that the run-time
2431 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
2432 dnl to prevent further configure tests to fail due to this
2434 dnl libssh2_version is a post 1.0 addition
2435 dnl libssh2_init and libssh2_exit were added in 1.2.5
2436 dnl libssh2_scp_send64 was added in 1.2.6
2437 dnl libssh2_session_handshake was added in 1.2.8
2438 AC_CHECK_FUNCS( libssh2_version libssh2_init libssh2_exit \
2439 libssh2_scp_send64 libssh2_session_handshake)
2440 if test "x$cross_compiling" != "xyes"; then
2441 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
2442 export LD_LIBRARY_PATH
2443 AC_MSG_NOTICE([Added $DIR_SSH2 to LD_LIBRARY_PATH])
2447 dnl no libssh2, revert back to clean variables
2448 LDFLAGS=$CLEANLDFLAGS
2449 CPPFLAGS=$CLEANCPPFLAGS
2454 dnl **********************************************************************
2455 dnl Check for the presence of LIBRTMP libraries and headers
2456 dnl **********************************************************************
2458 dnl Default to compiler & linker defaults for LIBRTMP files & libraries.
2460 AC_ARG_WITH(librtmp,dnl
2461 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])
2462 AC_HELP_STRING([--without-librtmp], [disable LIBRTMP]),
2463 OPT_LIBRTMP=$withval)
2465 if test X"$OPT_LIBRTMP" != Xno; then
2466 dnl backup the pre-librtmp variables
2467 CLEANLDFLAGS="$LDFLAGS"
2468 CLEANCPPFLAGS="$CPPFLAGS"
2471 case "$OPT_LIBRTMP" in
2473 dnl --with-librtmp (without path) used
2474 CURL_CHECK_PKGCONFIG(librtmp)
2476 if test "$PKGCONFIG" != "no" ; then
2477 LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp`
2478 LD_RTMP=`$PKGCONFIG --libs-only-L librtmp`
2479 CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp`
2480 version=`$PKGCONFIG --modversion librtmp`
2481 DIR_RTMP=`echo $LD_RTMP | $SED -e 's/-L//'`
2483 dnl To avoid link errors, we do not allow --librtmp without
2484 dnl a pkgconfig file
2485 AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.])
2490 dnl no --with-librtmp option given, just check default places
2494 dnl use the given --with-librtmp spot
2495 PREFIX_RTMP=$OPT_LIBRTMP
2499 dnl if given with a prefix, we set -L and -I based on that
2500 if test -n "$PREFIX_RTMP"; then
2501 LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff
2502 CPP_RTMP=-I${PREFIX_RTMP}/include
2503 DIR_RTMP=${PREFIX_RTMP}/lib$libsuff
2506 LDFLAGS="$LDFLAGS $LD_RTMP"
2507 CPPFLAGS="$CPPFLAGS $CPP_RTMP"
2508 LIBS="$LIBS $LIB_RTMP"
2510 AC_CHECK_LIB(rtmp, RTMP_Init,
2512 AC_CHECK_HEADERS(librtmp/rtmp.h,
2513 curl_rtmp_msg="enabled (librtmp)"
2515 AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use])
2516 AC_SUBST(USE_LIBRTMP, [1])
2519 dnl not found, revert back to clean variables
2520 LDFLAGS=$CLEANLDFLAGS
2521 CPPFLAGS=$CLEANCPPFLAGS
2525 if test X"$OPT_LIBRTMP" != Xoff &&
2526 test "$LIBRTMP_ENABLED" != "1"; then
2527 AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!])
2532 dnl **********************************************************************
2533 dnl Check for linker switch for versioned symbols
2534 dnl **********************************************************************
2536 versioned_symbols_flavour=
2537 AC_MSG_CHECKING([whether versioned symbols are wanted])
2538 AC_ARG_ENABLE(versioned-symbols,
2539 AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library])
2540 AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]),
2541 [ case "$enableval" in
2542 yes) AC_MSG_RESULT(yes)
2543 AC_MSG_CHECKING([if libraries can be versioned])
2544 GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
2545 if test -z "$GLD"; then
2547 AC_MSG_WARN([You need an ld version supporting the --version-script option])
2550 if test "x$OPENSSL_ENABLED" = "x1"; then
2551 versioned_symbols_flavour="OPENSSL_"
2552 elif test "x$GNUTLS_ENABLED" == "x1"; then
2553 versioned_symbols_flavour="GNUTLS_"
2554 elif test "x$NSS_ENABLED" == "x1"; then
2555 versioned_symbols_flavour="NSS_"
2556 elif test "x$POLARSSL_ENABLED" == "x1"; then
2557 versioned_symbols_flavour="POLARSSL_"
2558 elif test "x$CYASSL_ENABLED" == "x1"; then
2559 versioned_symbols_flavour="CYASSL_"
2560 elif test "x$AXTLS_ENABLED" == "x1"; then
2561 versioned_symbols_flavour="AXTLS_"
2562 elif test "x$WINSSL_ENABLED" == "x1"; then
2563 versioned_symbols_flavour="WINSSL_"
2564 elif test "x$DARWINSSL_ENABLED" == "x1"; then
2565 versioned_symbols_flavour="DARWINSSL_"
2567 versioned_symbols_flavour=""
2569 versioned_symbols="yes"
2573 *) AC_MSG_RESULT(no)
2581 AC_SUBST(VERSIONED_FLAVOUR, ["$versioned_symbols_flavour"])
2582 AM_CONDITIONAL(VERSIONED_SYMBOLS, test "x$versioned_symbols" = "xyes")
2584 dnl -------------------------------------------------
2585 dnl check winidn option before other IDN libraries
2586 dnl -------------------------------------------------
2588 AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)])
2589 OPT_WINIDN="default"
2591 AC_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN])
2592 AC_HELP_STRING([--without-winidn], [disable Windows native IDN]),
2593 OPT_WINIDN=$withval)
2594 case "$OPT_WINIDN" in
2596 dnl --without-winidn option used or configure option not specified
2601 dnl --with-winidn option used without path
2603 want_winidn_path="default"
2604 AC_MSG_RESULT([yes])
2607 dnl --with-winidn option used with path
2609 want_winidn_path="$withval"
2610 AC_MSG_RESULT([yes ($withval)])
2614 if test "$want_winidn" = "yes"; then
2615 dnl winidn library support has been requested
2616 clean_CPPFLAGS="$CPPFLAGS"
2617 clean_LDFLAGS="$LDFLAGS"
2619 WINIDN_LIBS="-lnormaliz"
2621 if test "$want_winidn_path" != "default"; then
2622 dnl path has been specified
2623 dnl pkg-config not available or provides no info
2624 WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff"
2625 WINIDN_CPPFLAGS="-I$want_winidn_path/include"
2626 WINIDN_DIR="$want_winidn_path/lib$libsuff"
2629 CPPFLAGS="$WINIDN_CPPFLAGS $CPPFLAGS"
2630 LDFLAGS="$WINIDN_LDFLAGS $LDFLAGS"
2631 LIBS="$WINIDN_LIBS $LIBS"
2633 AC_MSG_CHECKING([if IdnToUnicode can be linked])
2635 AC_LANG_FUNC_LINK_TRY([IdnToUnicode])
2637 AC_MSG_RESULT([yes])
2638 tst_links_winidn="yes"
2641 tst_links_winidn="no"
2644 if test "$tst_links_winidn" = "yes"; then
2645 AC_DEFINE(USE_WIN32_IDN, 1, [Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz).])
2646 AC_DEFINE(WANT_IDN_PROTOTYPES, 1, [Define to 1 to provide own prototypes.])
2647 AC_SUBST([IDN_ENABLED], [1])
2648 curl_idn_msg="enabled (Windows-native)"
2650 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2651 CPPFLAGS="$clean_CPPFLAGS"
2652 LDFLAGS="$clean_LDFLAGS"
2657 dnl **********************************************************************
2658 dnl Check for the presence of IDN libraries and headers
2659 dnl **********************************************************************
2661 AC_MSG_CHECKING([whether to build with libidn])
2664 AC_HELP_STRING([--with-libidn=PATH],[Enable libidn usage])
2665 AC_HELP_STRING([--without-libidn],[Disable libidn usage]),
2669 dnl --without-libidn option used
2674 dnl configure option not specified
2676 want_idn_path="default"
2677 AC_MSG_RESULT([(assumed) yes])
2680 dnl --with-libidn option used without path
2682 want_idn_path="default"
2683 AC_MSG_RESULT([yes])
2686 dnl --with-libidn option used with path
2688 want_idn_path="$withval"
2689 AC_MSG_RESULT([yes ($withval)])
2693 if test "$want_idn" = "yes"; then
2694 dnl idn library support has been requested
2695 clean_CPPFLAGS="$CPPFLAGS"
2696 clean_LDFLAGS="$LDFLAGS"
2700 if test "$want_idn_path" != "default"; then
2701 dnl path has been specified
2702 IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig"
2703 CURL_CHECK_PKGCONFIG(libidn, [$IDN_PCDIR])
2704 if test "$PKGCONFIG" != "no"; then
2705 IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2706 $PKGCONFIG --libs-only-l libidn 2>/dev/null`
2707 IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2708 $PKGCONFIG --libs-only-L libidn 2>/dev/null`
2709 IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2710 $PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2711 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2713 dnl pkg-config not available or provides no info
2715 IDN_LDFLAGS="-L$want_idn_path/lib$libsuff"
2716 IDN_CPPFLAGS="-I$want_idn_path/include"
2717 IDN_DIR="$want_idn_path/lib$libsuff"
2720 dnl path not specified
2721 CURL_CHECK_PKGCONFIG(libidn)
2722 if test "$PKGCONFIG" != "no"; then
2723 IDN_LIBS=`$PKGCONFIG --libs-only-l libidn 2>/dev/null`
2724 IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn 2>/dev/null`
2725 IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2726 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2728 dnl pkg-config not available or provides no info
2733 if test "$PKGCONFIG" != "no"; then
2734 AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"])
2735 AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"])
2736 AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2737 AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"])
2739 AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"])
2740 AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"])
2741 AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2742 AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"])
2745 CPPFLAGS="$IDN_CPPFLAGS $CPPFLAGS"
2746 LDFLAGS="$IDN_LDFLAGS $LDFLAGS"
2747 LIBS="$IDN_LIBS $LIBS"
2749 AC_MSG_CHECKING([if idna_to_ascii_4i can be linked])
2751 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_4i])
2753 AC_MSG_RESULT([yes])
2754 tst_links_libidn="yes"
2757 tst_links_libidn="no"
2759 if test "$tst_links_libidn" = "no"; then
2760 AC_MSG_CHECKING([if idna_to_ascii_lz can be linked])
2762 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_lz])
2764 AC_MSG_RESULT([yes])
2765 tst_links_libidn="yes"
2768 tst_links_libidn="no"
2772 if test "$tst_links_libidn" = "yes"; then
2773 AC_DEFINE(HAVE_LIBIDN, 1, [Define to 1 if you have the `idn' library (-lidn).])
2774 dnl different versions of libidn have different setups of these:
2775 AC_CHECK_FUNCS( idn_free idna_strerror tld_strerror )
2776 AC_CHECK_HEADERS( idn-free.h tld.h )
2777 if test "x$ac_cv_header_tld_h" = "xyes"; then
2778 AC_SUBST([IDN_ENABLED], [1])
2779 curl_idn_msg="enabled"
2780 if test -n "$IDN_DIR"; then
2781 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
2782 export LD_LIBRARY_PATH
2783 AC_MSG_NOTICE([Added $IDN_DIR to LD_LIBRARY_PATH])
2786 AC_MSG_WARN([Libraries for IDN support too old: IDN disabled])
2787 CPPFLAGS="$clean_CPPFLAGS"
2788 LDFLAGS="$clean_LDFLAGS"
2792 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2793 CPPFLAGS="$clean_CPPFLAGS"
2794 LDFLAGS="$clean_LDFLAGS"
2800 dnl Let's hope this split URL remains working:
2801 dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
2802 dnl genprogc/thread_quick_ref.htm
2805 dnl **********************************************************************
2806 dnl Back to "normal" configuring
2807 dnl **********************************************************************
2809 dnl Checks for header files.
2812 CURL_CHECK_HEADER_MALLOC
2813 CURL_CHECK_HEADER_MEMORY
2815 dnl Now check for the very most basic headers. Then we can use these
2816 dnl ones as default-headers when checking for the rest!
2859 dnl to do if not found
2863 dnl default includes
2865 #ifdef HAVE_SYS_TYPES_H
2866 #include <sys/types.h>
2868 #ifdef HAVE_SYS_TIME_H
2869 #include <sys/time.h>
2871 #ifdef HAVE_SYS_SELECT_H
2872 #include <sys/select.h>
2874 #ifdef HAVE_SYS_SOCKET_H
2875 #include <sys/socket.h>
2877 #ifdef HAVE_NETINET_IN_H
2878 #include <netinet/in.h>
2880 #ifdef HAVE_SYS_UN_H
2886 dnl Checks for typedefs, structures, and compiler characteristics.
2888 CURL_CHECK_VARIADIC_MACROS
2891 CURL_CHECK_STRUCT_TIMEVAL
2892 CURL_VERIFY_RUNTIMELIBS
2894 AC_CHECK_SIZEOF(size_t)
2895 AC_CHECK_SIZEOF(long)
2896 AC_CHECK_SIZEOF(int)
2897 AC_CHECK_SIZEOF(short)
2899 AC_CHECK_SIZEOF(time_t)
2900 AC_CHECK_SIZEOF(off_t)
2903 if test x"$ac_cv_native_windows" != "xyes" &&
2904 test $ac_cv_sizeof_off_t -ne $curl_sizeof_curl_off_t; then
2905 AC_MSG_WARN([This libcurl built is probably not ABI compatible with previous])
2906 AC_MSG_WARN([builds! You MUST read lib/README.curl_off_t to figure it out.])
2911 AC_CHECK_TYPE(long long,
2912 [AC_DEFINE(HAVE_LONGLONG, 1,
2913 [Define to 1 if the compiler supports the 'long long' data type.])]
2917 if test "xyes" = "x$longlong"; then
2918 AC_MSG_CHECKING([if numberLL works])
2922 long long val = 1000LL;
2925 AC_MSG_RESULT([yes])
2926 AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
2934 AC_CHECK_TYPE(ssize_t, ,
2935 AC_DEFINE(ssize_t, int, [the signed version of size_t]))
2937 # check for bool type
2938 AC_CHECK_TYPE([bool],[
2939 AC_DEFINE(HAVE_BOOL_T, 1,
2940 [Define to 1 if bool is an available type.])
2942 #ifdef HAVE_SYS_TYPES_H
2943 #include <sys/types.h>
2945 #ifdef HAVE_STDBOOL_H
2946 #include <stdbool.h>
2950 CURL_CONFIGURE_CURL_SOCKLEN_T
2952 CURL_CONFIGURE_PULL_SYS_POLL
2956 TYPE_SOCKADDR_STORAGE
2962 CURL_CHECK_FUNC_SELECT
2964 CURL_CHECK_FUNC_RECV
2965 CURL_CHECK_FUNC_RECVFROM
2966 CURL_CHECK_FUNC_SEND
2967 CURL_CHECK_MSG_NOSIGNAL
2969 CURL_CHECK_FUNC_ALARM
2970 CURL_CHECK_FUNC_BASENAME
2971 CURL_CHECK_FUNC_CLOSESOCKET
2972 CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
2973 CURL_CHECK_FUNC_CONNECT
2974 CURL_CHECK_FUNC_FCNTL
2975 CURL_CHECK_FUNC_FDOPEN
2976 CURL_CHECK_FUNC_FREEADDRINFO
2977 CURL_CHECK_FUNC_FREEIFADDRS
2978 CURL_CHECK_FUNC_FSETXATTR
2979 CURL_CHECK_FUNC_FTRUNCATE
2980 CURL_CHECK_FUNC_GETADDRINFO
2981 CURL_CHECK_FUNC_GAI_STRERROR
2982 CURL_CHECK_FUNC_GETHOSTBYADDR
2983 CURL_CHECK_FUNC_GETHOSTBYADDR_R
2984 CURL_CHECK_FUNC_GETHOSTBYNAME
2985 CURL_CHECK_FUNC_GETHOSTBYNAME_R
2986 CURL_CHECK_FUNC_GETHOSTNAME
2987 CURL_CHECK_FUNC_GETIFADDRS
2988 CURL_CHECK_FUNC_GETSERVBYPORT_R
2989 CURL_CHECK_FUNC_GMTIME_R
2990 CURL_CHECK_FUNC_INET_NTOA_R
2991 CURL_CHECK_FUNC_INET_NTOP
2992 CURL_CHECK_FUNC_INET_PTON
2993 CURL_CHECK_FUNC_IOCTL
2994 CURL_CHECK_FUNC_IOCTLSOCKET
2995 CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
2996 CURL_CHECK_FUNC_LOCALTIME_R
2997 CURL_CHECK_FUNC_MEMRCHR
2998 CURL_CHECK_FUNC_POLL
2999 CURL_CHECK_FUNC_SETSOCKOPT
3000 CURL_CHECK_FUNC_SIGACTION
3001 CURL_CHECK_FUNC_SIGINTERRUPT
3002 CURL_CHECK_FUNC_SIGNAL
3003 CURL_CHECK_FUNC_SIGSETJMP
3004 CURL_CHECK_FUNC_SOCKET
3005 CURL_CHECK_FUNC_SOCKETPAIR
3006 CURL_CHECK_FUNC_STRCASECMP
3007 CURL_CHECK_FUNC_STRCASESTR
3008 CURL_CHECK_FUNC_STRCMPI
3009 CURL_CHECK_FUNC_STRDUP
3010 CURL_CHECK_FUNC_STRERROR_R
3011 CURL_CHECK_FUNC_STRICMP
3012 CURL_CHECK_FUNC_STRLCAT
3013 CURL_CHECK_FUNC_STRNCASECMP
3014 CURL_CHECK_FUNC_STRNCMPI
3015 CURL_CHECK_FUNC_STRNICMP
3016 CURL_CHECK_FUNC_STRSTR
3017 CURL_CHECK_FUNC_STRTOK_R
3018 CURL_CHECK_FUNC_STRTOLL
3019 CURL_CHECK_FUNC_WRITEV
3025 AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
3029 AC_CHECK_FUNCS([fork \
3048 eval skipcheck=\$skipcheck_$func
3049 if test "x$skipcheck" != "xyes"; then
3050 AC_MSG_CHECKING([deeper for $func])
3057 AC_MSG_RESULT([yes])
3058 eval "ac_cv_func_$func=yes"
3059 AC_DEFINE_UNQUOTED(XC_SH_TR_CPP([HAVE_$func]), [1],
3060 [Define to 1 if you have the $func function.])
3062 AC_MSG_RESULT([but still no])
3067 dnl Check if the getnameinfo function is available
3068 dnl and get the types of five of its arguments.
3069 CURL_CHECK_FUNC_GETNAMEINFO
3071 if test "$ipv6" = "yes"; then
3072 if test "$ac_cv_func_getaddrinfo" = "yes"; then
3073 AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
3075 AC_SUBST(IPV6_ENABLED)
3077 CURL_CHECK_NI_WITHSCOPEID
3080 CURL_CHECK_NONBLOCKING_SOCKET
3082 dnl ************************************************************
3083 dnl nroff tool stuff
3086 AC_PATH_PROG( PERL, perl, ,
3087 $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
3090 AC_PATH_PROGS( NROFF, gnroff nroff, ,
3091 $PATH:/usr/bin/:/usr/local/bin )
3094 if test -n "$NROFF"; then
3095 dnl only check for nroff options if an nroff command was found
3097 AC_MSG_CHECKING([how to use *nroff to get plain text from man pages])
3099 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3100 if test -z "$mancheck"; then
3102 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3103 if test -z "$mancheck"; then
3105 AC_MSG_RESULT([failed])
3106 AC_MSG_WARN([found no *nroff option to get plaintext from man pages])
3108 AC_MSG_RESULT([$MANOPT])
3111 AC_MSG_RESULT([$MANOPT])
3116 if test -z "$MANOPT"
3118 dnl if no nroff tool was found, or no option that could convert man pages
3119 dnl was found, then disable the built-in manual stuff
3120 AC_MSG_WARN([disabling built-in manual])
3124 dnl *************************************************************************
3125 dnl If the manual variable still is set, then we go with providing a built-in
3128 if test "$USE_MANUAL" = "1"; then
3129 AC_DEFINE(USE_MANUAL, 1, [If you want to build curl with the built-in manual])
3130 curl_manual_msg="enabled"
3133 dnl set variable for use in automakefile(s)
3134 AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
3137 AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
3139 if test "x$ac_cv_native_windows" != "xyes" &&
3140 test "x$enable_shared" = "xyes"; then
3141 build_libhostname=yes
3143 build_libhostname=no
3145 AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes)
3147 CURL_CHECK_OPTION_THREADED_RESOLVER
3149 if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
3151 [Options --enable-threaded-resolver and --enable-ares are mutually exclusive])
3154 if test "$want_thres" = "yes"; then
3155 AC_CHECK_HEADER(pthread.h,
3156 [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>])
3157 save_CFLAGS="$CFLAGS"
3158 CFLAGS="$CFLAGS -pthread"
3159 AC_CHECK_LIB(pthread, pthread_create,
3160 [ AC_MSG_NOTICE([using POSIX threaded DNS lookup])
3161 AC_DEFINE(USE_THREADS_POSIX, 1, [if you want POSIX threaded DNS lookup])
3163 curl_res_msg="threaded"
3165 [ CFLAGS="$save_CFLAGS"])
3169 dnl ************************************************************
3170 dnl disable verbose text strings
3172 AC_MSG_CHECKING([whether to enable verbose strings])
3173 AC_ARG_ENABLE(verbose,
3174 AC_HELP_STRING([--enable-verbose],[Enable verbose strings])
3175 AC_HELP_STRING([--disable-verbose],[Disable verbose strings]),
3176 [ case "$enableval" in
3179 AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings])
3180 curl_verbose_msg="no"
3182 *) AC_MSG_RESULT(yes)
3188 dnl ************************************************************
3189 dnl enable SSPI support
3191 AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)])
3193 AC_HELP_STRING([--enable-sspi],[Enable SSPI])
3194 AC_HELP_STRING([--disable-sspi],[Disable SSPI]),
3195 [ case "$enableval" in
3197 if test "$ac_cv_native_windows" = "yes"; then
3199 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
3200 AC_SUBST(USE_WINDOWS_SSPI, [1])
3201 curl_sspi_msg="enabled"
3204 AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.])
3208 if test "x$WINSSL_ENABLED" = "x1"; then
3209 # --with-winssl implies --enable-sspi
3216 if test "x$WINSSL_ENABLED" = "x1"; then
3217 # --with-winssl implies --enable-sspi
3224 dnl ************************************************************
3225 dnl disable cryptographic authentication
3227 AC_MSG_CHECKING([whether to enable cryptographic authentication methods])
3228 AC_ARG_ENABLE(crypto-auth,
3229 AC_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication])
3230 AC_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]),
3231 [ case "$enableval" in
3234 AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication])
3236 *) AC_MSG_RESULT(yes)
3242 CURL_CHECK_OPTION_NTLM_WB
3246 dnl ************************************************************
3247 dnl disable TLS-SRP authentication
3249 AC_MSG_CHECKING([whether to enable TLS-SRP authentication])
3250 AC_ARG_ENABLE(tls-srp,
3251 AC_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication])
3252 AC_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]),
3253 [ case "$enableval" in
3256 AC_DEFINE(CURL_DISABLE_TLS_SRP, 1, [to disable TLS-SRP authentication])
3259 *) AC_MSG_RESULT(yes)
3267 if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_SSLEAY_SRP" = "x1") ; then
3268 AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication])
3270 curl_tls_srp_msg="enabled"
3273 dnl ************************************************************
3274 dnl disable cookies support
3276 AC_MSG_CHECKING([whether to enable support for cookies])
3277 AC_ARG_ENABLE(cookies,
3278 AC_HELP_STRING([--enable-cookies],[Enable cookies support])
3279 AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
3280 [ case "$enableval" in
3283 AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support])
3285 *) AC_MSG_RESULT(yes)
3291 dnl ************************************************************
3292 dnl hiding of library internal symbols
3294 CURL_CONFIGURE_SYMBOL_HIDING
3296 dnl ************************************************************
3297 dnl enforce SONAME bump
3300 AC_MSG_CHECKING([whether to enforce SONAME bump])
3301 AC_ARG_ENABLE(soname-bump,
3302 AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump])
3303 AC_HELP_STRING([--disable-soname-bump],[Disable enforced SONAME bump]),
3304 [ case "$enableval" in
3305 yes) AC_MSG_RESULT(yes)
3312 AC_MSG_RESULT($soname_bump)
3314 AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes)
3317 dnl ************************************************************
3318 if test ! -z "$winsock_LIB"; then
3320 dnl If ws2_32 is wanted, make sure it is the _last_ lib in LIBS (makes
3321 dnl things work when built with c-ares). But we can't just move it last
3322 dnl since then other stuff (SSL) won't build. So we simply append it to the
3325 LIBS="$LIBS $winsock_LIB"
3330 dnl All the library dependencies put into $LIB apply to libcurl only.
3331 dnl Those in $CURL_LIBS apply to the curl command-line client only.
3332 dnl Those in $ALL_LIBS apply to all targets, including test targets.
3336 AC_SUBST(LIBCURL_LIBS)
3338 AC_SUBST(CURL_NETWORK_LIBS)
3339 AC_SUBST(CURL_NETWORK_AND_TIME_LIBS)
3340 LIBS=$ALL_LIBS dnl LIBS is a magic variable that's used for every link
3342 dnl BLANK_AT_MAKETIME might be used in some of our Makefile.am files to
3343 dnl blank LIBS variable used in generated makefile at makefile processing
3344 dnl time. Our test server's Makefile.am uses this to prevent global LIBS
3345 dnl from being used for any test server build target.
3347 AC_SUBST(BLANK_AT_MAKETIME)
3349 AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes)
3352 ENABLE_SHARED="$enable_shared"
3353 AC_SUBST(ENABLE_SHARED)
3356 dnl For keeping supported features and protocols also in pkg-config file
3357 dnl since it is more cross-compile friendly than curl-config
3360 if test "x$USE_SSLEAY" = "x1"; then
3361 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3362 elif test -n "$SSL_ENABLED"; then
3363 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3365 if test "@KRB4_ENABLED@" = "x1"; then
3366 SUPPORT_FEATURES="$SUPPORT_FEATURES KRB4"
3368 if test "x$IPV6_ENABLED" = "x1"; then
3369 SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
3371 if test "x$HAVE_LIBZ" = "x1"; then
3372 SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
3374 if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1"; then
3375 SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
3377 if test "x$IDN_ENABLED" = "x1"; then
3378 SUPPORT_FEATURES="$SUPPORT_FEATURES IDN"
3380 if test "x$USE_WINDOWS_SSPI" = "x1"; then
3381 SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
3383 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3384 if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
3385 -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
3386 -o "x$DARWINSSL_ENABLED" = "x1"; then
3387 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
3388 if test "x$NTLM_WB_ENABLED" = "x1"; then
3389 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
3393 if test "x$USE_TLS_SRP" = "x1"; then
3394 SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
3397 AC_SUBST(SUPPORT_FEATURES)
3399 dnl For supported protocols in pkg-config file
3400 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3401 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
3402 if test "x$SSL_ENABLED" = "x1"; then
3403 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS"
3406 if test "x$CURL_DISABLE_FTP" != "x1"; then
3407 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP"
3408 if test "x$SSL_ENABLED" = "x1"; then
3409 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS"
3412 if test "x$CURL_DISABLE_FILE" != "x1"; then
3413 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE"
3415 if test "x$CURL_DISABLE_TELNET" != "x1"; then
3416 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET"
3418 if test "x$CURL_DISABLE_LDAP" != "x1"; then
3419 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP"
3420 if test "x$CURL_DISABLE_LDAPS" != "x1"; then
3421 if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") ||
3422 (test "x$USE_OPENLDAP" != "x1" && test "x$HAVE_LDAP_SSL" = "x1"); then
3423 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS"
3427 if test "x$CURL_DISABLE_DICT" != "x1"; then
3428 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT"
3430 if test "x$CURL_DISABLE_TFTP" != "x1"; then
3431 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP"
3433 if test "x$CURL_DISABLE_GOPHER" != "x1"; then
3434 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER"
3436 if test "x$CURL_DISABLE_POP3" != "x1"; then
3437 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3"
3438 if test "x$SSL_ENABLED" = "x1"; then
3439 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S"
3442 if test "x$CURL_DISABLE_IMAP" != "x1"; then
3443 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
3444 if test "x$SSL_ENABLED" = "x1"; then
3445 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
3448 if test "x$CURL_DISABLE_SMTP" != "x1"; then
3449 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
3450 if test "x$SSL_ENABLED" = "x1"; then
3451 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS"
3454 if test "x$USE_LIBSSH2" = "x1"; then
3455 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
3456 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
3458 if test "x$CURL_DISABLE_RTSP" != "x1"; then
3459 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
3461 if test "x$USE_LIBRTMP" = "x1"; then
3462 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP"
3465 dnl replace spaces with newlines
3467 dnl replace the newlines back to spaces
3468 SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '`
3470 AC_SUBST(SUPPORT_PROTOCOLS)
3472 dnl squeeze whitespace out of some variables
3481 squeeze LIBCURL_LIBS
3482 squeeze CURL_NETWORK_LIBS
3483 squeeze CURL_NETWORK_AND_TIME_LIBS
3485 squeeze SUPPORT_FEATURES
3486 squeeze SUPPORT_PROTOCOLS
3488 if test "x$want_curldebug_assumed" = "xyes" &&
3489 test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
3490 ac_configure_args="$ac_configure_args --enable-curldebug"
3493 AC_CONFIG_FILES([Makefile \
3495 docs/examples/Makefile \
3496 docs/libcurl/Makefile \
3498 include/curl/Makefile \
3503 tests/data/Makefile \
3504 tests/server/Makefile \
3505 tests/libtest/Makefile \
3506 tests/unit/Makefile \
3508 packages/Win32/Makefile \
3509 packages/Win32/cygwin/Makefile \
3510 packages/Linux/Makefile \
3511 packages/Linux/RPM/Makefile \
3512 packages/Linux/RPM/curl.spec \
3513 packages/Linux/RPM/curl-ssl.spec \
3514 packages/Solaris/Makefile \
3515 packages/EPM/curl.list \
3516 packages/EPM/Makefile \
3517 packages/vms/Makefile \
3518 packages/AIX/Makefile \
3519 packages/AIX/RPM/Makefile \
3520 packages/AIX/RPM/curl.spec \
3526 CURL_GENERATE_CONFIGUREHELP_PM
3528 AC_MSG_NOTICE([Configured to build curl/libcurl:
3530 curl version: ${CURLVERSION}
3532 Install prefix: ${prefix}
3534 SSL support: ${curl_ssl_msg}
3535 SSH support: ${curl_ssh_msg}
3536 zlib support: ${curl_zlib_msg}
3537 krb4 support: ${curl_krb4_msg}
3538 GSSAPI support: ${curl_gss_msg}
3539 SPNEGO support: ${curl_spnego_msg}
3540 TLS-SRP support: ${curl_tls_srp_msg}
3541 resolver: ${curl_res_msg}
3542 ipv6 support: ${curl_ipv6_msg}
3543 IDN support: ${curl_idn_msg}
3544 Build libcurl: Shared=${enable_shared}, Static=${enable_static}
3545 Built-in manual: ${curl_manual_msg}
3546 --libcurl option: ${curl_libcurl_msg}
3547 Verbose errors: ${curl_verbose_msg}
3548 SSPI support: ${curl_sspi_msg}
3549 ca cert bundle: ${ca}
3550 ca cert path: ${capath}
3551 LDAP support: ${curl_ldap_msg}
3552 LDAPS support: ${curl_ldaps_msg}
3553 RTSP support: ${curl_rtsp_msg}
3554 RTMP support: ${curl_rtmp_msg}
3555 metalink support: ${curl_mtlnk_msg}
3556 Protocols: ${SUPPORT_PROTOCOLS}
3559 if test "x$soname_bump" = "xyes"; then
3562 SONAME bump: yes - WARNING: this library will be built with the SONAME
3563 number bumped due to (a detected) ABI breakage.
3564 See lib/README.curl_off_t for details on this.