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