GNでV8を構築する

V8はGNの助けを借りて構築されています。GNは他の多くの構築システムに対する構築ファイルを生成するもので、ある種のメタ構築システムです。したがって、構築方法は使用している「バックエンド」構築システムとコンパイラによって異なります。
以下の手順では、すでにV8のチェックアウトがあり、構築の依存関係をインストールしていることを前提としています。

GNの詳細については、ChromiumのドキュメントまたはGN独自のドキュメントで確認できます。

ソースからV8を構築するには3つの手順が必要です

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

V8を構築するための2つのワークフローがあります

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を使用すると、必要なバイナリを構築し、単一のコマンドで特定のテストを実行できます

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'

コンパイルにgomaを使用したリリースモードで、arm64シミュレーターを使用して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のコンパイル #

V8のすべてを構築するには(gnによってx64.releaseフォルダに生成されたと想定して)、実行します

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で報告するか、v8-users@googlegroups.comでサポートをリクエストしてください。