Repository navigation
Expand file tree
/
Copy pathoverlays.mk
More file actions
66 lines (44 loc) · 2.6 KB
/
Copy pathoverlays.mk
File metadata and controls
66 lines (44 loc) · 2.6 KB
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
# macros for overlay definition that automatically grab everything that we need from the folders provided
CODE_BUILD_DIRS += $(BUILD)/
THUMB_HELP := $(BUILD)/thumb_help.o
LINKED_OUTPUTS = build/linked.o
INDIVIDUAL := individual
OVERLAYS := $(filter-out $(INDIVIDUAL) $(shell cd $(C_SUBDIR); ls *.*),$(shell cd $(C_SUBDIR); ls))
INDIVIDUAL_OVERLAYS = $(basename $(notdir $(wildcard $(C_SUBDIR)/$(INDIVIDUAL)/*.c)))
# everything is expanded because it was not working for me otherwise
# this is aggressively defined but works. in order to add a new overlay, you just have to add to the top now.
define OVERLAY_DEFINE
$1_LINK = $(BUILD)/$1_linked.o
$1_OUTPUT = $(BUILD)/output_$1.bin
OVERLAY_OUTPUTS += $(BUILD)/output_$1.bin
LINKED_OUTPUTS += $(BUILD)/$1_linked.o
CODE_BUILD_DIRS += $(BUILD)/$1/
ALL_C_SRCS += $(wildcard $(C_SUBDIR)/$1/*.c)
ALL_ASM_SRCS += $(wildcard $(ASM_SUBDIR)/$1/*.s)
$(BUILD)/$1_linked.o:$(patsubst $(C_SUBDIR)/%.c,$(BUILD)/%.o,$(wildcard $(C_SUBDIR)/$1/*.c)) $(patsubst $(ASM_SUBDIR)/%.s,$(BUILD)/%.o,$(wildcard $(ASM_SUBDIR)/$1/*.s)) $(BUILD)/rom_gen.ld
$(LD) $(BUILD)/rom_gen.ld -T $(C_SUBDIR)/$1/linker.ld -o $(BUILD)/$1_linked.o $(patsubst $(C_SUBDIR)/%.c,$(BUILD)/%.o,$(wildcard $(C_SUBDIR)/$1/*.c)) $(patsubst $(ASM_SUBDIR)/%.s,$(BUILD)/%.o,$(wildcard $(ASM_SUBDIR)/$1/*.s)) $(THUMB_HELP)
$(BUILD)/output_$1.bin:$(BUILD)/$1_linked.o
$(OBJCOPY) -O binary $(BUILD)/$1_linked.o $(BUILD)/output_$1.bin
endef
ifneq (1,$(NOSCAN))
$(foreach overlay, $(OVERLAYS), $(eval $(call OVERLAY_DEFINE,$(overlay))))
endif
CODE_BUILD_DIRS += $(BUILD)/$(INDIVIDUAL)/
$(BUILD)/rom_gen_battle.ld:$(battle_LINK) $(battle_OUTPUT) $(BUILD)/rom_gen.ld
cp $(BUILD)/rom_gen.ld $(BUILD)/rom_gen_battle.ld
$(PYTHON) scripts/generate_ld.py $(BUILD)/rom_gen_battle.ld $(battle_LINK)
define INDIVIDUAL_OVERLAY_DEFINE
LDFLAGS_$1 = $(BUILD)/rom_gen_battle.ld -T $(C_SUBDIR)/$(INDIVIDUAL)/$1.ld
$1_LINK = $(BUILD)/$1_linked.o
$1_OUTPUT = $(BUILD)/output_$1.bin
OVERLAY_OUTPUTS += $(BUILD)/output_$1.bin
LINKED_OUTPUTS += $(BUILD)/$1_linked.o
ALL_C_SRCS += $(C_SUBDIR)/$(INDIVIDUAL)/$1.c
$(BUILD)/$1_linked.o:$(patsubst $(C_SUBDIR)/%.c,$(BUILD)/%.o,$(C_SUBDIR)/$(INDIVIDUAL)/$1.c) $(THUMB_HELP) $(BUILD)/rom_gen_battle.ld
$(LD) $(BUILD)/rom_gen_battle.ld -T $(C_SUBDIR)/$(INDIVIDUAL)/linker/$1.ld -o $(BUILD)/$1_linked.o $(patsubst $(C_SUBDIR)/%.c,$(BUILD)/%.o,$(C_SUBDIR)/$(INDIVIDUAL)/$1.c) $(THUMB_HELP)
$(BUILD)/output_$1.bin:$(BUILD)/$1_linked.o
$(OBJCOPY) -O binary $(BUILD)/$1_linked.o $(BUILD)/output_$1.bin
endef
ifneq (1,$(NOSCAN))
$(foreach overlay, $(INDIVIDUAL_OVERLAYS), $(eval $(call INDIVIDUAL_OVERLAY_DEFINE,$(overlay))))
endif