1 #***************************************************************************
3 # Project ___| | | | _ \| |
5 # | (__| |_| | _ <| |___
6 # \___|\___/|_| \_\_____|
8 # Copyright (C) 1998 - 2016, 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 https://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: https://curl.haxx.se/mail/])
31 CURL_OVERRIDE_AUTOCONF
33 dnl configure script copyright
34 AC_COPYRIGHT([Copyright (c) 1998 - 2016 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])
42 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
44 CURL_CHECK_OPTION_DEBUG
45 CURL_CHECK_OPTION_OPTIMIZE
46 CURL_CHECK_OPTION_WARNINGS
47 CURL_CHECK_OPTION_WERROR
48 CURL_CHECK_OPTION_CURLDEBUG
49 CURL_CHECK_OPTION_SYMBOL_HIDING
50 CURL_CHECK_OPTION_ARES
53 XC_CHECK_PATH_SEPARATOR
56 # save the configure arguments
58 CONFIGURE_OPTIONS="\"$ac_configure_args\""
59 AC_SUBST(CONFIGURE_OPTIONS)
62 if test X"$want_werror" = Xyes; then
63 CURL_CFLAG_EXTRAS="-Werror"
65 AC_SUBST(CURL_CFLAG_EXTRAS)
67 dnl SED is mandatory for configure process and libtool.
68 dnl Set it now, allowing it to be changed later.
69 if test -z "$SED"; then
70 dnl allow it to be overridden
71 AC_PATH_PROG([SED], [sed], [not_found],
72 [$PATH:/usr/bin:/usr/local/bin])
73 if test -z "$SED" || test "$SED" = "not_found"; then
74 AC_MSG_ERROR([sed not found in PATH. Cannot continue without sed.])
79 dnl GREP is mandatory for configure process and libtool.
80 dnl Set it now, allowing it to be changed later.
81 if test -z "$GREP"; then
82 dnl allow it to be overridden
83 AC_PATH_PROG([GREP], [grep], [not_found],
84 [$PATH:/usr/bin:/usr/local/bin])
85 if test -z "$GREP" || test "$GREP" = "not_found"; then
86 AC_MSG_ERROR([grep not found in PATH. Cannot continue without grep.])
91 dnl EGREP is mandatory for configure process and libtool.
92 dnl Set it now, allowing it to be changed later.
93 if test -z "$EGREP"; then
94 dnl allow it to be overridden
95 if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
96 AC_MSG_CHECKING([for egrep])
98 AC_MSG_RESULT([$EGREP])
100 AC_PATH_PROG([EGREP], [egrep], [not_found],
101 [$PATH:/usr/bin:/usr/local/bin])
104 if test -z "$EGREP" || test "$EGREP" = "not_found"; then
105 AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.])
109 dnl AR is mandatory for configure process and libtool.
110 dnl This is target dependent, so check it as a tool.
111 if test -z "$AR"; then
112 dnl allow it to be overridden
113 AC_PATH_TOOL([AR], [ar], [not_found],
114 [$PATH:/usr/bin:/usr/local/bin])
115 if test -z "$AR" || test "$AR" = "not_found"; then
116 AC_MSG_ERROR([ar not found in PATH. Cannot continue without ar.])
123 dnl Remove non-configure distributed curlbuild.h
124 if test -f ${srcdir}/include/curl/curlbuild.h; then
125 rm -f ${srcdir}/include/curl/curlbuild.h
128 dnl figure out the libcurl version
129 CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curlver.h`
132 AC_MSG_CHECKING([curl version])
133 AC_MSG_RESULT($CURLVERSION)
135 AC_SUBST(CURLVERSION)
138 dnl we extract the numerical version for curl-config only
139 VERSIONNUM=`$SED -ne 's/^#define LIBCURL_VERSION_NUM 0x\(.*\)/\1/p' ${srcdir}/include/curl/curlver.h`
142 dnl Solaris pkgadd support definitions
143 PKGADD_PKG="HAXXcurl"
144 PKGADD_NAME="curl - a client that groks URLs"
145 PKGADD_VENDOR="curl.haxx.se"
147 AC_SUBST(PKGADD_NAME)
148 AC_SUBST(PKGADD_VENDOR)
151 dnl initialize all the info variables
152 curl_ssl_msg="no (--with-{ssl,gnutls,nss,polarssl,mbedtls,cyassl,axtls,winssl,darwinssl} )"
153 curl_ssh_msg="no (--with-libssh2)"
154 curl_zlib_msg="no (--with-zlib)"
155 curl_gss_msg="no (--with-gssapi)"
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_unix_sockets_msg="no (--enable-unix-sockets)"
160 curl_idn_msg="no (--with-{libidn2,winidn})"
161 curl_manual_msg="no (--enable-manual)"
162 curl_libcurl_msg="enabled (--disable-libcurl-option)"
163 curl_verbose_msg="enabled (--disable-verbose)"
164 curl_sspi_msg="no (--enable-sspi)"
165 curl_ldap_msg="no (--enable-ldap / --with-ldap-lib / --with-lber-lib)"
166 curl_ldaps_msg="no (--enable-ldaps)"
167 curl_rtsp_msg="no (--enable-rtsp)"
168 curl_rtmp_msg="no (--with-librtmp)"
169 curl_mtlnk_msg="no (--with-libmetalink)"
170 curl_psl_msg="no (--with-libpsl)"
172 init_ssl_msg=${curl_ssl_msg}
175 dnl Save some initial values the user might have provided
177 INITIAL_LDFLAGS=$LDFLAGS
181 dnl Detect the canonical host and target build environment
185 dnl Get system canonical name
186 AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
188 dnl Checks for programs.
190 dnl Our curl_off_t internal and external configure settings
191 CURL_CONFIGURE_CURL_OFF_T
193 dnl This defines _ALL_SOURCE for AIX
194 CURL_CHECK_AIX_ALL_SOURCE
196 dnl Our configure and build reentrant settings
197 CURL_CONFIGURE_THREAD_SAFE
198 CURL_CONFIGURE_REENTRANT
200 dnl check for how to do large files
206 # Automake conditionals based on libtool related checks
209 AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSION_INFO],
210 [test "x$xc_lt_shlib_use_version_info" = 'xyes'])
211 AM_CONDITIONAL([CURL_LT_SHLIB_USE_NO_UNDEFINED],
212 [test "x$xc_lt_shlib_use_no_undefined" = 'xyes'])
213 AM_CONDITIONAL([CURL_LT_SHLIB_USE_MIMPURE_TEXT],
214 [test "x$xc_lt_shlib_use_mimpure_text" = 'xyes'])
217 # Due to libtool and automake machinery limitations of not allowing
218 # specifying separate CPPFLAGS or CFLAGS when compiling objects for
219 # inclusion of these in shared or static libraries, we are forced to
220 # build using separate configure runs for shared and static libraries
221 # on systems where different CPPFLAGS or CFLAGS are mandatory in order
222 # to compile objects for each kind of library. Notice that relying on
223 # the '-DPIC' CFLAG that libtool provides is not valid given that the
224 # user might for example choose to build static libraries with PIC.
228 # Make our Makefile.am files use the staticlib CPPFLAG only when strictly
229 # targeting a static library and not building its shared counterpart.
232 AM_CONDITIONAL([USE_CPPFLAG_CURL_STATICLIB],
233 [test "x$xc_lt_build_static_only" = 'xyes'])
236 # Make staticlib CPPFLAG variable and its definition visible in output
237 # files unconditionally, providing an empty definition unless strictly
238 # targeting a static library and not building its shared counterpart.
241 CPPFLAG_CURL_STATICLIB=
242 if test "x$xc_lt_build_static_only" = 'xyes'; then
243 CPPFLAG_CURL_STATICLIB='-DCURL_STATICLIB'
245 AC_SUBST([CPPFLAG_CURL_STATICLIB])
248 # Determine whether all dependent libraries must be specified when linking
249 if test "X$enable_shared" = "Xyes" -a "X$link_all_deplibs" = "Xno"
255 AC_SUBST(REQUIRE_LIB_DEPS)
256 AM_CONDITIONAL(USE_EXPLICIT_LIB_DEPS, test x$REQUIRE_LIB_DEPS = xyes)
258 dnl check if there's a way to force code inline
261 dnl **********************************************************************
262 dnl platform/compiler/architecture specific checks/flags
263 dnl **********************************************************************
266 CURL_SET_COMPILER_BASIC_OPTS
267 CURL_SET_COMPILER_DEBUG_OPTS
268 CURL_SET_COMPILER_OPTIMIZE_OPTS
269 CURL_SET_COMPILER_WARNING_OPTS
271 if test "$compiler_id" = "INTEL_UNIX_C"; then
273 if test "$compiler_num" -ge "1000"; then
274 dnl icc 10.X or later
275 CFLAGS="$CFLAGS -shared-intel"
276 elif test "$compiler_num" -ge "900"; then
278 CFLAGS="$CFLAGS -i-dynamic"
283 CURL_CHECK_COMPILER_HALT_ON_ERROR
284 CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
285 CURL_CHECK_COMPILER_PROTOTYPE_MISMATCH
286 CURL_CHECK_COMPILER_SYMBOL_HIDING
289 AM_CONDITIONAL(CURLDEBUG, test x$want_curldebug = xyes)
291 supports_unittests=yes
292 # cross-compilation of unit tests static library/programs fails when
293 # libcurl shared library is built. This might be due to a libtool or
294 # automake issue. In this case we disable unit tests.
295 if test "x$cross_compiling" != "xno" &&
296 test "x$enable_shared" != "xno"; then
297 supports_unittests=no
300 # IRIX 6.5.24 gcc 3.3 autobuilds fail unittests library compilation due to
301 # a problem related with OpenSSL headers and library versions not matching.
302 # Disable unit tests while time to further investigate this is found.
305 if test "$compiler_id" = "GNU_C"; then
306 supports_unittests=no
311 # All AIX autobuilds fails unit tests linking against unittests library
312 # due to unittests library being built with no symbols or members. Libtool ?
313 # Disable unit tests while time to further investigate this is found.
316 supports_unittests=no
320 dnl Build unit tests when option --enable-debug is given.
321 if test "x$want_debug" = "xyes" &&
322 test "x$supports_unittests" = "xyes"; then
327 AM_CONDITIONAL(BUILD_UNITTESTS, test x$want_unittests = xyes)
329 dnl **********************************************************************
330 dnl Compilation based checks should not be done before this point.
331 dnl **********************************************************************
333 dnl **********************************************************************
334 dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
335 dnl and ws2tcpip.h take precedence over any other further checks which
336 dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
337 dnl this specific header files. And do them before its results are used.
338 dnl **********************************************************************
340 CURL_CHECK_HEADER_WINDOWS
341 CURL_CHECK_NATIVE_WINDOWS
342 case X-"$curl_cv_native_windows" in
344 CURL_CHECK_HEADER_WINSOCK
345 CURL_CHECK_HEADER_WINSOCK2
346 CURL_CHECK_HEADER_WS2TCPIP
347 CURL_CHECK_HEADER_WINLDAP
348 CURL_CHECK_HEADER_WINBER
351 curl_cv_header_winsock_h="no"
352 curl_cv_header_winsock2_h="no"
353 curl_cv_header_ws2tcpip_h="no"
354 curl_cv_header_winldap_h="no"
355 curl_cv_header_winber_h="no"
358 CURL_CHECK_WIN32_LARGEFILE
362 dnl ************************************************************
363 dnl switch off particular protocols
365 AC_MSG_CHECKING([whether to support http])
367 AC_HELP_STRING([--enable-http],[Enable HTTP support])
368 AC_HELP_STRING([--disable-http],[Disable HTTP support]),
369 [ case "$enableval" in
372 AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP])
373 AC_MSG_WARN([disable HTTP disables FTP over proxy and RTSP])
374 AC_SUBST(CURL_DISABLE_HTTP, [1])
375 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
376 AC_SUBST(CURL_DISABLE_RTSP, [1])
378 *) AC_MSG_RESULT(yes)
383 AC_MSG_CHECKING([whether to support ftp])
385 AC_HELP_STRING([--enable-ftp],[Enable FTP support])
386 AC_HELP_STRING([--disable-ftp],[Disable FTP support]),
387 [ case "$enableval" in
390 AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP])
391 AC_SUBST(CURL_DISABLE_FTP, [1])
393 *) AC_MSG_RESULT(yes)
398 AC_MSG_CHECKING([whether to support file])
400 AC_HELP_STRING([--enable-file],[Enable FILE support])
401 AC_HELP_STRING([--disable-file],[Disable FILE support]),
402 [ case "$enableval" in
405 AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE])
406 AC_SUBST(CURL_DISABLE_FILE, [1])
408 *) AC_MSG_RESULT(yes)
413 AC_MSG_CHECKING([whether to support ldap])
415 AC_HELP_STRING([--enable-ldap],[Enable LDAP support])
416 AC_HELP_STRING([--disable-ldap],[Disable LDAP support]),
417 [ case "$enableval" in
420 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
421 AC_SUBST(CURL_DISABLE_LDAP, [1])
429 AC_MSG_CHECKING([whether to support ldaps])
431 AC_HELP_STRING([--enable-ldaps],[Enable LDAPS support])
432 AC_HELP_STRING([--disable-ldaps],[Disable LDAPS support]),
433 [ case "$enableval" in
436 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
437 AC_SUBST(CURL_DISABLE_LDAPS, [1])
439 *) if test "x$CURL_DISABLE_LDAP" = "x1" ; then
440 AC_MSG_RESULT(LDAP needs to be enabled to support LDAPS)
441 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
442 AC_SUBST(CURL_DISABLE_LDAPS, [1])
445 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
446 AC_SUBST(HAVE_LDAP_SSL, [1])
450 if test "x$CURL_DISABLE_LDAP" = "x1" ; then
452 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
453 AC_SUBST(CURL_DISABLE_LDAPS, [1])
456 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
457 AC_SUBST(HAVE_LDAP_SSL, [1])
461 AC_MSG_CHECKING([whether to support rtsp])
463 AC_HELP_STRING([--enable-rtsp],[Enable RTSP support])
464 AC_HELP_STRING([--disable-rtsp],[Disable RTSP support]),
465 [ case "$enableval" in
468 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
469 AC_SUBST(CURL_DISABLE_RTSP, [1])
471 *) if test x$CURL_DISABLE_HTTP = x1 ; then
472 AC_MSG_ERROR(HTTP support needs to be enabled in order to enable RTSP support!)
475 curl_rtsp_msg="enabled"
479 if test "x$CURL_DISABLE_HTTP" != "x1"; then
481 curl_rtsp_msg="enabled"
487 AC_MSG_CHECKING([whether to support proxies])
489 AC_HELP_STRING([--enable-proxy],[Enable proxy support])
490 AC_HELP_STRING([--disable-proxy],[Disable proxy support]),
491 [ case "$enableval" in
494 AC_DEFINE(CURL_DISABLE_PROXY, 1, [to disable proxies])
495 AC_SUBST(CURL_DISABLE_PROXY, [1])
497 *) AC_MSG_RESULT(yes)
503 AC_MSG_CHECKING([whether to support dict])
505 AC_HELP_STRING([--enable-dict],[Enable DICT support])
506 AC_HELP_STRING([--disable-dict],[Disable DICT support]),
507 [ case "$enableval" in
510 AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT])
511 AC_SUBST(CURL_DISABLE_DICT, [1])
513 *) AC_MSG_RESULT(yes)
518 AC_MSG_CHECKING([whether to support telnet])
519 AC_ARG_ENABLE(telnet,
520 AC_HELP_STRING([--enable-telnet],[Enable TELNET support])
521 AC_HELP_STRING([--disable-telnet],[Disable TELNET support]),
522 [ case "$enableval" in
525 AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
526 AC_SUBST(CURL_DISABLE_TELNET, [1])
528 *) AC_MSG_RESULT(yes)
533 AC_MSG_CHECKING([whether to support tftp])
535 AC_HELP_STRING([--enable-tftp],[Enable TFTP support])
536 AC_HELP_STRING([--disable-tftp],[Disable TFTP support]),
537 [ case "$enableval" in
540 AC_DEFINE(CURL_DISABLE_TFTP, 1, [to disable TFTP])
541 AC_SUBST(CURL_DISABLE_TFTP, [1])
543 *) AC_MSG_RESULT(yes)
549 AC_MSG_CHECKING([whether to support pop3])
551 AC_HELP_STRING([--enable-pop3],[Enable POP3 support])
552 AC_HELP_STRING([--disable-pop3],[Disable POP3 support]),
553 [ case "$enableval" in
556 AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3])
557 AC_SUBST(CURL_DISABLE_POP3, [1])
559 *) AC_MSG_RESULT(yes)
566 AC_MSG_CHECKING([whether to support imap])
568 AC_HELP_STRING([--enable-imap],[Enable IMAP support])
569 AC_HELP_STRING([--disable-imap],[Disable IMAP support]),
570 [ case "$enableval" in
573 AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP])
574 AC_SUBST(CURL_DISABLE_IMAP, [1])
576 *) AC_MSG_RESULT(yes)
583 AC_MSG_CHECKING([whether to support smb])
585 AC_HELP_STRING([--enable-smb],[Enable SMB/CIFS support])
586 AC_HELP_STRING([--disable-smb],[Disable SMB/CIFS support]),
587 [ case "$enableval" in
590 AC_DEFINE(CURL_DISABLE_SMB, 1, [to disable SMB/CIFS])
591 AC_SUBST(CURL_DISABLE_SMB, [1])
593 *) AC_MSG_RESULT(yes)
599 AC_MSG_CHECKING([whether to support smtp])
601 AC_HELP_STRING([--enable-smtp],[Enable SMTP support])
602 AC_HELP_STRING([--disable-smtp],[Disable SMTP support]),
603 [ case "$enableval" in
606 AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP])
607 AC_SUBST(CURL_DISABLE_SMTP, [1])
609 *) AC_MSG_RESULT(yes)
615 AC_MSG_CHECKING([whether to support gopher])
616 AC_ARG_ENABLE(gopher,
617 AC_HELP_STRING([--enable-gopher],[Enable Gopher support])
618 AC_HELP_STRING([--disable-gopher],[Disable Gopher support]),
619 [ case "$enableval" in
622 AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable Gopher])
623 AC_SUBST(CURL_DISABLE_GOPHER, [1])
625 *) AC_MSG_RESULT(yes)
632 dnl **********************************************************************
633 dnl Check for built-in manual
634 dnl **********************************************************************
636 AC_MSG_CHECKING([whether to provide built-in manual])
637 AC_ARG_ENABLE(manual,
638 AC_HELP_STRING([--enable-manual],[Enable built-in manual])
639 AC_HELP_STRING([--disable-manual],[Disable built-in manual]),
640 [ case "$enableval" in
644 *) AC_MSG_RESULT(yes)
651 dnl The actual use of the USE_MANUAL variable is done much later in this
652 dnl script to allow other actions to disable it as well.
654 dnl ************************************************************
655 dnl disable C code generation support
657 AC_MSG_CHECKING([whether to enable generation of C code])
658 AC_ARG_ENABLE(libcurl_option,
659 AC_HELP_STRING([--enable-libcurl-option],[Enable --libcurl C code generation support])
660 AC_HELP_STRING([--disable-libcurl-option],[Disable --libcurl C code generation support]),
661 [ case "$enableval" in
664 AC_DEFINE(CURL_DISABLE_LIBCURL_OPTION, 1, [to disable --libcurl C code generation option])
665 curl_libcurl_msg="no"
667 *) AC_MSG_RESULT(yes)
673 dnl **********************************************************************
674 dnl Checks for libraries.
675 dnl **********************************************************************
677 AC_MSG_CHECKING([whether to use libgcc])
678 AC_ARG_ENABLE(libgcc,
679 AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
680 [ case "$enableval" in
693 dnl gethostbyname without lib or in the nsl lib?
694 AC_CHECK_FUNC(gethostbyname,
695 [HAVE_GETHOSTBYNAME="1"
697 [ AC_CHECK_LIB(nsl, gethostbyname,
698 [HAVE_GETHOSTBYNAME="1"
703 if test "$HAVE_GETHOSTBYNAME" != "1"
705 dnl gethostbyname in the socket lib?
706 AC_CHECK_LIB(socket, gethostbyname,
707 [HAVE_GETHOSTBYNAME="1"
708 LIBS="-lsocket $LIBS"
712 if test "$HAVE_GETHOSTBYNAME" != "1"
714 dnl gethostbyname in the watt lib?
715 AC_CHECK_LIB(watt, gethostbyname,
716 [HAVE_GETHOSTBYNAME="1"
717 CPPFLAGS="-I/dev/env/WATT_ROOT/inc"
718 LDFLAGS="-L/dev/env/WATT_ROOT/lib"
723 dnl At least one system has been identified to require BOTH nsl and socket
724 dnl libs at the same time to link properly.
725 if test "$HAVE_GETHOSTBYNAME" != "1"
727 AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs])
728 my_ac_save_LIBS=$LIBS
729 LIBS="-lnsl -lsocket $LIBS"
737 HAVE_GETHOSTBYNAME="1"
740 LIBS=$my_ac_save_LIBS
744 if test "$HAVE_GETHOSTBYNAME" != "1"
746 dnl This is for winsock systems
747 if test "$curl_cv_header_windows_h" = "yes"; then
748 if test "$curl_cv_header_winsock_h" = "yes"; then
751 winsock_LIB="-lwinsock"
754 winsock_LIB="-lwsock32"
758 if test "$curl_cv_header_winsock2_h" = "yes"; then
759 winsock_LIB="-lws2_32"
761 if test ! -z "$winsock_LIB"; then
762 my_ac_save_LIBS=$LIBS
763 LIBS="$winsock_LIB $LIBS"
764 AC_MSG_CHECKING([for gethostbyname in $winsock_LIB])
767 #ifdef HAVE_WINDOWS_H
768 #ifndef WIN32_LEAN_AND_MEAN
769 #define WIN32_LEAN_AND_MEAN
772 #ifdef HAVE_WINSOCK2_H
773 #include <winsock2.h>
775 #ifdef HAVE_WINSOCK_H
781 gethostbyname("www.dummysite.com");
785 HAVE_GETHOSTBYNAME="1"
789 LIBS=$my_ac_save_LIBS
795 if test "$HAVE_GETHOSTBYNAME" != "1"
797 dnl This is for Minix 3.1
798 AC_MSG_CHECKING([for gethostbyname for Minix 3])
801 /* Older Minix versions may need <net/gen/netdb.h> here instead */
804 gethostbyname("www.dummysite.com");
808 HAVE_GETHOSTBYNAME="1"
814 if test "$HAVE_GETHOSTBYNAME" != "1"
816 dnl This is for eCos with a stubbed DNS implementation
817 AC_MSG_CHECKING([for gethostbyname for eCos])
823 gethostbyname("www.dummysite.com");
827 HAVE_GETHOSTBYNAME="1"
833 if test "$HAVE_GETHOSTBYNAME" != "1"
835 dnl gethostbyname in the network lib - for Haiku OS
836 AC_CHECK_LIB(network, gethostbyname,
837 [HAVE_GETHOSTBYNAME="1"
838 LIBS="-lnetwork $LIBS"
842 if test "$HAVE_GETHOSTBYNAME" != "1"
844 dnl gethostbyname in the net lib - for BeOS
845 AC_CHECK_LIB(net, gethostbyname,
846 [HAVE_GETHOSTBYNAME="1"
852 if test "$HAVE_GETHOSTBYNAME" != "1"; then
853 AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
856 CURL_CHECK_LIBS_CONNECT
858 CURL_NETWORK_LIBS=$LIBS
860 dnl **********************************************************************
861 dnl In case that function clock_gettime with monotonic timer is available,
862 dnl check for additional required libraries.
863 dnl **********************************************************************
864 CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
866 dnl **********************************************************************
867 dnl The preceding library checks are all potentially useful for test
868 dnl servers and libtest cases which require networking and clock_gettime
869 dnl support. Save the list of required libraries at this point for use
870 dnl while linking those test servers and programs.
871 dnl **********************************************************************
872 CURL_NETWORK_AND_TIME_LIBS=$LIBS
874 dnl **********************************************************************
875 dnl Check for the presence of ZLIB libraries and headers
876 dnl **********************************************************************
878 dnl Check for & handle argument to --with-zlib.
880 clean_CPPFLAGS=$CPPFLAGS
881 clean_LDFLAGS=$LDFLAGS
885 AC_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
886 AC_HELP_STRING([--without-zlib],[disable use of zlib]),
887 [OPT_ZLIB="$withval"])
889 if test "$OPT_ZLIB" = "no" ; then
890 AC_MSG_WARN([zlib disabled])
892 if test "$OPT_ZLIB" = "yes" ; then
896 CURL_CHECK_PKGCONFIG(zlib)
898 if test "$PKGCONFIG" != "no" ; then
899 LIBS="`$PKGCONFIG --libs-only-l zlib` $LIBS"
900 LDFLAGS="`$PKGCONFIG --libs-only-L zlib` $LDFLAGS"
901 CPPFLAGS="`$PKGCONFIG --cflags-only-I zlib` $CPPFLAGS"
906 if test -z "$OPT_ZLIB" ; then
908 if test -z "$HAVE_LIBZ"; then
910 dnl Check for the lib without setting any new path, since many
911 dnl people have it in the default path
913 AC_CHECK_LIB(z, inflateEnd,
914 dnl libz found, set the variable
917 dnl if no lib found, try /usr/local
918 [OPT_ZLIB="/usr/local"])
922 dnl Add a nonempty path to the compiler flags
923 if test -n "$OPT_ZLIB"; then
924 CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include"
925 LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff"
928 AC_CHECK_HEADER(zlib.h,
932 dnl if the lib wasn't found already, try again with the new paths
933 if test "$HAVE_LIBZ" != "1"; then
934 AC_CHECK_LIB(z, gzread,
936 dnl the lib was found!
940 [ CPPFLAGS=$clean_CPPFLAGS
941 LDFLAGS=$clean_LDFLAGS])
945 dnl zlib.h was not found, restore the flags
946 CPPFLAGS=$clean_CPPFLAGS
947 LDFLAGS=$clean_LDFLAGS]
950 if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1"
952 AC_MSG_WARN([configure found only the libz lib, not the header file!])
954 CPPFLAGS=$clean_CPPFLAGS
955 LDFLAGS=$clean_LDFLAGS
957 elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1"
959 AC_MSG_WARN([configure found only the libz header file, not the lib!])
960 CPPFLAGS=$clean_CPPFLAGS
961 LDFLAGS=$clean_LDFLAGS
963 elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1"
965 dnl both header and lib were found!
967 AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file])
968 AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available])
971 LIBS="-lz $clean_LIBS"
973 dnl replace 'HAVE_LIBZ' in the automake makefile.ams
975 AC_MSG_NOTICE([found both libz and libz.h header])
976 curl_zlib_msg="enabled"
980 dnl set variable for use in automakefile(s)
981 AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1)
984 dnl **********************************************************************
986 dnl **********************************************************************
989 AC_ARG_WITH(ldap-lib,
990 AC_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]),
991 [LDAPLIBNAME="$withval"])
994 AC_ARG_WITH(lber-lib,
995 AC_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]),
996 [LBERLIBNAME="$withval"])
998 if test x$CURL_DISABLE_LDAP != x1 ; then
1000 CURL_CHECK_HEADER_LBER
1001 CURL_CHECK_HEADER_LDAP
1002 CURL_CHECK_HEADER_LDAPSSL
1003 CURL_CHECK_HEADER_LDAP_SSL
1005 if test -z "$LDAPLIBNAME" ; then
1006 if test "$curl_cv_native_windows" = "yes"; then
1007 dnl Windows uses a single and unique LDAP library name
1008 LDAPLIBNAME="wldap32"
1013 if test "$LDAPLIBNAME" ; then
1014 AC_CHECK_LIB("$LDAPLIBNAME", ldap_init,, [
1015 AC_MSG_WARN(["$LDAPLIBNAME" is not an LDAP library: LDAP disabled])
1016 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1017 AC_SUBST(CURL_DISABLE_LDAP, [1])
1018 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1019 AC_SUBST(CURL_DISABLE_LDAPS, [1])])
1021 dnl Try to find the right ldap libraries for this system
1022 CURL_CHECK_LIBS_LDAP
1023 case X-"$curl_cv_ldap_LIBS" in
1025 AC_MSG_WARN([Cannot find libraries for LDAP support: LDAP disabled])
1026 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1027 AC_SUBST(CURL_DISABLE_LDAP, [1])
1028 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1029 AC_SUBST(CURL_DISABLE_LDAPS, [1])
1035 if test x$CURL_DISABLE_LDAP != x1 ; then
1037 if test "$LBERLIBNAME" ; then
1038 dnl If name is "no" then don't define this library at all
1039 dnl (it's only needed if libldap.so's dependencies are broken).
1040 if test "$LBERLIBNAME" != "no" ; then
1041 AC_CHECK_LIB("$LBERLIBNAME", ber_free,, [
1042 AC_MSG_WARN(["$LBERLIBNAME" is not an LBER library: LDAP disabled])
1043 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1044 AC_SUBST(CURL_DISABLE_LDAP, [1])
1045 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1046 AC_SUBST(CURL_DISABLE_LDAPS, [1])])
1051 if test x$CURL_DISABLE_LDAP != x1 ; then
1052 AC_CHECK_FUNCS([ldap_url_parse ldap_init_fd])
1054 if test "$LDAPLIBNAME" = "wldap32"; then
1055 curl_ldap_msg="enabled (winldap)"
1056 AC_DEFINE(USE_WIN32_LDAP, 1, [Use Windows LDAP implementation])
1058 curl_ldap_msg="enabled (OpenLDAP)"
1059 if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then
1060 AC_DEFINE(USE_OPENLDAP, 1, [Use OpenLDAP-specific code])
1061 AC_SUBST(USE_OPENLDAP, [1])
1066 if test x$CURL_DISABLE_LDAPS != x1 ; then
1067 curl_ldaps_msg="enabled"
1070 dnl **********************************************************************
1072 dnl **********************************************************************
1074 AC_MSG_CHECKING([whether to enable IPv6])
1076 AC_HELP_STRING([--enable-ipv6],[Enable IPv6 (with IPv4) support])
1077 AC_HELP_STRING([--disable-ipv6],[Disable IPv6 support]),
1078 [ case "$enableval" in
1083 *) AC_MSG_RESULT(yes)
1088 AC_TRY_RUN([ /* is AF_INET6 available? */
1089 #include <sys/types.h>
1090 #ifdef HAVE_WINSOCK2_H
1091 #include <winsock2.h>
1093 #include <sys/socket.h>
1095 #include <stdlib.h> /* for exit() */
1098 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1112 if test "$ipv6" = "yes"; then
1113 curl_ipv6_msg="enabled"
1116 # Check if struct sockaddr_in6 have sin6_scope_id member
1117 if test "$ipv6" = yes; then
1118 AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member])
1120 #include <sys/types.h>
1121 #ifdef HAVE_WINSOCK2_H
1122 #include <winsock2.h>
1123 #include <ws2tcpip.h>
1125 #include <netinet/in.h>
1127 struct sockaddr_in6 s; s.sin6_scope_id = 0; , have_sin6_scope_id=yes)
1128 if test "$have_sin6_scope_id" = yes; then
1129 AC_MSG_RESULT([yes])
1130 AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member])
1136 dnl **********************************************************************
1137 dnl Check if the operating system allows programs to write to their own argv[]
1138 dnl **********************************************************************
1140 AC_MSG_CHECKING([if argv can be written to])
1143 int main(int argc, char ** argv) {
1145 return (argv[0][0] == ' ')?0:1;
1149 curl_cv_writable_argv=yes
1151 curl_cv_writable_argv=no
1153 curl_cv_writable_argv=cross
1155 case $curl_cv_writable_argv in
1157 AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv])
1165 AC_MSG_WARN([the previous check could not be made default was used])
1169 dnl **********************************************************************
1170 dnl Check for GSS-API libraries
1171 dnl **********************************************************************
1173 dnl check for GSS-API stuff in the /usr as default
1176 AC_ARG_WITH(gssapi-includes,
1177 AC_HELP_STRING([--with-gssapi-includes=DIR],
1178 [Specify location of GSS-API headers]),
1179 [ GSSAPI_INCS="-I$withval"
1183 AC_ARG_WITH(gssapi-libs,
1184 AC_HELP_STRING([--with-gssapi-libs=DIR],
1185 [Specify location of GSS-API libs]),
1186 [ GSSAPI_LIB_DIR="-L$withval"
1191 AC_HELP_STRING([--with-gssapi=DIR],
1192 [Where to look for GSS-API]), [
1193 GSSAPI_ROOT="$withval"
1194 if test x"$GSSAPI_ROOT" != xno; then
1196 if test x"$GSSAPI_ROOT" = xyes; then
1197 dnl if yes, then use default root
1203 : ${KRB5CONFIG:="$GSSAPI_ROOT/bin/krb5-config"}
1205 save_CPPFLAGS="$CPPFLAGS"
1206 AC_MSG_CHECKING([if GSS-API support is requested])
1207 if test x"$want_gss" = xyes; then
1210 if test -z "$GSSAPI_INCS"; then
1211 if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
1212 GSSAPI_INCS=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --cflags gssapi`
1213 elif test -f "$KRB5CONFIG"; then
1214 GSSAPI_INCS=`$KRB5CONFIG --cflags gssapi`
1215 elif test "$GSSAPI_ROOT" != "yes"; then
1216 GSSAPI_INCS="-I$GSSAPI_ROOT/include"
1220 CPPFLAGS="$CPPFLAGS $GSSAPI_INCS"
1222 AC_CHECK_HEADER(gss.h,
1224 dnl found in the given dirs
1225 AC_DEFINE(HAVE_GSSGNU, 1, [if you have GNU GSS])
1229 dnl not found, check Heimdal or MIT
1230 AC_CHECK_HEADERS([gssapi/gssapi.h], [], [not_mit=1])
1232 [gssapi/gssapi_generic.h gssapi/gssapi_krb5.h],
1237 #ifdef HAVE_GSSAPI_GSSAPI_H
1238 #include <gssapi/gssapi.h>
1241 if test "x$not_mit" = "x1"; then
1242 dnl MIT not found, check for Heimdal
1243 AC_CHECK_HEADER(gssapi.h,
1246 AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have Heimdal])
1249 dnl no header found, disabling GSS
1251 AC_MSG_WARN(disabling GSS-API support since no header files were found)
1256 AC_DEFINE(HAVE_GSSMIT, 1, [if you have MIT Kerberos])
1257 dnl check if we have a really old MIT Kerberos version (<= 1.2)
1258 AC_MSG_CHECKING([if GSS-API headers declare GSS_C_NT_HOSTBASED_SERVICE])
1261 #include <gssapi/gssapi.h>
1262 #include <gssapi/gssapi_generic.h>
1263 #include <gssapi/gssapi_krb5.h>
1268 GSS_C_NT_HOSTBASED_SERVICE,
1272 AC_MSG_RESULT([yes])
1275 AC_DEFINE(HAVE_OLD_GSSMIT, 1,
1276 [if you have an old MIT Kerberos version, lacking GSS_C_NT_HOSTBASED_SERVICE])
1284 if test x"$want_gss" = xyes; then
1285 AC_DEFINE(HAVE_GSSAPI, 1, [if you have GSS-API libraries])
1287 curl_gss_msg="enabled (MIT Kerberos/Heimdal)"
1289 if test -n "$gnu_gss"; then
1290 curl_gss_msg="enabled (GNU GSS)"
1291 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1293 elif test -z "$GSSAPI_LIB_DIR"; then
1296 LIBS="-lgssapi_krb5 -lresolv $LIBS"
1299 if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
1300 dnl krb5-config doesn't have --libs-only-L or similar, put everything
1302 gss_libs=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --libs gssapi`
1303 LIBS="$gss_libs $LIBS"
1304 elif test -f "$KRB5CONFIG"; then
1305 dnl krb5-config doesn't have --libs-only-L or similar, put everything
1307 gss_libs=`$KRB5CONFIG --libs gssapi`
1308 LIBS="$gss_libs $LIBS"
1315 gss_libname="gssapi"
1319 if test "$GSSAPI_ROOT" != "yes"; then
1320 LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
1321 LIBS="-l$gss_libname $LIBS"
1323 LIBS="-l$gss_libname $LIBS"
1329 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1335 LIBS="-lgssapi $LIBS"
1340 CPPFLAGS="$save_CPPFLAGS"
1343 dnl -------------------------------------------------
1344 dnl check winssl option before other SSL libraries
1345 dnl -------------------------------------------------
1348 AC_ARG_WITH(winssl,dnl
1349 AC_HELP_STRING([--with-winssl],[enable Windows native SSL/TLS])
1350 AC_HELP_STRING([--without-winssl], [disable Windows native SSL/TLS]),
1351 OPT_WINSSL=$withval)
1353 AC_MSG_CHECKING([whether to enable Windows native SSL/TLS (Windows native builds only)])
1354 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1355 if test "x$OPT_WINSSL" != "xno" &&
1356 test "x$curl_cv_native_windows" = "xyes"; then
1358 AC_DEFINE(USE_SCHANNEL, 1, [to enable Windows native SSL/TLS support])
1359 AC_SUBST(USE_SCHANNEL, [1])
1360 curl_ssl_msg="enabled (Windows-native)"
1362 # --with-winssl implies --enable-sspi
1363 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
1364 AC_SUBST(USE_WINDOWS_SSPI, [1])
1365 curl_sspi_msg="enabled"
1366 LIBS="-lcrypt32 $LIBS"
1375 AC_ARG_WITH(darwinssl,dnl
1376 AC_HELP_STRING([--with-darwinssl],[enable Apple OS native SSL/TLS])
1377 AC_HELP_STRING([--without-darwinssl], [disable Apple OS native SSL/TLS]),
1378 OPT_DARWINSSL=$withval)
1380 AC_MSG_CHECKING([whether to enable Apple OS native SSL/TLS])
1381 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1382 if test "x$OPT_DARWINSSL" != "xno" &&
1383 test -d "/System/Library/Frameworks/Security.framework"; then
1385 AC_DEFINE(USE_DARWINSSL, 1, [to enable Apple OS native SSL/TLS support])
1386 AC_SUBST(USE_DARWINSSL, [1])
1387 curl_ssl_msg="enabled (Apple OS-native)"
1389 LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Security"
1397 dnl **********************************************************************
1398 dnl Check for the presence of SSL libraries and headers
1399 dnl **********************************************************************
1401 dnl Default to compiler & linker defaults for SSL files & libraries.
1403 dnl Default to no CA bundle
1406 AC_HELP_STRING([--with-ssl=PATH],[Where to look for OpenSSL, PATH points to the SSL installation (default: /usr/local/ssl); when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
1407 AC_HELP_STRING([--without-ssl], [disable OpenSSL]),
1410 if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
1411 dnl backup the pre-ssl variables
1412 CLEANLDFLAGS="$LDFLAGS"
1413 CLEANCPPFLAGS="$CPPFLAGS"
1416 dnl This is for Msys/Mingw
1418 *-*-msys* | *-*-mingw*)
1419 AC_MSG_CHECKING([for gdi32])
1420 my_ac_save_LIBS=$LIBS
1421 LIBS="-lgdi32 $LIBS"
1422 AC_TRY_LINK([#include <windef.h>
1423 #include <wingdi.h>],
1426 AC_MSG_RESULT([yes])],
1427 [ dnl failed, restore LIBS
1428 LIBS=$my_ac_save_LIBS
1436 dnl --with-ssl (without path) used
1437 if test x$cross_compiling != xyes; then
1438 dnl only do pkg-config magic when not cross-compiling
1441 PREFIX_OPENSSL=/usr/local/ssl
1442 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1445 dnl no --with-ssl option given, just check default places
1446 if test x$cross_compiling != xyes; then
1447 dnl only do pkg-config magic when not cross-compiling
1453 dnl check the given --with-ssl spot
1455 PREFIX_OPENSSL=$OPT_SSL
1457 dnl Try pkg-config even when cross-compiling. Since we
1458 dnl specify PKG_CONFIG_LIBDIR we're only looking where
1459 dnl the user told us to look
1460 OPENSSL_PCDIR="$OPT_SSL/lib/pkgconfig"
1461 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$OPENSSL_PCDIR"])
1462 if test -f "$OPENSSL_PCDIR/openssl.pc"; then
1466 dnl in case pkg-config comes up empty, use what we got
1468 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1469 if test "$PREFIX_OPENSSL" != "/usr" ; then
1470 SSL_LDFLAGS="-L$LIB_OPENSSL"
1471 SSL_CPPFLAGS="-I$PREFIX_OPENSSL/include"
1473 SSL_CPPFLAGS="$SSL_CPPFLAGS -I$PREFIX_OPENSSL/include/openssl"
1477 if test "$PKGTEST" = "yes"; then
1479 CURL_CHECK_PKGCONFIG(openssl, [$OPENSSL_PCDIR])
1481 if test "$PKGCONFIG" != "no" ; then
1482 SSL_LIBS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1483 $PKGCONFIG --libs-only-l openssl 2>/dev/null`
1485 SSL_LDFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1486 $PKGCONFIG --libs-only-L openssl 2>/dev/null`
1488 SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1489 $PKGCONFIG --cflags-only-I openssl 2>/dev/null`
1492 AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"])
1493 AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"])
1494 AC_MSG_NOTICE([pkg-config: SSL_CPPFLAGS: "$SSL_CPPFLAGS"])
1496 LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/-L//g'`
1498 dnl use the values pkg-config reported. This is here
1499 dnl instead of below with CPPFLAGS and LDFLAGS because we only
1500 dnl learn about this via pkg-config. If we only have
1501 dnl the argument to --with-ssl we don't know what
1502 dnl additional libs may be necessary. Hope that we
1504 LIBS="$SSL_LIBS $LIBS"
1508 dnl finally, set flags to use SSL
1509 CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
1510 LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
1512 AC_CHECK_LIB(crypto, HMAC_Update,[
1514 LIBS="-lcrypto $LIBS"
1516 LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL"
1517 CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include"
1518 AC_CHECK_LIB(crypto, HMAC_Init_ex,[
1520 LIBS="-lcrypto $LIBS"], [
1521 LDFLAGS="$CLEANLDFLAGS"
1522 CPPFLAGS="$CLEANCPPFLAGS"
1528 if test X"$HAVECRYPTO" = X"yes"; then
1529 AC_MSG_CHECKING([OpenSSL linking without -ldl])
1533 #include <openssl/evp.h>
1536 SSLeay_add_all_algorithms();
1544 AC_MSG_CHECKING([OpenSSL linking with -ldl])
1548 #include <openssl/evp.h>
1551 SSLeay_add_all_algorithms();
1555 LIBS="$saved_libs -ldl"
1568 if test X"$HAVECRYPTO" = X"yes"; then
1569 dnl This is only reasonable to do if crypto actually is there: check for
1570 dnl SSL libs NOTE: it is important to do this AFTER the crypto lib
1572 AC_CHECK_LIB(ssl, SSL_connect)
1574 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1575 dnl we didn't find the SSL lib, try the RSAglue/rsaref stuff
1576 AC_MSG_CHECKING(for ssl with RSAglue/rsaref libs in use);
1578 LIBS="-lRSAglue -lrsaref $LIBS"
1579 AC_CHECK_LIB(ssl, SSL_connect)
1580 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1581 dnl still no SSL_connect
1590 dnl Have the libraries--check for OpenSSL headers
1591 AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
1592 openssl/pem.h openssl/ssl.h openssl/err.h,
1593 curl_ssl_msg="enabled (OpenSSL)"
1595 AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]))
1597 if test $ac_cv_header_openssl_x509_h = no; then
1598 dnl we don't use the "action" part of the AC_CHECK_HEADERS macro
1599 dnl since 'err.h' might in fact find a krb4 header with the same
1601 AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h)
1603 if test $ac_cv_header_x509_h = yes &&
1604 test $ac_cv_header_crypto_h = yes &&
1605 test $ac_cv_header_ssl_h = yes; then
1607 curl_ssl_msg="enabled (OpenSSL)"
1613 if test X"$OPENSSL_ENABLED" = X"1"; then
1614 dnl is there a pkcs12.h header present?
1615 AC_CHECK_HEADERS(openssl/pkcs12.h)
1620 if test X"$OPT_SSL" != Xoff &&
1621 test "$OPENSSL_ENABLED" != "1"; then
1622 AC_MSG_ERROR([OpenSSL libs and/or directories were not found where specified!])
1626 if test X"$OPENSSL_ENABLED" = X"1"; then
1627 dnl If the ENGINE library seems to be around, check for the OpenSSL engine
1628 dnl stuff, it is kind of "separated" from the main SSL check
1629 AC_CHECK_FUNC(ENGINE_init,
1631 AC_CHECK_HEADERS(openssl/engine.h)
1632 AC_CHECK_FUNCS( ENGINE_load_builtin_engines )
1635 dnl These can only exist if OpenSSL exists
1636 dnl Older versions of Cyassl (some time before 2.9.4) don't have
1637 dnl SSL_get_shutdown (but this check won't actually detect it there
1638 dnl as it's a macro that needs the header files be included)
1640 AC_CHECK_FUNCS( RAND_egd \
1643 SSLv2_client_method )
1645 AC_MSG_CHECKING([for BoringSSL])
1648 #include <openssl/base.h>
1650 #ifndef OPENSSL_IS_BORINGSSL
1651 #error not boringssl
1655 AC_MSG_RESULT([yes])
1656 AC_DEFINE_UNQUOTED(HAVE_BORINGSSL, 1,
1657 [Define to 1 if using BoringSSL.])
1658 curl_ssl_msg="enabled (BoringSSL)"
1663 AC_MSG_CHECKING([for libressl])
1666 #include <openssl/opensslv.h>
1668 int dummy = LIBRESSL_VERSION_NUMBER;
1671 AC_MSG_RESULT([yes])
1672 AC_DEFINE_UNQUOTED(HAVE_LIBRESSL, 1,
1673 [Define to 1 if using libressl.])
1674 curl_ssl_msg="enabled (libressl)"
1680 if test "$OPENSSL_ENABLED" = "1"; then
1681 if test -n "$LIB_OPENSSL"; then
1682 dnl when the ssl shared libs were found in a path that the run-time
1683 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
1684 dnl to prevent further configure tests to fail due to this
1685 if test "x$cross_compiling" != "xyes"; then
1686 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_OPENSSL"
1687 export LD_LIBRARY_PATH
1688 AC_MSG_NOTICE([Added $LIB_OPENSSL to LD_LIBRARY_PATH])
1691 CURL_CHECK_OPENSSL_API
1696 dnl **********************************************************************
1697 dnl Check for the random seed preferences
1698 dnl **********************************************************************
1700 if test X"$OPENSSL_ENABLED" = X"1"; then
1701 AC_ARG_WITH(egd-socket,
1702 AC_HELP_STRING([--with-egd-socket=FILE],
1703 [Entropy Gathering Daemon socket pathname]),
1704 [ EGD_SOCKET="$withval" ]
1706 if test -n "$EGD_SOCKET" ; then
1707 AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET",
1708 [your Entropy Gathering Daemon socket pathname] )
1711 dnl Check for user-specified random device
1713 AC_HELP_STRING([--with-random=FILE],
1714 [read randomness from FILE (default=/dev/urandom)]),
1715 [ RANDOM_FILE="$withval" ],
1717 if test x$cross_compiling != xyes; then
1718 dnl Check for random device
1719 AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
1721 AC_MSG_WARN([skipped the /dev/urandom detection when cross-compiling])
1725 if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
1726 AC_SUBST(RANDOM_FILE)
1727 AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
1728 [a suitable file to read random data from])
1733 dnl We require OpenSSL with SRP support.
1735 if test "$OPENSSL_ENABLED" = "1"; then
1736 AC_CHECK_LIB(crypto, SRP_Calc_client_key,
1738 AC_DEFINE(HAVE_OPENSSL_SRP, 1, [if you have the function SRP_Calc_client_key])
1739 AC_SUBST(HAVE_OPENSSL_SRP, [1])
1743 dnl ----------------------------------------------------
1744 dnl check for GnuTLS
1745 dnl ----------------------------------------------------
1747 dnl Default to compiler & linker defaults for GnuTLS files & libraries.
1750 AC_ARG_WITH(gnutls,dnl
1751 AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root])
1752 AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]),
1753 OPT_GNUTLS=$withval)
1755 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1757 if test X"$OPT_GNUTLS" != Xno; then
1765 if test "x$OPT_GNUTLS" = "xyes"; then
1766 dnl this is with no partiular path given
1767 CURL_CHECK_PKGCONFIG(gnutls)
1769 if test "$PKGCONFIG" != "no" ; then
1770 addlib=`$PKGCONFIG --libs-only-l gnutls`
1771 addld=`$PKGCONFIG --libs-only-L gnutls`
1772 addcflags=`$PKGCONFIG --cflags-only-I gnutls`
1773 version=`$PKGCONFIG --modversion gnutls`
1774 gtlslib=`echo $addld | $SED -e 's/-L//'`
1776 dnl without pkg-config, we try libgnutls-config as that was how it
1778 check=`libgnutls-config --version 2>/dev/null`
1779 if test -n "$check"; then
1780 addlib=`libgnutls-config --libs`
1781 addcflags=`libgnutls-config --cflags`
1782 version=`libgnutls-config --version`
1783 gtlslib=`libgnutls-config --prefix`/lib$libsuff
1787 dnl this is with a given path, first check if there's a libgnutls-config
1788 dnl there and if not, make an educated guess
1789 cfg=$OPT_GNUTLS/bin/libgnutls-config
1790 check=`$cfg --version 2>/dev/null`
1791 if test -n "$check"; then
1792 addlib=`$cfg --libs`
1793 addcflags=`$cfg --cflags`
1794 version=`$cfg --version`
1795 gtlslib=`$cfg --prefix`/lib$libsuff
1797 dnl without pkg-config and libgnutls-config, we guess a lot!
1799 addld=-L$OPT_GNUTLS/lib$libsuff
1800 addcflags=-I$OPT_GNUTLS/include
1801 version="" # we just don't know
1802 gtlslib=$OPT_GNUTLS/lib$libsuff
1806 if test -z "$version"; then
1807 dnl lots of efforts, still no go
1811 if test -n "$addlib"; then
1814 CLEANCPPFLAGS="$CPPFLAGS"
1815 CLEANLDFLAGS="$LDFLAGS"
1817 LIBS="$addlib $LIBS"
1818 LDFLAGS="$LDFLAGS $addld"
1819 if test "$addcflags" != "-I/usr/include"; then
1820 CPPFLAGS="$CPPFLAGS $addcflags"
1823 AC_CHECK_LIB(gnutls, gnutls_check_version,
1825 AC_DEFINE(USE_GNUTLS, 1, [if GnuTLS is enabled])
1826 AC_SUBST(USE_GNUTLS, [1])
1829 curl_ssl_msg="enabled (GnuTLS)"
1833 CPPFLAGS="$CLEANCPPFLAGS"
1836 if test "x$USE_GNUTLS" = "xyes"; then
1837 AC_MSG_NOTICE([detected GnuTLS version $version])
1839 if test -n "$gtlslib"; then
1840 dnl when shared libs were found in a path that the run-time
1841 dnl linker doesn't search through, we need to add it to
1842 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1844 if test "x$cross_compiling" != "xyes"; then
1845 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlslib"
1846 export LD_LIBRARY_PATH
1847 AC_MSG_NOTICE([Added $gtlslib to LD_LIBRARY_PATH])
1850 AC_CHECK_FUNCS([gnutls_certificate_set_x509_key_file2 gnutls_alpn_set_protocols gnutls_ocsp_req_init])
1855 fi dnl GNUTLS not disabled
1860 dnl Check which crypto backend GnuTLS uses
1863 if test "$GNUTLS_ENABLED" = "1"; then
1865 # First check if we can detect either crypto library via transitive linking
1866 AC_CHECK_LIB(gnutls, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1867 if test "$USE_GNUTLS_NETTLE" = ""; then
1868 AC_CHECK_LIB(gnutls, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1870 # If not, try linking directly to both of them to see if they are available
1871 if test "$USE_GNUTLS_NETTLE" = ""; then
1872 AC_CHECK_LIB(nettle, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1874 if test "$USE_GNUTLS_NETTLE" = ""; then
1875 AC_CHECK_LIB(gcrypt, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1877 if test "$USE_GNUTLS_NETTLE" = ""; then
1878 AC_MSG_ERROR([GnuTLS found, but neither gcrypt nor nettle found])
1880 if test "$USE_GNUTLS_NETTLE" = "1"; then
1881 AC_DEFINE(USE_GNUTLS_NETTLE, 1, [if GnuTLS uses nettle as crypto backend])
1882 AC_SUBST(USE_GNUTLS_NETTLE, [1])
1883 LIBS="-lnettle $LIBS"
1885 LIBS="-lgcrypt $LIBS"
1890 dnl We require GnuTLS with SRP support.
1892 if test "$GNUTLS_ENABLED" = "1"; then
1893 AC_CHECK_LIB(gnutls, gnutls_srp_verifier,
1895 AC_DEFINE(HAVE_GNUTLS_SRP, 1, [if you have the function gnutls_srp_verifier])
1896 AC_SUBST(HAVE_GNUTLS_SRP, [1])
1900 dnl ----------------------------------------------------
1901 dnl check for PolarSSL
1902 dnl ----------------------------------------------------
1904 dnl Default to compiler & linker defaults for PolarSSL files & libraries.
1909 AC_ARG_WITH(polarssl,dnl
1910 AC_HELP_STRING([--with-polarssl=PATH],[where to look for PolarSSL, PATH points to the installation root])
1911 AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]),
1912 OPT_POLARSSL=$withval)
1914 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1916 if test X"$OPT_POLARSSL" != Xno; then
1918 if test "$OPT_POLARSSL" = "yes"; then
1922 if test -z "$OPT_POLARSSL" ; then
1923 dnl check for lib first without setting any new path
1925 AC_CHECK_LIB(polarssl, havege_init,
1926 dnl libpolarssl found, set the variable
1928 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1929 AC_SUBST(USE_POLARSSL, [1])
1932 curl_ssl_msg="enabled (PolarSSL)"
1941 if test "x$USE_POLARSSL" != "xyes"; then
1942 dnl add the path and test again
1943 addld=-L$OPT_POLARSSL/lib$libsuff
1944 addcflags=-I$OPT_POLARSSL/include
1945 polarssllib=$OPT_POLARSSL/lib$libsuff
1947 LDFLAGS="$LDFLAGS $addld"
1948 if test "$addcflags" != "-I/usr/include"; then
1949 CPPFLAGS="$CPPFLAGS $addcflags"
1952 AC_CHECK_LIB(polarssl, ssl_init,
1954 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1955 AC_SUBST(USE_POLARSSL, [1])
1958 curl_ssl_msg="enabled (PolarSSL)"
1966 if test "x$USE_POLARSSL" = "xyes"; then
1967 AC_MSG_NOTICE([detected PolarSSL])
1969 LIBS="-lpolarssl $LIBS"
1971 if test -n "$polarssllib"; then
1972 dnl when shared libs were found in a path that the run-time
1973 dnl linker doesn't search through, we need to add it to
1974 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1976 if test "x$cross_compiling" != "xyes"; then
1977 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$polarssllib"
1978 export LD_LIBRARY_PATH
1979 AC_MSG_NOTICE([Added $polarssllib to LD_LIBRARY_PATH])
1984 fi dnl PolarSSL not disabled
1988 dnl ----------------------------------------------------
1989 dnl check for mbedTLS
1990 dnl ----------------------------------------------------
1996 AC_ARG_WITH(mbedtls,dnl
1997 AC_HELP_STRING([--with-mbedtls=PATH],[where to look for mbedTLS, PATH points to the installation root])
1998 AC_HELP_STRING([--without-mbedtls], [disable mbedTLS detection]),
1999 OPT_MBEDTLS=$withval)
2001 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2003 if test X"$OPT_MBEDTLS" != Xno; then
2005 if test "$OPT_MBEDTLS" = "yes"; then
2009 if test -z "$OPT_MBEDTLS" ; then
2010 dnl check for lib first without setting any new path
2012 AC_CHECK_LIB(mbedtls, mbedtls_havege_init,
2013 dnl libmbedtls found, set the variable
2015 AC_DEFINE(USE_MBEDTLS, 1, [if mbedTLS is enabled])
2016 AC_SUBST(USE_MBEDTLS, [1])
2019 curl_ssl_msg="enabled (mbedTLS)"
2020 ], [], -lmbedx509 -lmbedcrypto)
2028 if test "x$USE_MBEDTLS" != "xyes"; then
2029 dnl add the path and test again
2030 addld=-L$OPT_MBEDTLS/lib$libsuff
2031 addcflags=-I$OPT_MBEDTLS/include
2032 mbedtlslib=$OPT_MBEDTLS/lib$libsuff
2034 LDFLAGS="$LDFLAGS $addld"
2035 if test "$addcflags" != "-I/usr/include"; then
2036 CPPFLAGS="$CPPFLAGS $addcflags"
2039 AC_CHECK_LIB(mbedtls, mbedtls_ssl_init,
2041 AC_DEFINE(USE_MBEDTLS, 1, [if mbedTLS is enabled])
2042 AC_SUBST(USE_MBEDTLS, [1])
2045 curl_ssl_msg="enabled (mbedTLS)"
2050 ], -lmbedx509 -lmbedcrypto)
2053 if test "x$USE_MBEDTLS" = "xyes"; then
2054 AC_MSG_NOTICE([detected mbedTLS])
2056 LIBS="-lmbedtls -lmbedx509 -lmbedcrypto $LIBS"
2058 if test -n "$mbedtlslib"; then
2059 dnl when shared libs were found in a path that the run-time
2060 dnl linker doesn't search through, we need to add it to
2061 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2063 if test "x$cross_compiling" != "xyes"; then
2064 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$mbedtlslib"
2065 export LD_LIBRARY_PATH
2066 AC_MSG_NOTICE([Added $mbedtlslib to LD_LIBRARY_PATH])
2071 fi dnl mbedTLS not disabled
2075 dnl ----------------------------------------------------
2076 dnl check for CyaSSL
2077 dnl ----------------------------------------------------
2079 dnl Default to compiler & linker defaults for CyaSSL files & libraries.
2084 AC_ARG_WITH(cyassl,dnl
2085 AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to the installation root (default: system lib default)])
2086 AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
2087 OPT_CYASSL=$withval)
2089 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2091 if test X"$OPT_CYASSL" != Xno; then
2093 if test "$OPT_CYASSL" = "yes"; then
2097 dnl This should be reworked to use pkg-config instead
2099 cyassllibname=cyassl
2101 if test -z "$OPT_CYASSL" ; then
2102 dnl check for lib in system default first
2104 AC_CHECK_LIB(cyassl, CyaSSL_Init,
2105 dnl libcyassl found, set the variable
2107 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2108 AC_SUBST(USE_CYASSL, [1])
2111 curl_ssl_msg="enabled (CyaSSL)"
2120 if test "x$USE_CYASSL" != "xyes"; then
2121 dnl add the path and test again
2122 addld=-L$OPT_CYASSL/lib$libsuff
2123 addcflags=-I$OPT_CYASSL/include
2124 cyassllib=$OPT_CYASSL/lib$libsuff
2126 LDFLAGS="$LDFLAGS $addld"
2127 if test "$addcflags" != "-I/usr/include"; then
2128 CPPFLAGS="$CPPFLAGS $addcflags"
2131 AC_CHECK_LIB(cyassl, CyaSSL_Init,
2133 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2134 AC_SUBST(USE_CYASSL, [1])
2137 curl_ssl_msg="enabled (CyaSSL)"
2150 if test "x$USE_CYASSL" != "xyes"; then
2151 dnl libcyassl renamed to libwolfssl as of 3.4.0
2152 addld=-L$OPT_CYASSL/lib$libsuff
2153 addcflags=-I$OPT_CYASSL/include
2154 cyassllib=$OPT_CYASSL/lib$libsuff
2156 LDFLAGS="$LDFLAGS $addld"
2157 if test "$addcflags" != "-I/usr/include"; then
2158 CPPFLAGS="$CPPFLAGS $addcflags"
2161 cyassllibname=wolfssl
2162 my_ac_save_LIBS="$LIBS"
2163 LIBS="-l$cyassllibname -lm $LIBS"
2165 AC_MSG_CHECKING([for CyaSSL_Init in -lwolfssl])
2168 /* These aren't needed for detection and confuse WolfSSL.
2169 They are set up properly later if it is detected. */
2171 #undef SIZEOF_LONG_LONG
2172 #include <cyassl/ssl.h>
2174 return CyaSSL_Init();
2178 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL/WolfSSL is enabled])
2179 AC_SUBST(USE_CYASSL, [1])
2182 curl_ssl_msg="enabled (WolfSSL)"
2190 LIBS="$my_ac_save_LIBS"
2193 if test "x$USE_CYASSL" = "xyes"; then
2194 AC_MSG_NOTICE([detected $cyassllibname])
2196 dnl cyassl/ctaocrypt/types.h needs SIZEOF_LONG_LONG defined!
2197 AC_CHECK_SIZEOF(long long)
2199 dnl Versions since at least 2.6.0 may have options.h
2200 AC_CHECK_HEADERS(cyassl/options.h)
2202 dnl Versions since at least 2.9.4 renamed error.h to error-ssl.h
2203 AC_CHECK_HEADERS(cyassl/error-ssl.h)
2205 LIBS="-l$cyassllibname -lm $LIBS"
2207 if test "x$cyassllibname" = "xwolfssl"; then
2208 dnl Recent WolfSSL versions build without SSLv3 by default
2209 dnl WolfSSL needs configure --enable-opensslextra to have *get_peer*
2210 AC_CHECK_FUNCS(wolfSSLv3_client_method \
2211 wolfSSL_CTX_UseSupportedCurve \
2212 wolfSSL_get_peer_certificate \
2215 dnl Cyassl needs configure --enable-opensslextra to have *get_peer*
2216 AC_CHECK_FUNCS(CyaSSL_CTX_UseSupportedCurve \
2217 CyaSSL_get_peer_certificate)
2220 if test -n "$cyassllib"; then
2221 dnl when shared libs were found in a path that the run-time
2222 dnl linker doesn't search through, we need to add it to
2223 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2225 if test "x$cross_compiling" != "xyes"; then
2226 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$cyassllib"
2227 export LD_LIBRARY_PATH
2228 AC_MSG_NOTICE([Added $cyassllib to LD_LIBRARY_PATH])
2234 fi dnl CyaSSL not disabled
2238 dnl ----------------------------------------------------
2239 dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
2240 dnl ----------------------------------------------------
2242 dnl Default to compiler & linker defaults for NSS files & libraries.
2246 AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root])
2247 AC_HELP_STRING([--without-nss], [disable NSS detection]),
2250 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2252 if test X"$OPT_NSS" != Xno; then
2260 if test "x$OPT_NSS" = "xyes"; then
2262 CURL_CHECK_PKGCONFIG(nss)
2264 if test "$PKGCONFIG" != "no" ; then
2265 addlib=`$PKGCONFIG --libs nss`
2266 addcflags=`$PKGCONFIG --cflags nss`
2267 version=`$PKGCONFIG --modversion nss`
2268 nssprefix=`$PKGCONFIG --variable=prefix nss`
2270 dnl Without pkg-config, we check for nss-config
2272 check=`nss-config --version 2>/dev/null`
2273 if test -n "$check"; then
2274 addlib=`nss-config --libs`
2275 addcflags=`nss-config --cflags`
2276 version=`nss-config --version`
2277 nssprefix=`nss-config --prefix`
2285 NSS_PCDIR="$OPT_NSS/lib/pkgconfig"
2286 if test -f "$NSS_PCDIR/nss.pc"; then
2287 CURL_CHECK_PKGCONFIG(nss, [$NSS_PCDIR])
2288 if test "$PKGCONFIG" != "no" ; then
2289 addld=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --libs-only-L nss`
2290 addlib=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --libs-only-l nss`
2291 addcflags=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --cflags nss`
2292 version=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --modversion nss`
2293 nssprefix=`CURL_EXPORT_PCDIR([$NSS_PCDIR]) $PKGCONFIG --variable=prefix nss`
2298 if test -z "$addlib"; then
2299 # Without pkg-config, we'll kludge in some defaults
2300 AC_MSG_WARN([Using hard-wired libraries and compilation flags for NSS.])
2301 addld="-L$OPT_NSS/lib"
2302 addlib="-lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4"
2303 addcflags="-I$OPT_NSS/include"
2308 CLEANLDFLAGS="$LDFLAGS"
2310 CLEANCPPFLAGS="$CPPFLAGS"
2312 LDFLAGS="$addld $LDFLAGS"
2313 LIBS="$addlib $LIBS"
2314 if test "$addcflags" != "-I/usr/include"; then
2315 CPPFLAGS="$CPPFLAGS $addcflags"
2318 dnl The function SSL_VersionRangeSet() is needed to enable TLS > 1.0
2319 AC_CHECK_LIB(nss3, SSL_VersionRangeSet,
2321 AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
2322 AC_SUBST(USE_NSS, [1])
2325 curl_ssl_msg="enabled (NSS)"
2328 LDFLAGS="$CLEANLDFLAGS"
2330 CPPFLAGS="$CLEANCPPFLAGS"
2333 if test "x$USE_NSS" = "xyes"; then
2334 AC_MSG_NOTICE([detected NSS version $version])
2336 dnl needed when linking the curl tool without USE_EXPLICIT_LIB_DEPS
2338 AC_SUBST([NSS_LIBS])
2340 dnl when shared libs were found in a path that the run-time
2341 dnl linker doesn't search through, we need to add it to
2342 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2344 if test "x$cross_compiling" != "xyes"; then
2345 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
2346 export LD_LIBRARY_PATH
2347 AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
2352 fi dnl NSS not disabled
2354 fi dnl curl_ssl_msg = init_ssl_msg
2358 AC_ARG_WITH(axtls,dnl
2359 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.])
2360 AC_HELP_STRING([--without-axtls], [disable axTLS]),
2363 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2364 if test X"$OPT_AXTLS" != Xno; then
2365 dnl backup the pre-axtls variables
2366 CLEANLDFLAGS="$LDFLAGS"
2367 CLEANCPPFLAGS="$CPPFLAGS"
2370 case "$OPT_AXTLS" in
2372 dnl --with-axtls (without path) used
2373 PREFIX_AXTLS=/usr/local
2374 LIB_AXTLS="$PREFIX_AXTLS/lib"
2375 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2376 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2379 dnl no --with-axtls option given, just check default places
2383 dnl check the given --with-axtls spot
2384 PREFIX_AXTLS=$OPT_AXTLS
2385 LIB_AXTLS="$PREFIX_AXTLS/lib"
2386 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2387 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2391 AC_CHECK_LIB(axtls, ssl_version,[
2392 LIBS="-laxtls $LIBS"
2393 AC_DEFINE(USE_AXTLS, 1, [if axTLS is enabled])
2394 AC_SUBST(USE_AXTLS, [1])
2397 curl_ssl_msg="enabled (axTLS)"
2399 if test "x$cross_compiling" != "xyes"; then
2400 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
2401 export LD_LIBRARY_PATH
2402 AC_MSG_NOTICE([Added $LIB_AXTLS to LD_LIBRARY_PATH])
2405 LDFLAGS="$CLEANLDFLAGS"
2406 CPPFLAGS="$CLEANCPPFLAGS"
2412 if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$MBEDTLS_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$DARWINSSL_ENABLED" = "x"; then
2413 AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
2414 AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls, --with-winssl, or --with-darwinssl to address this.])
2416 # SSL is enabled, genericly
2417 AC_SUBST(SSL_ENABLED)
2421 dnl **********************************************************************
2422 dnl Check for the CA bundle
2423 dnl **********************************************************************
2425 CURL_CHECK_CA_BUNDLE
2427 dnl **********************************************************************
2428 dnl Check for libpsl
2429 dnl **********************************************************************
2432 AS_HELP_STRING([--without-libpsl],
2433 [disable support for libpsl cookie checking]),
2434 with_libpsl=$withval,
2436 if test $with_libpsl != "no"; then
2437 AC_SEARCH_LIBS(psl_builtin, psl,
2438 [curl_psl_msg="yes";
2439 AC_DEFINE([USE_LIBPSL], [1], [PSL support enabled])
2441 [curl_psl_msg="no (libpsl not found)";
2442 AC_MSG_WARN([libpsl was not found])
2446 AM_CONDITIONAL([USE_LIBPSL], [test "$curl_psl_msg" = "yes"])
2448 dnl **********************************************************************
2449 dnl Check for libmetalink
2450 dnl **********************************************************************
2454 AC_ARG_WITH(libmetalink,dnl
2455 AC_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root])
2456 AC_HELP_STRING([--without-libmetalink], [disable libmetalink detection]),
2457 OPT_LIBMETALINK=$withval)
2459 if test X"$OPT_LIBMETALINK" != Xno; then
2468 if test "x$OPT_LIBMETALINK" = "xyes"; then
2469 dnl this is with no partiular path given
2471 CURL_CHECK_PKGCONFIG(libmetalink)
2473 dnl When particular path is given, set PKG_CONFIG_LIBDIR using the path.
2474 LIBMETALINK_PCDIR="$OPT_LIBMETALINK/lib/pkgconfig"
2475 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$LIBMETALINK_PCDIR"])
2476 if test -f "$LIBMETALINK_PCDIR/libmetalink.pc"; then
2479 if test "$PKGTEST" = "yes"; then
2480 CURL_CHECK_PKGCONFIG(libmetalink, [$LIBMETALINK_PCDIR])
2483 if test "$PKGTEST" = "yes" && test "$PKGCONFIG" != "no"; then
2484 addlib=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2485 $PKGCONFIG --libs-only-l libmetalink`
2486 addld=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2487 $PKGCONFIG --libs-only-L libmetalink`
2488 addcflags=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2489 $PKGCONFIG --cflags-only-I libmetalink`
2490 version=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2491 $PKGCONFIG --modversion libmetalink`
2492 libmetalinklib=`echo $addld | $SED -e 's/-L//'`
2494 if test -n "$addlib"; then
2496 clean_CPPFLAGS="$CPPFLAGS"
2497 clean_LDFLAGS="$LDFLAGS"
2499 CPPFLAGS="$addcflags $clean_CPPFLAGS"
2500 LDFLAGS="$addld $clean_LDFLAGS"
2501 LIBS="$addlib $clean_LIBS"
2502 AC_MSG_CHECKING([if libmetalink is recent enough])
2505 # include <metalink/metalink.h>
2507 if(0 != metalink_strerror(0)) /* added in 0.1.0 */
2511 AC_MSG_RESULT([yes ($version)])
2514 AC_MSG_RESULT([no ($version)])
2515 AC_MSG_NOTICE([libmetalink library defective or too old])
2518 CPPFLAGS="$clean_CPPFLAGS"
2519 LDFLAGS="$clean_LDFLAGS"
2521 if test "$want_metalink" = "yes"; then
2522 dnl finally libmetalink will be used
2523 AC_DEFINE(USE_METALINK, 1, [Define to enable metalink support])
2524 LIBMETALINK_LIBS=$addlib
2525 LIBMETALINK_LDFLAGS=$addld
2526 LIBMETALINK_CPPFLAGS=$addcflags
2527 AC_SUBST([LIBMETALINK_LIBS])
2528 AC_SUBST([LIBMETALINK_LDFLAGS])
2529 AC_SUBST([LIBMETALINK_CPPFLAGS])
2530 curl_mtlnk_msg="enabled"
2536 dnl **********************************************************************
2537 dnl Check for the presence of LIBSSH2 libraries and headers
2538 dnl **********************************************************************
2540 dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
2542 AC_ARG_WITH(libssh2,dnl
2543 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])
2544 AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
2545 OPT_LIBSSH2=$withval)
2547 if test X"$OPT_LIBSSH2" != Xno; then
2548 dnl backup the pre-libssh2 variables
2549 CLEANLDFLAGS="$LDFLAGS"
2550 CLEANCPPFLAGS="$CPPFLAGS"
2553 case "$OPT_LIBSSH2" in
2555 dnl --with-libssh2 (without path) used
2556 CURL_CHECK_PKGCONFIG(libssh2)
2558 if test "$PKGCONFIG" != "no" ; then
2559 LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2`
2560 LD_SSH2=`$PKGCONFIG --libs-only-L libssh2`
2561 CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2`
2562 version=`$PKGCONFIG --modversion libssh2`
2563 DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'`
2568 dnl no --with-libssh2 option given, just check default places
2571 dnl use the given --with-libssh2 spot
2572 PREFIX_SSH2=$OPT_LIBSSH2
2576 dnl if given with a prefix, we set -L and -I based on that
2577 if test -n "$PREFIX_SSH2"; then
2579 LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff
2580 CPP_SSH2=-I${PREFIX_SSH2}/include
2581 DIR_SSH2=${PREFIX_SSH2}/lib$libsuff
2584 LDFLAGS="$LD_SSH2 $LDFLAGS"
2585 CPPFLAGS="$CPPFLAGS $CPP_SSH2"
2586 LIBS="$LIB_SSH2 $LIBS"
2588 AC_CHECK_LIB(ssh2, libssh2_channel_open_ex)
2590 AC_CHECK_HEADERS(libssh2.h,
2591 curl_ssh_msg="enabled (libSSH2)"
2593 AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
2594 AC_SUBST(USE_LIBSSH2, [1])
2597 if test X"$OPT_LIBSSH2" != Xoff &&
2598 test "$LIBSSH2_ENABLED" != "1"; then
2599 AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!])
2602 if test "$LIBSSH2_ENABLED" = "1"; then
2603 if test -n "$DIR_SSH2"; then
2604 dnl when the libssh2 shared libs were found in a path that the run-time
2605 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
2606 dnl to prevent further configure tests to fail due to this
2608 if test "x$cross_compiling" != "xyes"; then
2609 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
2610 export LD_LIBRARY_PATH
2611 AC_MSG_NOTICE([Added $DIR_SSH2 to LD_LIBRARY_PATH])
2615 dnl no libssh2, revert back to clean variables
2616 LDFLAGS=$CLEANLDFLAGS
2617 CPPFLAGS=$CLEANCPPFLAGS
2622 dnl **********************************************************************
2623 dnl Check for the presence of LIBRTMP libraries and headers
2624 dnl **********************************************************************
2626 dnl Default to compiler & linker defaults for LIBRTMP files & libraries.
2628 AC_ARG_WITH(librtmp,dnl
2629 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])
2630 AC_HELP_STRING([--without-librtmp], [disable LIBRTMP]),
2631 OPT_LIBRTMP=$withval)
2633 if test X"$OPT_LIBRTMP" != Xno; then
2634 dnl backup the pre-librtmp variables
2635 CLEANLDFLAGS="$LDFLAGS"
2636 CLEANCPPFLAGS="$CPPFLAGS"
2639 case "$OPT_LIBRTMP" in
2641 dnl --with-librtmp (without path) used
2642 CURL_CHECK_PKGCONFIG(librtmp)
2644 if test "$PKGCONFIG" != "no" ; then
2645 LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp`
2646 LD_RTMP=`$PKGCONFIG --libs-only-L librtmp`
2647 CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp`
2648 version=`$PKGCONFIG --modversion librtmp`
2649 DIR_RTMP=`echo $LD_RTMP | $SED -e 's/-L//'`
2651 dnl To avoid link errors, we do not allow --librtmp without
2652 dnl a pkgconfig file
2653 AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.])
2658 dnl no --with-librtmp option given, just check default places
2662 dnl use the given --with-librtmp spot
2663 PREFIX_RTMP=$OPT_LIBRTMP
2667 dnl if given with a prefix, we set -L and -I based on that
2668 if test -n "$PREFIX_RTMP"; then
2669 LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff
2670 CPP_RTMP=-I${PREFIX_RTMP}/include
2671 DIR_RTMP=${PREFIX_RTMP}/lib$libsuff
2674 LDFLAGS="$LDFLAGS $LD_RTMP"
2675 CPPFLAGS="$CPPFLAGS $CPP_RTMP"
2676 LIBS="$LIB_RTMP $LIBS"
2678 AC_CHECK_LIB(rtmp, RTMP_Init,
2680 AC_CHECK_HEADERS(librtmp/rtmp.h,
2681 curl_rtmp_msg="enabled (librtmp)"
2683 AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use])
2684 AC_SUBST(USE_LIBRTMP, [1])
2687 dnl not found, revert back to clean variables
2688 LDFLAGS=$CLEANLDFLAGS
2689 CPPFLAGS=$CLEANCPPFLAGS
2693 if test X"$OPT_LIBRTMP" != Xoff &&
2694 test "$LIBRTMP_ENABLED" != "1"; then
2695 AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!])
2700 dnl **********************************************************************
2701 dnl Check for linker switch for versioned symbols
2702 dnl **********************************************************************
2704 versioned_symbols_flavour=
2705 AC_MSG_CHECKING([whether versioned symbols are wanted])
2706 AC_ARG_ENABLE(versioned-symbols,
2707 AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library])
2708 AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]),
2709 [ case "$enableval" in
2710 yes) AC_MSG_RESULT(yes)
2711 AC_MSG_CHECKING([if libraries can be versioned])
2712 GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
2713 if test -z "$GLD"; then
2715 AC_MSG_WARN([You need an ld version supporting the --version-script option])
2718 if test "x$OPENSSL_ENABLED" = "x1"; then
2719 versioned_symbols_flavour="OPENSSL_"
2720 elif test "x$GNUTLS_ENABLED" = "x1"; then
2721 versioned_symbols_flavour="GNUTLS_"
2722 elif test "x$NSS_ENABLED" = "x1"; then
2723 versioned_symbols_flavour="NSS_"
2724 elif test "x$POLARSSL_ENABLED" = "x1"; then
2725 versioned_symbols_flavour="POLARSSL_"
2726 elif test "x$CYASSL_ENABLED" = "x1"; then
2727 versioned_symbols_flavour="CYASSL_"
2728 elif test "x$AXTLS_ENABLED" = "x1"; then
2729 versioned_symbols_flavour="AXTLS_"
2730 elif test "x$WINSSL_ENABLED" = "x1"; then
2731 versioned_symbols_flavour="WINSSL_"
2732 elif test "x$DARWINSSL_ENABLED" = "x1"; then
2733 versioned_symbols_flavour="DARWINSSL_"
2735 versioned_symbols_flavour=""
2737 versioned_symbols="yes"
2741 *) AC_MSG_RESULT(no)
2749 AC_SUBST([CURL_LT_SHLIB_VERSIONED_FLAVOUR],
2750 ["$versioned_symbols_flavour"])
2751 AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS],
2752 [test "x$versioned_symbols" = 'xyes'])
2754 dnl -------------------------------------------------
2755 dnl check winidn option before other IDN libraries
2756 dnl -------------------------------------------------
2758 AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)])
2759 OPT_WINIDN="default"
2761 AC_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN])
2762 AC_HELP_STRING([--without-winidn], [disable Windows native IDN]),
2763 OPT_WINIDN=$withval)
2764 case "$OPT_WINIDN" in
2766 dnl --without-winidn option used or configure option not specified
2771 dnl --with-winidn option used without path
2773 want_winidn_path="default"
2774 AC_MSG_RESULT([yes])
2777 dnl --with-winidn option used with path
2779 want_winidn_path="$withval"
2780 AC_MSG_RESULT([yes ($withval)])
2784 if test "$want_winidn" = "yes"; then
2785 dnl winidn library support has been requested
2786 clean_CPPFLAGS="$CPPFLAGS"
2787 clean_LDFLAGS="$LDFLAGS"
2789 WINIDN_LIBS="-lnormaliz"
2791 if test "$want_winidn_path" != "default"; then
2792 dnl path has been specified
2793 dnl pkg-config not available or provides no info
2794 WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff"
2795 WINIDN_CPPFLAGS="-I$want_winidn_path/include"
2796 WINIDN_DIR="$want_winidn_path/lib$libsuff"
2799 CPPFLAGS="$WINIDN_CPPFLAGS $CPPFLAGS"
2800 LDFLAGS="$WINIDN_LDFLAGS $LDFLAGS"
2801 LIBS="$WINIDN_LIBS $LIBS"
2803 AC_MSG_CHECKING([if IdnToUnicode can be linked])
2805 AC_LANG_FUNC_LINK_TRY([IdnToUnicode])
2807 AC_MSG_RESULT([yes])
2808 tst_links_winidn="yes"
2811 tst_links_winidn="no"
2814 if test "$tst_links_winidn" = "yes"; then
2815 AC_DEFINE(USE_WIN32_IDN, 1, [Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz).])
2816 AC_DEFINE(WANT_IDN_PROTOTYPES, 1, [Define to 1 to provide own prototypes.])
2817 AC_SUBST([IDN_ENABLED], [1])
2818 curl_idn_msg="enabled (Windows-native)"
2820 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2821 CPPFLAGS="$clean_CPPFLAGS"
2822 LDFLAGS="$clean_LDFLAGS"
2827 dnl **********************************************************************
2828 dnl Check for the presence of IDN libraries and headers
2829 dnl **********************************************************************
2831 AC_MSG_CHECKING([whether to build with libidn2])
2833 AC_ARG_WITH(libidn2,
2834 AC_HELP_STRING([--with-libidn2=PATH],[Enable libidn2 usage])
2835 AC_HELP_STRING([--without-libidn2],[Disable libidn2 usage]),
2839 dnl --without-libidn2 option used
2844 dnl configure option not specified
2846 want_idn_path="default"
2847 AC_MSG_RESULT([(assumed) yes])
2850 dnl --with-libidn2 option used without path
2852 want_idn_path="default"
2853 AC_MSG_RESULT([yes])
2856 dnl --with-libidn2 option used with path
2858 want_idn_path="$withval"
2859 AC_MSG_RESULT([yes ($withval)])
2863 if test "$want_idn" = "yes"; then
2864 dnl idn library support has been requested
2865 clean_CPPFLAGS="$CPPFLAGS"
2866 clean_LDFLAGS="$LDFLAGS"
2870 if test "$want_idn_path" != "default"; then
2871 dnl path has been specified
2872 IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig"
2873 CURL_CHECK_PKGCONFIG(libidn2, [$IDN_PCDIR])
2874 if test "$PKGCONFIG" != "no"; then
2875 IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2876 $PKGCONFIG --libs-only-l libidn2 2>/dev/null`
2877 IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2878 $PKGCONFIG --libs-only-L libidn2 2>/dev/null`
2879 IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2880 $PKGCONFIG --cflags-only-I libidn2 2>/dev/null`
2881 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2883 dnl pkg-config not available or provides no info
2885 IDN_LDFLAGS="-L$want_idn_path/lib$libsuff"
2886 IDN_CPPFLAGS="-I$want_idn_path/include"
2887 IDN_DIR="$want_idn_path/lib$libsuff"
2890 dnl path not specified
2891 CURL_CHECK_PKGCONFIG(libidn2)
2892 if test "$PKGCONFIG" != "no"; then
2893 IDN_LIBS=`$PKGCONFIG --libs-only-l libidn2 2>/dev/null`
2894 IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn2 2>/dev/null`
2895 IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn2 2>/dev/null`
2896 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2898 dnl pkg-config not available or provides no info
2903 if test "$PKGCONFIG" != "no"; then
2904 AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"])
2905 AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"])
2906 AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2907 AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"])
2909 AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"])
2910 AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"])
2911 AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2912 AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"])
2915 CPPFLAGS="$IDN_CPPFLAGS $CPPFLAGS"
2916 LDFLAGS="$IDN_LDFLAGS $LDFLAGS"
2917 LIBS="$IDN_LIBS $LIBS"
2919 AC_MSG_CHECKING([if idn2_lookup_ul can be linked])
2921 AC_LANG_FUNC_LINK_TRY([idn2_lookup_ul])
2923 AC_MSG_RESULT([yes])
2924 tst_links_libidn="yes"
2927 tst_links_libidn="no"
2930 AC_CHECK_HEADERS( idn2.h )
2932 if test "$tst_links_libidn" = "yes"; then
2933 AC_DEFINE(HAVE_LIBIDN2, 1, [Define to 1 if you have the `idn2' library (-lidn2).])
2934 dnl different versions of libidn have different setups of these:
2936 AC_SUBST([IDN_ENABLED], [1])
2937 curl_idn_msg="enabled (libidn2)"
2938 if test -n "$IDN_DIR" -a "x$cross_compiling" != "xyes"; then
2939 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
2940 export LD_LIBRARY_PATH
2941 AC_MSG_NOTICE([Added $IDN_DIR to LD_LIBRARY_PATH])
2944 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2945 CPPFLAGS="$clean_CPPFLAGS"
2946 LDFLAGS="$clean_LDFLAGS"
2952 dnl Let's hope this split URL remains working:
2953 dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
2954 dnl genprogc/thread_quick_ref.htm
2957 dnl **********************************************************************
2958 dnl Check for nghttp2
2959 dnl **********************************************************************
2962 AC_ARG_WITH(nghttp2,
2963 AC_HELP_STRING([--with-nghttp2=PATH],[Enable nghttp2 usage])
2964 AC_HELP_STRING([--without-nghttp2],[Disable nghttp2 usage]),
2968 dnl --without-nghttp2 option used
2972 dnl --with-nghttp2 option used without path
2977 dnl --with-nghttp2 option used with path
2979 want_h2_path="$withval/lib/pkgconfig"
2983 curl_h2_msg="disabled (--with-nghttp2)"
2984 if test X"$want_h2" != Xno; then
2985 dnl backup the pre-nghttp2 variables
2986 CLEANLDFLAGS="$LDFLAGS"
2987 CLEANCPPFLAGS="$CPPFLAGS"
2990 CURL_CHECK_PKGCONFIG(libnghttp2, $want_h2_path)
2992 if test "$PKGCONFIG" != "no" ; then
2993 LIB_H2=`CURL_EXPORT_PCDIR([$want_h2_path])
2994 $PKGCONFIG --libs-only-l libnghttp2`
2995 AC_MSG_NOTICE([-l is $LIB_H2])
2997 CPP_H2=`CURL_EXPORT_PCDIR([$want_h2_path]) dnl
2998 $PKGCONFIG --cflags-only-I libnghttp2`
2999 AC_MSG_NOTICE([-I is $CPP_H2])
3001 LD_H2=`CURL_EXPORT_PCDIR([$want_h2_path])
3002 $PKGCONFIG --libs-only-L libnghttp2`
3003 AC_MSG_NOTICE([-L is $LD_H2])
3005 LDFLAGS="$LDFLAGS $LD_H2"
3006 CPPFLAGS="$CPPFLAGS $CPP_H2"
3007 LIBS="$LIB_H2 $LIBS"
3009 # use nghttp2_option_set_no_recv_client_magic to require nghttp2
3011 AC_CHECK_LIB(nghttp2, nghttp2_option_set_no_recv_client_magic,
3013 AC_CHECK_HEADERS(nghttp2/nghttp2.h,
3014 curl_h2_msg="enabled (nghttp2)"
3016 AC_DEFINE(USE_NGHTTP2, 1, [if nghttp2 is in use])
3017 AC_SUBST(USE_NGHTTP2, [1])
3020 dnl not found, revert back to clean variables
3021 LDFLAGS=$CLEANLDFLAGS
3022 CPPFLAGS=$CLEANCPPFLAGS
3027 dnl no nghttp2 pkg-config found, deal with it
3028 if test X"$want_h2" != Xdefault; then
3029 dnl To avoid link errors, we do not allow --with-nghttp2 without
3030 dnl a pkgconfig file
3031 AC_MSG_ERROR([--with-nghttp2 was specified but could not find libnghttp2 pkg-config file.])
3037 dnl **********************************************************************
3038 dnl Check for zsh completion path
3039 dnl **********************************************************************
3041 OPT_ZSH_FPATH=default
3042 AC_ARG_WITH(zsh-functions-dir,
3043 AC_HELP_STRING([--with-zsh-functions-dir=PATH],[Install zsh completions to PATH])
3044 AC_HELP_STRING([--without-zsh-functions-dir],[Do not install zsh completions]),
3045 [OPT_ZSH_FPATH=$withval])
3046 case "$OPT_ZSH_FPATH" in
3048 dnl --without-zsh-functions-dir option used
3051 dnl --with-zsh-functions-dir option used without path
3052 ZSH_FUNCTIONS_DIR="$datarootdir/zsh/site-functions"
3053 AC_SUBST(ZSH_FUNCTIONS_DIR)
3056 dnl --with-zsh-functions-dir option used with path
3057 ZSH_FUNCTIONS_DIR="$withval"
3058 AC_SUBST(ZSH_FUNCTIONS_DIR)
3062 dnl **********************************************************************
3063 dnl Back to "normal" configuring
3064 dnl **********************************************************************
3066 dnl Checks for header files.
3069 CURL_CHECK_HEADER_MALLOC
3070 CURL_CHECK_HEADER_MEMORY
3072 dnl Now check for the very most basic headers. Then we can use these
3073 dnl ones as default-headers when checking for the rest!
3116 dnl to do if not found
3120 dnl default includes
3122 #ifdef HAVE_SYS_TYPES_H
3123 #include <sys/types.h>
3125 #ifdef HAVE_SYS_TIME_H
3126 #include <sys/time.h>
3128 #ifdef HAVE_SYS_SELECT_H
3129 #include <sys/select.h>
3131 #ifdef HAVE_SYS_SOCKET_H
3132 #include <sys/socket.h>
3134 #ifdef HAVE_NETINET_IN_H
3135 #include <netinet/in.h>
3137 #ifdef HAVE_SYS_UN_H
3143 dnl Checks for typedefs, structures, and compiler characteristics.
3145 CURL_CHECK_VARIADIC_MACROS
3148 CURL_CHECK_STRUCT_TIMEVAL
3149 CURL_VERIFY_RUNTIMELIBS
3151 AC_CHECK_SIZEOF(size_t)
3152 AC_CHECK_SIZEOF(long)
3153 AC_CHECK_SIZEOF(int)
3154 AC_CHECK_SIZEOF(short)
3156 AC_CHECK_SIZEOF(time_t)
3157 AC_CHECK_SIZEOF(off_t)
3160 if test x"$curl_cv_native_windows" != "xyes" &&
3161 test $ac_cv_sizeof_off_t -ne $curl_sizeof_curl_off_t; then
3162 AC_MSG_WARN([This libcurl built is probably not ABI compatible with previous])
3163 AC_MSG_WARN([builds! You MUST read lib/README.curl_off_t to figure it out.])
3168 AC_CHECK_TYPE(long long,
3169 [AC_DEFINE(HAVE_LONGLONG, 1,
3170 [Define to 1 if the compiler supports the 'long long' data type.])]
3174 if test "xyes" = "x$longlong"; then
3175 AC_MSG_CHECKING([if numberLL works])
3179 long long val = 1000LL;
3182 AC_MSG_RESULT([yes])
3183 AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
3191 AC_CHECK_TYPE(ssize_t, ,
3192 AC_DEFINE(ssize_t, int, [the signed version of size_t]))
3194 # check for bool type
3195 AC_CHECK_TYPE([bool],[
3196 AC_DEFINE(HAVE_BOOL_T, 1,
3197 [Define to 1 if bool is an available type.])
3199 #ifdef HAVE_SYS_TYPES_H
3200 #include <sys/types.h>
3202 #ifdef HAVE_STDBOOL_H
3203 #include <stdbool.h>
3207 CURL_CONFIGURE_CURL_SOCKLEN_T
3209 CURL_CONFIGURE_PULL_SYS_POLL
3213 TYPE_SOCKADDR_STORAGE
3219 CURL_CHECK_FUNC_SELECT
3221 CURL_CHECK_FUNC_RECV
3222 CURL_CHECK_FUNC_SEND
3223 CURL_CHECK_MSG_NOSIGNAL
3225 CURL_CHECK_FUNC_ALARM
3226 CURL_CHECK_FUNC_BASENAME
3227 CURL_CHECK_FUNC_CLOSESOCKET
3228 CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
3229 CURL_CHECK_FUNC_CONNECT
3230 CURL_CHECK_FUNC_FCNTL
3231 CURL_CHECK_FUNC_FDOPEN
3232 CURL_CHECK_FUNC_FREEADDRINFO
3233 CURL_CHECK_FUNC_FREEIFADDRS
3234 CURL_CHECK_FUNC_FSETXATTR
3235 CURL_CHECK_FUNC_FTRUNCATE
3236 CURL_CHECK_FUNC_GETADDRINFO
3237 CURL_CHECK_FUNC_GAI_STRERROR
3238 CURL_CHECK_FUNC_GETHOSTBYADDR
3239 CURL_CHECK_FUNC_GETHOSTBYADDR_R
3240 CURL_CHECK_FUNC_GETHOSTBYNAME
3241 CURL_CHECK_FUNC_GETHOSTBYNAME_R
3242 CURL_CHECK_FUNC_GETHOSTNAME
3243 CURL_CHECK_FUNC_GETIFADDRS
3244 CURL_CHECK_FUNC_GETSERVBYPORT_R
3245 CURL_CHECK_FUNC_GMTIME_R
3246 CURL_CHECK_FUNC_INET_NTOA_R
3247 CURL_CHECK_FUNC_INET_NTOP
3248 CURL_CHECK_FUNC_INET_PTON
3249 CURL_CHECK_FUNC_IOCTL
3250 CURL_CHECK_FUNC_IOCTLSOCKET
3251 CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
3252 CURL_CHECK_FUNC_LOCALTIME_R
3253 CURL_CHECK_FUNC_MEMRCHR
3254 CURL_CHECK_FUNC_POLL
3255 CURL_CHECK_FUNC_SETSOCKOPT
3256 CURL_CHECK_FUNC_SIGACTION
3257 CURL_CHECK_FUNC_SIGINTERRUPT
3258 CURL_CHECK_FUNC_SIGNAL
3259 CURL_CHECK_FUNC_SIGSETJMP
3260 CURL_CHECK_FUNC_SOCKET
3261 CURL_CHECK_FUNC_SOCKETPAIR
3262 CURL_CHECK_FUNC_STRCASECMP
3263 CURL_CHECK_FUNC_STRCMPI
3264 CURL_CHECK_FUNC_STRDUP
3265 CURL_CHECK_FUNC_STRERROR_R
3266 CURL_CHECK_FUNC_STRICMP
3267 CURL_CHECK_FUNC_STRNCASECMP
3268 CURL_CHECK_FUNC_STRNCMPI
3269 CURL_CHECK_FUNC_STRNICMP
3270 CURL_CHECK_FUNC_STRSTR
3271 CURL_CHECK_FUNC_STRTOK_R
3272 CURL_CHECK_FUNC_STRTOLL
3273 CURL_CHECK_FUNC_WRITEV
3279 AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
3283 AC_CHECK_FUNCS([fork \
3304 eval skipcheck=\$skipcheck_$func
3305 if test "x$skipcheck" != "xyes"; then
3306 AC_MSG_CHECKING([deeper for $func])
3313 AC_MSG_RESULT([yes])
3314 eval "ac_cv_func_$func=yes"
3315 AC_DEFINE_UNQUOTED(XC_SH_TR_CPP([HAVE_$func]), [1],
3316 [Define to 1 if you have the $func function.])
3318 AC_MSG_RESULT([but still no])
3323 dnl Check if the getnameinfo function is available
3324 dnl and get the types of five of its arguments.
3325 CURL_CHECK_FUNC_GETNAMEINFO
3327 if test "$ipv6" = "yes"; then
3328 if test "$curl_cv_func_getaddrinfo" = "yes"; then
3329 AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
3331 AC_SUBST(IPV6_ENABLED)
3333 CURL_CHECK_NI_WITHSCOPEID
3336 CURL_CHECK_NONBLOCKING_SOCKET
3338 dnl ************************************************************
3339 dnl nroff tool stuff
3342 AC_PATH_PROG( PERL, perl, ,
3343 $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
3346 AC_PATH_PROGS( NROFF, gnroff nroff, ,
3347 $PATH:/usr/bin/:/usr/local/bin )
3350 if test -n "$NROFF"; then
3351 dnl only check for nroff options if an nroff command was found
3353 AC_MSG_CHECKING([how to use *nroff to get plain text from man pages])
3355 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3356 if test -z "$mancheck"; then
3358 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3359 if test -z "$mancheck"; then
3361 AC_MSG_RESULT([failed])
3362 AC_MSG_WARN([found no *nroff option to get plaintext from man pages])
3364 AC_MSG_RESULT([$MANOPT])
3367 AC_MSG_RESULT([$MANOPT])
3372 if test -z "$MANOPT"
3374 dnl if no nroff tool was found, or no option that could convert man pages
3375 dnl was found, then disable the built-in manual stuff
3376 AC_MSG_WARN([disabling built-in manual])
3380 dnl *************************************************************************
3381 dnl If the manual variable still is set, then we go with providing a built-in
3384 if test "$USE_MANUAL" = "1"; then
3385 AC_DEFINE(USE_MANUAL, 1, [If you want to build curl with the built-in manual])
3386 curl_manual_msg="enabled"
3389 dnl set variable for use in automakefile(s)
3390 AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
3393 AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
3395 if test "x$curl_cv_native_windows" != "xyes" &&
3396 test "x$enable_shared" = "xyes"; then
3397 build_libhostname=yes
3399 build_libhostname=no
3401 AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes)
3403 CURL_CHECK_OPTION_THREADED_RESOLVER
3405 if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
3407 [Options --enable-threaded-resolver and --enable-ares are mutually exclusive])
3410 dnl ************************************************************
3411 dnl disable POSIX threads
3413 AC_MSG_CHECKING([whether to use POSIX threads for threaded resolver])
3414 AC_ARG_ENABLE(pthreads,
3415 AC_HELP_STRING([--enable-pthreads],
3416 [Enable POSIX threads (default for threaded resolver)])
3417 AC_HELP_STRING([--disable-pthreads],[Disable POSIX threads]),
3418 [ case "$enableval" in
3419 no) AC_MSG_RESULT(no)
3422 *) AC_MSG_RESULT(yes)
3430 if test "$want_thres" = "yes" && test "$dontwant_rt" = "no" && \
3431 test "$want_pthreads" != "no"; then
3432 AC_CHECK_HEADER(pthread.h,
3433 [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>])
3434 save_CFLAGS="$CFLAGS"
3436 dnl first check for function without lib
3437 AC_CHECK_FUNC(pthread_create, [USE_THREADS_POSIX=1] )
3439 dnl if it wasn't found without lib, search for it in pthread lib
3440 if test "$USE_THREADS_POSIX" != "1"
3442 CFLAGS="$CFLAGS -pthread"
3443 AC_CHECK_LIB(pthread, pthread_create,
3444 [USE_THREADS_POSIX=1],
3445 [ CFLAGS="$save_CFLAGS"])
3448 if test "x$USE_THREADS_POSIX" = "x1"
3450 AC_DEFINE(USE_THREADS_POSIX, 1, [if you want POSIX threaded DNS lookup])
3451 curl_res_msg="POSIX threaded"
3455 if test "x$USE_THREADS_POSIX" != "x1"; then
3456 if test "$want_pthreads" = "yes"; then
3457 AC_MSG_ERROR([--enable-pthreads but pthreads was not found])
3459 if test "$want_thres" = "yes"; then
3460 dnl If native Windows fallback on Win32 threads since no POSIX threads
3461 if test "$curl_cv_native_windows" = "yes"; then
3463 AC_DEFINE(USE_THREADS_WIN32, 1, [if you want Win32 threaded DNS lookup])
3464 curl_res_msg="Win32 threaded"
3466 AC_MSG_ERROR([Threaded resolver enabled but no thread library found])
3472 dnl ************************************************************
3473 dnl disable verbose text strings
3475 AC_MSG_CHECKING([whether to enable verbose strings])
3476 AC_ARG_ENABLE(verbose,
3477 AC_HELP_STRING([--enable-verbose],[Enable verbose strings])
3478 AC_HELP_STRING([--disable-verbose],[Disable verbose strings]),
3479 [ case "$enableval" in
3482 AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings])
3483 curl_verbose_msg="no"
3485 *) AC_MSG_RESULT(yes)
3491 dnl ************************************************************
3492 dnl enable SSPI support
3494 AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)])
3496 AC_HELP_STRING([--enable-sspi],[Enable SSPI])
3497 AC_HELP_STRING([--disable-sspi],[Disable SSPI]),
3498 [ case "$enableval" in
3500 if test "$curl_cv_native_windows" = "yes"; then
3502 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
3503 AC_SUBST(USE_WINDOWS_SSPI, [1])
3504 curl_sspi_msg="enabled"
3507 AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.])
3511 if test "x$WINSSL_ENABLED" = "x1"; then
3512 # --with-winssl implies --enable-sspi
3519 if test "x$WINSSL_ENABLED" = "x1"; then
3520 # --with-winssl implies --enable-sspi
3527 dnl ************************************************************
3528 dnl disable cryptographic authentication
3530 AC_MSG_CHECKING([whether to enable cryptographic authentication methods])
3531 AC_ARG_ENABLE(crypto-auth,
3532 AC_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication])
3533 AC_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]),
3534 [ case "$enableval" in
3537 AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication])
3538 CURL_DISABLE_CRYPTO_AUTH=1
3540 *) AC_MSG_RESULT(yes)
3546 CURL_CHECK_OPTION_NTLM_WB
3550 dnl ************************************************************
3551 dnl disable TLS-SRP authentication
3553 AC_MSG_CHECKING([whether to enable TLS-SRP authentication])
3554 AC_ARG_ENABLE(tls-srp,
3555 AC_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication])
3556 AC_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]),
3557 [ case "$enableval" in
3560 AC_DEFINE(CURL_DISABLE_TLS_SRP, 1, [to disable TLS-SRP authentication])
3563 *) AC_MSG_RESULT(yes)
3571 if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_OPENSSL_SRP" = "x1") ; then
3572 AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication])
3574 curl_tls_srp_msg="enabled"
3577 dnl ************************************************************
3578 dnl disable Unix domain sockets support
3580 AC_MSG_CHECKING([whether to enable Unix domain sockets])
3581 AC_ARG_ENABLE(unix-sockets,
3582 AC_HELP_STRING([--enable-unix-sockets],[Enable Unix domain sockets])
3583 AC_HELP_STRING([--disable-unix-sockets],[Disable Unix domain sockets]),
3584 [ case "$enableval" in
3585 no) AC_MSG_RESULT(no)
3586 want_unix_sockets=no
3588 *) AC_MSG_RESULT(yes)
3589 want_unix_sockets=yes
3593 want_unix_sockets=auto
3596 if test "x$want_unix_sockets" != "xno"; then
3597 AC_CHECK_MEMBER([struct sockaddr_un.sun_path], [
3598 AC_DEFINE(USE_UNIX_SOCKETS, 1, [Use Unix domain sockets])
3599 AC_SUBST(USE_UNIX_SOCKETS, [1])
3600 curl_unix_sockets_msg="enabled"
3602 if test "x$want_unix_sockets" = "xyes"; then
3603 AC_MSG_ERROR([--enable-unix-sockets is not available on this platform!])
3610 dnl ************************************************************
3611 dnl disable cookies support
3613 AC_MSG_CHECKING([whether to enable support for cookies])
3614 AC_ARG_ENABLE(cookies,
3615 AC_HELP_STRING([--enable-cookies],[Enable cookies support])
3616 AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
3617 [ case "$enableval" in
3620 AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support])
3622 *) AC_MSG_RESULT(yes)
3628 dnl ************************************************************
3629 dnl hiding of library internal symbols
3631 CURL_CONFIGURE_SYMBOL_HIDING
3633 dnl ************************************************************
3634 dnl enforce SONAME bump
3637 AC_MSG_CHECKING([whether to enforce SONAME bump])
3638 AC_ARG_ENABLE(soname-bump,
3639 AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump])
3640 AC_HELP_STRING([--disable-soname-bump],[Disable enforced SONAME bump]),
3641 [ case "$enableval" in
3642 yes) AC_MSG_RESULT(yes)
3649 AC_MSG_RESULT($soname_bump)
3651 AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes)
3654 dnl All the library dependencies put into $LIB apply to libcurl only.
3658 AC_SUBST(LIBCURL_LIBS)
3659 AC_SUBST(CURL_NETWORK_LIBS)
3660 AC_SUBST(CURL_NETWORK_AND_TIME_LIBS)
3662 dnl BLANK_AT_MAKETIME may be used in our Makefile.am files to blank
3663 dnl LIBS variable used in generated makefile at makefile processing
3664 dnl time. Doing this functionally prevents LIBS from being used for
3665 dnl all link targets in given makefile.
3667 AC_SUBST(BLANK_AT_MAKETIME)
3669 AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes)
3672 ENABLE_SHARED="$enable_shared"
3673 AC_SUBST(ENABLE_SHARED)
3675 dnl to let curl-config output the static libraries correctly
3676 ENABLE_STATIC="$enable_static"
3677 AC_SUBST(ENABLE_STATIC)
3681 dnl For keeping supported features and protocols also in pkg-config file
3682 dnl since it is more cross-compile friendly than curl-config
3685 if test "x$OPENSSL_ENABLED" = "x1"; then
3686 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3687 elif test -n "$SSL_ENABLED"; then
3688 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3690 if test "x$IPV6_ENABLED" = "x1"; then
3691 SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
3693 if test "x$USE_UNIX_SOCKETS" = "x1"; then
3694 SUPPORT_FEATURES="$SUPPORT_FEATURES UnixSockets"
3696 if test "x$HAVE_LIBZ" = "x1"; then
3697 SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
3699 if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1" \
3700 -o "x$USE_THREADS_WIN32" = "x1"; then
3701 SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
3703 if test "x$IDN_ENABLED" = "x1"; then
3704 SUPPORT_FEATURES="$SUPPORT_FEATURES IDN"
3706 if test "x$USE_WINDOWS_SSPI" = "x1"; then
3707 SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
3710 if test "x$HAVE_GSSAPI" = "x1"; then
3711 SUPPORT_FEATURES="$SUPPORT_FEATURES GSS-API"
3714 if test "x$curl_psl_msg" = "xyes"; then
3715 SUPPORT_FEATURES="$SUPPORT_FEATURES PSL"
3718 if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
3719 \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then
3720 SUPPORT_FEATURES="$SUPPORT_FEATURES SPNEGO"
3723 if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
3724 \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then
3725 SUPPORT_FEATURES="$SUPPORT_FEATURES Kerberos"
3728 if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1"; then
3729 if test "x$OPENSSL_ENABLED" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
3730 -o "x$GNUTLS_ENABLED" = "x1" -o "x$MBEDTLS_ENABLED" = "x1" \
3731 -o "x$NSS_ENABLED" = "x1" -o "x$DARWINSSL_ENABLED" = "x1"; then
3732 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
3734 if test "x$CURL_DISABLE_HTTP" != "x1" -a \
3735 "x$NTLM_WB_ENABLED" = "x1"; then
3736 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
3741 if test "x$USE_TLS_SRP" = "x1"; then
3742 SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
3745 if test "x$USE_NGHTTP2" = "x1"; then
3746 SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2"
3749 if test "x$OPENSSL_ENABLED" = "x1" -o "x$GNUTLS_ENABLED" = "x1" \
3750 -o "x$NSS_ENABLED" = "x1"; then
3751 SUPPORT_FEATURES="$SUPPORT_FEATURES HTTPS-proxy"
3754 AC_SUBST(SUPPORT_FEATURES)
3756 dnl For supported protocols in pkg-config file
3757 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3758 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
3759 if test "x$SSL_ENABLED" = "x1"; then
3760 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS"
3763 if test "x$CURL_DISABLE_FTP" != "x1"; then
3764 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP"
3765 if test "x$SSL_ENABLED" = "x1"; then
3766 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS"
3769 if test "x$CURL_DISABLE_FILE" != "x1"; then
3770 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE"
3772 if test "x$CURL_DISABLE_TELNET" != "x1"; then
3773 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET"
3775 if test "x$CURL_DISABLE_LDAP" != "x1"; then
3776 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP"
3777 if test "x$CURL_DISABLE_LDAPS" != "x1"; then
3778 if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") ||
3779 (test "x$USE_OPENLDAP" != "x1" && test "x$HAVE_LDAP_SSL" = "x1"); then
3780 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS"
3784 if test "x$CURL_DISABLE_DICT" != "x1"; then
3785 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT"
3787 if test "x$CURL_DISABLE_TFTP" != "x1"; then
3788 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP"
3790 if test "x$CURL_DISABLE_GOPHER" != "x1"; then
3791 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER"
3793 if test "x$CURL_DISABLE_POP3" != "x1"; then
3794 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3"
3795 if test "x$SSL_ENABLED" = "x1"; then
3796 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S"
3799 if test "x$CURL_DISABLE_IMAP" != "x1"; then
3800 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
3801 if test "x$SSL_ENABLED" = "x1"; then
3802 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
3805 if test "x$CURL_DISABLE_SMB" != "x1" \
3806 -a "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" \
3807 -a \( "x$OPENSSL_ENABLED" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
3808 -o "x$GNUTLS_ENABLED" = "x1" -o "x$MBEDTLS_ENABLED" = "x1" \
3809 -o "x$NSS_ENABLED" = "x1" -o "x$DARWINSSL_ENABLED" = "x1" \); then
3810 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB"
3811 if test "x$SSL_ENABLED" = "x1"; then
3812 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMBS"
3815 if test "x$CURL_DISABLE_SMTP" != "x1"; then
3816 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
3817 if test "x$SSL_ENABLED" = "x1"; then
3818 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS"
3821 if test "x$USE_LIBSSH2" = "x1"; then
3822 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
3823 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
3825 if test "x$CURL_DISABLE_RTSP" != "x1"; then
3826 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
3828 if test "x$USE_LIBRTMP" = "x1"; then
3829 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP"
3832 dnl replace spaces with newlines
3834 dnl replace the newlines back to spaces
3835 SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '`
3837 AC_SUBST(SUPPORT_PROTOCOLS)
3839 dnl squeeze whitespace out of some variables
3847 squeeze LIBCURL_LIBS
3848 squeeze CURL_NETWORK_LIBS
3849 squeeze CURL_NETWORK_AND_TIME_LIBS
3851 squeeze SUPPORT_FEATURES
3852 squeeze SUPPORT_PROTOCOLS
3854 XC_CHECK_BUILD_FLAGS
3856 if test "x$want_curldebug_assumed" = "xyes" &&
3857 test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
3858 ac_configure_args="$ac_configure_args --enable-curldebug"
3861 AC_CONFIG_FILES([Makefile \
3863 docs/examples/Makefile \
3864 docs/libcurl/Makefile \
3865 docs/libcurl/opts/Makefile \
3866 docs/cmdline-opts/Makefile \
3868 include/curl/Makefile \
3874 tests/certs/Makefile \
3875 tests/certs/scripts/Makefile \
3876 tests/data/Makefile \
3877 tests/server/Makefile \
3878 tests/libtest/Makefile \
3879 tests/unit/Makefile \
3881 packages/Win32/Makefile \
3882 packages/Win32/cygwin/Makefile \
3883 packages/Linux/Makefile \
3884 packages/Linux/RPM/Makefile \
3885 packages/Linux/RPM/curl.spec \
3886 packages/Linux/RPM/curl-ssl.spec \
3887 packages/Solaris/Makefile \
3888 packages/EPM/curl.list \
3889 packages/EPM/Makefile \
3890 packages/vms/Makefile \
3891 packages/AIX/Makefile \
3892 packages/AIX/RPM/Makefile \
3893 packages/AIX/RPM/curl.spec \
3899 CURL_GENERATE_CONFIGUREHELP_PM
3901 XC_AMEND_DISTCLEAN([lib src tests/unit tests/server tests/libtest docs/examples])
3903 AC_MSG_NOTICE([Configured to build curl/libcurl:
3905 curl version: ${CURLVERSION}
3907 Install prefix: ${prefix}
3909 SSL support: ${curl_ssl_msg}
3910 SSH support: ${curl_ssh_msg}
3911 zlib support: ${curl_zlib_msg}
3912 GSS-API support: ${curl_gss_msg}
3913 TLS-SRP support: ${curl_tls_srp_msg}
3914 resolver: ${curl_res_msg}
3915 IPv6 support: ${curl_ipv6_msg}
3916 Unix sockets support: ${curl_unix_sockets_msg}
3917 IDN support: ${curl_idn_msg}
3918 Build libcurl: Shared=${enable_shared}, Static=${enable_static}
3919 Built-in manual: ${curl_manual_msg}
3920 --libcurl option: ${curl_libcurl_msg}
3921 Verbose errors: ${curl_verbose_msg}
3922 SSPI support: ${curl_sspi_msg}
3923 ca cert bundle: ${ca}${ca_warning}
3924 ca cert path: ${capath}${capath_warning}
3925 ca fallback: ${with_ca_fallback}
3926 LDAP support: ${curl_ldap_msg}
3927 LDAPS support: ${curl_ldaps_msg}
3928 RTSP support: ${curl_rtsp_msg}
3929 RTMP support: ${curl_rtmp_msg}
3930 metalink support: ${curl_mtlnk_msg}
3931 PSL support: ${curl_psl_msg}
3932 HTTP2 support: ${curl_h2_msg}
3933 Protocols: ${SUPPORT_PROTOCOLS}
3936 if test "x$soname_bump" = "xyes"; then
3939 SONAME bump: yes - WARNING: this library will be built with the SONAME
3940 number bumped due to (a detected) ABI breakage.
3941 See lib/README.curl_off_t for details on this.