(c) COPYRIGHT MIT 1995-2003. Please first read the full copyright statement in the file COPYRIGH.
First, if you got libwww directly from CVS then you must bootstrap the code before compiling. If you have already done that or if you started from a distribution file then you can continue installation here:
Note that you can also use the Cygwin environment which is a Win32 port of the popular GNU development tools for Windows NT, 95, and 98 which allows us to use autoconf, automake, and libtool.
Vladimir Kozlov provides fresh binaries for wintel and MSVC makefiles are part of the distribution package.
You can also get the latest MSVC makefiles (PGP signature) which are in sync with the current CVS source tree (not the distribution package!). The makesfiles are not in CVS themselves as they constantly cause CVS conflicts. Unzip them on top (directly in the libwww folder) of your checked out CVS tree and repeat the bootstrap mechanism.
Regardless of whether you are using the CVS tree directly or got the distribution package, you can compile by opening the libwww/windows/world.dsw workspace and do a batch build of the whole thing.
You can configure libwww in windows config.h and if you are interested in the details of how we build libwww on Windows then please read the documentation on how to install on Windows. Libwww can work with several external software packages of which some you get by default. Here is the current list:
HT_DAV is defined in the windows config.h file then libwww can
use the WebDAV familiy of protocols for
collaborative work on the web. davsample is a sample C program
showing how to use the DAV module.
HT_DAVin windows config.h file
HT_EXPAT is defined in the windows config.h file then libwww can
use the expat library
for parsing XML files. In particular, this is necessary for using the XML.
RDF and DAV libwww modules. A version of the precompiled expat DLLs for Win32 is already
included in the w3c-libwww distribution file.
HT_EXPATin windows config.h file
xmltok.dllinto a location where Windows can find it, for example
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.
HT_ZLIBin windows config.h file
zlib.dllinto a location where Windows can find it, for example
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.
HT_POSIX_REGEXin windows config.h file
.\Library\Externaland name it
gnu_regex.libto the robot project (or whatever application you are building)
gnu_regex.dllinto a location where Windows can find it, for example
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.
If either SOCKS and either SOCKS4 or SOCKS5 is defined in the windows config.h file then libwww can use SOCKS to go through firewalls. The SOCKS handling code in libwww can be found in wwwsys.h.
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. These installation instructions are based on the suggested instructions provided with GNU Autoconf.
The Cygwin environment is a Win32 port of the popular GNU development tools for Windows NT, 95, and 98. They function through the use of the Cygwin library which provides a UNIX-like API on top of the Win32 API.
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).
The simplest way to compile this package on a Unix platform is:
./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.
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
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 `
configure automatically checks for source code in the directory that
configure is in and in `..' as well.
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
There are a set of options you can give to configure in addition to those understood by all GNU Autoconf configure scripts. This is how you can enable, disable, include, or exclude them:
Solaris 2.5.x has serious problems handling shared libraries
(the linker dumps core) and therefore you MUST use the
--disable-shared when compiling on this platform.
Libwww uses GNU
Libtool to build shared libraries on a variety of systems. While this is
very nice for making usable binaries, it can be a pain when trying to debug a
program. For that reason, compilation of shared libraries can be turned off
by specifying the
--disable-shared option to
These provide very useful added functionality in the libwww and the libwww applications
httpsURI access scheme. This requires the OpenSSL library, for example.
These are less used packages (or less tested packages, I should say)
Normally, you don't have to change the default settings here
_REENTRANTto enable reentrant system calls. Off by default
As libwww doesn't use X, this is not really used.
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:
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.
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.
configure recognizes the following options to control how it operates.
configure also accepts some other, not widely useful, options.