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