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