bjam_target_path

property.as-path相当のパス生成アルゴリズムを実装しました。
今日の差分


property.as-pathは、グリスト化されたプロパティのリストを渡すと、

  1. デフォルト値またはABIに関係のないプロパティを削除、featureの属性がimplicitなら非グリスト化(feature.minimize)
  2. featureの名前順にソートする。グリスト化されてないものは先頭に来る。(path-order)
  3. 「<feature>value」を「feature-value」の形に変えて「/」で区切る

の結果のパスが返されます。
入力が「<runtime-link>shared <threading>multi <toolset-msvc:version>8.0 <toolset>msvc <variant>debug」なら、

  1. <threading>multi msvc-8.0 debug
  2. msvc-8.0 debug <threading>multi
  3. msvc-8.0/debug/threading-multi

となります。
implicit属性のtoolsetとvariantの順番は非グリスト化されていてもfeatureの名前で決まるため、toolsetが先になります。


このようにproperty.as-pathを正しく実装するためには、全てのfeatureのデフォルト値と属性を知っておく必要があるわけですが、そうするとjamファイルをたくさん読み込む必要があるので、今のところ必要最低限のfeatureのみハードコーディングしています。