Перейти к основному содержимому

Сборка V8 с помощью GN

V8 собирается с помощью GN. GN — это своего рода мета-система сборки, так как она генерирует файлы сборки для множества других систем сборки. Следовательно, то, как вы будете собирать, зависит от используемой «бэкэнд» системы сборки и компилятора. Инструкции ниже предполагают, что у вас уже есть копия V8 и что вы установили зависимости для сборки.

Больше информации о GN можно найти в документации Chromium или в собственной документации GN.

Сборка V8 из исходного кода включает три шага:

  1. генерация файлов сборки
  2. компиляция
  3. запуск тестов

Есть два подхода для сборки V8:

  • удобный подход с использованием вспомогательного скрипта под названием gm, который объединяет все три шага
  • низкоуровневый подход, где вы вручную выполняете отдельные команды для каждого шага

Сборка V8 с использованием gm (удобный подход)

gm — это удобный скрипт «всё-в-одном», который генерирует файлы сборки, запускает сборку и, при необходимости, запускает тесты. Он находится в tools/dev/gm.py в вашей копии V8. Мы рекомендуем добавить алиас в вашу конфигурацию оболочки:

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

После этого вы можете использовать gm для сборки V8 для известных конфигураций, таких как x64.release:

gm x64.release

Чтобы запустить тесты сразу после сборки, выполните:

gm x64.release.check

gm выводит все выполняемые команды, что упрощает их отслеживание и повторное выполнение при необходимости.

gm позволяет компилировать необходимые бинарники и запускать конкретные тесты одной командой:

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

Сборка V8: низкоуровневый, ручной подход

Шаг 1: генерация файлов сборки

Есть несколько способов генерации файлов сборки:

  1. Низкоуровневый, ручной подход предполагает использование gn напрямую.
  2. Вспомогательный скрипт под названием v8gen упрощает процесс для стандартных конфигураций.

Генерация файлов сборки с использованием gn

Создайте файлы сборки для каталога out/foo с использованием gn:

gn args out/foo

Это откроет окно редактора для указания аргументов для gn. Альтернативно, вы можете передать аргументы через командную строку:

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

Это создаст файлы сборки для компиляции V8 с симулятором arm64 в режиме release с использованием goma для компиляции.

Для просмотра всех доступных аргументов gn выполните:

gn args out/foo --list

Генерация файлов сборки с использованием v8gen

Репозиторий V8 включает вспомогательный скрипт v8gen для упрощения генерации файлов сборки для стандартных конфигураций. Мы рекомендуем добавить алиас в вашу конфигурацию оболочки:

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

Выполните v8gen --help для получения дополнительной информации.

Список доступных конфигураций (или ботов из master):

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 или обратитесь за помощью на [email protected].