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])
36 dnl What version of Wget are we building?
38 VERSION=`sed -e 's/^.*"\(.*\)";$/\1/' ${srcdir}/src/version.c`
39 AC_MSG_NOTICE([configuring for GNU Wget $VERSION])
45 dnl Get cannonical host
48 AC_DEFINE_UNQUOTED([OS_TYPE], "$host_os",
49 [Define to be the name of the operating system.])
55 [ --with-socks use the socks library],
56 [AC_DEFINE([HAVE_SOCKS], 1,
57 [Define if you wish to compile with socks support.])]
61 [[ --with-ssl[=SSL-ROOT] link with SSL support [default=auto]
62 --without-ssl disable SSL autodetection]])
65 [ --disable-opie disable support for opie or s/key FTP login],
66 USE_OPIE=$enableval, USE_OPIE=yes)
67 test x"${USE_OPIE}" = xyes && AC_DEFINE([USE_OPIE], 1,
68 [Define if you want the Opie support for FTP compiled in.])
71 [ --disable-digest disable support for HTTP digest authorization],
72 USE_DIGEST=$enableval, USE_DIGEST=yes)
73 test x"${USE_DIGEST}" = xyes && AC_DEFINE([USE_DIGEST], 1,
74 [Define if you want the HTTP Digest Authorization compiled in.])
77 [ --disable-debug disable support for debugging output],
78 ENABLE_DEBUG=$enableval, ENABLE_DEBUG=yes)
79 test x"${ENABLE_DEBUG}" = xyes && AC_DEFINE([ENABLE_DEBUG], 1,
80 [Define if you want the debug output support compiled in.])
84 case "${USE_OPIE}${USE_DIGEST}" in
88 if test x"$USE_OPIE" = xyes; then
94 dnl Whether make sets $(MAKE)...
99 dnl Find a good install
104 dnl Find the compiler
107 dnl We want these before the checks, so the checks can modify their values.
108 test -z "$CFLAGS" && CFLAGS= auto_cflags=1
109 test -z "$CC" && cc_specified=yes
114 dnl if the user hasn't specified CFLAGS, then
115 dnl if compiler is gcc, then use -O2 and some warning flags
116 dnl else use os-specific flags or -O
118 if test -n "$auto_cflags"; then
119 if test -n "$GCC"; then
120 CFLAGS="$CFLAGS -O2 -Wall -Wno-implicit"
123 *hpux*) CFLAGS="$CFLAGS +O3" ;;
124 *ultrix* | *osf*) CFLAGS="$CFLAGS -O -Olimit 2000" ;;
125 *) CFLAGS="$CFLAGS -O" ;;
136 dnl Configure our included libtool and make sure it's regenerated when needed
139 AC_SUBST(LIBTOOL_DEPS)
142 dnl In case of {cyg,gnu}win32. Should be a _target_ test.
143 dnl Might also be erelevant for DJGPP.
146 *win32) exeext='.exe';;
152 dnl Checks for basic compiler characteristics.
161 dnl Checks for headers that might be missing.
164 dnl Check for basic headers, even those we assume the presence of.
165 dnl This is because Autoconf default includes check for STDC_HEADERS,
166 dnl HAVE_SYS_TYPES_H, etc. before including them.
168 AC_CHECK_HEADERS(sys/types.h sys/stat.h)
169 dnl Now check for the others.
170 AC_CHECK_HEADERS(string.h strings.h stdarg.h unistd.h sys/time.h)
171 AC_CHECK_HEADERS(termios.h sys/ioctl.h sys/select.h utime.h sys/utime.h)
172 AC_CHECK_HEADERS(stdint.h inttypes.h signal.h setjmp.h pwd.h)
176 dnl Check integral type sizes.
178 AC_CHECK_SIZEOF(short)
180 AC_CHECK_SIZEOF(long)
181 AC_CHECK_SIZEOF(long long)
184 dnl Checks for non-universal or system-specific types.
188 AC_CHECK_TYPES(uint32_t)
190 AC_CHECK_TYPES(sig_atomic_t, [], [], [
192 #include <sys/types.h>
194 # include <inttypes.h>
202 dnl Checks for library functions.
206 AC_CHECK_FUNCS(strdup strstr strcasecmp strncasecmp strpbrk memmove)
207 AC_CHECK_FUNCS(gettimeofday mktime strptime strerror snprintf vsnprintf)
208 AC_CHECK_FUNCS(usleep select sigblock sigsetjmp signal symlink access isatty)
211 dnl Call Wget's local macros defined in aclocal.
220 dnl Check if we need to compile in getopt.c.
222 AC_CHECK_FUNC(getopt_long, [], [
223 GETOPT_OBJ='getopt$o'
228 dnl Checks for libraries.
231 dnl #### This appears to be deficient with later versions of SOCKS.
232 if test "x${with_socks}" = xyes
234 AC_CHECK_LIB(resolv, main)
235 AC_CHECK_LIB(socks, Rconnect)
238 dnl $with_ssl can be one of:
239 dnl - empty string or "auto", meaning autodetect SSL and use it if found.
240 dnl - "yes", meaning link with SSL or bail out.
241 dnl - "no", meaning don't link with SSL.
242 dnl - anything else, meaning use that as the SSL root, and bail out
245 if test x"$with_ssl" = x; then
246 dnl Canonicalize unspecified with-ssl setting to "auto". This
247 dnl implements the "auto-detect by default" feature. If you want to
248 dnl change this to "ignore SSL by default", change "auto" to "no".
252 dnl Detection of OpenSSL is much hairier than the detection of other
253 dnl libraries because OpenSSL can be compiled as a third-party
254 dnl library, which means it will not be found without additional
255 dnl linker magic. It would be really nice to rework this check into
256 dnl an AC_DEFUN so that we can reuse it for other third-party
259 if test x"$with_ssl" != x"no"; then
262 if test x"$with_ssl" = x"yes"; then
266 if test x"$with_ssl" = x"yes" || test x"$with_ssl" = x"auto"; then
267 dnl OpenSSL's root was not specified, so we have to guess. First
268 dnl try the system default location, then "/usr/local/ssl" (where
269 dnl OpenSSL installs by default), then "/usr/local" (traditional
270 dnl choice for installation root), then "/opt".
271 ssl_all_roots="system-default /usr/local/ssl /usr/local /opt"
273 dnl Root has been specified by the user.
274 ssl_all_roots=$with_ssl
280 wget_save_LDFLAGS=$LDFLAGS
281 wget_save_CPPFLAGS=$CPPFLAGS
283 dnl Use libtool for OpenSSL tests so we can specify "-R<rpath>"
284 dnl without having to know how the linker handles it.
285 CC="$SHELL ./libtool $CC"
287 dnl Unfortunately, as of this writing (OpenSSL 0.9.6), the libcrypto
288 dnl shared library doesn't record its dependency on libdl, so we
289 dnl need to check for it ourselves so we won't fail to link due to a
290 dnl lack of -ldl. Most OSes use dlopen(), but HP-UX uses
292 AC_CHECK_LIB(dl,dlopen)
293 AC_CHECK_LIB(dl,shl_load)
297 dnl Now try to find SSL libraries in each of the likely SSL roots.
298 for ssl_root in $ssl_all_roots
300 if test x"$ssl_root" = x"system-default"; then
301 dnl Try the default include and library locations.
304 dnl Try this specific root.
305 SSL_INCLUDES=-I$ssl_root/include
306 dnl It's OK to use -R directly because libtool will
307 dnl interpret it for us.
308 LDFLAGS="-L$ssl_root/lib -R$ssl_root/lib $wget_save_LDFLAGS"
311 AC_MSG_NOTICE([looking for SSL libraries in $ssl_root])
313 dnl Check whether the compiler can find the include files. On
314 dnl some systems Gcc finds libraries in /usr/local/lib, but fails
315 dnl to find the includes in /usr/local/include.
317 ssl_found_includes=no
318 CPPFLAGS="$SSL_INCLUDES $wget_save_CPPFLAGS"
320 AC_MSG_CHECKING([for includes])
322 AC_TRY_CPP([#include <openssl/ssl.h>
323 #include <openssl/rsa.h>
325 AC_MSG_RESULT(found); ssl_found_includes=yes,
326 AC_MSG_RESULT([not found])
329 if test x"$ssl_found_includes" = xno; then
335 dnl Make sure that the checks don't run afoul of the cache. It
336 dnl would be nicer to temporarily turn off the cache, but
337 dnl apparently Autoconf doesn't allow that.
339 unset ac_cv_lib_crypto_RSA_new
340 unset ac_cv_lib_ssl_SSL_new
342 dnl These checks need to be in this order, or you'll get a link
343 dnl failure if you use a static libcrypto.a and libssl.a rather
344 dnl than shared libraries.
346 AC_CHECK_LIB(crypto, RSA_new, , ssl_link_failure=yes)
347 AC_CHECK_LIB(ssl, SSL_new, , ssl_link_failure=yes)
349 if test x"$ssl_link_failure" = xyes; then
350 dnl One or both libs failed to link.
354 dnl The libraries link. But we still need to check if the program
355 dnl linked with those libraries under these settings with run. On
356 dnl some systems (Solaris), Gcc adds -L/usr/local/lib to the
357 dnl linking line, but fails to add -R/usr/local/lib, thus creating
358 dnl executables that link, but fail to run.
360 dnl If we are cross-compiling, just assume that working linkage
361 dnl implies working executable.
365 AC_MSG_CHECKING([whether SSL libs are resolved at runtime])
372 AC_MSG_RESULT(no); ssl_run_failure=yes,
376 if test x"$ssl_run_failure" = xno; then
382 if test x"$ssl_success" = xyes; then
383 AC_MSG_NOTICE([compiling in support for SSL in $ssl_root])
384 AC_DEFINE([HAVE_SSL], 1,
385 [Define if SSL support should be compiled in.])
386 AC_SUBST(SSL_INCLUDES)
387 SSL_OBJ='gen_sslfunc$o'
390 LDFLAGS=$wget_save_LDFLAGS
393 dnl If linking with SSL was forced rather than auto-detected, then
394 dnl bail out if SSL failed.
395 if test x"$wget_force_ssl" = x"yes"; then
396 AC_MSG_ERROR([failed to find OpenSSL libraries], 2)
400 dnl Restore the compiler setting.
403 dnl Restore the CPPFLAGS. Do this regardless of whether linking
404 dnl with SSL succeeded -- SSL includes will be handled using
406 CPPFLAGS=$wget_save_CPPFLAGS
410 dnl Find an md5 implementation.
413 if test x"$wget_need_md5" = xyes
415 dnl This should be moved to an AC_DEFUN, but I'm not sure how to
416 dnl manipulate MD5_OBJ from the defun.
421 dnl Check for the system MD5 library on Solaris. We don't check for
422 dnl something simple like "MD5Update" because there are a number of
423 dnl MD5 implementations that use that name. md5_calc is, hopefully,
424 dnl specific to the Solaris MD5 library.
425 if test x"$found_md5" = xno; then
426 AC_CHECK_LIB(md5, md5_calc, [
427 dnl Some installations have bogus <md5.h> in the compiler's
428 dnl include path, making the system md5 library useless.
429 AC_MSG_CHECKING([whether md5.h can be included])
430 AC_COMPILE_IFELSE([#include <md5.h>
433 AC_DEFINE([HAVE_SOLARIS_MD5], 1, [Define to use Solaris MD5.])
436 AC_MSG_NOTICE([using the Solaris MD5 implementation])
437 ], [AC_MSG_RESULT(no)])
441 dnl Then see if we're linking OpenSSL anyway; if yes, use its md5
443 if test x"$found_md5" = xno; then
444 if test x"$ssl_success" = xyes; then
445 AC_DEFINE([HAVE_OPENSSL_MD5], 1, [Define to use OpenSSL MD5.])
447 AC_MSG_NOTICE([using the OpenSSL MD5 implementation])
451 dnl If none of the above worked, use the one we ship with Wget.
452 if test x"$found_md5" = xno; then
453 AC_DEFINE([HAVE_BUILTIN_MD5], 1, [Define to use built-in MD5.])
454 MD5_OBJ="$MD5_OBJ gnu-md5\$o"
456 AC_MSG_NOTICE([using the GNU MD5 implementation])
459 AC_DEFINE([HAVE_MD5], 1, [Define if we're compiling support for MD5.])
462 dnl **********************************************************************
464 dnl **********************************************************************
467 dnl If --enable-ipv6 is specified, we try to use IPv6 (as long as
468 dnl getaddrinfo is also present). If --disable-ipv6 is specified, we
469 dnl don't use IPv6 or getaddrinfo.
475 AC_HELP_STRING([--disable-ipv6],[disable IPv6 support]),
476 [case "${enable_ipv6}" in
478 AC_MSG_NOTICE([disabling IPv6 at user request])
485 dnl If unspecified, check for IPv6 and use it where available.
489 if test "X$ipv6" = "Xyes" || test "X$check_for_ipv6" = "Xyes"; then
490 AC_CHECK_FUNCS(getaddrinfo,[
491 GETADDRINFO_AI_ADDRCONFIG(
493 [HAVE_GETADDRINFO_AI_ADDRCONFIG], 1,
494 [Define if the system headers support the AI_ADDRCONFIG flag.]
497 GETADDRINFO_AI_V4MAPPED(
499 [HAVE_GETADDRINFO_AI_V4MAPPED], 1,
500 [Define if the system headers support the AI_V4MAPPED flag.]
505 [HAVE_GETADDRINFO_AI_ALL], 1,
506 [Define if the system headers support the AI_ALL flag.]
510 AC_MSG_NOTICE([Disabling IPv6 support: your system does not support getaddrinfo(3)])
515 if test "X$ipv6" = "Xyes" || test "X$check_for_ipv6" = "Xyes"; then
517 AC_MSG_NOTICE([Disabling IPv6 support: your system does not support the PF_INET6 protocol family])
522 if test "X$ipv6" = "Xyes" || test "X$check_for_ipv6" = "Xyes"; then
523 TYPE_STRUCT_SOCKADDR_IN6([
526 AC_MSG_NOTICE([Disabling IPv6 support: your system does not support 'struct sockaddr_in6'])
529 if test "X$ipv6" = "Xyes"; then
534 if test "X$ipv6" = "Xyes"; then
535 AC_DEFINE([ENABLE_IPV6], 1, [Define if IPv6 support is enabled.])
540 dnl Set of available languages.
542 ALL_LINGUAS=`(cd ${srcdir}/po && ls *.po | sed -e 's/\.po$//' | tr '\012' ' ')`
544 dnl Originally this used to be static, looking like this:
545 dnl ALL_LINGUAS="cs de hr it ..."
546 dnl The downside was that configure needed to be rebuilt whenever a
547 dnl new language was added.
549 dnl internationalization macros
553 dnl Find makeinfo. If makeinfo is not found, look for Emacs. If
554 dnl Emacs cannot be found, look for XEmacs.
557 AC_CHECK_PROGS(MAKEINFO, makeinfo emacs xemacs)
559 case "${MAKEINFO}" in
560 *makeinfo) MAKEINFO="${MAKEINFO} \$(srcdir)/wget.texi" ;;
561 *emacs | *xemacs) MAKEINFO="${MAKEINFO} -batch -q -no-site-file -eval '(find-file \"\$(srcdir)/wget.texi\")' -l texinfmt -f texinfo-format-buffer -f save-buffer" ;;
562 *) MAKEINFO="makeinfo \$(srcdir)/wget.texi" ;;
566 dnl Find perl and pod2man
569 AC_PATH_PROGS(PERL, perl5 perl, no)
570 AC_PATH_PROG(POD2MAN, pod2man, no)
572 if test "x${POD2MAN}" = xno; then
573 COMMENT_IF_NO_POD2MAN="# "
575 COMMENT_IF_NO_POD2MAN=
577 AC_SUBST(COMMENT_IF_NO_POD2MAN)
582 AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile util/Makefile
583 po/Makefile.in windows/Makefile])
584 AC_CONFIG_HEADERS([src/config.h])
586 #include "config-post.h"
588 AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
589 AC_CONFIG_COMMANDS([default], [WGET_PROCESS_PO])