
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 (including Mac OS X, Cygwin, and MSys on Windows)

    Please read *both* `UPGRADE.UNIX' and `INSTALL.UNIX' to install or
    upgrade FreeType  2 on  a Unix system.   Note that you  *need* GNU
    Make for automatic compilation,  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 only  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; you need version 1.19 or newer, and you must
    pass option `--norc-substitution'.

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

Copyright 2000, 2001, 2002, 2003, 2004, 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 INSTALL ---
