メインコンテンツまでスキップ

GNを使用してV8をビルドする

V8はGNを使用して構築されます。GNは他の多くのビルドシステムのためのビルドファイルを生成するためのメタビルドシステムです。そのため、どの”バックエンド”のビルドシステムやコンパイラを使用するかによって、ビルド手順が変わります。 以下の手順は、既にV8のチェックアウトを行い、ビルド依存関係をインストールしていることを前提としています。

GNに関する追加情報は、ChromiumのドキュメントGN自身のドキュメントに記載されています。

V8をソースからビルドするには、3つのステップが必要です:

  1. ビルドファイルの生成
  2. コンパイル
  3. テストの実行

V8をビルドするには2つのワークフローがあります:

  • 3つのステップを便利に組み合わせたヘルパースクリプトgmを使用する便利なワークフロー
  • 各ステップを手動で実行する低レベルのコマンドを使用する生のワークフロー

gmを使用してV8をビルドする(便利なワークフロー)

gmは、ビルドファイルの生成、ビルドのトリガー、およびオプションでテストの実行を行う便利なオールインワンスクリプトです。このスクリプトは、V8のチェックアウト中のtools/dev/gm.pyにあります。シェル設定にエイリアスを追加することをお勧めします:

alias gm=/path/to/v8/tools/dev/gm.py

その後、gmを使用して、x64.releaseのような既知の設定でV8をビルドできます:

gm x64.release

ビルド直後にテストを実行するには、以下を実行します:

gm x64.release.check

gmは実行中のすべてのコマンドを出力するため、必要に応じてそれを追跡し再実行することが容易です。

gmを使用すると、必要なバイナリをビルドし、特定のテストを1つのコマンドで実行できます:

gm x64.debug mjsunit/foo cctest/test-bar/*

V8をビルドする: 生の、手動のワークフロー

ステップ 1: ビルドファイルを生成する

ビルドファイルを生成するにはいくつかの方法があります:

  1. 生の手動ワークフローでは、直接gnを使用します。
  2. v8genというヘルパースクリプトが、一般的な設定用にプロセスを簡素化します。

gnを使用してビルドファイルを生成する

gnを使用して、ディレクトリout/foo用のビルドファイルを生成します:

gn args out/foo

これによりエディタウィンドウが開き、gnの引数を指定できます。また、引数をコマンドラインで渡すこともできます:

gn gen out/foo --args='is_debug=false target_cpu="x64" v8_target_cpu="arm64" use_goma=true'

これにより、arm64シミュレータを使用したリリースモードでgomaを使用してV8をコンパイルするためのビルドファイルが生成されます。

利用可能なすべてのgn引数の概要を表示するには、以下を実行します:

gn args out/foo --list

v8genを使用してビルドファイルを生成する

V8リポジトリには、一般的な設定用のビルドファイルをより簡単に生成するための便利なスクリプトv8genが含まれています。シェル設定にエイリアスを追加することをお勧めします:

alias v8gen=/path/to/v8/tools/dev/v8gen.py

v8gen --helpを実行して、詳細情報を確認してください。

利用可能な設定(またはマスターのボット)を一覧表示します:

v8gen list
v8gen list -m client.v8

client.v8ウォーターフォールの特定のボットのようにフォルダfooでビルドする:

v8gen -b 'V8 Linux64 - debug builder' -m client.v8 foo

ステップ 2: V8をコンパイルする

gnx64.releaseフォルダに生成されたと仮定して、V8全体をビルドするには、以下を実行します:

ninja -C out/x64.release

d8のような特定のターゲットをビルドするには、それらをコマンドに追加します:

ninja -C out/x64.release d8

ステップ 3: テストを実行する

テストドライバに出力ディレクトリを渡すことができます。他の関連するフラグはビルドから推測されます:

tools/run-tests.py --outdir out/foo

out.gnにある最新のビルドをテストすることもできます:

tools/run-tests.py --gn

ビルドの問題がありますか?v8.dev/bugでバグを報告するか、[email protected]で助けを求めてください。