configure: check for long long when building with cyassl
[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 main()
1069 {
1070  if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
1071    exit(1);
1072  else
1073    exit(0);
1074 }
1075 ],
1076   AC_MSG_RESULT(yes)
1077   ipv6=yes,
1078   AC_MSG_RESULT(no)
1079   ipv6=no,
1080   AC_MSG_RESULT(no)
1081   ipv6=no
1082 ))
1083
1084 if test "$ipv6" = "yes"; then
1085   curl_ipv6_msg="enabled"
1086 fi
1087
1088 # Check if struct sockaddr_in6 have sin6_scope_id member
1089 if test "$ipv6" = yes; then
1090   AC_MSG_CHECKING([if struct sockaddr_in6 has sin6_scope_id member])
1091   AC_TRY_COMPILE([
1092 #include <sys/types.h>
1093 #include <netinet/in.h>] ,
1094   struct sockaddr_in6 s; s.sin6_scope_id = 0; , have_sin6_scope_id=yes)
1095   if test "$have_sin6_scope_id" = yes; then
1096     AC_MSG_RESULT([yes])
1097     AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID, 1, [Define to 1 if struct sockaddr_in6 has the sin6_scope_id member])
1098   else
1099     AC_MSG_RESULT([no])
1100   fi
1101 fi
1102
1103 dnl **********************************************************************
1104 dnl Check if the operating system allows programs to write to their own argv[]
1105 dnl **********************************************************************
1106
1107 AC_MSG_CHECKING([if argv can be written to])
1108 AC_RUN_IFELSE([
1109   AC_LANG_SOURCE([[
1110 int main(int argc, char ** argv) {
1111     argv[0][0] = ' ';
1112     return (argv[0][0] == ' ')?0:1;
1113 }
1114   ]])
1115 ],[
1116   curl_cv_writable_argv=yes
1117 ],[
1118   curl_cv_writable_argv=no
1119 ],[
1120   curl_cv_writable_argv=cross
1121 ])
1122 case $curl_cv_writable_argv in
1123 yes)
1124         AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv])
1125         AC_MSG_RESULT(yes)
1126         ;;
1127 no)
1128         AC_MSG_RESULT(no)
1129         ;;
1130 *)
1131         AC_MSG_RESULT(no)
1132         AC_MSG_WARN([the previous check could not be made default was used])
1133         ;;
1134 esac
1135
1136 dnl **********************************************************************
1137 dnl Check for FBopenssl(SPNEGO) libraries
1138 dnl **********************************************************************
1139
1140 AC_ARG_WITH(spnego,
1141   AC_HELP_STRING([--with-spnego=DIR],
1142                  [Specify location of SPNEGO library fbopenssl]), [
1143   SPNEGO_ROOT="$withval"
1144   if test x"$SPNEGO_ROOT" != xno; then
1145     want_spnego="yes"
1146   fi
1147 ])
1148
1149 AC_MSG_CHECKING([if SPNEGO support is requested])
1150 if test x"$want_spnego" = xyes; then
1151
1152   if test X"$SPNEGO_ROOT" = Xyes; then
1153      AC_MSG_ERROR([FBOpenSSL libs and/or directories were not found where specified!])
1154      AC_MSG_RESULT(no)
1155   else
1156      if test -z "$SPNEGO_LIB_DIR"; then
1157         LDFLAGS="$LDFLAGS -L$SPNEGO_ROOT -lfbopenssl"
1158      else
1159         LDFLAGS="$LDFLAGS $SPNEGO_LIB_DIR"
1160      fi
1161
1162      AC_MSG_RESULT(yes)
1163      AC_DEFINE(HAVE_SPNEGO, 1,
1164                [Define this if you have the SPNEGO library fbopenssl])
1165      curl_spnego_msg="enabled"
1166   fi
1167 else
1168   AC_MSG_RESULT(no)
1169 fi
1170
1171 dnl **********************************************************************
1172 dnl Check for GSS-API libraries
1173 dnl **********************************************************************
1174
1175 dnl check for gss stuff in the /usr as default
1176
1177 GSSAPI_ROOT="/usr"
1178 AC_ARG_WITH(gssapi-includes,
1179   AC_HELP_STRING([--with-gssapi-includes=DIR],
1180                  [Specify location of GSSAPI header]),
1181   [ GSSAPI_INCS="-I$withval"
1182     want_gss="yes" ]
1183 )
1184
1185 AC_ARG_WITH(gssapi-libs,
1186   AC_HELP_STRING([--with-gssapi-libs=DIR],
1187                  [Specify location of GSSAPI libs]),
1188   [ GSSAPI_LIB_DIR="-L$withval"
1189     want_gss="yes" ]
1190 )
1191
1192 AC_ARG_WITH(gssapi,
1193   AC_HELP_STRING([--with-gssapi=DIR],
1194                  [Where to look for GSSAPI]), [
1195   GSSAPI_ROOT="$withval"
1196   if test x"$GSSAPI_ROOT" != xno; then
1197     want_gss="yes"
1198     if test x"$GSSAPI_ROOT" = xyes; then
1199       dnl if yes, then use default root
1200       GSSAPI_ROOT="/usr"
1201     fi
1202   fi
1203 ])
1204
1205 save_CPPFLAGS="$CPPFLAGS"
1206 AC_MSG_CHECKING([if GSSAPI support is requested])
1207 if test x"$want_gss" = xyes; then
1208   AC_MSG_RESULT(yes)
1209
1210   if test -z "$GSSAPI_INCS"; then
1211      if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1212         GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
1213      elif test "$GSSAPI_ROOT" != "yes"; then
1214         GSSAPI_INCS="-I$GSSAPI_ROOT/include"
1215      fi
1216   fi
1217
1218   CPPFLAGS="$CPPFLAGS $GSSAPI_INCS"
1219
1220   AC_CHECK_HEADER(gss.h,
1221     [
1222       dnl found in the given dirs
1223       AC_DEFINE(HAVE_GSSGNU, 1, [if you have the GNU gssapi libraries])
1224       gnu_gss=yes
1225     ],
1226     [
1227       dnl not found, check Heimdal or MIT
1228       AC_CHECK_HEADERS([gssapi/gssapi.h], [], [not_mit=1])
1229       AC_CHECK_HEADERS(
1230         [gssapi/gssapi_generic.h gssapi/gssapi_krb5.h],
1231         [],
1232         [not_mit=1],
1233         [
1234 AC_INCLUDES_DEFAULT
1235 #ifdef HAVE_GSSAPI_GSSAPI_H
1236 #include <gssapi/gssapi.h>
1237 #endif
1238         ])
1239       if test "x$not_mit" = "x1"; then
1240         dnl MIT not found, check for Heimdal
1241         AC_CHECK_HEADER(gssapi.h,
1242             [
1243               dnl found
1244               AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have the Heimdal gssapi libraries])
1245             ],
1246             [
1247               dnl no header found, disabling GSS
1248               want_gss=no
1249               AC_MSG_WARN(disabling GSSAPI since no header files was found)
1250             ]
1251           )
1252       else
1253         dnl MIT found
1254         AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
1255         dnl check if we have a really old MIT kerberos (<= 1.2)
1256         AC_MSG_CHECKING([if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE])
1257         AC_COMPILE_IFELSE([
1258           AC_LANG_PROGRAM([[
1259 #include <gssapi/gssapi.h>
1260 #include <gssapi/gssapi_generic.h>
1261 #include <gssapi/gssapi_krb5.h>
1262           ]],[[
1263             gss_import_name(
1264                             (OM_uint32 *)0,
1265                             (gss_buffer_t)0,
1266                             GSS_C_NT_HOSTBASED_SERVICE,
1267                             (gss_name_t *)0);
1268           ]])
1269         ],[
1270           AC_MSG_RESULT([yes])
1271         ],[
1272           AC_MSG_RESULT([no])
1273           AC_DEFINE(HAVE_OLD_GSSMIT, 1,
1274             [if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE])
1275         ])
1276       fi
1277     ]
1278   )
1279 else
1280   AC_MSG_RESULT(no)
1281 fi
1282 if test x"$want_gss" = xyes; then
1283   AC_DEFINE(HAVE_GSSAPI, 1, [if you have the gssapi libraries])
1284
1285   curl_gss_msg="enabled (MIT/Heimdal)"
1286
1287   if test -n "$gnu_gss"; then
1288     curl_gss_msg="enabled (GNU GSS)"
1289     LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1290     LIBS="-lgss $LIBS"
1291   elif test -z "$GSSAPI_LIB_DIR"; then
1292      case $host in
1293      *-*-darwin*)
1294         LIBS="-lgssapi_krb5 -lresolv $LIBS"
1295         ;;
1296      *)
1297         if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
1298            dnl krb5-config doesn't have --libs-only-L or similar, put everything
1299            dnl into LIBS
1300            gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
1301            LIBS="$gss_libs $LIBS"
1302         elif test "$GSSAPI_ROOT" != "yes"; then
1303            LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
1304            LIBS="-lgssapi $LIBS"
1305         else
1306            LIBS="-lgssapi $LIBS"
1307         fi
1308         ;;
1309      esac
1310   else
1311      LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
1312      LIBS="-lgssapi $LIBS"
1313   fi
1314 else
1315   CPPFLAGS="$save_CPPFLAGS"
1316 fi
1317
1318 dnl -------------------------------------------------
1319 dnl check winssl option before other SSL libraries
1320 dnl -------------------------------------------------
1321
1322 OPT_WINSSL=no
1323 AC_ARG_WITH(winssl,dnl
1324 AC_HELP_STRING([--with-winssl],[enable Windows native SSL/TLS])
1325 AC_HELP_STRING([--without-winssl], [disable Windows native SSL/TLS]),
1326   OPT_WINSSL=$withval)
1327
1328 AC_MSG_CHECKING([whether to enable Windows native SSL/TLS (Windows native builds only)])
1329 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1330   if test "x$OPT_WINSSL" != "xno"  &&
1331      test "x$ac_cv_native_windows" = "xyes"; then
1332     AC_MSG_RESULT(yes)
1333     AC_DEFINE(USE_SCHANNEL, 1, [to enable Windows native SSL/TLS support])
1334     AC_SUBST(USE_SCHANNEL, [1])
1335     curl_ssl_msg="enabled (Windows-native)"
1336     WINSSL_ENABLED=1
1337     # --with-winssl implies --enable-sspi
1338     AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
1339     AC_SUBST(USE_WINDOWS_SSPI, [1])
1340     curl_sspi_msg="enabled"
1341   else
1342     AC_MSG_RESULT(no)
1343   fi
1344 else
1345   AC_MSG_RESULT(no)
1346 fi
1347
1348 OPT_DARWINSSL=no
1349 AC_ARG_WITH(darwinssl,dnl
1350 AC_HELP_STRING([--with-darwinssl],[enable iOS/Mac OS X native SSL/TLS])
1351 AC_HELP_STRING([--without-darwinssl], [disable iOS/Mac OS X native SSL/TLS]),
1352   OPT_DARWINSSL=$withval)
1353
1354 AC_MSG_CHECKING([whether to enable iOS/Mac OS X native SSL/TLS])
1355 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1356   if test "x$OPT_DARWINSSL" != "xno" &&
1357      test -d "/System/Library/Frameworks/Security.framework"; then
1358     AC_MSG_RESULT(yes)
1359     AC_DEFINE(USE_DARWINSSL, 1, [to enable iOS/Mac OS X native SSL/TLS support])
1360     AC_SUBST(USE_DARWINSSL, [1])
1361     curl_ssl_msg="enabled (iOS/Mac OS X-native)"
1362     DARWINSSL_ENABLED=1
1363     LDFLAGS="$LDFLAGS -framework CoreFoundation -framework Security"
1364   else
1365     AC_MSG_RESULT(no)
1366   fi
1367 else
1368   AC_MSG_RESULT(no)
1369 fi
1370
1371 dnl **********************************************************************
1372 dnl Check for the presence of SSL libraries and headers
1373 dnl **********************************************************************
1374
1375 dnl Default to compiler & linker defaults for SSL files & libraries.
1376 OPT_SSL=off
1377 dnl Default to no CA bundle
1378 ca="no"
1379 AC_ARG_WITH(ssl,dnl
1380 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])
1381 AC_HELP_STRING([--without-ssl], [disable OpenSSL]),
1382   OPT_SSL=$withval)
1383
1384 if test "$curl_ssl_msg" = "$init_ssl_msg" && test X"$OPT_SSL" != Xno; then
1385   dnl backup the pre-ssl variables
1386   CLEANLDFLAGS="$LDFLAGS"
1387   CLEANCPPFLAGS="$CPPFLAGS"
1388   CLEANLIBS="$LIBS"
1389
1390   case "$OPT_SSL" in
1391   yes)
1392     dnl --with-ssl (without path) used
1393     if test x$cross_compiling != xyes; then
1394       dnl only do pkg-config magic when not cross-compiling
1395       PKGTEST="yes"
1396     fi
1397     PREFIX_OPENSSL=/usr/local/ssl
1398     LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1399     ;;
1400   off)
1401     dnl no --with-ssl option given, just check default places
1402     if test x$cross_compiling != xyes; then
1403       dnl only do pkg-config magic when not cross-compiling
1404       PKGTEST="yes"
1405     fi
1406     PREFIX_OPENSSL=
1407     ;;
1408   *)
1409     dnl check the given --with-ssl spot
1410     PKGTEST="no"
1411     PREFIX_OPENSSL=$OPT_SSL
1412
1413     dnl Try pkg-config even when cross-compiling.  Since we
1414     dnl specify PKG_CONFIG_LIBDIR we're only looking where
1415     dnl the user told us to look
1416     OPENSSL_PCDIR="$OPT_SSL/lib/pkgconfig"
1417     AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$OPENSSL_PCDIR"])
1418     if test -f "$OPENSSL_PCDIR/openssl.pc"; then
1419       PKGTEST="yes"
1420     fi
1421
1422     dnl in case pkg-config comes up empty, use what we got
1423     dnl via --with-ssl
1424     LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
1425     if test "$PREFIX_OPENSSL" != "/usr" ; then
1426       SSL_LDFLAGS="-L$LIB_OPENSSL"
1427       SSL_CPPFLAGS="-I$PREFIX_OPENSSL/include"
1428     fi
1429     SSL_CPPFLAGS="$SSL_CPPFLAGS -I$PREFIX_OPENSSL/include/openssl"
1430     ;;
1431   esac
1432
1433   if test "$PKGTEST" = "yes"; then
1434
1435     CURL_CHECK_PKGCONFIG(openssl, [$OPENSSL_PCDIR])
1436
1437     if test "$PKGCONFIG" != "no" ; then
1438       SSL_LIBS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1439         $PKGCONFIG --libs-only-l openssl 2>/dev/null`
1440
1441       SSL_LDFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1442         $PKGCONFIG --libs-only-L openssl 2>/dev/null`
1443
1444       SSL_CPPFLAGS=`CURL_EXPORT_PCDIR([$OPENSSL_PCDIR]) dnl
1445         $PKGCONFIG --cflags-only-I openssl 2>/dev/null`
1446
1447       AC_MSG_NOTICE([pkg-config: SSL_LIBS: "$SSL_LIBS"])
1448       AC_MSG_NOTICE([pkg-config: SSL_LDFLAGS: "$SSL_LDFLAGS"])
1449       AC_MSG_NOTICE([pkg-config: SSL_CPPFLAGS: "$SSL_CPPFLAGS"])
1450
1451       LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/-L//g'`
1452
1453       dnl use the values pkg-config reported.  This is here
1454       dnl instead of below with CPPFLAGS and LDFLAGS because we only
1455       dnl learn about this via pkg-config.  If we only have
1456       dnl the argument to --with-ssl we don't know what
1457       dnl additional libs may be necessary.  Hope that we
1458       dnl don't need any.
1459       LIBS="$SSL_LIBS $LIBS"
1460     fi
1461   fi
1462
1463   dnl finally, set flags to use SSL
1464   CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
1465   LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
1466
1467   dnl This is for Msys/Mingw
1468   case $host in
1469     *-*-msys* | *-*-mingw*)
1470       AC_MSG_CHECKING([for gdi32])
1471       my_ac_save_LIBS=$LIBS
1472       LIBS="-lgdi32 $LIBS"
1473       AC_TRY_LINK([#include <windef.h>
1474                    #include <wingdi.h>],
1475                    [GdiFlush();],
1476                    [ dnl worked!
1477                    AC_MSG_RESULT([yes])],
1478                    [ dnl failed, restore LIBS
1479                    LIBS=$my_ac_save_LIBS
1480                    AC_MSG_RESULT(no)]
1481                   )
1482       ;;
1483   esac
1484
1485   AC_CHECK_LIB(crypto, CRYPTO_lock,[
1486      HAVECRYPTO="yes"
1487      LIBS="-lcrypto $LIBS"
1488      ],[
1489      LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL"
1490      CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include"
1491      AC_CHECK_LIB(crypto, CRYPTO_add_lock,[
1492        HAVECRYPTO="yes"
1493        LIBS="-lcrypto $LIBS"], [
1494        LDFLAGS="$CLEANLDFLAGS"
1495        CPPFLAGS="$CLEANCPPFLAGS"
1496        LIBS="$CLEANLIBS"
1497        ])
1498     ])
1499
1500
1501   if test X"$HAVECRYPTO" = X"yes"; then
1502     dnl This is only reasonable to do if crypto actually is there: check for
1503     dnl SSL libs NOTE: it is important to do this AFTER the crypto lib
1504
1505     AC_CHECK_LIB(ssl, SSL_connect)
1506
1507     if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1508         dnl we didn't find the SSL lib, try the RSAglue/rsaref stuff
1509         AC_MSG_CHECKING(for ssl with RSAglue/rsaref libs in use);
1510         OLIBS=$LIBS
1511         LIBS="-lRSAglue -lrsaref $LIBS"
1512         AC_CHECK_LIB(ssl, SSL_connect)
1513         if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
1514             dnl still no SSL_connect
1515             AC_MSG_RESULT(no)
1516             LIBS=$OLIBS
1517         else
1518             AC_MSG_RESULT(yes)
1519         fi
1520
1521     else
1522
1523       dnl Have the libraries--check for SSLeay/OpenSSL headers
1524       AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
1525                        openssl/pem.h openssl/ssl.h openssl/err.h,
1526         curl_ssl_msg="enabled (OpenSSL)"
1527         OPENSSL_ENABLED=1
1528         AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]))
1529
1530       if test $ac_cv_header_openssl_x509_h = no; then
1531         dnl we don't use the "action" part of the AC_CHECK_HEADERS macro
1532         dnl since 'err.h' might in fact find a krb4 header with the same
1533         dnl name
1534         AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h)
1535
1536         if test $ac_cv_header_x509_h = yes &&
1537            test $ac_cv_header_crypto_h = yes &&
1538            test $ac_cv_header_ssl_h = yes; then
1539           dnl three matches
1540           curl_ssl_msg="enabled (OpenSSL)"
1541           OPENSSL_ENABLED=1
1542         fi
1543       fi
1544     fi
1545
1546     if test X"$OPENSSL_ENABLED" = X"1"; then
1547        AC_DEFINE(USE_SSLEAY, 1, [if SSL is enabled])
1548
1549        dnl is there a pkcs12.h header present?
1550        AC_CHECK_HEADERS(openssl/pkcs12.h)
1551     else
1552        LIBS="$CLEANLIBS"
1553     fi
1554     dnl USE_SSLEAY is the historical name for what configure calls
1555     dnl OPENSSL_ENABLED; the names should really be unified
1556     USE_SSLEAY="$OPENSSL_ENABLED"
1557     AC_SUBST(USE_SSLEAY)
1558
1559     if test X"$OPT_SSL" != Xoff &&
1560        test "$OPENSSL_ENABLED" != "1"; then
1561       AC_MSG_ERROR([OpenSSL libs and/or directories were not found where specified!])
1562     fi
1563   fi
1564
1565   if test X"$OPENSSL_ENABLED" = X"1"; then
1566     dnl If the ENGINE library seems to be around, check for the OpenSSL engine
1567     dnl stuff, it is kind of "separated" from the main SSL check
1568     AC_CHECK_FUNC(ENGINE_init,
1569               [
1570                 AC_CHECK_HEADERS(openssl/engine.h)
1571                 AC_CHECK_FUNCS( ENGINE_load_builtin_engines )
1572               ])
1573
1574     dnl these can only exist if openssl exists
1575     dnl yassl doesn't have SSL_get_shutdown
1576
1577     AC_CHECK_FUNCS( RAND_status \
1578                     RAND_screen \
1579                     RAND_egd \
1580                     ENGINE_cleanup \
1581                     CRYPTO_cleanup_all_ex_data \
1582                     SSL_get_shutdown \
1583                     SSLv2_client_method )
1584
1585     dnl Make an attempt to detect if this is actually yassl's headers and
1586     dnl OpenSSL emulation layer. We still leave everything else believing
1587     dnl and acting like OpenSSL.
1588
1589     AC_MSG_CHECKING([for yaSSL using OpenSSL compatibility mode])
1590     AC_COMPILE_IFELSE([
1591       AC_LANG_PROGRAM([[
1592 #include <openssl/ssl.h>
1593       ]],[[
1594 #if defined(YASSL_VERSION) && defined(OPENSSL_VERSION_NUMBER)
1595         int dummy = SSL_ERROR_NONE;
1596 #else
1597         Not the yaSSL OpenSSL compatibility header.
1598 #endif
1599       ]])
1600     ],[
1601       AC_MSG_RESULT([yes])
1602       AC_DEFINE_UNQUOTED(USE_YASSLEMUL, 1,
1603         [Define to 1 if using yaSSL in OpenSSL compatibility mode.])
1604       curl_ssl_msg="enabled (OpenSSL emulation by yaSSL)"
1605     ],[
1606       AC_MSG_RESULT([no])
1607     ])
1608   fi
1609
1610   if test "$OPENSSL_ENABLED" = "1"; then
1611     if test -n "$LIB_OPENSSL"; then
1612        dnl when the ssl shared libs were found in a path that the run-time
1613        dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
1614        dnl to prevent further configure tests to fail due to this
1615        if test "x$cross_compiling" != "xyes"; then
1616          LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_OPENSSL"
1617          export LD_LIBRARY_PATH
1618          AC_MSG_NOTICE([Added $LIB_OPENSSL to LD_LIBRARY_PATH])
1619        fi
1620     fi
1621     CURL_CHECK_OPENSSL_API
1622   fi
1623
1624 fi
1625
1626 dnl **********************************************************************
1627 dnl Check for the random seed preferences
1628 dnl **********************************************************************
1629
1630 if test X"$OPENSSL_ENABLED" = X"1"; then
1631   AC_ARG_WITH(egd-socket,
1632   AC_HELP_STRING([--with-egd-socket=FILE],
1633                  [Entropy Gathering Daemon socket pathname]),
1634       [ EGD_SOCKET="$withval" ]
1635   )
1636   if test -n "$EGD_SOCKET" ; then
1637           AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET",
1638           [your Entropy Gathering Daemon socket pathname] )
1639   fi
1640
1641   dnl Check for user-specified random device
1642   AC_ARG_WITH(random,
1643   AC_HELP_STRING([--with-random=FILE],
1644                  [read randomness from FILE (default=/dev/urandom)]),
1645       [ RANDOM_FILE="$withval" ],
1646       [
1647           if test x$cross_compiling != xyes; then
1648             dnl Check for random device
1649             AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
1650           else
1651             AC_MSG_WARN([skipped the /dev/urandom detection when cross-compiling])
1652           fi
1653       ]
1654   )
1655   if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
1656           AC_SUBST(RANDOM_FILE)
1657           AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
1658           [a suitable file to read random data from])
1659   fi
1660 fi
1661
1662 dnl ---
1663 dnl We require OpenSSL with SRP support.
1664 dnl ---
1665 if test "$OPENSSL_ENABLED" = "1"; then
1666   AC_CHECK_LIB(crypto, SRP_Calc_client_key,
1667    [
1668      AC_DEFINE(HAVE_SSLEAY_SRP, 1, [if you have the function SRP_Calc_client_key])
1669      AC_SUBST(HAVE_SSLEAY_SRP, [1])
1670    ])
1671 fi
1672
1673 dnl ----------------------------------------------------
1674 dnl check for GnuTLS
1675 dnl ----------------------------------------------------
1676
1677 dnl Default to compiler & linker defaults for GnuTLS files & libraries.
1678 OPT_GNUTLS=no
1679
1680 AC_ARG_WITH(gnutls,dnl
1681 AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root])
1682 AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]),
1683   OPT_GNUTLS=$withval)
1684
1685 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1686
1687   if test X"$OPT_GNUTLS" != Xno; then
1688
1689     addld=""
1690     addlib=""
1691     gtlslib=""
1692     version=""
1693     addcflags=""
1694
1695     if test "x$OPT_GNUTLS" = "xyes"; then
1696       dnl this is with no partiular path given
1697       CURL_CHECK_PKGCONFIG(gnutls)
1698
1699       if test "$PKGCONFIG" != "no" ; then
1700         addlib=`$PKGCONFIG --libs-only-l gnutls`
1701         addld=`$PKGCONFIG --libs-only-L gnutls`
1702         addcflags=`$PKGCONFIG --cflags-only-I gnutls`
1703         version=`$PKGCONFIG --modversion gnutls`
1704         gtlslib=`echo $addld | $SED -e 's/-L//'`
1705       else
1706         dnl without pkg-config, we try libgnutls-config as that was how it
1707         dnl used to be done
1708         check=`libgnutls-config --version 2>/dev/null`
1709         if test -n "$check"; then
1710           addlib=`libgnutls-config --libs`
1711           addcflags=`libgnutls-config --cflags`
1712           version=`libgnutls-config --version`
1713           gtlslib=`libgnutls-config --prefix`/lib$libsuff
1714         fi
1715       fi
1716     else
1717       dnl this is with a given path, first check if there's a libgnutls-config
1718       dnl there and if not, make an educated guess
1719       cfg=$OPT_GNUTLS/bin/libgnutls-config
1720       check=`$cfg --version 2>/dev/null`
1721       if test -n "$check"; then
1722         addlib=`$cfg --libs`
1723         addcflags=`$cfg --cflags`
1724         version=`$cfg --version`
1725         gtlslib=`$cfg --prefix`/lib$libsuff
1726       else
1727         dnl without pkg-config and libgnutls-config, we guess a lot!
1728         addlib=-lgnutls
1729         addld=-L$OPT_GNUTLS/lib$libsuff
1730         addcflags=-I$OPT_GNUTLS/include
1731         version="" # we just don't know
1732         gtlslib=$OPT_GNUTLS/lib$libsuff
1733       fi
1734     fi
1735
1736     if test -z "$version"; then
1737       dnl lots of efforts, still no go
1738       version="unknown"
1739     fi
1740
1741     if test -n "$addlib"; then
1742
1743       CLEANLIBS="$LIBS"
1744       CLEANCPPFLAGS="$CPPFLAGS"
1745       CLEANLDFLAGS="$LDFLAGS"
1746
1747       LIBS="$addlib $LIBS"
1748       LDFLAGS="$LDFLAGS $addld"
1749       if test "$addcflags" != "-I/usr/include"; then
1750          CPPFLAGS="$CPPFLAGS $addcflags"
1751       fi
1752
1753       AC_CHECK_LIB(gnutls, gnutls_check_version,
1754        [
1755        AC_DEFINE(USE_GNUTLS, 1, [if GnuTLS is enabled])
1756        AC_SUBST(USE_GNUTLS, [1])
1757        GNUTLS_ENABLED=1
1758        USE_GNUTLS="yes"
1759        curl_ssl_msg="enabled (GnuTLS)"
1760        ],
1761        [
1762          LIBS="$CLEANLIBS"
1763          CPPFLAGS="$CLEANCPPFLAGS"
1764        ])
1765
1766       if test "x$USE_GNUTLS" = "xyes"; then
1767         AC_MSG_NOTICE([detected GnuTLS version $version])
1768
1769         if test -n "$gtlslib"; then
1770           dnl when shared libs were found in a path that the run-time
1771           dnl linker doesn't search through, we need to add it to
1772           dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1773           dnl due to this
1774           if test "x$cross_compiling" != "xyes"; then 
1775             LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlslib"
1776             export LD_LIBRARY_PATH
1777             AC_MSG_NOTICE([Added $gtlslib to LD_LIBRARY_PATH])
1778           fi
1779         fi
1780       fi
1781
1782     fi
1783
1784   fi dnl GNUTLS not disabled
1785
1786 fi
1787
1788 dnl ---
1789 dnl Check which crypto backend GnuTLS uses
1790 dnl ---
1791
1792 if test "$GNUTLS_ENABLED" = "1"; then
1793   USE_GNUTLS_NETTLE=
1794   # First check if we can detect either crypto library via transitive linking
1795   AC_CHECK_LIB(gnutls, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1796   if test "$USE_GNUTLS_NETTLE" = ""; then
1797     AC_CHECK_LIB(gnutls, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1798   fi
1799   # If not, try linking directly to both of them to see if they are available
1800   if test "$USE_GNUTLS_NETTLE" = ""; then
1801     AC_CHECK_LIB(nettle, nettle_MD5Init, [ USE_GNUTLS_NETTLE=1 ])
1802   fi
1803   if test "$USE_GNUTLS_NETTLE" = ""; then
1804     AC_CHECK_LIB(gcrypt, gcry_control, [ USE_GNUTLS_NETTLE=0 ])
1805   fi
1806   if test "$USE_GNUTLS_NETTLE" = ""; then
1807     AC_MSG_ERROR([GnuTLS found, but neither gcrypt nor nettle found])
1808   fi
1809   if test "$USE_GNUTLS_NETTLE" = "1"; then
1810     AC_DEFINE(USE_GNUTLS_NETTLE, 1, [if GnuTLS uses nettle as crypto backend])
1811     AC_SUBST(USE_GNUTLS_NETTLE, [1])
1812     LIBS="-lnettle $LIBS"
1813   else
1814     LIBS="-lgcrypt $LIBS"
1815   fi
1816 fi
1817
1818 dnl ---
1819 dnl We require GnuTLS with SRP support.
1820 dnl ---
1821 if test "$GNUTLS_ENABLED" = "1"; then
1822   AC_CHECK_LIB(gnutls, gnutls_srp_verifier,
1823    [
1824      AC_DEFINE(HAVE_GNUTLS_SRP, 1, [if you have the function gnutls_srp_verifier])
1825      AC_SUBST(HAVE_GNUTLS_SRP, [1])
1826    ])
1827 fi
1828
1829 dnl ----------------------------------------------------
1830 dnl check for PolarSSL
1831 dnl ----------------------------------------------------
1832
1833 dnl Default to compiler & linker defaults for PolarSSL files & libraries.
1834 OPT_POLARSSL=no
1835
1836 _cppflags=$CPPFLAGS
1837 _ldflags=$LDFLAGS
1838 AC_ARG_WITH(polarssl,dnl
1839 AC_HELP_STRING([--with-polarssl=PATH],[where to look for PolarSSL, PATH points to the installation root])
1840 AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]),
1841   OPT_POLARSSL=$withval)
1842
1843 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1844
1845   if test X"$OPT_POLARSSL" != Xno; then
1846
1847     if test "$OPT_POLARSSL" = "yes"; then
1848       OPT_POLARSSL=""
1849     fi
1850
1851     if test -z "$OPT_POLARSSL" ; then
1852       dnl check for lib first without setting any new path
1853
1854       AC_CHECK_LIB(polarssl, havege_init,
1855       dnl libpolarssl found, set the variable
1856        [
1857          AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1858          AC_SUBST(USE_POLARSSL, [1])
1859          POLARSSL_ENABLED=1
1860          USE_POLARSSL="yes"
1861          curl_ssl_msg="enabled (PolarSSL)"
1862         ])
1863     fi
1864
1865     addld=""
1866     addlib=""
1867     addcflags=""
1868     polarssllib=""
1869
1870     if test "x$USE_POLARSSL" != "xyes"; then
1871       dnl add the path and test again
1872       addld=-L$OPT_POLARSSL/lib$libsuff
1873       addcflags=-I$OPT_POLARSSL/include
1874       polarssllib=$OPT_POLARSSL/lib$libsuff
1875
1876       LDFLAGS="$LDFLAGS $addld"
1877       if test "$addcflags" != "-I/usr/include"; then
1878          CPPFLAGS="$CPPFLAGS $addcflags"
1879       fi
1880
1881       AC_CHECK_LIB(polarssl, ssl_init,
1882        [
1883        AC_DEFINE(USE_POLARSSL, 1, [if PolarSSL is enabled])
1884        AC_SUBST(USE_POLARSSL, [1])
1885        POLARSSL_ENABLED=1
1886        USE_POLARSSL="yes"
1887        curl_ssl_msg="enabled (PolarSSL)"
1888        ],
1889        [
1890          CPPFLAGS=$_cppflags
1891          LDFLAGS=$_ldflags
1892        ])
1893     fi
1894
1895     if test "x$USE_POLARSSL" = "xyes"; then
1896       AC_MSG_NOTICE([detected PolarSSL])
1897
1898       LIBS="-lpolarssl $LIBS"
1899
1900       if test -n "$polarssllib"; then
1901         dnl when shared libs were found in a path that the run-time
1902         dnl linker doesn't search through, we need to add it to
1903         dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1904         dnl due to this
1905         if test "x$cross_compiling" != "xyes"; then
1906           LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$polarssllib"
1907           export LD_LIBRARY_PATH
1908           AC_MSG_NOTICE([Added $polarssllib to LD_LIBRARY_PATH])
1909         fi
1910       fi
1911     fi
1912
1913   fi dnl PolarSSL not disabled
1914
1915 fi
1916
1917 dnl ----------------------------------------------------
1918 dnl check for CyaSSL
1919 dnl ----------------------------------------------------
1920
1921 dnl Default to compiler & linker defaults for CyaSSL files & libraries.
1922 OPT_CYASSL=no
1923
1924 _cppflags=$CPPFLAGS
1925 _ldflags=$LDFLAGS
1926 AC_ARG_WITH(cyassl,dnl
1927 AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to the installation root (default: system lib default)])
1928 AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
1929   OPT_CYASSL=$withval)
1930
1931 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
1932
1933   if test X"$OPT_CYASSL" != Xno; then
1934
1935     if test "$OPT_CYASSL" = "yes"; then
1936       OPT_CYASSL=""
1937     fi
1938
1939     if test -z "$OPT_CYASSL" ; then
1940       dnl check for lib in system default first
1941
1942       AC_CHECK_LIB(cyassl, CyaSSL_Init,
1943       dnl libcyassl found, set the variable
1944        [
1945          AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
1946          AC_SUBST(USE_CYASSL, [1])
1947          CYASSL_ENABLED=1
1948          USE_CYASSL="yes"
1949          curl_ssl_msg="enabled (CyaSSL)"
1950         ])
1951     fi
1952
1953     addld=""
1954     addlib=""
1955     addcflags=""
1956     cyassllib=""
1957
1958     if test "x$USE_CYASSL" != "xyes"; then
1959       dnl add the path and test again
1960       addld=-L$OPT_CYASSL/lib$libsuff
1961       addcflags=-I$OPT_CYASSL/include
1962       cyassllib=$OPT_CYASSL/lib$libsuff
1963
1964       LDFLAGS="$LDFLAGS $addld"
1965       if test "$addcflags" != "-I/usr/include"; then
1966          CPPFLAGS="$CPPFLAGS $addcflags"
1967       fi
1968
1969       AC_CHECK_LIB(cyassl, CyaSSL_Init,
1970        [
1971        AC_DEFINE(USE_CYASSL, 1, [if CyaSSL is enabled])
1972        AC_SUBST(USE_CYASSL, [1])
1973        CYASSL_ENABLED=1
1974        USE_CYASSL="yes"
1975        curl_ssl_msg="enabled (CyaSSL)"
1976        ],
1977        [
1978          CPPFLAGS=$_cppflags
1979          LDFLAGS=$_ldflags
1980        ])
1981     fi
1982
1983     if test "x$USE_CYASSL" = "xyes"; then
1984       AC_MSG_NOTICE([detected CyaSSL])
1985
1986       dnl cyassl/ctaocrypt/types.h needs SIZEOF_LONG_LONG defined!
1987       AC_CHECK_SIZEOF(long long)
1988
1989       LIBS="-lcyassl -lm $LIBS"
1990
1991       if test -n "$cyassllib"; then
1992         dnl when shared libs were found in a path that the run-time
1993         dnl linker doesn't search through, we need to add it to
1994         dnl LD_LIBRARY_PATH to prevent further configure tests to fail
1995         dnl due to this
1996         if test "x$cross_compiling" != "xyes"; then
1997           LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$cyassllib"
1998           export LD_LIBRARY_PATH
1999           AC_MSG_NOTICE([Added $cyassllib to LD_LIBRARY_PATH])
2000         fi
2001       fi
2002
2003     fi
2004
2005   fi dnl CyaSSL not disabled
2006
2007 fi
2008
2009 dnl ----------------------------------------------------
2010 dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
2011 dnl ----------------------------------------------------
2012
2013 dnl Default to compiler & linker defaults for NSS files & libraries.
2014 OPT_NSS=no
2015
2016 AC_ARG_WITH(nss,dnl
2017 AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root])
2018 AC_HELP_STRING([--without-nss], [disable NSS detection]),
2019   OPT_NSS=$withval)
2020
2021 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2022
2023   if test X"$OPT_NSS" != Xno; then
2024
2025     addld=""
2026     addlib=""
2027     addcflags=""
2028     nssprefix=""
2029     version=""
2030
2031     if test "x$OPT_NSS" = "xyes"; then
2032
2033       CURL_CHECK_PKGCONFIG(nss)
2034
2035       if test "$PKGCONFIG" != "no" ; then
2036         addlib=`$PKGCONFIG --libs nss`
2037         addcflags=`$PKGCONFIG --cflags nss`
2038         version=`$PKGCONFIG --modversion nss`
2039         nssprefix=`$PKGCONFIG --variable=prefix nss`
2040       else
2041         dnl Without pkg-config, we check for nss-config
2042
2043         check=`nss-config --version 2>/dev/null`
2044         if test -n "$check"; then
2045           addlib=`nss-config --libs`
2046           addcflags=`nss-config --cflags`
2047           version=`nss-config --version`
2048           nssprefix=`nss-config --prefix`
2049         else
2050           addlib="-lnss3"
2051           addcflags=""
2052           version="unknown"
2053         fi
2054       fi
2055     else
2056         # Without pkg-config, we'll kludge in some defaults
2057         addlib="-L$OPT_NSS/lib -lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
2058         addcflags="-I$OPT_NSS/include"
2059         version="unknown"
2060         nssprefix=$OPT_NSS
2061     fi
2062
2063     if test -n "$addlib"; then
2064
2065       CLEANLIBS="$LIBS"
2066       CLEANCPPFLAGS="$CPPFLAGS"
2067
2068       LIBS="$addlib $LIBS"
2069       if test "$addcflags" != "-I/usr/include"; then
2070          CPPFLAGS="$CPPFLAGS $addcflags"
2071       fi
2072
2073       dnl The function PK11_CreateGenericObject is needed to load libnsspem.so
2074       AC_CHECK_LIB(nss3, PK11_CreateGenericObject,
2075        [
2076        AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
2077        AC_SUBST(USE_NSS, [1])
2078        USE_NSS="yes"
2079        NSS_ENABLED=1
2080        curl_ssl_msg="enabled (NSS)"
2081        ],
2082        [
2083          LIBS="$CLEANLIBS"
2084          CPPFLAGS="$CLEANCPPFLAGS"
2085        ])
2086
2087       if test "x$USE_NSS" = "xyes"; then
2088         AC_MSG_NOTICE([detected NSS version $version])
2089
2090         dnl NSS_InitContext() was introduced in NSS 3.12.5 and helps to prevent
2091         dnl collisions on NSS initialization/shutdown with other libraries
2092         AC_CHECK_FUNC(NSS_InitContext,
2093         [
2094           AC_DEFINE(HAVE_NSS_INITCONTEXT, 1, [if you have the NSS_InitContext function])
2095           AC_SUBST(HAVE_NSS_INITCONTEXT, [1])
2096         ])
2097
2098         dnl when shared libs were found in a path that the run-time
2099         dnl linker doesn't search through, we need to add it to
2100         dnl LD_LIBRARY_PATH to prevent further configure tests to fail
2101         dnl due to this
2102         if test "x$cross_compiling" != "xyes"; then
2103           LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
2104           export LD_LIBRARY_PATH
2105           AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
2106         fi
2107       fi
2108
2109     fi
2110
2111   fi dnl NSS not disabled
2112
2113 fi dnl curl_ssl_msg = init_ssl_msg
2114
2115 OPT_AXTLS=off
2116
2117 AC_ARG_WITH(axtls,dnl
2118 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.])
2119 AC_HELP_STRING([--without-axtls], [disable axTLS]),
2120   OPT_AXTLS=$withval)
2121
2122 if test "$curl_ssl_msg" = "$init_ssl_msg"; then
2123   if test X"$OPT_AXTLS" != Xno; then
2124     dnl backup the pre-axtls variables
2125     CLEANLDFLAGS="$LDFLAGS"
2126     CLEANCPPFLAGS="$CPPFLAGS"
2127     CLEANLIBS="$LIBS"
2128
2129     case "$OPT_AXTLS" in
2130     yes)
2131       dnl --with-axtls (without path) used
2132       PREFIX_AXTLS=/usr/local
2133       LIB_AXTLS="$PREFIX_AXTLS/lib"
2134       LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2135       CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2136       ;;
2137     off)
2138       dnl no --with-axtls option given, just check default places
2139       PREFIX_AXTLS=
2140       ;;
2141     *)
2142       dnl check the given --with-axtls spot
2143       PREFIX_AXTLS=$OPT_AXTLS
2144       LIB_AXTLS="$PREFIX_AXTLS/lib"
2145       LDFLAGS="$LDFLAGS -L$LIB_AXTLS"
2146       CPPFLAGS="$CPPFLAGS -I$PREFIX_AXTLS/include"
2147       ;;
2148     esac
2149
2150     AC_CHECK_LIB(axtls, ssl_version,[
2151       LIBS="-laxtls $LIBS"
2152       AC_DEFINE(USE_AXTLS, 1, [if axTLS is enabled])
2153       AC_SUBST(USE_AXTLS, [1])
2154       AXTLS_ENABLED=1
2155       USE_AXTLS="yes"
2156       curl_ssl_msg="enabled (axTLS)"
2157
2158
2159       LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_AXTLS"
2160       export LD_LIBRARY_PATH
2161       AC_MSG_NOTICE([Added $LIB_AXTLS to LD_LIBRARY_PATH])
2162       ],[
2163       LDFLAGS="$CLEANLDFLAGS"
2164       CPPFLAGS="$CLEANCPPFLAGS"
2165       LIBS="$CLEANLIBS"
2166     ])
2167   fi
2168 fi
2169
2170 if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED$POLARSSL_ENABLED$AXTLS_ENABLED$CYASSL_ENABLED$WINSSL_ENABLED$DARWINSSL_ENABLED" = "x"; then
2171   AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
2172   AC_MSG_WARN([Use --with-ssl, --with-gnutls, --with-polarssl, --with-cyassl, --with-nss, --with-axtls, --with-winssl, or --with-darwinssl to address this.])
2173 else
2174   # SSL is enabled, genericly
2175   AC_SUBST(SSL_ENABLED)
2176   SSL_ENABLED="1"
2177 fi
2178
2179 dnl **********************************************************************
2180 dnl Check for the CA bundle
2181 dnl **********************************************************************
2182
2183 CURL_CHECK_CA_BUNDLE
2184
2185 dnl **********************************************************************
2186 dnl Check for libmetalink
2187 dnl **********************************************************************
2188
2189 OPT_LIBMETALINK=no
2190
2191 AC_ARG_WITH(libmetalink,dnl
2192 AC_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root])
2193 AC_HELP_STRING([--without-libmetalink], [disable libmetalink detection]),
2194   OPT_LIBMETALINK=$withval)
2195
2196 if test X"$OPT_LIBMETALINK" != Xno; then
2197
2198   addld=""
2199   addlib=""
2200   addcflags=""
2201   version=""
2202   libmetalinklib=""
2203
2204   PKGTEST="no"
2205   if test "x$OPT_LIBMETALINK" = "xyes"; then
2206     dnl this is with no partiular path given
2207     PKGTEST="yes"
2208     CURL_CHECK_PKGCONFIG(libmetalink)
2209   else
2210     dnl When particular path is given, set PKG_CONFIG_LIBDIR using the path.
2211     LIBMETALINK_PCDIR="$OPT_LIBMETALINK/lib/pkgconfig"
2212     AC_MSG_NOTICE([PKG_CONFIG_LIBDIR will be set to "$LIBMETALINK_PCDIR"])
2213     if test -f "$LIBMETALINK_PCDIR/libmetalink.pc"; then
2214       PKGTEST="yes"
2215     fi
2216     if test "$PKGTEST" = "yes"; then
2217       CURL_CHECK_PKGCONFIG(libmetalink, [$LIBMETALINK_PCDIR])
2218     fi
2219   fi
2220   if test "$PKGTEST" = "yes" && test "$PKGCONFIG" != "no"; then
2221     addlib=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2222       $PKGCONFIG --libs-only-l libmetalink`
2223     addld=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2224       $PKGCONFIG --libs-only-L libmetalink`
2225     addcflags=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2226       $PKGCONFIG --cflags-only-I libmetalink`
2227     version=`CURL_EXPORT_PCDIR([$LIBMETALINK_PCDIR]) dnl
2228       $PKGCONFIG --modversion libmetalink`
2229     libmetalinklib=`echo $addld | $SED -e 's/-L//'`
2230   fi
2231   if test -n "$addlib"; then
2232
2233     clean_CPPFLAGS="$CPPFLAGS"
2234     clean_LDFLAGS="$LDFLAGS"
2235     clean_LIBS="$LIBS"
2236     CPPFLAGS="$addcflags $clean_CPPFLAGS"
2237     LDFLAGS="$addld $clean_LDFLAGS"
2238     LIBS="$addlib $clean_LIBS"
2239     AC_MSG_CHECKING([if libmetalink is recent enough])
2240     AC_LINK_IFELSE([
2241       AC_LANG_PROGRAM([[
2242 #       include <metalink/metalink.h>
2243       ]],[[
2244         if(0 != metalink_strerror(0)) /* added in 0.1.0 */
2245           return 1;
2246       ]])
2247     ],[
2248       AC_MSG_RESULT([yes ($version)])
2249       want_metalink="yes"
2250     ],[
2251       AC_MSG_RESULT([no ($version)])
2252       AC_MSG_NOTICE([libmetalink library defective or too old])
2253       want_metalink="no"
2254     ])
2255     CPPFLAGS="$clean_CPPFLAGS"
2256     LDFLAGS="$clean_LDFLAGS"
2257     LIBS="$clean_LIBS"
2258     if test "$want_metalink" = "yes"; then
2259       dnl finally libmetalink will be used
2260       AC_DEFINE(USE_METALINK, 1, [Define to enable metalink support])
2261       LIBMETALINK_LIBS=$addlib
2262       LIBMETALINK_LDFLAGS=$addld
2263       LIBMETALINK_CPPFLAGS=$addcflags
2264       AC_SUBST([LIBMETALINK_LIBS])
2265       AC_SUBST([LIBMETALINK_LDFLAGS])
2266       AC_SUBST([LIBMETALINK_CPPFLAGS])
2267       curl_mtlnk_msg="enabled"
2268     fi
2269
2270   fi
2271 fi
2272
2273 dnl **********************************************************************
2274 dnl Check for the presence of LIBSSH2 libraries and headers
2275 dnl **********************************************************************
2276
2277 dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
2278 OPT_LIBSSH2=off
2279 AC_ARG_WITH(libssh2,dnl
2280 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])
2281 AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
2282   OPT_LIBSSH2=$withval)
2283
2284 if test X"$OPT_LIBSSH2" != Xno; then
2285   dnl backup the pre-libssh2 variables
2286   CLEANLDFLAGS="$LDFLAGS"
2287   CLEANCPPFLAGS="$CPPFLAGS"
2288   CLEANLIBS="$LIBS"
2289
2290   case "$OPT_LIBSSH2" in
2291   yes)
2292     dnl --with-libssh2 (without path) used
2293     CURL_CHECK_PKGCONFIG(libssh2)
2294
2295     if test "$PKGCONFIG" != "no" ; then
2296       LIB_SSH2=`$PKGCONFIG --libs-only-l libssh2`
2297       LD_SSH2=`$PKGCONFIG --libs-only-L libssh2`
2298       CPP_SSH2=`$PKGCONFIG --cflags-only-I libssh2`
2299       version=`$PKGCONFIG --modversion libssh2`
2300       DIR_SSH2=`echo $LD_SSH2 | $SED -e 's/-L//'`
2301     fi
2302
2303     ;;
2304   off)
2305     dnl no --with-libssh2 option given, just check default places
2306     ;;
2307   *)
2308     dnl use the given --with-libssh2 spot
2309     PREFIX_SSH2=$OPT_LIBSSH2
2310     ;;
2311   esac
2312
2313   dnl if given with a prefix, we set -L and -I based on that
2314   if test -n "$PREFIX_SSH2"; then
2315     LIB_SSH2="-lssh2"
2316     LD_SSH2=-L${PREFIX_SSH2}/lib$libsuff
2317     CPP_SSH2=-I${PREFIX_SSH2}/include
2318     DIR_SSH2=${PREFIX_SSH2}/lib$libsuff
2319   fi
2320
2321   LDFLAGS="$LDFLAGS $LD_SSH2"
2322   CPPFLAGS="$CPPFLAGS $CPP_SSH2"
2323   LIBS="$LIB_SSH2 $LIBS"
2324
2325   AC_CHECK_LIB(ssh2, libssh2_channel_open_ex)
2326
2327   AC_CHECK_HEADERS(libssh2.h,
2328     curl_ssh_msg="enabled (libSSH2)"
2329     LIBSSH2_ENABLED=1
2330     AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
2331     AC_SUBST(USE_LIBSSH2, [1])
2332   )
2333
2334   if test X"$OPT_LIBSSH2" != Xoff &&
2335      test "$LIBSSH2_ENABLED" != "1"; then
2336     AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!])
2337   fi
2338
2339   if test "$LIBSSH2_ENABLED" = "1"; then
2340     if test -n "$DIR_SSH2"; then
2341        dnl when the libssh2 shared libs were found in a path that the run-time
2342        dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
2343        dnl to prevent further configure tests to fail due to this
2344
2345        dnl libssh2_version is a post 1.0 addition
2346        dnl libssh2_init and libssh2_exit were added in 1.2.5
2347        dnl libssh2_scp_send64 was added in 1.2.6
2348        dnl libssh2_session_handshake was added in 1.2.8
2349        AC_CHECK_FUNCS( libssh2_version libssh2_init libssh2_exit \
2350                        libssh2_scp_send64 libssh2_session_handshake)
2351        if test "x$cross_compiling" != "xyes"; then
2352          LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DIR_SSH2"
2353          export LD_LIBRARY_PATH
2354          AC_MSG_NOTICE([Added $DIR_SSH2 to LD_LIBRARY_PATH])
2355        fi
2356     fi
2357   else
2358     dnl no libssh2, revert back to clean variables
2359     LDFLAGS=$CLEANLDFLAGS
2360     CPPFLAGS=$CLEANCPPFLAGS
2361     LIBS=$CLEANLIBS
2362   fi
2363 fi
2364
2365 dnl **********************************************************************
2366 dnl Check for the presence of LIBRTMP libraries and headers
2367 dnl **********************************************************************
2368
2369 dnl Default to compiler & linker defaults for LIBRTMP files & libraries.
2370 OPT_LIBRTMP=off
2371 AC_ARG_WITH(librtmp,dnl
2372 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])
2373 AC_HELP_STRING([--without-librtmp], [disable LIBRTMP]),
2374   OPT_LIBRTMP=$withval)
2375
2376 if test X"$OPT_LIBRTMP" != Xno; then
2377   dnl backup the pre-librtmp variables
2378   CLEANLDFLAGS="$LDFLAGS"
2379   CLEANCPPFLAGS="$CPPFLAGS"
2380   CLEANLIBS="$LIBS"
2381
2382   case "$OPT_LIBRTMP" in
2383   yes)
2384     dnl --with-librtmp (without path) used
2385     CURL_CHECK_PKGCONFIG(librtmp)
2386
2387     if test "$PKGCONFIG" != "no" ; then
2388       LIB_RTMP=`$PKGCONFIG --libs-only-l librtmp`
2389       LD_RTMP=`$PKGCONFIG --libs-only-L librtmp`
2390       CPP_RTMP=`$PKGCONFIG --cflags-only-I librtmp`
2391       version=`$PKGCONFIG --modversion librtmp`
2392       DIR_RTMP=`echo $LD_RTMP | $SED -e 's/-L//'`
2393     else
2394       dnl To avoid link errors, we do not allow --librtmp without
2395       dnl a pkgconfig file
2396       AC_MSG_ERROR([--librtmp was specified but could not find librtmp pkgconfig file.])
2397     fi
2398
2399     ;;
2400   off)
2401     dnl no --with-librtmp option given, just check default places
2402     LIB_RTMP="-lrtmp"
2403     ;;
2404   *)
2405     dnl use the given --with-librtmp spot
2406     PREFIX_RTMP=$OPT_LIBRTMP
2407     ;;
2408   esac
2409
2410   dnl if given with a prefix, we set -L and -I based on that
2411   if test -n "$PREFIX_RTMP"; then
2412     LD_RTMP=-L${PREFIX_RTMP}/lib$libsuff
2413     CPP_RTMP=-I${PREFIX_RTMP}/include
2414     DIR_RTMP=${PREFIX_RTMP}/lib$libsuff
2415   fi
2416
2417   LDFLAGS="$LDFLAGS $LD_RTMP"
2418   CPPFLAGS="$CPPFLAGS $CPP_RTMP"
2419   LIBS="$LIB_RTMP $LIBS"
2420
2421   AC_CHECK_LIB(rtmp, RTMP_Init,
2422     [
2423      AC_CHECK_HEADERS(librtmp/rtmp.h,
2424         curl_rtmp_msg="enabled (librtmp)"
2425         LIBRTMP_ENABLED=1
2426         AC_DEFINE(USE_LIBRTMP, 1, [if librtmp is in use])
2427         AC_SUBST(USE_LIBRTMP, [1])
2428      )
2429     ],
2430       dnl not found, revert back to clean variables
2431       LDFLAGS=$CLEANLDFLAGS
2432       CPPFLAGS=$CLEANCPPFLAGS
2433       LIBS=$CLEANLIBS
2434   )
2435
2436   if test X"$OPT_LIBRTMP" != Xoff &&
2437      test "$LIBRTMP_ENABLED" != "1"; then
2438     AC_MSG_ERROR([librtmp libs and/or directories were not found where specified!])
2439   fi
2440
2441 fi
2442
2443 dnl **********************************************************************
2444 dnl Check for linker switch for versioned symbols
2445 dnl **********************************************************************
2446
2447 versioned_symbols_flavour=
2448 AC_MSG_CHECKING([whether versioned symbols are wanted])
2449 AC_ARG_ENABLE(versioned-symbols,
2450 AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library])
2451 AC_HELP_STRING([--disable-versioned-symbols], [Disable versioned symbols in shared library]),
2452 [ case "$enableval" in
2453   yes) AC_MSG_RESULT(yes)
2454     AC_MSG_CHECKING([if libraries can be versioned])
2455     GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
2456     if test -z "$GLD"; then
2457         AC_MSG_RESULT(no)
2458         AC_MSG_WARN([You need an ld version supporting the --version-script option])
2459     else
2460         AC_MSG_RESULT(yes)
2461         if test "x$OPENSSL_ENABLED" = "x1"; then
2462           versioned_symbols_flavour="OPENSSL_"
2463         elif test "x$GNUTLS_ENABLED" == "x1"; then
2464           versioned_symbols_flavour="GNUTLS_"
2465         elif test "x$NSS_ENABLED" == "x1"; then
2466           versioned_symbols_flavour="NSS_"
2467         elif test "x$POLARSSL_ENABLED" == "x1"; then
2468           versioned_symbols_flavour="POLARSSL_"
2469         elif test "x$CYASSL_ENABLED" == "x1"; then
2470           versioned_symbols_flavour="CYASSL_"
2471         elif test "x$AXTLS_ENABLED" == "x1"; then
2472           versioned_symbols_flavour="AXTLS_"
2473         elif test "x$WINSSL_ENABLED" == "x1"; then
2474           versioned_symbols_flavour="WINSSL_"
2475         elif test "x$DARWINSSL_ENABLED" == "x1"; then
2476           versioned_symbols_flavour="DARWINSSL_"
2477         else
2478           versioned_symbols_flavour=""
2479         fi
2480         versioned_symbols="yes"
2481     fi
2482     ;;
2483
2484   *)   AC_MSG_RESULT(no)
2485     ;;
2486   esac
2487 ], [
2488 AC_MSG_RESULT(no)
2489 ]
2490 )
2491
2492 AC_SUBST([CURL_LT_SHLIB_VERSIONED_FLAVOUR],
2493   ["$versioned_symbols_flavour"])
2494 AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS],
2495   [test "x$versioned_symbols" = 'xyes'])
2496
2497 dnl -------------------------------------------------
2498 dnl check winidn option before other IDN libraries
2499 dnl -------------------------------------------------
2500
2501 AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)])
2502 OPT_WINIDN="default"
2503 AC_ARG_WITH(winidn,
2504 AC_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN])
2505 AC_HELP_STRING([--without-winidn], [disable Windows native IDN]),
2506   OPT_WINIDN=$withval)
2507 case "$OPT_WINIDN" in
2508   no|default)
2509     dnl --without-winidn option used or configure option not specified
2510     want_winidn="no"
2511     AC_MSG_RESULT([no])
2512     ;;
2513   yes)
2514     dnl --with-winidn option used without path
2515     want_winidn="yes"
2516     want_winidn_path="default"
2517     AC_MSG_RESULT([yes])
2518     ;;
2519   *)
2520     dnl --with-winidn option used with path
2521     want_winidn="yes"
2522     want_winidn_path="$withval"
2523     AC_MSG_RESULT([yes ($withval)])
2524     ;;
2525 esac
2526
2527 if test "$want_winidn" = "yes"; then
2528   dnl winidn library support has been requested
2529   clean_CPPFLAGS="$CPPFLAGS"
2530   clean_LDFLAGS="$LDFLAGS"
2531   clean_LIBS="$LIBS"
2532   WINIDN_LIBS="-lnormaliz"
2533   #
2534   if test "$want_winidn_path" != "default"; then
2535     dnl path has been specified
2536     dnl pkg-config not available or provides no info
2537     WINIDN_LDFLAGS="-L$want_winidn_path/lib$libsuff"
2538     WINIDN_CPPFLAGS="-I$want_winidn_path/include"
2539     WINIDN_DIR="$want_winidn_path/lib$libsuff"
2540   fi
2541   #
2542   CPPFLAGS="$WINIDN_CPPFLAGS $CPPFLAGS"
2543   LDFLAGS="$WINIDN_LDFLAGS $LDFLAGS"
2544   LIBS="$WINIDN_LIBS $LIBS"
2545   #
2546   AC_MSG_CHECKING([if IdnToUnicode can be linked])
2547   AC_LINK_IFELSE([
2548     AC_LANG_FUNC_LINK_TRY([IdnToUnicode])
2549   ],[
2550     AC_MSG_RESULT([yes])
2551     tst_links_winidn="yes"
2552   ],[
2553     AC_MSG_RESULT([no])
2554     tst_links_winidn="no"
2555   ])
2556   #
2557   if test "$tst_links_winidn" = "yes"; then
2558     AC_DEFINE(USE_WIN32_IDN, 1, [Define to 1 if you have the `normaliz' (WinIDN) library (-lnormaliz).])
2559     AC_DEFINE(WANT_IDN_PROTOTYPES, 1, [Define to 1 to provide own prototypes.])
2560     AC_SUBST([IDN_ENABLED], [1])
2561     curl_idn_msg="enabled (Windows-native)"
2562   else
2563     AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2564     CPPFLAGS="$clean_CPPFLAGS"
2565     LDFLAGS="$clean_LDFLAGS"
2566     LIBS="$clean_LIBS"
2567   fi
2568 fi
2569
2570 dnl **********************************************************************
2571 dnl Check for the presence of IDN libraries and headers
2572 dnl **********************************************************************
2573
2574 AC_MSG_CHECKING([whether to build with libidn])
2575 OPT_IDN="default"
2576 AC_ARG_WITH(libidn,
2577 AC_HELP_STRING([--with-libidn=PATH],[Enable libidn usage])
2578 AC_HELP_STRING([--without-libidn],[Disable libidn usage]),
2579   [OPT_IDN=$withval])
2580 case "$OPT_IDN" in
2581   no)
2582     dnl --without-libidn option used
2583     want_idn="no"
2584     AC_MSG_RESULT([no])
2585     ;;
2586   default)
2587     dnl configure option not specified
2588     want_idn="yes"
2589     want_idn_path="default"
2590     AC_MSG_RESULT([(assumed) yes])
2591     ;;
2592   yes)
2593     dnl --with-libidn option used without path
2594     want_idn="yes"
2595     want_idn_path="default"
2596     AC_MSG_RESULT([yes])
2597     ;;
2598   *)
2599     dnl --with-libidn option used with path
2600     want_idn="yes"
2601     want_idn_path="$withval"
2602     AC_MSG_RESULT([yes ($withval)])
2603     ;;
2604 esac
2605
2606 if test "$want_idn" = "yes"; then
2607   dnl idn library support has been requested
2608   clean_CPPFLAGS="$CPPFLAGS"
2609   clean_LDFLAGS="$LDFLAGS"
2610   clean_LIBS="$LIBS"
2611   PKGCONFIG="no"
2612   #
2613   if test "$want_idn_path" != "default"; then
2614     dnl path has been specified
2615     IDN_PCDIR="$want_idn_path/lib$libsuff/pkgconfig"
2616     CURL_CHECK_PKGCONFIG(libidn, [$IDN_PCDIR])
2617     if test "$PKGCONFIG" != "no"; then
2618       IDN_LIBS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2619         $PKGCONFIG --libs-only-l libidn 2>/dev/null`
2620       IDN_LDFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2621         $PKGCONFIG --libs-only-L libidn 2>/dev/null`
2622       IDN_CPPFLAGS=`CURL_EXPORT_PCDIR([$IDN_PCDIR]) dnl
2623         $PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2624       IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2625     else
2626       dnl pkg-config not available or provides no info
2627       IDN_LIBS="-lidn"
2628       IDN_LDFLAGS="-L$want_idn_path/lib$libsuff"
2629       IDN_CPPFLAGS="-I$want_idn_path/include"
2630       IDN_DIR="$want_idn_path/lib$libsuff"
2631     fi
2632   else
2633     dnl path not specified
2634     CURL_CHECK_PKGCONFIG(libidn)
2635     if test "$PKGCONFIG" != "no"; then
2636       IDN_LIBS=`$PKGCONFIG --libs-only-l libidn 2>/dev/null`
2637       IDN_LDFLAGS=`$PKGCONFIG --libs-only-L libidn 2>/dev/null`
2638       IDN_CPPFLAGS=`$PKGCONFIG --cflags-only-I libidn 2>/dev/null`
2639       IDN_DIR=`echo $IDN_LDFLAGS | $SED -e 's/-L//'`
2640     else
2641       dnl pkg-config not available or provides no info
2642       IDN_LIBS="-lidn"
2643     fi
2644   fi
2645   #
2646   if test "$PKGCONFIG" != "no"; then
2647     AC_MSG_NOTICE([pkg-config: IDN_LIBS: "$IDN_LIBS"])
2648     AC_MSG_NOTICE([pkg-config: IDN_LDFLAGS: "$IDN_LDFLAGS"])
2649     AC_MSG_NOTICE([pkg-config: IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2650     AC_MSG_NOTICE([pkg-config: IDN_DIR: "$IDN_DIR"])
2651   else
2652     AC_MSG_NOTICE([IDN_LIBS: "$IDN_LIBS"])
2653     AC_MSG_NOTICE([IDN_LDFLAGS: "$IDN_LDFLAGS"])
2654     AC_MSG_NOTICE([IDN_CPPFLAGS: "$IDN_CPPFLAGS"])
2655     AC_MSG_NOTICE([IDN_DIR: "$IDN_DIR"])
2656   fi
2657   #
2658   CPPFLAGS="$IDN_CPPFLAGS $CPPFLAGS"
2659   LDFLAGS="$IDN_LDFLAGS $LDFLAGS"
2660   LIBS="$IDN_LIBS $LIBS"
2661   #
2662   AC_MSG_CHECKING([if idna_to_ascii_4i can be linked])
2663   AC_LINK_IFELSE([
2664     AC_LANG_FUNC_LINK_TRY([idna_to_ascii_4i])
2665   ],[
2666     AC_MSG_RESULT([yes])
2667     tst_links_libidn="yes"
2668   ],[
2669     AC_MSG_RESULT([no])
2670     tst_links_libidn="no"
2671   ])
2672   if test "$tst_links_libidn" = "no"; then
2673     AC_MSG_CHECKING([if idna_to_ascii_lz can be linked])
2674     AC_LINK_IFELSE([
2675       AC_LANG_FUNC_LINK_TRY([idna_to_ascii_lz])
2676     ],[
2677       AC_MSG_RESULT([yes])
2678       tst_links_libidn="yes"
2679     ],[
2680       AC_MSG_RESULT([no])
2681       tst_links_libidn="no"
2682     ])
2683   fi
2684   #
2685   if test "$tst_links_libidn" = "yes"; then
2686     AC_DEFINE(HAVE_LIBIDN, 1, [Define to 1 if you have the `idn' library (-lidn).])
2687     dnl different versions of libidn have different setups of these:
2688     AC_CHECK_FUNCS( idn_free idna_strerror tld_strerror )
2689     AC_CHECK_HEADERS( idn-free.h tld.h )
2690     if test "x$ac_cv_header_tld_h" = "xyes"; then
2691       AC_SUBST([IDN_ENABLED], [1])
2692       curl_idn_msg="enabled"
2693       if test -n "$IDN_DIR"; then
2694         LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$IDN_DIR"
2695         export LD_LIBRARY_PATH
2696         AC_MSG_NOTICE([Added $IDN_DIR to LD_LIBRARY_PATH])
2697       fi
2698     else
2699       AC_MSG_WARN([Libraries for IDN support too old: IDN disabled])
2700       CPPFLAGS="$clean_CPPFLAGS"
2701       LDFLAGS="$clean_LDFLAGS"
2702       LIBS="$clean_LIBS"
2703     fi
2704   else
2705     AC_MSG_WARN([Cannot find libraries for IDN support: IDN disabled])
2706     CPPFLAGS="$clean_CPPFLAGS"
2707     LDFLAGS="$clean_LDFLAGS"
2708     LIBS="$clean_LIBS"
2709   fi
2710 fi
2711
2712
2713 dnl Let's hope this split URL remains working:
2714 dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
2715 dnl genprogc/thread_quick_ref.htm
2716
2717
2718 dnl **********************************************************************
2719 dnl Check for nghttp2
2720 dnl **********************************************************************
2721
2722 AC_MSG_CHECKING([whether to build with nghttp2])
2723 OPT_H2="no"
2724 AC_ARG_WITH(nghttp2,
2725 AC_HELP_STRING([--with-nghttp2=PATH],[Enable nghttp2 usage])
2726 AC_HELP_STRING([--without-nghttp2],[Disable nghttp2 usage]),
2727   [OPT_H2=$withval])
2728 case "$OPT_H2" in
2729   no)
2730     dnl --without-nghttp2 option used
2731     want_idn="no"
2732     AC_MSG_RESULT([no])
2733     ;;
2734   default)
2735     dnl configure option not specified
2736     want_h2="no"
2737     want_h2_path="default"
2738     AC_MSG_RESULT([no])
2739     ;;
2740   yes)
2741     dnl --with-nghttp2 option used without path
2742     want_h2="yes"
2743     want_h2_path=""
2744     AC_MSG_RESULT([yes])
2745     ;;
2746   *)
2747     dnl --with-nghttp2 option used with path
2748     want_h2="yes"
2749     want_h2_path="$withval"
2750     AC_MSG_RESULT([yes ($withval)])
2751     ;;
2752 esac
2753
2754 curl_h2_msg="disabled (--with-nghttp2)"
2755 if test X"$OPT_H2" != Xno; then
2756   dnl backup the pre-librtmp variables
2757   CLEANLDFLAGS="$LDFLAGS"
2758   CLEANCPPFLAGS="$CPPFLAGS"
2759   CLEANLIBS="$LIBS"
2760
2761   h2pcdir=${want_h2_path}/lib/pkgconfig
2762   CURL_CHECK_PKGCONFIG(libnghttp2, $h2pcdir)
2763
2764   if test "$PKGCONFIG" != "no" ; then
2765     LIB_H2=`CURL_EXPORT_PCDIR([$h2pcdir])
2766       $PKGCONFIG --libs-only-l libnghttp2`
2767     AC_MSG_NOTICE([-l is $LIB_H2])
2768
2769     CPP_H2=`CURL_EXPORT_PCDIR([$h2pcdir]) dnl
2770       $PKGCONFIG --cflags-only-I libnghttp2`
2771     AC_MSG_NOTICE([-I is $CPP_H2])
2772
2773     LD_H2=`CURL_EXPORT_PCDIR([$h2pcdir])
2774       $PKGCONFIG --libs-only-L libnghttp2`
2775     AC_MSG_NOTICE([-L is $LD_H2])
2776
2777   else
2778     dnl To avoid link errors, we do not allow --libnghttp2 without
2779     dnl a pkgconfig file
2780     AC_MSG_ERROR([--with-nghttp2 was specified but could not find libnghttp2 pkg-config file.])
2781   fi
2782
2783   LDFLAGS="$LDFLAGS $LD_H2"
2784   CPPFLAGS="$CPPFLAGS $CPP_H2"
2785   LIBS="$LIB_H2 $LIBS"
2786
2787   AC_CHECK_LIB(nghttp2, nghttp2_session_client_new,
2788     [
2789      AC_CHECK_HEADERS(nghttp2/nghttp2.h,
2790         curl_h2_msg="enabled (nghttp2)"
2791         NGHTTP2_ENABLED=1
2792         AC_DEFINE(USE_NGHTTP2, 1, [if nghttp2 is in use])
2793         AC_SUBST(USE_NGHTTP2, [1])
2794      )
2795     ],
2796       dnl not found, revert back to clean variables
2797       LDFLAGS=$CLEANLDFLAGS
2798       CPPFLAGS=$CLEANCPPFLAGS
2799       LIBS=$CLEANLIBS
2800   )
2801
2802 fi
2803
2804 dnl **********************************************************************
2805 dnl Back to "normal" configuring
2806 dnl **********************************************************************
2807
2808 dnl Checks for header files.
2809 AC_HEADER_STDC
2810
2811 CURL_CHECK_HEADER_MALLOC
2812 CURL_CHECK_HEADER_MEMORY
2813
2814 dnl Now check for the very most basic headers. Then we can use these
2815 dnl ones as default-headers when checking for the rest!
2816 AC_CHECK_HEADERS(
2817         sys/types.h \
2818         sys/time.h \
2819         sys/select.h \
2820         sys/socket.h \
2821         sys/ioctl.h \
2822         sys/uio.h \
2823         assert.h \
2824         unistd.h \
2825         stdlib.h \
2826         limits.h \
2827         arpa/inet.h \
2828         net/if.h \
2829         netinet/in.h \
2830         sys/un.h \
2831         netinet/tcp.h \
2832         netdb.h \
2833         sys/sockio.h \
2834         sys/stat.h \
2835         sys/param.h \
2836         termios.h \
2837         termio.h \
2838         sgtty.h \
2839         fcntl.h \
2840         alloca.h \
2841         time.h \
2842         io.h \
2843         pwd.h \
2844         utime.h \
2845         sys/utime.h \
2846         sys/poll.h \
2847         poll.h \
2848         socket.h \
2849         sys/resource.h \
2850         libgen.h \
2851         locale.h \
2852         errno.h \
2853         stdbool.h \
2854         arpa/tftp.h \
2855         sys/filio.h \
2856         sys/wait.h \
2857         setjmp.h,
2858 dnl to do if not found
2859 [],
2860 dnl to do if found
2861 [],
2862 dnl default includes
2863 [
2864 #ifdef HAVE_SYS_TYPES_H
2865 #include <sys/types.h>
2866 #endif
2867 #ifdef HAVE_SYS_TIME_H
2868 #include <sys/time.h>
2869 #endif
2870 #ifdef HAVE_SYS_SELECT_H
2871 #include <sys/select.h>
2872 #endif
2873 #ifdef HAVE_SYS_SOCKET_H
2874 #include <sys/socket.h>
2875 #endif
2876 #ifdef HAVE_NETINET_IN_H
2877 #include <netinet/in.h>
2878 #endif
2879 #ifdef HAVE_SYS_UN_H
2880 #include <sys/un.h>
2881 #endif
2882 ]
2883 )
2884
2885 dnl Checks for typedefs, structures, and compiler characteristics.
2886 AC_C_CONST
2887 CURL_CHECK_VARIADIC_MACROS
2888 AC_TYPE_SIZE_T
2889 AC_HEADER_TIME
2890 CURL_CHECK_STRUCT_TIMEVAL
2891 CURL_VERIFY_RUNTIMELIBS
2892
2893 AC_CHECK_SIZEOF(size_t)
2894 AC_CHECK_SIZEOF(long)
2895 AC_CHECK_SIZEOF(int)
2896 AC_CHECK_SIZEOF(short)
2897 CURL_CONFIGURE_LONG
2898 AC_CHECK_SIZEOF(time_t)
2899 AC_CHECK_SIZEOF(off_t)
2900
2901 soname_bump=no
2902 if test x"$ac_cv_native_windows" != "xyes" &&
2903    test $ac_cv_sizeof_off_t -ne $curl_sizeof_curl_off_t; then
2904   AC_MSG_WARN([This libcurl built is probably not ABI compatible with previous])
2905   AC_MSG_WARN([builds! You MUST read lib/README.curl_off_t to figure it out.])
2906   soname_bump=yes
2907 fi
2908
2909
2910 AC_CHECK_TYPE(long long,
2911    [AC_DEFINE(HAVE_LONGLONG, 1,
2912       [Define to 1 if the compiler supports the 'long long' data type.])]
2913    longlong="yes"
2914 )
2915
2916 if test "xyes" = "x$longlong"; then
2917   AC_MSG_CHECKING([if numberLL works])
2918   AC_COMPILE_IFELSE([
2919     AC_LANG_PROGRAM([[
2920     ]],[[
2921       long long val = 1000LL;
2922     ]])
2923   ],[
2924     AC_MSG_RESULT([yes])
2925     AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
2926   ],[
2927     AC_MSG_RESULT([no])
2928   ])
2929 fi
2930
2931
2932 # check for ssize_t
2933 AC_CHECK_TYPE(ssize_t, ,
2934    AC_DEFINE(ssize_t, int, [the signed version of size_t]))
2935
2936 # check for bool type
2937 AC_CHECK_TYPE([bool],[
2938   AC_DEFINE(HAVE_BOOL_T, 1,
2939     [Define to 1 if bool is an available type.])
2940 ], ,[
2941 #ifdef HAVE_SYS_TYPES_H
2942 #include <sys/types.h>
2943 #endif
2944 #ifdef HAVE_STDBOOL_H
2945 #include <stdbool.h>
2946 #endif
2947 ])
2948
2949 CURL_CONFIGURE_CURL_SOCKLEN_T
2950
2951 CURL_CONFIGURE_PULL_SYS_POLL
2952
2953 TYPE_IN_ADDR_T
2954
2955 TYPE_SOCKADDR_STORAGE
2956
2957 TYPE_SIG_ATOMIC_T
2958
2959 AC_TYPE_SIGNAL
2960
2961 CURL_CHECK_FUNC_SELECT
2962
2963 CURL_CHECK_FUNC_RECV
2964 CURL_CHECK_FUNC_SEND
2965 CURL_CHECK_MSG_NOSIGNAL
2966
2967 CURL_CHECK_FUNC_ALARM
2968 CURL_CHECK_FUNC_BASENAME
2969 CURL_CHECK_FUNC_CLOSESOCKET
2970 CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
2971 CURL_CHECK_FUNC_CONNECT
2972 CURL_CHECK_FUNC_FCNTL
2973 CURL_CHECK_FUNC_FDOPEN
2974 CURL_CHECK_FUNC_FREEADDRINFO
2975 CURL_CHECK_FUNC_FREEIFADDRS
2976 CURL_CHECK_FUNC_FSETXATTR
2977 CURL_CHECK_FUNC_FTRUNCATE
2978 CURL_CHECK_FUNC_GETADDRINFO
2979 CURL_CHECK_FUNC_GAI_STRERROR
2980 CURL_CHECK_FUNC_GETHOSTBYADDR
2981 CURL_CHECK_FUNC_GETHOSTBYADDR_R
2982 CURL_CHECK_FUNC_GETHOSTBYNAME
2983 CURL_CHECK_FUNC_GETHOSTBYNAME_R
2984 CURL_CHECK_FUNC_GETHOSTNAME
2985 CURL_CHECK_FUNC_GETIFADDRS
2986 CURL_CHECK_FUNC_GETSERVBYPORT_R
2987 CURL_CHECK_FUNC_GMTIME_R
2988 CURL_CHECK_FUNC_INET_NTOA_R
2989 CURL_CHECK_FUNC_INET_NTOP
2990 CURL_CHECK_FUNC_INET_PTON
2991 CURL_CHECK_FUNC_IOCTL
2992 CURL_CHECK_FUNC_IOCTLSOCKET
2993 CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
2994 CURL_CHECK_FUNC_LOCALTIME_R
2995 CURL_CHECK_FUNC_MEMRCHR
2996 CURL_CHECK_FUNC_POLL
2997 CURL_CHECK_FUNC_SETSOCKOPT
2998 CURL_CHECK_FUNC_SIGACTION
2999 CURL_CHECK_FUNC_SIGINTERRUPT
3000 CURL_CHECK_FUNC_SIGNAL
3001 CURL_CHECK_FUNC_SIGSETJMP
3002 CURL_CHECK_FUNC_SOCKET
3003 CURL_CHECK_FUNC_SOCKETPAIR
3004 CURL_CHECK_FUNC_STRCASECMP
3005 CURL_CHECK_FUNC_STRCMPI
3006 CURL_CHECK_FUNC_STRDUP
3007 CURL_CHECK_FUNC_STRERROR_R
3008 CURL_CHECK_FUNC_STRICMP
3009 CURL_CHECK_FUNC_STRNCASECMP
3010 CURL_CHECK_FUNC_STRNCMPI
3011 CURL_CHECK_FUNC_STRNICMP
3012 CURL_CHECK_FUNC_STRSTR
3013 CURL_CHECK_FUNC_STRTOK_R
3014 CURL_CHECK_FUNC_STRTOLL
3015 CURL_CHECK_FUNC_WRITEV
3016
3017 case $host in
3018   *msdosdjgpp)
3019      ac_cv_func_pipe=no
3020      skipcheck_pipe=yes
3021      AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
3022     ;;
3023 esac
3024
3025 AC_CHECK_FUNCS([fork \
3026   geteuid \
3027   getpass_r \
3028   getppid \
3029   getprotobyname \
3030   getpwuid \
3031   getrlimit \
3032   gettimeofday \
3033   inet_addr \
3034   perror \
3035   pipe \
3036   setlocale \
3037   setmode \
3038   setrlimit \
3039   uname \
3040   utime
3041 ],[
3042 ],[
3043   func="$ac_func"
3044   eval skipcheck=\$skipcheck_$func
3045   if test "x$skipcheck" != "xyes"; then
3046     AC_MSG_CHECKING([deeper for $func])
3047     AC_LINK_IFELSE([
3048       AC_LANG_PROGRAM([[
3049       ]],[[
3050         $func ();
3051       ]])
3052     ],[
3053       AC_MSG_RESULT([yes])
3054       eval "ac_cv_func_$func=yes"
3055       AC_DEFINE_UNQUOTED(XC_SH_TR_CPP([HAVE_$func]), [1],
3056         [Define to 1 if you have the $func function.])
3057     ],[
3058       AC_MSG_RESULT([but still no])
3059     ])
3060   fi
3061 ])
3062
3063 dnl Check if the getnameinfo function is available
3064 dnl and get the types of five of its arguments.
3065 CURL_CHECK_FUNC_GETNAMEINFO
3066
3067 if test "$ipv6" = "yes"; then
3068   if test "$ac_cv_func_getaddrinfo" = "yes"; then
3069     AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
3070     IPV6_ENABLED=1
3071     AC_SUBST(IPV6_ENABLED)
3072   fi
3073   CURL_CHECK_NI_WITHSCOPEID
3074 fi
3075
3076 CURL_CHECK_NONBLOCKING_SOCKET
3077
3078 dnl ************************************************************
3079 dnl nroff tool stuff
3080 dnl
3081
3082 AC_PATH_PROG( PERL, perl, ,
3083   $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
3084 AC_SUBST(PERL)
3085
3086 AC_PATH_PROGS( NROFF, gnroff nroff, ,
3087   $PATH:/usr/bin/:/usr/local/bin )
3088 AC_SUBST(NROFF)
3089
3090 if test -n "$NROFF"; then
3091   dnl only check for nroff options if an nroff command was found
3092
3093   AC_MSG_CHECKING([how to use *nroff to get plain text from man pages])
3094   MANOPT="-man"
3095   mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3096   if test -z "$mancheck"; then
3097     MANOPT="-mandoc"
3098    mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
3099     if test -z "$mancheck"; then
3100       MANOPT=""
3101       AC_MSG_RESULT([failed])
3102       AC_MSG_WARN([found no *nroff option to get plaintext from man pages])
3103     else
3104       AC_MSG_RESULT([$MANOPT])
3105     fi
3106   else
3107     AC_MSG_RESULT([$MANOPT])
3108   fi
3109   AC_SUBST(MANOPT)
3110 fi
3111
3112 if test -z "$MANOPT"
3113 then
3114   dnl if no nroff tool was found, or no option that could convert man pages
3115   dnl was found, then disable the built-in manual stuff
3116   AC_MSG_WARN([disabling built-in manual])
3117   USE_MANUAL="no";
3118 fi
3119
3120 dnl *************************************************************************
3121 dnl If the manual variable still is set, then we go with providing a built-in
3122 dnl manual
3123
3124 if test "$USE_MANUAL" = "1"; then
3125   AC_DEFINE(USE_MANUAL, 1, [If you want to build curl with the built-in manual])
3126   curl_manual_msg="enabled"
3127 fi
3128
3129 dnl set variable for use in automakefile(s)
3130 AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
3131
3132 CURL_CHECK_LIB_ARES
3133 AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
3134
3135 if test "x$ac_cv_native_windows" != "xyes" &&
3136    test "x$enable_shared" = "xyes"; then
3137   build_libhostname=yes
3138 else
3139   build_libhostname=no
3140 fi
3141 AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes)
3142
3143 CURL_CHECK_OPTION_THREADED_RESOLVER
3144
3145 if test "x$want_thres" = xyes && test "x$want_ares" = xyes; then
3146   AC_MSG_ERROR(
3147 [Options --enable-threaded-resolver and --enable-ares are mutually exclusive])
3148 fi
3149
3150 if test "$want_thres" = "yes"; then
3151   AC_CHECK_HEADER(pthread.h,
3152     [ AC_DEFINE(HAVE_PTHREAD_H, 1, [if you have <pthread.h>])
3153       save_CFLAGS="$CFLAGS"
3154
3155       dnl first check for function without lib
3156       AC_CHECK_FUNC(pthread_create, [USE_THREADS_POSIX=1] )
3157
3158       dnl if it wasn't found without lib, search for it in pthread lib
3159       if test "$USE_THREADS_POSIX" != "1"
3160       then
3161         CFLAGS="$CFLAGS -pthread"
3162         AC_CHECK_LIB(pthread, pthread_create,
3163                      [USE_THREADS_POSIX=1],
3164                      [ CFLAGS="$save_CFLAGS"])
3165       fi
3166
3167       if test "x$USE_THREADS_POSIX" = "x1"
3168       then
3169         AC_DEFINE(USE_THREADS_POSIX, 1, [if you want POSIX threaded DNS lookup])
3170         curl_res_msg="POSIX threaded"
3171       fi
3172
3173
3174   ])
3175 fi
3176
3177 dnl ************************************************************
3178 dnl disable verbose text strings
3179 dnl
3180 AC_MSG_CHECKING([whether to enable verbose strings])
3181 AC_ARG_ENABLE(verbose,
3182 AC_HELP_STRING([--enable-verbose],[Enable verbose strings])
3183 AC_HELP_STRING([--disable-verbose],[Disable verbose strings]),
3184 [ case "$enableval" in
3185   no)
3186        AC_MSG_RESULT(no)
3187        AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings])
3188        curl_verbose_msg="no"
3189        ;;
3190   *)   AC_MSG_RESULT(yes)
3191        ;;
3192   esac ],
3193        AC_MSG_RESULT(yes)
3194 )
3195
3196 dnl ************************************************************
3197 dnl enable SSPI support
3198 dnl
3199 AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)])
3200 AC_ARG_ENABLE(sspi,
3201 AC_HELP_STRING([--enable-sspi],[Enable SSPI])
3202 AC_HELP_STRING([--disable-sspi],[Disable SSPI]),
3203 [ case "$enableval" in
3204   yes)
3205        if test "$ac_cv_native_windows" = "yes"; then
3206          AC_MSG_RESULT(yes)
3207          AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
3208          AC_SUBST(USE_WINDOWS_SSPI, [1])
3209          curl_sspi_msg="enabled"
3210        else
3211          AC_MSG_RESULT(no)
3212          AC_MSG_WARN([--enable-sspi Ignored. Only supported on native Windows builds.])
3213        fi
3214        ;;
3215   *)
3216        if test "x$WINSSL_ENABLED" = "x1"; then
3217          # --with-winssl implies --enable-sspi
3218          AC_MSG_RESULT(yes)
3219        else
3220          AC_MSG_RESULT(no)
3221        fi
3222        ;;
3223   esac ],
3224        if test "x$WINSSL_ENABLED" = "x1"; then
3225          # --with-winssl implies --enable-sspi
3226          AC_MSG_RESULT(yes)
3227        else
3228          AC_MSG_RESULT(no)
3229        fi
3230 )
3231
3232 dnl ************************************************************
3233 dnl disable cryptographic authentication
3234 dnl
3235 AC_MSG_CHECKING([whether to enable cryptographic authentication methods])
3236 AC_ARG_ENABLE(crypto-auth,
3237 AC_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication])
3238 AC_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]),
3239 [ case "$enableval" in
3240   no)
3241        AC_MSG_RESULT(no)
3242        AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication])
3243        ;;
3244   *)   AC_MSG_RESULT(yes)
3245        ;;
3246   esac ],
3247        AC_MSG_RESULT(yes)
3248 )
3249
3250 CURL_CHECK_OPTION_NTLM_WB
3251
3252 CURL_CHECK_NTLM_WB
3253
3254 dnl ************************************************************
3255 dnl disable TLS-SRP authentication
3256 dnl
3257 AC_MSG_CHECKING([whether to enable TLS-SRP authentication])
3258 AC_ARG_ENABLE(tls-srp,
3259 AC_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication])
3260 AC_HELP_STRING([--disable-tls-srp],[Disable TLS-SRP authentication]),
3261 [ case "$enableval" in
3262   no)
3263        AC_MSG_RESULT(no)
3264        AC_DEFINE(CURL_DISABLE_TLS_SRP, 1, [to disable TLS-SRP authentication])
3265        want_tls_srp=no
3266        ;;
3267   *)   AC_MSG_RESULT(yes)
3268        want_tls_srp=yes
3269        ;;
3270   esac ],
3271        AC_MSG_RESULT(yes)
3272        want_tls_srp=yes
3273 )
3274
3275 if test "$want_tls_srp" = "yes" && ( test "x$HAVE_GNUTLS_SRP" = "x1" || test "x$HAVE_SSLEAY_SRP" = "x1") ; then
3276    AC_DEFINE(USE_TLS_SRP, 1, [Use TLS-SRP authentication])
3277    USE_TLS_SRP=1
3278    curl_tls_srp_msg="enabled"
3279 fi
3280
3281 dnl ************************************************************
3282 dnl disable cookies support
3283 dnl
3284 AC_MSG_CHECKING([whether to enable support for cookies])
3285 AC_ARG_ENABLE(cookies,
3286 AC_HELP_STRING([--enable-cookies],[Enable cookies support])
3287 AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
3288 [ case "$enableval" in
3289   no)
3290        AC_MSG_RESULT(no)
3291        AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support])
3292        ;;
3293   *)   AC_MSG_RESULT(yes)
3294        ;;
3295   esac ],
3296        AC_MSG_RESULT(yes)
3297 )
3298
3299 dnl ************************************************************
3300 dnl hiding of library internal symbols
3301 dnl
3302 CURL_CONFIGURE_SYMBOL_HIDING
3303
3304 dnl ************************************************************
3305 dnl enforce SONAME bump
3306 dnl
3307
3308 AC_MSG_CHECKING([whether to enforce SONAME bump])
3309 AC_ARG_ENABLE(soname-bump,
3310 AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump])
3311 AC_HELP_STRING([--disable-soname-bump],[Disable enforced SONAME bump]),
3312 [ case "$enableval" in
3313   yes)   AC_MSG_RESULT(yes)
3314          soname_bump=yes
3315          ;;
3316   *)
3317          AC_MSG_RESULT(no)
3318          ;;
3319   esac ],
3320         AC_MSG_RESULT($soname_bump)
3321 )
3322 AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes)
3323
3324 dnl
3325 dnl All the library dependencies put into $LIB apply to libcurl only.
3326 dnl
3327 LIBCURL_LIBS=$LIBS
3328
3329 AC_SUBST(LIBCURL_LIBS)
3330 AC_SUBST(CURL_NETWORK_LIBS)
3331 AC_SUBST(CURL_NETWORK_AND_TIME_LIBS)
3332
3333 dnl BLANK_AT_MAKETIME may be used in our Makefile.am files to blank
3334 dnl LIBS variable used in generated makefile at makefile processing
3335 dnl time. Doing this functionally prevents LIBS from being used for
3336 dnl all link targets in given makefile.
3337 BLANK_AT_MAKETIME=
3338 AC_SUBST(BLANK_AT_MAKETIME)
3339
3340 AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes)
3341
3342 dnl yes or no
3343 ENABLE_SHARED="$enable_shared"
3344 AC_SUBST(ENABLE_SHARED)
3345
3346 dnl to let curl-config output the static libraries correctly
3347 ENABLE_STATIC="$enable_static"
3348 AC_SUBST(ENABLE_STATIC)
3349
3350
3351 dnl
3352 dnl For keeping supported features and protocols also in pkg-config file
3353 dnl since it is more cross-compile friendly than curl-config
3354 dnl
3355
3356 if test "x$USE_SSLEAY" = "x1"; then
3357   SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3358 elif test -n "$SSL_ENABLED"; then
3359   SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3360 fi
3361 if test "x$IPV6_ENABLED" = "x1"; then
3362   SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
3363 fi
3364 if test "x$HAVE_LIBZ" = "x1"; then
3365   SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
3366 fi
3367 if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1"; then
3368   SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
3369 fi
3370 if test "x$IDN_ENABLED" = "x1"; then
3371   SUPPORT_FEATURES="$SUPPORT_FEATURES IDN"
3372 fi
3373 if test "x$USE_WINDOWS_SSPI" = "x1"; then
3374   SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
3375 fi
3376 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3377   if test "x$USE_SSLEAY" = "x1" -o "x$USE_WINDOWS_SSPI" = "x1" \
3378       -o "x$GNUTLS_ENABLED" = "x1" -o "x$NSS_ENABLED" = "x1" \
3379       -o "x$DARWINSSL_ENABLED" = "x1"; then
3380     SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM"
3381     if test "x$NTLM_WB_ENABLED" = "x1"; then
3382       SUPPORT_FEATURES="$SUPPORT_FEATURES NTLM_WB"
3383     fi
3384   fi
3385 fi
3386 if test "x$USE_TLS_SRP" = "x1"; then
3387   SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
3388 fi
3389
3390 if test "x$USE_NGHTTP2" = "x1"; then
3391   SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2"
3392 fi
3393
3394 AC_SUBST(SUPPORT_FEATURES)
3395
3396 dnl For supported protocols in pkg-config file
3397 if test "x$CURL_DISABLE_HTTP" != "x1"; then
3398   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTP"
3399   if test "x$SSL_ENABLED" = "x1"; then
3400     SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS HTTPS"
3401   fi
3402 fi
3403 if test "x$CURL_DISABLE_FTP" != "x1"; then
3404   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTP"
3405   if test "x$SSL_ENABLED" = "x1"; then
3406     SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FTPS"
3407   fi
3408 fi
3409 if test "x$CURL_DISABLE_FILE" != "x1"; then
3410   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE"
3411 fi
3412 if test "x$CURL_DISABLE_TELNET" != "x1"; then
3413   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET"
3414 fi
3415 if test "x$CURL_DISABLE_LDAP" != "x1"; then
3416   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAP"
3417   if test "x$CURL_DISABLE_LDAPS" != "x1"; then
3418     if (test "x$USE_OPENLDAP" = "x1" && test "x$SSL_ENABLED" = "x1") ||
3419       (test "x$USE_OPENLDAP" != "x1"  && test "x$HAVE_LDAP_SSL" = "x1"); then
3420       SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS LDAPS"
3421     fi
3422   fi
3423 fi
3424 if test "x$CURL_DISABLE_DICT" != "x1"; then
3425   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT"
3426 fi
3427 if test "x$CURL_DISABLE_TFTP" != "x1"; then
3428   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP"
3429 fi
3430 if test "x$CURL_DISABLE_GOPHER" != "x1"; then
3431   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER"
3432 fi
3433 if test "x$CURL_DISABLE_POP3" != "x1"; then
3434   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3"
3435   if test "x$SSL_ENABLED" = "x1"; then
3436     SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS POP3S"
3437   fi
3438 fi
3439 if test "x$CURL_DISABLE_IMAP" != "x1"; then
3440   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAP"
3441   if test "x$SSL_ENABLED" = "x1"; then
3442     SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS IMAPS"
3443   fi
3444 fi
3445 if test "x$CURL_DISABLE_SMTP" != "x1"; then
3446   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTP"
3447   if test "x$SSL_ENABLED" = "x1"; then
3448     SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SMTPS"
3449   fi
3450 fi
3451 if test "x$USE_LIBSSH2" = "x1"; then
3452   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
3453   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
3454 fi
3455 if test "x$CURL_DISABLE_RTSP" != "x1"; then
3456   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
3457 fi
3458 if test "x$USE_LIBRTMP" = "x1"; then
3459   SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP"
3460 fi
3461
3462 dnl replace spaces with newlines
3463 dnl sort the lines
3464 dnl replace the newlines back to spaces
3465 SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '`
3466
3467 AC_SUBST(SUPPORT_PROTOCOLS)
3468
3469 dnl squeeze whitespace out of some variables
3470
3471 squeeze CFLAGS
3472 squeeze CPPFLAGS
3473 squeeze DEFS
3474 squeeze LDFLAGS
3475 squeeze LIBS
3476
3477 squeeze LIBCURL_LIBS
3478 squeeze CURL_NETWORK_LIBS
3479 squeeze CURL_NETWORK_AND_TIME_LIBS
3480
3481 squeeze SUPPORT_FEATURES
3482 squeeze SUPPORT_PROTOCOLS
3483
3484 XC_CHECK_BUILD_FLAGS
3485
3486 if test "x$want_curldebug_assumed" = "xyes" &&
3487   test "x$want_curldebug" = "xyes" && test "x$USE_ARES" = "x1"; then
3488   ac_configure_args="$ac_configure_args --enable-curldebug"
3489 fi
3490
3491 AC_CONFIG_FILES([Makefile \
3492            docs/Makefile \
3493            docs/examples/Makefile \
3494            docs/libcurl/Makefile \
3495            include/Makefile \
3496            include/curl/Makefile \
3497            src/Makefile \
3498            lib/Makefile \
3499            lib/libcurl.vers \
3500            tests/Makefile \
3501            tests/certs/Makefile \
3502            tests/certs/scripts/Makefile \
3503            tests/data/Makefile \
3504            tests/server/Makefile \
3505            tests/libtest/Makefile \
3506            tests/unit/Makefile \
3507            packages/Makefile \
3508            packages/Win32/Makefile \
3509            packages/Win32/cygwin/Makefile \
3510            packages/Linux/Makefile \
3511            packages/Linux/RPM/Makefile \
3512            packages/Linux/RPM/curl.spec \
3513            packages/Linux/RPM/curl-ssl.spec \
3514            packages/Solaris/Makefile \
3515            packages/EPM/curl.list \
3516            packages/EPM/Makefile \
3517            packages/vms/Makefile \
3518            packages/AIX/Makefile \
3519            packages/AIX/RPM/Makefile \
3520            packages/AIX/RPM/curl.spec \
3521            curl-config \
3522            libcurl.pc
3523 ])
3524 AC_OUTPUT
3525
3526 CURL_GENERATE_CONFIGUREHELP_PM
3527
3528 XC_AMEND_DISTCLEAN([lib src tests/unit tests/server tests/libtest docs/examples])
3529
3530 AC_MSG_NOTICE([Configured to build curl/libcurl:
3531
3532   curl version:     ${CURLVERSION}
3533   Host setup:       ${host}
3534   Install prefix:   ${prefix}
3535   Compiler:         ${CC}
3536   SSL support:      ${curl_ssl_msg}
3537   SSH support:      ${curl_ssh_msg}
3538   zlib support:     ${curl_zlib_msg}
3539   GSSAPI support:   ${curl_gss_msg}
3540   SPNEGO support:   ${curl_spnego_msg}
3541   TLS-SRP support:  ${curl_tls_srp_msg}
3542   resolver:         ${curl_res_msg}
3543   ipv6 support:     ${curl_ipv6_msg}
3544   IDN support:      ${curl_idn_msg}
3545   Build libcurl:    Shared=${enable_shared}, Static=${enable_static}
3546   Built-in manual:  ${curl_manual_msg}
3547   --libcurl option: ${curl_libcurl_msg}
3548   Verbose errors:   ${curl_verbose_msg}
3549   SSPI support:     ${curl_sspi_msg}
3550   ca cert bundle:   ${ca}
3551   ca cert path:     ${capath}
3552   LDAP support:     ${curl_ldap_msg}
3553   LDAPS support:    ${curl_ldaps_msg}
3554   RTSP support:     ${curl_rtsp_msg}
3555   RTMP support:     ${curl_rtmp_msg}
3556   metalink support: ${curl_mtlnk_msg}
3557   HTTP2 support:    ${curl_h2_msg}
3558   Protocols:        ${SUPPORT_PROTOCOLS}
3559 ])
3560
3561 if test "x$soname_bump" = "xyes"; then
3562
3563 cat <<EOM
3564   SONAME bump:     yes - WARNING: this library will be built with the SONAME
3565                    number bumped due to (a detected) ABI breakage.
3566                    See lib/README.curl_off_t for details on this.
3567 EOM
3568
3569 fi
3570