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