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.
18 dnl In addition, as a special exception, the Free Software Foundation
19 dnl gives permission to link the code of its release of Wget with the
20 dnl OpenSSL project's "OpenSSL" library (or with modified versions of it
21 dnl that use the same license as the "OpenSSL" library), and distribute
22 dnl the linked executables. You must obey the GNU General Public License
23 dnl in all respects for all of the code used other than "OpenSSL". If you
24 dnl modify this file, you may extend this exception to your version of the
25 dnl file, but you are not obligated to do so. If you do not wish to do
26 dnl so, delete this exception statement from your version.
29 dnl Process this file with autoconf to produce a configure script.
32 AC_INIT([src/version.c])
35 AC_CONFIG_HEADERS([src/config.h])
37 #include "config-post.h"
41 dnl What version of Wget are we building?
43 VERSION=`sed -e 's/^.*"\(.*\)";$/\1/' ${srcdir}/src/version.c`
44 AC_MSG_NOTICE([configuring for GNU Wget $VERSION])
50 dnl Get cannonical host
53 AC_DEFINE_UNQUOTED([OS_TYPE], "$host_os",
54 [Define to be the name of the operating system.])
60 [ --with-socks use the socks library],
61 [AC_DEFINE([HAVE_SOCKS], 1,
62 [Define if you wish to compile with socks support.])]
66 [[ --with-ssl[=SSL-ROOT] link with SSL support [default=auto]
67 --without-ssl disable SSL autodetection]])
70 [ --disable-opie disable support for opie or s/key FTP login],
71 USE_OPIE=$enableval, USE_OPIE=yes)
72 test x"${USE_OPIE}" = xyes && AC_DEFINE([USE_OPIE], 1,
73 [Define if you want the Opie support for FTP compiled in.])
76 [ --disable-digest disable support for HTTP digest authorization],
77 USE_DIGEST=$enableval, USE_DIGEST=yes)
78 test x"${USE_DIGEST}" = xyes && AC_DEFINE([USE_DIGEST], 1,
79 [Define if you want the HTTP Digest Authorization compiled in.])
82 [ --disable-debug disable support for debugging output],
83 ENABLE_DEBUG=$enableval, ENABLE_DEBUG=yes)
84 test x"${ENABLE_DEBUG}" = xyes && AC_DEFINE([ENABLE_DEBUG], 1,
85 [Define if you want the debug output support compiled in.])
89 case "${USE_OPIE}${USE_DIGEST}" in
93 if test x"$USE_OPIE" = xyes; then
99 dnl Whether make sets $(MAKE)...
104 dnl Find a good install
109 dnl Find the compiler
112 dnl We want these before the checks, so the checks can modify their values.
113 test -z "$CFLAGS" && CFLAGS= auto_cflags=1
114 test -z "$CC" && cc_specified=yes
119 dnl if the user hasn't specified CFLAGS, then
120 dnl if compiler is gcc, then use -O2 and some warning flags
121 dnl else use os-specific flags or -O
123 if test -n "$auto_cflags"; then
124 if test -n "$GCC"; then
125 CFLAGS="$CFLAGS -O2 -Wall -Wno-implicit"
128 *hpux*) CFLAGS="$CFLAGS +O3" ;;
129 *ultrix* | *osf*) CFLAGS="$CFLAGS -O -Olimit 2000" ;;
130 *) CFLAGS="$CFLAGS -O" ;;
141 dnl Configure our included libtool and make sure it's regenerated when needed
144 AC_SUBST(LIBTOOL_DEPS)
147 dnl In case of {cyg,gnu}win32. Should be a _target_ test.
148 dnl Might also be erelevant for DJGPP.
151 *win32) exeext='.exe';;
157 dnl Check if we can handle prototypes.
162 dnl Checks for basic compiler characteristics.
170 dnl Checks for headers
173 dnl Check for these even though we assume their presence. This is
174 dnl because Autoconf built-in macros expect their HAVE_* constants to
176 AC_CHECK_HEADERS(sys/types.h sys/stat.h)
178 AC_CHECK_HEADERS(string.h strings.h stdarg.h unistd.h sys/time.h)
179 AC_CHECK_HEADERS(termios.h sys/ioctl.h sys/select.h utime.h sys/utime.h)
180 AC_CHECK_HEADERS(stdint.h inttypes.h signal.h setjmp.h pwd.h)
184 dnl Check integral type sizes.
186 AC_CHECK_SIZEOF(short)
188 AC_CHECK_SIZEOF(long)
189 AC_CHECK_SIZEOF(long long)
192 dnl Checks for non-universal or system-specific types.
196 AC_CHECK_TYPES(uint32_t)
198 AC_CHECK_TYPES(sig_atomic_t, [], [], [
200 #include <sys/types.h>
202 # include <inttypes.h>
210 dnl Checks for library functions.
214 AC_CHECK_FUNCS(strdup strstr strcasecmp strncasecmp strpbrk memmove)
215 AC_CHECK_FUNCS(gettimeofday mktime strptime strerror snprintf vsnprintf)
216 AC_CHECK_FUNCS(usleep select sigblock sigsetjmp signal symlink access isatty)
219 dnl Call Wget's local macros defined in aclocal.
228 dnl Check if we need to compile in getopt.c.
230 AC_CHECK_FUNC(getopt_long, [], [
231 GETOPT_OBJ='getopt$o'
236 dnl Checks for libraries.
239 dnl #### This appears to be deficient with later versions of SOCKS.
240 if test "x${with_socks}" = xyes
242 AC_CHECK_LIB(resolv, main)
243 AC_CHECK_LIB(socks, Rconnect)
246 dnl $with_ssl can be one of:
247 dnl - empty string or "auto", meaning autodetect SSL and use it if found.
248 dnl - "yes", meaning link with SSL or bail out.
249 dnl - "no", meaning don't link with SSL.
250 dnl - anything else, meaning use that as the SSL root, and bail out
253 if test x"$with_ssl" = x; then
254 dnl Canonicalize unspecified with-ssl setting to "auto". This
255 dnl implements the "auto-detect by default" feature. If you want to
256 dnl change this to "ignore SSL by default", change "auto" to "no".
260 dnl Detection of OpenSSL is much hairier than the detection of other
261 dnl libraries because OpenSSL can be compiled as a third-party
262 dnl library, which means it will not be found without additional
263 dnl linker magic. It would be really nice to rework this check into
264 dnl an AC_DEFUN so that we can reuse it for other third-party
267 if test x"$with_ssl" != x"no"; then
270 if test x"$with_ssl" = x"yes"; then
274 if test x"$with_ssl" = x"yes" || test x"$with_ssl" = x"auto"; then
275 dnl OpenSSL's root was not specified, so we have to guess. First
276 dnl try the system default location, then "/usr/local/ssl" (where
277 dnl OpenSSL installs by default), then "/usr/local" (traditional
278 dnl choice for installation root), then "/opt".
279 ssl_all_roots="system-default /usr/local/ssl /usr/local /opt"
281 dnl Root has been specified by the user.
282 ssl_all_roots=$with_ssl
288 wget_save_LDFLAGS=$LDFLAGS
289 wget_save_CPPFLAGS=$CPPFLAGS
291 dnl Use libtool for OpenSSL tests so we can specify "-R<rpath>"
292 dnl without having to know how the linker handles it.
293 CC="$SHELL ./libtool $CC"
295 dnl Unfortunately, as of this writing (OpenSSL 0.9.6), the libcrypto
296 dnl shared library doesn't record its dependency on libdl, so we
297 dnl need to check for it ourselves so we won't fail to link due to a
298 dnl lack of -ldl. Most OSes use dlopen(), but HP-UX uses
300 AC_CHECK_LIB(dl,dlopen)
301 AC_CHECK_LIB(dl,shl_load)
305 dnl Now try to find SSL libraries in each of the likely SSL roots.
306 for ssl_root in $ssl_all_roots
308 if test x"$ssl_root" = x"system-default"; then
309 dnl Try the default include and library locations.
312 dnl Try this specific root.
313 SSL_INCLUDES=-I$ssl_root/include
314 dnl It's OK to use -R directly because libtool will
315 dnl interpret it for us.
316 LDFLAGS="-L$ssl_root/lib -R$ssl_root/lib $wget_save_LDFLAGS"
319 AC_MSG_NOTICE([looking for SSL libraries in $ssl_root])
321 dnl Check whether the compiler can find the include files. On
322 dnl some systems Gcc finds libraries in /usr/local/lib, but fails
323 dnl to find the includes in /usr/local/include.
325 ssl_found_includes=no
326 CPPFLAGS="$SSL_INCLUDES $wget_save_CPPFLAGS"
328 AC_MSG_CHECKING([for includes])
330 AC_TRY_CPP([#include <openssl/ssl.h>
331 #include <openssl/rsa.h>
333 AC_MSG_RESULT(found); ssl_found_includes=yes,
334 AC_MSG_RESULT([not found])
337 if test x"$ssl_found_includes" = xno; then
343 dnl Make sure that the checks don't run afoul of the cache. It
344 dnl would be nicer to temporarily turn off the cache, but
345 dnl apparently Autoconf doesn't allow that.
347 unset ac_cv_lib_crypto_RSA_new
348 unset ac_cv_lib_ssl_SSL_new
350 dnl These checks need to be in this order, or you'll get a link
351 dnl failure if you use a static libcrypto.a and libssl.a rather
352 dnl than shared libraries.
354 AC_CHECK_LIB(crypto, RSA_new, , ssl_link_failure=yes)
355 AC_CHECK_LIB(ssl, SSL_new, , ssl_link_failure=yes)
357 if test x"$ssl_link_failure" = xyes; then
358 dnl One or both libs failed to link.
362 dnl The libraries link. But we still need to check if the program
363 dnl linked with those libraries under these settings with run. On
364 dnl some systems (Solaris), Gcc adds -L/usr/local/lib to the
365 dnl linking line, but fails to add -R/usr/local/lib, thus creating
366 dnl executables that link, but fail to run.
368 dnl If we are cross-compiling, just assume that working linkage
369 dnl implies working executable.
373 AC_MSG_CHECKING([whether SSL libs are resolved at runtime])
380 AC_MSG_RESULT(no); ssl_run_failure=yes,
384 if test x"$ssl_run_failure" = xno; then
390 if test x"$ssl_success" = xyes; then
391 AC_MSG_NOTICE([compiling in support for SSL in $ssl_root])
392 AC_DEFINE([HAVE_SSL], 1,
393 [Define if SSL support should be compiled in.])
394 AC_SUBST(SSL_INCLUDES)
395 SSL_OBJ='gen_sslfunc$o'
398 LDFLAGS=$wget_save_LDFLAGS
401 dnl If linking with SSL was forced rather than auto-detected, then
402 dnl bail out if SSL failed.
403 if test x"$wget_force_ssl" = x"yes"; then
404 AC_MSG_ERROR([failed to find OpenSSL libraries], 2)
408 dnl Restore the compiler setting.
411 dnl Restore the CPPFLAGS. Do this regardless of whether linking
412 dnl with SSL succeeded -- SSL includes will be handled using
414 CPPFLAGS=$wget_save_CPPFLAGS
418 dnl Find an md5 implementation.
421 if test x"$wget_need_md5" = xyes
423 dnl This should be moved to an AC_DEFUN, but I'm not sure how to
424 dnl manipulate MD5_OBJ from the defun.
429 dnl Check for the system MD5 library on Solaris. We don't check for
430 dnl something simple like "MD5Update" because there are a number of
431 dnl MD5 implementations that use that name. md5_calc is, hopefully,
432 dnl specific to the Solaris MD5 library.
433 if test x"$found_md5" = xno; then
434 AC_CHECK_LIB(md5, md5_calc, [
435 dnl Some installations have bogus <md5.h> in the compiler's
436 dnl include path, making the system md5 library useless.
437 AC_MSG_CHECKING([whether md5.h can be included])
438 AC_COMPILE_IFELSE([#include <md5.h>
441 AC_DEFINE([HAVE_SOLARIS_MD5], 1, [Define to use Solaris MD5.])
444 AC_MSG_NOTICE([using the Solaris MD5 implementation])
445 ], [AC_MSG_RESULT(no)])
449 dnl Then see if we're linking OpenSSL anyway; if yes, use its md5
451 if test x"$found_md5" = xno; then
452 if test x"$ssl_success" = xyes; then
453 AC_DEFINE([HAVE_OPENSSL_MD5], 1, [Define to use OpenSSL MD5.])
455 AC_MSG_NOTICE([using the OpenSSL MD5 implementation])
459 dnl If none of the above worked, use the one we ship with Wget.
460 if test x"$found_md5" = xno; then
461 AC_DEFINE([HAVE_BUILTIN_MD5], 1, [Define to use built-in MD5.])
462 MD5_OBJ="$MD5_OBJ gnu-md5\$o"
464 AC_MSG_NOTICE([using the GNU MD5 implementation])
467 AC_DEFINE([HAVE_MD5], 1, [Define if we're compiling support for MD5.])
470 dnl **********************************************************************
472 dnl **********************************************************************
475 dnl If --enable-ipv6 is specified, we try to use IPv6 (as long as
476 dnl getaddrinfo is also present). If --disable-ipv6 is specified, we
477 dnl don't use IPv6 or getaddrinfo.
483 AC_HELP_STRING([--disable-ipv6],[disable IPv6 support]),
484 [case "${enable_ipv6}" in
486 AC_MSG_NOTICE([disabling IPv6 at user request])
493 dnl If unspecified, check for IPv6 and use it where available.
497 if test "X$ipv6" = "Xyes" || test "X$check_for_ipv6" = "Xyes"; then
498 AC_CHECK_FUNCS(getaddrinfo,[
499 GETADDRINFO_AI_ADDRCONFIG(
501 [HAVE_GETADDRINFO_AI_ADDRCONFIG], 1,
502 [Define if the system headers support the AI_ADDRCONFIG flag.]
505 GETADDRINFO_AI_V4MAPPED(
507 [HAVE_GETADDRINFO_AI_V4MAPPED], 1,
508 [Define if the system headers support the AI_V4MAPPED flag.]
513 [HAVE_GETADDRINFO_AI_ALL], 1,
514 [Define if the system headers support the AI_ALL flag.]
518 AC_MSG_NOTICE([Disabling IPv6 support: your system does not support getaddrinfo(3)])
523 if test "X$ipv6" = "Xyes" || test "X$check_for_ipv6" = "Xyes"; then
525 AC_MSG_NOTICE([Disabling IPv6 support: your system does not support the PF_INET6 protocol family])
530 if test "X$ipv6" = "Xyes" || test "X$check_for_ipv6" = "Xyes"; then
531 TYPE_STRUCT_SOCKADDR_IN6([
534 AC_MSG_NOTICE([Disabling IPv6 support: your system does not support 'struct sockaddr_in6'])
537 if test "X$ipv6" = "Xyes"; then
542 if test "X$ipv6" = "Xyes"; then
543 AC_DEFINE([ENABLE_IPV6], 1, [Define if IPv6 support is enabled.])
548 dnl Set of available languages.
550 ALL_LINGUAS=`(cd ${srcdir}/po && ls *.po | sed -e 's/\.po$//' | tr '\012' ' ')`
552 dnl Originally this used to be static, looking like this:
553 dnl ALL_LINGUAS="cs de hr it ..."
554 dnl The downside was that configure needed to be rebuilt whenever a
555 dnl new language was added.
557 dnl internationalization macros
561 dnl Find makeinfo. If makeinfo is not found, look for Emacs. If
562 dnl Emacs cannot be found, look for XEmacs.
565 AC_CHECK_PROGS(MAKEINFO, makeinfo emacs xemacs)
567 case "${MAKEINFO}" in
568 *makeinfo) MAKEINFO="${MAKEINFO} \$(srcdir)/wget.texi" ;;
569 *emacs | *xemacs) MAKEINFO="${MAKEINFO} -batch -q -no-site-file -eval '(find-file \"\$(srcdir)/wget.texi\")' -l texinfmt -f texinfo-format-buffer -f save-buffer" ;;
570 *) MAKEINFO="makeinfo \$(srcdir)/wget.texi" ;;
574 dnl Find perl and pod2man
577 AC_PATH_PROGS(PERL, perl5 perl, no)
578 AC_PATH_PROG(POD2MAN, pod2man, no)
580 if test "x${POD2MAN}" = xno; then
581 COMMENT_IF_NO_POD2MAN="# "
583 COMMENT_IF_NO_POD2MAN=
585 AC_SUBST(COMMENT_IF_NO_POD2MAN)
590 AC_OUTPUT([Makefile src/Makefile doc/Makefile util/Makefile po/Makefile.in
593 test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h])