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 some initial values the user might have provided
173 INITIAL_LDFLAGS=$LDFLAGS
177 dnl Detect the canonical host and target build environment
181 dnl Get system canonical name
182 AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
184 dnl Checks for programs.
187 dnl Our curl_off_t internal and external configure settings
188 CURL_CONFIGURE_CURL_OFF_T
190 dnl This defines _ALL_SOURCE for AIX
191 CURL_CHECK_AIX_ALL_SOURCE
193 dnl Our configure and build reentrant settings
194 CURL_CONFIGURE_THREAD_SAFE
195 CURL_CONFIGURE_REENTRANT
197 dnl check for how to do large files
200 dnl support building of Windows DLLs
203 dnl force libtool to build static libraries with PIC on AMD64-Linux & FreeBSD
204 AC_MSG_CHECKING([if arch-OS host is AMD64-Linux/FreeBSD (to build static libraries with PIC)])
206 x86_64*linux*|amd64*freebsd*|ia64*freebsd*)
215 AC_MSG_CHECKING([if compiler is icc (to build with PIC)])
229 AC_MSG_CHECKING([if we need -mimpure-text])
233 if test "$GCC" = "yes"; then
240 AC_MSG_RESULT($mimpure)
241 AM_CONDITIONAL(MIMPURE, test x$mimpure = xyes)
243 AC_MSG_CHECKING([if we need BUILDING_LIBCURL])
244 use_cppflag_building_libcurl="no"
245 use_cppflag_curl_staticlib="no"
246 CPPFLAG_CURL_STATICLIB=""
250 use_cppflag_building_libcurl="yes"
251 AC_MSG_CHECKING([if we need CURL_STATICLIB])
252 if test "X$enable_shared" = "Xno"
255 use_cppflag_curl_staticlib="yes"
256 CPPFLAG_CURL_STATICLIB="-DCURL_STATICLIB"
265 AM_CONDITIONAL(USE_CPPFLAG_BUILDING_LIBCURL, test x$use_cppflag_building_libcurl = xyes)
266 AM_CONDITIONAL(USE_CPPFLAG_CURL_STATICLIB, test x$use_cppflag_curl_staticlib = xyes)
267 AC_SUBST(CPPFLAG_CURL_STATICLIB)
269 # Determine whether all dependent libraries must be specified when linking
270 if test "X$enable_shared" = "Xyes" -a "X$link_all_deplibs" = "Xno"
276 AC_SUBST(REQUIRE_LIB_DEPS)
277 AM_CONDITIONAL(USE_EXPLICIT_LIB_DEPS, test x$REQUIRE_LIB_DEPS = xyes)
279 dnl The install stuff has already been taken care of by the automake stuff
283 dnl check if there's a way to force code inline
286 dnl **********************************************************************
287 dnl platform/compiler/architecture specific checks/flags
288 dnl **********************************************************************
291 CURL_SET_COMPILER_BASIC_OPTS
292 CURL_SET_COMPILER_DEBUG_OPTS
293 CURL_SET_COMPILER_OPTIMIZE_OPTS
294 CURL_SET_COMPILER_WARNING_OPTS
296 if test "$compiler_id" = "INTEL_UNIX_C"; then
298 if test "$compiler_num" -ge "1000"; then
299 dnl icc 10.X or later
300 CFLAGS="$CFLAGS -shared-intel"
301 elif test "$compiler_num" -ge "900"; then
303 CFLAGS="$CFLAGS -i-dynamic"
308 CURL_CHECK_COMPILER_HALT_ON_ERROR
309 CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
310 CURL_CHECK_COMPILER_SYMBOL_HIDING
312 CURL_CHECK_NO_UNDEFINED
313 AM_CONDITIONAL(NO_UNDEFINED, test x$need_no_undefined = xyes)
316 AM_CONDITIONAL(CURLDEBUG, test x$want_curldebug = xyes)
318 supports_unittests=yes
319 # cross-compilation of unit tests static library/programs fails when
320 # libcurl shared library is built. This might be due to a libtool or
321 # automake issue. In this case we disable unit tests.
322 if test "x$cross_compiling" != "xno" &&
323 test "x$enable_shared" != "xno"; then
324 supports_unittests=no
327 # IRIX 6.5.24 gcc 3.3 autobuilds fail unittests library compilation due to
328 # a problem related with OpenSSL headers and library versions not matching.
329 # Disable unit tests while time to further investigate this is found.
332 if test "$compiler_id" = "GNU_C"; then
333 supports_unittests=no
338 # All AIX autobuilds fails unit tests linking against unittests library
339 # due to unittests library being built with no symbols or members. Libtool ?
340 # Disable unit tests while time to further investigate this is found.
343 supports_unittests=no
347 dnl Build unit tests when option --enable-debug is given.
348 if test "x$want_debug" = "xyes" &&
349 test "x$supports_unittests" = "xyes"; then
354 AM_CONDITIONAL(BUILD_UNITTESTS, test x$want_unittests = xyes)
356 dnl **********************************************************************
357 dnl Compilation based checks should not be done before this point.
358 dnl **********************************************************************
360 dnl **********************************************************************
361 dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
362 dnl and ws2tcpip.h take precedence over any other further checks which
363 dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
364 dnl this specific header files. And do them before its results are used.
365 dnl **********************************************************************
367 CURL_CHECK_HEADER_WINDOWS
368 CURL_CHECK_NATIVE_WINDOWS
369 case X-"$ac_cv_native_windows" in
371 CURL_CHECK_HEADER_WINSOCK
372 CURL_CHECK_HEADER_WINSOCK2
373 CURL_CHECK_HEADER_WS2TCPIP
374 CURL_CHECK_HEADER_WINLDAP
375 CURL_CHECK_HEADER_WINBER
378 ac_cv_header_winsock_h="no"
379 ac_cv_header_winsock2_h="no"
380 ac_cv_header_ws2tcpip_h="no"
381 ac_cv_header_winldap_h="no"
382 ac_cv_header_winber_h="no"
385 CURL_CHECK_WIN32_LARGEFILE
387 dnl ************************************************************
388 dnl switch off particular protocols
390 AC_MSG_CHECKING([whether to support http])
392 AC_HELP_STRING([--enable-http],[Enable HTTP support])
393 AC_HELP_STRING([--disable-http],[Disable HTTP support]),
394 [ case "$enableval" in
397 AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP])
398 AC_MSG_WARN([disable HTTP disables FTP over proxy and RTSP])
399 AC_SUBST(CURL_DISABLE_HTTP, [1])
400 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
401 AC_SUBST(CURL_DISABLE_RTSP, [1])
403 *) AC_MSG_RESULT(yes)
408 AC_MSG_CHECKING([whether to support ftp])
410 AC_HELP_STRING([--enable-ftp],[Enable FTP support])
411 AC_HELP_STRING([--disable-ftp],[Disable FTP support]),
412 [ case "$enableval" in
415 AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP])
416 AC_SUBST(CURL_DISABLE_FTP, [1])
418 *) AC_MSG_RESULT(yes)
423 AC_MSG_CHECKING([whether to support file])
425 AC_HELP_STRING([--enable-file],[Enable FILE support])
426 AC_HELP_STRING([--disable-file],[Disable FILE support]),
427 [ case "$enableval" in
430 AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE])
431 AC_SUBST(CURL_DISABLE_FILE, [1])
433 *) AC_MSG_RESULT(yes)
438 AC_MSG_CHECKING([whether to support ldap])
440 AC_HELP_STRING([--enable-ldap],[Enable LDAP support])
441 AC_HELP_STRING([--disable-ldap],[Disable LDAP support]),
442 [ case "$enableval" in
445 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
446 AC_SUBST(CURL_DISABLE_LDAP, [1])
454 AC_MSG_CHECKING([whether to support ldaps])
456 AC_HELP_STRING([--enable-ldaps],[Enable LDAPS support])
457 AC_HELP_STRING([--disable-ldaps],[Disable LDAPS support]),
458 [ case "$enableval" in
461 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
462 AC_SUBST(CURL_DISABLE_LDAPS, [1])
464 *) if test "x$CURL_DISABLE_LDAP" = "x1" ; then
465 AC_MSG_RESULT(LDAP needs to be enabled to support LDAPS)
466 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
467 AC_SUBST(CURL_DISABLE_LDAPS, [1])
470 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
471 AC_SUBST(HAVE_LDAP_SSL, [1])
475 if test "x$CURL_DISABLE_LDAP" = "x1" ; then
477 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
478 AC_SUBST(CURL_DISABLE_LDAPS, [1])
481 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
482 AC_SUBST(HAVE_LDAP_SSL, [1])
486 AC_MSG_CHECKING([whether to support rtsp])
488 AC_HELP_STRING([--enable-rtsp],[Enable RTSP support])
489 AC_HELP_STRING([--disable-rtsp],[Disable RTSP support]),
490 [ case "$enableval" in
493 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
494 AC_SUBST(CURL_DISABLE_RTSP, [1])
496 *) if test x$CURL_DISABLE_HTTP = x1 ; then
497 AC_MSG_ERROR(HTTP support needs to be enabled in order to enable RTSP support!)
500 curl_rtsp_msg="enabled"
504 if test "x$CURL_DISABLE_HTTP" != "x1"; then
506 curl_rtsp_msg="enabled"
512 AC_MSG_CHECKING([whether to support proxies])
514 AC_HELP_STRING([--enable-proxy],[Enable proxy support])
515 AC_HELP_STRING([--disable-proxy],[Disable proxy support]),
516 [ case "$enableval" in
519 AC_DEFINE(CURL_DISABLE_PROXY, 1, [to disable proxies])
520 AC_SUBST(CURL_DISABLE_PROXY, [1])
522 *) AC_MSG_RESULT(yes)
528 AC_MSG_CHECKING([whether to support dict])
530 AC_HELP_STRING([--enable-dict],[Enable DICT support])
531 AC_HELP_STRING([--disable-dict],[Disable DICT support]),
532 [ case "$enableval" in
535 AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT])
536 AC_SUBST(CURL_DISABLE_DICT, [1])
538 *) AC_MSG_RESULT(yes)
543 AC_MSG_CHECKING([whether to support telnet])
544 AC_ARG_ENABLE(telnet,
545 AC_HELP_STRING([--enable-telnet],[Enable TELNET support])
546 AC_HELP_STRING([--disable-telnet],[Disable TELNET support]),
547 [ case "$enableval" in
550 AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
551 AC_SUBST(CURL_DISABLE_TELNET, [1])
553 *) AC_MSG_RESULT(yes)
558 AC_MSG_CHECKING([whether to support tftp])
560 AC_HELP_STRING([--enable-tftp],[Enable TFTP support])
561 AC_HELP_STRING([--disable-tftp],[Disable TFTP support]),
562 [ case "$enableval" in
565 AC_DEFINE(CURL_DISABLE_TFTP, 1, [to disable TFTP])
566 AC_SUBST(CURL_DISABLE_TFTP, [1])
568 *) AC_MSG_RESULT(yes)
574 AC_MSG_CHECKING([whether to support pop3])
576 AC_HELP_STRING([--enable-pop3],[Enable POP3 support])
577 AC_HELP_STRING([--disable-pop3],[Disable POP3 support]),
578 [ case "$enableval" in
581 AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3])
582 AC_SUBST(CURL_DISABLE_POP3, [1])
584 *) AC_MSG_RESULT(yes)
591 AC_MSG_CHECKING([whether to support imap])
593 AC_HELP_STRING([--enable-imap],[Enable IMAP support])
594 AC_HELP_STRING([--disable-imap],[Disable IMAP support]),
595 [ case "$enableval" in
598 AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP])
599 AC_SUBST(CURL_DISABLE_IMAP, [1])
601 *) AC_MSG_RESULT(yes)
608 AC_MSG_CHECKING([whether to support smtp])
610 AC_HELP_STRING([--enable-smtp],[Enable SMTP support])
611 AC_HELP_STRING([--disable-smtp],[Disable SMTP support]),
612 [ case "$enableval" in
615 AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP])
616 AC_SUBST(CURL_DISABLE_SMTP, [1])
618 *) AC_MSG_RESULT(yes)
624 AC_MSG_CHECKING([whether to support gopher])
625 AC_ARG_ENABLE(gopher,
626 AC_HELP_STRING([--enable-gopher],[Enable Gopher support])
627 AC_HELP_STRING([--disable-gopher],[Disable Gopher support]),
628 [ case "$enableval" in
631 AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable Gopher])
632 AC_SUBST(CURL_DISABLE_GOPHER, [1])
634 *) AC_MSG_RESULT(yes)
641 dnl **********************************************************************
642 dnl Check for built-in manual
643 dnl **********************************************************************
645 AC_MSG_CHECKING([whether to provide built-in manual])
646 AC_ARG_ENABLE(manual,
647 AC_HELP_STRING([--enable-manual],[Enable built-in manual])
648 AC_HELP_STRING([--disable-manual],[Disable built-in manual]),
649 [ case "$enableval" in
653 *) AC_MSG_RESULT(yes)
660 dnl The actual use of the USE_MANUAL variable is done much later in this
661 dnl script to allow other actions to disable it as well.
663 dnl ************************************************************
664 dnl disable C code generation support
666 AC_MSG_CHECKING([whether to enable generation of C code])
667 AC_ARG_ENABLE(libcurl_option,
668 AC_HELP_STRING([--enable-libcurl-option],[Enable --libcurl C code generation support])
669 AC_HELP_STRING([--disable-libcurl-option],[Disable --libcurl C code generation support]),
670 [ case "$enableval" in
673 AC_DEFINE(CURL_DISABLE_LIBCURL_OPTION, 1, [to disable --libcurl C code generation option])
674 curl_libcurl_msg="no"
676 *) AC_MSG_RESULT(yes)
682 dnl **********************************************************************
683 dnl Checks for libraries.
684 dnl **********************************************************************
686 AC_MSG_CHECKING([whether to use libgcc])
687 AC_ARG_ENABLE(libgcc,
688 AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
689 [ case "$enableval" in
702 dnl gethostbyname without lib or in the nsl lib?
703 AC_CHECK_FUNC(gethostbyname,
704 [HAVE_GETHOSTBYNAME="1"
706 [ AC_CHECK_LIB(nsl, gethostbyname,
707 [HAVE_GETHOSTBYNAME="1"
712 if test "$HAVE_GETHOSTBYNAME" != "1"
714 dnl gethostbyname in the socket lib?
715 AC_CHECK_LIB(socket, gethostbyname,
716 [HAVE_GETHOSTBYNAME="1"
717 LIBS="-lsocket $LIBS"
721 if test "$HAVE_GETHOSTBYNAME" != "1"
723 dnl gethostbyname in the watt lib?
724 AC_CHECK_LIB(watt, gethostbyname,
725 [HAVE_GETHOSTBYNAME="1"
726 CPPFLAGS="-I/dev/env/WATT_ROOT/inc"
727 LDFLAGS="-L/dev/env/WATT_ROOT/lib"
732 dnl At least one system has been identified to require BOTH nsl and socket
733 dnl libs at the same time to link properly.
734 if test "$HAVE_GETHOSTBYNAME" != "1"
736 AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs])
737 my_ac_save_LIBS=$LIBS
738 LIBS="-lnsl -lsocket $LIBS"
746 HAVE_GETHOSTBYNAME="1"
749 LIBS=$my_ac_save_LIBS
753 if test "$HAVE_GETHOSTBYNAME" != "1"
755 dnl This is for winsock systems
756 if test "$ac_cv_header_windows_h" = "yes"; then
757 if test "$ac_cv_header_winsock_h" = "yes"; then
760 winsock_LIB="-lwinsock"
763 winsock_LIB="-lwsock32"
767 if test "$ac_cv_header_winsock2_h" = "yes"; then
768 winsock_LIB="-lws2_32"
770 if test ! -z "$winsock_LIB"; then
771 my_ac_save_LIBS=$LIBS
772 LIBS="$winsock_LIB $LIBS"
773 AC_MSG_CHECKING([for gethostbyname in $winsock_LIB])
776 #ifdef HAVE_WINDOWS_H
777 #ifndef WIN32_LEAN_AND_MEAN
778 #define WIN32_LEAN_AND_MEAN
781 #ifdef HAVE_WINSOCK2_H
782 #include <winsock2.h>
784 #ifdef HAVE_WINSOCK_H
790 gethostbyname("www.dummysite.com");
794 HAVE_GETHOSTBYNAME="1"
798 LIBS=$my_ac_save_LIBS
804 if test "$HAVE_GETHOSTBYNAME" != "1"
806 dnl This is for Minix 3.1
807 AC_MSG_CHECKING([for gethostbyname for Minix 3])
810 /* Older Minix versions may need <net/gen/netdb.h> here instead */
813 gethostbyname("www.dummysite.com");
817 HAVE_GETHOSTBYNAME="1"
823 if test "$HAVE_GETHOSTBYNAME" != "1"
825 dnl This is for eCos with a stubbed DNS implementation
826 AC_MSG_CHECKING([for gethostbyname for eCos])
832 gethostbyname("www.dummysite.com");
836 HAVE_GETHOSTBYNAME="1"
842 if test "$HAVE_GETHOSTBYNAME" != "1"
844 dnl gethostbyname in the network lib - for Haiku OS
845 AC_CHECK_LIB(network, gethostbyname,
846 [HAVE_GETHOSTBYNAME="1"
847 LIBS="-lnetwork $LIBS"
851 if test "$HAVE_GETHOSTBYNAME" != "1"
853 dnl gethostbyname in the net lib - for BeOS
854 AC_CHECK_LIB(net, gethostbyname,
855 [HAVE_GETHOSTBYNAME="1"
861 if test "$HAVE_GETHOSTBYNAME" != "1"; then
862 AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
866 AC_CHECK_FUNC(strcasecmp, , [ AC_CHECK_LIB(resolve, strcasecmp) ])
868 if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
869 AC_CHECK_LIB(resolve, strcasecmp,
870 [LIBS="-lresolve $LIBS"],
874 ac_cv_func_strcasecmp="no"
876 CURL_CHECK_LIBS_CONNECT
878 CURL_NETWORK_LIBS=$LIBS
880 dnl **********************************************************************
881 dnl In case that function clock_gettime with monotonic timer is available,
882 dnl check for additional required libraries.
883 dnl **********************************************************************
884 CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
886 dnl **********************************************************************
887 dnl The preceding library checks are all potentially useful for test
888 dnl servers and libtest cases which require networking and clock_gettime
889 dnl support. Save the list of required libraries at this point for use
890 dnl while linking those test servers and programs.
891 dnl **********************************************************************
892 CURL_NETWORK_AND_TIME_LIBS=$LIBS
894 dnl **********************************************************************
895 dnl Check for the presence of ZLIB libraries and headers
896 dnl **********************************************************************
898 dnl Check for & handle argument to --with-zlib.
900 clean_CPPFLAGS=$CPPFLAGS
901 clean_LDFLAGS=$LDFLAGS
905 AC_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
906 AC_HELP_STRING([--without-zlib],[disable use of zlib]),
907 [OPT_ZLIB="$withval"])
909 if test "$OPT_ZLIB" = "no" ; then
910 AC_MSG_WARN([zlib disabled])
912 if test "$OPT_ZLIB" = "yes" ; then
916 if test -z "$OPT_ZLIB" ; then
917 dnl check for the lib first without setting any new path, since many
918 dnl people have it in the default path
920 AC_CHECK_LIB(z, inflateEnd,
921 dnl libz found, set the variable
924 dnl if no lib found, try /usr/local
925 [OPT_ZLIB="/usr/local"])
929 dnl Add a nonempty path to the compiler flags
930 if test -n "$OPT_ZLIB"; then
931 CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include"
932 LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff"
935 AC_CHECK_HEADER(zlib.h,
939 dnl if the lib wasn't found already, try again with the new paths
940 if test "$HAVE_LIBZ" != "1"; then
941 AC_CHECK_LIB(z, gzread,
943 dnl the lib was found!
947 [ CPPFLAGS=$clean_CPPFLAGS
948 LDFLAGS=$clean_LDFLAGS])
952 dnl zlib.h was not found, restore the flags
953 CPPFLAGS=$clean_CPPFLAGS
954 LDFLAGS=$clean_LDFLAGS]
957 if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1"
959 AC_MSG_WARN([configure found only the libz lib, not the header file!])
961 CPPFLAGS=$clean_CPPFLAGS
962 LDFLAGS=$clean_LDFLAGS
964 elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1"
966 AC_MSG_WARN([configure found only the libz header file, not the lib!])
967 CPPFLAGS=$clean_CPPFLAGS
968 LDFLAGS=$clean_LDFLAGS
970 elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1"
972 dnl both header and lib were found!
974 AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file])
975 AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available])
978 LIBS="-lz $clean_LIBS"
980 dnl replace 'HAVE_LIBZ' in the automake makefile.ams
982 AC_MSG_NOTICE([found both libz and libz.h header])
983 curl_zlib_msg="enabled"
987 dnl set variable for use in automakefile(s)
988 AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1)
991 dnl **********************************************************************
993 dnl **********************************************************************
996 AC_ARG_WITH(ldap-lib,
997 AC_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]),
998 [LDAPLIBNAME="$withval"])
1001 AC_ARG_WITH(lber-lib,
1002 AC_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]),
1003 [LBERLIBNAME="$withval"])
1005 if test x$CURL_DISABLE_LDAP != x1 ; then
1007 CURL_CHECK_HEADER_LBER
1008 CURL_CHECK_HEADER_LDAP
1009 CURL_CHECK_HEADER_LDAPSSL
1010 CURL_CHECK_HEADER_LDAP_SSL
1012 if test -z "$LDAPLIBNAME" ; then
1013 if test "$ac_cv_native_windows" = "yes"; then
1014 dnl Windows uses a single and unique LDAP library name
1015 LDAPLIBNAME="wldap32"
1020 if test "$LDAPLIBNAME" ; then
1021 AC_CHECK_LIB("$LDAPLIBNAME", ldap_init,, [
1022 AC_MSG_WARN(["$LDAPLIBNAME" is not an LDAP library: LDAP disabled])
1023 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1024 AC_SUBST(CURL_DISABLE_LDAP, [1])
1025 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1026 AC_SUBST(CURL_DISABLE_LDAPS, [1])])
1028 dnl Try to find the right ldap libraries for this system
1029 CURL_CHECK_LIBS_LDAP
1030 case X-"$curl_cv_ldap_LIBS" in
1032 AC_MSG_WARN([Cannot find libraries for LDAP support: LDAP disabled])
1033 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1034 AC_SUBST(CURL_DISABLE_LDAP, [1])
1035 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1036 AC_SUBST(CURL_DISABLE_LDAPS, [1])
1042 if test x$CURL_DISABLE_LDAP != x1 ; then
1044 if test "$LBERLIBNAME" ; then
1045 dnl If name is "no" then don't define this library at all
1046 dnl (it's only needed if libldap.so's dependencies are broken).
1047 if test "$LBERLIBNAME" != "no" ; then
1048 AC_CHECK_LIB("$LBERLIBNAME", ber_free,, [
1049 AC_MSG_WARN(["$LBERLIBNAME" is not an LBER library: LDAP disabled])
1050 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1051 AC_SUBST(CURL_DISABLE_LDAP, [1])
1052 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1053 AC_SUBST(CURL_DISABLE_LDAPS, [1])])
1058 if test x$CURL_DISABLE_LDAP != x1 ; then
1059 AC_CHECK_FUNCS([ldap_url_parse ldap_init_fd])
1061 if test "$LDAPLIBNAME" = "wldap32"; then
1062 curl_ldap_msg="enabled (winldap)"
1063 AC_DEFINE(CURL_LDAP_WIN, 1, [Use Windows LDAP implementation])
1065 curl_ldap_msg="enabled (OpenLDAP)"
1066 if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then
1067 AC_DEFINE(USE_OPENLDAP, 1, [Use OpenLDAP-specific code])
1068 AC_SUBST(USE_OPENLDAP, [1])
1073 if test x$CURL_DISABLE_LDAPS != x1 ; then
1074 curl_ldaps_msg="enabled"
1077 dnl **********************************************************************
1079 dnl **********************************************************************
1081 AC_MSG_CHECKING([whether to enable ipv6])
1083 AC_HELP_STRING([--enable-ipv6],[Enable ipv6 (with ipv4) support])
1084 AC_HELP_STRING([--disable-ipv6],[Disable ipv6 support]),
1085 [ case "$enableval" in
1090 *) AC_MSG_RESULT(yes)
1095 AC_TRY_RUN([ /* is AF_INET6 available? */
1096 #include <sys/types.h>
1097 #include <sys/socket.h>
1100 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1114 if test "$ipv6" = "yes"; then
1115 curl_ipv6_msg="enabled"
1118 # Check if struct sockaddr_in6 have sin6_scope_id member
1119 if test "$ipv6" = yes; then
1120 AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member])
1122 #include <sys/types.h>
1123 #include <netinet/in.h>] ,
1124 struct sockaddr_in6 s; s.sin6_scope_id = 0; , have_sin6_scope_id=yes)
1125 if test "$have_sin6_scope_id" = yes; then
1126 AC_MSG_RESULT([yes])
1127 AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member])
1133 dnl **********************************************************************
1134 dnl Check if the operating system allows programs to write to their own argv[]
1135 dnl **********************************************************************
1137 AC_MSG_CHECKING([if argv can be written to])
1140 int main(int argc, char ** argv) {
1142 return (argv[0][0] == ' ')?0:1;
1146 curl_cv_writable_argv=yes
1148 curl_cv_writable_argv=no
1150 curl_cv_writable_argv=cross
1152 case $curl_cv_writable_argv in
1154 AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv])
1162 AC_MSG_WARN([the previous check could not be made default was used])
1166 dnl **********************************************************************
1167 dnl Check for the presence of Kerberos4 libraries and headers
1168 dnl **********************************************************************
1170 AC_ARG_WITH(krb4-includes,
1171 AC_HELP_STRING([--with-krb4-includes=DIR],
1172 [Specify location of kerberos4 headers]),[
1173 CPPFLAGS="$CPPFLAGS -I$withval"
1178 AC_ARG_WITH(krb4-libs,
1179 AC_HELP_STRING([--with-krb4-libs=DIR],[Specify location of kerberos4 libs]),[
1180 LDFLAGS="$LDFLAGS -L$withval"
1187 AC_ARG_WITH(krb4,dnl
1188 AC_HELP_STRING([--with-krb4=DIR],[where to look for Kerberos4]),[
1190 if test X"$OPT_KRB4" != Xno; then
1192 if test X"$OPT_KRB4" != Xyes; then
1193 LDFLAGS="$LDFLAGS -L$OPT_KRB4/lib$libsuff"
1194 KRB4LIB="$OPT_KRB4/lib$libsuff"
1195 CPPFLAGS="$CPPFLAGS -I$OPT_KRB4/include"
1196 KRB4INC="$OPT_KRB4/include"
1201 AC_MSG_CHECKING([if Kerberos4 support is requested])
1203 if test "$want_krb4" = yes
1205 if test "$ipv6" = "yes"; then
1206 echo krb4 is not compatible with IPv6
1211 dnl Check for & handle argument to --with-krb4
1213 AC_MSG_CHECKING(where to look for Kerberos4)
1214 if test X"$OPT_KRB4" = Xyes
1216 AC_MSG_RESULT([defaults])
1218 AC_MSG_RESULT([libs in $KRB4LIB, headers in $KRB4INC])
1221 dnl Check for DES library
1222 AC_CHECK_LIB(des, des_pcbc_encrypt,
1224 AC_CHECK_HEADERS(des.h)
1227 AC_CHECK_FUNC(res_search, , [AC_CHECK_LIB(resolv, res_search)])
1229 dnl Check for the Kerberos4 library
1230 AC_CHECK_LIB(krb, krb_net_read,
1232 dnl Check for header files
1233 AC_CHECK_HEADERS(krb.h)
1235 dnl we found the required libraries, add to LIBS
1236 LIBS="-lkrb -lcom_err -ldes $LIBS"
1238 dnl Check for function krb_get_our_ip_for_realm
1239 dnl this is needed for NAT networks
1240 AC_CHECK_FUNCS(krb_get_our_ip_for_realm)
1243 AC_DEFINE(HAVE_KRB4, 1,
1244 [if you have the Kerberos4 libraries (including -ldes)])
1246 dnl substitute it too!
1248 AC_SUBST(KRB4_ENABLED)
1250 curl_krb4_msg="enabled"
1252 dnl the krb4 stuff needs a strlcpy()
1253 AC_CHECK_FUNCS(strlcpy)
1261 dnl **********************************************************************
1262 dnl Check for FBopenssl(SPNEGO) libraries
1263 dnl **********************************************************************
1266 AC_HELP_STRING([--with-spnego=DIR],
1267 [Specify location of SPNEGO library fbopenssl]), [
1268 SPNEGO_ROOT="$withval"
1269 if test x"$SPNEGO_ROOT" != xno; then
1274 AC_MSG_CHECKING([if SPNEGO support is requested])
1275 if test x"$want_spnego" = xyes; then
1277 if test X"$SPNEGO_ROOT" = Xyes; then
1278 AC_MSG_ERROR([FBOpenSSL libs and/or directories were not found where specified!])
1281 if test -z "$SPNEGO_LIB_DIR"; then
1282 LDFLAGS="$LDFLAGS -L$SPNEGO_ROOT -lfbopenssl"
1284 LDFLAGS="$LDFLAGS $SPNEGO_LIB_DIR"
1288 AC_DEFINE(HAVE_SPNEGO, 1,
1289 [Define this if you have the SPNEGO library fbopenssl])
1290 curl_spnego_msg="enabled"
1296 dnl **********************************************************************
1297 dnl Check for GSS-API libraries
1298 dnl **********************************************************************
1300 dnl check for gss stuff in the /usr as default
1303 AC_ARG_WITH(gssapi-includes,
1304 AC_HELP_STRING([--with-gssapi-includes=DIR],
1305 [Specify location of GSSAPI header]),
1306 [ GSSAPI_INCS="-I$withval"
1310 AC_ARG_WITH(gssapi-libs,
1311 AC_HELP_STRING([--with-gssapi-libs=DIR],
1312 [Specify location of GSSAPI libs]),
1313 [ GSSAPI_LIB_DIR="-L$withval"
1318 AC_HELP_STRING([--with-gssapi=DIR],
1319 [Where to look for GSSAPI]), [
1320 GSSAPI_ROOT="$withval"
1321 if test x"$GSSAPI_ROOT" != xno; then
1323 if test x"$GSSAPI_ROOT" = xyes; then
1324 dnl if yes, then use default root
1330 save_CPPFLAGS="$CPPFLAGS"
1331 AC_MSG_CHECKING([if GSSAPI support is requested])
1332 if test x"$want_gss" = xyes; then
1335 if test -z "$GSSAPI_INCS"; then
1336 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1337 GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
1338 elif test "$GSSAPI_ROOT" != "yes"; then
1339 GSSAPI_INCS="-I$GSSAPI_ROOT/include"
1343 CPPFLAGS="$CPPFLAGS $GSSAPI_INCS"
1345 AC_CHECK_HEADER(gss.h,
1347 dnl found in the given dirs
1348 AC_DEFINE(HAVE_GSSGNU, 1, [if you have the GNU gssapi libraries])
1352 dnl not found, check Heimdal or MIT
1353 AC_CHECK_HEADERS([gssapi/gssapi.h], [], [not_mit=1])
1355 [gssapi/gssapi_generic.h gssapi/gssapi_krb5.h],
1360 #ifdef HAVE_GSSAPI_GSSAPI_H
1361 #include <gssapi/gssapi.h>
1364 if test "x$not_mit" = "x1"; then
1365 dnl MIT not found, check for Heimdal
1366 AC_CHECK_HEADER(gssapi.h,
1369 AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have the Heimdal gssapi libraries])
1372 dnl no header found, disabling GSS
1374 AC_MSG_WARN(disabling GSSAPI since no header files was found)
1379 AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
1380 dnl check if we have a really old MIT kerberos (<= 1.2)
1381 AC_MSG_CHECKING([if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE])
1384 #include <gssapi/gssapi.h>
1385 #include <gssapi/gssapi_generic.h>
1386 #include <gssapi/gssapi_krb5.h>
1391 GSS_C_NT_HOSTBASED_SERVICE,
1395 AC_MSG_RESULT([yes])
1398 AC_DEFINE(HAVE_OLD_GSSMIT, 1,
1399 [if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE])
1407 if test x"$want_gss" = xyes; then
1408 AC_DEFINE(HAVE_GSSAPI, 1, [if you have the gssapi libraries])
1410 curl_gss_msg="enabled (MIT/Heimdal)"
1412 if test -n "$gnu_gss"; then
1413 curl_gss_msg="enabled (GNU GSS)"
1414 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1416 elif test -z "$GSSAPI_LIB_DIR"; then
1419 LIBS="-lgssapi_krb5 -lresolv $LIBS"
1422 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1423 dnl krb5-config doesn't have --libs-only-L or similar, put everything
1425 gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
1426 LIBS="$gss_libs $LIBS"
1427 elif test "$GSSAPI_ROOT" != "yes"; then
1428 LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
1429 LIBS="-lgssapi $LIBS"
1431 LIBS="-lgssapi $LIBS"
1436 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1437 LIBS="-lgssapi $LIBS"
1440 CPPFLAGS="$save_CPPFLAGS"
1443 dnl -------------------------------------------------
1444 dnl check winssl option before other SSL libraries
1445 dnl -------------------------------------------------
1448 AC_ARG_WITH(winssl,dnl
1449 AC_HELP_STRING([--with-winssl],[enable Windows native SSL/TLS])
1450 AC_HELP_STRING([--without-winssl], [disable Windows native SSL/TLS]),
1451 OPT_WINSSL=$withval)
1453 AC_MSG_CHECKING([whether to enable Windows native SSL/TLS (Windows native builds only)])
1454 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1455 if test "x$OPT_WINSSL" != "xno" &&
1456 test "x$ac_cv_native_windows" = "xyes"; then
1458 AC_DEFINE(USE_SCHANNEL, 1, [to enable Windows native SSL/TLS support])
1459 AC_SUBST(USE_SCHANNEL, [1])
1460 curl_ssl_msg="enabled (Windows-native)"
1462 # --with-winssl implies --enable-sspi
1463 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
1464 AC_SUBST(USE_WINDOWS_SSPI, [1])
1465 curl_sspi_msg="enabled"
1474 AC_ARG_WITH(darwinssl,dnl
1475 AC_HELP_STRING([--with-darwinssl],[enable iOS/Mac OS X native SSL/TLS])
1476 AC_HELP_STRING([--without-darwinssl], [disable iOS/Mac OS X native SSL/TLS]),
1477 OPT_DARWINSSL=$withval)
1479 AC_MSG_CHECKING([whether to enable iOS/Mac OS X native SSL/TLS])
1480 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1481 if test "x$OPT_DARWINSSL" != "xno" &&
1482 test -d "/System/Library/Frameworks/Security.framework"; then
1484 AC_DEFINE(USE_DARWINSSL, 1, [to enable iOS/Mac OS X native SSL/TLS support])
1485 AC_SUBST(USE_DARWINSSL, [1])
1486 curl_ssl_msg="enabled (iOS/Mac OS X-native)"
1488 LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Security"
1496 dnl **********************************************************************
1497 dnl Check for the presence of SSL libraries and headers
1498 dnl **********************************************************************
1500 dnl Default to compiler & linker defaults for SSL files & libraries.
1502 dnl Default to no CA bundle
1505 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])
1506 AC_HELP_STRING([--without-ssl], [disable OpenSSL]),
1509 if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
1510 dnl backup the pre-ssl variables
1511 CLEANLDFLAGS="$LDFLAGS"
1512 CLEANCPPFLAGS="$CPPFLAGS"
1517 dnl --with-ssl (without path) used
1518 if test x$cross_compiling != xyes; then
1519 dnl only do pkg-config magic when not cross-compiling
1522 PREFIX_OPENSSL=/usr/local/ssl
1523 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1526 dnl no --with-ssl option given, just check default places
1527 if test x$cross_compiling != xyes; then
1528 dnl only do pkg-config magic when not cross-compiling
1534 dnl check the given --with-ssl spot
1536 PREFIX_OPENSSL=$OPT_SSL
1538 dnl Try pkg-config even when cross-compiling. Since we
1539 dnl specify PKG_CONFIG_LIBDIR we're only looking where
1540 dnl the user told us to look
1541 OPENSSL_PCDIR="$OPT_SSL/lib/pkgconfig"
1542 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$OPENSSL_PCDIR"])
1543 if test -f "$OPENSSL_PCDIR/openssl.pc"; then
1547 dnl in case pkg-config comes up empty, use what we got
1549 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1550 if test "$PREFIX_OPENSSL" != "/usr" ; then
1551 SSL_LDFLAGS="-L$LIB_OPENSSL"
1552 SSL_CPPFLAGS="-I$PREFIX_OPENSSL/include"
1554 SSL_CPPFLAGS="$SSL_CPPFLAGS -I$PREFIX_OPENSSL/include/openssl"
1558 if test "$PKGTEST" = "yes"; then
1560 CURL_CHECK_PKGCONFIG(openssl, [$OPENSSL_PCDIR])
1562 if test "$PKGCONFIG" != "no" ; then
1563 SSL_LIBS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1564 $PKGCONFIG --libs-only-l openssl 2>/dev/null`
1566 SSL_LDFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1567 $PKGCONFIG --libs-only-L openssl 2>/dev/null`
1569 SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1570 $PKGCONFIG --cflags-only-I openssl 2>/dev/null`
1572 AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"])
1573 AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"])
1574 AC_MSG_NOTICE([pkg-config: SSL_CPPFLAGS: "$SSL_CPPFLAGS"])
1576 LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/-L//g'`
1578 dnl use the values pkg-config reported. This is here
1579 dnl instead of below with CPPFLAGS and LDFLAGS because we only
1580 dnl learn about this via pkg-config. If we only have
1581 dnl the argument to --with-ssl we don't know what
1582 dnl additional libs may be necessary. Hope that we
1584 LIBS="$SSL_LIBS $LIBS"
1588 dnl finally, set flags to use SSL
1589 CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
1590 LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
1592 dnl This is for Msys/Mingw
1594 *-*-msys* | *-*-mingw*)
1595 AC_MSG_CHECKING([for gdi32])
1596 my_ac_save_LIBS=$LIBS
1597 LIBS="-lgdi32 $LIBS"
1598 AC_TRY_LINK([#include <windef.h>
1599 #include <wingdi.h>],
1602 AC_MSG_RESULT([yes])],
1603 [ dnl failed, restore LIBS
1604 LIBS=$my_ac_save_LIBS
1610 AC_CHECK_LIB(crypto, CRYPTO_lock,[
1612 LIBS="-lcrypto $LIBS"
1614 LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL"
1615 CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include"
1616 AC_CHECK_LIB(crypto, CRYPTO_add_lock,[
1618 LIBS="-lcrypto $LIBS"], [
1619 LDFLAGS="$CLEANLDFLAGS"
1620 CPPFLAGS="$CLEANCPPFLAGS"
1626 if test X"$HAVECRYPTO" = X"yes"; then
1627 dnl This is only reasonable to do if crypto actually is there: check for
1628 dnl SSL libs NOTE: it is important to do this AFTER the crypto lib
1630 AC_CHECK_LIB(ssl, SSL_connect)
1632 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1633 dnl we didn't find the SSL lib, try the RSAglue/rsaref stuff
1634 AC_MSG_CHECKING(for ssl with RSAglue/rsaref libs in use);
1636 LIBS="-lRSAglue -lrsaref $LIBS"
1637 AC_CHECK_LIB(ssl, SSL_connect)
1638 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1639 dnl still no SSL_connect
1648 dnl Have the libraries--check for SSLeay/OpenSSL headers
1649 AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
1650 openssl/pem.h openssl/ssl.h openssl/err.h,
1651 curl_ssl_msg="enabled (OpenSSL)"
1653 AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]))
1655 if test $ac_cv_header_openssl_x509_h = no; then
1656 dnl we don't use the "action" part of the AC_CHECK_HEADERS macro
1657 dnl since 'err.h' might in fact find a krb4 header with the same
1659 AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h)
1661 if test $ac_cv_header_x509_h = yes &&
1662 test $ac_cv_header_crypto_h = yes &&
1663 test $ac_cv_header_ssl_h = yes; then
1665 curl_ssl_msg="enabled (OpenSSL)"
1671 if test X"$OPENSSL_ENABLED" = X"1"; then
1672 AC_DEFINE(USE_SSLEAY, 1, [if SSL is enabled])
1674 dnl is there a pkcs12.h header present?
1675 AC_CHECK_HEADERS(openssl/pkcs12.h)
1679 dnl USE_SSLEAY is the historical name for what configure calls
1680 dnl OPENSSL_ENABLED; the names should really be unified
1681 USE_SSLEAY="$OPENSSL_ENABLED"
1682 AC_SUBST(USE_SSLEAY)
1684 if test X"$OPT_SSL" != Xoff &&
1685 test "$OPENSSL_ENABLED" != "1"; then
1686 AC_MSG_ERROR([OpenSSL libs and/or directories were not found where specified!])
1690 if test X"$OPENSSL_ENABLED" = X"1"; then
1691 dnl If the ENGINE library seems to be around, check for the OpenSSL engine
1692 dnl stuff, it is kind of "separated" from the main SSL check
1693 AC_CHECK_FUNC(ENGINE_init,
1695 AC_CHECK_HEADERS(openssl/engine.h)
1696 AC_CHECK_FUNCS( ENGINE_load_builtin_engines )
1699 dnl these can only exist if openssl exists
1700 dnl yassl doesn't have SSL_get_shutdown
1702 AC_CHECK_FUNCS( RAND_status \
1706 CRYPTO_cleanup_all_ex_data \
1708 SSLv2_client_method )
1710 dnl Make an attempt to detect if this is actually yassl's headers and
1711 dnl OpenSSL emulation layer. We still leave everything else believing
1712 dnl and acting like OpenSSL.
1714 AC_MSG_CHECKING([for yaSSL using OpenSSL compatibility mode])
1717 #include <openssl/ssl.h>
1719 #if defined(YASSL_VERSION) && defined(OPENSSL_VERSION_NUMBER)
1720 int dummy = SSL_ERROR_NONE;
1722 Not the yaSSL OpenSSL compatibility header.
1726 AC_MSG_RESULT([yes])
1727 AC_DEFINE_UNQUOTED(USE_YASSLEMUL, 1,
1728 [Define to 1 if using yaSSL in OpenSSL compatibility mode.])
1729 curl_ssl_msg="enabled (OpenSSL emulation by yaSSL)"
1735 if test "$OPENSSL_ENABLED" = "1"; then
1736 if test -n "$LIB_OPENSSL"; then
1737 dnl when the ssl shared libs were found in a path that the run-time
1738 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
1739 dnl to prevent further configure tests to fail due to this
1740 if test "x$cross_compiling" != "xyes"; then
1741 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_OPENSSL"
1742 export LD_LIBRARY_PATH
1743 AC_MSG_NOTICE([Added $LIB_OPENSSL to LD_LIBRARY_PATH])
1746 CURL_CHECK_OPENSSL_API
1751 dnl **********************************************************************
1752 dnl Check for the random seed preferences
1753 dnl **********************************************************************
1755 if test X"$OPENSSL_ENABLED" = X"1"; then
1756 AC_ARG_WITH(egd-socket,
1757 AC_HELP_STRING([--with-egd-socket=FILE],
1758 [Entropy Gathering Daemon socket pathname]),
1759 [ EGD_SOCKET="$withval" ]
1761 if test -n "$EGD_SOCKET" ; then
1762 AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET",
1763 [your Entropy Gathering Daemon socket pathname] )
1766 dnl Check for user-specified random device
1768 AC_HELP_STRING([--with-random=FILE],
1769 [read randomness from FILE (default=/dev/urandom)]),
1770 [ RANDOM_FILE="$withval" ],
1772 if test x$cross_compiling != xyes; then
1773 dnl Check for random device
1774 AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
1776 AC_MSG_WARN([skipped the /dev/urandom detection when cross-compiling])
1780 if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
1781 AC_SUBST(RANDOM_FILE)
1782 AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
1783 [a suitable file to read random data from])
1788 dnl We require OpenSSL with SRP support.
1790 if test "$OPENSSL_ENABLED" = "1"; then
1791 AC_CHECK_LIB(crypto, SRP_Calc_client_key,
1793 AC_DEFINE(HAVE_SSLEAY_SRP, 1, [if you have the function SRP_Calc_client_key])
1794 AC_SUBST(HAVE_SSLEAY_SRP, [1])
1798 dnl ----------------------------------------------------
1799 dnl check for GnuTLS
1800 dnl ----------------------------------------------------
1802 dnl Default to compiler & linker defaults for GnuTLS files & libraries.
1805 AC_ARG_WITH(gnutls,dnl
1806 AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root])
1807 AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]),
1808 OPT_GNUTLS=$withval)
1810 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1812 if test X"$OPT_GNUTLS" != Xno; then
1815 if test "x$OPT_GNUTLS" = "xyes"; then
1816 dnl this is with no partiular path given
1817 CURL_CHECK_PKGCONFIG(gnutls)
1819 if test "$PKGCONFIG" != "no" ; then
1820 addlib=`$PKGCONFIG --libs-only-l gnutls`
1821 addld=`$PKGCONFIG --libs-only-L gnutls`
1822 addcflags=`$PKGCONFIG --cflags-only-I gnutls`
1823 version=`$PKGCONFIG --modversion gnutls`
1824 gtlslib=`echo $addld | $SED -e 's/-L//'`
1826 dnl without pkg-config, we try libgnutls-config as that was how it
1828 check=`libgnutls-config --version 2>/dev/null`
1829 if test -n "$check"; then
1830 addlib=`libgnutls-config --libs`
1831 addcflags=`libgnutls-config --cflags`
1832 version=`libgnutls-config --version`
1833 gtlslib=`libgnutls-config --prefix`/lib$libsuff
1837 dnl this is with a given path, first check if there's a libgnutls-config
1838 dnl there and if not, make an educated guess
1839 cfg=$OPT_GNUTLS/bin/libgnutls-config
1840 check=`$cfg --version 2>/dev/null`
1841 if test -n "$check"; then
1842 addlib=`$cfg --libs`
1843 addcflags=`$cfg --cflags`
1844 version=`$cfg --version`
1845 gtlslib=`$cfg --prefix`/lib$libsuff
1847 dnl without pkg-config and libgnutls-config, we guess a lot!
1849 addld=-L$OPT_GNUTLS/lib$libsuff
1850 addcflags=-I$OPT_GNUTLS/include
1851 version="" # we just don't know
1852 gtlslib=$OPT_GNUTLS/lib$libsuff
1856 if test -z "$version"; then
1857 dnl lots of efforts, still no go
1861 if test -n "$addlib"; then
1864 CLEANCPPFLAGS="$CPPFLAGS"
1865 CLEADLDFLAGS="$LDFLAGS"
1867 LIBS="$addlib $LIBS"
1868 LDFLAGS="$LDFLAGS $addld"
1869 if test "$addcflags" != "-I/usr/include"; then
1870 CPPFLAGS="$CPPFLAGS $addcflags"
1873 AC_CHECK_LIB(gnutls, gnutls_check_version,
1875 AC_DEFINE(USE_GNUTLS, 1, [if GnuTLS is enabled])
1876 AC_SUBST(USE_GNUTLS, [1])
1879 curl_ssl_msg="enabled (GnuTLS)"
1883 CPPFLAGS="$CLEANCPPFLAGS"
1886 if test "x$USE_GNUTLS" = "xyes"; then
1887 AC_MSG_NOTICE([detected GnuTLS version $version])
1889 if test -n "$gtlslib"; then
1890 dnl when shared libs were found in a path that the run-time
1891 dnl linker doesn't search through, we need to add it to
1892 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1894 if test "x$cross_compiling" != "xyes"; then
1895 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlslib"
1896 export LD_LIBRARY_PATH
1897 AC_MSG_NOTICE([Added $gtlslib to LD_LIBRARY_PATH])
1904 fi dnl GNUTLS not disabled
1909 dnl Check which crypto backend GnuTLS uses
1912 if test "$GNUTLS_ENABLED" = "1"; then
1914 # First check if we can detect either crypto library via transitive linking
1915 AC_CHECK_LIB(gnutls, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1916 if test "$USE_GNUTLS_NETTLE" = ""; then
1917 AC_CHECK_LIB(gnutls, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1919 # If not, try linking directly to both of them to see if they are available
1920 if test "$USE_GNUTLS_NETTLE" = ""; then
1921 AC_CHECK_LIB(nettle, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1923 if test "$USE_GNUTLS_NETTLE" = ""; then
1924 AC_CHECK_LIB(gcrypt, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1926 if test "$USE_GNUTLS_NETTLE" = ""; then
1927 AC_MSG_ERROR([GnuTLS found, but neither gcrypt nor nettle found])
1929 if test "$USE_GNUTLS_NETTLE" = "1"; then
1930 AC_DEFINE(USE_GNUTLS_NETTLE, 1, [if GnuTLS uses nettle as crypto backend])
1931 AC_SUBST(USE_GNUTLS_NETTLE, [1])
1932 LIBS="-lnettle $LIBS"
1934 LIBS="-lgcrypt $LIBS"
1939 dnl We require GnuTLS with SRP support.
1941 if test "$GNUTLS_ENABLED" = "1"; then
1942 AC_CHECK_LIB(gnutls, gnutls_srp_verifier,
1944 AC_DEFINE(HAVE_GNUTLS_SRP, 1, [if you have the function gnutls_srp_verifier])
1945 AC_SUBST(HAVE_GNUTLS_SRP, [1])
1949 dnl ----------------------------------------------------
1950 dnl check for PolarSSL
1951 dnl ----------------------------------------------------
1953 dnl Default to compiler & linker defaults for PolarSSL files & libraries.
1958 AC_ARG_WITH(polarssl,dnl
1959 AC_HELP_STRING([--with-polarssl=PATH],[where to look for PolarSSL, PATH points to the installation root])
1960 AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]),
1961 OPT_POLARSSL=$withval)
1963 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1965 if test X"$OPT_POLARSSL" != Xno; then
1967 if test "$OPT_POLARSSL" = "yes"; then
1971 if test -z "$OPT_POLARSSL" ; then
1972 dnl check for lib first without setting any new path
1974 AC_CHECK_LIB(polarssl, havege_init,
1975 dnl libpolarssl found, set the variable
1977 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1978 AC_SUBST(USE_POLARSSL, [1])
1981 curl_ssl_msg="enabled (PolarSSL)"
1985 if test "x$USE_POLARSSL" != "xyes"; then
1986 dnl add the path and test again
1987 addld=-L$OPT_POLARSSL/lib$libsuff
1988 addcflags=-I$OPT_POLARSSL/include
1989 polarssllib=$OPT_POLARSSL/lib$libsuff
1991 LDFLAGS="$LDFLAGS $addld"
1992 if test "$addcflags" != "-I/usr/include"; then
1993 CPPFLAGS="$CPPFLAGS $addcflags"
1996 AC_CHECK_LIB(polarssl, ssl_init,
1998 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1999 AC_SUBST(USE_POLARSSL, [1])
2002 curl_ssl_msg="enabled (PolarSSL)"
2010 if test "x$USE_POLARSSL" = "xyes"; then
2011 AC_MSG_NOTICE([detected PolarSSL])
2013 LIBS="-lpolarssl $LIBS"
2015 if test -n "$polarssllib"; then
2016 dnl when shared libs were found in a path that the run-time
2017 dnl linker doesn't search through, we need to add it to
2018 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2020 if test "x$cross_compiling" != "xyes"; then
2021 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$polarssllib"
2022 export LD_LIBRARY_PATH
2023 AC_MSG_NOTICE([Added $polarssllib to LD_LIBRARY_PATH])
2028 fi dnl PolarSSL not disabled
2032 dnl ----------------------------------------------------
2033 dnl check for CyaSSL
2034 dnl ----------------------------------------------------
2036 dnl Default to compiler & linker defaults for CyaSSL files & libraries.
2041 AC_ARG_WITH(cyassl,dnl
2042 AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to the installation root (default: system lib default)])
2043 AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
2044 OPT_CYASSL=$withval)
2046 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2048 if test X"$OPT_CYASSL" != Xno; then
2050 if test "$OPT_CYASSL" = "yes"; then
2054 if test -z "$OPT_CYASSL" ; then
2055 dnl check for lib in system default first
2057 AC_CHECK_LIB(cyassl, CyaSSL_Init,
2058 dnl libcyassl found, set the variable
2060 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2061 AC_SUBST(USE_CYASSL, [1])
2064 curl_ssl_msg="enabled (CyaSSL)"
2068 if test "x$USE_CYASSL" != "xyes"; then
2069 dnl add the path and test again
2070 addld=-L$OPT_CYASSL/lib$libsuff
2071 addcflags=-I$OPT_CYASSL/include
2072 cyassllib=$OPT_CYASSL/lib$libsuff
2074 LDFLAGS="$LDFLAGS $addld"
2075 if test "$addcflags" != "-I/usr/include"; then
2076 CPPFLAGS="$CPPFLAGS $addcflags"
2079 AC_CHECK_LIB(cyassl, CyaSSL_Init,
2081 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2082 AC_SUBST(USE_CYASSL, [1])
2085 curl_ssl_msg="enabled (CyaSSL)"
2093 if test "x$USE_CYASSL" = "xyes"; then
2094 AC_MSG_NOTICE([detected CyaSSL])
2096 LIBS="-lcyassl -lm $LIBS"
2098 if test -n "$cyassllib"; then
2099 dnl when shared libs were found in a path that the run-time
2100 dnl linker doesn't search through, we need to add it to
2101 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2103 if test "x$cross_compiling" != "xyes"; then
2104 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$cyassllib"
2105 export LD_LIBRARY_PATH
2106 AC_MSG_NOTICE([Added $cyassllib to LD_LIBRARY_PATH])
2112 fi dnl CyaSSL not disabled
2116 dnl ----------------------------------------------------
2117 dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
2118 dnl ----------------------------------------------------
2120 dnl Default to compiler & linker defaults for NSS files & libraries.
2124 AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root])
2125 AC_HELP_STRING([--without-nss], [disable NSS detection]),
2128 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2130 if test X"$OPT_NSS" != Xno; then
2131 if test "x$OPT_NSS" = "xyes"; then
2133 CURL_CHECK_PKGCONFIG(nss)
2135 if test "$PKGCONFIG" != "no" ; then
2136 addlib=`$PKGCONFIG --libs nss`
2137 addcflags=`$PKGCONFIG --cflags nss`
2138 version=`$PKGCONFIG --modversion nss`
2139 nssprefix=`$PKGCONFIG --variable=prefix nss`
2141 dnl Without pkg-config, we check for nss-config
2143 check=`nss-config --version 2>/dev/null`
2144 if test -n "$check"; then
2145 addlib=`nss-config --libs`
2146 addcflags=`nss-config --cflags`
2147 version=`nss-config --version`
2148 nssprefix=`nss-config --prefix`
2156 # Without pkg-config, we'll kludge in some defaults
2157 addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
2158 addcflags="-I$OPT_NSS/include"
2163 if test -n "$addlib"; then
2166 CLEANCPPFLAGS="$CPPFLAGS"
2168 LIBS="$addlib $LIBS"
2169 if test "$addcflags" != "-I/usr/include"; then
2170 CPPFLAGS="$CPPFLAGS $addcflags"
2173 dnl The function PK11_CreateGenericObject is needed to load libnsspem.so
2174 AC_CHECK_LIB(nss3, PK11_CreateGenericObject,
2176 AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
2177 AC_SUBST(USE_NSS, [1])
2180 curl_ssl_msg="enabled (NSS)"
2184 CPPFLAGS="$CLEANCPPFLAGS"
2187 if test "x$USE_NSS" = "xyes"; then
2188 AC_MSG_NOTICE([detected NSS version $version])
2190 dnl NSS_InitContext() was introduced in NSS 3.12.5 and helps to prevent
2191 dnl collisions on NSS initialization/shutdown with other libraries
2192 AC_CHECK_FUNC(NSS_InitContext,
2194 AC_DEFINE(HAVE_NSS_INITCONTEXT, 1, [if you have the NSS_InitContext function])
2195 AC_SUBST(HAVE_NSS_INITCONTEXT, [1])
2198 dnl when shared libs were found in a path that the run-time
2199 dnl linker doesn't search through, we need to add it to
2200 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2202 if test "x$cross_compiling" != "xyes"; then
2203 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
2204 export LD_LIBRARY_PATH
2205 AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
2211 fi dnl NSS not disabled
2213 fi dnl curl_ssl_msg = init_ssl_msg
2217 AC_ARG_WITH(axtls,dnl
2218 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.])
2219 AC_HELP_STRING([--without-axtls], [disable axTLS]),
2222 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2223 if test X"$OPT_AXTLS" != Xno; then
2224 dnl backup the pre-axtls variables
2225 CLEANLDFLAGS="$LDFLAGS"
2226 CLEANCPPFLAGS="$CPPFLAGS"
2229 case "$OPT_AXTLS" in
2231 dnl --with-axtls (without path) used
2232 PREFIX_AXTLS=/usr/local
2233 LIB_AXTLS="$PREFIX_AXTLS/lib"
2234 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2235 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2238 dnl no --with-axtls option given, just check default places
2242 dnl check the given --with-axtls spot
2243 PREFIX_AXTLS=$OPT_AXTLS
2244 LIB_AXTLS="$PREFIX_AXTLS/lib"
2245 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2246 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2250 AC_CHECK_LIB(axtls, ssl_version,[
2251 LIBS="-laxtls $LIBS"
2252 AC_DEFINE(USE_AXTLS, 1, [if axTLS is enabled])
2253 AC_SUBST(USE_AXTLS, [1])
2256 curl_ssl_msg="enabled (axTLS)"
2259 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
2260 export LD_LIBRARY_PATH
2261 AC_MSG_NOTICE([Added $LIB_AXTLS to LD_LIBRARY_PATH])
2263 LDFLAGS="$CLEANLDFLAGS"
2264 CPPFLAGS="$CLEANCPPFLAGS"
2270 if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$DARWINSSL_ENABLED" = "x"; then
2271 AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
2272 AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls or --with-winssl to address this.])
2274 # SSL is enabled, genericly
2275 AC_SUBST(SSL_ENABLED)
2279 dnl **********************************************************************
2280 dnl Check for the CA bundle
2281 dnl **********************************************************************
2283 CURL_CHECK_CA_BUNDLE
2285 dnl **********************************************************************
2286 dnl Check for libmetalink
2287 dnl **********************************************************************
2291 AC_ARG_WITH(libmetalink,dnl
2292 AC_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root])
2293 AC_HELP_STRING([--without-libmetalink], [disable libmetalink detection]),
2294 OPT_LIBMETALINK=$withval)
2296 if test X"$OPT_LIBMETALINK" != Xno; then
2304 if test "x$OPT_LIBMETALINK" = "xyes"; then
2305 dnl this is with no partiular path given
2307 CURL_CHECK_PKGCONFIG(libmetalink)
2309 dnl When particular path is given, set PKG_CONFIG_LIBDIR using the path.
2310 LIBMETALINK_PCDIR="$OPT_LIBMETALINK/lib/pkgconfig"
2311 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$LIBMETALINK_PCDIR"])
2312 if test -f "$LIBMETALINK_PCDIR/libmetalink.pc"; then
2315 if test "$PKGTEST" = "yes"; then
2316 CURL_CHECK_PKGCONFIG(libmetalink, [$LIBMETALINK_PCDIR])
2319 if test "$PKGTEST" = "yes" && test "$PKGCONFIG" != "no"; then
2320 addlib=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2321 $PKGCONFIG --libs-only-l libmetalink`
2322 addld=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2323 $PKGCONFIG --libs-only-L libmetalink`
2324 addcflags=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2325 $PKGCONFIG --cflags-only-I libmetalink`
2326 version=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2327 $PKGCONFIG --modversion libmetalink`
2328 libmetalinklib=`echo $addld | $SED -e 's/-L//'`
2330 if test -n "$addlib"; then
2332 clean_CPPFLAGS="$CPPFLAGS"
2333 clean_LDFLAGS="$LDFLAGS"
2335 CPPFLAGS="$addcflags $clean_CPPFLAGS"
2336 LDFLAGS="$addld $clean_LDFLAGS"
2337 LIBS="$addlib $clean_LIBS"
2338 AC_MSG_CHECKING([if libmetalink is recent enough])
2341 # include <metalink/metalink.h>
2343 if(0 != metalink_strerror(0)) /* added in 0.1.0 */
2347 AC_MSG_RESULT([yes ($version)])
2350 AC_MSG_RESULT([no ($version)])
2351 AC_MSG_NOTICE([libmetalink library defective or too old])
2354 CPPFLAGS="$clean_CPPFLAGS"
2355 LDFLAGS="$clean_LDFLAGS"
2357 if test "$want_metalink" = "yes"; then
2358 dnl finally libmetalink will be used
2359 AC_DEFINE(USE_METALINK, 1, [Define to enable metalink support])
2360 LIBMETALINK_LIBS=$addlib
2361 LIBMETALINK_LDFLAGS=$addld
2362 LIBMETALINK_CFLAGS=$addcflags
2363 AC_SUBST([LIBMETALINK_LIBS])
2364 AC_SUBST([LIBMETALINK_LDFLAGS])
2365 AC_SUBST([LIBMETALINK_CFLAGS])
2366 curl_mtlnk_msg="enabled"
2372 dnl **********************************************************************
2373 dnl Check for the presence of LIBSSH2 libraries and headers
2374 dnl **********************************************************************
2376 dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
2378 AC_ARG_WITH(libssh2,dnl
2379 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])
2380 AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
2381 OPT_LIBSSH2=$withval)
2383 if test X"$OPT_LIBSSH2" != Xno; then
2384 dnl backup the pre-libssh2 variables
2385 CLEANLDFLAGS="$LDFLAGS"
2386 CLEANCPPFLAGS="$CPPFLAGS"
2389 case "$OPT_LIBSSH2" in
2391 dnl --with-libssh2 (without path) used
2392 CURL_CHECK_PKGCONFIG(libssh2)
2394 if test "$PKGCONFIG" != "no" ; then
2395 LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2`
2396 LD_SSH2=`$PKGCONFIG --libs-only-L libssh2`
2397 CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2`
2398 version=`$PKGCONFIG --modversion libssh2`
2399 DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'`
2404 dnl no --with-libssh2 option given, just check default places
2407 dnl use the given --with-libssh2 spot
2408 PREFIX_SSH2=$OPT_LIBSSH2
2412 dnl if given with a prefix, we set -L and -I based on that
2413 if test -n "$PREFIX_SSH2"; then
2415 LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff
2416 CPP_SSH2=-I${PREFIX_SSH2}/include
2417 DIR_SSH2=${PREFIX_SSH2}/lib$libsuff
2420 LDFLAGS="$LDFLAGS $LD_SSH2"
2421 CPPFLAGS="$CPPFLAGS $CPP_SSH2"
2422 LIBS="$LIB_SSH2 $LIBS"
2424 AC_CHECK_LIB(ssh2, libssh2_channel_open_ex)
2426 AC_CHECK_HEADERS(libssh2.h,
2427 curl_ssh_msg="enabled (libSSH2)"
2429 AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
2430 AC_SUBST(USE_LIBSSH2, [1])
2433 if test X"$OPT_LIBSSH2" != Xoff &&
2434 test "$LIBSSH2_ENABLED" != "1"; then
2435 AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!])
2438 if test "$LIBSSH2_ENABLED" = "1"; then
2439 if test -n "$DIR_SSH2"; then
2440 dnl when the libssh2 shared libs were found in a path that the run-time
2441 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
2442 dnl to prevent further configure tests to fail due to this
2444 dnl libssh2_version is a post 1.0 addition
2445 dnl libssh2_init and libssh2_exit were added in 1.2.5
2446 dnl libssh2_scp_send64 was added in 1.2.6
2447 dnl libssh2_session_handshake was added in 1.2.8
2448 AC_CHECK_FUNCS( libssh2_version libssh2_init libssh2_exit \
2449 libssh2_scp_send64 libssh2_session_handshake)
2450 if test "x$cross_compiling" != "xyes"; then
2451 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
2452 export LD_LIBRARY_PATH
2453 AC_MSG_NOTICE([Added $DIR_SSH2 to LD_LIBRARY_PATH])
2457 dnl no libssh2, revert back to clean variables
2458 LDFLAGS=$CLEANLDFLAGS
2459 CPPFLAGS=$CLEANCPPFLAGS
2464 dnl **********************************************************************
2465 dnl Check for the presence of LIBRTMP libraries and headers
2466 dnl **********************************************************************
2468 dnl Default to compiler & linker defaults for LIBRTMP files & libraries.
2470 AC_ARG_WITH(librtmp,dnl
2471 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])
2472 AC_HELP_STRING([--without-librtmp], [disable LIBRTMP]),
2473 OPT_LIBRTMP=$withval)
2475 if test X"$OPT_LIBRTMP" != Xno; then
2476 dnl backup the pre-librtmp variables
2477 CLEANLDFLAGS="$LDFLAGS"
2478 CLEANCPPFLAGS="$CPPFLAGS"
2481 case "$OPT_LIBRTMP" in
2483 dnl --with-librtmp (without path) used
2484 CURL_CHECK_PKGCONFIG(librtmp)
2486 if test "$PKGCONFIG" != "no" ; then
2487 LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp`
2488 LD_RTMP=`$PKGCONFIG --libs-only-L librtmp`
2489 CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp`
2490 version=`$PKGCONFIG --modversion librtmp`
2491 DIR_RTMP=`echo $LD_RTMP | $SED -e 's/-L//'`
2493 dnl To avoid link errors, we do not allow --librtmp without
2494 dnl a pkgconfig file
2495 AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.])
2500 dnl no --with-librtmp option given, just check default places
2504 dnl use the given --with-librtmp spot
2505 PREFIX_RTMP=$OPT_LIBRTMP
2509 dnl if given with a prefix, we set -L and -I based on that
2510 if test -n "$PREFIX_RTMP"; then
2511 LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff
2512 CPP_RTMP=-I${PREFIX_RTMP}/include
2513 DIR_RTMP=${PREFIX_RTMP}/lib$libsuff
2516 LDFLAGS="$LDFLAGS $LD_RTMP"
2517 CPPFLAGS="$CPPFLAGS $CPP_RTMP"
2518 LIBS="$LIB_RTMP $LIBS"
2520 AC_CHECK_LIB(rtmp, RTMP_Init,
2522 AC_CHECK_HEADERS(librtmp/rtmp.h,
2523 curl_rtmp_msg="enabled (librtmp)"
2525 AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use])
2526 AC_SUBST(USE_LIBRTMP, [1])
2529 dnl not found, revert back to clean variables
2530 LDFLAGS=$CLEANLDFLAGS
2531 CPPFLAGS=$CLEANCPPFLAGS
2535 if test X"$OPT_LIBRTMP" != Xoff &&
2536 test "$LIBRTMP_ENABLED" != "1"; then
2537 AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!])
2542 dnl **********************************************************************
2543 dnl Check for linker switch for versioned symbols
2544 dnl **********************************************************************
2546 versioned_symbols_flavour=
2547 AC_MSG_CHECKING([whether versioned symbols are wanted])
2548 AC_ARG_ENABLE(versioned-symbols,
2549 AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library])
2550 AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]),
2551 [ case "$enableval" in
2552 yes) AC_MSG_RESULT(yes)
2553 AC_MSG_CHECKING([if libraries can be versioned])
2554 GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
2555 if test -z "$GLD"; then
2557 AC_MSG_WARN([You need an ld version supporting the --version-script option])
2560 if test "x$OPENSSL_ENABLED" = "x1"; then
2561 versioned_symbols_flavour="OPENSSL_"
2562 elif test "x$GNUTLS_ENABLED" == "x1"; then
2563 versioned_symbols_flavour="GNUTLS_"
2564 elif test "x$NSS_ENABLED" == "x1"; then
2565 versioned_symbols_flavour="NSS_"
2566 elif test "x$POLARSSL_ENABLED" == "x1"; then
2567 versioned_symbols_flavour="POLARSSL_"
2568 elif test "x$CYASSL_ENABLED" == "x1"; then
2569 versioned_symbols_flavour="CYASSL_"
2570 elif test "x$AXTLS_ENABLED" == "x1"; then
2571 versioned_symbols_flavour="AXTLS_"
2572 elif test "x$WINSSL_ENABLED" == "x1"; then
2573 versioned_symbols_flavour="WINSSL_"
2574 elif test "x$DARWINSSL_ENABLED" == "x1"; then
2575 versioned_symbols_flavour="DARWINSSL_"
2577 versioned_symbols_flavour=""
2579 versioned_symbols="yes"
2583 *) AC_MSG_RESULT(no)
2591 AC_SUBST(VERSIONED_FLAVOUR, ["$versioned_symbols_flavour"])
2592 AM_CONDITIONAL(VERSIONED_SYMBOLS, test "x$versioned_symbols" = "xyes")
2594 dnl -------------------------------------------------
2595 dnl check winidn option before other IDN libraries
2596 dnl -------------------------------------------------
2598 AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)])
2599 OPT_WINIDN="default"
2601 AC_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN])
2602 AC_HELP_STRING([--without-winidn], [disable Windows native IDN]),
2603 OPT_WINIDN=$withval)
2604 case "$OPT_WINIDN" in
2606 dnl --without-winidn option used or configure option not specified
2611 dnl --with-winidn option used without path
2613 want_winidn_path="default"
2614 AC_MSG_RESULT([yes])
2617 dnl --with-winidn option used with path
2619 want_winidn_path="$withval"
2620 AC_MSG_RESULT([yes ($withval)])
2624 if test "$want_winidn" = "yes"; then
2625 dnl winidn library support has been requested
2626 clean_CPPFLAGS="$CPPFLAGS"
2627 clean_LDFLAGS="$LDFLAGS"
2629 WINIDN_LIBS="-lnormaliz"
2631 if test "$want_winidn_path" != "default"; then
2632 dnl path has been specified
2633 dnl pkg-config not available or provides no info
2634 WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff"
2635 WINIDN_CPPFLAGS="-I$want_winidn_path/include"
2636 WINIDN_DIR="$want_winidn_path/lib$libsuff"
2639 CPPFLAGS="$WINIDN_CPPFLAGS $CPPFLAGS"
2640 LDFLAGS="$WINIDN_LDFLAGS $LDFLAGS"
2641 LIBS="$WINIDN_LIBS $LIBS"
2643 AC_MSG_CHECKING([if IdnToUnicode can be linked])
2645 AC_LANG_FUNC_LINK_TRY([IdnToUnicode])
2647 AC_MSG_RESULT([yes])
2648 tst_links_winidn="yes"
2651 tst_links_winidn="no"
2654 if test "$tst_links_winidn" = "yes"; then
2655 AC_DEFINE(USE_WIN32_IDN, 1, [Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz).])
2656 AC_DEFINE(WANT_IDN_PROTOTYPES, 1, [Define to 1 to provide own prototypes.])
2657 AC_SUBST([IDN_ENABLED], [1])
2658 curl_idn_msg="enabled (Windows-native)"
2660 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2661 CPPFLAGS="$clean_CPPFLAGS"
2662 LDFLAGS="$clean_LDFLAGS"
2667 dnl **********************************************************************
2668 dnl Check for the presence of IDN libraries and headers
2669 dnl **********************************************************************
2671 AC_MSG_CHECKING([whether to build with libidn])
2674 AC_HELP_STRING([--with-libidn=PATH],[Enable libidn usage])
2675 AC_HELP_STRING([--without-libidn],[Disable libidn usage]),
2679 dnl --without-libidn option used
2684 dnl configure option not specified
2686 want_idn_path="default"
2687 AC_MSG_RESULT([(assumed) yes])
2690 dnl --with-libidn option used without path
2692 want_idn_path="default"
2693 AC_MSG_RESULT([yes])
2696 dnl --with-libidn option used with path
2698 want_idn_path="$withval"
2699 AC_MSG_RESULT([yes ($withval)])
2703 if test "$want_idn" = "yes"; then
2704 dnl idn library support has been requested
2705 clean_CPPFLAGS="$CPPFLAGS"
2706 clean_LDFLAGS="$LDFLAGS"
2710 if test "$want_idn_path" != "default"; then
2711 dnl path has been specified
2712 IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig"
2713 CURL_CHECK_PKGCONFIG(libidn, [$IDN_PCDIR])
2714 if test "$PKGCONFIG" != "no"; then
2715 IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2716 $PKGCONFIG --libs-only-l libidn 2>/dev/null`
2717 IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2718 $PKGCONFIG --libs-only-L libidn 2>/dev/null`
2719 IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2720 $PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2721 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2723 dnl pkg-config not available or provides no info
2725 IDN_LDFLAGS="-L$want_idn_path/lib$libsuff"
2726 IDN_CPPFLAGS="-I$want_idn_path/include"
2727 IDN_DIR="$want_idn_path/lib$libsuff"
2730 dnl path not specified
2731 CURL_CHECK_PKGCONFIG(libidn)
2732 if test "$PKGCONFIG" != "no"; then
2733 IDN_LIBS=`$PKGCONFIG --libs-only-l libidn 2>/dev/null`
2734 IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn 2>/dev/null`
2735 IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2736 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2738 dnl pkg-config not available or provides no info
2743 if test "$PKGCONFIG" != "no"; then
2744 AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"])
2745 AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"])
2746 AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2747 AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"])
2749 AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"])
2750 AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"])
2751 AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2752 AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"])
2755 CPPFLAGS="$IDN_CPPFLAGS $CPPFLAGS"
2756 LDFLAGS="$IDN_LDFLAGS $LDFLAGS"
2757 LIBS="$IDN_LIBS $LIBS"
2759 AC_MSG_CHECKING([if idna_to_ascii_4i can be linked])
2761 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_4i])
2763 AC_MSG_RESULT([yes])
2764 tst_links_libidn="yes"
2767 tst_links_libidn="no"
2769 if test "$tst_links_libidn" = "no"; then
2770 AC_MSG_CHECKING([if idna_to_ascii_lz can be linked])
2772 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_lz])
2774 AC_MSG_RESULT([yes])
2775 tst_links_libidn="yes"
2778 tst_links_libidn="no"
2782 if test "$tst_links_libidn" = "yes"; then
2783 AC_DEFINE(HAVE_LIBIDN, 1, [Define to 1 if you have the `idn' library (-lidn).])
2784 dnl different versions of libidn have different setups of these:
2785 AC_CHECK_FUNCS( idn_free idna_strerror tld_strerror )
2786 AC_CHECK_HEADERS( idn-free.h tld.h )
2787 if test "x$ac_cv_header_tld_h" = "xyes"; then
2788 AC_SUBST([IDN_ENABLED], [1])
2789 curl_idn_msg="enabled"
2790 if test -n "$IDN_DIR"; then
2791 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
2792 export LD_LIBRARY_PATH
2793 AC_MSG_NOTICE([Added $IDN_DIR to LD_LIBRARY_PATH])
2796 AC_MSG_WARN([Libraries for IDN support too old: IDN disabled])
2797 CPPFLAGS="$clean_CPPFLAGS"
2798 LDFLAGS="$clean_LDFLAGS"
2802 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2803 CPPFLAGS="$clean_CPPFLAGS"
2804 LDFLAGS="$clean_LDFLAGS"
2810 dnl Let's hope this split URL remains working:
2811 dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
2812 dnl genprogc/thread_quick_ref.htm
2815 dnl **********************************************************************
2816 dnl Back to "normal" configuring
2817 dnl **********************************************************************
2819 dnl Checks for header files.
2822 CURL_CHECK_HEADER_MALLOC
2823 CURL_CHECK_HEADER_MEMORY
2825 dnl Now check for the very most basic headers. Then we can use these
2826 dnl ones as default-headers when checking for the rest!
2869 dnl to do if not found
2873 dnl default includes
2875 #ifdef HAVE_SYS_TYPES_H
2876 #include <sys/types.h>
2878 #ifdef HAVE_SYS_TIME_H
2879 #include <sys/time.h>
2881 #ifdef HAVE_SYS_SELECT_H
2882 #include <sys/select.h>
2884 #ifdef HAVE_SYS_SOCKET_H
2885 #include <sys/socket.h>
2887 #ifdef HAVE_NETINET_IN_H
2888 #include <netinet/in.h>
2890 #ifdef HAVE_SYS_UN_H
2896 dnl Checks for typedefs, structures, and compiler characteristics.
2898 CURL_CHECK_VARIADIC_MACROS
2901 CURL_CHECK_STRUCT_TIMEVAL
2902 CURL_VERIFY_RUNTIMELIBS
2904 AC_CHECK_SIZEOF(size_t)
2905 AC_CHECK_SIZEOF(long)
2906 AC_CHECK_SIZEOF(int)
2907 AC_CHECK_SIZEOF(short)
2909 AC_CHECK_SIZEOF(time_t)
2910 AC_CHECK_SIZEOF(off_t)
2913 if test x"$ac_cv_native_windows" != "xyes" &&
2914 test $ac_cv_sizeof_off_t -ne $curl_sizeof_curl_off_t; then
2915 AC_MSG_WARN([This libcurl built is probably not ABI compatible with previous])
2916 AC_MSG_WARN([builds! You MUST read lib/README.curl_off_t to figure it out.])
2921 AC_CHECK_TYPE(long long,
2922 [AC_DEFINE(HAVE_LONGLONG, 1,
2923 [Define to 1 if the compiler supports the 'long long' data type.])]
2927 if test "xyes" = "x$longlong"; then
2928 AC_MSG_CHECKING([if numberLL works])
2932 long long val = 1000LL;
2935 AC_MSG_RESULT([yes])
2936 AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
2944 AC_CHECK_TYPE(ssize_t, ,
2945 AC_DEFINE(ssize_t, int, [the signed version of size_t]))
2947 # check for bool type
2948 AC_CHECK_TYPE([bool],[
2949 AC_DEFINE(HAVE_BOOL_T, 1,
2950 [Define to 1 if bool is an available type.])
2952 #ifdef HAVE_SYS_TYPES_H
2953 #include <sys/types.h>
2955 #ifdef HAVE_STDBOOL_H
2956 #include <stdbool.h>
2960 CURL_CONFIGURE_CURL_SOCKLEN_T
2962 CURL_CONFIGURE_PULL_SYS_POLL
2966 TYPE_SOCKADDR_STORAGE
2972 CURL_CHECK_FUNC_SELECT
2974 CURL_CHECK_FUNC_RECV
2975 CURL_CHECK_FUNC_RECVFROM
2976 CURL_CHECK_FUNC_SEND
2977 CURL_CHECK_MSG_NOSIGNAL
2979 CURL_CHECK_FUNC_ALARM
2980 CURL_CHECK_FUNC_BASENAME
2981 CURL_CHECK_FUNC_CLOSESOCKET
2982 CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
2983 CURL_CHECK_FUNC_CONNECT
2984 CURL_CHECK_FUNC_FCNTL
2985 CURL_CHECK_FUNC_FDOPEN
2986 CURL_CHECK_FUNC_FREEADDRINFO
2987 CURL_CHECK_FUNC_FREEIFADDRS
2988 CURL_CHECK_FUNC_FSETXATTR
2989 CURL_CHECK_FUNC_FTRUNCATE
2990 CURL_CHECK_FUNC_GETADDRINFO
2991 CURL_CHECK_FUNC_GAI_STRERROR
2992 CURL_CHECK_FUNC_GETHOSTBYADDR
2993 CURL_CHECK_FUNC_GETHOSTBYADDR_R
2994 CURL_CHECK_FUNC_GETHOSTBYNAME
2995 CURL_CHECK_FUNC_GETHOSTBYNAME_R
2996 CURL_CHECK_FUNC_GETHOSTNAME
2997 CURL_CHECK_FUNC_GETIFADDRS
2998 CURL_CHECK_FUNC_GETSERVBYPORT_R
2999 CURL_CHECK_FUNC_GMTIME_R
3000 CURL_CHECK_FUNC_INET_NTOA_R
3001 CURL_CHECK_FUNC_INET_NTOP
3002 CURL_CHECK_FUNC_INET_PTON
3003 CURL_CHECK_FUNC_IOCTL
3004 CURL_CHECK_FUNC_IOCTLSOCKET
3005 CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
3006 CURL_CHECK_FUNC_LOCALTIME_R
3007 CURL_CHECK_FUNC_MEMRCHR
3008 CURL_CHECK_FUNC_POLL
3009 CURL_CHECK_FUNC_SETSOCKOPT
3010 CURL_CHECK_FUNC_SIGACTION
3011 CURL_CHECK_FUNC_SIGINTERRUPT
3012 CURL_CHECK_FUNC_SIGNAL
3013 CURL_CHECK_FUNC_SIGSETJMP
3014 CURL_CHECK_FUNC_SOCKET
3015 CURL_CHECK_FUNC_SOCKETPAIR
3016 CURL_CHECK_FUNC_STRCASECMP
3017 CURL_CHECK_FUNC_STRCASESTR
3018 CURL_CHECK_FUNC_STRCMPI
3019 CURL_CHECK_FUNC_STRDUP
3020 CURL_CHECK_FUNC_STRERROR_R
3021 CURL_CHECK_FUNC_STRICMP
3022 CURL_CHECK_FUNC_STRLCAT
3023 CURL_CHECK_FUNC_STRNCASECMP
3024 CURL_CHECK_FUNC_STRNCMPI
3025 CURL_CHECK_FUNC_STRNICMP
3026 CURL_CHECK_FUNC_STRSTR
3027 CURL_CHECK_FUNC_STRTOK_R
3028 CURL_CHECK_FUNC_STRTOLL
3029 CURL_CHECK_FUNC_WRITEV
3035 AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
3039 AC_CHECK_FUNCS([fork \
3058 eval skipcheck=\$skipcheck_$func
3059 if test "x$skipcheck" != "xyes"; then
3060 AC_MSG_CHECKING([deeper for $func])
3067 AC_MSG_RESULT([yes])
3068 eval "ac_cv_func_$func=yes"
3069 AC_DEFINE_UNQUOTED(XC_SH_TR_CPP([HAVE_$func]), [1],
3070 [Define to 1 if you have the $func function.])
3072 AC_MSG_RESULT([but still no])
3077 dnl Check if the getnameinfo function is available
3078 dnl and get the types of five of its arguments.
3079 CURL_CHECK_FUNC_GETNAMEINFO
3081 if test "$ipv6" = "yes"; then
3082 if test "$ac_cv_func_getaddrinfo" = "yes"; then
3083 AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
3085 AC_SUBST(IPV6_ENABLED)
3087 CURL_CHECK_NI_WITHSCOPEID
3090 CURL_CHECK_NONBLOCKING_SOCKET
3092 dnl ************************************************************
3093 dnl nroff tool stuff
3096 AC_PATH_PROG( PERL, perl, ,
3097 $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
3100 AC_PATH_PROGS( NROFF, gnroff nroff, ,
3101 $PATH:/usr/bin/:/usr/local/bin )
3104 if test -n "$NROFF"; then
3105 dnl only check for nroff options if an nroff command was found
3107 AC_MSG_CHECKING([how to use *nroff to get plain text from man pages])
3109 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3110 if test -z "$mancheck"; then
3112 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3113 if test -z "$mancheck"; then
3115 AC_MSG_RESULT([failed])
3116 AC_MSG_WARN([found no *nroff option to get plaintext from man pages])
3118 AC_MSG_RESULT([$MANOPT])
3121 AC_MSG_RESULT([$MANOPT])
3126 if test -z "$MANOPT"
3128 dnl if no nroff tool was found, or no option that could convert man pages
3129 dnl was found, then disable the built-in manual stuff
3130 AC_MSG_WARN([disabling built-in manual])
3134 dnl *************************************************************************
3135 dnl If the manual variable still is set, then we go with providing a built-in
3138 if test "$USE_MANUAL" = "1"; then
3139 AC_DEFINE(USE_MANUAL, 1, [If you want to build curl with the built-in manual])
3140 curl_manual_msg="enabled"
3143 dnl set variable for use in automakefile(s)
3144 AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
3147 AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
3149 if test "x$ac_cv_native_windows" != "xyes" &&
3150 test "x$enable_shared" = "xyes"; then
3151 build_libhostname=yes
3153 build_libhostname=no
3155 AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes)
3157 CURL_CHECK_OPTION_THREADED_RESOLVER
3159 if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
3161 [Options --enable-threaded-resolver and --enable-ares are mutually exclusive])
3164 if test "$want_thres" = "yes"; then
3165 AC_CHECK_HEADER(pthread.h,
3166 [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>])
3167 save_CFLAGS="$CFLAGS"
3168 CFLAGS="$CFLAGS -pthread"
3169 AC_CHECK_LIB(pthread, pthread_create,
3170 [ AC_MSG_NOTICE([using POSIX threaded DNS lookup])
3171 AC_DEFINE(USE_THREADS_POSIX, 1, [if you want POSIX threaded DNS lookup])
3173 curl_res_msg="threaded"
3175 [ CFLAGS="$save_CFLAGS"])
3179 dnl ************************************************************
3180 dnl disable verbose text strings
3182 AC_MSG_CHECKING([whether to enable verbose strings])
3183 AC_ARG_ENABLE(verbose,
3184 AC_HELP_STRING([--enable-verbose],[Enable verbose strings])
3185 AC_HELP_STRING([--disable-verbose],[Disable verbose strings]),
3186 [ case "$enableval" in
3189 AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings])
3190 curl_verbose_msg="no"
3192 *) AC_MSG_RESULT(yes)
3198 dnl ************************************************************
3199 dnl enable SSPI support
3201 AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)])
3203 AC_HELP_STRING([--enable-sspi],[Enable SSPI])
3204 AC_HELP_STRING([--disable-sspi],[Disable SSPI]),
3205 [ case "$enableval" in
3207 if test "$ac_cv_native_windows" = "yes"; then
3209 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
3210 AC_SUBST(USE_WINDOWS_SSPI, [1])
3211 curl_sspi_msg="enabled"
3214 AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.])
3218 if test "x$WINSSL_ENABLED" = "x1"; then
3219 # --with-winssl implies --enable-sspi
3226 if test "x$WINSSL_ENABLED" = "x1"; then
3227 # --with-winssl implies --enable-sspi
3234 dnl ************************************************************
3235 dnl disable cryptographic authentication
3237 AC_MSG_CHECKING([whether to enable cryptographic authentication methods])
3238 AC_ARG_ENABLE(crypto-auth,
3239 AC_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication])
3240 AC_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]),
3241 [ case "$enableval" in
3244 AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication])
3246 *) AC_MSG_RESULT(yes)
3252 CURL_CHECK_OPTION_NTLM_WB
3256 dnl ************************************************************
3257 dnl disable TLS-SRP authentication
3259 AC_MSG_CHECKING([whether to enable TLS-SRP authentication])
3260 AC_ARG_ENABLE(tls-srp,
3261 AC_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication])
3262 AC_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]),
3263 [ case "$enableval" in
3266 AC_DEFINE(CURL_DISABLE_TLS_SRP, 1, [to disable TLS-SRP authentication])
3269 *) AC_MSG_RESULT(yes)
3277 if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_SSLEAY_SRP" = "x1") ; then
3278 AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication])
3280 curl_tls_srp_msg="enabled"
3283 dnl ************************************************************
3284 dnl disable cookies support
3286 AC_MSG_CHECKING([whether to enable support for cookies])
3287 AC_ARG_ENABLE(cookies,
3288 AC_HELP_STRING([--enable-cookies],[Enable cookies support])
3289 AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
3290 [ case "$enableval" in
3293 AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support])
3295 *) AC_MSG_RESULT(yes)
3301 dnl ************************************************************
3302 dnl hiding of library internal symbols
3304 CURL_CONFIGURE_SYMBOL_HIDING
3306 dnl ************************************************************
3307 dnl enforce SONAME bump
3310 AC_MSG_CHECKING([whether to enforce SONAME bump])
3311 AC_ARG_ENABLE(soname-bump,
3312 AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump])
3313 AC_HELP_STRING([--disable-soname-bump],[Disable enforced SONAME bump]),
3314 [ case "$enableval" in
3315 yes) AC_MSG_RESULT(yes)
3322 AC_MSG_RESULT($soname_bump)
3324 AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes)
3327 dnl ************************************************************
3328 if test ! -z "$winsock_LIB"; then
3330 dnl If ws2_32 is wanted, make sure it is the _last_ lib in LIBS (makes
3331 dnl things work when built with c-ares). But we can't just move it last
3332 dnl since then other stuff (SSL) won't build. So we simply append it to the
3335 LIBS="$LIBS $winsock_LIB"
3340 dnl All the library dependencies put into $LIB apply to libcurl only.
3344 AC_SUBST(LIBCURL_LIBS)
3345 AC_SUBST(CURL_NETWORK_LIBS)
3346 AC_SUBST(CURL_NETWORK_AND_TIME_LIBS)
3347 dnl LIBS is a magic variable that's used for every link
3349 dnl BLANK_AT_MAKETIME might be used in some of our Makefile.am files to
3350 dnl blank LIBS variable used in generated makefile at makefile processing
3351 dnl time. Our test server's Makefile.am uses this to prevent global LIBS
3352 dnl from being used for any test server build target.
3354 AC_SUBST(BLANK_AT_MAKETIME)
3356 AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes)
3359 ENABLE_SHARED="$enable_shared"
3360 AC_SUBST(ENABLE_SHARED)
3363 dnl For keeping supported features and protocols also in pkg-config file
3364 dnl since it is more cross-compile friendly than curl-config
3367 if test "x$USE_SSLEAY" = "x1"; then
3368 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3369 elif test -n "$SSL_ENABLED"; then
3370 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3372 if test "@KRB4_ENABLED@" = "x1"; then
3373 SUPPORT_FEATURES="$SUPPORT_FEATURES KRB4"
3375 if test "x$IPV6_ENABLED" = "x1"; then
3376 SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
3378 if test "x$HAVE_LIBZ" = "x1"; then
3379 SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
3381 if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1"; then
3382 SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
3384 if test "x$IDN_ENABLED" = "x1"; then
3385 SUPPORT_FEATURES="$SUPPORT_FEATURES IDN"
3387 if test "x$USE_WINDOWS_SSPI" = "x1"; then
3388 SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
3390 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3391 if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
3392 -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
3393 -o "x$DARWINSSL_ENABLED" = "x1"; then
3394 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
3395 if test "x$NTLM_WB_ENABLED" = "x1"; then
3396 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
3400 if test "x$USE_TLS_SRP" = "x1"; then
3401 SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
3404 AC_SUBST(SUPPORT_FEATURES)
3406 dnl For supported protocols in pkg-config file
3407 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3408 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
3409 if test "x$SSL_ENABLED" = "x1"; then
3410 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS"
3413 if test "x$CURL_DISABLE_FTP" != "x1"; then
3414 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP"
3415 if test "x$SSL_ENABLED" = "x1"; then
3416 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS"
3419 if test "x$CURL_DISABLE_FILE" != "x1"; then
3420 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE"
3422 if test "x$CURL_DISABLE_TELNET" != "x1"; then
3423 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET"
3425 if test "x$CURL_DISABLE_LDAP" != "x1"; then
3426 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP"
3427 if test "x$CURL_DISABLE_LDAPS" != "x1"; then
3428 if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") ||
3429 (test "x$USE_OPENLDAP" != "x1" && test "x$HAVE_LDAP_SSL" = "x1"); then
3430 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS"
3434 if test "x$CURL_DISABLE_DICT" != "x1"; then
3435 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT"
3437 if test "x$CURL_DISABLE_TFTP" != "x1"; then
3438 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP"
3440 if test "x$CURL_DISABLE_GOPHER" != "x1"; then
3441 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER"
3443 if test "x$CURL_DISABLE_POP3" != "x1"; then
3444 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3"
3445 if test "x$SSL_ENABLED" = "x1"; then
3446 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S"
3449 if test "x$CURL_DISABLE_IMAP" != "x1"; then
3450 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
3451 if test "x$SSL_ENABLED" = "x1"; then
3452 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
3455 if test "x$CURL_DISABLE_SMTP" != "x1"; then
3456 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
3457 if test "x$SSL_ENABLED" = "x1"; then
3458 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS"
3461 if test "x$USE_LIBSSH2" = "x1"; then
3462 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
3463 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
3465 if test "x$CURL_DISABLE_RTSP" != "x1"; then
3466 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
3468 if test "x$USE_LIBRTMP" = "x1"; then
3469 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP"
3472 dnl replace spaces with newlines
3474 dnl replace the newlines back to spaces
3475 SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '`
3477 AC_SUBST(SUPPORT_PROTOCOLS)
3479 dnl squeeze whitespace out of some variables
3487 squeeze LIBCURL_LIBS
3488 squeeze CURL_NETWORK_LIBS
3489 squeeze CURL_NETWORK_AND_TIME_LIBS
3491 squeeze SUPPORT_FEATURES
3492 squeeze SUPPORT_PROTOCOLS
3494 if test "x$want_curldebug_assumed" = "xyes" &&
3495 test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
3496 ac_configure_args="$ac_configure_args --enable-curldebug"
3499 AC_CONFIG_FILES([Makefile \
3501 docs/examples/Makefile \
3502 docs/libcurl/Makefile \
3504 include/curl/Makefile \
3509 tests/data/Makefile \
3510 tests/server/Makefile \
3511 tests/libtest/Makefile \
3512 tests/unit/Makefile \
3514 packages/Win32/Makefile \
3515 packages/Win32/cygwin/Makefile \
3516 packages/Linux/Makefile \
3517 packages/Linux/RPM/Makefile \
3518 packages/Linux/RPM/curl.spec \
3519 packages/Linux/RPM/curl-ssl.spec \
3520 packages/Solaris/Makefile \
3521 packages/EPM/curl.list \
3522 packages/EPM/Makefile \
3523 packages/vms/Makefile \
3524 packages/AIX/Makefile \
3525 packages/AIX/RPM/Makefile \
3526 packages/AIX/RPM/curl.spec \
3532 CURL_GENERATE_CONFIGUREHELP_PM
3534 AC_MSG_NOTICE([Configured to build curl/libcurl:
3536 curl version: ${CURLVERSION}
3538 Install prefix: ${prefix}
3540 SSL support: ${curl_ssl_msg}
3541 SSH support: ${curl_ssh_msg}
3542 zlib support: ${curl_zlib_msg}
3543 krb4 support: ${curl_krb4_msg}
3544 GSSAPI support: ${curl_gss_msg}
3545 SPNEGO support: ${curl_spnego_msg}
3546 TLS-SRP support: ${curl_tls_srp_msg}
3547 resolver: ${curl_res_msg}
3548 ipv6 support: ${curl_ipv6_msg}
3549 IDN support: ${curl_idn_msg}
3550 Build libcurl: Shared=${enable_shared}, Static=${enable_static}
3551 Built-in manual: ${curl_manual_msg}
3552 --libcurl option: ${curl_libcurl_msg}
3553 Verbose errors: ${curl_verbose_msg}
3554 SSPI support: ${curl_sspi_msg}
3555 ca cert bundle: ${ca}
3556 ca cert path: ${capath}
3557 LDAP support: ${curl_ldap_msg}
3558 LDAPS support: ${curl_ldaps_msg}
3559 RTSP support: ${curl_rtsp_msg}
3560 RTMP support: ${curl_rtmp_msg}
3561 metalink support: ${curl_mtlnk_msg}
3562 Protocols: ${SUPPORT_PROTOCOLS}
3565 if test "x$soname_bump" = "xyes"; then
3568 SONAME bump: yes - WARNING: this library will be built with the SONAME
3569 number bumped due to (a detected) ABI breakage.
3570 See lib/README.curl_off_t for details on this.