Сборка V8 с помощью GN
V8 собирается с помощью GN. GN — это своего рода мета-система сборки, так как она генерирует файлы сборки для множества других систем сборки. Следовательно, то, как вы будете собирать, зависит от используемой «бэкэнд» системы сборки и компилятора. Инструкции ниже предполагают, что у вас уже есть копия V8 и что вы установили зависимости для сборки.
Больше информации о GN можно найти в документации Chromium или в собственной документации GN.
Сборка V8 из исходного кода включает три шага:
- генерация файлов сборки
- компиляция
- запуск тестов
Есть два подхода для сборки 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: генерация файлов сборки
Есть несколько способов генерации файлов сборки:
- Низкоуровневый, ручной подход предполагает использование
gn
напрямую. - Вспомогательный скрипт под названием
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].