Skip to content
Snippets Groups Projects
configure.ac 61 KiB
Newer Older
  • Learn to ignore specific revisions
  • #***************************************************************************
    #                                  _   _ ____  _
    #  Project                     ___| | | |  _ \| |
    #                             / __| | | | |_) | |
    #                            | (__| |_| |  _ <| |___
    #                             \___|\___/|_| \_\_____|
    #
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    # Copyright (C) 1998 - 2006, Daniel Stenberg, <daniel@haxx.se>, et al.
    
    #
    # This software is licensed as described in the file COPYING, which
    # you should have received as part of this distribution. The terms
    # are also available at http://curl.haxx.se/docs/copyright.html.
    #
    # You may opt to use, copy, modify, merge, publish, distribute and/or sell
    # copies of the Software, and permit persons to whom the Software is
    # furnished to do so, under the terms of the COPYING file.
    #
    # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
    # KIND, either express or implied.
    #
    # $Id$
    ###########################################################################
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    dnl Process this file with autoconf to produce a configure script.
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    AC_PREREQ(2.57)
    
    dnl We don't know the version number "staticly" so we use a dash here
    
    AC_INIT(curl, [-], [a suitable curl mailing list => http://curl.haxx.se/mail/])
    
    AC_COPYRIGHT([Copyright (c) 1998 - 2006 Daniel Stenberg, <daniel@haxx.se>
    
    This configure script may be copied, distributed and modified under the 
    terms of the curl license; see COPYING for more details])
    
    
    AC_CONFIG_SRCDIR([lib/urldata.h])
    
    AM_CONFIG_HEADER(lib/config.h src/config.h)
    
    dnl SED is needed by some of the tools
    
    AC_PATH_PROG( SED, sed, sed-was-not-found-by-configure,
                  $PATH:/usr/bin:/usr/local/bin)
    
    AC_SUBST(SED)
    
    
    if test "x$SED" = "xsed-was-not-found-by-configure"; then
      AC_MSG_WARN([sed was not found, this may ruin your chances to build fine])
    fi
    
    
    dnl AR is used by libtool, and try the odd Solaris path too
    
    dnl we use AC_CHECK_TOOL since this should make a library for the target
    dnl platform
    AC_CHECK_TOOL(AR, ar,
    
                  ar-was-not-found-by-configure,
                  $PATH:/usr/bin:/usr/local/bin:/usr/ccs/bin)
    
    if test "x$AR" = "xar-was-not-found-by-configure"; then
      AC_MSG_WARN([ar was not found, this may ruin your chances to build fine])
    fi
    
    dnl figure out the libcurl version
    
    VERSION=`$SED -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curlver.h`
    
    AC_MSG_CHECKING([curl version])
    AC_MSG_RESULT($VERSION)
    
    dnl
    dnl we extract the numerical version for curl-config only
    
    VERSIONNUM=`$SED -ne 's/^#define LIBCURL_VERSION_NUM 0x\(.*\)/\1/p' ${srcdir}/include/curl/curlver.h`
    
    dnl Solaris pkgadd support definitions
    PKGADD_PKG="HAXXcurl"
    PKGADD_NAME="cURL - a client that groks URLs"
    PKGADD_VENDOR="curl.haxx.se"
    AC_SUBST(PKGADD_PKG)
    AC_SUBST(PKGADD_NAME)
    AC_SUBST(PKGADD_VENDOR)
    
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    dnl
    
    dnl initialize all the info variables
    
        curl_ssl_msg="no      (--with-ssl / --with-gnutls)"
    
        curl_ssh_msg="no      (--with-libssh2)"
    
       curl_zlib_msg="no      (--with-zlib)"
       curl_krb4_msg="no      (--with-krb4*)"
        curl_gss_msg="no      (--with-gssapi)"
     curl_spnego_msg="no      (--with-spnego)"
       curl_ares_msg="no      (--enable-ares)"
       curl_ipv6_msg="no      (--enable-ipv6)"
        curl_idn_msg="no      (--with-libidn)"
     curl_manual_msg="no      (--enable-manual)"
    curl_verbose_msg="enabled (--disable-verbose)"
    
    dnl
    dnl Detect the canonical host and target build environment
    dnl
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    
    AC_CANONICAL_HOST
    
    dnl Get system canonical name
    
    AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
    
    
    dnl Check for AIX weirdos
    AC_AIX
    
    
    dnl Checks for programs.
    AC_PROG_CC
    
    
    dnl check for how to do large files
    
    AC_SYS_LARGEFILE
    
    dnl check for cygwin stuff
    AC_LIBTOOL_WIN32_DLL
    
    dnl libtool setup
    
    AC_MSG_CHECKING([if we need -no-undefined])
    
      *-*-cygwin | *-*-mingw* | *-*-pw32*)
    
    AM_CONDITIONAL(NO_UNDEFINED, test x$need_no_undefined = xyes)
    
    
    AC_MSG_CHECKING([if we need -mimpure-text])
    
    case $host in
      *-*-solaris2*)
        if test "$GCC" = "yes"; then
          mimpure="yes"
        fi
        ;;
      *)
        ;;
    esac
    AC_MSG_RESULT($mimpure)
    AM_CONDITIONAL(MIMPURE, test x$mimpure = xyes)
    
    
    AC_MSG_CHECKING([if we need BUILDING_LIBCURL])
    case $host in
      *-*-mingw*)
        AC_DEFINE(BUILDING_LIBCURL, 1, [when building libcurl itself])
        AC_MSG_RESULT(yes)
    
        AC_MSG_CHECKING([if we need CURL_STATICLIB])
    
        if test "X$enable_shared" = "Xno"
        then
          AC_DEFINE(CURL_STATICLIB, 1, [when not building a shared library])
          AC_MSG_RESULT(yes)
    
    dnl The install stuff has already been taken care of by the automake stuff
    dnl AC_PROG_INSTALL
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    AC_PROG_MAKE_SET
    
    
    dnl **********************************************************************
    dnl Make sure that our checks for headers windows.h winsock.h winsock2.h 
    dnl and ws2tcpip.h take precedence over any other further checks which 
    dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
    dnl this specific header files. And do them before its results are used.
    dnl **********************************************************************
    
    CURL_CHECK_HEADER_WINDOWS
    CURL_CHECK_HEADER_WINSOCK
    CURL_CHECK_HEADER_WINSOCK2
    CURL_CHECK_HEADER_WS2TCPIP
    
    
    
    dnl ************************************************************
    dnl switch off particular protocols
    dnl
    AC_MSG_CHECKING([whether to support http])
    AC_ARG_ENABLE(http,
    
    AC_HELP_STRING([--enable-http],[Enable HTTP support])
    AC_HELP_STRING([--disable-http],[Disable HTTP support]),
    
    [ case "$enableval" in
      no)
           AC_MSG_RESULT(no)
    
           AC_DEFINE(CURL_DISABLE_HTTP, 1, [to disable HTTP])
    
           AC_MSG_WARN([disable HTTP disables FTP over proxy])
    
           ;;
      *)   AC_MSG_RESULT(yes)
           ;;
      esac ],
           AC_MSG_RESULT(yes)
    )
    AC_MSG_CHECKING([whether to support ftp])
    AC_ARG_ENABLE(ftp,
    
    AC_HELP_STRING([--enable-ftp],[Enable FTP support])
    AC_HELP_STRING([--disable-ftp],[Disable FTP support]),
    
    [ case "$enableval" in
      no)
           AC_MSG_RESULT(no)
    
           AC_DEFINE(CURL_DISABLE_FTP, 1, [to disable FTP])
    
           ;;
      *)   AC_MSG_RESULT(yes)
           ;;
      esac ],
           AC_MSG_RESULT(yes)
    )
    AC_MSG_CHECKING([whether to support file])
    AC_ARG_ENABLE(file,
    
    AC_HELP_STRING([--enable-file],[Enable FILE support])
    AC_HELP_STRING([--disable-file],[Disable FILE support]),
    
    [ case "$enableval" in
      no)
           AC_MSG_RESULT(no)
    
           AC_DEFINE(CURL_DISABLE_FILE, 1, [to disable FILE])
    
           ;;
      *)   AC_MSG_RESULT(yes)
           ;;
      esac ],
           AC_MSG_RESULT(yes)
    )
    AC_MSG_CHECKING([whether to support ldap])
    AC_ARG_ENABLE(ldap,
    
    AC_HELP_STRING([--enable-ldap],[Enable LDAP support])
    AC_HELP_STRING([--disable-ldap],[Disable LDAP support]),
    
    [ case "$enableval" in
      no)
           AC_MSG_RESULT(no)
    
           AC_DEFINE(CURL_DISABLE_LDAP, 1, [to disable LDAP])
    
           ;;
      *)   AC_MSG_RESULT(yes)
           ;;
      esac ],
           AC_MSG_RESULT(yes)
    )
    AC_MSG_CHECKING([whether to support dict])
    AC_ARG_ENABLE(dict,
    
    AC_HELP_STRING([--enable-dict],[Enable DICT support])
    AC_HELP_STRING([--disable-dict],[Disable DICT support]),
    
    [ case "$enableval" in
      no)
           AC_MSG_RESULT(no)
    
           AC_DEFINE(CURL_DISABLE_DICT, 1, [to disable DICT])
    
           ;;
      *)   AC_MSG_RESULT(yes)
           ;;
      esac ],
           AC_MSG_RESULT(yes)
    )
    AC_MSG_CHECKING([whether to support telnet])
    AC_ARG_ENABLE(telnet,
    
    AC_HELP_STRING([--enable-telnet],[Enable TELNET support])
    AC_HELP_STRING([--disable-telnet],[Disable TELNET support]),
    
    [ case "$enableval" in
      no)
           AC_MSG_RESULT(no)
    
           AC_DEFINE(CURL_DISABLE_TELNET, 1, [to disable TELNET])
    
           ;;
      *)   AC_MSG_RESULT(yes)
           ;;
      esac ],
           AC_MSG_RESULT(yes)
    )
    
    AC_MSG_CHECKING([whether to support tftp])
    AC_ARG_ENABLE(tftp,
    AC_HELP_STRING([--enable-tftp],[Enable TFTP support])
    AC_HELP_STRING([--disable-tftp],[Disable TFTP support]),
    [ case "$enableval" in
      no)
           AC_MSG_RESULT(no)
           AC_DEFINE(CURL_DISABLE_TFTP, 1, [to disable TFTP])
           AC_SUBST(CURL_DISABLE_TFTP, [1])
           ;;
      *)   AC_MSG_RESULT(yes)
           ;;
      esac ],
           AC_MSG_RESULT(yes)
    )
    
    dnl **********************************************************************
    dnl Check for built-in manual
    dnl **********************************************************************
    
    AC_MSG_CHECKING([whether to provide built-in manual])
    AC_ARG_ENABLE(manual,
    AC_HELP_STRING([--enable-manual],[Enable built-in manual])
    AC_HELP_STRING([--disable-manual],[Disable built-in manual]),
    [ case "$enableval" in
      no)
           AC_MSG_RESULT(no)
           ;;
      *)   AC_MSG_RESULT(yes)
           USE_MANUAL="1"
           ;;
      esac ],
           AC_MSG_RESULT(yes)
           USE_MANUAL="1"
    )
    dnl The actual use of the USE_MANUAL variable is done much later in this
    dnl script to allow other actions to disable it as well.
    
    
    dnl **********************************************************************
    dnl check if this is the Intel ICC compiler, and if so make it stricter
    dnl (convert warning 147 into an error) so that it properly can detect the
    dnl gethostbyname_r() version
    dnl **********************************************************************
    CURL_DETECT_ICC([CFLAGS="$CFLAGS -we 147"])
    
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    dnl **********************************************************************
    dnl Checks for libraries.
    dnl **********************************************************************
    
    
    dnl gethostbyname without lib or in the nsl lib?
    AC_CHECK_FUNC(gethostbyname,
                  [HAVE_GETHOSTBYNAME="1"
                  ],
                  [ AC_CHECK_LIB(nsl, gethostbyname,
                                 [HAVE_GETHOSTBYNAME="1"
                                 LIBS="$LIBS -lnsl"
                                 ])
                  ])
    
    if test "$HAVE_GETHOSTBYNAME" != "1"
    then
    
      AC_CHECK_LIB(socket, gethostbyname,
                   [HAVE_GETHOSTBYNAME="1"
                   LIBS="$LIBS -lsocket"
                   ])
    
    dnl At least one system has been identified to require BOTH nsl and socket
    dnl libs at the same time to link properly.
    if test "$HAVE_GETHOSTBYNAME" != "1"
    then
    
      AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs])
    
      my_ac_save_LIBS=$LIBS
      LIBS="-lnsl -lsocket $LIBS"
      AC_TRY_LINK( ,
                 [gethostbyname();],
    
                 AC_MSG_RESULT([yes])],
                 [ dnl failed!
                 AC_MSG_RESULT([no])
                 dnl restore LIBS
                 LIBS=$my_ac_save_LIBS]
                 )
    fi
    
    if test "$HAVE_GETHOSTBYNAME" != "1"
    then
      dnl This is for Msys/Mingw
      AC_MSG_CHECKING([for gethostbyname in ws2_32])
      my_ac_save_LIBS=$LIBS
      LIBS="-lws2_32 $LIBS"
      AC_TRY_LINK([#include <winsock2.h>],
                   [gethostbyname("www.dummysite.com");],
                   [ dnl worked!
    
                   HAVE_GETHOSTBYNAME="1"],
                   [ dnl failed, restore LIBS
                   LIBS=$my_ac_save_LIBS
                   AC_MSG_RESULT(no)]
                 )
    
    fi
    
    if test "$HAVE_GETHOSTBYNAME" != "1"
    then
      dnl This is for eCos with a stubbed DNS implementation
      AC_MSG_CHECKING([for gethostbyname for eCos])
      AC_TRY_LINK([
    #include <stdio.h>
    #include <netdb.h>],
                   [gethostbyname("www.dummysite.com");],
                   [ dnl worked!
                   AC_MSG_RESULT([yes])
                   HAVE_GETHOSTBYNAME="1"],
                   AC_MSG_RESULT(no)
                 )
    
    if test "$HAVE_GETHOSTBYNAME" != "1"
    then
      dnl gethostbyname in the net lib - for BeOS
      AC_CHECK_LIB(net, gethostbyname,
                   [HAVE_GETHOSTBYNAME="1"
                   LIBS="$LIBS -lnet"
                   ])
    fi
    
    
    
    if test "$HAVE_GETHOSTBYNAME" = "1"; then
      AC_DEFINE(HAVE_GETHOSTBYNAME, 1, [If you have gethostbyname])
    else
      AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    dnl resolve lib?
    
    AC_CHECK_FUNC(strcasecmp, , [ AC_CHECK_LIB(resolve, strcasecmp) ])
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    
    if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
      AC_CHECK_LIB(resolve, strcasecmp,
                  [LIBS="-lresolve $LIBS"],
                   ,
                   -lnsl)
    fi
    
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    dnl socket lib?
    
    AC_CHECK_FUNC(connect, , [ AC_CHECK_LIB(socket, connect) ])
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    dnl dl lib?
    
    AC_CHECK_FUNC(dlclose, , [ AC_CHECK_LIB(dl, dlopen) ])
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    
    AC_MSG_CHECKING([whether to use libgcc])
    AC_ARG_ENABLE(libgcc,
    AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
    [ case "$enableval" in
      yes)
            LIBS="$LIBS -lgcc"
           AC_MSG_RESULT(yes)
           ;;
      *)   AC_MSG_RESULT(no)
           ;;
      esac ],
           AC_MSG_RESULT(no)
    )
    
    
    dnl **********************************************************************
    
    dnl Check for the name of dynamic OpenLDAP libraries
    dnl **********************************************************************
    
    LDAPLIBNAME=""
    AC_ARG_WITH(ldap-lib,
    AC_HELP_STRING([--with-ldap-lib=libname],[Specify name of dynamic ldap lib file]),
     [LDAPLIBNAME="$withval"])
    
    LBERLIBNAME=""
    AC_ARG_WITH(lber-lib,
    AC_HELP_STRING([--with-lber-lib=libname],[Specify name of dynamic lber lib file]),
     [LBERLIBNAME="$withval"])
    
    if test x$CURL_DISABLE_LDAP != x1 ; then
    
      if test -z "$LDAPLIBNAME" ; then
        case $host in
          *-*-cygwin | *-*-mingw* | *-*-pw32*)
            dnl Windows uses a single and unique OpenLDAP DLL name
            LDAPLIBNAME="wldap32.dll"
            LBERLIBNAME="no"
            ;;
        esac
      fi
    
      if test "$LDAPLIBNAME" ; then
        AC_DEFINE_UNQUOTED(DL_LDAP_FILE, "$LDAPLIBNAME")
        AC_MSG_CHECKING([name of dynamic library ldap])
        AC_MSG_RESULT($LDAPLIBNAME)
      else
        dnl Try to find the right ldap library name for this system
        CURL_DLLIB_NAME(DL_LDAP_FILE, ldap)
      fi
    
      if test "$LBERLIBNAME" ; then
        dnl If name is "no" then don't define this variable at all
        dnl (it's only needed if libldap.so's dependencies are broken).
        if test "$LBERLIBNAME" != "no" ; then 
          AC_DEFINE_UNQUOTED(DL_LBER_FILE, "$LBERLIBNAME")
        fi
        AC_MSG_CHECKING([name of dynamic library lber])
        AC_MSG_RESULT($LBERLIBNAME)
      else
        dnl Try to find the right lber library name for this system
        CURL_DLLIB_NAME(DL_LBER_FILE, lber)
      fi
    fi
    
    dnl **********************************************************************
    
    dnl Check for the presence of the winmm library.
    dnl **********************************************************************
    
    
    case $host in
      *-*-cygwin*)
        dnl Under Cygwin, winmm exists but is not needed as WIN32 is not #defined
        dnl and gettimeofday() will be used regardless of the outcome of this test.
        dnl Skip this test, otherwise -lwinmm will be needlessly added to LIBS
        dnl (and recorded as such in the .la file, potentially affecting downstream
        dnl clients of the library.)
        ;;
      *)
        AC_MSG_CHECKING([for timeGetTime in winmm])
        my_ac_save_LIBS=$LIBS
        LIBS="-lwinmm $LIBS"
        AC_TRY_LINK([#include <windef.h>
                     #include <mmsystem.h>
                     ],
                     [timeGetTime();],
                     [ dnl worked!
                     AC_MSG_RESULT([yes])
                     ],
                     [ dnl failed, restore LIBS
                     LIBS=$my_ac_save_LIBS
                     AC_MSG_RESULT(no)]
                   )
        ;;
    esac
    
    dnl **********************************************************************
    dnl Checks for IPv6
    dnl **********************************************************************
    
    AC_MSG_CHECKING([whether to enable ipv6])
    AC_ARG_ENABLE(ipv6,
    AC_HELP_STRING([--enable-ipv6],[Enable ipv6 (with ipv4) support])
    AC_HELP_STRING([--disable-ipv6],[Disable ipv6 support]),
    [ case "$enableval" in
      no)
           AC_MSG_RESULT(no)
           ipv6=no
           ;;
      *)   AC_MSG_RESULT(yes)
           ipv6=yes
           ;;
      esac ],
    
      AC_TRY_RUN([ /* is AF_INET6 available? */
    #include <sys/types.h>
    #include <sys/socket.h>
    main()
    {
     if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
       exit(1);
     else
       exit(0);
    }
    ],
      AC_MSG_RESULT(yes)
      ipv6=yes,
      AC_MSG_RESULT(no)
      ipv6=no,
      AC_MSG_RESULT(no)
      ipv6=no
    ))
    
    if test "$ipv6" = "yes"; then
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
      curl_ipv6_msg="enabled"
    
    dnl **********************************************************************
    dnl Check how non-blocking sockets are set
    dnl **********************************************************************
    AC_ARG_ENABLE(nonblocking,
    
    AC_HELP_STRING([--enable-nonblocking],[Enable detecting how to do it])
    AC_HELP_STRING([--disable-nonblocking],[Disable non-blocking socket detection]),
    
    [
      if test "$enableval" = "no" ; then
        AC_MSG_WARN([non-blocking sockets disabled])
    
        AC_DEFINE(HAVE_DISABLED_NONBLOCKING, 1,
        [to disable NON-BLOCKING connections])
    
      else
        CURL_CHECK_NONBLOCKING_SOCKET
      fi
    ],
    [
      CURL_CHECK_NONBLOCKING_SOCKET
    ])
    
    
    dnl **********************************************************************
    dnl Check if the operating system allows programs to write to their own argv[]
    dnl **********************************************************************
    
    AC_MSG_CHECKING([if argv can be written to])
    
    AC_CACHE_VAL(curl_cv_writable_argv, [
    
    int main(int argc, char ** argv) {
    	argv[0][0] = ' ';
    	return (argv[0][0] == ' ')?0:1;
    }
    
    	curl_cv_writable_argv=yes,
    	curl_cv_writable_argv=no,
    	curl_cv_writable_argv=cross)
    ])
    case $curl_cv_writable_argv in
    yes)
    
    	AC_DEFINE(HAVE_WRITABLE_ARGV, 1, [Define this symbol if your OS supports changing the contents of argv])
    
            AC_MSG_RESULT(no)
            AC_MSG_WARN([the previous check could not be made default was used])
    
    dnl **********************************************************************
    dnl Check for the presence of Kerberos4 libraries and headers
    dnl **********************************************************************
    
    AC_ARG_WITH(krb4-includes,
    
    AC_HELP_STRING([--with-krb4-includes=DIR],
                   [Specify location of kerberos4 headers]),[
    
     CPPFLAGS="$CPPFLAGS -I$withval"
     KRB4INC="$withval"
     want_krb4=yes
     ])
    
    AC_ARG_WITH(krb4-libs,
    
    AC_HELP_STRING([--with-krb4-libs=DIR],[Specify location of kerberos4 libs]),[
    
     LDFLAGS="$LDFLAGS -L$withval"
     KRB4LIB="$withval"
     want_krb4=yes
     ])
    
    
    OPT_KRB4=off
    AC_ARG_WITH(krb4,dnl
    
    AC_HELP_STRING([--with-krb4=DIR],[where to look for Kerberos4]),[
    
      if test X"$OPT_KRB4" != Xno; then
        want_krb4="yes"
        if test X"$OPT_KRB4" != Xyes; then
          LDFLAGS="$LDFLAGS -L$OPT_KRB4/lib$libsuff"
          KRB4LIB="$OPT_KRB4/lib$libsuff"
          CPPFLAGS="$CPPFLAGS -I$OPT_KRB4/include"
          KRB4INC="$OPT_KRB4/include"
        fi
    
      fi
     ])
    
    AC_MSG_CHECKING([if Kerberos4 support is requested])
    
    if test "$want_krb4" = yes
    then
    
      if test "$ipv6" = "yes"; then
        echo krb4 is not compatible with IPv6
        exit 1
      fi
    
      AC_MSG_RESULT(yes)
    
      dnl Check for & handle argument to --with-krb4
    
      AC_MSG_CHECKING(where to look for Kerberos4)
      if test X"$OPT_KRB4" = Xyes
      then
        AC_MSG_RESULT([defaults])
      else
        AC_MSG_RESULT([libs in $KRB4LIB, headers in $KRB4INC])
      fi
    
      dnl Check for DES library
      AC_CHECK_LIB(des, des_pcbc_encrypt,
      [
        AC_CHECK_HEADERS(des.h)
    
        dnl resolv lib?
    
        AC_CHECK_FUNC(res_search, , [AC_CHECK_LIB(resolv, res_search)])
    
    
        dnl Check for the Kerberos4 library
        AC_CHECK_LIB(krb, krb_net_read,
        [
          dnl Check for header files
          AC_CHECK_HEADERS(krb.h)
    
          dnl we found the required libraries, add to LIBS
    
    
          dnl Check for function krb_get_our_ip_for_realm
          dnl this is needed for NAT networks
          AC_CHECK_FUNCS(krb_get_our_ip_for_realm)
    
          dnl add define KRB4
    
          AC_DEFINE(HAVE_KRB4, 1,
    
          [if you have the Kerberos4 libraries (including -ldes)])
    
          dnl substitute it too!
          KRB4_ENABLED=1
          AC_SUBST(KRB4_ENABLED)
    
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
          curl_krb4_msg="enabled"
    
    
          dnl the krb4 stuff needs a strlcpy()
          AC_CHECK_FUNCS(strlcpy)
    
        ])
      ])
    else
      AC_MSG_RESULT(no)
    fi
    
    
    dnl **********************************************************************
    dnl Check for FBopenssl(SPNEGO) libraries
    dnl **********************************************************************
    
    AC_ARG_WITH(spnego,
      AC_HELP_STRING([--with-spnego=DIR],
    
                     [Specify location of SPNEGO library fbopenssl]), [
      SPNEGO_ROOT="$withval"
      if test x"$SPNEGO_ROOT" != xno; then
        want_spnego="yes"
      fi
    ])
    
    
    AC_MSG_CHECKING([if SPNEGO support is requested])
    if test x"$want_spnego" = xyes; then
    
    
      if test X"$SPNEGO_ROOT" = Xyes; then
         AC_MSG_ERROR([FBOpenSSL libs and/or directories were not found where specified!])
         AC_MSG_RESULT(no)
    
         if test -z "$SPNEGO_LIB_DIR"; then
    
            LDFLAGS="$LDFLAGS -L$SPNEGO_ROOT -lfbopenssl"
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
         AC_DEFINE(HAVE_SPNEGO, 1,
                   [Define this if you have the SPNEGO library fbopenssl])
         curl_spnego_msg="enabled"
    
    dnl **********************************************************************
    dnl Check for GSS-API libraries
    dnl **********************************************************************
    
    AC_ARG_WITH(gssapi-includes,
      AC_HELP_STRING([--with-gssapi-includes=DIR],
                     [Specify location of GSSAPI header]),
      [ GSSAPI_INCS="-I$withval" 
        want_gss="yes" ]
    )
    
    AC_ARG_WITH(gssapi-libs,
      AC_HELP_STRING([--with-gssapi-libs=DIR],
      		 [Specify location of GSSAPI libs]),
    
      [ GSSAPI_LIB_DIR="-L$withval"
    
        want_gss="yes" ]
    )
    
    AC_ARG_WITH(gssapi,
      AC_HELP_STRING([--with-gssapi=DIR],
    
                     [Where to look for GSSAPI]), [
      GSSAPI_ROOT="$withval"
      if test x"$GSSAPI_ROOT" != xno; then
        want_gss="yes" 
      fi
    ])
    
    AC_MSG_CHECKING([if GSSAPI support is requested])
    if test x"$want_gss" = xyes; then
    
      AC_MSG_RESULT(yes)
    
    
      if test -z "$GSSAPI_INCS"; then
         if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
    
            GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
    
         elif test "$GSSAPI_ROOT" != "yes"; then
    
            GSSAPI_INCS="-I$GSSAPI_ROOT/include"
    
      CPPFLAGS="$CPPFLAGS $GSSAPI_INCS"
    
    
      AC_CHECK_HEADER(gss.h,
        [
          dnl found in the given dirs
          AC_DEFINE(HAVE_GSSGNU, 1, [if you have the GNU gssapi libraries])
          gnu_gss=yes
        ],
        [
          dnl not found, check Heimdal
          AC_CHECK_HEADER(gssapi.h,
            [
              dnl found in the given dirs
              AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have the Heimdal gssapi libraries])
            ],
            [
              dnl not found, check in gssapi/ subdir 
              AC_CHECK_HEADER(gssapi/gssapi.h,
                [
                  dnl found 
                  AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
                ],
                [
                  dnl no header found, disabling GSS
                  want_gss=no
                  AC_MSG_WARN(disabling GSSAPI since no header files was found)
                ]
              )
            ]
          )        
        ]
      )
    else
      AC_MSG_RESULT(no)
    fi
    if test x"$want_gss" = xyes; then
      AC_DEFINE(HAVE_GSSAPI, 1, [if you have the gssapi libraries])
    
      curl_gss_msg="enabled (MIT/Heimdal)"
    
      if test -n "$gnu_gss"; then
        curl_gss_msg="enabled (GNU GSS)"
        LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR -lgss"
      elif test -z "$GSSAPI_LIB_DIR"; then
    
         if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
            gss_ldflags=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
    	LDFLAGS="$LDFLAGS $gss_ldflags"
    
         elif test "$GSSAPI_ROOT" != "yes"; then
    
            LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff -lgssapi"
    
         else
            LDFLAGS="$LDFLAGS -lgssapi"
    
         LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR -lgssapi"
    
      CPPFLAGS="$save_CPPFLAGS"
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    dnl **********************************************************************
    dnl Check for the presence of SSL libraries and headers
    dnl **********************************************************************
    
    dnl Default to compiler & linker defaults for SSL files & libraries.
    OPT_SSL=off
    
    dnl Default to no CA bundle
    ca="no"
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    AC_ARG_WITH(ssl,dnl
    
    AC_HELP_STRING([--with-ssl=PATH],[Where to look for OpenSSL, PATH points to the SSL installation (default: /usr/local/ssl); when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
    
    AC_HELP_STRING([--without-ssl], [disable SSL]),
      OPT_SSL=$withval)
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    
      CLEANLDFLAGS="$LDFLAGS"
      CLEANCPPFLAGS="$CPPFLAGS"
    
        dnl --with-ssl (without path) used
    
        if test x$cross_compiling != xyes; then
          dnl only do pkg-config magic when not cross-compiling
          PKGTEST="yes"
        fi
    
        PREFIX_OPENSSL=/usr/local/ssl
        LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
        ;;
    
        dnl no --with-ssl option given, just check default places
    
        if test x$cross_compiling != xyes; then
          dnl only do pkg-config magic when not cross-compiling
          PKGTEST="yes"
        fi
    
        dnl check the given --with-ssl spot
        PKGTEST="no"
    
        PREFIX_OPENSSL=$OPT_SSL
        LIB_OPENSSL="$PREFIX_OPENSSL/lib$libsuff"
        LDFLAGS="$LDFLAGS -L$LIB_OPENSSL"
        CPPFLAGS="$CPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include"
    
      if test "$PKGTEST" = "yes"; then
    
        dnl Detect the pkg-config tool, as it may have extra info about the
        dnl openssl installation we can use. I *believe* this is what we are
        dnl expected to do on really recent Redhat Linux hosts.
    
        AC_PATH_PROG( PKGCONFIG, pkg-config, no, $PATH:/usr/bin:/usr/local/bin)
        if test "$PKGCONFIG" != "no" ; then
          AC_MSG_CHECKING([OpenSSL options with pkg-config])
    
          $PKGCONFIG --exists openssl
          SSL_EXISTS=$?
    
          if test "$SSL_EXISTS" -eq "0"; then
            SSL_LIBS=`$PKGCONFIG --libs-only-l openssl 2>/dev/null`
            SSL_LDFLAGS=`$PKGCONFIG --libs-only-L openssl 2>/dev/null`
            SSL_CPPFLAGS=`$PKGCONFIG --cflags-only-I openssl 2>/dev/null`
    
    
    	LIB_OPENSSL=`echo $SSL_LDFLAGS | sed -e 's/-L//g'`
    
    
            dnl use the values pkg-config reported
            LIBS="$LIBS $SSL_LIBS"
            CPPFLAGS="$CPPFLAGS $SSL_CPPFLAGS"
            LDFLAGS="$LDFLAGS $SSL_LDFLAGS"
            AC_MSG_RESULT([found])
          else
            AC_MSG_RESULT([no])
          fi
        fi
      fi
    
    
      case $host in    
        *-*-cygwin*)
          dnl Under Cygwin this is extraneous and causes an unnecessary -lgdi32
          dnl to be added to LIBS and recorded in the .la file.
          ;;
        *)
          AC_MSG_CHECKING([for gdi32])
          my_ac_save_LIBS=$LIBS
          LIBS="-lgdi32 $LIBS"
          AC_TRY_LINK([#include <windef.h>
                       #include <wingdi.h>],
                       [GdiFlush();],
                       [ dnl worked!
                       AC_MSG_RESULT([yes])],
                       [ dnl failed, restore LIBS
                       LIBS=$my_ac_save_LIBS
                       AC_MSG_RESULT(no)]
                      )
          ;;
      esac
    
      AC_CHECK_LIB(crypto, CRYPTO_lock,[
         HAVECRYPTO="yes"
    
         LDFLAGS="$CLEANLDFLAGS -L$LIB_OPENSSL"
         CPPFLAGS="$CLEANCPPFLAGS -I$PREFIX_OPENSSL/include/openssl -I$PREFIX_OPENSSL/include"
    
           HAVECRYPTO="yes"
           LIBS="-lcrypto $LIBS"], [
    
           LDFLAGS="$CLEANLDFLAGS"
           CPPFLAGS="$CLEANCPPFLAGS"
           LIBS="$CLEANLIBS"
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
        dnl This is only reasonable to do if crypto actually is there: check for
        dnl SSL libs NOTE: it is important to do this AFTER the crypto lib
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
        AC_CHECK_LIB(ssl, SSL_connect)
    
    
        if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
            dnl we didn't find the SSL lib, try the RSAglue/rsaref stuff
            AC_MSG_CHECKING(for ssl with RSAglue/rsaref libs in use);
            OLIBS=$LIBS
            LIBS="$LIBS -lRSAglue -lrsaref"
            AC_CHECK_LIB(ssl, SSL_connect)
            if test "$ac_cv_lib_ssl_SSL_connect" != yes; then
                dnl still no SSL_connect
                AC_MSG_RESULT(no)
                LIBS=$OLIBS
            else
                AC_MSG_RESULT(yes)
            fi
    
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
        else
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
          dnl Have the libraries--check for SSLeay/OpenSSL headers
          AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
                           openssl/pem.h openssl/ssl.h openssl/err.h,
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
            OPENSSL_ENABLED=1
            AC_DEFINE(USE_OPENSSL, 1, [if OpenSSL is in use]))
    
          if test $ac_cv_header_openssl_x509_h = no; then
    
            dnl we don't use the "action" part of the AC_CHECK_HEADERS macro
            dnl since 'err.h' might in fact find a krb4 header with the same
            dnl name
            AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h)
    
            if test $ac_cv_header_x509_h = yes && 
               test $ac_cv_header_crypto_h = yes &&
               test $ac_cv_header_ssl_h = yes; then
              dnl three matches
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
          fi
        fi
    
    
        if test X"$OPENSSL_ENABLED" = X"1"; then
           AC_DEFINE(USE_SSLEAY, 1, [if SSL is enabled])
    
    
           dnl is there a pkcs12.h header present?
           AC_CHECK_HEADERS(openssl/pkcs12.h)