Hi Steve and Vladimir,

I know you're both really busy, so if you haven't got time for this
right now, don't worry.  However, this is becoming increasingly
important.  It was previously a nice to have; with new GCCs, it's
going to become rather more essential if one wishes to have any
hope of proper linking and support more than one Boost release.

With --as-needed in GCC making linking much stricter, knowing
which Boost libraries need linking in is becoming much more of
an issue, especially since you can't rely on indirect linking
doing the right thing.  You are required to know *all* the libraries
you need to link with in advance--and this can change with Boost
versions, and we have no hope of being able to do this reliably without
the same level of support that auto-linking provides Windows users with
suitable compilers.

https://svn.boost.org/trac/boost/ticket/1094
is the upstream ticket for adding pkg-config support.  I've already
done the bulk of the work, the patches are all there.  Do you have
any knowledge of bjam?  I don't, and the missing part is integrating
the patch with the build system.  This is probably trivial if you
have any idea how bjam works, but I don't have the first clue.  I had
a good look, but after several hours I'm still no wiser, so it would
probably be a much more effective use of time and effort for someone
with working bjam knowledge to do the last bit.  With the patches in
the ticket, bjam just needs telling how to spit out and install the
pkg-config .pc files.

auto-link-pkg-config.2.patch is the header patch to supply us with
the needed library dependency information.

boost-pkg-config-gen.cc is the program to acquire the information
and generate the .pc file.  It just needs building with these defines:
  TEST_HEADER - the header to include for a given boost library
  PREFIX - the bjam prefix (however you get at it)
  LIBDIR - the bjam libdir (however you get at it)
So the program just needs building and running once for each Boost
library (bjam must have a list of libraries, or at least provide some
means for us to get at the information).  Then those files just need
installing in $prefix/lib/pkgconfig and the job is done.  If you wish
to support cross-compiling, this could be done by a script post-install.
For distributions like Debian where we compile natively, that's not a
major issue at present, so we could like without cross-compile support.

Users can then just run e.g. "pkg-config --libs boost_filesystem" and
it will tell them exactly which libs are required (or they can use
the autoconf macros to do this automatically).

Even if you don't include the tools directly in Boost, having the
header patch in place will at least allow others to create such tools.


Many thanks,
Roger

-- 
  .''`.  Roger Leigh
 : :' :  Debian GNU/Linux             http://people.debian.org/~rleigh/
 `. `'   Printing on GNU/Linux?       http://gutenprint.sourceforge.net/
   `-    GPG Public Key: 0x25BFB848   Please GPG sign your mail.

Attachment: signature.asc
Description: Digital signature

Reply via email to