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)
276 AM_CONDITIONAL(USE_EXPLICIT_LIB_DEPS, test x$REQUIRE_LIB_DEPS = xyes)
278 dnl The install stuff has already been taken care of by the automake stuff
282 dnl check if there's a way to force code inline
285 dnl **********************************************************************
286 dnl platform/compiler/architecture specific checks/flags
287 dnl **********************************************************************
290 CURL_SET_COMPILER_BASIC_OPTS
291 CURL_SET_COMPILER_DEBUG_OPTS
292 CURL_SET_COMPILER_OPTIMIZE_OPTS
293 CURL_SET_COMPILER_WARNING_OPTS
295 if test "$compiler_id" = "INTEL_UNIX_C"; then
297 if test "$compiler_num" -ge "1000"; then
298 dnl icc 10.X or later
299 CFLAGS="$CFLAGS -shared-intel"
300 elif test "$compiler_num" -ge "900"; then
302 CFLAGS="$CFLAGS -i-dynamic"
307 CURL_CHECK_COMPILER_HALT_ON_ERROR
308 CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
309 CURL_CHECK_COMPILER_SYMBOL_HIDING
311 CURL_CHECK_NO_UNDEFINED
312 AM_CONDITIONAL(NO_UNDEFINED, test x$need_no_undefined = xyes)
315 AM_CONDITIONAL(CURLDEBUG, test x$want_curldebug = xyes)
317 supports_unittests=yes
318 # cross-compilation of unit tests static library/programs fails when
319 # libcurl shared library is built. This might be due to a libtool or
320 # automake issue. In this case we disable unit tests.
321 if test "x$cross_compiling" != "xno" &&
322 test "x$enable_shared" != "xno"; then
323 supports_unittests=no
326 # IRIX 6.5.24 gcc 3.3 autobuilds fail unittests library compilation due to
327 # a problem related with OpenSSL headers and library versions not matching.
328 # Disable unit tests while time to further investigate this is found.
331 if test "$compiler_id" = "GNU_C"; then
332 supports_unittests=no
337 # All AIX autobuilds fails unit tests linking against unittests library
338 # due to unittests library being built with no symbols or members. Libtool ?
339 # Disable unit tests while time to further investigate this is found.
342 supports_unittests=no
346 dnl Build unit tests when option --enable-debug is given.
347 if test "x$want_debug" = "xyes" &&
348 test "x$supports_unittests" = "xyes"; then
353 AM_CONDITIONAL(BUILD_UNITTESTS, test x$want_unittests = xyes)
355 dnl **********************************************************************
356 dnl Compilation based checks should not be done before this point.
357 dnl **********************************************************************
359 dnl **********************************************************************
360 dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
361 dnl and ws2tcpip.h take precedence over any other further checks which
362 dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
363 dnl this specific header files. And do them before its results are used.
364 dnl **********************************************************************
366 CURL_CHECK_HEADER_WINDOWS
367 CURL_CHECK_NATIVE_WINDOWS
368 case X-"$ac_cv_native_windows" in
370 CURL_CHECK_HEADER_WINSOCK
371 CURL_CHECK_HEADER_WINSOCK2
372 CURL_CHECK_HEADER_WS2TCPIP
373 CURL_CHECK_HEADER_WINLDAP
374 CURL_CHECK_HEADER_WINBER
377 ac_cv_header_winsock_h="no"
378 ac_cv_header_winsock2_h="no"
379 ac_cv_header_ws2tcpip_h="no"
380 ac_cv_header_winldap_h="no"
381 ac_cv_header_winber_h="no"
384 CURL_CHECK_WIN32_LARGEFILE
386 dnl ************************************************************
387 dnl switch off particular protocols
389 AC_MSG_CHECKING([whether to support http])
391 AC_HELP_STRING([--enable-http],[Enable HTTP support])
392 AC_HELP_STRING([--disable-http],[Disable HTTP support]),
393 [ case "$enableval" in
396 AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP])
397 AC_MSG_WARN([disable HTTP disables FTP over proxy and RTSP])
398 AC_SUBST(CURL_DISABLE_HTTP, [1])
399 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
400 AC_SUBST(CURL_DISABLE_RTSP, [1])
402 *) AC_MSG_RESULT(yes)
407 AC_MSG_CHECKING([whether to support ftp])
409 AC_HELP_STRING([--enable-ftp],[Enable FTP support])
410 AC_HELP_STRING([--disable-ftp],[Disable FTP support]),
411 [ case "$enableval" in
414 AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP])
415 AC_SUBST(CURL_DISABLE_FTP, [1])
417 *) AC_MSG_RESULT(yes)
422 AC_MSG_CHECKING([whether to support file])
424 AC_HELP_STRING([--enable-file],[Enable FILE support])
425 AC_HELP_STRING([--disable-file],[Disable FILE support]),
426 [ case "$enableval" in
429 AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE])
430 AC_SUBST(CURL_DISABLE_FILE, [1])
432 *) AC_MSG_RESULT(yes)
437 AC_MSG_CHECKING([whether to support ldap])
439 AC_HELP_STRING([--enable-ldap],[Enable LDAP support])
440 AC_HELP_STRING([--disable-ldap],[Disable LDAP support]),
441 [ case "$enableval" in
444 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
445 AC_SUBST(CURL_DISABLE_LDAP, [1])
453 AC_MSG_CHECKING([whether to support ldaps])
455 AC_HELP_STRING([--enable-ldaps],[Enable LDAPS support])
456 AC_HELP_STRING([--disable-ldaps],[Disable LDAPS support]),
457 [ case "$enableval" in
460 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
461 AC_SUBST(CURL_DISABLE_LDAPS, [1])
463 *) if test "x$CURL_DISABLE_LDAP" = "x1" ; then
464 AC_MSG_RESULT(LDAP needs to be enabled to support LDAPS)
465 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
466 AC_SUBST(CURL_DISABLE_LDAPS, [1])
469 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
470 AC_SUBST(HAVE_LDAP_SSL, [1])
474 if test "x$CURL_DISABLE_LDAP" = "x1" ; then
476 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
477 AC_SUBST(CURL_DISABLE_LDAPS, [1])
480 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
481 AC_SUBST(HAVE_LDAP_SSL, [1])
485 AC_MSG_CHECKING([whether to support rtsp])
487 AC_HELP_STRING([--enable-rtsp],[Enable RTSP support])
488 AC_HELP_STRING([--disable-rtsp],[Disable RTSP support]),
489 [ case "$enableval" in
492 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
493 AC_SUBST(CURL_DISABLE_RTSP, [1])
495 *) if test x$CURL_DISABLE_HTTP = x1 ; then
496 AC_MSG_ERROR(HTTP support needs to be enabled in order to enable RTSP support!)
499 curl_rtsp_msg="enabled"
503 if test "x$CURL_DISABLE_HTTP" != "x1"; then
505 curl_rtsp_msg="enabled"
511 AC_MSG_CHECKING([whether to support proxies])
513 AC_HELP_STRING([--enable-proxy],[Enable proxy support])
514 AC_HELP_STRING([--disable-proxy],[Disable proxy support]),
515 [ case "$enableval" in
518 AC_DEFINE(CURL_DISABLE_PROXY, 1, [to disable proxies])
519 AC_SUBST(CURL_DISABLE_PROXY, [1])
521 *) AC_MSG_RESULT(yes)
527 AC_MSG_CHECKING([whether to support dict])
529 AC_HELP_STRING([--enable-dict],[Enable DICT support])
530 AC_HELP_STRING([--disable-dict],[Disable DICT support]),
531 [ case "$enableval" in
534 AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT])
535 AC_SUBST(CURL_DISABLE_DICT, [1])
537 *) AC_MSG_RESULT(yes)
542 AC_MSG_CHECKING([whether to support telnet])
543 AC_ARG_ENABLE(telnet,
544 AC_HELP_STRING([--enable-telnet],[Enable TELNET support])
545 AC_HELP_STRING([--disable-telnet],[Disable TELNET support]),
546 [ case "$enableval" in
549 AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
550 AC_SUBST(CURL_DISABLE_TELNET, [1])
552 *) AC_MSG_RESULT(yes)
557 AC_MSG_CHECKING([whether to support tftp])
559 AC_HELP_STRING([--enable-tftp],[Enable TFTP support])
560 AC_HELP_STRING([--disable-tftp],[Disable TFTP support]),
561 [ case "$enableval" in
564 AC_DEFINE(CURL_DISABLE_TFTP, 1, [to disable TFTP])
565 AC_SUBST(CURL_DISABLE_TFTP, [1])
567 *) AC_MSG_RESULT(yes)
573 AC_MSG_CHECKING([whether to support pop3])
575 AC_HELP_STRING([--enable-pop3],[Enable POP3 support])
576 AC_HELP_STRING([--disable-pop3],[Disable POP3 support]),
577 [ case "$enableval" in
580 AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3])
581 AC_SUBST(CURL_DISABLE_POP3, [1])
583 *) AC_MSG_RESULT(yes)
590 AC_MSG_CHECKING([whether to support imap])
592 AC_HELP_STRING([--enable-imap],[Enable IMAP support])
593 AC_HELP_STRING([--disable-imap],[Disable IMAP support]),
594 [ case "$enableval" in
597 AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP])
598 AC_SUBST(CURL_DISABLE_IMAP, [1])
600 *) AC_MSG_RESULT(yes)
607 AC_MSG_CHECKING([whether to support smtp])
609 AC_HELP_STRING([--enable-smtp],[Enable SMTP support])
610 AC_HELP_STRING([--disable-smtp],[Disable SMTP support]),
611 [ case "$enableval" in
614 AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP])
615 AC_SUBST(CURL_DISABLE_SMTP, [1])
617 *) AC_MSG_RESULT(yes)
623 AC_MSG_CHECKING([whether to support gopher])
624 AC_ARG_ENABLE(gopher,
625 AC_HELP_STRING([--enable-gopher],[Enable Gopher support])
626 AC_HELP_STRING([--disable-gopher],[Disable Gopher support]),
627 [ case "$enableval" in
630 AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable Gopher])
631 AC_SUBST(CURL_DISABLE_GOPHER, [1])
633 *) AC_MSG_RESULT(yes)
640 dnl **********************************************************************
641 dnl Check for built-in manual
642 dnl **********************************************************************
644 AC_MSG_CHECKING([whether to provide built-in manual])
645 AC_ARG_ENABLE(manual,
646 AC_HELP_STRING([--enable-manual],[Enable built-in manual])
647 AC_HELP_STRING([--disable-manual],[Disable built-in manual]),
648 [ case "$enableval" in
652 *) AC_MSG_RESULT(yes)
659 dnl The actual use of the USE_MANUAL variable is done much later in this
660 dnl script to allow other actions to disable it as well.
662 dnl ************************************************************
663 dnl disable C code generation support
665 AC_MSG_CHECKING([whether to enable generation of C code])
666 AC_ARG_ENABLE(libcurl_option,
667 AC_HELP_STRING([--enable-libcurl-option],[Enable --libcurl C code generation support])
668 AC_HELP_STRING([--disable-libcurl-option],[Disable --libcurl C code generation support]),
669 [ case "$enableval" in
672 AC_DEFINE(CURL_DISABLE_LIBCURL_OPTION, 1, [to disable --libcurl C code generation option])
673 curl_libcurl_msg="no"
675 *) AC_MSG_RESULT(yes)
681 dnl **********************************************************************
682 dnl Checks for libraries.
683 dnl **********************************************************************
687 dnl gethostbyname without lib or in the nsl lib?
688 AC_CHECK_FUNC(gethostbyname,
689 [HAVE_GETHOSTBYNAME="1"
691 [ AC_CHECK_LIB(nsl, gethostbyname,
692 [HAVE_GETHOSTBYNAME="1"
697 if test "$HAVE_GETHOSTBYNAME" != "1"
699 dnl gethostbyname in the socket lib?
700 AC_CHECK_LIB(socket, gethostbyname,
701 [HAVE_GETHOSTBYNAME="1"
702 LIBS="$LIBS -lsocket"
706 if test "$HAVE_GETHOSTBYNAME" != "1"
708 dnl gethostbyname in the watt lib?
709 AC_CHECK_LIB(watt, gethostbyname,
710 [HAVE_GETHOSTBYNAME="1"
711 CPPFLAGS="-I/dev/env/WATT_ROOT/inc"
712 LDFLAGS="-L/dev/env/WATT_ROOT/lib"
717 dnl At least one system has been identified to require BOTH nsl and socket
718 dnl libs at the same time to link properly.
719 if test "$HAVE_GETHOSTBYNAME" != "1"
721 AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs])
722 my_ac_save_LIBS=$LIBS
723 LIBS="-lnsl -lsocket $LIBS"
731 HAVE_GETHOSTBYNAME="1"
734 LIBS=$my_ac_save_LIBS
738 if test "$HAVE_GETHOSTBYNAME" != "1"
740 dnl This is for winsock systems
741 if test "$ac_cv_header_windows_h" = "yes"; then
742 if test "$ac_cv_header_winsock_h" = "yes"; then
745 winsock_LIB="-lwinsock"
748 winsock_LIB="-lwsock32"
752 if test "$ac_cv_header_winsock2_h" = "yes"; then
753 winsock_LIB="-lws2_32"
755 if test ! -z "$winsock_LIB"; then
756 my_ac_save_LIBS=$LIBS
757 LIBS="$LIBS $winsock_LIB"
758 AC_MSG_CHECKING([for gethostbyname in $winsock_LIB])
761 #ifdef HAVE_WINDOWS_H
762 #ifndef WIN32_LEAN_AND_MEAN
763 #define WIN32_LEAN_AND_MEAN
766 #ifdef HAVE_WINSOCK2_H
767 #include <winsock2.h>
769 #ifdef HAVE_WINSOCK_H
775 gethostbyname("www.dummysite.com");
779 HAVE_GETHOSTBYNAME="1"
783 LIBS=$my_ac_save_LIBS
789 if test "$HAVE_GETHOSTBYNAME" != "1"
791 dnl This is for Minix 3.1
792 AC_MSG_CHECKING([for gethostbyname for Minix 3])
795 /* Older Minix versions may need <net/gen/netdb.h> here instead */
798 gethostbyname("www.dummysite.com");
802 HAVE_GETHOSTBYNAME="1"
808 if test "$HAVE_GETHOSTBYNAME" != "1"
810 dnl This is for eCos with a stubbed DNS implementation
811 AC_MSG_CHECKING([for gethostbyname for eCos])
817 gethostbyname("www.dummysite.com");
821 HAVE_GETHOSTBYNAME="1"
827 if test "$HAVE_GETHOSTBYNAME" != "1"
829 dnl gethostbyname in the network lib - for Haiku OS
830 AC_CHECK_LIB(network, gethostbyname,
831 [HAVE_GETHOSTBYNAME="1"
832 LIBS="$LIBS -lnetwork"
836 if test "$HAVE_GETHOSTBYNAME" != "1"
838 dnl gethostbyname in the net lib - for BeOS
839 AC_CHECK_LIB(net, gethostbyname,
840 [HAVE_GETHOSTBYNAME="1"
846 if test "$HAVE_GETHOSTBYNAME" != "1"; then
847 AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
851 AC_CHECK_FUNC(strcasecmp, , [ AC_CHECK_LIB(resolve, strcasecmp) ])
853 if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
854 AC_CHECK_LIB(resolve, strcasecmp,
855 [LIBS="-lresolve $LIBS"],
859 ac_cv_func_strcasecmp="no"
861 CURL_CHECK_LIBS_CONNECT
863 CURL_NETWORK_LIBS=$LIBS
865 dnl **********************************************************************
866 dnl In case that function clock_gettime with monotonic timer is available,
867 dnl check for additional required libraries.
868 dnl **********************************************************************
869 CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
871 dnl **********************************************************************
872 dnl The preceding library checks are all potentially useful for test
873 dnl servers and libtest cases which require networking and clock_gettime
874 dnl support. Save the list of required libraries at this point for use
875 dnl while linking those test servers and programs.
876 dnl **********************************************************************
877 CURL_NETWORK_AND_TIME_LIBS=$LIBS
879 dnl **********************************************************************
880 AC_MSG_CHECKING([whether to use libgcc])
881 AC_ARG_ENABLE(libgcc,
882 AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
883 [ case "$enableval" in
885 ALL_LIBS="$ALL_LIBS -lgcc"
894 dnl **********************************************************************
896 dnl **********************************************************************
899 AC_ARG_WITH(ldap-lib,
900 AC_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]),
901 [LDAPLIBNAME="$withval"])
904 AC_ARG_WITH(lber-lib,
905 AC_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]),
906 [LBERLIBNAME="$withval"])
908 if test x$CURL_DISABLE_LDAP != x1 ; then
910 CURL_CHECK_HEADER_LBER
911 CURL_CHECK_HEADER_LDAP
912 CURL_CHECK_HEADER_LDAPSSL
913 CURL_CHECK_HEADER_LDAP_SSL
915 if test -z "$LDAPLIBNAME" ; then
916 if test "$ac_cv_native_windows" = "yes"; then
917 dnl Windows uses a single and unique LDAP library name
918 LDAPLIBNAME="wldap32"
923 if test "$LDAPLIBNAME" ; then
924 AC_CHECK_LIB("$LDAPLIBNAME", ldap_init,, [
925 AC_MSG_WARN(["$LDAPLIBNAME" is not an LDAP library: LDAP disabled])
926 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
927 AC_SUBST(CURL_DISABLE_LDAP, [1])
928 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
929 AC_SUBST(CURL_DISABLE_LDAPS, [1])])
931 dnl Try to find the right ldap libraries for this system
933 case X-"$curl_cv_ldap_LIBS" in
935 AC_MSG_WARN([Cannot find libraries for LDAP support: LDAP disabled])
936 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
937 AC_SUBST(CURL_DISABLE_LDAP, [1])
938 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
939 AC_SUBST(CURL_DISABLE_LDAPS, [1])
945 if test x$CURL_DISABLE_LDAP != x1 ; then
947 if test "$LBERLIBNAME" ; then
948 dnl If name is "no" then don't define this library at all
949 dnl (it's only needed if libldap.so's dependencies are broken).
950 if test "$LBERLIBNAME" != "no" ; then
951 AC_CHECK_LIB("$LBERLIBNAME", ber_free,, [
952 AC_MSG_WARN(["$LBERLIBNAME" is not an LBER library: LDAP disabled])
953 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
954 AC_SUBST(CURL_DISABLE_LDAP, [1])
955 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
956 AC_SUBST(CURL_DISABLE_LDAPS, [1])])
961 if test x$CURL_DISABLE_LDAP != x1 ; then
962 AC_CHECK_FUNCS([ldap_url_parse ldap_init_fd])
964 if test "$LDAPLIBNAME" = "wldap32"; then
965 curl_ldap_msg="enabled (winldap)"
966 AC_DEFINE(CURL_LDAP_WIN, 1, [Use Windows LDAP implementation])
968 curl_ldap_msg="enabled (OpenLDAP)"
969 if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then
970 AC_DEFINE(USE_OPENLDAP, 1, [Use OpenLDAP-specific code])
971 AC_SUBST(USE_OPENLDAP, [1])
976 if test x$CURL_DISABLE_LDAPS != x1 ; then
977 curl_ldaps_msg="enabled"
980 dnl **********************************************************************
982 dnl **********************************************************************
984 AC_MSG_CHECKING([whether to enable ipv6])
986 AC_HELP_STRING([--enable-ipv6],[Enable ipv6 (with ipv4) support])
987 AC_HELP_STRING([--disable-ipv6],[Disable ipv6 support]),
988 [ case "$enableval" in
993 *) AC_MSG_RESULT(yes)
998 AC_TRY_RUN([ /* is AF_INET6 available? */
999 #include <sys/types.h>
1000 #include <sys/socket.h>
1003 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1017 if test "$ipv6" = "yes"; then
1018 curl_ipv6_msg="enabled"
1021 # Check if struct sockaddr_in6 have sin6_scope_id member
1022 if test "$ipv6" = yes; then
1023 AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member])
1025 #include <sys/types.h>
1026 #include <netinet/in.h>] ,
1027 struct sockaddr_in6 s; s.sin6_scope_id = 0; , have_sin6_scope_id=yes)
1028 if test "$have_sin6_scope_id" = yes; then
1029 AC_MSG_RESULT([yes])
1030 AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member])
1036 dnl **********************************************************************
1037 dnl Check if the operating system allows programs to write to their own argv[]
1038 dnl **********************************************************************
1040 AC_MSG_CHECKING([if argv can be written to])
1043 int main(int argc, char ** argv) {
1045 return (argv[0][0] == ' ')?0:1;
1049 curl_cv_writable_argv=yes
1051 curl_cv_writable_argv=no
1053 curl_cv_writable_argv=cross
1055 case $curl_cv_writable_argv in
1057 AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv])
1065 AC_MSG_WARN([the previous check could not be made default was used])
1069 dnl **********************************************************************
1070 dnl Check for the presence of Kerberos4 libraries and headers
1071 dnl **********************************************************************
1073 AC_ARG_WITH(krb4-includes,
1074 AC_HELP_STRING([--with-krb4-includes=DIR],
1075 [Specify location of kerberos4 headers]),[
1076 CPPFLAGS="$CPPFLAGS -I$withval"
1081 AC_ARG_WITH(krb4-libs,
1082 AC_HELP_STRING([--with-krb4-libs=DIR],[Specify location of kerberos4 libs]),[
1083 LDFLAGS="$LDFLAGS -L$withval"
1090 AC_ARG_WITH(krb4,dnl
1091 AC_HELP_STRING([--with-krb4=DIR],[where to look for Kerberos4]),[
1093 if test X"$OPT_KRB4" != Xno; then
1095 if test X"$OPT_KRB4" != Xyes; then
1096 LDFLAGS="$LDFLAGS -L$OPT_KRB4/lib$libsuff"
1097 KRB4LIB="$OPT_KRB4/lib$libsuff"
1098 CPPFLAGS="$CPPFLAGS -I$OPT_KRB4/include"
1099 KRB4INC="$OPT_KRB4/include"
1104 AC_MSG_CHECKING([if Kerberos4 support is requested])
1106 if test "$want_krb4" = yes
1108 if test "$ipv6" = "yes"; then
1109 echo krb4 is not compatible with IPv6
1114 dnl Check for & handle argument to --with-krb4
1116 AC_MSG_CHECKING(where to look for Kerberos4)
1117 if test X"$OPT_KRB4" = Xyes
1119 AC_MSG_RESULT([defaults])
1121 AC_MSG_RESULT([libs in $KRB4LIB, headers in $KRB4INC])
1124 dnl Check for DES library
1125 AC_CHECK_LIB(des, des_pcbc_encrypt,
1127 AC_CHECK_HEADERS(des.h)
1130 AC_CHECK_FUNC(res_search, , [AC_CHECK_LIB(resolv, res_search)])
1132 dnl Check for the Kerberos4 library
1133 AC_CHECK_LIB(krb, krb_net_read,
1135 dnl Check for header files
1136 AC_CHECK_HEADERS(krb.h)
1138 dnl we found the required libraries, add to LIBS
1139 LIBS="-lkrb -lcom_err -ldes $LIBS"
1141 dnl Check for function krb_get_our_ip_for_realm
1142 dnl this is needed for NAT networks
1143 AC_CHECK_FUNCS(krb_get_our_ip_for_realm)
1146 AC_DEFINE(HAVE_KRB4, 1,
1147 [if you have the Kerberos4 libraries (including -ldes)])
1149 dnl substitute it too!
1151 AC_SUBST(KRB4_ENABLED)
1153 curl_krb4_msg="enabled"
1155 dnl the krb4 stuff needs a strlcpy()
1156 AC_CHECK_FUNCS(strlcpy)
1164 dnl **********************************************************************
1165 dnl Check for FBopenssl(SPNEGO) libraries
1166 dnl **********************************************************************
1169 AC_HELP_STRING([--with-spnego=DIR],
1170 [Specify location of SPNEGO library fbopenssl]), [
1171 SPNEGO_ROOT="$withval"
1172 if test x"$SPNEGO_ROOT" != xno; then
1177 AC_MSG_CHECKING([if SPNEGO support is requested])
1178 if test x"$want_spnego" = xyes; then
1180 if test X"$SPNEGO_ROOT" = Xyes; then
1181 AC_MSG_ERROR([FBOpenSSL libs and/or directories were not found where specified!])
1184 if test -z "$SPNEGO_LIB_DIR"; then
1185 LDFLAGS="$LDFLAGS -L$SPNEGO_ROOT -lfbopenssl"
1187 LDFLAGS="$LDFLAGS $SPNEGO_LIB_DIR"
1191 AC_DEFINE(HAVE_SPNEGO, 1,
1192 [Define this if you have the SPNEGO library fbopenssl])
1193 curl_spnego_msg="enabled"
1199 dnl **********************************************************************
1200 dnl Check for GSS-API libraries
1201 dnl **********************************************************************
1203 dnl check for gss stuff in the /usr as default
1206 AC_ARG_WITH(gssapi-includes,
1207 AC_HELP_STRING([--with-gssapi-includes=DIR],
1208 [Specify location of GSSAPI header]),
1209 [ GSSAPI_INCS="-I$withval"
1213 AC_ARG_WITH(gssapi-libs,
1214 AC_HELP_STRING([--with-gssapi-libs=DIR],
1215 [Specify location of GSSAPI libs]),
1216 [ GSSAPI_LIB_DIR="-L$withval"
1221 AC_HELP_STRING([--with-gssapi=DIR],
1222 [Where to look for GSSAPI]), [
1223 GSSAPI_ROOT="$withval"
1224 if test x"$GSSAPI_ROOT" != xno; then
1226 if test x"$GSSAPI_ROOT" = xyes; then
1227 dnl if yes, then use default root
1233 save_CPPFLAGS="$CPPFLAGS"
1234 AC_MSG_CHECKING([if GSSAPI support is requested])
1235 if test x"$want_gss" = xyes; then
1238 if test -z "$GSSAPI_INCS"; then
1239 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1240 GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
1241 elif test "$GSSAPI_ROOT" != "yes"; then
1242 GSSAPI_INCS="-I$GSSAPI_ROOT/include"
1246 CPPFLAGS="$CPPFLAGS $GSSAPI_INCS"
1248 AC_CHECK_HEADER(gss.h,
1250 dnl found in the given dirs
1251 AC_DEFINE(HAVE_GSSGNU, 1, [if you have the GNU gssapi libraries])
1255 dnl not found, check Heimdal or MIT
1256 AC_CHECK_HEADERS([gssapi/gssapi.h], [], [not_mit=1])
1258 [gssapi/gssapi_generic.h gssapi/gssapi_krb5.h],
1263 #ifdef HAVE_GSSAPI_GSSAPI_H
1264 #include <gssapi/gssapi.h>
1267 if test "x$not_mit" = "x1"; then
1268 dnl MIT not found, check for Heimdal
1269 AC_CHECK_HEADER(gssapi.h,
1272 AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have the Heimdal gssapi libraries])
1275 dnl no header found, disabling GSS
1277 AC_MSG_WARN(disabling GSSAPI since no header files was found)
1282 AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
1283 dnl check if we have a really old MIT kerberos (<= 1.2)
1284 AC_MSG_CHECKING([if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE])
1287 #include <gssapi/gssapi.h>
1288 #include <gssapi/gssapi_generic.h>
1289 #include <gssapi/gssapi_krb5.h>
1294 GSS_C_NT_HOSTBASED_SERVICE,
1298 AC_MSG_RESULT([yes])
1301 AC_DEFINE(HAVE_OLD_GSSMIT, 1,
1302 [if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE])
1310 if test x"$want_gss" = xyes; then
1311 AC_DEFINE(HAVE_GSSAPI, 1, [if you have the gssapi libraries])
1313 curl_gss_msg="enabled (MIT/Heimdal)"
1315 if test -n "$gnu_gss"; then
1316 curl_gss_msg="enabled (GNU GSS)"
1317 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1319 elif test -z "$GSSAPI_LIB_DIR"; then
1322 LIBS="$LIBS -lgssapi_krb5 -lresolv"
1325 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1326 dnl krb5-config doesn't have --libs-only-L or similar, put everything
1328 gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
1329 LIBS="$LIBS $gss_libs"
1330 elif test "$GSSAPI_ROOT" != "yes"; then
1331 LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
1332 LIBS="$LIBS -lgssapi"
1334 LIBS="$LIBS -lgssapi"
1339 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1340 LIBS="$LIBS -lgssapi"
1343 CPPFLAGS="$save_CPPFLAGS"
1346 dnl -------------------------------------------------
1347 dnl check winssl option before other SSL libraries
1348 dnl -------------------------------------------------
1351 AC_ARG_WITH(winssl,dnl
1352 AC_HELP_STRING([--with-winssl],[enable Windows native SSL/TLS])
1353 AC_HELP_STRING([--without-winssl], [disable Windows native SSL/TLS]),
1354 OPT_WINSSL=$withval)
1356 AC_MSG_CHECKING([whether to enable Windows native SSL/TLS (Windows native builds only)])
1357 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1358 if test "x$OPT_WINSSL" != "xno" &&
1359 test "x$ac_cv_native_windows" = "xyes"; then
1361 AC_DEFINE(USE_SCHANNEL, 1, [to enable Windows native SSL/TLS support])
1362 AC_SUBST(USE_SCHANNEL, [1])
1363 curl_ssl_msg="enabled (Windows-native)"
1365 # --with-winssl implies --enable-sspi
1366 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
1367 AC_SUBST(USE_WINDOWS_SSPI, [1])
1368 curl_sspi_msg="enabled"
1377 AC_ARG_WITH(darwinssl,dnl
1378 AC_HELP_STRING([--with-darwinssl],[enable iOS/Mac OS X native SSL/TLS])
1379 AC_HELP_STRING([--without-darwinssl], [disable iOS/Mac OS X native SSL/TLS]),
1380 OPT_DARWINSSL=$withval)
1382 AC_MSG_CHECKING([whether to enable iOS/Mac OS X native SSL/TLS])
1383 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1384 if test "x$OPT_DARWINSSL" != "xno" &&
1385 test -d "/System/Library/Frameworks/Security.framework"; then
1387 AC_DEFINE(USE_DARWINSSL, 1, [to enable iOS/Mac OS X native SSL/TLS support])
1388 AC_SUBST(USE_DARWINSSL, [1])
1389 curl_ssl_msg="enabled (iOS/Mac OS X-native)"
1391 LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Security"
1399 dnl **********************************************************************
1400 dnl Check for the presence of SSL libraries and headers
1401 dnl **********************************************************************
1403 dnl Default to compiler & linker defaults for SSL files & libraries.
1405 dnl Default to no CA bundle
1408 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])
1409 AC_HELP_STRING([--without-ssl], [disable OpenSSL]),
1412 if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
1413 dnl backup the pre-ssl variables
1414 CLEANLDFLAGS="$LDFLAGS"
1415 CLEANCPPFLAGS="$CPPFLAGS"
1420 dnl --with-ssl (without path) used
1421 if test x$cross_compiling != xyes; then
1422 dnl only do pkg-config magic when not cross-compiling
1425 PREFIX_OPENSSL=/usr/local/ssl
1426 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1429 dnl no --with-ssl option given, just check default places
1430 if test x$cross_compiling != xyes; then
1431 dnl only do pkg-config magic when not cross-compiling
1437 dnl check the given --with-ssl spot
1439 PREFIX_OPENSSL=$OPT_SSL
1441 dnl Try pkg-config even when cross-compiling. Since we
1442 dnl specify PKG_CONFIG_LIBDIR we're only looking where
1443 dnl the user told us to look
1444 OPENSSL_PCDIR="$OPT_SSL/lib/pkgconfig"
1445 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$OPENSSL_PCDIR"])
1446 if test -f "$OPENSSL_PCDIR/openssl.pc"; then
1450 dnl in case pkg-config comes up empty, use what we got
1452 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1453 if test "$PREFIX_OPENSSL" != "/usr" ; then
1454 SSL_LDFLAGS="-L$LIB_OPENSSL"
1455 SSL_CPPFLAGS="-I$PREFIX_OPENSSL/include"
1457 SSL_CPPFLAGS="$SSL_CPPFLAGS -I$PREFIX_OPENSSL/include/openssl"
1461 if test "$PKGTEST" = "yes"; then
1463 CURL_CHECK_PKGCONFIG(openssl, [$OPENSSL_PCDIR])
1465 if test "$PKGCONFIG" != "no" ; then
1466 SSL_LIBS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1467 $PKGCONFIG --libs-only-l openssl 2>/dev/null`
1469 SSL_LDFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1470 $PKGCONFIG --libs-only-L openssl 2>/dev/null`
1472 SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1473 $PKGCONFIG --cflags-only-I openssl 2>/dev/null`
1475 AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"])
1476 AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"])
1477 AC_MSG_NOTICE([pkg-config: SSL_CPPFLAGS: "$SSL_CPPFLAGS"])
1479 LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/-L//g'`
1481 dnl use the values pkg-config reported. This is here
1482 dnl instead of below with CPPFLAGS and LDFLAGS because we only
1483 dnl learn about this via pkg-config. If we only have
1484 dnl the argument to --with-ssl we don't know what
1485 dnl additional libs may be necessary. Hope that we
1487 LIBS="$LIBS $SSL_LIBS"
1491 dnl finally, set flags to use SSL
1492 CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
1493 LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
1495 dnl This is for Msys/Mingw
1497 *-*-msys* | *-*-mingw*)
1498 AC_MSG_CHECKING([for gdi32])
1499 my_ac_save_LIBS=$LIBS
1500 LIBS="-lgdi32 $LIBS"
1501 AC_TRY_LINK([#include <windef.h>
1502 #include <wingdi.h>],
1505 AC_MSG_RESULT([yes])],
1506 [ dnl failed, restore LIBS
1507 LIBS=$my_ac_save_LIBS
1513 AC_CHECK_LIB(crypto, CRYPTO_lock,[
1515 LIBS="-lcrypto $LIBS"
1517 LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL"
1518 CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include"
1519 AC_CHECK_LIB(crypto, CRYPTO_add_lock,[
1521 LIBS="-lcrypto $LIBS"], [
1522 LDFLAGS="$CLEANLDFLAGS"
1523 CPPFLAGS="$CLEANCPPFLAGS"
1529 if test X"$HAVECRYPTO" = X"yes"; then
1530 dnl This is only reasonable to do if crypto actually is there: check for
1531 dnl SSL libs NOTE: it is important to do this AFTER the crypto lib
1533 AC_CHECK_LIB(ssl, SSL_connect)
1535 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1536 dnl we didn't find the SSL lib, try the RSAglue/rsaref stuff
1537 AC_MSG_CHECKING(for ssl with RSAglue/rsaref libs in use);
1539 LIBS="$LIBS -lRSAglue -lrsaref"
1540 AC_CHECK_LIB(ssl, SSL_connect)
1541 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1542 dnl still no SSL_connect
1551 dnl Have the libraries--check for SSLeay/OpenSSL headers
1552 AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
1553 openssl/pem.h openssl/ssl.h openssl/err.h,
1554 curl_ssl_msg="enabled (OpenSSL)"
1556 AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]))
1558 if test $ac_cv_header_openssl_x509_h = no; then
1559 dnl we don't use the "action" part of the AC_CHECK_HEADERS macro
1560 dnl since 'err.h' might in fact find a krb4 header with the same
1562 AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h)
1564 if test $ac_cv_header_x509_h = yes &&
1565 test $ac_cv_header_crypto_h = yes &&
1566 test $ac_cv_header_ssl_h = yes; then
1568 curl_ssl_msg="enabled (OpenSSL)"
1574 if test X"$OPENSSL_ENABLED" = X"1"; then
1575 AC_DEFINE(USE_SSLEAY, 1, [if SSL is enabled])
1577 dnl is there a pkcs12.h header present?
1578 AC_CHECK_HEADERS(openssl/pkcs12.h)
1582 dnl USE_SSLEAY is the historical name for what configure calls
1583 dnl OPENSSL_ENABLED; the names should really be unified
1584 USE_SSLEAY="$OPENSSL_ENABLED"
1585 AC_SUBST(USE_SSLEAY)
1587 if test X"$OPT_SSL" != Xoff &&
1588 test "$OPENSSL_ENABLED" != "1"; then
1589 AC_MSG_ERROR([OpenSSL libs and/or directories were not found where specified!])
1593 if test X"$OPENSSL_ENABLED" = X"1"; then
1594 dnl If the ENGINE library seems to be around, check for the OpenSSL engine
1595 dnl stuff, it is kind of "separated" from the main SSL check
1596 AC_CHECK_FUNC(ENGINE_init,
1598 AC_CHECK_HEADERS(openssl/engine.h)
1599 AC_CHECK_FUNCS( ENGINE_load_builtin_engines )
1602 dnl these can only exist if openssl exists
1603 dnl yassl doesn't have SSL_get_shutdown
1605 AC_CHECK_FUNCS( RAND_status \
1609 CRYPTO_cleanup_all_ex_data \
1611 SSLv2_client_method )
1613 dnl Make an attempt to detect if this is actually yassl's headers and
1614 dnl OpenSSL emulation layer. We still leave everything else believing
1615 dnl and acting like OpenSSL.
1617 AC_MSG_CHECKING([for yaSSL using OpenSSL compatibility mode])
1620 #include <openssl/ssl.h>
1622 #if defined(YASSL_VERSION) && defined(OPENSSL_VERSION_NUMBER)
1623 int dummy = SSL_ERROR_NONE;
1625 Not the yaSSL OpenSSL compatibility header.
1629 AC_MSG_RESULT([yes])
1630 AC_DEFINE_UNQUOTED(USE_YASSLEMUL, 1,
1631 [Define to 1 if using yaSSL in OpenSSL compatibility mode.])
1632 curl_ssl_msg="enabled (OpenSSL emulation by yaSSL)"
1638 if test "$OPENSSL_ENABLED" = "1"; then
1639 if test -n "$LIB_OPENSSL"; then
1640 dnl when the ssl shared libs were found in a path that the run-time
1641 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
1642 dnl to prevent further configure tests to fail due to this
1643 if test "x$cross_compiling" != "xyes"; then
1644 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_OPENSSL"
1645 export LD_LIBRARY_PATH
1646 AC_MSG_NOTICE([Added $LIB_OPENSSL to LD_LIBRARY_PATH])
1649 CURL_CHECK_OPENSSL_API
1654 dnl **********************************************************************
1655 dnl Check for the presence of ZLIB libraries and headers
1656 dnl **********************************************************************
1658 dnl Check for & handle argument to --with-zlib.
1663 AC_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
1664 AC_HELP_STRING([--without-zlib],[disable use of zlib]),
1665 [OPT_ZLIB="$withval"])
1667 if test "$OPT_ZLIB" = "no" ; then
1668 AC_MSG_WARN([zlib disabled])
1670 if test "$OPT_ZLIB" = "yes" ; then
1674 if test -z "$OPT_ZLIB" ; then
1675 dnl check for the lib first without setting any new path, since many
1676 dnl people have it in the default path
1678 AC_CHECK_LIB(z, inflateEnd,
1679 dnl libz found, set the variable
1681 dnl if no lib found, try /usr/local
1682 [OPT_ZLIB="/usr/local"])
1686 dnl Add a nonempty path to the compiler flags
1687 if test -n "$OPT_ZLIB"; then
1688 CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include"
1689 LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff"
1692 AC_CHECK_HEADER(zlib.h,
1694 dnl zlib.h was found
1696 dnl if the lib wasn't found already, try again with the new paths
1697 if test "$HAVE_LIBZ" != "1"; then
1698 AC_CHECK_LIB(z, gzread,
1700 dnl the lib was found!
1703 [ CPPFLAGS=$_cppflags
1708 dnl zlib.h was not found, restore the flags
1713 if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1"
1715 AC_MSG_WARN([configure found only the libz lib, not the header file!])
1717 elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1"
1719 AC_MSG_WARN([configure found only the libz header file, not the lib!])
1720 elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1"
1722 dnl both header and lib were found!
1724 AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file])
1725 AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available])
1727 CURL_LIBS="$CURL_LIBS -lz"
1730 dnl replace 'HAVE_LIBZ' in the automake makefile.ams
1732 AC_MSG_NOTICE([found both libz and libz.h header])
1733 curl_zlib_msg="enabled"
1737 dnl set variable for use in automakefile(s)
1738 AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1)
1740 dnl **********************************************************************
1741 dnl Check for the random seed preferences
1742 dnl **********************************************************************
1744 if test X"$OPENSSL_ENABLED" = X"1"; then
1745 AC_ARG_WITH(egd-socket,
1746 AC_HELP_STRING([--with-egd-socket=FILE],
1747 [Entropy Gathering Daemon socket pathname]),
1748 [ EGD_SOCKET="$withval" ]
1750 if test -n "$EGD_SOCKET" ; then
1751 AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET",
1752 [your Entropy Gathering Daemon socket pathname] )
1755 dnl Check for user-specified random device
1757 AC_HELP_STRING([--with-random=FILE],
1758 [read randomness from FILE (default=/dev/urandom)]),
1759 [ RANDOM_FILE="$withval" ],
1761 if test x$cross_compiling != xyes; then
1762 dnl Check for random device
1763 AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
1765 AC_MSG_WARN([skipped the /dev/urandom detection when cross-compiling])
1769 if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
1770 AC_SUBST(RANDOM_FILE)
1771 AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
1772 [a suitable file to read random data from])
1777 dnl We require OpenSSL with SRP support.
1779 if test "$OPENSSL_ENABLED" = "1"; then
1780 AC_CHECK_LIB(crypto, SRP_Calc_client_key,
1782 AC_DEFINE(HAVE_SSLEAY_SRP, 1, [if you have the function SRP_Calc_client_key])
1783 AC_SUBST(HAVE_SSLEAY_SRP, [1])
1787 dnl ----------------------------------------------------
1788 dnl check for GnuTLS
1789 dnl ----------------------------------------------------
1791 dnl Default to compiler & linker defaults for GnuTLS files & libraries.
1794 AC_ARG_WITH(gnutls,dnl
1795 AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root])
1796 AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]),
1797 OPT_GNUTLS=$withval)
1799 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1801 if test X"$OPT_GNUTLS" != Xno; then
1804 if test "x$OPT_GNUTLS" = "xyes"; then
1805 dnl this is with no partiular path given
1806 CURL_CHECK_PKGCONFIG(gnutls)
1808 if test "$PKGCONFIG" != "no" ; then
1809 addlib=`$PKGCONFIG --libs-only-l gnutls`
1810 addld=`$PKGCONFIG --libs-only-L gnutls`
1811 addcflags=`$PKGCONFIG --cflags-only-I gnutls`
1812 version=`$PKGCONFIG --modversion gnutls`
1813 gtlslib=`echo $addld | $SED -e 's/-L//'`
1815 dnl without pkg-config, we try libgnutls-config as that was how it
1817 check=`libgnutls-config --version 2>/dev/null`
1818 if test -n "$check"; then
1819 addlib=`libgnutls-config --libs`
1820 addcflags=`libgnutls-config --cflags`
1821 version=`libgnutls-config --version`
1822 gtlslib=`libgnutls-config --prefix`/lib$libsuff
1826 dnl this is with a given path, first check if there's a libgnutls-config
1827 dnl there and if not, make an educated guess
1828 cfg=$OPT_GNUTLS/bin/libgnutls-config
1829 check=`$cfg --version 2>/dev/null`
1830 if test -n "$check"; then
1831 addlib=`$cfg --libs`
1832 addcflags=`$cfg --cflags`
1833 version=`$cfg --version`
1834 gtlslib=`$cfg --prefix`/lib$libsuff
1836 dnl without pkg-config and libgnutls-config, we guess a lot!
1838 addld=-L$OPT_GNUTLS/lib$libsuff
1839 addcflags=-I$OPT_GNUTLS/include
1840 version="" # we just don't know
1841 gtlslib=$OPT_GNUTLS/lib$libsuff
1845 if test -z "$version"; then
1846 dnl lots of efforts, still no go
1850 if test -n "$addlib"; then
1853 CLEANCPPFLAGS="$CPPFLAGS"
1854 CLEADLDFLAGS="$LDFLAGS"
1856 LIBS="$LIBS $addlib"
1857 LDFLAGS="$LDFLAGS $addld"
1858 if test "$addcflags" != "-I/usr/include"; then
1859 CPPFLAGS="$CPPFLAGS $addcflags"
1862 AC_CHECK_LIB(gnutls, gnutls_check_version,
1864 AC_DEFINE(USE_GNUTLS, 1, [if GnuTLS is enabled])
1865 AC_SUBST(USE_GNUTLS, [1])
1868 curl_ssl_msg="enabled (GnuTLS)"
1872 CPPFLAGS="$CLEANCPPFLAGS"
1875 if test "x$USE_GNUTLS" = "xyes"; then
1876 AC_MSG_NOTICE([detected GnuTLS version $version])
1878 if test -n "$gtlslib"; then
1879 dnl when shared libs were found in a path that the run-time
1880 dnl linker doesn't search through, we need to add it to
1881 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1883 if test "x$cross_compiling" != "xyes"; then
1884 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlslib"
1885 export LD_LIBRARY_PATH
1886 AC_MSG_NOTICE([Added $gtlslib to LD_LIBRARY_PATH])
1893 fi dnl GNUTLS not disabled
1898 dnl Check which crypto backend GnuTLS uses
1901 if test "$GNUTLS_ENABLED" = "1"; then
1903 # First check if we can detect either crypto library via transitive linking
1904 AC_CHECK_LIB(gnutls, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1905 if test "$USE_GNUTLS_NETTLE" = ""; then
1906 AC_CHECK_LIB(gnutls, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1908 # If not, try linking directly to both of them to see if they are available
1909 if test "$USE_GNUTLS_NETTLE" = ""; then
1910 AC_CHECK_LIB(nettle, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1912 if test "$USE_GNUTLS_NETTLE" = ""; then
1913 AC_CHECK_LIB(gcrypt, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1915 if test "$USE_GNUTLS_NETTLE" = ""; then
1916 AC_MSG_ERROR([GnuTLS found, but neither gcrypt nor nettle found])
1918 if test "$USE_GNUTLS_NETTLE" = "1"; then
1919 AC_DEFINE(USE_GNUTLS_NETTLE, 1, [if GnuTLS uses nettle as crypto backend])
1920 AC_SUBST(USE_GNUTLS_NETTLE, [1])
1921 LIBS="$LIBS -lnettle"
1923 LIBS="$LIBS -lgcrypt"
1928 dnl We require GnuTLS with SRP support.
1930 if test "$GNUTLS_ENABLED" = "1"; then
1931 AC_CHECK_LIB(gnutls, gnutls_srp_verifier,
1933 AC_DEFINE(HAVE_GNUTLS_SRP, 1, [if you have the function gnutls_srp_verifier])
1934 AC_SUBST(HAVE_GNUTLS_SRP, [1])
1938 dnl ----------------------------------------------------
1939 dnl check for PolarSSL
1940 dnl ----------------------------------------------------
1942 dnl Default to compiler & linker defaults for PolarSSL files & libraries.
1947 AC_ARG_WITH(polarssl,dnl
1948 AC_HELP_STRING([--with-polarssl=PATH],[where to look for PolarSSL, PATH points to the installation root])
1949 AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]),
1950 OPT_POLARSSL=$withval)
1952 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1954 if test X"$OPT_POLARSSL" != Xno; then
1956 if test "$OPT_POLARSSL" = "yes"; then
1960 if test -z "$OPT_POLARSSL" ; then
1961 dnl check for lib first without setting any new path
1963 AC_CHECK_LIB(polarssl, havege_init,
1964 dnl libpolarssl found, set the variable
1966 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1967 AC_SUBST(USE_POLARSSL, [1])
1970 curl_ssl_msg="enabled (PolarSSL)"
1974 if test "x$USE_POLARSSL" != "xyes"; then
1975 dnl add the path and test again
1976 addld=-L$OPT_POLARSSL/lib$libsuff
1977 addcflags=-I$OPT_POLARSSL/include
1978 polarssllib=$OPT_POLARSSL/lib$libsuff
1980 LDFLAGS="$LDFLAGS $addld"
1981 if test "$addcflags" != "-I/usr/include"; then
1982 CPPFLAGS="$CPPFLAGS $addcflags"
1985 AC_CHECK_LIB(polarssl, ssl_init,
1987 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1988 AC_SUBST(USE_POLARSSL, [1])
1991 curl_ssl_msg="enabled (PolarSSL)"
1999 if test "x$USE_POLARSSL" = "xyes"; then
2000 AC_MSG_NOTICE([detected PolarSSL])
2002 CURL_LIBS="$CURL_LIBS -lpolarssl"
2003 LIBS="$LIBS -lpolarssl"
2005 if test -n "$polarssllib"; then
2006 dnl when shared libs were found in a path that the run-time
2007 dnl linker doesn't search through, we need to add it to
2008 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2010 if test "x$cross_compiling" != "xyes"; then
2011 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$polarssllib"
2012 export LD_LIBRARY_PATH
2013 AC_MSG_NOTICE([Added $polarssllib to LD_LIBRARY_PATH])
2018 fi dnl PolarSSL not disabled
2022 dnl ----------------------------------------------------
2023 dnl check for CyaSSL
2024 dnl ----------------------------------------------------
2026 dnl Default to compiler & linker defaults for CyaSSL files & libraries.
2031 AC_ARG_WITH(cyassl,dnl
2032 AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to the installation root (default: system lib default)])
2033 AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
2034 OPT_CYASSL=$withval)
2036 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2038 if test X"$OPT_CYASSL" != Xno; then
2040 if test "$OPT_CYASSL" = "yes"; then
2044 if test -z "$OPT_CYASSL" ; then
2045 dnl check for lib in system default first
2047 AC_CHECK_LIB(cyassl, CyaSSL_Init,
2048 dnl libcyassl found, set the variable
2050 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2051 AC_SUBST(USE_CYASSL, [1])
2054 curl_ssl_msg="enabled (CyaSSL)"
2058 if test "x$USE_CYASSL" != "xyes"; then
2059 dnl add the path and test again
2060 addld=-L$OPT_CYASSL/lib$libsuff
2061 addcflags=-I$OPT_CYASSL/include
2062 cyassllib=$OPT_CYASSL/lib$libsuff
2064 LDFLAGS="$LDFLAGS $addld"
2065 if test "$addcflags" != "-I/usr/include"; then
2066 CPPFLAGS="$CPPFLAGS $addcflags"
2069 AC_CHECK_LIB(cyassl, CyaSSL_Init,
2071 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2072 AC_SUBST(USE_CYASSL, [1])
2075 curl_ssl_msg="enabled (CyaSSL)"
2083 if test "x$USE_CYASSL" = "xyes"; then
2084 AC_MSG_NOTICE([detected CyaSSL])
2086 CURL_LIBS="$CURL_LIBS -lcyassl -lm"
2087 LIBS="$LIBS -lcyassl -lm"
2089 if test -n "$cyassllib"; then
2090 dnl when shared libs were found in a path that the run-time
2091 dnl linker doesn't search through, we need to add it to
2092 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2094 if test "x$cross_compiling" != "xyes"; then
2095 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$cyassllib"
2096 export LD_LIBRARY_PATH
2097 AC_MSG_NOTICE([Added $cyassllib to LD_LIBRARY_PATH])
2103 fi dnl CyaSSL not disabled
2107 dnl ----------------------------------------------------
2108 dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
2109 dnl ----------------------------------------------------
2111 dnl Default to compiler & linker defaults for NSS files & libraries.
2115 AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root])
2116 AC_HELP_STRING([--without-nss], [disable NSS detection]),
2119 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2121 if test X"$OPT_NSS" != Xno; then
2122 if test "x$OPT_NSS" = "xyes"; then
2124 CURL_CHECK_PKGCONFIG(nss)
2126 if test "$PKGCONFIG" != "no" ; then
2127 addlib=`$PKGCONFIG --libs nss`
2128 addcflags=`$PKGCONFIG --cflags nss`
2129 version=`$PKGCONFIG --modversion nss`
2130 nssprefix=`$PKGCONFIG --variable=prefix nss`
2132 dnl Without pkg-config, we check for nss-config
2134 check=`nss-config --version 2>/dev/null`
2135 if test -n "$check"; then
2136 addlib=`nss-config --libs`
2137 addcflags=`nss-config --cflags`
2138 version=`nss-config --version`
2139 nssprefix=`nss-config --prefix`
2147 # Without pkg-config, we'll kludge in some defaults
2148 addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
2149 addcflags="-I$OPT_NSS/include"
2154 if test -n "$addlib"; then
2157 CLEANCPPFLAGS="$CPPFLAGS"
2159 LIBS="$LIBS $addlib"
2160 if test "$addcflags" != "-I/usr/include"; then
2161 CPPFLAGS="$CPPFLAGS $addcflags"
2164 dnl The function PK11_CreateGenericObject is needed to load libnsspem.so
2165 AC_CHECK_LIB(nss3, PK11_CreateGenericObject,
2167 AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
2168 AC_SUBST(USE_NSS, [1])
2171 curl_ssl_msg="enabled (NSS)"
2175 CPPFLAGS="$CLEANCPPFLAGS"
2178 if test "x$USE_NSS" = "xyes"; then
2179 AC_MSG_NOTICE([detected NSS version $version])
2181 dnl NSS_InitContext() was introduced in NSS 3.12.5 and helps to prevent
2182 dnl collisions on NSS initialization/shutdown with other libraries
2183 AC_CHECK_FUNC(NSS_InitContext,
2185 AC_DEFINE(HAVE_NSS_INITCONTEXT, 1, [if you have the NSS_InitContext function])
2186 AC_SUBST(HAVE_NSS_INITCONTEXT, [1])
2189 dnl when shared libs were found in a path that the run-time
2190 dnl linker doesn't search through, we need to add it to
2191 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2193 if test "x$cross_compiling" != "xyes"; then
2194 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
2195 export LD_LIBRARY_PATH
2196 AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
2202 fi dnl NSS not disabled
2204 fi dnl curl_ssl_msg = init_ssl_msg
2208 AC_ARG_WITH(axtls,dnl
2209 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.])
2210 AC_HELP_STRING([--without-axtls], [disable axTLS]),
2213 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2214 if test X"$OPT_AXTLS" != Xno; then
2215 dnl backup the pre-axtls variables
2216 CLEANLDFLAGS="$LDFLAGS"
2217 CLEANCPPFLAGS="$CPPFLAGS"
2220 case "$OPT_AXTLS" in
2222 dnl --with-axtls (without path) used
2223 PREFIX_AXTLS=/usr/local
2224 LIB_AXTLS="$PREFIX_AXTLS/lib"
2225 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2226 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2229 dnl no --with-axtls option given, just check default places
2233 dnl check the given --with-axtls spot
2234 PREFIX_AXTLS=$OPT_AXTLS
2235 LIB_AXTLS="$PREFIX_AXTLS/lib"
2236 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2237 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2241 AC_CHECK_LIB(axtls, ssl_version,[
2242 LIBS="-laxtls $LIBS"
2243 AC_DEFINE(USE_AXTLS, 1, [if axTLS is enabled])
2244 AC_SUBST(USE_AXTLS, [1])
2247 curl_ssl_msg="enabled (axTLS)"
2250 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
2251 export LD_LIBRARY_PATH
2252 AC_MSG_NOTICE([Added $LIB_AXTLS to LD_LIBRARY_PATH])
2254 LDFLAGS="$CLEANLDFLAGS"
2255 CPPFLAGS="$CLEANCPPFLAGS"
2261 if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$DARWINSSL_ENABLED" = "x"; then
2262 AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
2263 AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls or --with-winssl to address this.])
2265 # SSL is enabled, genericly
2266 AC_SUBST(SSL_ENABLED)
2270 dnl **********************************************************************
2271 dnl Check for the CA bundle
2272 dnl **********************************************************************
2274 CURL_CHECK_CA_BUNDLE
2276 dnl **********************************************************************
2277 dnl Check for libmetalink
2278 dnl **********************************************************************
2282 AC_ARG_WITH(libmetalink,dnl
2283 AC_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root])
2284 AC_HELP_STRING([--without-libmetalink], [disable libmetalink detection]),
2285 OPT_LIBMETALINK=$withval)
2287 if test X"$OPT_LIBMETALINK" != Xno; then
2295 if test "x$OPT_LIBMETALINK" = "xyes"; then
2296 dnl this is with no partiular path given
2298 CURL_CHECK_PKGCONFIG(libmetalink)
2300 dnl When particular path is given, set PKG_CONFIG_LIBDIR using the path.
2301 LIBMETALINK_PCDIR="$OPT_LIBMETALINK/lib/pkgconfig"
2302 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$LIBMETALINK_PCDIR"])
2303 if test -f "$LIBMETALINK_PCDIR/libmetalink.pc"; then
2306 if test "$PKGTEST" = "yes"; then
2307 CURL_CHECK_PKGCONFIG(libmetalink, [$LIBMETALINK_PCDIR])
2310 if test "$PKGTEST" = "yes" && test "$PKGCONFIG" != "no"; then
2311 addlib=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2312 $PKGCONFIG --libs-only-l libmetalink`
2313 addld=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2314 $PKGCONFIG --libs-only-L libmetalink`
2315 addcflags=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2316 $PKGCONFIG --cflags-only-I libmetalink`
2317 version=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2318 $PKGCONFIG --modversion libmetalink`
2319 libmetalinklib=`echo $addld | $SED -e 's/-L//'`
2321 if test -n "$addlib"; then
2323 clean_CPPFLAGS="$CPPFLAGS"
2324 clean_LDFLAGS="$LDFLAGS"
2326 CPPFLAGS="$addcflags $clean_CPPFLAGS"
2327 LDFLAGS="$addld $clean_LDFLAGS"
2328 LIBS="$addlib $clean_LIBS"
2329 AC_MSG_CHECKING([if libmetalink is recent enough])
2332 # include <metalink/metalink.h>
2334 if(0 != metalink_strerror(0)) /* added in 0.1.0 */
2338 AC_MSG_RESULT([yes ($version)])
2341 AC_MSG_RESULT([no ($version)])
2342 AC_MSG_NOTICE([libmetalink library defective or too old])
2345 CPPFLAGS="$clean_CPPFLAGS"
2346 LDFLAGS="$clean_LDFLAGS"
2348 if test "$want_metalink" = "yes"; then
2349 dnl finally libmetalink will be used
2350 AC_DEFINE(USE_METALINK, 1, [Define to enable metalink support])
2351 LIBMETALINK_LIBS=$addlib
2352 LIBMETALINK_LDFLAGS=$addld
2353 LIBMETALINK_CFLAGS=$addcflags
2354 AC_SUBST([LIBMETALINK_LIBS])
2355 AC_SUBST([LIBMETALINK_LDFLAGS])
2356 AC_SUBST([LIBMETALINK_CFLAGS])
2357 curl_mtlnk_msg="enabled"
2363 dnl **********************************************************************
2364 dnl Check for the presence of LIBSSH2 libraries and headers
2365 dnl **********************************************************************
2367 dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
2369 AC_ARG_WITH(libssh2,dnl
2370 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])
2371 AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
2372 OPT_LIBSSH2=$withval)
2374 if test X"$OPT_LIBSSH2" != Xno; then
2375 dnl backup the pre-libssh2 variables
2376 CLEANLDFLAGS="$LDFLAGS"
2377 CLEANCPPFLAGS="$CPPFLAGS"
2380 case "$OPT_LIBSSH2" in
2382 dnl --with-libssh2 (without path) used
2383 CURL_CHECK_PKGCONFIG(libssh2)
2385 if test "$PKGCONFIG" != "no" ; then
2386 LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2`
2387 LD_SSH2=`$PKGCONFIG --libs-only-L libssh2`
2388 CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2`
2389 version=`$PKGCONFIG --modversion libssh2`
2390 DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'`
2395 dnl no --with-libssh2 option given, just check default places
2398 dnl use the given --with-libssh2 spot
2399 PREFIX_SSH2=$OPT_LIBSSH2
2403 dnl if given with a prefix, we set -L and -I based on that
2404 if test -n "$PREFIX_SSH2"; then
2406 LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff
2407 CPP_SSH2=-I${PREFIX_SSH2}/include
2408 DIR_SSH2=${PREFIX_SSH2}/lib$libsuff
2411 LDFLAGS="$LDFLAGS $LD_SSH2"
2412 CPPFLAGS="$CPPFLAGS $CPP_SSH2"
2413 LIBS="$LIBS $LIB_SSH2"
2415 AC_CHECK_LIB(ssh2, libssh2_channel_open_ex)
2417 AC_CHECK_HEADERS(libssh2.h,
2418 curl_ssh_msg="enabled (libSSH2)"
2420 AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
2421 AC_SUBST(USE_LIBSSH2, [1])
2424 if test X"$OPT_LIBSSH2" != Xoff &&
2425 test "$LIBSSH2_ENABLED" != "1"; then
2426 AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!])
2429 if test "$LIBSSH2_ENABLED" = "1"; then
2430 if test -n "$DIR_SSH2"; then
2431 dnl when the libssh2 shared libs were found in a path that the run-time
2432 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
2433 dnl to prevent further configure tests to fail due to this
2435 dnl libssh2_version is a post 1.0 addition
2436 dnl libssh2_init and libssh2_exit were added in 1.2.5
2437 dnl libssh2_scp_send64 was added in 1.2.6
2438 dnl libssh2_session_handshake was added in 1.2.8
2439 AC_CHECK_FUNCS( libssh2_version libssh2_init libssh2_exit \
2440 libssh2_scp_send64 libssh2_session_handshake)
2441 if test "x$cross_compiling" != "xyes"; then
2442 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
2443 export LD_LIBRARY_PATH
2444 AC_MSG_NOTICE([Added $DIR_SSH2 to LD_LIBRARY_PATH])
2448 dnl no libssh2, revert back to clean variables
2449 LDFLAGS=$CLEANLDFLAGS
2450 CPPFLAGS=$CLEANCPPFLAGS
2455 dnl **********************************************************************
2456 dnl Check for the presence of LIBRTMP libraries and headers
2457 dnl **********************************************************************
2459 dnl Default to compiler & linker defaults for LIBRTMP files & libraries.
2461 AC_ARG_WITH(librtmp,dnl
2462 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])
2463 AC_HELP_STRING([--without-librtmp], [disable LIBRTMP]),
2464 OPT_LIBRTMP=$withval)
2466 if test X"$OPT_LIBRTMP" != Xno; then
2467 dnl backup the pre-librtmp variables
2468 CLEANLDFLAGS="$LDFLAGS"
2469 CLEANCPPFLAGS="$CPPFLAGS"
2472 case "$OPT_LIBRTMP" in
2474 dnl --with-librtmp (without path) used
2475 CURL_CHECK_PKGCONFIG(librtmp)
2477 if test "$PKGCONFIG" != "no" ; then
2478 LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp`
2479 LD_RTMP=`$PKGCONFIG --libs-only-L librtmp`
2480 CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp`
2481 version=`$PKGCONFIG --modversion librtmp`
2482 DIR_RTMP=`echo $LD_RTMP | $SED -e 's/-L//'`
2484 dnl To avoid link errors, we do not allow --librtmp without
2485 dnl a pkgconfig file
2486 AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.])
2491 dnl no --with-librtmp option given, just check default places
2495 dnl use the given --with-librtmp spot
2496 PREFIX_RTMP=$OPT_LIBRTMP
2500 dnl if given with a prefix, we set -L and -I based on that
2501 if test -n "$PREFIX_RTMP"; then
2502 LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff
2503 CPP_RTMP=-I${PREFIX_RTMP}/include
2504 DIR_RTMP=${PREFIX_RTMP}/lib$libsuff
2507 LDFLAGS="$LDFLAGS $LD_RTMP"
2508 CPPFLAGS="$CPPFLAGS $CPP_RTMP"
2509 LIBS="$LIBS $LIB_RTMP"
2511 AC_CHECK_LIB(rtmp, RTMP_Init,
2513 AC_CHECK_HEADERS(librtmp/rtmp.h,
2514 curl_rtmp_msg="enabled (librtmp)"
2516 AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use])
2517 AC_SUBST(USE_LIBRTMP, [1])
2520 dnl not found, revert back to clean variables
2521 LDFLAGS=$CLEANLDFLAGS
2522 CPPFLAGS=$CLEANCPPFLAGS
2526 if test X"$OPT_LIBRTMP" != Xoff &&
2527 test "$LIBRTMP_ENABLED" != "1"; then
2528 AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!])
2533 dnl **********************************************************************
2534 dnl Check for linker switch for versioned symbols
2535 dnl **********************************************************************
2537 versioned_symbols_flavour=
2538 AC_MSG_CHECKING([whether versioned symbols are wanted])
2539 AC_ARG_ENABLE(versioned-symbols,
2540 AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library])
2541 AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]),
2542 [ case "$enableval" in
2543 yes) AC_MSG_RESULT(yes)
2544 AC_MSG_CHECKING([if libraries can be versioned])
2545 GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
2546 if test -z "$GLD"; then
2548 AC_MSG_WARN([You need an ld version supporting the --version-script option])
2551 if test "x$OPENSSL_ENABLED" = "x1"; then
2552 versioned_symbols_flavour="OPENSSL_"
2553 elif test "x$GNUTLS_ENABLED" == "x1"; then
2554 versioned_symbols_flavour="GNUTLS_"
2555 elif test "x$NSS_ENABLED" == "x1"; then
2556 versioned_symbols_flavour="NSS_"
2557 elif test "x$POLARSSL_ENABLED" == "x1"; then
2558 versioned_symbols_flavour="POLARSSL_"
2559 elif test "x$CYASSL_ENABLED" == "x1"; then
2560 versioned_symbols_flavour="CYASSL_"
2561 elif test "x$AXTLS_ENABLED" == "x1"; then
2562 versioned_symbols_flavour="AXTLS_"
2563 elif test "x$WINSSL_ENABLED" == "x1"; then
2564 versioned_symbols_flavour="WINSSL_"
2565 elif test "x$DARWINSSL_ENABLED" == "x1"; then
2566 versioned_symbols_flavour="DARWINSSL_"
2568 versioned_symbols_flavour=""
2570 versioned_symbols="yes"
2574 *) AC_MSG_RESULT(no)
2582 AC_SUBST(VERSIONED_FLAVOUR, ["$versioned_symbols_flavour"])
2583 AM_CONDITIONAL(VERSIONED_SYMBOLS, test "x$versioned_symbols" = "xyes")
2585 dnl -------------------------------------------------
2586 dnl check winidn option before other IDN libraries
2587 dnl -------------------------------------------------
2589 AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)])
2590 OPT_WINIDN="default"
2592 AC_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN])
2593 AC_HELP_STRING([--without-winidn], [disable Windows native IDN]),
2594 OPT_WINIDN=$withval)
2595 case "$OPT_WINIDN" in
2597 dnl --without-winidn option used or configure option not specified
2602 dnl --with-winidn option used without path
2604 want_winidn_path="default"
2605 AC_MSG_RESULT([yes])
2608 dnl --with-winidn option used with path
2610 want_winidn_path="$withval"
2611 AC_MSG_RESULT([yes ($withval)])
2615 if test "$want_winidn" = "yes"; then
2616 dnl winidn library support has been requested
2617 clean_CPPFLAGS="$CPPFLAGS"
2618 clean_LDFLAGS="$LDFLAGS"
2620 WINIDN_LIBS="-lnormaliz"
2622 if test "$want_winidn_path" != "default"; then
2623 dnl path has been specified
2624 dnl pkg-config not available or provides no info
2625 WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff"
2626 WINIDN_CPPFLAGS="-I$want_winidn_path/include"
2627 WINIDN_DIR="$want_winidn_path/lib$libsuff"
2630 CPPFLAGS="$WINIDN_CPPFLAGS $CPPFLAGS"
2631 LDFLAGS="$WINIDN_LDFLAGS $LDFLAGS"
2632 LIBS="$WINIDN_LIBS $LIBS"
2634 AC_MSG_CHECKING([if IdnToUnicode can be linked])
2636 AC_LANG_FUNC_LINK_TRY([IdnToUnicode])
2638 AC_MSG_RESULT([yes])
2639 tst_links_winidn="yes"
2642 tst_links_winidn="no"
2645 if test "$tst_links_winidn" = "yes"; then
2646 AC_DEFINE(USE_WIN32_IDN, 1, [Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz).])
2647 AC_DEFINE(WANT_IDN_PROTOTYPES, 1, [Define to 1 to provide own prototypes.])
2648 AC_SUBST([IDN_ENABLED], [1])
2649 curl_idn_msg="enabled (Windows-native)"
2651 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2652 CPPFLAGS="$clean_CPPFLAGS"
2653 LDFLAGS="$clean_LDFLAGS"
2658 dnl **********************************************************************
2659 dnl Check for the presence of IDN libraries and headers
2660 dnl **********************************************************************
2662 AC_MSG_CHECKING([whether to build with libidn])
2665 AC_HELP_STRING([--with-libidn=PATH],[Enable libidn usage])
2666 AC_HELP_STRING([--without-libidn],[Disable libidn usage]),
2670 dnl --without-libidn option used
2675 dnl configure option not specified
2677 want_idn_path="default"
2678 AC_MSG_RESULT([(assumed) yes])
2681 dnl --with-libidn option used without path
2683 want_idn_path="default"
2684 AC_MSG_RESULT([yes])
2687 dnl --with-libidn option used with path
2689 want_idn_path="$withval"
2690 AC_MSG_RESULT([yes ($withval)])
2694 if test "$want_idn" = "yes"; then
2695 dnl idn library support has been requested
2696 clean_CPPFLAGS="$CPPFLAGS"
2697 clean_LDFLAGS="$LDFLAGS"
2701 if test "$want_idn_path" != "default"; then
2702 dnl path has been specified
2703 IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig"
2704 CURL_CHECK_PKGCONFIG(libidn, [$IDN_PCDIR])
2705 if test "$PKGCONFIG" != "no"; then
2706 IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2707 $PKGCONFIG --libs-only-l libidn 2>/dev/null`
2708 IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2709 $PKGCONFIG --libs-only-L libidn 2>/dev/null`
2710 IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2711 $PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2712 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2714 dnl pkg-config not available or provides no info
2716 IDN_LDFLAGS="-L$want_idn_path/lib$libsuff"
2717 IDN_CPPFLAGS="-I$want_idn_path/include"
2718 IDN_DIR="$want_idn_path/lib$libsuff"
2721 dnl path not specified
2722 CURL_CHECK_PKGCONFIG(libidn)
2723 if test "$PKGCONFIG" != "no"; then
2724 IDN_LIBS=`$PKGCONFIG --libs-only-l libidn 2>/dev/null`
2725 IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn 2>/dev/null`
2726 IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2727 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2729 dnl pkg-config not available or provides no info
2734 if test "$PKGCONFIG" != "no"; then
2735 AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"])
2736 AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"])
2737 AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2738 AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"])
2740 AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"])
2741 AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"])
2742 AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2743 AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"])
2746 CPPFLAGS="$IDN_CPPFLAGS $CPPFLAGS"
2747 LDFLAGS="$IDN_LDFLAGS $LDFLAGS"
2748 LIBS="$IDN_LIBS $LIBS"
2750 AC_MSG_CHECKING([if idna_to_ascii_4i can be linked])
2752 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_4i])
2754 AC_MSG_RESULT([yes])
2755 tst_links_libidn="yes"
2758 tst_links_libidn="no"
2760 if test "$tst_links_libidn" = "no"; then
2761 AC_MSG_CHECKING([if idna_to_ascii_lz can be linked])
2763 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_lz])
2765 AC_MSG_RESULT([yes])
2766 tst_links_libidn="yes"
2769 tst_links_libidn="no"
2773 if test "$tst_links_libidn" = "yes"; then
2774 AC_DEFINE(HAVE_LIBIDN, 1, [Define to 1 if you have the `idn' library (-lidn).])
2775 dnl different versions of libidn have different setups of these:
2776 AC_CHECK_FUNCS( idn_free idna_strerror tld_strerror )
2777 AC_CHECK_HEADERS( idn-free.h tld.h )
2778 if test "x$ac_cv_header_tld_h" = "xyes"; then
2779 AC_SUBST([IDN_ENABLED], [1])
2780 curl_idn_msg="enabled"
2781 if test -n "$IDN_DIR"; then
2782 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
2783 export LD_LIBRARY_PATH
2784 AC_MSG_NOTICE([Added $IDN_DIR to LD_LIBRARY_PATH])
2787 AC_MSG_WARN([Libraries for IDN support too old: IDN disabled])
2788 CPPFLAGS="$clean_CPPFLAGS"
2789 LDFLAGS="$clean_LDFLAGS"
2793 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2794 CPPFLAGS="$clean_CPPFLAGS"
2795 LDFLAGS="$clean_LDFLAGS"
2801 dnl Let's hope this split URL remains working:
2802 dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
2803 dnl genprogc/thread_quick_ref.htm
2806 dnl **********************************************************************
2807 dnl Back to "normal" configuring
2808 dnl **********************************************************************
2810 dnl Checks for header files.
2813 CURL_CHECK_HEADER_MALLOC
2814 CURL_CHECK_HEADER_MEMORY
2816 dnl Now check for the very most basic headers. Then we can use these
2817 dnl ones as default-headers when checking for the rest!
2860 dnl to do if not found
2864 dnl default includes
2866 #ifdef HAVE_SYS_TYPES_H
2867 #include <sys/types.h>
2869 #ifdef HAVE_SYS_TIME_H
2870 #include <sys/time.h>
2872 #ifdef HAVE_SYS_SELECT_H
2873 #include <sys/select.h>
2875 #ifdef HAVE_SYS_SOCKET_H
2876 #include <sys/socket.h>
2878 #ifdef HAVE_NETINET_IN_H
2879 #include <netinet/in.h>
2881 #ifdef HAVE_SYS_UN_H
2887 dnl Checks for typedefs, structures, and compiler characteristics.
2889 CURL_CHECK_VARIADIC_MACROS
2892 CURL_CHECK_STRUCT_TIMEVAL
2893 CURL_VERIFY_RUNTIMELIBS
2895 AC_CHECK_SIZEOF(size_t)
2896 AC_CHECK_SIZEOF(long)
2897 AC_CHECK_SIZEOF(int)
2898 AC_CHECK_SIZEOF(short)
2900 AC_CHECK_SIZEOF(time_t)
2901 AC_CHECK_SIZEOF(off_t)
2904 if test x"$ac_cv_native_windows" != "xyes" &&
2905 test $ac_cv_sizeof_off_t -ne $curl_sizeof_curl_off_t; then
2906 AC_MSG_WARN([This libcurl built is probably not ABI compatible with previous])
2907 AC_MSG_WARN([builds! You MUST read lib/README.curl_off_t to figure it out.])
2912 AC_CHECK_TYPE(long long,
2913 [AC_DEFINE(HAVE_LONGLONG, 1,
2914 [Define to 1 if the compiler supports the 'long long' data type.])]
2918 if test "xyes" = "x$longlong"; then
2919 AC_MSG_CHECKING([if numberLL works])
2923 long long val = 1000LL;
2926 AC_MSG_RESULT([yes])
2927 AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
2935 AC_CHECK_TYPE(ssize_t, ,
2936 AC_DEFINE(ssize_t, int, [the signed version of size_t]))
2938 # check for bool type
2939 AC_CHECK_TYPE([bool],[
2940 AC_DEFINE(HAVE_BOOL_T, 1,
2941 [Define to 1 if bool is an available type.])
2943 #ifdef HAVE_SYS_TYPES_H
2944 #include <sys/types.h>
2946 #ifdef HAVE_STDBOOL_H
2947 #include <stdbool.h>
2951 CURL_CONFIGURE_CURL_SOCKLEN_T
2953 CURL_CONFIGURE_PULL_SYS_POLL
2957 TYPE_SOCKADDR_STORAGE
2963 CURL_CHECK_FUNC_SELECT
2965 CURL_CHECK_FUNC_RECV
2966 CURL_CHECK_FUNC_RECVFROM
2967 CURL_CHECK_FUNC_SEND
2968 CURL_CHECK_MSG_NOSIGNAL
2970 CURL_CHECK_FUNC_ALARM
2971 CURL_CHECK_FUNC_BASENAME
2972 CURL_CHECK_FUNC_CLOSESOCKET
2973 CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
2974 CURL_CHECK_FUNC_CONNECT
2975 CURL_CHECK_FUNC_FCNTL
2976 CURL_CHECK_FUNC_FDOPEN
2977 CURL_CHECK_FUNC_FREEADDRINFO
2978 CURL_CHECK_FUNC_FREEIFADDRS
2979 CURL_CHECK_FUNC_FSETXATTR
2980 CURL_CHECK_FUNC_FTRUNCATE
2981 CURL_CHECK_FUNC_GETADDRINFO
2982 CURL_CHECK_FUNC_GAI_STRERROR
2983 CURL_CHECK_FUNC_GETHOSTBYADDR
2984 CURL_CHECK_FUNC_GETHOSTBYADDR_R
2985 CURL_CHECK_FUNC_GETHOSTBYNAME
2986 CURL_CHECK_FUNC_GETHOSTBYNAME_R
2987 CURL_CHECK_FUNC_GETHOSTNAME
2988 CURL_CHECK_FUNC_GETIFADDRS
2989 CURL_CHECK_FUNC_GETSERVBYPORT_R
2990 CURL_CHECK_FUNC_GMTIME_R
2991 CURL_CHECK_FUNC_INET_NTOA_R
2992 CURL_CHECK_FUNC_INET_NTOP
2993 CURL_CHECK_FUNC_INET_PTON
2994 CURL_CHECK_FUNC_IOCTL
2995 CURL_CHECK_FUNC_IOCTLSOCKET
2996 CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
2997 CURL_CHECK_FUNC_LOCALTIME_R
2998 CURL_CHECK_FUNC_MEMRCHR
2999 CURL_CHECK_FUNC_POLL
3000 CURL_CHECK_FUNC_SETSOCKOPT
3001 CURL_CHECK_FUNC_SIGACTION
3002 CURL_CHECK_FUNC_SIGINTERRUPT
3003 CURL_CHECK_FUNC_SIGNAL
3004 CURL_CHECK_FUNC_SIGSETJMP
3005 CURL_CHECK_FUNC_SOCKET
3006 CURL_CHECK_FUNC_SOCKETPAIR
3007 CURL_CHECK_FUNC_STRCASECMP
3008 CURL_CHECK_FUNC_STRCASESTR
3009 CURL_CHECK_FUNC_STRCMPI
3010 CURL_CHECK_FUNC_STRDUP
3011 CURL_CHECK_FUNC_STRERROR_R
3012 CURL_CHECK_FUNC_STRICMP
3013 CURL_CHECK_FUNC_STRLCAT
3014 CURL_CHECK_FUNC_STRNCASECMP
3015 CURL_CHECK_FUNC_STRNCMPI
3016 CURL_CHECK_FUNC_STRNICMP
3017 CURL_CHECK_FUNC_STRSTR
3018 CURL_CHECK_FUNC_STRTOK_R
3019 CURL_CHECK_FUNC_STRTOLL
3020 CURL_CHECK_FUNC_WRITEV
3026 AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
3030 AC_CHECK_FUNCS([fork \
3049 eval skipcheck=\$skipcheck_$func
3050 if test "x$skipcheck" != "xyes"; then
3051 AC_MSG_CHECKING([deeper for $func])
3058 AC_MSG_RESULT([yes])
3059 eval "ac_cv_func_$func=yes"
3060 AC_DEFINE_UNQUOTED(XC_SH_TR_CPP([HAVE_$func]), [1],
3061 [Define to 1 if you have the $func function.])
3063 AC_MSG_RESULT([but still no])
3068 dnl Check if the getnameinfo function is available
3069 dnl and get the types of five of its arguments.
3070 CURL_CHECK_FUNC_GETNAMEINFO
3072 if test "$ipv6" = "yes"; then
3073 if test "$ac_cv_func_getaddrinfo" = "yes"; then
3074 AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
3076 AC_SUBST(IPV6_ENABLED)
3078 CURL_CHECK_NI_WITHSCOPEID
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"
3331 dnl All the library dependencies put into $LIB apply to libcurl only.
3332 dnl Those in $CURL_LIBS apply to the curl command-line client only.
3333 dnl Those in $ALL_LIBS apply to all targets, including test targets.
3337 AC_SUBST(LIBCURL_LIBS)
3339 AC_SUBST(CURL_NETWORK_LIBS)
3340 AC_SUBST(CURL_NETWORK_AND_TIME_LIBS)
3341 LIBS=$ALL_LIBS dnl LIBS is a magic variable that's used for every link
3343 dnl BLANK_AT_MAKETIME might be used in some of our Makefile.am files to
3344 dnl blank LIBS variable used in generated makefile at makefile processing
3345 dnl time. Our test server's Makefile.am uses this to prevent global LIBS
3346 dnl from being used for any test server build target.
3348 AC_SUBST(BLANK_AT_MAKETIME)
3350 AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes)
3353 ENABLE_SHARED="$enable_shared"
3354 AC_SUBST(ENABLE_SHARED)
3357 dnl For keeping supported features and protocols also in pkg-config file
3358 dnl since it is more cross-compile friendly than curl-config
3361 if test "x$USE_SSLEAY" = "x1"; then
3362 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3363 elif test -n "$SSL_ENABLED"; then
3364 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3366 if test "@KRB4_ENABLED@" = "x1"; then
3367 SUPPORT_FEATURES="$SUPPORT_FEATURES KRB4"
3369 if test "x$IPV6_ENABLED" = "x1"; then
3370 SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
3372 if test "x$HAVE_LIBZ" = "x1"; then
3373 SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
3375 if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1"; then
3376 SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
3378 if test "x$IDN_ENABLED" = "x1"; then
3379 SUPPORT_FEATURES="$SUPPORT_FEATURES IDN"
3381 if test "x$USE_WINDOWS_SSPI" = "x1"; then
3382 SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
3384 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3385 if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
3386 -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
3387 -o "x$DARWINSSL_ENABLED" = "x1"; then
3388 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
3389 if test "x$NTLM_WB_ENABLED" = "x1"; then
3390 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
3394 if test "x$USE_TLS_SRP" = "x1"; then
3395 SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
3398 AC_SUBST(SUPPORT_FEATURES)
3400 dnl For supported protocols in pkg-config file
3401 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3402 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
3403 if test "x$SSL_ENABLED" = "x1"; then
3404 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS"
3407 if test "x$CURL_DISABLE_FTP" != "x1"; then
3408 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP"
3409 if test "x$SSL_ENABLED" = "x1"; then
3410 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS"
3413 if test "x$CURL_DISABLE_FILE" != "x1"; then
3414 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE"
3416 if test "x$CURL_DISABLE_TELNET" != "x1"; then
3417 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET"
3419 if test "x$CURL_DISABLE_LDAP" != "x1"; then
3420 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP"
3421 if test "x$CURL_DISABLE_LDAPS" != "x1"; then
3422 if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") ||
3423 (test "x$USE_OPENLDAP" != "x1" && test "x$HAVE_LDAP_SSL" = "x1"); then
3424 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS"
3428 if test "x$CURL_DISABLE_DICT" != "x1"; then
3429 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT"
3431 if test "x$CURL_DISABLE_TFTP" != "x1"; then
3432 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP"
3434 if test "x$CURL_DISABLE_GOPHER" != "x1"; then
3435 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER"
3437 if test "x$CURL_DISABLE_POP3" != "x1"; then
3438 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3"
3439 if test "x$SSL_ENABLED" = "x1"; then
3440 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S"
3443 if test "x$CURL_DISABLE_IMAP" != "x1"; then
3444 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
3445 if test "x$SSL_ENABLED" = "x1"; then
3446 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
3449 if test "x$CURL_DISABLE_SMTP" != "x1"; then
3450 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
3451 if test "x$SSL_ENABLED" = "x1"; then
3452 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS"
3455 if test "x$USE_LIBSSH2" = "x1"; then
3456 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
3457 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
3459 if test "x$CURL_DISABLE_RTSP" != "x1"; then
3460 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
3462 if test "x$USE_LIBRTMP" = "x1"; then
3463 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP"
3466 dnl replace spaces with newlines
3468 dnl replace the newlines back to spaces
3469 SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '`
3471 AC_SUBST(SUPPORT_PROTOCOLS)
3473 dnl squeeze whitespace out of some variables
3482 squeeze LIBCURL_LIBS
3483 squeeze CURL_NETWORK_LIBS
3484 squeeze CURL_NETWORK_AND_TIME_LIBS
3486 squeeze SUPPORT_FEATURES
3487 squeeze SUPPORT_PROTOCOLS
3489 if test "x$want_curldebug_assumed" = "xyes" &&
3490 test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
3491 ac_configure_args="$ac_configure_args --enable-curldebug"
3494 AC_CONFIG_FILES([Makefile \
3496 docs/examples/Makefile \
3497 docs/libcurl/Makefile \
3499 include/curl/Makefile \
3504 tests/data/Makefile \
3505 tests/server/Makefile \
3506 tests/libtest/Makefile \
3507 tests/unit/Makefile \
3509 packages/Win32/Makefile \
3510 packages/Win32/cygwin/Makefile \
3511 packages/Linux/Makefile \
3512 packages/Linux/RPM/Makefile \
3513 packages/Linux/RPM/curl.spec \
3514 packages/Linux/RPM/curl-ssl.spec \
3515 packages/Solaris/Makefile \
3516 packages/EPM/curl.list \
3517 packages/EPM/Makefile \
3518 packages/vms/Makefile \
3519 packages/AIX/Makefile \
3520 packages/AIX/RPM/Makefile \
3521 packages/AIX/RPM/curl.spec \
3527 CURL_GENERATE_CONFIGUREHELP_PM
3529 AC_MSG_NOTICE([Configured to build curl/libcurl:
3531 curl version: ${CURLVERSION}
3533 Install prefix: ${prefix}
3535 SSL support: ${curl_ssl_msg}
3536 SSH support: ${curl_ssh_msg}
3537 zlib support: ${curl_zlib_msg}
3538 krb4 support: ${curl_krb4_msg}
3539 GSSAPI support: ${curl_gss_msg}
3540 SPNEGO support: ${curl_spnego_msg}
3541 TLS-SRP support: ${curl_tls_srp_msg}
3542 resolver: ${curl_res_msg}
3543 ipv6 support: ${curl_ipv6_msg}
3544 IDN support: ${curl_idn_msg}
3545 Build libcurl: Shared=${enable_shared}, Static=${enable_static}
3546 Built-in manual: ${curl_manual_msg}
3547 --libcurl option: ${curl_libcurl_msg}
3548 Verbose errors: ${curl_verbose_msg}
3549 SSPI support: ${curl_sspi_msg}
3550 ca cert bundle: ${ca}
3551 ca cert path: ${capath}
3552 LDAP support: ${curl_ldap_msg}
3553 LDAPS support: ${curl_ldaps_msg}
3554 RTSP support: ${curl_rtsp_msg}
3555 RTMP support: ${curl_rtmp_msg}
3556 metalink support: ${curl_mtlnk_msg}
3557 Protocols: ${SUPPORT_PROTOCOLS}
3560 if test "x$soname_bump" = "xyes"; then
3563 SONAME bump: yes - WARNING: this library will be built with the SONAME
3564 number bumped due to (a detected) ABI breakage.
3565 See lib/README.curl_off_t for details on this.