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