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