ps2.yaml
A definição de build que o ps2build lê. O ps2build init gera uma mínima:
yaml
project: my-game
targets:
- name: my-game
type: ee
sources: [src/main.c]Tipos de target
Todo target tem um type: ee, iop, ee_lib, ou iop_lib.
ee- um.elfinicializável. As bibliotecas padrão (kernel, cglue, cdvd) são linkadas automaticamente. Liste apenas bibliotecas adicionais emlibs:. Definaoutput_bin: truepara também gerar um.binplano, oupack: truepara gerar um<name>-packed.elfcomprimido e autoextraível.iop- um módulo.irxrelocável. Linkado com-nostdlib -dc -r, stripped e depois processado peloiopfixup.ee_lib/iop_lib- compila como um targeteeouiopmas geralib<name>.ae não é linkado por si só. Um targeteelinka umee_lib(eiopumiop_lib) listando o nome do target, semlib<name>.a, no seulibs:junto com os nomes de bibliotecas externas. A ordem de linkagem é preservada como escrita, então a ordem importa.
O linkado final de um target ee muda automaticamente para o driver de linkagem de C++ quando o target tem uma fonte .cpp, .cc ou .cxx, ou linka um ee_lib que tem. Nenhuma configuração é necessária.
Incorporando um módulo IOP (embed_irx)
Um target ee pode listar targets iop pelo nome em embed_irx:. Para cada um, o ps2build roda o bin2c sobre o .irx compilado e linka o resultado:
c
extern unsigned char <name>_irx[];
extern unsigned int size_<name>_irx;
SifExecModuleBuffer(<name>_irx, size_<name>_irx, 0, NULL, NULL);Se dois targets ee incorporam o mesmo módulo iop, ele é compilado uma única vez.
Campos
| Campo | Aplica-se a | Significado |
|---|---|---|
project | raiz | Nome do projeto (apenas documentação) |
targets | raiz | A lista de targets de build |
name | target | Nome único - o alias do ninja, e como outros targets o referenciam |
type | target | ee / iop / ee_lib / iop_lib |
sources | target | Caminhos explícitos de arquivos-fonte (.c/.cpp/.s/.S) |
include_dirs | target | Diretórios -I extras |
defines | target | Defines extras do pré-processador |
cflags | target | Flags de compilação extras |
ldflags | target | Flags de linkagem extras (apenas ee/iop) |
libs | target | Bibliotecas extras e/ou nomes de ee_lib/iop_lib do mesmo arquivo (apenas ee/iop) |
headers | target | Pacotes instalados cujos headers este target precisa para compilar - sem linkar. Válido em todo tipo de target, incluindo ee_lib/iop_lib |
linkfile | target | Sobrescreve o script de linkagem padrão (apenas ee/iop) |
opt | target | Sobrescreve a flag de otimização (padrão -O2 em ee, -Os em iop) |
debug | target | Adiciona -gdwarf-2 -gz |
embed_irx | target | Apenas ee - targets iop para incorporar via bin2c |
output_bin | target | Apenas ee - também gera um .bin plano |
pack | target | Apenas ee - roda ps2pack para gerar um <name>-packed.elf comprimido e autoextraível |
imports_lst | target | Apenas iop - caminho para um arquivo imports.lst |
exports_tab | target | Apenas iop - caminho para um arquivo exports.tab |
A ferramenta imprime o JSON Schema completo:
bash
ps2build schema