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