forked from atasro2/mp2k
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
94 lines (70 loc) · 2.41 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
AS := arm-none-eabi-as
LD := arm-none-eabi-ld
GCC := arm-none-eabi-gcc
OBJCOPY := arm-none-eabi-objcopy
CPP := arm-none-eabi-cpp
SHA1SUM := sha1sum -c
GBAFIX := tools/gbafix/gbafix
MID := tools/mid2agb/mid2agb
AIF := tools/aif2pcm/aif2pcm
SCANINC := tools/scaninc/scaninc
PREPROC := tools/preproc/preproc
ASFLAGS := -mcpu=arm7tdmi
ASM_SUBDIR = asm
DATA_ASM_SUBDIR = data
SONG_SUBDIR = sound/songs
MID_SUBDIR = sound/songs/midi
ASM_BUILDDIR = $(ASM_SUBDIR)
DATA_ASM_BUILDDIR = $(DATA_ASM_SUBDIR)
SONG_BUILDDIR = $(SONG_SUBDIR)
MID_BUILDDIR = $(MID_SUBDIR)
ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s)
ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS))
DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s)
DATA_ASM_OBJS := $(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o,$(DATA_ASM_SRCS))
SONG_SRCS := $(wildcard $(SONG_SUBDIR)/*.s)
SONG_OBJS := $(patsubst $(SONG_SUBDIR)/%.s,$(SONG_BUILDDIR)/%.o,$(SONG_SRCS))
MID_SRCS := $(wildcard $(MID_SUBDIR)/*.mid)
MID_OBJS := $(patsubst $(MID_SUBDIR)/%.mid,$(MID_BUILDDIR)/%.o,$(MID_SRCS))
OBJS := $(ASM_OBJS) $(DATA_ASM_OBJS) $(SONG_OBJS) $(MID_OBJS)
OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS))
NAME := SoundMon
ROM := $(NAME).gba
ELF := $(NAME).elf
MAP := $(NAME).map
LDFLAGS = -Map ./$(MAP)
# Clear the default suffixes
.SUFFIXES:
# Don't delete intermediate files
.SECONDARY:
# Delete files that weren't built properly
.DELETE_ON_ERROR:
.SECONDEXPANSION:
.PHONY: all compare clean
all: $(ROM)
compare: $(ROM)
$(SHA1SUM) rom.sha1
clean:
rm -f sound/direct_sound_samples/*.bin
rm -f $(MID_SUBDIR)/*.s
rm -f $(ROM) $(ELF) $(OBJS) $(MAP)
include songs.mk
sound/%.bin: sound/%.aif ; $(AIF) $< $@
GCC_VER := $(shell $(GCC) -dumpversion)
$(ROM): $(ELF)
$(OBJCOPY) -O binary $< $@
$(GBAFIX) $@ -p --silent
$(ELF): %.elf: $(OBJS)
$(LD) $(LDFLAGS) -T ld_script.txt -o $@ $(OBJS) -L /opt/devkitpro/devkitARM/arm-none-eabi/lib/thumb/ -L /opt/devkitpro/devkitARM/lib/gcc/arm-none-eabi/$(GCC_VER)/thumb -lgcc -lc
$(GBAFIX) -m01 --silent $@
$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $$(asm_dep)
$(AS) $(ASFLAGS) -o $@ $<
ifeq ($(NODEP),1)
$(DATA_ASM_BUILDDIR)/%.o: data_dep :=
else
$(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) -I include -I "" $(DATA_ASM_SUBDIR)/$*.s)
endif
$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep)
$(PREPROC) $< charmap.txt | $(AS) $(ASFLAGS) -o $@
$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s
$(AS) $(ASFLAGS) -I sound -o $@ $<