From dd5615c9cb5de249d41b132db5f033a5c829de52 Mon Sep 17 00:00:00 2001 From: Vladimir Prus Date: Tue, 24 Aug 2004 06:16:22 +0000 Subject: [PATCH] Handle && inside path features, not only in free features. This allows to use "b&&a" to specify two include paths in specific order: specifying "b a" will sort the paths lexicographically. This is experimental interface. [SVN r24691] --- v2/build/toolset.jam | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/v2/build/toolset.jam b/v2/build/toolset.jam index 652126458..7b1196291 100644 --- a/v2/build/toolset.jam +++ b/v2/build/toolset.jam @@ -13,6 +13,7 @@ import path ; import generators ; import set : difference ; import regex ; +import sequence ; .flag-no = 1 ; @@ -195,25 +196,30 @@ rule set-target-variables ( rule-or-module targets + : properties * ) # and must be actualized result += [ $(p:G=).actualize ] ; } - else if path in $(att) + else if path in $(att) || free in $(att) { - result += [ path.native $(p:G=) ] ; - } - else if free in $(att) - { + local values ; # Treat features with && in the value # specially -- each &&-separated element is considered # separate value. This is needed to handle searched # libraries, which must be in specific order. if ! [ MATCH (&&) : $(p:G=) ] { - result += $(p:G=) ; + values = $(p:G=) ; } else { - result += [ regex.split $(p:G=) "&&" ] ; + values = [ regex.split $(p:G=) "&&" ] ; } - } + if path in $(att) + { + result += [ sequence.transform path.native : $(values) ] ; + } + else + { + result += $(values) ; + } + } else { result += $(p:G=) ;