1 dnl Template file for GNU Autoconf
2 dnl Copyright (C) 1995, 1996, 1997, 2001 Free Software Foundation, Inc.
4 dnl This program is free software; you can redistribute it and/or modify
5 dnl it under the terms of the GNU General Public License as published by
6 dnl the Free Software Foundation; either version 2 of the License, or
7 dnl (at your option) any later version.
9 dnl This program is distributed in the hope that it will be useful,
10 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
11 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 dnl GNU General Public License for more details.
14 dnl You should have received a copy of the GNU General Public License
15 dnl along with this program; if not, write to the Free Software
16 dnl Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 dnl Process this file with autoconf to produce a configure script.
22 AC_INIT(src/version.c)
24 AC_CONFIG_HEADER(src/config.h)
27 dnl What version of Wget are we building?
29 VERSION=`sed -e 's/^.*"\(.*\)";$/\1/' ${srcdir}/src/version.c`
30 echo "configuring for GNU Wget $VERSION"
36 dnl Get cannonical host
39 AC_DEFINE_UNQUOTED(OS_TYPE, "$host_os")
45 [ --with-socks use the socks library],
46 [AC_DEFINE(HAVE_SOCKS)])
49 [ --with-ssl[=SSL_ROOT] link with libssl [in SSL_ROOT/lib] for https: support])
52 [ --disable-opie disable support for opie or s/key FTP login],
53 USE_OPIE=$enableval, USE_OPIE=yes)
54 test x"${USE_OPIE}" = xyes && AC_DEFINE(USE_OPIE)
57 [ --disable-digest disable support for HTTP digest authorization],
58 USE_DIGEST=$enableval, USE_DIGEST=yes)
59 test x"${USE_DIGEST}" = xyes && AC_DEFINE(USE_DIGEST)
62 [ --disable-debug disable support for debugging output],
63 DEBUG=$enableval, DEBUG=yes)
64 test x"${DEBUG}" = xyes && AC_DEFINE(DEBUG)
68 case "${USE_OPIE}${USE_DIGEST}" in
72 if test x"$USE_OPIE" = xyes; then
78 dnl Whether make sets $(MAKE)...
83 dnl Find a good install
91 dnl We want these before the checks, so the checks can modify their values.
92 test -z "$CFLAGS" && CFLAGS= auto_cflags=1
93 test -z "$CC" && cc_specified=yes
98 dnl if the user hasn't specified CFLAGS, then
99 dnl if compiler is gcc, then use -O2 and some warning flags
100 dnl else use os-specific flags or -O
102 if test -n "$auto_cflags"; then
103 if test -n "$GCC"; then
104 CFLAGS="$CFLAGS -O2 -Wall -Wno-implicit"
107 *hpux*) CFLAGS="$CFLAGS +O3" ;;
108 *ultrix* | *osf*) CFLAGS="$CFLAGS -O -Olimit 2000" ;;
109 *) CFLAGS="$CFLAGS -O" ;;
120 dnl Configure our included libtool and make sure it's regenerated when needed
123 AC_SUBST(LIBTOOL_DEPS)
126 dnl In case of {cyg,gnu}win32. Should be a _target_ test.
127 dnl Might also be erelevant for DJGPP.
130 *win32) exeext='.exe';;
136 dnl Check if we can handle prototypes.
141 dnl Checks for typedefs, structures, and compiler characteristics.
147 dnl #### This generates a warning. What do I do to shut it up?
150 # Check size of long.
151 AC_CHECK_SIZEOF(long)
152 AC_CHECK_SIZEOF(long long)
155 dnl Checks for headers
157 AC_CHECK_HEADERS(string.h stdarg.h unistd.h sys/time.h utime.h sys/utime.h)
158 AC_CHECK_HEADERS(sys/ioctl.h sys/select.h sys/utsname.h pwd.h signal.h)
162 dnl Return type of signal-handlers
167 dnl Check for struct utimbuf
171 dnl Checks for library functions.
175 AC_CHECK_FUNCS(strdup strstr strcasecmp strncasecmp strpbrk)
176 AC_CHECK_FUNCS(gettimeofday mktime strptime)
177 AC_CHECK_FUNCS(strerror snprintf vsnprintf select signal symlink access isatty)
178 AC_CHECK_FUNCS(uname gethostname usleep)
181 dnl Check if we need to compile in getopt.c.
183 AC_CHECK_FUNC(getopt_long, [], [
184 GETOPT_OBJ='getopt$o'
189 dnl Checks for libraries.
192 dnl On Solaris, -lnsl is needed to use gethostbyname. On "NCR MP-RAS
193 dnl 3.0", however, gethostbyname is in libc, but -lnsl is still needed
194 dnl to use -lsocket, as well as for functions such as inet_ntoa. We
195 dnl look for such known offenders and if one of them is not found, we
196 dnl check if -lnsl is needed.
198 wget_check_in_nsl=NONE
199 AC_CHECK_FUNCS(gethostbyname, [], [
200 wget_check_in_nsl=gethostbyname
202 AC_CHECK_FUNCS(inet_ntoa, [], [
203 wget_check_in_nsl=inet_ntoa
205 if test $wget_check_in_nsl != NONE; then
206 AC_CHECK_LIB(nsl, $wget_check_in_nsl)
209 AC_CHECK_LIB(socket, socket)
211 dnl #### This appears to be deficient with later versions of SOCKS.
212 if test "x${with_socks}" = xyes
214 AC_CHECK_LIB(resolv, main)
215 AC_CHECK_LIB(socks, Rconnect)
218 dnl If --with-ssl was specified, make sure we can link with the
219 dnl OpenSSL libs. We should probably auto-detect this by default.
221 if test x"$with_ssl" != x -a x"$with_ssl" != x"no"; then
222 if test x"$with_ssl" = x"yes"; then
223 dnl OpenSSL's default install location is "/usr/local/ssl". We also
224 dnl allow /usr/local for regular-style install, and /usr for Linux
226 ssl_all_roots="default /usr/local/ssl /usr/local /opt"
228 dnl Root has been kindly provided by the user.
229 ssl_all_roots=$with_ssl
233 wget_save_LDFLAGS=$LDFLAGS
236 dnl Use libtool for OpenSSL tests to handle the "-R<rpath>" option.
237 CC="$SHELL ./libtool $CC"
239 dnl Unfortunately, as of this writing (OpenSSL 0.9.6), the libcrypto
240 dnl shared library doesn't record its dependency on libdl, so we
241 dnl need to check for it ourselves so we won't fail to link due to a
242 dnl lack of -ldl. Most OSes use dlopen(), but HP-UX uses
244 AC_CHECK_LIB(dl,dlopen)
245 AC_CHECK_LIB(dl,shl_load)
249 dnl Now try to find SSL libraries in each of the likely SSL roots.
250 for ssl_root in $ssl_all_roots
252 if test x"$ssl_root" = xdefault; then
253 dnl Try the default library locations.
256 dnl Try this specific root.
257 SSL_INCLUDES=-I$ssl_root/include
258 dnl It's OK to use -R directly because libtool will
259 dnl interpret it for us.
260 LDFLAGS="-L$ssl_root/lib -R$ssl_root/lib $wget_save_LDFLAGS"
265 AC_MSG_RESULT(["Looking for SSL libraries in $ssl_root"])
267 dnl Make sure that the checks don't run afoul of the cache. It
268 dnl would be nicer to temporarily turn off the cache, but
269 dnl apparently Autoconf doesn't allow that.
271 unset ac_cv_lib_crypto_RSA_new
272 unset ac_cv_lib_ssl_SSL_new
274 dnl These checks need to be in this order, or you'll get a link
275 dnl failure if you use a static libcrypto.a and libssl.a rather
276 dnl than shared libraries.
278 AC_CHECK_LIB(crypto, RSA_new, , ssl_link_failure=yes)
279 AC_CHECK_LIB(ssl, SSL_new, , ssl_link_failure=yes)
281 dnl If ssl_link_failure is still no, the libraries link. But we
282 dnl still need to check if the program linked with those libraries
283 dnl under these settings with run. On some systems (Solaris), Gcc
284 dnl adds -L/usr/local/lib to the linking line, but fails to add
285 dnl -R/usr/local/lib, thus creating executables that link, but
288 dnl If we are cross-compiling, just assume that working linkage
289 dnl implies working executable.
291 if test x"$ssl_link_failure" = xno; then
292 dnl Now try to run the thing.
293 AC_MSG_CHECKING("whether SSL libs are resolved at runtime")
299 AC_MSG_RESULT("yes"),
300 AC_MSG_RESULT("no"); ssl_link_failure=yes,
301 AC_MSG_RESULT("cross"))
304 if test x"$ssl_link_failure" = xno; then
305 dnl This echo doesn't look right, but I'm not sure what to use
307 AC_MSG_RESULT("Compiling in support for SSL in $ssl_root")
309 AC_SUBST(SSL_INCLUDES)
310 SSL_OBJ='gen_sslfunc$o'
317 if test x"$ssl_linked" = xno; then
318 LD_FLAGS=$wget_save_LDFLAGS
321 dnl Perhaps we should abort here. Dan argues that configure
322 dnl scripts shouldn't abort out of principle, but on the other
323 dnl hand remember that the user explicitly requested linking with
326 dnl IMHO there should be a way to specify whether SSL should be
327 dnl avoided, auto-detected, or required, defaulting to
328 dnl `autodetect'. Only in the `require' mode the script would
329 dnl abort if SSL is not found.
331 echo "WARNING: Failed to link with OpenSSL libraries in $ssl_root/lib."
332 echo " Wget will be built without support for https://... URLs."
340 dnl Find an md5 implementation.
343 dnl On Solaris, we use libmd5. If we're compiled with OpenSSL, use
344 dnl OpenSSL's md5 support. Otherwise, use our own md5.
346 if test x$wget_need_md5 = xyes
352 dnl First check for Solaris md5.
353 if test x$found_md5 = xno; then
354 AC_CHECK_LIB(md5, MD5Update, [
355 AC_DEFINE(HAVE_SOLARIS_MD5)
361 dnl Then see if we're linking OpenSSL anyway; if yes, use its md5
363 if test x$found_md5 = xno; then
364 if test x$ssl_linked = xyes; then
365 AC_DEFINE(HAVE_OPENSSL_MD5)
370 dnl If none of the above worked, use the builtin one.
371 if test x$found_md5 = xno; then
372 AC_DEFINE(HAVE_BUILTIN_MD5)
374 MD5_OBJ="$MD5_OBJ gnu-md5\$o"
381 dnl Set of available languages.
383 ALL_LINGUAS=`(cd ${srcdir}/po && ls *.po | sed -e 's/\.po$//')`
385 dnl Originally this used to be static, looking like this:
386 dnl ALL_LINGUAS="cs de hr it ..."
387 dnl The downside was that configure needed to be rebuilt whenever a
388 dnl new language was added.
390 dnl internationalization macros
394 dnl Find makeinfo. If makeinfo is not found, look for Emacs. If
395 dnl Emacs cannot be found, look for XEmacs.
398 AC_CHECK_PROGS(MAKEINFO, makeinfo emacs xemacs)
400 case "${MAKEINFO}" in
401 *makeinfo) MAKEINFO="${MAKEINFO} \$(srcdir)/wget.texi" ;;
402 *emacs | *xemacs) MAKEINFO="${MAKEINFO} -batch -q -no-site-file -eval '(find-file \"\$(srcdir)/wget.texi\")' -l texinfmt -f texinfo-format-buffer -f save-buffer" ;;
403 *) MAKEINFO="makeinfo \$(srcdir)/wget.texi" ;;
407 dnl Find perl and pod2man
410 AC_PATH_PROGS(PERL, perl5 perl, no)
411 AC_PATH_PROG(POD2MAN, pod2man, no)
413 if test "x${POD2MAN}" = xno; then
414 COMMENT_IF_NO_POD2MAN="# "
416 COMMENT_IF_NO_POD2MAN=
418 AC_SUBST(COMMENT_IF_NO_POD2MAN)
423 AC_OUTPUT([Makefile src/Makefile doc/Makefile util/Makefile po/Makefile.in
426 test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h])