commonモジュール

  • 概要 - 各ツールに共通の機能(ファイル・ディレクトリ操作,ツールの探索など)を提供する
  • 場所 - BOOST_BUILD_PATH/tools/common.jam

check-init-parameters

rule check-init-parameters ( toolset : * )
引数・戻り値
要調査

get-invocation-command

rule get-invocation-command ( toolset : tool : user-provided-command * : additional-paths * : path-last ? )
引数・戻り値
  • toolset
  • tool
  • user-provided-command
  • additional-paths
  • path-last
要調査

get-absolute-tool-path

rule get-absolute-tool-path ( command )
概要

与えられたコマンドの絶対パスを返す.コマンドがパス部分を含むならばそれを返す.それ以外なら環境変数PATHからも探索される.

引数・戻り値
  • command - 探索するコマンド
  • 戻り値 - コマンドへの絶対パスディレクトリ部分のみ).見つからなければ空文字列
# rubyへの絶対パスを表示
ECHO [ get-absolute-tool-path ruby ] ;

find-tool

rule find-tool ( name : additional-paths * : path-last ? )
概要

指定された名前のツールを探索する

  • name - 探索するツールの名前
  • additional-paths - 追加の探索パス
  • path-last - OS規定のパス,追加の探索パスを探索した後に最後に探索するパス
  • 戻り値 - 以下の順
    1. OS規定のパス(PATH環境変数)中に見つかればname
    2. additional-paths中に見つかればフルパス
    3. 見つからなければ空文字列
if [ common.find-tool perl ]
{
  # perlが使える場合
}
else if [ common.find-tool ruby ]
{
  # rubyが使える場合
}
else
{
  # どっちも見つからねーよ!!
  errors.error "error: no available tool" ;
}
要調査:last-path指定時の挙動が不明

check-tool-aux

rule check-tool-aux ( command )
概要

コマンドがディレクトリ部分を持たない場合PATH環境変数から探索,パス部分を持つ場合そのファイルの存在をチェック.後者の場合,拡張子の指定まで必要

引数・戻り値
  • command - 探索するコマンド名,またはコマンドへの拡張子付きフルパス
  • 戻り値 - 見つかればcommand,見つからなければ空文字列

check-tool

rule check-tool ( xcommand + )
概要

与えられた呼び出し構文によってコマンドが呼び出されるかどうかをチェック

引数・戻り値
  • xcommand - 呼び出し構文.コマンド引数によって構成されるリストで構わない
要調査 - 拡張子付きの呼び出し構文でないと機能しないが,そのような設計にしている理由が不明

handle-options

rule hendle-options ( toolset : condition * : command ? : options * )
概要

要調査

引数・戻り値
  • toolset
  • condition
  • command
  • options
要調査

get-program-files-dir

rule get-program-files-dir ( )
概要

Windows環境下でProgram Filesディレクトリを返す

引数・戻り値
  • 戻り値 - Program Filesディレクトリへのパス.注意!:非Windows環境下でも戻り値が空文字列でない(デフォルトのC:\Program Filesが戻る)

variable-setting-command

rule variable-setting-command ( variable value )
概要

実行環境下でのシェル変数設定コマンドを返す

引数・戻り値
  • variable - 設定するシェル変数名
  • value - 変数に設定する値
  • 戻り値 - シェル変数を設定するコマンド文字列
import os ;

set-command = [ common.variable-setting-command HOGE huga ] ;

rule variable-dereference-string ( variable )
{
  if [ os.name ] = NT
  {
    result = %$(variable)% ;
  }
  else
  {
    result = $$(variable) ;
  }
  return $(result) ;
}

deref-command = [ variable-dereference-string HOGE ] ;

rule set-and-echo ( target )
{
  NOTFILE $(target) ;
  ALWAYS $(target) ;
}

actions set-and-echo
{
  $(set-command)
  echo $(deref-command)
}

# t1はダミーターゲット
set-and-echo t1 ;
DEPENDS all : t1 ;

path-variable-setting-command

rule path-variable-setting-command ( variable : values * : exported ? )
概要

シェル変数を設定するコマンドを返す.各値はパスと仮定され,値を区切るOS固有の文字(Windowsなら; UNIXなら:)で各値が区切られる

引数・戻り値
  • variable - 値を設定するシェル変数名
  • values - 設定する値
  • exported - UNIX環境下で変数をexportするかどうか true or false
# Windows環境下
local command = [ path-variable-setting-command PATH : C: "C:\\Program Files" ]
# command = "set PATH=C:;C:\Program Files"

# UNIX環境下
local command = [ path-variable-setting-command PATH : /bin /usr/bin /usr/local/bin ]
# command = "PATH=/bin:/usr/bin:/usr/local/bin"

# UNIX環境下,exported
local command = [ path-variable-setting-command PATH : /bin /usr/bin : true ]
# command = "PATH=/bin:/usr/bin;export PATH"

file-creation-command

rule file-creation-command ( )
概要

ファイルを新規生成するコマンド(NT環境下では"echo. > ",それ以外では"touch ")を返す.ファイルが既存の場合の振る舞いは未定

戻り値 - ファイルを新規に生成するコマンド

MkDir

rule MkDir ( target )
概要

ディレクトリを新規に生成する.親ディレクトリのないディレクトリを生成しようとした場合,親ディレクトリから再帰的に生成する

引数・戻り値
# child/grand_childディレクトリを生成する.childディレクトリがない場合
# childディレクトリがまず生成される
common.MkDir child/grand_child ;
DEPENDS all : child/grand_child ;

copy

rule copy ( target : source )
概要

ファイルをコピーする

引数・戻り値
  • target - コピー先のファイル
  • source - コピー元のファイル
  • 戻り値 - なし
# copied.cppをsource.cppからコピーする.common.copyは依存関係を生成しないため
# ビルドターゲットとcommon.copyのターゲットとの間に依存関係がないと何もしない.
# またsourceとtargetの間の依存関係も生成しない.そのため,そのままでは
# sourceが更新されてもtargetは更新されない.
# 以下は all -> target.cpp -> sources.cpp という依存関係を明示している例.
common.copy copied.cpp : source.cpp ;
DEPENDS copied.cpp : source.cpp ;
DEPENDS all : copied.cpp ;

response-file

rule response-file ( targets + : sources * : the-response-file : properties * )
概要

レスポンスファイルを生成する.レスポンスファイルには'sources'で指定したすべてのソースを含んでおり,また'targets'で指定した全てのターゲットがレスポンスファイルに依存する

引数・戻り値
  • target - レスポンスファイルに依存するターゲット
  • sources - レスポンスファイルに含まれるソースファイル
  • the-response-file - レスポンスファイル名
  • properties - 要調査