summaryrefslogtreecommitdiff
path: root/static/freebsd/man5/pc.5
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man5/pc.5')
-rw-r--r--static/freebsd/man5/pc.5178
1 files changed, 178 insertions, 0 deletions
diff --git a/static/freebsd/man5/pc.5 b/static/freebsd/man5/pc.5
new file mode 100644
index 00000000..2aee7462
--- /dev/null
+++ b/static/freebsd/man5/pc.5
@@ -0,0 +1,178 @@
+.\" Copyright (c) 2017 pkgconf authors (see AUTHORS).
+.\"
+.\" Permission to use, copy, modify, and/or distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" This software is provided 'as is' and without any warranty, express or
+.\" implied. In no event shall the authors be liable for any damages arising
+.\" from the use of this software.
+.Dd December 15, 2017
+.Dt PC 5
+.Os
+.Sh NAME
+.Nm file.pc
+.Nd pkg-config file format
+.Sh DESCRIPTION
+pkg-config files provide a useful mechanism for storing various information
+about libraries and packages on a given system.
+Information stored by
+.Nm .pc
+files include compiler and linker flags necessary to use a given library, as
+well as any other relevant metadata.
+.Pp
+These
+.Nm .pc
+files are processed by a utility called
+.Nm pkg-config ,
+of which
+.Nm pkgconf
+is an implementation.
+.\"
+.Ss FILE SYNTAX
+The
+.Nm .pc
+file follows a format inspired by RFC822.
+Comments are prefixed by a pound sign, hash sign or octothorpe (#), and variable
+assignment is similar to POSIX shell.
+Properties are defined using RFC822-style stanzas.
+.\"
+.Ss VARIABLES
+.\"
+Variable definitions start with an alphanumeric string, followed by an equal sign,
+and then the value the variable should contain.
+.Pp
+Variable references are always written as "${variable}".
+It is possible to escape literal "${" as "$${".
+.\"
+.Ss PROPERTIES
+.\"
+Properties are set using RFC822-style stanzas which consist of a keyword, followed
+by a colon (:) and then the value the property should be set to.
+Variable substitution is always performed regardless of property type.
+.Pp
+There are three types of property:
+.\"
+.Bl -tag -width indent
+.\"
+.It Literal
+The property will be set to the text of the value.
+.\"
+.It Dependency List
+The property will be set to a list of dependencies parsed from the
+text.
+Dependency lists are defined by this ABNF syntax:
+.Bd -literal
+package-list = *WSP *( package-spec *( package-sep ) )
+package-sep = WSP / ","
+.\"
+package-spec = package-key [ ver-op package-version ]
+ver-op = "<" / "<=" / "=" / "!=" / ">=" / ">"
+.Ed
+.\"
+.It Fragment List
+The property will be set to a list of fragments parsed from the text.
+The input text must be in a format that is suitable for passing to a POSIX
+shell without any shell expansions after variable substitution has been done.
+.\"
+.El
+.Ss PROPERTY KEYWORDS
+.Bl -tag -width indent
+.\"
+.It Name
+The displayed name of the package.
+(mandatory; literal)
+.It Version
+The version of the package.
+(mandatory; literal)
+.It Description
+A description of the package.
+(mandatory; literal)
+.It URL
+A URL to a webpage for the package.
+This is used to recommend where newer versions of the package can be acquired.
+(mandatory; literal)
+.It Cflags
+Required compiler flags.
+These flags are always used, regardless of whether static compilation is requested.
+(optional; fragment list)
+.It Cflags.private
+Required compiler flags for static compilation.
+(optional; fragment list; pkgconf extension)
+.It Copyright
+A copyright attestation statement.
+(optional; literal; pkgconf extension)
+.It Libs
+Required linking flags for this package.
+Libraries this package depends on for linking against it, which are not
+described as dependencies should be specified here.
+(optional; fragment list)
+.It Libs.private
+Required linking flags for this package that are only required when linking
+statically.
+Libraries this package depends on for linking against it statically, which are
+not described as dependencies should be specified here.
+(optional; fragment list)
+.It License
+The asserted SPDX license tag that should be applied to the given package.
+(optional; literal; pkgconf extension)
+.It Maintainer
+The preferred contact for the maintainer. This should be in the format of a
+name followed by an e-mail address or website.
+(optional; literal; pkgconf extension)
+.It Requires
+Required dependencies that must be met for the package to be usable.
+All dependencies must be satisfied or the pkg-config implementation must not use
+the package.
+(optional; dependency list)
+.It Requires.private
+Required dependencies that must be met for the package to be usable for header
+inclusion and static linking.
+All dependencies must be satisfied or the pkg-config implementation must not use
+the package for header inclusion and static linking.
+(optional; dependency list)
+.It Conflicts
+Dependencies that must not be met for the package to be usable.
+If any package in the proposed dependency solution match any dependency in the
+Conflicts list, the package being considered is not usable.
+(optional; dependency list)
+.It Provides
+Dependencies that may be provided by an alternate package.
+If a package cannot be found, the entire package collection is scanned for
+providers which can match the requested dependency.
+(optional; dependency list; pkgconf extension)
+.El
+.Ss EXTENSIONS
+Features that have been marked as a pkgconf extension are only guaranteed to work
+with the pkgconf implementation of pkg-config.
+Other implementations may or may not support the extensions.
+.Pp
+Accordingly, it is suggested that
+.Nm .pc
+files which absolutely depend on these extensions declare a requirement on the
+pkgconf virtual.
+.Sh EXAMPLES
+An example .pc file:
+.Bd -literal
+# This is a comment
+prefix=/home/kaniini/pkg # this defines a variable
+exec_prefix=${prefix} # defining another variable with a substitution
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: libfoo # human-readable name
+Description: an example library called libfoo # human-readable description
+Copyright: Copyright (c) 2022 pkgconf project authors
+License: Apache-2.0
+Maintainer: the pkgconf project <http://www.pkgconf.org>
+Version: 1.0
+URL: http://www.pkgconf.org
+Requires: libbar > 2.0.0
+Conflicts: libbaz <= 3.0.0
+Libs: -L${libdir} -lfoo
+Libs.private: -lm
+Cflags: -I${includedir}/libfoo
+.Ed
+.Sh SEE ALSO
+.Xr pkgconf 1 ,
+.Xr pkg.m4 7