The CVS  archive doesn't  contain pre-built configuration  scripts for
UNIXish platforms.  To generate them say

  sh autogen.sh

which in turn depends on the following packages:

  automake (1.9.6)
  libtool (1.5.22)
  autoconf (2.59c)

The versions given  in parentheses are known to  work.  Newer versions
should work too, of course.   Note that autogen.sh also sets up proper
file permissions for the `configure' and auxiliary scripts.

A very common problem is that this script complains that the `aclocal'
program doesn't accept a `--force' option:

  generating `configure.ac'
  running `aclocal -I . --force'
  aclocal: unrecognized option -- `--force'
  Try `aclocal --help' for more information.
  error while running `aclocal -I . --force'

This  means that  your version  of the  automake package  is  too old.
Please update it before trying to build FreeType.


For static builds which  don't use platform specific optimizations, no
configure script is necessary at all; saying

  make setup ansi
  make

should work on all platforms which have GNU make (or makepp).


----------------------------------------------------------------------

Copyright 2005, 2006, 2007 by
David Turner, Robert Wilhelm, and Werner Lemberg.

This  file is  part of  the FreeType  project, and  may only  be used,
modified,  and distributed  under the  terms of  the  FreeType project
license,  LICENSE.TXT.  By  continuing to  use, modify,  or distribute
this file you  indicate that you have read  the license and understand
and accept it fully.


--- end of README.CVS ---
