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