ddw3/zbuild.yaml

201 lines
4.3 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
# Cargo tools
mkpsexe: $(tools_dir)/ddw3-mkpsexe
# Directories
build_dir : build
tools_dir : $(build_dir)/tools
misc_dir : $(build_dir)/misc
psx_iso_dir: $(build_dir)/iso
asm_dir : $(build_dir)/asm
elf_dir : $(build_dir)/elf
psexe_dir : $(build_dir)/psexe
# 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 : $(misc_dir)/DUMMY
dw2003_psx_iso: $(psx_iso_dir)/dw2003.bin
dw3_psx_iso : $(psx_iso_dir)/dw3.bin
# Psx iso
psx_iso : $(psx_iso_dir)/^(path).bin
psx_iso_deps: $(psx_iso_dir)/^(path).d
psx_iso_xml : ^(path).xml
# Assembly
asm_obj : $(asm_dir)/^(path).o
asm_obj_deps: $(asm_dir)/^(path).d
asm_src : ^(path).s
# Elf
# TODO: Not hardcode where the object files come from
elf : $(elf_dir)/^(path).elf
elf_obj: $(asm_dir)/^(path).o
elf_ld : ^(path).ld
# Elf
# TODO: Not hardcode where the elf or license come from
psexe : $(psexe_dir)/^(path)
psexe_elf: $(elf_dir)/^(path).elf
# 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)]
deps:
[
$(psx_iso_xml),
$(license_psx_iso),
deps_file: $(psx_iso_deps),
static: $(psx_iso::dir_name)/,
]
exec:
- [$(mkpsxiso), $(psx_iso_xml), -q, -y]
# 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:
alias:
tool: $(tools_dir)/^(name::non_empty)
out: [$(tool), deps_file: $(tool).d]
deps: [static: $(tool::dir_name)/]
exec:
cwd: tools/
cmds:
- - $(cargo)
- build
- --release
- --package=^(name)
- -Z=unstable-options
- --out-dir=../$(tools_dir)
- [cp, target/release/^(name).d, ../$(tool).d]
- - sed
- -i
- -e
- 's,tools/target/release/,$(tools_dir)/,g'
- ../$(tool).d
# Buffer
dummy_buffer:
out: [$(dummy_buffer)]
deps: [static: $(dummy_buffer::dir_name)/]
exec:
- [touch, $(dummy_buffer)]
- [truncate, --size=35283682, $(dummy_buffer)]
# Psexe
# TODO: Hardcode less
psexe:
out: [$(psexe)]
deps:
- $(psexe_elf)
- $(license_psexe_eu)
- $(mkpsexe)
- static: $(psexe::dir_name)/
exec:
- - $(mkpsexe)
- $(psexe_elf)
- -o
- $(psexe)
- --license
- $(license_psexe_eu)
# Elf
# TODO: Hardcode les
elf:
out: [$(elf)]
deps: [$(elf_obj), $(elf_ld), static: $(elf::dir_name)/]
exec:
- - $(ld)
- $(elf_obj)
- -o
- $(elf)
- -EL
- --script
- $(elf_ld)
- --warn-section-align
# 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