Instructions on how to build FreeType with your own build tool
==============================================================

See  the  file `CUSTOMIZE'  to  learn  how  to customize  FreeType  to
specific environments.


I. Standard procedure
---------------------

  * DISABLE PRE-COMPILED  HEADERS!  This is very  important for Visual
    C++, because FreeType uses lines like:

      #include FT_FREETYPE_H

    which are not correctly supported by this compiler while being ISO
    C compliant!

  * You need to add the directory `include' to your  include path when
    compiling the library.

  * FreeType 2 is made of  several components; each of them is located
    in    a   subdirectory    of   `freetype2/src'.     For   example,
    `freetype2/src/truetype/' contains the TrueType font driver.

  * DO NOT COMPILE ALL C FILES!  Rather, compile the following ones.

    -- base components (required)

      src/base/ftsystem.c
      src/base/ftinit.c
      src/base/ftdebug.c

      src/base/ftbase.c

      src/base/ftbbox.c       -- recommended, see <ftbbox.h>
      src/base/ftglyph.c      -- recommended, see <ftglyph.h>

      src/base/ftbdf.c        -- optional, see <ftbdf.h>
      src/base/ftbitmap.c     -- optional, see <ftbitmap.h>
      src/base/ftcid.c        -- optional, see <ftcid.h>
      src/base/ftfntfmt.c     -- optional, see <ftfntfmt.h>
      src/base/ftfstype.c     -- optional
      src/base/ftgasp.c       -- optional, see <ftgasp.h>
      src/base/ftgxval.c      -- optional, see <ftgxval.h>
      src/base/ftlcdfil.c     -- optional, see <ftlcdfil.h>
      src/base/ftmm.c         -- optional, see <ftmm.h>
      src/base/ftotval.c      -- optional, see <ftotval.h>
      src/base/ftpatent.c     -- optional
      src/base/ftpfr.c        -- optional, see <ftpfr.h>
      src/base/ftstroke.c     -- optional, see <ftstroke.h>
      src/base/ftsynth.c      -- optional, see <ftsynth.h>
      src/base/fttype1.c      -- optional, see <t1tables.h>
      src/base/ftwinfnt.c     -- optional, see <ftwinfnt.h>

      src/base/ftmac.c        -- only on the Macintosh

    -- font drivers (optional; at least one is needed)

      src/bdf/bdf.c           -- BDF font driver
      src/cff/cff.c           -- CFF/OpenType font driver
      src/cid/type1cid.c      -- Type 1 CID-keyed font driver
      src/pcf/pcf.c           -- PCF font driver
      src/pfr/pfr.c           -- PFR/TrueDoc font driver
      src/sfnt/sfnt.c         -- SFNT files support
                                 (TrueType & OpenType)
      src/truetype/truetype.c -- TrueType font driver
      src/type1/type1.c       -- Type 1 font driver
      src/type42/type42.c     -- Type 42 font driver
      src/winfonts/winfnt.c   -- Windows FONT / FNT font driver

    -- rasterizers (optional; at least one is needed for vector
       formats)

      src/raster/raster.c     -- monochrome rasterizer
      src/smooth/smooth.c     -- anti-aliasing rasterizer

    -- auxiliary modules (optional)

      src/autofit/autofit.c   -- auto hinting module
      src/cache/ftcache.c     -- cache sub-system (in beta)
      src/gzip/ftgzip.c       -- support for compressed fonts (.gz)
      src/lzw/ftlzw.c         -- support for compressed fonts (.Z)
      src/bzip2/ftbzip2.c     -- support for compressed fonts (.bz2)
      src/gxvalid/gxvalid.c   -- TrueTypeGX/AAT table validation
      src/otvalid/otvalid.c   -- OpenType table validation
      src/psaux/psaux.c       -- PostScript Type 1 parsing
      src/pshinter/pshinter.c -- PS hinting module
      src/psnames/psnames.c   -- PostScript glyph names support


    Notes:

      `ftcache.c'  needs `ftglyph.c'
      `ftfstype.c' needs `fttype1.c'
      `ftglyph.c'  needs `ftbitmap.c'
      `ftstroke.c' needs `ftglyph.c'
      `ftsynth.c'  needs `ftbitmap.c'

      `cff.c'      needs `sfnt.c', `pshinter.c', and `psnames.c'
      `truetype.c' needs `sfnt.c' and `psnames.c'
      `type1.c'    needs `psaux.c' `pshinter.c', and `psnames.c'
      `type1cid.c' needs `psaux.c', `pshinter.c', and `psnames.c'
      `type42.c'   needs `truetype.c'

      Please consult the central  `include/freetype/config/ftoption.h'
      configuration file for details on additional libraries necessary
      for some optional features.


  Read the file `CUSTOMIZE' in case  you want to compile only a subset
  of  the  drivers,  renderers,   and  optional  modules;  a  detailed
  description of the various base  extension is given in the top-level
  file `modules.cfg'.

  You are done.  In case of problems, see the archives of the FreeType
  development mailing list.


II. Support for flat-directory compilation
------------------------------------------

  It is  possible to  put all  FreeType 2 source  files into  a single
  directory, with the *exception* of the `include' hierarchy.

  1. Copy all files in current directory

      cp freetype2/src/base/*.[hc] .
      cp freetype2/src/raster1/*.[hc] .
      cp freetype2/src/smooth/*.[hc] .
      etc.

  2. Compile sources

      cc -c -Iinclude -DFT2_BUILD_LIBRARY ftsystem.c
      cc -c -Iinclude -DFT2_BUILD_LIBRARY ftinit.c
      cc -c -Iinclude -DFT2_BUILD_LIBRARY ftdebug.c
      cc -c -Iinclude -DFT2_BUILD_LIBRARY ftbase.c
      etc.

    You don't  need to define  the FT_FLAT_COMPILATION macro  (as this
    was required in previous releases of FreeType 2).

----------------------------------------------------------------------

Copyright 2003-2015 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.ANY ---
