Construir V8 con GN
V8 se construye con la ayuda de GN. GN es un sistema de compilación meta, ya que genera archivos de compilación para varios otros sistemas de compilación. Por lo tanto, cómo lo construyas depende del sistema de compilación y el compilador que estés utilizando. Las instrucciones a continuación asumen que ya tienes una copia de V8 y que has instalado las dependencias de construcción.
Se puede encontrar más información sobre GN en la documentación de Chromium o los propios documentos de GN.
Construir V8 desde la fuente implica tres pasos:
- Generar los archivos de compilación
- Compilar
- Ejecutar pruebas
Hay dos flujos de trabajo para construir V8:
- El flujo de trabajo conveniente utilizando un script auxiliar llamado
gm
que combina los tres pasos de manera práctica - El flujo de trabajo manual, donde ejecutas comandos separados manualmente para cada paso
Construir V8 utilizando gm
(el flujo de trabajo conveniente)
gm
es un script integral que genera los archivos de compilación, activa la construcción y opcionalmente también ejecuta las pruebas. Se puede encontrar en tools/dev/gm.py
en tu copia de V8. Recomendamos agregar un alias a la configuración de tu shell:
alias gm=/path/to/v8/tools/dev/gm.py
Luego puedes usar gm
para construir V8 con configuraciones conocidas, como x64.release
:
gm x64.release
Para ejecutar las pruebas inmediatamente después de la construcción, ejecuta:
gm x64.release.check
gm
muestra todos los comandos que está ejecutando, lo que facilita seguirlos y reejecutarlos si es necesario.
gm
permite construir los binarios requeridos y ejecutar pruebas específicas con un solo comando:
gm x64.debug mjsunit/foo cctest/test-bar/*
Construir V8: el flujo de trabajo manual
Paso 1: generar archivos de compilación
Hay varias formas de generar los archivos de compilación:
- El flujo de trabajo manual directo implica usar
gn
directamente. - Un script auxiliar llamado
v8gen
simplifica el proceso para configuraciones comunes.
Generar archivos de compilación utilizando gn
Genera los archivos de compilación para el directorio out/foo
utilizando gn
:
gn args out/foo
Esto abre una ventana del editor para especificar los argumentos de gn
. Alternativamente, puedes pasar los argumentos por la línea de comandos:
gn gen out/foo --args='is_debug=false target_cpu="x64" v8_target_cpu="arm64" use_goma=true'
Esto genera archivos de compilación para compilar V8 con el simulador arm64 en modo de liberación utilizando goma
para la compilación.
Para obtener una visión general de todos los argumentos disponibles de gn
, ejecuta:
gn args out/foo --list
Generar archivos de compilación utilizando v8gen
El repositorio de V8 incluye un script auxiliar v8gen
para generar fácilmente archivos de compilación para configuraciones comunes. Recomendamos agregar un alias a la configuración de tu shell:
alias v8gen=/path/to/v8/tools/dev/v8gen.py
Ejecuta v8gen --help
para obtener más información.
Lista las configuraciones disponibles (o bots de un maestro):
v8gen list
v8gen list -m client.v8
Construye como un bot particular del flujo client.v8
en la carpeta foo
:
v8gen -b 'V8 Linux64 - debug builder' -m client.v8 foo
Paso 2: compilar V8
Para compilar todo V8 (asumiendo que gn
generó en la carpeta x64.release
), ejecuta:
ninja -C out/x64.release
Para compilar objetivos específicos como d8
, agrégalos al comando:
ninja -C out/x64.release d8
Paso 3: ejecutar pruebas
Puedes pasar el directorio de salida al controlador de pruebas. Otros parámetros relevantes se infieren de la compilación:
tools/run-tests.py --outdir out/foo
También puedes probar tu compilación recientemente hecha (en out.gn
):
tools/run-tests.py --gn
¿Problemas de compilación? Reporta un error en v8.dev/bug o solicita ayuda en [email protected].