tizen 2.3.1 release
[external/curl.git] / configure.ac
1 #***************************************************************************
2 #                                  _   _ ____  _
3 #  Project                     ___| | | |  _ \| |
4 #                             / __| | | | |_) | |
5 #                            | (__| |_| |  _ <| |___
6 #                             \___|\___/|_| \_\_____|
7 #
8 # Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.
9 #
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.
13 #
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.
17 #
18 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19 # KIND, either express or implied.
20 #
21 #***************************************************************************
22 dnl Process this file with autoconf to produce a configure script.
23
24 AC_PREREQ(2.57)
25
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/])
28
29 XC_OVR_ZZ50
30 XC_OVR_ZZ60
31 CURL_OVERRIDE_AUTOCONF
32
33 dnl configure script copyright
34 AC_COPYRIGHT([Copyright (c) 1998 - 2014 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])
37
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])
41 AM_MAINTAINER_MODE
42
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
50
51 XC_CHECK_PATH_SEPARATOR
52
53 #
54 # save the configure arguments
55 #
56 CONFIGURE_OPTIONS="\"$ac_configure_args\""
57 AC_SUBST(CONFIGURE_OPTIONS)
58
59 CURL_CFLAG_EXTRAS=""
60 if test X"$want_werror" = Xyes; then
61   CURL_CFLAG_EXTRAS="-Werror"
62 fi
63 AC_SUBST(CURL_CFLAG_EXTRAS)
64
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.])
73   fi
74 fi
75 AC_SUBST([SED])
76
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.])
85   fi
86 fi
87 AC_SUBST([GREP])
88
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])
95     EGREP="$GREP -E"
96     AC_MSG_RESULT([$EGREP])
97   else
98     AC_PATH_PROG([EGREP], [egrep], [not_found],
99       [$PATH:/usr/bin:/usr/local/bin])
100   fi
101 fi
102 if test -z "$EGREP" || test "$EGREP" = "not_found"; then
103   AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.])
104 fi
105 AC_SUBST([EGREP])
106
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.])
115   fi
116 fi
117 AC_SUBST([AR])
118
119 AC_SUBST(libext)
120
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
124 fi
125
126 dnl figure out the libcurl version
127 CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curlver.h`
128 XC_CHECK_PROG_CC
129 XC_AUTOMAKE
130 AC_MSG_CHECKING([curl version])
131 AC_MSG_RESULT($CURLVERSION)
132
133 AC_SUBST(CURLVERSION)
134
135 dnl
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`
138 AC_SUBST(VERSIONNUM)
139
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"
144 AC_SUBST(PKGADD_PKG)
145 AC_SUBST(PKGADD_NAME)
146 AC_SUBST(PKGADD_VENDOR)
147
148 dnl
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_tls_srp_msg="no      (--enable-tls-srp)"
155     curl_res_msg="default (--enable-ares / --enable-threaded-resolver)"
156    curl_ipv6_msg="no      (--enable-ipv6)"
157 curl_unix_sockets_msg="no      (--enable-unix-sockets)"
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)"
168
169     init_ssl_msg=${curl_ssl_msg}
170
171 dnl
172 dnl Save some initial values the user might have provided
173 dnl
174 INITIAL_LDFLAGS=$LDFLAGS
175 INITIAL_LIBS=$LIBS
176
177 dnl
178 dnl Detect the canonical host and target build environment
179 dnl
180
181 AC_CANONICAL_HOST
182 dnl Get system canonical name
183 AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
184
185 dnl Checks for programs.
186
187 dnl Our curl_off_t internal and external configure settings
188 CURL_CONFIGURE_CURL_OFF_T
189
190 dnl This defines _ALL_SOURCE for AIX
191 CURL_CHECK_AIX_ALL_SOURCE
192
193 dnl Our configure and build reentrant settings
194 CURL_CONFIGURE_THREAD_SAFE
195 CURL_CONFIGURE_REENTRANT
196
197 dnl check for how to do large files
198 AC_SYS_LARGEFILE
199
200 XC_LIBTOOL
201
202 #
203 # Automake conditionals based on libtool related checks
204 #
205
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'])
212
213 #
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.
222 #
223
224 #
225 # Make our Makefile.am files use the staticlib CPPFLAG only when strictly
226 # targeting a static library and not building its shared counterpart.
227 #
228
229 AM_CONDITIONAL([USE_CPPFLAG_CURL_STATICLIB],
230   [test "x$xc_lt_build_static_only" = 'xyes'])
231
232 #
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.
236 #
237
238 CPPFLAG_CURL_STATICLIB=
239 if test "x$xc_lt_build_static_only" = 'xyes'; then
240   CPPFLAG_CURL_STATICLIB='-DCURL_STATICLIB'
241 fi
242 AC_SUBST([CPPFLAG_CURL_STATICLIB])
243
244
245 # Determine whether all dependent libraries must be specified when linking
246 if test "X$enable_shared" = "Xyes" -a "X$link_all_deplibs" = "Xno"
247 then
248     REQUIRE_LIB_DEPS=no
249 else
250     REQUIRE_LIB_DEPS=yes
251 fi
252 AC_SUBST(REQUIRE_LIB_DEPS)
253 AM_CONDITIONAL(USE_EXPLICIT_LIB_DEPS, test x$REQUIRE_LIB_DEPS = xyes)
254
255 dnl check if there's a way to force code inline
256 AC_C_INLINE
257
258 dnl **********************************************************************
259 dnl platform/compiler/architecture specific checks/flags
260 dnl **********************************************************************
261
262 CURL_CHECK_COMPILER
263 CURL_SET_COMPILER_BASIC_OPTS
264 CURL_SET_COMPILER_DEBUG_OPTS
265 CURL_SET_COMPILER_OPTIMIZE_OPTS
266 CURL_SET_COMPILER_WARNING_OPTS
267
268 if test "$compiler_id" = "INTEL_UNIX_C"; then
269   #
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
274     dnl icc 9.X specific
275     CFLAGS="$CFLAGS -i-dynamic"
276   fi
277   #
278 fi
279
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
284
285 CURL_CHECK_CURLDEBUG
286 AM_CONDITIONAL(CURLDEBUG, test x$want_curldebug = xyes)
287
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
295 fi
296
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.
300 case $host in
301   mips-sgi-irix6.5)
302     if test "$compiler_id" = "GNU_C"; then
303       supports_unittests=no
304     fi
305     ;;
306 esac
307
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.
311 case $host_os in
312   aix*)
313     supports_unittests=no
314     ;;
315 esac
316
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
320   want_unittests=yes
321 else
322   want_unittests=no
323 fi
324 AM_CONDITIONAL(BUILD_UNITTESTS, test x$want_unittests = xyes)
325
326 dnl **********************************************************************
327 dnl Compilation based checks should not be done before this point.
328 dnl **********************************************************************
329
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 **********************************************************************
336
337 CURL_CHECK_HEADER_WINDOWS
338 CURL_CHECK_NATIVE_WINDOWS
339 case X-"$ac_cv_native_windows" in
340   X-yes)
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
346     ;;
347   *)
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"
353     ;;
354 esac
355 CURL_CHECK_WIN32_LARGEFILE
356
357 dnl ************************************************************
358 dnl switch off particular protocols
359 dnl
360 AC_MSG_CHECKING([whether to support http])
361 AC_ARG_ENABLE(http,
362 AC_HELP_STRING([--enable-http],[Enable HTTP support])
363 AC_HELP_STRING([--disable-http],[Disable HTTP support]),
364 [ case "$enableval" in
365   no)
366        AC_MSG_RESULT(no)
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])
372        ;;
373   *)   AC_MSG_RESULT(yes)
374        ;;
375   esac ],
376        AC_MSG_RESULT(yes)
377 )
378 AC_MSG_CHECKING([whether to support ftp])
379 AC_ARG_ENABLE(ftp,
380 AC_HELP_STRING([--enable-ftp],[Enable FTP support])
381 AC_HELP_STRING([--disable-ftp],[Disable FTP support]),
382 [ case "$enableval" in
383   no)
384        AC_MSG_RESULT(no)
385        AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP])
386        AC_SUBST(CURL_DISABLE_FTP, [1])
387        ;;
388   *)   AC_MSG_RESULT(yes)
389        ;;
390   esac ],
391        AC_MSG_RESULT(yes)
392 )
393 AC_MSG_CHECKING([whether to support file])
394 AC_ARG_ENABLE(file,
395 AC_HELP_STRING([--enable-file],[Enable FILE support])
396 AC_HELP_STRING([--disable-file],[Disable FILE support]),
397 [ case "$enableval" in
398   no)
399        AC_MSG_RESULT(no)
400        AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE])
401        AC_SUBST(CURL_DISABLE_FILE, [1])
402        ;;
403   *)   AC_MSG_RESULT(yes)
404        ;;
405   esac ],
406        AC_MSG_RESULT(yes)
407 )
408 AC_MSG_CHECKING([whether to support ldap])
409 AC_ARG_ENABLE(ldap,
410 AC_HELP_STRING([--enable-ldap],[Enable LDAP support])
411 AC_HELP_STRING([--disable-ldap],[Disable LDAP support]),
412 [ case "$enableval" in
413   no)
414        AC_MSG_RESULT(no)
415        AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
416        AC_SUBST(CURL_DISABLE_LDAP, [1])
417        ;;
418   *)
419        AC_MSG_RESULT(yes)
420        ;;
421   esac ],[
422        AC_MSG_RESULT(yes) ]
423 )
424 AC_MSG_CHECKING([whether to support ldaps])
425 AC_ARG_ENABLE(ldaps,
426 AC_HELP_STRING([--enable-ldaps],[Enable LDAPS support])
427 AC_HELP_STRING([--disable-ldaps],[Disable LDAPS support]),
428 [ case "$enableval" in
429   no)
430        AC_MSG_RESULT(no)
431        AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
432        AC_SUBST(CURL_DISABLE_LDAPS, [1])
433        ;;
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])
438        else
439          AC_MSG_RESULT(yes)
440          AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
441          AC_SUBST(HAVE_LDAP_SSL, [1])
442        fi
443        ;;
444   esac ],[
445        if test "x$CURL_DISABLE_LDAP" = "x1" ; then
446          AC_MSG_RESULT(no)
447          AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
448          AC_SUBST(CURL_DISABLE_LDAPS, [1])
449        else
450          AC_MSG_RESULT(yes)
451          AC_DEFINE(HAVE_LDAP_SSL, 1, [Use LDAPS implementation])
452          AC_SUBST(HAVE_LDAP_SSL, [1])
453        fi ]
454 )
455
456 AC_MSG_CHECKING([whether to support rtsp])
457 AC_ARG_ENABLE(rtsp,
458 AC_HELP_STRING([--enable-rtsp],[Enable RTSP support])
459 AC_HELP_STRING([--disable-rtsp],[Disable RTSP support]),
460 [ case "$enableval" in
461   no)
462        AC_MSG_RESULT(no)
463        AC_DEFINE(CURL_DISABLE_RTSP, 1, [to disable RTSP])
464        AC_SUBST(CURL_DISABLE_RTSP, [1])
465        ;;
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!)
468        else
469           AC_MSG_RESULT(yes)
470           curl_rtsp_msg="enabled"
471        fi
472        ;;
473   esac ],
474        if test "x$CURL_DISABLE_HTTP" != "x1"; then
475           AC_MSG_RESULT(yes)
476           curl_rtsp_msg="enabled"
477        else
478           AC_MSG_RESULT(no)
479        fi
480 )
481
482 AC_MSG_CHECKING([whether to support proxies])
483 AC_ARG_ENABLE(proxy,
484 AC_HELP_STRING([--enable-proxy],[Enable proxy support])
485 AC_HELP_STRING([--disable-proxy],[Disable proxy support]),
486 [ case "$enableval" in
487   no)
488        AC_MSG_RESULT(no)
489        AC_DEFINE(CURL_DISABLE_PROXY, 1, [to disable proxies])
490        AC_SUBST(CURL_DISABLE_PROXY, [1])
491        ;;
492   *)   AC_MSG_RESULT(yes)
493        ;;
494   esac ],
495        AC_MSG_RESULT(yes)
496 )
497
498 AC_MSG_CHECKING([whether to support dict])
499 AC_ARG_ENABLE(dict,
500 AC_HELP_STRING([--enable-dict],[Enable DICT support])
501 AC_HELP_STRING([--disable-dict],[Disable DICT support]),
502 [ case "$enableval" in
503   no)
504        AC_MSG_RESULT(no)
505        AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT])
506        AC_SUBST(CURL_DISABLE_DICT, [1])
507        ;;
508   *)   AC_MSG_RESULT(yes)
509        ;;
510   esac ],
511        AC_MSG_RESULT(yes)
512 )
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
518   no)
519        AC_MSG_RESULT(no)
520        AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
521        AC_SUBST(CURL_DISABLE_TELNET, [1])
522        ;;
523   *)   AC_MSG_RESULT(yes)
524        ;;
525   esac ],
526        AC_MSG_RESULT(yes)
527 )
528 AC_MSG_CHECKING([whether to support tftp])
529 AC_ARG_ENABLE(tftp,
530 AC_HELP_STRING([--enable-tftp],[Enable TFTP support])
531 AC_HELP_STRING([--disable-tftp],[Disable TFTP support]),
532 [ case "$enableval" in
533   no)
534        AC_MSG_RESULT(no)
535        AC_DEFINE(CURL_DISABLE_TFTP, 1, [to disable TFTP])
536        AC_SUBST(CURL_DISABLE_TFTP, [1])
537        ;;
538   *)   AC_MSG_RESULT(yes)
539        ;;
540   esac ],
541        AC_MSG_RESULT(yes)
542 )
543
544 AC_MSG_CHECKING([whether to support pop3])
545 AC_ARG_ENABLE(pop3,
546 AC_HELP_STRING([--enable-pop3],[Enable POP3 support])
547 AC_HELP_STRING([--disable-pop3],[Disable POP3 support]),
548 [ case "$enableval" in
549   no)
550        AC_MSG_RESULT(no)
551        AC_DEFINE(CURL_DISABLE_POP3, 1, [to disable POP3])
552        AC_SUBST(CURL_DISABLE_POP3, [1])
553        ;;
554   *)   AC_MSG_RESULT(yes)
555        ;;
556   esac ],
557        AC_MSG_RESULT(yes)
558 )
559
560
561 AC_MSG_CHECKING([whether to support imap])
562 AC_ARG_ENABLE(imap,
563 AC_HELP_STRING([--enable-imap],[Enable IMAP support])
564 AC_HELP_STRING([--disable-imap],[Disable IMAP support]),
565 [ case "$enableval" in
566   no)
567        AC_MSG_RESULT(no)
568        AC_DEFINE(CURL_DISABLE_IMAP, 1, [to disable IMAP])
569        AC_SUBST(CURL_DISABLE_IMAP, [1])
570        ;;
571   *)   AC_MSG_RESULT(yes)
572        ;;
573   esac ],
574        AC_MSG_RESULT(yes)
575 )
576
577
578 AC_MSG_CHECKING([whether to support smb])
579 AC_ARG_ENABLE(smb,
580 AC_HELP_STRING([--enable-smb],[Enable SMB/CIFS support])
581 AC_HELP_STRING([--disable-smb],[Disable SMB/CIFS support]),
582 [ case "$enableval" in
583   no)
584        AC_MSG_RESULT(no)
585        AC_DEFINE(CURL_DISABLE_SMB, 1, [to disable SMB/CIFS])
586        AC_SUBST(CURL_DISABLE_SMB, [1])
587        ;;
588   *)   AC_MSG_RESULT(yes)
589        ;;
590   esac ],
591        AC_MSG_RESULT(yes)
592 )
593
594 AC_MSG_CHECKING([whether to support smtp])
595 AC_ARG_ENABLE(smtp,
596 AC_HELP_STRING([--enable-smtp],[Enable SMTP support])
597 AC_HELP_STRING([--disable-smtp],[Disable SMTP support]),
598 [ case "$enableval" in
599   no)
600        AC_MSG_RESULT(no)
601        AC_DEFINE(CURL_DISABLE_SMTP, 1, [to disable SMTP])
602        AC_SUBST(CURL_DISABLE_SMTP, [1])
603        ;;
604   *)   AC_MSG_RESULT(yes)
605        ;;
606   esac ],
607        AC_MSG_RESULT(yes)
608 )
609
610 AC_MSG_CHECKING([whether to support gopher])
611 AC_ARG_ENABLE(gopher,
612 AC_HELP_STRING([--enable-gopher],[Enable Gopher support])
613 AC_HELP_STRING([--disable-gopher],[Disable Gopher support]),
614 [ case "$enableval" in
615   no)
616        AC_MSG_RESULT(no)
617        AC_DEFINE(CURL_DISABLE_GOPHER, 1, [to disable Gopher])
618        AC_SUBST(CURL_DISABLE_GOPHER, [1])
619        ;;
620   *)   AC_MSG_RESULT(yes)
621        ;;
622   esac ],
623        AC_MSG_RESULT(yes)
624 )
625
626
627 dnl **********************************************************************
628 dnl Check for built-in manual
629 dnl **********************************************************************
630
631 AC_MSG_CHECKING([whether to provide built-in manual])
632 AC_ARG_ENABLE(manual,
633 AC_HELP_STRING([--enable-manual],[Enable built-in manual])
634 AC_HELP_STRING([--disable-manual],[Disable built-in manual]),
635 [ case "$enableval" in
636   no)
637        AC_MSG_RESULT(no)
638        ;;
639   *)   AC_MSG_RESULT(yes)
640        USE_MANUAL="1"
641        ;;
642   esac ],
643        AC_MSG_RESULT(yes)
644        USE_MANUAL="1"
645 )
646 dnl The actual use of the USE_MANUAL variable is done much later in this
647 dnl script to allow other actions to disable it as well.
648
649 dnl ************************************************************
650 dnl disable C code generation support
651 dnl
652 AC_MSG_CHECKING([whether to enable generation of C code])
653 AC_ARG_ENABLE(libcurl_option,
654 AC_HELP_STRING([--enable-libcurl-option],[Enable --libcurl C code generation support])
655 AC_HELP_STRING([--disable-libcurl-option],[Disable --libcurl C code generation support]),
656 [ case "$enableval" in
657   no)
658        AC_MSG_RESULT(no)
659        AC_DEFINE(CURL_DISABLE_LIBCURL_OPTION, 1, [to disable --libcurl C code generation option])
660        curl_libcurl_msg="no"
661        ;;
662   *)   AC_MSG_RESULT(yes)
663        ;;
664   esac ],
665        AC_MSG_RESULT(yes)
666 )
667
668 dnl **********************************************************************
669 dnl Checks for libraries.
670 dnl **********************************************************************
671
672 AC_MSG_CHECKING([whether to use libgcc])
673 AC_ARG_ENABLE(libgcc,
674 AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
675 [ case "$enableval" in
676   yes)
677        LIBS="-lgcc $LIBS"
678        AC_MSG_RESULT(yes)
679        ;;
680   *)   AC_MSG_RESULT(no)
681        ;;
682   esac ],
683        AC_MSG_RESULT(no)
684 )
685
686 CURL_CHECK_LIB_XNET
687
688 dnl gethostbyname without lib or in the nsl lib?
689 AC_CHECK_FUNC(gethostbyname,
690               [HAVE_GETHOSTBYNAME="1"
691               ],
692               [ AC_CHECK_LIB(nsl, gethostbyname,
693                              [HAVE_GETHOSTBYNAME="1"
694                              LIBS="-lnsl $LIBS"
695                              ])
696               ])
697
698 if test "$HAVE_GETHOSTBYNAME" != "1"
699 then
700   dnl gethostbyname in the socket lib?
701   AC_CHECK_LIB(socket, gethostbyname,
702                [HAVE_GETHOSTBYNAME="1"
703                LIBS="-lsocket $LIBS"
704                ])
705 fi
706
707 if test "$HAVE_GETHOSTBYNAME" != "1"
708 then
709   dnl gethostbyname in the watt lib?
710   AC_CHECK_LIB(watt, gethostbyname,
711                [HAVE_GETHOSTBYNAME="1"
712                CPPFLAGS="-I/dev/env/WATT_ROOT/inc"
713                LDFLAGS="-L/dev/env/WATT_ROOT/lib"
714                LIBS="-lwatt $LIBS"
715                ])
716 fi
717
718 dnl At least one system has been identified to require BOTH nsl and socket
719 dnl libs at the same time to link properly.
720 if test "$HAVE_GETHOSTBYNAME" != "1"
721 then
722   AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs])
723   my_ac_save_LIBS=$LIBS
724   LIBS="-lnsl -lsocket $LIBS"
725   AC_LINK_IFELSE([
726     AC_LANG_PROGRAM([[
727     ]],[[
728       gethostbyname();
729     ]])
730   ],[
731     AC_MSG_RESULT([yes])
732     HAVE_GETHOSTBYNAME="1"
733   ],[
734     AC_MSG_RESULT([no])
735     LIBS=$my_ac_save_LIBS
736   ])
737 fi
738
739 if test "$HAVE_GETHOSTBYNAME" != "1"
740 then
741   dnl This is for winsock systems
742   if test "$ac_cv_header_windows_h" = "yes"; then
743     if test "$ac_cv_header_winsock_h" = "yes"; then
744       case $host in
745         *-*-mingw32ce*)
746           winsock_LIB="-lwinsock"
747           ;;
748         *)
749           winsock_LIB="-lwsock32"
750           ;;
751       esac
752     fi
753     if test "$ac_cv_header_winsock2_h" = "yes"; then
754       winsock_LIB="-lws2_32"
755     fi
756     if test ! -z "$winsock_LIB"; then
757       my_ac_save_LIBS=$LIBS
758       LIBS="$winsock_LIB $LIBS"
759       AC_MSG_CHECKING([for gethostbyname in $winsock_LIB])
760       AC_LINK_IFELSE([
761         AC_LANG_PROGRAM([[
762 #ifdef HAVE_WINDOWS_H
763 #ifndef WIN32_LEAN_AND_MEAN
764 #define WIN32_LEAN_AND_MEAN
765 #endif
766 #include <windows.h>
767 #ifdef HAVE_WINSOCK2_H
768 #include <winsock2.h>
769 #else
770 #ifdef HAVE_WINSOCK_H
771 #include <winsock.h>
772 #endif
773 #endif
774 #endif
775         ]],[[
776           gethostbyname("www.dummysite.com");
777         ]])
778       ],[
779         AC_MSG_RESULT([yes])
780         HAVE_GETHOSTBYNAME="1"
781       ],[
782         AC_MSG_RESULT([no])
783         winsock_LIB=""
784         LIBS=$my_ac_save_LIBS
785       ])
786     fi
787   fi
788 fi
789
790 if test "$HAVE_GETHOSTBYNAME" != "1"
791 then
792   dnl This is for Minix 3.1
793   AC_MSG_CHECKING([for gethostbyname for Minix 3])
794   AC_LINK_IFELSE([
795     AC_LANG_PROGRAM([[
796 /* Older Minix versions may need <net/gen/netdb.h> here instead */
797 #include <netdb.h>
798     ]],[[
799       gethostbyname("www.dummysite.com");
800     ]])
801   ],[
802     AC_MSG_RESULT([yes])
803     HAVE_GETHOSTBYNAME="1"
804   ],[
805     AC_MSG_RESULT([no])
806   ])
807 fi
808
809 if test "$HAVE_GETHOSTBYNAME" != "1"
810 then
811   dnl This is for eCos with a stubbed DNS implementation
812   AC_MSG_CHECKING([for gethostbyname for eCos])
813   AC_LINK_IFELSE([
814     AC_LANG_PROGRAM([[
815 #include <stdio.h>
816 #include <netdb.h>
817     ]],[[
818       gethostbyname("www.dummysite.com");
819     ]])
820   ],[
821     AC_MSG_RESULT([yes])
822     HAVE_GETHOSTBYNAME="1"
823   ],[
824     AC_MSG_RESULT([no])
825   ])
826 fi
827
828 if test "$HAVE_GETHOSTBYNAME" != "1"
829 then
830   dnl gethostbyname in the network lib - for Haiku OS
831   AC_CHECK_LIB(network, gethostbyname,
832                [HAVE_GETHOSTBYNAME="1"
833                LIBS="-lnetwork $LIBS"
834                ])
835 fi
836
837 if test "$HAVE_GETHOSTBYNAME" != "1"
838 then
839   dnl gethostbyname in the net lib - for BeOS
840   AC_CHECK_LIB(net, gethostbyname,
841                [HAVE_GETHOSTBYNAME="1"
842                LIBS="-lnet $LIBS"
843                ])
844 fi
845
846
847 if test "$HAVE_GETHOSTBYNAME" != "1"; then
848   AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
849 fi
850
851 dnl resolve lib?
852 AC_CHECK_FUNC(strcasecmp, , [ AC_CHECK_LIB(resolve, strcasecmp) ])
853
854 if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
855   AC_CHECK_LIB(resolve, strcasecmp,
856               [LIBS="-lresolve $LIBS"],
857                ,
858                -lnsl)
859 fi
860 ac_cv_func_strcasecmp="no"
861
862 CURL_CHECK_LIBS_CONNECT
863
864 CURL_NETWORK_LIBS=$LIBS
865
866 dnl **********************************************************************
867 dnl In case that function clock_gettime with monotonic timer is available,
868 dnl check for additional required libraries.
869 dnl **********************************************************************
870 CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
871
872 dnl **********************************************************************
873 dnl The preceding library checks are all potentially useful for test
874 dnl servers and libtest cases which require networking and clock_gettime
875 dnl support.  Save the list of required libraries at this point for use
876 dnl while linking those test servers and programs.
877 dnl **********************************************************************
878 CURL_NETWORK_AND_TIME_LIBS=$LIBS
879
880 dnl **********************************************************************
881 dnl Check for the presence of ZLIB libraries and headers
882 dnl **********************************************************************
883
884 dnl Check for & handle argument to --with-zlib.
885
886 clean_CPPFLAGS=$CPPFLAGS
887 clean_LDFLAGS=$LDFLAGS
888 clean_LIBS=$LIBS
889 ZLIB_LIBS=""
890 AC_ARG_WITH(zlib,
891 AC_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
892 AC_HELP_STRING([--without-zlib],[disable use of zlib]),
893                [OPT_ZLIB="$withval"])
894
895 if test "$OPT_ZLIB" = "no" ; then
896     AC_MSG_WARN([zlib disabled])
897 else
898   if test "$OPT_ZLIB" = "yes" ; then
899     OPT_ZLIB=""
900   fi
901
902   if test -z "$OPT_ZLIB" ; then
903     dnl check for the lib first without setting any new path, since many
904     dnl people have it in the default path
905
906     AC_CHECK_LIB(z, inflateEnd,
907                    dnl libz found, set the variable
908                    [HAVE_LIBZ="1"
909                     LIBS="-lz $LIBS"],
910                    dnl if no lib found, try /usr/local
911                    [OPT_ZLIB="/usr/local"])
912
913   fi
914
915   dnl Add a nonempty path to the compiler flags
916   if test -n "$OPT_ZLIB"; then
917      CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include"
918      LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff"
919   fi
920
921   AC_CHECK_HEADER(zlib.h,
922     [
923     dnl zlib.h was found
924     HAVE_ZLIB_H="1"
925     dnl if the lib wasn't found already, try again with the new paths
926     if test "$HAVE_LIBZ" != "1"; then
927       AC_CHECK_LIB(z, gzread,
928                    [
929                    dnl the lib was found!
930                    HAVE_LIBZ="1"
931                    LIBS="-lz $LIBS"
932                    ],
933                    [ CPPFLAGS=$clean_CPPFLAGS
934                    LDFLAGS=$clean_LDFLAGS])
935     fi
936     ],
937     [
938       dnl zlib.h was not found, restore the flags
939       CPPFLAGS=$clean_CPPFLAGS
940       LDFLAGS=$clean_LDFLAGS]
941     )
942
943   if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1"
944   then
945     AC_MSG_WARN([configure found only the libz lib, not the header file!])
946     HAVE_LIBZ=""
947     CPPFLAGS=$clean_CPPFLAGS
948     LDFLAGS=$clean_LDFLAGS
949     LIBS=$clean_LIBS
950   elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1"
951   then
952     AC_MSG_WARN([configure found only the libz header file, not the lib!])
953     CPPFLAGS=$clean_CPPFLAGS
954     LDFLAGS=$clean_LDFLAGS
955     LIBS=$clean_LIBS
956   elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1"
957   then
958     dnl both header and lib were found!
959     AC_SUBST(HAVE_LIBZ)
960     AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file])
961     AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available])
962
963     ZLIB_LIBS="-lz"
964     LIBS="-lz $clean_LIBS"
965
966     dnl replace 'HAVE_LIBZ' in the automake makefile.ams
967     AMFIXLIB="1"
968     AC_MSG_NOTICE([found both libz and libz.h header])
969     curl_zlib_msg="enabled"
970   fi
971 fi
972
973 dnl set variable for use in automakefile(s)
974 AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1)
975 AC_SUBST(ZLIB_LIBS)
976
977 dnl **********************************************************************
978 dnl Check for LDAP
979 dnl **********************************************************************
980
981 LDAPLIBNAME=""
982 AC_ARG_WITH(ldap-lib,
983 AC_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]),
984  [LDAPLIBNAME="$withval"])
985
986 LBERLIBNAME=""
987 AC_ARG_WITH(lber-lib,
988 AC_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]),
989  [LBERLIBNAME="$withval"])
990
991 if test x$CURL_DISABLE_LDAP != x1 ; then
992
993   CURL_CHECK_HEADER_LBER
994   CURL_CHECK_HEADER_LDAP
995   CURL_CHECK_HEADER_LDAPSSL
996   CURL_CHECK_HEADER_LDAP_SSL
997
998   if test -z "$LDAPLIBNAME" ; then
999     if test "$ac_cv_native_windows" = "yes"; then
1000       dnl Windows uses a single and unique LDAP library name
1001       LDAPLIBNAME="wldap32"
1002       LBERLIBNAME="no"
1003     fi
1004   fi
1005
1006   if test "$LDAPLIBNAME" ; then
1007     AC_CHECK_LIB("$LDAPLIBNAME", ldap_init,, [
1008       AC_MSG_WARN(["$LDAPLIBNAME" is not an LDAP library: LDAP disabled])
1009       AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1010       AC_SUBST(CURL_DISABLE_LDAP, [1])
1011       AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1012       AC_SUBST(CURL_DISABLE_LDAPS, [1])])
1013   else
1014     dnl Try to find the right ldap libraries for this system
1015     CURL_CHECK_LIBS_LDAP
1016     case X-"$curl_cv_ldap_LIBS" in
1017       X-unknown)
1018         AC_MSG_WARN([Cannot find libraries for LDAP support: LDAP disabled])
1019         AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1020         AC_SUBST(CURL_DISABLE_LDAP, [1])
1021         AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1022         AC_SUBST(CURL_DISABLE_LDAPS, [1])
1023         ;;
1024     esac
1025   fi
1026 fi
1027
1028 if test x$CURL_DISABLE_LDAP != x1 ; then
1029
1030   if test "$LBERLIBNAME" ; then
1031     dnl If name is "no" then don't define this library at all
1032     dnl (it's only needed if libldap.so's dependencies are broken).
1033     if test "$LBERLIBNAME" != "no" ; then
1034       AC_CHECK_LIB("$LBERLIBNAME", ber_free,, [
1035         AC_MSG_WARN(["$LBERLIBNAME" is not an LBER library: LDAP disabled])
1036         AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
1037         AC_SUBST(CURL_DISABLE_LDAP, [1])
1038         AC_DEFINE(CURL_DISABLE_LDAPS, 1, [to disable LDAPS])
1039         AC_SUBST(CURL_DISABLE_LDAPS, [1])])
1040     fi
1041   fi
1042 fi
1043
1044 if test x$CURL_DISABLE_LDAP != x1 ; then
1045   AC_CHECK_FUNCS([ldap_url_parse ldap_init_fd])
1046
1047   if test "$LDAPLIBNAME" = "wldap32"; then
1048     curl_ldap_msg="enabled (winldap)"
1049     AC_DEFINE(CURL_LDAP_WIN, 1, [Use Windows LDAP implementation])
1050   else
1051     curl_ldap_msg="enabled (OpenLDAP)"
1052     if test "x$ac_cv_func_ldap_init_fd" = "xyes"; then
1053       AC_DEFINE(USE_OPENLDAP, 1, [Use OpenLDAP-specific code])
1054       AC_SUBST(USE_OPENLDAP, [1])
1055     fi
1056   fi
1057 fi
1058
1059 if test x$CURL_DISABLE_LDAPS != x1 ; then
1060     curl_ldaps_msg="enabled"
1061 fi
1062
1063 dnl **********************************************************************
1064 dnl Checks for IPv6
1065 dnl **********************************************************************
1066
1067 AC_MSG_CHECKING([whether to enable IPv6])
1068 AC_ARG_ENABLE(ipv6,
1069 AC_HELP_STRING([--enable-ipv6],[Enable IPv6 (with IPv4) support])
1070 AC_HELP_STRING([--disable-ipv6],[Disable IPv6 support]),
1071 [ case "$enableval" in
1072   no)
1073        AC_MSG_RESULT(no)
1074        ipv6=no
1075        ;;
1076   *)   AC_MSG_RESULT(yes)
1077        ipv6=yes
1078        ;;
1079   esac ],
1080
1081   AC_TRY_RUN([ /* is AF_INET6 available? */
1082 #include <sys/types.h>
1083 #include <sys/socket.h>
1084 #include <stdlib.h> /* for exit() */
1085 main()
1086 {
1087  if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1088    exit(1);
1089  else
1090    exit(0);
1091 }
1092 ],
1093   AC_MSG_RESULT(yes)
1094   ipv6=yes,
1095   AC_MSG_RESULT(no)
1096   ipv6=no,
1097   AC_MSG_RESULT(no)
1098   ipv6=no
1099 ))
1100
1101 if test "$ipv6" = "yes"; then
1102   curl_ipv6_msg="enabled"
1103 fi
1104
1105 # Check if struct sockaddr_in6 have sin6_scope_id member
1106 if test "$ipv6" = yes; then
1107   AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member])
1108   AC_TRY_COMPILE([
1109 #include <sys/types.h>
1110 #include <netinet/in.h>] ,
1111   struct sockaddr_in6 s; s.sin6_scope_id = 0; , have_sin6_scope_id=yes)
1112   if test "$have_sin6_scope_id" = yes; then
1113     AC_MSG_RESULT([yes])
1114     AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member])
1115   else
1116     AC_MSG_RESULT([no])
1117   fi
1118 fi
1119
1120 dnl **********************************************************************
1121 dnl Check if the operating system allows programs to write to their own argv[]
1122 dnl **********************************************************************
1123
1124 AC_MSG_CHECKING([if argv can be written to])
1125 AC_RUN_IFELSE([
1126   AC_LANG_SOURCE([[
1127 int main(int argc, char ** argv) {
1128     argv[0][0] = ' ';
1129     return (argv[0][0] == ' ')?0:1;
1130 }
1131   ]])
1132 ],[
1133   curl_cv_writable_argv=yes
1134 ],[
1135   curl_cv_writable_argv=no
1136 ],[
1137   curl_cv_writable_argv=cross
1138 ])
1139 case $curl_cv_writable_argv in
1140 yes)
1141         AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv])
1142         AC_MSG_RESULT(yes)
1143         ;;
1144 no)
1145         AC_MSG_RESULT(no)
1146         ;;
1147 *)
1148         AC_MSG_RESULT(no)
1149         AC_MSG_WARN([the previous check could not be made default was used])
1150         ;;
1151 esac
1152
1153 dnl **********************************************************************
1154 dnl Check for GSS-API libraries
1155 dnl **********************************************************************
1156
1157 dnl check for GSS-API stuff in the /usr as default
1158
1159 GSSAPI_ROOT="/usr"
1160 AC_ARG_WITH(gssapi-includes,
1161   AC_HELP_STRING([--with-gssapi-includes=DIR],
1162                  [Specify location of GSS-API headers]),
1163   [ GSSAPI_INCS="-I$withval"
1164     want_gss="yes" ]
1165 )
1166
1167 AC_ARG_WITH(gssapi-libs,
1168   AC_HELP_STRING([--with-gssapi-libs=DIR],
1169                  [Specify location of GSS-API libs]),
1170   [ GSSAPI_LIB_DIR="-L$withval"
1171     want_gss="yes" ]
1172 )
1173
1174 AC_ARG_WITH(gssapi,
1175   AC_HELP_STRING([--with-gssapi=DIR],
1176                  [Where to look for GSS-API]), [
1177   GSSAPI_ROOT="$withval"
1178   if test x"$GSSAPI_ROOT" != xno; then
1179     want_gss="yes"
1180     if test x"$GSSAPI_ROOT" = xyes; then
1181       dnl if yes, then use default root
1182       GSSAPI_ROOT="/usr"
1183     fi
1184   fi
1185 ])
1186
1187 save_CPPFLAGS="$CPPFLAGS"
1188 AC_MSG_CHECKING([if GSS-API support is requested])
1189 if test x"$want_gss" = xyes; then
1190   AC_MSG_RESULT(yes)
1191
1192   if test -z "$GSSAPI_INCS"; then
1193      if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
1194         GSSAPI_INCS=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --cflags gssapi`
1195      elif test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1196         GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
1197      elif test "$GSSAPI_ROOT" != "yes"; then
1198         GSSAPI_INCS="-I$GSSAPI_ROOT/include"
1199      fi
1200   fi
1201
1202   CPPFLAGS="$CPPFLAGS $GSSAPI_INCS"
1203
1204   AC_CHECK_HEADER(gss.h,
1205     [
1206       dnl found in the given dirs
1207       AC_DEFINE(HAVE_GSSGNU, 1, [if you have GNU GSS])
1208       gnu_gss=yes
1209     ],
1210     [
1211       dnl not found, check Heimdal or MIT
1212       AC_CHECK_HEADERS([gssapi/gssapi.h], [], [not_mit=1])
1213       AC_CHECK_HEADERS(
1214         [gssapi/gssapi_generic.h gssapi/gssapi_krb5.h],
1215         [],
1216         [not_mit=1],
1217         [
1218 AC_INCLUDES_DEFAULT
1219 #ifdef HAVE_GSSAPI_GSSAPI_H
1220 #include <gssapi/gssapi.h>
1221 #endif
1222         ])
1223       if test "x$not_mit" = "x1"; then
1224         dnl MIT not found, check for Heimdal
1225         AC_CHECK_HEADER(gssapi.h,
1226             [
1227               dnl found
1228               AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have Heimdal])
1229             ],
1230             [
1231               dnl no header found, disabling GSS
1232               want_gss=no
1233               AC_MSG_WARN(disabling GSS-API support since no header files were found)
1234             ]
1235           )
1236       else
1237         dnl MIT found
1238         AC_DEFINE(HAVE_GSSMIT, 1, [if you have MIT Kerberos])
1239         dnl check if we have a really old MIT Kerberos version (<= 1.2)
1240         AC_MSG_CHECKING([if GSS-API headers declare GSS_C_NT_HOSTBASED_SERVICE])
1241         AC_COMPILE_IFELSE([
1242           AC_LANG_PROGRAM([[
1243 #include <gssapi/gssapi.h>
1244 #include <gssapi/gssapi_generic.h>
1245 #include <gssapi/gssapi_krb5.h>
1246           ]],[[
1247             gss_import_name(
1248                             (OM_uint32 *)0,
1249                             (gss_buffer_t)0,
1250                             GSS_C_NT_HOSTBASED_SERVICE,
1251                             (gss_name_t *)0);
1252           ]])
1253         ],[
1254           AC_MSG_RESULT([yes])
1255         ],[
1256           AC_MSG_RESULT([no])
1257           AC_DEFINE(HAVE_OLD_GSSMIT, 1,
1258             [if you have an old MIT Kerberos version, lacking GSS_C_NT_HOSTBASED_SERVICE])
1259         ])
1260       fi
1261     ]
1262   )
1263 else
1264   AC_MSG_RESULT(no)
1265 fi
1266 if test x"$want_gss" = xyes; then
1267   AC_DEFINE(HAVE_GSSAPI, 1, [if you have GSS-API libraries])
1268   HAVE_GSSAPI=1
1269   curl_gss_msg="enabled (MIT Kerberos/Heimdal)"
1270
1271   if test -n "$gnu_gss"; then
1272     curl_gss_msg="enabled (GNU GSS)"
1273     LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1274     LIBS="-lgss $LIBS"
1275   elif test -z "$GSSAPI_LIB_DIR"; then
1276      case $host in
1277      *-*-darwin*)
1278         LIBS="-lgssapi_krb5 -lresolv $LIBS"
1279         ;;
1280      *)
1281         if test -n "$host_alias" -a -f "$GSSAPI_ROOT/bin/$host_alias-krb5-config"; then
1282            dnl krb5-config doesn't have --libs-only-L or similar, put everything
1283            dnl into LIBS
1284            gss_libs=`$GSSAPI_ROOT/bin/$host_alias-krb5-config --libs gssapi`
1285            LIBS="$gss_libs $LIBS"
1286         elif test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1287            dnl krb5-config doesn't have --libs-only-L or similar, put everything
1288            dnl into LIBS
1289            gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
1290            LIBS="$gss_libs $LIBS"
1291         else
1292            case $host in
1293            *-hp-hpux*)
1294               gss_libname="gss"
1295               ;;
1296            *)
1297               gss_libname="gssapi"
1298               ;;
1299            esac
1300
1301            if test "$GSSAPI_ROOT" != "yes"; then
1302               LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
1303               LIBS="-l$gss_libname $LIBS"
1304            else
1305               LIBS="-l$gss_libname $LIBS"
1306            fi
1307         fi
1308         ;;
1309      esac
1310   else
1311      LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1312      case $host in
1313      *-hp-hpux*)
1314         LIBS="-lgss $LIBS"
1315         ;;
1316      *)
1317         LIBS="-lgssapi $LIBS"
1318         ;;
1319      esac
1320   fi
1321 else
1322   CPPFLAGS="$save_CPPFLAGS"
1323 fi
1324
1325 dnl -------------------------------------------------
1326 dnl check winssl option before other SSL libraries
1327 dnl -------------------------------------------------
1328
1329 OPT_WINSSL=no
1330 AC_ARG_WITH(winssl,dnl
1331 AC_HELP_STRING([--with-winssl],[enable Windows native SSL/TLS])
1332 AC_HELP_STRING([--without-winssl], [disable Windows native SSL/TLS]),
1333   OPT_WINSSL=$withval)
1334
1335 AC_MSG_CHECKING([whether to enable Windows native SSL/TLS (Windows native builds only)])
1336 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1337   if test "x$OPT_WINSSL" != "xno"  &&
1338      test "x$ac_cv_native_windows" = "xyes"; then
1339     AC_MSG_RESULT(yes)
1340     AC_DEFINE(USE_SCHANNEL, 1, [to enable Windows native SSL/TLS support])
1341     AC_SUBST(USE_SCHANNEL, [1])
1342     curl_ssl_msg="enabled (Windows-native)"
1343     WINSSL_ENABLED=1
1344     # --with-winssl implies --enable-sspi
1345     AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
1346     AC_SUBST(USE_WINDOWS_SSPI, [1])
1347     curl_sspi_msg="enabled"
1348   else
1349     AC_MSG_RESULT(no)
1350   fi
1351 else
1352   AC_MSG_RESULT(no)
1353 fi
1354
1355 OPT_DARWINSSL=no
1356 AC_ARG_WITH(darwinssl,dnl
1357 AC_HELP_STRING([--with-darwinssl],[enable iOS/Mac OS X native SSL/TLS])
1358 AC_HELP_STRING([--without-darwinssl], [disable iOS/Mac OS X native SSL/TLS]),
1359   OPT_DARWINSSL=$withval)
1360
1361 AC_MSG_CHECKING([whether to enable iOS/Mac OS X native SSL/TLS])
1362 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1363   if test "x$OPT_DARWINSSL" != "xno" &&
1364      test -d "/System/Library/Frameworks/Security.framework"; then
1365     AC_MSG_RESULT(yes)
1366     AC_DEFINE(USE_DARWINSSL, 1, [to enable iOS/Mac OS X native SSL/TLS support])
1367     AC_SUBST(USE_DARWINSSL, [1])
1368     curl_ssl_msg="enabled (iOS/Mac OS X-native)"
1369     DARWINSSL_ENABLED=1
1370     LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Security"
1371   else
1372     AC_MSG_RESULT(no)
1373   fi
1374 else
1375   AC_MSG_RESULT(no)
1376 fi
1377
1378 dnl **********************************************************************
1379 dnl Check for the presence of SSL libraries and headers
1380 dnl **********************************************************************
1381
1382 dnl Default to compiler & linker defaults for SSL files & libraries.
1383 OPT_SSL=off
1384 dnl Default to no CA bundle
1385 ca="no"
1386 AC_ARG_WITH(ssl,dnl
1387 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])
1388 AC_HELP_STRING([--without-ssl], [disable OpenSSL]),
1389   OPT_SSL=$withval)
1390
1391 if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
1392   dnl backup the pre-ssl variables
1393   CLEANLDFLAGS="$LDFLAGS"
1394   CLEANCPPFLAGS="$CPPFLAGS"
1395   CLEANLIBS="$LIBS"
1396
1397   case "$OPT_SSL" in
1398   yes)
1399     dnl --with-ssl (without path) used
1400     if test x$cross_compiling != xyes; then
1401       dnl only do pkg-config magic when not cross-compiling
1402       PKGTEST="yes"
1403     fi
1404     PREFIX_OPENSSL=/usr/local/ssl
1405     LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1406     ;;
1407   off)
1408     dnl no --with-ssl option given, just check default places
1409     if test x$cross_compiling != xyes; then
1410       dnl only do pkg-config magic when not cross-compiling
1411       PKGTEST="yes"
1412     fi
1413     PREFIX_OPENSSL=
1414     ;;
1415   *)
1416     dnl check the given --with-ssl spot
1417     PKGTEST="no"
1418     PREFIX_OPENSSL=$OPT_SSL
1419
1420     dnl Try pkg-config even when cross-compiling.  Since we
1421     dnl specify PKG_CONFIG_LIBDIR we're only looking where
1422     dnl the user told us to look
1423     OPENSSL_PCDIR="$OPT_SSL/lib/pkgconfig"
1424     AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$OPENSSL_PCDIR"])
1425     if test -f "$OPENSSL_PCDIR/openssl.pc"; then
1426       PKGTEST="yes"
1427     fi
1428
1429     dnl in case pkg-config comes up empty, use what we got
1430     dnl via --with-ssl
1431     LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1432     if test "$PREFIX_OPENSSL" != "/usr" ; then
1433       SSL_LDFLAGS="-L$LIB_OPENSSL"
1434       SSL_CPPFLAGS="-I$PREFIX_OPENSSL/include"
1435     fi
1436     SSL_CPPFLAGS="$SSL_CPPFLAGS -I$PREFIX_OPENSSL/include/openssl"
1437     ;;
1438   esac
1439
1440   if test "$PKGTEST" = "yes"; then
1441
1442     CURL_CHECK_PKGCONFIG(openssl, [$OPENSSL_PCDIR])
1443
1444     if test "$PKGCONFIG" != "no" ; then
1445       SSL_LIBS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1446         $PKGCONFIG --libs-only-l openssl 2>/dev/null`
1447
1448       SSL_LDFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1449         $PKGCONFIG --libs-only-L openssl 2>/dev/null`
1450
1451       SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1452         $PKGCONFIG --cflags-only-I openssl 2>/dev/null`
1453
1454       AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"])
1455       AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"])
1456       AC_MSG_NOTICE([pkg-config: SSL_CPPFLAGS: "$SSL_CPPFLAGS"])
1457
1458       LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/-L//g'`
1459
1460       dnl use the values pkg-config reported.  This is here
1461       dnl instead of below with CPPFLAGS and LDFLAGS because we only
1462       dnl learn about this via pkg-config.  If we only have
1463       dnl the argument to --with-ssl we don't know what
1464       dnl additional libs may be necessary.  Hope that we
1465       dnl don't need any.
1466       LIBS="$SSL_LIBS $LIBS"
1467     fi
1468   fi
1469
1470   dnl finally, set flags to use SSL
1471   CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
1472   LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
1473
1474   dnl This is for Msys/Mingw
1475   case $host in
1476     *-*-msys* | *-*-mingw*)
1477       AC_MSG_CHECKING([for gdi32])
1478       my_ac_save_LIBS=$LIBS
1479       LIBS="-lgdi32 $LIBS"
1480       AC_TRY_LINK([#include <windef.h>
1481                    #include <wingdi.h>],
1482                    [GdiFlush();],
1483                    [ dnl worked!
1484                    AC_MSG_RESULT([yes])],
1485                    [ dnl failed, restore LIBS
1486                    LIBS=$my_ac_save_LIBS
1487                    AC_MSG_RESULT(no)]
1488                   )
1489       ;;
1490   esac
1491
1492   AC_CHECK_LIB(crypto, CRYPTO_lock,[
1493      HAVECRYPTO="yes"
1494      LIBS="-lcrypto $LIBS"
1495      ],[
1496      LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL"
1497      CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include"
1498      AC_CHECK_LIB(crypto, CRYPTO_add_lock,[
1499        HAVECRYPTO="yes"
1500        LIBS="-lcrypto $LIBS"], [
1501        LDFLAGS="$CLEANLDFLAGS"
1502        CPPFLAGS="$CLEANCPPFLAGS"
1503        LIBS="$CLEANLIBS"
1504        ])
1505     ])
1506
1507
1508   if test X"$HAVECRYPTO" = X"yes"; then
1509     dnl This is only reasonable to do if crypto actually is there: check for
1510     dnl SSL libs NOTE: it is important to do this AFTER the crypto lib
1511
1512     AC_CHECK_LIB(ssl, SSL_connect)
1513
1514     if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1515         dnl we didn't find the SSL lib, try the RSAglue/rsaref stuff
1516         AC_MSG_CHECKING(for ssl with RSAglue/rsaref libs in use);
1517         OLIBS=$LIBS
1518         LIBS="-lRSAglue -lrsaref $LIBS"
1519         AC_CHECK_LIB(ssl, SSL_connect)
1520         if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1521             dnl still no SSL_connect
1522             AC_MSG_RESULT(no)
1523             LIBS=$OLIBS
1524         else
1525             AC_MSG_RESULT(yes)
1526         fi
1527
1528     else
1529
1530       dnl Have the libraries--check for SSLeay/OpenSSL headers
1531       AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
1532                        openssl/pem.h openssl/ssl.h openssl/err.h,
1533         curl_ssl_msg="enabled (OpenSSL)"
1534         OPENSSL_ENABLED=1
1535         AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]))
1536
1537       if test $ac_cv_header_openssl_x509_h = no; then
1538         dnl we don't use the "action" part of the AC_CHECK_HEADERS macro
1539         dnl since 'err.h' might in fact find a krb4 header with the same
1540         dnl name
1541         AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h)
1542
1543         if test $ac_cv_header_x509_h = yes &&
1544            test $ac_cv_header_crypto_h = yes &&
1545            test $ac_cv_header_ssl_h = yes; then
1546           dnl three matches
1547           curl_ssl_msg="enabled (OpenSSL)"
1548           OPENSSL_ENABLED=1
1549         fi
1550       fi
1551     fi
1552
1553     if test X"$OPENSSL_ENABLED" = X"1"; then
1554        AC_DEFINE(USE_SSLEAY, 1, [if SSL is enabled])
1555
1556        dnl is there a pkcs12.h header present?
1557        AC_CHECK_HEADERS(openssl/pkcs12.h)
1558     else
1559        LIBS="$CLEANLIBS"
1560     fi
1561     dnl USE_SSLEAY is the historical name for what configure calls
1562     dnl OPENSSL_ENABLED; the names should really be unified
1563     USE_SSLEAY="$OPENSSL_ENABLED"
1564     AC_SUBST(USE_SSLEAY)
1565
1566     if test X"$OPT_SSL" != Xoff &&
1567        test "$OPENSSL_ENABLED" != "1"; then
1568       AC_MSG_ERROR([OpenSSL libs and/or directories were not found where specified!])
1569     fi
1570   fi
1571
1572   if test X"$OPENSSL_ENABLED" = X"1"; then
1573     dnl If the ENGINE library seems to be around, check for the OpenSSL engine
1574     dnl stuff, it is kind of "separated" from the main SSL check
1575     AC_CHECK_FUNC(ENGINE_init,
1576               [
1577                 AC_CHECK_HEADERS(openssl/engine.h)
1578                 AC_CHECK_FUNCS( ENGINE_load_builtin_engines )
1579               ])
1580
1581     dnl these can only exist if openssl exists
1582     dnl yassl doesn't have SSL_get_shutdown
1583
1584     AC_CHECK_FUNCS( RAND_status \
1585                     RAND_screen \
1586                     RAND_egd \
1587                     ENGINE_cleanup \
1588                     CRYPTO_cleanup_all_ex_data \
1589                     SSL_get_shutdown \
1590                     SSLv2_client_method )
1591
1592     dnl Make an attempt to detect if this is actually yassl's headers and
1593     dnl OpenSSL emulation layer. We still leave everything else believing
1594     dnl and acting like OpenSSL.
1595
1596     AC_MSG_CHECKING([for yaSSL using OpenSSL compatibility mode])
1597     AC_COMPILE_IFELSE([
1598       AC_LANG_PROGRAM([[
1599 #include <openssl/ssl.h>
1600       ]],[[
1601 #if defined(YASSL_VERSION) && defined(OPENSSL_VERSION_NUMBER)
1602         int dummy = SSL_ERROR_NONE;
1603 #else
1604         Not the yaSSL OpenSSL compatibility header.
1605 #endif
1606       ]])
1607     ],[
1608       AC_MSG_RESULT([yes])
1609       AC_DEFINE_UNQUOTED(USE_YASSLEMUL, 1,
1610         [Define to 1 if using yaSSL in OpenSSL compatibility mode.])
1611       curl_ssl_msg="enabled (OpenSSL emulation by yaSSL)"
1612     ],[
1613       AC_MSG_RESULT([no])
1614     ])
1615   fi
1616
1617   if test "$OPENSSL_ENABLED" = "1"; then
1618     if test -n "$LIB_OPENSSL"; then
1619        dnl when the ssl shared libs were found in a path that the run-time
1620        dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
1621        dnl to prevent further configure tests to fail due to this
1622        if test "x$cross_compiling" != "xyes"; then
1623          LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_OPENSSL"
1624          export LD_LIBRARY_PATH
1625          AC_MSG_NOTICE([Added $LIB_OPENSSL to LD_LIBRARY_PATH])
1626        fi
1627     fi
1628     CURL_CHECK_OPENSSL_API
1629   fi
1630
1631 fi
1632
1633 dnl **********************************************************************
1634 dnl Check for the random seed preferences
1635 dnl **********************************************************************
1636
1637 if test X"$OPENSSL_ENABLED" = X"1"; then
1638   AC_ARG_WITH(egd-socket,
1639   AC_HELP_STRING([--with-egd-socket=FILE],
1640                  [Entropy Gathering Daemon socket pathname]),
1641       [ EGD_SOCKET="$withval" ]
1642   )
1643   if test -n "$EGD_SOCKET" ; then
1644           AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET",
1645           [your Entropy Gathering Daemon socket pathname] )
1646   fi
1647
1648   dnl Check for user-specified random device
1649   AC_ARG_WITH(random,
1650   AC_HELP_STRING([--with-random=FILE],
1651                  [read randomness from FILE (default=/dev/urandom)]),
1652       [ RANDOM_FILE="$withval" ],
1653       [
1654           if test x$cross_compiling != xyes; then
1655             dnl Check for random device
1656             AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
1657           else
1658             AC_MSG_WARN([skipped the /dev/urandom detection when cross-compiling])
1659           fi
1660       ]
1661   )
1662   if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
1663           AC_SUBST(RANDOM_FILE)
1664           AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
1665           [a suitable file to read random data from])
1666   fi
1667 fi
1668
1669 dnl ---
1670 dnl We require OpenSSL with SRP support.
1671 dnl ---
1672 if test "$OPENSSL_ENABLED" = "1"; then
1673   AC_CHECK_LIB(crypto, SRP_Calc_client_key,
1674    [
1675      AC_DEFINE(HAVE_SSLEAY_SRP, 1, [if you have the function SRP_Calc_client_key])
1676      AC_SUBST(HAVE_SSLEAY_SRP, [1])
1677    ])
1678 fi
1679
1680 dnl ----------------------------------------------------
1681 dnl check for GnuTLS
1682 dnl ----------------------------------------------------
1683
1684 dnl Default to compiler & linker defaults for GnuTLS files & libraries.
1685 OPT_GNUTLS=no
1686
1687 AC_ARG_WITH(gnutls,dnl
1688 AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root])
1689 AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]),
1690   OPT_GNUTLS=$withval)
1691
1692 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1693
1694   if test X"$OPT_GNUTLS" != Xno; then
1695
1696     addld=""
1697     addlib=""
1698     gtlslib=""
1699     version=""
1700     addcflags=""
1701
1702     if test "x$OPT_GNUTLS" = "xyes"; then
1703       dnl this is with no partiular path given
1704       CURL_CHECK_PKGCONFIG(gnutls)
1705
1706       if test "$PKGCONFIG" != "no" ; then
1707         addlib=`$PKGCONFIG --libs-only-l gnutls`
1708         addld=`$PKGCONFIG --libs-only-L gnutls`
1709         addcflags=`$PKGCONFIG --cflags-only-I gnutls`
1710         version=`$PKGCONFIG --modversion gnutls`
1711         gtlslib=`echo $addld | $SED -e 's/-L//'`
1712       else
1713         dnl without pkg-config, we try libgnutls-config as that was how it
1714         dnl used to be done
1715         check=`libgnutls-config --version 2>/dev/null`
1716         if test -n "$check"; then
1717           addlib=`libgnutls-config --libs`
1718           addcflags=`libgnutls-config --cflags`
1719           version=`libgnutls-config --version`
1720           gtlslib=`libgnutls-config --prefix`/lib$libsuff
1721         fi
1722       fi
1723     else
1724       dnl this is with a given path, first check if there's a libgnutls-config
1725       dnl there and if not, make an educated guess
1726       cfg=$OPT_GNUTLS/bin/libgnutls-config
1727       check=`$cfg --version 2>/dev/null`
1728       if test -n "$check"; then
1729         addlib=`$cfg --libs`
1730         addcflags=`$cfg --cflags`
1731         version=`$cfg --version`
1732         gtlslib=`$cfg --prefix`/lib$libsuff
1733       else
1734         dnl without pkg-config and libgnutls-config, we guess a lot!
1735         addlib=-lgnutls
1736         addld=-L$OPT_GNUTLS/lib$libsuff
1737         addcflags=-I$OPT_GNUTLS/include
1738         version="" # we just don't know
1739         gtlslib=$OPT_GNUTLS/lib$libsuff
1740       fi
1741     fi
1742
1743     if test -z "$version"; then
1744       dnl lots of efforts, still no go
1745       version="unknown"
1746     fi
1747
1748     if test -n "$addlib"; then
1749
1750       CLEANLIBS="$LIBS"
1751       CLEANCPPFLAGS="$CPPFLAGS"
1752       CLEANLDFLAGS="$LDFLAGS"
1753
1754       LIBS="$addlib $LIBS"
1755       LDFLAGS="$LDFLAGS $addld"
1756       if test "$addcflags" != "-I/usr/include"; then
1757          CPPFLAGS="$CPPFLAGS $addcflags"
1758       fi
1759
1760       AC_CHECK_LIB(gnutls, gnutls_check_version,
1761        [
1762        AC_DEFINE(USE_GNUTLS, 1, [if GnuTLS is enabled])
1763        AC_SUBST(USE_GNUTLS, [1])
1764        GNUTLS_ENABLED=1
1765        USE_GNUTLS="yes"
1766        curl_ssl_msg="enabled (GnuTLS)"
1767        ],
1768        [
1769          LIBS="$CLEANLIBS"
1770          CPPFLAGS="$CLEANCPPFLAGS"
1771        ])
1772
1773       if test "x$USE_GNUTLS" = "xyes"; then
1774         AC_MSG_NOTICE([detected GnuTLS version $version])
1775
1776         if test -n "$gtlslib"; then
1777           dnl when shared libs were found in a path that the run-time
1778           dnl linker doesn't search through, we need to add it to
1779           dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1780           dnl due to this
1781           if test "x$cross_compiling" != "xyes"; then 
1782             LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlslib"
1783             export LD_LIBRARY_PATH
1784             AC_MSG_NOTICE([Added $gtlslib to LD_LIBRARY_PATH])
1785           fi
1786         fi
1787       fi
1788
1789     fi
1790
1791   fi dnl GNUTLS not disabled
1792
1793 fi
1794
1795 dnl ---
1796 dnl Check which crypto backend GnuTLS uses
1797 dnl ---
1798
1799 if test "$GNUTLS_ENABLED" = "1"; then
1800   USE_GNUTLS_NETTLE=
1801   # First check if we can detect either crypto library via transitive linking
1802   AC_CHECK_LIB(gnutls, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1803   if test "$USE_GNUTLS_NETTLE" = ""; then
1804     AC_CHECK_LIB(gnutls, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1805   fi
1806   # If not, try linking directly to both of them to see if they are available
1807   if test "$USE_GNUTLS_NETTLE" = ""; then
1808     AC_CHECK_LIB(nettle, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1809   fi
1810   if test "$USE_GNUTLS_NETTLE" = ""; then
1811     AC_CHECK_LIB(gcrypt, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1812   fi
1813   if test "$USE_GNUTLS_NETTLE" = ""; then
1814     AC_MSG_ERROR([GnuTLS found, but neither gcrypt nor nettle found])
1815   fi
1816   if test "$USE_GNUTLS_NETTLE" = "1"; then
1817     AC_DEFINE(USE_GNUTLS_NETTLE, 1, [if GnuTLS uses nettle as crypto backend])
1818     AC_SUBST(USE_GNUTLS_NETTLE, [1])
1819     LIBS="-lnettle $LIBS"
1820   else
1821     LIBS="-lgcrypt $LIBS"
1822   fi
1823 fi
1824
1825 dnl ---
1826 dnl We require GnuTLS with SRP support.
1827 dnl ---
1828 if test "$GNUTLS_ENABLED" = "1"; then
1829   AC_CHECK_LIB(gnutls, gnutls_srp_verifier,
1830    [
1831      AC_DEFINE(HAVE_GNUTLS_SRP, 1, [if you have the function gnutls_srp_verifier])
1832      AC_SUBST(HAVE_GNUTLS_SRP, [1])
1833    ])
1834 fi
1835
1836 dnl ----------------------------------------------------
1837 dnl check for PolarSSL
1838 dnl ----------------------------------------------------
1839
1840 dnl Default to compiler & linker defaults for PolarSSL files & libraries.
1841 OPT_POLARSSL=no
1842
1843 _cppflags=$CPPFLAGS
1844 _ldflags=$LDFLAGS
1845 AC_ARG_WITH(polarssl,dnl
1846 AC_HELP_STRING([--with-polarssl=PATH],[where to look for PolarSSL, PATH points to the installation root])
1847 AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]),
1848   OPT_POLARSSL=$withval)
1849
1850 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1851
1852   if test X"$OPT_POLARSSL" != Xno; then
1853
1854     if test "$OPT_POLARSSL" = "yes"; then
1855       OPT_POLARSSL=""
1856     fi
1857
1858     if test -z "$OPT_POLARSSL" ; then
1859       dnl check for lib first without setting any new path
1860
1861       AC_CHECK_LIB(polarssl, havege_init,
1862       dnl libpolarssl found, set the variable
1863        [
1864          AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1865          AC_SUBST(USE_POLARSSL, [1])
1866          POLARSSL_ENABLED=1
1867          USE_POLARSSL="yes"
1868          curl_ssl_msg="enabled (PolarSSL)"
1869         ])
1870     fi
1871
1872     addld=""
1873     addlib=""
1874     addcflags=""
1875     polarssllib=""
1876
1877     if test "x$USE_POLARSSL" != "xyes"; then
1878       dnl add the path and test again
1879       addld=-L$OPT_POLARSSL/lib$libsuff
1880       addcflags=-I$OPT_POLARSSL/include
1881       polarssllib=$OPT_POLARSSL/lib$libsuff
1882
1883       LDFLAGS="$LDFLAGS $addld"
1884       if test "$addcflags" != "-I/usr/include"; then
1885          CPPFLAGS="$CPPFLAGS $addcflags"
1886       fi
1887
1888       AC_CHECK_LIB(polarssl, ssl_init,
1889        [
1890        AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1891        AC_SUBST(USE_POLARSSL, [1])
1892        POLARSSL_ENABLED=1
1893        USE_POLARSSL="yes"
1894        curl_ssl_msg="enabled (PolarSSL)"
1895        ],
1896        [
1897          CPPFLAGS=$_cppflags
1898          LDFLAGS=$_ldflags
1899        ])
1900     fi
1901
1902     if test "x$USE_POLARSSL" = "xyes"; then
1903       AC_MSG_NOTICE([detected PolarSSL])
1904
1905       LIBS="-lpolarssl $LIBS"
1906
1907       if test -n "$polarssllib"; then
1908         dnl when shared libs were found in a path that the run-time
1909         dnl linker doesn't search through, we need to add it to
1910         dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1911         dnl due to this
1912         if test "x$cross_compiling" != "xyes"; then
1913           LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$polarssllib"
1914           export LD_LIBRARY_PATH
1915           AC_MSG_NOTICE([Added $polarssllib to LD_LIBRARY_PATH])
1916         fi
1917       fi
1918     fi
1919
1920   fi dnl PolarSSL not disabled
1921
1922 fi
1923
1924 dnl ----------------------------------------------------
1925 dnl check for CyaSSL
1926 dnl ----------------------------------------------------
1927
1928 dnl Default to compiler & linker defaults for CyaSSL files & libraries.
1929 OPT_CYASSL=no
1930
1931 _cppflags=$CPPFLAGS
1932 _ldflags=$LDFLAGS
1933 AC_ARG_WITH(cyassl,dnl
1934 AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to the installation root (default: system lib default)])
1935 AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
1936   OPT_CYASSL=$withval)
1937
1938 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1939
1940   if test X"$OPT_CYASSL" != Xno; then
1941
1942     if test "$OPT_CYASSL" = "yes"; then
1943       OPT_CYASSL=""
1944     fi
1945
1946     if test -z "$OPT_CYASSL" ; then
1947       dnl check for lib in system default first
1948
1949       AC_CHECK_LIB(cyassl, CyaSSL_Init,
1950       dnl libcyassl found, set the variable
1951        [
1952          AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
1953          AC_SUBST(USE_CYASSL, [1])
1954          CYASSL_ENABLED=1
1955          USE_CYASSL="yes"
1956          curl_ssl_msg="enabled (CyaSSL)"
1957         ])
1958     fi
1959
1960     addld=""
1961     addlib=""
1962     addcflags=""
1963     cyassllib=""
1964
1965     if test "x$USE_CYASSL" != "xyes"; then
1966       dnl add the path and test again
1967       addld=-L$OPT_CYASSL/lib$libsuff
1968       addcflags=-I$OPT_CYASSL/include
1969       cyassllib=$OPT_CYASSL/lib$libsuff
1970
1971       LDFLAGS="$LDFLAGS $addld"
1972       if test "$addcflags" != "-I/usr/include"; then
1973          CPPFLAGS="$CPPFLAGS $addcflags"
1974       fi
1975
1976       AC_CHECK_LIB(cyassl, CyaSSL_Init,
1977        [
1978        AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
1979        AC_SUBST(USE_CYASSL, [1])
1980        CYASSL_ENABLED=1
1981        USE_CYASSL="yes"
1982        curl_ssl_msg="enabled (CyaSSL)"
1983        ],
1984        [
1985          CPPFLAGS=$_cppflags
1986          LDFLAGS=$_ldflags
1987        ])
1988     fi
1989
1990     if test "x$USE_CYASSL" = "xyes"; then
1991       AC_MSG_NOTICE([detected CyaSSL])
1992
1993       dnl cyassl/ctaocrypt/types.h needs SIZEOF_LONG_LONG defined!
1994       AC_CHECK_SIZEOF(long long)
1995
1996       dnl Versions since at least 2.9.4 renamed error.h to error-ssl.h
1997       AC_CHECK_HEADERS(cyassl/error-ssl.h)
1998
1999       LIBS="-lcyassl -lm $LIBS"
2000
2001       if test -n "$cyassllib"; then
2002         dnl when shared libs were found in a path that the run-time
2003         dnl linker doesn't search through, we need to add it to
2004         dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2005         dnl due to this
2006         if test "x$cross_compiling" != "xyes"; then
2007           LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$cyassllib"
2008           export LD_LIBRARY_PATH
2009           AC_MSG_NOTICE([Added $cyassllib to LD_LIBRARY_PATH])
2010         fi
2011       fi
2012
2013     fi
2014
2015   fi dnl CyaSSL not disabled
2016
2017 fi
2018
2019 dnl ----------------------------------------------------
2020 dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
2021 dnl ----------------------------------------------------
2022
2023 dnl Default to compiler & linker defaults for NSS files & libraries.
2024 OPT_NSS=no
2025
2026 AC_ARG_WITH(nss,dnl
2027 AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root])
2028 AC_HELP_STRING([--without-nss], [disable NSS detection]),
2029   OPT_NSS=$withval)
2030
2031 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2032
2033   if test X"$OPT_NSS" != Xno; then
2034
2035     addld=""
2036     addlib=""
2037     addcflags=""
2038     nssprefix=""
2039     version=""
2040
2041     if test "x$OPT_NSS" = "xyes"; then
2042
2043       CURL_CHECK_PKGCONFIG(nss)
2044
2045       if test "$PKGCONFIG" != "no" ; then
2046         addlib=`$PKGCONFIG --libs nss`
2047         addcflags=`$PKGCONFIG --cflags nss`
2048         version=`$PKGCONFIG --modversion nss`
2049         nssprefix=`$PKGCONFIG --variable=prefix nss`
2050       else
2051         dnl Without pkg-config, we check for nss-config
2052
2053         check=`nss-config --version 2>/dev/null`
2054         if test -n "$check"; then
2055           addlib=`nss-config --libs`
2056           addcflags=`nss-config --cflags`
2057           version=`nss-config --version`
2058           nssprefix=`nss-config --prefix`
2059         else
2060           addlib="-lnss3"
2061           addcflags=""
2062           version="unknown"
2063         fi
2064       fi
2065     else
2066         # Without pkg-config, we'll kludge in some defaults
2067         addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
2068         addcflags="-I$OPT_NSS/include"
2069         version="unknown"
2070         nssprefix=$OPT_NSS
2071     fi
2072
2073     if test -n "$addlib"; then
2074
2075       CLEANLIBS="$LIBS"
2076       CLEANCPPFLAGS="$CPPFLAGS"
2077
2078       LIBS="$addlib $LIBS"
2079       if test "$addcflags" != "-I/usr/include"; then
2080          CPPFLAGS="$CPPFLAGS $addcflags"
2081       fi
2082
2083       dnl The function SSL_VersionRangeSet() is needed to enable TLS > 1.0
2084       AC_CHECK_LIB(nss3, SSL_VersionRangeSet,
2085        [
2086        AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
2087        AC_SUBST(USE_NSS, [1])
2088        USE_NSS="yes"
2089        NSS_ENABLED=1
2090        curl_ssl_msg="enabled (NSS)"
2091        ],
2092        [
2093          LIBS="$CLEANLIBS"
2094          CPPFLAGS="$CLEANCPPFLAGS"
2095        ])
2096
2097       if test "x$USE_NSS" = "xyes"; then
2098         AC_MSG_NOTICE([detected NSS version $version])
2099
2100         dnl needed when linking the curl tool without USE_EXPLICIT_LIB_DEPS
2101         NSS_LIBS=$addlib
2102         AC_SUBST([NSS_LIBS])
2103
2104         dnl when shared libs were found in a path that the run-time
2105         dnl linker doesn't search through, we need to add it to
2106         dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2107         dnl due to this
2108         if test "x$cross_compiling" != "xyes"; then
2109           LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
2110           export LD_LIBRARY_PATH
2111           AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
2112         fi
2113       fi
2114
2115     fi
2116
2117   fi dnl NSS not disabled
2118
2119 fi dnl curl_ssl_msg = init_ssl_msg
2120
2121 OPT_AXTLS=off
2122
2123 AC_ARG_WITH(axtls,dnl
2124 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.])
2125 AC_HELP_STRING([--without-axtls], [disable axTLS]),
2126   OPT_AXTLS=$withval)
2127
2128 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2129   if test X"$OPT_AXTLS" != Xno; then
2130     dnl backup the pre-axtls variables
2131     CLEANLDFLAGS="$LDFLAGS"
2132     CLEANCPPFLAGS="$CPPFLAGS"
2133     CLEANLIBS="$LIBS"
2134
2135     case "$OPT_AXTLS" in
2136     yes)
2137       dnl --with-axtls (without path) used
2138       PREFIX_AXTLS=/usr/local
2139       LIB_AXTLS="$PREFIX_AXTLS/lib"
2140       LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2141       CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2142       ;;
2143     off)
2144       dnl no --with-axtls option given, just check default places
2145       PREFIX_AXTLS=
2146       ;;
2147     *)
2148       dnl check the given --with-axtls spot
2149       PREFIX_AXTLS=$OPT_AXTLS
2150       LIB_AXTLS="$PREFIX_AXTLS/lib"
2151       LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2152       CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2153       ;;
2154     esac
2155
2156     AC_CHECK_LIB(axtls, ssl_version,[
2157       LIBS="-laxtls $LIBS"
2158       AC_DEFINE(USE_AXTLS, 1, [if axTLS is enabled])
2159       AC_SUBST(USE_AXTLS, [1])
2160       AXTLS_ENABLED=1
2161       USE_AXTLS="yes"
2162       curl_ssl_msg="enabled (axTLS)"
2163
2164       if test "x$cross_compiling" != "xyes"; then
2165         LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
2166         export LD_LIBRARY_PATH
2167         AC_MSG_NOTICE([Added $LIB_AXTLS to LD_LIBRARY_PATH])
2168       fi
2169       ],[
2170       LDFLAGS="$CLEANLDFLAGS"
2171       CPPFLAGS="$CLEANCPPFLAGS"
2172       LIBS="$CLEANLIBS"
2173     ])
2174   fi
2175 fi
2176
2177 if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$DARWINSSL_ENABLED" = "x"; then
2178   AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
2179   AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls, --with-winssl, or --with-darwinssl to address this.])
2180 else
2181   # SSL is enabled, genericly
2182   AC_SUBST(SSL_ENABLED)
2183   SSL_ENABLED="1"
2184 fi
2185
2186 dnl **********************************************************************
2187 dnl Check for the CA bundle
2188 dnl **********************************************************************
2189
2190 CURL_CHECK_CA_BUNDLE
2191
2192 dnl **********************************************************************
2193 dnl Check for libmetalink
2194 dnl **********************************************************************
2195
2196 OPT_LIBMETALINK=no
2197
2198 AC_ARG_WITH(libmetalink,dnl
2199 AC_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root])
2200 AC_HELP_STRING([--without-libmetalink], [disable libmetalink detection]),
2201   OPT_LIBMETALINK=$withval)
2202
2203 if test X"$OPT_LIBMETALINK" != Xno; then
2204
2205   addld=""
2206   addlib=""
2207   addcflags=""
2208   version=""
2209   libmetalinklib=""
2210
2211   PKGTEST="no"
2212   if test "x$OPT_LIBMETALINK" = "xyes"; then
2213     dnl this is with no partiular path given
2214     PKGTEST="yes"
2215     CURL_CHECK_PKGCONFIG(libmetalink)
2216   else
2217     dnl When particular path is given, set PKG_CONFIG_LIBDIR using the path.
2218     LIBMETALINK_PCDIR="$OPT_LIBMETALINK/lib/pkgconfig"
2219     AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$LIBMETALINK_PCDIR"])
2220     if test -f "$LIBMETALINK_PCDIR/libmetalink.pc"; then
2221       PKGTEST="yes"
2222     fi
2223     if test "$PKGTEST" = "yes"; then
2224       CURL_CHECK_PKGCONFIG(libmetalink, [$LIBMETALINK_PCDIR])
2225     fi
2226   fi
2227   if test "$PKGTEST" = "yes" && test "$PKGCONFIG" != "no"; then
2228     addlib=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2229       $PKGCONFIG --libs-only-l libmetalink`
2230     addld=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2231       $PKGCONFIG --libs-only-L libmetalink`
2232     addcflags=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2233       $PKGCONFIG --cflags-only-I libmetalink`
2234     version=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2235       $PKGCONFIG --modversion libmetalink`
2236     libmetalinklib=`echo $addld | $SED -e 's/-L//'`
2237   fi
2238   if test -n "$addlib"; then
2239
2240     clean_CPPFLAGS="$CPPFLAGS"
2241     clean_LDFLAGS="$LDFLAGS"
2242     clean_LIBS="$LIBS"
2243     CPPFLAGS="$addcflags $clean_CPPFLAGS"
2244     LDFLAGS="$addld $clean_LDFLAGS"
2245     LIBS="$addlib $clean_LIBS"
2246     AC_MSG_CHECKING([if libmetalink is recent enough])
2247     AC_LINK_IFELSE([
2248       AC_LANG_PROGRAM([[
2249 #       include <metalink/metalink.h>
2250       ]],[[
2251         if(0 != metalink_strerror(0)) /* added in 0.1.0 */
2252           return 1;
2253       ]])
2254     ],[
2255       AC_MSG_RESULT([yes ($version)])
2256       want_metalink="yes"
2257     ],[
2258       AC_MSG_RESULT([no ($version)])
2259       AC_MSG_NOTICE([libmetalink library defective or too old])
2260       want_metalink="no"
2261     ])
2262     CPPFLAGS="$clean_CPPFLAGS"
2263     LDFLAGS="$clean_LDFLAGS"
2264     LIBS="$clean_LIBS"
2265     if test "$want_metalink" = "yes"; then
2266       dnl finally libmetalink will be used
2267       AC_DEFINE(USE_METALINK, 1, [Define to enable metalink support])
2268       LIBMETALINK_LIBS=$addlib
2269       LIBMETALINK_LDFLAGS=$addld
2270       LIBMETALINK_CPPFLAGS=$addcflags
2271       AC_SUBST([LIBMETALINK_LIBS])
2272       AC_SUBST([LIBMETALINK_LDFLAGS])
2273       AC_SUBST([LIBMETALINK_CPPFLAGS])
2274       curl_mtlnk_msg="enabled"
2275     fi
2276
2277   fi
2278 fi
2279
2280 dnl **********************************************************************
2281 dnl Check for the presence of LIBSSH2 libraries and headers
2282 dnl **********************************************************************
2283
2284 dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
2285 OPT_LIBSSH2=off
2286 AC_ARG_WITH(libssh2,dnl
2287 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])
2288 AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
2289   OPT_LIBSSH2=$withval)
2290
2291 if test X"$OPT_LIBSSH2" != Xno; then
2292   dnl backup the pre-libssh2 variables
2293   CLEANLDFLAGS="$LDFLAGS"
2294   CLEANCPPFLAGS="$CPPFLAGS"
2295   CLEANLIBS="$LIBS"
2296
2297   case "$OPT_LIBSSH2" in
2298   yes)
2299     dnl --with-libssh2 (without path) used
2300     CURL_CHECK_PKGCONFIG(libssh2)
2301
2302     if test "$PKGCONFIG" != "no" ; then
2303       LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2`
2304       LD_SSH2=`$PKGCONFIG --libs-only-L libssh2`
2305       CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2`
2306       version=`$PKGCONFIG --modversion libssh2`
2307       DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'`
2308     fi
2309
2310     ;;
2311   off)
2312     dnl no --with-libssh2 option given, just check default places
2313     ;;
2314   *)
2315     dnl use the given --with-libssh2 spot
2316     PREFIX_SSH2=$OPT_LIBSSH2
2317     ;;
2318   esac
2319
2320   dnl if given with a prefix, we set -L and -I based on that
2321   if test -n "$PREFIX_SSH2"; then
2322     LIB_SSH2="-lssh2"
2323     LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff
2324     CPP_SSH2=-I${PREFIX_SSH2}/include
2325     DIR_SSH2=${PREFIX_SSH2}/lib$libsuff
2326   fi
2327
2328   LDFLAGS="$LDFLAGS $LD_SSH2"
2329   CPPFLAGS="$CPPFLAGS $CPP_SSH2"
2330   LIBS="$LIB_SSH2 $LIBS"
2331
2332   AC_CHECK_LIB(ssh2, libssh2_channel_open_ex)
2333
2334   AC_CHECK_HEADERS(libssh2.h,
2335     curl_ssh_msg="enabled (libSSH2)"
2336     LIBSSH2_ENABLED=1
2337     AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
2338     AC_SUBST(USE_LIBSSH2, [1])
2339   )
2340
2341   if test X"$OPT_LIBSSH2" != Xoff &&
2342      test "$LIBSSH2_ENABLED" != "1"; then
2343     AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!])
2344   fi
2345
2346   if test "$LIBSSH2_ENABLED" = "1"; then
2347     if test -n "$DIR_SSH2"; then
2348        dnl when the libssh2 shared libs were found in a path that the run-time
2349        dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
2350        dnl to prevent further configure tests to fail due to this
2351
2352        if test "x$cross_compiling" != "xyes"; then
2353          LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
2354          export LD_LIBRARY_PATH
2355          AC_MSG_NOTICE([Added $DIR_SSH2 to LD_LIBRARY_PATH])
2356        fi
2357     fi
2358   else
2359     dnl no libssh2, revert back to clean variables
2360     LDFLAGS=$CLEANLDFLAGS
2361     CPPFLAGS=$CLEANCPPFLAGS
2362     LIBS=$CLEANLIBS
2363   fi
2364 fi
2365
2366 dnl **********************************************************************
2367 dnl Check for the presence of LIBRTMP libraries and headers
2368 dnl **********************************************************************
2369
2370 dnl Default to compiler & linker defaults for LIBRTMP files & libraries.
2371 OPT_LIBRTMP=off
2372 AC_ARG_WITH(librtmp,dnl
2373 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])
2374 AC_HELP_STRING([--without-librtmp], [disable LIBRTMP]),
2375   OPT_LIBRTMP=$withval)
2376
2377 if test X"$OPT_LIBRTMP" != Xno; then
2378   dnl backup the pre-librtmp variables
2379   CLEANLDFLAGS="$LDFLAGS"
2380   CLEANCPPFLAGS="$CPPFLAGS"
2381   CLEANLIBS="$LIBS"
2382
2383   case "$OPT_LIBRTMP" in
2384   yes)
2385     dnl --with-librtmp (without path) used
2386     CURL_CHECK_PKGCONFIG(librtmp)
2387
2388     if test "$PKGCONFIG" != "no" ; then
2389       LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp`
2390       LD_RTMP=`$PKGCONFIG --libs-only-L librtmp`
2391       CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp`
2392       version=`$PKGCONFIG --modversion librtmp`
2393       DIR_RTMP=`echo $LD_RTMP | $SED -e 's/-L//'`
2394     else
2395       dnl To avoid link errors, we do not allow --librtmp without
2396       dnl a pkgconfig file
2397       AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.])
2398     fi
2399
2400     ;;
2401   off)
2402     dnl no --with-librtmp option given, just check default places
2403     LIB_RTMP="-lrtmp"
2404     ;;
2405   *)
2406     dnl use the given --with-librtmp spot
2407     PREFIX_RTMP=$OPT_LIBRTMP
2408     ;;
2409   esac
2410
2411   dnl if given with a prefix, we set -L and -I based on that
2412   if test -n "$PREFIX_RTMP"; then
2413     LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff
2414     CPP_RTMP=-I${PREFIX_RTMP}/include
2415     DIR_RTMP=${PREFIX_RTMP}/lib$libsuff
2416   fi
2417
2418   LDFLAGS="$LDFLAGS $LD_RTMP"
2419   CPPFLAGS="$CPPFLAGS $CPP_RTMP"
2420   LIBS="$LIB_RTMP $LIBS"
2421
2422   AC_CHECK_LIB(rtmp, RTMP_Init,
2423     [
2424      AC_CHECK_HEADERS(librtmp/rtmp.h,
2425         curl_rtmp_msg="enabled (librtmp)"
2426         LIBRTMP_ENABLED=1
2427         AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use])
2428         AC_SUBST(USE_LIBRTMP, [1])
2429      )
2430     ],
2431       dnl not found, revert back to clean variables
2432       LDFLAGS=$CLEANLDFLAGS
2433       CPPFLAGS=$CLEANCPPFLAGS
2434       LIBS=$CLEANLIBS
2435   )
2436
2437   if test X"$OPT_LIBRTMP" != Xoff &&
2438      test "$LIBRTMP_ENABLED" != "1"; then
2439     AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!])
2440   fi
2441
2442 fi
2443
2444 dnl **********************************************************************
2445 dnl Check for linker switch for versioned symbols
2446 dnl **********************************************************************
2447
2448 versioned_symbols_flavour=
2449 AC_MSG_CHECKING([whether versioned symbols are wanted])
2450 AC_ARG_ENABLE(versioned-symbols,
2451 AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library])
2452 AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]),
2453 [ case "$enableval" in
2454   yes) AC_MSG_RESULT(yes)
2455     AC_MSG_CHECKING([if libraries can be versioned])
2456     GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
2457     if test -z "$GLD"; then
2458         AC_MSG_RESULT(no)
2459         AC_MSG_WARN([You need an ld version supporting the --version-script option])
2460     else
2461         AC_MSG_RESULT(yes)
2462         if test "x$OPENSSL_ENABLED" = "x1"; then
2463           versioned_symbols_flavour="OPENSSL_"
2464         elif test "x$GNUTLS_ENABLED" = "x1"; then
2465           versioned_symbols_flavour="GNUTLS_"
2466         elif test "x$NSS_ENABLED" = "x1"; then
2467           versioned_symbols_flavour="NSS_"
2468         elif test "x$POLARSSL_ENABLED" = "x1"; then
2469           versioned_symbols_flavour="POLARSSL_"
2470         elif test "x$CYASSL_ENABLED" = "x1"; then
2471           versioned_symbols_flavour="CYASSL_"
2472         elif test "x$AXTLS_ENABLED" = "x1"; then
2473           versioned_symbols_flavour="AXTLS_"
2474         elif test "x$WINSSL_ENABLED" = "x1"; then
2475           versioned_symbols_flavour="WINSSL_"
2476         elif test "x$DARWINSSL_ENABLED" = "x1"; then
2477           versioned_symbols_flavour="DARWINSSL_"
2478         else
2479           versioned_symbols_flavour=""
2480         fi
2481         versioned_symbols="yes"
2482     fi
2483     ;;
2484
2485   *)   AC_MSG_RESULT(no)
2486     ;;
2487   esac
2488 ], [
2489 AC_MSG_RESULT(no)
2490 ]
2491 )
2492
2493 AC_SUBST([CURL_LT_SHLIB_VERSIONED_FLAVOUR],
2494   ["$versioned_symbols_flavour"])
2495 AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS],
2496   [test "x$versioned_symbols" = 'xyes'])
2497
2498 dnl -------------------------------------------------
2499 dnl check winidn option before other IDN libraries
2500 dnl -------------------------------------------------
2501
2502 AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)])
2503 OPT_WINIDN="default"
2504 AC_ARG_WITH(winidn,
2505 AC_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN])
2506 AC_HELP_STRING([--without-winidn], [disable Windows native IDN]),
2507   OPT_WINIDN=$withval)
2508 case "$OPT_WINIDN" in
2509   no|default)
2510     dnl --without-winidn option used or configure option not specified
2511     want_winidn="no"
2512     AC_MSG_RESULT([no])
2513     ;;
2514   yes)
2515     dnl --with-winidn option used without path
2516     want_winidn="yes"
2517     want_winidn_path="default"
2518     AC_MSG_RESULT([yes])
2519     ;;
2520   *)
2521     dnl --with-winidn option used with path
2522     want_winidn="yes"
2523     want_winidn_path="$withval"
2524     AC_MSG_RESULT([yes ($withval)])
2525     ;;
2526 esac
2527
2528 if test "$want_winidn" = "yes"; then
2529   dnl winidn library support has been requested
2530   clean_CPPFLAGS="$CPPFLAGS"
2531   clean_LDFLAGS="$LDFLAGS"
2532   clean_LIBS="$LIBS"
2533   WINIDN_LIBS="-lnormaliz"
2534   #
2535   if test "$want_winidn_path" != "default"; then
2536     dnl path has been specified
2537     dnl pkg-config not available or provides no info
2538     WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff"
2539     WINIDN_CPPFLAGS="-I$want_winidn_path/include"
2540     WINIDN_DIR="$want_winidn_path/lib$libsuff"
2541   fi
2542   #
2543   CPPFLAGS="$WINIDN_CPPFLAGS $CPPFLAGS"
2544   LDFLAGS="$WINIDN_LDFLAGS $LDFLAGS"
2545   LIBS="$WINIDN_LIBS $LIBS"
2546   #
2547   AC_MSG_CHECKING([if IdnToUnicode can be linked])
2548   AC_LINK_IFELSE([
2549     AC_LANG_FUNC_LINK_TRY([IdnToUnicode])
2550   ],[
2551     AC_MSG_RESULT([yes])
2552     tst_links_winidn="yes"
2553   ],[
2554     AC_MSG_RESULT([no])
2555     tst_links_winidn="no"
2556   ])
2557   #
2558   if test "$tst_links_winidn" = "yes"; then
2559     AC_DEFINE(USE_WIN32_IDN, 1, [Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz).])
2560     AC_DEFINE(WANT_IDN_PROTOTYPES, 1, [Define to 1 to provide own prototypes.])
2561     AC_SUBST([IDN_ENABLED], [1])
2562     curl_idn_msg="enabled (Windows-native)"
2563   else
2564     AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2565     CPPFLAGS="$clean_CPPFLAGS"
2566     LDFLAGS="$clean_LDFLAGS"
2567     LIBS="$clean_LIBS"
2568   fi
2569 fi
2570
2571 dnl **********************************************************************
2572 dnl Check for the presence of IDN libraries and headers
2573 dnl **********************************************************************
2574
2575 AC_MSG_CHECKING([whether to build with libidn])
2576 OPT_IDN="default"
2577 AC_ARG_WITH(libidn,
2578 AC_HELP_STRING([--with-libidn=PATH],[Enable libidn usage])
2579 AC_HELP_STRING([--without-libidn],[Disable libidn usage]),
2580   [OPT_IDN=$withval])
2581 case "$OPT_IDN" in
2582   no)
2583     dnl --without-libidn option used
2584     want_idn="no"
2585     AC_MSG_RESULT([no])
2586     ;;
2587   default)
2588     dnl configure option not specified
2589     want_idn="yes"
2590     want_idn_path="default"
2591     AC_MSG_RESULT([(assumed) yes])
2592     ;;
2593   yes)
2594     dnl --with-libidn option used without path
2595     want_idn="yes"
2596     want_idn_path="default"
2597     AC_MSG_RESULT([yes])
2598     ;;
2599   *)
2600     dnl --with-libidn option used with path
2601     want_idn="yes"
2602     want_idn_path="$withval"
2603     AC_MSG_RESULT([yes ($withval)])
2604     ;;
2605 esac
2606
2607 if test "$want_idn" = "yes"; then
2608   dnl idn library support has been requested
2609   clean_CPPFLAGS="$CPPFLAGS"
2610   clean_LDFLAGS="$LDFLAGS"
2611   clean_LIBS="$LIBS"
2612   PKGCONFIG="no"
2613   #
2614   if test "$want_idn_path" != "default"; then
2615     dnl path has been specified
2616     IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig"
2617     CURL_CHECK_PKGCONFIG(libidn, [$IDN_PCDIR])
2618     if test "$PKGCONFIG" != "no"; then
2619       IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2620         $PKGCONFIG --libs-only-l libidn 2>/dev/null`
2621       IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2622         $PKGCONFIG --libs-only-L libidn 2>/dev/null`
2623       IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2624         $PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2625       IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2626     else
2627       dnl pkg-config not available or provides no info
2628       IDN_LIBS="-lidn"
2629       IDN_LDFLAGS="-L$want_idn_path/lib$libsuff"
2630       IDN_CPPFLAGS="-I$want_idn_path/include"
2631       IDN_DIR="$want_idn_path/lib$libsuff"
2632     fi
2633   else
2634     dnl path not specified
2635     CURL_CHECK_PKGCONFIG(libidn)
2636     if test "$PKGCONFIG" != "no"; then
2637       IDN_LIBS=`$PKGCONFIG --libs-only-l libidn 2>/dev/null`
2638       IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn 2>/dev/null`
2639       IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2640       IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2641     else
2642       dnl pkg-config not available or provides no info
2643       IDN_LIBS="-lidn"
2644     fi
2645   fi
2646   #
2647   if test "$PKGCONFIG" != "no"; then
2648     AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"])
2649     AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"])
2650     AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2651     AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"])
2652   else
2653     AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"])
2654     AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"])
2655     AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2656     AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"])
2657   fi
2658   #
2659   CPPFLAGS="$IDN_CPPFLAGS $CPPFLAGS"
2660   LDFLAGS="$IDN_LDFLAGS $LDFLAGS"
2661   LIBS="$IDN_LIBS $LIBS"
2662   #
2663   AC_MSG_CHECKING([if idna_to_ascii_4i can be linked])
2664   AC_LINK_IFELSE([
2665     AC_LANG_FUNC_LINK_TRY([idna_to_ascii_4i])
2666   ],[
2667     AC_MSG_RESULT([yes])
2668     tst_links_libidn="yes"
2669   ],[
2670     AC_MSG_RESULT([no])
2671     tst_links_libidn="no"
2672   ])
2673   if test "$tst_links_libidn" = "no"; then
2674     AC_MSG_CHECKING([if idna_to_ascii_lz can be linked])
2675     AC_LINK_IFELSE([
2676       AC_LANG_FUNC_LINK_TRY([idna_to_ascii_lz])
2677     ],[
2678       AC_MSG_RESULT([yes])
2679       tst_links_libidn="yes"
2680     ],[
2681       AC_MSG_RESULT([no])
2682       tst_links_libidn="no"
2683     ])
2684   fi
2685   #
2686   if test "$tst_links_libidn" = "yes"; then
2687     AC_DEFINE(HAVE_LIBIDN, 1, [Define to 1 if you have the `idn' library (-lidn).])
2688     dnl different versions of libidn have different setups of these:
2689     AC_CHECK_FUNCS( idn_free idna_strerror tld_strerror )
2690     AC_CHECK_HEADERS( idn-free.h tld.h )
2691     if test "x$ac_cv_header_tld_h" = "xyes"; then
2692       AC_SUBST([IDN_ENABLED], [1])
2693       curl_idn_msg="enabled"
2694       if test -n "$IDN_DIR" -a "x$cross_compiling" != "xyes"; then
2695         LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
2696         export LD_LIBRARY_PATH
2697         AC_MSG_NOTICE([Added $IDN_DIR to LD_LIBRARY_PATH])
2698       fi
2699     else
2700       AC_MSG_WARN([Libraries for IDN support too old: IDN disabled])
2701       CPPFLAGS="$clean_CPPFLAGS"
2702       LDFLAGS="$clean_LDFLAGS"
2703       LIBS="$clean_LIBS"
2704     fi
2705   else
2706     AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2707     CPPFLAGS="$clean_CPPFLAGS"
2708     LDFLAGS="$clean_LDFLAGS"
2709     LIBS="$clean_LIBS"
2710   fi
2711 fi
2712
2713
2714 dnl Let's hope this split URL remains working:
2715 dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
2716 dnl genprogc/thread_quick_ref.htm
2717
2718
2719 dnl **********************************************************************
2720 dnl Check for nghttp2
2721 dnl **********************************************************************
2722
2723 OPT_H2="yes"
2724 AC_ARG_WITH(nghttp2,
2725 AC_HELP_STRING([--with-nghttp2=PATH],[Enable nghttp2 usage])
2726 AC_HELP_STRING([--without-nghttp2],[Disable nghttp2 usage]),
2727   [OPT_H2=$withval])
2728 case "$OPT_H2" in
2729   no)
2730     dnl --without-nghttp2 option used
2731     want_h2="no"
2732     ;;
2733   yes)
2734     dnl --with-nghttp2 option used without path
2735     want_h2="default"
2736     want_h2_path=""
2737     ;;
2738   *)
2739     dnl --with-nghttp2 option used with path
2740     want_h2="yes"
2741     want_h2_path="$withval/lib/pkgconfig"
2742     ;;
2743 esac
2744
2745 curl_h2_msg="disabled (--with-nghttp2)"
2746 if test X"$want_h2" != Xno; then
2747   dnl backup the pre-nghttp2 variables
2748   CLEANLDFLAGS="$LDFLAGS"
2749   CLEANCPPFLAGS="$CPPFLAGS"
2750   CLEANLIBS="$LIBS"
2751
2752   CURL_CHECK_PKGCONFIG(libnghttp2, $want_h2_path)
2753
2754   if test "$PKGCONFIG" != "no" ; then
2755     LIB_H2=`CURL_EXPORT_PCDIR([$want_h2_path])
2756       $PKGCONFIG --libs-only-l libnghttp2`
2757     AC_MSG_NOTICE([-l is $LIB_H2])
2758
2759     CPP_H2=`CURL_EXPORT_PCDIR([$want_h2_path]) dnl
2760       $PKGCONFIG --cflags-only-I libnghttp2`
2761     AC_MSG_NOTICE([-I is $CPP_H2])
2762
2763     LD_H2=`CURL_EXPORT_PCDIR([$want_h2_path])
2764       $PKGCONFIG --libs-only-L libnghttp2`
2765     AC_MSG_NOTICE([-L is $LD_H2])
2766
2767     LDFLAGS="$LDFLAGS $LD_H2"
2768     CPPFLAGS="$CPPFLAGS $CPP_H2"
2769     LIBS="$LIB_H2 $LIBS"
2770
2771     AC_CHECK_LIB(nghttp2, nghttp2_session_callbacks_set_send_callback,
2772       [
2773        AC_CHECK_HEADERS(nghttp2/nghttp2.h,
2774           curl_h2_msg="enabled (nghttp2)"
2775           NGHTTP2_ENABLED=1
2776           AC_DEFINE(USE_NGHTTP2, 1, [if nghttp2 is in use])
2777           AC_SUBST(USE_NGHTTP2, [1])
2778        )
2779       ],
2780         dnl not found, revert back to clean variables
2781         LDFLAGS=$CLEANLDFLAGS
2782         CPPFLAGS=$CLEANCPPFLAGS
2783         LIBS=$CLEANLIBS
2784     )
2785
2786   else
2787     dnl no nghttp2 pkg-config found, deal with it
2788     if test X"$want_h2" != Xdefault; then
2789       dnl To avoid link errors, we do not allow --with-nghttp2 without
2790       dnl a pkgconfig file
2791       AC_MSG_ERROR([--with-nghttp2 was specified but could not find libnghttp2 pkg-config file.])
2792     fi
2793   fi
2794
2795 fi
2796
2797 dnl **********************************************************************
2798 dnl Back to "normal" configuring
2799 dnl **********************************************************************
2800
2801 dnl Checks for header files.
2802 AC_HEADER_STDC
2803
2804 CURL_CHECK_HEADER_MALLOC
2805 CURL_CHECK_HEADER_MEMORY
2806
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!
2809 AC_CHECK_HEADERS(
2810         sys/types.h \
2811         sys/time.h \
2812         sys/select.h \
2813         sys/socket.h \
2814         sys/ioctl.h \
2815         sys/uio.h \
2816         assert.h \
2817         unistd.h \
2818         stdlib.h \
2819         limits.h \
2820         arpa/inet.h \
2821         net/if.h \
2822         netinet/in.h \
2823         sys/un.h \
2824         netinet/tcp.h \
2825         netdb.h \
2826         sys/sockio.h \
2827         sys/stat.h \
2828         sys/param.h \
2829         termios.h \
2830         termio.h \
2831         sgtty.h \
2832         fcntl.h \
2833         alloca.h \
2834         time.h \
2835         io.h \
2836         pwd.h \
2837         utime.h \
2838         sys/utime.h \
2839         sys/poll.h \
2840         poll.h \
2841         socket.h \
2842         sys/resource.h \
2843         libgen.h \
2844         locale.h \
2845         errno.h \
2846         stdbool.h \
2847         arpa/tftp.h \
2848         sys/filio.h \
2849         sys/wait.h \
2850         setjmp.h,
2851 dnl to do if not found
2852 [],
2853 dnl to do if found
2854 [],
2855 dnl default includes
2856 [
2857 #ifdef HAVE_SYS_TYPES_H
2858 #include <sys/types.h>
2859 #endif
2860 #ifdef HAVE_SYS_TIME_H
2861 #include <sys/time.h>
2862 #endif
2863 #ifdef HAVE_SYS_SELECT_H
2864 #include <sys/select.h>
2865 #endif
2866 #ifdef HAVE_SYS_SOCKET_H
2867 #include <sys/socket.h>
2868 #endif
2869 #ifdef HAVE_NETINET_IN_H
2870 #include <netinet/in.h>
2871 #endif
2872 #ifdef HAVE_SYS_UN_H
2873 #include <sys/un.h>
2874 #endif
2875 ]
2876 )
2877
2878 dnl Checks for typedefs, structures, and compiler characteristics.
2879 AC_C_CONST
2880 CURL_CHECK_VARIADIC_MACROS
2881 AC_TYPE_SIZE_T
2882 AC_HEADER_TIME
2883 CURL_CHECK_STRUCT_TIMEVAL
2884 CURL_VERIFY_RUNTIMELIBS
2885
2886 AC_CHECK_SIZEOF(size_t)
2887 AC_CHECK_SIZEOF(long)
2888 AC_CHECK_SIZEOF(int)
2889 AC_CHECK_SIZEOF(short)
2890 CURL_CONFIGURE_LONG
2891 AC_CHECK_SIZEOF(time_t)
2892 AC_CHECK_SIZEOF(off_t)
2893
2894 soname_bump=no
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.])
2899   soname_bump=yes
2900 fi
2901
2902
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.])]
2906    longlong="yes"
2907 )
2908
2909 if test "xyes" = "x$longlong"; then
2910   AC_MSG_CHECKING([if numberLL works])
2911   AC_COMPILE_IFELSE([
2912     AC_LANG_PROGRAM([[
2913     ]],[[
2914       long long val = 1000LL;
2915     ]])
2916   ],[
2917     AC_MSG_RESULT([yes])
2918     AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
2919   ],[
2920     AC_MSG_RESULT([no])
2921   ])
2922 fi
2923
2924
2925 # check for ssize_t
2926 AC_CHECK_TYPE(ssize_t, ,
2927    AC_DEFINE(ssize_t, int, [the signed version of size_t]))
2928
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.])
2933 ], ,[
2934 #ifdef HAVE_SYS_TYPES_H
2935 #include <sys/types.h>
2936 #endif
2937 #ifdef HAVE_STDBOOL_H
2938 #include <stdbool.h>
2939 #endif
2940 ])
2941
2942 CURL_CONFIGURE_CURL_SOCKLEN_T
2943
2944 CURL_CONFIGURE_PULL_SYS_POLL
2945
2946 TYPE_IN_ADDR_T
2947
2948 TYPE_SOCKADDR_STORAGE
2949
2950 TYPE_SIG_ATOMIC_T
2951
2952 AC_TYPE_SIGNAL
2953
2954 CURL_CHECK_FUNC_SELECT
2955
2956 CURL_CHECK_FUNC_RECV
2957 CURL_CHECK_FUNC_SEND
2958 CURL_CHECK_MSG_NOSIGNAL
2959
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
3009
3010 case $host in
3011   *msdosdjgpp)
3012      ac_cv_func_pipe=no
3013      skipcheck_pipe=yes
3014      AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
3015     ;;
3016 esac
3017
3018 AC_CHECK_FUNCS([fork \
3019   geteuid \
3020   getpass_r \
3021   getppid \
3022   getprotobyname \
3023   getpwuid \
3024   getpwuid_r \
3025   getrlimit \
3026   gettimeofday \
3027   if_nametoindex \
3028   inet_addr \
3029   perror \
3030   pipe \
3031   setlocale \
3032   setmode \
3033   setrlimit \
3034   uname \
3035   utime
3036 ],[
3037 ],[
3038   func="$ac_func"
3039   eval skipcheck=\$skipcheck_$func
3040   if test "x$skipcheck" != "xyes"; then
3041     AC_MSG_CHECKING([deeper for $func])
3042     AC_LINK_IFELSE([
3043       AC_LANG_PROGRAM([[
3044       ]],[[
3045         $func ();
3046       ]])
3047     ],[
3048       AC_MSG_RESULT([yes])
3049       eval "ac_cv_func_$func=yes"
3050       AC_DEFINE_UNQUOTED(XC_SH_TR_CPP([HAVE_$func]), [1],
3051         [Define to 1 if you have the $func function.])
3052     ],[
3053       AC_MSG_RESULT([but still no])
3054     ])
3055   fi
3056 ])
3057
3058 dnl Check if the getnameinfo function is available
3059 dnl and get the types of five of its arguments.
3060 CURL_CHECK_FUNC_GETNAMEINFO
3061
3062 if test "$ipv6" = "yes"; then
3063   if test "$ac_cv_func_getaddrinfo" = "yes"; then
3064     AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
3065     IPV6_ENABLED=1
3066     AC_SUBST(IPV6_ENABLED)
3067   fi
3068   CURL_CHECK_NI_WITHSCOPEID
3069 fi
3070
3071 CURL_CHECK_NONBLOCKING_SOCKET
3072
3073 dnl ************************************************************
3074 dnl nroff tool stuff
3075 dnl
3076
3077 AC_PATH_PROG( PERL, perl, ,
3078   $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
3079 AC_SUBST(PERL)
3080
3081 AC_PATH_PROGS( NROFF, gnroff nroff, ,
3082   $PATH:/usr/bin/:/usr/local/bin )
3083 AC_SUBST(NROFF)
3084
3085 if test -n "$NROFF"; then
3086   dnl only check for nroff options if an nroff command was found
3087
3088   AC_MSG_CHECKING([how to use *nroff to get plain text from man pages])
3089   MANOPT="-man"
3090   mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3091   if test -z "$mancheck"; then
3092     MANOPT="-mandoc"
3093    mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3094     if test -z "$mancheck"; then
3095       MANOPT=""
3096       AC_MSG_RESULT([failed])
3097       AC_MSG_WARN([found no *nroff option to get plaintext from man pages])
3098     else
3099       AC_MSG_RESULT([$MANOPT])
3100     fi
3101   else
3102     AC_MSG_RESULT([$MANOPT])
3103   fi
3104   AC_SUBST(MANOPT)
3105 fi
3106
3107 if test -z "$MANOPT"
3108 then
3109   dnl if no nroff tool was found, or no option that could convert man pages
3110   dnl was found, then disable the built-in manual stuff
3111   AC_MSG_WARN([disabling built-in manual])
3112   USE_MANUAL="no";
3113 fi
3114
3115 dnl *************************************************************************
3116 dnl If the manual variable still is set, then we go with providing a built-in
3117 dnl manual
3118
3119 if test "$USE_MANUAL" = "1"; then
3120   AC_DEFINE(USE_MANUAL, 1, [If you want to build curl with the built-in manual])
3121   curl_manual_msg="enabled"
3122 fi
3123
3124 dnl set variable for use in automakefile(s)
3125 AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
3126
3127 CURL_CHECK_LIB_ARES
3128 AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
3129
3130 if test "x$ac_cv_native_windows" != "xyes" &&
3131    test "x$enable_shared" = "xyes"; then
3132   build_libhostname=yes
3133 else
3134   build_libhostname=no
3135 fi
3136 AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes)
3137
3138 CURL_CHECK_OPTION_THREADED_RESOLVER
3139
3140 if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
3141   AC_MSG_ERROR(
3142 [Options --enable-threaded-resolver and --enable-ares are mutually exclusive])
3143 fi
3144
3145 if test "$want_thres" = "yes"; then
3146   AC_CHECK_HEADER(pthread.h,
3147     [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>])
3148       save_CFLAGS="$CFLAGS"
3149
3150       dnl first check for function without lib
3151       AC_CHECK_FUNC(pthread_create, [USE_THREADS_POSIX=1] )
3152
3153       dnl if it wasn't found without lib, search for it in pthread lib
3154       if test "$USE_THREADS_POSIX" != "1"
3155       then
3156         CFLAGS="$CFLAGS -pthread"
3157         AC_CHECK_LIB(pthread, pthread_create,
3158                      [USE_THREADS_POSIX=1],
3159                      [ CFLAGS="$save_CFLAGS"])
3160       fi
3161
3162       if test "x$USE_THREADS_POSIX" = "x1"
3163       then
3164         AC_DEFINE(USE_THREADS_POSIX, 1, [if you want POSIX threaded DNS lookup])
3165         curl_res_msg="POSIX threaded"
3166       fi
3167
3168
3169   ])
3170 fi
3171
3172 dnl ************************************************************
3173 dnl disable verbose text strings
3174 dnl
3175 AC_MSG_CHECKING([whether to enable verbose strings])
3176 AC_ARG_ENABLE(verbose,
3177 AC_HELP_STRING([--enable-verbose],[Enable verbose strings])
3178 AC_HELP_STRING([--disable-verbose],[Disable verbose strings]),
3179 [ case "$enableval" in
3180   no)
3181        AC_MSG_RESULT(no)
3182        AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings])
3183        curl_verbose_msg="no"
3184        ;;
3185   *)   AC_MSG_RESULT(yes)
3186        ;;
3187   esac ],
3188        AC_MSG_RESULT(yes)
3189 )
3190
3191 dnl ************************************************************
3192 dnl enable SSPI support
3193 dnl
3194 AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)])
3195 AC_ARG_ENABLE(sspi,
3196 AC_HELP_STRING([--enable-sspi],[Enable SSPI])
3197 AC_HELP_STRING([--disable-sspi],[Disable SSPI]),
3198 [ case "$enableval" in
3199   yes)
3200        if test "$ac_cv_native_windows" = "yes"; then
3201          AC_MSG_RESULT(yes)
3202          AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
3203          AC_SUBST(USE_WINDOWS_SSPI, [1])
3204          curl_sspi_msg="enabled"
3205        else
3206          AC_MSG_RESULT(no)
3207          AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.])
3208        fi
3209        ;;
3210   *)
3211        if test "x$WINSSL_ENABLED" = "x1"; then
3212          # --with-winssl implies --enable-sspi
3213          AC_MSG_RESULT(yes)
3214        else
3215          AC_MSG_RESULT(no)
3216        fi
3217        ;;
3218   esac ],
3219        if test "x$WINSSL_ENABLED" = "x1"; then
3220          # --with-winssl implies --enable-sspi
3221          AC_MSG_RESULT(yes)
3222        else
3223          AC_MSG_RESULT(no)
3224        fi
3225 )
3226
3227 dnl ************************************************************
3228 dnl disable cryptographic authentication
3229 dnl
3230 AC_MSG_CHECKING([whether to enable cryptographic authentication methods])
3231 AC_ARG_ENABLE(crypto-auth,
3232 AC_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication])
3233 AC_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]),
3234 [ case "$enableval" in
3235   no)
3236        AC_MSG_RESULT(no)
3237        AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication])
3238        CURL_DISABLE_CRYPTO_AUTH=1
3239        ;;
3240   *)   AC_MSG_RESULT(yes)
3241        ;;
3242   esac ],
3243        AC_MSG_RESULT(yes)
3244 )
3245
3246 CURL_CHECK_OPTION_NTLM_WB
3247
3248 CURL_CHECK_NTLM_WB
3249
3250 dnl ************************************************************
3251 dnl disable TLS-SRP authentication
3252 dnl
3253 AC_MSG_CHECKING([whether to enable TLS-SRP authentication])
3254 AC_ARG_ENABLE(tls-srp,
3255 AC_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication])
3256 AC_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]),
3257 [ case "$enableval" in
3258   no)
3259        AC_MSG_RESULT(no)
3260        AC_DEFINE(CURL_DISABLE_TLS_SRP, 1, [to disable TLS-SRP authentication])
3261        want_tls_srp=no
3262        ;;
3263   *)   AC_MSG_RESULT(yes)
3264        want_tls_srp=yes
3265        ;;
3266   esac ],
3267        AC_MSG_RESULT(yes)
3268        want_tls_srp=yes
3269 )
3270
3271 if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_SSLEAY_SRP" = "x1") ; then
3272    AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication])
3273    USE_TLS_SRP=1
3274    curl_tls_srp_msg="enabled"
3275 fi
3276
3277 dnl ************************************************************
3278 dnl disable Unix domain sockets support
3279 dnl
3280 AC_MSG_CHECKING([whether to enable Unix domain sockets])
3281 AC_ARG_ENABLE(unix-sockets,
3282 AC_HELP_STRING([--enable-unix-sockets],[Enable Unix domain sockets])
3283 AC_HELP_STRING([--disable-unix-sockets],[Disable Unix domain sockets]),
3284 [ case "$enableval" in
3285   no)  AC_MSG_RESULT(no)
3286        want_unix_sockets=no
3287        ;;
3288   *)   AC_MSG_RESULT(yes)
3289        want_unix_sockets=yes
3290        ;;
3291   esac ], [
3292        AC_MSG_RESULT(auto)
3293        want_unix_sockets=auto
3294        ]
3295 )
3296 if test "x$want_unix_sockets" != "xno"; then
3297   AC_CHECK_MEMBER([struct sockaddr_un.sun_path], [
3298     AC_DEFINE(USE_UNIX_SOCKETS, 1, [Use Unix domain sockets])
3299     AC_SUBST(USE_UNIX_SOCKETS, [1])
3300     curl_unix_sockets_msg="enabled"
3301   ], [
3302     if test "x$want_unix_sockets" = "xyes"; then
3303       AC_MSG_ERROR([--enable-unix-sockets is not available on this platform!])
3304     fi
3305   ], [
3306     #include <sys/un.h>
3307   ])
3308 fi
3309
3310 dnl ************************************************************
3311 dnl disable cookies support
3312 dnl
3313 AC_MSG_CHECKING([whether to enable support for cookies])
3314 AC_ARG_ENABLE(cookies,
3315 AC_HELP_STRING([--enable-cookies],[Enable cookies support])
3316 AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
3317 [ case "$enableval" in
3318   no)
3319        AC_MSG_RESULT(no)
3320        AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support])
3321        ;;
3322   *)   AC_MSG_RESULT(yes)
3323        ;;
3324   esac ],
3325        AC_MSG_RESULT(yes)
3326 )
3327
3328 dnl ************************************************************
3329 dnl hiding of library internal symbols
3330 dnl
3331 CURL_CONFIGURE_SYMBOL_HIDING
3332
3333 dnl ************************************************************
3334 dnl enforce SONAME bump
3335 dnl
3336
3337 AC_MSG_CHECKING([whether to enforce SONAME bump])
3338 AC_ARG_ENABLE(soname-bump,
3339 AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump])
3340 AC_HELP_STRING([--disable-soname-bump],[Disable enforced SONAME bump]),
3341 [ case "$enableval" in
3342   yes)   AC_MSG_RESULT(yes)
3343          soname_bump=yes
3344          ;;
3345   *)
3346          AC_MSG_RESULT(no)
3347          ;;
3348   esac ],
3349         AC_MSG_RESULT($soname_bump)
3350 )
3351 AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes)
3352
3353 dnl
3354 dnl All the library dependencies put into $LIB apply to libcurl only.
3355 dnl
3356 LIBCURL_LIBS=$LIBS
3357
3358 AC_SUBST(LIBCURL_LIBS)
3359 AC_SUBST(CURL_NETWORK_LIBS)
3360 AC_SUBST(CURL_NETWORK_AND_TIME_LIBS)
3361
3362 dnl BLANK_AT_MAKETIME may be used in our Makefile.am files to blank
3363 dnl LIBS variable used in generated makefile at makefile processing
3364 dnl time. Doing this functionally prevents LIBS from being used for
3365 dnl all link targets in given makefile.
3366 BLANK_AT_MAKETIME=
3367 AC_SUBST(BLANK_AT_MAKETIME)
3368
3369 AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes)
3370
3371 dnl yes or no
3372 ENABLE_SHARED="$enable_shared"
3373 AC_SUBST(ENABLE_SHARED)
3374
3375 dnl to let curl-config output the static libraries correctly
3376 ENABLE_STATIC="$enable_static"
3377 AC_SUBST(ENABLE_STATIC)
3378
3379
3380 dnl
3381 dnl For keeping supported features and protocols also in pkg-config file
3382 dnl since it is more cross-compile friendly than curl-config
3383 dnl
3384
3385 if test "x$USE_SSLEAY" = "x1"; then
3386   SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3387 elif test -n "$SSL_ENABLED"; then
3388   SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3389 fi
3390 if test "x$IPV6_ENABLED" = "x1"; then
3391   SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
3392 fi
3393 if test "x$USE_UNIX_SOCKETS" = "x1"; then
3394   SUPPORT_FEATURES="$SUPPORT_FEATURES UnixSockets"
3395 fi
3396 if test "x$HAVE_LIBZ" = "x1"; then
3397   SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
3398 fi
3399 if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1"; then
3400   SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
3401 fi
3402 if test "x$IDN_ENABLED" = "x1"; then
3403   SUPPORT_FEATURES="$SUPPORT_FEATURES IDN"
3404 fi
3405 if test "x$USE_WINDOWS_SSPI" = "x1"; then
3406   SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
3407 fi
3408
3409 if test "x$HAVE_GSSAPI" = "x1"; then
3410   SUPPORT_FEATURES="$SUPPORT_FEATURES GSS-API"
3411 fi
3412
3413 if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
3414     \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then
3415   SUPPORT_FEATURES="$SUPPORT_FEATURES SPNEGO"
3416 fi
3417
3418 if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" -a \
3419     \( "x$HAVE_GSSAPI" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \); then
3420   SUPPORT_FEATURES="$SUPPORT_FEATURES Kerberos"
3421 fi
3422
3423 if test "x$CURL_DISABLE_CRYPTO_AUTH" != "x1"; then
3424   if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
3425       -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
3426       -o "x$DARWINSSL_ENABLED" = "x1"; then
3427     SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
3428
3429     if test "x$CURL_DISABLE_HTTP" != "x1" -a \
3430         "x$NTLM_WB_ENABLED" = "x1"; then
3431       SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
3432     fi
3433   fi
3434 fi
3435
3436 if test "x$USE_TLS_SRP" = "x1"; then
3437   SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
3438 fi
3439
3440 if test "x$USE_NGHTTP2" = "x1"; then
3441   SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2"
3442 fi
3443
3444 AC_SUBST(SUPPORT_FEATURES)
3445
3446 dnl For supported protocols in pkg-config file
3447 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3448   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
3449   if test "x$SSL_ENABLED" = "x1"; then
3450     SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS"
3451   fi
3452 fi
3453 if test "x$CURL_DISABLE_FTP" != "x1"; then
3454   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP"
3455   if test "x$SSL_ENABLED" = "x1"; then
3456     SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS"
3457   fi
3458 fi
3459 if test "x$CURL_DISABLE_FILE" != "x1"; then
3460   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE"
3461 fi
3462 if test "x$CURL_DISABLE_TELNET" != "x1"; then
3463   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET"
3464 fi
3465 if test "x$CURL_DISABLE_LDAP" != "x1"; then
3466   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP"
3467   if test "x$CURL_DISABLE_LDAPS" != "x1"; then
3468     if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") ||
3469       (test "x$USE_OPENLDAP" != "x1"  && test "x$HAVE_LDAP_SSL" = "x1"); then
3470       SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS"
3471     fi
3472   fi
3473 fi
3474 if test "x$CURL_DISABLE_DICT" != "x1"; then
3475   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT"
3476 fi
3477 if test "x$CURL_DISABLE_TFTP" != "x1"; then
3478   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP"
3479 fi
3480 if test "x$CURL_DISABLE_GOPHER" != "x1"; then
3481   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER"
3482 fi
3483 if test "x$CURL_DISABLE_POP3" != "x1"; then
3484   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3"
3485   if test "x$SSL_ENABLED" = "x1"; then
3486     SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S"
3487   fi
3488 fi
3489 if test "x$CURL_DISABLE_IMAP" != "x1"; then
3490   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
3491   if test "x$SSL_ENABLED" = "x1"; then
3492     SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
3493   fi
3494 fi
3495 if test "x$CURL_DISABLE_SMB" != "x1" \
3496     -a "x$CURL_DISABLE_CRYPTO_AUTH" != "x1" \
3497     -a \( "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
3498       -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
3499       -o "x$DARWINSSL_ENABLED" = "x1" \); then
3500   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMB"
3501   if test "x$SSL_ENABLED" = "x1"; then
3502     SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMBS"
3503   fi
3504 fi
3505 if test "x$CURL_DISABLE_SMTP" != "x1"; then
3506   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
3507   if test "x$SSL_ENABLED" = "x1"; then
3508     SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS"
3509   fi
3510 fi
3511 if test "x$USE_LIBSSH2" = "x1"; then
3512   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
3513   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
3514 fi
3515 if test "x$CURL_DISABLE_RTSP" != "x1"; then
3516   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
3517 fi
3518 if test "x$USE_LIBRTMP" = "x1"; then
3519   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP"
3520 fi
3521
3522 dnl replace spaces with newlines
3523 dnl sort the lines
3524 dnl replace the newlines back to spaces
3525 SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '`
3526
3527 AC_SUBST(SUPPORT_PROTOCOLS)
3528
3529 dnl squeeze whitespace out of some variables
3530
3531 squeeze CFLAGS
3532 squeeze CPPFLAGS
3533 squeeze DEFS
3534 squeeze LDFLAGS
3535 squeeze LIBS
3536
3537 squeeze LIBCURL_LIBS
3538 squeeze CURL_NETWORK_LIBS
3539 squeeze CURL_NETWORK_AND_TIME_LIBS
3540
3541 squeeze SUPPORT_FEATURES
3542 squeeze SUPPORT_PROTOCOLS
3543
3544 XC_CHECK_BUILD_FLAGS
3545
3546 if test "x$want_curldebug_assumed" = "xyes" &&
3547   test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
3548   ac_configure_args="$ac_configure_args --enable-curldebug"
3549 fi
3550
3551 AC_CONFIG_FILES([Makefile \
3552            docs/Makefile \
3553            docs/examples/Makefile \
3554            docs/libcurl/Makefile \
3555            docs/libcurl/opts/Makefile \
3556            include/Makefile \
3557            include/curl/Makefile \
3558            src/Makefile \
3559            lib/Makefile \
3560            lib/libcurl.vers \
3561            tests/Makefile \
3562            tests/certs/Makefile \
3563            tests/certs/scripts/Makefile \
3564            tests/data/Makefile \
3565            tests/server/Makefile \
3566            tests/libtest/Makefile \
3567            tests/unit/Makefile \
3568            packages/Makefile \
3569            packages/Win32/Makefile \
3570            packages/Win32/cygwin/Makefile \
3571            packages/Linux/Makefile \
3572            packages/Linux/RPM/Makefile \
3573            packages/Linux/RPM/curl.spec \
3574            packages/Linux/RPM/curl-ssl.spec \
3575            packages/Solaris/Makefile \
3576            packages/EPM/curl.list \
3577            packages/EPM/Makefile \
3578            packages/vms/Makefile \
3579            packages/AIX/Makefile \
3580            packages/AIX/RPM/Makefile \
3581            packages/AIX/RPM/curl.spec \
3582            curl-config \
3583            libcurl.pc
3584 ])
3585 AC_OUTPUT
3586
3587 CURL_GENERATE_CONFIGUREHELP_PM
3588
3589 XC_AMEND_DISTCLEAN([lib src tests/unit tests/server tests/libtest docs/examples])
3590
3591 AC_MSG_NOTICE([Configured to build curl/libcurl:
3592
3593   curl version:     ${CURLVERSION}
3594   Host setup:       ${host}
3595   Install prefix:   ${prefix}
3596   Compiler:         ${CC}
3597   SSL support:      ${curl_ssl_msg}
3598   SSH support:      ${curl_ssh_msg}
3599   zlib support:     ${curl_zlib_msg}
3600   GSS-API support:  ${curl_gss_msg}
3601   TLS-SRP support:  ${curl_tls_srp_msg}
3602   resolver:         ${curl_res_msg}
3603   IPv6 support:     ${curl_ipv6_msg}
3604   Unix sockets support: ${curl_unix_sockets_msg}
3605   IDN support:      ${curl_idn_msg}
3606   Build libcurl:    Shared=${enable_shared}, Static=${enable_static}
3607   Built-in manual:  ${curl_manual_msg}
3608   --libcurl option: ${curl_libcurl_msg}
3609   Verbose errors:   ${curl_verbose_msg}
3610   SSPI support:     ${curl_sspi_msg}
3611   ca cert bundle:   ${ca}
3612   ca cert path:     ${capath}
3613   LDAP support:     ${curl_ldap_msg}
3614   LDAPS support:    ${curl_ldaps_msg}
3615   RTSP support:     ${curl_rtsp_msg}
3616   RTMP support:     ${curl_rtmp_msg}
3617   metalink support: ${curl_mtlnk_msg}
3618   HTTP2 support:    ${curl_h2_msg}
3619   Protocols:        ${SUPPORT_PROTOCOLS}
3620 ])
3621
3622 if test "x$soname_bump" = "xyes"; then
3623
3624 cat <<EOM
3625   SONAME bump:     yes - WARNING: this library will be built with the SONAME
3626                    number bumped due to (a detected) ABI breakage.
3627                    See lib/README.curl_off_t for details on this.
3628 EOM
3629
3630 fi
3631