Boost logo

Boost-Build :

Subject: Re: [Boost-build] Advanced generators, chaining them together...
From: Alexander Sack (pisymbol_at_[hidden])
Date: 2009-01-20 09:01:09


On Mon, Jan 19, 2009 at 8:19 PM, Steven Watanabe <watanabesj_at_[hidden]> wrote:
> AMDG
>
> Alexander Sack wrote:
>>
>> I'm still trekking along converting our internal builds to use bjam to
>> evangelize the tool amongst the unaware! I've run across an
>> interesting build scenario. I have a build target that works like
>> using some custom GNUMake shell commands:
>>
>> m4 file.m4 > file.cfg
>>
>> (simple enough)
>>
>> Then a custom tool is built (binary), call it foogen which is then
>> used to do the following:
>>
>> foogen file.cfg s1.cc
>> foogen file.cfg s2.cc
>> foogen file.cfg s3.h
>>
>> etc. etc.
>>
>> Then those generated source files, s1.cc, s2.cc, s3.h etc. are ALL
>> used in the creation of a library. I was wondering is it worth trying
>> to make this a generator or at least two generators chained together?
>> I'm not sure how to go about this just yet. I thought I had something
>> then I realized it would still not work for what I have.
>>
>> I've created some custom generators to do simple conversions but this
>> contains a level of indirection which complicates it a bit. What
>> makes it worst is that technically the tool will create ALL source
>> files from just doing:
>>
>> foogen file.cfg
>> [a bunch of source files are produced, how to I tell boost-build that
>> when you run this you will produce a bunch of CPP/H files used for
>> compilation?]
>>
>> I was thinking perhaps of just doing the m4 stuff manually (notfile
>> etc.) and then trying to use a generator for the file.cfg type so I
>> can just put that in my library statement (however if the m4 file
>> changes, then I need to full rebuild to pick it up).
>>
>> Has anyone ran into this kind of build scenario before? Currently I
>> have this working with notfiles which is fine but really not much
>> better than the GNUMakefile shell commands we had before.
>>
>> Any suggestions would be greatly appreciated,
>>
>> -aps
>>
>> PS Is there any example of this in the boost-build tree, I was digging
>> into tools/*.jam etc
>
> I don't see a good way to handle this. The problem is that
> to fully automate this, you can't create the targets for the headers and
> source files until you have updated file.cfg, right? bjam doesn't allow
> new targets to be created after it begins updating targets.

Ahhh then that answers at least one of my questions, I can't create
new targets after updating existing ones.

Is there a way though to just work with my foocfg.cfg file and create
many CPP files that could be used to link against to form a library?
The catch here is I also have to build the executable to process
foocfg.cfg file (but I started a thread about that and you had a patch
and Volodya gave me an example which I still have to parse and apply
to my situation).

-aps


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