2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-16 01:12:13 +00:00

Allow to change the default value of feature.

* new/feature.jam
  (set-default): New rule.
  (defaults): Use stored default value, not first allowed value.
  (extend-feature): Set default value.


[SVN r19323]
This commit is contained in:
Vladimir Prus
2003-07-28 07:35:33 +00:00
parent dce232a600
commit 9925b77038
2 changed files with 56 additions and 4 deletions

View File

@@ -127,9 +127,23 @@ rule feature (
$(attributes).features += $(name) ;
.all-features += $(name) ;
extend $(name) : $(values) ;
extend $(name) : $(values) ;
}
# set default value of the given feature, overriding any previous
# default.
rule set-default ( feature : value )
{
local f = [ grist $(feature) ] ;
if ! $(value) in $($(f).values)
{
errors.error "The specified default value, '$(value)' is invalid"
: "values values are " $($(f).values) ;
}
$(f).default = $(value) ;
}
# return the default property values for the given features.
rule defaults ( features * )
{
@@ -142,7 +156,7 @@ rule defaults ( features * )
}
else
{
result += $(f)$($(f).values[1]) ;
result += $(f)$($(f).default) ;
}
}
return $(result) ;
@@ -369,6 +383,12 @@ local rule extend-feature ( feature : values * )
.all-implicit-values += $(values) ;
}
if ! $($(feature).values)
{
# This is the first value specified for this feature,
# take it as default value
$(feature).default = $(values[1]) ;
}
$(feature).values += $(values) ;
}
@@ -964,6 +984,12 @@ local rule __test__ ( )
<toolset>gcc <variant>debug <stdlib>native <dummy>dummy1
: add-defaults <runtime-link>static <define>foobar <optimization>on <toolset>gcc:<define>FOO
;
set-default <runtime-link> : static ;
assert.result <runtime-link>static
: defaults <runtime-link>
;
assert.result <toolset>gcc <define>foo <stdlib>stlport <magic>3 <include>/path/to/stlport <define>MAGIC=3
: run-actions <toolset>gcc <define>foo <stdlib>stlport <magic>3

View File

@@ -127,9 +127,23 @@ rule feature (
$(attributes).features += $(name) ;
.all-features += $(name) ;
extend $(name) : $(values) ;
extend $(name) : $(values) ;
}
# set default value of the given feature, overriding any previous
# default.
rule set-default ( feature : value )
{
local f = [ grist $(feature) ] ;
if ! $(value) in $($(f).values)
{
errors.error "The specified default value, '$(value)' is invalid"
: "values values are " $($(f).values) ;
}
$(f).default = $(value) ;
}
# return the default property values for the given features.
rule defaults ( features * )
{
@@ -142,7 +156,7 @@ rule defaults ( features * )
}
else
{
result += $(f)$($(f).values[1]) ;
result += $(f)$($(f).default) ;
}
}
return $(result) ;
@@ -369,6 +383,12 @@ local rule extend-feature ( feature : values * )
.all-implicit-values += $(values) ;
}
if ! $($(feature).values)
{
# This is the first value specified for this feature,
# take it as default value
$(feature).default = $(values[1]) ;
}
$(feature).values += $(values) ;
}
@@ -964,6 +984,12 @@ local rule __test__ ( )
<toolset>gcc <variant>debug <stdlib>native <dummy>dummy1
: add-defaults <runtime-link>static <define>foobar <optimization>on <toolset>gcc:<define>FOO
;
set-default <runtime-link> : static ;
assert.result <runtime-link>static
: defaults <runtime-link>
;
assert.result <toolset>gcc <define>foo <stdlib>stlport <magic>3 <include>/path/to/stlport <define>MAGIC=3
: run-actions <toolset>gcc <define>foo <stdlib>stlport <magic>3