summaryrefslogtreecommitdiff
path: root/arm9/Makefile
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-05-09 16:09:08 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-05-09 16:09:08 -0400
commitaa6e5b3edc83c5223199fc52e8d92f2f0f4c338e (patch)
tree3249d3aef1192d359450b73ac3a8339b6e05ddc3 /arm9/Makefile
parentd23c7d311ba5f7b87ac111e4e66aec1674afc0ea (diff)
Module 01 static initializer; split module 04 ro/data
Diffstat (limited to 'arm9/Makefile')
-rw-r--r--arm9/Makefile27
1 files changed, 18 insertions, 9 deletions
diff --git a/arm9/Makefile b/arm9/Makefile
index bc8c8491..16fd7371 100644
--- a/arm9/Makefile
+++ b/arm9/Makefile
@@ -23,9 +23,9 @@ endif
ifeq ($(OS),Windows_NT)
EXE := .exe
-WINE :=
+WINE :=
else
-EXE :=
+EXE :=
WINE := wine
endif
@@ -49,12 +49,16 @@ LD_TEMPLATE := ARM9-TS.lcf.template
SRC_DIRS := src lib lib/src $(wildcard modules/*/src)
ASM_DIRS := asm data files $(wildcard modules/*/asm)
-C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))
-S_FILES := $(foreach dir,$(ASM_DIRS),$(wildcard $(dir)/*.s))
+C_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c))
+CXX_FILES := $(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.cpp))
+S_FILES := $(foreach dir,$(ASM_DIRS),$(wildcard $(dir)/*.s))
+
+C_OBJS = $(C_FILES:%.c=$(BUILD_DIR)/%.o)
+CXX_OBJS = $(CXX_FILES:%.cpp=$(BUILD_DIR)/%.o)
+S_OBJS = $(S_FILES:%.s=$(BUILD_DIR)/%.o)
# Object files
-O_FILES := $(foreach file,$(C_FILES),$(BUILD_DIR)/$(file:.c=.o)) \
- $(foreach file,$(S_FILES),$(BUILD_DIR)/$(file:.s=.o)) \
+O_FILES := $(C_OBJS) $(CXX_OBJS) $(S_OBJS)
# Overlay modules
# FIXME: lcf doesn't like this
@@ -83,6 +87,7 @@ MAKELSF_FLAGS := -DCONST_34=0x34 -DCONST_3F=0x3F
AS = $(WINE) $(MWASMARM)
CC = $(WINE) $(MWCCARM)
+CXX = $(WINE) $(MWCCARM)
CPP := cpp -P
LD = $(WINE) $(MWLDARM)
AR := $(CROSS)ar
@@ -92,6 +97,7 @@ OBJCOPY := $(CROSS)objcopy
# ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm9_thumb.s -o arm9.o
ASFLAGS = -proc arm5te -i ..
CFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -ir ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int
+CXXFLAGS = -O4,p -proc arm946e -fp soft -lang c99 -Cpp_exceptions off -ir ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int
LDFLAGS = -map -nodead -w off -proc v5te -interworking -map -symtab -m _start
####################### Other Tools #########################
@@ -157,15 +163,18 @@ build/src/FUN_020910A4.o: MWCCVERSION = 1.2/sp2p3
####################### Everything Else ######################
ifeq (,$(NODEP))
-$(BUILD_DIR)/%.o: dep = $(shell $(SCANINC) -I ../include -I ../include-mw -I lib/include $*.[cs])
+$(BUILD_DIR)/%.o: dep = $(shell $(SCANINC) -I ../include -I ../include-mw -I lib/include $(filter $*.c,$(C_FILES)) $(filter $*.cpp,$(CXX_FILES)) $(filter $*.s,$(S_FILES)))
else
$(BUILD_DIR)/%.o: dep :=
endif
-$(BUILD_DIR)/%.o: %.c $$(dep)
+$(C_OBJS): $(BUILD_DIR)/%.o: %.c $$(dep)
$(CC) -c $(CFLAGS) -o $@ $<
-$(BUILD_DIR)/%.o: %.s $$(dep)
+$(CXX_OBJS): $(BUILD_DIR)/%.o: %.cpp $$(dep)
+ $(CXX) -c $(CXXFLAGS) -o $@ $<
+
+$(S_OBJS): $(BUILD_DIR)/%.o: %.s $$(dep)
$(AS) $(ASFLAGS) -o $@ $<
$(BUILD_DIR)/$(LD_SCRIPT): $(LD_SCRIPT) $(LD_TEMPLATE) undefined_syms.txt macros.lcf.inc