-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathMakefile
More file actions
95 lines (75 loc) · 2.38 KB
/
Makefile
File metadata and controls
95 lines (75 loc) · 2.38 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
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
95
IN ?= metroid4
OUT := m4rs
OBJ_DIR := ./obj
BIN_DIR := ./bin
ifeq ($(OS),Windows_NT)
FLIPS := ./tools/flips.exe
AS := ./tools/armips-a8d71f0.exe
else
# Assume unix just has it in PATH
FLIPS := flips
AS := armips
endif
OPTIONALS += missiles_without_mains
OPTIONALS += unhidden_map
OPTIONALS += unhidden_map_doors
OPTIONALS += nerf_geron_weakness
OBJS := $(OPTIONALS:%=$(OBJ_DIR)/%.gba)
PATCHES := $(OPTIONALS:%=$(BIN_DIR)/%.ips)
# Command Line flags
BUILD_TYPE := debug
ifeq ($(BUILD_TYPE), debug)
BUILD_SYMBOL := -definelabel DEBUG 1
SYMBOL_DATA_ARMIPS_OPTION := -sym $(BIN_DIR)/$(OUT)-symbols.sym
else
BUILD_SYMBOL = -definelabel DEBUG 0
SYMBOL_DATA_ARMIPS_OPTION := -sym $(BIN_DIR)/$(OUT)-base-symbols.sym
endif
QOL := true
ifeq ($(QOL), true)
QOL_SYMBOL := -definelabel QOL 1
else
QOL_SYMBOL = -definelabel QOL 0
endif
ALL_SYMBOLS = $(BUILD_SYMBOL) $(QOL_SYMBOL)
all: $(BIN_DIR)/m4rs.gba
# Symbols file are only created on debug
ifeq ($(BUILD_TYPE), debug)
all:
cat mf_u.sym $(BIN_DIR)/$(OUT)-symbols.sym > $(BIN_DIR)/$(OUT).sym
endif
$(OBJ_DIR) $(BIN_DIR):
mkdir -p $@
$(BIN_DIR)/$(OUT).gba: check | $(OBJ_DIR) $(BIN_DIR)
$(AS) $(SYMBOL_DATA_ARMIPS_OPTION) $(ALL_SYMBOLS) src/main.s
cp $(OBJ_DIR)/$(OUT).gba $@
$(OBJ_DIR)/base.gba: $(BIN_DIR)/$(OUT).gba | $(OBJ_DIR)
cp $< $@
$(OBJ_DIR)/%.gba: check | $(OBJ_DIR)
$(AS) -sym $(BIN_DIR)/$(OUT)-$*-symbols.sym $(ALL_SYMBOLS) -definelabel $* 1 src/main.s
mv $(OBJ_DIR)/$(OUT).gba $@
$(BIN_DIR)/%.ips: $(OBJ_DIR)/%.gba $(OBJ_DIR)/base.gba
$(FLIPS) -c $(OBJ_DIR)/base.gba $< $@
$(BIN_DIR)/$(OUT).bps: $(OBJ_DIR)/base.gba
$(FLIPS) -c $(IN).gba $< $@
check: $(IN).gba
md5sum -c $(IN).md5
dist: $(PATCHES) $(BIN_DIR)/$(OUT).bps
clean:
$(RM) $(OBJ_DIR)/*
$(RM) $(BIN_DIR)/*
help:
@echo "Makefile for building the project"
@echo ""
@echo "Targets:"
@echo " all - Build the project."
@echo " dist - Builds the project and creates BPS/IPS patches for all optional configurations."
@echo " clean - Remove all compiled binaries and patches."
@echo " help - Displays this help message."
@echo ""
@echo "Build Options:"
@echo " BUILD_TYPE - Sets the build type. Possible values are debug and release. Defaults to debug."
@echo " QOL - Sets whether to apply non-essential but convenient features. Possible values are true and false. Defaults to true."
@echo ""
.PHONY: all check clean dist
.INTERMEDIATE: $(OBJS)