]> sjero.net Git - wget/blob - configure.in
[svn] Convert URLs in <form action=...>.
[wget] / configure.in
1 dnl Template file for GNU Autoconf
2 dnl Copyright (C) 1995, 1996, 1997, 2001 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 2 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, write to the Free Software
16 dnl Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17
18 dnl
19 dnl Process this file with autoconf to produce a configure script.
20 dnl
21
22 AC_INIT(src/version.c)
23 AC_PREREQ(2.12)
24 AC_CONFIG_HEADER(src/config.h)
25
26 dnl
27 dnl What version of Wget are we building?
28 dnl
29 VERSION=`sed -e 's/^.*"\(.*\)";$/\1/' ${srcdir}/src/version.c`
30 echo "configuring for GNU Wget $VERSION"
31 AC_SUBST(VERSION)
32 PACKAGE=wget
33 AC_SUBST(PACKAGE)
34
35 dnl
36 dnl Get cannonical host
37 dnl
38 AC_CANONICAL_HOST
39 AC_DEFINE_UNQUOTED(OS_TYPE, "$host_os")
40
41 dnl
42 dnl Process features.
43 dnl
44 AC_ARG_WITH(socks,
45 [  --with-socks            use the socks library],
46 [AC_DEFINE(HAVE_SOCKS)])
47
48 AC_ARG_WITH(ssl,
49 [  --with-ssl[=SSL-ROOT]   link with SSL support [default=auto]
50   --without-ssl           disable SSL autodetection])
51
52 AC_ARG_ENABLE(opie,
53 [  --disable-opie          disable support for opie or s/key FTP login],
54 USE_OPIE=$enableval, USE_OPIE=yes)
55 test x"${USE_OPIE}" = xyes && AC_DEFINE(USE_OPIE)
56
57 AC_ARG_ENABLE(digest,
58 [  --disable-digest        disable support for HTTP digest authorization],
59 USE_DIGEST=$enableval, USE_DIGEST=yes)
60 test x"${USE_DIGEST}" = xyes && AC_DEFINE(USE_DIGEST)
61
62 AC_ARG_ENABLE(debug,
63 [  --disable-debug         disable support for debugging output],
64 DEBUG=$enableval, DEBUG=yes)
65 test x"${DEBUG}" = xyes && AC_DEFINE(DEBUG)
66
67 wget_need_md5=no
68
69 case "${USE_OPIE}${USE_DIGEST}" in
70 *yes*)
71         wget_need_md5=yes
72 esac
73 if test x"$USE_OPIE" = xyes; then
74   OPIE_OBJ='ftp-opie$o'
75 fi
76 AC_SUBST(OPIE_OBJ)
77
78 dnl
79 dnl Whether make sets $(MAKE)...
80 dnl
81 AC_PROG_MAKE_SET
82
83 dnl
84 dnl Find a good install
85 dnl
86 AC_PROG_INSTALL
87
88 dnl
89 dnl Find the compiler
90 dnl
91
92 dnl We want these before the checks, so the checks can modify their values.
93 test -z "$CFLAGS"  && CFLAGS= auto_cflags=1
94 test -z "$CC" && cc_specified=yes
95
96 AC_PROG_CC
97
98 dnl
99 dnl if the user hasn't specified CFLAGS, then
100 dnl   if compiler is gcc, then use -O2 and some warning flags
101 dnl   else use os-specific flags or -O
102 dnl
103 if test -n "$auto_cflags"; then
104   if test -n "$GCC"; then
105     CFLAGS="$CFLAGS -O2 -Wall -Wno-implicit"
106   else
107     case "$host_os" in
108       *hpux*)  CFLAGS="$CFLAGS +O3"                      ;;
109       *ultrix* | *osf*) CFLAGS="$CFLAGS -O -Olimit 2000" ;;
110       *)       CFLAGS="$CFLAGS -O" ;;
111     esac
112   fi
113 fi
114
115 dnl
116 dnl Handle AIX
117 dnl
118 AC_AIX
119
120 dnl
121 dnl Configure our included libtool and make sure it's regenerated when needed
122 dnl
123 AC_PROG_LIBTOOL
124 AC_SUBST(LIBTOOL_DEPS)
125
126 dnl
127 dnl In case of {cyg,gnu}win32.  Should be a _target_ test.
128 dnl Might also be erelevant for DJGPP.
129 dnl
130 case "$host_os" in
131   *win32) exeext='.exe';;
132   *) exeext='';;
133 esac
134 AC_SUBST(exeext)
135
136 dnl
137 dnl Check if we can handle prototypes.
138 dnl
139 AM_C_PROTOTYPES
140
141 dnl
142 dnl Checks for typedefs, structures, and compiler characteristics.
143 dnl
144 AC_C_CONST
145 AC_C_INLINE
146 AC_TYPE_SIZE_T
147 AC_TYPE_PID_T
148 dnl #### This generates a warning.  What do I do to shut it up?
149 AC_C_BIGENDIAN
150
151 # Check size of long.
152 AC_CHECK_SIZEOF(long)
153 AC_CHECK_SIZEOF(long long)
154
155 dnl
156 dnl Checks for headers
157 dnl
158 AC_CHECK_HEADERS(string.h stdarg.h unistd.h sys/time.h utime.h sys/utime.h pwd.h)
159 AC_CHECK_HEADERS(termios.h sys/ioctl.h sys/select.h sys/utsname.h signal.h)
160 AC_HEADER_TIME
161
162 dnl
163 dnl Return type of signal-handlers
164 dnl
165 AC_TYPE_SIGNAL
166
167 dnl
168 dnl Check for struct utimbuf
169 WGET_STRUCT_UTIMBUF
170
171 dnl
172 dnl Checks for library functions.
173 dnl
174 AC_FUNC_ALLOCA
175 AC_FUNC_MMAP
176 AC_CHECK_FUNCS(strdup strstr strcasecmp strncasecmp strpbrk memmove)
177 AC_CHECK_FUNCS(gettimeofday mktime strptime)
178 AC_CHECK_FUNCS(strerror snprintf vsnprintf select signal symlink access isatty)
179 AC_CHECK_FUNCS(uname gethostname usleep)
180
181 dnl
182 dnl Check if we need to compile in getopt.c.
183 dnl
184 AC_CHECK_FUNC(getopt_long, [], [
185   GETOPT_OBJ='getopt$o'
186 ])
187 AC_SUBST(GETOPT_OBJ)
188
189 dnl
190 dnl Checks for libraries.
191 dnl
192
193 dnl On Solaris, -lnsl is needed to use gethostbyname.  On "NCR MP-RAS
194 dnl 3.0", however, gethostbyname is in libc, but -lnsl is still needed
195 dnl to use -lsocket, as well as for functions such as inet_ntoa.  We
196 dnl look for such known offenders and if one of them is not found, we
197 dnl check if -lnsl is needed.
198
199 wget_check_in_nsl=NONE
200 AC_CHECK_FUNCS(gethostbyname, [], [
201   wget_check_in_nsl=gethostbyname
202 ])
203 AC_CHECK_FUNCS(inet_ntoa, [], [
204   wget_check_in_nsl=inet_ntoa
205 ])
206 if test $wget_check_in_nsl != NONE; then
207   AC_CHECK_LIB(nsl, $wget_check_in_nsl)
208 fi
209
210 AC_CHECK_LIB(socket, socket)
211
212 dnl #### This appears to be deficient with later versions of SOCKS.
213 if test "x${with_socks}" = xyes
214 then
215   AC_CHECK_LIB(resolv, main)
216   AC_CHECK_LIB(socks, Rconnect)
217 fi
218
219 dnl $with_ssl can be one of:
220 dnl  - empty string or "auto", meaning autodetect SSL and use it if found.
221 dnl  - "yes", meaning link with SSL or bail out.
222 dnl  - "no", meaning don't link with SSL.
223 dnl  - anything else, meaning use that as the SSL root, and bail out
224 dnl    if it fails.
225
226 if test x"$with_ssl" = x; then
227   dnl Canonicalize unspecified with-ssl setting to "auto".  This
228   dnl implements the "auto-detect by default" feature.  If you want to
229   dnl change this to "ignore SSL by default", change "auto" to "no".
230   with_ssl=auto
231 fi
232
233 dnl Detection of OpenSSL is much hairier than the detection of other
234 dnl libraries because OpenSSL can be compiled as a third-party
235 dnl library, which means it will not be found without additional
236 dnl linker magic.  It would be really nice to rework this check into
237 dnl an AC_DEFUN so that we can reuse it for other third-party
238 dnl libraries.
239
240 if test x"$with_ssl" != x"no"; then
241
242   wget_force_ssl=no
243   if test x"$with_ssl" = x"yes"; then
244     wget_force_ssl=yes
245   fi
246
247   if test x"$with_ssl" = x"yes" || test x"$with_ssl" = x"auto"; then
248     dnl OpenSSL's root was not specified, so we have to guess.  First
249     dnl try the system default location, then "/usr/local/ssl" (where
250     dnl OpenSSL installs by default), then "/usr/local" (traditional
251     dnl choice for installation root), then "/opt".
252     ssl_all_roots="system-default /usr/local/ssl /usr/local /opt"
253   else
254     dnl Root has been specified by the user.
255     ssl_all_roots=$with_ssl
256     wget_force_ssl=yes
257   fi
258
259   wget_save_CC=$CC
260   wget_save_LIBS=$LIBS
261   wget_save_LDFLAGS=$LDFLAGS
262   wget_save_CPPFLAGS=$CPPFLAGS
263
264   dnl Use libtool for OpenSSL tests so we can specify "-R<rpath>"
265   dnl without having to know how the linker handles it.
266   CC="$SHELL ./libtool $CC"
267
268   dnl Unfortunately, as of this writing (OpenSSL 0.9.6), the libcrypto
269   dnl shared library doesn't record its dependency on libdl, so we
270   dnl need to check for it ourselves so we won't fail to link due to a
271   dnl lack of -ldl.  Most OSes use dlopen(), but HP-UX uses
272   dnl shl_load().
273   AC_CHECK_LIB(dl,dlopen)
274   AC_CHECK_LIB(dl,shl_load)
275
276   ssl_success=no
277
278   dnl Now try to find SSL libraries in each of the likely SSL roots.
279   for ssl_root in $ssl_all_roots
280   do
281     if test x"$ssl_root" = x"system-default"; then
282       dnl Try the default include and library locations.
283       SSL_INCLUDES=
284     else
285       dnl Try this specific root.
286       SSL_INCLUDES=-I$ssl_root/include
287       dnl It's OK to use -R directly because libtool will
288       dnl interpret it for us.
289       LDFLAGS="-L$ssl_root/lib -R$ssl_root/lib $wget_save_LDFLAGS"
290     fi
291
292     AC_MSG_RESULT(["Looking for SSL libraries in $ssl_root"])
293
294     dnl Check whether the compiler can find the include files.  On
295     dnl some systems Gcc finds libraries in /usr/local/lib, but fails
296     dnl to find the includes in /usr/local/include.
297
298     ssl_found_includes=no
299     CPPFLAGS="$SSL_INCLUDES $wget_save_CPPFLAGS"
300
301     AC_MSG_CHECKING(["for includes"])
302
303     AC_TRY_CPP([#include <openssl/ssl.h>
304 #include <openssl/rsa.h>
305 ],
306       AC_MSG_RESULT("found"); ssl_found_includes=yes,
307       AC_MSG_RESULT("not found")
308     )
309
310     if test x"$ssl_found_includes" = xno; then
311       continue
312     fi
313
314     ssl_link_failure=no
315
316     dnl Make sure that the checks don't run afoul of the cache.  It
317     dnl would be nicer to temporarily turn off the cache, but
318     dnl apparently Autoconf doesn't allow that.
319
320     unset ac_cv_lib_crypto_RSA_new
321     unset ac_cv_lib_ssl_SSL_new
322
323     dnl These checks need to be in this order, or you'll get a link
324     dnl failure if you use a static libcrypto.a and libssl.a rather
325     dnl than shared libraries.
326
327     AC_CHECK_LIB(crypto, RSA_new, , ssl_link_failure=yes)
328     AC_CHECK_LIB(ssl, SSL_new, , ssl_link_failure=yes)
329
330     if test x"$ssl_link_failure" = xyes; then
331       dnl One or both libs failed to link.
332       continue
333     fi
334
335     dnl The libraries link.  But we still need to check if the program
336     dnl linked with those libraries under these settings with run.  On
337     dnl some systems (Solaris), Gcc adds -L/usr/local/lib to the
338     dnl linking line, but fails to add -R/usr/local/lib, thus creating
339     dnl executables that link, but fail to run.
340
341     dnl If we are cross-compiling, just assume that working linkage
342     dnl implies working executable.
343
344     ssl_run_failure=no
345
346     AC_MSG_CHECKING("whether SSL libs are resolved at runtime")
347     AC_TRY_RUN([
348 int RSA_new();
349 int SSL_new();
350 main(){return 0;}
351 ],
352       AC_MSG_RESULT("yes"),
353       AC_MSG_RESULT("no"); ssl_run_failure=yes,
354       AC_MSG_RESULT("cross")
355     )
356
357     if test x"$ssl_run_failure" = xno; then
358       ssl_success=yes
359       break
360     fi
361   done
362
363   if test x"$ssl_success" = xyes; then
364     dnl AC_MSG_RESULT doesn't look right here, but I'm not sure what
365     dnl to use instead.
366     AC_MSG_RESULT("Compiling in support for SSL in $ssl_root")
367     AC_DEFINE(HAVE_SSL)
368     AC_SUBST(SSL_INCLUDES)
369     SSL_OBJ='gen_sslfunc$o'
370     AC_SUBST(SSL_OBJ)
371   else
372     LDFLAGS=$wget_save_LDFLAGS
373     LIBS=$wget_save_LIBS
374
375     dnl If linking with SSL was forced rather than auto-detected, then
376     dnl bail out if SSL failed.
377     if test x"$wget_force_ssl" = x"yes"; then
378       exec >&2
379       echo "ERROR: Failed to find OpenSSL libraries."
380       exit 2
381     fi
382   fi
383
384   dnl Restore the compiler setting.
385   CC=$wget_save_CC
386
387   dnl Restore the CPPFLAGS.  Do this regardless of whether linking
388   dnl with SSL succeeded -- SSL includes will be handled using
389   dnl @SSL_INCLUDES@.
390   CPPFLAGS=$wget_save_CPPFLAGS
391 fi
392
393 dnl
394 dnl Find an md5 implementation.
395 dnl
396
397 if test x"$wget_need_md5" = xyes
398 then
399   MD5_OBJ='gen-md5$o'
400
401   found_md5=no
402
403   dnl Check for the system MD5 library on Solaris.  We don't check for
404   dnl something simple like "MD5Update" because there are a number of
405   dnl MD5 implementations that use that name.  md5_calc is, hopefully,
406   dnl specific to the Solaris MD5 library.
407   if test x"$found_md5" = xno; then
408     AC_CHECK_LIB(md5, md5_calc, [
409       AC_DEFINE(HAVE_SOLARIS_MD5)
410       LIBS="-lmd5 $LIBS"
411       found_md5=yes
412     ])
413   fi
414
415   dnl Then see if we're linking OpenSSL anyway; if yes, use its md5
416   dnl implementation.
417   if test x"$found_md5" = xno; then
418     if test x"$ssl_success" = xyes; then
419       AC_DEFINE(HAVE_OPENSSL_MD5)
420       found_md5=yes
421     fi
422   fi
423
424   dnl If none of the above worked, use the one we ship with Wget.
425   if test x"$found_md5" = xno; then
426     AC_DEFINE(HAVE_BUILTIN_MD5)
427     found_md5=yes
428     MD5_OBJ="$MD5_OBJ gnu-md5\$o"
429   fi
430 fi
431 AC_DEFINE(HAVE_MD5)
432 AC_SUBST(MD5_OBJ)
433
434 dnl
435 dnl Set of available languages.
436 dnl
437 ALL_LINGUAS=`(cd ${srcdir}/po && ls *.po | sed -e 's/\.po$//')`
438
439 dnl Originally this used to be static, looking like this:
440 dnl     ALL_LINGUAS="cs de hr it ..."
441 dnl The downside was that configure needed to be rebuilt whenever a
442 dnl new language was added.
443
444 dnl internationalization macros
445 WGET_WITH_NLS
446
447 dnl
448 dnl Find makeinfo.  If makeinfo is not found, look for Emacs.  If
449 dnl Emacs cannot be found, look for XEmacs.
450 dnl
451
452 AC_CHECK_PROGS(MAKEINFO, makeinfo emacs xemacs)
453
454 case "${MAKEINFO}" in
455    *makeinfo) MAKEINFO="${MAKEINFO} \$(srcdir)/wget.texi"  ;;
456    *emacs | *xemacs) MAKEINFO="${MAKEINFO} -batch -q -no-site-file -eval '(find-file \"\$(srcdir)/wget.texi\")' -l texinfmt -f texinfo-format-buffer -f save-buffer"  ;;
457    *) MAKEINFO="makeinfo \$(srcdir)/wget.texi"            ;;
458 esac
459
460 dnl
461 dnl Find perl and pod2man
462 dnl
463
464 AC_PATH_PROGS(PERL, perl5 perl, no)
465 AC_PATH_PROG(POD2MAN, pod2man, no)
466
467 if test "x${POD2MAN}" = xno; then
468   COMMENT_IF_NO_POD2MAN="# "
469 else
470   COMMENT_IF_NO_POD2MAN=
471 fi
472 AC_SUBST(COMMENT_IF_NO_POD2MAN)
473
474 dnl
475 dnl Create output
476 dnl
477 AC_OUTPUT([Makefile src/Makefile doc/Makefile util/Makefile po/Makefile.in
478            windows/Makefile],
479 [WGET_PROCESS_PO
480 test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h])