fixed scroll and added json2tmap tool
[mdlife] / Makefile
1 csrc = $(wildcard src/*.c) $(wildcard src/libc/*.c)
2 asrc = $(wildcard src/*.s) $(wildcard src/libc/*.s)
3 aSsrc = $(wildcard src/*.S) $(wildcard src/libc/*.S)
4 obj = $(asrc:.s=-asm.o) $(aSsrc:.S=-asm.o) $(csrc:.c=.o)
5 dep = $(csrc:.c=.d) $(aSsrc:.S=-asm.d)
6
7 z80src = $(wildcard src/z80/*.asm)
8 z80obj = $(z80src:.asm=.z80)
9 z80bin = z80.bin
10
11 name = life
12 elf = $(name).elf
13 bin = $(name).bin
14
15 warn = -pedantic -Wall
16 dbg = -g
17 #opt = -O3
18 def = -D__NO_CTYPE
19 inc = -I. -Isrc -Isrc/libc
20
21 ARCH = m68k-elf
22 TC = $(ARCH)-
23
24 CC = $(TC)gcc
25 AS = $(TC)as
26 LD = $(TC)ld
27 OBJCOPY = $(TC)objcopy
28 OBJDUMP = $(TC)objdump
29
30 CFLAGS = -m68000 -ffreestanding -fno-builtin -fcommon $(warn) $(dbg) $(opt) $(def) $(inc) -MMD
31 CPPFLAGS = $(def)
32 ASFLAGS = -m68000 $(inc)
33 LDFLAGS = -T megadrive.ld -Wl,-print-gc-sections -nostdlib -lgcc
34
35 Z80AS = vasmz80_oldstyle
36 Z80ASFLAGS = -Fvobj
37 Z80LD = vlink
38 Z80LDFLAGS = -T z80.ld -b rawbin1
39
40
41 $(bin): $(elf)
42         $(OBJCOPY) -O binary $< $@
43
44 $(elf): $(obj)
45         $(CC) -o $@ $(obj) -Wl,-Map,link.map $(LDFLAGS)
46
47 $(z80bin): $(z80obj)
48         $(Z80LD) -o $@ $(Z80LDFLAGS) $(z80obj)
49
50 disasm: $(elf)
51         $(OBJDUMP) -D $< >$@
52
53 src/data-asm.o: src/data.s data/font8x8.img data/cellspr.img data/simbabg.tiles \
54         data/simbafg.tiles data/simbafg.tmap
55 src/z80prog-asm.o: src/z80prog.s $(z80bin)
56
57 data/cellspr.img: data/cellspr.png
58
59 -include $(dep)
60
61 %-asm.o: %.s
62         $(AS) -o $@ $(ASFLAGS) $<
63
64 %-asm.o: %.S
65         $(CC) -o $@ $(ASFLAGS) -DASM -MMD -c $<
66
67 %.z80: %.asm
68         $(Z80AS) -o $@ $(Z80ASFLAGS) $< >/dev/null
69
70 .PHONY: clean
71 clean:
72         rm -f $(obj) $(elf) $(bin)
73         rm -f $(z80obj) $(z80bin)
74
75 .PHONY: cleandep
76 cleandep:
77         rm -f $(dep)
78
79 .PHONY: cleandata
80 cleandata:
81         rm -f data/*.img data/*.tiles data/*.tmap data/*.cmap
82
83 .PHONY: run
84 run: $(bin)
85         mednafen $<
86
87 .PHONY: copy
88 copy: $(bin)
89         mount /media/usbmass && cp $(bin) /media/usbmass/$(bin)
90         umount /media/usbmass
91
92 .PHONY: install
93 install: $(bin)
94         mount /media/usbmass
95         [ -f /media/usbmass/MEGA/MEGA.RBF ] || cp $(bin) /media/usbmass/MEGA/MEGA.BIN
96         umount /media/usbmass
97
98 .PHONY: debug
99 debug: $(bin)
100         $(TC)gdb $(elf)
101
102 # ---- tools ----
103 PNGDUMP = tools/pngdump/pngdump
104 JSON2TMAP = tools/json2tmap/json2tmap
105
106 $(PNGDUMP): tools/pngdump/main.c tools/pngdump/image.c tools/pngdump/quant.c
107         $(MAKE) -C tools/pngdump
108
109 $(JSON2TMAP): tools/json2tmap/json2tmap.c
110         $(MAKE) -C tools/json2tmap
111
112 %.tmap: %.json $(JSON2TMAP)
113         $(JSON2TMAP) $< $@
114
115 %.tiles: %-tiles.png $(PNGDUMP)
116         $(PNGDUMP) -o $@ -oc $(@:.tiles=.cmap) -T 8x8 $<
117
118 %.tiles: %.png $(PNGDUMP)
119         $(PNGDUMP) -o $@ -oc $(@:.tiles=.cmap) -om $(@:.tiles=.tmap) -T 8x8 -D $<
120
121 %.img: %.png $(PNGDUMP)
122         $(PNGDUMP) -o $@ -oc $(@:.img=.cmap) -T 8x8 $<