starting part_dna
[mdlife] / Makefile
1 csrc = $(wildcard src/*.c) $(wildcard src/libc/*.c)
2 asrc = $(wildcard src/*.s)
3 aSsrc = $(wildcard src/*.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 = -O2
18 def = -D__NO_CTYPE
19 inc = -I. -Isrc -Isrc/libc
20
21 TC = m68k-linux-gnu-
22
23 CC = $(TC)gcc
24 AS = $(TC)as
25 LD = $(TC)ld
26 OBJCOPY = $(TC)objcopy
27
28 CFLAGS = -m68000 -ffreestanding -fno-builtin -fcommon $(warn) $(dbg) $(opt) $(def) $(inc) -MMD
29 CPPFLAGS = $(def)
30 ASFLAGS = -m68000 $(inc)
31 LDFLAGS = -T megadrive.ld -print-gc-sections \
32                   -L/usr/lib/gcc-cross/m68k-linux-gnu/11 -lgcc
33
34 Z80AS = vasmz80_oldstyle
35 Z80ASFLAGS = -Fvobj
36 Z80LD = vlink
37 Z80LDFLAGS = -T z80.ld -b rawbin1
38
39
40 $(bin): $(elf)
41         $(OBJCOPY) -O binary $< $@
42
43 $(elf): $(obj)
44         $(LD) -o $@ $(obj) -Map link.map $(LDFLAGS)
45
46 $(z80bin): $(z80obj)
47         $(Z80LD) -o $@ $(Z80LDFLAGS) $(z80obj)
48
49 src/data-asm.o: src/data.s data/font8x8.img data/cellspr.img
50 src/z80prog-asm.o: src/z80prog.s $(z80bin)
51
52 data/cellspr.img: data/cellspr.png
53
54 -include $(dep)
55
56 %-asm.o: %.s
57         $(AS) -o $@ $(ASFLAGS) $<
58
59 %-asm.o: %.S
60         $(CC) -o $@ $(ASFLAGS) -DASM -MMD -c $<
61
62 %.z80: %.asm
63         $(Z80AS) -o $@ $(Z80ASFLAGS) $< >/dev/null
64
65 .PHONY: clean
66 clean:
67         rm -f $(obj) $(elf) $(bin)
68         rm -f $(z80obj) $(z80bin)
69
70 .PHONY: cleandep
71 cleandep:
72         rm -f $(dep)
73
74 .PHONY: run
75 run: $(bin)
76         mednafen $<
77
78 .PHONY: copy
79 copy: $(bin)
80         mount /media/usbmass && cp $(bin) /media/usbmass/$(bin)
81         umount /media/usbmass
82
83 .PHONY: install
84 install: $(bin)
85         mount /media/usbmass
86         [ -f /media/usbmass/MEGA/MEGA.RBF ] || cp $(bin) /media/usbmass/MEGA/MEGA.BIN
87         umount /media/usbmass
88
89 # ---- tools ----
90 PNGDUMP = tools/pngdump/pngdump
91
92 $(PNGDUMP): tools/pngdump/main.c tools/pngdump/image.c tools/pngdump/quant.c
93         $(MAKE) -C tools/pngdump
94
95 %.img: %.png $(PNGDUMP)
96         $(PNGDUMP) -o $@ -oc $(@:.img=.cmap) -T 8x8 $<