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_krb4_msg="no (--with-krb4*)"
154 curl_gss_msg="no (--with-gssapi)"
155 curl_spnego_msg="no (--with-spnego)"
156 curl_tls_srp_msg="no (--enable-tls-srp)"
157 curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
158 curl_ipv6_msg="no (--enable-ipv6)"
159 curl_idn_msg="no (--with-{libidn,winidn})"
160 curl_manual_msg="no (--enable-manual)"
161 curl_libcurl_msg="enabled (--disable-libcurl-option)"
162 curl_verbose_msg="enabled (--disable-verbose)"
163 curl_sspi_msg="no (--enable-sspi)"
164 curl_ldap_msg="no (--enable-ldap / --with-ldap-lib / --with-lber-lib)"
165 curl_ldaps_msg="no (--enable-ldaps)"
166 curl_rtsp_msg="no (--enable-rtsp)"
167 curl_rtmp_msg="no (--with-librtmp)"
168 curl_mtlnk_msg="no (--with-libmetalink)"
170 init_ssl_msg=${curl_ssl_msg}
173 dnl Save some initial values the user might have provided
175 INITIAL_LDFLAGS=$LDFLAGS
179 dnl Detect the canonical host and target build environment
183 dnl Get system canonical name
184 AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
186 dnl Checks for programs.
188 dnl Our curl_off_t internal and external configure settings
189 CURL_CONFIGURE_CURL_OFF_T
191 dnl This defines _ALL_SOURCE for AIX
192 CURL_CHECK_AIX_ALL_SOURCE
194 dnl Our configure and build reentrant settings
195 CURL_CONFIGURE_THREAD_SAFE
196 CURL_CONFIGURE_REENTRANT
198 dnl check for how to do large files
204 # Automake conditionals based on libtool related checks
207 AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSION_INFO],
208 [test "x$xc_lt_shlib_use_version_info" = 'xyes'])
209 AM_CONDITIONAL([CURL_LT_SHLIB_USE_NO_UNDEFINED],
210 [test "x$xc_lt_shlib_use_no_undefined" = 'xyes'])
211 AM_CONDITIONAL([CURL_LT_SHLIB_USE_MIMPURE_TEXT],
212 [test "x$xc_lt_shlib_use_mimpure_text" = 'xyes'])
215 # Due to libtool and automake machinery limitations of not allowing
216 # specifying separate CPPFLAGS or CFLAGS when compiling objects for
217 # inclusion of these in shared or static libraries, we are forced to
218 # build using separate configure runs for shared and static libraries
219 # on systems where different CPPFLAGS or CFLAGS are mandatory in order
220 # to compile objects for each kind of library. Notice that relying on
221 # the '-DPIC' CFLAG that libtool provides is not valid given that the
222 # user might for example choose to build static libraries with PIC.
226 # Make our Makefile.am files use the staticlib CPPFLAG only when strictly
227 # targeting a static library and not building its shared counterpart.
230 AM_CONDITIONAL([USE_CPPFLAG_CURL_STATICLIB],
231 [test "x$xc_lt_build_static_only" = 'xyes'])
234 # Make staticlib CPPFLAG variable and its definition visible in output
235 # files unconditionally, providing an empty definition unless strictly
236 # targeting a static library and not building its shared counterpart.
239 CPPFLAG_CURL_STATICLIB=
240 if test "x$xc_lt_build_static_only" = 'xyes'; then
241 CPPFLAG_CURL_STATICLIB='-DCURL_STATICLIB'
243 AC_SUBST([CPPFLAG_CURL_STATICLIB])
246 # Determine whether all dependent libraries must be specified when linking
247 if test "X$enable_shared" = "Xyes" -a "X$link_all_deplibs" = "Xno"
253 AC_SUBST(REQUIRE_LIB_DEPS)
254 AM_CONDITIONAL(USE_EXPLICIT_LIB_DEPS, test x$REQUIRE_LIB_DEPS = xyes)
256 dnl check if there's a way to force code inline
259 dnl **********************************************************************
260 dnl platform/compiler/architecture specific checks/flags
261 dnl **********************************************************************
264 CURL_SET_COMPILER_BASIC_OPTS
265 CURL_SET_COMPILER_DEBUG_OPTS
266 CURL_SET_COMPILER_OPTIMIZE_OPTS
267 CURL_SET_COMPILER_WARNING_OPTS
269 if test "$compiler_id" = "INTEL_UNIX_C"; then
271 if test "$compiler_num" -ge "1000"; then
272 dnl icc 10.X or later
273 CFLAGS="$CFLAGS -shared-intel"
274 elif test "$compiler_num" -ge "900"; then
276 CFLAGS="$CFLAGS -i-dynamic"
281 CURL_CHECK_COMPILER_HALT_ON_ERROR
282 CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
283 CURL_CHECK_COMPILER_PROTOTYPE_MISMATCH
284 CURL_CHECK_COMPILER_SYMBOL_HIDING
287 AM_CONDITIONAL(CURLDEBUG, test x$want_curldebug = xyes)
289 supports_unittests=yes
290 # cross-compilation of unit tests static library/programs fails when
291 # libcurl shared library is built. This might be due to a libtool or
292 # automake issue. In this case we disable unit tests.
293 if test "x$cross_compiling" != "xno" &&
294 test "x$enable_shared" != "xno"; then
295 supports_unittests=no
298 # IRIX 6.5.24 gcc 3.3 autobuilds fail unittests library compilation due to
299 # a problem related with OpenSSL headers and library versions not matching.
300 # Disable unit tests while time to further investigate this is found.
303 if test "$compiler_id" = "GNU_C"; then
304 supports_unittests=no
309 # All AIX autobuilds fails unit tests linking against unittests library
310 # due to unittests library being built with no symbols or members. Libtool ?
311 # Disable unit tests while time to further investigate this is found.
314 supports_unittests=no
318 dnl Build unit tests when option --enable-debug is given.
319 if test "x$want_debug" = "xyes" &&
320 test "x$supports_unittests" = "xyes"; then
325 AM_CONDITIONAL(BUILD_UNITTESTS, test x$want_unittests = xyes)
327 dnl **********************************************************************
328 dnl Compilation based checks should not be done before this point.
329 dnl **********************************************************************
331 dnl **********************************************************************
332 dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
333 dnl and ws2tcpip.h take precedence over any other further checks which
334 dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
335 dnl this specific header files. And do them before its results are used.
336 dnl **********************************************************************
338 CURL_CHECK_HEADER_WINDOWS
339 CURL_CHECK_NATIVE_WINDOWS
340 case X-"$ac_cv_native_windows" in
342 CURL_CHECK_HEADER_WINSOCK
343 CURL_CHECK_HEADER_WINSOCK2
344 CURL_CHECK_HEADER_WS2TCPIP
345 CURL_CHECK_HEADER_WINLDAP
346 CURL_CHECK_HEADER_WINBER
349 ac_cv_header_winsock_h="no"
350 ac_cv_header_winsock2_h="no"
351 ac_cv_header_ws2tcpip_h="no"
352 ac_cv_header_winldap_h="no"
353 ac_cv_header_winber_h="no"
356 CURL_CHECK_WIN32_LARGEFILE
358 dnl ************************************************************
359 dnl switch off particular protocols
361 AC_MSG_CHECKING([whether to support http])
363 AC_HELP_STRING([--enable-http],[Enable HTTP support])
364 AC_HELP_STRING([--disable-http],[Disable HTTP support]),
365 [ case "$enableval" in
368 AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP])
369 AC_MSG_WARN([disable HTTP disables FTP over proxy and RTSP])
370 AC_SUBST(CURL_DISABLE_HTTP, [1])
371 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
372 AC_SUBST(CURL_DISABLE_RTSP, [1])
374 *) AC_MSG_RESULT(yes)
379 AC_MSG_CHECKING([whether to support ftp])
381 AC_HELP_STRING([--enable-ftp],[Enable FTP support])
382 AC_HELP_STRING([--disable-ftp],[Disable FTP support]),
383 [ case "$enableval" in
386 AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP])
387 AC_SUBST(CURL_DISABLE_FTP, [1])
389 *) AC_MSG_RESULT(yes)
394 AC_MSG_CHECKING([whether to support file])
396 AC_HELP_STRING([--enable-file],[Enable FILE support])
397 AC_HELP_STRING([--disable-file],[Disable FILE support]),
398 [ case "$enableval" in
401 AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE])
402 AC_SUBST(CURL_DISABLE_FILE, [1])
404 *) AC_MSG_RESULT(yes)
409 AC_MSG_CHECKING([whether to support ldap])
411 AC_HELP_STRING([--enable-ldap],[Enable LDAP support])
412 AC_HELP_STRING([--disable-ldap],[Disable LDAP support]),
413 [ case "$enableval" in
416 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
417 AC_SUBST(CURL_DISABLE_LDAP, [1])
425 AC_MSG_CHECKING([whether to support ldaps])
427 AC_HELP_STRING([--enable-ldaps],[Enable LDAPS support])
428 AC_HELP_STRING([--disable-ldaps],[Disable LDAPS support]),
429 [ case "$enableval" in
432 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
433 AC_SUBST(CURL_DISABLE_LDAPS, [1])
435 *) if test "x$CURL_DISABLE_LDAP" = "x1" ; then
436 AC_MSG_RESULT(LDAP needs to be enabled to support LDAPS)
437 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
438 AC_SUBST(CURL_DISABLE_LDAPS, [1])
441 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
442 AC_SUBST(HAVE_LDAP_SSL, [1])
446 if test "x$CURL_DISABLE_LDAP" = "x1" ; then
448 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
449 AC_SUBST(CURL_DISABLE_LDAPS, [1])
452 AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
453 AC_SUBST(HAVE_LDAP_SSL, [1])
457 AC_MSG_CHECKING([whether to support rtsp])
459 AC_HELP_STRING([--enable-rtsp],[Enable RTSP support])
460 AC_HELP_STRING([--disable-rtsp],[Disable RTSP support]),
461 [ case "$enableval" in
464 AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
465 AC_SUBST(CURL_DISABLE_RTSP, [1])
467 *) if test x$CURL_DISABLE_HTTP = x1 ; then
468 AC_MSG_ERROR(HTTP support needs to be enabled in order to enable RTSP support!)
471 curl_rtsp_msg="enabled"
475 if test "x$CURL_DISABLE_HTTP" != "x1"; then
477 curl_rtsp_msg="enabled"
483 AC_MSG_CHECKING([whether to support proxies])
485 AC_HELP_STRING([--enable-proxy],[Enable proxy support])
486 AC_HELP_STRING([--disable-proxy],[Disable proxy support]),
487 [ case "$enableval" in
490 AC_DEFINE(CURL_DISABLE_PROXY, 1, [to disable proxies])
491 AC_SUBST(CURL_DISABLE_PROXY, [1])
493 *) AC_MSG_RESULT(yes)
499 AC_MSG_CHECKING([whether to support dict])
501 AC_HELP_STRING([--enable-dict],[Enable DICT support])
502 AC_HELP_STRING([--disable-dict],[Disable DICT support]),
503 [ case "$enableval" in
506 AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT])
507 AC_SUBST(CURL_DISABLE_DICT, [1])
509 *) AC_MSG_RESULT(yes)
514 AC_MSG_CHECKING([whether to support telnet])
515 AC_ARG_ENABLE(telnet,
516 AC_HELP_STRING([--enable-telnet],[Enable TELNET support])
517 AC_HELP_STRING([--disable-telnet],[Disable TELNET support]),
518 [ case "$enableval" in
521 AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
522 AC_SUBST(CURL_DISABLE_TELNET, [1])
524 *) AC_MSG_RESULT(yes)
529 AC_MSG_CHECKING([whether to support tftp])
531 AC_HELP_STRING([--enable-tftp],[Enable TFTP support])
532 AC_HELP_STRING([--disable-tftp],[Disable TFTP support]),
533 [ case "$enableval" in
536 AC_DEFINE(CURL_DISABLE_TFTP, 1, [to disable TFTP])
537 AC_SUBST(CURL_DISABLE_TFTP, [1])
539 *) AC_MSG_RESULT(yes)
545 AC_MSG_CHECKING([whether to support pop3])
547 AC_HELP_STRING([--enable-pop3],[Enable POP3 support])
548 AC_HELP_STRING([--disable-pop3],[Disable POP3 support]),
549 [ case "$enableval" in
552 AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3])
553 AC_SUBST(CURL_DISABLE_POP3, [1])
555 *) AC_MSG_RESULT(yes)
562 AC_MSG_CHECKING([whether to support imap])
564 AC_HELP_STRING([--enable-imap],[Enable IMAP support])
565 AC_HELP_STRING([--disable-imap],[Disable IMAP support]),
566 [ case "$enableval" in
569 AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP])
570 AC_SUBST(CURL_DISABLE_IMAP, [1])
572 *) AC_MSG_RESULT(yes)
579 AC_MSG_CHECKING([whether to support smtp])
581 AC_HELP_STRING([--enable-smtp],[Enable SMTP support])
582 AC_HELP_STRING([--disable-smtp],[Disable SMTP support]),
583 [ case "$enableval" in
586 AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP])
587 AC_SUBST(CURL_DISABLE_SMTP, [1])
589 *) AC_MSG_RESULT(yes)
595 AC_MSG_CHECKING([whether to support gopher])
596 AC_ARG_ENABLE(gopher,
597 AC_HELP_STRING([--enable-gopher],[Enable Gopher support])
598 AC_HELP_STRING([--disable-gopher],[Disable Gopher support]),
599 [ case "$enableval" in
602 AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable Gopher])
603 AC_SUBST(CURL_DISABLE_GOPHER, [1])
605 *) AC_MSG_RESULT(yes)
612 dnl **********************************************************************
613 dnl Check for built-in manual
614 dnl **********************************************************************
616 AC_MSG_CHECKING([whether to provide built-in manual])
617 AC_ARG_ENABLE(manual,
618 AC_HELP_STRING([--enable-manual],[Enable built-in manual])
619 AC_HELP_STRING([--disable-manual],[Disable built-in manual]),
620 [ case "$enableval" in
624 *) AC_MSG_RESULT(yes)
631 dnl The actual use of the USE_MANUAL variable is done much later in this
632 dnl script to allow other actions to disable it as well.
634 dnl ************************************************************
635 dnl disable C code generation support
637 AC_MSG_CHECKING([whether to enable generation of C code])
638 AC_ARG_ENABLE(libcurl_option,
639 AC_HELP_STRING([--enable-libcurl-option],[Enable --libcurl C code generation support])
640 AC_HELP_STRING([--disable-libcurl-option],[Disable --libcurl C code generation support]),
641 [ case "$enableval" in
644 AC_DEFINE(CURL_DISABLE_LIBCURL_OPTION, 1, [to disable --libcurl C code generation option])
645 curl_libcurl_msg="no"
647 *) AC_MSG_RESULT(yes)
653 dnl **********************************************************************
654 dnl Checks for libraries.
655 dnl **********************************************************************
657 AC_MSG_CHECKING([whether to use libgcc])
658 AC_ARG_ENABLE(libgcc,
659 AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
660 [ case "$enableval" in
673 dnl gethostbyname without lib or in the nsl lib?
674 AC_CHECK_FUNC(gethostbyname,
675 [HAVE_GETHOSTBYNAME="1"
677 [ AC_CHECK_LIB(nsl, gethostbyname,
678 [HAVE_GETHOSTBYNAME="1"
683 if test "$HAVE_GETHOSTBYNAME" != "1"
685 dnl gethostbyname in the socket lib?
686 AC_CHECK_LIB(socket, gethostbyname,
687 [HAVE_GETHOSTBYNAME="1"
688 LIBS="-lsocket $LIBS"
692 if test "$HAVE_GETHOSTBYNAME" != "1"
694 dnl gethostbyname in the watt lib?
695 AC_CHECK_LIB(watt, gethostbyname,
696 [HAVE_GETHOSTBYNAME="1"
697 CPPFLAGS="-I/dev/env/WATT_ROOT/inc"
698 LDFLAGS="-L/dev/env/WATT_ROOT/lib"
703 dnl At least one system has been identified to require BOTH nsl and socket
704 dnl libs at the same time to link properly.
705 if test "$HAVE_GETHOSTBYNAME" != "1"
707 AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs])
708 my_ac_save_LIBS=$LIBS
709 LIBS="-lnsl -lsocket $LIBS"
717 HAVE_GETHOSTBYNAME="1"
720 LIBS=$my_ac_save_LIBS
724 if test "$HAVE_GETHOSTBYNAME" != "1"
726 dnl This is for winsock systems
727 if test "$ac_cv_header_windows_h" = "yes"; then
728 if test "$ac_cv_header_winsock_h" = "yes"; then
731 winsock_LIB="-lwinsock"
734 winsock_LIB="-lwsock32"
738 if test "$ac_cv_header_winsock2_h" = "yes"; then
739 winsock_LIB="-lws2_32"
741 if test ! -z "$winsock_LIB"; then
742 my_ac_save_LIBS=$LIBS
743 LIBS="$winsock_LIB $LIBS"
744 AC_MSG_CHECKING([for gethostbyname in $winsock_LIB])
747 #ifdef HAVE_WINDOWS_H
748 #ifndef WIN32_LEAN_AND_MEAN
749 #define WIN32_LEAN_AND_MEAN
752 #ifdef HAVE_WINSOCK2_H
753 #include <winsock2.h>
755 #ifdef HAVE_WINSOCK_H
761 gethostbyname("www.dummysite.com");
765 HAVE_GETHOSTBYNAME="1"
769 LIBS=$my_ac_save_LIBS
775 if test "$HAVE_GETHOSTBYNAME" != "1"
777 dnl This is for Minix 3.1
778 AC_MSG_CHECKING([for gethostbyname for Minix 3])
781 /* Older Minix versions may need <net/gen/netdb.h> here instead */
784 gethostbyname("www.dummysite.com");
788 HAVE_GETHOSTBYNAME="1"
794 if test "$HAVE_GETHOSTBYNAME" != "1"
796 dnl This is for eCos with a stubbed DNS implementation
797 AC_MSG_CHECKING([for gethostbyname for eCos])
803 gethostbyname("www.dummysite.com");
807 HAVE_GETHOSTBYNAME="1"
813 if test "$HAVE_GETHOSTBYNAME" != "1"
815 dnl gethostbyname in the network lib - for Haiku OS
816 AC_CHECK_LIB(network, gethostbyname,
817 [HAVE_GETHOSTBYNAME="1"
818 LIBS="-lnetwork $LIBS"
822 if test "$HAVE_GETHOSTBYNAME" != "1"
824 dnl gethostbyname in the net lib - for BeOS
825 AC_CHECK_LIB(net, gethostbyname,
826 [HAVE_GETHOSTBYNAME="1"
832 if test "$HAVE_GETHOSTBYNAME" != "1"; then
833 AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
837 AC_CHECK_FUNC(strcasecmp, , [ AC_CHECK_LIB(resolve, strcasecmp) ])
839 if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
840 AC_CHECK_LIB(resolve, strcasecmp,
841 [LIBS="-lresolve $LIBS"],
845 ac_cv_func_strcasecmp="no"
847 CURL_CHECK_LIBS_CONNECT
849 CURL_NETWORK_LIBS=$LIBS
851 dnl **********************************************************************
852 dnl In case that function clock_gettime with monotonic timer is available,
853 dnl check for additional required libraries.
854 dnl **********************************************************************
855 CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
857 dnl **********************************************************************
858 dnl The preceding library checks are all potentially useful for test
859 dnl servers and libtest cases which require networking and clock_gettime
860 dnl support. Save the list of required libraries at this point for use
861 dnl while linking those test servers and programs.
862 dnl **********************************************************************
863 CURL_NETWORK_AND_TIME_LIBS=$LIBS
865 dnl **********************************************************************
866 dnl Check for the presence of ZLIB libraries and headers
867 dnl **********************************************************************
869 dnl Check for & handle argument to --with-zlib.
871 clean_CPPFLAGS=$CPPFLAGS
872 clean_LDFLAGS=$LDFLAGS
876 AC_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
877 AC_HELP_STRING([--without-zlib],[disable use of zlib]),
878 [OPT_ZLIB="$withval"])
880 if test "$OPT_ZLIB" = "no" ; then
881 AC_MSG_WARN([zlib disabled])
883 if test "$OPT_ZLIB" = "yes" ; then
887 if test -z "$OPT_ZLIB" ; then
888 dnl check for the lib first without setting any new path, since many
889 dnl people have it in the default path
891 AC_CHECK_LIB(z, inflateEnd,
892 dnl libz found, set the variable
895 dnl if no lib found, try /usr/local
896 [OPT_ZLIB="/usr/local"])
900 dnl Add a nonempty path to the compiler flags
901 if test -n "$OPT_ZLIB"; then
902 CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include"
903 LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff"
906 AC_CHECK_HEADER(zlib.h,
910 dnl if the lib wasn't found already, try again with the new paths
911 if test "$HAVE_LIBZ" != "1"; then
912 AC_CHECK_LIB(z, gzread,
914 dnl the lib was found!
918 [ CPPFLAGS=$clean_CPPFLAGS
919 LDFLAGS=$clean_LDFLAGS])
923 dnl zlib.h was not found, restore the flags
924 CPPFLAGS=$clean_CPPFLAGS
925 LDFLAGS=$clean_LDFLAGS]
928 if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1"
930 AC_MSG_WARN([configure found only the libz lib, not the header file!])
932 CPPFLAGS=$clean_CPPFLAGS
933 LDFLAGS=$clean_LDFLAGS
935 elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1"
937 AC_MSG_WARN([configure found only the libz header file, not the lib!])
938 CPPFLAGS=$clean_CPPFLAGS
939 LDFLAGS=$clean_LDFLAGS
941 elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1"
943 dnl both header and lib were found!
945 AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file])
946 AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available])
949 LIBS="-lz $clean_LIBS"
951 dnl replace 'HAVE_LIBZ' in the automake makefile.ams
953 AC_MSG_NOTICE([found both libz and libz.h header])
954 curl_zlib_msg="enabled"
958 dnl set variable for use in automakefile(s)
959 AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1)
962 dnl **********************************************************************
964 dnl **********************************************************************
967 AC_ARG_WITH(ldap-lib,
968 AC_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]),
969 [LDAPLIBNAME="$withval"])
972 AC_ARG_WITH(lber-lib,
973 AC_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]),
974 [LBERLIBNAME="$withval"])
976 if test x$CURL_DISABLE_LDAP != x1 ; then
978 CURL_CHECK_HEADER_LBER
979 CURL_CHECK_HEADER_LDAP
980 CURL_CHECK_HEADER_LDAPSSL
981 CURL_CHECK_HEADER_LDAP_SSL
983 if test -z "$LDAPLIBNAME" ; then
984 if test "$ac_cv_native_windows" = "yes"; then
985 dnl Windows uses a single and unique LDAP library name
986 LDAPLIBNAME="wldap32"
991 if test "$LDAPLIBNAME" ; then
992 AC_CHECK_LIB("$LDAPLIBNAME", ldap_init,, [
993 AC_MSG_WARN(["$LDAPLIBNAME" is not an LDAP library: LDAP disabled])
994 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
995 AC_SUBST(CURL_DISABLE_LDAP, [1])
996 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
997 AC_SUBST(CURL_DISABLE_LDAPS, [1])])
999 dnl Try to find the right ldap libraries for this system
1000 CURL_CHECK_LIBS_LDAP
1001 case X-"$curl_cv_ldap_LIBS" in
1003 AC_MSG_WARN([Cannot find libraries for LDAP support: LDAP disabled])
1004 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1005 AC_SUBST(CURL_DISABLE_LDAP, [1])
1006 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1007 AC_SUBST(CURL_DISABLE_LDAPS, [1])
1013 if test x$CURL_DISABLE_LDAP != x1 ; then
1015 if test "$LBERLIBNAME" ; then
1016 dnl If name is "no" then don't define this library at all
1017 dnl (it's only needed if libldap.so's dependencies are broken).
1018 if test "$LBERLIBNAME" != "no" ; then
1019 AC_CHECK_LIB("$LBERLIBNAME", ber_free,, [
1020 AC_MSG_WARN(["$LBERLIBNAME" is not an LBER library: LDAP disabled])
1021 AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1022 AC_SUBST(CURL_DISABLE_LDAP, [1])
1023 AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1024 AC_SUBST(CURL_DISABLE_LDAPS, [1])])
1029 if test x$CURL_DISABLE_LDAP != x1 ; then
1030 AC_CHECK_FUNCS([ldap_url_parse ldap_init_fd])
1032 if test "$LDAPLIBNAME" = "wldap32"; then
1033 curl_ldap_msg="enabled (winldap)"
1034 AC_DEFINE(CURL_LDAP_WIN, 1, [Use Windows LDAP implementation])
1036 curl_ldap_msg="enabled (OpenLDAP)"
1037 if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then
1038 AC_DEFINE(USE_OPENLDAP, 1, [Use OpenLDAP-specific code])
1039 AC_SUBST(USE_OPENLDAP, [1])
1044 if test x$CURL_DISABLE_LDAPS != x1 ; then
1045 curl_ldaps_msg="enabled"
1048 dnl **********************************************************************
1050 dnl **********************************************************************
1052 AC_MSG_CHECKING([whether to enable ipv6])
1054 AC_HELP_STRING([--enable-ipv6],[Enable ipv6 (with ipv4) support])
1055 AC_HELP_STRING([--disable-ipv6],[Disable ipv6 support]),
1056 [ case "$enableval" in
1061 *) AC_MSG_RESULT(yes)
1066 AC_TRY_RUN([ /* is AF_INET6 available? */
1067 #include <sys/types.h>
1068 #include <sys/socket.h>
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 the presence of Kerberos4 libraries and headers
1139 dnl **********************************************************************
1141 AC_ARG_WITH(krb4-includes,
1142 AC_HELP_STRING([--with-krb4-includes=DIR],
1143 [Specify location of kerberos4 headers]),[
1144 CPPFLAGS="$CPPFLAGS -I$withval"
1149 AC_ARG_WITH(krb4-libs,
1150 AC_HELP_STRING([--with-krb4-libs=DIR],[Specify location of kerberos4 libs]),[
1151 LDFLAGS="$LDFLAGS -L$withval"
1158 AC_ARG_WITH(krb4,dnl
1159 AC_HELP_STRING([--with-krb4=DIR],[where to look for Kerberos4]),[
1161 if test X"$OPT_KRB4" != Xno; then
1163 if test X"$OPT_KRB4" != Xyes; then
1164 LDFLAGS="$LDFLAGS -L$OPT_KRB4/lib$libsuff"
1165 KRB4LIB="$OPT_KRB4/lib$libsuff"
1166 CPPFLAGS="$CPPFLAGS -I$OPT_KRB4/include"
1167 KRB4INC="$OPT_KRB4/include"
1172 AC_MSG_CHECKING([if Kerberos4 support is requested])
1174 if test "$want_krb4" = yes
1176 if test "$ipv6" = "yes"; then
1177 echo krb4 is not compatible with IPv6
1182 dnl Check for & handle argument to --with-krb4
1184 AC_MSG_CHECKING(where to look for Kerberos4)
1185 if test X"$OPT_KRB4" = Xyes
1187 AC_MSG_RESULT([defaults])
1189 AC_MSG_RESULT([libs in $KRB4LIB, headers in $KRB4INC])
1192 dnl Check for DES library
1193 AC_CHECK_LIB(des, des_pcbc_encrypt,
1195 AC_CHECK_HEADERS(des.h)
1198 AC_CHECK_FUNC(res_search, , [AC_CHECK_LIB(resolv, res_search)])
1200 dnl Check for the Kerberos4 library
1201 AC_CHECK_LIB(krb, krb_net_read,
1203 dnl Check for header files
1204 AC_CHECK_HEADERS(krb.h)
1206 dnl we found the required libraries, add to LIBS
1207 LIBS="-lkrb -lcom_err -ldes $LIBS"
1209 dnl Check for function krb_get_our_ip_for_realm
1210 dnl this is needed for NAT networks
1211 AC_CHECK_FUNCS(krb_get_our_ip_for_realm)
1214 AC_DEFINE(HAVE_KRB4, 1,
1215 [if you have the Kerberos4 libraries (including -ldes)])
1217 dnl substitute it too!
1219 AC_SUBST(KRB4_ENABLED)
1221 curl_krb4_msg="enabled"
1223 dnl the krb4 stuff needs a strlcpy()
1224 AC_CHECK_FUNCS(strlcpy)
1232 dnl **********************************************************************
1233 dnl Check for FBopenssl(SPNEGO) libraries
1234 dnl **********************************************************************
1237 AC_HELP_STRING([--with-spnego=DIR],
1238 [Specify location of SPNEGO library fbopenssl]), [
1239 SPNEGO_ROOT="$withval"
1240 if test x"$SPNEGO_ROOT" != xno; then
1245 AC_MSG_CHECKING([if SPNEGO support is requested])
1246 if test x"$want_spnego" = xyes; then
1248 if test X"$SPNEGO_ROOT" = Xyes; then
1249 AC_MSG_ERROR([FBOpenSSL libs and/or directories were not found where specified!])
1252 if test -z "$SPNEGO_LIB_DIR"; then
1253 LDFLAGS="$LDFLAGS -L$SPNEGO_ROOT -lfbopenssl"
1255 LDFLAGS="$LDFLAGS $SPNEGO_LIB_DIR"
1259 AC_DEFINE(HAVE_SPNEGO, 1,
1260 [Define this if you have the SPNEGO library fbopenssl])
1261 curl_spnego_msg="enabled"
1267 dnl **********************************************************************
1268 dnl Check for GSS-API libraries
1269 dnl **********************************************************************
1271 dnl check for gss stuff in the /usr as default
1274 AC_ARG_WITH(gssapi-includes,
1275 AC_HELP_STRING([--with-gssapi-includes=DIR],
1276 [Specify location of GSSAPI header]),
1277 [ GSSAPI_INCS="-I$withval"
1281 AC_ARG_WITH(gssapi-libs,
1282 AC_HELP_STRING([--with-gssapi-libs=DIR],
1283 [Specify location of GSSAPI libs]),
1284 [ GSSAPI_LIB_DIR="-L$withval"
1289 AC_HELP_STRING([--with-gssapi=DIR],
1290 [Where to look for GSSAPI]), [
1291 GSSAPI_ROOT="$withval"
1292 if test x"$GSSAPI_ROOT" != xno; then
1294 if test x"$GSSAPI_ROOT" = xyes; then
1295 dnl if yes, then use default root
1301 save_CPPFLAGS="$CPPFLAGS"
1302 AC_MSG_CHECKING([if GSSAPI support is requested])
1303 if test x"$want_gss" = xyes; then
1306 if test -z "$GSSAPI_INCS"; then
1307 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1308 GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
1309 elif test "$GSSAPI_ROOT" != "yes"; then
1310 GSSAPI_INCS="-I$GSSAPI_ROOT/include"
1314 CPPFLAGS="$CPPFLAGS $GSSAPI_INCS"
1316 AC_CHECK_HEADER(gss.h,
1318 dnl found in the given dirs
1319 AC_DEFINE(HAVE_GSSGNU, 1, [if you have the GNU gssapi libraries])
1323 dnl not found, check Heimdal or MIT
1324 AC_CHECK_HEADERS([gssapi/gssapi.h], [], [not_mit=1])
1326 [gssapi/gssapi_generic.h gssapi/gssapi_krb5.h],
1331 #ifdef HAVE_GSSAPI_GSSAPI_H
1332 #include <gssapi/gssapi.h>
1335 if test "x$not_mit" = "x1"; then
1336 dnl MIT not found, check for Heimdal
1337 AC_CHECK_HEADER(gssapi.h,
1340 AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have the Heimdal gssapi libraries])
1343 dnl no header found, disabling GSS
1345 AC_MSG_WARN(disabling GSSAPI since no header files was found)
1350 AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
1351 dnl check if we have a really old MIT kerberos (<= 1.2)
1352 AC_MSG_CHECKING([if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE])
1355 #include <gssapi/gssapi.h>
1356 #include <gssapi/gssapi_generic.h>
1357 #include <gssapi/gssapi_krb5.h>
1362 GSS_C_NT_HOSTBASED_SERVICE,
1366 AC_MSG_RESULT([yes])
1369 AC_DEFINE(HAVE_OLD_GSSMIT, 1,
1370 [if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE])
1378 if test x"$want_gss" = xyes; then
1379 AC_DEFINE(HAVE_GSSAPI, 1, [if you have the gssapi libraries])
1381 curl_gss_msg="enabled (MIT/Heimdal)"
1383 if test -n "$gnu_gss"; then
1384 curl_gss_msg="enabled (GNU GSS)"
1385 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1387 elif test -z "$GSSAPI_LIB_DIR"; then
1390 LIBS="-lgssapi_krb5 -lresolv $LIBS"
1393 if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1394 dnl krb5-config doesn't have --libs-only-L or similar, put everything
1396 gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
1397 LIBS="$gss_libs $LIBS"
1398 elif test "$GSSAPI_ROOT" != "yes"; then
1399 LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
1400 LIBS="-lgssapi $LIBS"
1402 LIBS="-lgssapi $LIBS"
1407 LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1408 LIBS="-lgssapi $LIBS"
1411 CPPFLAGS="$save_CPPFLAGS"
1414 dnl -------------------------------------------------
1415 dnl check winssl option before other SSL libraries
1416 dnl -------------------------------------------------
1419 AC_ARG_WITH(winssl,dnl
1420 AC_HELP_STRING([--with-winssl],[enable Windows native SSL/TLS])
1421 AC_HELP_STRING([--without-winssl], [disable Windows native SSL/TLS]),
1422 OPT_WINSSL=$withval)
1424 AC_MSG_CHECKING([whether to enable Windows native SSL/TLS (Windows native builds only)])
1425 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1426 if test "x$OPT_WINSSL" != "xno" &&
1427 test "x$ac_cv_native_windows" = "xyes"; then
1429 AC_DEFINE(USE_SCHANNEL, 1, [to enable Windows native SSL/TLS support])
1430 AC_SUBST(USE_SCHANNEL, [1])
1431 curl_ssl_msg="enabled (Windows-native)"
1433 # --with-winssl implies --enable-sspi
1434 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
1435 AC_SUBST(USE_WINDOWS_SSPI, [1])
1436 curl_sspi_msg="enabled"
1445 AC_ARG_WITH(darwinssl,dnl
1446 AC_HELP_STRING([--with-darwinssl],[enable iOS/Mac OS X native SSL/TLS])
1447 AC_HELP_STRING([--without-darwinssl], [disable iOS/Mac OS X native SSL/TLS]),
1448 OPT_DARWINSSL=$withval)
1450 AC_MSG_CHECKING([whether to enable iOS/Mac OS X native SSL/TLS])
1451 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1452 if test "x$OPT_DARWINSSL" != "xno" &&
1453 test -d "/System/Library/Frameworks/Security.framework"; then
1455 AC_DEFINE(USE_DARWINSSL, 1, [to enable iOS/Mac OS X native SSL/TLS support])
1456 AC_SUBST(USE_DARWINSSL, [1])
1457 curl_ssl_msg="enabled (iOS/Mac OS X-native)"
1459 LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Security"
1467 dnl **********************************************************************
1468 dnl Check for the presence of SSL libraries and headers
1469 dnl **********************************************************************
1471 dnl Default to compiler & linker defaults for SSL files & libraries.
1473 dnl Default to no CA bundle
1476 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])
1477 AC_HELP_STRING([--without-ssl], [disable OpenSSL]),
1480 if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
1481 dnl backup the pre-ssl variables
1482 CLEANLDFLAGS="$LDFLAGS"
1483 CLEANCPPFLAGS="$CPPFLAGS"
1488 dnl --with-ssl (without path) used
1489 if test x$cross_compiling != xyes; then
1490 dnl only do pkg-config magic when not cross-compiling
1493 PREFIX_OPENSSL=/usr/local/ssl
1494 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1497 dnl no --with-ssl option given, just check default places
1498 if test x$cross_compiling != xyes; then
1499 dnl only do pkg-config magic when not cross-compiling
1505 dnl check the given --with-ssl spot
1507 PREFIX_OPENSSL=$OPT_SSL
1509 dnl Try pkg-config even when cross-compiling. Since we
1510 dnl specify PKG_CONFIG_LIBDIR we're only looking where
1511 dnl the user told us to look
1512 OPENSSL_PCDIR="$OPT_SSL/lib/pkgconfig"
1513 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$OPENSSL_PCDIR"])
1514 if test -f "$OPENSSL_PCDIR/openssl.pc"; then
1518 dnl in case pkg-config comes up empty, use what we got
1520 LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1521 if test "$PREFIX_OPENSSL" != "/usr" ; then
1522 SSL_LDFLAGS="-L$LIB_OPENSSL"
1523 SSL_CPPFLAGS="-I$PREFIX_OPENSSL/include"
1525 SSL_CPPFLAGS="$SSL_CPPFLAGS -I$PREFIX_OPENSSL/include/openssl"
1529 if test "$PKGTEST" = "yes"; then
1531 CURL_CHECK_PKGCONFIG(openssl, [$OPENSSL_PCDIR])
1533 if test "$PKGCONFIG" != "no" ; then
1534 SSL_LIBS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1535 $PKGCONFIG --libs-only-l openssl 2>/dev/null`
1537 SSL_LDFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1538 $PKGCONFIG --libs-only-L openssl 2>/dev/null`
1540 SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1541 $PKGCONFIG --cflags-only-I openssl 2>/dev/null`
1543 AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"])
1544 AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"])
1545 AC_MSG_NOTICE([pkg-config: SSL_CPPFLAGS: "$SSL_CPPFLAGS"])
1547 LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/-L//g'`
1549 dnl use the values pkg-config reported. This is here
1550 dnl instead of below with CPPFLAGS and LDFLAGS because we only
1551 dnl learn about this via pkg-config. If we only have
1552 dnl the argument to --with-ssl we don't know what
1553 dnl additional libs may be necessary. Hope that we
1555 LIBS="$SSL_LIBS $LIBS"
1559 dnl finally, set flags to use SSL
1560 CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
1561 LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
1563 dnl This is for Msys/Mingw
1565 *-*-msys* | *-*-mingw*)
1566 AC_MSG_CHECKING([for gdi32])
1567 my_ac_save_LIBS=$LIBS
1568 LIBS="-lgdi32 $LIBS"
1569 AC_TRY_LINK([#include <windef.h>
1570 #include <wingdi.h>],
1573 AC_MSG_RESULT([yes])],
1574 [ dnl failed, restore LIBS
1575 LIBS=$my_ac_save_LIBS
1581 AC_CHECK_LIB(crypto, CRYPTO_lock,[
1583 LIBS="-lcrypto $LIBS"
1585 LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL"
1586 CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include"
1587 AC_CHECK_LIB(crypto, CRYPTO_add_lock,[
1589 LIBS="-lcrypto $LIBS"], [
1590 LDFLAGS="$CLEANLDFLAGS"
1591 CPPFLAGS="$CLEANCPPFLAGS"
1597 if test X"$HAVECRYPTO" = X"yes"; then
1598 dnl This is only reasonable to do if crypto actually is there: check for
1599 dnl SSL libs NOTE: it is important to do this AFTER the crypto lib
1601 AC_CHECK_LIB(ssl, SSL_connect)
1603 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1604 dnl we didn't find the SSL lib, try the RSAglue/rsaref stuff
1605 AC_MSG_CHECKING(for ssl with RSAglue/rsaref libs in use);
1607 LIBS="-lRSAglue -lrsaref $LIBS"
1608 AC_CHECK_LIB(ssl, SSL_connect)
1609 if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1610 dnl still no SSL_connect
1619 dnl Have the libraries--check for SSLeay/OpenSSL headers
1620 AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
1621 openssl/pem.h openssl/ssl.h openssl/err.h,
1622 curl_ssl_msg="enabled (OpenSSL)"
1624 AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]))
1626 if test $ac_cv_header_openssl_x509_h = no; then
1627 dnl we don't use the "action" part of the AC_CHECK_HEADERS macro
1628 dnl since 'err.h' might in fact find a krb4 header with the same
1630 AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h)
1632 if test $ac_cv_header_x509_h = yes &&
1633 test $ac_cv_header_crypto_h = yes &&
1634 test $ac_cv_header_ssl_h = yes; then
1636 curl_ssl_msg="enabled (OpenSSL)"
1642 if test X"$OPENSSL_ENABLED" = X"1"; then
1643 AC_DEFINE(USE_SSLEAY, 1, [if SSL is enabled])
1645 dnl is there a pkcs12.h header present?
1646 AC_CHECK_HEADERS(openssl/pkcs12.h)
1650 dnl USE_SSLEAY is the historical name for what configure calls
1651 dnl OPENSSL_ENABLED; the names should really be unified
1652 USE_SSLEAY="$OPENSSL_ENABLED"
1653 AC_SUBST(USE_SSLEAY)
1655 if test X"$OPT_SSL" != Xoff &&
1656 test "$OPENSSL_ENABLED" != "1"; then
1657 AC_MSG_ERROR([OpenSSL libs and/or directories were not found where specified!])
1661 if test X"$OPENSSL_ENABLED" = X"1"; then
1662 dnl If the ENGINE library seems to be around, check for the OpenSSL engine
1663 dnl stuff, it is kind of "separated" from the main SSL check
1664 AC_CHECK_FUNC(ENGINE_init,
1666 AC_CHECK_HEADERS(openssl/engine.h)
1667 AC_CHECK_FUNCS( ENGINE_load_builtin_engines )
1670 dnl these can only exist if openssl exists
1671 dnl yassl doesn't have SSL_get_shutdown
1673 AC_CHECK_FUNCS( RAND_status \
1677 CRYPTO_cleanup_all_ex_data \
1679 SSLv2_client_method )
1681 dnl Make an attempt to detect if this is actually yassl's headers and
1682 dnl OpenSSL emulation layer. We still leave everything else believing
1683 dnl and acting like OpenSSL.
1685 AC_MSG_CHECKING([for yaSSL using OpenSSL compatibility mode])
1688 #include <openssl/ssl.h>
1690 #if defined(YASSL_VERSION) && defined(OPENSSL_VERSION_NUMBER)
1691 int dummy = SSL_ERROR_NONE;
1693 Not the yaSSL OpenSSL compatibility header.
1697 AC_MSG_RESULT([yes])
1698 AC_DEFINE_UNQUOTED(USE_YASSLEMUL, 1,
1699 [Define to 1 if using yaSSL in OpenSSL compatibility mode.])
1700 curl_ssl_msg="enabled (OpenSSL emulation by yaSSL)"
1706 if test "$OPENSSL_ENABLED" = "1"; then
1707 if test -n "$LIB_OPENSSL"; then
1708 dnl when the ssl shared libs were found in a path that the run-time
1709 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
1710 dnl to prevent further configure tests to fail due to this
1711 if test "x$cross_compiling" != "xyes"; then
1712 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_OPENSSL"
1713 export LD_LIBRARY_PATH
1714 AC_MSG_NOTICE([Added $LIB_OPENSSL to LD_LIBRARY_PATH])
1717 CURL_CHECK_OPENSSL_API
1722 dnl **********************************************************************
1723 dnl Check for the random seed preferences
1724 dnl **********************************************************************
1726 if test X"$OPENSSL_ENABLED" = X"1"; then
1727 AC_ARG_WITH(egd-socket,
1728 AC_HELP_STRING([--with-egd-socket=FILE],
1729 [Entropy Gathering Daemon socket pathname]),
1730 [ EGD_SOCKET="$withval" ]
1732 if test -n "$EGD_SOCKET" ; then
1733 AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET",
1734 [your Entropy Gathering Daemon socket pathname] )
1737 dnl Check for user-specified random device
1739 AC_HELP_STRING([--with-random=FILE],
1740 [read randomness from FILE (default=/dev/urandom)]),
1741 [ RANDOM_FILE="$withval" ],
1743 if test x$cross_compiling != xyes; then
1744 dnl Check for random device
1745 AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
1747 AC_MSG_WARN([skipped the /dev/urandom detection when cross-compiling])
1751 if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
1752 AC_SUBST(RANDOM_FILE)
1753 AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
1754 [a suitable file to read random data from])
1759 dnl We require OpenSSL with SRP support.
1761 if test "$OPENSSL_ENABLED" = "1"; then
1762 AC_CHECK_LIB(crypto, SRP_Calc_client_key,
1764 AC_DEFINE(HAVE_SSLEAY_SRP, 1, [if you have the function SRP_Calc_client_key])
1765 AC_SUBST(HAVE_SSLEAY_SRP, [1])
1769 dnl ----------------------------------------------------
1770 dnl check for GnuTLS
1771 dnl ----------------------------------------------------
1773 dnl Default to compiler & linker defaults for GnuTLS files & libraries.
1776 AC_ARG_WITH(gnutls,dnl
1777 AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root])
1778 AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]),
1779 OPT_GNUTLS=$withval)
1781 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1783 if test X"$OPT_GNUTLS" != Xno; then
1791 if test "x$OPT_GNUTLS" = "xyes"; then
1792 dnl this is with no partiular path given
1793 CURL_CHECK_PKGCONFIG(gnutls)
1795 if test "$PKGCONFIG" != "no" ; then
1796 addlib=`$PKGCONFIG --libs-only-l gnutls`
1797 addld=`$PKGCONFIG --libs-only-L gnutls`
1798 addcflags=`$PKGCONFIG --cflags-only-I gnutls`
1799 version=`$PKGCONFIG --modversion gnutls`
1800 gtlslib=`echo $addld | $SED -e 's/-L//'`
1802 dnl without pkg-config, we try libgnutls-config as that was how it
1804 check=`libgnutls-config --version 2>/dev/null`
1805 if test -n "$check"; then
1806 addlib=`libgnutls-config --libs`
1807 addcflags=`libgnutls-config --cflags`
1808 version=`libgnutls-config --version`
1809 gtlslib=`libgnutls-config --prefix`/lib$libsuff
1813 dnl this is with a given path, first check if there's a libgnutls-config
1814 dnl there and if not, make an educated guess
1815 cfg=$OPT_GNUTLS/bin/libgnutls-config
1816 check=`$cfg --version 2>/dev/null`
1817 if test -n "$check"; then
1818 addlib=`$cfg --libs`
1819 addcflags=`$cfg --cflags`
1820 version=`$cfg --version`
1821 gtlslib=`$cfg --prefix`/lib$libsuff
1823 dnl without pkg-config and libgnutls-config, we guess a lot!
1825 addld=-L$OPT_GNUTLS/lib$libsuff
1826 addcflags=-I$OPT_GNUTLS/include
1827 version="" # we just don't know
1828 gtlslib=$OPT_GNUTLS/lib$libsuff
1832 if test -z "$version"; then
1833 dnl lots of efforts, still no go
1837 if test -n "$addlib"; then
1840 CLEANCPPFLAGS="$CPPFLAGS"
1841 CLEANLDFLAGS="$LDFLAGS"
1843 LIBS="$addlib $LIBS"
1844 LDFLAGS="$LDFLAGS $addld"
1845 if test "$addcflags" != "-I/usr/include"; then
1846 CPPFLAGS="$CPPFLAGS $addcflags"
1849 AC_CHECK_LIB(gnutls, gnutls_check_version,
1851 AC_DEFINE(USE_GNUTLS, 1, [if GnuTLS is enabled])
1852 AC_SUBST(USE_GNUTLS, [1])
1855 curl_ssl_msg="enabled (GnuTLS)"
1859 CPPFLAGS="$CLEANCPPFLAGS"
1862 if test "x$USE_GNUTLS" = "xyes"; then
1863 AC_MSG_NOTICE([detected GnuTLS version $version])
1865 if test -n "$gtlslib"; then
1866 dnl when shared libs were found in a path that the run-time
1867 dnl linker doesn't search through, we need to add it to
1868 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1870 if test "x$cross_compiling" != "xyes"; then
1871 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlslib"
1872 export LD_LIBRARY_PATH
1873 AC_MSG_NOTICE([Added $gtlslib to LD_LIBRARY_PATH])
1880 fi dnl GNUTLS not disabled
1885 dnl Check which crypto backend GnuTLS uses
1888 if test "$GNUTLS_ENABLED" = "1"; then
1890 # First check if we can detect either crypto library via transitive linking
1891 AC_CHECK_LIB(gnutls, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1892 if test "$USE_GNUTLS_NETTLE" = ""; then
1893 AC_CHECK_LIB(gnutls, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1895 # If not, try linking directly to both of them to see if they are available
1896 if test "$USE_GNUTLS_NETTLE" = ""; then
1897 AC_CHECK_LIB(nettle, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1899 if test "$USE_GNUTLS_NETTLE" = ""; then
1900 AC_CHECK_LIB(gcrypt, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1902 if test "$USE_GNUTLS_NETTLE" = ""; then
1903 AC_MSG_ERROR([GnuTLS found, but neither gcrypt nor nettle found])
1905 if test "$USE_GNUTLS_NETTLE" = "1"; then
1906 AC_DEFINE(USE_GNUTLS_NETTLE, 1, [if GnuTLS uses nettle as crypto backend])
1907 AC_SUBST(USE_GNUTLS_NETTLE, [1])
1908 LIBS="-lnettle $LIBS"
1910 LIBS="-lgcrypt $LIBS"
1915 dnl We require GnuTLS with SRP support.
1917 if test "$GNUTLS_ENABLED" = "1"; then
1918 AC_CHECK_LIB(gnutls, gnutls_srp_verifier,
1920 AC_DEFINE(HAVE_GNUTLS_SRP, 1, [if you have the function gnutls_srp_verifier])
1921 AC_SUBST(HAVE_GNUTLS_SRP, [1])
1925 dnl ----------------------------------------------------
1926 dnl check for PolarSSL
1927 dnl ----------------------------------------------------
1929 dnl Default to compiler & linker defaults for PolarSSL files & libraries.
1934 AC_ARG_WITH(polarssl,dnl
1935 AC_HELP_STRING([--with-polarssl=PATH],[where to look for PolarSSL, PATH points to the installation root])
1936 AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]),
1937 OPT_POLARSSL=$withval)
1939 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1941 if test X"$OPT_POLARSSL" != Xno; then
1943 if test "$OPT_POLARSSL" = "yes"; then
1947 if test -z "$OPT_POLARSSL" ; then
1948 dnl check for lib first without setting any new path
1950 AC_CHECK_LIB(polarssl, havege_init,
1951 dnl libpolarssl found, set the variable
1953 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1954 AC_SUBST(USE_POLARSSL, [1])
1957 curl_ssl_msg="enabled (PolarSSL)"
1966 if test "x$USE_POLARSSL" != "xyes"; then
1967 dnl add the path and test again
1968 addld=-L$OPT_POLARSSL/lib$libsuff
1969 addcflags=-I$OPT_POLARSSL/include
1970 polarssllib=$OPT_POLARSSL/lib$libsuff
1972 LDFLAGS="$LDFLAGS $addld"
1973 if test "$addcflags" != "-I/usr/include"; then
1974 CPPFLAGS="$CPPFLAGS $addcflags"
1977 AC_CHECK_LIB(polarssl, ssl_init,
1979 AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1980 AC_SUBST(USE_POLARSSL, [1])
1983 curl_ssl_msg="enabled (PolarSSL)"
1991 if test "x$USE_POLARSSL" = "xyes"; then
1992 AC_MSG_NOTICE([detected PolarSSL])
1994 LIBS="-lpolarssl $LIBS"
1996 if test -n "$polarssllib"; then
1997 dnl when shared libs were found in a path that the run-time
1998 dnl linker doesn't search through, we need to add it to
1999 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2001 if test "x$cross_compiling" != "xyes"; then
2002 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$polarssllib"
2003 export LD_LIBRARY_PATH
2004 AC_MSG_NOTICE([Added $polarssllib to LD_LIBRARY_PATH])
2009 fi dnl PolarSSL not disabled
2013 dnl ----------------------------------------------------
2014 dnl check for CyaSSL
2015 dnl ----------------------------------------------------
2017 dnl Default to compiler & linker defaults for CyaSSL files & libraries.
2022 AC_ARG_WITH(cyassl,dnl
2023 AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to the installation root (default: system lib default)])
2024 AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
2025 OPT_CYASSL=$withval)
2027 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2029 if test X"$OPT_CYASSL" != Xno; then
2031 if test "$OPT_CYASSL" = "yes"; then
2035 if test -z "$OPT_CYASSL" ; then
2036 dnl check for lib in system default first
2038 AC_CHECK_LIB(cyassl, CyaSSL_Init,
2039 dnl libcyassl found, set the variable
2041 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2042 AC_SUBST(USE_CYASSL, [1])
2045 curl_ssl_msg="enabled (CyaSSL)"
2054 if test "x$USE_CYASSL" != "xyes"; then
2055 dnl add the path and test again
2056 addld=-L$OPT_CYASSL/lib$libsuff
2057 addcflags=-I$OPT_CYASSL/include
2058 cyassllib=$OPT_CYASSL/lib$libsuff
2060 LDFLAGS="$LDFLAGS $addld"
2061 if test "$addcflags" != "-I/usr/include"; then
2062 CPPFLAGS="$CPPFLAGS $addcflags"
2065 AC_CHECK_LIB(cyassl, CyaSSL_Init,
2067 AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2068 AC_SUBST(USE_CYASSL, [1])
2071 curl_ssl_msg="enabled (CyaSSL)"
2079 if test "x$USE_CYASSL" = "xyes"; then
2080 AC_MSG_NOTICE([detected CyaSSL])
2082 LIBS="-lcyassl -lm $LIBS"
2084 if test -n "$cyassllib"; then
2085 dnl when shared libs were found in a path that the run-time
2086 dnl linker doesn't search through, we need to add it to
2087 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2089 if test "x$cross_compiling" != "xyes"; then
2090 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$cyassllib"
2091 export LD_LIBRARY_PATH
2092 AC_MSG_NOTICE([Added $cyassllib to LD_LIBRARY_PATH])
2098 fi dnl CyaSSL not disabled
2102 dnl ----------------------------------------------------
2103 dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
2104 dnl ----------------------------------------------------
2106 dnl Default to compiler & linker defaults for NSS files & libraries.
2110 AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root])
2111 AC_HELP_STRING([--without-nss], [disable NSS detection]),
2114 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2116 if test X"$OPT_NSS" != Xno; then
2124 if test "x$OPT_NSS" = "xyes"; then
2126 CURL_CHECK_PKGCONFIG(nss)
2128 if test "$PKGCONFIG" != "no" ; then
2129 addlib=`$PKGCONFIG --libs nss`
2130 addcflags=`$PKGCONFIG --cflags nss`
2131 version=`$PKGCONFIG --modversion nss`
2132 nssprefix=`$PKGCONFIG --variable=prefix nss`
2134 dnl Without pkg-config, we check for nss-config
2136 check=`nss-config --version 2>/dev/null`
2137 if test -n "$check"; then
2138 addlib=`nss-config --libs`
2139 addcflags=`nss-config --cflags`
2140 version=`nss-config --version`
2141 nssprefix=`nss-config --prefix`
2149 # Without pkg-config, we'll kludge in some defaults
2150 addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
2151 addcflags="-I$OPT_NSS/include"
2156 if test -n "$addlib"; then
2159 CLEANCPPFLAGS="$CPPFLAGS"
2161 LIBS="$addlib $LIBS"
2162 if test "$addcflags" != "-I/usr/include"; then
2163 CPPFLAGS="$CPPFLAGS $addcflags"
2166 dnl The function PK11_CreateGenericObject is needed to load libnsspem.so
2167 AC_CHECK_LIB(nss3, PK11_CreateGenericObject,
2169 AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
2170 AC_SUBST(USE_NSS, [1])
2173 curl_ssl_msg="enabled (NSS)"
2177 CPPFLAGS="$CLEANCPPFLAGS"
2180 if test "x$USE_NSS" = "xyes"; then
2181 AC_MSG_NOTICE([detected NSS version $version])
2183 dnl NSS_InitContext() was introduced in NSS 3.12.5 and helps to prevent
2184 dnl collisions on NSS initialization/shutdown with other libraries
2185 AC_CHECK_FUNC(NSS_InitContext,
2187 AC_DEFINE(HAVE_NSS_INITCONTEXT, 1, [if you have the NSS_InitContext function])
2188 AC_SUBST(HAVE_NSS_INITCONTEXT, [1])
2191 dnl when shared libs were found in a path that the run-time
2192 dnl linker doesn't search through, we need to add it to
2193 dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2195 if test "x$cross_compiling" != "xyes"; then
2196 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
2197 export LD_LIBRARY_PATH
2198 AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
2204 fi dnl NSS not disabled
2206 fi dnl curl_ssl_msg = init_ssl_msg
2210 AC_ARG_WITH(axtls,dnl
2211 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.])
2212 AC_HELP_STRING([--without-axtls], [disable axTLS]),
2215 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2216 if test X"$OPT_AXTLS" != Xno; then
2217 dnl backup the pre-axtls variables
2218 CLEANLDFLAGS="$LDFLAGS"
2219 CLEANCPPFLAGS="$CPPFLAGS"
2222 case "$OPT_AXTLS" in
2224 dnl --with-axtls (without path) used
2225 PREFIX_AXTLS=/usr/local
2226 LIB_AXTLS="$PREFIX_AXTLS/lib"
2227 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2228 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2231 dnl no --with-axtls option given, just check default places
2235 dnl check the given --with-axtls spot
2236 PREFIX_AXTLS=$OPT_AXTLS
2237 LIB_AXTLS="$PREFIX_AXTLS/lib"
2238 LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2239 CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2243 AC_CHECK_LIB(axtls, ssl_version,[
2244 LIBS="-laxtls $LIBS"
2245 AC_DEFINE(USE_AXTLS, 1, [if axTLS is enabled])
2246 AC_SUBST(USE_AXTLS, [1])
2249 curl_ssl_msg="enabled (axTLS)"
2252 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
2253 export LD_LIBRARY_PATH
2254 AC_MSG_NOTICE([Added $LIB_AXTLS to LD_LIBRARY_PATH])
2256 LDFLAGS="$CLEANLDFLAGS"
2257 CPPFLAGS="$CLEANCPPFLAGS"
2263 if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$DARWINSSL_ENABLED" = "x"; then
2264 AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
2265 AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls, --with-winssl, or --with-darwinssl to address this.])
2267 # SSL is enabled, genericly
2268 AC_SUBST(SSL_ENABLED)
2272 dnl **********************************************************************
2273 dnl Check for the CA bundle
2274 dnl **********************************************************************
2276 CURL_CHECK_CA_BUNDLE
2278 dnl **********************************************************************
2279 dnl Check for libmetalink
2280 dnl **********************************************************************
2284 AC_ARG_WITH(libmetalink,dnl
2285 AC_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root])
2286 AC_HELP_STRING([--without-libmetalink], [disable libmetalink detection]),
2287 OPT_LIBMETALINK=$withval)
2289 if test X"$OPT_LIBMETALINK" != Xno; then
2298 if test "x$OPT_LIBMETALINK" = "xyes"; then
2299 dnl this is with no partiular path given
2301 CURL_CHECK_PKGCONFIG(libmetalink)
2303 dnl When particular path is given, set PKG_CONFIG_LIBDIR using the path.
2304 LIBMETALINK_PCDIR="$OPT_LIBMETALINK/lib/pkgconfig"
2305 AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$LIBMETALINK_PCDIR"])
2306 if test -f "$LIBMETALINK_PCDIR/libmetalink.pc"; then
2309 if test "$PKGTEST" = "yes"; then
2310 CURL_CHECK_PKGCONFIG(libmetalink, [$LIBMETALINK_PCDIR])
2313 if test "$PKGTEST" = "yes" && test "$PKGCONFIG" != "no"; then
2314 addlib=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2315 $PKGCONFIG --libs-only-l libmetalink`
2316 addld=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2317 $PKGCONFIG --libs-only-L libmetalink`
2318 addcflags=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2319 $PKGCONFIG --cflags-only-I libmetalink`
2320 version=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2321 $PKGCONFIG --modversion libmetalink`
2322 libmetalinklib=`echo $addld | $SED -e 's/-L//'`
2324 if test -n "$addlib"; then
2326 clean_CPPFLAGS="$CPPFLAGS"
2327 clean_LDFLAGS="$LDFLAGS"
2329 CPPFLAGS="$addcflags $clean_CPPFLAGS"
2330 LDFLAGS="$addld $clean_LDFLAGS"
2331 LIBS="$addlib $clean_LIBS"
2332 AC_MSG_CHECKING([if libmetalink is recent enough])
2335 # include <metalink/metalink.h>
2337 if(0 != metalink_strerror(0)) /* added in 0.1.0 */
2341 AC_MSG_RESULT([yes ($version)])
2344 AC_MSG_RESULT([no ($version)])
2345 AC_MSG_NOTICE([libmetalink library defective or too old])
2348 CPPFLAGS="$clean_CPPFLAGS"
2349 LDFLAGS="$clean_LDFLAGS"
2351 if test "$want_metalink" = "yes"; then
2352 dnl finally libmetalink will be used
2353 AC_DEFINE(USE_METALINK, 1, [Define to enable metalink support])
2354 LIBMETALINK_LIBS=$addlib
2355 LIBMETALINK_LDFLAGS=$addld
2356 LIBMETALINK_CPPFLAGS=$addcflags
2357 AC_SUBST([LIBMETALINK_LIBS])
2358 AC_SUBST([LIBMETALINK_LDFLAGS])
2359 AC_SUBST([LIBMETALINK_CPPFLAGS])
2360 curl_mtlnk_msg="enabled"
2366 dnl **********************************************************************
2367 dnl Check for the presence of LIBSSH2 libraries and headers
2368 dnl **********************************************************************
2370 dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
2372 AC_ARG_WITH(libssh2,dnl
2373 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])
2374 AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
2375 OPT_LIBSSH2=$withval)
2377 if test X"$OPT_LIBSSH2" != Xno; then
2378 dnl backup the pre-libssh2 variables
2379 CLEANLDFLAGS="$LDFLAGS"
2380 CLEANCPPFLAGS="$CPPFLAGS"
2383 case "$OPT_LIBSSH2" in
2385 dnl --with-libssh2 (without path) used
2386 CURL_CHECK_PKGCONFIG(libssh2)
2388 if test "$PKGCONFIG" != "no" ; then
2389 LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2`
2390 LD_SSH2=`$PKGCONFIG --libs-only-L libssh2`
2391 CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2`
2392 version=`$PKGCONFIG --modversion libssh2`
2393 DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'`
2398 dnl no --with-libssh2 option given, just check default places
2401 dnl use the given --with-libssh2 spot
2402 PREFIX_SSH2=$OPT_LIBSSH2
2406 dnl if given with a prefix, we set -L and -I based on that
2407 if test -n "$PREFIX_SSH2"; then
2409 LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff
2410 CPP_SSH2=-I${PREFIX_SSH2}/include
2411 DIR_SSH2=${PREFIX_SSH2}/lib$libsuff
2414 LDFLAGS="$LDFLAGS $LD_SSH2"
2415 CPPFLAGS="$CPPFLAGS $CPP_SSH2"
2416 LIBS="$LIB_SSH2 $LIBS"
2418 AC_CHECK_LIB(ssh2, libssh2_channel_open_ex)
2420 AC_CHECK_HEADERS(libssh2.h,
2421 curl_ssh_msg="enabled (libSSH2)"
2423 AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
2424 AC_SUBST(USE_LIBSSH2, [1])
2427 if test X"$OPT_LIBSSH2" != Xoff &&
2428 test "$LIBSSH2_ENABLED" != "1"; then
2429 AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!])
2432 if test "$LIBSSH2_ENABLED" = "1"; then
2433 if test -n "$DIR_SSH2"; then
2434 dnl when the libssh2 shared libs were found in a path that the run-time
2435 dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
2436 dnl to prevent further configure tests to fail due to this
2438 dnl libssh2_version is a post 1.0 addition
2439 dnl libssh2_init and libssh2_exit were added in 1.2.5
2440 dnl libssh2_scp_send64 was added in 1.2.6
2441 dnl libssh2_session_handshake was added in 1.2.8
2442 AC_CHECK_FUNCS( libssh2_version libssh2_init libssh2_exit \
2443 libssh2_scp_send64 libssh2_session_handshake)
2444 if test "x$cross_compiling" != "xyes"; then
2445 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
2446 export LD_LIBRARY_PATH
2447 AC_MSG_NOTICE([Added $DIR_SSH2 to LD_LIBRARY_PATH])
2451 dnl no libssh2, revert back to clean variables
2452 LDFLAGS=$CLEANLDFLAGS
2453 CPPFLAGS=$CLEANCPPFLAGS
2458 dnl **********************************************************************
2459 dnl Check for the presence of LIBRTMP libraries and headers
2460 dnl **********************************************************************
2462 dnl Default to compiler & linker defaults for LIBRTMP files & libraries.
2464 AC_ARG_WITH(librtmp,dnl
2465 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])
2466 AC_HELP_STRING([--without-librtmp], [disable LIBRTMP]),
2467 OPT_LIBRTMP=$withval)
2469 if test X"$OPT_LIBRTMP" != Xno; then
2470 dnl backup the pre-librtmp variables
2471 CLEANLDFLAGS="$LDFLAGS"
2472 CLEANCPPFLAGS="$CPPFLAGS"
2475 case "$OPT_LIBRTMP" in
2477 dnl --with-librtmp (without path) used
2478 CURL_CHECK_PKGCONFIG(librtmp)
2480 if test "$PKGCONFIG" != "no" ; then
2481 LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp`
2482 LD_RTMP=`$PKGCONFIG --libs-only-L librtmp`
2483 CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp`
2484 version=`$PKGCONFIG --modversion librtmp`
2485 DIR_RTMP=`echo $LD_RTMP | $SED -e 's/-L//'`
2487 dnl To avoid link errors, we do not allow --librtmp without
2488 dnl a pkgconfig file
2489 AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.])
2494 dnl no --with-librtmp option given, just check default places
2498 dnl use the given --with-librtmp spot
2499 PREFIX_RTMP=$OPT_LIBRTMP
2503 dnl if given with a prefix, we set -L and -I based on that
2504 if test -n "$PREFIX_RTMP"; then
2505 LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff
2506 CPP_RTMP=-I${PREFIX_RTMP}/include
2507 DIR_RTMP=${PREFIX_RTMP}/lib$libsuff
2510 LDFLAGS="$LDFLAGS $LD_RTMP"
2511 CPPFLAGS="$CPPFLAGS $CPP_RTMP"
2512 LIBS="$LIB_RTMP $LIBS"
2514 AC_CHECK_LIB(rtmp, RTMP_Init,
2516 AC_CHECK_HEADERS(librtmp/rtmp.h,
2517 curl_rtmp_msg="enabled (librtmp)"
2519 AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use])
2520 AC_SUBST(USE_LIBRTMP, [1])
2523 dnl not found, revert back to clean variables
2524 LDFLAGS=$CLEANLDFLAGS
2525 CPPFLAGS=$CLEANCPPFLAGS
2529 if test X"$OPT_LIBRTMP" != Xoff &&
2530 test "$LIBRTMP_ENABLED" != "1"; then
2531 AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!])
2536 dnl **********************************************************************
2537 dnl Check for linker switch for versioned symbols
2538 dnl **********************************************************************
2540 versioned_symbols_flavour=
2541 AC_MSG_CHECKING([whether versioned symbols are wanted])
2542 AC_ARG_ENABLE(versioned-symbols,
2543 AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library])
2544 AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]),
2545 [ case "$enableval" in
2546 yes) AC_MSG_RESULT(yes)
2547 AC_MSG_CHECKING([if libraries can be versioned])
2548 GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
2549 if test -z "$GLD"; then
2551 AC_MSG_WARN([You need an ld version supporting the --version-script option])
2554 if test "x$OPENSSL_ENABLED" = "x1"; then
2555 versioned_symbols_flavour="OPENSSL_"
2556 elif test "x$GNUTLS_ENABLED" == "x1"; then
2557 versioned_symbols_flavour="GNUTLS_"
2558 elif test "x$NSS_ENABLED" == "x1"; then
2559 versioned_symbols_flavour="NSS_"
2560 elif test "x$POLARSSL_ENABLED" == "x1"; then
2561 versioned_symbols_flavour="POLARSSL_"
2562 elif test "x$CYASSL_ENABLED" == "x1"; then
2563 versioned_symbols_flavour="CYASSL_"
2564 elif test "x$AXTLS_ENABLED" == "x1"; then
2565 versioned_symbols_flavour="AXTLS_"
2566 elif test "x$WINSSL_ENABLED" == "x1"; then
2567 versioned_symbols_flavour="WINSSL_"
2568 elif test "x$DARWINSSL_ENABLED" == "x1"; then
2569 versioned_symbols_flavour="DARWINSSL_"
2571 versioned_symbols_flavour=""
2573 versioned_symbols="yes"
2577 *) AC_MSG_RESULT(no)
2585 AC_SUBST([CURL_LT_SHLIB_VERSIONED_FLAVOUR],
2586 ["$versioned_symbols_flavour"])
2587 AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS],
2588 [test "x$versioned_symbols" = 'xyes'])
2590 dnl -------------------------------------------------
2591 dnl check winidn option before other IDN libraries
2592 dnl -------------------------------------------------
2594 AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)])
2595 OPT_WINIDN="default"
2597 AC_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN])
2598 AC_HELP_STRING([--without-winidn], [disable Windows native IDN]),
2599 OPT_WINIDN=$withval)
2600 case "$OPT_WINIDN" in
2602 dnl --without-winidn option used or configure option not specified
2607 dnl --with-winidn option used without path
2609 want_winidn_path="default"
2610 AC_MSG_RESULT([yes])
2613 dnl --with-winidn option used with path
2615 want_winidn_path="$withval"
2616 AC_MSG_RESULT([yes ($withval)])
2620 if test "$want_winidn" = "yes"; then
2621 dnl winidn library support has been requested
2622 clean_CPPFLAGS="$CPPFLAGS"
2623 clean_LDFLAGS="$LDFLAGS"
2625 WINIDN_LIBS="-lnormaliz"
2627 if test "$want_winidn_path" != "default"; then
2628 dnl path has been specified
2629 dnl pkg-config not available or provides no info
2630 WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff"
2631 WINIDN_CPPFLAGS="-I$want_winidn_path/include"
2632 WINIDN_DIR="$want_winidn_path/lib$libsuff"
2635 CPPFLAGS="$WINIDN_CPPFLAGS $CPPFLAGS"
2636 LDFLAGS="$WINIDN_LDFLAGS $LDFLAGS"
2637 LIBS="$WINIDN_LIBS $LIBS"
2639 AC_MSG_CHECKING([if IdnToUnicode can be linked])
2641 AC_LANG_FUNC_LINK_TRY([IdnToUnicode])
2643 AC_MSG_RESULT([yes])
2644 tst_links_winidn="yes"
2647 tst_links_winidn="no"
2650 if test "$tst_links_winidn" = "yes"; then
2651 AC_DEFINE(USE_WIN32_IDN, 1, [Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz).])
2652 AC_DEFINE(WANT_IDN_PROTOTYPES, 1, [Define to 1 to provide own prototypes.])
2653 AC_SUBST([IDN_ENABLED], [1])
2654 curl_idn_msg="enabled (Windows-native)"
2656 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2657 CPPFLAGS="$clean_CPPFLAGS"
2658 LDFLAGS="$clean_LDFLAGS"
2663 dnl **********************************************************************
2664 dnl Check for the presence of IDN libraries and headers
2665 dnl **********************************************************************
2667 AC_MSG_CHECKING([whether to build with libidn])
2670 AC_HELP_STRING([--with-libidn=PATH],[Enable libidn usage])
2671 AC_HELP_STRING([--without-libidn],[Disable libidn usage]),
2675 dnl --without-libidn option used
2680 dnl configure option not specified
2682 want_idn_path="default"
2683 AC_MSG_RESULT([(assumed) yes])
2686 dnl --with-libidn option used without path
2688 want_idn_path="default"
2689 AC_MSG_RESULT([yes])
2692 dnl --with-libidn option used with path
2694 want_idn_path="$withval"
2695 AC_MSG_RESULT([yes ($withval)])
2699 if test "$want_idn" = "yes"; then
2700 dnl idn library support has been requested
2701 clean_CPPFLAGS="$CPPFLAGS"
2702 clean_LDFLAGS="$LDFLAGS"
2706 if test "$want_idn_path" != "default"; then
2707 dnl path has been specified
2708 IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig"
2709 CURL_CHECK_PKGCONFIG(libidn, [$IDN_PCDIR])
2710 if test "$PKGCONFIG" != "no"; then
2711 IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2712 $PKGCONFIG --libs-only-l libidn 2>/dev/null`
2713 IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2714 $PKGCONFIG --libs-only-L libidn 2>/dev/null`
2715 IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2716 $PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2717 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2719 dnl pkg-config not available or provides no info
2721 IDN_LDFLAGS="-L$want_idn_path/lib$libsuff"
2722 IDN_CPPFLAGS="-I$want_idn_path/include"
2723 IDN_DIR="$want_idn_path/lib$libsuff"
2726 dnl path not specified
2727 CURL_CHECK_PKGCONFIG(libidn)
2728 if test "$PKGCONFIG" != "no"; then
2729 IDN_LIBS=`$PKGCONFIG --libs-only-l libidn 2>/dev/null`
2730 IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn 2>/dev/null`
2731 IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2732 IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2734 dnl pkg-config not available or provides no info
2739 if test "$PKGCONFIG" != "no"; then
2740 AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"])
2741 AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"])
2742 AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2743 AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"])
2745 AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"])
2746 AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"])
2747 AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2748 AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"])
2751 CPPFLAGS="$IDN_CPPFLAGS $CPPFLAGS"
2752 LDFLAGS="$IDN_LDFLAGS $LDFLAGS"
2753 LIBS="$IDN_LIBS $LIBS"
2755 AC_MSG_CHECKING([if idna_to_ascii_4i can be linked])
2757 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_4i])
2759 AC_MSG_RESULT([yes])
2760 tst_links_libidn="yes"
2763 tst_links_libidn="no"
2765 if test "$tst_links_libidn" = "no"; then
2766 AC_MSG_CHECKING([if idna_to_ascii_lz can be linked])
2768 AC_LANG_FUNC_LINK_TRY([idna_to_ascii_lz])
2770 AC_MSG_RESULT([yes])
2771 tst_links_libidn="yes"
2774 tst_links_libidn="no"
2778 if test "$tst_links_libidn" = "yes"; then
2779 AC_DEFINE(HAVE_LIBIDN, 1, [Define to 1 if you have the `idn' library (-lidn).])
2780 dnl different versions of libidn have different setups of these:
2781 AC_CHECK_FUNCS( idn_free idna_strerror tld_strerror )
2782 AC_CHECK_HEADERS( idn-free.h tld.h )
2783 if test "x$ac_cv_header_tld_h" = "xyes"; then
2784 AC_SUBST([IDN_ENABLED], [1])
2785 curl_idn_msg="enabled"
2786 if test -n "$IDN_DIR"; then
2787 LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
2788 export LD_LIBRARY_PATH
2789 AC_MSG_NOTICE([Added $IDN_DIR to LD_LIBRARY_PATH])
2792 AC_MSG_WARN([Libraries for IDN support too old: IDN disabled])
2793 CPPFLAGS="$clean_CPPFLAGS"
2794 LDFLAGS="$clean_LDFLAGS"
2798 AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2799 CPPFLAGS="$clean_CPPFLAGS"
2800 LDFLAGS="$clean_LDFLAGS"
2806 dnl Let's hope this split URL remains working:
2807 dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
2808 dnl genprogc/thread_quick_ref.htm
2811 dnl **********************************************************************
2812 dnl Back to "normal" configuring
2813 dnl **********************************************************************
2815 dnl Checks for header files.
2818 CURL_CHECK_HEADER_MALLOC
2819 CURL_CHECK_HEADER_MEMORY
2821 dnl Now check for the very most basic headers. Then we can use these
2822 dnl ones as default-headers when checking for the rest!
2865 dnl to do if not found
2869 dnl default includes
2871 #ifdef HAVE_SYS_TYPES_H
2872 #include <sys/types.h>
2874 #ifdef HAVE_SYS_TIME_H
2875 #include <sys/time.h>
2877 #ifdef HAVE_SYS_SELECT_H
2878 #include <sys/select.h>
2880 #ifdef HAVE_SYS_SOCKET_H
2881 #include <sys/socket.h>
2883 #ifdef HAVE_NETINET_IN_H
2884 #include <netinet/in.h>
2886 #ifdef HAVE_SYS_UN_H
2892 dnl Checks for typedefs, structures, and compiler characteristics.
2894 CURL_CHECK_VARIADIC_MACROS
2897 CURL_CHECK_STRUCT_TIMEVAL
2898 CURL_VERIFY_RUNTIMELIBS
2900 AC_CHECK_SIZEOF(size_t)
2901 AC_CHECK_SIZEOF(long)
2902 AC_CHECK_SIZEOF(int)
2903 AC_CHECK_SIZEOF(short)
2905 AC_CHECK_SIZEOF(time_t)
2906 AC_CHECK_SIZEOF(off_t)
2909 if test x"$ac_cv_native_windows" != "xyes" &&
2910 test $ac_cv_sizeof_off_t -ne $curl_sizeof_curl_off_t; then
2911 AC_MSG_WARN([This libcurl built is probably not ABI compatible with previous])
2912 AC_MSG_WARN([builds! You MUST read lib/README.curl_off_t to figure it out.])
2917 AC_CHECK_TYPE(long long,
2918 [AC_DEFINE(HAVE_LONGLONG, 1,
2919 [Define to 1 if the compiler supports the 'long long' data type.])]
2923 if test "xyes" = "x$longlong"; then
2924 AC_MSG_CHECKING([if numberLL works])
2928 long long val = 1000LL;
2931 AC_MSG_RESULT([yes])
2932 AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
2940 AC_CHECK_TYPE(ssize_t, ,
2941 AC_DEFINE(ssize_t, int, [the signed version of size_t]))
2943 # check for bool type
2944 AC_CHECK_TYPE([bool],[
2945 AC_DEFINE(HAVE_BOOL_T, 1,
2946 [Define to 1 if bool is an available type.])
2948 #ifdef HAVE_SYS_TYPES_H
2949 #include <sys/types.h>
2951 #ifdef HAVE_STDBOOL_H
2952 #include <stdbool.h>
2956 CURL_CONFIGURE_CURL_SOCKLEN_T
2958 CURL_CONFIGURE_PULL_SYS_POLL
2962 TYPE_SOCKADDR_STORAGE
2968 CURL_CHECK_FUNC_SELECT
2970 CURL_CHECK_FUNC_RECV
2971 CURL_CHECK_FUNC_SEND
2972 CURL_CHECK_MSG_NOSIGNAL
2974 CURL_CHECK_FUNC_ALARM
2975 CURL_CHECK_FUNC_BASENAME
2976 CURL_CHECK_FUNC_CLOSESOCKET
2977 CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
2978 CURL_CHECK_FUNC_CONNECT
2979 CURL_CHECK_FUNC_FCNTL
2980 CURL_CHECK_FUNC_FDOPEN
2981 CURL_CHECK_FUNC_FREEADDRINFO
2982 CURL_CHECK_FUNC_FREEIFADDRS
2983 CURL_CHECK_FUNC_FSETXATTR
2984 CURL_CHECK_FUNC_FTRUNCATE
2985 CURL_CHECK_FUNC_GETADDRINFO
2986 CURL_CHECK_FUNC_GAI_STRERROR
2987 CURL_CHECK_FUNC_GETHOSTBYADDR
2988 CURL_CHECK_FUNC_GETHOSTBYADDR_R
2989 CURL_CHECK_FUNC_GETHOSTBYNAME
2990 CURL_CHECK_FUNC_GETHOSTBYNAME_R
2991 CURL_CHECK_FUNC_GETHOSTNAME
2992 CURL_CHECK_FUNC_GETIFADDRS
2993 CURL_CHECK_FUNC_GETSERVBYPORT_R
2994 CURL_CHECK_FUNC_GMTIME_R
2995 CURL_CHECK_FUNC_INET_NTOA_R
2996 CURL_CHECK_FUNC_INET_NTOP
2997 CURL_CHECK_FUNC_INET_PTON
2998 CURL_CHECK_FUNC_IOCTL
2999 CURL_CHECK_FUNC_IOCTLSOCKET
3000 CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
3001 CURL_CHECK_FUNC_LOCALTIME_R
3002 CURL_CHECK_FUNC_MEMRCHR
3003 CURL_CHECK_FUNC_POLL
3004 CURL_CHECK_FUNC_SETSOCKOPT
3005 CURL_CHECK_FUNC_SIGACTION
3006 CURL_CHECK_FUNC_SIGINTERRUPT
3007 CURL_CHECK_FUNC_SIGNAL
3008 CURL_CHECK_FUNC_SIGSETJMP
3009 CURL_CHECK_FUNC_SOCKET
3010 CURL_CHECK_FUNC_SOCKETPAIR
3011 CURL_CHECK_FUNC_STRCASECMP
3012 CURL_CHECK_FUNC_STRCMPI
3013 CURL_CHECK_FUNC_STRDUP
3014 CURL_CHECK_FUNC_STRERROR_R
3015 CURL_CHECK_FUNC_STRICMP
3016 CURL_CHECK_FUNC_STRNCASECMP
3017 CURL_CHECK_FUNC_STRNCMPI
3018 CURL_CHECK_FUNC_STRNICMP
3019 CURL_CHECK_FUNC_STRSTR
3020 CURL_CHECK_FUNC_STRTOK_R
3021 CURL_CHECK_FUNC_STRTOLL
3022 CURL_CHECK_FUNC_WRITEV
3028 AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
3032 AC_CHECK_FUNCS([fork \
3051 eval skipcheck=\$skipcheck_$func
3052 if test "x$skipcheck" != "xyes"; then
3053 AC_MSG_CHECKING([deeper for $func])
3060 AC_MSG_RESULT([yes])
3061 eval "ac_cv_func_$func=yes"
3062 AC_DEFINE_UNQUOTED(XC_SH_TR_CPP([HAVE_$func]), [1],
3063 [Define to 1 if you have the $func function.])
3065 AC_MSG_RESULT([but still no])
3070 dnl Check if the getnameinfo function is available
3071 dnl and get the types of five of its arguments.
3072 CURL_CHECK_FUNC_GETNAMEINFO
3074 if test "$ipv6" = "yes"; then
3075 if test "$ac_cv_func_getaddrinfo" = "yes"; then
3076 AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
3078 AC_SUBST(IPV6_ENABLED)
3080 CURL_CHECK_NI_WITHSCOPEID
3083 CURL_CHECK_NONBLOCKING_SOCKET
3085 dnl ************************************************************
3086 dnl nroff tool stuff
3089 AC_PATH_PROG( PERL, perl, ,
3090 $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
3093 AC_PATH_PROGS( NROFF, gnroff nroff, ,
3094 $PATH:/usr/bin/:/usr/local/bin )
3097 if test -n "$NROFF"; then
3098 dnl only check for nroff options if an nroff command was found
3100 AC_MSG_CHECKING([how to use *nroff to get plain text from man pages])
3102 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3103 if test -z "$mancheck"; then
3105 mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3106 if test -z "$mancheck"; then
3108 AC_MSG_RESULT([failed])
3109 AC_MSG_WARN([found no *nroff option to get plaintext from man pages])
3111 AC_MSG_RESULT([$MANOPT])
3114 AC_MSG_RESULT([$MANOPT])
3119 if test -z "$MANOPT"
3121 dnl if no nroff tool was found, or no option that could convert man pages
3122 dnl was found, then disable the built-in manual stuff
3123 AC_MSG_WARN([disabling built-in manual])
3127 dnl *************************************************************************
3128 dnl If the manual variable still is set, then we go with providing a built-in
3131 if test "$USE_MANUAL" = "1"; then
3132 AC_DEFINE(USE_MANUAL, 1, [If you want to build curl with the built-in manual])
3133 curl_manual_msg="enabled"
3136 dnl set variable for use in automakefile(s)
3137 AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
3140 AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
3142 if test "x$ac_cv_native_windows" != "xyes" &&
3143 test "x$enable_shared" = "xyes"; then
3144 build_libhostname=yes
3146 build_libhostname=no
3148 AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes)
3150 CURL_CHECK_OPTION_THREADED_RESOLVER
3152 if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
3154 [Options --enable-threaded-resolver and --enable-ares are mutually exclusive])
3157 if test "$want_thres" = "yes"; then
3158 AC_CHECK_HEADER(pthread.h,
3159 [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>])
3160 save_CFLAGS="$CFLAGS"
3162 dnl first check for function without lib
3163 AC_CHECK_FUNC(pthread_create, [USE_THREADS_POSIX=1] )
3165 dnl if it wasn't found without lib, search for it in pthread lib
3166 if test "$USE_THREADS_POSIX" != "1"
3168 CFLAGS="$CFLAGS -pthread"
3169 AC_CHECK_LIB(pthread, pthread_create,
3170 [USE_THREADS_POSIX=1],
3171 [ CFLAGS="$save_CFLAGS"])
3174 if test "x$USE_THREADS_POSIX" = "x1"
3176 AC_DEFINE(USE_THREADS_POSIX, 1, [if you want POSIX threaded DNS lookup])
3177 curl_res_msg="POSIX threaded"
3184 dnl ************************************************************
3185 dnl disable verbose text strings
3187 AC_MSG_CHECKING([whether to enable verbose strings])
3188 AC_ARG_ENABLE(verbose,
3189 AC_HELP_STRING([--enable-verbose],[Enable verbose strings])
3190 AC_HELP_STRING([--disable-verbose],[Disable verbose strings]),
3191 [ case "$enableval" in
3194 AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings])
3195 curl_verbose_msg="no"
3197 *) AC_MSG_RESULT(yes)
3203 dnl ************************************************************
3204 dnl enable SSPI support
3206 AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)])
3208 AC_HELP_STRING([--enable-sspi],[Enable SSPI])
3209 AC_HELP_STRING([--disable-sspi],[Disable SSPI]),
3210 [ case "$enableval" in
3212 if test "$ac_cv_native_windows" = "yes"; then
3214 AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
3215 AC_SUBST(USE_WINDOWS_SSPI, [1])
3216 curl_sspi_msg="enabled"
3219 AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.])
3223 if test "x$WINSSL_ENABLED" = "x1"; then
3224 # --with-winssl implies --enable-sspi
3231 if test "x$WINSSL_ENABLED" = "x1"; then
3232 # --with-winssl implies --enable-sspi
3239 dnl ************************************************************
3240 dnl disable cryptographic authentication
3242 AC_MSG_CHECKING([whether to enable cryptographic authentication methods])
3243 AC_ARG_ENABLE(crypto-auth,
3244 AC_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication])
3245 AC_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]),
3246 [ case "$enableval" in
3249 AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication])
3251 *) AC_MSG_RESULT(yes)
3257 CURL_CHECK_OPTION_NTLM_WB
3261 dnl ************************************************************
3262 dnl disable TLS-SRP authentication
3264 AC_MSG_CHECKING([whether to enable TLS-SRP authentication])
3265 AC_ARG_ENABLE(tls-srp,
3266 AC_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication])
3267 AC_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]),
3268 [ case "$enableval" in
3271 AC_DEFINE(CURL_DISABLE_TLS_SRP, 1, [to disable TLS-SRP authentication])
3274 *) AC_MSG_RESULT(yes)
3282 if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_SSLEAY_SRP" = "x1") ; then
3283 AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication])
3285 curl_tls_srp_msg="enabled"
3288 dnl ************************************************************
3289 dnl disable cookies support
3291 AC_MSG_CHECKING([whether to enable support for cookies])
3292 AC_ARG_ENABLE(cookies,
3293 AC_HELP_STRING([--enable-cookies],[Enable cookies support])
3294 AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
3295 [ case "$enableval" in
3298 AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support])
3300 *) AC_MSG_RESULT(yes)
3306 dnl ************************************************************
3307 dnl hiding of library internal symbols
3309 CURL_CONFIGURE_SYMBOL_HIDING
3311 dnl ************************************************************
3312 dnl enforce SONAME bump
3315 AC_MSG_CHECKING([whether to enforce SONAME bump])
3316 AC_ARG_ENABLE(soname-bump,
3317 AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump])
3318 AC_HELP_STRING([--disable-soname-bump],[Disable enforced SONAME bump]),
3319 [ case "$enableval" in
3320 yes) AC_MSG_RESULT(yes)
3327 AC_MSG_RESULT($soname_bump)
3329 AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes)
3332 dnl All the library dependencies put into $LIB apply to libcurl only.
3336 AC_SUBST(LIBCURL_LIBS)
3337 AC_SUBST(CURL_NETWORK_LIBS)
3338 AC_SUBST(CURL_NETWORK_AND_TIME_LIBS)
3340 dnl BLANK_AT_MAKETIME may be used in our Makefile.am files to blank
3341 dnl LIBS variable used in generated makefile at makefile processing
3342 dnl time. Doing this functionally prevents LIBS from being used for
3343 dnl all link targets in given makefile.
3345 AC_SUBST(BLANK_AT_MAKETIME)
3347 AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes)
3350 ENABLE_SHARED="$enable_shared"
3351 AC_SUBST(ENABLE_SHARED)
3353 dnl to let curl-config output the static libraries correctly
3354 ENABLE_STATIC="$enable_static"
3355 AC_SUBST(ENABLE_STATIC)
3359 dnl For keeping supported features and protocols also in pkg-config file
3360 dnl since it is more cross-compile friendly than curl-config
3363 if test "x$USE_SSLEAY" = "x1"; then
3364 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3365 elif test -n "$SSL_ENABLED"; then
3366 SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3368 if test "@KRB4_ENABLED@" = "x1"; then
3369 SUPPORT_FEATURES="$SUPPORT_FEATURES KRB4"
3371 if test "x$IPV6_ENABLED" = "x1"; then
3372 SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
3374 if test "x$HAVE_LIBZ" = "x1"; then
3375 SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
3377 if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1"; then
3378 SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
3380 if test "x$IDN_ENABLED" = "x1"; then
3381 SUPPORT_FEATURES="$SUPPORT_FEATURES IDN"
3383 if test "x$USE_WINDOWS_SSPI" = "x1"; then
3384 SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
3386 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3387 if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
3388 -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
3389 -o "x$DARWINSSL_ENABLED" = "x1"; then
3390 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
3391 if test "x$NTLM_WB_ENABLED" = "x1"; then
3392 SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
3396 if test "x$USE_TLS_SRP" = "x1"; then
3397 SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
3400 AC_SUBST(SUPPORT_FEATURES)
3402 dnl For supported protocols in pkg-config file
3403 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3404 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
3405 if test "x$SSL_ENABLED" = "x1"; then
3406 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS"
3409 if test "x$CURL_DISABLE_FTP" != "x1"; then
3410 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP"
3411 if test "x$SSL_ENABLED" = "x1"; then
3412 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS"
3415 if test "x$CURL_DISABLE_FILE" != "x1"; then
3416 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE"
3418 if test "x$CURL_DISABLE_TELNET" != "x1"; then
3419 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET"
3421 if test "x$CURL_DISABLE_LDAP" != "x1"; then
3422 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP"
3423 if test "x$CURL_DISABLE_LDAPS" != "x1"; then
3424 if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") ||
3425 (test "x$USE_OPENLDAP" != "x1" && test "x$HAVE_LDAP_SSL" = "x1"); then
3426 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS"
3430 if test "x$CURL_DISABLE_DICT" != "x1"; then
3431 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT"
3433 if test "x$CURL_DISABLE_TFTP" != "x1"; then
3434 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP"
3436 if test "x$CURL_DISABLE_GOPHER" != "x1"; then
3437 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER"
3439 if test "x$CURL_DISABLE_POP3" != "x1"; then
3440 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3"
3441 if test "x$SSL_ENABLED" = "x1"; then
3442 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S"
3445 if test "x$CURL_DISABLE_IMAP" != "x1"; then
3446 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
3447 if test "x$SSL_ENABLED" = "x1"; then
3448 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
3451 if test "x$CURL_DISABLE_SMTP" != "x1"; then
3452 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
3453 if test "x$SSL_ENABLED" = "x1"; then
3454 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS"
3457 if test "x$USE_LIBSSH2" = "x1"; then
3458 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
3459 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
3461 if test "x$CURL_DISABLE_RTSP" != "x1"; then
3462 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
3464 if test "x$USE_LIBRTMP" = "x1"; then
3465 SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP"
3468 dnl replace spaces with newlines
3470 dnl replace the newlines back to spaces
3471 SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '`
3473 AC_SUBST(SUPPORT_PROTOCOLS)
3475 dnl squeeze whitespace out of some variables
3483 squeeze LIBCURL_LIBS
3484 squeeze CURL_NETWORK_LIBS
3485 squeeze CURL_NETWORK_AND_TIME_LIBS
3487 squeeze SUPPORT_FEATURES
3488 squeeze SUPPORT_PROTOCOLS
3490 XC_CHECK_BUILD_FLAGS
3492 if test "x$want_curldebug_assumed" = "xyes" &&
3493 test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
3494 ac_configure_args="$ac_configure_args --enable-curldebug"
3497 AC_CONFIG_FILES([Makefile \
3499 docs/examples/Makefile \
3500 docs/libcurl/Makefile \
3502 include/curl/Makefile \
3507 tests/certs/Makefile \
3508 tests/certs/scripts/Makefile \
3509 tests/data/Makefile \
3510 tests/server/Makefile \
3511 tests/libtest/Makefile \
3512 tests/unit/Makefile \
3514 packages/Win32/Makefile \
3515 packages/Win32/cygwin/Makefile \
3516 packages/Linux/Makefile \
3517 packages/Linux/RPM/Makefile \
3518 packages/Linux/RPM/curl.spec \
3519 packages/Linux/RPM/curl-ssl.spec \
3520 packages/Solaris/Makefile \
3521 packages/EPM/curl.list \
3522 packages/EPM/Makefile \
3523 packages/vms/Makefile \
3524 packages/AIX/Makefile \
3525 packages/AIX/RPM/Makefile \
3526 packages/AIX/RPM/curl.spec \
3532 CURL_GENERATE_CONFIGUREHELP_PM
3534 AC_MSG_NOTICE([Configured to build curl/libcurl:
3536 curl version: ${CURLVERSION}
3538 Install prefix: ${prefix}
3540 SSL support: ${curl_ssl_msg}
3541 SSH support: ${curl_ssh_msg}
3542 zlib support: ${curl_zlib_msg}
3543 krb4 support: ${curl_krb4_msg}
3544 GSSAPI support: ${curl_gss_msg}
3545 SPNEGO support: ${curl_spnego_msg}
3546 TLS-SRP support: ${curl_tls_srp_msg}
3547 resolver: ${curl_res_msg}
3548 ipv6 support: ${curl_ipv6_msg}
3549 IDN support: ${curl_idn_msg}
3550 Build libcurl: Shared=${enable_shared}, Static=${enable_static}
3551 Built-in manual: ${curl_manual_msg}
3552 --libcurl option: ${curl_libcurl_msg}
3553 Verbose errors: ${curl_verbose_msg}
3554 SSPI support: ${curl_sspi_msg}
3555 ca cert bundle: ${ca}
3556 ca cert path: ${capath}
3557 LDAP support: ${curl_ldap_msg}
3558 LDAPS support: ${curl_ldaps_msg}
3559 RTSP support: ${curl_rtsp_msg}
3560 RTMP support: ${curl_rtmp_msg}
3561 metalink support: ${curl_mtlnk_msg}
3562 Protocols: ${SUPPORT_PROTOCOLS}
3565 if test "x$soname_bump" = "xyes"; then
3568 SONAME bump: yes - WARNING: this library will be built with the SONAME
3569 number bumped due to (a detected) ABI breakage.
3570 See lib/README.curl_off_t for details on this.