Zum Hauptinhalt springen

Building V8 mit GN

V8 wird mit Hilfe von GN gebaut. GN ist eine Art Meta-Build-System, da es Build-Dateien für eine Reihe anderer Build-Systeme generiert. Wie Sie bauen, hängt daher davon ab, welches „Back-End“-Build-System und welchen Compiler Sie verwenden. Die folgenden Anweisungen gehen davon aus, dass Sie bereits eine Checkout von V8 haben und die Build-Abhängigkeiten installiert haben.

Weitere Informationen zu GN finden Sie in Chromiums Dokumentation oder GNs eigenen Dokumentationen.

Das Bauen von V8 aus dem Quellcode umfasst drei Schritte:

  1. Build-Dateien generieren
  2. Kompilieren
  3. Tests ausführen

Es gibt zwei Workflows zum Bauen von V8:

  • den Komfort-Workflow mit einem Hilfsskript namens gm, das alle drei Schritte schön kombiniert
  • den einfachen Workflow, bei dem Sie separate Befehle auf einer niedrigeren Ebene für jeden Schritt manuell ausführen

V8 bauen mit gm (der Komfort-Workflow)

gm ist ein Komfort-All-in-One-Skript, das Build-Dateien generiert, den Build auslöst und optional auch die Tests ausführt. Es ist in Ihrem V8-Checkout unter tools/dev/gm.py zu finden. Wir empfehlen, eine Alias für Ihre Shell-Konfiguration hinzuzufügen:

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

Sie können dann gm verwenden, um V8 für bekannte Konfigurationen, wie zum Beispiel x64.release, zu bauen:

gm x64.release

Um die Tests direkt nach dem Build auszuführen, führen Sie aus:

gm x64.release.check

gm gibt alle ausgeführten Befehle aus, was es einfach macht, sie nachzuverfolgen und bei Bedarf erneut auszuführen.

gm ermöglicht das Bauen der erforderlichen Binärdateien und das Ausführen spezifischer Tests mit einem einzigen Befehl:

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

V8 bauen: der einfache, manuelle Workflow

Schritt 1: Build-Dateien generieren

Es gibt mehrere Möglichkeiten, die Build-Dateien zu generieren:

  1. Der einfache, manuelle Workflow beinhaltet die direkte Verwendung von gn.
  2. Ein Hilfsskript namens v8gen vereinfacht den Prozess für gängige Konfigurationen.

Build-Dateien mit gn generieren

Generieren Sie Build-Dateien für das Verzeichnis out/foo mit gn:

gn args out/foo

Dies öffnet ein Editorfenster zur Angabe der gn-Argumente. Alternativ können Sie die Argumente auf der Kommandozeile übergeben:

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

Dies generiert Build-Dateien für das Kompilieren von V8 mit dem Arm64-Simulator im Release-Modus unter Nutzung von goma für die Kompilierung.

Für einen Überblick über alle verfügbaren gn-Argumente führen Sie aus:

gn args out/foo --list

Build-Dateien mit v8gen generieren

Das V8-Repository enthält ein Komfort-Skript v8gen, um Build-Dateien für gängige Konfigurationen einfacher zu generieren. Wir empfehlen, eine Alias für Ihre Shell-Konfiguration hinzuzufügen:

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

Rufen Sie v8gen --help für weitere Informationen auf.

Listen Sie verfügbare Konfigurationen (oder Bots von einem Master):

v8gen list
v8gen list -m client.v8

Bauen Sie wie ein bestimmter Bot vom client.v8-Wasserfall im Ordner foo:

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

Schritt 2: V8 kompilieren

Um das gesamte V8 zu bauen (angenommen, dass gn in den Ordner x64.release generiert wurde), führen Sie aus:

ninja -C out/x64.release

Um spezifische Ziele wie d8 zu bauen, fügen Sie sie dem Befehl hinzu:

ninja -C out/x64.release d8

Schritt 3: Tests ausführen

Sie können das Ausgabeverzeichnis an den Testtreiber übergeben. Andere relevante Flags werden aus dem Build abgeleitet:

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

Sie können auch Ihre zuletzt erstellte Build (in out.gn) testen:

tools/run-tests.py --gn

Build-Probleme? Melden Sie einen Fehler unter v8.dev/bug oder fragen Sie um Hilfe unter [email protected].