# W3C Reference Library Installation

    	(c) COPYRIGHT MIT 1995.
    	Please first read the full copyright statement in the file COPYRIGH.

These installation instructions are based on the suggested instructions provided with GNU Autoconf 2.0.

The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' and a `config.h' file containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, a file `config.cache' that saves the results of its tests to speed up reconfiguring, and a file `config.log' containing compiler output (useful mainly for debugging `configure').

## Building on Windows

Building on Windows is somewhat different than building on Unix. We therefore have a separate set of directions for doing this. We do maintain a set of Microsoft Visual C make files which can be used directly. If you do not use this compiler then please read the instructions on how you can move this to other compilers.

- Library make file
- PICS Library make file
- Robot Makefile
- Line Mode Browser Makefile

Stop here and jump to the Known Bugs and Patches page to see if you need to apply any patches before you compile. Please continue by reading the special documentation on how to install on Windows.

## Building on Unix

The simplest way to compile this package on a Unix platform is:

1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes awhile. While running, it prints some messages telling which features for which it is checking.
2. Stop here and jump to the Known Bugs and Patches page to see if you need to apply any patches before you compile.
3. Type `make' to compile the package.
4. Type `make install' to install the library.
5. You can remove the library and object files from the source directory by typing `make clean.' To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean.'

## Compilers and Options

Some systems require unusual options for compilation or linking that the `configure' script does not know about. You can give `configure' initial values for variables by setting them in the environment. Using a Bourne-compatible shell, you can do that on the command line like this:

         CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure

Or on systems that have the `env' program, you can do it like this:

         env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure

## Using a Different Build Directory

You can compile the package in a directory different from the one containing the source code. Doing so allows you to compile it on more than one kind of computer at the same time. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make.' `cd' to the directory where you want to object files and library to go and run the `configure' script (i.e., go `../src/configure'). `configure' automatically checks for source code in the directory that `configure' is in and in `..' as well.

## Installation Names

By default, `make install' will install the library in `/usr/local/lib.' You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PATH.' You can cause the library to be installed with an extra prefix or suffix on its name by giving `configure' the options `--program-prefix=PREFIX' or `--program-suffix=SUFFIX.'

## Optional Features

There are four options you can give to `configure' in addition to those understood by all GNU Autoconf `configure' scripts:

--enable-posix
  This enables the `_POSIX_SOURCE` define which guarantees that the code only contains strictly POSIX compliant features.
--enable-reentrant
  If you are building a thread safe applications, you need to use the reentrant versions of the system calls where the caller provides a buffer instead of using a static memory buffer which gets overridden on every call. Please note that libwww isn't thread safe throughout the code as not all functions are reentrant.
--with-wais
  This option causes the library to be built to directly use WAIS access, if the `configure' script can find the WAIS distribution nearby. `Nearby' means that `configure' will look for a directory with `wais' in its name (case is not significant) either one, two, or three directories above the source directory.
--with-socks
  This option causes the library to be build to use the SOCKS firewall-crossing code, if the `configure' script can find the SOCKS distribution nearby. `Nearby' means the same as it did above, but with `socks' in the directory name instead.

## Specifying the System Type

There may be some features `configure' can not figure out automatically, but needs to determine by the type of host the package will run on. Usually `configure' can figure that out, but if it prints a message saying it can not guess the host type, give it the `--host=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name with three fields:

         CPU-COMPANY-SYSTEM

See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the host type.

If you are building compiler tools for cross-compiling, you can also use the `--target=TYPE' option to select the type of system they will produce code for and the `--build=TYPE' option to select the type of system on which you are compiling the package.

## Sharing Defaults

If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script.

## Operation Controls

`configure' recognizes the following options to control how it operates.

--cache-file=FILE
  Save the results of the tests in FILE instead of `config.cache'. Set FILE to `/dev/null' to disable caching, for debugging `configure'.
--help
  Print a summary of the options to `configure', and exit.
--quiet
--silent
-q
  Do not print messages saying which checks are being made.
--srcdir=DIR
  Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically.
--version
  Print the version of Autoconf used to generate the `configure' script, and exit.
`configure' also accepts some other, not widely useful, options.