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