Feature comparison

A comparison of features between pkgconf 1.0, 1.1 and pkg-config 0.29.1 and its latest development version. I have tried to be as objective as possible, but it should be disclosed that I am obviously the developer of pkgconf and not pkg-config, so I may be biased in what is compared.

Future directions could include additionally comparing against OpenBSD's implementation and other alternative implementations.

For completeness, a copy of pkg-config compiled without the --with-internal-glib flag is provided, but this is not a typical deployment of freedesktop.org's pkg-config as it creates a circular dependency.

pkgconf
1.0.2
pkgconf
1.1.0
pkg-config
0.29.1
pkg-config
git
pkg-config
git(system glib)
License ISC-like GPLv2
Complete binary set size (.text) 42 kB 58 kB 564 kB 568 kB 39 kB
Dependencies none bundled glib-2.0 glib-2.0
Lines of code compiled 4,597 6,210 192,111 193,178 3,642
Dependency resolution algorithm acyclic graph traversal
(cycles broken at build time)
linear search blind traversal
with hashtable of visited nodes
(for cycle breaking)
Fragment/flag merging algorithm merge-front or merge-back
depending on fragment type
multi-merge for some fragment types only
--cflags options are stackable yes, preserves fragment order yes, fragments reordered arbitrarily
--libs options are stackable yes, preserves fragment order yes, fragments reordered arbitrarily
CLI options effect fragment ordering no yes
Intelligent PKG_CONFIG_SYSROOT_DIR handling yes blindly appends path to $(prefix)
Loads .pc files in search directories when needed all files when needed
Deduplicates search directories no by path name
and dnode+inode
no
Resolver supports:
Conflicts rules yes
Requires rules yes
Requires.private rules yes
Provides rules partial yes partial
CFLAGS.private entries yes no
--static --pure mode no yes no