* docs/INSTALL.CROSS: Revised and updated.

This commit is contained in:
Werner Lemberg 2014-03-01 14:01:12 +01:00
parent 646db05dfd
commit 6030a9f755
2 changed files with 70 additions and 24 deletions

View File

@ -1,3 +1,7 @@
2014-03-01 Werner Lemberg <wl@gnu.org>
* docs/INSTALL.CROSS: Revised and updated.
2014-03-01 Werner Lemberg <wl@gnu.org> 2014-03-01 Werner Lemberg <wl@gnu.org>
Make `make clean' remove `freetype2.pc'. Make `make clean' remove `freetype2.pc'.

View File

@ -1,26 +1,27 @@
This document contains instructions on how to cross-build the FreeType This document contains instructions on how to cross-build the FreeType
library on Unix systems, for example, building binaries for Linux/MIPS library on Unix systems, for example, building binaries for Linux/MIPS
on FreeBSD/i386. Before reading this document, please consult on FreeBSD/i386. Before reading this document, please consult the
INSTALL.UNIX for required tools and the basic self-building procedure. file `INSTALL.UNIX' for required tools and the basic self-building
procedure.
1. Required Tools 1. Required Tools
----------------- -----------------
For self-building the FreeType library on a Unix system, GNU Make For self-building the FreeType library on a Unix system, GNU Make
3.80 or newer is required. INSTALL.UNIX contains hints how to 3.80 or newer is required. `INSTALL.UNIX' contains hints how to
check the installed `make'. check the installed `make'.
The GNU C compiler to cross-build the target system is required. The GNU C compiler to cross-build the target system is required.
At present, using non-GNU cross compiler is not tested. The cross Currently, using a non-GNU cross compiler is untested. The cross
compiler is expected to be installed with a system prefix. For compiler is expected to be installed with a system prefix. For
example, if your building system is FreeBSD/i386 and the target example, if your building system is FreeBSD/i386 and the target
system is Linux/MIPS, the cross compiler should be installed with system is Linux/MIPS, the cross compiler should be installed with
the name `mips-ip22-linuxelf-gcc'. the name `mips-ip22-linuxelf-gcc'.
A C compiler for a self-build is required also, to build a tool A C compiler for a self-build is required also, to build a tool
that is executed during the building procedure. Non-GNU self (`apinames') that is executed during the build procedure. Non-GNU
compilers are acceptable, but such a setup is not tested yet. self compilers are acceptable, but such a setup is untested.
2. Configuration 2. Configuration
@ -28,10 +29,10 @@ INSTALL.UNIX for required tools and the basic self-building procedure.
2.1. Building and target system 2.1. Building and target system
To configure for cross-build, the options `--host=<system>' and To configure a cross-build, the options `--host=<system>' and
`--build=<system>' must be passed to configure. For example, if `--build=<system>' must be passed to the `configure' script.
your building system is FreeBSD/i386 and the target system is For example, if your build system is FreeBSD/i386 and the target
Linux/MIPS, say system is Linux/MIPS, say
./configure \ ./configure \
--build=i386-unknown-freebsd \ --build=i386-unknown-freebsd \
@ -58,22 +59,63 @@ INSTALL.UNIX for required tools and the basic self-building procedure.
2.2. The prefix to install FreeType2 2.2. The prefix to install FreeType2
Setting `--prefix=<prefix>' properly is important. The prefix Setting `--prefix=<prefix>' properly is important. The prefix
to install FreeType2 is written into the freetype-config script to install FreeType2 is written into the `freetype-config'
and freetype2.pc configuration file. script and `freetype2.pc' configuration file.
If the built FreeType 2 library is used as a part of the If the built FreeType 2 library is used as a part of the
cross-building system, the prefix is expected to be different cross-building system, the prefix is expected to be different
from the self-building system. For example, configuration with from the self-building system. For example, a configuration
`--prefix=/usr/local' installs binaries into the system wide with `--prefix=/usr/local' installs binaries into the
`/usr/local' directory which then can't be executed. This system-wide `/usr/local' directory, which then can't be executed
causes confusion in configuration of all applications which use due to the incorrect architecture. This causes confusion in
FreeType2. Instead, use a prefix to install the cross-build configuration of all applications that use FreeType2. Instead,
into a separate system tree, for example, use a prefix to install the cross-build into a separate system
`--prefix=/usr/local/mips-ip22-linux/'. tree, for example, `--prefix=/usr/local/mips-ip22-linux/'.
On the other hand, if the built FreeType2 is used as a part of On the other hand, if the built FreeType 2 library is used as a
the target system, the prefix to install should reflect the file part of the target system, the prefix to install should reflect
system structure of the target system. the file system structure of the target system.
2.3. Library dependencies
FreeType normally depends on external libraries like `libpng' or
`libharfbuzz'. The easiest case is to deactivate all such
dependencies using the `--without-XXX' configuration options.
However, if you want to use those libraries, you should ensure
that they are available both on the target system and as
(cross-compiled) libraries on the build system.
FreeType uses `pkg-config' to find most of the libraries; the
other libraries it links to are expected in the standard system
directories. Since the default pkg-config's meta-information
files (like `harfbuzz.pc') of the build platform don't work, use
one of the two possible solutions below.
o Use pkg-config's meta-information files that are adjusted to
cross-compile and cross-link with the target platform's
libraries. Make sure those files are found before the build
system's default files. Example:
./configure \
--build=i386-unknown-freebsd \
--host=mips-ip22-linuxelf \
PKG_CONFIG_LIBDIR="/usr/local/mips-ip22-linux/lib/pkgconfig" \
[other options]
See the manpage of `pkg-config' for more details.
o Set variables like LIBPNG_LIBS as additional options to the
`configure' script, overriding the values `pkg-config' would
provide. `configure --help' shows the available environment
variables. Example:
./configure \
--build=i386-unknown-freebsd \
--host=mips-ip22-linuxelf \
LIBPNG_CFLAGS="-I/usr/local/mips-ip22-linux/include" \
LIBPNG_LIBS="-L/usr/local/mips-ip22-linux/lib -lpng12" \
[other options]
3. Building command 3. Building command
@ -121,7 +163,7 @@ INSTALL.UNIX for required tools and the basic self-building procedure.
---------------------------------------------------------------------- ----------------------------------------------------------------------
Copyright 2006, 2008, 2012 by suzuki toshiya Copyright 2006, 2008, 2012, 2014 by suzuki toshiya
David Turner, Robert Wilhelm, and Werner Lemberg. David Turner, Robert Wilhelm, and Werner Lemberg.