1dnl Template file for GNU Autoconf 2dnl Copyright (C) 1995, 1996, 1997, 2001, 2007, 2008, 2009 Free Software 3dnl Foundation, Inc. 4 5dnl This program is free software; you can redistribute it and/or modify 6dnl it under the terms of the GNU General Public License as published by 7dnl the Free Software Foundation; either version 3 of the License, or 8dnl (at your option) any later version. 9 10dnl This program is distributed in the hope that it will be useful, 11dnl but WITHOUT ANY WARRANTY; without even the implied warranty of 12dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13dnl GNU General Public License for more details. 14 15dnl You should have received a copy of the GNU General Public License 16dnl along with this program. If not, see <http://www.gnu.org/licenses/>. 17 18dnl Additional permission under GNU GPL version 3 section 7 19 20dnl If you modify this program, or any covered work, by linking or 21dnl combining it with the OpenSSL project's OpenSSL library (or a 22dnl modified version of that library), containing parts covered by the 23dnl terms of the OpenSSL or SSLeay licenses, the Free Software Foundation 24dnl grants you additional permission to convey the resulting work. 25dnl Corresponding Source for a non-source form of such a combination 26dnl shall include the source code for the parts of OpenSSL used as well 27dnl as that of the covered work. 28 29dnl 30dnl Process this file with autoconf to produce a configure script. 31dnl 32 33AC_INIT([wget], 34 [1.12], 35 [bug-wget@gnu.org]) 36AC_PREREQ(2.61) 37 38dnl 39dnl What version of Wget are we building? 40dnl 41AC_MSG_NOTICE([configuring for GNU Wget $PACKAGE_VERSION]) 42 43AC_CONFIG_MACRO_DIR([m4]) 44AC_CONFIG_AUX_DIR([build-aux]) 45 46dnl 47dnl Automake setup 48dnl 49AM_INIT_AUTOMAKE(dist-bzip2 dist-lzma 1.9) 50 51dnl 52dnl Get cannonical host 53dnl 54AC_CANONICAL_HOST 55AC_DEFINE_UNQUOTED([OS_TYPE], "$host_os", 56 [Define to be the name of the operating system.]) 57 58dnl 59dnl Process features. 60dnl 61 62AC_ARG_WITH(ssl, 63[[ --without-ssl disable SSL autodetection]]) 64 65AC_ARG_ENABLE(opie, 66[ --disable-opie disable support for opie or s/key FTP login], 67ENABLE_OPIE=$enableval, ENABLE_OPIE=yes) 68test x"${ENABLE_OPIE}" = xyes && AC_DEFINE([ENABLE_OPIE], 1, 69 [Define if you want the Opie support for FTP compiled in.]) 70 71AC_ARG_ENABLE(digest, 72[ --disable-digest disable support for HTTP digest authorization], 73ENABLE_DIGEST=$enableval, ENABLE_DIGEST=yes) 74test x"${ENABLE_DIGEST}" = xyes && AC_DEFINE([ENABLE_DIGEST], 1, 75 [Define if you want the HTTP Digest Authorization compiled in.]) 76 77AC_ARG_ENABLE(ntlm, 78[ --disable-ntlm disable support for NTLM authorization], 79[ENABLE_NTLM=$enableval], [ENABLE_NTLM=auto]) 80 81AC_ARG_ENABLE(debug, 82[ --disable-debug disable support for debugging output], 83ENABLE_DEBUG=$enableval, ENABLE_DEBUG=yes) 84test x"${ENABLE_DEBUG}" = xyes && AC_DEFINE([ENABLE_DEBUG], 1, 85 [Define if you want the debug output support compiled in.]) 86 87wget_need_md5=no 88 89case "${ENABLE_OPIE}${ENABLE_DIGEST}" in 90*yes*) 91 wget_need_md5=yes 92esac 93 94dnl 95dnl Find the compiler 96dnl 97 98dnl We want these before the checks, so the checks can modify their values. 99test -z "$CFLAGS" && CFLAGS= auto_cflags=1 100test -z "$CC" && cc_specified=yes 101 102AC_PROG_CC 103AM_PROG_CC_C_O 104AC_AIX 105 106gl_EARLY 107md5_EARLY 108 109dnl 110dnl Gettext 111dnl 112AM_GNU_GETTEXT([external],[need-ngettext]) 113AM_GNU_GETTEXT_VERSION([0.17]) 114 115AC_PROG_RANLIB 116 117AC_PROG_LEX 118 119dnl Turn on optimization by default. Specifically: 120dnl 121dnl if the user hasn't specified CFLAGS, then 122dnl if compiler is gcc, then 123dnl use -O2 and some warning flags 124dnl else 125dnl use os-specific flags or -O 126if test -n "$auto_cflags"; then 127 if test -n "$GCC"; then 128 CFLAGS="$CFLAGS -O2 -Wall" 129 else 130 case "$host_os" in 131 *hpux*) CFLAGS="$CFLAGS +O3" ;; 132 *ultrix* | *osf*) CFLAGS="$CFLAGS -O -Olimit 2000" ;; 133 *) CFLAGS="$CFLAGS -O" ;; 134 esac 135 fi 136fi 137 138dnl 139dnl Checks for basic compiler characteristics. 140dnl 141AC_C_CONST 142AC_C_INLINE 143AC_C_VOLATILE 144 145dnl Check for basic headers, even though we expect them to exist and 146dnl #include them unconditionally in the code. Their detection is 147dnl still needed because test programs used by Autoconf macros check 148dnl for STDC_HEADERS, HAVE_SYS_TYPES_H, etc. before using them. 149dnl Without the checks they will fail to be included in test programs, 150dnl which will subsequently fail. 151AC_HEADER_STDC 152 153dnl Check for large file support. This check needs to come fairly 154dnl early because it could (in principle) affect whether functions and 155dnl headers are available, whether they work, etc. 156AC_SYS_LARGEFILE 157AC_CHECK_SIZEOF(off_t) 158 159dnl 160dnl Checks for system header files that might be missing. 161dnl 162AC_HEADER_STDBOOL 163AC_CHECK_HEADERS(unistd.h sys/time.h) 164AC_CHECK_HEADERS(termios.h sys/ioctl.h sys/select.h utime.h sys/utime.h) 165AC_CHECK_HEADERS(stdint.h inttypes.h pwd.h wchar.h) 166 167AC_CHECK_DECLS(h_errno,,,[#include <netdb.h>]) 168 169dnl 170dnl Check sizes of integer types. These are used to find n-bit 171dnl integral types on older systems that fail to provide intN_t and 172dnl uintN_t typedefs. 173dnl 174AC_CHECK_SIZEOF(short) 175AC_CHECK_SIZEOF(int) 176AC_CHECK_SIZEOF(long) 177AC_CHECK_SIZEOF(long long) 178AC_CHECK_SIZEOF(void *) 179 180dnl 181dnl Checks for non-universal or system-specific types. 182dnl 183AC_TYPE_SIZE_T 184AC_TYPE_PID_T 185AC_CHECK_TYPES([uint32_t, uintptr_t, intptr_t, int64_t]) 186AC_CHECK_TYPES(sig_atomic_t, [], [], [ 187#include <stdio.h> 188#include <sys/types.h> 189#if HAVE_INTTYPES_H 190# include <inttypes.h> 191#endif 192#include <signal.h> 193]) 194 195# gnulib 196gl_INIT 197 198dnl 199dnl Checks for library functions. 200dnl 201AC_FUNC_MMAP 202AC_FUNC_FSEEKO 203AC_CHECK_FUNCS(strptime timegm snprintf vsnprintf vasprintf drand48) 204AC_CHECK_FUNCS(strtoll usleep ftello sigblock sigsetjmp memrchr wcwidth mbtowc) 205 206if test x"$ENABLE_OPIE" = xyes; then 207 AC_LIBOBJ([ftp-opie]) 208fi 209 210dnl We expect to have these functions on Unix-like systems configure 211dnl runs on. The defines are provided to get them in config.h.in so 212dnl Wget can still be ported to non-Unix systems (such as Windows) 213dnl that lack some of these functions. 214AC_DEFINE([HAVE_STRCASECMP], 1, [Define to 1 if you have the `strcasecmp' function.]) 215AC_DEFINE([HAVE_STRNCASECMP], 1, [Define to 1 if you have the `strncasecmp' function.]) 216AC_DEFINE([HAVE_STRDUP], 1, [Define to 1 if you have the `strdup' function.]) 217AC_DEFINE([HAVE_ISATTY], 1, [Define to 1 if you have the `isatty' function.]) 218AC_DEFINE([HAVE_SYMLINK], 1, [Define to 1 if you have the `symlink' function.]) 219 220dnl 221dnl Call Wget-specific macros defined in aclocal. 222dnl 223WGET_STRUCT_UTIMBUF 224WGET_SOCKLEN_T 225WGET_FNMATCH 226WGET_NANOSLEEP 227WGET_POSIX_CLOCK 228WGET_NSL_SOCKET 229 230dnl 231dnl Checks for libraries. 232dnl 233 234AS_IF([test x"$with_ssl" = xgnutls], [ 235 dnl Now actually check for -lssl 236 AC_LIB_HAVE_LINKFLAGS([gnutls], [], [ 237#include <gnutls/gnutls.h> 238 ], [gnutls_global_init()]) 239 if test x"$LIBGNUTLS" != x 240 then 241 AC_MSG_NOTICE([compiling in support for SSL via GnuTLS]) 242 AC_LIBOBJ([gnutls]) 243 else 244 AC_MSG_ERROR([--with-ssl=gnutls was given, but GNUTLS is not available.]) 245 fi 246], [ 247 # --with-ssl is not gnutls: check if it's no 248 AS_IF([test x"$with_ssl" != xno], [ 249 dnl As of this writing (OpenSSL 0.9.6), the libcrypto shared library 250 dnl doesn't record its dependency on libdl, so we need to make sure 251 dnl -ldl ends up in LIBS on systems that have it. Most OSes use 252 dnl dlopen(), but HP-UX uses shl_load(). 253 AC_CHECK_LIB(dl, dlopen, [], [ 254 AC_CHECK_LIB(dl, shl_load) 255 ]) 256 257 dnl Now actually check for -lssl 258 AC_LIB_HAVE_LINKFLAGS([ssl], [crypto], [ 259 #include <openssl/ssl.h> 260 #include <openssl/x509.h> 261 #include <openssl/err.h> 262 #include <openssl/rand.h> 263 #include <openssl/des.h> 264 #include <openssl/md4.h> 265 #include <openssl/md5.h> 266 ], [SSL_library_init ()]) 267 if test x"$LIBSSL" != x 268 then 269 AC_MSG_NOTICE([compiling in support for SSL via OpenSSL]) 270 AC_LIBOBJ([openssl]) 271 elif test x"$with_ssl" != x 272 then 273 AC_MSG_ERROR([--with-ssl was given, but SSL is not available.]) 274 fi 275 ]) # endif: --with-ssl == no? 276]) # endif: --with-ssl == gnutls? 277 278 279dnl Enable NTLM if requested and if SSL is available. 280if test x"$LIBSSL" != x 281then 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 AC_LIBOBJ([http-ntlm]) 287 fi 288else 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 295fi 296 297dnl 298dnl Find an MD5 implementation. Since Wget rarely needs MD5, we try 299dnl to use an existing library implementation to save on code size. 300dnl 301 302if test x"$wget_need_md5" = xyes 303then 304 dnl This should be moved to an AC_DEFUN, but I'm not sure how to 305 dnl manipulate MD5_OBJ from the defun. 306 307 AC_LIBOBJ([gen-md5]) 308 found_md5=no 309 310 dnl Check for the system MD5 library on Solaris. We don't check for 311 dnl something simple like "MD5Update" because there are a number of 312 dnl MD5 implementations that use that name, but have an otherwise 313 dnl incompatible interface. md5_calc is, hopefully, specific to the 314 dnl Solaris MD5 library. 315 if test x"$found_md5" = xno; then 316 AC_CHECK_LIB(md5, md5_calc, [ 317 dnl Some installations have bogus <md5.h> in the compiler's 318 dnl include path, making the system md5 library useless. 319 AC_MSG_CHECKING([for working md5.h]) 320 AC_COMPILE_IFELSE([#include <md5.h> 321 ], [ 322 AC_MSG_RESULT(yes) 323 AC_DEFINE([HAVE_SOLARIS_MD5], 1, [Define when using Solaris MD5.]) 324 LIBS="-lmd5 $LIBS" 325 found_md5=yes 326 AC_MSG_NOTICE([using the Solaris MD5 implementation]) 327 ], [AC_MSG_RESULT(no)]) 328 ]) 329 fi 330 331 dnl Then see if we're linking OpenSSL anyway; if yes, use its md5 332 dnl implementation. 333 if test x"$found_md5" = xno; then 334 if test x"$LIBSSL" != x; then 335 AC_DEFINE([HAVE_OPENSSL_MD5], 1, [Define when using OpenSSL MD5.]) 336 found_md5=yes 337 AC_MSG_NOTICE([using the OpenSSL MD5 implementation]) 338 fi 339 fi 340 341 dnl If none of the above worked, use the one we ship with Wget. 342 if test x"$found_md5" = xno; then 343 AC_DEFINE([HAVE_BUILTIN_MD5], 1, [Define when using built-in MD5.]) 344 found_md5=yes 345 AC_MSG_NOTICE([using the built-in (GNU) MD5 implementation]) 346 AC_C_BIGENDIAN 347 348 AC_SUBST(MD5_CPPFLAGS, '-I $(top_srcdir)/md5') 349 AC_SUBST(MD5_LDADD, '../md5/libmd5.a') 350 AC_SUBST(MD5_SUBDIR, md5) 351 md5_INIT 352 fi 353 AC_DEFINE([HAVE_MD5], 1, [Define if we're compiling support for MD5.]) 354fi 355 356dnl ********************************************************************** 357dnl Checks for IPv6 358dnl ********************************************************************** 359 360dnl 361dnl We test for IPv6 by checking, in turn, for availability of 362dnl getaddrinfo, presence of the INET6 address/protocol family, and 363dnl the existence of struct sockaddr_in6. If any of them is missing, 364dnl IPv6 is disabled, and the code reverts to old-style gethostbyname. 365dnl 366dnl If --enable-ipv6 is explicitly specified on the configure command 367dnl line, we check for IPv6 and abort if not found. If --disable-ipv6 368dnl is specified, we disable IPv6 and don't check for it. The default 369dnl is to autodetect IPv6 and use it where available. 370dnl 371 372AC_ARG_ENABLE(ipv6, 373 AC_HELP_STRING([--disable-ipv6],[disable IPv6 support]), 374 [case "${enable_ipv6}" in 375 no) 376 AC_MSG_NOTICE([disabling IPv6 at user request]) 377 dnl Disable IPv6 checking 378 ipv6=no 379 ;; 380 yes) 381 dnl IPv6 explicitly enabled: force its use (abort if unavailable). 382 ipv6=yes 383 force_ipv6=yes 384 ;; 385 auto) 386 dnl Auto-detect IPv6, i.e. check for IPv6, but don't force it. 387 ipv6=yes 388 ;; 389 *) 390 AC_MSG_ERROR([Invalid --enable-ipv6 argument \`$enable_ipv6']) 391 ;; 392 esac 393 ], [ 394 dnl If nothing is specified, assume auto-detection. 395 ipv6=yes 396 ] 397) 398 399if test "X$ipv6" = "Xyes"; then 400 AC_CHECK_FUNCS(getaddrinfo, [], [ 401 AC_MSG_NOTICE([Disabling IPv6 support: your system does not support getaddrinfo(3)]) 402 ipv6=no 403 ]) 404fi 405 406if test "X$ipv6" = "Xyes"; then 407 PROTO_INET6([], [ 408 AC_MSG_NOTICE([Disabling IPv6 support: your system does not support the PF_INET6 protocol family]) 409 ipv6=no 410 ]) 411fi 412 413if test "X$ipv6" = "Xyes"; then 414 TYPE_STRUCT_SOCKADDR_IN6([],[ 415 AC_MSG_NOTICE([Disabling IPv6 support: your system does not support \`struct sockaddr_in6']) 416 ipv6=no 417 ]) 418 if test "X$ipv6" = "Xyes"; then 419 WGET_STRUCT_SOCKADDR_STORAGE 420 MEMBER_SIN6_SCOPE_ID 421 fi 422fi 423 424if test "X$ipv6" = "Xyes"; then 425 AC_DEFINE([ENABLE_IPV6], 1, [Define if IPv6 support is enabled.]) 426 AC_MSG_NOTICE([Enabling support for IPv6.]) 427elif test "x$force_ipv6" = "xyes"; then 428 AC_MSG_ERROR([IPv6 support requested but not found; aborting]) 429fi 430 431 432dnl 433dnl Set of available languages. 434dnl 435dnl Originally this used to be static, looking like this: 436dnl ALL_LINGUAS="cs de hr it ..." 437dnl The downside was that configure needed to be rebuilt whenever a 438dnl new language was added. 439dnl 440ALL_LINGUAS="en@quot en@boldquot en_US $(cd ${srcdir}/po && ls *.po | grep -v 'en@.*quot' | grep -v 'en_US\.po' | sed -e 's/\.po$//' | tr '\012' ' ')" 441 442dnl 443dnl Find makeinfo. We used to provide support for Emacs processing 444dnl Texinfo using `emacs -batch -eval ...' where makeinfo is 445dnl unavailable, but that broke with the addition of makeinfo-specific 446dnl command-line options, such as `-I'. Now we depend on makeinfo to 447dnl build the Info documentation. 448dnl 449 450AC_CHECK_PROGS(MAKEINFO, [makeinfo], [true]) 451 452dnl 453dnl Find perl and pod2man 454dnl 455 456AC_PATH_PROGS(PERL, [perl5 perl], no) 457AC_PATH_PROG(POD2MAN, pod2man, no) 458 459if test "x${POD2MAN}" = xno; then 460 COMMENT_IF_NO_POD2MAN="# " 461else 462 COMMENT_IF_NO_POD2MAN= 463fi 464AC_SUBST(COMMENT_IF_NO_POD2MAN) 465 466 467dnl 468dnl Check for IDN/IRIs 469dnl 470 471AC_ARG_ENABLE(iri, 472 AC_HELP_STRING([--disable-iri],[disable IDN/IRIs support]), 473 [case "${enable_iri}" in 474 no) 475 dnl Disable IRIs checking 476 AC_MSG_NOTICE([disabling IRIs at user request]) 477 iri=no 478 ;; 479 yes) 480 dnl IRIs explicitly enabled 481 iri=yes 482 force_iri=yes 483 ;; 484 auto) 485 dnl Auto-detect IRI 486 iri=yes 487 ;; 488 *) 489 AC_MSG_ERROR([Invalid --enable-iri argument \`$enable_iri']) 490 ;; 491 esac 492 ], [ 493 dnl If nothing is specified, assume auto-detection 494 iri=yes 495 ] 496) 497 498AC_ARG_WITH(libidn, AC_HELP_STRING([--with-libidn=[DIR]], 499 [Support IDN/IRIs (needs GNU Libidn)]), 500 libidn=$withval, libidn="") 501AS_IF([test "X$iri" != "Xno"],[ 502 AM_ICONV 503 504 if test "X$am_cv_func_iconv" != "Xyes"; then 505 iri=no 506 if test "X$force_iri" = "Xyes"; then 507 AC_MSG_ERROR([Libiconv is required for IRIs support]) 508 else 509 AC_MSG_NOTICE([disabling IRIs because libiconv wasn't found]) 510 fi 511 fi 512],[ # else 513 # For some reason, this seems to be set even when we don't check. 514 # Explicitly unset. 515 LIBICONV= 516]) 517 518if test "X$iri" != "Xno"; then 519 if test "$libidn" != ""; then 520 LDFLAGS="${LDFLAGS} -L$libidn/lib" 521 CPPFLAGS="${CPPFLAGS} -I$libidn/include" 522 fi 523 524 # If idna.h can't be found, check to see if it was installed under 525 # /usr/include/idn (OpenSolaris, at least, places it there). 526 # Check for idn-int.h in that case, because idna.h won't find 527 # idn-int.h until we've decided to add -I/usr/include/idn. 528 AC_CHECK_HEADER(idna.h, , 529 [AC_CHECK_HEADER(idn/idn-int.h, 530 [CPPFLAGS="${CPPFLAGS} -I/usr/include/idn"], 531 [iri=no])] 532 ) 533 534 if test "X$iri" != "Xno"; then 535 AC_CHECK_LIB(idn, stringprep_check_version, 536 [iri=yes LIBS="${LIBS} -lidn"], iri=no) 537 fi 538 539 if test "X$iri" != "Xno" ; then 540 AC_DEFINE([ENABLE_IRI], 1, [Define if IRI support is enabled.]) 541 AC_MSG_NOTICE([Enabling support for IRI.]) 542 else 543 AC_MSG_WARN([Libidn not found]) 544 fi 545fi 546 547 548dnl Needed by src/Makefile.am 549AM_CONDITIONAL([IRI_IS_ENABLED], [test "X$iri" != "Xno"]) 550 551 552dnl 553dnl Create output 554dnl 555AC_CONFIG_FILES([Makefile src/Makefile doc/Makefile util/Makefile 556 po/Makefile.in tests/Makefile tests/WgetTest.pm 557 lib/Makefile md5/Makefile windows/Makefile]) 558AC_CONFIG_HEADERS([src/config.h]) 559AC_OUTPUT 560