@@ -58,9 +58,38 @@ N64_EMULATOR ?=
58
58
# Set prefix to mips binutils binaries (mips-linux-gnu-ld => 'mips-linux-gnu-') - Change at your own risk!
59
59
# In nearly all cases, not having 'mips-linux-gnu-*' binaries on the PATH is indicative of missing dependencies
60
60
MIPS_BINUTILS_PREFIX ?= mips-linux-gnu-
61
+ PRINT = printf
62
+
63
+ # Whether to hide commands or not
64
+ VERBOSE ?= 0
65
+ ifeq ($(VERBOSE ) ,0)
66
+ V := @
67
+ endif
68
+
69
+ # Whether to colorize build messages
70
+ COLOR ?= 1
61
71
62
72
TARGET := pokestadium
63
73
74
+ # Run at the start of the build
75
+ ifeq ($(filter clean distclean setup extract venv rom run all diff-init,$(MAKECMDGOALS ) ) ,)
76
+ $(info ==== Build Options ====)
77
+ $(info Version : $(VERSION ) )
78
+ $(info Microcode : f3dex)
79
+ $(info Target : $(TARGET ) )
80
+ ifeq ($(COMPARE),1)
81
+ $(info Compare ROM : yes)
82
+ else
83
+ $(info Compare ROM : no)
84
+ endif
85
+ ifeq ($(NON_MATCHING),1)
86
+ $(info Build Matching : no)
87
+ else
88
+ $(info Build Matching : yes)
89
+ endif
90
+ $(info =======================)
91
+ endif
92
+
64
93
BASEROM_DIR := baseroms/$(VERSION )
65
94
BASEROM := $(BASEROM_DIR ) /baserom.z64
66
95
@@ -242,6 +271,20 @@ build/src/hal_libc.o: CFLAGS += -signed
242
271
243
272
build/src/libleo/% .o : CC := $(CC_OLD )
244
273
274
+ ifeq ($(COLOR ) ,1)
275
+ NO_COL := \033[0m
276
+ RED := \033[0;31m
277
+ GREEN := \033[0;32m
278
+ BLUE := \033[0;34m
279
+ YELLOW := \033[0;33m
280
+ BLINK := \033[33;5m
281
+ endif
282
+
283
+ # Common build print status function
284
+ define print
285
+ @$(PRINT ) "$(GREEN )$(1 ) $(YELLOW )$(2 )$(GREEN ) -> $(BLUE )$(3 )$(NO_COL ) \n"
286
+ endef
287
+
245
288
DECOMP_POKESTADIUM := $(filter-out src/libleo/% ,$(foreach dir,$(SRC_DIRS ) ,$(wildcard $(dir ) /* .c) ) )
246
289
DECOMP_POKESTADIUM_FILTERED := $(patsubst % .c,% .o,$(addprefix build/,$(shell find $(DECOMP_POKESTADIUM ) -type f -exec grep -l "GLOBAL_ASM" {} \;) ) )
247
290
@@ -260,40 +303,47 @@ O_FILES += build/src/libleo/bootstrap.s.o
260
303
all : rom
261
304
262
305
rom : $(ROM )
306
+ @$(PRINT ) " $( RED) Building ROM...\n$( NO_COL) "
263
307
ifneq ($(COMPARE ) ,0)
264
308
@md5sum $(ROM)
265
309
@md5sum -c $(BASEROM_DIR)/checksum.md5
266
310
endif
267
311
268
312
clean :
269
- $(RM ) -r $(BUILD_DIR )
313
+ @$(PRINT ) " $( RED) Cleaning ROM build files...\n$( NO_COL) "
314
+ $(V )$(RM ) -r $(BUILD_DIR )
270
315
271
316
libclean :
272
- $(MAKE ) -C lib/ultralib clean VERSION=$(ULTRALIB_VERSION ) TARGET=$(ULTRALIB_TARGET )
273
- $(RM ) -rf $(BUILD_DIR ) /lib
274
- $(RM ) -r build/$(TARGET ) -$(VERSION ) .elf
275
- $(RM ) -r build/$(TARGET ) -$(VERSION ) .ld
276
- $(RM ) -r build/$(TARGET ) -$(VERSION ) .map
277
- $(RM ) -r build/$(TARGET ) -$(VERSION ) .z64
317
+ @$(PRINT ) " $( RED) Cleaning libultra build files...\n$( NO_COL) "
318
+ $(V )$(MAKE ) -C lib/ultralib clean VERSION=$(ULTRALIB_VERSION ) TARGET=$(ULTRALIB_TARGET )
319
+ $(V )$(RM ) -rf $(BUILD_DIR ) /lib
320
+ $(V )$(RM ) -r build/$(TARGET ) -$(VERSION ) .elf
321
+ $(V )$(RM ) -r build/$(TARGET ) -$(VERSION ) .ld
322
+ $(V )$(RM ) -r build/$(TARGET ) -$(VERSION ) .map
323
+ $(V )$(RM ) -r build/$(TARGET ) -$(VERSION ) .z64
278
324
279
325
distclean : clean libclean
280
- $(RM ) -r $(BUILD_DIR ) asm/ assets/ .splat/
281
- $(RM ) -r linker_scripts/$(VERSION ) /auto $(LDSCRIPT )
282
- $(MAKE ) -C tools distclean
326
+ @$(PRINT ) " $( RED) Performing full source distribution clean...\n$( NO_COL) "
327
+ $(V )$(RM ) -r $(BUILD_DIR ) asm/ assets/ .splat/
328
+ $(V )$(RM ) -r linker_scripts/$(VERSION ) /auto $(LDSCRIPT )
329
+ $(V )$(MAKE ) -C tools distclean
283
330
284
331
venv :
285
- test -d $(VENV ) || python3 -m venv $(VENV )
286
- $(PYTHON ) -m ensurepip --upgrade
287
- $(PYTHON ) -m pip install -U pip
288
- $(PYTHON ) -m pip install -U -r requirements.txt
332
+ @$(PRINT ) " $( RED) Testing venv and setting up python requirements...\n$( NO_COL) "
333
+ $(V ) test -d $(VENV ) || python3 -m venv $(VENV )
334
+ $(V )$(PYTHON ) -m ensurepip --upgrade
335
+ $(V )$(PYTHON ) -m pip install -U pip
336
+ $(V )$(PYTHON ) -m pip install -U -r requirements.txt
289
337
290
338
setup :
291
- $(MAKE ) -C tools WARNINGS_CHECK=$(WARNINGS_CHECK )
339
+ @$(PRINT ) " $( RED) Setting up tools...\n$( NO_COL) "
340
+ $(V )$(MAKE ) -C tools WARNINGS_CHECK=$(WARNINGS_CHECK )
292
341
293
342
extract :
294
- $(RM ) -r asm/$(VERSION ) assets/$(VERSION )
295
- $(CAT ) yamls/$(VERSION ) /header.yaml yamls/$(VERSION ) /rom.yaml > $(SPLAT_YAML )
296
- $(SPLAT ) $(SPLAT_FLAGS ) $(SPLAT_YAML )
343
+ @$(PRINT ) " $( YELLOW) Running ROM extraction...\n$( NO_COL) "
344
+ $(V )$(RM ) -r asm/$(VERSION ) assets/$(VERSION )
345
+ $(V )$(CAT ) yamls/$(VERSION ) /header.yaml yamls/$(VERSION ) /rom.yaml > $(SPLAT_YAML )
346
+ $(V )$(SPLAT ) $(SPLAT_FLAGS ) $(SPLAT_YAML )
297
347
298
348
lib : $(ULTRALIB_LIB )
299
349
@@ -324,44 +374,53 @@ endif
324
374
# ### Various Recipes ####
325
375
326
376
$(ROM ) : $(ELF )
327
- $(OBJCOPY ) -O binary --gap-fill=0xFF $< $@
328
- $(ENCRYPT_LIBLEO ) $@ $(MAP )
377
+ $(call print,Building ROM:,$< ,$@ )
378
+ $(V )$(OBJCOPY ) -O binary --gap-fill=0xFF $< $@
379
+ $(V )$(ENCRYPT_LIBLEO ) $@ $(MAP )
329
380
330
381
# TODO: update rom header checksum
331
382
332
383
# TODO: avoid using auto/undefined
333
384
$(ELF ) : $(O_FILES ) $(LIBULTRA_LIB ) $(LDSCRIPT ) $(BUILD_DIR ) /linker_scripts/$(VERSION ) /hardware_regs.ld $(BUILD_DIR ) /linker_scripts/$(VERSION ) /undefined_syms.ld $(BUILD_DIR ) /linker_scripts/$(VERSION ) /unused_syms.ld $(BUILD_DIR ) /linker_scripts/common_undef_syms.ld $(BUILD_DIR ) /linker_scripts/$(VERSION ) /auto/undefined_syms_auto.ld $(BUILD_DIR ) /linker_scripts/$(VERSION ) /auto/undefined_funcs_auto.ld
334
- $(LD ) $(LDFLAGS ) -T $(LDSCRIPT ) \
385
+ @$(PRINT ) " $( GREEN) Linking ELF file: $( BLUE) $@ $( NO_COL) \n"
386
+ $(V )$(LD ) $(LDFLAGS ) -T $(LDSCRIPT ) \
335
387
-T $(BUILD_DIR ) /linker_scripts/$(VERSION ) /hardware_regs.ld -T $(BUILD_DIR ) /linker_scripts/$(VERSION ) /undefined_syms.ld \
336
388
-T $(BUILD_DIR ) /linker_scripts/$(VERSION ) /unused_syms.ld -T $(BUILD_DIR ) /linker_scripts/common_undef_syms.ld \
337
389
-T $(BUILD_DIR ) /linker_scripts/$(VERSION ) /auto/undefined_syms_auto.ld -T $(BUILD_DIR ) /linker_scripts/$(VERSION ) /auto/undefined_funcs_auto.ld \
338
390
-Map $(MAP ) $(LIBULTRA_LIB ) -o $@
339
391
340
392
$(LDSCRIPT ) : linker_scripts/$(VERSION ) /$(TARGET ) .ld
341
- cp $< $@
393
+ $(call print,Copying linker script to build dir:,$< ,$@ )
394
+ $(V ) cp $< $@
342
395
343
396
$(BUILD_DIR ) /% .ld : % .ld
344
- $(CPP ) $(CPPFLAGS ) $(BUILD_DEFINES ) $(IINC ) $< > $@
397
+ $(call print,Preprocessing linker script:,$< ,$@ )
398
+ $(V )$(CPP ) $(CPPFLAGS ) $(BUILD_DEFINES ) $(IINC ) $< > $@
345
399
346
400
$(LIBULTRA_LIB ) : $(ULTRALIB_LIB )
347
- cp $< $@
348
- $(LIBDUMP_CMD )
401
+ $(call print,Archiving libultra lib:,$< ,$@ )
402
+ $(V ) cp $< $@
403
+ $(V )$(LIBDUMP_CMD )
349
404
350
405
$(ULTRALIB_LIB ) :
351
- $(MAKE ) -C lib/ultralib VERSION=$(ULTRALIB_VERSION ) TARGET=$(ULTRALIB_TARGET ) FIXUPS=1 CROSS=$(MIPS_BINUTILS_PREFIX ) CC=../../$(CC_OLD )
406
+ @$(PRINT ) " $( GREEN) Making libultra: $( BLUE) $@ $( NO_COL) \n"
407
+ $(V )$(MAKE ) -C lib/ultralib VERSION=$(ULTRALIB_VERSION ) TARGET=$(ULTRALIB_TARGET ) FIXUPS=1 CROSS=$(MIPS_BINUTILS_PREFIX ) CC=../../$(CC_OLD ) VERBOSE=$(VERBOSE ) COLOR=$(COLOR )
352
408
353
409
$(BUILD_DIR ) /% .o : % .bin
354
- $(OBJCOPY ) -I binary -O elf32-big $< $@
410
+ $(call print,Binning object:,$< ,$@ )
411
+ $(V )$(OBJCOPY ) -I binary -O elf32-big $< $@
355
412
356
413
$(BUILD_DIR ) /% .o : % .s
357
- $(ICONV ) $(ICONV_FLAGS ) $< | $(AS ) $(ASFLAGS ) $(ENDIAN ) $(IINC ) -I $(dir $* ) -o $@
358
- $(OBJDUMP_CMD )
414
+ $(call print,Assembling:,$< ,$@ )
415
+ $(V )$(ICONV ) $(ICONV_FLAGS ) $< | $(AS ) $(ASFLAGS ) $(ENDIAN ) $(IINC ) -I $(dir $* ) -o $@
416
+ $(V )$(OBJDUMP_CMD )
359
417
360
418
$(BUILD_DIR ) /% .o : % .c
361
- $(CC_CHECK ) $(CC_CHECK_FLAGS ) $(IINC ) -I $(dir $* ) $(CHECK_WARNINGS ) $(BUILD_DEFINES ) $(COMMON_DEFINES ) $(RELEASE_DEFINES ) $(GBI_DEFINES ) $(LIBULTRA_DEFINES ) $(C_DEFINES ) $(MIPS_BUILTIN_DEFS ) -o $@ $<
362
- $(CC ) -c $(CFLAGS ) $(BUILD_DEFINES ) $(IINC ) $(WARNINGS ) $(MIPS_VERSION ) $(ENDIAN ) $(COMMON_DEFINES ) $(RELEASE_DEFINES ) $(GBI_DEFINES ) $(LIBULTRA_DEFINES ) $(C_DEFINES ) $(OPTFLAGS ) -o $@ $<
363
- $(OBJDUMP_CMD )
364
- $(RM_MDEBUG )
419
+ $(call print,Compiling:,$< ,$@ )
420
+ $(V )$(CC_CHECK ) $(CC_CHECK_FLAGS ) $(IINC ) -I $(dir $* ) $(CHECK_WARNINGS ) $(BUILD_DEFINES ) $(COMMON_DEFINES ) $(RELEASE_DEFINES ) $(GBI_DEFINES ) $(LIBULTRA_DEFINES ) $(C_DEFINES ) $(MIPS_BUILTIN_DEFS ) -o $@ $<
421
+ $(V )$(CC ) -c $(CFLAGS ) $(BUILD_DEFINES ) $(IINC ) $(WARNINGS ) $(MIPS_VERSION ) $(ENDIAN ) $(COMMON_DEFINES ) $(RELEASE_DEFINES ) $(GBI_DEFINES ) $(LIBULTRA_DEFINES ) $(C_DEFINES ) $(OPTFLAGS ) -o $@ $<
422
+ $(V )$(OBJDUMP_CMD )
423
+ $(V )$(RM_MDEBUG )
365
424
366
425
# Add these as a dependency for .o files
367
426
asset_files : $(ASSET_INC_C )
0 commit comments