
On Mon, Jul 30, 2007 at 10:09:43AM +0400, Vladimir Prus wrote:
Roger Leigh wrote:
2) pkg-config also provides other extra information in addition to the library name for linking:
a) The CFLAGS needed to build. This might be as simple as a -Iincludedir, but could also include -Ddef and threading options, such as -pthread if using multithreaded libraries.
b) LDFLAGS including the library directory -Ldir option, needed to find the correct instance of the library and the -llibrary option.
c) Libs.private is a list of dependent libraries needed to link. When linking dynamically, at least on ELF systems, dependent libraries are seen as NEEDED entries in the dynamic section of the symbol table. But, static libraries carry no dependency information; you have to know, and this provides a mechanism to link statically by allowing discovery of the depdendencies.
Maybe I need to link to libicu, maybe I don't. This can be tailored to the specific build of Boost, so there's no ambiguity. i.e. the pkg-config file is generated with plaform-, compiler- and build-specific information embedded in it as needed.
d) Requires and Conflicts can specify versioned dependencies for other libraries also using pkg-config. Currently, I don't think you would need this, but libraries based on Boost libraries can then Require boost pkg-config modules.
Those (a)-(c) points above are the most clear explanations of pkgconfig benefits I've heard on this list, and it appears reasonable to add pkgconfig support to Boost.Build. At the same time, I think we *first* should try to change the build process so that properly named libraries are created on Linux, so that things work even without pkgconfig.
let me stress the fact that sources using linux names would not be generally portable to other platforms. such a solution would not be much different from directly using decorated library names, only a little more easy to use. thanks, domenico -----[ Domenico Andreoli, aka cavok --[ http://www.dandreoli.com/gpgkey.asc ---[ 3A0F 2F80 F79C 678A 8936 4FEE 0677 9033 A20E BC50