1 #***************************************************************************
3 # Project ___| | | | _ \| |
5 # | (__| |_| | _ <| |___
6 # \___|\___/|_| \_\_____|
8 # Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al.
10 # This software is licensed as described in the file COPYING, which
11 # you should have received as part of this distribution. The terms
12 # are also available at http://curl.haxx.se/docs/copyright.html.
14 # You may opt to use, copy, modify, merge, publish, distribute and/or sell
15 # copies of the Software, and permit persons to whom the Software is
16 # furnished to do so, under the terms of the COPYING file.
18 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19 # KIND, either express or implied.
21 #***************************************************************************
22 dnl Process this file with autoconf to produce a configure script.
26 dnl We don't know the version number "statically" so we use a dash here
27 AC_INIT([curl], [-], [a suitable curl mailing list: http://curl.haxx.se/mail/])
31 CURL_OVERRIDE_AUTOCONF
33 dnl configure script copyright
34 AC_COPYRIGHT([Copyright (c) 1998 - 2013 Daniel Stenberg, <daniel@haxx.se>
35 This configure script may be copied, distributed and modified under the
36 terms of the curl license; see COPYING for more details])
38 AC_CONFIG_SRCDIR([lib/urldata.h])
39 AC_CONFIG_HEADERS(lib/curl_config.h include/curl/curlbuild.h)
40 AC_CONFIG_MACRO_DIR([m4])
43 CURL_CHECK_OPTION_DEBUG
44 CURL_CHECK_OPTION_OPTIMIZE
45 CURL_CHECK_OPTION_WARNINGS
46 CURL_CHECK_OPTION_WERROR
47 CURL_CHECK_OPTION_CURLDEBUG
48 CURL_CHECK_OPTION_SYMBOL_HIDING
49 CURL_CHECK_OPTION_ARES
51 XC_CHECK_PATH_SEPARATOR
54 # save the configure arguments
56 CONFIGURE_OPTIONS="\"$ac_configure_args\""
57 AC_SUBST(CONFIGURE_OPTIONS)
60 if test X"$want_werror" = Xyes; then
61 CURL_CFLAG_EXTRAS="-Werror"
63 AC_SUBST(CURL_CFLAG_EXTRAS)
65 dnl SED is mandatory for configure process and libtool.
66 dnl Set it now, allowing it to be changed later.
67 if test -z "$SED"; then
68 dnl allow it to be overridden
69 AC_PATH_PROG([SED], [sed], [not_found],
70 [$PATH:/usr/bin:/usr/local/bin])
71 if test -z "$SED" || test "$SED" = "not_found"; then
72 AC_MSG_ERROR([sed not found in PATH. Cannot continue without sed.])
77 dnl GREP is mandatory for configure process and libtool.
78 dnl Set it now, allowing it to be changed later.
79 if test -z "$GREP"; then
80 dnl allow it to be overridden
81 AC_PATH_PROG([GREP], [grep], [not_found],
82 [$PATH:/usr/bin:/usr/local/bin])
83 if test -z "$GREP" || test "$GREP" = "not_found"; then
84 AC_MSG_ERROR([grep not found in PATH. Cannot continue without grep.])
89 dnl EGREP is mandatory for configure process and libtool.
90 dnl Set it now, allowing it to be changed later.
91 if test -z "$EGREP"; then
92 dnl allow it to be overridden
93 if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
94 AC_MSG_CHECKING([for egrep])
96 AC_MSG_RESULT([$EGREP])
98 AC_PATH_PROG([EGREP], [egrep], [not_found],
99 [$PATH:/usr/bin:/usr/local/bin])
102 if test -z "$EGREP" || test "$EGREP" = "not_found"; then
103 AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.])
107 dnl AR is mandatory for configure process and libtool.
108 dnl This is target dependent, so check it as a tool.
109 if test -z "$AR"; then
110 dnl allow it to be overridden
111 AC_PATH_TOOL([AR], [ar], [not_found],
112 [$PATH:/usr/bin:/usr/local/bin])
113 if test -z "$AR" || test "$AR" = "not_found"; then
114 AC_MSG_ERROR([ar not found in PATH. Cannot continue without ar.])
121 dnl Remove non-configure distributed curlbuild.h
122 if test -f ${srcdir}/include/curl/curlbuild.h; then
123 rm -f ${srcdir}/include/curl/curlbuild.h
126 dnl figure out the libcurl version
127 CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curlver.h`
130 AC_MSG_CHECKING([curl version])
131 AC_MSG_RESULT($CURLVERSION)
133 AC_SUBST(CURLVERSION)
136 dnl we extract the numerical version for curl-config only
137 VERSIONNUM=`$SED -ne 's/^#define LIBCURL_VERSION_NUM 0x\(.*\)/\1/p' ${srcdir}/include/curl/curlver.h`
140 dnl Solaris pkgadd support definitions
141 PKGADD_PKG="HAXXcurl"
142 PKGADD_NAME="cURL - a client that groks URLs"
143 PKGADD_VENDOR="curl.haxx.se"
145 AC_SUBST(PKGADD_NAME)
146 AC_SUBST(PKGADD_VENDOR)
149 dnl initialize all the info variables
150 curl_ssl_msg="no (--with-{ssl,gnutls,nss,polarssl,cyassl,axtls,winssl,darwinssl} )"
151 curl_ssh_msg="no (--with-libssh2)"
152 curl_zlib_msg="no (--with-zlib)"
153 curl_gss_msg="no (--with-gssapi)"
154 curl_spnego_msg="no (--with-spnego)"
155 curl_tls_srp_msg="no (--enable-tls-srp)"
156 curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
157 curl_ipv6_msg="no (--enable-ipv6)"
158 curl_idn_msg="no (--with-{libidn,winidn})"
159 curl_manual_msg="no (--enable-manual)"
160 curl_libcurl_msg="enabled (--disable-libcurl-option)"
161 curl_verbose_msg="enabled (--disable-verbose)"
162 curl_sspi_msg="no (--enable-sspi)"
163 curl_ldap_msg="no (--enable-ldap / --with-ldap-lib / --with-lber-lib)"
164 curl_ldaps_msg="no (--enable-ldaps)"
165 curl_rtsp_msg="no (--enable-rtsp)"
166 curl_rtmp_msg="no (--with-librtmp)"
167 curl_mtlnk_msg="no (--with-libmetalink)"
169 init_ssl_msg=${curl_ssl_msg}
172 dnl Save some initial values the user might have provided
174 INITIAL_LDFLAGS=$LDFLAGS
178 dnl Detect the canonical host and target build environment
182 dnl Get system canonical name
183 AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
185 dnl Checks for programs.
187 dnl Our curl_off_t internal and external configure settings
188 CURL_CONFIGURE_CURL_OFF_T
190 dnl This defines _ALL_SOURCE for AIX
191 CURL_CHECK_AIX_ALL_SOURCE
193 dnl Our configure and build reentrant settings
194 CURL_CONFIGURE_THREAD_SAFE
195 CURL_CONFIGURE_REENTRANT
197 dnl check for how to do large files
203 # Automake conditionals based on libtool related checks
206 AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSION_INFO],
207 [test "x$xc_lt_shlib_use_version_info" = 'xyes'])
208 AM_CONDITIONAL([CURL_LT_SHLIB_USE_NO_UNDEFINED],
209 [test "x$xc_lt_shlib_use_no_undefined" = 'xyes'])
210 AM_CONDITIONAL([CURL_LT_SHLIB_USE_MIMPURE_TEXT],
211 [test "x$xc_lt_shlib_use_mimpure_text" = 'xyes'])
214 # Due to libtool and automake machinery limitations of not allowing
215 # specifying separate CPPFLAGS or CFLAGS when compiling objects for
216 # inclusion of these in shared or static libraries, we are forced to
217 # build using separate configure runs for shared and static libraries
218 # on systems where different CPPFLAGS or CFLAGS are mandatory in order
219 # to compile objects for each kind of library. Notice that relying on
220 # the '-DPIC' CFLAG that libtool provides is not valid given that the
221 # user might for example choose to build static libraries with PIC.
225 # Make our Makefile.am files use the staticlib CPPFLAG only when strictly
226 # targeting a static library and not building its shared counterpart.
229 AM_CONDITIONAL([USE_CPPFLAG_CURL_STATICLIB],
230 [test "x$xc_lt_build_static_only" = 'xyes'])
233 # Make staticlib CPPFLAG variable and its definition visible in output
234 # files unconditionally, providing an empty definition unless strictly
235 # targeting a static library and not building its shared counterpart.
238 CPPFLAG_CURL_STATICLIB=
239 if test "x$xc_lt_build_static_only" = 'xyes'; then
240 CPPFLAG_CURL_STATICLIB='-DCURL_STATICLIB'
242 AC_SUBST([CPPFLAG_CURL_STATICLIB])
245 # Determine whether all dependent libraries must be specified when linking
246 if test "X$enable_shared" = "Xyes" -a "X$link_all_deplibs" = "Xno"
252 AC_SUBST(REQUIRE_LIB_DEPS)
253 AM_CONDITIONAL(USE_EXPLICIT_LIB_DEPS, test x$REQUIRE_LIB_DEPS = xyes)
255 dnl check if there's a way to force code inline
258 dnl **********************************************************************
259 dnl platform/compiler/architecture specific checks/flags
260 dnl **********************************************************************
263 CURL_SET_COMPILER_BASIC_OPTS
264 CURL_SET_COMPILER_DEBUG_OPTS
265 CURL_SET_COMPILER_OPTIMIZE_OPTS
266 CURL_SET_COMPILER_WARNING_OPTS
268 if test "$compiler_id" = "INTEL_UNIX_C"; then
270 if test "$compiler_num" -ge "1000"; then
271 dnl icc 10.X or later
272 CFLAGS="$CFLAGS -shared-intel"
273 elif test "$compiler_num" -ge "900"; then
275 CFLAGS="$CFLAGS -i-dynamic"
280 CURL_CHECK_COMPILER_HALT_ON_ERROR
281 CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
282 CURL_CHECK_COMPILER_PROTOTYPE_MISMATCH
283 CURL_CHECK_COMPILER_SYMBOL_HIDING
286 AM_CONDITIONAL(CURLDEBUG, test x$want_curldebug = xyes)
288 supports_unittests=yes
289 # cross-compilation of unit tests static library/programs fails when
290 # libcurl shared library is built. This might be due to a libtool or
291 # automake issue. In this case we disable unit tests.
292 if test "x$cross_compiling" != "xno" &&
293 test "x$enable_shared" != "xno"; then
294 supports_unittests=no
297 # IRIX 6.5.24 gcc 3.3 autobuilds fail unittests library compilation due to
298 # a problem related with OpenSSL headers and library versions not matching.
299 # Disable unit tests while time to further investigate this is found.
302 if test "$compiler_id" = "GNU_C"; then
303 supports_unittests=no
308 # All AIX autobuilds fails unit tests linking against unittests library
309 # due to unittests library being built with no symbols or members. Libtool ?
310 # Disable unit tests while time to further investigate this is found.
313 supports_unittests=no
317 dnl Build unit tests when option --enable-debug is given.
318 if test "x$want_debug" = "xyes" &&
319 test "x$supports_unittests" = "xyes"; then
324 AM_CONDITIONAL(BUILD_UNITTESTS, test x$want_unittests = xyes)
326 dnl **********************************************************************
327 dnl Compilation based checks should not be done before this point.
328 dnl **********************************************************************
330 dnl **********************************************************************
331 dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
332 dnl and ws2tcpip.h take precedence over any other further checks which
333 dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
334 dnl this specific header files. And do them before its results are used.
335 dnl **********************************************************************
337 CURL_CHECK_HEADER_WINDOWS
338 CURL_CHECK_NATIVE_WINDOWS
339 case X-"$ac_cv_native_windows" in
341 CURL_CHECK_HEADER_WINSOCK
342 CURL_CHECK_HEADER_WINSOCK2
343 CURL_CHECK_HEADER_WS2TCPIP
344 CURL_CHECK_HEADER_WINLDAP
345 CURL_CHECK_HEADER_WINBER
348 ac_cv_header_winsock_h="no"
349 ac_cv_header_winsock2_h="no"
350 ac_cv_header_ws2tcpip_h="no"
351 ac_cv_header_winldap_h="no"
352 ac_cv_header_winber_h="no"
355 CURL_CHECK_WIN32_LARGEFILE
357 dnl ************************************************************
358 dnl switch off particular protocols
360 AC_MSG_CHECKING([whether to support http])
362 AC_HELP_STRING([--enable-http],[Enable HTTP support])
363 AC_HELP_STRING([--disable-http],[Disable HTTP support]),
364 [ case "$enableval" in
367 AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP])
368 AC_MSG_WARN([disable HTTP disables FTP over proxy and RTSP])
369 AC_SUBST(CURL_DISABLE_HTTP, [1])
370 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
371 AC_SUBST(CURL_DISABLE_RTSP, [1])
373 *) AC_MSG_RESULT(yes)
378 AC_MSG_CHECKING([whether to support ftp])
380 AC_HELP_STRING([--enable-ftp],[Enable FTP support])
381 AC_HELP_STRING([--disable-ftp],[Disable FTP support]),
382 [ case "$enableval" in
385 AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP])
386 AC_SUBST(CURL_DISABLE_FTP, [1])
388 *) AC_MSG_RESULT(yes)
393 AC_MSG_CHECKING([whether to support file])
395 AC_HELP_STRING([--enable-file],[Enable FILE support])
396 AC_HELP_STRING([--disable-file],[Disable FILE support]),
397 [ case "$enableval" in
400 AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE])
401 AC_SUBST(CURL_DISABLE_FILE, [1])
403 *) AC_MSG_RESULT(yes)
408 AC_MSG_CHECKING([whether to support ldap])
410 AC_HELP_STRING([--enable-ldap],[Enable LDAP support])
411 AC_HELP_STRING([--disable-ldap],[Disable LDAP support]),
412 [ case "$enableval" in
415 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
416 AC_SUBST(CURL_DISABLE_LDAP, [1])
424 AC_MSG_CHECKING([whether to support ldaps])
426 AC_HELP_STRING([--enable-ldaps],[Enable LDAPS support])
427 AC_HELP_STRING([--disable-ldaps],[Disable LDAPS support]),
428 [ case "$enableval" in
431 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
432 AC_SUBST(CURL_DISABLE_LDAPS, [1])
434 *) if test "x$CURL_DISABLE_LDAP" = "x1" ; then
435 AC_MSG_RESULT(LDAP needs to be enabled to support LDAPS)
436 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
437 AC_SUBST(CURL_DISABLE_LDAPS, [1])
440 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
441 AC_SUBST(HAVE_LDAP_SSL, [1])
445 if test "x$CURL_DISABLE_LDAP" = "x1" ; then
447 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
448 AC_SUBST(CURL_DISABLE_LDAPS, [1])
451 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
452 AC_SUBST(HAVE_LDAP_SSL, [1])
456 AC_MSG_CHECKING([whether to support rtsp])
458 AC_HELP_STRING([--enable-rtsp],[Enable RTSP support])
459 AC_HELP_STRING([--disable-rtsp],[Disable RTSP support]),
460 [ case "$enableval" in
463 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
464 AC_SUBST(CURL_DISABLE_RTSP, [1])
466 *) if test x$CURL_DISABLE_HTTP = x1 ; then
467 AC_MSG_ERROR(HTTP support needs to be enabled in order to enable RTSP support!)
470 curl_rtsp_msg="enabled"
474 if test "x$CURL_DISABLE_HTTP" != "x1"; then
476 curl_rtsp_msg="enabled"
482 AC_MSG_CHECKING([whether to support proxies])
484 AC_HELP_STRING([--enable-proxy],[Enable proxy support])
485 AC_HELP_STRING([--disable-proxy],[Disable proxy support]),
486 [ case "$enableval" in
489 AC_DEFINE(CURL_DISABLE_PROXY, 1, [to disable proxies])
490 AC_SUBST(CURL_DISABLE_PROXY, [1])
492 *) AC_MSG_RESULT(yes)
498 AC_MSG_CHECKING([whether to support dict])
500 AC_HELP_STRING([--enable-dict],[Enable DICT support])
501 AC_HELP_STRING([--disable-dict],[Disable DICT support]),
502 [ case "$enableval" in
505 AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT])
506 AC_SUBST(CURL_DISABLE_DICT, [1])
508 *) AC_MSG_RESULT(yes)
513 AC_MSG_CHECKING([whether to support telnet])
514 AC_ARG_ENABLE(telnet,
515 AC_HELP_STRING([--enable-telnet],[Enable TELNET support])
516 AC_HELP_STRING([--disable-telnet],[Disable TELNET support]),
517 [ case "$enableval" in
520 AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
521 AC_SUBST(CURL_DISABLE_TELNET, [1])
523 *) AC_MSG_RESULT(yes)
528 AC_MSG_CHECKING([whether to support tftp])
530 AC_HELP_STRING([--enable-tftp],[Enable TFTP support])
531 AC_HELP_STRING([--disable-tftp],[Disable TFTP support]),
532 [ case "$enableval" in
535 AC_DEFINE(CURL_DISABLE_TFTP, 1, [to disable TFTP])
536 AC_SUBST(CURL_DISABLE_TFTP, [1])
538 *) AC_MSG_RESULT(yes)
544 AC_MSG_CHECKING([whether to support pop3])
546 AC_HELP_STRING([--enable-pop3],[Enable POP3 support])
547 AC_HELP_STRING([--disable-pop3],[Disable POP3 support]),
548 [ case "$enableval" in
551 AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3])
552 AC_SUBST(CURL_DISABLE_POP3, [1])
554 *) AC_MSG_RESULT(yes)
561 AC_MSG_CHECKING([whether to support imap])
563 AC_HELP_STRING([--enable-imap],[Enable IMAP support])
564 AC_HELP_STRING([--disable-imap],[Disable IMAP support]),
565 [ case "$enableval" in
568 AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP])
569 AC_SUBST(CURL_DISABLE_IMAP, [1])
571 *) AC_MSG_RESULT(yes)
578 AC_MSG_CHECKING([whether to support smtp])
580 AC_HELP_STRING([--enable-smtp],[Enable SMTP support])
581 AC_HELP_STRING([--disable-smtp],[Disable SMTP support]),
582 [ case "$enableval" in
585 AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP])
586 AC_SUBST(CURL_DISABLE_SMTP, [1])
588 *) AC_MSG_RESULT(yes)
594 AC_MSG_CHECKING([whether to support gopher])
595 AC_ARG_ENABLE(gopher,
596 AC_HELP_STRING([--enable-gopher],[Enable Gopher support])
597 AC_HELP_STRING([--disable-gopher],[Disable Gopher support]),
598 [ case "$enableval" in
601 AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable Gopher])
602 AC_SUBST(CURL_DISABLE_GOPHER, [1])
604 *) AC_MSG_RESULT(yes)
611 dnl **********************************************************************
612 dnl Check for built-in manual
613 dnl **********************************************************************
615 AC_MSG_CHECKING([whether to provide built-in manual])
616 AC_ARG_ENABLE(manual,
617 AC_HELP_STRING([--enable-manual],[Enable built-in manual])
618 AC_HELP_STRING([--disable-manual],[Disable built-in manual]),
619 [ case "$enableval" in
623 *) AC_MSG_RESULT(yes)
630 dnl The actual use of the USE_MANUAL variable is done much later in this
631 dnl script to allow other actions to disable it as well.
633 dnl ************************************************************
634 dnl disable C code generation support
636 AC_MSG_CHECKING([whether to enable generation of C code])
637 AC_ARG_ENABLE(libcurl_option,
638 AC_HELP_STRING([--enable-libcurl-option],[Enable --libcurl C code generation support])
639 AC_HELP_STRING([--disable-libcurl-option],[Disable --libcurl C code generation support]),
640 [ case "$enableval" in
643 AC_DEFINE(CURL_DISABLE_LIBCURL_OPTION, 1, [to disable --libcurl C code generation option])
644 curl_libcurl_msg="no"
646 *) AC_MSG_RESULT(yes)
652 dnl **********************************************************************
653 dnl Checks for libraries.
654 dnl **********************************************************************
656 AC_MSG_CHECKING([whether to use libgcc])
657 AC_ARG_ENABLE(libgcc,
658 AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
659 [ case "$enableval" in
672 dnl gethostbyname without lib or in the nsl lib?
673 AC_CHECK_FUNC(gethostbyname,
674 [HAVE_GETHOSTBYNAME="1"
676 [ AC_CHECK_LIB(nsl, gethostbyname,
677 [HAVE_GETHOSTBYNAME="1"
682 if test "$HAVE_GETHOSTBYNAME" != "1"
684 dnl gethostbyname in the socket lib?
685 AC_CHECK_LIB(socket, gethostbyname,
686 [HAVE_GETHOSTBYNAME="1"
687 LIBS="-lsocket $LIBS"
691 if test "$HAVE_GETHOSTBYNAME" != "1"
693 dnl gethostbyname in the watt lib?
694 AC_CHECK_LIB(watt, gethostbyname,
695 [HAVE_GETHOSTBYNAME="1"
696 CPPFLAGS="-I/dev/env/WATT_ROOT/inc"
697 LDFLAGS="-L/dev/env/WATT_ROOT/lib"
702 dnl At least one system has been identified to require BOTH nsl and socket
703 dnl libs at the same time to link properly.
704 if test "$HAVE_GETHOSTBYNAME" != "1"
706 AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs])
707 my_ac_save_LIBS=$LIBS
708 LIBS="-lnsl -lsocket $LIBS"
716 HAVE_GETHOSTBYNAME="1"
719 LIBS=$my_ac_save_LIBS
723 if test "$HAVE_GETHOSTBYNAME" != "1"
725 dnl This is for winsock systems
726 if test "$ac_cv_header_windows_h" = "yes"; then
727 if test "$ac_cv_header_winsock_h" = "yes"; then
730 winsock_LIB="-lwinsock"
733 winsock_LIB="-lwsock32"
737 if test "$ac_cv_header_winsock2_h" = "yes"; then
738 winsock_LIB="-lws2_32"
740 if test ! -z "$winsock_LIB"; then
741 my_ac_save_LIBS=$LIBS
742 LIBS="$winsock_LIB $LIBS"
743 AC_MSG_CHECKING([for gethostbyname in $winsock_LIB])
746 #ifdef HAVE_WINDOWS_H
747 #ifndef WIN32_LEAN_AND_MEAN
748 #define WIN32_LEAN_AND_MEAN
751 #ifdef HAVE_WINSOCK2_H
752 #include <winsock2.h>
754 #ifdef HAVE_WINSOCK_H
760 gethostbyname("www.dummysite.com");
764 HAVE_GETHOSTBYNAME="1"
768 LIBS=$my_ac_save_LIBS
774 if test "$HAVE_GETHOSTBYNAME" != "1"
776 dnl This is for Minix 3.1
777 AC_MSG_CHECKING([for gethostbyname for Minix 3])
780 /* Older Minix versions may need <net/gen/netdb.h> here instead */
783 gethostbyname("www.dummysite.com");
787 HAVE_GETHOSTBYNAME="1"
793 if test "$HAVE_GETHOSTBYNAME" != "1"
795 dnl This is for eCos with a stubbed DNS implementation
796 AC_MSG_CHECKING([for gethostbyname for eCos])
802 gethostbyname("www.dummysite.com");
806 HAVE_GETHOSTBYNAME="1"
812 if test "$HAVE_GETHOSTBYNAME" != "1"
814 dnl gethostbyname in the network lib - for Haiku OS
815 AC_CHECK_LIB(network, gethostbyname,
816 [HAVE_GETHOSTBYNAME="1"
817 LIBS="-lnetwork $LIBS"
821 if test "$HAVE_GETHOSTBYNAME" != "1"
823 dnl gethostbyname in the net lib - for BeOS
824 AC_CHECK_LIB(net, gethostbyname,
825 [HAVE_GETHOSTBYNAME="1"
831 if test "$HAVE_GETHOSTBYNAME" != "1"; then
832 AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
836 AC_CHECK_FUNC(strcasecmp, , [ AC_CHECK_LIB(resolve, strcasecmp) ])
838 if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
839 AC_CHECK_LIB(resolve, strcasecmp,
840 [LIBS="-lresolve $LIBS"],
844 ac_cv_func_strcasecmp="no"
846 CURL_CHECK_LIBS_CONNECT
848 CURL_NETWORK_LIBS=$LIBS
850 dnl **********************************************************************
851 dnl In case that function clock_gettime with monotonic timer is available,
852 dnl check for additional required libraries.
853 dnl **********************************************************************
854 CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
856 dnl **********************************************************************
857 dnl The preceding library checks are all potentially useful for test
858 dnl servers and libtest cases which require networking and clock_gettime
859 dnl support. Save the list of required libraries at this point for use
860 dnl while linking those test servers and programs.
861 dnl **********************************************************************
862 CURL_NETWORK_AND_TIME_LIBS=$LIBS
864 dnl **********************************************************************
865 dnl Check for the presence of ZLIB libraries and headers
866 dnl **********************************************************************
868 dnl Check for & handle argument to --with-zlib.
870 clean_CPPFLAGS=$CPPFLAGS
871 clean_LDFLAGS=$LDFLAGS
875 AC_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
876 AC_HELP_STRING([--without-zlib],[disable use of zlib]),
877 [OPT_ZLIB="$withval"])
879 if test "$OPT_ZLIB" = "no" ; then
880 AC_MSG_WARN([zlib disabled])
882 if test "$OPT_ZLIB" = "yes" ; then
886 if test -z "$OPT_ZLIB" ; then
887 dnl check for the lib first without setting any new path, since many
888 dnl people have it in the default path
890 AC_CHECK_LIB(z, inflateEnd,
891 dnl libz found, set the variable
894 dnl if no lib found, try /usr/local
895 [OPT_ZLIB="/usr/local"])
899 dnl Add a nonempty path to the compiler flags
900 if test -n "$OPT_ZLIB"; then
901 CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include"
902 LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff"
905 AC_CHECK_HEADER(zlib.h,
909 dnl if the lib wasn't found already, try again with the new paths
910 if test "$HAVE_LIBZ" != "1"; then
911 AC_CHECK_LIB(z, gzread,
913 dnl the lib was found!
917 [ CPPFLAGS=$clean_CPPFLAGS
918 LDFLAGS=$clean_LDFLAGS])
922 dnl zlib.h was not found, restore the flags
923 CPPFLAGS=$clean_CPPFLAGS
924 LDFLAGS=$clean_LDFLAGS]
927 if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1"
929 AC_MSG_WARN([configure found only the libz lib, not the header file!])
931 CPPFLAGS=$clean_CPPFLAGS
932 LDFLAGS=$clean_LDFLAGS
934 elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1"
936 AC_MSG_WARN([configure found only the libz header file, not the lib!])
937 CPPFLAGS=$clean_CPPFLAGS
938 LDFLAGS=$clean_LDFLAGS
940 elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1"
942 dnl both header and lib were found!
944 AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file])
945 AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available])
948 LIBS="-lz $clean_LIBS"
950 dnl replace 'HAVE_LIBZ' in the automake makefile.ams
952 AC_MSG_NOTICE([found both libz and libz.h header])
953 curl_zlib_msg="enabled"
957 dnl set variable for use in automakefile(s)
958 AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1)
961 dnl **********************************************************************
963 dnl **********************************************************************
966 AC_ARG_WITH(ldap-lib,
967 AC_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]),
968 [LDAPLIBNAME="$withval"])
971 AC_ARG_WITH(lber-lib,
972 AC_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]),
973 [LBERLIBNAME="$withval"])
975 if test x$CURL_DISABLE_LDAP != x1 ; then
977 CURL_CHECK_HEADER_LBER
978 CURL_CHECK_HEADER_LDAP
979 CURL_CHECK_HEADER_LDAPSSL
980 CURL_CHECK_HEADER_LDAP_SSL
982 if test -z "$LDAPLIBNAME" ; then
983 if test "$ac_cv_native_windows" = "yes"; then
984 dnl Windows uses a single and unique LDAP library name
985 LDAPLIBNAME="wldap32"
990 if test "$LDAPLIBNAME" ; then
991 AC_CHECK_LIB("$LDAPLIBNAME", ldap_init,, [
992 AC_MSG_WARN(["$LDAPLIBNAME" is not an LDAP library: LDAP disabled])
993 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
994 AC_SUBST(CURL_DISABLE_LDAP, [1])
995 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
996 AC_SUBST(CURL_DISABLE_LDAPS, [1])])
998 dnl Try to find the right ldap libraries for this system
1000 case X-"$curl_cv_ldap_LIBS" in
1002 AC_MSG_WARN([Cannot find libraries for LDAP support: LDAP disabled])
1003 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1004 AC_SUBST(CURL_DISABLE_LDAP, [1])
1005 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1006 AC_SUBST(CURL_DISABLE_LDAPS, [1])
1012 if test x$CURL_DISABLE_LDAP != x1 ; then
1014 if test "$LBERLIBNAME" ; then
1015 dnl If name is "no" then don't define this library at all
1016 dnl (it's only needed if libldap.so's dependencies are broken).
1017 if test "$LBERLIBNAME" != "no" ; then
1018 AC_CHECK_LIB("$LBERLIBNAME", ber_free,, [
1019 AC_MSG_WARN(["$LBERLIBNAME" is not an LBER library: LDAP disabled])
1020 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1021 AC_SUBST(CURL_DISABLE_LDAP, [1])
1022 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1023 AC_SUBST(CURL_DISABLE_LDAPS, [1])])
1028 if test x$CURL_DISABLE_LDAP != x1 ; then
1029 AC_CHECK_FUNCS([ldap_url_parse ldap_init_fd])
1031 if test "$LDAPLIBNAME" = "wldap32"; then
1032 curl_ldap_msg="enabled (winldap)"
1033 AC_DEFINE(CURL_LDAP_WIN, 1, [Use Windows LDAP implementation])
1035 curl_ldap_msg="enabled (OpenLDAP)"
1036 if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then
1037 AC_DEFINE(USE_OPENLDAP, 1, [Use OpenLDAP-specific code])
1038 AC_SUBST(USE_OPENLDAP, [1])
1043 if test x$CURL_DISABLE_LDAPS != x1 ; then
1044 curl_ldaps_msg="enabled"
1047 dnl **********************************************************************
1049 dnl **********************************************************************
1051 AC_MSG_CHECKING([whether to enable ipv6])
1053 AC_HELP_STRING([--enable-ipv6],[Enable ipv6 (with ipv4) support])
1054 AC_HELP_STRING([--disable-ipv6],[Disable ipv6 support]),
1055 [ case "$enableval" in
1060 *) AC_MSG_RESULT(yes)
1065 AC_TRY_RUN([ /* is AF_INET6 available? */
1066 #include <sys/types.h>
1067 #include <sys/socket.h>
1068 #include <stdlib.h> /* for exit() */
1071 if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1085 if test "$ipv6" = "yes"; then
1086 curl_ipv6_msg="enabled"
1089 # Check if struct sockaddr_in6 have sin6_scope_id member
1090 if test "$ipv6" = yes; then
1091 AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member])
1093 #include <sys/types.h>
1094 #include <netinet/in.h>] ,
1095 struct sockaddr_in6 s; s.sin6_scope_id = 0; , have_sin6_scope_id=yes)
1096 if test "$have_sin6_scope_id" = yes; then
1097 AC_MSG_RESULT([yes])
1098 AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member])
1104 dnl **********************************************************************
1105 dnl Check if the operating system allows programs to write to their own argv[]
1106 dnl **********************************************************************
1108 AC_MSG_CHECKING([if argv can be written to])
1111 int main(int argc, char ** argv) {
1113 return (argv[0][0] == ' ')?0:1;
1117 curl_cv_writable_argv=yes
1119 curl_cv_writable_argv=no
1121 curl_cv_writable_argv=cross
1123 case $curl_cv_writable_argv in
1125 AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv])
1133 AC_MSG_WARN([the previous check could not be made default was used])
1137 dnl **********************************************************************
1138 dnl Check for FBopenssl(SPNEGO) libraries
1139 dnl **********************************************************************
1142 AC_HELP_STRING([--with-spnego=DIR],
1143 [Specify location of SPNEGO library fbopenssl]), [
1144 SPNEGO_ROOT="$withval"
1145 if test x"$SPNEGO_ROOT" != xno; then
1150 AC_MSG_CHECKING([if SPNEGO support is requested])
1151 if test x"$want_spnego" = xyes; then
1153 if test X"$SPNEGO_ROOT" = Xyes; then
1154 AC_MSG_ERROR([FBOpenSSL libs and/or directories were not found where specified!])
1157 if test -z "$SPNEGO_LIB_DIR"; then
1158 LDFLAGS="$LDFLAGS -L$SPNEGO_ROOT -lfbopenssl"
1160 LDFLAGS="$LDFLAGS $SPNEGO_LIB_DIR"
1164 AC_DEFINE(HAVE_SPNEGO, 1,
1165 [Define this if you have the SPNEGO library fbopenssl])
1166 curl_spnego_msg="enabled"
1172 dnl **********************************************************************
1173 dnl Check for GSS-API libraries
1174 dnl **********************************************************************
1176 dnl check for gss stuff in the /usr as default
1179 AC_ARG_WITH(gssapi-includes,
1180 AC_HELP_STRING([--with-gssapi-includes=DIR],
1181 [Specify location of GSSAPI header]),
1182 [ GSSAPI_INCS="-I$withval"
1186 AC_ARG_WITH(gssapi-libs,
1187 AC_HELP_STRING([--with-gssapi-libs=DIR],
1188 [Specify location of GSSAPI libs]),
1189 [ GSSAPI_LIB_DIR="-L$withval"
1194 AC_HELP_STRING([--with-gssapi=DIR],
1195 [Where to look for GSSAPI]), [
1196 GSSAPI_ROOT="$withval"
1197 if test x"$GSSAPI_ROOT" != xno; then
1199 if test x"$GSSAPI_ROOT" = xyes; then
1200 dnl if yes, then use default root
1206 save_CPPFLAGS="$CPPFLAGS"
1207 AC_MSG_CHECKING([if GSSAPI support is requested])
1208 if test x"$want_gss" = xyes; then
1211 if test -z "$GSSAPI_INCS"; then
1212 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1213 GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
1214 elif test "$GSSAPI_ROOT" != "yes"; then
1215 GSSAPI_INCS="-I$GSSAPI_ROOT/include"
1219 CPPFLAGS="$CPPFLAGS $GSSAPI_INCS"
1221 AC_CHECK_HEADER(gss.h,
1223 dnl found in the given dirs
1224 AC_DEFINE(HAVE_GSSGNU, 1, [if you have the GNU gssapi libraries])
1228 dnl not found, check Heimdal or MIT
1229 AC_CHECK_HEADERS([gssapi/gssapi.h], [], [not_mit=1])
1231 [gssapi/gssapi_generic.h gssapi/gssapi_krb5.h],
1236 #ifdef HAVE_GSSAPI_GSSAPI_H
1237 #include <gssapi/gssapi.h>
1240 if test "x$not_mit" = "x1"; then
1241 dnl MIT not found, check for Heimdal
1242 AC_CHECK_HEADER(gssapi.h,
1245 AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have the Heimdal gssapi libraries])
1248 dnl no header found, disabling GSS
1250 AC_MSG_WARN(disabling GSSAPI since no header files was found)
1255 AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
1256 dnl check if we have a really old MIT kerberos (<= 1.2)
1257 AC_MSG_CHECKING([if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE])
1260 #include <gssapi/gssapi.h>
1261 #include <gssapi/gssapi_generic.h>
1262 #include <gssapi/gssapi_krb5.h>
1267 GSS_C_NT_HOSTBASED_SERVICE,
1271 AC_MSG_RESULT([yes])
1274 AC_DEFINE(HAVE_OLD_GSSMIT, 1,
1275 [if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE])
1283 if test x"$want_gss" = xyes; then
1284 AC_DEFINE(HAVE_GSSAPI, 1, [if you have the gssapi libraries])
1286 curl_gss_msg="enabled (MIT/Heimdal)"
1288 if test -n "$gnu_gss"; then
1289 curl_gss_msg="enabled (GNU GSS)"
1290 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1292 elif test -z "$GSSAPI_LIB_DIR"; then
1295 LIBS="-lgssapi_krb5 -lresolv $LIBS"
1298 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1299 dnl krb5-config doesn't have --libs-only-L or similar, put everything
1301 gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
1302 LIBS="$gss_libs $LIBS"
1303 elif test "$GSSAPI_ROOT" != "yes"; then
1304 LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
1305 LIBS="-lgssapi $LIBS"
1307 LIBS="-lgssapi $LIBS"
1312 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1313 LIBS="-lgssapi $LIBS"
1316 CPPFLAGS="$save_CPPFLAGS"
1319 dnl -------------------------------------------------
1320 dnl check winssl option before other SSL libraries
1321 dnl -------------------------------------------------
1324 AC_ARG_WITH(winssl,dnl
1325 AC_HELP_STRING([--with-winssl],[enable Windows native SSL/TLS])
1326 AC_HELP_STRING([--without-winssl], [disable Windows native SSL/TLS]),
1327 OPT_WINSSL=$withval)
1329 AC_MSG_CHECKING([whether to enable Windows native SSL/TLS (Windows native builds only)])
1330 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1331 if test "x$OPT_WINSSL" != "xno" &&
1332 test "x$ac_cv_native_windows" = "xyes"; then
1334 AC_DEFINE(USE_SCHANNEL, 1, [to enable Windows native SSL/TLS support])
1335 AC_SUBST(USE_SCHANNEL, [1])
1336 curl_ssl_msg="enabled (Windows-native)"
1338 # --with-winssl implies --enable-sspi
1339 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
1340 AC_SUBST(USE_WINDOWS_SSPI, [1])
1341 curl_sspi_msg="enabled"
1350 AC_ARG_WITH(darwinssl,dnl
1351 AC_HELP_STRING([--with-darwinssl],[enable iOS/Mac OS X native SSL/TLS])
1352 AC_HELP_STRING([--without-darwinssl], [disable iOS/Mac OS X native SSL/TLS]),
1353 OPT_DARWINSSL=$withval)
1355 AC_MSG_CHECKING([whether to enable iOS/Mac OS X native SSL/TLS])
1356 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1357 if test "x$OPT_DARWINSSL" != "xno" &&
1358 test -d "/System/Library/Frameworks/Security.framework"; then
1360 AC_DEFINE(USE_DARWINSSL, 1, [to enable iOS/Mac OS X native SSL/TLS support])
1361 AC_SUBST(USE_DARWINSSL, [1])
1362 curl_ssl_msg="enabled (iOS/Mac OS X-native)"
1364 LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Security"
1372 dnl **********************************************************************
1373 dnl Check for the presence of SSL libraries and headers
1374 dnl **********************************************************************
1376 dnl Default to compiler & linker defaults for SSL files & libraries.
1378 dnl Default to no CA bundle
1381 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])
1382 AC_HELP_STRING([--without-ssl], [disable OpenSSL]),
1385 if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
1386 dnl backup the pre-ssl variables
1387 CLEANLDFLAGS="$LDFLAGS"
1388 CLEANCPPFLAGS="$CPPFLAGS"
1393 dnl --with-ssl (without path) used
1394 if test x$cross_compiling != xyes; then
1395 dnl only do pkg-config magic when not cross-compiling
1398 PREFIX_OPENSSL=/usr/local/ssl
1399 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1402 dnl no --with-ssl option given, just check default places
1403 if test x$cross_compiling != xyes; then
1404 dnl only do pkg-config magic when not cross-compiling
1410 dnl check the given --with-ssl spot
1412 PREFIX_OPENSSL=$OPT_SSL
1414 dnl Try pkg-config even when cross-compiling. Since we
1415 dnl specify PKG_CONFIG_LIBDIR we're only looking where
1416 dnl the user told us to look
1417 OPENSSL_PCDIR="$OPT_SSL/lib/pkgconfig"
1418 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$OPENSSL_PCDIR"])
1419 if test -f "$OPENSSL_PCDIR/openssl.pc"; then
1423 dnl in case pkg-config comes up empty, use what we got
1425 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1426 if test "$PREFIX_OPENSSL" != "/usr" ; then
1427 SSL_LDFLAGS="-L$LIB_OPENSSL"
1428 SSL_CPPFLAGS="-I$PREFIX_OPENSSL/include"
1430 SSL_CPPFLAGS="$SSL_CPPFLAGS -I$PREFIX_OPENSSL/include/openssl"
1434 if test "$PKGTEST" = "yes"; then
1436 CURL_CHECK_PKGCONFIG(openssl, [$OPENSSL_PCDIR])
1438 if test "$PKGCONFIG" != "no" ; then
1439 SSL_LIBS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1440 $PKGCONFIG --libs-only-l openssl 2>/dev/null`
1442 SSL_LDFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1443 $PKGCONFIG --libs-only-L openssl 2>/dev/null`
1445 SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1446 $PKGCONFIG --cflags-only-I openssl 2>/dev/null`
1448 AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"])
1449 AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"])
1450 AC_MSG_NOTICE([pkg-config: SSL_CPPFLAGS: "$SSL_CPPFLAGS"])
1452 LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/-L//g'`
1454 dnl use the values pkg-config reported. This is here
1455 dnl instead of below with CPPFLAGS and LDFLAGS because we only
1456 dnl learn about this via pkg-config. If we only have
1457 dnl the argument to --with-ssl we don't know what
1458 dnl additional libs may be necessary. Hope that we
1460 LIBS="$SSL_LIBS $LIBS"
1464 dnl finally, set flags to use SSL
1465 CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
1466 LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
1468 dnl This is for Msys/Mingw
1470 *-*-msys* | *-*-mingw*)
1471 AC_MSG_CHECKING([for gdi32])
1472 my_ac_save_LIBS=$LIBS
1473 LIBS="-lgdi32 $LIBS"
1474 AC_TRY_LINK([#include <windef.h>
1475 #include <wingdi.h>],
1478 AC_MSG_RESULT([yes])],
1479 [ dnl failed, restore LIBS
1480 LIBS=$my_ac_save_LIBS
1486 AC_CHECK_LIB(crypto, CRYPTO_lock,[
1488 LIBS="-lcrypto $LIBS"
1490 LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL"
1491 CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include"
1492 AC_CHECK_LIB(crypto, CRYPTO_add_lock,[
1494 LIBS="-lcrypto $LIBS"], [
1495 LDFLAGS="$CLEANLDFLAGS"
1496 CPPFLAGS="$CLEANCPPFLAGS"
1502 if test X"$HAVECRYPTO" = X"yes"; then
1503 dnl This is only reasonable to do if crypto actually is there: check for
1504 dnl SSL libs NOTE: it is important to do this AFTER the crypto lib
1506 AC_CHECK_LIB(ssl, SSL_connect)
1508 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1509 dnl we didn't find the SSL lib, try the RSAglue/rsaref stuff
1510 AC_MSG_CHECKING(for ssl with RSAglue/rsaref libs in use);
1512 LIBS="-lRSAglue -lrsaref $LIBS"
1513 AC_CHECK_LIB(ssl, SSL_connect)
1514 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1515 dnl still no SSL_connect
1524 dnl Have the libraries--check for SSLeay/OpenSSL headers
1525 AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
1526 openssl/pem.h openssl/ssl.h openssl/err.h,
1527 curl_ssl_msg="enabled (OpenSSL)"
1529 AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]))
1531 if test $ac_cv_header_openssl_x509_h = no; then
1532 dnl we don't use the "action" part of the AC_CHECK_HEADERS macro
1533 dnl since 'err.h' might in fact find a krb4 header with the same
1535 AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h)
1537 if test $ac_cv_header_x509_h = yes &&
1538 test $ac_cv_header_crypto_h = yes &&
1539 test $ac_cv_header_ssl_h = yes; then
1541 curl_ssl_msg="enabled (OpenSSL)"
1547 if test X"$OPENSSL_ENABLED" = X"1"; then
1548 AC_DEFINE(USE_SSLEAY, 1, [if SSL is enabled])
1550 dnl is there a pkcs12.h header present?
1551 AC_CHECK_HEADERS(openssl/pkcs12.h)
1555 dnl USE_SSLEAY is the historical name for what configure calls
1556 dnl OPENSSL_ENABLED; the names should really be unified
1557 USE_SSLEAY="$OPENSSL_ENABLED"
1558 AC_SUBST(USE_SSLEAY)
1560 if test X"$OPT_SSL" != Xoff &&
1561 test "$OPENSSL_ENABLED" != "1"; then
1562 AC_MSG_ERROR([OpenSSL libs and/or directories were not found where specified!])
1566 if test X"$OPENSSL_ENABLED" = X"1"; then
1567 dnl If the ENGINE library seems to be around, check for the OpenSSL engine
1568 dnl stuff, it is kind of "separated" from the main SSL check
1569 AC_CHECK_FUNC(ENGINE_init,
1571 AC_CHECK_HEADERS(openssl/engine.h)
1572 AC_CHECK_FUNCS( ENGINE_load_builtin_engines )
1575 dnl these can only exist if openssl exists
1576 dnl yassl doesn't have SSL_get_shutdown
1578 AC_CHECK_FUNCS( RAND_status \
1582 CRYPTO_cleanup_all_ex_data \
1584 SSLv2_client_method )
1586 dnl Make an attempt to detect if this is actually yassl's headers and
1587 dnl OpenSSL emulation layer. We still leave everything else believing
1588 dnl and acting like OpenSSL.
1590 AC_MSG_CHECKING([for yaSSL using OpenSSL compatibility mode])
1593 #include <openssl/ssl.h>
1595 #if defined(YASSL_VERSION) && defined(OPENSSL_VERSION_NUMBER)
1596 int dummy = SSL_ERROR_NONE;
1598 Not the yaSSL OpenSSL compatibility header.
1602 AC_MSG_RESULT([yes])
1603 AC_DEFINE_UNQUOTED(USE_YASSLEMUL, 1,
1604 [Define to 1 if using yaSSL in OpenSSL compatibility mode.])
1605 curl_ssl_msg="enabled (OpenSSL emulation by yaSSL)"
1611 if test "$OPENSSL_ENABLED" = "1"; then
1612 if test -n "$LIB_OPENSSL"; then
1613 dnl when the ssl shared libs were found in a path that the run-time
1614 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
1615 dnl to prevent further configure tests to fail due to this
1616 if test "x$cross_compiling" != "xyes"; then
1617 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_OPENSSL"
1618 export LD_LIBRARY_PATH
1619 AC_MSG_NOTICE([Added $LIB_OPENSSL to LD_LIBRARY_PATH])
1622 CURL_CHECK_OPENSSL_API
1627 dnl **********************************************************************
1628 dnl Check for the random seed preferences
1629 dnl **********************************************************************
1631 if test X"$OPENSSL_ENABLED" = X"1"; then
1632 AC_ARG_WITH(egd-socket,
1633 AC_HELP_STRING([--with-egd-socket=FILE],
1634 [Entropy Gathering Daemon socket pathname]),
1635 [ EGD_SOCKET="$withval" ]
1637 if test -n "$EGD_SOCKET" ; then
1638 AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET",
1639 [your Entropy Gathering Daemon socket pathname] )
1642 dnl Check for user-specified random device
1644 AC_HELP_STRING([--with-random=FILE],
1645 [read randomness from FILE (default=/dev/urandom)]),
1646 [ RANDOM_FILE="$withval" ],
1648 if test x$cross_compiling != xyes; then
1649 dnl Check for random device
1650 AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
1652 AC_MSG_WARN([skipped the /dev/urandom detection when cross-compiling])
1656 if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
1657 AC_SUBST(RANDOM_FILE)
1658 AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
1659 [a suitable file to read random data from])
1664 dnl We require OpenSSL with SRP support.
1666 if test "$OPENSSL_ENABLED" = "1"; then
1667 AC_CHECK_LIB(crypto, SRP_Calc_client_key,
1669 AC_DEFINE(HAVE_SSLEAY_SRP, 1, [if you have the function SRP_Calc_client_key])
1670 AC_SUBST(HAVE_SSLEAY_SRP, [1])
1674 dnl ----------------------------------------------------
1675 dnl check for GnuTLS
1676 dnl ----------------------------------------------------
1678 dnl Default to compiler & linker defaults for GnuTLS files & libraries.
1681 AC_ARG_WITH(gnutls,dnl
1682 AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root])
1683 AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]),
1684 OPT_GNUTLS=$withval)
1686 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1688 if test X"$OPT_GNUTLS" != Xno; then
1696 if test "x$OPT_GNUTLS" = "xyes"; then
1697 dnl this is with no partiular path given
1698 CURL_CHECK_PKGCONFIG(gnutls)
1700 if test "$PKGCONFIG" != "no" ; then
1701 addlib=`$PKGCONFIG --libs-only-l gnutls`
1702 addld=`$PKGCONFIG --libs-only-L gnutls`
1703 addcflags=`$PKGCONFIG --cflags-only-I gnutls`
1704 version=`$PKGCONFIG --modversion gnutls`
1705 gtlslib=`echo $addld | $SED -e 's/-L//'`
1707 dnl without pkg-config, we try libgnutls-config as that was how it
1709 check=`libgnutls-config --version 2>/dev/null`
1710 if test -n "$check"; then
1711 addlib=`libgnutls-config --libs`
1712 addcflags=`libgnutls-config --cflags`
1713 version=`libgnutls-config --version`
1714 gtlslib=`libgnutls-config --prefix`/lib$libsuff
1718 dnl this is with a given path, first check if there's a libgnutls-config
1719 dnl there and if not, make an educated guess
1720 cfg=$OPT_GNUTLS/bin/libgnutls-config
1721 check=`$cfg --version 2>/dev/null`
1722 if test -n "$check"; then
1723 addlib=`$cfg --libs`
1724 addcflags=`$cfg --cflags`
1725 version=`$cfg --version`
1726 gtlslib=`$cfg --prefix`/lib$libsuff
1728 dnl without pkg-config and libgnutls-config, we guess a lot!
1730 addld=-L$OPT_GNUTLS/lib$libsuff
1731 addcflags=-I$OPT_GNUTLS/include
1732 version="" # we just don't know
1733 gtlslib=$OPT_GNUTLS/lib$libsuff
1737 if test -z "$version"; then
1738 dnl lots of efforts, still no go
1742 if test -n "$addlib"; then
1745 CLEANCPPFLAGS="$CPPFLAGS"
1746 CLEANLDFLAGS="$LDFLAGS"
1748 LIBS="$addlib $LIBS"
1749 LDFLAGS="$LDFLAGS $addld"
1750 if test "$addcflags" != "-I/usr/include"; then
1751 CPPFLAGS="$CPPFLAGS $addcflags"
1754 AC_CHECK_LIB(gnutls, gnutls_check_version,
1756 AC_DEFINE(USE_GNUTLS, 1, [if GnuTLS is enabled])
1757 AC_SUBST(USE_GNUTLS, [1])
1760 curl_ssl_msg="enabled (GnuTLS)"
1764 CPPFLAGS="$CLEANCPPFLAGS"
1767 if test "x$USE_GNUTLS" = "xyes"; then
1768 AC_MSG_NOTICE([detected GnuTLS version $version])
1770 if test -n "$gtlslib"; then
1771 dnl when shared libs were found in a path that the run-time
1772 dnl linker doesn't search through, we need to add it to
1773 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1775 if test "x$cross_compiling" != "xyes"; then
1776 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlslib"
1777 export LD_LIBRARY_PATH
1778 AC_MSG_NOTICE([Added $gtlslib to LD_LIBRARY_PATH])
1785 fi dnl GNUTLS not disabled
1790 dnl Check which crypto backend GnuTLS uses
1793 if test "$GNUTLS_ENABLED" = "1"; then
1795 # First check if we can detect either crypto library via transitive linking
1796 AC_CHECK_LIB(gnutls, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1797 if test "$USE_GNUTLS_NETTLE" = ""; then
1798 AC_CHECK_LIB(gnutls, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1800 # If not, try linking directly to both of them to see if they are available
1801 if test "$USE_GNUTLS_NETTLE" = ""; then
1802 AC_CHECK_LIB(nettle, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1804 if test "$USE_GNUTLS_NETTLE" = ""; then
1805 AC_CHECK_LIB(gcrypt, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1807 if test "$USE_GNUTLS_NETTLE" = ""; then
1808 AC_MSG_ERROR([GnuTLS found, but neither gcrypt nor nettle found])
1810 if test "$USE_GNUTLS_NETTLE" = "1"; then
1811 AC_DEFINE(USE_GNUTLS_NETTLE, 1, [if GnuTLS uses nettle as crypto backend])
1812 AC_SUBST(USE_GNUTLS_NETTLE, [1])
1813 LIBS="-lnettle $LIBS"
1815 LIBS="-lgcrypt $LIBS"
1820 dnl We require GnuTLS with SRP support.
1822 if test "$GNUTLS_ENABLED" = "1"; then
1823 AC_CHECK_LIB(gnutls, gnutls_srp_verifier,
1825 AC_DEFINE(HAVE_GNUTLS_SRP, 1, [if you have the function gnutls_srp_verifier])
1826 AC_SUBST(HAVE_GNUTLS_SRP, [1])
1830 dnl ----------------------------------------------------
1831 dnl check for PolarSSL
1832 dnl ----------------------------------------------------
1834 dnl Default to compiler & linker defaults for PolarSSL files & libraries.
1839 AC_ARG_WITH(polarssl,dnl
1840 AC_HELP_STRING([--with-polarssl=PATH],[where to look for PolarSSL, PATH points to the installation root])
1841 AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]),
1842 OPT_POLARSSL=$withval)
1844 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1846 if test X"$OPT_POLARSSL" != Xno; then
1848 if test "$OPT_POLARSSL" = "yes"; then
1852 if test -z "$OPT_POLARSSL" ; then
1853 dnl check for lib first without setting any new path
1855 AC_CHECK_LIB(polarssl, havege_init,
1856 dnl libpolarssl found, set the variable
1858 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1859 AC_SUBST(USE_POLARSSL, [1])
1862 curl_ssl_msg="enabled (PolarSSL)"
1871 if test "x$USE_POLARSSL" != "xyes"; then
1872 dnl add the path and test again
1873 addld=-L$OPT_POLARSSL/lib$libsuff
1874 addcflags=-I$OPT_POLARSSL/include
1875 polarssllib=$OPT_POLARSSL/lib$libsuff
1877 LDFLAGS="$LDFLAGS $addld"
1878 if test "$addcflags" != "-I/usr/include"; then
1879 CPPFLAGS="$CPPFLAGS $addcflags"
1882 AC_CHECK_LIB(polarssl, ssl_init,
1884 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1885 AC_SUBST(USE_POLARSSL, [1])
1888 curl_ssl_msg="enabled (PolarSSL)"
1896 if test "x$USE_POLARSSL" = "xyes"; then
1897 AC_MSG_NOTICE([detected PolarSSL])
1899 LIBS="-lpolarssl $LIBS"
1901 if test -n "$polarssllib"; then
1902 dnl when shared libs were found in a path that the run-time
1903 dnl linker doesn't search through, we need to add it to
1904 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1906 if test "x$cross_compiling" != "xyes"; then
1907 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$polarssllib"
1908 export LD_LIBRARY_PATH
1909 AC_MSG_NOTICE([Added $polarssllib to LD_LIBRARY_PATH])
1914 fi dnl PolarSSL not disabled
1918 dnl ----------------------------------------------------
1919 dnl check for CyaSSL
1920 dnl ----------------------------------------------------
1922 dnl Default to compiler & linker defaults for CyaSSL files & libraries.
1927 AC_ARG_WITH(cyassl,dnl
1928 AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to the installation root (default: system lib default)])
1929 AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
1930 OPT_CYASSL=$withval)
1932 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1934 if test X"$OPT_CYASSL" != Xno; then
1936 if test "$OPT_CYASSL" = "yes"; then
1940 if test -z "$OPT_CYASSL" ; then
1941 dnl check for lib in system default first
1943 AC_CHECK_LIB(cyassl, CyaSSL_Init,
1944 dnl libcyassl found, set the variable
1946 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
1947 AC_SUBST(USE_CYASSL, [1])
1950 curl_ssl_msg="enabled (CyaSSL)"
1959 if test "x$USE_CYASSL" != "xyes"; then
1960 dnl add the path and test again
1961 addld=-L$OPT_CYASSL/lib$libsuff
1962 addcflags=-I$OPT_CYASSL/include
1963 cyassllib=$OPT_CYASSL/lib$libsuff
1965 LDFLAGS="$LDFLAGS $addld"
1966 if test "$addcflags" != "-I/usr/include"; then
1967 CPPFLAGS="$CPPFLAGS $addcflags"
1970 AC_CHECK_LIB(cyassl, CyaSSL_Init,
1972 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
1973 AC_SUBST(USE_CYASSL, [1])
1976 curl_ssl_msg="enabled (CyaSSL)"
1984 if test "x$USE_CYASSL" = "xyes"; then
1985 AC_MSG_NOTICE([detected CyaSSL])
1987 dnl cyassl/ctaocrypt/types.h needs SIZEOF_LONG_LONG defined!
1988 AC_CHECK_SIZEOF(long long)
1990 LIBS="-lcyassl -lm $LIBS"
1992 if test -n "$cyassllib"; then
1993 dnl when shared libs were found in a path that the run-time
1994 dnl linker doesn't search through, we need to add it to
1995 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1997 if test "x$cross_compiling" != "xyes"; then
1998 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$cyassllib"
1999 export LD_LIBRARY_PATH
2000 AC_MSG_NOTICE([Added $cyassllib to LD_LIBRARY_PATH])
2006 fi dnl CyaSSL not disabled
2010 dnl ----------------------------------------------------
2011 dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
2012 dnl ----------------------------------------------------
2014 dnl Default to compiler & linker defaults for NSS files & libraries.
2018 AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root])
2019 AC_HELP_STRING([--without-nss], [disable NSS detection]),
2022 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2024 if test X"$OPT_NSS" != Xno; then
2032 if test "x$OPT_NSS" = "xyes"; then
2034 CURL_CHECK_PKGCONFIG(nss)
2036 if test "$PKGCONFIG" != "no" ; then
2037 addlib=`$PKGCONFIG --libs nss`
2038 addcflags=`$PKGCONFIG --cflags nss`
2039 version=`$PKGCONFIG --modversion nss`
2040 nssprefix=`$PKGCONFIG --variable=prefix nss`
2042 dnl Without pkg-config, we check for nss-config
2044 check=`nss-config --version 2>/dev/null`
2045 if test -n "$check"; then
2046 addlib=`nss-config --libs`
2047 addcflags=`nss-config --cflags`
2048 version=`nss-config --version`
2049 nssprefix=`nss-config --prefix`
2057 # Without pkg-config, we'll kludge in some defaults
2058 addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
2059 addcflags="-I$OPT_NSS/include"
2064 if test -n "$addlib"; then
2067 CLEANCPPFLAGS="$CPPFLAGS"
2069 LIBS="$addlib $LIBS"
2070 if test "$addcflags" != "-I/usr/include"; then
2071 CPPFLAGS="$CPPFLAGS $addcflags"
2074 dnl The function SSL_VersionRangeSet() is needed to enable TLS > 1.0
2075 AC_CHECK_LIB(nss3, SSL_VersionRangeSet,
2077 AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
2078 AC_SUBST(USE_NSS, [1])
2081 curl_ssl_msg="enabled (NSS)"
2085 CPPFLAGS="$CLEANCPPFLAGS"
2088 if test "x$USE_NSS" = "xyes"; then
2089 AC_MSG_NOTICE([detected NSS version $version])
2091 dnl when shared libs were found in a path that the run-time
2092 dnl linker doesn't search through, we need to add it to
2093 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2095 if test "x$cross_compiling" != "xyes"; then
2096 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
2097 export LD_LIBRARY_PATH
2098 AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
2104 fi dnl NSS not disabled
2106 fi dnl curl_ssl_msg = init_ssl_msg
2110 AC_ARG_WITH(axtls,dnl
2111 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.])
2112 AC_HELP_STRING([--without-axtls], [disable axTLS]),
2115 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2116 if test X"$OPT_AXTLS" != Xno; then
2117 dnl backup the pre-axtls variables
2118 CLEANLDFLAGS="$LDFLAGS"
2119 CLEANCPPFLAGS="$CPPFLAGS"
2122 case "$OPT_AXTLS" in
2124 dnl --with-axtls (without path) used
2125 PREFIX_AXTLS=/usr/local
2126 LIB_AXTLS="$PREFIX_AXTLS/lib"
2127 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2128 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2131 dnl no --with-axtls option given, just check default places
2135 dnl check the given --with-axtls spot
2136 PREFIX_AXTLS=$OPT_AXTLS
2137 LIB_AXTLS="$PREFIX_AXTLS/lib"
2138 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2139 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2143 AC_CHECK_LIB(axtls, ssl_version,[
2144 LIBS="-laxtls $LIBS"
2145 AC_DEFINE(USE_AXTLS, 1, [if axTLS is enabled])
2146 AC_SUBST(USE_AXTLS, [1])
2149 curl_ssl_msg="enabled (axTLS)"
2152 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
2153 export LD_LIBRARY_PATH
2154 AC_MSG_NOTICE([Added $LIB_AXTLS to LD_LIBRARY_PATH])
2156 LDFLAGS="$CLEANLDFLAGS"
2157 CPPFLAGS="$CLEANCPPFLAGS"
2163 if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$DARWINSSL_ENABLED" = "x"; then
2164 AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
2165 AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls, --with-winssl, or --with-darwinssl to address this.])
2167 # SSL is enabled, genericly
2168 AC_SUBST(SSL_ENABLED)
2172 dnl **********************************************************************
2173 dnl Check for the CA bundle
2174 dnl **********************************************************************
2176 CURL_CHECK_CA_BUNDLE
2178 dnl **********************************************************************
2179 dnl Check for libmetalink
2180 dnl **********************************************************************
2184 AC_ARG_WITH(libmetalink,dnl
2185 AC_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root])
2186 AC_HELP_STRING([--without-libmetalink], [disable libmetalink detection]),
2187 OPT_LIBMETALINK=$withval)
2189 if test X"$OPT_LIBMETALINK" != Xno; then
2198 if test "x$OPT_LIBMETALINK" = "xyes"; then
2199 dnl this is with no partiular path given
2201 CURL_CHECK_PKGCONFIG(libmetalink)
2203 dnl When particular path is given, set PKG_CONFIG_LIBDIR using the path.
2204 LIBMETALINK_PCDIR="$OPT_LIBMETALINK/lib/pkgconfig"
2205 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$LIBMETALINK_PCDIR"])
2206 if test -f "$LIBMETALINK_PCDIR/libmetalink.pc"; then
2209 if test "$PKGTEST" = "yes"; then
2210 CURL_CHECK_PKGCONFIG(libmetalink, [$LIBMETALINK_PCDIR])
2213 if test "$PKGTEST" = "yes" && test "$PKGCONFIG" != "no"; then
2214 addlib=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2215 $PKGCONFIG --libs-only-l libmetalink`
2216 addld=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2217 $PKGCONFIG --libs-only-L libmetalink`
2218 addcflags=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2219 $PKGCONFIG --cflags-only-I libmetalink`
2220 version=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2221 $PKGCONFIG --modversion libmetalink`
2222 libmetalinklib=`echo $addld | $SED -e 's/-L//'`
2224 if test -n "$addlib"; then
2226 clean_CPPFLAGS="$CPPFLAGS"
2227 clean_LDFLAGS="$LDFLAGS"
2229 CPPFLAGS="$addcflags $clean_CPPFLAGS"
2230 LDFLAGS="$addld $clean_LDFLAGS"
2231 LIBS="$addlib $clean_LIBS"
2232 AC_MSG_CHECKING([if libmetalink is recent enough])
2235 # include <metalink/metalink.h>
2237 if(0 != metalink_strerror(0)) /* added in 0.1.0 */
2241 AC_MSG_RESULT([yes ($version)])
2244 AC_MSG_RESULT([no ($version)])
2245 AC_MSG_NOTICE([libmetalink library defective or too old])
2248 CPPFLAGS="$clean_CPPFLAGS"
2249 LDFLAGS="$clean_LDFLAGS"
2251 if test "$want_metalink" = "yes"; then
2252 dnl finally libmetalink will be used
2253 AC_DEFINE(USE_METALINK, 1, [Define to enable metalink support])
2254 LIBMETALINK_LIBS=$addlib
2255 LIBMETALINK_LDFLAGS=$addld
2256 LIBMETALINK_CPPFLAGS=$addcflags
2257 AC_SUBST([LIBMETALINK_LIBS])
2258 AC_SUBST([LIBMETALINK_LDFLAGS])
2259 AC_SUBST([LIBMETALINK_CPPFLAGS])
2260 curl_mtlnk_msg="enabled"
2266 dnl **********************************************************************
2267 dnl Check for the presence of LIBSSH2 libraries and headers
2268 dnl **********************************************************************
2270 dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
2272 AC_ARG_WITH(libssh2,dnl
2273 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])
2274 AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
2275 OPT_LIBSSH2=$withval)
2277 if test X"$OPT_LIBSSH2" != Xno; then
2278 dnl backup the pre-libssh2 variables
2279 CLEANLDFLAGS="$LDFLAGS"
2280 CLEANCPPFLAGS="$CPPFLAGS"
2283 case "$OPT_LIBSSH2" in
2285 dnl --with-libssh2 (without path) used
2286 CURL_CHECK_PKGCONFIG(libssh2)
2288 if test "$PKGCONFIG" != "no" ; then
2289 LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2`
2290 LD_SSH2=`$PKGCONFIG --libs-only-L libssh2`
2291 CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2`
2292 version=`$PKGCONFIG --modversion libssh2`
2293 DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'`
2298 dnl no --with-libssh2 option given, just check default places
2301 dnl use the given --with-libssh2 spot
2302 PREFIX_SSH2=$OPT_LIBSSH2
2306 dnl if given with a prefix, we set -L and -I based on that
2307 if test -n "$PREFIX_SSH2"; then
2309 LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff
2310 CPP_SSH2=-I${PREFIX_SSH2}/include
2311 DIR_SSH2=${PREFIX_SSH2}/lib$libsuff
2314 LDFLAGS="$LDFLAGS $LD_SSH2"
2315 CPPFLAGS="$CPPFLAGS $CPP_SSH2"
2316 LIBS="$LIB_SSH2 $LIBS"
2318 AC_CHECK_LIB(ssh2, libssh2_channel_open_ex)
2320 AC_CHECK_HEADERS(libssh2.h,
2321 curl_ssh_msg="enabled (libSSH2)"
2323 AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
2324 AC_SUBST(USE_LIBSSH2, [1])
2327 if test X"$OPT_LIBSSH2" != Xoff &&
2328 test "$LIBSSH2_ENABLED" != "1"; then
2329 AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!])
2332 if test "$LIBSSH2_ENABLED" = "1"; then
2333 if test -n "$DIR_SSH2"; then
2334 dnl when the libssh2 shared libs were found in a path that the run-time
2335 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
2336 dnl to prevent further configure tests to fail due to this
2338 dnl libssh2_version is a post 1.0 addition
2339 dnl libssh2_init and libssh2_exit were added in 1.2.5
2340 dnl libssh2_scp_send64 was added in 1.2.6
2341 dnl libssh2_session_handshake was added in 1.2.8
2342 AC_CHECK_FUNCS( libssh2_version libssh2_init libssh2_exit \
2343 libssh2_scp_send64 libssh2_session_handshake)
2344 if test "x$cross_compiling" != "xyes"; then
2345 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
2346 export LD_LIBRARY_PATH
2347 AC_MSG_NOTICE([Added $DIR_SSH2 to LD_LIBRARY_PATH])
2351 dnl no libssh2, revert back to clean variables
2352 LDFLAGS=$CLEANLDFLAGS
2353 CPPFLAGS=$CLEANCPPFLAGS
2358 dnl **********************************************************************
2359 dnl Check for the presence of LIBRTMP libraries and headers
2360 dnl **********************************************************************
2362 dnl Default to compiler & linker defaults for LIBRTMP files & libraries.
2364 AC_ARG_WITH(librtmp,dnl
2365 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])
2366 AC_HELP_STRING([--without-librtmp], [disable LIBRTMP]),
2367 OPT_LIBRTMP=$withval)
2369 if test X"$OPT_LIBRTMP" != Xno; then
2370 dnl backup the pre-librtmp variables
2371 CLEANLDFLAGS="$LDFLAGS"
2372 CLEANCPPFLAGS="$CPPFLAGS"
2375 case "$OPT_LIBRTMP" in
2377 dnl --with-librtmp (without path) used
2378 CURL_CHECK_PKGCONFIG(librtmp)
2380 if test "$PKGCONFIG" != "no" ; then
2381 LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp`
2382 LD_RTMP=`$PKGCONFIG --libs-only-L librtmp`
2383 CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp`
2384 version=`$PKGCONFIG --modversion librtmp`
2385 DIR_RTMP=`echo $LD_RTMP | $SED -e 's/-L//'`
2387 dnl To avoid link errors, we do not allow --librtmp without
2388 dnl a pkgconfig file
2389 AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.])
2394 dnl no --with-librtmp option given, just check default places
2398 dnl use the given --with-librtmp spot
2399 PREFIX_RTMP=$OPT_LIBRTMP
2403 dnl if given with a prefix, we set -L and -I based on that
2404 if test -n "$PREFIX_RTMP"; then
2405 LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff
2406 CPP_RTMP=-I${PREFIX_RTMP}/include
2407 DIR_RTMP=${PREFIX_RTMP}/lib$libsuff
2410 LDFLAGS="$LDFLAGS $LD_RTMP"
2411 CPPFLAGS="$CPPFLAGS $CPP_RTMP"
2412 LIBS="$LIB_RTMP $LIBS"
2414 AC_CHECK_LIB(rtmp, RTMP_Init,
2416 AC_CHECK_HEADERS(librtmp/rtmp.h,
2417 curl_rtmp_msg="enabled (librtmp)"
2419 AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use])
2420 AC_SUBST(USE_LIBRTMP, [1])
2423 dnl not found, revert back to clean variables
2424 LDFLAGS=$CLEANLDFLAGS
2425 CPPFLAGS=$CLEANCPPFLAGS
2429 if test X"$OPT_LIBRTMP" != Xoff &&
2430 test "$LIBRTMP_ENABLED" != "1"; then
2431 AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!])
2436 dnl **********************************************************************
2437 dnl Check for linker switch for versioned symbols
2438 dnl **********************************************************************
2440 versioned_symbols_flavour=
2441 AC_MSG_CHECKING([whether versioned symbols are wanted])
2442 AC_ARG_ENABLE(versioned-symbols,
2443 AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library])
2444 AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]),
2445 [ case "$enableval" in
2446 yes) AC_MSG_RESULT(yes)
2447 AC_MSG_CHECKING([if libraries can be versioned])
2448 GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
2449 if test -z "$GLD"; then
2451 AC_MSG_WARN([You need an ld version supporting the --version-script option])
2454 if test "x$OPENSSL_ENABLED" = "x1"; then
2455 versioned_symbols_flavour="OPENSSL_"
2456 elif test "x$GNUTLS_ENABLED" == "x1"; then
2457 versioned_symbols_flavour="GNUTLS_"
2458 elif test "x$NSS_ENABLED" == "x1"; then
2459 versioned_symbols_flavour="NSS_"
2460 elif test "x$POLARSSL_ENABLED" == "x1"; then
2461 versioned_symbols_flavour="POLARSSL_"
2462 elif test "x$CYASSL_ENABLED" == "x1"; then
2463 versioned_symbols_flavour="CYASSL_"
2464 elif test "x$AXTLS_ENABLED" == "x1"; then
2465 versioned_symbols_flavour="AXTLS_"
2466 elif test "x$WINSSL_ENABLED" == "x1"; then
2467 versioned_symbols_flavour="WINSSL_"
2468 elif test "x$DARWINSSL_ENABLED" == "x1"; then
2469 versioned_symbols_flavour="DARWINSSL_"
2471 versioned_symbols_flavour=""
2473 versioned_symbols="yes"
2477 *) AC_MSG_RESULT(no)
2485 AC_SUBST([CURL_LT_SHLIB_VERSIONED_FLAVOUR],
2486 ["$versioned_symbols_flavour"])
2487 AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS],
2488 [test "x$versioned_symbols" = 'xyes'])
2490 dnl -------------------------------------------------
2491 dnl check winidn option before other IDN libraries
2492 dnl -------------------------------------------------
2494 AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)])
2495 OPT_WINIDN="default"
2497 AC_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN])
2498 AC_HELP_STRING([--without-winidn], [disable Windows native IDN]),
2499 OPT_WINIDN=$withval)
2500 case "$OPT_WINIDN" in
2502 dnl --without-winidn option used or configure option not specified
2507 dnl --with-winidn option used without path
2509 want_winidn_path="default"
2510 AC_MSG_RESULT([yes])
2513 dnl --with-winidn option used with path
2515 want_winidn_path="$withval"
2516 AC_MSG_RESULT([yes ($withval)])
2520 if test "$want_winidn" = "yes"; then
2521 dnl winidn library support has been requested
2522 clean_CPPFLAGS="$CPPFLAGS"
2523 clean_LDFLAGS="$LDFLAGS"
2525 WINIDN_LIBS="-lnormaliz"
2527 if test "$want_winidn_path" != "default"; then
2528 dnl path has been specified
2529 dnl pkg-config not available or provides no info
2530 WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff"
2531 WINIDN_CPPFLAGS="-I$want_winidn_path/include"
2532 WINIDN_DIR="$want_winidn_path/lib$libsuff"
2535 CPPFLAGS="$WINIDN_CPPFLAGS $CPPFLAGS"
2536 LDFLAGS="$WINIDN_LDFLAGS $LDFLAGS"
2537 LIBS="$WINIDN_LIBS $LIBS"
2539 AC_MSG_CHECKING([if IdnToUnicode can be linked])
2541 AC_LANG_FUNC_LINK_TRY([IdnToUnicode])
2543 AC_MSG_RESULT([yes])
2544 tst_links_winidn="yes"
2547 tst_links_winidn="no"
2550 if test "$tst_links_winidn" = "yes"; then
2551 AC_DEFINE(USE_WIN32_IDN, 1, [Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz).])
2552 AC_DEFINE(WANT_IDN_PROTOTYPES, 1, [Define to 1 to provide own prototypes.])
2553 AC_SUBST([IDN_ENABLED], [1])
2554 curl_idn_msg="enabled (Windows-native)"
2556 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2557 CPPFLAGS="$clean_CPPFLAGS"
2558 LDFLAGS="$clean_LDFLAGS"
2563 dnl **********************************************************************
2564 dnl Check for the presence of IDN libraries and headers
2565 dnl **********************************************************************
2567 AC_MSG_CHECKING([whether to build with libidn])
2570 AC_HELP_STRING([--with-libidn=PATH],[Enable libidn usage])
2571 AC_HELP_STRING([--without-libidn],[Disable libidn usage]),
2575 dnl --without-libidn option used
2580 dnl configure option not specified
2582 want_idn_path="default"
2583 AC_MSG_RESULT([(assumed) yes])
2586 dnl --with-libidn option used without path
2588 want_idn_path="default"
2589 AC_MSG_RESULT([yes])
2592 dnl --with-libidn option used with path
2594 want_idn_path="$withval"
2595 AC_MSG_RESULT([yes ($withval)])
2599 if test "$want_idn" = "yes"; then
2600 dnl idn library support has been requested
2601 clean_CPPFLAGS="$CPPFLAGS"
2602 clean_LDFLAGS="$LDFLAGS"
2606 if test "$want_idn_path" != "default"; then
2607 dnl path has been specified
2608 IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig"
2609 CURL_CHECK_PKGCONFIG(libidn, [$IDN_PCDIR])
2610 if test "$PKGCONFIG" != "no"; then
2611 IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2612 $PKGCONFIG --libs-only-l libidn 2>/dev/null`
2613 IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2614 $PKGCONFIG --libs-only-L libidn 2>/dev/null`
2615 IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2616 $PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2617 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2619 dnl pkg-config not available or provides no info
2621 IDN_LDFLAGS="-L$want_idn_path/lib$libsuff"
2622 IDN_CPPFLAGS="-I$want_idn_path/include"
2623 IDN_DIR="$want_idn_path/lib$libsuff"
2626 dnl path not specified
2627 CURL_CHECK_PKGCONFIG(libidn)
2628 if test "$PKGCONFIG" != "no"; then
2629 IDN_LIBS=`$PKGCONFIG --libs-only-l libidn 2>/dev/null`
2630 IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn 2>/dev/null`
2631 IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2632 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2634 dnl pkg-config not available or provides no info
2639 if test "$PKGCONFIG" != "no"; then
2640 AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"])
2641 AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"])
2642 AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2643 AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"])
2645 AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"])
2646 AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"])
2647 AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2648 AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"])
2651 CPPFLAGS="$IDN_CPPFLAGS $CPPFLAGS"
2652 LDFLAGS="$IDN_LDFLAGS $LDFLAGS"
2653 LIBS="$IDN_LIBS $LIBS"
2655 AC_MSG_CHECKING([if idna_to_ascii_4i can be linked])
2657 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_4i])
2659 AC_MSG_RESULT([yes])
2660 tst_links_libidn="yes"
2663 tst_links_libidn="no"
2665 if test "$tst_links_libidn" = "no"; then
2666 AC_MSG_CHECKING([if idna_to_ascii_lz can be linked])
2668 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_lz])
2670 AC_MSG_RESULT([yes])
2671 tst_links_libidn="yes"
2674 tst_links_libidn="no"
2678 if test "$tst_links_libidn" = "yes"; then
2679 AC_DEFINE(HAVE_LIBIDN, 1, [Define to 1 if you have the `idn' library (-lidn).])
2680 dnl different versions of libidn have different setups of these:
2681 AC_CHECK_FUNCS( idn_free idna_strerror tld_strerror )
2682 AC_CHECK_HEADERS( idn-free.h tld.h )
2683 if test "x$ac_cv_header_tld_h" = "xyes"; then
2684 AC_SUBST([IDN_ENABLED], [1])
2685 curl_idn_msg="enabled"
2686 if test -n "$IDN_DIR"; then
2687 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
2688 export LD_LIBRARY_PATH
2689 AC_MSG_NOTICE([Added $IDN_DIR to LD_LIBRARY_PATH])
2692 AC_MSG_WARN([Libraries for IDN support too old: IDN disabled])
2693 CPPFLAGS="$clean_CPPFLAGS"
2694 LDFLAGS="$clean_LDFLAGS"
2698 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2699 CPPFLAGS="$clean_CPPFLAGS"
2700 LDFLAGS="$clean_LDFLAGS"
2706 dnl Let's hope this split URL remains working:
2707 dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
2708 dnl genprogc/thread_quick_ref.htm
2711 dnl **********************************************************************
2712 dnl Check for nghttp2
2713 dnl **********************************************************************
2715 AC_MSG_CHECKING([whether to build with nghttp2])
2717 AC_ARG_WITH(nghttp2,
2718 AC_HELP_STRING([--with-nghttp2=PATH],[Enable nghttp2 usage])
2719 AC_HELP_STRING([--without-nghttp2],[Disable nghttp2 usage]),
2723 dnl --without-nghttp2 option used
2728 dnl configure option not specified
2730 want_h2_path="default"
2734 dnl --with-nghttp2 option used without path
2737 AC_MSG_RESULT([yes])
2740 dnl --with-nghttp2 option used with path
2742 want_h2_path="$withval"
2743 AC_MSG_RESULT([yes ($withval)])
2747 curl_h2_msg="disabled (--with-nghttp2)"
2748 if test X"$OPT_H2" != Xno; then
2749 dnl backup the pre-librtmp variables
2750 CLEANLDFLAGS="$LDFLAGS"
2751 CLEANCPPFLAGS="$CPPFLAGS"
2754 h2pcdir=${want_h2_path}/lib/pkgconfig
2755 CURL_CHECK_PKGCONFIG(libnghttp2, $h2pcdir)
2757 if test "$PKGCONFIG" != "no" ; then
2758 LIB_H2=`CURL_EXPORT_PCDIR([$h2pcdir])
2759 $PKGCONFIG --libs-only-l libnghttp2`
2760 AC_MSG_NOTICE([-l is $LIB_H2])
2762 CPP_H2=`CURL_EXPORT_PCDIR([$h2pcdir]) dnl
2763 $PKGCONFIG --cflags-only-I libnghttp2`
2764 AC_MSG_NOTICE([-I is $CPP_H2])
2766 LD_H2=`CURL_EXPORT_PCDIR([$h2pcdir])
2767 $PKGCONFIG --libs-only-L libnghttp2`
2768 AC_MSG_NOTICE([-L is $LD_H2])
2771 dnl To avoid link errors, we do not allow --libnghttp2 without
2772 dnl a pkgconfig file
2773 AC_MSG_ERROR([--with-nghttp2 was specified but could not find libnghttp2 pkg-config file.])
2776 LDFLAGS="$LDFLAGS $LD_H2"
2777 CPPFLAGS="$CPPFLAGS $CPP_H2"
2778 LIBS="$LIB_H2 $LIBS"
2780 AC_CHECK_LIB(nghttp2, nghttp2_session_client_new,
2782 AC_CHECK_HEADERS(nghttp2/nghttp2.h,
2783 curl_h2_msg="enabled (nghttp2)"
2785 AC_DEFINE(USE_NGHTTP2, 1, [if nghttp2 is in use])
2786 AC_SUBST(USE_NGHTTP2, [1])
2789 dnl not found, revert back to clean variables
2790 LDFLAGS=$CLEANLDFLAGS
2791 CPPFLAGS=$CLEANCPPFLAGS
2797 dnl **********************************************************************
2798 dnl Back to "normal" configuring
2799 dnl **********************************************************************
2801 dnl Checks for header files.
2804 CURL_CHECK_HEADER_MALLOC
2805 CURL_CHECK_HEADER_MEMORY
2807 dnl Now check for the very most basic headers. Then we can use these
2808 dnl ones as default-headers when checking for the rest!
2851 dnl to do if not found
2855 dnl default includes
2857 #ifdef HAVE_SYS_TYPES_H
2858 #include <sys/types.h>
2860 #ifdef HAVE_SYS_TIME_H
2861 #include <sys/time.h>
2863 #ifdef HAVE_SYS_SELECT_H
2864 #include <sys/select.h>
2866 #ifdef HAVE_SYS_SOCKET_H
2867 #include <sys/socket.h>
2869 #ifdef HAVE_NETINET_IN_H
2870 #include <netinet/in.h>
2872 #ifdef HAVE_SYS_UN_H
2878 dnl Checks for typedefs, structures, and compiler characteristics.
2880 CURL_CHECK_VARIADIC_MACROS
2883 CURL_CHECK_STRUCT_TIMEVAL
2884 CURL_VERIFY_RUNTIMELIBS
2886 AC_CHECK_SIZEOF(size_t)
2887 AC_CHECK_SIZEOF(long)
2888 AC_CHECK_SIZEOF(int)
2889 AC_CHECK_SIZEOF(short)
2891 AC_CHECK_SIZEOF(time_t)
2892 AC_CHECK_SIZEOF(off_t)
2895 if test x"$ac_cv_native_windows" != "xyes" &&
2896 test $ac_cv_sizeof_off_t -ne $curl_sizeof_curl_off_t; then
2897 AC_MSG_WARN([This libcurl built is probably not ABI compatible with previous])
2898 AC_MSG_WARN([builds! You MUST read lib/README.curl_off_t to figure it out.])
2903 AC_CHECK_TYPE(long long,
2904 [AC_DEFINE(HAVE_LONGLONG, 1,
2905 [Define to 1 if the compiler supports the 'long long' data type.])]
2909 if test "xyes" = "x$longlong"; then
2910 AC_MSG_CHECKING([if numberLL works])
2914 long long val = 1000LL;
2917 AC_MSG_RESULT([yes])
2918 AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
2926 AC_CHECK_TYPE(ssize_t, ,
2927 AC_DEFINE(ssize_t, int, [the signed version of size_t]))
2929 # check for bool type
2930 AC_CHECK_TYPE([bool],[
2931 AC_DEFINE(HAVE_BOOL_T, 1,
2932 [Define to 1 if bool is an available type.])
2934 #ifdef HAVE_SYS_TYPES_H
2935 #include <sys/types.h>
2937 #ifdef HAVE_STDBOOL_H
2938 #include <stdbool.h>
2942 CURL_CONFIGURE_CURL_SOCKLEN_T
2944 CURL_CONFIGURE_PULL_SYS_POLL
2948 TYPE_SOCKADDR_STORAGE
2954 CURL_CHECK_FUNC_SELECT
2956 CURL_CHECK_FUNC_RECV
2957 CURL_CHECK_FUNC_SEND
2958 CURL_CHECK_MSG_NOSIGNAL
2960 CURL_CHECK_FUNC_ALARM
2961 CURL_CHECK_FUNC_BASENAME
2962 CURL_CHECK_FUNC_CLOSESOCKET
2963 CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
2964 CURL_CHECK_FUNC_CONNECT
2965 CURL_CHECK_FUNC_FCNTL
2966 CURL_CHECK_FUNC_FDOPEN
2967 CURL_CHECK_FUNC_FREEADDRINFO
2968 CURL_CHECK_FUNC_FREEIFADDRS
2969 CURL_CHECK_FUNC_FSETXATTR
2970 CURL_CHECK_FUNC_FTRUNCATE
2971 CURL_CHECK_FUNC_GETADDRINFO
2972 CURL_CHECK_FUNC_GAI_STRERROR
2973 CURL_CHECK_FUNC_GETHOSTBYADDR
2974 CURL_CHECK_FUNC_GETHOSTBYADDR_R
2975 CURL_CHECK_FUNC_GETHOSTBYNAME
2976 CURL_CHECK_FUNC_GETHOSTBYNAME_R
2977 CURL_CHECK_FUNC_GETHOSTNAME
2978 CURL_CHECK_FUNC_GETIFADDRS
2979 CURL_CHECK_FUNC_GETSERVBYPORT_R
2980 CURL_CHECK_FUNC_GMTIME_R
2981 CURL_CHECK_FUNC_INET_NTOA_R
2982 CURL_CHECK_FUNC_INET_NTOP
2983 CURL_CHECK_FUNC_INET_PTON
2984 CURL_CHECK_FUNC_IOCTL
2985 CURL_CHECK_FUNC_IOCTLSOCKET
2986 CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
2987 CURL_CHECK_FUNC_LOCALTIME_R
2988 CURL_CHECK_FUNC_MEMRCHR
2989 CURL_CHECK_FUNC_POLL
2990 CURL_CHECK_FUNC_SETSOCKOPT
2991 CURL_CHECK_FUNC_SIGACTION
2992 CURL_CHECK_FUNC_SIGINTERRUPT
2993 CURL_CHECK_FUNC_SIGNAL
2994 CURL_CHECK_FUNC_SIGSETJMP
2995 CURL_CHECK_FUNC_SOCKET
2996 CURL_CHECK_FUNC_SOCKETPAIR
2997 CURL_CHECK_FUNC_STRCASECMP
2998 CURL_CHECK_FUNC_STRCMPI
2999 CURL_CHECK_FUNC_STRDUP
3000 CURL_CHECK_FUNC_STRERROR_R
3001 CURL_CHECK_FUNC_STRICMP
3002 CURL_CHECK_FUNC_STRNCASECMP
3003 CURL_CHECK_FUNC_STRNCMPI
3004 CURL_CHECK_FUNC_STRNICMP
3005 CURL_CHECK_FUNC_STRSTR
3006 CURL_CHECK_FUNC_STRTOK_R
3007 CURL_CHECK_FUNC_STRTOLL
3008 CURL_CHECK_FUNC_WRITEV
3014 AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
3018 AC_CHECK_FUNCS([fork \
3037 eval skipcheck=\$skipcheck_$func
3038 if test "x$skipcheck" != "xyes"; then
3039 AC_MSG_CHECKING([deeper for $func])
3046 AC_MSG_RESULT([yes])
3047 eval "ac_cv_func_$func=yes"
3048 AC_DEFINE_UNQUOTED(XC_SH_TR_CPP([HAVE_$func]), [1],
3049 [Define to 1 if you have the $func function.])
3051 AC_MSG_RESULT([but still no])
3056 dnl Check if the getnameinfo function is available
3057 dnl and get the types of five of its arguments.
3058 CURL_CHECK_FUNC_GETNAMEINFO
3060 if test "$ipv6" = "yes"; then
3061 if test "$ac_cv_func_getaddrinfo" = "yes"; then
3062 AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
3064 AC_SUBST(IPV6_ENABLED)
3066 CURL_CHECK_NI_WITHSCOPEID
3069 CURL_CHECK_NONBLOCKING_SOCKET
3071 dnl ************************************************************
3072 dnl nroff tool stuff
3075 AC_PATH_PROG( PERL, perl, ,
3076 $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
3079 AC_PATH_PROGS( NROFF, gnroff nroff, ,
3080 $PATH:/usr/bin/:/usr/local/bin )
3083 if test -n "$NROFF"; then
3084 dnl only check for nroff options if an nroff command was found
3086 AC_MSG_CHECKING([how to use *nroff to get plain text from man pages])
3088 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3089 if test -z "$mancheck"; then
3091 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3092 if test -z "$mancheck"; then
3094 AC_MSG_RESULT([failed])
3095 AC_MSG_WARN([found no *nroff option to get plaintext from man pages])
3097 AC_MSG_RESULT([$MANOPT])
3100 AC_MSG_RESULT([$MANOPT])
3105 if test -z "$MANOPT"
3107 dnl if no nroff tool was found, or no option that could convert man pages
3108 dnl was found, then disable the built-in manual stuff
3109 AC_MSG_WARN([disabling built-in manual])
3113 dnl *************************************************************************
3114 dnl If the manual variable still is set, then we go with providing a built-in
3117 if test "$USE_MANUAL" = "1"; then
3118 AC_DEFINE(USE_MANUAL, 1, [If you want to build curl with the built-in manual])
3119 curl_manual_msg="enabled"
3122 dnl set variable for use in automakefile(s)
3123 AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
3126 AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
3128 if test "x$ac_cv_native_windows" != "xyes" &&
3129 test "x$enable_shared" = "xyes"; then
3130 build_libhostname=yes
3132 build_libhostname=no
3134 AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes)
3136 CURL_CHECK_OPTION_THREADED_RESOLVER
3138 if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
3140 [Options --enable-threaded-resolver and --enable-ares are mutually exclusive])
3143 if test "$want_thres" = "yes"; then
3144 AC_CHECK_HEADER(pthread.h,
3145 [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>])
3146 save_CFLAGS="$CFLAGS"
3148 dnl first check for function without lib
3149 AC_CHECK_FUNC(pthread_create, [USE_THREADS_POSIX=1] )
3151 dnl if it wasn't found without lib, search for it in pthread lib
3152 if test "$USE_THREADS_POSIX" != "1"
3154 CFLAGS="$CFLAGS -pthread"
3155 AC_CHECK_LIB(pthread, pthread_create,
3156 [USE_THREADS_POSIX=1],
3157 [ CFLAGS="$save_CFLAGS"])
3160 if test "x$USE_THREADS_POSIX" = "x1"
3162 AC_DEFINE(USE_THREADS_POSIX, 1, [if you want POSIX threaded DNS lookup])
3163 curl_res_msg="POSIX threaded"
3170 dnl ************************************************************
3171 dnl disable verbose text strings
3173 AC_MSG_CHECKING([whether to enable verbose strings])
3174 AC_ARG_ENABLE(verbose,
3175 AC_HELP_STRING([--enable-verbose],[Enable verbose strings])
3176 AC_HELP_STRING([--disable-verbose],[Disable verbose strings]),
3177 [ case "$enableval" in
3180 AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings])
3181 curl_verbose_msg="no"
3183 *) AC_MSG_RESULT(yes)
3189 dnl ************************************************************
3190 dnl enable SSPI support
3192 AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)])
3194 AC_HELP_STRING([--enable-sspi],[Enable SSPI])
3195 AC_HELP_STRING([--disable-sspi],[Disable SSPI]),
3196 [ case "$enableval" in
3198 if test "$ac_cv_native_windows" = "yes"; then
3200 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
3201 AC_SUBST(USE_WINDOWS_SSPI, [1])
3202 curl_sspi_msg="enabled"
3205 AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.])
3209 if test "x$WINSSL_ENABLED" = "x1"; then
3210 # --with-winssl implies --enable-sspi
3217 if test "x$WINSSL_ENABLED" = "x1"; then
3218 # --with-winssl implies --enable-sspi
3225 dnl ************************************************************
3226 dnl disable cryptographic authentication
3228 AC_MSG_CHECKING([whether to enable cryptographic authentication methods])
3229 AC_ARG_ENABLE(crypto-auth,
3230 AC_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication])
3231 AC_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]),
3232 [ case "$enableval" in
3235 AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication])
3237 *) AC_MSG_RESULT(yes)
3243 CURL_CHECK_OPTION_NTLM_WB
3247 dnl ************************************************************
3248 dnl disable TLS-SRP authentication
3250 AC_MSG_CHECKING([whether to enable TLS-SRP authentication])
3251 AC_ARG_ENABLE(tls-srp,
3252 AC_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication])
3253 AC_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]),
3254 [ case "$enableval" in
3257 AC_DEFINE(CURL_DISABLE_TLS_SRP, 1, [to disable TLS-SRP authentication])
3260 *) AC_MSG_RESULT(yes)
3268 if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_SSLEAY_SRP" = "x1") ; then
3269 AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication])
3271 curl_tls_srp_msg="enabled"
3274 dnl ************************************************************
3275 dnl disable cookies support
3277 AC_MSG_CHECKING([whether to enable support for cookies])
3278 AC_ARG_ENABLE(cookies,
3279 AC_HELP_STRING([--enable-cookies],[Enable cookies support])
3280 AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
3281 [ case "$enableval" in
3284 AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support])
3286 *) AC_MSG_RESULT(yes)
3292 dnl ************************************************************
3293 dnl hiding of library internal symbols
3295 CURL_CONFIGURE_SYMBOL_HIDING
3297 dnl ************************************************************
3298 dnl enforce SONAME bump
3301 AC_MSG_CHECKING([whether to enforce SONAME bump])
3302 AC_ARG_ENABLE(soname-bump,
3303 AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump])
3304 AC_HELP_STRING([--disable-soname-bump],[Disable enforced SONAME bump]),
3305 [ case "$enableval" in
3306 yes) AC_MSG_RESULT(yes)
3313 AC_MSG_RESULT($soname_bump)
3315 AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes)
3318 dnl All the library dependencies put into $LIB apply to libcurl only.
3322 AC_SUBST(LIBCURL_LIBS)
3323 AC_SUBST(CURL_NETWORK_LIBS)
3324 AC_SUBST(CURL_NETWORK_AND_TIME_LIBS)
3326 dnl BLANK_AT_MAKETIME may be used in our Makefile.am files to blank
3327 dnl LIBS variable used in generated makefile at makefile processing
3328 dnl time. Doing this functionally prevents LIBS from being used for
3329 dnl all link targets in given makefile.
3331 AC_SUBST(BLANK_AT_MAKETIME)
3333 AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes)
3336 ENABLE_SHARED="$enable_shared"
3337 AC_SUBST(ENABLE_SHARED)
3339 dnl to let curl-config output the static libraries correctly
3340 ENABLE_STATIC="$enable_static"
3341 AC_SUBST(ENABLE_STATIC)
3345 dnl For keeping supported features and protocols also in pkg-config file
3346 dnl since it is more cross-compile friendly than curl-config
3349 if test "x$USE_SSLEAY" = "x1"; then
3350 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3351 elif test -n "$SSL_ENABLED"; then
3352 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3354 if test "x$IPV6_ENABLED" = "x1"; then
3355 SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
3357 if test "x$HAVE_LIBZ" = "x1"; then
3358 SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
3360 if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1"; then
3361 SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
3363 if test "x$IDN_ENABLED" = "x1"; then
3364 SUPPORT_FEATURES="$SUPPORT_FEATURES IDN"
3366 if test "x$USE_WINDOWS_SSPI" = "x1"; then
3367 SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
3369 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3370 if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
3371 -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
3372 -o "x$DARWINSSL_ENABLED" = "x1"; then
3373 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
3374 if test "x$NTLM_WB_ENABLED" = "x1"; then
3375 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
3379 if test "x$USE_TLS_SRP" = "x1"; then
3380 SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
3383 if test "x$USE_NGHTTP2" = "x1"; then
3384 SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2"
3387 AC_SUBST(SUPPORT_FEATURES)
3389 dnl For supported protocols in pkg-config file
3390 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3391 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
3392 if test "x$SSL_ENABLED" = "x1"; then
3393 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS"
3396 if test "x$CURL_DISABLE_FTP" != "x1"; then
3397 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP"
3398 if test "x$SSL_ENABLED" = "x1"; then
3399 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS"
3402 if test "x$CURL_DISABLE_FILE" != "x1"; then
3403 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE"
3405 if test "x$CURL_DISABLE_TELNET" != "x1"; then
3406 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET"
3408 if test "x$CURL_DISABLE_LDAP" != "x1"; then
3409 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP"
3410 if test "x$CURL_DISABLE_LDAPS" != "x1"; then
3411 if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") ||
3412 (test "x$USE_OPENLDAP" != "x1" && test "x$HAVE_LDAP_SSL" = "x1"); then
3413 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS"
3417 if test "x$CURL_DISABLE_DICT" != "x1"; then
3418 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT"
3420 if test "x$CURL_DISABLE_TFTP" != "x1"; then
3421 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP"
3423 if test "x$CURL_DISABLE_GOPHER" != "x1"; then
3424 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER"
3426 if test "x$CURL_DISABLE_POP3" != "x1"; then
3427 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3"
3428 if test "x$SSL_ENABLED" = "x1"; then
3429 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S"
3432 if test "x$CURL_DISABLE_IMAP" != "x1"; then
3433 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
3434 if test "x$SSL_ENABLED" = "x1"; then
3435 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
3438 if test "x$CURL_DISABLE_SMTP" != "x1"; then
3439 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
3440 if test "x$SSL_ENABLED" = "x1"; then
3441 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS"
3444 if test "x$USE_LIBSSH2" = "x1"; then
3445 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
3446 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
3448 if test "x$CURL_DISABLE_RTSP" != "x1"; then
3449 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
3451 if test "x$USE_LIBRTMP" = "x1"; then
3452 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP"
3455 dnl replace spaces with newlines
3457 dnl replace the newlines back to spaces
3458 SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '`
3460 AC_SUBST(SUPPORT_PROTOCOLS)
3462 dnl squeeze whitespace out of some variables
3470 squeeze LIBCURL_LIBS
3471 squeeze CURL_NETWORK_LIBS
3472 squeeze CURL_NETWORK_AND_TIME_LIBS
3474 squeeze SUPPORT_FEATURES
3475 squeeze SUPPORT_PROTOCOLS
3477 XC_CHECK_BUILD_FLAGS
3479 if test "x$want_curldebug_assumed" = "xyes" &&
3480 test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
3481 ac_configure_args="$ac_configure_args --enable-curldebug"
3484 AC_CONFIG_FILES([Makefile \
3486 docs/examples/Makefile \
3487 docs/libcurl/Makefile \
3489 include/curl/Makefile \
3494 tests/certs/Makefile \
3495 tests/certs/scripts/Makefile \
3496 tests/data/Makefile \
3497 tests/server/Makefile \
3498 tests/libtest/Makefile \
3499 tests/unit/Makefile \
3501 packages/Win32/Makefile \
3502 packages/Win32/cygwin/Makefile \
3503 packages/Linux/Makefile \
3504 packages/Linux/RPM/Makefile \
3505 packages/Linux/RPM/curl.spec \
3506 packages/Linux/RPM/curl-ssl.spec \
3507 packages/Solaris/Makefile \
3508 packages/EPM/curl.list \
3509 packages/EPM/Makefile \
3510 packages/vms/Makefile \
3511 packages/AIX/Makefile \
3512 packages/AIX/RPM/Makefile \
3513 packages/AIX/RPM/curl.spec \
3519 CURL_GENERATE_CONFIGUREHELP_PM
3521 XC_AMEND_DISTCLEAN([lib src tests/unit tests/server tests/libtest docs/examples])
3523 AC_MSG_NOTICE([Configured to build curl/libcurl:
3525 curl version: ${CURLVERSION}
3527 Install prefix: ${prefix}
3529 SSL support: ${curl_ssl_msg}
3530 SSH support: ${curl_ssh_msg}
3531 zlib support: ${curl_zlib_msg}
3532 GSSAPI support: ${curl_gss_msg}
3533 SPNEGO support: ${curl_spnego_msg}
3534 TLS-SRP support: ${curl_tls_srp_msg}
3535 resolver: ${curl_res_msg}
3536 ipv6 support: ${curl_ipv6_msg}
3537 IDN support: ${curl_idn_msg}
3538 Build libcurl: Shared=${enable_shared}, Static=${enable_static}
3539 Built-in manual: ${curl_manual_msg}
3540 --libcurl option: ${curl_libcurl_msg}
3541 Verbose errors: ${curl_verbose_msg}
3542 SSPI support: ${curl_sspi_msg}
3543 ca cert bundle: ${ca}
3544 ca cert path: ${capath}
3545 LDAP support: ${curl_ldap_msg}
3546 LDAPS support: ${curl_ldaps_msg}
3547 RTSP support: ${curl_rtsp_msg}
3548 RTMP support: ${curl_rtmp_msg}
3549 metalink support: ${curl_mtlnk_msg}
3550 HTTP2 support: ${curl_h2_msg}
3551 Protocols: ${SUPPORT_PROTOCOLS}
3554 if test "x$soname_bump" = "xyes"; then
3557 SONAME bump: yes - WARNING: this library will be built with the SONAME
3558 number bumped due to (a detected) ABI breakage.
3559 See lib/README.curl_off_t for details on this.