@@ -47,6 +47,8 @@ STGZ_DECOMP_DIR ?= resources/decomp
4747# game region, only eur is supported atm
4848REGION := eur
4949
50+ COMPARE ? = 1
51+
5052# ## project tools ###
5153
5254MAKE = make
@@ -70,14 +72,15 @@ DSROM := tools/dsrom
7072
7173# armips setup
7274ARMIPS_DIR := tools/armips
73- ARMIPS ? = $( ARMIPS_DIR) /build /armips
75+ ARMIPS ? = $( ARMIPS_DIR) /out /armips
7476
7577# main source/objects
7678BUILD_DIR := build/$( REGION)
77- ASM_FILES := $( wildcard src/* .s)
78- C_FILES := $( wildcard src/* .c)
79- CPP_FILES := $( wildcard src/* .cpp)
80- OBJ := $( foreach f,$( ASM_FILES) ,$( BUILD_DIR) /$( f:.s=.o) ) $( foreach f,$( C_FILES) ,$( BUILD_DIR) /$( f:.c=.o) ) $( foreach f,$( CPP_FILES) ,$( BUILD_DIR) /$( f:.cpp=.o) ) $( BUILD_DIR) /thumb-$( REGION) .o
79+ ALL_FILES := $( shell find src/ -path " src/thumb" -prune -o -print)
80+ ASM_FILES := $( filter %.s, $( ALL_FILES) )
81+ C_FILES := $( filter %.c, $( ALL_FILES) )
82+ CPP_FILES := $( filter %.cpp, $( ALL_FILES) )
83+ OBJ := $( foreach f,$( ASM_FILES) ,$( BUILD_DIR) /$( f:.s=.o) ) $( foreach f,$( C_FILES) ,$( BUILD_DIR) /$( f:.c=.o) ) $( foreach f,$( CPP_FILES) ,$( BUILD_DIR) /$( f:.cpp=.o) ) $( BUILD_DIR) /src/thumb/thumb-$( REGION) .o
8184DEPS := $( foreach f,$( ASM_FILES) ,$( BUILD_DIR) /$( f:.s=.d) ) $( foreach f,$( C_FILES) ,$( BUILD_DIR) /$( f:.c=.d) ) $( foreach f,$( CPP_FILES) ,$( BUILD_DIR) /$( f:.cpp=.d) )
8285
8386# hooks source/objects
@@ -111,8 +114,10 @@ RESERVED_SIZE := 0x10
111114RESERVED_ADDR := $( shell $( PYTHON) -c " print(f'0x{$( OVLGZ_ADDR) + $( OVLGZ_SIZE) - $( RESERVED_SIZE) :08X}')" )
112115
113116# compiler settings
114- CC := arm-none-eabi-gcc -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -nostdlib -nodefaultlibs -nostartfiles
115- WARNINGS := -Wall -Wno-multichar -Wno-unknown-pragmas
117+ CFLAGS_BASE := -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s -nostdlib -nodefaultlibs -nostartfiles
118+ CC := arm-none-eabi-gcc $( CFLAGS_BASE)
119+ CXX := arm-none-eabi-g++ $( CFLAGS_BASE)
120+ WARNINGS := -Wall -Wno-multichar -Wno-unknown-pragmas -Wno-strict-aliasing -Wno-unused-variable
116121INCLUDES := -I include -I $( STGZ_DECOMP_DIR) /include -I $( STGZ_DECOMP_DIR) /libs/c/include
117122CPP_DEFINES := -DGZ_OVL_ID=114 -DPACKAGE_VERSION=' $(PACKAGE_VERSION)' -DPACKAGE_NAME=' $(PACKAGE_NAME)' -DPACKAGE_COMMIT_AUTHOR=' $(PACKAGE_COMMIT_AUTHOR)' -DPACKAGE_AUTHOR=' $(PACKAGE_AUTHOR)'
118123CFLAGS := -Os -fno-short-enums -fomit-frame-pointer -ffast-math -fno-builtin -fshort-wchar -MMD -MP $( WARNINGS) $( INCLUDES) $( CPP_DEFINES)
@@ -136,8 +141,8 @@ HOOKS_GAME_BIN := $(HOOKS_GAME_ELF:.elf=.bin)
136141HOOKS_GAME_MAP := $( HOOKS_GAME_ELF:.elf=.map)
137142
138143# create output directories
139- $( shell mkdir -p $( BUILD_DIR) /src)
140- $( shell mkdir -p $( HOOKS_BUILD_DIR) /src)
144+ $( shell $( MKDIR ) -p $( BUILD_DIR) /src/thumb )
145+ $( shell $( MKDIR ) -p $( HOOKS_BUILD_DIR) /src)
141146
142147# ## project settings ###
143148
@@ -197,9 +202,11 @@ extract:
197202
198203hooks: overlay $( HOOKS_BIN) $( HOOKS_GAME_BIN)
199204
200- init: venv libs
205+ init: venv
201206 $( call print_no_args,Verifying baserom checksum...)
207+ ifeq ($( COMPARE) ,1)
202208 $( V) sha1sum -c $( EXTRACT_DIR) /baserom_st_$( REGION) .sha1
209+ endif
203210 $( V) $( DL_TOOL) dsrom v0.6.1
204211ifeq (" $( wildcard $( ARMIPS_DIR) ) " , " " )
205212 $( error armips not found! )
@@ -212,7 +219,7 @@ endif
212219
213220libs:
214221 $( call print_no_args,Generating game symbol library...)
215- $( V) $( PYTHON) tools/gen_libs.py -m libst -d $( STGZ_DECOMP_DIR) -b build
222+ $( V) $( PYTHON) tools/gen_libs.py -m libst -d $( STGZ_DECOMP_DIR)
216223 $( call print_no_args,Success! )
217224
218225overlay: $( BIN)
@@ -240,7 +247,7 @@ venv:
240247
241248# # process auto-generated thumb definitions (necessary to avoid crashes when calling thumb functions) ##
242249
243- $( BUILD_DIR) /thumb-$( REGION) .o: build /thumb-$( REGION) .s
250+ $( BUILD_DIR) /src/ thumb/thumb -$( REGION) .o: src/thumb /thumb-$( REGION) .s
244251 $( V) $( CC) $( CFLAGS) -fverbose-asm -Os -x assembler-with-cpp -fomit-frame-pointer -c " $<" -o " $@ "
245252
246253# # process source files ##
@@ -255,15 +262,15 @@ $(BUILD_DIR)/src/%.o: src/%.c
255262
256263$( BUILD_DIR) /src/%.o: src/%.cpp
257264 $( call print_two_args,Compiling:,$< ,$@ )
258- $( V) $( CC ) $( CPP_FLAGS) -c " $<" -o " $@ "
265+ $( V) $( CXX ) $( CPP_FLAGS) -c " $<" -o " $@ "
259266
260267$( HOOKS_BUILD_DIR) /src/%.o: hooks/src/%.c
261268 $( call print_two_args,Compiling hooks:,$< ,$@ )
262269 $( V) $( CC) $( CFLAGS) -DOVERLAY_0_SLOT_ADDR=$( OVERLAY_0_SLOT_ADDR) -c " $<" -o " $@ "
263270
264271$( HOOKS_BUILD_DIR) /src/%.o: hooks/src/%.cpp
265272 $( call print_two_args,Compiling hooks:,$< ,$@ )
266- $( V) $( CC ) $( CPP_FLAGS) -c " $<" -o " $@ "
273+ $( V) $( CXX ) $( CPP_FLAGS) -c " $<" -o " $@ "
267274
268275# # process build artifacts ##
269276
0 commit comments