Boost logo

Boost-Build :

From: Rene Rivera (grafik.list_at_[hidden])
Date: 2006-04-02 15:29:21


David Abrahams wrote:
> Rene Rivera <grafik.list_at_[hidden]> writes:
>
>> Jürgen Hunold wrote:
>>> Hi !
>>>
>>> Am Maandag 27 März 2006, 10:11 schrieb Vladimir Prus:
>>>> Hi Rene,
>>>> Like Dave, I'm a bit concerned about using <*> which means something
>>>> completely different in V1. Maybe, we can just use '*' without '<>'? Or
>>>> maybe, some keyword, like "usage". Using just '*' can look like black
>>>> magic.
>>> What about naming the section (alike the "project") and then add a section
>>> named "common-requirements" and be done ?
>>> This would add its entries to both "requirements" (better
>>> "build-requirements" ?) and "usage-requirements".
>> After thinking on it for a few days that is certainly one viable route.
>> Also the suggestion to use "build-requirements" for consistency is good.
>> Perhaps that should be added as an alias for "requirements". With that
>> in mind a few other possibilities spring to mind:
>>
> I think we should keep experimenting. For example:
>
> lib foo : foo.cpp
> :
> self: # the default
> <define>COOL=1
>
> all: # or maybe "self+users:"
> <define>ENABLE_LOG=1
>
> users:
> <link>shared:<define>BUILD_DLL=1
> ;

So you prefer the first choice I gave of having a single delimited
section for the requirements. It's just the labels to use as delimiters
you don't like?

Of the above I don't particularly like "self:" it's not descriptive. I
know what it means, but I doubt a new user is going to understand it.
Same goes for "all:". I like the idea of using a composition of the
various labels, although I might prefer using the current composition
"," separator...

lib foo : foo.cpp :
   build:
     <define>COOL=1
   build,users:
     <define>ENABLE_LOG=1
   users:
     <link>shared:<define>USE_DLL=1
   ;

Personally I like the "build" label. It indicative of when the
requirements are used, only when building the target. For the usage
requirements "users" is good, but it's not a currently familiar term. A
shorter, and corresponding term is "use". That matches the "<use>"
feature directly. The example:

lib foo : foo.cpp :
   build:
     <define>COOL=1
   build,use:
     <define>ENABLE_LOG=1
   use:
     <link>shared:<define>USE_DLL=1
   ;

Can I take by your suggestion of "self:" etc, that you don't like the
current BBv2 labels of "requirements" and "usage-requirements"?

-- 
-- Grafik - Don't Assume Anything
-- Redshift Software, Inc. - http://redshift-software.com
-- rrivera/acm.org - grafik/redshift-software.com
-- 102708583/icq - grafikrobot/aim - grafikrobot/yahoo

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