| 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 |
| |
| The file found in `include/freetype/config/ftmodule.h' contains a list |
| of names corresponding to the modules and font drivers to be |
| statically compiled in the FreeType library during the build. |
| |
| You can change it to suit your own preferences. Be aware that certain |
| modules depend on others, as described by the file `modules.txt' in |
| this directory. |
| |
| You can modify the file's content to suit your needs, or override it |
| at compile time with one of the methods described below. |
| |
| Note that you also have to rename the various `*.mk' files in the |
| module directories which you want to exclude so that the extension |
| isn't `.mk' -- GNU make uses a simple globbing mechanism to include |
| all those files. |
| |
| |
| 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 two ways to do |
| that: |
| |
| |
| 1. 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'. |
| |
| |
| 2. 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 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 --- |