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