1 #***************************************************************************
3 # Project ___| | | | _ \| |
5 # | (__| |_| | _ <| |___
6 # \___|\___/|_| \_\_____|
8 # Copyright (C) 1998 - 2013, 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/])
31 CURL_OVERRIDE_AUTOCONF
33 dnl configure script copyright
34 AC_COPYRIGHT([Copyright (c) 1998 - 2012 Daniel Stenberg, <daniel@haxx.se>
35 This configure script may be copied, distributed and modified under the
36 terms of the curl license; see COPYING for more details])
38 AC_CONFIG_SRCDIR([lib/urldata.h])
39 AC_CONFIG_HEADERS(lib/curl_config.h include/curl/curlbuild.h)
40 AC_CONFIG_MACRO_DIR([m4])
43 CURL_CHECK_OPTION_DEBUG
44 CURL_CHECK_OPTION_OPTIMIZE
45 CURL_CHECK_OPTION_WARNINGS
46 CURL_CHECK_OPTION_WERROR
47 CURL_CHECK_OPTION_CURLDEBUG
48 CURL_CHECK_OPTION_SYMBOL_HIDING
49 CURL_CHECK_OPTION_ARES
51 CURL_CHECK_PATH_SEPARATOR_REQUIRED
54 # save the configure arguments
56 CONFIGURE_OPTIONS="\"$ac_configure_args\""
57 AC_SUBST(CONFIGURE_OPTIONS)
60 if test X"$want_werror" = Xyes; then
61 CURL_CFLAG_EXTRAS="-Werror"
63 AC_SUBST(CURL_CFLAG_EXTRAS)
65 dnl SED is mandatory for configure process and libtool.
66 dnl Set it now, allowing it to be changed later.
67 if test -z "$SED"; then
68 dnl allow it to be overridden
69 AC_PATH_PROG([SED], [sed], [not_found],
70 [$PATH:/usr/bin:/usr/local/bin])
71 if test -z "$SED" || test "$SED" = "not_found"; then
72 AC_MSG_ERROR([sed not found in PATH. Cannot continue without sed.])
77 dnl GREP is mandatory for configure process and libtool.
78 dnl Set it now, allowing it to be changed later.
79 if test -z "$GREP"; then
80 dnl allow it to be overridden
81 AC_PATH_PROG([GREP], [grep], [not_found],
82 [$PATH:/usr/bin:/usr/local/bin])
83 if test -z "$GREP" || test "$GREP" = "not_found"; then
84 AC_MSG_ERROR([grep not found in PATH. Cannot continue without grep.])
89 dnl EGREP is mandatory for configure process and libtool.
90 dnl Set it now, allowing it to be changed later.
91 if test -z "$EGREP"; then
92 dnl allow it to be overridden
93 if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
94 AC_MSG_CHECKING([for egrep])
96 AC_MSG_RESULT([$EGREP])
98 AC_PATH_PROG([EGREP], [egrep], [not_found],
99 [$PATH:/usr/bin:/usr/local/bin])
102 if test -z "$EGREP" || test "$EGREP" = "not_found"; then
103 AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.])
107 dnl AR is mandatory for configure process and libtool.
108 dnl This is target dependent, so check it as a tool.
109 if test -z "$AR"; then
110 dnl allow it to be overridden
111 AC_PATH_TOOL([AR], [ar], [not_found],
112 [$PATH:/usr/bin:/usr/local/bin])
113 if test -z "$AR" || test "$AR" = "not_found"; then
114 AC_MSG_ERROR([ar not found in PATH. Cannot continue without ar.])
121 dnl Remove non-configure distributed curlbuild.h
122 if test -f ${srcdir}/include/curl/curlbuild.h; then
123 rm -f ${srcdir}/include/curl/curlbuild.h
126 dnl figure out the libcurl version
127 CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curlver.h`
130 AC_MSG_CHECKING([curl version])
131 AC_MSG_RESULT($CURLVERSION)
133 AC_SUBST(CURLVERSION)
136 dnl we extract the numerical version for curl-config only
137 VERSIONNUM=`$SED -ne 's/^#define LIBCURL_VERSION_NUM 0x\(.*\)/\1/p' ${srcdir}/include/curl/curlver.h`
140 dnl Solaris pkgadd support definitions
141 PKGADD_PKG="HAXXcurl"
142 PKGADD_NAME="cURL - a client that groks URLs"
143 PKGADD_VENDOR="curl.haxx.se"
145 AC_SUBST(PKGADD_NAME)
146 AC_SUBST(PKGADD_VENDOR)
149 dnl initialize all the info variables
150 curl_ssl_msg="no (--with-{ssl,gnutls,nss,polarssl,cyassl,axtls,winssl,darwinssl} )"
151 curl_ssh_msg="no (--with-libssh2)"
152 curl_zlib_msg="no (--with-zlib)"
153 curl_krb4_msg="no (--with-krb4*)"
154 curl_gss_msg="no (--with-gssapi)"
155 curl_spnego_msg="no (--with-spnego)"
156 curl_tls_srp_msg="no (--enable-tls-srp)"
157 curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
158 curl_ipv6_msg="no (--enable-ipv6)"
159 curl_idn_msg="no (--with-{libidn,winidn})"
160 curl_manual_msg="no (--enable-manual)"
161 curl_libcurl_msg="enabled (--disable-libcurl-option)"
162 curl_verbose_msg="enabled (--disable-verbose)"
163 curl_sspi_msg="no (--enable-sspi)"
164 curl_ldap_msg="no (--enable-ldap / --with-ldap-lib / --with-lber-lib)"
165 curl_ldaps_msg="no (--enable-ldaps)"
166 curl_rtsp_msg="no (--enable-rtsp)"
167 curl_rtmp_msg="no (--with-librtmp)"
168 curl_mtlnk_msg="no (--with-libmetalink)"
170 init_ssl_msg=${curl_ssl_msg}
173 dnl Save some initial values the user might have provided
175 INITIAL_LDFLAGS=$LDFLAGS
179 dnl Detect the canonical host and target build environment
183 dnl Get system canonical name
184 AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
186 dnl Checks for programs.
188 dnl Our curl_off_t internal and external configure settings
189 CURL_CONFIGURE_CURL_OFF_T
191 dnl This defines _ALL_SOURCE for AIX
192 CURL_CHECK_AIX_ALL_SOURCE
194 dnl Our configure and build reentrant settings
195 CURL_CONFIGURE_THREAD_SAFE
196 CURL_CONFIGURE_REENTRANT
198 dnl check for how to do large files
201 dnl support building of Windows DLLs
204 dnl force libtool to build static libraries with PIC on AMD64-Linux & FreeBSD
205 AC_MSG_CHECKING([if arch-OS host is AMD64-Linux/FreeBSD (to build static libraries with PIC)])
207 x86_64*linux*|amd64*freebsd*|ia64*freebsd*)
216 AC_MSG_CHECKING([if compiler is icc (to build with PIC)])
230 AC_MSG_CHECKING([if we need -mimpure-text])
234 if test "$GCC" = "yes"; then
241 AC_MSG_RESULT($mimpure)
242 AM_CONDITIONAL(MIMPURE, test x$mimpure = xyes)
244 AC_MSG_CHECKING([if we need BUILDING_LIBCURL])
245 use_cppflag_building_libcurl="no"
246 use_cppflag_curl_staticlib="no"
247 CPPFLAG_CURL_STATICLIB=""
251 use_cppflag_building_libcurl="yes"
252 AC_MSG_CHECKING([if we need CURL_STATICLIB])
253 if test "X$enable_shared" = "Xno"
256 use_cppflag_curl_staticlib="yes"
257 CPPFLAG_CURL_STATICLIB="-DCURL_STATICLIB"
266 AM_CONDITIONAL(USE_CPPFLAG_BUILDING_LIBCURL, test x$use_cppflag_building_libcurl = xyes)
267 AM_CONDITIONAL(USE_CPPFLAG_CURL_STATICLIB, test x$use_cppflag_curl_staticlib = xyes)
268 AC_SUBST(CPPFLAG_CURL_STATICLIB)
270 # Determine whether all dependent libraries must be specified when linking
271 if test "X$enable_shared" = "Xyes" -a "X$link_all_deplibs" = "Xno"
277 AC_SUBST(REQUIRE_LIB_DEPS)
278 AM_CONDITIONAL(USE_EXPLICIT_LIB_DEPS, test x$REQUIRE_LIB_DEPS = xyes)
280 dnl The install stuff has already been taken care of by the automake stuff
284 dnl check if there's a way to force code inline
287 dnl **********************************************************************
288 dnl platform/compiler/architecture specific checks/flags
289 dnl **********************************************************************
292 CURL_SET_COMPILER_BASIC_OPTS
293 CURL_SET_COMPILER_DEBUG_OPTS
294 CURL_SET_COMPILER_OPTIMIZE_OPTS
295 CURL_SET_COMPILER_WARNING_OPTS
297 if test "$compiler_id" = "INTEL_UNIX_C"; then
299 if test "$compiler_num" -ge "1000"; then
300 dnl icc 10.X or later
301 CFLAGS="$CFLAGS -shared-intel"
302 elif test "$compiler_num" -ge "900"; then
304 CFLAGS="$CFLAGS -i-dynamic"
309 CURL_CHECK_COMPILER_HALT_ON_ERROR
310 CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
311 CURL_CHECK_COMPILER_PROTOTYPE_MISMATCH
312 CURL_CHECK_COMPILER_SYMBOL_HIDING
314 CURL_CHECK_NO_UNDEFINED
315 AM_CONDITIONAL(NO_UNDEFINED, test x$need_no_undefined = xyes)
318 AM_CONDITIONAL(CURLDEBUG, test x$want_curldebug = xyes)
320 supports_unittests=yes
321 # cross-compilation of unit tests static library/programs fails when
322 # libcurl shared library is built. This might be due to a libtool or
323 # automake issue. In this case we disable unit tests.
324 if test "x$cross_compiling" != "xno" &&
325 test "x$enable_shared" != "xno"; then
326 supports_unittests=no
329 # IRIX 6.5.24 gcc 3.3 autobuilds fail unittests library compilation due to
330 # a problem related with OpenSSL headers and library versions not matching.
331 # Disable unit tests while time to further investigate this is found.
334 if test "$compiler_id" = "GNU_C"; then
335 supports_unittests=no
340 # All AIX autobuilds fails unit tests linking against unittests library
341 # due to unittests library being built with no symbols or members. Libtool ?
342 # Disable unit tests while time to further investigate this is found.
345 supports_unittests=no
349 dnl Build unit tests when option --enable-debug is given.
350 if test "x$want_debug" = "xyes" &&
351 test "x$supports_unittests" = "xyes"; then
356 AM_CONDITIONAL(BUILD_UNITTESTS, test x$want_unittests = xyes)
358 dnl **********************************************************************
359 dnl Compilation based checks should not be done before this point.
360 dnl **********************************************************************
362 dnl **********************************************************************
363 dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
364 dnl and ws2tcpip.h take precedence over any other further checks which
365 dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
366 dnl this specific header files. And do them before its results are used.
367 dnl **********************************************************************
369 CURL_CHECK_HEADER_WINDOWS
370 CURL_CHECK_NATIVE_WINDOWS
371 case X-"$ac_cv_native_windows" in
373 CURL_CHECK_HEADER_WINSOCK
374 CURL_CHECK_HEADER_WINSOCK2
375 CURL_CHECK_HEADER_WS2TCPIP
376 CURL_CHECK_HEADER_WINLDAP
377 CURL_CHECK_HEADER_WINBER
380 ac_cv_header_winsock_h="no"
381 ac_cv_header_winsock2_h="no"
382 ac_cv_header_ws2tcpip_h="no"
383 ac_cv_header_winldap_h="no"
384 ac_cv_header_winber_h="no"
387 CURL_CHECK_WIN32_LARGEFILE
389 dnl ************************************************************
390 dnl switch off particular protocols
392 AC_MSG_CHECKING([whether to support http])
394 AC_HELP_STRING([--enable-http],[Enable HTTP support])
395 AC_HELP_STRING([--disable-http],[Disable HTTP support]),
396 [ case "$enableval" in
399 AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP])
400 AC_MSG_WARN([disable HTTP disables FTP over proxy and RTSP])
401 AC_SUBST(CURL_DISABLE_HTTP, [1])
402 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
403 AC_SUBST(CURL_DISABLE_RTSP, [1])
405 *) AC_MSG_RESULT(yes)
410 AC_MSG_CHECKING([whether to support ftp])
412 AC_HELP_STRING([--enable-ftp],[Enable FTP support])
413 AC_HELP_STRING([--disable-ftp],[Disable FTP support]),
414 [ case "$enableval" in
417 AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP])
418 AC_SUBST(CURL_DISABLE_FTP, [1])
420 *) AC_MSG_RESULT(yes)
425 AC_MSG_CHECKING([whether to support file])
427 AC_HELP_STRING([--enable-file],[Enable FILE support])
428 AC_HELP_STRING([--disable-file],[Disable FILE support]),
429 [ case "$enableval" in
432 AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE])
433 AC_SUBST(CURL_DISABLE_FILE, [1])
435 *) AC_MSG_RESULT(yes)
440 AC_MSG_CHECKING([whether to support ldap])
442 AC_HELP_STRING([--enable-ldap],[Enable LDAP support])
443 AC_HELP_STRING([--disable-ldap],[Disable LDAP support]),
444 [ case "$enableval" in
447 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
448 AC_SUBST(CURL_DISABLE_LDAP, [1])
456 AC_MSG_CHECKING([whether to support ldaps])
458 AC_HELP_STRING([--enable-ldaps],[Enable LDAPS support])
459 AC_HELP_STRING([--disable-ldaps],[Disable LDAPS support]),
460 [ case "$enableval" in
463 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
464 AC_SUBST(CURL_DISABLE_LDAPS, [1])
466 *) if test "x$CURL_DISABLE_LDAP" = "x1" ; then
467 AC_MSG_RESULT(LDAP needs to be enabled to support LDAPS)
468 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
469 AC_SUBST(CURL_DISABLE_LDAPS, [1])
472 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
473 AC_SUBST(HAVE_LDAP_SSL, [1])
477 if test "x$CURL_DISABLE_LDAP" = "x1" ; then
479 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
480 AC_SUBST(CURL_DISABLE_LDAPS, [1])
483 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
484 AC_SUBST(HAVE_LDAP_SSL, [1])
488 AC_MSG_CHECKING([whether to support rtsp])
490 AC_HELP_STRING([--enable-rtsp],[Enable RTSP support])
491 AC_HELP_STRING([--disable-rtsp],[Disable RTSP support]),
492 [ case "$enableval" in
495 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
496 AC_SUBST(CURL_DISABLE_RTSP, [1])
498 *) if test x$CURL_DISABLE_HTTP = x1 ; then
499 AC_MSG_ERROR(HTTP support needs to be enabled in order to enable RTSP support!)
502 curl_rtsp_msg="enabled"
506 if test "x$CURL_DISABLE_HTTP" != "x1"; then
508 curl_rtsp_msg="enabled"
514 AC_MSG_CHECKING([whether to support proxies])
516 AC_HELP_STRING([--enable-proxy],[Enable proxy support])
517 AC_HELP_STRING([--disable-proxy],[Disable proxy support]),
518 [ case "$enableval" in
521 AC_DEFINE(CURL_DISABLE_PROXY, 1, [to disable proxies])
522 AC_SUBST(CURL_DISABLE_PROXY, [1])
524 *) AC_MSG_RESULT(yes)
530 AC_MSG_CHECKING([whether to support dict])
532 AC_HELP_STRING([--enable-dict],[Enable DICT support])
533 AC_HELP_STRING([--disable-dict],[Disable DICT support]),
534 [ case "$enableval" in
537 AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT])
538 AC_SUBST(CURL_DISABLE_DICT, [1])
540 *) AC_MSG_RESULT(yes)
545 AC_MSG_CHECKING([whether to support telnet])
546 AC_ARG_ENABLE(telnet,
547 AC_HELP_STRING([--enable-telnet],[Enable TELNET support])
548 AC_HELP_STRING([--disable-telnet],[Disable TELNET support]),
549 [ case "$enableval" in
552 AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
553 AC_SUBST(CURL_DISABLE_TELNET, [1])
555 *) AC_MSG_RESULT(yes)
560 AC_MSG_CHECKING([whether to support tftp])
562 AC_HELP_STRING([--enable-tftp],[Enable TFTP support])
563 AC_HELP_STRING([--disable-tftp],[Disable TFTP support]),
564 [ case "$enableval" in
567 AC_DEFINE(CURL_DISABLE_TFTP, 1, [to disable TFTP])
568 AC_SUBST(CURL_DISABLE_TFTP, [1])
570 *) AC_MSG_RESULT(yes)
576 AC_MSG_CHECKING([whether to support pop3])
578 AC_HELP_STRING([--enable-pop3],[Enable POP3 support])
579 AC_HELP_STRING([--disable-pop3],[Disable POP3 support]),
580 [ case "$enableval" in
583 AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3])
584 AC_SUBST(CURL_DISABLE_POP3, [1])
586 *) AC_MSG_RESULT(yes)
593 AC_MSG_CHECKING([whether to support imap])
595 AC_HELP_STRING([--enable-imap],[Enable IMAP support])
596 AC_HELP_STRING([--disable-imap],[Disable IMAP support]),
597 [ case "$enableval" in
600 AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP])
601 AC_SUBST(CURL_DISABLE_IMAP, [1])
603 *) AC_MSG_RESULT(yes)
610 AC_MSG_CHECKING([whether to support smtp])
612 AC_HELP_STRING([--enable-smtp],[Enable SMTP support])
613 AC_HELP_STRING([--disable-smtp],[Disable SMTP support]),
614 [ case "$enableval" in
617 AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP])
618 AC_SUBST(CURL_DISABLE_SMTP, [1])
620 *) AC_MSG_RESULT(yes)
626 AC_MSG_CHECKING([whether to support gopher])
627 AC_ARG_ENABLE(gopher,
628 AC_HELP_STRING([--enable-gopher],[Enable Gopher support])
629 AC_HELP_STRING([--disable-gopher],[Disable Gopher support]),
630 [ case "$enableval" in
633 AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable Gopher])
634 AC_SUBST(CURL_DISABLE_GOPHER, [1])
636 *) AC_MSG_RESULT(yes)
643 dnl **********************************************************************
644 dnl Check for built-in manual
645 dnl **********************************************************************
647 AC_MSG_CHECKING([whether to provide built-in manual])
648 AC_ARG_ENABLE(manual,
649 AC_HELP_STRING([--enable-manual],[Enable built-in manual])
650 AC_HELP_STRING([--disable-manual],[Disable built-in manual]),
651 [ case "$enableval" in
655 *) AC_MSG_RESULT(yes)
662 dnl The actual use of the USE_MANUAL variable is done much later in this
663 dnl script to allow other actions to disable it as well.
665 dnl ************************************************************
666 dnl disable C code generation support
668 AC_MSG_CHECKING([whether to enable generation of C code])
669 AC_ARG_ENABLE(libcurl_option,
670 AC_HELP_STRING([--enable-libcurl-option],[Enable --libcurl C code generation support])
671 AC_HELP_STRING([--disable-libcurl-option],[Disable --libcurl C code generation support]),
672 [ case "$enableval" in
675 AC_DEFINE(CURL_DISABLE_LIBCURL_OPTION, 1, [to disable --libcurl C code generation option])
676 curl_libcurl_msg="no"
678 *) AC_MSG_RESULT(yes)
684 dnl **********************************************************************
685 dnl Checks for libraries.
686 dnl **********************************************************************
688 AC_MSG_CHECKING([whether to use libgcc])
689 AC_ARG_ENABLE(libgcc,
690 AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
691 [ case "$enableval" in
704 dnl gethostbyname without lib or in the nsl lib?
705 AC_CHECK_FUNC(gethostbyname,
706 [HAVE_GETHOSTBYNAME="1"
708 [ AC_CHECK_LIB(nsl, gethostbyname,
709 [HAVE_GETHOSTBYNAME="1"
714 if test "$HAVE_GETHOSTBYNAME" != "1"
716 dnl gethostbyname in the socket lib?
717 AC_CHECK_LIB(socket, gethostbyname,
718 [HAVE_GETHOSTBYNAME="1"
719 LIBS="-lsocket $LIBS"
723 if test "$HAVE_GETHOSTBYNAME" != "1"
725 dnl gethostbyname in the watt lib?
726 AC_CHECK_LIB(watt, gethostbyname,
727 [HAVE_GETHOSTBYNAME="1"
728 CPPFLAGS="-I/dev/env/WATT_ROOT/inc"
729 LDFLAGS="-L/dev/env/WATT_ROOT/lib"
734 dnl At least one system has been identified to require BOTH nsl and socket
735 dnl libs at the same time to link properly.
736 if test "$HAVE_GETHOSTBYNAME" != "1"
738 AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs])
739 my_ac_save_LIBS=$LIBS
740 LIBS="-lnsl -lsocket $LIBS"
748 HAVE_GETHOSTBYNAME="1"
751 LIBS=$my_ac_save_LIBS
755 if test "$HAVE_GETHOSTBYNAME" != "1"
757 dnl This is for winsock systems
758 if test "$ac_cv_header_windows_h" = "yes"; then
759 if test "$ac_cv_header_winsock_h" = "yes"; then
762 winsock_LIB="-lwinsock"
765 winsock_LIB="-lwsock32"
769 if test "$ac_cv_header_winsock2_h" = "yes"; then
770 winsock_LIB="-lws2_32"
772 if test ! -z "$winsock_LIB"; then
773 my_ac_save_LIBS=$LIBS
774 LIBS="$winsock_LIB $LIBS"
775 AC_MSG_CHECKING([for gethostbyname in $winsock_LIB])
778 #ifdef HAVE_WINDOWS_H
779 #ifndef WIN32_LEAN_AND_MEAN
780 #define WIN32_LEAN_AND_MEAN
783 #ifdef HAVE_WINSOCK2_H
784 #include <winsock2.h>
786 #ifdef HAVE_WINSOCK_H
792 gethostbyname("www.dummysite.com");
796 HAVE_GETHOSTBYNAME="1"
800 LIBS=$my_ac_save_LIBS
806 if test "$HAVE_GETHOSTBYNAME" != "1"
808 dnl This is for Minix 3.1
809 AC_MSG_CHECKING([for gethostbyname for Minix 3])
812 /* Older Minix versions may need <net/gen/netdb.h> here instead */
815 gethostbyname("www.dummysite.com");
819 HAVE_GETHOSTBYNAME="1"
825 if test "$HAVE_GETHOSTBYNAME" != "1"
827 dnl This is for eCos with a stubbed DNS implementation
828 AC_MSG_CHECKING([for gethostbyname for eCos])
834 gethostbyname("www.dummysite.com");
838 HAVE_GETHOSTBYNAME="1"
844 if test "$HAVE_GETHOSTBYNAME" != "1"
846 dnl gethostbyname in the network lib - for Haiku OS
847 AC_CHECK_LIB(network, gethostbyname,
848 [HAVE_GETHOSTBYNAME="1"
849 LIBS="-lnetwork $LIBS"
853 if test "$HAVE_GETHOSTBYNAME" != "1"
855 dnl gethostbyname in the net lib - for BeOS
856 AC_CHECK_LIB(net, gethostbyname,
857 [HAVE_GETHOSTBYNAME="1"
863 if test "$HAVE_GETHOSTBYNAME" != "1"; then
864 AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
868 AC_CHECK_FUNC(strcasecmp, , [ AC_CHECK_LIB(resolve, strcasecmp) ])
870 if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
871 AC_CHECK_LIB(resolve, strcasecmp,
872 [LIBS="-lresolve $LIBS"],
876 ac_cv_func_strcasecmp="no"
878 CURL_CHECK_LIBS_CONNECT
880 CURL_NETWORK_LIBS=$LIBS
882 dnl **********************************************************************
883 dnl In case that function clock_gettime with monotonic timer is available,
884 dnl check for additional required libraries.
885 dnl **********************************************************************
886 CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
888 dnl **********************************************************************
889 dnl The preceding library checks are all potentially useful for test
890 dnl servers and libtest cases which require networking and clock_gettime
891 dnl support. Save the list of required libraries at this point for use
892 dnl while linking those test servers and programs.
893 dnl **********************************************************************
894 CURL_NETWORK_AND_TIME_LIBS=$LIBS
896 dnl **********************************************************************
897 dnl Check for the presence of ZLIB libraries and headers
898 dnl **********************************************************************
900 dnl Check for & handle argument to --with-zlib.
902 clean_CPPFLAGS=$CPPFLAGS
903 clean_LDFLAGS=$LDFLAGS
907 AC_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
908 AC_HELP_STRING([--without-zlib],[disable use of zlib]),
909 [OPT_ZLIB="$withval"])
911 if test "$OPT_ZLIB" = "no" ; then
912 AC_MSG_WARN([zlib disabled])
914 if test "$OPT_ZLIB" = "yes" ; then
918 if test -z "$OPT_ZLIB" ; then
919 dnl check for the lib first without setting any new path, since many
920 dnl people have it in the default path
922 AC_CHECK_LIB(z, inflateEnd,
923 dnl libz found, set the variable
926 dnl if no lib found, try /usr/local
927 [OPT_ZLIB="/usr/local"])
931 dnl Add a nonempty path to the compiler flags
932 if test -n "$OPT_ZLIB"; then
933 CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include"
934 LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff"
937 AC_CHECK_HEADER(zlib.h,
941 dnl if the lib wasn't found already, try again with the new paths
942 if test "$HAVE_LIBZ" != "1"; then
943 AC_CHECK_LIB(z, gzread,
945 dnl the lib was found!
949 [ CPPFLAGS=$clean_CPPFLAGS
950 LDFLAGS=$clean_LDFLAGS])
954 dnl zlib.h was not found, restore the flags
955 CPPFLAGS=$clean_CPPFLAGS
956 LDFLAGS=$clean_LDFLAGS]
959 if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1"
961 AC_MSG_WARN([configure found only the libz lib, not the header file!])
963 CPPFLAGS=$clean_CPPFLAGS
964 LDFLAGS=$clean_LDFLAGS
966 elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1"
968 AC_MSG_WARN([configure found only the libz header file, not the lib!])
969 CPPFLAGS=$clean_CPPFLAGS
970 LDFLAGS=$clean_LDFLAGS
972 elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1"
974 dnl both header and lib were found!
976 AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file])
977 AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available])
980 LIBS="-lz $clean_LIBS"
982 dnl replace 'HAVE_LIBZ' in the automake makefile.ams
984 AC_MSG_NOTICE([found both libz and libz.h header])
985 curl_zlib_msg="enabled"
989 dnl set variable for use in automakefile(s)
990 AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1)
993 dnl **********************************************************************
995 dnl **********************************************************************
998 AC_ARG_WITH(ldap-lib,
999 AC_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]),
1000 [LDAPLIBNAME="$withval"])
1003 AC_ARG_WITH(lber-lib,
1004 AC_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]),
1005 [LBERLIBNAME="$withval"])
1007 if test x$CURL_DISABLE_LDAP != x1 ; then
1009 CURL_CHECK_HEADER_LBER
1010 CURL_CHECK_HEADER_LDAP
1011 CURL_CHECK_HEADER_LDAPSSL
1012 CURL_CHECK_HEADER_LDAP_SSL
1014 if test -z "$LDAPLIBNAME" ; then
1015 if test "$ac_cv_native_windows" = "yes"; then
1016 dnl Windows uses a single and unique LDAP library name
1017 LDAPLIBNAME="wldap32"
1022 if test "$LDAPLIBNAME" ; then
1023 AC_CHECK_LIB("$LDAPLIBNAME", ldap_init,, [
1024 AC_MSG_WARN(["$LDAPLIBNAME" is not an LDAP library: LDAP disabled])
1025 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1026 AC_SUBST(CURL_DISABLE_LDAP, [1])
1027 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1028 AC_SUBST(CURL_DISABLE_LDAPS, [1])])
1030 dnl Try to find the right ldap libraries for this system
1031 CURL_CHECK_LIBS_LDAP
1032 case X-"$curl_cv_ldap_LIBS" in
1034 AC_MSG_WARN([Cannot find libraries for LDAP support: LDAP disabled])
1035 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1036 AC_SUBST(CURL_DISABLE_LDAP, [1])
1037 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1038 AC_SUBST(CURL_DISABLE_LDAPS, [1])
1044 if test x$CURL_DISABLE_LDAP != x1 ; then
1046 if test "$LBERLIBNAME" ; then
1047 dnl If name is "no" then don't define this library at all
1048 dnl (it's only needed if libldap.so's dependencies are broken).
1049 if test "$LBERLIBNAME" != "no" ; then
1050 AC_CHECK_LIB("$LBERLIBNAME", ber_free,, [
1051 AC_MSG_WARN(["$LBERLIBNAME" is not an LBER library: LDAP disabled])
1052 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1053 AC_SUBST(CURL_DISABLE_LDAP, [1])
1054 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1055 AC_SUBST(CURL_DISABLE_LDAPS, [1])])
1060 if test x$CURL_DISABLE_LDAP != x1 ; then
1061 AC_CHECK_FUNCS([ldap_url_parse ldap_init_fd])
1063 if test "$LDAPLIBNAME" = "wldap32"; then
1064 curl_ldap_msg="enabled (winldap)"
1065 AC_DEFINE(CURL_LDAP_WIN, 1, [Use Windows LDAP implementation])
1067 curl_ldap_msg="enabled (OpenLDAP)"
1068 if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then
1069 AC_DEFINE(USE_OPENLDAP, 1, [Use OpenLDAP-specific code])
1070 AC_SUBST(USE_OPENLDAP, [1])
1075 if test x$CURL_DISABLE_LDAPS != x1 ; then
1076 curl_ldaps_msg="enabled"
1079 dnl **********************************************************************
1081 dnl **********************************************************************
1083 AC_MSG_CHECKING([whether to enable ipv6])
1085 AC_HELP_STRING([--enable-ipv6],[Enable ipv6 (with ipv4) support])
1086 AC_HELP_STRING([--disable-ipv6],[Disable ipv6 support]),
1087 [ case "$enableval" in
1092 *) AC_MSG_RESULT(yes)
1097 AC_TRY_RUN([ /* is AF_INET6 available? */
1098 #include <sys/types.h>
1099 #include <sys/socket.h>
1102 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1116 if test "$ipv6" = "yes"; then
1117 curl_ipv6_msg="enabled"
1120 # Check if struct sockaddr_in6 have sin6_scope_id member
1121 if test "$ipv6" = yes; then
1122 AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member])
1124 #include <sys/types.h>
1125 #include <netinet/in.h>] ,
1126 struct sockaddr_in6 s; s.sin6_scope_id = 0; , have_sin6_scope_id=yes)
1127 if test "$have_sin6_scope_id" = yes; then
1128 AC_MSG_RESULT([yes])
1129 AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member])
1135 dnl **********************************************************************
1136 dnl Check if the operating system allows programs to write to their own argv[]
1137 dnl **********************************************************************
1139 AC_MSG_CHECKING([if argv can be written to])
1142 int main(int argc, char ** argv) {
1144 return (argv[0][0] == ' ')?0:1;
1148 curl_cv_writable_argv=yes
1150 curl_cv_writable_argv=no
1152 curl_cv_writable_argv=cross
1154 case $curl_cv_writable_argv in
1156 AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv])
1164 AC_MSG_WARN([the previous check could not be made default was used])
1168 dnl **********************************************************************
1169 dnl Check for the presence of Kerberos4 libraries and headers
1170 dnl **********************************************************************
1172 AC_ARG_WITH(krb4-includes,
1173 AC_HELP_STRING([--with-krb4-includes=DIR],
1174 [Specify location of kerberos4 headers]),[
1175 CPPFLAGS="$CPPFLAGS -I$withval"
1180 AC_ARG_WITH(krb4-libs,
1181 AC_HELP_STRING([--with-krb4-libs=DIR],[Specify location of kerberos4 libs]),[
1182 LDFLAGS="$LDFLAGS -L$withval"
1189 AC_ARG_WITH(krb4,dnl
1190 AC_HELP_STRING([--with-krb4=DIR],[where to look for Kerberos4]),[
1192 if test X"$OPT_KRB4" != Xno; then
1194 if test X"$OPT_KRB4" != Xyes; then
1195 LDFLAGS="$LDFLAGS -L$OPT_KRB4/lib$libsuff"
1196 KRB4LIB="$OPT_KRB4/lib$libsuff"
1197 CPPFLAGS="$CPPFLAGS -I$OPT_KRB4/include"
1198 KRB4INC="$OPT_KRB4/include"
1203 AC_MSG_CHECKING([if Kerberos4 support is requested])
1205 if test "$want_krb4" = yes
1207 if test "$ipv6" = "yes"; then
1208 echo krb4 is not compatible with IPv6
1213 dnl Check for & handle argument to --with-krb4
1215 AC_MSG_CHECKING(where to look for Kerberos4)
1216 if test X"$OPT_KRB4" = Xyes
1218 AC_MSG_RESULT([defaults])
1220 AC_MSG_RESULT([libs in $KRB4LIB, headers in $KRB4INC])
1223 dnl Check for DES library
1224 AC_CHECK_LIB(des, des_pcbc_encrypt,
1226 AC_CHECK_HEADERS(des.h)
1229 AC_CHECK_FUNC(res_search, , [AC_CHECK_LIB(resolv, res_search)])
1231 dnl Check for the Kerberos4 library
1232 AC_CHECK_LIB(krb, krb_net_read,
1234 dnl Check for header files
1235 AC_CHECK_HEADERS(krb.h)
1237 dnl we found the required libraries, add to LIBS
1238 LIBS="-lkrb -lcom_err -ldes $LIBS"
1240 dnl Check for function krb_get_our_ip_for_realm
1241 dnl this is needed for NAT networks
1242 AC_CHECK_FUNCS(krb_get_our_ip_for_realm)
1245 AC_DEFINE(HAVE_KRB4, 1,
1246 [if you have the Kerberos4 libraries (including -ldes)])
1248 dnl substitute it too!
1250 AC_SUBST(KRB4_ENABLED)
1252 curl_krb4_msg="enabled"
1254 dnl the krb4 stuff needs a strlcpy()
1255 AC_CHECK_FUNCS(strlcpy)
1263 dnl **********************************************************************
1264 dnl Check for FBopenssl(SPNEGO) libraries
1265 dnl **********************************************************************
1268 AC_HELP_STRING([--with-spnego=DIR],
1269 [Specify location of SPNEGO library fbopenssl]), [
1270 SPNEGO_ROOT="$withval"
1271 if test x"$SPNEGO_ROOT" != xno; then
1276 AC_MSG_CHECKING([if SPNEGO support is requested])
1277 if test x"$want_spnego" = xyes; then
1279 if test X"$SPNEGO_ROOT" = Xyes; then
1280 AC_MSG_ERROR([FBOpenSSL libs and/or directories were not found where specified!])
1283 if test -z "$SPNEGO_LIB_DIR"; then
1284 LDFLAGS="$LDFLAGS -L$SPNEGO_ROOT -lfbopenssl"
1286 LDFLAGS="$LDFLAGS $SPNEGO_LIB_DIR"
1290 AC_DEFINE(HAVE_SPNEGO, 1,
1291 [Define this if you have the SPNEGO library fbopenssl])
1292 curl_spnego_msg="enabled"
1298 dnl **********************************************************************
1299 dnl Check for GSS-API libraries
1300 dnl **********************************************************************
1302 dnl check for gss stuff in the /usr as default
1305 AC_ARG_WITH(gssapi-includes,
1306 AC_HELP_STRING([--with-gssapi-includes=DIR],
1307 [Specify location of GSSAPI header]),
1308 [ GSSAPI_INCS="-I$withval"
1312 AC_ARG_WITH(gssapi-libs,
1313 AC_HELP_STRING([--with-gssapi-libs=DIR],
1314 [Specify location of GSSAPI libs]),
1315 [ GSSAPI_LIB_DIR="-L$withval"
1320 AC_HELP_STRING([--with-gssapi=DIR],
1321 [Where to look for GSSAPI]), [
1322 GSSAPI_ROOT="$withval"
1323 if test x"$GSSAPI_ROOT" != xno; then
1325 if test x"$GSSAPI_ROOT" = xyes; then
1326 dnl if yes, then use default root
1332 save_CPPFLAGS="$CPPFLAGS"
1333 AC_MSG_CHECKING([if GSSAPI support is requested])
1334 if test x"$want_gss" = xyes; then
1337 if test -z "$GSSAPI_INCS"; then
1338 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1339 GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
1340 elif test "$GSSAPI_ROOT" != "yes"; then
1341 GSSAPI_INCS="-I$GSSAPI_ROOT/include"
1345 CPPFLAGS="$CPPFLAGS $GSSAPI_INCS"
1347 AC_CHECK_HEADER(gss.h,
1349 dnl found in the given dirs
1350 AC_DEFINE(HAVE_GSSGNU, 1, [if you have the GNU gssapi libraries])
1354 dnl not found, check Heimdal or MIT
1355 AC_CHECK_HEADERS([gssapi/gssapi.h], [], [not_mit=1])
1357 [gssapi/gssapi_generic.h gssapi/gssapi_krb5.h],
1362 #ifdef HAVE_GSSAPI_GSSAPI_H
1363 #include <gssapi/gssapi.h>
1366 if test "x$not_mit" = "x1"; then
1367 dnl MIT not found, check for Heimdal
1368 AC_CHECK_HEADER(gssapi.h,
1371 AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have the Heimdal gssapi libraries])
1374 dnl no header found, disabling GSS
1376 AC_MSG_WARN(disabling GSSAPI since no header files was found)
1381 AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
1382 dnl check if we have a really old MIT kerberos (<= 1.2)
1383 AC_MSG_CHECKING([if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE])
1386 #include <gssapi/gssapi.h>
1387 #include <gssapi/gssapi_generic.h>
1388 #include <gssapi/gssapi_krb5.h>
1393 GSS_C_NT_HOSTBASED_SERVICE,
1397 AC_MSG_RESULT([yes])
1400 AC_DEFINE(HAVE_OLD_GSSMIT, 1,
1401 [if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE])
1409 if test x"$want_gss" = xyes; then
1410 AC_DEFINE(HAVE_GSSAPI, 1, [if you have the gssapi libraries])
1412 curl_gss_msg="enabled (MIT/Heimdal)"
1414 if test -n "$gnu_gss"; then
1415 curl_gss_msg="enabled (GNU GSS)"
1416 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1418 elif test -z "$GSSAPI_LIB_DIR"; then
1421 LIBS="-lgssapi_krb5 -lresolv $LIBS"
1424 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1425 dnl krb5-config doesn't have --libs-only-L or similar, put everything
1427 gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
1428 LIBS="$gss_libs $LIBS"
1429 elif test "$GSSAPI_ROOT" != "yes"; then
1430 LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
1431 LIBS="-lgssapi $LIBS"
1433 LIBS="-lgssapi $LIBS"
1438 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1439 LIBS="-lgssapi $LIBS"
1442 CPPFLAGS="$save_CPPFLAGS"
1445 dnl -------------------------------------------------
1446 dnl check winssl option before other SSL libraries
1447 dnl -------------------------------------------------
1450 AC_ARG_WITH(winssl,dnl
1451 AC_HELP_STRING([--with-winssl],[enable Windows native SSL/TLS])
1452 AC_HELP_STRING([--without-winssl], [disable Windows native SSL/TLS]),
1453 OPT_WINSSL=$withval)
1455 AC_MSG_CHECKING([whether to enable Windows native SSL/TLS (Windows native builds only)])
1456 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1457 if test "x$OPT_WINSSL" != "xno" &&
1458 test "x$ac_cv_native_windows" = "xyes"; then
1460 AC_DEFINE(USE_SCHANNEL, 1, [to enable Windows native SSL/TLS support])
1461 AC_SUBST(USE_SCHANNEL, [1])
1462 curl_ssl_msg="enabled (Windows-native)"
1464 # --with-winssl implies --enable-sspi
1465 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
1466 AC_SUBST(USE_WINDOWS_SSPI, [1])
1467 curl_sspi_msg="enabled"
1476 AC_ARG_WITH(darwinssl,dnl
1477 AC_HELP_STRING([--with-darwinssl],[enable iOS/Mac OS X native SSL/TLS])
1478 AC_HELP_STRING([--without-darwinssl], [disable iOS/Mac OS X native SSL/TLS]),
1479 OPT_DARWINSSL=$withval)
1481 AC_MSG_CHECKING([whether to enable iOS/Mac OS X native SSL/TLS])
1482 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1483 if test "x$OPT_DARWINSSL" != "xno" &&
1484 test -d "/System/Library/Frameworks/Security.framework"; then
1486 AC_DEFINE(USE_DARWINSSL, 1, [to enable iOS/Mac OS X native SSL/TLS support])
1487 AC_SUBST(USE_DARWINSSL, [1])
1488 curl_ssl_msg="enabled (iOS/Mac OS X-native)"
1490 LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Security"
1498 dnl **********************************************************************
1499 dnl Check for the presence of SSL libraries and headers
1500 dnl **********************************************************************
1502 dnl Default to compiler & linker defaults for SSL files & libraries.
1504 dnl Default to no CA bundle
1507 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])
1508 AC_HELP_STRING([--without-ssl], [disable OpenSSL]),
1511 if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
1512 dnl backup the pre-ssl variables
1513 CLEANLDFLAGS="$LDFLAGS"
1514 CLEANCPPFLAGS="$CPPFLAGS"
1519 dnl --with-ssl (without path) used
1520 if test x$cross_compiling != xyes; then
1521 dnl only do pkg-config magic when not cross-compiling
1524 PREFIX_OPENSSL=/usr/local/ssl
1525 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1528 dnl no --with-ssl option given, just check default places
1529 if test x$cross_compiling != xyes; then
1530 dnl only do pkg-config magic when not cross-compiling
1536 dnl check the given --with-ssl spot
1538 PREFIX_OPENSSL=$OPT_SSL
1540 dnl Try pkg-config even when cross-compiling. Since we
1541 dnl specify PKG_CONFIG_LIBDIR we're only looking where
1542 dnl the user told us to look
1543 OPENSSL_PCDIR="$OPT_SSL/lib/pkgconfig"
1544 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$OPENSSL_PCDIR"])
1545 if test -f "$OPENSSL_PCDIR/openssl.pc"; then
1549 dnl in case pkg-config comes up empty, use what we got
1551 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1552 if test "$PREFIX_OPENSSL" != "/usr" ; then
1553 SSL_LDFLAGS="-L$LIB_OPENSSL"
1554 SSL_CPPFLAGS="-I$PREFIX_OPENSSL/include"
1556 SSL_CPPFLAGS="$SSL_CPPFLAGS -I$PREFIX_OPENSSL/include/openssl"
1560 if test "$PKGTEST" = "yes"; then
1562 CURL_CHECK_PKGCONFIG(openssl, [$OPENSSL_PCDIR])
1564 if test "$PKGCONFIG" != "no" ; then
1565 SSL_LIBS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1566 $PKGCONFIG --libs-only-l openssl 2>/dev/null`
1568 SSL_LDFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1569 $PKGCONFIG --libs-only-L openssl 2>/dev/null`
1571 SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1572 $PKGCONFIG --cflags-only-I openssl 2>/dev/null`
1574 AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"])
1575 AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"])
1576 AC_MSG_NOTICE([pkg-config: SSL_CPPFLAGS: "$SSL_CPPFLAGS"])
1578 LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/-L//g'`
1580 dnl use the values pkg-config reported. This is here
1581 dnl instead of below with CPPFLAGS and LDFLAGS because we only
1582 dnl learn about this via pkg-config. If we only have
1583 dnl the argument to --with-ssl we don't know what
1584 dnl additional libs may be necessary. Hope that we
1586 LIBS="$SSL_LIBS $LIBS"
1590 dnl finally, set flags to use SSL
1591 CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
1592 LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
1594 dnl This is for Msys/Mingw
1596 *-*-msys* | *-*-mingw*)
1597 AC_MSG_CHECKING([for gdi32])
1598 my_ac_save_LIBS=$LIBS
1599 LIBS="-lgdi32 $LIBS"
1600 AC_TRY_LINK([#include <windef.h>
1601 #include <wingdi.h>],
1604 AC_MSG_RESULT([yes])],
1605 [ dnl failed, restore LIBS
1606 LIBS=$my_ac_save_LIBS
1612 AC_CHECK_LIB(crypto, CRYPTO_lock,[
1614 LIBS="-lcrypto $LIBS"
1616 LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL"
1617 CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include"
1618 AC_CHECK_LIB(crypto, CRYPTO_add_lock,[
1620 LIBS="-lcrypto $LIBS"], [
1621 LDFLAGS="$CLEANLDFLAGS"
1622 CPPFLAGS="$CLEANCPPFLAGS"
1628 if test X"$HAVECRYPTO" = X"yes"; then
1629 dnl This is only reasonable to do if crypto actually is there: check for
1630 dnl SSL libs NOTE: it is important to do this AFTER the crypto lib
1632 AC_CHECK_LIB(ssl, SSL_connect)
1634 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1635 dnl we didn't find the SSL lib, try the RSAglue/rsaref stuff
1636 AC_MSG_CHECKING(for ssl with RSAglue/rsaref libs in use);
1638 LIBS="-lRSAglue -lrsaref $LIBS"
1639 AC_CHECK_LIB(ssl, SSL_connect)
1640 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1641 dnl still no SSL_connect
1650 dnl Have the libraries--check for SSLeay/OpenSSL headers
1651 AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
1652 openssl/pem.h openssl/ssl.h openssl/err.h,
1653 curl_ssl_msg="enabled (OpenSSL)"
1655 AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]))
1657 if test $ac_cv_header_openssl_x509_h = no; then
1658 dnl we don't use the "action" part of the AC_CHECK_HEADERS macro
1659 dnl since 'err.h' might in fact find a krb4 header with the same
1661 AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h)
1663 if test $ac_cv_header_x509_h = yes &&
1664 test $ac_cv_header_crypto_h = yes &&
1665 test $ac_cv_header_ssl_h = yes; then
1667 curl_ssl_msg="enabled (OpenSSL)"
1673 if test X"$OPENSSL_ENABLED" = X"1"; then
1674 AC_DEFINE(USE_SSLEAY, 1, [if SSL is enabled])
1676 dnl is there a pkcs12.h header present?
1677 AC_CHECK_HEADERS(openssl/pkcs12.h)
1681 dnl USE_SSLEAY is the historical name for what configure calls
1682 dnl OPENSSL_ENABLED; the names should really be unified
1683 USE_SSLEAY="$OPENSSL_ENABLED"
1684 AC_SUBST(USE_SSLEAY)
1686 if test X"$OPT_SSL" != Xoff &&
1687 test "$OPENSSL_ENABLED" != "1"; then
1688 AC_MSG_ERROR([OpenSSL libs and/or directories were not found where specified!])
1692 if test X"$OPENSSL_ENABLED" = X"1"; then
1693 dnl If the ENGINE library seems to be around, check for the OpenSSL engine
1694 dnl stuff, it is kind of "separated" from the main SSL check
1695 AC_CHECK_FUNC(ENGINE_init,
1697 AC_CHECK_HEADERS(openssl/engine.h)
1698 AC_CHECK_FUNCS( ENGINE_load_builtin_engines )
1701 dnl these can only exist if openssl exists
1702 dnl yassl doesn't have SSL_get_shutdown
1704 AC_CHECK_FUNCS( RAND_status \
1708 CRYPTO_cleanup_all_ex_data \
1710 SSLv2_client_method )
1712 dnl Make an attempt to detect if this is actually yassl's headers and
1713 dnl OpenSSL emulation layer. We still leave everything else believing
1714 dnl and acting like OpenSSL.
1716 AC_MSG_CHECKING([for yaSSL using OpenSSL compatibility mode])
1719 #include <openssl/ssl.h>
1721 #if defined(YASSL_VERSION) && defined(OPENSSL_VERSION_NUMBER)
1722 int dummy = SSL_ERROR_NONE;
1724 Not the yaSSL OpenSSL compatibility header.
1728 AC_MSG_RESULT([yes])
1729 AC_DEFINE_UNQUOTED(USE_YASSLEMUL, 1,
1730 [Define to 1 if using yaSSL in OpenSSL compatibility mode.])
1731 curl_ssl_msg="enabled (OpenSSL emulation by yaSSL)"
1737 if test "$OPENSSL_ENABLED" = "1"; then
1738 if test -n "$LIB_OPENSSL"; then
1739 dnl when the ssl shared libs were found in a path that the run-time
1740 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
1741 dnl to prevent further configure tests to fail due to this
1742 if test "x$cross_compiling" != "xyes"; then
1743 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_OPENSSL"
1744 export LD_LIBRARY_PATH
1745 AC_MSG_NOTICE([Added $LIB_OPENSSL to LD_LIBRARY_PATH])
1748 CURL_CHECK_OPENSSL_API
1753 dnl **********************************************************************
1754 dnl Check for the random seed preferences
1755 dnl **********************************************************************
1757 if test X"$OPENSSL_ENABLED" = X"1"; then
1758 AC_ARG_WITH(egd-socket,
1759 AC_HELP_STRING([--with-egd-socket=FILE],
1760 [Entropy Gathering Daemon socket pathname]),
1761 [ EGD_SOCKET="$withval" ]
1763 if test -n "$EGD_SOCKET" ; then
1764 AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET",
1765 [your Entropy Gathering Daemon socket pathname] )
1768 dnl Check for user-specified random device
1770 AC_HELP_STRING([--with-random=FILE],
1771 [read randomness from FILE (default=/dev/urandom)]),
1772 [ RANDOM_FILE="$withval" ],
1774 if test x$cross_compiling != xyes; then
1775 dnl Check for random device
1776 AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
1778 AC_MSG_WARN([skipped the /dev/urandom detection when cross-compiling])
1782 if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
1783 AC_SUBST(RANDOM_FILE)
1784 AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
1785 [a suitable file to read random data from])
1790 dnl We require OpenSSL with SRP support.
1792 if test "$OPENSSL_ENABLED" = "1"; then
1793 AC_CHECK_LIB(crypto, SRP_Calc_client_key,
1795 AC_DEFINE(HAVE_SSLEAY_SRP, 1, [if you have the function SRP_Calc_client_key])
1796 AC_SUBST(HAVE_SSLEAY_SRP, [1])
1800 dnl ----------------------------------------------------
1801 dnl check for GnuTLS
1802 dnl ----------------------------------------------------
1804 dnl Default to compiler & linker defaults for GnuTLS files & libraries.
1807 AC_ARG_WITH(gnutls,dnl
1808 AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root])
1809 AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]),
1810 OPT_GNUTLS=$withval)
1812 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1814 if test X"$OPT_GNUTLS" != Xno; then
1822 if test "x$OPT_GNUTLS" = "xyes"; then
1823 dnl this is with no partiular path given
1824 CURL_CHECK_PKGCONFIG(gnutls)
1826 if test "$PKGCONFIG" != "no" ; then
1827 addlib=`$PKGCONFIG --libs-only-l gnutls`
1828 addld=`$PKGCONFIG --libs-only-L gnutls`
1829 addcflags=`$PKGCONFIG --cflags-only-I gnutls`
1830 version=`$PKGCONFIG --modversion gnutls`
1831 gtlslib=`echo $addld | $SED -e 's/-L//'`
1833 dnl without pkg-config, we try libgnutls-config as that was how it
1835 check=`libgnutls-config --version 2>/dev/null`
1836 if test -n "$check"; then
1837 addlib=`libgnutls-config --libs`
1838 addcflags=`libgnutls-config --cflags`
1839 version=`libgnutls-config --version`
1840 gtlslib=`libgnutls-config --prefix`/lib$libsuff
1844 dnl this is with a given path, first check if there's a libgnutls-config
1845 dnl there and if not, make an educated guess
1846 cfg=$OPT_GNUTLS/bin/libgnutls-config
1847 check=`$cfg --version 2>/dev/null`
1848 if test -n "$check"; then
1849 addlib=`$cfg --libs`
1850 addcflags=`$cfg --cflags`
1851 version=`$cfg --version`
1852 gtlslib=`$cfg --prefix`/lib$libsuff
1854 dnl without pkg-config and libgnutls-config, we guess a lot!
1856 addld=-L$OPT_GNUTLS/lib$libsuff
1857 addcflags=-I$OPT_GNUTLS/include
1858 version="" # we just don't know
1859 gtlslib=$OPT_GNUTLS/lib$libsuff
1863 if test -z "$version"; then
1864 dnl lots of efforts, still no go
1868 if test -n "$addlib"; then
1871 CLEANCPPFLAGS="$CPPFLAGS"
1872 CLEANLDFLAGS="$LDFLAGS"
1874 LIBS="$addlib $LIBS"
1875 LDFLAGS="$LDFLAGS $addld"
1876 if test "$addcflags" != "-I/usr/include"; then
1877 CPPFLAGS="$CPPFLAGS $addcflags"
1880 AC_CHECK_LIB(gnutls, gnutls_check_version,
1882 AC_DEFINE(USE_GNUTLS, 1, [if GnuTLS is enabled])
1883 AC_SUBST(USE_GNUTLS, [1])
1886 curl_ssl_msg="enabled (GnuTLS)"
1890 CPPFLAGS="$CLEANCPPFLAGS"
1893 if test "x$USE_GNUTLS" = "xyes"; then
1894 AC_MSG_NOTICE([detected GnuTLS version $version])
1896 if test -n "$gtlslib"; then
1897 dnl when shared libs were found in a path that the run-time
1898 dnl linker doesn't search through, we need to add it to
1899 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1901 if test "x$cross_compiling" != "xyes"; then
1902 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlslib"
1903 export LD_LIBRARY_PATH
1904 AC_MSG_NOTICE([Added $gtlslib to LD_LIBRARY_PATH])
1911 fi dnl GNUTLS not disabled
1916 dnl Check which crypto backend GnuTLS uses
1919 if test "$GNUTLS_ENABLED" = "1"; then
1921 # First check if we can detect either crypto library via transitive linking
1922 AC_CHECK_LIB(gnutls, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1923 if test "$USE_GNUTLS_NETTLE" = ""; then
1924 AC_CHECK_LIB(gnutls, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1926 # If not, try linking directly to both of them to see if they are available
1927 if test "$USE_GNUTLS_NETTLE" = ""; then
1928 AC_CHECK_LIB(nettle, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1930 if test "$USE_GNUTLS_NETTLE" = ""; then
1931 AC_CHECK_LIB(gcrypt, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1933 if test "$USE_GNUTLS_NETTLE" = ""; then
1934 AC_MSG_ERROR([GnuTLS found, but neither gcrypt nor nettle found])
1936 if test "$USE_GNUTLS_NETTLE" = "1"; then
1937 AC_DEFINE(USE_GNUTLS_NETTLE, 1, [if GnuTLS uses nettle as crypto backend])
1938 AC_SUBST(USE_GNUTLS_NETTLE, [1])
1939 LIBS="-lnettle $LIBS"
1941 LIBS="-lgcrypt $LIBS"
1946 dnl We require GnuTLS with SRP support.
1948 if test "$GNUTLS_ENABLED" = "1"; then
1949 AC_CHECK_LIB(gnutls, gnutls_srp_verifier,
1951 AC_DEFINE(HAVE_GNUTLS_SRP, 1, [if you have the function gnutls_srp_verifier])
1952 AC_SUBST(HAVE_GNUTLS_SRP, [1])
1956 dnl ----------------------------------------------------
1957 dnl check for PolarSSL
1958 dnl ----------------------------------------------------
1960 dnl Default to compiler & linker defaults for PolarSSL files & libraries.
1965 AC_ARG_WITH(polarssl,dnl
1966 AC_HELP_STRING([--with-polarssl=PATH],[where to look for PolarSSL, PATH points to the installation root])
1967 AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]),
1968 OPT_POLARSSL=$withval)
1970 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1972 if test X"$OPT_POLARSSL" != Xno; then
1974 if test "$OPT_POLARSSL" = "yes"; then
1978 if test -z "$OPT_POLARSSL" ; then
1979 dnl check for lib first without setting any new path
1981 AC_CHECK_LIB(polarssl, havege_init,
1982 dnl libpolarssl found, set the variable
1984 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1985 AC_SUBST(USE_POLARSSL, [1])
1988 curl_ssl_msg="enabled (PolarSSL)"
1997 if test "x$USE_POLARSSL" != "xyes"; then
1998 dnl add the path and test again
1999 addld=-L$OPT_POLARSSL/lib$libsuff
2000 addcflags=-I$OPT_POLARSSL/include
2001 polarssllib=$OPT_POLARSSL/lib$libsuff
2003 LDFLAGS="$LDFLAGS $addld"
2004 if test "$addcflags" != "-I/usr/include"; then
2005 CPPFLAGS="$CPPFLAGS $addcflags"
2008 AC_CHECK_LIB(polarssl, ssl_init,
2010 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
2011 AC_SUBST(USE_POLARSSL, [1])
2014 curl_ssl_msg="enabled (PolarSSL)"
2022 if test "x$USE_POLARSSL" = "xyes"; then
2023 AC_MSG_NOTICE([detected PolarSSL])
2025 LIBS="-lpolarssl $LIBS"
2027 if test -n "$polarssllib"; then
2028 dnl when shared libs were found in a path that the run-time
2029 dnl linker doesn't search through, we need to add it to
2030 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2032 if test "x$cross_compiling" != "xyes"; then
2033 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$polarssllib"
2034 export LD_LIBRARY_PATH
2035 AC_MSG_NOTICE([Added $polarssllib to LD_LIBRARY_PATH])
2040 fi dnl PolarSSL not disabled
2044 dnl ----------------------------------------------------
2045 dnl check for CyaSSL
2046 dnl ----------------------------------------------------
2048 dnl Default to compiler & linker defaults for CyaSSL files & libraries.
2053 AC_ARG_WITH(cyassl,dnl
2054 AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to the installation root (default: system lib default)])
2055 AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
2056 OPT_CYASSL=$withval)
2058 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2060 if test X"$OPT_CYASSL" != Xno; then
2062 if test "$OPT_CYASSL" = "yes"; then
2066 if test -z "$OPT_CYASSL" ; then
2067 dnl check for lib in system default first
2069 AC_CHECK_LIB(cyassl, CyaSSL_Init,
2070 dnl libcyassl found, set the variable
2072 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2073 AC_SUBST(USE_CYASSL, [1])
2076 curl_ssl_msg="enabled (CyaSSL)"
2085 if test "x$USE_CYASSL" != "xyes"; then
2086 dnl add the path and test again
2087 addld=-L$OPT_CYASSL/lib$libsuff
2088 addcflags=-I$OPT_CYASSL/include
2089 cyassllib=$OPT_CYASSL/lib$libsuff
2091 LDFLAGS="$LDFLAGS $addld"
2092 if test "$addcflags" != "-I/usr/include"; then
2093 CPPFLAGS="$CPPFLAGS $addcflags"
2096 AC_CHECK_LIB(cyassl, CyaSSL_Init,
2098 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2099 AC_SUBST(USE_CYASSL, [1])
2102 curl_ssl_msg="enabled (CyaSSL)"
2110 if test "x$USE_CYASSL" = "xyes"; then
2111 AC_MSG_NOTICE([detected CyaSSL])
2113 LIBS="-lcyassl -lm $LIBS"
2115 if test -n "$cyassllib"; then
2116 dnl when shared libs were found in a path that the run-time
2117 dnl linker doesn't search through, we need to add it to
2118 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2120 if test "x$cross_compiling" != "xyes"; then
2121 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$cyassllib"
2122 export LD_LIBRARY_PATH
2123 AC_MSG_NOTICE([Added $cyassllib to LD_LIBRARY_PATH])
2129 fi dnl CyaSSL not disabled
2133 dnl ----------------------------------------------------
2134 dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
2135 dnl ----------------------------------------------------
2137 dnl Default to compiler & linker defaults for NSS files & libraries.
2141 AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root])
2142 AC_HELP_STRING([--without-nss], [disable NSS detection]),
2145 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2147 if test X"$OPT_NSS" != Xno; then
2155 if test "x$OPT_NSS" = "xyes"; then
2157 CURL_CHECK_PKGCONFIG(nss)
2159 if test "$PKGCONFIG" != "no" ; then
2160 addlib=`$PKGCONFIG --libs nss`
2161 addcflags=`$PKGCONFIG --cflags nss`
2162 version=`$PKGCONFIG --modversion nss`
2163 nssprefix=`$PKGCONFIG --variable=prefix nss`
2165 dnl Without pkg-config, we check for nss-config
2167 check=`nss-config --version 2>/dev/null`
2168 if test -n "$check"; then
2169 addlib=`nss-config --libs`
2170 addcflags=`nss-config --cflags`
2171 version=`nss-config --version`
2172 nssprefix=`nss-config --prefix`
2180 # Without pkg-config, we'll kludge in some defaults
2181 addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
2182 addcflags="-I$OPT_NSS/include"
2187 if test -n "$addlib"; then
2190 CLEANCPPFLAGS="$CPPFLAGS"
2192 LIBS="$addlib $LIBS"
2193 if test "$addcflags" != "-I/usr/include"; then
2194 CPPFLAGS="$CPPFLAGS $addcflags"
2197 dnl The function PK11_CreateGenericObject is needed to load libnsspem.so
2198 AC_CHECK_LIB(nss3, PK11_CreateGenericObject,
2200 AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
2201 AC_SUBST(USE_NSS, [1])
2204 curl_ssl_msg="enabled (NSS)"
2208 CPPFLAGS="$CLEANCPPFLAGS"
2211 if test "x$USE_NSS" = "xyes"; then
2212 AC_MSG_NOTICE([detected NSS version $version])
2214 dnl NSS_InitContext() was introduced in NSS 3.12.5 and helps to prevent
2215 dnl collisions on NSS initialization/shutdown with other libraries
2216 AC_CHECK_FUNC(NSS_InitContext,
2218 AC_DEFINE(HAVE_NSS_INITCONTEXT, 1, [if you have the NSS_InitContext function])
2219 AC_SUBST(HAVE_NSS_INITCONTEXT, [1])
2222 dnl when shared libs were found in a path that the run-time
2223 dnl linker doesn't search through, we need to add it to
2224 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2226 if test "x$cross_compiling" != "xyes"; then
2227 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
2228 export LD_LIBRARY_PATH
2229 AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
2235 fi dnl NSS not disabled
2237 fi dnl curl_ssl_msg = init_ssl_msg
2241 AC_ARG_WITH(axtls,dnl
2242 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.])
2243 AC_HELP_STRING([--without-axtls], [disable axTLS]),
2246 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2247 if test X"$OPT_AXTLS" != Xno; then
2248 dnl backup the pre-axtls variables
2249 CLEANLDFLAGS="$LDFLAGS"
2250 CLEANCPPFLAGS="$CPPFLAGS"
2253 case "$OPT_AXTLS" in
2255 dnl --with-axtls (without path) used
2256 PREFIX_AXTLS=/usr/local
2257 LIB_AXTLS="$PREFIX_AXTLS/lib"
2258 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2259 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2262 dnl no --with-axtls option given, just check default places
2266 dnl check the given --with-axtls spot
2267 PREFIX_AXTLS=$OPT_AXTLS
2268 LIB_AXTLS="$PREFIX_AXTLS/lib"
2269 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2270 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2274 AC_CHECK_LIB(axtls, ssl_version,[
2275 LIBS="-laxtls $LIBS"
2276 AC_DEFINE(USE_AXTLS, 1, [if axTLS is enabled])
2277 AC_SUBST(USE_AXTLS, [1])
2280 curl_ssl_msg="enabled (axTLS)"
2283 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
2284 export LD_LIBRARY_PATH
2285 AC_MSG_NOTICE([Added $LIB_AXTLS to LD_LIBRARY_PATH])
2287 LDFLAGS="$CLEANLDFLAGS"
2288 CPPFLAGS="$CLEANCPPFLAGS"
2294 if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$DARWINSSL_ENABLED" = "x"; then
2295 AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
2296 AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls or --with-winssl to address this.])
2298 # SSL is enabled, genericly
2299 AC_SUBST(SSL_ENABLED)
2303 dnl **********************************************************************
2304 dnl Check for the CA bundle
2305 dnl **********************************************************************
2307 CURL_CHECK_CA_BUNDLE
2309 dnl **********************************************************************
2310 dnl Check for libmetalink
2311 dnl **********************************************************************
2315 AC_ARG_WITH(libmetalink,dnl
2316 AC_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root])
2317 AC_HELP_STRING([--without-libmetalink], [disable libmetalink detection]),
2318 OPT_LIBMETALINK=$withval)
2320 if test X"$OPT_LIBMETALINK" != Xno; then
2329 if test "x$OPT_LIBMETALINK" = "xyes"; then
2330 dnl this is with no partiular path given
2332 CURL_CHECK_PKGCONFIG(libmetalink)
2334 dnl When particular path is given, set PKG_CONFIG_LIBDIR using the path.
2335 LIBMETALINK_PCDIR="$OPT_LIBMETALINK/lib/pkgconfig"
2336 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$LIBMETALINK_PCDIR"])
2337 if test -f "$LIBMETALINK_PCDIR/libmetalink.pc"; then
2340 if test "$PKGTEST" = "yes"; then
2341 CURL_CHECK_PKGCONFIG(libmetalink, [$LIBMETALINK_PCDIR])
2344 if test "$PKGTEST" = "yes" && test "$PKGCONFIG" != "no"; then
2345 addlib=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2346 $PKGCONFIG --libs-only-l libmetalink`
2347 addld=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2348 $PKGCONFIG --libs-only-L libmetalink`
2349 addcflags=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2350 $PKGCONFIG --cflags-only-I libmetalink`
2351 version=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2352 $PKGCONFIG --modversion libmetalink`
2353 libmetalinklib=`echo $addld | $SED -e 's/-L//'`
2355 if test -n "$addlib"; then
2357 clean_CPPFLAGS="$CPPFLAGS"
2358 clean_LDFLAGS="$LDFLAGS"
2360 CPPFLAGS="$addcflags $clean_CPPFLAGS"
2361 LDFLAGS="$addld $clean_LDFLAGS"
2362 LIBS="$addlib $clean_LIBS"
2363 AC_MSG_CHECKING([if libmetalink is recent enough])
2366 # include <metalink/metalink.h>
2368 if(0 != metalink_strerror(0)) /* added in 0.1.0 */
2372 AC_MSG_RESULT([yes ($version)])
2375 AC_MSG_RESULT([no ($version)])
2376 AC_MSG_NOTICE([libmetalink library defective or too old])
2379 CPPFLAGS="$clean_CPPFLAGS"
2380 LDFLAGS="$clean_LDFLAGS"
2382 if test "$want_metalink" = "yes"; then
2383 dnl finally libmetalink will be used
2384 AC_DEFINE(USE_METALINK, 1, [Define to enable metalink support])
2385 LIBMETALINK_LIBS=$addlib
2386 LIBMETALINK_LDFLAGS=$addld
2387 LIBMETALINK_CPPFLAGS=$addcflags
2388 AC_SUBST([LIBMETALINK_LIBS])
2389 AC_SUBST([LIBMETALINK_LDFLAGS])
2390 AC_SUBST([LIBMETALINK_CPPFLAGS])
2391 curl_mtlnk_msg="enabled"
2397 dnl **********************************************************************
2398 dnl Check for the presence of LIBSSH2 libraries and headers
2399 dnl **********************************************************************
2401 dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
2403 AC_ARG_WITH(libssh2,dnl
2404 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])
2405 AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
2406 OPT_LIBSSH2=$withval)
2408 if test X"$OPT_LIBSSH2" != Xno; then
2409 dnl backup the pre-libssh2 variables
2410 CLEANLDFLAGS="$LDFLAGS"
2411 CLEANCPPFLAGS="$CPPFLAGS"
2414 case "$OPT_LIBSSH2" in
2416 dnl --with-libssh2 (without path) used
2417 CURL_CHECK_PKGCONFIG(libssh2)
2419 if test "$PKGCONFIG" != "no" ; then
2420 LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2`
2421 LD_SSH2=`$PKGCONFIG --libs-only-L libssh2`
2422 CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2`
2423 version=`$PKGCONFIG --modversion libssh2`
2424 DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'`
2429 dnl no --with-libssh2 option given, just check default places
2432 dnl use the given --with-libssh2 spot
2433 PREFIX_SSH2=$OPT_LIBSSH2
2437 dnl if given with a prefix, we set -L and -I based on that
2438 if test -n "$PREFIX_SSH2"; then
2440 LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff
2441 CPP_SSH2=-I${PREFIX_SSH2}/include
2442 DIR_SSH2=${PREFIX_SSH2}/lib$libsuff
2445 LDFLAGS="$LDFLAGS $LD_SSH2"
2446 CPPFLAGS="$CPPFLAGS $CPP_SSH2"
2447 LIBS="$LIB_SSH2 $LIBS"
2449 AC_CHECK_LIB(ssh2, libssh2_channel_open_ex)
2451 AC_CHECK_HEADERS(libssh2.h,
2452 curl_ssh_msg="enabled (libSSH2)"
2454 AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
2455 AC_SUBST(USE_LIBSSH2, [1])
2458 if test X"$OPT_LIBSSH2" != Xoff &&
2459 test "$LIBSSH2_ENABLED" != "1"; then
2460 AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!])
2463 if test "$LIBSSH2_ENABLED" = "1"; then
2464 if test -n "$DIR_SSH2"; then
2465 dnl when the libssh2 shared libs were found in a path that the run-time
2466 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
2467 dnl to prevent further configure tests to fail due to this
2469 dnl libssh2_version is a post 1.0 addition
2470 dnl libssh2_init and libssh2_exit were added in 1.2.5
2471 dnl libssh2_scp_send64 was added in 1.2.6
2472 dnl libssh2_session_handshake was added in 1.2.8
2473 AC_CHECK_FUNCS( libssh2_version libssh2_init libssh2_exit \
2474 libssh2_scp_send64 libssh2_session_handshake)
2475 if test "x$cross_compiling" != "xyes"; then
2476 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
2477 export LD_LIBRARY_PATH
2478 AC_MSG_NOTICE([Added $DIR_SSH2 to LD_LIBRARY_PATH])
2482 dnl no libssh2, revert back to clean variables
2483 LDFLAGS=$CLEANLDFLAGS
2484 CPPFLAGS=$CLEANCPPFLAGS
2489 dnl **********************************************************************
2490 dnl Check for the presence of LIBRTMP libraries and headers
2491 dnl **********************************************************************
2493 dnl Default to compiler & linker defaults for LIBRTMP files & libraries.
2495 AC_ARG_WITH(librtmp,dnl
2496 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])
2497 AC_HELP_STRING([--without-librtmp], [disable LIBRTMP]),
2498 OPT_LIBRTMP=$withval)
2500 if test X"$OPT_LIBRTMP" != Xno; then
2501 dnl backup the pre-librtmp variables
2502 CLEANLDFLAGS="$LDFLAGS"
2503 CLEANCPPFLAGS="$CPPFLAGS"
2506 case "$OPT_LIBRTMP" in
2508 dnl --with-librtmp (without path) used
2509 CURL_CHECK_PKGCONFIG(librtmp)
2511 if test "$PKGCONFIG" != "no" ; then
2512 LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp`
2513 LD_RTMP=`$PKGCONFIG --libs-only-L librtmp`
2514 CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp`
2515 version=`$PKGCONFIG --modversion librtmp`
2516 DIR_RTMP=`echo $LD_RTMP | $SED -e 's/-L//'`
2518 dnl To avoid link errors, we do not allow --librtmp without
2519 dnl a pkgconfig file
2520 AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.])
2525 dnl no --with-librtmp option given, just check default places
2529 dnl use the given --with-librtmp spot
2530 PREFIX_RTMP=$OPT_LIBRTMP
2534 dnl if given with a prefix, we set -L and -I based on that
2535 if test -n "$PREFIX_RTMP"; then
2536 LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff
2537 CPP_RTMP=-I${PREFIX_RTMP}/include
2538 DIR_RTMP=${PREFIX_RTMP}/lib$libsuff
2541 LDFLAGS="$LDFLAGS $LD_RTMP"
2542 CPPFLAGS="$CPPFLAGS $CPP_RTMP"
2543 LIBS="$LIB_RTMP $LIBS"
2545 AC_CHECK_LIB(rtmp, RTMP_Init,
2547 AC_CHECK_HEADERS(librtmp/rtmp.h,
2548 curl_rtmp_msg="enabled (librtmp)"
2550 AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use])
2551 AC_SUBST(USE_LIBRTMP, [1])
2554 dnl not found, revert back to clean variables
2555 LDFLAGS=$CLEANLDFLAGS
2556 CPPFLAGS=$CLEANCPPFLAGS
2560 if test X"$OPT_LIBRTMP" != Xoff &&
2561 test "$LIBRTMP_ENABLED" != "1"; then
2562 AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!])
2567 dnl **********************************************************************
2568 dnl Check for linker switch for versioned symbols
2569 dnl **********************************************************************
2571 versioned_symbols_flavour=
2572 AC_MSG_CHECKING([whether versioned symbols are wanted])
2573 AC_ARG_ENABLE(versioned-symbols,
2574 AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library])
2575 AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]),
2576 [ case "$enableval" in
2577 yes) AC_MSG_RESULT(yes)
2578 AC_MSG_CHECKING([if libraries can be versioned])
2579 GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
2580 if test -z "$GLD"; then
2582 AC_MSG_WARN([You need an ld version supporting the --version-script option])
2585 if test "x$OPENSSL_ENABLED" = "x1"; then
2586 versioned_symbols_flavour="OPENSSL_"
2587 elif test "x$GNUTLS_ENABLED" == "x1"; then
2588 versioned_symbols_flavour="GNUTLS_"
2589 elif test "x$NSS_ENABLED" == "x1"; then
2590 versioned_symbols_flavour="NSS_"
2591 elif test "x$POLARSSL_ENABLED" == "x1"; then
2592 versioned_symbols_flavour="POLARSSL_"
2593 elif test "x$CYASSL_ENABLED" == "x1"; then
2594 versioned_symbols_flavour="CYASSL_"
2595 elif test "x$AXTLS_ENABLED" == "x1"; then
2596 versioned_symbols_flavour="AXTLS_"
2597 elif test "x$WINSSL_ENABLED" == "x1"; then
2598 versioned_symbols_flavour="WINSSL_"
2599 elif test "x$DARWINSSL_ENABLED" == "x1"; then
2600 versioned_symbols_flavour="DARWINSSL_"
2602 versioned_symbols_flavour=""
2604 versioned_symbols="yes"
2608 *) AC_MSG_RESULT(no)
2616 AC_SUBST(VERSIONED_FLAVOUR, ["$versioned_symbols_flavour"])
2617 AM_CONDITIONAL(VERSIONED_SYMBOLS, test "x$versioned_symbols" = "xyes")
2619 dnl -------------------------------------------------
2620 dnl check winidn option before other IDN libraries
2621 dnl -------------------------------------------------
2623 AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)])
2624 OPT_WINIDN="default"
2626 AC_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN])
2627 AC_HELP_STRING([--without-winidn], [disable Windows native IDN]),
2628 OPT_WINIDN=$withval)
2629 case "$OPT_WINIDN" in
2631 dnl --without-winidn option used or configure option not specified
2636 dnl --with-winidn option used without path
2638 want_winidn_path="default"
2639 AC_MSG_RESULT([yes])
2642 dnl --with-winidn option used with path
2644 want_winidn_path="$withval"
2645 AC_MSG_RESULT([yes ($withval)])
2649 if test "$want_winidn" = "yes"; then
2650 dnl winidn library support has been requested
2651 clean_CPPFLAGS="$CPPFLAGS"
2652 clean_LDFLAGS="$LDFLAGS"
2654 WINIDN_LIBS="-lnormaliz"
2656 if test "$want_winidn_path" != "default"; then
2657 dnl path has been specified
2658 dnl pkg-config not available or provides no info
2659 WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff"
2660 WINIDN_CPPFLAGS="-I$want_winidn_path/include"
2661 WINIDN_DIR="$want_winidn_path/lib$libsuff"
2664 CPPFLAGS="$WINIDN_CPPFLAGS $CPPFLAGS"
2665 LDFLAGS="$WINIDN_LDFLAGS $LDFLAGS"
2666 LIBS="$WINIDN_LIBS $LIBS"
2668 AC_MSG_CHECKING([if IdnToUnicode can be linked])
2670 AC_LANG_FUNC_LINK_TRY([IdnToUnicode])
2672 AC_MSG_RESULT([yes])
2673 tst_links_winidn="yes"
2676 tst_links_winidn="no"
2679 if test "$tst_links_winidn" = "yes"; then
2680 AC_DEFINE(USE_WIN32_IDN, 1, [Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz).])
2681 AC_DEFINE(WANT_IDN_PROTOTYPES, 1, [Define to 1 to provide own prototypes.])
2682 AC_SUBST([IDN_ENABLED], [1])
2683 curl_idn_msg="enabled (Windows-native)"
2685 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2686 CPPFLAGS="$clean_CPPFLAGS"
2687 LDFLAGS="$clean_LDFLAGS"
2692 dnl **********************************************************************
2693 dnl Check for the presence of IDN libraries and headers
2694 dnl **********************************************************************
2696 AC_MSG_CHECKING([whether to build with libidn])
2699 AC_HELP_STRING([--with-libidn=PATH],[Enable libidn usage])
2700 AC_HELP_STRING([--without-libidn],[Disable libidn usage]),
2704 dnl --without-libidn option used
2709 dnl configure option not specified
2711 want_idn_path="default"
2712 AC_MSG_RESULT([(assumed) yes])
2715 dnl --with-libidn option used without path
2717 want_idn_path="default"
2718 AC_MSG_RESULT([yes])
2721 dnl --with-libidn option used with path
2723 want_idn_path="$withval"
2724 AC_MSG_RESULT([yes ($withval)])
2728 if test "$want_idn" = "yes"; then
2729 dnl idn library support has been requested
2730 clean_CPPFLAGS="$CPPFLAGS"
2731 clean_LDFLAGS="$LDFLAGS"
2735 if test "$want_idn_path" != "default"; then
2736 dnl path has been specified
2737 IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig"
2738 CURL_CHECK_PKGCONFIG(libidn, [$IDN_PCDIR])
2739 if test "$PKGCONFIG" != "no"; then
2740 IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2741 $PKGCONFIG --libs-only-l libidn 2>/dev/null`
2742 IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2743 $PKGCONFIG --libs-only-L libidn 2>/dev/null`
2744 IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2745 $PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2746 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2748 dnl pkg-config not available or provides no info
2750 IDN_LDFLAGS="-L$want_idn_path/lib$libsuff"
2751 IDN_CPPFLAGS="-I$want_idn_path/include"
2752 IDN_DIR="$want_idn_path/lib$libsuff"
2755 dnl path not specified
2756 CURL_CHECK_PKGCONFIG(libidn)
2757 if test "$PKGCONFIG" != "no"; then
2758 IDN_LIBS=`$PKGCONFIG --libs-only-l libidn 2>/dev/null`
2759 IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn 2>/dev/null`
2760 IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2761 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2763 dnl pkg-config not available or provides no info
2768 if test "$PKGCONFIG" != "no"; then
2769 AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"])
2770 AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"])
2771 AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2772 AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"])
2774 AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"])
2775 AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"])
2776 AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2777 AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"])
2780 CPPFLAGS="$IDN_CPPFLAGS $CPPFLAGS"
2781 LDFLAGS="$IDN_LDFLAGS $LDFLAGS"
2782 LIBS="$IDN_LIBS $LIBS"
2784 AC_MSG_CHECKING([if idna_to_ascii_4i can be linked])
2786 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_4i])
2788 AC_MSG_RESULT([yes])
2789 tst_links_libidn="yes"
2792 tst_links_libidn="no"
2794 if test "$tst_links_libidn" = "no"; then
2795 AC_MSG_CHECKING([if idna_to_ascii_lz can be linked])
2797 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_lz])
2799 AC_MSG_RESULT([yes])
2800 tst_links_libidn="yes"
2803 tst_links_libidn="no"
2807 if test "$tst_links_libidn" = "yes"; then
2808 AC_DEFINE(HAVE_LIBIDN, 1, [Define to 1 if you have the `idn' library (-lidn).])
2809 dnl different versions of libidn have different setups of these:
2810 AC_CHECK_FUNCS( idn_free idna_strerror tld_strerror )
2811 AC_CHECK_HEADERS( idn-free.h tld.h )
2812 if test "x$ac_cv_header_tld_h" = "xyes"; then
2813 AC_SUBST([IDN_ENABLED], [1])
2814 curl_idn_msg="enabled"
2815 if test -n "$IDN_DIR"; then
2816 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
2817 export LD_LIBRARY_PATH
2818 AC_MSG_NOTICE([Added $IDN_DIR to LD_LIBRARY_PATH])
2821 AC_MSG_WARN([Libraries for IDN support too old: IDN disabled])
2822 CPPFLAGS="$clean_CPPFLAGS"
2823 LDFLAGS="$clean_LDFLAGS"
2827 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2828 CPPFLAGS="$clean_CPPFLAGS"
2829 LDFLAGS="$clean_LDFLAGS"
2835 dnl Let's hope this split URL remains working:
2836 dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
2837 dnl genprogc/thread_quick_ref.htm
2840 dnl **********************************************************************
2841 dnl Back to "normal" configuring
2842 dnl **********************************************************************
2844 dnl Checks for header files.
2847 CURL_CHECK_HEADER_MALLOC
2848 CURL_CHECK_HEADER_MEMORY
2850 dnl Now check for the very most basic headers. Then we can use these
2851 dnl ones as default-headers when checking for the rest!
2894 dnl to do if not found
2898 dnl default includes
2900 #ifdef HAVE_SYS_TYPES_H
2901 #include <sys/types.h>
2903 #ifdef HAVE_SYS_TIME_H
2904 #include <sys/time.h>
2906 #ifdef HAVE_SYS_SELECT_H
2907 #include <sys/select.h>
2909 #ifdef HAVE_SYS_SOCKET_H
2910 #include <sys/socket.h>
2912 #ifdef HAVE_NETINET_IN_H
2913 #include <netinet/in.h>
2915 #ifdef HAVE_SYS_UN_H
2921 dnl Checks for typedefs, structures, and compiler characteristics.
2923 CURL_CHECK_VARIADIC_MACROS
2926 CURL_CHECK_STRUCT_TIMEVAL
2927 CURL_VERIFY_RUNTIMELIBS
2929 AC_CHECK_SIZEOF(size_t)
2930 AC_CHECK_SIZEOF(long)
2931 AC_CHECK_SIZEOF(int)
2932 AC_CHECK_SIZEOF(short)
2934 AC_CHECK_SIZEOF(time_t)
2935 AC_CHECK_SIZEOF(off_t)
2938 if test x"$ac_cv_native_windows" != "xyes" &&
2939 test $ac_cv_sizeof_off_t -ne $curl_sizeof_curl_off_t; then
2940 AC_MSG_WARN([This libcurl built is probably not ABI compatible with previous])
2941 AC_MSG_WARN([builds! You MUST read lib/README.curl_off_t to figure it out.])
2946 AC_CHECK_TYPE(long long,
2947 [AC_DEFINE(HAVE_LONGLONG, 1,
2948 [Define to 1 if the compiler supports the 'long long' data type.])]
2952 if test "xyes" = "x$longlong"; then
2953 AC_MSG_CHECKING([if numberLL works])
2957 long long val = 1000LL;
2960 AC_MSG_RESULT([yes])
2961 AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
2969 AC_CHECK_TYPE(ssize_t, ,
2970 AC_DEFINE(ssize_t, int, [the signed version of size_t]))
2972 # check for bool type
2973 AC_CHECK_TYPE([bool],[
2974 AC_DEFINE(HAVE_BOOL_T, 1,
2975 [Define to 1 if bool is an available type.])
2977 #ifdef HAVE_SYS_TYPES_H
2978 #include <sys/types.h>
2980 #ifdef HAVE_STDBOOL_H
2981 #include <stdbool.h>
2985 CURL_CONFIGURE_CURL_SOCKLEN_T
2987 CURL_CONFIGURE_PULL_SYS_POLL
2991 TYPE_SOCKADDR_STORAGE
2997 CURL_CHECK_FUNC_SELECT
2999 CURL_CHECK_FUNC_RECV
3000 CURL_CHECK_FUNC_RECVFROM
3001 CURL_CHECK_FUNC_SEND
3002 CURL_CHECK_MSG_NOSIGNAL
3004 CURL_CHECK_FUNC_ALARM
3005 CURL_CHECK_FUNC_BASENAME
3006 CURL_CHECK_FUNC_CLOSESOCKET
3007 CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
3008 CURL_CHECK_FUNC_CONNECT
3009 CURL_CHECK_FUNC_FCNTL
3010 CURL_CHECK_FUNC_FDOPEN
3011 CURL_CHECK_FUNC_FREEADDRINFO
3012 CURL_CHECK_FUNC_FREEIFADDRS
3013 CURL_CHECK_FUNC_FSETXATTR
3014 CURL_CHECK_FUNC_FTRUNCATE
3015 CURL_CHECK_FUNC_GETADDRINFO
3016 CURL_CHECK_FUNC_GAI_STRERROR
3017 CURL_CHECK_FUNC_GETHOSTBYADDR
3018 CURL_CHECK_FUNC_GETHOSTBYADDR_R
3019 CURL_CHECK_FUNC_GETHOSTBYNAME
3020 CURL_CHECK_FUNC_GETHOSTBYNAME_R
3021 CURL_CHECK_FUNC_GETHOSTNAME
3022 CURL_CHECK_FUNC_GETIFADDRS
3023 CURL_CHECK_FUNC_GETSERVBYPORT_R
3024 CURL_CHECK_FUNC_GMTIME_R
3025 CURL_CHECK_FUNC_INET_NTOA_R
3026 CURL_CHECK_FUNC_INET_NTOP
3027 CURL_CHECK_FUNC_INET_PTON
3028 CURL_CHECK_FUNC_IOCTL
3029 CURL_CHECK_FUNC_IOCTLSOCKET
3030 CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
3031 CURL_CHECK_FUNC_LOCALTIME_R
3032 CURL_CHECK_FUNC_MEMRCHR
3033 CURL_CHECK_FUNC_POLL
3034 CURL_CHECK_FUNC_SETSOCKOPT
3035 CURL_CHECK_FUNC_SIGACTION
3036 CURL_CHECK_FUNC_SIGINTERRUPT
3037 CURL_CHECK_FUNC_SIGNAL
3038 CURL_CHECK_FUNC_SIGSETJMP
3039 CURL_CHECK_FUNC_SOCKET
3040 CURL_CHECK_FUNC_SOCKETPAIR
3041 CURL_CHECK_FUNC_STRCASECMP
3042 CURL_CHECK_FUNC_STRCASESTR
3043 CURL_CHECK_FUNC_STRCMPI
3044 CURL_CHECK_FUNC_STRDUP
3045 CURL_CHECK_FUNC_STRERROR_R
3046 CURL_CHECK_FUNC_STRICMP
3047 CURL_CHECK_FUNC_STRLCAT
3048 CURL_CHECK_FUNC_STRNCASECMP
3049 CURL_CHECK_FUNC_STRNCMPI
3050 CURL_CHECK_FUNC_STRNICMP
3051 CURL_CHECK_FUNC_STRSTR
3052 CURL_CHECK_FUNC_STRTOK_R
3053 CURL_CHECK_FUNC_STRTOLL
3054 CURL_CHECK_FUNC_WRITEV
3060 AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
3064 AC_CHECK_FUNCS([fork \
3083 eval skipcheck=\$skipcheck_$func
3084 if test "x$skipcheck" != "xyes"; then
3085 AC_MSG_CHECKING([deeper for $func])
3092 AC_MSG_RESULT([yes])
3093 eval "ac_cv_func_$func=yes"
3094 AC_DEFINE_UNQUOTED(XC_SH_TR_CPP([HAVE_$func]), [1],
3095 [Define to 1 if you have the $func function.])
3097 AC_MSG_RESULT([but still no])
3102 dnl Check if the getnameinfo function is available
3103 dnl and get the types of five of its arguments.
3104 CURL_CHECK_FUNC_GETNAMEINFO
3106 if test "$ipv6" = "yes"; then
3107 if test "$ac_cv_func_getaddrinfo" = "yes"; then
3108 AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
3110 AC_SUBST(IPV6_ENABLED)
3112 CURL_CHECK_NI_WITHSCOPEID
3115 CURL_CHECK_NONBLOCKING_SOCKET
3117 dnl ************************************************************
3118 dnl nroff tool stuff
3121 AC_PATH_PROG( PERL, perl, ,
3122 $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
3125 AC_PATH_PROGS( NROFF, gnroff nroff, ,
3126 $PATH:/usr/bin/:/usr/local/bin )
3129 if test -n "$NROFF"; then
3130 dnl only check for nroff options if an nroff command was found
3132 AC_MSG_CHECKING([how to use *nroff to get plain text from man pages])
3134 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3135 if test -z "$mancheck"; then
3137 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3138 if test -z "$mancheck"; then
3140 AC_MSG_RESULT([failed])
3141 AC_MSG_WARN([found no *nroff option to get plaintext from man pages])
3143 AC_MSG_RESULT([$MANOPT])
3146 AC_MSG_RESULT([$MANOPT])
3151 if test -z "$MANOPT"
3153 dnl if no nroff tool was found, or no option that could convert man pages
3154 dnl was found, then disable the built-in manual stuff
3155 AC_MSG_WARN([disabling built-in manual])
3159 dnl *************************************************************************
3160 dnl If the manual variable still is set, then we go with providing a built-in
3163 if test "$USE_MANUAL" = "1"; then
3164 AC_DEFINE(USE_MANUAL, 1, [If you want to build curl with the built-in manual])
3165 curl_manual_msg="enabled"
3168 dnl set variable for use in automakefile(s)
3169 AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
3172 AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
3174 if test "x$ac_cv_native_windows" != "xyes" &&
3175 test "x$enable_shared" = "xyes"; then
3176 build_libhostname=yes
3178 build_libhostname=no
3180 AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes)
3182 CURL_CHECK_OPTION_THREADED_RESOLVER
3184 if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
3186 [Options --enable-threaded-resolver and --enable-ares are mutually exclusive])
3189 if test "$want_thres" = "yes"; then
3190 AC_CHECK_HEADER(pthread.h,
3191 [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>])
3192 save_CFLAGS="$CFLAGS"
3193 CFLAGS="$CFLAGS -pthread"
3194 AC_CHECK_LIB(pthread, pthread_create,
3195 [ AC_MSG_NOTICE([using POSIX threaded DNS lookup])
3196 AC_DEFINE(USE_THREADS_POSIX, 1, [if you want POSIX threaded DNS lookup])
3198 curl_res_msg="threaded"
3200 [ CFLAGS="$save_CFLAGS"])
3204 dnl ************************************************************
3205 dnl disable verbose text strings
3207 AC_MSG_CHECKING([whether to enable verbose strings])
3208 AC_ARG_ENABLE(verbose,
3209 AC_HELP_STRING([--enable-verbose],[Enable verbose strings])
3210 AC_HELP_STRING([--disable-verbose],[Disable verbose strings]),
3211 [ case "$enableval" in
3214 AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings])
3215 curl_verbose_msg="no"
3217 *) AC_MSG_RESULT(yes)
3223 dnl ************************************************************
3224 dnl enable SSPI support
3226 AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)])
3228 AC_HELP_STRING([--enable-sspi],[Enable SSPI])
3229 AC_HELP_STRING([--disable-sspi],[Disable SSPI]),
3230 [ case "$enableval" in
3232 if test "$ac_cv_native_windows" = "yes"; then
3234 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
3235 AC_SUBST(USE_WINDOWS_SSPI, [1])
3236 curl_sspi_msg="enabled"
3239 AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.])
3243 if test "x$WINSSL_ENABLED" = "x1"; then
3244 # --with-winssl implies --enable-sspi
3251 if test "x$WINSSL_ENABLED" = "x1"; then
3252 # --with-winssl implies --enable-sspi
3259 dnl ************************************************************
3260 dnl disable cryptographic authentication
3262 AC_MSG_CHECKING([whether to enable cryptographic authentication methods])
3263 AC_ARG_ENABLE(crypto-auth,
3264 AC_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication])
3265 AC_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]),
3266 [ case "$enableval" in
3269 AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication])
3271 *) AC_MSG_RESULT(yes)
3277 CURL_CHECK_OPTION_NTLM_WB
3281 dnl ************************************************************
3282 dnl disable TLS-SRP authentication
3284 AC_MSG_CHECKING([whether to enable TLS-SRP authentication])
3285 AC_ARG_ENABLE(tls-srp,
3286 AC_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication])
3287 AC_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]),
3288 [ case "$enableval" in
3291 AC_DEFINE(CURL_DISABLE_TLS_SRP, 1, [to disable TLS-SRP authentication])
3294 *) AC_MSG_RESULT(yes)
3302 if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_SSLEAY_SRP" = "x1") ; then
3303 AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication])
3305 curl_tls_srp_msg="enabled"
3308 dnl ************************************************************
3309 dnl disable cookies support
3311 AC_MSG_CHECKING([whether to enable support for cookies])
3312 AC_ARG_ENABLE(cookies,
3313 AC_HELP_STRING([--enable-cookies],[Enable cookies support])
3314 AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
3315 [ case "$enableval" in
3318 AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support])
3320 *) AC_MSG_RESULT(yes)
3326 dnl ************************************************************
3327 dnl hiding of library internal symbols
3329 CURL_CONFIGURE_SYMBOL_HIDING
3331 dnl ************************************************************
3332 dnl enforce SONAME bump
3335 AC_MSG_CHECKING([whether to enforce SONAME bump])
3336 AC_ARG_ENABLE(soname-bump,
3337 AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump])
3338 AC_HELP_STRING([--disable-soname-bump],[Disable enforced SONAME bump]),
3339 [ case "$enableval" in
3340 yes) AC_MSG_RESULT(yes)
3347 AC_MSG_RESULT($soname_bump)
3349 AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes)
3352 dnl All the library dependencies put into $LIB apply to libcurl only.
3356 AC_SUBST(LIBCURL_LIBS)
3357 AC_SUBST(CURL_NETWORK_LIBS)
3358 AC_SUBST(CURL_NETWORK_AND_TIME_LIBS)
3360 dnl BLANK_AT_MAKETIME may be used in our Makefile.am files to blank
3361 dnl LIBS variable used in generated makefile at makefile processing
3362 dnl time. Doing this functionally prevents LIBS from being used for
3363 dnl all link targets in given makefile.
3365 AC_SUBST(BLANK_AT_MAKETIME)
3367 AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes)
3370 ENABLE_SHARED="$enable_shared"
3371 AC_SUBST(ENABLE_SHARED)
3374 dnl For keeping supported features and protocols also in pkg-config file
3375 dnl since it is more cross-compile friendly than curl-config
3378 if test "x$USE_SSLEAY" = "x1"; then
3379 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3380 elif test -n "$SSL_ENABLED"; then
3381 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3383 if test "@KRB4_ENABLED@" = "x1"; then
3384 SUPPORT_FEATURES="$SUPPORT_FEATURES KRB4"
3386 if test "x$IPV6_ENABLED" = "x1"; then
3387 SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
3389 if test "x$HAVE_LIBZ" = "x1"; then
3390 SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
3392 if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1"; then
3393 SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
3395 if test "x$IDN_ENABLED" = "x1"; then
3396 SUPPORT_FEATURES="$SUPPORT_FEATURES IDN"
3398 if test "x$USE_WINDOWS_SSPI" = "x1"; then
3399 SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
3401 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3402 if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
3403 -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
3404 -o "x$DARWINSSL_ENABLED" = "x1"; then
3405 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
3406 if test "x$NTLM_WB_ENABLED" = "x1"; then
3407 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
3411 if test "x$USE_TLS_SRP" = "x1"; then
3412 SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
3415 AC_SUBST(SUPPORT_FEATURES)
3417 dnl For supported protocols in pkg-config file
3418 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3419 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
3420 if test "x$SSL_ENABLED" = "x1"; then
3421 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS"
3424 if test "x$CURL_DISABLE_FTP" != "x1"; then
3425 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP"
3426 if test "x$SSL_ENABLED" = "x1"; then
3427 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS"
3430 if test "x$CURL_DISABLE_FILE" != "x1"; then
3431 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE"
3433 if test "x$CURL_DISABLE_TELNET" != "x1"; then
3434 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET"
3436 if test "x$CURL_DISABLE_LDAP" != "x1"; then
3437 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP"
3438 if test "x$CURL_DISABLE_LDAPS" != "x1"; then
3439 if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") ||
3440 (test "x$USE_OPENLDAP" != "x1" && test "x$HAVE_LDAP_SSL" = "x1"); then
3441 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS"
3445 if test "x$CURL_DISABLE_DICT" != "x1"; then
3446 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT"
3448 if test "x$CURL_DISABLE_TFTP" != "x1"; then
3449 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP"
3451 if test "x$CURL_DISABLE_GOPHER" != "x1"; then
3452 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER"
3454 if test "x$CURL_DISABLE_POP3" != "x1"; then
3455 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3"
3456 if test "x$SSL_ENABLED" = "x1"; then
3457 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S"
3460 if test "x$CURL_DISABLE_IMAP" != "x1"; then
3461 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
3462 if test "x$SSL_ENABLED" = "x1"; then
3463 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
3466 if test "x$CURL_DISABLE_SMTP" != "x1"; then
3467 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
3468 if test "x$SSL_ENABLED" = "x1"; then
3469 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS"
3472 if test "x$USE_LIBSSH2" = "x1"; then
3473 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
3474 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
3476 if test "x$CURL_DISABLE_RTSP" != "x1"; then
3477 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
3479 if test "x$USE_LIBRTMP" = "x1"; then
3480 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP"
3483 dnl replace spaces with newlines
3485 dnl replace the newlines back to spaces
3486 SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '`
3488 AC_SUBST(SUPPORT_PROTOCOLS)
3490 dnl squeeze whitespace out of some variables
3498 squeeze LIBCURL_LIBS
3499 squeeze CURL_NETWORK_LIBS
3500 squeeze CURL_NETWORK_AND_TIME_LIBS
3502 squeeze SUPPORT_FEATURES
3503 squeeze SUPPORT_PROTOCOLS
3505 XC_CHECK_BUILD_FLAGS
3507 if test "x$want_curldebug_assumed" = "xyes" &&
3508 test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
3509 ac_configure_args="$ac_configure_args --enable-curldebug"
3512 AC_CONFIG_FILES([Makefile \
3514 docs/examples/Makefile \
3515 docs/libcurl/Makefile \
3517 include/curl/Makefile \
3522 tests/certs/Makefile \
3523 tests/certs/scripts/Makefile \
3524 tests/data/Makefile \
3525 tests/server/Makefile \
3526 tests/libtest/Makefile \
3527 tests/unit/Makefile \
3529 packages/Win32/Makefile \
3530 packages/Win32/cygwin/Makefile \
3531 packages/Linux/Makefile \
3532 packages/Linux/RPM/Makefile \
3533 packages/Linux/RPM/curl.spec \
3534 packages/Linux/RPM/curl-ssl.spec \
3535 packages/Solaris/Makefile \
3536 packages/EPM/curl.list \
3537 packages/EPM/Makefile \
3538 packages/vms/Makefile \
3539 packages/AIX/Makefile \
3540 packages/AIX/RPM/Makefile \
3541 packages/AIX/RPM/curl.spec \
3547 CURL_GENERATE_CONFIGUREHELP_PM
3549 AC_MSG_NOTICE([Configured to build curl/libcurl:
3551 curl version: ${CURLVERSION}
3553 Install prefix: ${prefix}
3555 SSL support: ${curl_ssl_msg}
3556 SSH support: ${curl_ssh_msg}
3557 zlib support: ${curl_zlib_msg}
3558 krb4 support: ${curl_krb4_msg}
3559 GSSAPI support: ${curl_gss_msg}
3560 SPNEGO support: ${curl_spnego_msg}
3561 TLS-SRP support: ${curl_tls_srp_msg}
3562 resolver: ${curl_res_msg}
3563 ipv6 support: ${curl_ipv6_msg}
3564 IDN support: ${curl_idn_msg}
3565 Build libcurl: Shared=${enable_shared}, Static=${enable_static}
3566 Built-in manual: ${curl_manual_msg}
3567 --libcurl option: ${curl_libcurl_msg}
3568 Verbose errors: ${curl_verbose_msg}
3569 SSPI support: ${curl_sspi_msg}
3570 ca cert bundle: ${ca}
3571 ca cert path: ${capath}
3572 LDAP support: ${curl_ldap_msg}
3573 LDAPS support: ${curl_ldaps_msg}
3574 RTSP support: ${curl_rtsp_msg}
3575 RTMP support: ${curl_rtmp_msg}
3576 metalink support: ${curl_mtlnk_msg}
3577 Protocols: ${SUPPORT_PROTOCOLS}
3580 if test "x$soname_bump" = "xyes"; then
3583 SONAME bump: yes - WARNING: this library will be built with the SONAME
3584 number bumped due to (a detected) ABI breakage.
3585 See lib/README.curl_off_t for details on this.