X-Git-Url: http://sjero.net/git/?a=blobdiff_plain;f=configure.in;h=be7d112177541775b244c7ac7013497b34eadf0b;hb=d5be8ecca466601bda9b81c28a79077fbda6ccde;hp=a0512da2817d51e2a66aa15997a513b3e27cd8aa;hpb=f78e97c5b789557c389bee039f2fd3c18616f25f;p=wget diff --git a/configure.in b/configure.in index a0512da2..be7d1121 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ dnl Template file for GNU Autoconf -dnl Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. +dnl Copyright (C) 1995, 1996, 1997, 2001 Free Software Foundation, Inc. dnl This program is free software; you can redistribute it and/or modify dnl it under the terms of the GNU General Public License as published by @@ -63,14 +63,15 @@ AC_ARG_ENABLE(debug, DEBUG=$enableval, DEBUG=yes) test x"${DEBUG}" = xyes && AC_DEFINE(DEBUG) +wget_need_md5=no + case "${USE_OPIE}${USE_DIGEST}" in *yes*) - MD5_OBJ='md5$o' + wget_need_md5=yes esac if test x"$USE_OPIE" = xyes; then OPIE_OBJ='ftp-opie$o' fi -AC_SUBST(MD5_OBJ) AC_SUBST(OPIE_OBJ) dnl @@ -83,12 +84,6 @@ dnl Find a good install dnl AC_PROG_INSTALL -dnl -dnl Configure our included libtool and make sure it's regenerated when needed -dnl -AM_PROG_LIBTOOL -AC_SUBST(LIBTOOL_DEPS) - dnl dnl Find the compiler dnl @@ -121,6 +116,12 @@ dnl Handle AIX dnl AC_AIX +dnl +dnl Configure our included libtool and make sure it's regenerated when needed +dnl +AC_PROG_LIBTOOL +AC_SUBST(LIBTOOL_DEPS) + dnl dnl In case of {cyg,gnu}win32. Should be a _target_ test. dnl Might also be erelevant for DJGPP. @@ -140,6 +141,7 @@ dnl dnl Checks for typedefs, structures, and compiler characteristics. dnl AC_C_CONST +AC_C_INLINE AC_TYPE_SIZE_T AC_TYPE_PID_T dnl #### This generates a warning. What do I do to shut it up? @@ -170,19 +172,57 @@ dnl Checks for library functions. dnl AC_FUNC_ALLOCA AC_FUNC_MMAP -AC_CHECK_FUNCS(strdup strstr strcasecmp strncasecmp) +AC_CHECK_FUNCS(strdup strstr strcasecmp strncasecmp strpbrk) AC_CHECK_FUNCS(gettimeofday mktime strptime) AC_CHECK_FUNCS(strerror snprintf vsnprintf select signal symlink access isatty) AC_CHECK_FUNCS(uname gethostname) -AC_CHECK_FUNCS(gethostbyname, [], [ - AC_CHECK_LIB(nsl, gethostbyname) +dnl +dnl Check if we need to compile in getopt.c. +dnl +AC_CHECK_FUNC(getopt_long, [], [ + GETOPT_OBJ='getopt$o' ]) +AC_SUBST(GETOPT_OBJ) dnl dnl Checks for libraries. dnl +dnl +dnl Use the md5 lib if available (Solaris). +dnl + +if test x$wget_need_md5 = xyes +then + AC_DEFINE(HAVE_MD5) + AC_CHECK_LIB(md5, MD5Update, [ + AC_DEFINE(HAVE_SOLARIS_MD5) + LIBS="-lmd5 $LIBS" + ], [ + MD5_OBJ='gnu-md5$o' + AC_DEFINE(HAVE_BUILTIN_MD5) + ]) +fi +AC_SUBST(MD5_OBJ) + +dnl On Solaris, -lnsl is needed to use gethostbyname. On "NCR MP-RAS +dnl 3.0", however, gethostbyname is in libc, but -lnsl is still needed +dnl to use -lsocket, as well as for functions such as inet_ntoa. We +dnl look for such known offenders and if one of them is not found, we +dnl check if -lnsl is needed. + +wget_check_in_nsl=NONE +AC_CHECK_FUNCS(gethostbyname, [], [ + wget_check_in_nsl=gethostbyname +]) +AC_CHECK_FUNCS(inet_ntoa, [], [ + wget_check_in_nsl=inet_ntoa +]) +if test $wget_check_in_nsl != NONE; then + AC_CHECK_LIB(nsl, $wget_check_in_nsl) +fi + AC_CHECK_LIB(socket, socket) dnl #### This appears to be deficient with later versions of SOCKS. @@ -192,42 +232,125 @@ then AC_CHECK_LIB(socks, Rconnect) fi -dnl If --with-ssl was specified, make sure we can link with the OpenSSL libs. +dnl If --with-ssl was specified, make sure we can link with the +dnl OpenSSL libs. We should probably auto-detect this by default. + if test x"$with_ssl" != x -a x"$with_ssl" != x"no"; then if test x"$with_ssl" = x"yes"; then - dnl OpenSSL's default install location: - with_ssl=/usr/local/ssl + dnl OpenSSL's default install location is "/usr/local/ssl". We also + dnl allow /usr/local for regular-style install, and /usr for Linux + dnl stuff. + ssl_all_roots="default /usr/local/ssl /usr/local /opt" + else + dnl Root has been kindly provided by the user. + ssl_all_roots=$with_ssl fi - - SSL_INCLUDES=-I$with_ssl/include - AC_SUBST(SSL_INCLUDES) - LDFLAGS="-L$with_ssl/lib -R$with_ssl/lib $LDFLAGS" + wget_save_LIBS=$LIBS + wget_save_LDFLAGS=$LDFLAGS + wget_save_CC=$CC - ssl_link_failure=no + dnl Use libtool for OpenSSL tests to handle the "-R" option. + CC="$SHELL ./libtool $CC" - dnl Unfortunately, as of this writing (OpenSSL 0.9.6), the libcrypto shared - dnl library doesn't record its dependency on libdl, so we need to check for it - dnl ourselves so we won't fail to link due to a lack of -ldl. Most OSes use - dnl dlopen(), but HP-UX uses shl_load(). + dnl Unfortunately, as of this writing (OpenSSL 0.9.6), the libcrypto + dnl shared library doesn't record its dependency on libdl, so we + dnl need to check for it ourselves so we won't fail to link due to a + dnl lack of -ldl. Most OSes use dlopen(), but HP-UX uses + dnl shl_load(). AC_CHECK_LIB(dl,dlopen) AC_CHECK_LIB(dl,shl_load) - dnl These checks need to be in this order, or you'll get a link failure if you - dnl use a static libcrypto.a and libssl.a rather than shared libraries. - AC_CHECK_LIB(crypto,RSA_new,,ssl_link_failure=yes) - AC_CHECK_LIB(ssl,SSL_new,,ssl_link_failure=yes) - - if test x"$ssl_link_failure" = x"yes"; then + ssl_linked=no + + dnl Now try to find SSL libraries in each of the likely SSL roots. + for ssl_root in $ssl_all_roots + do + if test x"$ssl_root" = xdefault; then + dnl Try the default library locations. + SSL_INCLUDES= + else + dnl Try this specific root. + SSL_INCLUDES=-I$ssl_root/include + dnl It's OK to use -R directly because libtool will + dnl interpret it for us. + LDFLAGS="-L$ssl_root/lib -R$ssl_root/lib $wget_save_LDFLAGS" + fi + + ssl_link_failure=no + + AC_MSG_RESULT(["Looking for SSL libraries in $ssl_root"]) + + dnl Make sure that the checks don't run afoul of the cache. It + dnl would be nicer to temporarily turn off the cache, but + dnl apparently Autoconf doesn't allow that. + + unset ac_cv_lib_crypto_RSA_new + unset ac_cv_lib_ssl_SSL_new + + dnl These checks need to be in this order, or you'll get a link + dnl failure if you use a static libcrypto.a and libssl.a rather + dnl than shared libraries. + + AC_CHECK_LIB(crypto, RSA_new, , ssl_link_failure=yes) + AC_CHECK_LIB(ssl, SSL_new, , ssl_link_failure=yes) + + dnl If ssl_link_failure is still no, the libraries link. But we + dnl still need to check if the program linked with those libraries + dnl under these settings with run. On some systems (Solaris), Gcc + dnl adds -L/usr/local/lib to the linking line, but fails to add + dnl -R/usr/local/lib, thus creating executables that link, but + dnl fail to run. + + dnl If we are cross-compiling, just assume that working linkage + dnl implies working executable. + + if test x"$ssl_link_failure" = xno; then + dnl Now try to run the thing. + AC_MSG_CHECKING("whether SSL libs are resolved at runtime") + AC_TRY_RUN([ +int RSA_new(); +int SSL_new(); +main(){return 0;} +], + AC_MSG_RESULT("yes"), + AC_MSG_RESULT("no"); ssl_link_failure=yes, + AC_MSG_RESULT("cross")) + fi + + if test x"$ssl_link_failure" = xno; then + dnl This echo doesn't look right, but I'm not sure what to use + dnl instead. + AC_MSG_RESULT("Compiling in support for SSL in $ssl_root") + AC_DEFINE(HAVE_SSL) + AC_SUBST(SSL_INCLUDES) + SSL_OBJ='gen_sslfunc$o' + AC_SUBST(SSL_OBJ) + ssl_linked=yes + break + fi + done + + if test x"$ssl_linked" = xno; then + LD_FLAGS=$wget_save_LDFLAGS + LIBS=$wget_save_LIBS + + dnl Perhaps we should abort here. Dan argues that configure + dnl scripts shouldn't abort out of principle, but on the other + dnl hand remember that the user explicitly requested linking with + dnl SSL. + + dnl IMHO there should be a way to specify whether SSL should be + dnl avoided, auto-detected, or required, defaulting to + dnl `autodetect'. Only in the `require' mode the script would + dnl abort if SSL is not found. echo - echo "WARNING: Failed to link with OpenSSL libraries in $with_ssl/lib." + echo "WARNING: Failed to link with OpenSSL libraries in $ssl_root/lib." echo " Wget will be built without support for https://... URLs." echo - else - AC_DEFINE(HAVE_SSL) - SSL_OBJ='gen_sslfunc$o' - AC_SUBST(SSL_OBJ) fi + + CC=$wget_save_CC fi dnl @@ -235,8 +358,10 @@ dnl Set of available languages. dnl ALL_LINGUAS=`(cd ${srcdir}/po && ls *.po | sed -e 's/\.po$//')` -dnl Original from autoconf, I think. -dnl ALL_LINGUAS="cs de hr it no pl pt_BR ru" +dnl Originally this used to be static, looking like this: +dnl ALL_LINGUAS="cs de hr it ..." +dnl The downside was that configure needed to be rebuilt whenever a +dnl new language was added. dnl internationalization macros WGET_WITH_NLS