configure.ac: clear local test intended variables before use
[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     addlib=""
1850     gtlslib=""
1851     version=""
1852     addcflags=""
1853
1854     if test "x$OPT_GNUTLS" = "xyes"; then
1855       dnl this is with no partiular path given
1856       CURL_CHECK_PKGCONFIG(gnutls)
1857
1858       if test "$PKGCONFIG" != "no" ; then
1859         addlib=`$PKGCONFIG --libs-only-l gnutls`
1860         addld=`$PKGCONFIG --libs-only-L gnutls`
1861         addcflags=`$PKGCONFIG --cflags-only-I gnutls`
1862         version=`$PKGCONFIG --modversion gnutls`
1863         gtlslib=`echo $addld | $SED -e 's/-L//'`
1864       else
1865         dnl without pkg-config, we try libgnutls-config as that was how it
1866         dnl used to be done
1867         check=`libgnutls-config --version 2>/dev/null`
1868         if test -n "$check"; then
1869           addlib=`libgnutls-config --libs`
1870           addcflags=`libgnutls-config --cflags`
1871           version=`libgnutls-config --version`
1872           gtlslib=`libgnutls-config --prefix`/lib$libsuff
1873         fi
1874       fi
1875     else
1876       dnl this is with a given path, first check if there's a libgnutls-config
1877       dnl there and if not, make an educated guess
1878       cfg=$OPT_GNUTLS/bin/libgnutls-config
1879       check=`$cfg --version 2>/dev/null`
1880       if test -n "$check"; then
1881         addlib=`$cfg --libs`
1882         addcflags=`$cfg --cflags`
1883         version=`$cfg --version`
1884         gtlslib=`$cfg --prefix`/lib$libsuff
1885       else
1886         dnl without pkg-config and libgnutls-config, we guess a lot!
1887         addlib=-lgnutls
1888         addld=-L$OPT_GNUTLS/lib$libsuff
1889         addcflags=-I$OPT_GNUTLS/include
1890         version="" # we just don't know
1891         gtlslib=$OPT_GNUTLS/lib$libsuff
1892       fi
1893     fi
1894
1895     if test -z "$version"; then
1896       dnl lots of efforts, still no go
1897       version="unknown"
1898     fi
1899
1900     if test -n "$addlib"; then
1901
1902       CLEANLIBS="$LIBS"
1903       CLEANCPPFLAGS="$CPPFLAGS"
1904       CLEADLDFLAGS="$LDFLAGS"
1905
1906       LIBS="$addlib $LIBS"
1907       LDFLAGS="$LDFLAGS $addld"
1908       if test "$addcflags" != "-I/usr/include"; then
1909          CPPFLAGS="$CPPFLAGS $addcflags"
1910       fi
1911
1912       AC_CHECK_LIB(gnutls, gnutls_check_version,
1913        [
1914        AC_DEFINE(USE_GNUTLS, 1, [if GnuTLS is enabled])
1915        AC_SUBST(USE_GNUTLS, [1])
1916        GNUTLS_ENABLED=1
1917        USE_GNUTLS="yes"
1918        curl_ssl_msg="enabled (GnuTLS)"
1919        ],
1920        [
1921          LIBS="$CLEANLIBS"
1922          CPPFLAGS="$CLEANCPPFLAGS"
1923        ])
1924
1925       if test "x$USE_GNUTLS" = "xyes"; then
1926         AC_MSG_NOTICE([detected GnuTLS version $version])
1927
1928         if test -n "$gtlslib"; then
1929           dnl when shared libs were found in a path that the run-time
1930           dnl linker doesn't search through, we need to add it to
1931           dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1932           dnl due to this
1933           if test "x$cross_compiling" != "xyes"; then 
1934             LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlslib"
1935             export LD_LIBRARY_PATH
1936             AC_MSG_NOTICE([Added $gtlslib to LD_LIBRARY_PATH])
1937           fi
1938         fi
1939       fi
1940
1941     fi
1942
1943   fi dnl GNUTLS not disabled
1944
1945 fi
1946
1947 dnl ---
1948 dnl Check which crypto backend GnuTLS uses
1949 dnl ---
1950
1951 if test "$GNUTLS_ENABLED" = "1"; then
1952   USE_GNUTLS_NETTLE=
1953   # First check if we can detect either crypto library via transitive linking
1954   AC_CHECK_LIB(gnutls, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1955   if test "$USE_GNUTLS_NETTLE" = ""; then
1956     AC_CHECK_LIB(gnutls, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1957   fi
1958   # If not, try linking directly to both of them to see if they are available
1959   if test "$USE_GNUTLS_NETTLE" = ""; then
1960     AC_CHECK_LIB(nettle, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1961   fi
1962   if test "$USE_GNUTLS_NETTLE" = ""; then
1963     AC_CHECK_LIB(gcrypt, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1964   fi
1965   if test "$USE_GNUTLS_NETTLE" = ""; then
1966     AC_MSG_ERROR([GnuTLS found, but neither gcrypt nor nettle found])
1967   fi
1968   if test "$USE_GNUTLS_NETTLE" = "1"; then
1969     AC_DEFINE(USE_GNUTLS_NETTLE, 1, [if GnuTLS uses nettle as crypto backend])
1970     AC_SUBST(USE_GNUTLS_NETTLE, [1])
1971     LIBS="-lnettle $LIBS"
1972   else
1973     LIBS="-lgcrypt $LIBS"
1974   fi
1975 fi
1976
1977 dnl ---
1978 dnl We require GnuTLS with SRP support.
1979 dnl ---
1980 if test "$GNUTLS_ENABLED" = "1"; then
1981   AC_CHECK_LIB(gnutls, gnutls_srp_verifier,
1982    [
1983      AC_DEFINE(HAVE_GNUTLS_SRP, 1, [if you have the function gnutls_srp_verifier])
1984      AC_SUBST(HAVE_GNUTLS_SRP, [1])
1985    ])
1986 fi
1987
1988 dnl ----------------------------------------------------
1989 dnl check for PolarSSL
1990 dnl ----------------------------------------------------
1991
1992 dnl Default to compiler & linker defaults for PolarSSL files & libraries.
1993 OPT_POLARSSL=no
1994
1995 _cppflags=$CPPFLAGS
1996 _ldflags=$LDFLAGS
1997 AC_ARG_WITH(polarssl,dnl
1998 AC_HELP_STRING([--with-polarssl=PATH],[where to look for PolarSSL, PATH points to the installation root])
1999 AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]),
2000   OPT_POLARSSL=$withval)
2001
2002 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2003
2004   if test X"$OPT_POLARSSL" != Xno; then
2005
2006     if test "$OPT_POLARSSL" = "yes"; then
2007       OPT_POLARSSL=""
2008     fi
2009
2010     if test -z "$OPT_POLARSSL" ; then
2011       dnl check for lib first without setting any new path
2012
2013       AC_CHECK_LIB(polarssl, havege_init,
2014       dnl libpolarssl found, set the variable
2015        [
2016          AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
2017          AC_SUBST(USE_POLARSSL, [1])
2018          POLARSSL_ENABLED=1
2019          USE_POLARSSL="yes"
2020          curl_ssl_msg="enabled (PolarSSL)"
2021         ])
2022     fi
2023
2024     addld=""
2025     addlib=""
2026     addcflags=""
2027     polarssllib=""
2028
2029     if test "x$USE_POLARSSL" != "xyes"; then
2030       dnl add the path and test again
2031       addld=-L$OPT_POLARSSL/lib$libsuff
2032       addcflags=-I$OPT_POLARSSL/include
2033       polarssllib=$OPT_POLARSSL/lib$libsuff
2034
2035       LDFLAGS="$LDFLAGS $addld"
2036       if test "$addcflags" != "-I/usr/include"; then
2037          CPPFLAGS="$CPPFLAGS $addcflags"
2038       fi
2039
2040       AC_CHECK_LIB(polarssl, ssl_init,
2041        [
2042        AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
2043        AC_SUBST(USE_POLARSSL, [1])
2044        POLARSSL_ENABLED=1
2045        USE_POLARSSL="yes"
2046        curl_ssl_msg="enabled (PolarSSL)"
2047        ],
2048        [
2049          CPPFLAGS=$_cppflags
2050          LDFLAGS=$_ldflags
2051        ])
2052     fi
2053
2054     if test "x$USE_POLARSSL" = "xyes"; then
2055       AC_MSG_NOTICE([detected PolarSSL])
2056
2057       LIBS="-lpolarssl $LIBS"
2058
2059       if test -n "$polarssllib"; then
2060         dnl when shared libs were found in a path that the run-time
2061         dnl linker doesn't search through, we need to add it to
2062         dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2063         dnl due to this
2064         if test "x$cross_compiling" != "xyes"; then
2065           LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$polarssllib"
2066           export LD_LIBRARY_PATH
2067           AC_MSG_NOTICE([Added $polarssllib to LD_LIBRARY_PATH])
2068         fi
2069       fi
2070     fi
2071
2072   fi dnl PolarSSL not disabled
2073
2074 fi
2075
2076 dnl ----------------------------------------------------
2077 dnl check for CyaSSL
2078 dnl ----------------------------------------------------
2079
2080 dnl Default to compiler & linker defaults for CyaSSL files & libraries.
2081 OPT_CYASSL=no
2082
2083 _cppflags=$CPPFLAGS
2084 _ldflags=$LDFLAGS
2085 AC_ARG_WITH(cyassl,dnl
2086 AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to the installation root (default: system lib default)])
2087 AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
2088   OPT_CYASSL=$withval)
2089
2090 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2091
2092   if test X"$OPT_CYASSL" != Xno; then
2093
2094     if test "$OPT_CYASSL" = "yes"; then
2095       OPT_CYASSL=""
2096     fi
2097
2098     if test -z "$OPT_CYASSL" ; then
2099       dnl check for lib in system default first
2100
2101       AC_CHECK_LIB(cyassl, CyaSSL_Init,
2102       dnl libcyassl found, set the variable
2103        [
2104          AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2105          AC_SUBST(USE_CYASSL, [1])
2106          CYASSL_ENABLED=1
2107          USE_CYASSL="yes"
2108          curl_ssl_msg="enabled (CyaSSL)"
2109         ])
2110     fi
2111
2112     addld=""
2113     addlib=""
2114     addcflags=""
2115     cyassllib=""
2116
2117     if test "x$USE_CYASSL" != "xyes"; then
2118       dnl add the path and test again
2119       addld=-L$OPT_CYASSL/lib$libsuff
2120       addcflags=-I$OPT_CYASSL/include
2121       cyassllib=$OPT_CYASSL/lib$libsuff
2122
2123       LDFLAGS="$LDFLAGS $addld"
2124       if test "$addcflags" != "-I/usr/include"; then
2125          CPPFLAGS="$CPPFLAGS $addcflags"
2126       fi
2127
2128       AC_CHECK_LIB(cyassl, CyaSSL_Init,
2129        [
2130        AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
2131        AC_SUBST(USE_CYASSL, [1])
2132        CYASSL_ENABLED=1
2133        USE_CYASSL="yes"
2134        curl_ssl_msg="enabled (CyaSSL)"
2135        ],
2136        [
2137          CPPFLAGS=$_cppflags
2138          LDFLAGS=$_ldflags
2139        ])
2140     fi
2141
2142     if test "x$USE_CYASSL" = "xyes"; then
2143       AC_MSG_NOTICE([detected CyaSSL])
2144
2145       LIBS="-lcyassl -lm $LIBS"
2146
2147       if test -n "$cyassllib"; then
2148         dnl when shared libs were found in a path that the run-time
2149         dnl linker doesn't search through, we need to add it to
2150         dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2151         dnl due to this
2152         if test "x$cross_compiling" != "xyes"; then
2153           LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$cyassllib"
2154           export LD_LIBRARY_PATH
2155           AC_MSG_NOTICE([Added $cyassllib to LD_LIBRARY_PATH])
2156         fi
2157       fi
2158
2159     fi
2160
2161   fi dnl CyaSSL not disabled
2162
2163 fi
2164
2165 dnl ----------------------------------------------------
2166 dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
2167 dnl ----------------------------------------------------
2168
2169 dnl Default to compiler & linker defaults for NSS files & libraries.
2170 OPT_NSS=no
2171
2172 AC_ARG_WITH(nss,dnl
2173 AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root])
2174 AC_HELP_STRING([--without-nss], [disable NSS detection]),
2175   OPT_NSS=$withval)
2176
2177 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2178
2179   if test X"$OPT_NSS" != Xno; then
2180
2181     addld=""
2182     addlib=""
2183     addcflags=""
2184     nssprefix=""
2185     version=""
2186
2187     if test "x$OPT_NSS" = "xyes"; then
2188
2189       CURL_CHECK_PKGCONFIG(nss)
2190
2191       if test "$PKGCONFIG" != "no" ; then
2192         addlib=`$PKGCONFIG --libs nss`
2193         addcflags=`$PKGCONFIG --cflags nss`
2194         version=`$PKGCONFIG --modversion nss`
2195         nssprefix=`$PKGCONFIG --variable=prefix nss`
2196       else
2197         dnl Without pkg-config, we check for nss-config
2198
2199         check=`nss-config --version 2>/dev/null`
2200         if test -n "$check"; then
2201           addlib=`nss-config --libs`
2202           addcflags=`nss-config --cflags`
2203           version=`nss-config --version`
2204           nssprefix=`nss-config --prefix`
2205         else
2206           addlib="-lnss3"
2207           addcflags=""
2208           version="unknown"
2209         fi
2210       fi
2211     else
2212         # Without pkg-config, we'll kludge in some defaults
2213         addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
2214         addcflags="-I$OPT_NSS/include"
2215         version="unknown"
2216         nssprefix=$OPT_NSS
2217     fi
2218
2219     if test -n "$addlib"; then
2220
2221       CLEANLIBS="$LIBS"
2222       CLEANCPPFLAGS="$CPPFLAGS"
2223
2224       LIBS="$addlib $LIBS"
2225       if test "$addcflags" != "-I/usr/include"; then
2226          CPPFLAGS="$CPPFLAGS $addcflags"
2227       fi
2228
2229       dnl The function PK11_CreateGenericObject is needed to load libnsspem.so
2230       AC_CHECK_LIB(nss3, PK11_CreateGenericObject,
2231        [
2232        AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
2233        AC_SUBST(USE_NSS, [1])
2234        USE_NSS="yes"
2235        NSS_ENABLED=1
2236        curl_ssl_msg="enabled (NSS)"
2237        ],
2238        [
2239          LIBS="$CLEANLIBS"
2240          CPPFLAGS="$CLEANCPPFLAGS"
2241        ])
2242
2243       if test "x$USE_NSS" = "xyes"; then
2244         AC_MSG_NOTICE([detected NSS version $version])
2245
2246         dnl NSS_InitContext() was introduced in NSS 3.12.5 and helps to prevent
2247         dnl collisions on NSS initialization/shutdown with other libraries
2248         AC_CHECK_FUNC(NSS_InitContext,
2249         [
2250           AC_DEFINE(HAVE_NSS_INITCONTEXT, 1, [if you have the NSS_InitContext function])
2251           AC_SUBST(HAVE_NSS_INITCONTEXT, [1])
2252         ])
2253
2254         dnl when shared libs were found in a path that the run-time
2255         dnl linker doesn't search through, we need to add it to
2256         dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2257         dnl due to this
2258         if test "x$cross_compiling" != "xyes"; then
2259           LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
2260           export LD_LIBRARY_PATH
2261           AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
2262         fi
2263       fi
2264
2265     fi
2266
2267   fi dnl NSS not disabled
2268
2269 fi dnl curl_ssl_msg = init_ssl_msg
2270
2271 OPT_AXTLS=off
2272
2273 AC_ARG_WITH(axtls,dnl
2274 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.])
2275 AC_HELP_STRING([--without-axtls], [disable axTLS]),
2276   OPT_AXTLS=$withval)
2277
2278 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2279   if test X"$OPT_AXTLS" != Xno; then
2280     dnl backup the pre-axtls variables
2281     CLEANLDFLAGS="$LDFLAGS"
2282     CLEANCPPFLAGS="$CPPFLAGS"
2283     CLEANLIBS="$LIBS"
2284
2285     case "$OPT_AXTLS" in
2286     yes)
2287       dnl --with-axtls (without path) used
2288       PREFIX_AXTLS=/usr/local
2289       LIB_AXTLS="$PREFIX_AXTLS/lib"
2290       LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2291       CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2292       ;;
2293     off)
2294       dnl no --with-axtls option given, just check default places
2295       PREFIX_AXTLS=
2296       ;;
2297     *)
2298       dnl check the given --with-axtls spot
2299       PREFIX_AXTLS=$OPT_AXTLS
2300       LIB_AXTLS="$PREFIX_AXTLS/lib"
2301       LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2302       CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2303       ;;
2304     esac
2305
2306     AC_CHECK_LIB(axtls, ssl_version,[
2307       LIBS="-laxtls $LIBS"
2308       AC_DEFINE(USE_AXTLS, 1, [if axTLS is enabled])
2309       AC_SUBST(USE_AXTLS, [1])
2310       AXTLS_ENABLED=1
2311       USE_AXTLS="yes"
2312       curl_ssl_msg="enabled (axTLS)"
2313
2314
2315       LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
2316       export LD_LIBRARY_PATH
2317       AC_MSG_NOTICE([Added $LIB_AXTLS to LD_LIBRARY_PATH])
2318       ],[
2319       LDFLAGS="$CLEANLDFLAGS"
2320       CPPFLAGS="$CLEANCPPFLAGS"
2321       LIBS="$CLEANLIBS"
2322     ])
2323   fi
2324 fi
2325
2326 if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$DARWINSSL_ENABLED" = "x"; then
2327   AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
2328   AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls or --with-winssl to address this.])
2329 else
2330   # SSL is enabled, genericly
2331   AC_SUBST(SSL_ENABLED)
2332   SSL_ENABLED="1"
2333 fi
2334
2335 dnl **********************************************************************
2336 dnl Check for the CA bundle
2337 dnl **********************************************************************
2338
2339 CURL_CHECK_CA_BUNDLE
2340
2341 dnl **********************************************************************
2342 dnl Check for libmetalink
2343 dnl **********************************************************************
2344
2345 OPT_LIBMETALINK=no
2346
2347 AC_ARG_WITH(libmetalink,dnl
2348 AC_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root])
2349 AC_HELP_STRING([--without-libmetalink], [disable libmetalink detection]),
2350   OPT_LIBMETALINK=$withval)
2351
2352 if test X"$OPT_LIBMETALINK" != Xno; then
2353
2354   addld=""
2355   addlib=""
2356   addcflags=""
2357   version=""
2358   libmetalinklib=""
2359
2360   PKGTEST="no"
2361   if test "x$OPT_LIBMETALINK" = "xyes"; then
2362     dnl this is with no partiular path given
2363     PKGTEST="yes"
2364     CURL_CHECK_PKGCONFIG(libmetalink)
2365   else
2366     dnl When particular path is given, set PKG_CONFIG_LIBDIR using the path.
2367     LIBMETALINK_PCDIR="$OPT_LIBMETALINK/lib/pkgconfig"
2368     AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$LIBMETALINK_PCDIR"])
2369     if test -f "$LIBMETALINK_PCDIR/libmetalink.pc"; then
2370       PKGTEST="yes"
2371     fi
2372     if test "$PKGTEST" = "yes"; then
2373       CURL_CHECK_PKGCONFIG(libmetalink, [$LIBMETALINK_PCDIR])
2374     fi
2375   fi
2376   if test "$PKGTEST" = "yes" && test "$PKGCONFIG" != "no"; then
2377     addlib=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2378       $PKGCONFIG --libs-only-l libmetalink`
2379     addld=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2380       $PKGCONFIG --libs-only-L libmetalink`
2381     addcflags=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2382       $PKGCONFIG --cflags-only-I libmetalink`
2383     version=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2384       $PKGCONFIG --modversion libmetalink`
2385     libmetalinklib=`echo $addld | $SED -e 's/-L//'`
2386   fi
2387   if test -n "$addlib"; then
2388
2389     clean_CPPFLAGS="$CPPFLAGS"
2390     clean_LDFLAGS="$LDFLAGS"
2391     clean_LIBS="$LIBS"
2392     CPPFLAGS="$addcflags $clean_CPPFLAGS"
2393     LDFLAGS="$addld $clean_LDFLAGS"
2394     LIBS="$addlib $clean_LIBS"
2395     AC_MSG_CHECKING([if libmetalink is recent enough])
2396     AC_LINK_IFELSE([
2397       AC_LANG_PROGRAM([[
2398 #       include <metalink/metalink.h>
2399       ]],[[
2400         if(0 != metalink_strerror(0)) /* added in 0.1.0 */
2401           return 1;
2402       ]])
2403     ],[
2404       AC_MSG_RESULT([yes ($version)])
2405       want_metalink="yes"
2406     ],[
2407       AC_MSG_RESULT([no ($version)])
2408       AC_MSG_NOTICE([libmetalink library defective or too old])
2409       want_metalink="no"
2410     ])
2411     CPPFLAGS="$clean_CPPFLAGS"
2412     LDFLAGS="$clean_LDFLAGS"
2413     LIBS="$clean_LIBS"
2414     if test "$want_metalink" = "yes"; then
2415       dnl finally libmetalink will be used
2416       AC_DEFINE(USE_METALINK, 1, [Define to enable metalink support])
2417       LIBMETALINK_LIBS=$addlib
2418       LIBMETALINK_LDFLAGS=$addld
2419       LIBMETALINK_CFLAGS=$addcflags
2420       AC_SUBST([LIBMETALINK_LIBS])
2421       AC_SUBST([LIBMETALINK_LDFLAGS])
2422       AC_SUBST([LIBMETALINK_CFLAGS])
2423       curl_mtlnk_msg="enabled"
2424     fi
2425
2426   fi
2427 fi
2428
2429 dnl **********************************************************************
2430 dnl Check for the presence of LIBSSH2 libraries and headers
2431 dnl **********************************************************************
2432
2433 dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
2434 OPT_LIBSSH2=off
2435 AC_ARG_WITH(libssh2,dnl
2436 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])
2437 AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
2438   OPT_LIBSSH2=$withval)
2439
2440 if test X"$OPT_LIBSSH2" != Xno; then
2441   dnl backup the pre-libssh2 variables
2442   CLEANLDFLAGS="$LDFLAGS"
2443   CLEANCPPFLAGS="$CPPFLAGS"
2444   CLEANLIBS="$LIBS"
2445
2446   case "$OPT_LIBSSH2" in
2447   yes)
2448     dnl --with-libssh2 (without path) used
2449     CURL_CHECK_PKGCONFIG(libssh2)
2450
2451     if test "$PKGCONFIG" != "no" ; then
2452       LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2`
2453       LD_SSH2=`$PKGCONFIG --libs-only-L libssh2`
2454       CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2`
2455       version=`$PKGCONFIG --modversion libssh2`
2456       DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'`
2457     fi
2458
2459     ;;
2460   off)
2461     dnl no --with-libssh2 option given, just check default places
2462     ;;
2463   *)
2464     dnl use the given --with-libssh2 spot
2465     PREFIX_SSH2=$OPT_LIBSSH2
2466     ;;
2467   esac
2468
2469   dnl if given with a prefix, we set -L and -I based on that
2470   if test -n "$PREFIX_SSH2"; then
2471     LIB_SSH2="-lssh2"
2472     LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff
2473     CPP_SSH2=-I${PREFIX_SSH2}/include
2474     DIR_SSH2=${PREFIX_SSH2}/lib$libsuff
2475   fi
2476
2477   LDFLAGS="$LDFLAGS $LD_SSH2"
2478   CPPFLAGS="$CPPFLAGS $CPP_SSH2"
2479   LIBS="$LIB_SSH2 $LIBS"
2480
2481   AC_CHECK_LIB(ssh2, libssh2_channel_open_ex)
2482
2483   AC_CHECK_HEADERS(libssh2.h,
2484     curl_ssh_msg="enabled (libSSH2)"
2485     LIBSSH2_ENABLED=1
2486     AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
2487     AC_SUBST(USE_LIBSSH2, [1])
2488   )
2489
2490   if test X"$OPT_LIBSSH2" != Xoff &&
2491      test "$LIBSSH2_ENABLED" != "1"; then
2492     AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!])
2493   fi
2494
2495   if test "$LIBSSH2_ENABLED" = "1"; then
2496     if test -n "$DIR_SSH2"; then
2497        dnl when the libssh2 shared libs were found in a path that the run-time
2498        dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
2499        dnl to prevent further configure tests to fail due to this
2500
2501        dnl libssh2_version is a post 1.0 addition
2502        dnl libssh2_init and libssh2_exit were added in 1.2.5
2503        dnl libssh2_scp_send64 was added in 1.2.6
2504        dnl libssh2_session_handshake was added in 1.2.8
2505        AC_CHECK_FUNCS( libssh2_version libssh2_init libssh2_exit \
2506                        libssh2_scp_send64 libssh2_session_handshake)
2507        if test "x$cross_compiling" != "xyes"; then
2508          LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
2509          export LD_LIBRARY_PATH
2510          AC_MSG_NOTICE([Added $DIR_SSH2 to LD_LIBRARY_PATH])
2511        fi
2512     fi
2513   else
2514     dnl no libssh2, revert back to clean variables
2515     LDFLAGS=$CLEANLDFLAGS
2516     CPPFLAGS=$CLEANCPPFLAGS
2517     LIBS=$CLEANLIBS
2518   fi
2519 fi
2520
2521 dnl **********************************************************************
2522 dnl Check for the presence of LIBRTMP libraries and headers
2523 dnl **********************************************************************
2524
2525 dnl Default to compiler & linker defaults for LIBRTMP files & libraries.
2526 OPT_LIBRTMP=off
2527 AC_ARG_WITH(librtmp,dnl
2528 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])
2529 AC_HELP_STRING([--without-librtmp], [disable LIBRTMP]),
2530   OPT_LIBRTMP=$withval)
2531
2532 if test X"$OPT_LIBRTMP" != Xno; then
2533   dnl backup the pre-librtmp variables
2534   CLEANLDFLAGS="$LDFLAGS"
2535   CLEANCPPFLAGS="$CPPFLAGS"
2536   CLEANLIBS="$LIBS"
2537
2538   case "$OPT_LIBRTMP" in
2539   yes)
2540     dnl --with-librtmp (without path) used
2541     CURL_CHECK_PKGCONFIG(librtmp)
2542
2543     if test "$PKGCONFIG" != "no" ; then
2544       LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp`
2545       LD_RTMP=`$PKGCONFIG --libs-only-L librtmp`
2546       CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp`
2547       version=`$PKGCONFIG --modversion librtmp`
2548       DIR_RTMP=`echo $LD_RTMP | $SED -e 's/-L//'`
2549     else
2550       dnl To avoid link errors, we do not allow --librtmp without
2551       dnl a pkgconfig file
2552       AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.])
2553     fi
2554
2555     ;;
2556   off)
2557     dnl no --with-librtmp option given, just check default places
2558     LIB_RTMP="-lrtmp"
2559     ;;
2560   *)
2561     dnl use the given --with-librtmp spot
2562     PREFIX_RTMP=$OPT_LIBRTMP
2563     ;;
2564   esac
2565
2566   dnl if given with a prefix, we set -L and -I based on that
2567   if test -n "$PREFIX_RTMP"; then
2568     LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff
2569     CPP_RTMP=-I${PREFIX_RTMP}/include
2570     DIR_RTMP=${PREFIX_RTMP}/lib$libsuff
2571   fi
2572
2573   LDFLAGS="$LDFLAGS $LD_RTMP"
2574   CPPFLAGS="$CPPFLAGS $CPP_RTMP"
2575   LIBS="$LIB_RTMP $LIBS"
2576
2577   AC_CHECK_LIB(rtmp, RTMP_Init,
2578     [
2579      AC_CHECK_HEADERS(librtmp/rtmp.h,
2580         curl_rtmp_msg="enabled (librtmp)"
2581         LIBRTMP_ENABLED=1
2582         AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use])
2583         AC_SUBST(USE_LIBRTMP, [1])
2584      )
2585     ],
2586       dnl not found, revert back to clean variables
2587       LDFLAGS=$CLEANLDFLAGS
2588       CPPFLAGS=$CLEANCPPFLAGS
2589       LIBS=$CLEANLIBS
2590   )
2591
2592   if test X"$OPT_LIBRTMP" != Xoff &&
2593      test "$LIBRTMP_ENABLED" != "1"; then
2594     AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!])
2595   fi
2596
2597 fi
2598
2599 dnl **********************************************************************
2600 dnl Check for linker switch for versioned symbols
2601 dnl **********************************************************************
2602
2603 versioned_symbols_flavour=
2604 AC_MSG_CHECKING([whether versioned symbols are wanted])
2605 AC_ARG_ENABLE(versioned-symbols,
2606 AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library])
2607 AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]),
2608 [ case "$enableval" in
2609   yes) AC_MSG_RESULT(yes)
2610     AC_MSG_CHECKING([if libraries can be versioned])
2611     GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
2612     if test -z "$GLD"; then
2613         AC_MSG_RESULT(no)
2614         AC_MSG_WARN([You need an ld version supporting the --version-script option])
2615     else
2616         AC_MSG_RESULT(yes)
2617         if test "x$OPENSSL_ENABLED" = "x1"; then
2618           versioned_symbols_flavour="OPENSSL_"
2619         elif test "x$GNUTLS_ENABLED" == "x1"; then
2620           versioned_symbols_flavour="GNUTLS_"
2621         elif test "x$NSS_ENABLED" == "x1"; then
2622           versioned_symbols_flavour="NSS_"
2623         elif test "x$POLARSSL_ENABLED" == "x1"; then
2624           versioned_symbols_flavour="POLARSSL_"
2625         elif test "x$CYASSL_ENABLED" == "x1"; then
2626           versioned_symbols_flavour="CYASSL_"
2627         elif test "x$AXTLS_ENABLED" == "x1"; then
2628           versioned_symbols_flavour="AXTLS_"
2629         elif test "x$WINSSL_ENABLED" == "x1"; then
2630           versioned_symbols_flavour="WINSSL_"
2631         elif test "x$DARWINSSL_ENABLED" == "x1"; then
2632           versioned_symbols_flavour="DARWINSSL_"
2633         else
2634           versioned_symbols_flavour=""
2635         fi
2636         versioned_symbols="yes"
2637     fi
2638     ;;
2639
2640   *)   AC_MSG_RESULT(no)
2641     ;;
2642   esac
2643 ], [
2644 AC_MSG_RESULT(no)
2645 ]
2646 )
2647
2648 AC_SUBST(VERSIONED_FLAVOUR, ["$versioned_symbols_flavour"])
2649 AM_CONDITIONAL(VERSIONED_SYMBOLS, test "x$versioned_symbols" = "xyes")
2650
2651 dnl -------------------------------------------------
2652 dnl check winidn option before other IDN libraries
2653 dnl -------------------------------------------------
2654
2655 AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)])
2656 OPT_WINIDN="default"
2657 AC_ARG_WITH(winidn,
2658 AC_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN])
2659 AC_HELP_STRING([--without-winidn], [disable Windows native IDN]),
2660   OPT_WINIDN=$withval)
2661 case "$OPT_WINIDN" in
2662   no|default)
2663     dnl --without-winidn option used or configure option not specified
2664     want_winidn="no"
2665     AC_MSG_RESULT([no])
2666     ;;
2667   yes)
2668     dnl --with-winidn option used without path
2669     want_winidn="yes"
2670     want_winidn_path="default"
2671     AC_MSG_RESULT([yes])
2672     ;;
2673   *)
2674     dnl --with-winidn option used with path
2675     want_winidn="yes"
2676     want_winidn_path="$withval"
2677     AC_MSG_RESULT([yes ($withval)])
2678     ;;
2679 esac
2680
2681 if test "$want_winidn" = "yes"; then
2682   dnl winidn library support has been requested
2683   clean_CPPFLAGS="$CPPFLAGS"
2684   clean_LDFLAGS="$LDFLAGS"
2685   clean_LIBS="$LIBS"
2686   WINIDN_LIBS="-lnormaliz"
2687   #
2688   if test "$want_winidn_path" != "default"; then
2689     dnl path has been specified
2690     dnl pkg-config not available or provides no info
2691     WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff"
2692     WINIDN_CPPFLAGS="-I$want_winidn_path/include"
2693     WINIDN_DIR="$want_winidn_path/lib$libsuff"
2694   fi
2695   #
2696   CPPFLAGS="$WINIDN_CPPFLAGS $CPPFLAGS"
2697   LDFLAGS="$WINIDN_LDFLAGS $LDFLAGS"
2698   LIBS="$WINIDN_LIBS $LIBS"
2699   #
2700   AC_MSG_CHECKING([if IdnToUnicode can be linked])
2701   AC_LINK_IFELSE([
2702     AC_LANG_FUNC_LINK_TRY([IdnToUnicode])
2703   ],[
2704     AC_MSG_RESULT([yes])
2705     tst_links_winidn="yes"
2706   ],[
2707     AC_MSG_RESULT([no])
2708     tst_links_winidn="no"
2709   ])
2710   #
2711   if test "$tst_links_winidn" = "yes"; then
2712     AC_DEFINE(USE_WIN32_IDN, 1, [Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz).])
2713     AC_DEFINE(WANT_IDN_PROTOTYPES, 1, [Define to 1 to provide own prototypes.])
2714     AC_SUBST([IDN_ENABLED], [1])
2715     curl_idn_msg="enabled (Windows-native)"
2716   else
2717     AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2718     CPPFLAGS="$clean_CPPFLAGS"
2719     LDFLAGS="$clean_LDFLAGS"
2720     LIBS="$clean_LIBS"
2721   fi
2722 fi
2723
2724 dnl **********************************************************************
2725 dnl Check for the presence of IDN libraries and headers
2726 dnl **********************************************************************
2727
2728 AC_MSG_CHECKING([whether to build with libidn])
2729 OPT_IDN="default"
2730 AC_ARG_WITH(libidn,
2731 AC_HELP_STRING([--with-libidn=PATH],[Enable libidn usage])
2732 AC_HELP_STRING([--without-libidn],[Disable libidn usage]),
2733   [OPT_IDN=$withval])
2734 case "$OPT_IDN" in
2735   no)
2736     dnl --without-libidn option used
2737     want_idn="no"
2738     AC_MSG_RESULT([no])
2739     ;;
2740   default)
2741     dnl configure option not specified
2742     want_idn="yes"
2743     want_idn_path="default"
2744     AC_MSG_RESULT([(assumed) yes])
2745     ;;
2746   yes)
2747     dnl --with-libidn option used without path
2748     want_idn="yes"
2749     want_idn_path="default"
2750     AC_MSG_RESULT([yes])
2751     ;;
2752   *)
2753     dnl --with-libidn option used with path
2754     want_idn="yes"
2755     want_idn_path="$withval"
2756     AC_MSG_RESULT([yes ($withval)])
2757     ;;
2758 esac
2759
2760 if test "$want_idn" = "yes"; then
2761   dnl idn library support has been requested
2762   clean_CPPFLAGS="$CPPFLAGS"
2763   clean_LDFLAGS="$LDFLAGS"
2764   clean_LIBS="$LIBS"
2765   PKGCONFIG="no"
2766   #
2767   if test "$want_idn_path" != "default"; then
2768     dnl path has been specified
2769     IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig"
2770     CURL_CHECK_PKGCONFIG(libidn, [$IDN_PCDIR])
2771     if test "$PKGCONFIG" != "no"; then
2772       IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2773         $PKGCONFIG --libs-only-l libidn 2>/dev/null`
2774       IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2775         $PKGCONFIG --libs-only-L libidn 2>/dev/null`
2776       IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2777         $PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2778       IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2779     else
2780       dnl pkg-config not available or provides no info
2781       IDN_LIBS="-lidn"
2782       IDN_LDFLAGS="-L$want_idn_path/lib$libsuff"
2783       IDN_CPPFLAGS="-I$want_idn_path/include"
2784       IDN_DIR="$want_idn_path/lib$libsuff"
2785     fi
2786   else
2787     dnl path not specified
2788     CURL_CHECK_PKGCONFIG(libidn)
2789     if test "$PKGCONFIG" != "no"; then
2790       IDN_LIBS=`$PKGCONFIG --libs-only-l libidn 2>/dev/null`
2791       IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn 2>/dev/null`
2792       IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2793       IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2794     else
2795       dnl pkg-config not available or provides no info
2796       IDN_LIBS="-lidn"
2797     fi
2798   fi
2799   #
2800   if test "$PKGCONFIG" != "no"; then
2801     AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"])
2802     AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"])
2803     AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2804     AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"])
2805   else
2806     AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"])
2807     AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"])
2808     AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2809     AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"])
2810   fi
2811   #
2812   CPPFLAGS="$IDN_CPPFLAGS $CPPFLAGS"
2813   LDFLAGS="$IDN_LDFLAGS $LDFLAGS"
2814   LIBS="$IDN_LIBS $LIBS"
2815   #
2816   AC_MSG_CHECKING([if idna_to_ascii_4i can be linked])
2817   AC_LINK_IFELSE([
2818     AC_LANG_FUNC_LINK_TRY([idna_to_ascii_4i])
2819   ],[
2820     AC_MSG_RESULT([yes])
2821     tst_links_libidn="yes"
2822   ],[
2823     AC_MSG_RESULT([no])
2824     tst_links_libidn="no"
2825   ])
2826   if test "$tst_links_libidn" = "no"; then
2827     AC_MSG_CHECKING([if idna_to_ascii_lz can be linked])
2828     AC_LINK_IFELSE([
2829       AC_LANG_FUNC_LINK_TRY([idna_to_ascii_lz])
2830     ],[
2831       AC_MSG_RESULT([yes])
2832       tst_links_libidn="yes"
2833     ],[
2834       AC_MSG_RESULT([no])
2835       tst_links_libidn="no"
2836     ])
2837   fi
2838   #
2839   if test "$tst_links_libidn" = "yes"; then
2840     AC_DEFINE(HAVE_LIBIDN, 1, [Define to 1 if you have the `idn' library (-lidn).])
2841     dnl different versions of libidn have different setups of these:
2842     AC_CHECK_FUNCS( idn_free idna_strerror tld_strerror )
2843     AC_CHECK_HEADERS( idn-free.h tld.h )
2844     if test "x$ac_cv_header_tld_h" = "xyes"; then
2845       AC_SUBST([IDN_ENABLED], [1])
2846       curl_idn_msg="enabled"
2847       if test -n "$IDN_DIR"; then
2848         LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
2849         export LD_LIBRARY_PATH
2850         AC_MSG_NOTICE([Added $IDN_DIR to LD_LIBRARY_PATH])
2851       fi
2852     else
2853       AC_MSG_WARN([Libraries for IDN support too old: IDN disabled])
2854       CPPFLAGS="$clean_CPPFLAGS"
2855       LDFLAGS="$clean_LDFLAGS"
2856       LIBS="$clean_LIBS"
2857     fi
2858   else
2859     AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2860     CPPFLAGS="$clean_CPPFLAGS"
2861     LDFLAGS="$clean_LDFLAGS"
2862     LIBS="$clean_LIBS"
2863   fi
2864 fi
2865
2866
2867 dnl Let's hope this split URL remains working:
2868 dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
2869 dnl genprogc/thread_quick_ref.htm
2870
2871
2872 dnl **********************************************************************
2873 dnl Back to "normal" configuring
2874 dnl **********************************************************************
2875
2876 dnl Checks for header files.
2877 AC_HEADER_STDC
2878
2879 CURL_CHECK_HEADER_MALLOC
2880 CURL_CHECK_HEADER_MEMORY
2881
2882 dnl Now check for the very most basic headers. Then we can use these
2883 dnl ones as default-headers when checking for the rest!
2884 AC_CHECK_HEADERS(
2885         sys/types.h \
2886         sys/time.h \
2887         sys/select.h \
2888         sys/socket.h \
2889         sys/ioctl.h \
2890         sys/uio.h \
2891         assert.h \
2892         unistd.h \
2893         stdlib.h \
2894         limits.h \
2895         arpa/inet.h \
2896         net/if.h \
2897         netinet/in.h \
2898         sys/un.h \
2899         netinet/tcp.h \
2900         netdb.h \
2901         sys/sockio.h \
2902         sys/stat.h \
2903         sys/param.h \
2904         termios.h \
2905         termio.h \
2906         sgtty.h \
2907         fcntl.h \
2908         alloca.h \
2909         time.h \
2910         io.h \
2911         pwd.h \
2912         utime.h \
2913         sys/utime.h \
2914         sys/poll.h \
2915         poll.h \
2916         socket.h \
2917         sys/resource.h \
2918         libgen.h \
2919         locale.h \
2920         errno.h \
2921         stdbool.h \
2922         arpa/tftp.h \
2923         sys/filio.h \
2924         sys/wait.h \
2925         setjmp.h,
2926 dnl to do if not found
2927 [],
2928 dnl to do if found
2929 [],
2930 dnl default includes
2931 [
2932 #ifdef HAVE_SYS_TYPES_H
2933 #include <sys/types.h>
2934 #endif
2935 #ifdef HAVE_SYS_TIME_H
2936 #include <sys/time.h>
2937 #endif
2938 #ifdef HAVE_SYS_SELECT_H
2939 #include <sys/select.h>
2940 #endif
2941 #ifdef HAVE_SYS_SOCKET_H
2942 #include <sys/socket.h>
2943 #endif
2944 #ifdef HAVE_NETINET_IN_H
2945 #include <netinet/in.h>
2946 #endif
2947 #ifdef HAVE_SYS_UN_H
2948 #include <sys/un.h>
2949 #endif
2950 ]
2951 )
2952
2953 dnl Checks for typedefs, structures, and compiler characteristics.
2954 AC_C_CONST
2955 CURL_CHECK_VARIADIC_MACROS
2956 AC_TYPE_SIZE_T
2957 AC_HEADER_TIME
2958 CURL_CHECK_STRUCT_TIMEVAL
2959 CURL_VERIFY_RUNTIMELIBS
2960
2961 AC_CHECK_SIZEOF(size_t)
2962 AC_CHECK_SIZEOF(long)
2963 AC_CHECK_SIZEOF(int)
2964 AC_CHECK_SIZEOF(short)
2965 CURL_CONFIGURE_LONG
2966 AC_CHECK_SIZEOF(time_t)
2967 AC_CHECK_SIZEOF(off_t)
2968
2969 soname_bump=no
2970 if test x"$ac_cv_native_windows" != "xyes" &&
2971    test $ac_cv_sizeof_off_t -ne $curl_sizeof_curl_off_t; then
2972   AC_MSG_WARN([This libcurl built is probably not ABI compatible with previous])
2973   AC_MSG_WARN([builds! You MUST read lib/README.curl_off_t to figure it out.])
2974   soname_bump=yes
2975 fi
2976
2977
2978 AC_CHECK_TYPE(long long,
2979    [AC_DEFINE(HAVE_LONGLONG, 1,
2980       [Define to 1 if the compiler supports the 'long long' data type.])]
2981    longlong="yes"
2982 )
2983
2984 if test "xyes" = "x$longlong"; then
2985   AC_MSG_CHECKING([if numberLL works])
2986   AC_COMPILE_IFELSE([
2987     AC_LANG_PROGRAM([[
2988     ]],[[
2989       long long val = 1000LL;
2990     ]])
2991   ],[
2992     AC_MSG_RESULT([yes])
2993     AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
2994   ],[
2995     AC_MSG_RESULT([no])
2996   ])
2997 fi
2998
2999
3000 # check for ssize_t
3001 AC_CHECK_TYPE(ssize_t, ,
3002    AC_DEFINE(ssize_t, int, [the signed version of size_t]))
3003
3004 # check for bool type
3005 AC_CHECK_TYPE([bool],[
3006   AC_DEFINE(HAVE_BOOL_T, 1,
3007     [Define to 1 if bool is an available type.])
3008 ], ,[
3009 #ifdef HAVE_SYS_TYPES_H
3010 #include <sys/types.h>
3011 #endif
3012 #ifdef HAVE_STDBOOL_H
3013 #include <stdbool.h>
3014 #endif
3015 ])
3016
3017 CURL_CONFIGURE_CURL_SOCKLEN_T
3018
3019 CURL_CONFIGURE_PULL_SYS_POLL
3020
3021 TYPE_IN_ADDR_T
3022
3023 TYPE_SOCKADDR_STORAGE
3024
3025 TYPE_SIG_ATOMIC_T
3026
3027 AC_TYPE_SIGNAL
3028
3029 CURL_CHECK_FUNC_SELECT
3030
3031 CURL_CHECK_FUNC_RECV
3032 CURL_CHECK_FUNC_RECVFROM
3033 CURL_CHECK_FUNC_SEND
3034 CURL_CHECK_MSG_NOSIGNAL
3035
3036 CURL_CHECK_FUNC_ALARM
3037 CURL_CHECK_FUNC_BASENAME
3038 CURL_CHECK_FUNC_CLOSESOCKET
3039 CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
3040 CURL_CHECK_FUNC_CONNECT
3041 CURL_CHECK_FUNC_FCNTL
3042 CURL_CHECK_FUNC_FDOPEN
3043 CURL_CHECK_FUNC_FREEADDRINFO
3044 CURL_CHECK_FUNC_FREEIFADDRS
3045 CURL_CHECK_FUNC_FSETXATTR
3046 CURL_CHECK_FUNC_FTRUNCATE
3047 CURL_CHECK_FUNC_GETADDRINFO
3048 CURL_CHECK_FUNC_GAI_STRERROR
3049 CURL_CHECK_FUNC_GETHOSTBYADDR
3050 CURL_CHECK_FUNC_GETHOSTBYADDR_R
3051 CURL_CHECK_FUNC_GETHOSTBYNAME
3052 CURL_CHECK_FUNC_GETHOSTBYNAME_R
3053 CURL_CHECK_FUNC_GETHOSTNAME
3054 CURL_CHECK_FUNC_GETIFADDRS
3055 CURL_CHECK_FUNC_GETSERVBYPORT_R
3056 CURL_CHECK_FUNC_GMTIME_R
3057 CURL_CHECK_FUNC_INET_NTOA_R
3058 CURL_CHECK_FUNC_INET_NTOP
3059 CURL_CHECK_FUNC_INET_PTON
3060 CURL_CHECK_FUNC_IOCTL
3061 CURL_CHECK_FUNC_IOCTLSOCKET
3062 CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
3063 CURL_CHECK_FUNC_LOCALTIME_R
3064 CURL_CHECK_FUNC_MEMRCHR
3065 CURL_CHECK_FUNC_POLL
3066 CURL_CHECK_FUNC_SETSOCKOPT
3067 CURL_CHECK_FUNC_SIGACTION
3068 CURL_CHECK_FUNC_SIGINTERRUPT
3069 CURL_CHECK_FUNC_SIGNAL
3070 CURL_CHECK_FUNC_SIGSETJMP
3071 CURL_CHECK_FUNC_SOCKET
3072 CURL_CHECK_FUNC_SOCKETPAIR
3073 CURL_CHECK_FUNC_STRCASECMP
3074 CURL_CHECK_FUNC_STRCASESTR
3075 CURL_CHECK_FUNC_STRCMPI
3076 CURL_CHECK_FUNC_STRDUP
3077 CURL_CHECK_FUNC_STRERROR_R
3078 CURL_CHECK_FUNC_STRICMP
3079 CURL_CHECK_FUNC_STRLCAT
3080 CURL_CHECK_FUNC_STRNCASECMP
3081 CURL_CHECK_FUNC_STRNCMPI
3082 CURL_CHECK_FUNC_STRNICMP
3083 CURL_CHECK_FUNC_STRSTR
3084 CURL_CHECK_FUNC_STRTOK_R
3085 CURL_CHECK_FUNC_STRTOLL
3086 CURL_CHECK_FUNC_WRITEV
3087
3088 case $host in
3089   *msdosdjgpp)
3090      ac_cv_func_pipe=no
3091      skipcheck_pipe=yes
3092      AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
3093     ;;
3094 esac
3095
3096 AC_CHECK_FUNCS([fork \
3097   geteuid \
3098   getpass_r \
3099   getppid \
3100   getprotobyname \
3101   getpwuid \
3102   getrlimit \
3103   gettimeofday \
3104   inet_addr \
3105   perror \
3106   pipe \
3107   setlocale \
3108   setmode \
3109   setrlimit \
3110   uname \
3111   utime
3112 ],[
3113 ],[
3114   func="$ac_func"
3115   eval skipcheck=\$skipcheck_$func
3116   if test "x$skipcheck" != "xyes"; then
3117     AC_MSG_CHECKING([deeper for $func])
3118     AC_LINK_IFELSE([
3119       AC_LANG_PROGRAM([[
3120       ]],[[
3121         $func ();
3122       ]])
3123     ],[
3124       AC_MSG_RESULT([yes])
3125       eval "ac_cv_func_$func=yes"
3126       AC_DEFINE_UNQUOTED(XC_SH_TR_CPP([HAVE_$func]), [1],
3127         [Define to 1 if you have the $func function.])
3128     ],[
3129       AC_MSG_RESULT([but still no])
3130     ])
3131   fi
3132 ])
3133
3134 dnl Check if the getnameinfo function is available
3135 dnl and get the types of five of its arguments.
3136 CURL_CHECK_FUNC_GETNAMEINFO
3137
3138 if test "$ipv6" = "yes"; then
3139   if test "$ac_cv_func_getaddrinfo" = "yes"; then
3140     AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
3141     IPV6_ENABLED=1
3142     AC_SUBST(IPV6_ENABLED)
3143   fi
3144   CURL_CHECK_NI_WITHSCOPEID
3145 fi
3146
3147 CURL_CHECK_NONBLOCKING_SOCKET
3148
3149 dnl ************************************************************
3150 dnl nroff tool stuff
3151 dnl
3152
3153 AC_PATH_PROG( PERL, perl, ,
3154   $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
3155 AC_SUBST(PERL)
3156
3157 AC_PATH_PROGS( NROFF, gnroff nroff, ,
3158   $PATH:/usr/bin/:/usr/local/bin )
3159 AC_SUBST(NROFF)
3160
3161 if test -n "$NROFF"; then
3162   dnl only check for nroff options if an nroff command was found
3163
3164   AC_MSG_CHECKING([how to use *nroff to get plain text from man pages])
3165   MANOPT="-man"
3166   mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3167   if test -z "$mancheck"; then
3168     MANOPT="-mandoc"
3169    mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3170     if test -z "$mancheck"; then
3171       MANOPT=""
3172       AC_MSG_RESULT([failed])
3173       AC_MSG_WARN([found no *nroff option to get plaintext from man pages])
3174     else
3175       AC_MSG_RESULT([$MANOPT])
3176     fi
3177   else
3178     AC_MSG_RESULT([$MANOPT])
3179   fi
3180   AC_SUBST(MANOPT)
3181 fi
3182
3183 if test -z "$MANOPT"
3184 then
3185   dnl if no nroff tool was found, or no option that could convert man pages
3186   dnl was found, then disable the built-in manual stuff
3187   AC_MSG_WARN([disabling built-in manual])
3188   USE_MANUAL="no";
3189 fi
3190
3191 dnl *************************************************************************
3192 dnl If the manual variable still is set, then we go with providing a built-in
3193 dnl manual
3194
3195 if test "$USE_MANUAL" = "1"; then
3196   AC_DEFINE(USE_MANUAL, 1, [If you want to build curl with the built-in manual])
3197   curl_manual_msg="enabled"
3198 fi
3199
3200 dnl set variable for use in automakefile(s)
3201 AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
3202
3203 CURL_CHECK_LIB_ARES
3204 AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
3205
3206 if test "x$ac_cv_native_windows" != "xyes" &&
3207    test "x$enable_shared" = "xyes"; then
3208   build_libhostname=yes
3209 else
3210   build_libhostname=no
3211 fi
3212 AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes)
3213
3214 CURL_CHECK_OPTION_THREADED_RESOLVER
3215
3216 if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
3217   AC_MSG_ERROR(
3218 [Options --enable-threaded-resolver and --enable-ares are mutually exclusive])
3219 fi
3220
3221 if test "$want_thres" = "yes"; then
3222   AC_CHECK_HEADER(pthread.h,
3223     [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>])
3224       save_CFLAGS="$CFLAGS"
3225       CFLAGS="$CFLAGS -pthread"
3226       AC_CHECK_LIB(pthread, pthread_create,
3227         [ AC_MSG_NOTICE([using POSIX threaded DNS lookup])
3228           AC_DEFINE(USE_THREADS_POSIX, 1, [if you want POSIX threaded DNS lookup])
3229           USE_THREADS_POSIX=1
3230           curl_res_msg="threaded"
3231         ],
3232         [ CFLAGS="$save_CFLAGS"])
3233   ])
3234 fi
3235
3236 dnl ************************************************************
3237 dnl disable verbose text strings
3238 dnl
3239 AC_MSG_CHECKING([whether to enable verbose strings])
3240 AC_ARG_ENABLE(verbose,
3241 AC_HELP_STRING([--enable-verbose],[Enable verbose strings])
3242 AC_HELP_STRING([--disable-verbose],[Disable verbose strings]),
3243 [ case "$enableval" in
3244   no)
3245        AC_MSG_RESULT(no)
3246        AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings])
3247        curl_verbose_msg="no"
3248        ;;
3249   *)   AC_MSG_RESULT(yes)
3250        ;;
3251   esac ],
3252        AC_MSG_RESULT(yes)
3253 )
3254
3255 dnl ************************************************************
3256 dnl enable SSPI support
3257 dnl
3258 AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)])
3259 AC_ARG_ENABLE(sspi,
3260 AC_HELP_STRING([--enable-sspi],[Enable SSPI])
3261 AC_HELP_STRING([--disable-sspi],[Disable SSPI]),
3262 [ case "$enableval" in
3263   yes)
3264        if test "$ac_cv_native_windows" = "yes"; then
3265          AC_MSG_RESULT(yes)
3266          AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
3267          AC_SUBST(USE_WINDOWS_SSPI, [1])
3268          curl_sspi_msg="enabled"
3269        else
3270          AC_MSG_RESULT(no)
3271          AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.])
3272        fi
3273        ;;
3274   *)
3275        if test "x$WINSSL_ENABLED" = "x1"; then
3276          # --with-winssl implies --enable-sspi
3277          AC_MSG_RESULT(yes)
3278        else
3279          AC_MSG_RESULT(no)
3280        fi
3281        ;;
3282   esac ],
3283        if test "x$WINSSL_ENABLED" = "x1"; then
3284          # --with-winssl implies --enable-sspi
3285          AC_MSG_RESULT(yes)
3286        else
3287          AC_MSG_RESULT(no)
3288        fi
3289 )
3290
3291 dnl ************************************************************
3292 dnl disable cryptographic authentication
3293 dnl
3294 AC_MSG_CHECKING([whether to enable cryptographic authentication methods])
3295 AC_ARG_ENABLE(crypto-auth,
3296 AC_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication])
3297 AC_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]),
3298 [ case "$enableval" in
3299   no)
3300        AC_MSG_RESULT(no)
3301        AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication])
3302        ;;
3303   *)   AC_MSG_RESULT(yes)
3304        ;;
3305   esac ],
3306        AC_MSG_RESULT(yes)
3307 )
3308
3309 CURL_CHECK_OPTION_NTLM_WB
3310
3311 CURL_CHECK_NTLM_WB
3312
3313 dnl ************************************************************
3314 dnl disable TLS-SRP authentication
3315 dnl
3316 AC_MSG_CHECKING([whether to enable TLS-SRP authentication])
3317 AC_ARG_ENABLE(tls-srp,
3318 AC_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication])
3319 AC_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]),
3320 [ case "$enableval" in
3321   no)
3322        AC_MSG_RESULT(no)
3323        AC_DEFINE(CURL_DISABLE_TLS_SRP, 1, [to disable TLS-SRP authentication])
3324        want_tls_srp=no
3325        ;;
3326   *)   AC_MSG_RESULT(yes)
3327        want_tls_srp=yes
3328        ;;
3329   esac ],
3330        AC_MSG_RESULT(yes)
3331        want_tls_srp=yes
3332 )
3333
3334 if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_SSLEAY_SRP" = "x1") ; then
3335    AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication])
3336    USE_TLS_SRP=1
3337    curl_tls_srp_msg="enabled"
3338 fi
3339
3340 dnl ************************************************************
3341 dnl disable cookies support
3342 dnl
3343 AC_MSG_CHECKING([whether to enable support for cookies])
3344 AC_ARG_ENABLE(cookies,
3345 AC_HELP_STRING([--enable-cookies],[Enable cookies support])
3346 AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
3347 [ case "$enableval" in
3348   no)
3349        AC_MSG_RESULT(no)
3350        AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support])
3351        ;;
3352   *)   AC_MSG_RESULT(yes)
3353        ;;
3354   esac ],
3355        AC_MSG_RESULT(yes)
3356 )
3357
3358 dnl ************************************************************
3359 dnl hiding of library internal symbols
3360 dnl
3361 CURL_CONFIGURE_SYMBOL_HIDING
3362
3363 dnl ************************************************************
3364 dnl enforce SONAME bump
3365 dnl
3366
3367 AC_MSG_CHECKING([whether to enforce SONAME bump])
3368 AC_ARG_ENABLE(soname-bump,
3369 AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump])
3370 AC_HELP_STRING([--disable-soname-bump],[Disable enforced SONAME bump]),
3371 [ case "$enableval" in
3372   yes)   AC_MSG_RESULT(yes)
3373          soname_bump=yes
3374          ;;
3375   *)
3376          AC_MSG_RESULT(no)
3377          ;;
3378   esac ],
3379         AC_MSG_RESULT($soname_bump)
3380 )
3381 AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes)
3382
3383 dnl
3384 dnl All the library dependencies put into $LIB apply to libcurl only.
3385 dnl
3386 LIBCURL_LIBS=$LIBS
3387
3388 AC_SUBST(LIBCURL_LIBS)
3389 AC_SUBST(CURL_NETWORK_LIBS)
3390 AC_SUBST(CURL_NETWORK_AND_TIME_LIBS)
3391
3392 dnl BLANK_AT_MAKETIME may be used in our Makefile.am files to blank
3393 dnl LIBS variable used in generated makefile at makefile processing
3394 dnl time. Doing this functionally prevents LIBS from being used for
3395 dnl all link targets in given makefile.
3396 BLANK_AT_MAKETIME=
3397 AC_SUBST(BLANK_AT_MAKETIME)
3398
3399 AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes)
3400
3401 dnl yes or no
3402 ENABLE_SHARED="$enable_shared"
3403 AC_SUBST(ENABLE_SHARED)
3404
3405 dnl
3406 dnl For keeping supported features and protocols also in pkg-config file
3407 dnl since it is more cross-compile friendly than curl-config
3408 dnl
3409
3410 if test "x$USE_SSLEAY" = "x1"; then
3411   SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3412 elif test -n "$SSL_ENABLED"; then
3413   SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3414 fi
3415 if test "@KRB4_ENABLED@" = "x1"; then
3416   SUPPORT_FEATURES="$SUPPORT_FEATURES KRB4"
3417 fi
3418 if test "x$IPV6_ENABLED" = "x1"; then
3419   SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
3420 fi
3421 if test "x$HAVE_LIBZ" = "x1"; then
3422   SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
3423 fi
3424 if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1"; then
3425   SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
3426 fi
3427 if test "x$IDN_ENABLED" = "x1"; then
3428   SUPPORT_FEATURES="$SUPPORT_FEATURES IDN"
3429 fi
3430 if test "x$USE_WINDOWS_SSPI" = "x1"; then
3431   SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
3432 fi
3433 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3434   if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
3435       -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
3436       -o "x$DARWINSSL_ENABLED" = "x1"; then
3437     SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
3438     if test "x$NTLM_WB_ENABLED" = "x1"; then
3439       SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
3440     fi
3441   fi
3442 fi
3443 if test "x$USE_TLS_SRP" = "x1"; then
3444   SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
3445 fi
3446
3447 AC_SUBST(SUPPORT_FEATURES)
3448
3449 dnl For supported protocols in pkg-config file
3450 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3451   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
3452   if test "x$SSL_ENABLED" = "x1"; then
3453     SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS"
3454   fi
3455 fi
3456 if test "x$CURL_DISABLE_FTP" != "x1"; then
3457   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP"
3458   if test "x$SSL_ENABLED" = "x1"; then
3459     SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS"
3460   fi
3461 fi
3462 if test "x$CURL_DISABLE_FILE" != "x1"; then
3463   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE"
3464 fi
3465 if test "x$CURL_DISABLE_TELNET" != "x1"; then
3466   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET"
3467 fi
3468 if test "x$CURL_DISABLE_LDAP" != "x1"; then
3469   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP"
3470   if test "x$CURL_DISABLE_LDAPS" != "x1"; then
3471     if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") ||
3472       (test "x$USE_OPENLDAP" != "x1"  && test "x$HAVE_LDAP_SSL" = "x1"); then
3473       SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS"
3474     fi
3475   fi
3476 fi
3477 if test "x$CURL_DISABLE_DICT" != "x1"; then
3478   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT"
3479 fi
3480 if test "x$CURL_DISABLE_TFTP" != "x1"; then
3481   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP"
3482 fi
3483 if test "x$CURL_DISABLE_GOPHER" != "x1"; then
3484   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER"
3485 fi
3486 if test "x$CURL_DISABLE_POP3" != "x1"; then
3487   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3"
3488   if test "x$SSL_ENABLED" = "x1"; then
3489     SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S"
3490   fi
3491 fi
3492 if test "x$CURL_DISABLE_IMAP" != "x1"; then
3493   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
3494   if test "x$SSL_ENABLED" = "x1"; then
3495     SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
3496   fi
3497 fi
3498 if test "x$CURL_DISABLE_SMTP" != "x1"; then
3499   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
3500   if test "x$SSL_ENABLED" = "x1"; then
3501     SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS"
3502   fi
3503 fi
3504 if test "x$USE_LIBSSH2" = "x1"; then
3505   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
3506   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
3507 fi
3508 if test "x$CURL_DISABLE_RTSP" != "x1"; then
3509   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
3510 fi
3511 if test "x$USE_LIBRTMP" = "x1"; then
3512   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP"
3513 fi
3514
3515 dnl replace spaces with newlines
3516 dnl sort the lines
3517 dnl replace the newlines back to spaces
3518 SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '`
3519
3520 AC_SUBST(SUPPORT_PROTOCOLS)
3521
3522 dnl squeeze whitespace out of some variables
3523
3524 squeeze CFLAGS
3525 squeeze CPPFLAGS
3526 squeeze DEFS
3527 squeeze LDFLAGS
3528 squeeze LIBS
3529
3530 squeeze LIBCURL_LIBS
3531 squeeze CURL_NETWORK_LIBS
3532 squeeze CURL_NETWORK_AND_TIME_LIBS
3533
3534 squeeze SUPPORT_FEATURES
3535 squeeze SUPPORT_PROTOCOLS
3536
3537 if test "x$want_curldebug_assumed" = "xyes" &&
3538   test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
3539   ac_configure_args="$ac_configure_args --enable-curldebug"
3540 fi
3541
3542 AC_CONFIG_FILES([Makefile \
3543            docs/Makefile \
3544            docs/examples/Makefile \
3545            docs/libcurl/Makefile \
3546            include/Makefile \
3547            include/curl/Makefile \
3548            src/Makefile \
3549            lib/Makefile \
3550            lib/libcurl.vers \
3551            tests/Makefile \
3552            tests/data/Makefile \
3553            tests/server/Makefile \
3554            tests/libtest/Makefile \
3555            tests/unit/Makefile \
3556            packages/Makefile \
3557            packages/Win32/Makefile \
3558            packages/Win32/cygwin/Makefile \
3559            packages/Linux/Makefile \
3560            packages/Linux/RPM/Makefile \
3561            packages/Linux/RPM/curl.spec \
3562            packages/Linux/RPM/curl-ssl.spec \
3563            packages/Solaris/Makefile \
3564            packages/EPM/curl.list \
3565            packages/EPM/Makefile \
3566            packages/vms/Makefile \
3567            packages/AIX/Makefile \
3568            packages/AIX/RPM/Makefile \
3569            packages/AIX/RPM/curl.spec \
3570            curl-config \
3571            libcurl.pc
3572 ])
3573 AC_OUTPUT
3574
3575 CURL_GENERATE_CONFIGUREHELP_PM
3576
3577 AC_MSG_NOTICE([Configured to build curl/libcurl:
3578
3579   curl version:     ${CURLVERSION}
3580   Host setup:       ${host}
3581   Install prefix:   ${prefix}
3582   Compiler:         ${CC}
3583   SSL support:      ${curl_ssl_msg}
3584   SSH support:      ${curl_ssh_msg}
3585   zlib support:     ${curl_zlib_msg}
3586   krb4 support:     ${curl_krb4_msg}
3587   GSSAPI support:   ${curl_gss_msg}
3588   SPNEGO support:   ${curl_spnego_msg}
3589   TLS-SRP support:  ${curl_tls_srp_msg}
3590   resolver:         ${curl_res_msg}
3591   ipv6 support:     ${curl_ipv6_msg}
3592   IDN support:      ${curl_idn_msg}
3593   Build libcurl:    Shared=${enable_shared}, Static=${enable_static}
3594   Built-in manual:  ${curl_manual_msg}
3595   --libcurl option: ${curl_libcurl_msg}
3596   Verbose errors:   ${curl_verbose_msg}
3597   SSPI support:     ${curl_sspi_msg}
3598   ca cert bundle:   ${ca}
3599   ca cert path:     ${capath}
3600   LDAP support:     ${curl_ldap_msg}
3601   LDAPS support:    ${curl_ldaps_msg}
3602   RTSP support:     ${curl_rtsp_msg}
3603   RTMP support:     ${curl_rtmp_msg}
3604   metalink support: ${curl_mtlnk_msg}
3605   Protocols:        ${SUPPORT_PROTOCOLS}
3606 ])
3607
3608 if test "x$soname_bump" = "xyes"; then
3609
3610 cat <<EOM
3611   SONAME bump:     yes - WARNING: this library will be built with the SONAME
3612                    number bumped due to (a detected) ABI breakage.
3613                    See lib/README.curl_off_t for details on this.
3614 EOM
3615
3616 fi
3617