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