freetype2/docs/INSTALL.md

5.6 KiB

Building FreeType

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:

A. Prerequisites and dependencies

FreeType is a low level C library that only depends on the standard C library with very few platform-dependent optimizations utilized at build time. Any C99-compliant compiler should be able to compile FreeType. System libraries, such as zlib, Gzip, bzip2, Brotli, and libpng, might be used to handle compressed fonts or decode embedded PNG glyphs.

FreeType auto-configuration scripts should be able to detect the prerequisites if the necessary headers are available at the default locations. Otherwise, modify include/freetype/config/ftoption.h to control how the FreeType library gets built. Normally, you don't need to change anything.

Applications have very limited control over FreeType's behaviour at run-time; look at the documentation of function FT_Property_Set.

B. Normal installation and upgrades

  1. Unix and Unix-like systems

    This also includes MacOS, Cygwin, MinGW + MSYS, Mingw-w64 + MSYS2, and possibly other, similar environments.

    Please read INSTALL.UNIX to install or upgrade FreeType 2 on a Unix system. Note that you need GNU Make for automatic compilation, since other make tools won't work (this includes BSD Make).

    GNU Make VERSION 3.81 OR NEWER IS NEEDED!

  2. Other systems using GNU Make

    On some non-Unix platforms, it is possible to build the library using only the GNU Make utility. Note that NO OTHER MAKE TOOL WILL WORK[1]! This methods supports several compilers on Windows, OS/2, and BeOS, including MinGW* (without MSYS*), Visual C++, Borland C++, and more.

    Instructions are provided in the file INSTALL.GNU.

  3. Other build tools and platforms.

    A few other tools can be used to build FreeType. You can find the corresponding instruction files in the FreeType root folder or the builds/ sub-folder.

    Build Tool Details
    CMake see CMakeLists.txt for more information
    Meson see meson.build for more information
    MSBuild see freetype.vcxproj
    MMS see vms_make.com and INSTALL.VMS
  4. 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 actively supported by FreeType developers, they can break or become obsolete.

    To find them, have a look at the content of the builds/<system> directory, where stands for your OS or environment.

  5. 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.

C. 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 docs/CUSTOMIZE.

D. Standard builds with configure

The git repository doesn't contain pre-built configuration scripts for UNIXish platforms. To generate them say

sh autogen.sh

which in turn depends on the following packages:

automake (1.10.1)
libtool (2.2.4)
autoconf (2.62)

The versions given in parentheses are known to work. Newer versions should work too, of course. Note that autogen.sh also sets up proper file permissions for the configure and auxiliary scripts.

The autogen.sh script checks whether the versions of the above three tools match the numbers above. Otherwise it will complain and suggest either upgrading or using environment variables to point to more recent versions of the required tools.

Note that aclocal is provided by the 'automake' package on Linux, and that libtoolize is called glibtoolize on Darwin (OS X).

E. Alternative build methods

For static builds that don't use platform-specific optimizations, no configure script is necessary at all; saying

make setup ansi
make

should work on all platforms that have GNU make (or makepp).

A build with cmake or meson can be done directly from the git repository. However, if you want to use the FT_DEBUG_LOGGING macro (see file docs/DEBUG for more information) it is currently mandatory to execute autogen.sh in advance; this script clones the 'dlg' git submodule and copies some files into FreeType's source tree.


[1] make++, a make tool written in Perl, has sufficient support of GNU make extensions to build FreeType. See

https://makepp.sourceforge.net

for more information; you need version 2.0 or newer, and you must pass option --norc-substitution.


Copyright (C) 2000-2023 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.