Boost logo

Boost-Build :

From: Alexey Pakhunov (alexeypa_at_[hidden])
Date: 2005-09-08 14:03:17


Hi,

I just figured out that some of my messages didn't appear in the list. I
bet I sent them but I can't see them on
http://groups.yahoo.com/group/jamboost/messages.

So instead of resending them I decided to gather status of all
subpatches I sent in one place. I think it makes sense. Here we go.

1. msplatformsdk feature

The .diff has been posted here:
http://groups.yahoo.com/group/jamboost/message/11133

There was a short discussion about the feature. Two main questions were:

- Should the feature be called 'msplatformsdk' or it has to be more
generic, something like <use-sdk>msplatformsdk, <use-sdk>posixsdk, etc?

- Should we have a common way to set INCLUDE, LIB, PATH and
potentially other environment variables as basis for implementation of
SDK-related functionality.

Both questions are still unanswered. So I hope everyone interested will
share with us his or her opinion.

2. cpu-arch feature

'architecture', 'address-model' and 'instruction-set' features have been
ported from v1 instead of 'cpu-arch'. Still there are some issues with
these features. I described it here:

http://groups.yahoo.com/group/jamboost/message/11157

I posted a solution for this issue (see empty-optional.diff) but it was
lost:

------------
Rene Rivera wrote:

> I'll add them if we need it. But ideally it would be best to be able
to handle optional features correctly.

Take a look at the attached .diff. It adds and ability to match the
condition "an option is not in property set".

> That leads me to think that perhaps you could:
>
> flags msvc .SETUP : <architecture> " x86" ;
>
> But that doesn't make sense from my POV. *We need a way to specify this.*

Now I can write the following:

1. flags msvc .SETUP : <architecture>/<address-model> "1" ;
2. flags msvc .SETUP : <architecture>/<address-model>32 "1" ;
3. flags msvc .SETUP : <architecture>x86/<address-model> "1" ;
4. flags msvc .SETUP : <architecture>x86/<address-model>32 "1" ;

Each of four lines can be matched by the corresponding property set:

1. "" (empty)
2. <address-model>32
3. <architecture>x86
4. <architecture>x86 <address-model>32

> Let's wait until Volodya responds, he may now how this should be done.

Yes. I'd like to know his opinion too. :-)
------------

3. configuration class & modification of check-init-parameters rule

I posted this one a week ago but still didn't get any comments:
http://groups.yahoo.com/group/jamboost/message/11132

Is it acceptable? Not acceptable?

Best regards/Venlig hilsen,
Alexey Pakhunov.
 --------------060604010501000408010903 Content-Type: text/plain;
name="empty-optional.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="empty-optional.diff"

? empty-optional.diff
Index: feature.jam
===================================================================
RCS file: /cvsroot/boost/boost/tools/build/v2/build/feature.jam,v
retrieving revision 1.56
diff -c -3 -r1.56 feature.jam
*** feature.jam 28 May 2004 10:45:30 -0000 1.56
--- feature.jam 2 Sep 2005 06:11:16 -0000
***************
*** 176,182 ****
return $(result) ;
}

! # returns true iff all elements of names are valid features.
rule valid ( names + )
{
if $(names) in $(.all-features)
--- 176,182 ----
return $(result) ;
}

! # returns true if all elements of names are valid features.
rule valid ( names + )
{
if $(names) in $(.all-features)
***************
*** 425,431 ****
values = [ regex.split $(value-string) - ] ;
}

! if ! ( $(values[1]) in $($(feature).values) )
{
error \"$(values[1])\" is not a known value of feature $(feature)
: legal values: \"$($(feature).values)\" ;
--- 425,434 ----
values = [ regex.split $(value-string) - ] ;
}

! if ! ( $(values[1]) in $($(feature).values) ) &&
!
! # An empty value is allowed for optional features
! ( $(values[1]) || ! ( optional in $($(feature).attributes) ) )
{
error \"$(values[1])\" is not a known value of feature $(feature)
: legal values: \"$($(feature).values)\" ;
***************
*** 585,591 ****

if $(composite-property) in $(components)
{
! errror composite property "$(composite-property)" cannot have itself as a component ;
}
$(composite-property).components = $(component-properties) ;
}
--- 588,594 ----

