Skip to content

About this page

On this page

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 .elf inicializável. As bibliotecas padrão (kernel, cglue, cdvd) são linkadas automaticamente. Liste apenas bibliotecas adicionais em libs:. Defina output_bin: true para também gerar um .bin plano, ou pack: true para gerar um <name>-packed.elf comprimido e autoextraível.
  • iop - um módulo .irx relocável. Linkado com -nostdlib -dc -r, stripped e depois processado pelo iopfixup.
  • ee_lib / iop_lib - compila como um target ee ou iop mas gera lib<name>.a e não é linkado por si só. Um target ee linka um ee_lib (e iop um iop_lib) listando o nome do target, sem lib<name>.a, no seu libs: 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 ​

CampoAplica-se aSignificado
projectraizNome do projeto (apenas documentação)
targetsraizA lista de targets de build
nametargetNome único - o alias do ninja, e como outros targets o referenciam
typetargetee / iop / ee_lib / iop_lib
sourcestargetCaminhos explícitos de arquivos-fonte (.c/.cpp/.s/.S)
include_dirstargetDiretórios -I extras
definestargetDefines extras do pré-processador
cflagstargetFlags de compilação extras
ldflagstargetFlags de linkagem extras (apenas ee/iop)
libstargetBibliotecas extras e/ou nomes de ee_lib/iop_lib do mesmo arquivo (apenas ee/iop)
headerstargetPacotes instalados cujos headers este target precisa para compilar - sem linkar. Válido em todo tipo de target, incluindo ee_lib/iop_lib
linkfiletargetSobrescreve o script de linkagem padrão (apenas ee/iop)
opttargetSobrescreve a flag de otimização (padrão -O2 em ee, -Os em iop)
debugtargetAdiciona -gdwarf-2 -gz
embed_irxtargetApenas ee - targets iop para incorporar via bin2c
output_bintargetApenas ee - também gera um .bin plano
packtargetApenas ee - roda ps2pack para gerar um <name>-packed.elf comprimido e autoextraível
imports_lsttargetApenas iop - caminho para um arquivo imports.lst
exports_tabtargetApenas iop - caminho para um arquivo exports.tab

A ferramenta imprime o JSON Schema completo:

bash
ps2build schema