1.\" Copyright (c) 2018 pkgconf authors (see AUTHORS).
2.\"
3.\" Permission to use, copy, modify, and/or distribute this software for any
4.\" purpose with or without fee is hereby granted, provided that the above
5.\" copyright notice and this permission notice appear in all copies.
6.\"
7.\" This software is provided 'as is' and without any warranty, express or
8.\" implied.  In no event shall the authors be liable for any damages arising
9.\" from the use of this software.
10.Dd July 19, 2018
11.Dt PKGCONF-PERSONALITY 5
12.Os
13.Sh NAME
14.Nm file.personality
15.Nd pkgconf cross-compile personality file format
16.Sh DESCRIPTION
17pkgconf cross-compile personality files provide a useful mechanism for storing
18various information about system toolchains.
19Information stored by
20.Nm .personality
21files include information about paths used by a cross-compile toolchain, such as
22the sysroot directory and default include and library paths.  pkgconf uses this
23information to determine what information is necessary to use libraries.
24.\"
25.Ss FILE SYNTAX
26The
27.Nm .personality
28file follows a format inspired by RFC822.
29Comments are prefixed by a pound sign, hash sign or octothorpe (#), and variable
30assignment is similar to POSIX shell.
31Properties are defined using RFC822-style stanzas.
32.\"
33.Ss PROPERTIES
34.\"
35Properties are set using RFC822-style stanzas which consist of a keyword, followed
36by a colon (:) and then the value the property should be set to.
37Variable substitution is always performed regardless of property type.
38.Pp
39There are two types of property:
40.\"
41.Bl -tag -width indent
42.\"
43.It Literal
44The property will be set to the text of the value.
45.\"
46.It Fragment List
47The property will be set to a list of fragments parsed from the text.
48The input text must be in a format that is suitable for passing to a POSIX
49shell without any shell expansions after variable substitution has been done.
50Elements are delimited with a colon.
51.\"
52.It Boolean
53The property will be set to true if the value is one of: true, yes or 1.
54Otherwise it will be set to false.
55.\"
56.El
57.Ss PROPERTY KEYWORDS
58.Bl -tag -width indent
59.\"
60.It Triplet
61The triplet used by the cross-compile toolchain.
62(mandatory; literal)
63.It SysrootDir
64The directory used by the system root of the cross-compile toolchain.
65(mandatory; literal)
66.It DefaultSearchPaths
67A list of directories to look for
68.Xr pc 5
69files in.
70(mandatory; fragment list)
71.It SystemIncludePaths
72A list of directories that are included by default in the search path for
73include files.
74(mandatory; fragment list)
75.It SystemLibraryPaths
76A list of directories that are included by default in the search path for
77libraries.
78(mandatory; fragment list)
79.It WantDefaultPure
80If true, pkgconf will default to preferring a pure dependency graph.
81(optional; boolean; default is false)
82.It WantDefaultStatic
83If true, pkgconf will default to operating in static linking mode.
84(optional; boolean; default is false)
85.\"
86.El
87.Sh EXAMPLES
88An example .personality file:
89.Bd -literal
90# This is a comment
91Triplet: x86_64-pc-linux-gnu
92SysrootDir: /home/kaniini/sysroot/x86_64-pc-linux-gnu
93DefaultSearchPaths: /home/kaniini/sysroot/x86_64-pc-linux-gnu/lib/pkgconfig:/home/kaniini/sysroot/x86_64-pc-linux-gnu/share/pkgconfig
94SystemIncludePaths: /home/kaniini/sysroot/x86_64-pc-linux-gnu/include
95SystemLibraryPaths: /home/kaniini/sysroot/x86_64-pc-linux-gnu/lib
96.Ed
97.Sh SEE ALSO
98.Xr pkgconf 1 ,
99.Xr pc 5 ,
100.Xr pkg.m4 7
101