Skip to content
Snippets Groups Projects
configure.ac 75.6 KiB
Newer Older
  • Learn to ignore specific revisions
  •       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)
    
            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 **********************************************************************
    
    
    dnl check for gss stuff in the /usr as default
    
    GSSAPI_ROOT="/usr"
    
    AC_ARG_WITH(gssapi-includes,
      AC_HELP_STRING([--with-gssapi-includes=DIR],
                     [Specify location of GSSAPI header]),
    
    Guenter Knauf's avatar
    Guenter Knauf committed
      [ GSSAPI_INCS="-I$withval"
    
        want_gss="yes" ]
    )
    
    AC_ARG_WITH(gssapi-libs,
      AC_HELP_STRING([--with-gssapi-libs=DIR],
    
    Guenter Knauf's avatar
    Guenter Knauf committed
                     [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
    
    Guenter Knauf's avatar
    Guenter Knauf committed
        want_gss="yes"
    
        if test x"$GSSAPI_ROOT" = xyes; then
          dnl if yes, then use default root
          GSSAPI_ROOT="/usr"
        fi
    
    AC_MSG_CHECKING([if GSSAPI support is requested])
    if test x"$want_gss" = xyes; then
    
      if test -z "$GSSAPI_INCS"; then
         if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
    
            GSSAPI_INCS=`$GSSAPI_ROOT/bin/krb5-config --cflags gssapi`
    
            GSSAPI_LIBS=`$GSSAPI_ROOT/bin/krb5-config --libs 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 or MIT
          AC_CHECK_HEADERS(
            [gssapi/gssapi.h gssapi/gssapi_generic.h gssapi/gssapi_krb5.h],
            [],
            [not_mit=1])
          if test "x$not_mit" = "x1"; then
            dnl MIT not found, check for Heimdal
            AC_CHECK_HEADER(gssapi.h,
    
    Guenter Knauf's avatar
    Guenter Knauf committed
                  dnl found
    
                  AC_DEFINE(HAVE_GSSHEIMDAL, 1, [if you have the Heimdal gssapi libraries])
    
                ],
                [
                  dnl no header found, disabling GSS
                  want_gss=no
                  AC_MSG_WARN(disabling GSSAPI since no header files was found)
                ]
              )
    
          else
            dnl MIT found
            AC_DEFINE(HAVE_GSSMIT, 1, [if you have the MIT gssapi libraries])
            dnl check if we have a really old MIT kerberos (<= 1.2)
            AC_MSG_CHECKING([if gssapi headers declare GSS_C_NT_HOSTBASED_SERVICE])
    
            AC_COMPILE_IFELSE([
              AC_LANG_PROGRAM([[
    
    #include <gssapi/gssapi.h>
    #include <gssapi/gssapi_generic.h>
    #include <gssapi/gssapi_krb5.h>
    
                gss_import_name(
                                (OM_uint32 *)0,
                                (gss_buffer_t)0,
                                GSS_C_NT_HOSTBASED_SERVICE,
                                (gss_name_t *)0);
    
              ]])
            ],[
              AC_MSG_RESULT([yes])
            ],[
              AC_MSG_RESULT([no])
              AC_DEFINE(HAVE_OLD_GSSMIT, 1,
                [if you have an old MIT gssapi library, lacking GSS_C_NT_HOSTBASED_SERVICE])
            ])
    
        ]
      )
    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"
        LIBS="$LIBS -lgss"
    
      elif test -z "$GSSAPI_LIB_DIR"; then
    
         if test -f "$GSSAPI_ROOT/bin/krb5-config"; then
    
            dnl krb5-config doesn't have --libs-only-L or similar, put everything
            dnl into LIBS
            gss_libs=`$GSSAPI_ROOT/bin/krb5-config --libs gssapi`
            LIBS="$LIBS $gss_libs"
    
         elif test "$GSSAPI_ROOT" != "yes"; then
    
            LDFLAGS="$LDFLAGS -L$GSSAPI_ROOT/lib$libsuff"
            LIBS="$LIBS -lgssapi"
    
         LDFLAGS="$LDFLAGS $GSSAPI_LIB_DIR"
         LIBS="$LIBS -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 OpenSSL]),
    
    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`
    
    
    Guenter Knauf's avatar
    Guenter Knauf committed
            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
    
    
      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)
    
    
    Guenter Knauf's avatar
    Guenter Knauf committed
            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
    
        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
    
        dnl yassl doesn't have SSL_get_shutdown
    
    
        AC_CHECK_FUNCS( RAND_status \
                        RAND_screen \
    
                        CRYPTO_cleanup_all_ex_data \
                        SSL_get_shutdown )
    
        dnl Make an attempt to detect if this is actually yassl's headers and
        dnl OpenSSL emulation layer. We still leave everything else believing
        dnl and acting like OpenSSL.
    
        AC_MSG_CHECKING([for yaSSL using OpenSSL compatibility mode])
    
        AC_COMPILE_IFELSE([
          AC_LANG_PROGRAM([[
    
    #if defined(YASSL_VERSION) && defined(OPENSSL_VERSION_NUMBER)
            int dummy = SSL_ERROR_NONE;
    #else
            Not the yaSSL OpenSSL compatibility header.
    #endif
    
          ]])
        ],[
          AC_MSG_RESULT([yes])
          AC_DEFINE_UNQUOTED(USE_YASSLEMUL, 1,
            [Define to 1 if using yaSSL in OpenSSL compatibility mode.])
          curl_ssl_msg="enabled (OpenSSL emulation by yaSSL)"
        ],[
          AC_MSG_RESULT([no])
    
    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
    
    dnl **********************************************************************
    dnl Check for the presence of ZLIB libraries and headers
    dnl **********************************************************************
    
    dnl Check for & handle argument to --with-zlib.
    
    _cppflags=$CPPFLAGS
    _ldflags=$LDFLAGS
    AC_ARG_WITH(zlib,
    AC_HELP_STRING([--with-zlib=PATH],[search for zlib in PATH])
    AC_HELP_STRING([--without-zlib],[disable use of zlib]),
                   [OPT_ZLIB="$withval"])
    
    if test "$OPT_ZLIB" = "no" ; then
        AC_MSG_WARN([zlib disabled])
    else
      if test "$OPT_ZLIB" = "yes" ; then
         OPT_ZLIB=""
      fi
    
      if test -z "$OPT_ZLIB" ; then
        dnl check for the lib first without setting any new path, since many
        dnl people have it in the default path
    
        AC_CHECK_LIB(z, inflateEnd,
                       dnl libz found, set the variable
                       [HAVE_LIBZ="1"],
                       dnl if no lib found, try /usr/local
                       [OPT_ZLIB="/usr/local"])
    
      fi
    
      dnl Add a nonempty path to the compiler flags
      if test -n "$OPT_ZLIB"; then
         CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include"
         LDFLAGS="$LDFLAGS -L$OPT_ZLIB/lib$libsuff"
      fi
    
      AC_CHECK_HEADER(zlib.h,
        [
        dnl zlib.h was found
        HAVE_ZLIB_H="1"
        dnl if the lib wasn't found already, try again with the new paths
        if test "$HAVE_LIBZ" != "1"; then
          AC_CHECK_LIB(z, gzread,
                       [
                       dnl the lib was found!
                       HAVE_LIBZ="1"
                       ],
                       [ CPPFLAGS=$_cppflags
                       LDFLAGS=$_ldflags])
        fi
        ],
        [
          dnl zlib.h was not found, restore the flags
          CPPFLAGS=$_cppflags
          LDFLAGS=$_ldflags]
        )
    
      if test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" != "1"
      then
        AC_MSG_WARN([configure found only the libz lib, not the header file!])
    
      elif test "$HAVE_LIBZ" != "1" && test "$HAVE_ZLIB_H" = "1"
      then
        AC_MSG_WARN([configure found only the libz header file, not the lib!])
      elif test "$HAVE_LIBZ" = "1" && test "$HAVE_ZLIB_H" = "1"
      then
        dnl both header and lib were found!
        AC_SUBST(HAVE_LIBZ)
        AC_DEFINE(HAVE_ZLIB_H, 1, [if you have the zlib.h header file])
        AC_DEFINE(HAVE_LIBZ, 1, [if zlib is available])
    
        CURL_LIBS="$CURL_LIBS -lz"
        LIBS="$LIBS -lz"
    
        dnl replace 'HAVE_LIBZ' in the automake makefile.ams
        AMFIXLIB="1"
        AC_MSG_NOTICE([found both libz and libz.h header])
        curl_zlib_msg="enabled"
      fi
    fi
    
    dnl set variable for use in automakefile(s)
    AM_CONDITIONAL(HAVE_LIBZ, test x"$AMFIXLIB" = x1)
    
    
    dnl **********************************************************************
    dnl Check for the presence of LIBSSH2 libraries and headers
    dnl **********************************************************************
    
    dnl Default to compiler & linker defaults for LIBSSH2 files & libraries.
    OPT_LIBSSH2=off
    AC_ARG_WITH(libssh2,dnl
    AC_HELP_STRING([--with-libssh2=PATH],[Where to look for libssh2, PATH points to the LIBSSH2 installation (default: /usr/local/lib); when possible, set the PKG_CONFIG_PATH environment variable instead of using this option])
    AC_HELP_STRING([--without-libssh2], [disable LIBSSH2]),
      OPT_LIBSSH2=$withval)
    
    if test X"$OPT_LIBSSH2" != Xno; then
      dnl backup the pre-libssh2 variables
      CLEANLDFLAGS="$LDFLAGS"
      CLEANCPPFLAGS="$CPPFLAGS"
      CLEANLIBS="$LIBS"
    
      case "$OPT_LIBSSH2" in
      yes)
        dnl --with-libssh2 (without path) used
        PREFIX_LIBSSH2=/usr/local/lib
    
        LIB_LIBSSH2="$PREFIX_LIBSSH2$libsuff"
    
        ;;
      off)
        dnl no --with-libssh2 option given, just check default places
        PREFIX_LIBSSH2=
        ;;
      *)
    
        PREFIX_LIBSSH2=$OPT_LIBSSH2
        LIB_LIBSSH2="$PREFIX_LIBSSH2/lib$libsuff"
        LDFLAGS="$LDFLAGS -L$LIB_LIBSSH2"
    
        CPPFLAGS="$CPPFLAGS -I$PREFIX_LIBSSH2/include"
    
      AC_CHECK_LIB(ssh2, libssh2_channel_open_ex)
    
      AC_CHECK_HEADERS(libssh2.h,
        curl_ssh_msg="enabled (libSSH2)"
        LIBSSH2_ENABLED=1
    
        AC_DEFINE(USE_LIBSSH2, 1, [if libSSH2 is in use])
    
        AC_SUBST(USE_LIBSSH2, [1])
    
    
      if test X"$OPT_LIBSSH2" != Xoff &&
         test "$LIBSSH2_ENABLED" != "1"; then
        AC_MSG_ERROR([libSSH2 libs and/or directories were not found where specified!])
    
      fi
    
      if test "$LIBSSH2_ENABLED" = "1"; then
        if test -n "$LIB_LIBSSH2"; then
           dnl when the libssh2 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_LIBSSH2"
           export LD_LIBRARY_PATH
           AC_MSG_NOTICE([Added $LIB_LIBSSH2 to LD_LIBRARY_PATH])
        fi
      fi
    fi
    
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    dnl **********************************************************************
    
    Guenter Knauf's avatar
    Guenter Knauf committed
    dnl Check for the random seed preferences
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    dnl **********************************************************************
    
    if test X"$OPENSSL_ENABLED" = X"1"; then
      AC_ARG_WITH(egd-socket,
      AC_HELP_STRING([--with-egd-socket=FILE],
                     [Entropy Gathering Daemon socket pathname]),
          [ EGD_SOCKET="$withval" ]
      )
      if test -n "$EGD_SOCKET" ; then
              AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET",
              [your Entropy Gathering Daemon socket pathname] )
      fi
    
      dnl Check for user-specified random device
      AC_ARG_WITH(random,
      AC_HELP_STRING([--with-random=FILE],
                     [read randomness from FILE (default=/dev/urandom)]),
          [ RANDOM_FILE="$withval" ],
          [
              dnl Check for random device
              AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
          ]
      )
      if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
              AC_SUBST(RANDOM_FILE)
              AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
              [a suitable file to read random data from])
      fi
    fi
    
    
    dnl ----------------------------------------------------
    dnl FIX: only check for GnuTLS if OpenSSL is not enabled
    dnl ----------------------------------------------------
    
    dnl Default to compiler & linker defaults for GnuTLS files & libraries.
    
    Dan Fandrich's avatar
    Dan Fandrich committed
    OPT_GNUTLS=no
    
    
    AC_ARG_WITH(gnutls,dnl
    AC_HELP_STRING([--with-gnutls=PATH],[where to look for GnuTLS, PATH points to the installation root (default: /usr/local/)])
    AC_HELP_STRING([--without-gnutls], [disable GnuTLS detection]),
      OPT_GNUTLS=$withval)
    
    if test "$OPENSSL_ENABLED" != "1"; then
    
    
    Dan Fandrich's avatar
    Dan Fandrich committed
      if test X"$OPT_GNUTLS" != Xno; then
    
        if test "x$OPT_GNUTLS" = "xyes"; then
         check=`libgnutls-config --version 2>/dev/null`
         if test -n "$check"; then
           addlib=`libgnutls-config --libs`
           addcflags=`libgnutls-config --cflags`
           version=`libgnutls-config --version`
    
           gtlsprefix=`libgnutls-config --prefix`
    
          addlib=`$OPT_GNUTLS/bin/libgnutls-config --libs`
          addcflags=`$OPT_GNUTLS/bin/libgnutls-config --cflags`
    
          version=`$OPT_GNUTLS/bin/libgnutls-config --version 2>/dev/null`
    
          gtlsprefix=$OPT_GNUTLS
    
          if test -z "$version"; then
            version="unknown"
          fi
    
          if test "$addcflags" != "-I/usr/include"; then
             CPPFLAGS="$CPPFLAGS $addcflags"
          fi
    
          AC_CHECK_LIB(gnutls, gnutls_check_version,
    
           [
           AC_DEFINE(USE_GNUTLS, 1, [if GnuTLS is enabled])
           AC_SUBST(USE_GNUTLS, [1])
    
          if test "x$USE_GNUTLS" = "xyes"; then
            AC_MSG_NOTICE([detected GnuTLS version $version])
    
            dnl when shared libs were found in a path that the run-time
            dnl linker doesn't search through, we need to add it to
            dnl LD_LIBRARY_PATH to prevent further configure tests to fail
            dnl due to this
    
            LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$gtlsprefix/lib$libsuff"
            export LD_LIBRARY_PATH
    
            AC_MSG_NOTICE([Added $gtlsprefix/lib$libsuff to LD_LIBRARY_PATH])
    
    dnl ----------------------------------------------------
    dnl NSS. Only check if GnuTLS and OpenSSL are not enabled
    dnl ----------------------------------------------------
    
    dnl Default to compiler & linker defaults for NSS files & libraries.
    OPT_NSS=no
    
    AC_ARG_WITH(nss,dnl
    AC_HELP_STRING([--with-nss=PATH],[where to look for NSS, PATH points to the installation root (default: /usr/local/)])
    AC_HELP_STRING([--without-nss], [disable NSS detection]),
      OPT_NSS=$withval)
    
    if test "$OPENSSL_ENABLED" != "1" -a "$GNUTLS_ENABLED" != "1"; then
    
      if test X"$OPT_NSS" != Xno; then
        if test "x$OPT_NSS" = "xyes"; then
         check=`pkg-config --version 2>/dev/null`
         if test -n "$check"; then
           addlib=`pkg-config --libs nss`
           addcflags=`pkg-config --cflags nss`
           version=`pkg-config --modversion nss`
           nssprefix=`pkg-config --variable=prefix nss`
         fi
        else
          # Without pkg-config, we'll kludge in some defaults
          addlib="-lssl3 -lsmime3 -lnss3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl"
    
    Guenter Knauf's avatar
    Guenter Knauf committed
          addcflags="-I$OPT_NSS/include"
    
    
        dnl Check for functionPK11_CreateGenericObject
        dnl this is needed for using the PEM PKCS#11 module
    
        AC_CHECK_LIB(nss3, PK11_CreateGenericObject,
    
         [
         AC_DEFINE(HAVE_PK11_CREATEGENERICOBJECT, 1, [if you have the function PK11_CreateGenericObject])
         AC_SUBST(HAVE_PK11_CREATEGENERICOBJECT, [1])
         ])
    
        if test -n "$addlib"; then
    
          CLEANLIBS="$LIBS"
          CLEANCPPFLAGS="$CPPFLAGS"
    
          LIBS="$LIBS $addlib"
          if test "$addcflags" != "-I/usr/include"; then
             CPPFLAGS="$CPPFLAGS $addcflags"
          fi
    
          AC_CHECK_LIB(nss3, NSS_Initialize,
           [
           AC_DEFINE(USE_NSS, 1, [if NSS is enabled])
           AC_SUBST(USE_NSS, [1])
           USE_NSS="yes"
           NSS_ENABLED=1
           curl_ssl_msg="enabled (NSS)"
           ],
           [
             LIBS="$CLEANLIBS"
             CPPFLAGS="$CLEANCPPFLAGS"
           ])
    
          if test "x$USE_NSS" = "xyes"; then
            AC_MSG_NOTICE([detected NSS version $version])
    
            dnl when shared libs were found in a path that the run-time
            dnl linker doesn't search through, we need to add it to
            dnl LD_LIBRARY_PATH to prevent further configure tests to fail
            dnl due to this
    
            LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$nssprefix/lib$libsuff"
            export LD_LIBRARY_PATH
            AC_MSG_NOTICE([Added $nssprefix/lib$libsuff to LD_LIBRARY_PATH])
          fi
    
        fi
    
      fi dnl NSS not disabled
    
    fi dnl OPENSSL != 1 -a GNUTLS_ENABLED != 1
    
    if test "x$OPENSSL_ENABLED$GNUTLS_ENABLED$NSS_ENABLED" = "x"; then
      AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
      AC_MSG_WARN([Use --with-ssl, --with-gnutls or --with-nss to address this.])
    
    else
      # SSL is enabled, genericly
      AC_SUBST(SSL_ENABLED)
      SSL_ENABLED="1"
    
    dnl **********************************************************************
    dnl Check for the CA bundle
    dnl **********************************************************************
    
    
    dnl **********************************************************************
    dnl Check for the presence of IDN libraries and headers
    dnl **********************************************************************
    
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    AC_MSG_CHECKING([whether to build with libidn])
    
    AC_ARG_WITH(libidn,
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    AC_HELP_STRING([--with-libidn=PATH],[Enable libidn usage])
    AC_HELP_STRING([--without-libidn],[Disable libidn usage]),
    
      [LIBIDN="$withval"])
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    case "$LIBIDN" in
      no)
           AC_MSG_RESULT(no)
           ;;
      *)   AC_MSG_RESULT(yes)
    
    
           idn=""
           dnl if there is a given path, check that FIRST
    
           if test -n "$LIBIDN"; then
             if test "x$LIBIDN" != "xyes"; then
                oldLDFLAGS=$LDFLAGS
                oldCPPFLAGS=$CPPFLAGS
                LDFLAGS="$LDFLAGS -L$LIBIDN/lib"
                CPPFLAGS="$CPPFLAGS -I$LIBIDN/include"
                idn="yes"
                AC_CHECK_LIB(idn, idna_to_ascii_4i, ,
                             idn=""
                             LDFLAGS=$oldLDFLAGS
                             CPPFLAGS=$oldCPPFLAGS)
             fi
    
           fi
    
           if test "x$idn" != "xyes"; then
              dnl check with default paths
    
              idn="yes"
    
              AC_CHECK_LIB(idn, idna_to_ascii_lz, ,
                           idn="")
           fi
    
           if test "x$idn" = "xyes"; then
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
             curl_idn_msg="enabled"
    
             AC_SUBST(IDN_ENABLED, [1])
    
             dnl different versions of libidn have different setups of these:
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
             AC_CHECK_FUNCS( idn_free idna_strerror tld_strerror)
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
           fi
    
    dnl Default is to try the thread-safe versions of a few functions
    OPT_THREAD=on
    
    
    dnl detect AIX 4.3 or later
    dnl see full docs on this reasoning in the lib/hostip.c source file
    AC_MSG_CHECKING([AIX 4.3 or later])
    AC_PREPROC_IFELSE([
    #if defined(_AIX) && defined(_AIX43)
    printf("just fine");
    #else
    #error "this is not AIX 4.3 or later"
    #endif
    ],
     [ AC_MSG_RESULT([yes])
    
    AC_HELP_STRING([--disable-thread],[don't look for thread-safe functions])
    AC_HELP_STRING([--enable-thread],[look for thread-safe functions]),
    [ case "$enableval" in
      no)
        OPT_THREAD=off
        AC_MSG_WARN(libcurl will not get built using thread-safe functions)
        ;;
      *)
        ;;
      esac
    ]
    
    Yang Tse's avatar
    Yang Tse committed
      AC_DEFINE(DISABLED_THREADSAFE, 1,
        [Set to explicitly specify we don't want to use thread-safe functions])
    
      if test "$ipv6" != "yes"; then
        dnl dig around for gethostbyname_r()
        CURL_CHECK_GETHOSTBYNAME_R()
    
      dnl poke around for inet_ntoa_r()
      CURL_CHECK_INET_NTOA_R()
    
      dnl is there a localtime_r()
      CURL_CHECK_LOCALTIME_R()
    
      dnl is there a strerror_r()
    
      dnl the old strerror_r check was done here
    
    dnl for recent AIX versions, we skip all the thread-safe checks above since
    
    dnl they claim a thread-safe libc using the standard API. But there are
    dnl some functions still not thread-safe. Check for these!
    
    dnl Let's hope this split URL remains working:
    dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
    dnl genprogc/thread_quick_ref.htm
    
    
    if test "x$RECENTAIX" = "xyes"; then
    
    
      AC_DEFINE(_THREAD_SAFE, 1, [define this if you need it to compile thread-safe code])
    
      dnl is there a localtime_r()
      CURL_CHECK_LOCALTIME_R()
    
      dnl is there a strerror_r()
    
      dnl the old strerror_r check was done here
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    dnl **********************************************************************
    dnl Back to "normal" configuring
    dnl **********************************************************************
    
    dnl Checks for header files.
    AC_HEADER_STDC
    
    
    dnl Now check for the very most basic headers. Then we can use these
    
    dnl ones as default-headers when checking for the rest!
    AC_CHECK_HEADERS(
            sys/types.h \
            sys/time.h \
            sys/select.h \
            sys/socket.h \
    
            sys/ioctl.h \
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
            assert.h \
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
            unistd.h \
    
            limits.h \
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
            arpa/inet.h \
            net/if.h \
            netinet/in.h \
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
            netdb.h \
            sys/sockio.h \
            sys/stat.h \
            sys/param.h \
            termios.h \
            termio.h \
            sgtty.h \
            fcntl.h \
            alloca.h \
            time.h \
            io.h \
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
            utime.h \
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
            sys/poll.h \
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
            errno.h \
    
            setjmp.h,
    dnl to do if not found
    [],
    dnl to do if found
    [],
    dnl default includes
    [
    #ifdef HAVE_SYS_TYPES_H
    #include <sys/types.h>
    #endif
    #ifdef HAVE_SYS_TIME_H
    #include <sys/time.h>
    #endif
    #ifdef HAVE_SYS_SELECT_H
    #include <sys/select.h>
    #endif
    #ifdef HAVE_SYS_SOCKET_H
    #include <sys/socket.h>
    #endif
    
    #ifdef HAVE_NETINET_IN_H
    #include <netinet/in.h>
    #endif
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    )
    
    dnl Checks for typedefs, structures, and compiler characteristics.
    AC_C_CONST
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    AC_TYPE_SIZE_T
    AC_HEADER_TIME
    
    CURL_CHECK_STRUCT_TIMEVAL
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    
    AC_CHECK_SIZEOF(size_t)
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    
    if test x"$ac_cv_native_windows" != "xyes" &&
       test $ac_cv_sizeof_off_t -ne $curl_sizeof_curl_off_t; then
    
      AC_MSG_WARN([This libcurl built is probably not ABI compatible with previous])
      AC_MSG_WARN([builds! You MUST read lib/README.curl_off_t to figure it out.])
      soname_bump=yes
    fi
    
    
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    AC_CHECK_TYPE(long long,
    
       [AC_DEFINE(HAVE_LONGLONG, 1,
          [Define to 1 if the compiler supports the 'long long' data type.])]
    
    Guenter Knauf's avatar
    Guenter Knauf committed
       longlong="yes"
    
    )
    
    if test "xyes" = "x$longlong"; then
      AC_MSG_CHECKING([if numberLL works])
      AC_COMPILE_IFELSE([long long val = 1000LL;],
       [AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])]
       AC_MSG_RESULT(yes),
       AC_MSG_RESULT(no)
      )
    fi