Skip to content

Commit b68537d

Browse files
authored
Merge pull request #140 from RevoSucks/verbose
Verbose-ify Makefile
2 parents 2c5e496 + 29e0449 commit b68537d

File tree

4 files changed

+131
-46
lines changed

4 files changed

+131
-46
lines changed

Makefile

+92-33
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,38 @@ N64_EMULATOR ?=
5858
# Set prefix to mips binutils binaries (mips-linux-gnu-ld => 'mips-linux-gnu-') - Change at your own risk!
5959
# In nearly all cases, not having 'mips-linux-gnu-*' binaries on the PATH is indicative of missing dependencies
6060
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
6171

6272
TARGET := pokestadium
6373

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+
6493
BASEROM_DIR := baseroms/$(VERSION)
6594
BASEROM := $(BASEROM_DIR)/baserom.z64
6695

@@ -242,6 +271,20 @@ build/src/hal_libc.o: CFLAGS += -signed
242271

243272
build/src/libleo/%.o: CC := $(CC_OLD)
244273

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+
245288
DECOMP_POKESTADIUM := $(filter-out src/libleo/%,$(foreach dir,$(SRC_DIRS),$(wildcard $(dir)/*.c)))
246289
DECOMP_POKESTADIUM_FILTERED := $(patsubst %.c,%.o,$(addprefix build/,$(shell find $(DECOMP_POKESTADIUM) -type f -exec grep -l "GLOBAL_ASM" {} \;)))
247290

@@ -260,40 +303,47 @@ O_FILES += build/src/libleo/bootstrap.s.o
260303
all: rom
261304

262305
rom: $(ROM)
306+
@$(PRINT) "$(RED)Building ROM...\n$(NO_COL)"
263307
ifneq ($(COMPARE),0)
264308
@md5sum $(ROM)
265309
@md5sum -c $(BASEROM_DIR)/checksum.md5
266310
endif
267311

268312
clean:
269-
$(RM) -r $(BUILD_DIR)
313+
@$(PRINT) "$(RED)Cleaning ROM build files...\n$(NO_COL)"
314+
$(V)$(RM) -r $(BUILD_DIR)
270315

271316
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
278324

279325
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
283330

284331
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
289337

290338
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)
292341

293342
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)
297347

298348
lib: $(ULTRALIB_LIB)
299349

@@ -324,44 +374,53 @@ endif
324374
#### Various Recipes ####
325375

326376
$(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)
329380

330381
# TODO: update rom header checksum
331382

332383
# TODO: avoid using auto/undefined
333384
$(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) \
335387
-T $(BUILD_DIR)/linker_scripts/$(VERSION)/hardware_regs.ld -T $(BUILD_DIR)/linker_scripts/$(VERSION)/undefined_syms.ld \
336388
-T $(BUILD_DIR)/linker_scripts/$(VERSION)/unused_syms.ld -T $(BUILD_DIR)/linker_scripts/common_undef_syms.ld \
337389
-T $(BUILD_DIR)/linker_scripts/$(VERSION)/auto/undefined_syms_auto.ld -T $(BUILD_DIR)/linker_scripts/$(VERSION)/auto/undefined_funcs_auto.ld \
338390
-Map $(MAP) $(LIBULTRA_LIB) -o $@
339391

340392
$(LDSCRIPT): linker_scripts/$(VERSION)/$(TARGET).ld
341-
cp $< $@
393+
$(call print,Copying linker script to build dir:,$<,$@)
394+
$(V)cp $< $@
342395

343396
$(BUILD_DIR)/%.ld: %.ld
344-
$(CPP) $(CPPFLAGS) $(BUILD_DEFINES) $(IINC) $< > $@
397+
$(call print,Preprocessing linker script:,$<,$@)
398+
$(V)$(CPP) $(CPPFLAGS) $(BUILD_DEFINES) $(IINC) $< > $@
345399

346400
$(LIBULTRA_LIB): $(ULTRALIB_LIB)
347-
cp $< $@
348-
$(LIBDUMP_CMD)
401+
$(call print,Archiving libultra lib:,$<,$@)
402+
$(V)cp $< $@
403+
$(V)$(LIBDUMP_CMD)
349404

350405
$(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)
352408

353409
$(BUILD_DIR)/%.o: %.bin
354-
$(OBJCOPY) -I binary -O elf32-big $< $@
410+
$(call print,Binning object:,$<,$@)
411+
$(V)$(OBJCOPY) -I binary -O elf32-big $< $@
355412

356413
$(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)
359417

360418
$(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)
365424

366425
# Add these as a dependency for .o files
367426
asset_files: $(ASSET_INC_C)

lib/ultralib/Makefile

+20-12
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ BUILD_AR := $(BUILD_DIR)/$(TARGET).a
2020

2121
WORKING_DIR := $(shell pwd)
2222

23+
PRINT = printf
24+
ifeq ($(VERBOSE),0)
25+
V := @
26+
endif
27+
2328
CPP := cpp -P
2429
AR := ar
2530

@@ -123,7 +128,8 @@ $(shell mkdir -p $(BASE_DIR) src $(foreach dir,$(SRC_DIRS),$(BUILD_DIR)/$(dir)))
123128
all: $(BUILD_AR)
124129

125130
$(BUILD_AR): $(MARKER_FILES)
126-
$(AR_OLD) rcs $@ $(AR_ORDER)
131+
@$(PRINT) "$(GREEN)Making libultra archive: $(BLUE)$@ $(NO_COL)\n"
132+
$(V)$(AR_OLD) rcs $@ $(AR_ORDER)
127133
ifneq ($(COMPARE),0)
128134
# patch archive creation time and individual files' ownership & permissions
129135
dd bs=1 skip=24 seek=24 count=12 conv=notrunc if=$(BASE_AR) of=$@ status=none
@@ -133,11 +139,11 @@ ifneq ($(COMPARE),0)
133139
endif
134140

135141
clean:
136-
$(RM) -rf $(BUILD_DIR)
142+
$(V)$(RM) -rf $(BUILD_DIR)
137143

138144
distclean:
139-
$(MAKE) -C tools distclean
140-
$(RM) -rf extracted/ $(BUILD_ROOT)
145+
$(V)$(MAKE) -C tools distclean
146+
$(V)$(RM) -rf extracted/ $(BUILD_ROOT)
141147

142148
setup:
143149
$(MAKE) -C tools
@@ -170,7 +176,8 @@ $(BUILD_DIR)/src/voice/%.marker: OPTFLAGS += -DLANG_JAPANESE -I$(WORKING_DIR)/sr
170176
$(BUILD_DIR)/src/voice/%.marker: CC := tools/compile_sjis.py -D__CC=$(WORKING_DIR)/$(CC) -D__BUILD_DIR=$(BUILD_DIR)
171177

172178
$(C_MARKER_FILES): $(BUILD_DIR)/%.marker: %.c
173-
cd $(<D) && $(WORKING_DIR)/$(CC) $(CFLAGS) $(MIPS_VERSION) $(CPPFLAGS) $(OPTFLAGS) $(<F) $(IINC) -o $(WORKING_DIR)/$(@:.marker=.o)
179+
@$(PRINT) "$(GREEN)Compiling libultra file: $(BLUE)$@ $(NO_COL)\n"
180+
$(V)cd $(<D) && $(WORKING_DIR)/$(CC) $(CFLAGS) $(MIPS_VERSION) $(CPPFLAGS) $(OPTFLAGS) $(<F) $(IINC) -o $(WORKING_DIR)/$(@:.marker=.o)
174181
ifneq ($(COMPARE),0)
175182
# check if this file is in the archive; patch corrupted bytes and change file timestamps to match original if so
176183
@$(if $(findstring $(BASE_DIR)/$(@F:.marker=.o), $(BASE_OBJS)), \
@@ -181,15 +188,16 @@ ifneq ($(COMPARE),0)
181188
)
182189
endif
183190
ifneq ($(FIXUPS),0)
184-
tools/set_o32abi_bit.py $(WORKING_DIR)/$(@:.marker=.o)
185-
$(CROSS)strip $(WORKING_DIR)/$(@:.marker=.o) -N asdasdasdasd
186-
$(CROSS)objcopy --remove-section .mdebug $(WORKING_DIR)/$(@:.marker=.o)
191+
$(V)tools/set_o32abi_bit.py $(WORKING_DIR)/$(@:.marker=.o)
192+
$(V)$(CROSS)strip $(WORKING_DIR)/$(@:.marker=.o) -N asdasdasdasd
193+
$(V)$(CROSS)objcopy --remove-section .mdebug $(WORKING_DIR)/$(@:.marker=.o)
187194
endif
188195
# create or update the marker file
189196
@touch $@
190197

191198
$(S_MARKER_FILES): $(BUILD_DIR)/%.marker: %.s
192-
cd $(<D) && $(WORKING_DIR)/$(CC) $(ASFLAGS) $(MIPS_VERSION) $(CPPFLAGS) $(ASOPTFLAGS) $(<F) $(IINC) -o $(WORKING_DIR)/$(@:.marker=.o)
199+
@$(PRINT) "$(GREEN)Assembling libultra file: $(BLUE)$@ $(NO_COL)\n"
200+
$(V)cd $(<D) && $(WORKING_DIR)/$(CC) $(ASFLAGS) $(MIPS_VERSION) $(CPPFLAGS) $(ASOPTFLAGS) $(<F) $(IINC) -o $(WORKING_DIR)/$(@:.marker=.o)
193201
ifneq ($(COMPARE),0)
194202
# check if this file is in the archive; patch corrupted bytes and change file timestamps to match original if so
195203
@$(if $(findstring $(BASE_DIR)/$(@F:.marker=.o), $(BASE_OBJS)), \
@@ -200,9 +208,9 @@ ifneq ($(COMPARE),0)
200208
)
201209
endif
202210
ifneq ($(FIXUPS),0)
203-
tools/set_o32abi_bit.py $(WORKING_DIR)/$(@:.marker=.o)
204-
$(CROSS)strip $(WORKING_DIR)/$(@:.marker=.o) -N asdasdasdasd
205-
$(CROSS)objcopy --remove-section .mdebug $(WORKING_DIR)/$(@:.marker=.o)
211+
$(V)tools/set_o32abi_bit.py $(WORKING_DIR)/$(@:.marker=.o)
212+
$(V)$(CROSS)strip $(WORKING_DIR)/$(@:.marker=.o) -N asdasdasdasd
213+
$(V)$(CROSS)objcopy --remove-section .mdebug $(WORKING_DIR)/$(@:.marker=.o)
206214
endif
207215
# create or update the marker file
208216
@touch $@

lib/ultralib/Makefile.ido

+14
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,20 @@ AR_OLD := tools/ar.py
55
PATCH_AR_FLAGS := 40001 110 100644
66
STRIP =
77

8+
ifeq ($(COLOR),1)
9+
NO_COL := \033[0m
10+
RED := \033[0;31m
11+
GREEN := \033[0;32m
12+
BLUE := \033[0;34m
13+
YELLOW := \033[0;33m
14+
BLINK := \033[33;5m
15+
endif
16+
17+
# Common build print status function
18+
define print
19+
@$(PRINT) "$(GREEN)$(1) $(YELLOW)$(2)$(GREEN) -> $(BLUE)$(3)$(NO_COL)\n"
20+
endef
21+
822
export COMPILER_PATH := $(WORKING_DIR)/tools/ido
923

1024
CFLAGS := -c -Wab,-r4300_mul -G 0 -nostdinc -Xcpluscomm -fullwarn -woff 516,649,838,712

tools/Makefile

+5-1
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,18 @@ CXXFLAGS := -I . -Wall -Wextra -std=c++17
55
LDFLAGS := -lm
66
PROGRAMS := vtxdis
77

8+
ifeq ($(VERBOSE),0)
9+
V := @
10+
endif
11+
812
default: all
913

1014
n64crc_SOURCES := vtxdis.c
1115

1216
all: $(PROGRAMS)
1317

1418
clean:
15-
rm -Rf $(PROGRAMS) $(BUILD_DIR)
19+
$(V)rm -Rf $(PROGRAMS) $(BUILD_DIR)
1620

1721
distclean: clean
1822

0 commit comments

Comments
 (0)