]> sjero.net Git - wget/blob - configure.in
[svn] Check for memmove and implement one if it's missing.
[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 libssl [in SSL_ROOT/lib] for https: support])
50
51 AC_ARG_ENABLE(opie,
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)
55
56 AC_ARG_ENABLE(digest,
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)
60
61 AC_ARG_ENABLE(debug,
62 [  --disable-debug         disable support for debugging output],
63 DEBUG=$enableval, DEBUG=yes)
64 test x"${DEBUG}" = xyes && AC_DEFINE(DEBUG)
65
66 wget_need_md5=no
67
68 case "${USE_OPIE}${USE_DIGEST}" in
69 *yes*)
70         wget_need_md5=yes
71 esac
72 if test x"$USE_OPIE" = xyes; then
73   OPIE_OBJ='ftp-opie$o'
74 fi
75 AC_SUBST(OPIE_OBJ)
76
77 dnl
78 dnl Whether make sets $(MAKE)...
79 dnl
80 AC_PROG_MAKE_SET
81
82 dnl
83 dnl Find a good install
84 dnl
85 AC_PROG_INSTALL
86
87 dnl
88 dnl Find the compiler
89 dnl
90
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
94
95 AC_PROG_CC
96
97 dnl
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
101 dnl
102 if test -n "$auto_cflags"; then
103   if test -n "$GCC"; then
104     CFLAGS="$CFLAGS -O2 -Wall -Wno-implicit"
105   else
106     case "$host_os" in
107       *hpux*)  CFLAGS="$CFLAGS +O3"                      ;;
108       *ultrix* | *osf*) CFLAGS="$CFLAGS -O -Olimit 2000" ;;
109       *)       CFLAGS="$CFLAGS -O" ;;
110     esac
111   fi
112 fi
113
114 dnl
115 dnl Handle AIX
116 dnl
117 AC_AIX
118
119 dnl
120 dnl Configure our included libtool and make sure it's regenerated when needed
121 dnl
122 AC_PROG_LIBTOOL
123 AC_SUBST(LIBTOOL_DEPS)
124
125 dnl
126 dnl In case of {cyg,gnu}win32.  Should be a _target_ test.
127 dnl Might also be erelevant for DJGPP.
128 dnl
129 case "$host_os" in
130   *win32) exeext='.exe';;
131   *) exeext='';;
132 esac
133 AC_SUBST(exeext)
134
135 dnl
136 dnl Check if we can handle prototypes.
137 dnl
138 AM_C_PROTOTYPES
139
140 dnl
141 dnl Checks for typedefs, structures, and compiler characteristics.
142 dnl
143 AC_C_CONST
144 AC_C_INLINE
145 AC_TYPE_SIZE_T
146 AC_TYPE_PID_T
147 dnl #### This generates a warning.  What do I do to shut it up?
148 AC_C_BIGENDIAN
149
150 # Check size of long.
151 AC_CHECK_SIZEOF(long)
152 AC_CHECK_SIZEOF(long long)
153
154 dnl
155 dnl Checks for headers
156 dnl
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)
159 AC_HEADER_TIME
160
161 dnl
162 dnl Return type of signal-handlers
163 dnl
164 AC_TYPE_SIGNAL
165
166 dnl
167 dnl Check for struct utimbuf
168 WGET_STRUCT_UTIMBUF
169
170 dnl
171 dnl Checks for library functions.
172 dnl
173 AC_FUNC_ALLOCA
174 AC_FUNC_MMAP
175 AC_CHECK_FUNCS(strdup strstr strcasecmp strncasecmp strpbrk memmove)
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)
179
180 dnl
181 dnl Check if we need to compile in getopt.c.
182 dnl
183 AC_CHECK_FUNC(getopt_long, [], [
184   GETOPT_OBJ='getopt$o'
185 ])
186 AC_SUBST(GETOPT_OBJ)
187
188 dnl
189 dnl Checks for libraries.
190 dnl
191
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.
197
198 wget_check_in_nsl=NONE
199 AC_CHECK_FUNCS(gethostbyname, [], [
200   wget_check_in_nsl=gethostbyname
201 ])
202 AC_CHECK_FUNCS(inet_ntoa, [], [
203   wget_check_in_nsl=inet_ntoa
204 ])
205 if test $wget_check_in_nsl != NONE; then
206   AC_CHECK_LIB(nsl, $wget_check_in_nsl)
207 fi
208
209 AC_CHECK_LIB(socket, socket)
210
211 dnl #### This appears to be deficient with later versions of SOCKS.
212 if test "x${with_socks}" = xyes
213 then
214   AC_CHECK_LIB(resolv, main)
215   AC_CHECK_LIB(socks, Rconnect)
216 fi
217
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.
220
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
225     dnl stuff.
226     ssl_all_roots="default /usr/local/ssl /usr/local /opt"
227   else
228     dnl Root has been kindly provided by the user.
229     ssl_all_roots=$with_ssl
230   fi
231
232   wget_save_LIBS=$LIBS
233   wget_save_LDFLAGS=$LDFLAGS
234   wget_save_CC=$CC
235
236   dnl Use libtool for OpenSSL tests to handle the "-R<rpath>" option.
237   CC="$SHELL ./libtool $CC"
238
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
243   dnl shl_load().
244   AC_CHECK_LIB(dl,dlopen)
245   AC_CHECK_LIB(dl,shl_load)
246
247   ssl_linked=no
248
249   dnl Now try to find SSL libraries in each of the likely SSL roots.
250   for ssl_root in $ssl_all_roots
251   do
252     if test x"$ssl_root" = xdefault; then
253       dnl Try the default library locations.
254       SSL_INCLUDES=
255     else
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"
261     fi
262
263     ssl_link_failure=no
264
265     AC_MSG_RESULT(["Looking for SSL libraries in $ssl_root"])
266
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.
270
271     unset ac_cv_lib_crypto_RSA_new
272     unset ac_cv_lib_ssl_SSL_new
273
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.
277
278     AC_CHECK_LIB(crypto, RSA_new, , ssl_link_failure=yes)
279     AC_CHECK_LIB(ssl, SSL_new, , ssl_link_failure=yes)
280
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
286     dnl fail to run.
287
288     dnl If we are cross-compiling, just assume that working linkage
289     dnl implies working executable.
290
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")
294       AC_TRY_RUN([
295 int RSA_new();
296 int SSL_new();
297 main(){return 0;}
298 ],
299         AC_MSG_RESULT("yes"),
300         AC_MSG_RESULT("no"); ssl_link_failure=yes,
301         AC_MSG_RESULT("cross"))
302     fi
303
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
306       dnl instead.
307       AC_MSG_RESULT("Compiling in support for SSL in $ssl_root")
308       AC_DEFINE(HAVE_SSL)
309       AC_SUBST(SSL_INCLUDES)
310       SSL_OBJ='gen_sslfunc$o'
311       AC_SUBST(SSL_OBJ)
312       ssl_linked=yes
313       break
314     fi
315   done
316
317   if test x"$ssl_linked" = xno; then
318     LD_FLAGS=$wget_save_LDFLAGS
319     LIBS=$wget_save_LIBS
320
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
324     dnl SSL.
325
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.
330     echo
331     echo "WARNING: Failed to link with OpenSSL libraries in $ssl_root/lib."
332     echo "         Wget will be built without support for https://... URLs."
333     echo
334   fi
335
336   CC=$wget_save_CC
337 fi
338
339 dnl
340 dnl Find an md5 implementation.
341 dnl
342
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.
345
346 if test x$wget_need_md5 = xyes
347 then
348   MD5_OBJ='gen-md5$o'
349
350   found_md5=no
351
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)
356       LIBS="-lmd5 $LIBS"
357       found_md5=yes
358     ])
359   fi
360
361   dnl Then see if we're linking OpenSSL anyway; if yes, use its md5
362   dnl implementation.
363   if test x$found_md5 = xno; then
364     if test x$ssl_linked = xyes; then
365       AC_DEFINE(HAVE_OPENSSL_MD5)
366       found_md5=yes
367     fi
368   fi
369
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)
373     found_md5=yes
374     MD5_OBJ="$MD5_OBJ gnu-md5\$o"
375   fi
376 fi
377 AC_DEFINE(HAVE_MD5)
378 AC_SUBST(MD5_OBJ)
379
380 dnl
381 dnl Set of available languages.
382 dnl
383 ALL_LINGUAS=`(cd ${srcdir}/po && ls *.po | sed -e 's/\.po$//')`
384
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.
389
390 dnl internationalization macros
391 WGET_WITH_NLS
392
393 dnl
394 dnl Find makeinfo.  If makeinfo is not found, look for Emacs.  If
395 dnl Emacs cannot be found, look for XEmacs.
396 dnl
397
398 AC_CHECK_PROGS(MAKEINFO, makeinfo emacs xemacs)
399
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"            ;;
404 esac
405
406 dnl
407 dnl Find perl and pod2man
408 dnl
409
410 AC_PATH_PROGS(PERL, perl5 perl, no)
411 AC_PATH_PROG(POD2MAN, pod2man, no)
412
413 if test "x${POD2MAN}" = xno; then
414   COMMENT_IF_NO_POD2MAN="# "
415 else
416   COMMENT_IF_NO_POD2MAN=
417 fi
418 AC_SUBST(COMMENT_IF_NO_POD2MAN)
419
420 dnl
421 dnl Create output
422 dnl
423 AC_OUTPUT([Makefile src/Makefile doc/Makefile util/Makefile po/Makefile.in
424            windows/Makefile],
425 [WGET_PROCESS_PO
426 test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h])