mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
7175ea4a12
Published in <sxs4rngh6t2.fsf@florida.arsdigita.de>.
403 lines
10 KiB
Plaintext
403 lines
10 KiB
Plaintext
dnl Template file for GNU Autoconf
|
|
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
|
|
dnl the Free Software Foundation; either version 2 of the License, or
|
|
dnl (at your option) any later version.
|
|
|
|
dnl This program is distributed in the hope that it will be useful,
|
|
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
dnl GNU General Public License for more details.
|
|
|
|
dnl You should have received a copy of the GNU General Public License
|
|
dnl along with this program; if not, write to the Free Software
|
|
dnl Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
|
|
dnl
|
|
dnl Process this file with autoconf to produce a configure script.
|
|
dnl
|
|
|
|
AC_INIT(src/version.c)
|
|
AC_PREREQ(2.12)
|
|
AC_CONFIG_HEADER(src/config.h)
|
|
|
|
dnl
|
|
dnl What version of Wget are we building?
|
|
dnl
|
|
VERSION=`sed -e 's/^.*"\(.*\)";$/\1/' ${srcdir}/src/version.c`
|
|
echo "configuring for GNU Wget $VERSION"
|
|
AC_SUBST(VERSION)
|
|
PACKAGE=wget
|
|
AC_SUBST(PACKAGE)
|
|
|
|
dnl
|
|
dnl Get cannonical host
|
|
dnl
|
|
AC_CANONICAL_HOST
|
|
AC_DEFINE_UNQUOTED(OS_TYPE, "$host_os")
|
|
|
|
dnl
|
|
dnl Process features.
|
|
dnl
|
|
AC_ARG_WITH(socks,
|
|
[ --with-socks use the socks library],
|
|
[AC_DEFINE(HAVE_SOCKS)])
|
|
|
|
AC_ARG_WITH(ssl,
|
|
[ --with-ssl[=SSL_ROOT] link with libssl [in SSL_ROOT/lib] for https: support])
|
|
|
|
AC_ARG_ENABLE(opie,
|
|
[ --disable-opie disable support for opie or s/key FTP login],
|
|
USE_OPIE=$enableval, USE_OPIE=yes)
|
|
test x"${USE_OPIE}" = xyes && AC_DEFINE(USE_OPIE)
|
|
|
|
AC_ARG_ENABLE(digest,
|
|
[ --disable-digest disable support for HTTP digest authorization],
|
|
USE_DIGEST=$enableval, USE_DIGEST=yes)
|
|
test x"${USE_DIGEST}" = xyes && AC_DEFINE(USE_DIGEST)
|
|
|
|
AC_ARG_ENABLE(debug,
|
|
[ --disable-debug disable support for debugging output],
|
|
DEBUG=$enableval, DEBUG=yes)
|
|
test x"${DEBUG}" = xyes && AC_DEFINE(DEBUG)
|
|
|
|
wget_need_md5=no
|
|
|
|
case "${USE_OPIE}${USE_DIGEST}" in
|
|
*yes*)
|
|
wget_need_md5=yes
|
|
esac
|
|
if test x"$USE_OPIE" = xyes; then
|
|
OPIE_OBJ='ftp-opie$o'
|
|
fi
|
|
AC_SUBST(OPIE_OBJ)
|
|
|
|
dnl
|
|
dnl Whether make sets $(MAKE)...
|
|
dnl
|
|
AC_PROG_MAKE_SET
|
|
|
|
dnl
|
|
dnl Find a good install
|
|
dnl
|
|
AC_PROG_INSTALL
|
|
|
|
dnl
|
|
dnl Find the compiler
|
|
dnl
|
|
|
|
dnl We want these before the checks, so the checks can modify their values.
|
|
test -z "$CFLAGS" && CFLAGS= auto_cflags=1
|
|
test -z "$CC" && cc_specified=yes
|
|
|
|
AC_PROG_CC
|
|
|
|
dnl
|
|
dnl if the user hasn't specified CFLAGS, then
|
|
dnl if compiler is gcc, then use -O2 and some warning flags
|
|
dnl else use os-specific flags or -O
|
|
dnl
|
|
if test -n "$auto_cflags"; then
|
|
if test -n "$GCC"; then
|
|
CFLAGS="$CFLAGS -O2 -Wall -Wno-implicit"
|
|
else
|
|
case "$host_os" in
|
|
*hpux*) CFLAGS="$CFLAGS +O3" ;;
|
|
*ultrix* | *osf*) CFLAGS="$CFLAGS -O -Olimit 2000" ;;
|
|
*) CFLAGS="$CFLAGS -O" ;;
|
|
esac
|
|
fi
|
|
fi
|
|
|
|
dnl
|
|
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.
|
|
dnl
|
|
case "$host_os" in
|
|
*win32) exeext='.exe';;
|
|
*) exeext='';;
|
|
esac
|
|
AC_SUBST(exeext)
|
|
|
|
dnl
|
|
dnl Check if we can handle prototypes.
|
|
dnl
|
|
AM_C_PROTOTYPES
|
|
|
|
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?
|
|
AC_C_BIGENDIAN
|
|
|
|
# Check size of long.
|
|
AC_CHECK_SIZEOF(long)
|
|
AC_CHECK_SIZEOF(long long)
|
|
|
|
dnl
|
|
dnl Checks for headers
|
|
dnl
|
|
AC_CHECK_HEADERS(string.h stdarg.h unistd.h sys/time.h utime.h sys/utime.h)
|
|
AC_CHECK_HEADERS(sys/ioctl.h sys/select.h sys/utsname.h pwd.h signal.h)
|
|
AC_HEADER_TIME
|
|
|
|
dnl
|
|
dnl Return type of signal-handlers
|
|
dnl
|
|
AC_TYPE_SIGNAL
|
|
|
|
dnl
|
|
dnl Check for struct utimbuf
|
|
WGET_STRUCT_UTIMBUF
|
|
|
|
dnl
|
|
dnl Checks for library functions.
|
|
dnl
|
|
AC_FUNC_ALLOCA
|
|
AC_FUNC_MMAP
|
|
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 random usleep)
|
|
|
|
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.
|
|
if test "x${with_socks}" = xyes
|
|
then
|
|
AC_CHECK_LIB(resolv, main)
|
|
AC_CHECK_LIB(socks, Rconnect)
|
|
fi
|
|
|
|
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 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
|
|
|
|
wget_save_LIBS=$LIBS
|
|
wget_save_LDFLAGS=$LDFLAGS
|
|
wget_save_CC=$CC
|
|
|
|
dnl Use libtool for OpenSSL tests to handle the "-R<rpath>" option.
|
|
CC="$SHELL ./libtool $CC"
|
|
|
|
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)
|
|
|
|
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 $ssl_root/lib."
|
|
echo " Wget will be built without support for https://... URLs."
|
|
echo
|
|
fi
|
|
|
|
CC=$wget_save_CC
|
|
fi
|
|
|
|
dnl
|
|
dnl Set of available languages.
|
|
dnl
|
|
ALL_LINGUAS=`(cd ${srcdir}/po && ls *.po | sed -e 's/\.po$//')`
|
|
|
|
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
|
|
|
|
dnl
|
|
dnl Find makeinfo. If makeinfo is not found, look for Emacs. If
|
|
dnl Emacs cannot be found, look for XEmacs.
|
|
dnl
|
|
|
|
AC_CHECK_PROGS(MAKEINFO, makeinfo emacs xemacs)
|
|
|
|
case "${MAKEINFO}" in
|
|
*makeinfo) MAKEINFO="${MAKEINFO} \$(srcdir)/wget.texi" ;;
|
|
*emacs | *xemacs) MAKEINFO="${MAKEINFO} -batch -q -no-site-file -eval '(find-file \"\$(srcdir)/wget.texi\")' -l texinfmt -f texinfo-format-buffer -f save-buffer" ;;
|
|
*) MAKEINFO="makeinfo \$(srcdir)/wget.texi" ;;
|
|
esac
|
|
|
|
dnl
|
|
dnl Find perl and pod2man
|
|
dnl
|
|
|
|
AC_PATH_PROGS(PERL, perl5 perl, no)
|
|
AC_PATH_PROG(POD2MAN, pod2man, no)
|
|
|
|
if test "x${POD2MAN}" = xno; then
|
|
COMMENT_IF_NO_POD2MAN="# "
|
|
else
|
|
COMMENT_IF_NO_POD2MAN=
|
|
fi
|
|
AC_SUBST(COMMENT_IF_NO_POD2MAN)
|
|
|
|
dnl
|
|
dnl Create output
|
|
dnl
|
|
AC_OUTPUT([Makefile src/Makefile doc/Makefile util/Makefile po/Makefile.in
|
|
windows/Makefile],
|
|
[WGET_PROCESS_PO
|
|
test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h])
|