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:
- Build-Dateien generieren
- Kompilieren
- 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:
- Der einfache, manuelle Workflow beinhaltet die direkte Verwendung von
gn
. - 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].