From 01921543bf2e2a870c84c6304df9dfeca536c7aa Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Sun, 10 Jul 2016 15:34:49 -0500 Subject: [PATCH] README updates (closes #80) --- README.md | 50 +++++++++++++++++++------------------------------- 1 file changed, 19 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 265d98a..c8e80ab 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,13 @@ # pkgconf [![Build Status](https://travis-ci.org/pkgconf/pkgconf.svg?branch=master)](https://travis-ci.org/pkgconf/pkgconf) -pkgconf is a tool and framework (`libpkgconf`) which provides compiler and linker configuration for -development frameworks. +`pkgconf` is a program which helps to configure compiler and linker flags for +development frameworks. It is similar to pkg-config from freedesktop.org. -## general summary +`libpkgconf` is a library which provides access to most of `pkgconf`'s functionality, to allow +other tooling such as compilers and IDEs to discover and use frameworks configured by +pkgconf. -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. - -If you're wondering what pkg-config is useful for, you might find the tutorial/guide -docs for [legacy pkg-config][pcdocs] useful. - - [pcdocs]: http://people.freedesktop.org/~dbn/pkg-config-guide.html - -`libpkgconf` is a library which allows other tools, such as compilers and IDEs, to -discover and use frameworks configured by pkgconf. - -## usage +## using `pkgconf` with autotools Implementations of pkg-config, such as pkgconf, are typically used with the PKG_CHECK_MODULES autoconf macro. As far as we know, pkgconf is @@ -39,7 +25,7 @@ can run: $ export PKG_CONFIG=/usr/bin/pkgconf -## technical design (why pkgconf is better for distros) +## comparison of `pkgconf` and `pkg-config` dependency resolvers pkgconf builds an acyclic directed dependency graph. This allows for the user to more conservatively link their binaries -- which may be helpful in some @@ -50,11 +36,7 @@ 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. - -## other differences versus pkg-config +## linker flags optimization As previously mentioned, pkgconf makes optimizations to the linker flags in both the case of static and shared linking in order to avoid overlinking binaries and also @@ -68,13 +50,16 @@ Doing so is discouraged by the [freedesktop tutorial][fd-tut] anyway. [fd-tut]: http://people.freedesktop.org/~dbn/pkg-config-guide.html -Beyond that, we do not provide bug-level compatibility with pkg-config. What that means -is, if you feel that there is a legitimate regression verses pkg-config, do let us know, -but also make sure that the .pc files are valid and follow the rules of the -[pkg-config tutortial][fd-tut], as most likely fixing them to follow the specified +## compatibility with pkg-config + +We do not provide bug-level compatibility with pkg-config. + +What that means is, if you feel that there is a legitimate regression versus pkg-config, +do let us know, but also make sure that the .pc files are valid and follow the rules of +the [pkg-config tutortial][fd-tut], as most likely fixing them to follow the specified rules will solve the problem. -## compiling +## compiling `pkgconf` and `libpkgconf` pkgconf is basically compiled the same way any other autotools-based project is compiled: @@ -105,6 +90,9 @@ to make this determination themselves. Release tarballs are available at . +Please do not use the github tarballs as they are not pristine (instead generated by github everytime +a download occurs). + ## reporting bugs See .