| diff --git a/src/build/toolset.jam b/src/build/toolset.jam |
| index b5defd5..a942cd9 100644 |
| --- a/src/build/toolset.jam |
| +++ b/src/build/toolset.jam |
| @@ -17,6 +17,8 @@ import regex ; |
| import sequence ; |
| import set ; |
| import property-set ; |
| +import order ; |
| +import "class" : new ; |
| |
| |
| .flag-no = 1 ; |
| @@ -237,6 +239,7 @@ rule handle-flag-value ( value * : properties * ) |
| if $(value:G) |
| { |
| local matches = [ property.select $(value) : $(properties) ] ; |
| + local order ; |
| for local p in $(matches) |
| { |
| local att = [ feature.attributes $(p:G) ] ; |
| @@ -263,11 +266,24 @@ rule handle-flag-value ( value * : properties * ) |
| } |
| if path in $(att) |
| { |
| - result += [ sequence.transform path.native : $(values) ] ; |
| + values = [ sequence.transform path.native : $(values) ] ; |
| } |
| - else |
| + result += $(values) ; |
| + if $(values[2]) |
| { |
| - result += $(values) ; |
| + if ! $(order) |
| + { |
| + order = [ new order ] ; |
| + } |
| + local prev ; |
| + for local v in $(values) |
| + { |
| + if $(prev) |
| + { |
| + $(order).add-pair $(prev) $(v) ; |
| + } |
| + prev = $(v) ; |
| + } |
| } |
| } |
| else |
| @@ -275,6 +291,11 @@ rule handle-flag-value ( value * : properties * ) |
| result += $(p:G=) ; |
| } |
| } |
| + if $(order) |
| + { |
| + result = [ $(order).order [ sequence.unique $(result) : stable ] ] ; |
| + DELETE_MODULE $(order) ; |
| + } |
| } |
| else |
| { |