
There are several ways to  build the FreeType library, depending on your
system  and  the level  of  customization you  need.   Here  is a  short
overview of the documentation available:


I. Normal installation and upgrades
===================================

  1. Native TrueType Hinting

    Native TrueType  hinting is disabled  by default[1].  If  you really
    need it, read the file "TRUETYPE" for information.

  2. Unix Systems (as well as Cygwin or MSys on Windows)

    Please read *both* UPGRADE.UNX and INSTALL.UNX to install or upgrade
    FreeType 2  on a Unix system.   Note that you *will*  need GNU Make,
    since other make tools won't work (this includes BSD Make).

  3. On VMS with the "mms" build tool
  
    See INSTALL.VMS for installation instructions on this platform.

  4. Other systems using GNU Make
  
    On non-Unix platforms, it is possible to build the library using GNU
    Make utility.   Note that  *NO OTHER MAKE  TOOL WILL  WORK*[2]! This
    methods  supports  several compilers  on  Windows,  OS/2, and  BeOS,
    including Mingw, Visual C++, Borland C++, and more.

    Instructions are provided in the file "INSTALL.GNU".

  5. With an IDE Project File (e.g. for Visual Studio or CodeWarrior)
  
    We provide  a small  number of "project  files" for various  IDEs to
    automatically build the library as  well.  Note that these files are
    not supported and sporadically maintained by FreeType developers, so
    don't expect them to work in each release.
    
    To find  them, have a look  at the content  of the "builds/<system>"
    directory, where <system> stands for your OS or environment.

  6. From you own IDE, or own Makefiles
  
    If you want to create your own project file, follow the instructions
    given in the "INSTALL.ANY" document of this directory.


II. Custom builds of the library
================================

  Customizing the  compilation of  FreeType is easy,  and allows  you to
  select only  the components of the  font engine that  you really need.
  For more details read the file "CUSTOMIZE".


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

[1] More details on:  http://www.freetype.org/patents.html

[2] make++, a  make tool written in Perl, has  sufficient support of GNU
    make       extensions       to       build      FreeType.        See
    http://makepp.sourceforge.net for more information.

--- end of INSTALL ---
