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