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-configgit |
pkg-configgit (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 |