.\" Copyright (c) 2011, 2012, 2013, 2014 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 February 2, 2015
.Dt PKGCONF 1
.Os
.Sh NAME
.Nm pkgconf
.Nd a system for configuring build dependency information
.Sh SYNOPSIS
.Nm
.Op Ar options
.Op Ar list of modules
.Sh DESCRIPTION
.Nm
is a program which helps to configure compiler and linker flags for
development frameworks. This allows build systems to detect other dependencies
and use them with the system toolchain.
.Sh GENERAL OPTIONS
.Bl -tag -width indent
.It Fl -version
Display the supported pkg-config version and exit.
.It Fl -atleast-pkgconfig-version Ns = Ns Ar VERSION
Exit with error if we do not support the requested pkg-config version.
.It Fl -errors-to-stdout
Print all errors on the main output stream instead of the error output stream.
.It Fl -silence-errors
Do not display any errors at all.
.It Fl -list-all
Walk all directories listed in the
.Va PKG_CONFIG_PATH
environmental variable and display information on packages which have registered
information there.
.It Fl -simulate
Simulates resolving a dependency graph based on the requested modules on the
command line. Dumps a series of trees denoting pkgconf's resolver state.
.It Fl -no-cache
Skip caching packages when they are loaded into the internal resolver.  This may
result in an alternate dependency graph being computed.
.It Fl -ignore-conflicts
Ignore
.Sq Conflicts
rules in modules.
.It Fl -env-only
Learn about pkgconf's configuration strictly from environmental variables.
.It Fl -maximum-traverse-depth Ns = Ns Ar DEPTH
Impose a limit on the allowed depth in the dependency graph.  For example, a
depth of 2 will restrict the resolver from acting on child dependencies of
modules added to the resolver's solution.
.It Fl -static
Compute a deeper dependency graph and use compiler/linker flags intended for
static linking.
.El
.Sh MODULE-SPECIFIC OPTIONS
.Bl -tag -width indent
.It Fl -atleast-version Ns = Ns Ar VERSION
Exit with error if a module's version is less than the specified version.
.It Fl -exact-version Ns = Ns Ar VERSION
Exit with error if a module's version is not exactly the specified version.
.It Fl -max-version Ns = Ns Ar VERSION
Exit with error if a module's version is greater than the specified version.
.It Fl -exists
Exit with a non-zero result if the dependency resolver was able to find all of
the requested modules.
.It Fl -uninstalled
Exit with a non-zero result if the dependency resolver uses an
.Sq uninstalled
module as part of it's solution.
.It Fl -no-uninstalled
Forbids the dependency resolver from considering 'uninstalled' modules as part
of a solution.
.El
.Sh QUERY-SPECIFIC OPTIONS
.Bl -tag -width indent
.It Fl -cflags Ns , Fl -cflags-only-I Ns , Fl -cflags-only-other
Display either all CFLAGS, only
.Fl I
CFLAGS or only CFLAGS that are not
.Fl I .
.It Fl -libs Ns , Fl -libs-only-L Ns , Fl -libs-only-l Ns , Fl -libs-only-other
Display either all linker flags, only
.Fl L
linker flags, only
.Fl l
linker flags or only linker flags that are not
.Fl L
or
.Fl l .
.It Fl -keep-system-cflags Ns , Fl -keep-system-libs
Keep CFLAGS or linker flag fragments that would be filtered due to being
included by default in the compiler.
.It Fl -define-variable Ns = Ns Ar VARNAME Ns = Ns Ar VALUE
Define
.Va VARNAME
as
.Va VALUE .
Variables are used in query output, and some modules' results may change based
on the presence of a variable definition.
.It Fl -print-variables
Print all seen variables for a module to the output channel.
.It Fl -variable Ns = Ns Ar VARNAME
Print the value of
.Va VARNAME .
.It Fl -print-requires Ns , Fl -print-requires-private
Print the modules included in either the
.Va Requires
field or the
.Va Requires.private
field.
.It Fl -digraph
Dump the dependency resolver's solution as a graphviz
.Sq dot
file. This can be used with graphviz to visualize module interdependencies.
.El
.Sh ENVIRONMENT
.Bl -tag -width indent
.It Va PKG_CONFIG_PATH
List of directories where
.Sq .pc
files are looked up.
.It Va PKG_CONFIG_SYSROOT_DIR
.Sq sysroot
directory, will be prepended to every path defined in
.Va PKG_CONFIG_PATH .
Useful for cross compilation.
.El
.Sh EXAMPLES
Displaying the CFLAGS of a package:
.Dl $ pkgconf --cflags foo
.Dl -fPIC -I/usr/include/foo
