non-gba port continues
[gbajam22] / Makefile
1 src = $(wildcard src/*.c) $(wildcard src/gba/*.c)
2 ssrc = $(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 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 def = -DBUILD_GBA
20 opt = -O0 -fomit-frame-pointer -mcpu=arm7tdmi -mtune=arm7tdmi -mthumb -mthumb-interwork
21 dbg = -g
22 inc = -I. -Isrc -Isrc/gba -Ilibs/maxmod
23 warn = -pedantic -Wall
24
25 CFLAGS = $(opt) $(dbg) $(warn) -MMD $(def) $(inc)
26 ASFLAGS = -mthumb-interwork
27 LDFLAGS = -mthumb -mthumb-interwork $(libs) -lm
28
29 -include cfg.mk
30
31 .PHONY: all
32 all: $(bin) $(bin_mb)
33
34 $(bin): $(elf)
35         $(OBJCOPY) -O binary $(elf) $(bin)
36         gbafix -r0 $(bin)
37
38 $(elf): $(obj) $(libs)
39         $(CC) -o $(elf) $(obj) -specs=gba.specs -Wl,-Map,link.map $(LDFLAGS)
40
41 -include $(dep)
42
43 %.arm.o: %.c
44         $(CC) -o $@ $(CFLAGS) -c $<
45
46 %.arm.o: %.s
47         $(AS) -o $@ $(ASFLAGS) $<
48
49 src/data.o: src/data.s $(data)
50
51 tools/pngdump/pngdump:
52         $(MAKE) -C tools/pngdump
53
54 tools/lutgen: tools/lutgen.c
55         cc -o $@ $< -lm
56
57 tools/vistab: tools/vistab.c
58         cc -o $@ $< -lm
59
60 tools/mmutil/mmutil:
61         $(MAKE) -C tools/mmutil
62
63 %.sraw: %.png tools/pngdump/pngdump
64         tools/pngdump/pngdump -o $@ -oc $(subst .sraw,.spal,$@) -os $(subst .sraw,.shade,$@) -s 8 $<
65
66 %.raw: %.png tools/pngdump/pngdump
67         tools/pngdump/pngdump -o $@ -n $<
68
69 %.pal: %.png tools/pngdump/pngdump
70         tools/pngdump/pngdump -o $@ -c $<
71
72 data/lut.s: tools/lutgen
73         tools/lutgen >$@
74
75 data/snd.bin: $(audata) tools/mmutil/mmutil
76         tools/mmutil/mmutil -o$@ -hdata/snd.h $(audata)
77
78 data/snd.h: data/snd.bin
79
80 .PHONY: clean
81 clean:
82         rm -f $(obj) $(bin) $(bin_mb) $(elf) $(elf_mb)
83
84 .PHONY: cleandep
85 cleandep:
86         rm -f $(dep)
87
88 .PHONY: cleanlibs
89 cleanlibs:
90         $(MAKE) -C libs/maxmod clean
91
92 .PHONY: install
93 install: $(bin)
94         if2a -n -f -W $<
95
96 .PHONY: run
97 run: $(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