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#***************************************************************************
22dnl Process this file with autoconf to produce a configure script.
23
24AC_PREREQ(2.57)
25
26dnl We don't know the version number "statically" so we use a dash here
27AC_INIT([curl], [-], [a suitable curl mailing list: http://curl.haxx.se/mail/])
28
29XC_OVR_ZZ50
30XC_OVR_ZZ60
31CURL_OVERRIDE_AUTOCONF
32
33dnl configure script copyright
34AC_COPYRIGHT([Copyright (c) 1998 - 2014 Daniel Stenberg, <daniel@haxx.se>
35This configure script may be copied, distributed and modified under the
36terms of the curl license; see COPYING for more details])
37
38AC_CONFIG_SRCDIR([lib/urldata.h])
39AC_CONFIG_HEADERS(lib/curl_config.h include/curl/curlbuild.h)
40AC_CONFIG_MACRO_DIR([m4])
41AM_MAINTAINER_MODE
42
43CURL_CHECK_OPTION_DEBUG
44CURL_CHECK_OPTION_OPTIMIZE
45CURL_CHECK_OPTION_WARNINGS
46CURL_CHECK_OPTION_WERROR
47CURL_CHECK_OPTION_CURLDEBUG
48CURL_CHECK_OPTION_SYMBOL_HIDING
49CURL_CHECK_OPTION_ARES
50
51XC_CHECK_PATH_SEPARATOR
52
53#
54# save the configure arguments
55#
56CONFIGURE_OPTIONS="\"$ac_configure_args\""
57AC_SUBST(CONFIGURE_OPTIONS)
58
59CURL_CFLAG_EXTRAS=""
60if test X"$want_werror" = Xyes; then
61  CURL_CFLAG_EXTRAS="-Werror"
62fi
63AC_SUBST(CURL_CFLAG_EXTRAS)
64
65dnl SED is mandatory for configure process and libtool.
66dnl Set it now, allowing it to be changed later.
67if 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
74fi
75AC_SUBST([SED])
76
77dnl GREP is mandatory for configure process and libtool.
78dnl Set it now, allowing it to be changed later.
79if 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
86fi
87AC_SUBST([GREP])
88
89dnl EGREP is mandatory for configure process and libtool.
90dnl Set it now, allowing it to be changed later.
91if 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
101fi
102if test -z "$EGREP" || test "$EGREP" = "not_found"; then
103  AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.])
104fi
105AC_SUBST([EGREP])
106
107dnl AR is mandatory for configure process and libtool.
108dnl This is target dependent, so check it as a tool.
109if 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
116fi
117AC_SUBST([AR])
118
119AC_SUBST(libext)
120
121dnl Remove non-configure distributed curlbuild.h
122if test -f ${srcdir}/include/curl/curlbuild.h; then
123  rm -f ${srcdir}/include/curl/curlbuild.h
124fi
125
126dnl figure out the libcurl version
127CURLVERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curlver.h`
128XC_CHECK_PROG_CC
129XC_AUTOMAKE
130AC_MSG_CHECKING([curl version])
131AC_MSG_RESULT($CURLVERSION)
132
133AC_SUBST(CURLVERSION)
134
135dnl
136dnl we extract the numerical version for curl-config only
137VERSIONNUM=`$SED -ne 's/^#define LIBCURL_VERSION_NUM 0x\(.*\)/\1/p' ${srcdir}/include/curl/curlver.h`
138AC_SUBST(VERSIONNUM)
139
140dnl Solaris pkgadd support definitions
141PKGADD_PKG="HAXXcurl"
142PKGADD_NAME="cURL - a client that groks URLs"
143PKGADD_VENDOR="curl.haxx.se"
144AC_SUBST(PKGADD_PKG)
145AC_SUBST(PKGADD_NAME)
146AC_SUBST(PKGADD_VENDOR)
147
148dnl
149dnl 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)"
155curl_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)"
160curl_libcurl_msg="enabled (--disable-libcurl-option)"
161curl_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
171dnl
172dnl Save some initial values the user might have provided
173dnl
174INITIAL_LDFLAGS=$LDFLAGS
175INITIAL_LIBS=$LIBS
176
177dnl
178dnl Detect the canonical host and target build environment
179dnl
180
181AC_CANONICAL_HOST
182dnl Get system canonical name
183AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
184
185dnl Checks for programs.
186
187dnl Our curl_off_t internal and external configure settings
188CURL_CONFIGURE_CURL_OFF_T
189
190dnl This defines _ALL_SOURCE for AIX
191CURL_CHECK_AIX_ALL_SOURCE
192
193dnl Our configure and build reentrant settings
194CURL_CONFIGURE_THREAD_SAFE
195CURL_CONFIGURE_REENTRANT
196
197dnl check for how to do large files
198AC_SYS_LARGEFILE
199
200XC_LIBTOOL
201
202#
203# Automake conditionals based on libtool related checks
204#
205
206AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSION_INFO],
207  [test "x$xc_lt_shlib_use_version_info" = 'xyes'])
208AM_CONDITIONAL([CURL_LT_SHLIB_USE_NO_UNDEFINED],
209  [test "x$xc_lt_shlib_use_no_undefined" = 'xyes'])
210AM_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
229AM_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
238CPPFLAG_CURL_STATICLIB=
239if test "x$xc_lt_build_static_only" = 'xyes'; then
240  CPPFLAG_CURL_STATICLIB='-DCURL_STATICLIB'
241fi
242AC_SUBST([CPPFLAG_CURL_STATICLIB])
243
244
245# Determine whether all dependent libraries must be specified when linking
246if test "X$enable_shared" = "Xyes" -a "X$link_all_deplibs" = "Xno"
247then
248    REQUIRE_LIB_DEPS=no
249else
250    REQUIRE_LIB_DEPS=yes
251fi
252AC_SUBST(REQUIRE_LIB_DEPS)
253AM_CONDITIONAL(USE_EXPLICIT_LIB_DEPS, test x$REQUIRE_LIB_DEPS = xyes)
254
255dnl check if there's a way to force code inline
256AC_C_INLINE
257
258dnl **********************************************************************
259dnl platform/compiler/architecture specific checks/flags
260dnl **********************************************************************
261
262CURL_CHECK_COMPILER
263CURL_SET_COMPILER_BASIC_OPTS
264CURL_SET_COMPILER_DEBUG_OPTS
265CURL_SET_COMPILER_OPTIMIZE_OPTS
266CURL_SET_COMPILER_WARNING_OPTS
267
268if 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  #
278fi
279
280CURL_CHECK_COMPILER_HALT_ON_ERROR
281CURL_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
282CURL_CHECK_COMPILER_PROTOTYPE_MISMATCH
283CURL_CHECK_COMPILER_SYMBOL_HIDING
284
285CURL_CHECK_CURLDEBUG
286AM_CONDITIONAL(CURLDEBUG, test x$want_curldebug = xyes)
287
288supports_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.
292if test "x$cross_compiling" != "xno" &&
293   test "x$enable_shared" != "xno"; then
294  supports_unittests=no
295fi
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.
300case $host in
301  mips-sgi-irix6.5)
302    if test "$compiler_id" = "GNU_C"; then
303      supports_unittests=no
304    fi
305    ;;
306esac
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.
311case $host_os in
312  aix*)
313    supports_unittests=no
314    ;;
315esac
316
317dnl Build unit tests when option --enable-debug is given.
318if test "x$want_debug" = "xyes" &&
319   test "x$supports_unittests" = "xyes"; then
320  want_unittests=yes
321else
322  want_unittests=no
323fi
324AM_CONDITIONAL(BUILD_UNITTESTS, test x$want_unittests = xyes)
325
326dnl **********************************************************************
327dnl Compilation based checks should not be done before this point.
328dnl **********************************************************************
329
330dnl **********************************************************************
331dnl Make sure that our checks for headers windows.h winsock.h winsock2.h
332dnl and ws2tcpip.h take precedence over any other further checks which
333dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
334dnl this specific header files. And do them before its results are used.
335dnl **********************************************************************
336
337CURL_CHECK_HEADER_WINDOWS
338CURL_CHECK_NATIVE_WINDOWS
339case 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    ;;
354esac
355CURL_CHECK_WIN32_LARGEFILE
356
357dnl ************************************************************
358dnl switch off particular protocols
359dnl
360AC_MSG_CHECKING([whether to support http])
361AC_ARG_ENABLE(http,
362AC_HELP_STRING([--enable-http],[Enable HTTP support])
363AC_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)
378AC_MSG_CHECKING([whether to support ftp])
379AC_ARG_ENABLE(ftp,
380AC_HELP_STRING([--enable-ftp],[Enable FTP support])
381AC_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)
393AC_MSG_CHECKING([whether to support file])
394AC_ARG_ENABLE(file,
395AC_HELP_STRING([--enable-file],[Enable FILE support])
396AC_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)
408AC_MSG_CHECKING([whether to support ldap])
409AC_ARG_ENABLE(ldap,
410AC_HELP_STRING([--enable-ldap],[Enable LDAP support])
411AC_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)
424AC_MSG_CHECKING([whether to support ldaps])
425AC_ARG_ENABLE(ldaps,
426AC_HELP_STRING([--enable-ldaps],[Enable LDAPS support])
427AC_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
456AC_MSG_CHECKING([whether to support rtsp])
457AC_ARG_ENABLE(rtsp,
458AC_HELP_STRING([--enable-rtsp],[Enable RTSP support])
459AC_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
482AC_MSG_CHECKING([whether to support proxies])
483AC_ARG_ENABLE(proxy,
484AC_HELP_STRING([--enable-proxy],[Enable proxy support])
485AC_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
498AC_MSG_CHECKING([whether to support dict])
499AC_ARG_ENABLE(dict,
500AC_HELP_STRING([--enable-dict],[Enable DICT support])
501AC_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)
513AC_MSG_CHECKING([whether to support telnet])
514AC_ARG_ENABLE(telnet,
515AC_HELP_STRING([--enable-telnet],[Enable TELNET support])
516AC_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)
528AC_MSG_CHECKING([whether to support tftp])
529AC_ARG_ENABLE(tftp,
530AC_HELP_STRING([--enable-tftp],[Enable TFTP support])
531AC_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
544AC_MSG_CHECKING([whether to support pop3])
545AC_ARG_ENABLE(pop3,
546AC_HELP_STRING([--enable-pop3],[Enable POP3 support])
547AC_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
561AC_MSG_CHECKING([whether to support imap])
562AC_ARG_ENABLE(imap,
563AC_HELP_STRING([--enable-imap],[Enable IMAP support])
564AC_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
578AC_MSG_CHECKING([whether to support smtp])
579AC_ARG_ENABLE(smtp,
580AC_HELP_STRING([--enable-smtp],[Enable SMTP support])
581AC_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
594AC_MSG_CHECKING([whether to support gopher])
595AC_ARG_ENABLE(gopher,
596AC_HELP_STRING([--enable-gopher],[Enable Gopher support])
597AC_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
611dnl **********************************************************************
612dnl Check for built-in manual
613dnl **********************************************************************
614
615AC_MSG_CHECKING([whether to provide built-in manual])
616AC_ARG_ENABLE(manual,
617AC_HELP_STRING([--enable-manual],[Enable built-in manual])
618AC_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)
630dnl The actual use of the USE_MANUAL variable is done much later in this
631dnl script to allow other actions to disable it as well.
632
633dnl ************************************************************
634dnl disable C code generation support
635dnl
636AC_MSG_CHECKING([whether to enable generation of C code])
637AC_ARG_ENABLE(libcurl_option,
638AC_HELP_STRING([--enable-libcurl-option],[Enable --libcurl C code generation support])
639AC_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
652dnl **********************************************************************
653dnl Checks for libraries.
654dnl **********************************************************************
655
656AC_MSG_CHECKING([whether to use libgcc])
657AC_ARG_ENABLE(libgcc,
658AC_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
670CURL_CHECK_LIB_XNET
671
672dnl gethostbyname without lib or in the nsl lib?
673AC_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
682if test "$HAVE_GETHOSTBYNAME" != "1"
683then
684  dnl gethostbyname in the socket lib?
685  AC_CHECK_LIB(socket, gethostbyname,
686               [HAVE_GETHOSTBYNAME="1"
687               LIBS="-lsocket $LIBS"
688               ])
689fi
690
691if test "$HAVE_GETHOSTBYNAME" != "1"
692then
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               ])
700fi
701
702dnl At least one system has been identified to require BOTH nsl and socket
703dnl libs at the same time to link properly.
704if test "$HAVE_GETHOSTBYNAME" != "1"
705then
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  ])
721fi
722
723if test "$HAVE_GETHOSTBYNAME" != "1"
724then
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
772fi
773
774if test "$HAVE_GETHOSTBYNAME" != "1"
775then
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  ])
791fi
792
793if test "$HAVE_GETHOSTBYNAME" != "1"
794then
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  ])
810fi
811
812if test "$HAVE_GETHOSTBYNAME" != "1"
813then
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               ])
819fi
820
821if test "$HAVE_GETHOSTBYNAME" != "1"
822then
823  dnl gethostbyname in the net lib - for BeOS
824  AC_CHECK_LIB(net, gethostbyname,
825               [HAVE_GETHOSTBYNAME="1"
826               LIBS="-lnet $LIBS"
827               ])
828fi
829
830
831if test "$HAVE_GETHOSTBYNAME" != "1"; then
832  AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
833fi
834
835dnl resolve lib?
836AC_CHECK_FUNC(strcasecmp, , [ AC_CHECK_LIB(resolve, strcasecmp) ])
837
838if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
839  AC_CHECK_LIB(resolve, strcasecmp,
840              [LIBS="-lresolve $LIBS"],
841               ,
842               -lnsl)
843fi
844ac_cv_func_strcasecmp="no"
845
846CURL_CHECK_LIBS_CONNECT
847
848CURL_NETWORK_LIBS=$LIBS
849
850dnl **********************************************************************
851dnl In case that function clock_gettime with monotonic timer is available,
852dnl check for additional required libraries.
853dnl **********************************************************************
854CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
855
856dnl **********************************************************************
857dnl The preceding library checks are all potentially useful for test
858dnl servers and libtest cases which require networking and clock_gettime
859dnl support.  Save the list of required libraries at this point for use
860dnl while linking those test servers and programs.
861dnl **********************************************************************
862CURL_NETWORK_AND_TIME_LIBS=$LIBS
863
864dnl **********************************************************************
865dnl Check for the presence of ZLIB libraries and headers
866dnl **********************************************************************
867
868dnl Check for & handle argument to --with-zlib.
869
870clean_CPPFLAGS=$CPPFLAGS
871clean_LDFLAGS=$LDFLAGS
872clean_LIBS=$LIBS
873ZLIB_LIBS=""
874AC_ARG_WITH(zlib,
875AC_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
876AC_HELP_STRING([--without-zlib],[disable use of zlib]),
877               [OPT_ZLIB="$withval"])
878
879if test "$OPT_ZLIB" = "no" ; then
880    AC_MSG_WARN([zlib disabled])
881else
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
955fi
956
957dnl set variable for use in automakefile(s)
958AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1)
959AC_SUBST(ZLIB_LIBS)
960
961dnl **********************************************************************
962dnl Check for LDAP
963dnl **********************************************************************
964
965LDAPLIBNAME=""
966AC_ARG_WITH(ldap-lib,
967AC_HELP_STRING([--with-ldap-lib=libname],[Specify name of ldap lib file]),
968 [LDAPLIBNAME="$withval"])
969
970LBERLIBNAME=""
971AC_ARG_WITH(lber-lib,
972AC_HELP_STRING([--with-lber-lib=libname],[Specify name of lber lib file]),
973 [LBERLIBNAME="$withval"])
974
975if 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
1010fi
1011
1012if 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
1026fi
1027
1028if 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
1041fi
1042
1043if test x$CURL_DISABLE_LDAPS != x1 ; then
1044    curl_ldaps_msg="enabled"
1045fi
1046
1047dnl **********************************************************************
1048dnl Checks for IPv6
1049dnl **********************************************************************
1050
1051AC_MSG_CHECKING([whether to enable ipv6])
1052AC_ARG_ENABLE(ipv6,
1053AC_HELP_STRING([--enable-ipv6],[Enable ipv6 (with ipv4) support])
1054AC_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() */
1069main()
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
1085if test "$ipv6" = "yes"; then
1086  curl_ipv6_msg="enabled"
1087fi
1088
1089# Check if struct sockaddr_in6 have sin6_scope_id member
1090if 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
1102fi
1103
1104dnl **********************************************************************
1105dnl Check if the operating system allows programs to write to their own argv[]
1106dnl **********************************************************************
1107
1108AC_MSG_CHECKING([if argv can be written to])
1109AC_RUN_IFELSE([
1110  AC_LANG_SOURCE([[
1111int 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])
1123case $curl_cv_writable_argv in
1124yes)
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        ;;
1128no)
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        ;;
1135esac
1136
1137dnl **********************************************************************
1138dnl Check for FBopenssl(SPNEGO) libraries
1139dnl **********************************************************************
1140
1141AC_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
1150AC_MSG_CHECKING([if SPNEGO support is requested])
1151if 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
1168else
1169  AC_MSG_RESULT(no)
1170fi
1171
1172dnl **********************************************************************
1173dnl Check for GSS-API libraries
1174dnl **********************************************************************
1175
1176dnl check for GSS-API stuff in the /usr as default
1177
1178GSSAPI_ROOT="/usr"
1179AC_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
1186AC_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
1193AC_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
1206save_CPPFLAGS="$CPPFLAGS"
1207AC_MSG_CHECKING([if GSS-API support is requested])
1208if 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        [
1237AC_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  )
1282else
1283  AC_MSG_RESULT(no)
1284fi
1285if 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
1335else
1336  CPPFLAGS="$save_CPPFLAGS"
1337fi
1338
1339dnl -------------------------------------------------
1340dnl check winssl option before other SSL libraries
1341dnl -------------------------------------------------
1342
1343OPT_WINSSL=no
1344AC_ARG_WITH(winssl,dnl
1345AC_HELP_STRING([--with-winssl],[enable Windows native SSL/TLS])
1346AC_HELP_STRING([--without-winssl], [disable Windows native SSL/TLS]),
1347  OPT_WINSSL=$withval)
1348
1349AC_MSG_CHECKING([whether to enable Windows native SSL/TLS (Windows native builds only)])
1350if 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
1365else
1366  AC_MSG_RESULT(no)
1367fi
1368
1369OPT_DARWINSSL=no
1370AC_ARG_WITH(darwinssl,dnl
1371AC_HELP_STRING([--with-darwinssl],[enable iOS/Mac OS X native SSL/TLS])
1372AC_HELP_STRING([--without-darwinssl], [disable iOS/Mac OS X native SSL/TLS]),
1373  OPT_DARWINSSL=$withval)
1374
1375AC_MSG_CHECKING([whether to enable iOS/Mac OS X native SSL/TLS])
1376if 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
1388else
1389  AC_MSG_RESULT(no)
1390fi
1391
1392dnl **********************************************************************
1393dnl Check for the presence of SSL libraries and headers
1394dnl **********************************************************************
1395
1396dnl Default to compiler & linker defaults for SSL files & libraries.
1397OPT_SSL=off
1398dnl Default to no CA bundle
1399ca="no"
1400AC_ARG_WITH(ssl,dnl
1401AC_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])
1402AC_HELP_STRING([--without-ssl], [disable OpenSSL]),
1403  OPT_SSL=$withval)
1404
1405if 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
1648fi
1649
1650dnl **********************************************************************
1651dnl Check for the random seed preferences
1652dnl **********************************************************************
1653
1654if 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
1684fi
1685
1686dnl ---
1687dnl We require OpenSSL with SRP support.
1688dnl ---
1689if 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   ])
1695fi
1696
1697dnl ----------------------------------------------------
1698dnl check for GnuTLS
1699dnl ----------------------------------------------------
1700
1701dnl Default to compiler & linker defaults for GnuTLS files & libraries.
1702OPT_GNUTLS=no
1703
1704AC_ARG_WITH(gnutls,dnl
1705AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root])
1706AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]),
1707  OPT_GNUTLS=$withval)
1708
1709if 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
1810fi
1811
1812dnl ---
1813dnl Check which crypto backend GnuTLS uses
1814dnl ---
1815
1816if 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
1840fi
1841
1842dnl ---
1843dnl We require GnuTLS with SRP support.
1844dnl ---
1845if 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   ])
1851fi
1852
1853dnl ----------------------------------------------------
1854dnl check for PolarSSL
1855dnl ----------------------------------------------------
1856
1857dnl Default to compiler & linker defaults for PolarSSL files & libraries.
1858OPT_POLARSSL=no
1859
1860_cppflags=$CPPFLAGS
1861_ldflags=$LDFLAGS
1862AC_ARG_WITH(polarssl,dnl
1863AC_HELP_STRING([--with-polarssl=PATH],[where to look for PolarSSL, PATH points to the installation root])
1864AC_HELP_STRING([--without-polarssl], [disable PolarSSL detection]),
1865  OPT_POLARSSL=$withval)
1866
1867if 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
1939fi
1940
1941dnl ----------------------------------------------------
1942dnl check for CyaSSL
1943dnl ----------------------------------------------------
1944
1945dnl Default to compiler & linker defaults for CyaSSL files & libraries.
1946OPT_CYASSL=no
1947
1948_cppflags=$CPPFLAGS
1949_ldflags=$LDFLAGS
1950AC_ARG_WITH(cyassl,dnl
1951AC_HELP_STRING([--with-cyassl=PATH],[where to look for CyaSSL, PATH points to the installation root (default: system lib default)])
1952AC_HELP_STRING([--without-cyassl], [disable CyaSSL detection]),
1953  OPT_CYASSL=$withval)
1954
1955if 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
2034fi
2035
2036dnl ----------------------------------------------------
2037dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
2038dnl ----------------------------------------------------
2039
2040dnl Default to compiler & linker defaults for NSS files & libraries.
2041OPT_NSS=no
2042
2043AC_ARG_WITH(nss,dnl
2044AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root])
2045AC_HELP_STRING([--without-nss], [disable NSS detection]),
2046  OPT_NSS=$withval)
2047
2048if 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
2132fi dnl curl_ssl_msg = init_ssl_msg
2133
2134OPT_AXTLS=off
2135
2136AC_ARG_WITH(axtls,dnl
2137AC_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.])
2138AC_HELP_STRING([--without-axtls], [disable axTLS]),
2139  OPT_AXTLS=$withval)
2140
2141if 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
2188fi
2189
2190if 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.])
2193else
2194  # SSL is enabled, genericly
2195  AC_SUBST(SSL_ENABLED)
2196  SSL_ENABLED="1"
2197fi
2198
2199dnl **********************************************************************
2200dnl Check for the CA bundle
2201dnl **********************************************************************
2202
2203CURL_CHECK_CA_BUNDLE
2204
2205dnl **********************************************************************
2206dnl Check for libmetalink
2207dnl **********************************************************************
2208
2209OPT_LIBMETALINK=no
2210
2211AC_ARG_WITH(libmetalink,dnl
2212AC_HELP_STRING([--with-libmetalink=PATH],[where to look for libmetalink, PATH points to the installation root])
2213AC_HELP_STRING([--without-libmetalink], [disable libmetalink detection]),
2214  OPT_LIBMETALINK=$withval)
2215
2216if 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
2291fi
2292
2293dnl **********************************************************************
2294dnl Check for the presence of LIBSSH2 libraries and headers
2295dnl **********************************************************************
2296
2297dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
2298OPT_LIBSSH2=off
2299AC_ARG_WITH(libssh2,dnl
2300AC_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])
2301AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
2302  OPT_LIBSSH2=$withval)
2303
2304if 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
2383fi
2384
2385dnl **********************************************************************
2386dnl Check for the presence of LIBRTMP libraries and headers
2387dnl **********************************************************************
2388
2389dnl Default to compiler & linker defaults for LIBRTMP files & libraries.
2390OPT_LIBRTMP=off
2391AC_ARG_WITH(librtmp,dnl
2392AC_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])
2393AC_HELP_STRING([--without-librtmp], [disable LIBRTMP]),
2394  OPT_LIBRTMP=$withval)
2395
2396if 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
2461fi
2462
2463dnl **********************************************************************
2464dnl Check for linker switch for versioned symbols
2465dnl **********************************************************************
2466
2467versioned_symbols_flavour=
2468AC_MSG_CHECKING([whether versioned symbols are wanted])
2469AC_ARG_ENABLE(versioned-symbols,
2470AC_HELP_STRING([--enable-versioned-symbols], [Enable versioned symbols in shared library])
2471AC_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], [
2508AC_MSG_RESULT(no)
2509]
2510)
2511
2512AC_SUBST([CURL_LT_SHLIB_VERSIONED_FLAVOUR],
2513  ["$versioned_symbols_flavour"])
2514AM_CONDITIONAL([CURL_LT_SHLIB_USE_VERSIONED_SYMBOLS],
2515  [test "x$versioned_symbols" = 'xyes'])
2516
2517dnl -------------------------------------------------
2518dnl check winidn option before other IDN libraries
2519dnl -------------------------------------------------
2520
2521AC_MSG_CHECKING([whether to enable Windows native IDN (Windows native builds only)])
2522OPT_WINIDN="default"
2523AC_ARG_WITH(winidn,
2524AC_HELP_STRING([--with-winidn=PATH],[enable Windows native IDN])
2525AC_HELP_STRING([--without-winidn], [disable Windows native IDN]),
2526  OPT_WINIDN=$withval)
2527case "$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    ;;
2545esac
2546
2547if 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
2588fi
2589
2590dnl **********************************************************************
2591dnl Check for the presence of IDN libraries and headers
2592dnl **********************************************************************
2593
2594AC_MSG_CHECKING([whether to build with libidn])
2595OPT_IDN="default"
2596AC_ARG_WITH(libidn,
2597AC_HELP_STRING([--with-libidn=PATH],[Enable libidn usage])
2598AC_HELP_STRING([--without-libidn],[Disable libidn usage]),
2599  [OPT_IDN=$withval])
2600case "$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    ;;
2624esac
2625
2626if 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
2730fi
2731
2732
2733dnl Let's hope this split URL remains working:
2734dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
2735dnl genprogc/thread_quick_ref.htm
2736
2737
2738dnl **********************************************************************
2739dnl Check for nghttp2
2740dnl **********************************************************************
2741
2742OPT_H2="yes"
2743AC_ARG_WITH(nghttp2,
2744AC_HELP_STRING([--with-nghttp2=PATH],[Enable nghttp2 usage])
2745AC_HELP_STRING([--without-nghttp2],[Disable nghttp2 usage]),
2746  [OPT_H2=$withval])
2747case "$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    ;;
2762esac
2763
2764curl_h2_msg="disabled (--with-nghttp2)"
2765if 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
2814fi
2815
2816dnl **********************************************************************
2817dnl Back to "normal" configuring
2818dnl **********************************************************************
2819
2820dnl Checks for header files.
2821AC_HEADER_STDC
2822
2823CURL_CHECK_HEADER_MALLOC
2824CURL_CHECK_HEADER_MEMORY
2825
2826dnl Now check for the very most basic headers. Then we can use these
2827dnl ones as default-headers when checking for the rest!
2828AC_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,
2870dnl to do if not found
2871[],
2872dnl to do if found
2873[],
2874dnl 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
2897dnl Checks for typedefs, structures, and compiler characteristics.
2898AC_C_CONST
2899CURL_CHECK_VARIADIC_MACROS
2900AC_TYPE_SIZE_T
2901AC_HEADER_TIME
2902CURL_CHECK_STRUCT_TIMEVAL
2903CURL_VERIFY_RUNTIMELIBS
2904
2905AC_CHECK_SIZEOF(size_t)
2906AC_CHECK_SIZEOF(long)
2907AC_CHECK_SIZEOF(int)
2908AC_CHECK_SIZEOF(short)
2909CURL_CONFIGURE_LONG
2910AC_CHECK_SIZEOF(time_t)
2911AC_CHECK_SIZEOF(off_t)
2912
2913soname_bump=no
2914if 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
2919fi
2920
2921
2922AC_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
2928if 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  ])
2941fi
2942
2943
2944# check for ssize_t
2945AC_CHECK_TYPE(ssize_t, ,
2946   AC_DEFINE(ssize_t, int, [the signed version of size_t]))
2947
2948# check for bool type
2949AC_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
2961CURL_CONFIGURE_CURL_SOCKLEN_T
2962
2963CURL_CONFIGURE_PULL_SYS_POLL
2964
2965TYPE_IN_ADDR_T
2966
2967TYPE_SOCKADDR_STORAGE
2968
2969TYPE_SIG_ATOMIC_T
2970
2971AC_TYPE_SIGNAL
2972
2973CURL_CHECK_FUNC_SELECT
2974
2975CURL_CHECK_FUNC_RECV
2976CURL_CHECK_FUNC_SEND
2977CURL_CHECK_MSG_NOSIGNAL
2978
2979CURL_CHECK_FUNC_ALARM
2980CURL_CHECK_FUNC_BASENAME
2981CURL_CHECK_FUNC_CLOSESOCKET
2982CURL_CHECK_FUNC_CLOSESOCKET_CAMEL
2983CURL_CHECK_FUNC_CONNECT
2984CURL_CHECK_FUNC_FCNTL
2985CURL_CHECK_FUNC_FDOPEN
2986CURL_CHECK_FUNC_FREEADDRINFO
2987CURL_CHECK_FUNC_FREEIFADDRS
2988CURL_CHECK_FUNC_FSETXATTR
2989CURL_CHECK_FUNC_FTRUNCATE
2990CURL_CHECK_FUNC_GETADDRINFO
2991CURL_CHECK_FUNC_GAI_STRERROR
2992CURL_CHECK_FUNC_GETHOSTBYADDR
2993CURL_CHECK_FUNC_GETHOSTBYADDR_R
2994CURL_CHECK_FUNC_GETHOSTBYNAME
2995CURL_CHECK_FUNC_GETHOSTBYNAME_R
2996CURL_CHECK_FUNC_GETHOSTNAME
2997CURL_CHECK_FUNC_GETIFADDRS
2998CURL_CHECK_FUNC_GETSERVBYPORT_R
2999CURL_CHECK_FUNC_GMTIME_R
3000CURL_CHECK_FUNC_INET_NTOA_R
3001CURL_CHECK_FUNC_INET_NTOP
3002CURL_CHECK_FUNC_INET_PTON
3003CURL_CHECK_FUNC_IOCTL
3004CURL_CHECK_FUNC_IOCTLSOCKET
3005CURL_CHECK_FUNC_IOCTLSOCKET_CAMEL
3006CURL_CHECK_FUNC_LOCALTIME_R
3007CURL_CHECK_FUNC_MEMRCHR
3008CURL_CHECK_FUNC_POLL
3009CURL_CHECK_FUNC_SETSOCKOPT
3010CURL_CHECK_FUNC_SIGACTION
3011CURL_CHECK_FUNC_SIGINTERRUPT
3012CURL_CHECK_FUNC_SIGNAL
3013CURL_CHECK_FUNC_SIGSETJMP
3014CURL_CHECK_FUNC_SOCKET
3015CURL_CHECK_FUNC_SOCKETPAIR
3016CURL_CHECK_FUNC_STRCASECMP
3017CURL_CHECK_FUNC_STRCMPI
3018CURL_CHECK_FUNC_STRDUP
3019CURL_CHECK_FUNC_STRERROR_R
3020CURL_CHECK_FUNC_STRICMP
3021CURL_CHECK_FUNC_STRNCASECMP
3022CURL_CHECK_FUNC_STRNCMPI
3023CURL_CHECK_FUNC_STRNICMP
3024CURL_CHECK_FUNC_STRSTR
3025CURL_CHECK_FUNC_STRTOK_R
3026CURL_CHECK_FUNC_STRTOLL
3027CURL_CHECK_FUNC_WRITEV
3028
3029case $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    ;;
3035esac
3036
3037AC_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
3077dnl Check if the getnameinfo function is available
3078dnl and get the types of five of its arguments.
3079CURL_CHECK_FUNC_GETNAMEINFO
3080
3081if 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
3088fi
3089
3090CURL_CHECK_NONBLOCKING_SOCKET
3091
3092dnl ************************************************************
3093dnl nroff tool stuff
3094dnl
3095
3096AC_PATH_PROG( PERL, perl, ,
3097  $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
3098AC_SUBST(PERL)
3099
3100AC_PATH_PROGS( NROFF, gnroff nroff, ,
3101  $PATH:/usr/bin/:/usr/local/bin )
3102AC_SUBST(NROFF)
3103
3104if 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)
3124fi
3125
3126if test -z "$MANOPT"
3127then
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";
3132fi
3133
3134dnl *************************************************************************
3135dnl If the manual variable still is set, then we go with providing a built-in
3136dnl manual
3137
3138if 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"
3141fi
3142
3143dnl set variable for use in automakefile(s)
3144AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
3145
3146CURL_CHECK_LIB_ARES
3147AM_CONDITIONAL(USE_EMBEDDED_ARES, test x$embedded_ares = xyes)
3148
3149if test "x$ac_cv_native_windows" != "xyes" &&
3150   test "x$enable_shared" = "xyes"; then
3151  build_libhostname=yes
3152else
3153  build_libhostname=no
3154fi
3155AM_CONDITIONAL(BUILD_LIBHOSTNAME, test x$build_libhostname = xyes)
3156
3157CURL_CHECK_OPTION_THREADED_RESOLVER
3158
3159if 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])
3162fi
3163
3164if 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  ])
3189fi
3190
3191dnl ************************************************************
3192dnl disable verbose text strings
3193dnl
3194AC_MSG_CHECKING([whether to enable verbose strings])
3195AC_ARG_ENABLE(verbose,
3196AC_HELP_STRING([--enable-verbose],[Enable verbose strings])
3197AC_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
3210dnl ************************************************************
3211dnl enable SSPI support
3212dnl
3213AC_MSG_CHECKING([whether to enable SSPI support (Windows native builds only)])
3214AC_ARG_ENABLE(sspi,
3215AC_HELP_STRING([--enable-sspi],[Enable SSPI])
3216AC_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
3246dnl ************************************************************
3247dnl disable cryptographic authentication
3248dnl
3249AC_MSG_CHECKING([whether to enable cryptographic authentication methods])
3250AC_ARG_ENABLE(crypto-auth,
3251AC_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication])
3252AC_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
3265CURL_CHECK_OPTION_NTLM_WB
3266
3267CURL_CHECK_NTLM_WB
3268
3269dnl ************************************************************
3270dnl disable TLS-SRP authentication
3271dnl
3272AC_MSG_CHECKING([whether to enable TLS-SRP authentication])
3273AC_ARG_ENABLE(tls-srp,
3274AC_HELP_STRING([--enable-tls-srp],[Enable TLS-SRP authentication])
3275AC_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
3290if 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"
3294fi
3295
3296dnl ************************************************************
3297dnl disable cookies support
3298dnl
3299AC_MSG_CHECKING([whether to enable support for cookies])
3300AC_ARG_ENABLE(cookies,
3301AC_HELP_STRING([--enable-cookies],[Enable cookies support])
3302AC_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
3314dnl ************************************************************
3315dnl hiding of library internal symbols
3316dnl
3317CURL_CONFIGURE_SYMBOL_HIDING
3318
3319dnl ************************************************************
3320dnl enforce SONAME bump
3321dnl
3322
3323AC_MSG_CHECKING([whether to enforce SONAME bump])
3324AC_ARG_ENABLE(soname-bump,
3325AC_HELP_STRING([--enable-soname-bump],[Enable enforced SONAME bump])
3326AC_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)
3337AM_CONDITIONAL(SONAME_BUMP, test x$soname_bump = xyes)
3338
3339dnl
3340dnl All the library dependencies put into $LIB apply to libcurl only.
3341dnl
3342LIBCURL_LIBS=$LIBS
3343
3344AC_SUBST(LIBCURL_LIBS)
3345AC_SUBST(CURL_NETWORK_LIBS)
3346AC_SUBST(CURL_NETWORK_AND_TIME_LIBS)
3347
3348dnl BLANK_AT_MAKETIME may be used in our Makefile.am files to blank
3349dnl LIBS variable used in generated makefile at makefile processing
3350dnl time. Doing this functionally prevents LIBS from being used for
3351dnl all link targets in given makefile.
3352BLANK_AT_MAKETIME=
3353AC_SUBST(BLANK_AT_MAKETIME)
3354
3355AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes)
3356
3357dnl yes or no
3358ENABLE_SHARED="$enable_shared"
3359AC_SUBST(ENABLE_SHARED)
3360
3361dnl to let curl-config output the static libraries correctly
3362ENABLE_STATIC="$enable_static"
3363AC_SUBST(ENABLE_STATIC)
3364
3365
3366dnl
3367dnl For keeping supported features and protocols also in pkg-config file
3368dnl since it is more cross-compile friendly than curl-config
3369dnl
3370
3371if test "x$USE_SSLEAY" = "x1"; then
3372  SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3373elif test -n "$SSL_ENABLED"; then
3374  SUPPORT_FEATURES="$SUPPORT_FEATURES SSL"
3375fi
3376if test "x$IPV6_ENABLED" = "x1"; then
3377  SUPPORT_FEATURES="$SUPPORT_FEATURES IPv6"
3378fi
3379if test "x$HAVE_LIBZ" = "x1"; then
3380  SUPPORT_FEATURES="$SUPPORT_FEATURES libz"
3381fi
3382if test "x$USE_ARES" = "x1" -o "x$USE_THREADS_POSIX" = "x1"; then
3383  SUPPORT_FEATURES="$SUPPORT_FEATURES AsynchDNS"
3384fi
3385if test "x$IDN_ENABLED" = "x1"; then
3386  SUPPORT_FEATURES="$SUPPORT_FEATURES IDN"
3387fi
3388if test "x$USE_WINDOWS_SSPI" = "x1"; then
3389  SUPPORT_FEATURES="$SUPPORT_FEATURES SSPI"
3390fi
3391if 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
3401fi
3402if test "x$USE_TLS_SRP" = "x1"; then
3403  SUPPORT_FEATURES="$SUPPORT_FEATURES TLS-SRP"
3404fi
3405
3406if test "x$USE_NGHTTP2" = "x1"; then
3407  SUPPORT_FEATURES="$SUPPORT_FEATURES HTTP2"
3408fi
3409if test "x$curl_spnego_msg" = "xenabled"; then
3410  SUPPORT_FEATURES="$SUPPORT_FEATURES SPNEGO"
3411fi
3412if test "x$want_gss" = "xyes"; then
3413  SUPPORT_FEATURES="$SUPPORT_FEATURES GSS-API"
3414fi
3415
3416AC_SUBST(SUPPORT_FEATURES)
3417
3418dnl For supported protocols in pkg-config file
3419if 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
3424fi
3425if 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
3430fi
3431if test "x$CURL_DISABLE_FILE" != "x1"; then
3432  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS FILE"
3433fi
3434if test "x$CURL_DISABLE_TELNET" != "x1"; then
3435  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TELNET"
3436fi
3437if 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
3445fi
3446if test "x$CURL_DISABLE_DICT" != "x1"; then
3447  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS DICT"
3448fi
3449if test "x$CURL_DISABLE_TFTP" != "x1"; then
3450  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS TFTP"
3451fi
3452if test "x$CURL_DISABLE_GOPHER" != "x1"; then
3453  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS GOPHER"
3454fi
3455if 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
3460fi
3461if 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
3466fi
3467if 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
3472fi
3473if test "x$USE_LIBSSH2" = "x1"; then
3474  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SCP"
3475  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS SFTP"
3476fi
3477if test "x$CURL_DISABLE_RTSP" != "x1"; then
3478  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTSP"
3479fi
3480if test "x$USE_LIBRTMP" = "x1"; then
3481  SUPPORT_PROTOCOLS="$SUPPORT_PROTOCOLS RTMP"
3482fi
3483
3484dnl replace spaces with newlines
3485dnl sort the lines
3486dnl replace the newlines back to spaces
3487SUPPORT_PROTOCOLS=`echo $SUPPORT_PROTOCOLS | tr ' ' '\012' | sort | tr '\012' ' '`
3488
3489AC_SUBST(SUPPORT_PROTOCOLS)
3490
3491dnl squeeze whitespace out of some variables
3492
3493squeeze CFLAGS
3494squeeze CPPFLAGS
3495squeeze DEFS
3496squeeze LDFLAGS
3497squeeze LIBS
3498
3499squeeze LIBCURL_LIBS
3500squeeze CURL_NETWORK_LIBS
3501squeeze CURL_NETWORK_AND_TIME_LIBS
3502
3503squeeze SUPPORT_FEATURES
3504squeeze SUPPORT_PROTOCOLS
3505
3506XC_CHECK_BUILD_FLAGS
3507
3508if 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"
3511fi
3512
3513AC_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])
3547AC_OUTPUT
3548
3549CURL_GENERATE_CONFIGUREHELP_PM
3550
3551XC_AMEND_DISTCLEAN([lib src tests/unit tests/server tests/libtest docs/examples])
3552
3553AC_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
3584if test "x$soname_bump" = "xyes"; then
3585
3586cat <<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.
3590EOM
3591
3592fi
3593
3594