.TH FREETYPE-CONFIG 1 "October 2020" "FreeType 2.10.4"
.
.
.SH NAME
.
freetype-config \- Get information about a libfreetype installation
.
.
.SH SYNOPSIS
.
.B freetype-config
.RI [ options ]
.
.
.SH DESCRIPTION
.
.B freetype-config
returns information needed for compiling and linking programs with the
FreeType library, such as linker flags and compilation parameters.
.
Alternatively, it can be used to query information about the
FreeType library version installed on the system, such as the
installation (directory path) prefix or the FreeType version number.
.
.PP
If
.BR pkg-config (1)
is found in the path,
.B freetype-config
acts as a wrapper for
.BR pkg-config .
.
.PP
This program is part of the FreeType package.
.
.
.SH OPTIONS
.
There are two types of options: output/display selection options, and
path override options.
.
.
.SS Output selection options
.
Only one of the output selection options should be given at each program
invocation.
.
.TP
.B \-\-prefix
Return the prefix value of the installed FreeType library (the default
prefix will be `/usr' in most cases for distribution-installed
packages).
.
.TP
.B \-\-exec-prefix
Return the executable prefix value of the installed FreeType library
(will often be the same as the prefix value).
.
.TP
.B \-\-ftversion
Return the FreeType version number, directly derived from file
`freetype.h'.
.
.TP
.B \-\-version
Return the `libtool version' of the FreeType library.
.
.TP
.B \-\-libtool
Return the library name for linking with libtool.
.
.TP
.B \-\-libs
Return compiler flags for linking with the installed FreeType library.
.
.TP
.B \-\-cflags
Return compiler flags for compiling against the installed FreeType library.
.
.TP
.B \-\-static
Make command line options display flags for static linking.
.
.TP
.B \-\-help
Show help and exit.
.
.
.SS Path override options
.
These affect any selected output option, except the libtool version
returned by
.BR \-\-version .
.
.TP
.BI \-\-prefix= PREFIX
Override
.B \-\-prefix
value with
.IR PREFIX .
.
This also sets
.BI \-\-exec-prefix= PREFIX
if option
.B \-\-exec-prefix
is not explicitly given.
.
.TP
.BI \-\-exec-prefix= EPREFIX
Override
.B \-\-exec-prefix
value with
.IR EPREFIX .
.
.
.SH BUGS
In case the libraries FreeType links to are located in non-standard
directories, and
.BR pkg-config (1)
is not available, the output from option
.B \-\-libs
might be incomplete.
.
It is thus recommended to use the
.BR pkg-config (1)
interface instead, which is able to correctly resolve all dependencies.
.
.PP
Setting
.B \-\-exec-prefix
(either explicitly or implicitly) might return incorrect results if
combined with option
.BR \-\-static .
.
The same problem can occur if you set the
.B SYSROOT
environment variable.
.
.
.SH AUTHOR
.
This manual page was contributed by Nis Martensen <nis.martensen@web.de>,
with further refinements from the FreeType team.
.
.
.\" eof
