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