# Libwww - the W3C Sample Code 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.

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 `wwwconf.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 maintain a set of Microsoft Visual C make files which can be used directly if you want to use this compiler. We do not support help on any type of Windows based compiler including msvc, so be warned!

- Libwww make file
- PICS Library make file
- Robot Makefile
- Command Line Tool 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. You can find some options determining how libwww is going to be compiled in the special windows config.h file.

### Zlib Support

If `HT_ZLIB` is defined in the windows config.h file then libwww can use the zlib library for handling the deflate content-encoding. This may cause better performance as we then can inflate a compressed document on the fly. A version of the precompiled zlib DLL for Win32 is already included in the w3c-libwww distribution file.

1. Define `HT_ZLIB` in windows config.h file
2. Copy `zlib.dll` into a location where Windows can find it, for example `.\Bin\Debug\`

### Regular Expressions

If `HT_POSIX_REGEX` is defined in the windows config.h file then libwww can use posix compliant regular expressions, for example to handle URI matching. This is for example used in the webbot which can handle regular expressions when matching which URIs to check. The library has been tested with the GNU regular expression library for Win32.

1. Define `HT_POSIX_REGEX` in windows config.h file
2. Copy `regex.h` into `.\Library\External` and name it `rxposix.h`
3. Add `gnu_regex.lib` to the robot project (or whatever application you are building)
4. Copy `gnu_regex.dll` into a location where Windows can find it, for example `.\Bin\Debug\`

### SQL Access

If `HT_MYSQL` is defined in the windows config.h file then libwww can use a MySQL database for handling logging instead of plain text files. This has a huge set of advantages.

### Detailed Installation

If you are interested in the details of how we build libwww on windows then please continue by reading the special documentation on how to install on Windows.

## Building on Unix

You probably need the GNU version of make in order to build libwww. The reason is that some of the make files contain some syntax that most other makefiles don't understand.

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 and Packages

There are a set of options you can give to configure in addition to those understood by all GNU Autoconf configure scripts:

`--disable-FEATURE`
  do not include FEATURE (same as `--enable-FEATURE=no`)
`--enable-FEATURE[=ARG]`
  include FEATURE [ARG=yes]
`--with-PACKAGE[=ARG]`
  use PACKAGE [ARG=yes]
`--without-PACKAGE`
  do not use PACKAGE (same as `--with-PACKAGE=no`)
`--x-includes=DIR`
  X include files are in DIR
`--x-libraries=DIR`
  X library files are in DIR

--enable and --with options recognized:

`--with-gnu-ld`
  assume the C compiler uses GNU ld [default=no]
`--enable-shared`
  build shared libraries [default=yes]
`--enable-static`
  3build static libraries [default=yes]
`--with-x`
  use the X Window System
`--with-wais[=PATH]`
  Compile with support for direct WAIS access.
`--with-mysql[=PATH]`
  Compile with support for MySQL logging, caching, etc.
`--with-zlib[=PATH]`
  Compile with zlib compress/decompress support.
`--with-regex[=PATH]`
  Compile with POSIX regex library support.
`--with-socks`
  Compile with SOCKS firewall traversal support.
`--with-socks5[=PATH]`
  Compile with SOCKS5 firewall traversal support.
`--with-socks4[=PATH]`
  Compile with SOCKS4 firewall traversal support.
`--enable-signals`
  use internal libwww signal handler.
`--disable-nagle`
  Turning off Nagle's algorithm.
`--disable-pipelining`
  Turning off HTTP/1.1 Pipelining.
`--enable-reentrant`
  define _REENTRANT to enable reentrant system calls
`--enable-posix`
  define _POSIX_SOURCE
`--enable-cyrillic`
  include support for Cyrillic in line mode browser

## 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`
  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.