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