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