ps2.yaml
La definición de compilación que lee ps2build. ps2build init genera una mínima:
yaml
project: my-game
targets:
- name: my-game
type: ee
sources: [src/main.c]Tipos de target
Cada target tiene un type: ee, iop, ee_lib, o iop_lib.
ee- un.elfarrancable. Las bibliotecas estándar (kernel, cglue, cdvd) se enlazan automáticamente. Lista solo las bibliotecas adicionales enlibs:. Ponoutput_bin: truepara además producir un.binplano, opack: truepara producir un<name>-packed.elfcomprimido y autoextraíble.iop- un módulo.irxreubicable. Se enlaza con-nostdlib -dc -r, se le quitan los símbolos y luego lo procesaiopfixup.ee_lib/iop_lib- compila como un targeteeoioppero producelib<name>.ay no se enlaza por sí mismo. Un targeteeenlaza unee_lib(eiopuniop_lib) listando el nombre del target, sinlib<name>.a, en sulibs:junto a los nombres de bibliotecas externas. El orden de enlazado se preserva como se escribió, así que el orden importa.
El enlazado final de un target ee cambia automáticamente al driver de enlazado de C++ cuando el target tiene una fuente .cpp, .cc o .cxx, o enlaza un ee_lib que la tiene. No hace falta configuración.
Incrustando un módulo IOP (embed_irx)
Un target ee puede listar targets iop por nombre en embed_irx:. Para cada uno, ps2build ejecuta bin2c sobre el .irx compilado y enlaza el resultado:
c
extern unsigned char <name>_irx[];
extern unsigned int size_<name>_irx;
SifExecModuleBuffer(<name>_irx, size_<name>_irx, 0, NULL, NULL);Si dos targets ee incrustan el mismo módulo iop, se compila una sola vez.
Campos
| Campo | Aplica a | Significado |
|---|---|---|
project | raíz | Nombre del proyecto (solo documentación) |
targets | raíz | La lista de targets de compilación |
name | target | Nombre único - el alias de ninja, y cómo lo referencian otros targets |
type | target | ee / iop / ee_lib / iop_lib |
sources | target | Rutas explícitas de archivos fuente (.c/.cpp/.s/.S) |
include_dirs | target | Directorios -I extra |
defines | target | Defines extra del preprocesador |
cflags | target | Flags de compilación extra |
ldflags | target | Flags de enlazado extra (solo ee/iop) |
libs | target | Bibliotecas extra y/o nombres de ee_lib/iop_lib del mismo archivo (solo ee/iop) |
headers | target | Paquetes instalados cuyos headers necesita este target para compilar - sin enlazar. Válido en todo tipo de target, incluidos ee_lib/iop_lib |
linkfile | target | Sobrescribe el script de enlazado por defecto (solo ee/iop) |
opt | target | Sobrescribe el flag de optimización (por defecto -O2 en ee, -Os en iop) |
debug | target | Añade -gdwarf-2 -gz |
embed_irx | target | Solo ee - targets iop a incrustar vía bin2c |
output_bin | target | Solo ee - también emite un .bin plano |
pack | target | Solo ee - ejecuta ps2pack para producir un <name>-packed.elf comprimido y autoextraíble |
imports_lst | target | Solo iop - ruta a un archivo imports.lst |
exports_tab | target | Solo iop - ruta a un archivo exports.tab |
La herramienta imprime el JSON Schema completo:
bash
ps2build schema