if $(composite-property) in $(components)
{
! error composite property "$(composite-property)" cannot have itself as a component ;
}
$(composite-property).components = $(component-properties) ;
}
Index: property.jam
===================================================================
RCS file: /cvsroot/boost/boost/tools/build/v2/build/property.jam,v
retrieving revision 1.51
diff -c -3 -r1.51 property.jam
*** property.jam 16 Jun 2005 10:59:03 -0000 1.51
--- property.jam 2 Sep 2005 06:04:07 -0000
***************
*** 249,255 ****
{
feature.validate-value-string $(feature) $(value) ;
}
! else if ! $(value)
{
feature = [ ungrist $(property:G) ] ; # Ungrist for better error messages
msg = "No value specified for feature '$(feature)'" ;
--- 249,255 ----
{
feature.validate-value-string $(feature) $(value) ;
}
! else if ! ( $(value) || ( optional in [ feature.attributes $(feature) ] ) )
{
feature = [ ungrist $(property:G) ] ; # Ungrist for better error messages
msg = "No value specified for feature '$(feature)'" ;
Index: toolset.jam
===================================================================
RCS file: /cvsroot/boost/boost/tools/build/v2/build/toolset.jam,v
retrieving revision 1.34
diff -c -3 -r1.34 toolset.jam
*** toolset.jam 5 Aug 2005 09:43:15 -0000 1.34
--- toolset.jam 2 Sep 2005 07:15:13 -0000
***************
*** 129,140 ****
# 'properties', or an empty list if no such element exists.
rule find-property-subset ( property-sets * : properties * )
{
local result ;
for local s in $(property-sets)
{
if ! $(result)
{
! if [ feature.split $(s) ] in $(properties)
{
result = $(s) ;
}
--- 129,159 ----
# 'properties', or an empty list if no such element exists.
rule find-property-subset ( property-sets * : properties * )
{
+ # cut property values off
+ local prop-keys ;
+ for local i in $(properties)
+ {
+ prop-keys += $(i:G) ;
+ }
+
local result ;
for local s in $(property-sets)
{
if ! $(result)
{
! local subset ;
! for local i in [ feature.split $(s) ]
! {
! # Hanlde properties without value (like '<architecture>').
! # Such properties should be used for matching only if
! # 'properties' contains such properties
! if $(i:G=) || ( $(i:G) in $(prop-keys) )
! {
! subset += $(i) ;
! }
! }
!
! if $(subset) in $(properties)
{
result = $(s) ;
}
***************
*** 381,384 ****
--- 400,409 ----
local p = <b>0 <c>1 <d>2 <e>3 <f>4 ;
assert.result <c>1/<d>2/<e>3 : find-property-subset <c>1/<d>2/<e>3 <a>0/<b>0/<c>1 <d>2/<e>5 <a>9 : $(p) ;
assert.result : find-property-subset <a>0/<b>0/<c>9/<d>9/<e>5 <a>9 : $(p) ;
+
+ local p-set = <a>/<b> <a>0/<b> <a>/<b>1 <a>0/<b>1 ;
+ assert.result <a>/<b> : find-property-subset $(p-set) : ;
+ assert.result <a>0/<b> : find-property-subset $(p-set) : <a>0 <c>2 ;
+ assert.result <a>/<b>1 : find-property-subset $(p-set) : <b>1 <c>2 ;
+ assert.result <a>0/<b>1 : find-property-subset $(p-set) : <a>0 <b>1 ;
}
 --------------060604010501000408010903 Content-Type: text/plain;
name="builtin.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="builtin.diff"

Index: builtin.jam
===================================================================
RCS file: /cvsroot/boost/boost/tools/build/v2/tools/builtin.jam,v
retrieving revision 1.176
diff -c -3 -r1.176 builtin.jam
*** builtin.jam 16 Aug 2005 10:59:50 -0000 1.176
--- builtin.jam 31 Aug 2005 16:22:49 -0000
***************
*** 32,37 ****
--- 32,41 ----

feature stdlib : native : propagated composite ;

+ # <msplatformsdk> provides ability to chosse between MS Platform SDK
+ # headers and libraries and standalone MS Platform SDK.
+ feature msplatformsdk : builtin external : propagated ;
+
feature link : shared static : propagated ;
feature runtime-link : shared static : propagated ;
feature runtime-debugging : on off : propagated ;
 --------------060604010501000408010903--


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