Official mirror of https://gitlab.freedesktop.org/freetype/freetype
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
4.0 KiB
125 lines
4.0 KiB
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. |
|
|
|
|
|
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. Re-defining 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_GENERIC_H__ |
|
#define __FT2_BUILD_GENERIC_H__ |
|
|
|
#define FT_CONFIG_OPTIONS_H <custom/my-ftoption.h> |
|
#define FT_CONFIG_MACROS_H <custom/my-ftmodule.h> |
|
|
|
#include <freetype/config/ftheader.h> |
|
|
|
#endif /* __FT2_BUILD_GENERIC_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. |
|
|
|
|
|
--- end of CUSTOMIZE ---
|
|
|