4ac7b0979589709340c582c7403b2a1a0965bebc
[gbajam22] / Makefile
1 src = $(wildcard src/*.c)
2 ssrc = $(wildcard src/*.s) data/lut.s
3 obj = $(src:.c=.o) $(ssrc:.s=.o)
4 dep = $(src:.c=.d)
5 name = gbajam22
6 elf = $(name).elf
7 bin = $(name).gba
8
9 libs = libs/maxmod/libmm.a
10
11 TCPREFIX = arm-none-eabi-
12
13 CPP = $(TCPREFIX)cpp
14 CC = $(TCPREFIX)gcc
15 AS = $(TCPREFIX)as
16 OBJCOPY = $(TCPREFIX)objcopy
17 OBJDUMP = $(TCPREFIX)objdump
18
19 opt = -O0 -fomit-frame-pointer -mcpu=arm7tdmi -mtune=arm7tdmi -mthumb -mthumb-interwork
20 dbg = -g
21 inc = -I. -Ilibs/maxmod
22
23 CFLAGS = $(opt) $(dbg) -pedantic -Wall -MMD $(def) $(inc)
24 ASFLAGS = -mthumb-interwork
25 LDFLAGS = -mthumb -mthumb-interwork $(libs) -lm
26
27 -include cfg.mk
28
29 .PHONY: all
30 all: $(bin) $(bin_mb)
31
32 $(bin): $(elf)
33         $(OBJCOPY) -O binary $(elf) $(bin)
34         gbafix -r0 $(bin)
35
36 $(elf): $(obj) $(libs)
37         $(CC) -o $(elf) $(obj) -specs=gba.specs -Wl,-Map,link.map $(LDFLAGS)
38
39 -include $(dep)
40
41 src/data.o: src/data.s $(data)
42
43 tools/pngdump/pngdump:
44         $(MAKE) -C tools/pngdump
45
46 tools/lutgen: tools/lutgen.c
47         cc -o $@ $< -lm
48
49 tools/vistab: tools/vistab.c
50         cc -o $@ $< -lm
51
52 tools/mmutil/mmutil:
53         $(MAKE) -C tools/mmutil
54
55 %.sraw: %.png tools/pngdump/pngdump
56         tools/pngdump/pngdump -o $@ -oc $(subst .sraw,.spal,$@) -os $(subst .sraw,.shade,$@) -s 8 $<
57
58 %.raw: %.png tools/pngdump/pngdump
59         tools/pngdump/pngdump -o $@ -n $<
60
61 %.pal: %.png tools/pngdump/pngdump
62         tools/pngdump/pngdump -o $@ -c $<
63
64 data/lut.s: tools/lutgen
65         tools/lutgen >$@
66
67 data/snd.bin: $(audata) tools/mmutil/mmutil
68         tools/mmutil/mmutil -o$@ -hdata/snd.h $(audata)
69
70 data/snd.h: data/snd.bin
71
72 .PHONY: clean
73 clean:
74         rm -f $(obj) $(bin) $(bin_mb) $(elf) $(elf_mb)
75
76 .PHONY: cleandep
77 cleandep:
78         rm -f $(dep)
79
80 .PHONY: cleanlibs
81 cleanlibs:
82         $(MAKE) -C libs/maxmod clean
83
84 .PHONY: install
85 install: $(bin)
86         if2a -n -f -W $<
87
88 .PHONY: run
89 run: $(bin)
90         mgba -2 $(bin)
91
92 .PHONY: debug
93 debug: $(elf)
94         mgba -2 -g $(bin) &
95         $(TCPREFIX)gdb $<
96
97 .PHONY: disasm
98 disasm: $(elf)
99         $(OBJDUMP) -d $< >$@
100
101 .PHONY: libs
102 libs: $(libs)
103
104 libs/maxmod/libmm.a:
105         $(MAKE) -C libs/maxmod