csrc = $(wildcard src/*.c) $(wildcard src/libc/*.c) asrc = $(wildcard src/*.s) $(wildcard src/libc/*.s) aSsrc = $(wildcard src/*.S) $(wildcard src/libc/*.S) obj = $(asrc:.s=-asm.o) $(aSsrc:.S=-asm.o) $(csrc:.c=.o) dep = $(csrc:.c=.d) $(aSsrc:.S=-asm.d) z80src = $(wildcard src/z80/*.asm) z80obj = $(z80src:.asm=.z80) z80bin = z80.bin name = life elf = $(name).elf bin = $(name).bin warn = -pedantic -Wall dbg = -g #opt = -O3 def = -D__NO_CTYPE inc = -I. -Isrc -Isrc/libc ARCH = m68k-elf TC = $(ARCH)- CC = $(TC)gcc AS = $(TC)as LD = $(TC)ld OBJCOPY = $(TC)objcopy OBJDUMP = $(TC)objdump CFLAGS = -m68000 -ffreestanding -fno-builtin -fcommon $(warn) $(dbg) $(opt) $(def) $(inc) -MMD CPPFLAGS = $(def) ASFLAGS = -m68000 $(inc) LDFLAGS = -T megadrive.ld -Wl,-print-gc-sections -nostdlib -lgcc Z80AS = vasmz80_oldstyle Z80ASFLAGS = -Fvobj Z80LD = vlink Z80LDFLAGS = -T z80.ld -b rawbin1 $(bin): $(elf) $(OBJCOPY) -O binary $< $@ $(elf): $(obj) $(CC) -o $@ $(obj) -Wl,-Map,link.map $(LDFLAGS) $(z80bin): $(z80obj) $(Z80LD) -o $@ $(Z80LDFLAGS) $(z80obj) disasm: $(elf) $(OBJDUMP) -D $< >$@ src/data-asm.o: src/data.s data/font8x8.img data/cellspr.img data/simbabg.tiles \ data/simbafg.tiles data/simbafg.tmap data/floor.tiles data/floor.tmap src/z80prog-asm.o: src/z80prog.s $(z80bin) data/cellspr.img: data/cellspr.png -include $(dep) %-asm.o: %.s $(AS) -o $@ $(ASFLAGS) $< %-asm.o: %.S $(CC) -o $@ $(ASFLAGS) -DASM -MMD -c $< %.z80: %.asm $(Z80AS) -o $@ $(Z80ASFLAGS) $< >/dev/null .PHONY: clean clean: rm -f $(obj) $(elf) $(bin) rm -f $(z80obj) $(z80bin) .PHONY: cleandep cleandep: rm -f $(dep) .PHONY: cleandata cleandata: rm -f data/*.img data/*.tiles data/*.tmap data/*.cmap .PHONY: run run: $(bin) mednafen $< .PHONY: copy copy: $(bin) mount /media/usbmass && cp $(bin) /media/usbmass/$(bin) umount /media/usbmass .PHONY: install install: $(bin) mount /media/usbmass [ -f /media/usbmass/MEGA/MEGA.RBF ] || cp $(bin) /media/usbmass/MEGA/MEGA.BIN umount /media/usbmass .PHONY: debug debug: $(bin) $(TC)gdb $(elf) # ---- tools ---- PNGDUMP = tools/pngdump/pngdump JSON2TMAP = tools/json2tmap/json2tmap $(PNGDUMP): tools/pngdump/main.c tools/pngdump/image.c tools/pngdump/quant.c $(MAKE) -C tools/pngdump $(JSON2TMAP): tools/json2tmap/json2tmap.c $(MAKE) -C tools/json2tmap %.tmap: %.json $(JSON2TMAP) $(JSON2TMAP) $< $@ %.tiles: %-tiles.png $(PNGDUMP) $(PNGDUMP) -o $@ -oc $(@:.tiles=.cmap) -T 8x8 $< %.tiles: %.png $(PNGDUMP) $(PNGDUMP) -o $@ -oc $(@:.tiles=.cmap) -om $(@:.tiles=.tmap) -T 8x8 -D $< %.img: %.png $(PNGDUMP) $(PNGDUMP) -o $@ -oc $(@:.img=.cmap) -T 8x8 $<