| dnl $Id$ |
| dnl Process this file with autoconf to produce a configure script. |
| |
| dnl Ensure that this file is processed with autoconf 2.50 or newer |
| dnl Don't even think about removing this check! |
| AC_PREREQ(2.50) |
| |
| dnl First some basic init macros |
| AC_INIT |
| AC_CONFIG_SRCDIR([lib/urldata.h]) |
| AM_CONFIG_HEADER(lib/config.h src/config.h tests/server/config.h) |
| |
| dnl figure out the libcurl version |
| 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 |
| |
| dnl check for cygwin stuff |
| AC_LIBTOOL_WIN32_DLL |
| |
| dnl libtool setup |
| 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 -Wundef -Wpointer-arith -Wcast-align -Wnested-externs -g" |
| ;; |
| esac ], |
| AC_MSG_RESULT(no) |
| ) |
| |
| 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 how non-blocking sockets are set |
| dnl ********************************************************************** |
| AC_ARG_ENABLE(nonblocking, |
| [ --enable-nonblocking Makes the script detect how to do it |
| --disable-nonblocking Makes the script disable non-blocking sockets], |
| [ |
| if test "$enableval" = "no" ; then |
| AC_MSG_WARN([non-blocking sockets disabled]) |
| AC_DEFINE(HAVE_DISABLED_NONBLOCKING) |
| else |
| CURL_CHECK_NONBLOCKING_SOCKET |
| fi |
| ], |
| [ |
| CURL_CHECK_NONBLOCKING_SOCKET |
| ]) |
| |
| 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 ;; |
| off) |
| EXTRA_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 |
| |
| dnl Check for the OpenSSL engine header, it is kind of "separated" |
| dnl from the main SSL check |
| AC_CHECK_HEADERS(openssl/engine.h) |
| |
| 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 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() |
| |
| AC_CHECK_FUNCS( gmtime_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 \ |
| sys/param.h \ |
| termios.h \ |
| termio.h \ |
| sgtty.h \ |
| fcntl.h \ |
| dlfcn.h \ |
| alloca.h \ |
| winsock.h \ |
| time.h \ |
| io.h \ |
| pwd.h \ |
| utime.h \ |
| sys/utime.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) |
| |
| TYPE_SOCKLEN_T |
| TYPE_IN_ADDR_T |
| |
| 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 \ |
| gettimeofday \ |
| inet_addr \ |
| inet_ntoa \ |
| tcsetattr \ |
| tcgetattr \ |
| perror \ |
| closesocket \ |
| setvbuf \ |
| sigaction \ |
| signal \ |
| getpass_r \ |
| strlcat \ |
| getpwuid \ |
| geteuid \ |
| dlopen \ |
| utime |
| ) |
| |
| 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 \ |
| docs/libcurl/Makefile \ |
| include/Makefile \ |
| include/curl/Makefile \ |
| src/Makefile \ |
| lib/Makefile \ |
| tests/Makefile \ |
| tests/data/Makefile \ |
| tests/server/Makefile \ |
| packages/Makefile \ |
| packages/Win32/Makefile \ |
| packages/Win32/cygwin/Makefile \ |
| packages/Linux/Makefile \ |
| packages/Linux/RPM/Makefile \ |
| packages/Linux/RPM/curl.spec \ |
| packages/Linux/RPM/curl-ssl.spec \ |
| packages/Solaris/Makefile \ |
| packages/EPM/curl.list \ |
| packages/EPM/Makefile \ |
| curl-config |
| ]) |
| AC_OUTPUT |
| |