mirror of
https://github.com/moparisthebest/curl
synced 2024-12-21 23:58:49 -05:00
563 lines
14 KiB
Plaintext
563 lines
14 KiB
Plaintext
dnl $Id$
|
|
dnl Process this file with autoconf to produce a configure script.
|
|
AC_INIT(lib/urldata.h)
|
|
AM_CONFIG_HEADER(config.h src/config.h)
|
|
AM_INIT_AUTOMAKE(curl,"7.4.1")
|
|
AM_PROG_LIBTOOL
|
|
|
|
dnl
|
|
dnl Detect the canonical host and target build environment
|
|
dnl
|
|
AC_CANONICAL_HOST
|
|
AC_CANONICAL_TARGET
|
|
|
|
dnl Checks for programs.
|
|
AC_PROG_CC
|
|
|
|
dnl Check for AIX weirdos
|
|
AC_AIX
|
|
|
|
dnl check for how to do large files
|
|
AC_SYS_LARGEFILE
|
|
|
|
dnl The install stuff has already been taken care of by the automake stuff
|
|
dnl AC_PROG_INSTALL
|
|
AC_PROG_MAKE_SET
|
|
|
|
|
|
dnl **********************************************************************
|
|
dnl Checks for libraries.
|
|
dnl **********************************************************************
|
|
|
|
dnl nsl lib?
|
|
AC_CHECK_FUNC(gethostbyname, , AC_CHECK_LIB(nsl, gethostbyname))
|
|
|
|
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(dlopen, , AC_CHECK_LIB(dl, dlopen))
|
|
|
|
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
|
|
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 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 & handle argument to --with-ssl.
|
|
|
|
AC_MSG_CHECKING(where to look for SSL)
|
|
if test X"$OPT_SSL" = Xoff
|
|
then
|
|
AC_MSG_RESULT([defaults (or given in environment)])
|
|
else
|
|
test X"$OPT_SSL" = Xyes && OPT_SSL=/usr/local/ssl
|
|
LIBS="$LIBS -L$OPT_SSL/lib"
|
|
CPPFLAGS="$CPPFLAGS -I$OPT_SSL/include/openssl -I$OPT_SSL/include"
|
|
AC_MSG_RESULT([$OPT_SSL])
|
|
fi
|
|
|
|
dnl check for crypto libs (part of SSLeay)
|
|
AC_CHECK_LIB(crypto, CRYPTO_lock)
|
|
|
|
if test $ac_cv_lib_crypto_CRYPTO_lock = 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(ssl, SSL_connect)
|
|
|
|
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)
|
|
|
|
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)
|
|
fi
|
|
|
|
fi
|
|
|
|
dnl these can only exist if openssl exists
|
|
|
|
AC_CHECK_FUNCS( RAND_status \
|
|
RAND_screen )
|
|
|
|
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 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])])
|
|
|
|
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"])])])])])
|
|
|
|
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))])])
|
|
|
|
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))])])
|
|
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 \
|
|
)
|
|
|
|
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)
|
|
|
|
dnl Get system canonical name
|
|
AC_CANONICAL_HOST
|
|
AC_DEFINE_UNQUOTED(OS, "${host}")
|
|
|
|
dnl Checks for library functions.
|
|
dnl AC_PROG_GCC_TRADITIONAL
|
|
AC_TYPE_SIGNAL
|
|
dnl AC_FUNC_VPRINTF
|
|
AC_CHECK_FUNCS( socket \
|
|
select \
|
|
strdup \
|
|
strstr \
|
|
strftime \
|
|
uname \
|
|
strcasecmp \
|
|
stricmp \
|
|
strcmpi \
|
|
gethostname \
|
|
gethostbyaddr \
|
|
getservbyname \
|
|
gettimeofday \
|
|
inet_addr \
|
|
inet_ntoa \
|
|
tcsetattr \
|
|
tcgetattr \
|
|
perror \
|
|
getpass \
|
|
closesocket \
|
|
setvbuf
|
|
)
|
|
|
|
if test "$ac_cv_func_select" != "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_OUTPUT( Makefile \
|
|
curl.spec \
|
|
curl-ssl.spec \
|
|
docs/Makefile \
|
|
include/Makefile \
|
|
include/curl/Makefile \
|
|
src/Makefile \
|
|
lib/Makefile )
|
|
dnl perl/checklinks.pl \
|
|
dnl perl/getlinks.pl \
|
|
dnl perl/formfind.pl \
|
|
dnl perl/recursiveftpget.pl )
|