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