misc/libfreetype/docs/CUSTOMIZE
changeset 5172 88f2e05288ba
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/misc/libfreetype/docs/CUSTOMIZE	Mon Apr 25 01:46:54 2011 +0200
@@ -0,0 +1,150 @@
+How to customize the compilation of the library
+===============================================
+
+  FreeType  is highly  customizable  to fit  various  needs, and  this
+  document  describes  how  it  is  possible  to  select  options  and
+  components at compilation time.
+
+
+I. Configuration macros
+
+  The  file found  in `include/freetype/config/ftoption.h'  contains a
+  list  of  commented configuration  macros  that  can  be toggled  by
+  developers  to  indicate  which  features  should  be  active  while
+  building the library.
+
+  These  options range  from debug  level to  availability  of certain
+  features,   like  native   TrueType  hinting   through   a  bytecode
+  interpreter.
+
+  We  invite you  to read  this file  for more  information.   You can
+  change the  file's content to suit  your needs, or  override it with
+  one of the techniques described below.
+
+
+II. Modules list
+
+  If you  use GNU make  please edit the top-level  file `modules.cfg'.
+  It contains a  list of available FreeType modules  and extensions to
+  be compiled.  Change it to suit your own preferences.  Be aware that
+  certain modules  depend on  others, as described  in the  file.  GNU
+  make  uses `modules.cfg'  to  generate `ftmodule.h'  (in the  object
+  directory).
+
+  If  you don't  use  GNU make  you  have to  manually  edit the  file
+  `include/freetype/config/ftmodule.h'  (which is  *not* used  with if
+  compiled with GNU make) to  add or remove the drivers and components
+  you want  to compile into  the library.  See `INSTALL.ANY'  for more
+  information.
+
+
+III. System interface
+
+  FreeType's  default interface to  the system  (i.e., the  parts that
+  deal  with  memory  management   and  i/o  streams)  is  located  in
+  `src/base/ftsystem.c'.
+
+  The current  implementation uses standard C library  calls to manage
+  memory  and to read  font files.   It is  however possible  to write
+  custom implementations to suit specific systems.
+
+  To  tell the  GNU Make-based  build system  to use  a  custom system
+  interface, you have to  define the environment variable FTSYS_SRC to
+  point to the relevant implementation:
+
+    on Unix:
+
+      ./configure <your options>
+      export FTSYS_SRC=foo/my_ftsystem.c
+      make
+      make install
+
+    on Windows:
+
+      make setup <compiler>
+      set FTSYS_SRC=foo/my_ftsystem.c
+      make
+
+
+IV. Overriding default configuration and module headers
+
+  It  is possible  to override  the default  configuration  and module
+  headers without  changing the original files.  There  are three ways
+  to do that:
+
+
+  1. With GNU make
+
+    [This is actually a combination of method 2 and 3.]
+
+    Just put your custom  `ftoption.h' file into the objects directory
+    (normally  `<topdir>/objs'),  which  GNU  make  prefers  over  the
+    standard location.   No action is needed  for `ftmodule.h' because
+    it is generated automatically in the objects directory.
+
+
+  2. Using the C include path
+
+    Use the  C include path  to ensure that  your own versions  of the
+    files are used at compile time when the lines
+
+      #include FT_CONFIG_OPTIONS_H
+      #include FT_CONFIG_MODULES_H
+
+    are      compiled.       Their      default      values      being
+    <freetype/config/ftoption.h> and <freetype/config/ftmodule.h>, you
+    can do something like:
+
+      custom/
+        freetype/
+          config/
+            ftoption.h    => custom options header
+            ftmodule.h    => custom modules list
+
+      include/            => normal FreeType 2 include
+        freetype/
+          ...
+
+    then change the C include path to always give the path to `custom'
+    before the FreeType 2 `include'.
+
+
+  3. Redefining FT_CONFIG_OPTIONS_H and FT_CONFIG_MODULES_H
+
+    Another way to do the same thing is to redefine the macros used to
+    name  the configuration  headers.  To  do  so, you  need a  custom
+    `ft2build.h' whose content can be as simple as:
+
+      #ifndef __FT2_BUILD_MY_PLATFORM_H__
+      #define __FT2_BUILD_MY_PLATFORM_H__
+
+      #define FT_CONFIG_OPTIONS_H  <custom/my-ftoption.h>
+      #define FT_CONFIG_MODULES_H  <custom/my-ftmodule.h>
+
+      #include <freetype/config/ftheader.h>
+
+      #endif /* __FT2_BUILD_MY_PLATFORM_H__ */
+
+    Place those files in a separate directory, e.g.,
+
+      custom/
+        ft2build.h           => custom version described above
+        my-ftoption.h        => custom options header
+        my-ftmodule.h        => custom modules list header
+
+    and change  the C include path  to ensure that  `custom' is always
+    placed before the FT2 `include' during compilation.
+
+----------------------------------------------------------------------
+
+Copyright 2003, 2005, 2006 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 CUSTOMIZE ---