package compiler and linker metadata toolkit
 
 
 
 
 
Go to file
William Pitcock 1cc0ae62a9 fragment, pkg: handle --static correctly in some more esoteric scenarios 2015-05-21 23:06:38 -05:00
scripts Add makerelease. 2011-07-25 17:06:11 -05:00
tests tests: correct private-libs-duplication order 2015-05-21 22:17:55 -05:00
.gitattributes Add .gitattributes file to force dos-lineendings.pc to match CRLF style always 2012-05-04 03:15:07 +00:00
.gitignore buildsys: add support for building a profiled executable 2013-03-01 12:17:16 -06:00
.travis.yml First generate the configure script 2015-02-03 09:26:13 +01:00
AUTHORS Update AUTHORS based on git history. 2012-07-25 17:13:42 -05:00
COPYING main: update informational copyright notice 2015-03-14 04:17:59 -05:00
Makefile.in build: disable -D_FORTIFY_SOURCE=2 (let distros use it themselves) (closes #61) 2014-06-07 20:22:48 +00:00
README.md README: provide IRC channel pointer 2015-04-20 09:44:41 -05:00
argvsplit.c Keep the backslash when parsing arguments (fixes #35) 2012-08-14 11:12:01 +02:00
autogen.sh buildsys: remove old vestiges of old build system 2012-08-10 12:54:58 -05:00
bsdstubs.c bsdstubs: add strtok_r() from musl if unavailable on a platform (closes #66) 2014-07-01 23:39:22 -05:00
bsdstubs.h bsdstubs: add strtok_r() from musl if unavailable on a platform (closes #66) 2014-07-01 23:39:22 -05:00
cache.c cache: handle pkg being NULL on pkg_cache_add()/pkg_cache_remove() 2013-03-15 16:50:30 -05:00
config.guess Add config.sub and config.guess. 2011-07-24 23:26:24 -05:00
config.sub Add config.sub and config.guess. 2011-07-24 23:26:24 -05:00
configure.ac configure: add large file support checks 2015-05-21 21:47:50 -05:00
dependency.c dependency: reset parser state on new package atom 2013-03-15 19:44:11 -05:00
fileio.c fileio: Skip the whole line after a non quoted comment 2015-04-23 22:01:00 +02:00
fragment.c fragment, pkg: handle --static correctly in some more esoteric scenarios 2015-05-21 23:06:38 -05:00
getopt_long.c getopt: document what is different about our getopt verses normal netbsd getopt_long. 2013-07-22 01:08:38 -05:00
getopt_long.h getopt_long: more fixing 2012-07-20 16:37:26 -05:00
install-sh make install-sh executable 2014-02-28 16:15:41 +01:00
iter.h queue: refactor to use pkg_list_t framework 2013-03-01 10:24:57 -06:00
main.c main: stub out --print-provides 2015-04-20 09:45:03 -05:00
pkg.c fragment, pkg: handle --static correctly in some more esoteric scenarios 2015-05-21 23:06:38 -05:00
pkg.h fragment, pkg: handle --static correctly in some more esoteric scenarios 2015-05-21 23:06:38 -05:00
pkg.m4 Include PKG_CHECK_VAR macro for reading variables in .pc files 2013-02-24 06:47:48 -06:00
pkgconf.1 Follow mdoc(7) convention on ordering sections 2015-02-03 00:44:53 +01:00
queue.c dependency: refactor to use pkg_list_t framework 2013-03-01 11:36:21 -06:00
stdinc.h Nuke use of basename/dirname where a simple strrchr can do the trick 2012-08-14 16:04:56 +02:00
tuple.c tuple: fix swallowing $ (closes #67) 2014-07-01 23:44:49 -05:00

README.md

pkgconf

pkgconf provides compiler and linker configuration for development frameworks.

general summary

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 scratch in the summer of 2011 to replace pkg-config, which for a while needed itself to build itself (they have since included a 'stripped down copy of glib 2.0') Since then we have worked on improving pkg-config for embedded use.

usage

Implementations of pkg-config, such as pkgconf, are typically used with the PKG_CHECK_MODULES autoconf macro. As far as we know, pkgconf is 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 to set program options such that its behaviour is similar.

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. Some other build systems may also respect the PKG_CONFIG environment variable.

To set the enviornment variable on the bourne shell and clones (i.e. bash), you can run:

$ export PKG_CONFIG=/usr/bin/pkgconf

technical design (why pkgconf is better for distros)

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.

compiling

pkgconf is basically compiled the same way any other autotools-based project is compiled:

$ ./configure
$ make
$ sudo make install

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

Release tarballs are available at http://tortois.es/~nenolod/distfiles/.

reporting bugs

See https://github.com/pkgconf/pkgconf/issues.

Also you can contact us at #pkgconf at irc.freenode.net.