Bootstrap でツールを書く
bootstrap で書けるツールには 3 種類あります。
-
Mode::ToolBootstrapツリー内コンパイラから何も必要とせず、stage0 の
rustcで実行できるツールにはこれを使用します。 出力は “bootstrap-tools” ディレクトリに配置されます。 このモードは、ターゲットライブラリを含め、stage0 コンパイラだけでビルドされる汎用ツール向けで、 stage 0 でのみ機能します。 -
Mode::ToolStdローカルでビルドされた std に依存するツールにはこれを使用します。 出力は “stageN-tools” ディレクトリに入ります。 このモードはほとんど使われず、主に
libtestを必要とするcompiletest用です。 -
Mode::ToolRustcPrivaterustc_privateメカニズムを使用するツール、 つまりローカルでビルドされたrustcとその rlib アーティファクトに依存するツールにはこれを使用します。 これは他のモードよりも複雑です。 なぜなら、そのツールはrustcに使用されたものと同じコンパイラでビルドされ、 “stageN-tools” ディレクトリに配置されなければならないためです。Mode::ToolRustcPrivateを選択すると、ToolBuildの実装がこれを自動的に処理します。 何か特定の用途で builder のコンパイラを使用する必要がある場合は、 ツールのStepから返されるToolBuildResultから取得できます。
ツールの種類にかかわらず、
ツールの Step 実装から ToolBuildResult を返し、
その中で ToolBuild を使用する必要があります。