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