pkgconf/README.md

75 lines
2.9 KiB
Markdown
Raw Normal View History

2012-04-30 05:32:49 +00:00
# pkgconf
2011-07-25 07:02:08 +00:00
2012-04-30 05:32:49 +00:00
pkgconf provides compiler and linker configuration for development frameworks.
## general summary
2011-07-25 07:02:08 +00:00
pkgconf is a program which helps to configure compiler and linker flags for
development frameworks. It is similar to pkg-config, but was written from
2012-08-31 16:35:26 +00:00
scratch in the summer of 2011 to replace pkg-config, which now needs itself to
2011-07-25 07:02:08 +00:00
build itself (or you can set a bunch of environment variables, both are
2012-08-31 16:35:26 +00:00
pretty ugly).
2011-07-25 07:02:08 +00:00
2012-08-31 16:35:26 +00:00
Implementations of pkg-config, such as pkgconf, are typically used with the
2011-07-25 07:02:08 +00:00
PKG_CHECK_MODULES autoconf macro. As far as I (nenolod) know, pkgconf is
2012-07-27 05:03:49 +00:00
compatible with all known variations of this macro. pkgconf detects at
runtime whether or not it was started as 'pkg-config', and if so, attempts
2012-08-31 16:35:26 +00:00
to set program options such that its behaviour is similar.
2011-07-25 07:02:08 +00:00
In terms of the autoconf macro, it is possible to specify the PKG_CONFIG
environment variable, so that you can test pkgconf without overwriting your
pkg-config binary. (hint: export PKG_CONFIG=/usr/bin/pkgconf) However,
if you do this, it will be running in native mode, so you may have some very
strange results as the dependency graph is compiled differently in native
mode.
## technical design (why pkgconf is better for distros)
2011-07-25 07:02:08 +00:00
pkgconf builds an acyclic directed dependency graph. This allows for the user
to more conservatively link their binaries -- which may be helpful in some
environments, such as when prelink(1) is being used. As a result of building
a directed dependency graph designed for the specific problem domain provided
by the user, more accurate dependencies can be determined. pkg-config, on the
other hand builds a database of all known pkg-config files on the system before
attempting to resolve dependencies, which is a considerably slower and less
efficient design.
pkgconf also does not bundle any third-party libraries or depend on any third-party
libraries, making it a great tool for embedded systems and distributions with
security concerns.
2011-07-25 07:02:08 +00:00
2012-04-30 05:32:49 +00:00
## compiling
2011-07-25 07:02:08 +00:00
2012-04-30 05:32:49 +00:00
pkgconf is basically compiled the same way any other autotools-based project is
compiled:
2011-07-25 07:02:08 +00:00
2012-04-30 05:32:49 +00:00
$ ./configure
$ make
$ sudo make install
2011-07-25 07:02:08 +00:00
If you are installing pkgconf into a custom prefix, such as `/opt/pkgconf`, you will
likely want to define the default system includedir and libdir for your toolchain.
To do this, use the `--with-system-includedir` and `--with-system-libdir` configure
flags like so:
$ ./configure \
--prefix=/opt/pkgconf \
--with-system-libdir=/lib:/usr/lib \
--with-system-includedir=/usr/include
$ make
$ sudo make install
If you want pkgconf to be used when you invoke `pkg-config`, you should install a
symlink for this. We do not do this for you, as we believe it is better for vendors
to make this determination themselves.
$ ln -sf /usr/bin/pkgconf /usr/bin/pkg-config
## release tarballs
2012-08-10 15:29:56 +00:00
Release tarballs are available at <http://tortois.es/~nenolod/distfiles/>.
2012-04-30 05:32:49 +00:00
## reporting bugs
2011-07-25 07:02:08 +00:00
2012-07-27 05:03:49 +00:00
See <https://github.com/pkgconf/pkgconf/issues>.