Skip to content
Snippets Groups Projects
configure.ac 68.3 KiB
Newer Older
  • Learn to ignore specific revisions
  •   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
    
        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_TRY_COMPILE([
    
          ],[
    #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/lib$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]))
    
      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 **********************************************************************
    dnl Check for the random seed preferences 
    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"
          addcflags="-I$OPT_NSS/include" 
          version="unknown"
          gtlsprefix=$OPT_GNUTLS
        fi
        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.])
    fi
    
    
    dnl **********************************************************************
    dnl Check for the CA bundle
    dnl **********************************************************************
    
    if test X"$USE_GNUTLS$OPENSSL_ENABLED" != "X"; then
    
      AC_MSG_CHECKING([CA cert bundle install path])
    
      AC_ARG_WITH(ca-bundle,
    AC_HELP_STRING([--with-ca-bundle=FILE], [File name to install the CA bundle as])
    AC_HELP_STRING([--without-ca-bundle], [Don't install the CA bundle]),
        [ ca="$withval" ],
        [
          if test "x$prefix" != xNONE; then
            ca="\${prefix}/share/curl/curl-ca-bundle.crt"
          else
            ca="$ac_default_prefix/share/curl/curl-ca-bundle.crt"
          fi
        ] )
    
        if test "x$ca" != "xno"; then
          CURL_CA_BUNDLE='"'$ca'"'
          AC_SUBST(CURL_CA_BUNDLE)  
        fi
        AC_MSG_RESULT([$ca])
    fi dnl only done if some kind of SSL was enabled
    
    AM_CONDITIONAL(CABUNDLE, test x$ca != xno)
    
    
    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)
    
    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()
      CURL_CHECK_STRERROR_R()
    
    
    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 check if this is the IMB xlc compiler
      dnl Details thanks to => http://predef.sourceforge.net/
      AC_MSG_CHECKING([if this is the xlc compiler])
      AC_EGREP_CPP([^__xlC__], [__xlC__],
             dnl action if the text is found, this it has not been replaced by the
             dnl cpp
             XLC="no"
             AC_MSG_RESULT([no]),
             dnl the text was not found, it was replaced by the cpp
             XLC="yes"
             AC_MSG_RESULT([yes])
             CFLAGS="$CFLAGS -qthreaded"
    
             dnl AIX xlc has to have strict aliasing turned off. If not,
             dnl the optimizer assumes that pointers can only point to
             dnl an object of the same type.
             CFLAGS="$CFLAGS -qnoansialias"
    
    
      dnl is there a localtime_r()
      CURL_CHECK_LOCALTIME_R()
    
      dnl is there a strerror_r()
      CURL_CHECK_STRERROR_R()
    
    
    if test x$cross_compiling != xyes; then
    
        dnl if gmtime_r was found, verify that it actually works, as (at least) HPUX
    
        dnl 10.20 is known to have a buggy one. If it doesn't work, disable use of
        dnl it.
    
        AC_MSG_CHECKING([if gmtime_r exists and works])
        AC_RUN_IFELSE([[
        #include <time.h>
        int main(void)
        {
    
        time_t local = 1170352587;
        struct tm *gmt;
        struct tm keeper;
        putenv("TZ=CST6CDT");
        tzset();
        gmt = gmtime_r(&local, &keeper);
        if(gmt) {
          return 0;
        }
        return 1; /* failure */
    
        }
         ]],
         dnl success, do nothing
         AC_MSG_RESULT(yes)
         AC_DEFINE(HAVE_GMTIME_R, 1, [if you have (a working) gmtime_r])
         ,
         dnl failure, now disable the function
         AC_MSG_RESULT(no)
        ,
        dnl not invoked when crosscompiling)
    
      fi
    else
      dnl and for crosscompilings
      AC_CHECK_FUNCS(gmtime_r)
    
    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 \
    
            ldap_ssl.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(curl_off_t, ,[
    #include <stdio.h>
    #include "$srcdir/include/curl/curl.h"
    ])
    
    AC_CHECK_SIZEOF(size_t)
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    AC_CHECK_TYPE(long long,
    
       [AC_DEFINE(HAVE_LONGLONG, 1, [if your compiler supports long long])]
       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
    
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    # check for ssize_t
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    AC_CHECK_TYPE(ssize_t, ,
       AC_DEFINE(ssize_t, int, [the signed version of size_t]))
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    
    # check for bool type
    AC_CHECK_TYPE([bool],[
      AC_DEFINE(HAVE_BOOL_T, 1,
        [Define to 1 if bool is an available type.])
    ], ,[
    
    #ifdef HAVE_SYS_TYPES_H
    #include <sys/types.h>
    #endif
    
    #ifdef HAVE_STDBOOL_H
    #include <stdbool.h>
    #endif
    ])
    
    
    # Check for socklen_t or equivalent
    
    TYPE_IN_ADDR_T
    
    AC_FUNC_SELECT_ARGTYPES
    
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    dnl Checks for library functions.
    dnl AC_PROG_GCC_TRADITIONAL
    
    case $host in
      *msdosdjgpp)
         ac_cv_func_pipe=no
         skipcheck_pipe=yes
         AC_MSG_NOTICE([skip check for pipe on msdosdjgpp])
        ;;
    esac
    
    AC_CHECK_FUNCS( strtoll \
                    socket \
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
                    select \
                    strdup \
                    strstr \
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
                    strtok_r \
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
                    uname \
                    strcasecmp \
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
                    stricmp \
                    strcmpi \
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
                    gethostbyaddr \
                    gettimeofday \
                    inet_addr \
                    inet_ntoa \
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
                    inet_pton \
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
                    perror \
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
                    signal \
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
                    geteuid \
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
                    sigsetjmp \
    
                    getprotobyname \
    
    dnl if found
    [],
    dnl if not found, $ac_func is the name we check for
    
    eval skipcheck=\$skipcheck_$func
    if test "x$skipcheck" != "xyes"; then
    
      AC_MSG_CHECKING([deeper for $func])
      AC_TRY_LINK( [],
                   [ $func ();],
                   AC_MSG_RESULT(yes!)
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
                   eval "ac_cv_func_$func=yes"
    
                   def=`echo "HAVE_$func" | tr 'a-z' 'A-Z'`
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
                   AC_DEFINE_UNQUOTED($def, 1, [If you have $func]),
    
    dnl For some reason, the check above doesn't properly detect select() with
    dnl Msys/Mingw
    
    if test "$ac_cv_func_select" = "no"; then
    
      AC_MSG_CHECKING([for select in ws2_32])
    
      AC_TRY_LINK([
    #undef inline
    #ifdef HAVE_WINDOWS_H
    #ifndef WIN32_LEAN_AND_MEAN
    #define WIN32_LEAN_AND_MEAN
    #endif
    #include <windows.h>
    #ifdef HAVE_WINSOCK2_H
    #include <winsock2.h>
    #else
    #ifdef HAVE_WINSOCK_H
    #include <winsock.h>
    #endif
    #endif
    #endif
    
        ],[
          select(0,(fd_set *)NULL,(fd_set *)NULL,(fd_set *)NULL,(struct timeval *)NULL);
        ],[ 
          AC_MSG_RESULT([yes])
          HAVE_SELECT="1"
          AC_DEFINE_UNQUOTED(HAVE_SELECT, 1,
            [Define to 1 if you have the select function.])
        ],[
    
    Yang Tse's avatar
    Yang Tse committed
          AC_MSG_ERROR([You can't compile without a select])
    
    dnl sigsetjmp() might be a macro and no function so if it isn't found already
    dnl we make an extra check here!
    if test "$ac_cv_func_sigsetjmp" != "yes"; then
      AC_MSG_CHECKING([for sigsetjmp defined as macro])
      AC_TRY_LINK( [#include <setjmp.h>],
                   [sigjmp_buf jmpenv;
                    sigsetjmp(jmpenv, 1);],
                   AC_MSG_RESULT(yes)
    
                   AC_DEFINE(HAVE_SIGSETJMP, 1, [If you have sigsetjmp]),
    
    AC_CHECK_DECL(basename, ,
                  AC_DEFINE(NEED_BASENAME_PROTO, 1, [If you lack a fine basename() prototype]),
    #ifdef HAVE_STRING_H
    #include <string.h>
    #endif
    #ifdef HAVE_LIBGEN_H
    #include <libgen.h>
    #endif
    
                  AC_DEFINE(HAVE_NO_INET_PTON_PROTO, 1,
                            [Defined if no inet_pton() prototype available]),
    
    dnl Check if the getnameinfo function is available
    dnl and get the types of five of its arguments.
    CURL_CHECK_FUNC_GETNAMEINFO
    
    if test "$ipv6" = "yes"; then
      CURL_CHECK_WORKING_GETADDRINFO
      CURL_CHECK_NI_WITHSCOPEID
    fi
    
    
    AC_MSG_CHECKING([if we are Mac OS X (to disable poll)])