bjam_target_path
property.as-path相当のパス生成アルゴリズムを実装しました。
今日の差分
property.as-pathは、グリスト化されたプロパティのリストを渡すと、
- デフォルト値またはABIに関係のないプロパティを削除、featureの属性がimplicitなら非グリスト化(feature.minimize)
- featureの名前順にソートする。グリスト化されてないものは先頭に来る。(path-order)
- 「<feature>value」を「feature-value」の形に変えて「/」で区切る
の結果のパスが返されます。
入力が「<runtime-link>shared <threading>multi <toolset-msvc:version>8.0 <toolset>msvc <variant>debug」なら、
- <threading>multi msvc-8.0 debug
- msvc-8.0 debug <threading>multi
- msvc-8.0/debug/threading-multi
となります。
implicit属性のtoolsetとvariantの順番は非グリスト化されていてもfeatureの名前で決まるため、toolsetが先になります。
このようにproperty.as-pathを正しく実装するためには、全てのfeatureのデフォルト値と属性を知っておく必要があるわけですが、そうするとjamファイルをたくさん読み込む必要があるので、今のところ必要最低限のfeatureのみハードコーディングしています。