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