
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 *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  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 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 ---
