mirror of
https://github.com/curl/curl.git
synced 2024-12-09 06:30:06 +08:00
ccb3a13ce6
-W -Wall -Wwrite-strings -pedantic -g
887 lines
22 KiB
Plaintext
887 lines
22 KiB
Plaintext
dnl $Id$
|
|
dnl Process this file with autoconf to produce a configure script.
|
|
AC_INIT
|
|
AC_CONFIG_SRCDIR([lib/urldata.h])
|
|
AM_CONFIG_HEADER(config.h src/config.h)
|
|
|
|
VERSION=`sed -ne 's/^#define LIBCURL_VERSION "\(.*\)"/\1/p' ${srcdir}/include/curl/curl.h`
|
|
AM_INIT_AUTOMAKE(curl,$VERSION)
|
|
|
|
dnl
|
|
dnl we extract the numerical version for curl-config only
|
|
VERSIONNUM=`sed -ne 's/^#define LIBCURL_VERSION_NUM 0x\(.*\)/\1/p' ${srcdir}/include/curl/curl.h`
|
|
AC_SUBST(VERSIONNUM)
|
|
|
|
dnl Solaris pkgadd support definitions
|
|
PKGADD_PKG="HAXXcurl"
|
|
PKGADD_NAME="cURL - a client that groks URLs"
|
|
PKGADD_VENDOR="curl.haxx.se"
|
|
AC_SUBST(PKGADD_PKG)
|
|
AC_SUBST(PKGADD_NAME)
|
|
AC_SUBST(PKGADD_VENDOR)
|
|
|
|
|
|
dnl
|
|
dnl Detect the canonical host and target build environment
|
|
dnl
|
|
|
|
AC_CANONICAL_HOST
|
|
dnl Get system canonical name
|
|
AC_DEFINE_UNQUOTED(OS, "${host}")
|
|
|
|
dnl Check for AIX weirdos
|
|
AC_AIX
|
|
|
|
dnl Checks for programs.
|
|
AC_PROG_CC
|
|
|
|
dnl check for how to do large files
|
|
AC_SYS_LARGEFILE
|
|
|
|
AM_PROG_LIBTOOL
|
|
|
|
dnl The install stuff has already been taken care of by the automake stuff
|
|
dnl AC_PROG_INSTALL
|
|
AC_PROG_MAKE_SET
|
|
|
|
dnl ************************************************************
|
|
dnl lame option to switch on debug options
|
|
dnl
|
|
AC_MSG_CHECKING([whether to enable debug options])
|
|
AC_ARG_ENABLE(debug,
|
|
[ --enable-debug Enable pedantic debug options
|
|
--disable-debug Disable debug options],
|
|
[ case "$enableval" in
|
|
no)
|
|
AC_MSG_RESULT(no)
|
|
;;
|
|
*) AC_MSG_RESULT(yes)
|
|
|
|
CPPFLAGS="$CPPFLAGS -DMALLOCDEBUG"
|
|
CFLAGS="-W -Wall -Wwrite-strings -pedantic -g"
|
|
;;
|
|
esac ],
|
|
AC_MSG_RESULT(no)
|
|
)
|
|
|
|
dnl ************************************************************
|
|
dnl check for "localhost", if it doesn't exist, we can't do the
|
|
dnl gethostbyname_r tests!
|
|
dnl
|
|
|
|
AC_DEFUN(CURL_CHECK_WORKING_RESOLVER,[
|
|
AC_MSG_CHECKING([if "localhost" resolves])
|
|
AC_TRY_RUN([
|
|
#include <string.h>
|
|
#include <sys/types.h>
|
|
#include <netdb.h>
|
|
|
|
int
|
|
main () {
|
|
struct hostent *h;
|
|
h = gethostbyname("localhost");
|
|
exit (h == NULL ? 1 : 0); }],[
|
|
AC_MSG_RESULT(yes)],[
|
|
AC_MSG_RESULT(no)
|
|
AC_MSG_ERROR([can't figure out gethostbyname_r() since localhost doesn't resolve])
|
|
|
|
]
|
|
)
|
|
])
|
|
|
|
dnl ************************************************************
|
|
dnl check for working getaddrinfo()
|
|
dnl
|
|
AC_DEFUN(CURL_CHECK_WORKING_GETADDRINFO,[
|
|
AC_CACHE_CHECK(for working getaddrinfo, ac_cv_working_getaddrinfo,[
|
|
AC_TRY_RUN( [
|
|
#include <netdb.h>
|
|
#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
|
|
void main(void) {
|
|
struct addrinfo hints, *ai;
|
|
int error;
|
|
|
|
memset(&hints, 0, sizeof(hints));
|
|
hints.ai_family = AF_UNSPEC;
|
|
hints.ai_socktype = SOCK_STREAM;
|
|
error = getaddrinfo("127.0.0.1", "8080", &hints, &ai);
|
|
if (error) {
|
|
exit(1);
|
|
}
|
|
else {
|
|
exit(0);
|
|
}
|
|
}
|
|
],[
|
|
ac_cv_working_getaddrinfo="yes"
|
|
],[
|
|
ac_cv_working_getaddrinfo="no"
|
|
],[
|
|
ac_cv_working_getaddrinfo="yes"
|
|
])])
|
|
if test "$ac_cv_working_getaddrinfo" = "yes"; then
|
|
AC_DEFINE(HAVE_GETADDRINFO, 1, [Define if getaddrinfo exists and works])
|
|
AC_DEFINE(ENABLE_IPV6, 1, [Define if you want to enable IPv6 support])
|
|
|
|
IPV6_ENABLED=1
|
|
AC_SUBST(IPV6_ENABLED)
|
|
fi
|
|
])
|
|
|
|
|
|
AC_DEFUN(CURL_CHECK_LOCALTIME_R,
|
|
[
|
|
dnl check for a few thread-safe functions
|
|
AC_CHECK_FUNCS(localtime_r,[
|
|
AC_MSG_CHECKING(whether localtime_r is declared)
|
|
AC_EGREP_CPP(localtime_r,[
|
|
#include <time.h>],[
|
|
AC_MSG_RESULT(yes)],[
|
|
AC_MSG_RESULT(no)
|
|
AC_MSG_CHECKING(whether localtime_r with -D_REENTRANT is declared)
|
|
AC_EGREP_CPP(localtime_r,[
|
|
#define _REENTRANT
|
|
#include <time.h>],[
|
|
AC_DEFINE(NEED_REENTRANT)
|
|
AC_MSG_RESULT(yes)],
|
|
AC_MSG_RESULT(no))])])
|
|
])
|
|
|
|
AC_DEFUN(CURL_CHECK_INET_NTOA_R,
|
|
[
|
|
dnl determine if function definition for inet_ntoa_r exists.
|
|
AC_CHECK_FUNCS(inet_ntoa_r,[
|
|
AC_MSG_CHECKING(whether inet_ntoa_r is declared)
|
|
AC_EGREP_CPP(inet_ntoa_r,[
|
|
#include <arpa/inet.h>],[
|
|
AC_DEFINE(HAVE_INET_NTOA_R_DECL)
|
|
AC_MSG_RESULT(yes)],[
|
|
AC_MSG_RESULT(no)
|
|
AC_MSG_CHECKING(whether inet_ntoa_r with -D_REENTRANT is declared)
|
|
AC_EGREP_CPP(inet_ntoa_r,[
|
|
#define _REENTRANT
|
|
#include <arpa/inet.h>],[
|
|
AC_DEFINE(HAVE_INET_NTOA_R_DECL)
|
|
AC_DEFINE(NEED_REENTRANT)
|
|
AC_MSG_RESULT(yes)],
|
|
AC_MSG_RESULT(no))])])
|
|
|
|
])
|
|
|
|
AC_DEFUN(CURL_CHECK_GETHOSTBYADDR_R,
|
|
[
|
|
dnl check for number of arguments to gethostbyaddr_r. it might take
|
|
dnl either 5, 7, or 8 arguments.
|
|
AC_CHECK_FUNCS(gethostbyaddr_r,[
|
|
AC_MSG_CHECKING(if gethostbyaddr_r takes 5 arguments)
|
|
AC_TRY_COMPILE([
|
|
#include <sys/types.h>
|
|
#include <netdb.h>],[
|
|
char * address;
|
|
int length;
|
|
int type;
|
|
struct hostent h;
|
|
struct hostent_data hdata;
|
|
int rc;
|
|
rc = gethostbyaddr_r(address, length, type, &h, &hdata);],[
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_GETHOSTBYADDR_R_5)
|
|
ac_cv_gethostbyaddr_args=5],[
|
|
AC_MSG_RESULT(no)
|
|
AC_MSG_CHECKING(if gethostbyaddr_r with -D_REENTRANT takes 5 arguments)
|
|
AC_TRY_COMPILE([
|
|
#define _REENTRANT
|
|
#include <sys/types.h>
|
|
#include <netdb.h>],[
|
|
char * address;
|
|
int length;
|
|
int type;
|
|
struct hostent h;
|
|
struct hostent_data hdata;
|
|
int rc;
|
|
rc = gethostbyaddr_r(address, length, type, &h, &hdata);],[
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_GETHOSTBYADDR_R_5)
|
|
AC_DEFINE(NEED_REENTRANT)
|
|
ac_cv_gethostbyaddr_args=5],[
|
|
AC_MSG_RESULT(no)
|
|
AC_MSG_CHECKING(if gethostbyaddr_r takes 7 arguments)
|
|
AC_TRY_COMPILE([
|
|
#include <sys/types.h>
|
|
#include <netdb.h>],[
|
|
char * address;
|
|
int length;
|
|
int type;
|
|
struct hostent h;
|
|
char buffer[8192];
|
|
int h_errnop;
|
|
struct hostent * hp;
|
|
|
|
hp = gethostbyaddr_r(address, length, type, &h,
|
|
buffer, 8192, &h_errnop);],[
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_GETHOSTBYADDR_R_7)
|
|
ac_cv_gethostbyaddr_args=7],[
|
|
AC_MSG_RESULT(no)
|
|
AC_MSG_CHECKING(if gethostbyaddr_r takes 8 arguments)
|
|
AC_TRY_COMPILE([
|
|
#include <sys/types.h>
|
|
#include <netdb.h>],[
|
|
char * address;
|
|
int length;
|
|
int type;
|
|
struct hostent h;
|
|
char buffer[8192];
|
|
int h_errnop;
|
|
struct hostent * hp;
|
|
int rc;
|
|
|
|
rc = gethostbyaddr_r(address, length, type, &h,
|
|
buffer, 8192, &hp, &h_errnop);],[
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_GETHOSTBYADDR_R_8)
|
|
ac_cv_gethostbyaddr_args=8],[
|
|
AC_MSG_RESULT(no)
|
|
have_missing_r_funcs="$have_missing_r_funcs gethostbyaddr_r"])])])])])
|
|
|
|
|
|
])
|
|
|
|
AC_DEFUN(CURL_CHECK_GETHOSTBYNAME_R,
|
|
[
|
|
dnl check for number of arguments to gethostbyname_r. it might take
|
|
dnl either 3, 5, or 6 arguments.
|
|
AC_CHECK_FUNCS(gethostbyname_r,[
|
|
AC_MSG_CHECKING(if gethostbyname_r takes 3 arguments)
|
|
AC_TRY_RUN([
|
|
#include <string.h>
|
|
#include <sys/types.h>
|
|
#include <netdb.h>
|
|
|
|
int
|
|
main () {
|
|
struct hostent h;
|
|
struct hostent_data hdata;
|
|
char *name = "localhost";
|
|
int rc;
|
|
memset(&h, 0, sizeof(struct hostent));
|
|
memset(&hdata, 0, sizeof(struct hostent_data));
|
|
rc = gethostbyname_r(name, &h, &hdata);
|
|
exit (rc != 0 ? 1 : 0); }],[
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_GETHOSTBYNAME_R_3)
|
|
ac_cv_gethostbyname_args=3],[
|
|
AC_MSG_RESULT(no)
|
|
AC_MSG_CHECKING(if gethostbyname_r with -D_REENTRANT takes 3 arguments)
|
|
AC_TRY_RUN([
|
|
#define _REENTRANT
|
|
|
|
#include <string.h>
|
|
#include <sys/types.h>
|
|
#include <netdb.h>
|
|
|
|
int
|
|
main () {
|
|
struct hostent h;
|
|
struct hostent_data hdata;
|
|
char *name = "localhost";
|
|
int rc;
|
|
memset(&h, 0, sizeof(struct hostent));
|
|
memset(&hdata, 0, sizeof(struct hostent_data));
|
|
rc = gethostbyname_r(name, &h, &hdata);
|
|
exit (rc != 0 ? 1 : 0); }],[
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_GETHOSTBYNAME_R_3)
|
|
AC_DEFINE(NEED_REENTRANT)
|
|
ac_cv_gethostbyname_args=3],[
|
|
AC_MSG_RESULT(no)
|
|
AC_MSG_CHECKING(if gethostbyname_r takes 5 arguments)
|
|
AC_TRY_RUN([
|
|
#include <sys/types.h>
|
|
#include <netdb.h>
|
|
|
|
int
|
|
main () {
|
|
struct hostent *hp;
|
|
struct hostent h;
|
|
char *name = "localhost";
|
|
char buffer[8192];
|
|
int h_errno;
|
|
hp = gethostbyname_r(name, &h, buffer, 8192, &h_errno);
|
|
exit (hp == NULL ? 1 : 0); }],[
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_GETHOSTBYNAME_R_5)
|
|
ac_cv_gethostbyname_args=5],[
|
|
AC_MSG_RESULT(no)
|
|
AC_MSG_CHECKING(if gethostbyname_r takes 6 arguments)
|
|
AC_TRY_RUN([
|
|
#include <sys/types.h>
|
|
#include <netdb.h>
|
|
|
|
int
|
|
main () {
|
|
struct hostent h;
|
|
struct hostent *hp;
|
|
char *name = "localhost";
|
|
char buf[8192];
|
|
int rc;
|
|
int h_errno;
|
|
rc = gethostbyname_r(name, &h, buf, 8192, &hp, &h_errno);
|
|
exit (rc != 0 ? 1 : 0); }],[
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_GETHOSTBYNAME_R_6)
|
|
ac_cv_gethostbyname_args=6],[
|
|
AC_MSG_RESULT(no)
|
|
have_missing_r_funcs="$have_missing_r_funcs gethostbyname_r"],
|
|
[ac_cv_gethostbyname_args=0])],
|
|
[ac_cv_gethostbyname_args=0])],
|
|
[ac_cv_gethostbyname_args=0])],
|
|
[ac_cv_gethostbyname_args=0])])
|
|
|
|
if test "$ac_cv_func_gethostbyname_r" = "yes"; then
|
|
if test "$ac_cv_gethostbyname_args" = "0"; then
|
|
dnl there's a gethostbyname_r() function, but we don't know how
|
|
dnl many arguments it wants!
|
|
AC_MSG_ERROR([couldn't figure out how to use gethostbyname_r()])
|
|
fi
|
|
fi
|
|
|
|
])
|
|
|
|
dnl **********************************************************************
|
|
dnl Checks for IPv6
|
|
dnl **********************************************************************
|
|
|
|
AC_MSG_CHECKING([whether to enable ipv6])
|
|
AC_ARG_ENABLE(ipv6,
|
|
[ --enable-ipv6 Enable ipv6 (with ipv4) support
|
|
--disable-ipv6 Disable ipv6 support],
|
|
[ case "$enableval" in
|
|
no)
|
|
AC_MSG_RESULT(no)
|
|
ipv6=no
|
|
;;
|
|
*) AC_MSG_RESULT(yes)
|
|
ipv6=yes
|
|
;;
|
|
esac ],
|
|
|
|
AC_TRY_RUN([ /* is AF_INET6 available? */
|
|
#include <sys/types.h>
|
|
#include <sys/socket.h>
|
|
main()
|
|
{
|
|
if (socket(AF_INET6, SOCK_STREAM, 0) < 0)
|
|
exit(1);
|
|
else
|
|
exit(0);
|
|
}
|
|
],
|
|
AC_MSG_RESULT(yes)
|
|
ipv6=yes,
|
|
AC_MSG_RESULT(no)
|
|
ipv6=no,
|
|
AC_MSG_RESULT(no)
|
|
ipv6=no
|
|
))
|
|
|
|
if test "$ipv6" = "yes"; then
|
|
CURL_CHECK_WORKING_GETADDRINFO
|
|
fi
|
|
|
|
|
|
dnl **********************************************************************
|
|
dnl Checks for libraries.
|
|
dnl **********************************************************************
|
|
|
|
dnl gethostbyname in the nsl lib?
|
|
AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname))
|
|
|
|
if test "$ac_cv_lib_nsl_gethostbyname" != "yes" -a "$ac_cv_func_gethostbyname" != "yes"; then
|
|
dnl gethostbyname in the socket lib?
|
|
AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(socket, gethostbyname))
|
|
fi
|
|
|
|
dnl At least one system has been identified to require BOTH nsl and
|
|
dnl socket libs to link properly.
|
|
if test "$ac_cv_lib_nsl_gethostbyname" = "$ac_cv_func_gethostbyname"; then
|
|
AC_MSG_CHECKING([trying both nsl and socket libs])
|
|
my_ac_save_LIBS=$LIBS
|
|
LIBS="-lnsl -lsocket $LIBS"
|
|
AC_TRY_LINK( ,
|
|
[gethostbyname();],
|
|
my_ac_link_result=success,
|
|
my_ac_link_result=failure )
|
|
|
|
if test "$my_ac_link_result" = "failure"; then
|
|
AC_MSG_RESULT([no])
|
|
AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
|
|
dnl restore LIBS
|
|
LIBS=$my_ac_save_LIBS
|
|
else
|
|
AC_MSG_RESULT([yes])
|
|
fi
|
|
fi
|
|
|
|
dnl resolve lib?
|
|
AC_CHECK_FUNC(strcasecmp, , AC_CHECK_LIB(resolve, strcasecmp))
|
|
|
|
if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
|
|
AC_CHECK_LIB(resolve, strcasecmp,
|
|
[LIBS="-lresolve $LIBS"],
|
|
,
|
|
-lnsl)
|
|
fi
|
|
|
|
dnl socket lib?
|
|
AC_CHECK_FUNC(connect, , AC_CHECK_LIB(socket, connect))
|
|
|
|
dnl ucb lib?
|
|
AC_CHECK_FUNC(gethostname, , AC_CHECK_LIB(ucb, gethostname))
|
|
|
|
dnl dl lib?
|
|
AC_CHECK_FUNC(dlclose, , AC_CHECK_LIB(dl, dlopen))
|
|
|
|
dnl **********************************************************************
|
|
dnl Check for the random seed preferences
|
|
dnl **********************************************************************
|
|
|
|
AC_ARG_WITH(egd-socket,
|
|
[ --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")
|
|
fi
|
|
|
|
dnl Check for user-specified random device
|
|
AC_ARG_WITH(random,
|
|
[ --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" ; then
|
|
AC_SUBST(RANDOM_FILE)
|
|
AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE")
|
|
fi
|
|
|
|
dnl **********************************************************************
|
|
dnl Check for the presence of Kerberos4 libraries and headers
|
|
dnl **********************************************************************
|
|
|
|
AC_ARG_WITH(krb4-includes,
|
|
[ --with-krb4-includes[=DIR] Specify location of kerberos4 headers],[
|
|
CPPFLAGS="$CPPFLAGS -I$withval"
|
|
KRB4INC="$withval"
|
|
want_krb4=yes
|
|
])
|
|
|
|
AC_ARG_WITH(krb4-libs,
|
|
[ --with-krb4-libs[=DIR] Specify location of kerberos4 libs],[
|
|
LDFLAGS="$LDFLAGS -L$withval"
|
|
KRB4LIB="$withval"
|
|
want_krb4=yes
|
|
])
|
|
|
|
|
|
OPT_KRB4=off
|
|
AC_ARG_WITH(krb4,dnl
|
|
[ --with-krb4[=DIR] where to look for Kerberos4],[
|
|
OPT_KRB4="$withval"
|
|
if test X"$OPT_KRB4" != Xyes
|
|
then
|
|
LDFLAGS="$LDFLAGS -L$OPT_KRB4/lib"
|
|
KRB4LIB="$OPT_KRB4/lib"
|
|
CPPFLAGS="$CPPFLAGS -I$OPT_KRB4/include"
|
|
KRB4INC="$OPT_KRB4/include"
|
|
fi
|
|
want_krb4="yes"
|
|
])
|
|
|
|
AC_MSG_CHECKING([if Kerberos4 support is requested])
|
|
|
|
if test "$want_krb4" = yes
|
|
then
|
|
if test "$ipv6" = "yes"; then
|
|
echo krb4 is not compatible with IPv6
|
|
exit 1
|
|
fi
|
|
AC_MSG_RESULT(yes)
|
|
|
|
dnl Check for & handle argument to --with-krb4
|
|
|
|
AC_MSG_CHECKING(where to look for Kerberos4)
|
|
if test X"$OPT_KRB4" = Xyes
|
|
then
|
|
AC_MSG_RESULT([defaults])
|
|
else
|
|
AC_MSG_RESULT([libs in $KRB4LIB, headers in $KRB4INC])
|
|
fi
|
|
|
|
dnl Check for DES library
|
|
AC_CHECK_LIB(des, des_pcbc_encrypt,
|
|
[
|
|
AC_CHECK_HEADERS(des.h)
|
|
|
|
dnl resolv lib?
|
|
AC_CHECK_FUNC(res_search, , AC_CHECK_LIB(resolv, res_search))
|
|
|
|
dnl Check for the Kerberos4 library
|
|
AC_CHECK_LIB(krb, krb_net_read,
|
|
[
|
|
dnl Check for header files
|
|
AC_CHECK_HEADERS(krb.h)
|
|
|
|
dnl we found the required libraries, add to LIBS
|
|
LIBS="-lkrb -ldes $LIBS"
|
|
|
|
dnl Check for function krb_get_our_ip_for_realm
|
|
dnl this is needed for NAT networks
|
|
AC_CHECK_FUNCS(krb_get_our_ip_for_realm)
|
|
|
|
dnl add define KRB4
|
|
AC_DEFINE(KRB4)
|
|
|
|
dnl substitute it too!
|
|
KRB4_ENABLED=1
|
|
AC_SUBST(KRB4_ENABLED)
|
|
|
|
dnl the krb4 stuff needs a strlcpy()
|
|
AC_CHECK_FUNCS(strlcpy)
|
|
|
|
])
|
|
])
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
|
|
dnl **********************************************************************
|
|
dnl Check for the presence of SSL libraries and headers
|
|
dnl **********************************************************************
|
|
|
|
dnl Default to compiler & linker defaults for SSL files & libraries.
|
|
OPT_SSL=off
|
|
AC_ARG_WITH(ssl,dnl
|
|
[ --with-ssl[=DIR] where to look for SSL [compiler/linker default paths]
|
|
DIR points to the SSL installation [/usr/local/ssl]],
|
|
OPT_SSL=$withval
|
|
)
|
|
|
|
if test X"$OPT_SSL" = Xno
|
|
then
|
|
AC_MSG_WARN(SSL/https support disabled)
|
|
else
|
|
|
|
dnl Check for and handle argument to --with-ssl.
|
|
|
|
dnl save the pre-ssl check flags for a while
|
|
CLEANLDFLAGS="$LDFLAGS"
|
|
CLEANCPPFLAGS="$CPPFLAGS"
|
|
|
|
case "$OPT_SSL" in
|
|
yes)
|
|
EXTRA_SSL=/usr/local/ssl ;;
|
|
*)
|
|
dnl check the given spot right away!
|
|
EXTRA_SSL=$OPT_SSL
|
|
LDFLAGS="$LDFLAGS -L$EXTRA_SSL/lib"
|
|
CPPFLAGS="$CPPFLAGS -I$EXTRA_SSL/include/openssl -I$EXTRA_SSL/include"
|
|
;;
|
|
esac
|
|
|
|
AC_CHECK_LIB(crypto, CRYPTO_lock,[
|
|
HAVECRYPTO="yes"
|
|
],[
|
|
OLDLDFLAGS="$LDFLAGS"
|
|
OLDCPPFLAGS="$CPPFLAGS"
|
|
LDFLAGS="$CLEANLDFLAGS -L$EXTRA_SSL/lib"
|
|
CPPFLAGS="$CLEANCPPFLAGS -I$EXTRA_SSL/include/openssl -I$EXTRA_SSL/include"
|
|
AC_CHECK_LIB(crypto, CRYPTO_add_lock,[
|
|
HAVECRYPTO="yes" ], [
|
|
LDFLAGS="$OLDLDFLAGS"
|
|
CPPFLAGS="$OLDCPPFLAGS"
|
|
])
|
|
])
|
|
|
|
|
|
if test "$HAVECRYPTO" = "yes"; then
|
|
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
|
|
|
|
AC_CHECK_LIB(crypto, CRYPTO_add_lock)
|
|
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
|
|
fi
|
|
|
|
|
|
dnl Check for SSLeay headers
|
|
AC_CHECK_HEADERS(openssl/x509.h openssl/rsa.h openssl/crypto.h \
|
|
openssl/pem.h openssl/ssl.h openssl/err.h,
|
|
OPENSSL_ENABLED=1)
|
|
|
|
if test $ac_cv_header_openssl_x509_h = no; then
|
|
AC_CHECK_HEADERS(x509.h rsa.h crypto.h pem.h ssl.h err.h,
|
|
OPENSSL_ENABLED=1)
|
|
fi
|
|
|
|
AC_SUBST(OPENSSL_ENABLED)
|
|
|
|
fi
|
|
|
|
if test X"$OPT_SSL" != Xoff &&
|
|
test "$OPENSSL_ENABLED" != "1"; then
|
|
AC_MSG_ERROR([OpenSSL libs and/or directories were not found where specified!])
|
|
fi
|
|
|
|
|
|
dnl these can only exist if openssl exists
|
|
|
|
AC_CHECK_FUNCS( RAND_status \
|
|
RAND_screen \
|
|
RAND_egd )
|
|
|
|
fi
|
|
|
|
dnl **********************************************************************
|
|
dnl Check for the presence of ZLIB libraries and headers
|
|
dnl **********************************************************************
|
|
|
|
dnl Default to compiler & linker defaults for files & libraries.
|
|
dnl OPT_ZLIB=no
|
|
dnl AC_ARG_WITH(zlib,dnl
|
|
dnl [ --with-zlib[=DIR] where to look for ZLIB [compiler/linker default paths]
|
|
dnl DIR points to the ZLIB installation prefix [/usr/local]],
|
|
dnl OPT_ZLIB=$withval,
|
|
dnl )
|
|
|
|
dnl Check for & handle argument to --with-zlib.
|
|
dnl
|
|
dnl NOTE: We *always* look for ZLIB headers & libraries, all this option
|
|
dnl does is change where we look (by adjusting LIBS and CPPFLAGS.)
|
|
dnl
|
|
|
|
dnl AC_MSG_CHECKING(where to look for ZLIB)
|
|
dnl if test X"$OPT_ZLIB" = Xno
|
|
dnl then
|
|
dnl AC_MSG_RESULT([defaults (or given in environment)])
|
|
dnl else
|
|
dnl test X"$OPT_ZLIB" = Xyes && OPT_ZLIB=/usr/local
|
|
dnl LIBS="$LIBS -L$OPT_ZLIB/lib"
|
|
dnl CPPFLAGS="$CPPFLAGS -I$OPT_ZLIB/include"
|
|
dnl AC_MSG_RESULT([$OPT_ZLIB])
|
|
dnl fi
|
|
|
|
dnl z lib?
|
|
dnl AC_CHECK_FUNC(gzread, , AC_CHECK_LIB(z, gzread))
|
|
|
|
|
|
dnl Default is to try the thread-safe versions of a few functions
|
|
OPT_THREAD=on
|
|
AC_ARG_ENABLE(thread,dnl
|
|
[ --disable-thread tell configure to not look for thread-safe functions],
|
|
OPT_THREAD=off
|
|
)
|
|
|
|
if test X"$OPT_THREAD" = Xoff
|
|
then
|
|
AC_MSG_WARN(libcurl will not get built using thread-safe functions)
|
|
AC_DEFINE(DISABLED_THREADSAFE, 1, \
|
|
Set to explicitly specify we don't want to use thread-safe functions)
|
|
else
|
|
|
|
dnl check that 'localhost' resolves first
|
|
CURL_CHECK_WORKING_RESOLVER
|
|
|
|
dnl dig around for gethostbyname_r()
|
|
CURL_CHECK_GETHOSTBYNAME_R()
|
|
|
|
dnl dig around for gethostbyaddr_r()
|
|
CURL_CHECK_GETHOSTBYADDR_R()
|
|
|
|
dnl poke around for inet_ntoa_r()
|
|
CURL_CHECK_INET_NTOA_R()
|
|
|
|
dnl is there a localtime_r()
|
|
CURL_CHECK_LOCALTIME_R()
|
|
|
|
fi
|
|
|
|
dnl **********************************************************************
|
|
dnl Back to "normal" configuring
|
|
dnl **********************************************************************
|
|
|
|
dnl Checks for header files.
|
|
AC_HEADER_STDC
|
|
AC_CHECK_HEADERS( \
|
|
unistd.h \
|
|
malloc.h \
|
|
stdlib.h \
|
|
arpa/inet.h \
|
|
net/if.h \
|
|
netinet/in.h \
|
|
netinet/if_ether.h \
|
|
netdb.h \
|
|
sys/select.h \
|
|
sys/socket.h \
|
|
sys/sockio.h \
|
|
sys/stat.h \
|
|
sys/types.h \
|
|
sys/time.h \
|
|
getopt.h \
|
|
sys/param.h \
|
|
termios.h \
|
|
termio.h \
|
|
sgtty.h \
|
|
fcntl.h \
|
|
dlfcn.h \
|
|
alloca.h \
|
|
winsock.h \
|
|
time.h \
|
|
io.h \
|
|
pwd.h
|
|
)
|
|
|
|
dnl Check for libz header
|
|
dnl AC_CHECK_HEADERS(zlib.h)
|
|
|
|
dnl Checks for typedefs, structures, and compiler characteristics.
|
|
AC_C_CONST
|
|
AC_TYPE_SIZE_T
|
|
AC_HEADER_TIME
|
|
|
|
# mprintf() checks:
|
|
|
|
# check for 'long double'
|
|
AC_CHECK_SIZEOF(long double, 8)
|
|
# check for 'long long'
|
|
AC_CHECK_SIZEOF(long long, 4)
|
|
|
|
# check for ssize_t
|
|
AC_CHECK_TYPE(ssize_t, int)
|
|
|
|
dnl
|
|
dnl We can't just AC_CHECK_TYPE() for socklen_t since it doesn't appear
|
|
dnl in the standard headers. We egrep for it in the socket headers and
|
|
dnl if it is used there we assume we have the type defined, otherwise
|
|
dnl we search for it with AC_CHECK_TYPE() the "normal" way
|
|
dnl
|
|
|
|
if test "$ac_cv_header_sys_socket_h" = "yes"; then
|
|
AC_MSG_CHECKING(for socklen_t in sys/socket.h)
|
|
AC_EGREP_HEADER(socklen_t,
|
|
sys/socket.h,
|
|
socklen_t=yes
|
|
AC_MSG_RESULT(yes),
|
|
AC_MSG_RESULT(no))
|
|
fi
|
|
|
|
if test "$socklen_t" != "yes"; then
|
|
# check for socklen_t the standard way if it wasn't found before
|
|
AC_CHECK_TYPE(socklen_t, int)
|
|
fi
|
|
|
|
dnl Checks for library functions.
|
|
dnl AC_PROG_GCC_TRADITIONAL
|
|
AC_TYPE_SIGNAL
|
|
dnl AC_FUNC_VPRINTF
|
|
AC_CHECK_FUNCS( socket \
|
|
select \
|
|
strdup \
|
|
strstr \
|
|
strtok_r \
|
|
strftime \
|
|
uname \
|
|
strcasecmp \
|
|
stricmp \
|
|
strcmpi \
|
|
gethostname \
|
|
gethostbyaddr \
|
|
getservbyname \
|
|
gettimeofday \
|
|
inet_addr \
|
|
inet_ntoa \
|
|
tcsetattr \
|
|
tcgetattr \
|
|
perror \
|
|
closesocket \
|
|
setvbuf \
|
|
sigaction \
|
|
signal \
|
|
getpass_r \
|
|
strlcat \
|
|
getpwuid \
|
|
geteuid \
|
|
dlopen
|
|
)
|
|
|
|
dnl removed 'getpass' check on October 26, 2000
|
|
|
|
if test "$ac_cv_func_select" != "yes"; then
|
|
AC_MSG_ERROR(Can't work without an existing select() function)
|
|
fi
|
|
if test "$ac_cv_func_socket" != "yes"; then
|
|
AC_MSG_ERROR(Can't work without an existing socket() function)
|
|
fi
|
|
|
|
AC_PATH_PROG( PERL, perl, ,
|
|
$PATH:/usr/local/bin/perl:/usr/bin/:/usr/local/bin )
|
|
AC_SUBST(PERL)
|
|
|
|
AC_PATH_PROGS( NROFF, gnroff nroff, ,
|
|
$PATH:/usr/bin/:/usr/local/bin )
|
|
AC_SUBST(NROFF)
|
|
|
|
AC_PROG_YACC
|
|
|
|
dnl AC_PATH_PROG( RANLIB, ranlib, /usr/bin/ranlib,
|
|
dnl $PATH:/usr/bin/:/usr/local/bin )
|
|
dnl AC_SUBST(RANLIB)
|
|
|
|
AC_CONFIG_FILES([Makefile \
|
|
docs/Makefile \
|
|
docs/examples/Makefile \
|
|
include/Makefile \
|
|
include/curl/Makefile \
|
|
src/Makefile \
|
|
lib/Makefile \
|
|
tests/Makefile \
|
|
tests/data/Makefile \
|
|
packages/Makefile \
|
|
packages/Win32/Makefile \
|
|
packages/Linux/Makefile \
|
|
packages/Linux/RPM/Makefile \
|
|
packages/Linux/RPM/curl.spec \
|
|
packages/Linux/RPM/curl-ssl.spec \
|
|
packages/Solaris/Makefile \
|
|
perl/Makefile \
|
|
perl/Curl_easy/Makefile \
|
|
php/Makefile \
|
|
php/examples/Makefile \
|
|
curl-config
|
|
])
|
|
AC_OUTPUT
|
|
|