                                  _   _ ____  _     
                              ___| | | |  _ \| |    
                             / __| | | | |_) | |    
                            | (__| |_| |  _ <| |___ 
                             \___|\___/|_| \_\_____|

CVS-INFO

This file is only present in the CVS - never in release archives. It contains
information about other files and things that the CVS repository keeps in its
inner sanctum.

Compile and build instructions follow below.

  CHANGES.0     contains ancient changes.
  CHANGES.$year contains changes for the particular year.

  tests/memanalyze.pl
                is for analyzing the output generated by curl if -DMALLOCDEBUG
                is used when compiling

  buildconf     builds the makefiles and configure stuff

  Makefile.dist is included as the root Makefile in distribution archives

  perl/         is a subdirectory with various perl scripts

To build after having extracted everything from CVS, do this:

./buildconf
./configure
make

  Daniel uses a ./configure line similar to this for easier development:

  ./configure --disable-shared --enable-debug --enable-maintainer-mode


REQUIREMENTS

 You need the following software installed:

 o autoconf 2.50 (or later)
 o automake 1.5 (or later)
 o libtool  1.4 (or later)
 o GNU m4 (required by autoconf)

 o nroff + perl

   If you don't have nroff and perl and you for some reason don't want to
   install them, you can rename the source file src/hugehelp.c.cvs to
   src/hugehelp.c and avoid having to generate this file. This will of course
   give you an older version of the file that isn't up-to-date. That file was
   checked in once and won't be updated very regularly.

 o yacc/bison 

   If you don't have yacc or bison, you must rename the lib/getdate.c.cvs file
   to lib/getdate.c to be able to build libcurl. yacc/bison is normally used
   to generate the lib/getdate.c file from the lib/getdate.y source file.

MAC OS X

 With Mac OS X 10.2 and the associated Developer Tools, the installed versions
 of the build tools are adequate.  For Mac OS X 10.1 users, Guido Neitzer
 wrote the following step-by-step guide:

 1. Install fink (http://fink.sourceforge.net)
 2. Update fink to the newest version (with the installed fink)
 3. Install the latest version of autoconf, automake and m4 with fink
 4. Install version 1.4.1 of libtool - you find it in the "unstable" section
    (read the manual to see how to get unstable versions)
 5. Get cURL from the cvs
 6. Build cURL with "./buildconf", "./configure", "make", "sudo make install"
