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