Subject: Re: [Boost-build] BUMPITTY BUMP: [git] genrating forward headers
From: Dave Abrahams (dave_at_[hidden])
Date: 2013-08-22 09:01:59
on Wed Aug 21 2013, Steven Watanabe <watanabesj-AT-gmail.com> wrote:
> On 08/21/2013 07:12 PM, Dave Abrahams wrote:
>> Perhaps, but these posts assume a great deal of background that I don't
>> have. I need details filled in, please.
>> For instance, in that post Steven says:
>>> I've applied the Boost.Build changes.
>> Applied them where? What do these changes do?
> In Boost.Build. (mostly tools/build/v2/tools/link.jam).
> These changes specify /how/ to create the header links.
> The remaining changes are to create the link targets
> and modify the rest of Boost to get the dependencies right.
OK, but in trunk? release? somwehere else?
>>> I don't want to apply the changes to Boost proper in svn, since it'll
>>> break without the git layout.
>>> Here are the changes that need to happen in git:
>> What does he mean by "need to happen in git?" We are not making any
>> git-specific commits.
>>> - Use the original boost-root patch (i.e. no <dependency>)
>> Sorry, which patch is that?
> It's somewhere in the archives. I think JÃ¼rgen
> and BjÃ¸rn both posted it earlier in this thread.
>>> - Change all uses of boost//headers to
>>> <implicit-dependency>/boost//headers. <use> <source> and <library> do not
>>> work correctly for handling generated headers.
>>> This is the cause of the build problems with
>>> the original patch.
>> Is this a simple search-and-replace, or does it require some specialized
> A search and replace won't quite work. e.g.
> lib A : a.cpp boost//headers ;
> lib A : a.cpp : <implicit-dependency>/boost//headers ;
> lib B : b.cpp : <library>/boost//headers ;
> lib B : b.cpp : <implicit-dependency>/boost//headers ;
> <implicit-dependency> needs to be in the target requirements.
So, a regexp search. Is there any other relevant prefix other than
>>> - Add <implicit-dependency>/boost//headers to all library and test
>> I /think/ I understand what that means.
> It can be added at the project level:
> project : requirements <implicit-dependency>/boost//headers ;
Good to know, thaks.
>>> - Change the header install glob to search the correct include
>> I have no idea what that means. Please explain.
> The install target has to copy all the boost headers.
> Currently it looks something like:
> headers = [ path.glob-recursive boost : *.hpp *.ipp : .svn ]
> It will need to be changed to search the library specific
> include directories instead, under the git layout only.
What layout should the headers follow in this copy?
>>> The fact that we need to disable everything that is specific for the
>>> modularized layout when building in the monolithic layout complicates
>>> the process of proceeding.
>> Huh; from what I'm reading here it seems like maybe it could be done
>> with a few project-wide bjam variables. Something like:
>> if $(BOOST_SVNLAYOUT)
>> BOOST_HEADER_DEPENDENCY = boost//headers ;
>> BOOST_HEADER_DEPENDENCY = <implicit-dependency>boost//headers ;
>> then replace uses of "boost//headers" with "$(BOOST_HEADER_DEPENDENCY)".
>> Is the problem more complicated than I'm guessing?
> This doesn't need to be conditionalized.
> <implicit-dependency> will work correctly in svn.
>>> I imagine that some test may be used as a config step that allow new
>>> or changed rules to be conditioned or targets to be disabled.
>> Sorry, I don't know what that means.
> I think he means exactly what you just described
> (if $(BOOST_SVNLAYOUT)).
> BOOST_SVNLAYOUT = [ path.glob . :
> path/to/file/that/only/exists/in/git ] ;
-- Dave Abrahams
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk