On Thu, May 21, 2015 at 9:35 AM, Rene Rivera <grafikrobot@gmail.com> wrote:


On Thu, May 21, 2015 at 8:37 AM, Stefan Seefeld <stefan@seefeld.name> wrote:
Hi,

I'm looking at the boost-install rule in Boost's Jamroot file.

Wow.. Just looked.. The code under that has gotten way more complicated since the time I first wrote this :-\ 

For Boost.Python I'd like to use a modified version of that which
installs the headers itself, rather than doing it via a dependency. (I
was searching for "install-proper-headers" but couldn't find it. Any
hints ?)

I couldn't find it, or decipher where it comes from either :-( 
 
So, I define

  headers = [ path.glob-tree $(SELF)/include/boost : *.hpp ] ;
[..cut..] 

  error: The patterns to 'glob-tree' may not include directory

which I don't understand, as the glob-tree rule appears to be defined to
take a 'roots' argument which is a (directory) location.

What am I missing ?

Try just the project level versions of glob:

headers = [ glob-tree $(SELF)/include/boost : *.hpp ] ;

or

headers = [ glob-tree-ex $(SELF)/include/boost : *.hpp ] ;
 
What is the suggested way to install headers, while preserving their
directory structure (relative to some common prefix) ?

Well.. The install target has an option to preserve directory structure. But I can't decipher what the current boost-install code does (I know I should be able to.. but man that jam code is even hard for me).

PS. rule declare_install_and_stage_proper_targets in boostcpp.jam might have enough hints as to the package.install usage you need.

--
-- Rene Rivera
-- Grafik - Don't Assume Anything
-- Robot Dreams - http://robot-dreams.net
-- rrivera/acm.org (msn) - grafikrobot/aim,yahoo,skype,efnet,gmail