BBv2解析メモ その1

Jambase

  • bjam実行ファイルに組み込み
  • ARGV[0]にbjamが含まれているかBOOST_ROOTが定義(BBv1互換)されていればbjamモード、それ以外の場合はjamモード
  • 作業ディレクトリからルートへ向かって順にboost-build.jamを検索する
  • 見つからない場合はBBv1互換のためBOOST_BUILD_PATHとBOOST_ROOTも探す
  • boost-build.jamをインクルードする

boost-build.jam

  • ユーザー定義
  • 通常はBBv2のインストールディレクトリを指定してboost-buildを呼ぶ

boost-build

  • Jambaseで定義されるルール
  • BOOST_BUILD_PATHに引数dirが加えられ、.ENVIRONモジュールにも反映させる
  • BOOST_BUILD_PATHからbootstrap.jamを探し、インクルードする

bootstrap.jam

  • bootstrap.jamのパスをkernel/bootstrap.jamに書き換え、インクルードし直す

kernel/bootstrap.jam

  • bjamのバージョンと組み込み/ネイティブルール、変数のチェック
  • 同じディレクトリからmodules.jamをインクルード
  • modules.importをグローバルモジュールにインポート
  • kernel、util、build、tools、new、.をBOOST_BUILD_PATHに追加して、.ENVIRONモジュールにも反映させる
  • modulesモジュールをインポート(二度目のインクルード)
  • optionモジュールをインポート
  • option.process()の結果が真なら終了
  • "--build-system"オプションで指定したファイルかbuild-systemをインポート

build-system.jam

  • BOOST_BUILD_PATHにtest-config.jamがあればインポート
  • test-config.jamをインポートしたか--ignore-configオプションが指定されていたらuser-config.jam/site-config.jamのロードをスキップ
  • site-config.jamを以下から探し、modules.loadする
    • SystemRoot(NTかCYGWIN)
    • /etc(それ以外)
    • os.home-directories()
    • BOOST_BUILD_PATH
  • project.load-used-projectsにsite-configを追加
  • "--user-config"オプションが指定されていればそこから、そうでなければ以下からuser-config.jamを探し、modules.loadする
    • os.home-directories()
    • BOOST_BUILD_PATH
  • project.load-used-projectsにuser-configを追加