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