289 lines
6.7 KiB
YAML
289 lines
6.7 KiB
YAML
---
|
|
alias:
|
|
# External tools
|
|
# prettier-ignore
|
|
as : mips-elf-as
|
|
ld : mips-elf-ld
|
|
mkpsxiso : mkpsxiso
|
|
cargo : cargo
|
|
sha256sum: sha256sum
|
|
|
|
# Other tools
|
|
generate_psx_iso_deps : tools/generate_psx_iso_deps.py
|
|
generate_compare_deps : tools/generate_compare_deps.py
|
|
mkpsexe_from_yaml : tools/mkpsexe_from_yaml.py
|
|
mkpsexe_from_yaml_deps: tools/mkpsexe_from_yaml_deps.py
|
|
ld_from_yaml_deps : tools/ld_from_yaml_deps.py
|
|
ld_from_yaml : tools/ld_from_yaml.py
|
|
|
|
# Cargo tools
|
|
mkpsexe: $(build_rust_tool_dir)/ddw3-mkpsexe
|
|
|
|
# Directories
|
|
build_dir : build
|
|
build_rust_tool_dir: $(build_dir)/tools
|
|
build_misc_dir : $(build_dir)/misc
|
|
build_psx_iso_dir : $(build_dir)/iso
|
|
build_asm_dir : $(build_dir)/asm
|
|
build_elf_dir : $(build_dir)/elf
|
|
build_psexe_dir : $(build_dir)/psexe
|
|
build_rust_dir : $(build_dir)/rust
|
|
|
|
# Files
|
|
checksums : checksums.sha256
|
|
license_psx_iso : licenses/psx-bin.dat
|
|
license_psexe_eu: licenses/psexe-eu.dat
|
|
license_psexe_na: licenses/psexe-na.dat
|
|
|
|
# Built files
|
|
compare_deps : $(build_dir)/compare.d
|
|
dummy_buffer : $(build_misc_dir)/DUMMY
|
|
dw2003_psx_iso: $(build_psx_iso_dir)/dw2003.bin
|
|
dw3_psx_iso : $(build_psx_iso_dir)/dw3.bin
|
|
|
|
# Rust tool
|
|
rust_tool : $(build_rust_tool_dir)/^(name::non_empty)
|
|
rust_tool_deps: $(build_rust_tool_dir)/^(name).d
|
|
rust_tool_src : tools/^(name)
|
|
|
|
# Psx iso
|
|
psx_iso : $(build_psx_iso_dir)/^(path).bin
|
|
psx_iso_cue : $(build_psx_iso_dir)/^(path).cue
|
|
psx_iso_deps: $(build_psx_iso_dir)/^(path).d
|
|
psx_iso_xml : ^(path).xml
|
|
|
|
# Assembly
|
|
asm_obj : $(build_asm_dir)/^(path).o
|
|
asm_obj_deps: $(build_asm_dir)/^(path).d
|
|
asm_src : asm/^(path).s
|
|
|
|
# Elf
|
|
elf : $(build_elf_dir)/^(path).elf
|
|
elf_deps : $(build_elf_dir)/^(path).d
|
|
elf_linker_script: $(build_elf_dir)/^(path).ld
|
|
elf_yaml : elf/^(path).yaml
|
|
|
|
# Psexe
|
|
psexe : $(build_psexe_dir)/^(path).psexe
|
|
psexe_deps: $(build_psexe_dir)/^(path).d
|
|
psexe_yaml: psexe/^(path).yaml
|
|
|
|
# Rust library
|
|
rust_lib : $(build_rust_dir)/^(name).a
|
|
rust_lib_deps: $(build_rust_dir)/^(name).d
|
|
|
|
# By default built the final `iso`s
|
|
default:
|
|
- $(dw3_psx_iso)
|
|
- $(dw2003_psx_iso)
|
|
|
|
rules:
|
|
# Compare
|
|
compare:
|
|
deps: [$(checksums), deps_file: $(compare_deps)]
|
|
exec:
|
|
- [$(sha256sum), --check, --quiet, $(checksums)]
|
|
|
|
# Compare dependencies
|
|
compare-deps:
|
|
out: [$(compare_deps)]
|
|
deps:
|
|
- $(checksums)
|
|
- $(generate_compare_deps)
|
|
- static: $(compare_deps::dir_name)/
|
|
|
|
exec:
|
|
- [bash, -c, '$(generate_compare_deps) > $(compare_deps)']
|
|
|
|
# Clean
|
|
clean:
|
|
exec:
|
|
- [rm, -rf, $(build_dir)/]
|
|
- [rm, -rf, tools/target/]
|
|
|
|
# Directories
|
|
mkdir:
|
|
alias:
|
|
dir: $(build_dir)^(path)/
|
|
out: [$(dir)]
|
|
exec:
|
|
- [mkdir, -p, $(dir)]
|
|
|
|
# Psx iso
|
|
mkpsxiso:
|
|
out: [$(psx_iso), $(psx_iso_cue)]
|
|
deps:
|
|
- $(psx_iso_xml)
|
|
- $(license_psx_iso)
|
|
- deps_file: $(psx_iso_deps)
|
|
- static: $(psx_iso::dir_name)/
|
|
exec:
|
|
- - $(mkpsxiso)
|
|
- $(psx_iso_xml)
|
|
- -nolimit
|
|
- -noxa
|
|
- -y
|
|
- --quiet
|
|
- --output
|
|
- $(psx_iso)
|
|
- --cuefile
|
|
- $(psx_iso_cue)
|
|
|
|
# Pxs iso dependencies
|
|
mkpsxiso-deps:
|
|
out: [$(psx_iso_deps)]
|
|
deps: [$(psx_iso_xml), static: $(psx_iso_deps::dir_name)/]
|
|
exec:
|
|
- - $(generate_psx_iso_deps)
|
|
- --iso
|
|
- $(psx_iso)
|
|
- --xml
|
|
- $(psx_iso_xml)
|
|
- --deps-file
|
|
- $(psx_iso_deps)
|
|
|
|
# Cargo tools
|
|
cargo-tool:
|
|
out: [$(rust_tool), deps_file: $(rust_tool_deps)]
|
|
deps: [static: $(rust_tool::dir_name)/]
|
|
exec:
|
|
cwd: tools/
|
|
cmds:
|
|
- - $(cargo)
|
|
- build
|
|
- --release
|
|
- --package=^(name)
|
|
- -Z=unstable-options
|
|
- --out-dir=../$(build_rust_tool_dir)
|
|
- [cp, target/release/^(name).d, ../$(rust_tool_deps)]
|
|
- - sed
|
|
- -i
|
|
- -e
|
|
- 's,tools/target/release/,$(build_rust_tool_dir)/,g'
|
|
- ../$(rust_tool_deps)
|
|
|
|
# Buffer
|
|
dummy_buffer:
|
|
out: [$(dummy_buffer)]
|
|
deps: [static: $(dummy_buffer::dir_name)/]
|
|
exec:
|
|
- [touch, $(dummy_buffer)]
|
|
- [truncate, --size=35283682, $(dummy_buffer)]
|
|
|
|
# Psexe
|
|
psexe:
|
|
out: [$(psexe)]
|
|
deps:
|
|
- $(psexe_yaml)
|
|
- $(mkpsexe_from_yaml)
|
|
- $(mkpsexe)
|
|
- deps_file: $(psexe_deps)
|
|
- static: $(psexe::dir_name)/
|
|
exec:
|
|
- - $(mkpsexe_from_yaml)
|
|
- $(psexe_yaml)
|
|
- -o
|
|
- $(psexe)
|
|
- --mkpsexe-bin
|
|
- $(mkpsexe)
|
|
|
|
# Psexe dependencies
|
|
psexe_deps:
|
|
out: [$(psexe_deps)]
|
|
deps:
|
|
- $(psexe_yaml)
|
|
- $(mkpsexe_from_yaml_deps)
|
|
- static: $(psexe_deps::dir_name)/
|
|
exec:
|
|
- - $(mkpsexe_from_yaml_deps)
|
|
- $(psexe_yaml)
|
|
- -o
|
|
- $(psexe)
|
|
- --deps
|
|
- $(psexe_deps)
|
|
|
|
# Elf
|
|
elf:
|
|
out: [$(elf)]
|
|
deps:
|
|
- $(elf_yaml)
|
|
- $(ld_from_yaml)
|
|
- deps_file: $(elf_deps)
|
|
- static: $(elf::dir_name)/
|
|
exec:
|
|
- - $(ld_from_yaml)
|
|
- $(elf_yaml)
|
|
- -o
|
|
- $(elf)
|
|
- --linker-script-output
|
|
- $(elf_linker_script)
|
|
- --ld-bin
|
|
- $(ld)
|
|
|
|
# Elf dependencies
|
|
elf_deps:
|
|
out: [$(elf_deps)]
|
|
deps:
|
|
- $(elf_yaml)
|
|
- $(ld_from_yaml_deps)
|
|
- static: $(elf_deps::dir_name)/
|
|
exec:
|
|
- - $(ld_from_yaml_deps)
|
|
- $(elf_yaml)
|
|
- -o
|
|
- $(elf)
|
|
- --deps
|
|
- $(elf_deps)
|
|
|
|
# Assembly
|
|
asm:
|
|
out: [$(asm_obj), deps_file: $(asm_obj_deps)]
|
|
deps: [$(asm_src), static: $(asm_obj::dir_name)/]
|
|
exec:
|
|
- - $(as)
|
|
- -MD
|
|
- $(asm_obj_deps)
|
|
- $(asm_src)
|
|
- -o
|
|
- $(asm_obj)
|
|
- -EL
|
|
- -mips1
|
|
- -march=r3000
|
|
- -msoft-float
|
|
- -O2
|
|
- -Iasm/
|
|
- -I./
|
|
- -I$(asm_src::dir_name)
|
|
# Zbuild doesn't support `\\\n` yet
|
|
- - sed
|
|
- -z
|
|
- -i
|
|
- -e
|
|
- 's/\\\n/ /g'
|
|
- $(asm_obj_deps)
|
|
|
|
# Rust library
|
|
rust_lib:
|
|
alias:
|
|
build_target_dir: target/mipsel-sony-psx/release
|
|
out:
|
|
- $(rust_lib)
|
|
- deps_file: $(rust_lib_deps)
|
|
deps:
|
|
- static: $(rust_lib::dir_name)/
|
|
exec:
|
|
cwd: rust/
|
|
cmds:
|
|
- - $(cargo)
|
|
- build
|
|
- --release
|
|
- --package=^(name)
|
|
- -Z=unstable-options
|
|
- [cp, $(build_target_dir)/lib^(name).a, ../$(rust_lib)]
|
|
- [cp, $(build_target_dir)/lib^(name).d, ../$(rust_lib_deps)]
|
|
- - sed
|
|
- -i
|
|
- -e
|
|
- 's,rust/$(build_target_dir)/lib^(name).a,$(build_rust_dir)/^(name).a,g'
|
|
- ../$(rust_lib_deps)
|