Skip to content
configure.ac 53.4 KiB
Newer Older
Daniel Stenberg's avatar
Daniel Stenberg committed
  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
      CLEANLDFLAGS="$LDFLAGS"
      CLEANCPPFLAGS="$CPPFLAGS"
      LDFLAGS="$LDFLAGS $addlib"
      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
]
)

if test X"$OPT_THREAD" = Xoff
then
  AC_DEFINE(DISABLED_THREADSAFE, 1, \
Set to explicitly specify we don't want to use thread-safe functions)
else
  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 First 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 \
        winsock.h \
Daniel Stenberg's avatar
Daniel Stenberg committed
        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

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

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 \
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" != "yes"; then
  AC_MSG_CHECKING([for select in ws2_32])
  AC_TRY_LINK([#include <winsock2.h>],
               [select(0,(fd_set *)NULL,(fd_set *)NULL,(fd_set *)NULL,(struct timeval *)NULL);],
               [ dnl worked!
               AC_MSG_RESULT([yes])
               HAVE_SELECT="1"
               AC_DEFINE_UNQUOTED(HAVE_SELECT,1)],
               [AC_MSG_ERROR(You can't compile without a select)]
             )
fi

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]),
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"
    dnl set compiler "debug" options to become more picky, and remove
    dnl optimize options from CFLAGS
    CURL_CC_DEBUG_OPTS
dnl ************************************************************
dnl disable cryptographic authentication
dnl
AC_MSG_CHECKING([whether to enable cryptographic authentication methods])
AC_ARG_ENABLE(crypto-auth,
AC_HELP_STRING([--enable-crypto-auth],[Enable cryptographic authentication])
AC_HELP_STRING([--disable-crypto-auth],[Disable cryptographic authentication]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_CRYPTO_AUTH, 1, [to disable cryptographic authentication])
       AC_SUBST(CURL_DISABLE_CRYPTO_AUTH)
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

dnl ************************************************************
dnl disable cookies support
dnl
AC_MSG_CHECKING([whether to enable support for cookies])
AC_ARG_ENABLE(cookies,
AC_HELP_STRING([--enable-cookies],[Enable cookies support])
AC_HELP_STRING([--disable-cookies],[Disable cookies support]),
[ case "$enableval" in
  no)
       AC_MSG_RESULT(no)
       AC_DEFINE(CURL_DISABLE_COOKIES, 1, [to disable cookies support])
       AC_SUBST(CURL_DISABLE_COOKIES)
       ;;
  *)   AC_MSG_RESULT(yes)
       ;;
  esac ],
       AC_MSG_RESULT(yes)
)

if test "x$ws2" = "xyes"; then

  dnl If ws2_32 is wanted, make sure it is the _last_ lib in LIBS (makes
  dnl things work when built with c-ares). But we can't just move it last
  dnl since then other stuff (SSL) won't build. So we simply append it to the
  dnl end.

  LIBS="$LIBS -lws2_32"

fi

AM_CONDITIONAL(CROSSCOMPILING, test x$cross_compiling = xyes)

AC_CONFIG_FILES([Makefile \
Daniel Stenberg's avatar
Daniel Stenberg committed
	   docs/Makefile \
           docs/examples/Makefile \
Daniel Stenberg's avatar
Daniel Stenberg committed
           docs/libcurl/Makefile \
	   include/Makefile \
	   include/curl/Makefile \
Daniel Stenberg's avatar
Daniel Stenberg committed
	   src/Makefile \
Daniel Stenberg's avatar
Daniel Stenberg committed
           lib/Makefile \
           tests/Makefile \
           tests/data/Makefile \
           tests/server/Makefile \
           tests/libtest/Makefile \
Daniel Stenberg's avatar
Daniel Stenberg committed
	   packages/Makefile \
	   packages/Win32/Makefile \
	   packages/Win32/cygwin/Makefile \
Daniel Stenberg's avatar
Daniel Stenberg committed
	   packages/Linux/Makefile \
	   packages/Linux/RPM/Makefile \
	   packages/Linux/RPM/curl.spec \
	   packages/Linux/RPM/curl-ssl.spec \
           packages/DOS/Makefile \
Daniel Stenberg's avatar
Daniel Stenberg committed
           packages/EPM/curl.list \
           packages/EPM/Makefile \
           packages/vms/Makefile \
Daniel Stenberg's avatar
Daniel Stenberg committed
           curl-config \
           libcurl.pc
Daniel Stenberg's avatar
Daniel Stenberg committed

AC_MSG_NOTICE([Configured to build curl/libcurl:

  curl version:    ${VERSION}
  Host setup:      ${host}
  Install prefix:  ${prefix}
  Compiler:        ${CC}
  SSL support:     ${curl_ssl_msg}
  zlib support:    ${curl_zlib_msg}
  krb4 support:    ${curl_krb4_msg}
  GSSAPI support:  ${curl_gss_msg}
  SPNEGO support:  ${curl_spnego_msg}
Daniel Stenberg's avatar
Daniel Stenberg committed
  c-ares support:  ${curl_ares_msg}
  ipv6 support:    ${curl_ipv6_msg}
  IDN support:     ${curl_idn_msg}
Daniel Stenberg's avatar
Daniel Stenberg committed
  Build libcurl:   Shared=${enable_shared}, Static=${enable_static} 
  Built-in manual: ${curl_manual_msg}
  Verbose errors:  ${curl_verbose_msg}
Daniel Stenberg's avatar
Daniel Stenberg committed
])