Skip to content
Snippets Groups Projects
configure.ac 54.9 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 - 2005 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_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.
    
    
    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 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 **********************************************************************
    
    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)]
               )
    
    
    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"
    
    
      CURL_CHECK_WORKING_GETADDRINFO
    
    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_LIBS="-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
    
    
      dnl This is for Msys/Mingw
      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)]
                  )
    
    
      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
            AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h,
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
              OPENSSL_ENABLED=1)
          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)
    
        dnl USE_SSLEAY is the historical name for what configure calls
        dnl OPENSSL_ENABLED; the names should really be unified
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
        USE_SSLEAY="$OPENSSL_ENABLED"
        AC_SUBST(USE_SSLEAY)
    
        if test X"$OPT_SSL" != Xoff &&
           test "$OPENSSL_ENABLED" != "1"; then
          AC_MSG_ERROR([OpenSSL libs and/or directories were not found where specified!])
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
      fi
    
      if test X"$OPENSSL_ENABLED" = X"1"; then
    
        dnl If the ENGINE library seems to be around, check for the OpenSSL engine
    
        dnl stuff, it is kind of "separated" from the main SSL check
        AC_CHECK_FUNC(ENGINE_init,
                  [
                    AC_CHECK_HEADERS(openssl/engine.h)
                    AC_CHECK_FUNCS( ENGINE_load_builtin_engines )
                  ])
    
        dnl these can only exist if openssl exists
    
        AC_CHECK_FUNCS( RAND_status \
                        RAND_screen \
    
                        RAND_egd \
                        CRYPTO_cleanup_all_ex_data )
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
      fi
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
      if test "$OPENSSL_ENABLED" = "1"; then
    
        if test -n "$LIB_OPENSSL"; then
           dnl when the ssl shared libs were found in a path that the run-time
           dnl linker doesn't search through, we need to add it to LD_LIBRARY_PATH
           dnl to prevent further configure tests to fail due to this
    
           LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$LIB_OPENSSL"
           export LD_LIBRARY_PATH
           AC_MSG_NOTICE([Added $LIB_OPENSSL to LD_LIBRARY_PATH])
        fi
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    dnl **********************************************************************