]> sjero.net Git - wget/blobdiff - INSTALL
Minor doc updates.
[wget] / INSTALL
diff --git a/INSTALL b/INSTALL
index ef952c2d77d7a47bbe5e2986259b377bf0517f0c..581ec11ba1127a18ee3dc06c129048614d95c186 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,20 +1,74 @@
-                                                                   -*- text -*-
-                       Installation Procedure
-
-0) Preparation
-
-To build and install GNU Wget, you need to unpack the archive (which
-you have presumably done, since you are reading this), and read on.
-Like most GNU utilities, Wget uses the GNU Autoconf mechanism for
-build and installation; those of you familiar with compiling GNU
-software will feel at home.
-
-1) Configuration
-
-To configure Wget, run the configure script provided with the
-distribution.  It will create the Makefiles needed to start the
-compilation.  You may use the standard arguments Autoconf-created
-configure scripts take, the most important ones being:
+                                                            -*- text -*-
+                  GNU Wget Installation Procedure
+                   ===============================
+
+0. Introduction
+---------------
+
+This document describes how to build Wget from source code on
+Unix-like systems.  If you want to install a precompiled Wget, this
+document is not for you -- refer to the documentation provided by the
+distributors instead.  If you already have Wget and want to learn how
+to use it, refer to Wget's Info documentation or man page which you
+should have received with your system.  If you are using Windows
+(except for Cygwin), read windows/README instead.  If you want to
+compile Wget from source code on a Unix-like system, read on.
+
+The preferred form of building Wget is to get a release archive and
+unpack it (which you have presumably done, since you are reading
+this).  If you have obtained the source code via the Mercurial
+repository, please follow the instructions in `README.checkout' before
+continuing, as the sources from the Mercurial repository do not include
+some files that are present in official distributions; these additional
+files must be generated first.
+
+1. Dependencies
+---------------
+
+To build Wget, your system must support a Unix-like command-line
+development environment, including the text-processing utilities (sh,
+grep, awk, sed, etc.) and a functional C compiler.  On some GNU/Linux
+systems, this means that you will need to install packages such as
+`gcc', `glibc-devel' (or `libc6-dev') and `make'.  Most systems come
+with these packages preinstalled, but it doesn't hurt to check.  If
+you have successfully compiled other software from source, you
+probably have them all.
+
+In addition to the C development environment, Wget can use a number of
+optional libraries to provide additional features, such as translated
+messages and support for "https" URLs.  The "external" dependencies
+include:
+
+  - OpenSSL -- for "https" URLs.
+  - GNU gettext -- for translated messages.
+  - GNU libidn -- for IDN/IRI support.
+  - GNU libiconv -- for IDN/IRI support (not needed on GNU).
+
+To be usable for building Wget, the listed libraries must be installed
+with their "development" header files.  On GNU/Linux systems this
+typically means installing the corredponsing "lib<name>-devel" or
+"lib<name>-dev" package along with the package with "lib<name>".
+
+2. Configuration
+----------------
+
+Before compiling Wget, you need to "configure" it using the
+`configure' script provided with the distribution.  Configuration
+serves two distinct purposes: it enables Wget's build system to
+inspect certain features of your operating system for more robust
+compilation, and it enables you to choose which features you want the
+resulting Wget to have.
+
+As is the case with most GNU software, Wget's configure script was
+generated with GNU Autoconf.  If you're not familiar with
+Autoconf-generated scripts, read on.
+
+The most straightforward way to configure Wget is by running the
+configure script without any arguments.  After running some
+compilation-related tests, it will create the Makefiles needed to
+build Wget.  However, you may wish to customize Wget's configuration
+by providing arguments to `configure'.  Wget's configure script
+accepts standard Autoconf arguments, the most important ones being:
 
   --help                  display a help message and exit
 
@@ -24,12 +78,22 @@ configure scripts take, the most important ones being:
   --infodir=DIR           info documentation in DIR [PREFIX/info]
   --mandir=DIR            man documentation in DIR [PREFIX/man]
 
-  --build=BUILD           configure for building on BUILD [BUILD=HOST]
-  --host=HOST             configure for HOST [guessed]
-  --target=TARGET         configure for TARGET [TARGET=HOST]
+For example, if you are not root and want to install Wget in
+subdirectories of your home directory, you can use:
+
+    ./configure --prefix=$HOME
 
---enable and --with options recognized (mostly Wget-specific):
-  --with-ssl[=SSL_ROOT]   link with libssl [in SSL_ROOT/lib] for https: support
+In addition to the above generic options, Wget's configuration
+supports a number of options more or less specific to Wget.  Options
+beginning with "--disable", such as `--disable-opie' or
+`--disable-ntlm', allow you to turn off certain built-in functionality
+you don't need in order to reduce the size of the executable.  Options
+beginning with "--with" turning off autodetection and use of external
+software Wget can link with, such as the SSL libraries.  Recognized
+"--enable" and "--with" options include:
+
+  --without-ssl           disable SSL autodetection (used for https support)
+  --with-libssl-prefix=DIR search for libssl in DIR/lib
   --disable-opie          disable support for opie or s/key FTP login
   --disable-digest        disable support for HTTP digest authorization
   --disable-ntlm          disable support for HTTP NTLM authorization
@@ -37,62 +101,76 @@ configure scripts take, the most important ones being:
   --disable-nls           do not use Native Language Support
   --disable-largefile     omit support for large files
   --disable-ipv6          disable IPv6 support
+  --disable-rpath         do not hardcode runtime library paths
+  --disable-iri           disable IDN/IRIs support
 
-If you want to configure Wget for installation in your home directory,
-you can type:
+For the full list, see the output of `./configure --help'.
 
-    ./configure --prefix=$HOME
-
-You can customize many settings simply by editing the Makefiles and
-`src/config.h'.  The defaults should work without intervention, but it
-is useful to have a look at things you can change there.
+You can inspect decisions made by configure by editing the generated
+Makefiles and the `src/config.h' include file.  The defaults should
+work without intervention, but if you know what you are doing, editing
+the generated files before compilation is fine -- they will not be
+regenerated until you run configure again.
 
-configure will try to find a compiler in your PATH, defaulting to
+`configure' will try to find a compiler in your PATH, defaulting to
 `gcc', but falling back to `cc' if the former is unavailable.  This is
 a reasonable default on most Unix-like systems, but sometimes you
-might want to override it.  The compiler choice is overridden with the
-value of the `CC' environment variable.  For example, to force
-compilation with the Unix `cc' compiler, invoke configure like this:
+might want to override it.  The compiler choice is overridden by
+setting the `CC' environment variable to the desired compiler file
+name.  For example, to force compilation with the Unix `cc' compiler,
+invoke configure like this:
 
     ./configure CC=cc
 
-This assumes that `cc' is in your path -- if it is not, simply replace
-"cc" with "/path/to/cc".  Note that environment variables that affect
-configure can be set with the usual shell syntax `var=value
-./configure' (assuming an sh-compatible shell).  In addition to that,
-configure allows environment variables to be specified as arguments in
-the form "var=value", which are shell-independent.
-
-Environment variables that affect `configure' include: CFLAGS for
-compilation flags, LDFLAGS for linker flags, and CPPFLAGS for
-preprocessor flags.
-
-If you have OpenSSL libraries installed at one of the default
-locations, such as the system library directories or /usr/local/lib or
-/usr/local/ssl/lib, configure will autodetect them.  If they are
-installed elsewhere, you need to specify the OpenSSL root directory.
-For instance, if libcrypto.* and libssl.* are in /opt/openssl/lib, you
-need to `configure --with-ssl=/opt/openssl'.
-
-To configure Wget on Windows, read the instructions in
-`windows/README'.  If this doesn't work for any reason, talk to the
-Windows developers listed there; I do not maintain the port.  Those
-instructions do not apply to the "Cygwin" environment, where Wget
-should build out of the box as described here.
-
-2) Compilation
+This assumes that `cc' is in your path -- if it is not, simply use
+CC=/path/to/cc instead.  Note that environment variables that affect
+configure can be set with the usual shell syntax `VAR=value ./configure'
+(assuming sh syntax), but can also be specified as arguments to
+configure, as shown above.  The latter method, while being specific to
+configure, works unmodified in all shells, and in addition allows
+configure to detect when that setting has been changed across
+invocations.
+
+Environment variables that affect `configure' include: CFLAGS for C
+compiler flags, CPPFLAGS for C preprocessor flags, LDFLAGS for linker
+flags, and LIBS for libraries.
+
+Barring the use of --without-* flags, configure will try to autodetect
+external libraries needed by Wget, currently only the OpenSSL
+libraries.  If they are installed in the system library directories or
+in the same prefix where you plan to install Wget, configure should be
+able to autodetect them.  If they are installed elsewhere, use the
+`--with-libNAME' option to specify the root directory under which
+libraries reside in the `lib/' subdirectory and the corresponding
+header files reside in the `include/' subdirectory.  For example, if
+the OpenSSL libraries are installed under the /usr/local/ssl prefix,
+use `--with-libssl=/usr/local/ssl'.
+
+Sometimes external libraries will be installed on the system, but the
+header files will be missing.  This often happens on GNU/Linux if you
+forget to install the "-devel" or "-dev" package that corresponds to
+the library and that is typically *not* installed by default.  In that
+case configure will not find the library and you will not be able to
+use the features provided by the library until you install the devel
+package and rerun configure.  If you believe you have the necessary
+headers, but configure still fails to detect the library, please
+report it as a bug.
+
+3. Compilation
+--------------
 
 To compile GNU Wget after it has been configured, simply type make.
-If you do not have an ISO C (C89) compiler, Wget will try to K&R-ize
-its sources on the fly.  This should make GNU Wget compilable on
-almost any Unix-like system you are likely to encounter.
+Wget requires a compiler and standard library compliant with the 1990
+ISO C standard, which includes the vast majority of compilation
+environments present on systems in use today.
 
 After the compilation a ready-to-use `wget' executable should reside
 in the src directory.  At this point there is no formal test suite for
 testing the binary, but it should be easy enough to test whether the
 basic functionality works.
 
-3) Installation
+4. Installation
+---------------
 
 Use `make install' to install GNU Wget to directories specified to
 configure.  To install it in a system directory (which is the