From 9925b770384246ab2f620bd2b0b8840d7ee804db Mon Sep 17 00:00:00 2001 From: Vladimir Prus Date: Mon, 28 Jul 2003 07:35:33 +0000 Subject: [PATCH] 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] --- new/feature.jam | 30 ++++++++++++++++++++++++++++-- v2/build/feature.jam | 30 ++++++++++++++++++++++++++++-- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/new/feature.jam b/new/feature.jam index f681cddc8..ee5005b05 100644 --- a/new/feature.jam +++ b/new/feature.jam @@ -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__ ( ) gcc debug native dummy1 : add-defaults static foobar on gcc:FOO ; + + set-default : static ; + assert.result static + : defaults + ; + assert.result gcc foo stlport 3 /path/to/stlport MAGIC=3 : run-actions gcc foo stlport 3 diff --git a/v2/build/feature.jam b/v2/build/feature.jam index f681cddc8..ee5005b05 100644 --- a/v2/build/feature.jam +++ b/v2/build/feature.jam @@ -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__ ( ) gcc debug native dummy1 : add-defaults static foobar on gcc:FOO ; + + set-default : static ; + assert.result static + : defaults + ; + assert.result gcc foo stlport 3 /path/to/stlport MAGIC=3 : run-actions gcc foo stlport 3