toolset.jam.patch 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. diff --git a/src/build/toolset.jam b/src/build/toolset.jam
  2. index b5defd5..a942cd9 100644
  3. --- a/src/build/toolset.jam
  4. +++ b/src/build/toolset.jam
  5. @@ -17,6 +17,8 @@ import regex ;
  6. import sequence ;
  7. import set ;
  8. import property-set ;
  9. +import order ;
  10. +import "class" : new ;
  11. .flag-no = 1 ;
  12. @@ -237,6 +239,7 @@ rule handle-flag-value ( value * : properties * )
  13. if $(value:G)
  14. {
  15. local matches = [ property.select $(value) : $(properties) ] ;
  16. + local order ;
  17. for local p in $(matches)
  18. {
  19. local att = [ feature.attributes $(p:G) ] ;
  20. @@ -263,11 +266,24 @@ rule handle-flag-value ( value * : properties * )
  21. }
  22. if path in $(att)
  23. {
  24. - result += [ sequence.transform path.native : $(values) ] ;
  25. + values = [ sequence.transform path.native : $(values) ] ;
  26. }
  27. - else
  28. + result += $(values) ;
  29. + if $(values[2])
  30. {
  31. - result += $(values) ;
  32. + if ! $(order)
  33. + {
  34. + order = [ new order ] ;
  35. + }
  36. + local prev ;
  37. + for local v in $(values)
  38. + {
  39. + if $(prev)
  40. + {
  41. + $(order).add-pair $(prev) $(v) ;
  42. + }
  43. + prev = $(v) ;
  44. + }
  45. }
  46. }
  47. else
  48. @@ -275,6 +291,11 @@ rule handle-flag-value ( value * : properties * )
  49. result += $(p:G=) ;
  50. }
  51. }
  52. + if $(order)
  53. + {
  54. + result = [ $(order).order [ sequence.unique $(result) : stable ] ] ;
  55. + DELETE_MODULE $(order) ;
  56. + }
  57. }
  58. else
  59. {