| 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.2") |
| 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 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 |
| 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 \ |
| RAND_status \ |
| RAND_screen |
| ) |
| |
| 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 ) |