]> sjero.net Git - wget/blob - configure.in
Merge with mainline
[wget] / configure.in
1 dnl Template file for GNU Autoconf
2 dnl Copyright (C) 1995, 1996, 1997, 2001, 2007 Free Software Foundation, Inc.
3
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 3 of the License, or
7 dnl (at your option) any later version.
8
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.
13
14 dnl You should have received a copy of the GNU General Public License
15 dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
16
17 dnl In addition, as a special exception, the Free Software Foundation
18 dnl gives permission to link the code of its release of Wget with the
19 dnl OpenSSL project's "OpenSSL" library (or with modified versions of it
20 dnl that use the same license as the "OpenSSL" library), and distribute
21 dnl the linked executables.  You must obey the GNU General Public License
22 dnl in all respects for all of the code used other than "OpenSSL".  If you
23 dnl modify this file, you may extend this exception to your version of the
24 dnl file, but you are not obligated to do so.  If you do not wish to do
25 dnl so, delete this exception statement from your version.
26
27 dnl
28 dnl Process this file with autoconf to produce a configure script.
29 dnl
30
31 AC_INIT([src/version.c])
32 AC_PREREQ(2.61)
33
34 dnl Include the M4 macros we use.
35 builtin(include, [m4/wget.m4])dnl
36 builtin(include, [m4/lib-ld.m4])dnl
37 builtin(include, [m4/lib-link.m4])dnl
38 builtin(include, [m4/lib-prefix.m4])dnl
39
40 dnl
41 dnl What version of Wget are we building?
42 dnl
43 VERSION=`sed -e 's/^.*"\(.*\)";$/\1/' ${srcdir}/src/version.c`
44 AC_MSG_NOTICE([configuring for GNU Wget $VERSION])
45 AC_SUBST(VERSION)
46 PACKAGE=wget
47 AC_SUBST(PACKAGE)
48
49 dnl
50 dnl Get cannonical host
51 dnl
52 AC_CANONICAL_HOST
53 AC_DEFINE_UNQUOTED([OS_TYPE], "$host_os",
54                    [Define to be the name of the operating system.])
55
56 dnl
57 dnl Process features.
58 dnl
59
60 AC_ARG_WITH(ssl,
61 [[  --without-ssl           disable SSL autodetection]])
62
63 AC_ARG_ENABLE(opie,
64 [  --disable-opie          disable support for opie or s/key FTP login],
65 ENABLE_OPIE=$enableval, ENABLE_OPIE=yes)
66 test x"${ENABLE_OPIE}" = xyes && AC_DEFINE([ENABLE_OPIE], 1,
67    [Define if you want the Opie support for FTP compiled in.])
68
69 AC_ARG_ENABLE(digest,
70 [  --disable-digest        disable support for HTTP digest authorization],
71 ENABLE_DIGEST=$enableval, ENABLE_DIGEST=yes)
72 test x"${ENABLE_DIGEST}" = xyes && AC_DEFINE([ENABLE_DIGEST], 1,
73    [Define if you want the HTTP Digest Authorization compiled in.])
74
75 AC_ARG_ENABLE(ntlm,
76 [  --disable-ntlm          disable support for NTLM authorization],
77 [ENABLE_NTLM=$enableval], [ENABLE_NTLM=auto])
78
79 AC_ARG_ENABLE(debug,
80 [  --disable-debug         disable support for debugging output],
81 ENABLE_DEBUG=$enableval, ENABLE_DEBUG=yes)
82 test x"${ENABLE_DEBUG}" = xyes && AC_DEFINE([ENABLE_DEBUG], 1,
83    [Define if you want the debug output support compiled in.])
84
85 wget_need_md5=no
86
87 case "${ENABLE_OPIE}${ENABLE_DIGEST}" in
88 *yes*)
89         wget_need_md5=yes
90 esac
91 if test x"$ENABLE_OPIE" = xyes; then
92   OPIE_OBJ='ftp-opie.o'
93 fi
94 AC_SUBST(OPIE_OBJ)
95
96 dnl
97 dnl Whether make sets $(MAKE)...
98 dnl
99 AC_PROG_MAKE_SET
100
101 dnl
102 dnl Find a good install
103 dnl
104 AC_PROG_INSTALL
105
106 dnl
107 dnl Find the compiler
108 dnl
109
110 dnl We want these before the checks, so the checks can modify their values.
111 test -z "$CFLAGS"  && CFLAGS= auto_cflags=1
112 test -z "$CC" && cc_specified=yes
113
114 AC_PROG_CC
115 AC_AIX
116
117 dnl Turn on optimization by default.  Specifically:
118 dnl
119 dnl if the user hasn't specified CFLAGS, then
120 dnl   if compiler is gcc, then
121 dnl     use -O2 and some warning flags
122 dnl   else
123 dnl     use os-specific flags or -O
124 if test -n "$auto_cflags"; then
125   if test -n "$GCC"; then
126     CFLAGS="$CFLAGS -O2 -Wall"
127   else
128     case "$host_os" in
129       *hpux*)  CFLAGS="$CFLAGS +O3"                      ;;
130       *ultrix* | *osf*) CFLAGS="$CFLAGS -O -Olimit 2000" ;;
131       *)       CFLAGS="$CFLAGS -O" ;;
132     esac
133   fi
134 fi
135
136 dnl
137 dnl Checks for basic compiler characteristics.
138 dnl
139 AC_C_CONST
140 AC_C_INLINE
141 AC_C_VOLATILE
142
143 dnl Check for basic headers, even though we expect them to exist and
144 dnl #include them unconditionally in the code.  Their detection is
145 dnl still needed because test programs used by Autoconf macros check
146 dnl for STDC_HEADERS, HAVE_SYS_TYPES_H, etc. before using them.
147 dnl Without the checks they will fail to be included in test programs,
148 dnl which will subsequently fail.
149 AC_HEADER_STDC
150
151 dnl Check for large file support.  This check needs to come fairly
152 dnl early because it could (in principle) affect whether functions and
153 dnl headers are available, whether they work, etc.
154 AC_SYS_LARGEFILE
155 AC_CHECK_SIZEOF(off_t)
156
157 dnl
158 dnl Checks for system header files that might be missing.
159 dnl
160 AC_HEADER_STDBOOL
161 AC_CHECK_HEADERS(unistd.h sys/time.h)
162 AC_CHECK_HEADERS(termios.h sys/ioctl.h sys/select.h utime.h sys/utime.h)
163 AC_CHECK_HEADERS(stdint.h inttypes.h pwd.h)
164
165 dnl
166 dnl Check sizes of integer types.  These are used to find n-bit
167 dnl integral types on older systems that fail to provide intN_t and
168 dnl uintN_t typedefs.
169 dnl
170 AC_CHECK_SIZEOF(short)
171 AC_CHECK_SIZEOF(int)
172 AC_CHECK_SIZEOF(long)
173 AC_CHECK_SIZEOF(long long)
174 AC_CHECK_SIZEOF(void *)
175
176 dnl
177 dnl Checks for non-universal or system-specific types.
178 dnl
179 AC_TYPE_SIZE_T
180 AC_TYPE_PID_T
181 AC_CHECK_TYPES([uint32_t, uintptr_t, intptr_t, int64_t])
182 AC_CHECK_TYPES(sig_atomic_t, [], [], [
183 #include <stdio.h>
184 #include <sys/types.h>
185 #if HAVE_INTTYPES_H
186 # include <inttypes.h>
187 #endif
188 #include <signal.h>
189 ])
190
191 dnl
192 dnl Checks for library functions.
193 dnl
194 AC_FUNC_ALLOCA
195 AC_FUNC_MMAP
196 AC_FUNC_FSEEKO
197 AC_CHECK_FUNCS(strptime timegm snprintf vsnprintf vasprintf drand48)
198 AC_CHECK_FUNCS(strtoll usleep ftello sigblock sigsetjmp memrchr)
199
200 dnl We expect to have these functions on Unix-like systems configure
201 dnl runs on.  The defines are provided to get them in config.h.in so
202 dnl Wget can still be ported to non-Unix systems (such as Windows)
203 dnl that lack some of these functions.
204 AC_DEFINE([HAVE_STRCASECMP], 1, [Define to 1 if you have the `strcasecmp' function.])
205 AC_DEFINE([HAVE_STRNCASECMP], 1, [Define to 1 if you have the `strncasecmp' function.])
206 AC_DEFINE([HAVE_STRDUP], 1, [Define to 1 if you have the `strdup' function.])
207 AC_DEFINE([HAVE_ISATTY], 1, [Define to 1 if you have the `isatty' function.])
208 AC_DEFINE([HAVE_SYMLINK], 1, [Define to 1 if you have the `symlink' function.])
209
210 dnl
211 dnl Call Wget-specific macros defined in aclocal.
212 dnl
213 WGET_STRUCT_UTIMBUF
214 WGET_SOCKLEN_T
215 WGET_FNMATCH
216 WGET_NANOSLEEP
217 WGET_POSIX_CLOCK
218 WGET_NSL_SOCKET
219
220 dnl
221 dnl Check if we need to compile in getopt.c.
222 dnl
223 AC_CHECK_FUNC(getopt_long, [], [
224   GETOPT_OBJ='getopt.o'
225 ])
226 AC_SUBST(GETOPT_OBJ)
227
228 dnl
229 dnl Checks for libraries.
230 dnl
231
232 AS_IF([test x"$with_ssl" = xgnutls], [
233   dnl Now actually check for -lssl
234   AC_LIB_HAVE_LINKFLAGS([gnutls], [], [
235 #include <gnutls/gnutls.h>
236   ], [gnutls_global_init()])
237   if test x"$LIBGNUTLS" != x
238   then
239     AC_MSG_NOTICE([compiling in support for SSL via GnuTLS])
240     SSL_OBJ='gnutls.o'
241   else
242     AC_MSG_ERROR([--with-ssl=gnutls was given, but GNUTLS is not available.])
243   fi
244 ], [
245   # --with-ssl is not gnutls: check if it's no
246   AS_IF([test x"$with_ssl" != xno], [
247     dnl As of this writing (OpenSSL 0.9.6), the libcrypto shared library
248     dnl doesn't record its dependency on libdl, so we need to make sure
249     dnl -ldl ends up in LIBS on systems that have it.  Most OSes use
250     dnl dlopen(), but HP-UX uses shl_load().
251     AC_CHECK_LIB(dl, dlopen, [], [
252       AC_CHECK_LIB(dl, shl_load)
253     ])
254
255     dnl Now actually check for -lssl
256     AC_LIB_HAVE_LINKFLAGS([ssl], [crypto], [
257   #include <openssl/ssl.h>
258   #include <openssl/x509.h>
259   #include <openssl/err.h>
260   #include <openssl/rand.h>
261   #include <openssl/des.h>
262   #include <openssl/md4.h>
263   #include <openssl/md5.h>
264     ], [SSL_library_init ()])
265     if test x"$LIBSSL" != x
266     then
267       AC_MSG_NOTICE([compiling in support for SSL via OpenSSL])
268       SSL_OBJ='openssl.o'
269     elif test x"$with_ssl" != x
270     then
271       AC_MSG_ERROR([--with-ssl was given, but SSL is not available.])
272     fi
273   ]) # endif: --with-ssl == no?
274 ]) # endif: --with-ssl == gnutls?
275
276 AC_SUBST(SSL_OBJ)
277
278 dnl Enable NTLM if requested and if SSL is available.
279 NTLM_OBJ=''
280 if test x"$LIBSSL" != x
281 then
282   if test x"$ENABLE_NTLM" != xno
283   then
284     AC_DEFINE([ENABLE_NTLM], 1,
285      [Define if you want the NTLM authorization support compiled in.])
286     NTLM_OBJ='http-ntlm.o'
287   fi
288 else
289   dnl If SSL is unavailable and the user explicitly requested NTLM,
290   dnl abort.
291   if test x"$ENABLE_NTLM" = xyes
292   then
293     AC_MSG_ERROR([NTLM authorization requested and OpenSSL not found; aborting])
294   fi
295 fi
296 AC_SUBST(NTLM_OBJ)
297
298 dnl
299 dnl Find an MD5 implementation.  Since Wget rarely needs MD5, we try
300 dnl to use an existing library implementation to save on code size.
301 dnl
302
303 if test x"$wget_need_md5" = xyes
304 then
305   dnl This should be moved to an AC_DEFUN, but I'm not sure how to
306   dnl manipulate MD5_OBJ from the defun.
307
308   MD5_OBJ='gen-md5.o'
309   found_md5=no
310
311   dnl Check for the system MD5 library on Solaris.  We don't check for
312   dnl something simple like "MD5Update" because there are a number of
313   dnl MD5 implementations that use that name, but have an otherwise
314   dnl incompatible interface.  md5_calc is, hopefully, specific to the
315   dnl Solaris MD5 library.
316   if test x"$found_md5" = xno; then
317     AC_CHECK_LIB(md5, md5_calc, [
318       dnl Some installations have bogus <md5.h> in the compiler's
319       dnl include path, making the system md5 library useless.
320       AC_MSG_CHECKING([for working md5.h])
321       AC_COMPILE_IFELSE([#include <md5.h>
322                         ], [
323         AC_MSG_RESULT(yes)
324         AC_DEFINE([HAVE_SOLARIS_MD5], 1, [Define when using Solaris MD5.])
325         LIBS="-lmd5 $LIBS"
326         found_md5=yes
327         AC_MSG_NOTICE([using the Solaris MD5 implementation])
328       ], [AC_MSG_RESULT(no)])
329     ])
330   fi
331
332   dnl Then see if we're linking OpenSSL anyway; if yes, use its md5
333   dnl implementation.
334   if test x"$found_md5" = xno; then
335     if test x"$LIBSSL" != x; then
336       AC_DEFINE([HAVE_OPENSSL_MD5], 1, [Define when using OpenSSL MD5.])
337       found_md5=yes
338       AC_MSG_NOTICE([using the OpenSSL MD5 implementation])
339     fi
340   fi
341
342   dnl If none of the above worked, use the one we ship with Wget.
343   if test x"$found_md5" = xno; then
344     AC_DEFINE([HAVE_BUILTIN_MD5], 1, [Define when using built-in MD5.])
345     MD5_OBJ="$MD5_OBJ gnu-md5.o"
346     found_md5=yes
347     AC_MSG_NOTICE([using the built-in (GNU) MD5 implementation])
348     AC_C_BIGENDIAN
349   fi
350 fi
351 AC_DEFINE([HAVE_MD5], 1, [Define if we're compiling support for MD5.])
352 AC_SUBST(MD5_OBJ)
353
354 dnl **********************************************************************
355 dnl Checks for IPv6
356 dnl **********************************************************************
357
358 dnl
359 dnl We test for IPv6 by checking, in turn, for availability of
360 dnl getaddrinfo, presence of the INET6 address/protocol family, and
361 dnl the existence of struct sockaddr_in6.  If any of them is missing,
362 dnl IPv6 is disabled, and the code reverts to old-style gethostbyname.
363 dnl
364 dnl If --enable-ipv6 is explicitly specified on the configure command
365 dnl line, we check for IPv6 and abort if not found.  If --disable-ipv6
366 dnl is specified, we disable IPv6 and don't check for it.  The default
367 dnl is to autodetect IPv6 and use it where available.
368 dnl
369
370 AC_ARG_ENABLE(ipv6,
371   AC_HELP_STRING([--disable-ipv6],[disable IPv6 support]),
372   [case "${enable_ipv6}" in
373     no)
374       AC_MSG_NOTICE([disabling IPv6 at user request])
375       dnl Disable IPv6 checking
376       ipv6=no
377       ;;
378     yes)
379       dnl IPv6 explicitly enabled: force its use (abort if unavailable).
380       ipv6=yes
381       force_ipv6=yes
382       ;;
383     auto)
384       dnl Auto-detect IPv6, i.e. check for IPv6, but don't force it.
385       ipv6=yes
386       ;;
387     *)
388       AC_MSG_ERROR([Invalid --enable-ipv6 argument \`$enable_ipv6'])
389       ;;
390     esac
391   ], [
392     dnl If nothing is specified, assume auto-detection.
393     ipv6=yes
394   ]
395 )
396
397 if test "X$ipv6" = "Xyes"; then
398   AC_CHECK_FUNCS(getaddrinfo, [], [
399     AC_MSG_NOTICE([Disabling IPv6 support: your system does not support getaddrinfo(3)])
400     ipv6=no
401   ])
402 fi
403
404 if test "X$ipv6" = "Xyes"; then
405   PROTO_INET6([], [
406     AC_MSG_NOTICE([Disabling IPv6 support: your system does not support the PF_INET6 protocol family])
407     ipv6=no
408   ])
409 fi
410
411 if test "X$ipv6" = "Xyes"; then
412   TYPE_STRUCT_SOCKADDR_IN6([],[
413     AC_MSG_NOTICE([Disabling IPv6 support: your system does not support \`struct sockaddr_in6'])
414     ipv6=no
415   ])
416   if test "X$ipv6" = "Xyes"; then
417     WGET_STRUCT_SOCKADDR_STORAGE
418     MEMBER_SIN6_SCOPE_ID
419   fi
420 fi
421
422 if test "X$ipv6" = "Xyes"; then
423   AC_DEFINE([ENABLE_IPV6], 1, [Define if IPv6 support is enabled.])
424   AC_MSG_NOTICE([Enabling support for IPv6.])
425 elif test "x$force_ipv6" = "xyes"; then
426   AC_MSG_ERROR([IPv6 support requested but not found; aborting])
427 fi
428
429
430 dnl
431 dnl Set of available languages.
432 dnl
433 dnl Originally this used to be static, looking like this:
434 dnl     ALL_LINGUAS="cs de hr it ..."
435 dnl The downside was that configure needed to be rebuilt whenever a
436 dnl new language was added.
437 dnl
438 ALL_LINGUAS=`(cd ${srcdir}/po && ls *.po | sed -e 's/\.po$//' | tr '\012' ' ')`
439
440 dnl internationalization macros
441 WGET_WITH_NLS
442
443 dnl
444 dnl Find makeinfo.  We used to provide support for Emacs processing
445 dnl Texinfo using `emacs -batch -eval ...' where makeinfo is
446 dnl unavailable, but that broke with the addition of makeinfo-specific
447 dnl command-line options, such as `-I'.  Now we depend on makeinfo to
448 dnl build the Info documentation.
449 dnl
450
451 AC_CHECK_PROGS(MAKEINFO, [makeinfo], [true])
452
453 dnl
454 dnl Find perl and pod2man
455 dnl
456
457 AC_PATH_PROGS(PERL, [perl5 perl], no)
458 AC_PATH_PROG(POD2MAN, pod2man, no)
459
460 if test "x${POD2MAN}" = xno; then
461   COMMENT_IF_NO_POD2MAN="# "
462 else
463   COMMENT_IF_NO_POD2MAN=
464 fi
465 AC_SUBST(COMMENT_IF_NO_POD2MAN)
466
467 dnl
468 dnl Create output
469 dnl
470 AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile util/Makefile
471                  po/Makefile.in tests/Makefile tests/WgetTest.pm
472                  windows/Makefile])
473 AC_CONFIG_HEADERS([src/config.h])
474 AH_BOTTOM([
475 #include "config-post.h"
476 ])
477 AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
478 AC_CONFIG_COMMANDS([default], [WGET_PROCESS_PO])
479 AC_OUTPUT