Skip to content
Snippets Groups Projects
configure.ac 61 KiB
Newer Older
  • Learn to ignore specific revisions
  •     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
    
    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=
        ;;
      *)
        dnl check the given --with-libssh2 spot
        PREFIX_LIBSSH2=$OPT_LIBSSH2
        LIB_LIBSSH2="$PREFIX_LIBSSH2/lib$libsuff"
        LDFLAGS="$LDFLAGS -L$LIB_LIBSSH2"
        CPPFLAGS="$CPPFLAGS -I$PREFIX_LIBSSH2/include/libssh2 -I$PREFIX_LIBSSH2/include"
        ;;
      esac
    
      if test X"$HAVECRYPTO" = X"yes"; then
        dnl This is only reasonable to do if crypto actually is there: check for
        dnl LIBSSH2 libs NOTE: it is important to do this AFTER the crypto lib
    
        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
      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])
           USE_GNUTLS="yes"
    
          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])
    
      fi dnl GNUTLS not disabled
    
      if test X"$USE_GNUTLS" != "Xyes"; then
        AC_MSG_WARN([SSL disabled, you will not be able to use HTTPS, FTPS, NTLM and more.])
        AC_MSG_WARN([Use --with-ssl or --with-gnutls to address this.])
      fi
    
    fi dnl OPENSSL != 1
    
    
    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)
    
    
    
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    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"])
    
      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])
    
        ],
        [
          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])
    
        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)
    
    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 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
    
    
      if test x$checkfor_gmtime_r = xyes; then
    
        dnl if gmtime_r was found, verify that it actuall 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 \
    
            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 \
            dlfcn.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
    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 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
    AC_TYPE_SIGNAL
    
    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)])
    
        disable_poll="yes";
        ;;
      *)
        ;;
    esac
    AC_MSG_RESULT($disable_poll)
    
    if test "$disable_poll" = "no"; then
    
      dnl poll() might be badly emulated, as in Mac OS X 10.3 (and other BSDs?) and
      dnl to find out we make an extra check here!
      if test "$ac_cv_func_poll" = "yes"; then
        AC_MSG_CHECKING([if poll works with NULL inputs])
        AC_RUN_IFELSE([
    
    #ifdef HAVE_SYS_POLL_H
    #include <sys/poll.h>
    #endif
    
      int main(void)
      {
        /* make this return 0 == timeout since there's nothing to read from */
        return poll((void *)0, 0, 10 /*ms*/);
      }
    ],
    
        AC_MSG_RESULT(yes)
        AC_DEFINE(HAVE_POLL_FINE, 1, [If you have a fine poll]),
        AC_MSG_RESULT(no),
        AC_MSG_RESULT(cross-compiling assumes yes)
        AC_DEFINE(HAVE_POLL_FINE, 1, [If you have a fine poll])
        ) dnl end of AC_RUN_IFELSE
      fi dnl poll() was found
    fi dnl poll()-check is not disabled
    
    AC_PATH_PROG( PERL, perl, , 
      $PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
    AC_SUBST(PERL)
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    AC_PATH_PROGS( NROFF, gnroff nroff, , 
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
      $PATH:/usr/bin/:/usr/local/bin )
    
    AC_SUBST(NROFF)
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    
    if test -n "$NROFF"; then
      dnl only check for nroff options if an nroff command was found
    
      AC_MSG_CHECKING([how to use *nroff to get plain text from man pages])
      MANOPT="-man"
    
      mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
      if test -z "$mancheck"; then
    
        MANOPT="-mandoc"
       mancheck=`echo foo | $NROFF $MANOPT 2>/dev/null`
        if test -z "$mancheck"; then
          MANOPT=""
          AC_MSG_RESULT([failed])
          AC_MSG_WARN([found no *nroff option to get plaintext from man pages])
        else
          AC_MSG_RESULT([$MANOPT])
        fi
    
      AC_SUBST(MANOPT)
    fi
    
    if test -z "$MANOPT"
    then
      dnl if no nroff tool was found, or no option that could convert man pages
      dnl was found, then disable the built-in manual stuff
      AC_MSG_WARN([disabling built-in manual])
      USE_MANUAL="no";
    
    dnl *************************************************************************
    dnl If the manual variable still is set, then we go with providing a built-in
    dnl manual
    
    if test "$USE_MANUAL" = "1"; then
      AC_DEFINE(USE_MANUAL, 1, [If you want to build curl with the built-in manual])
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
      curl_manual_msg="enabled"
    
    fi
    
    dnl set variable for use in automakefile(s)
    AM_CONDITIONAL(USE_MANUAL, test x"$USE_MANUAL" = x1)
    
    
    AC_MSG_CHECKING([whether to enable ares])
    AC_ARG_ENABLE(ares,
    AC_HELP_STRING([--enable-ares=PATH],[Enable ares for name lookups])
    AC_HELP_STRING([--disable-ares],[Disable ares for name lookups]),
    [ case "$enableval" in
      no)
           AC_MSG_RESULT(no)
           ;;
      *)   AC_MSG_RESULT(yes)
    
           if test "x$IPV6_ENABLED" = "x1"; then
    
             AC_MSG_NOTICE([ares may not work properly with ipv6])
    
           fi
    
           AC_DEFINE(USE_ARES, 1, [Define if you want to enable ares support])
           dnl substitute HAVE_ARES for curl-config and similar
           HAVE_ARES="1"
           AC_SUBST(HAVE_ARES)
           curl_ares_msg="enabled"
    
    
    
           dnl For backwards compatibility default to includes/lib in srcdir/ares
           dnl If a value is specified it is assumed that the libs are in $val/lib
           dnl and the includes are in $val/include. This is the default setup for
           dnl ares so it should not be a problem.
           if test "x$enableval" = "xyes" ; then
             if test -d "$srcdir/ares"; then
                aresembedded="yes"
                AC_CONFIG_SUBDIRS(ares)
                aresinc=`cd $srcdir/ares && pwd`
                CPPFLAGS="$CPPFLAGS -I$aresinc"
    
                dnl the pwd= below cannot 'cd' into the ares dir to get the full
                dnl path to it, since it may not exist yet if we build outside of
                dnl the source tree
                pwd=`pwd`
                LDFLAGS="$LDFLAGS -L$pwd/ares"
             fi
           else
             CPPFLAGS="$CPPFLAGS -I$enableval/include"
             LDFLAGS="$LDFLAGS -L$enableval/lib"
           fi
    
           if test -z "$aresembedded"; then
             dnl verify that a sufficient c-ares is here if we have pointed one
             dnl out and don't use the "embedded" ares dir (in which case we don't
             dnl check it because it might not have been built yet)
             AC_MSG_CHECKING([that c-ares is good and recent enough])
             AC_LINK_IFELSE( [
    #include <ares.h>
    /* provide a set of dummy functions in case c-ares was built with debug */
    void curl_dofree() { }
    void curl_sclose() { }
    void curl_domalloc() { }
    
    int main(void)
    {
      ares_channel channel;
      ares_cancel(channel);
      return 0;
    }
    ],
              AC_MSG_RESULT(yes),
              AC_MSG_RESULT(no)
              AC_MSG_ERROR([c-ares library defective or too old])
              )
           fi
           ;;
      esac ],
           AC_MSG_RESULT(no)
    )
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
    
    
    dnl ************************************************************
    dnl disable verbose text strings
    dnl
    AC_MSG_CHECKING([whether to enable verbose strings])
    AC_ARG_ENABLE(verbose,
    AC_HELP_STRING([--enable-verbose],[Enable verbose strings])
    AC_HELP_STRING([--disable-verbose],[Disable verbose strings]),
    [ case "$enableval" in
      no)
           AC_MSG_RESULT(no)
           AC_DEFINE(CURL_DISABLE_VERBOSE_STRINGS, 1, [to disable verbose strings])
           AC_SUBST(CURL_DISABLE_VERBOSE_STRINGS)
           curl_verbose_msg="no"
           ;;
      *)   AC_MSG_RESULT(yes)
           ;;
      esac ],
           AC_MSG_RESULT(yes)
    )
    
    
    dnl ************************************************************
    dnl enable SSPI support
    dnl
    AC_MSG_CHECKING([whether to enable SSPI support (win32 builds only)])
    AC_ARG_ENABLE(sspi,
    AC_HELP_STRING([--enable-sspi],[Enable SSPI])
    AC_HELP_STRING([--disable-sspi],[Disable SSPI]),
    [ case "$enableval" in
      yes)
           AC_MSG_RESULT(yes)
           AC_DEFINE(USE_WINDOWS_SSPI, 1, [to enable SSPI support])
           AC_SUBST(USE_WINDOWS_SSPI)
           curl_sspi_msg="yes"
           ;;
      *)
           AC_MSG_RESULT(no)
           ;;
      esac ],
           AC_MSG_RESULT(no)
    )
    
    
    dnl ************************************************************
    dnl lame option to switch on debug options
    dnl
    AC_MSG_CHECKING([whether to enable debug options])
    AC_ARG_ENABLE(debug,
    
    AC_HELP_STRING([--enable-debug],[Enable pedantic debug options])
    AC_HELP_STRING([--disable-debug],[Disable debug options]),
    
    [ case "$enableval" in
      no)
           AC_MSG_RESULT(no)
           ;;
      *)   AC_MSG_RESULT(yes)
    
    
    Daniel Stenberg's avatar
    Daniel Stenberg committed
        CPPFLAGS="$CPPFLAGS -DCURLDEBUG"