Clean up and improvements to tools (#163)

* moved elf2dol

* removed postprocess.py

* removed vtables.py

* find_unused_asm.py

* removed section2cpp.py

* removed splitter/*

* fixed symbol names due to iconv file rename

* fixed problem building RELs caused by #160

* improved performance of a few python tools

* added new tool for finding conflict when not OK

* added ./tp setup

* don't install dol2asm dependecies with requirements.txt

* format and check for imports

* remove unused tools/difftools.py

* fixed ignore to include elf2dol

* fix compiler patcher

* ok-check now creates the patched compiler at mwcceppc_patched.exe

* Add new command to copy the build folder to the expected folder

* 'make clean' will now only clean main.dol stuff. (added clean_rels and clean_all)

* './tp pull-request' and './tp check' now doesn't include RELs by default. Use '--rels' to include them in the process.

* './tp remove-unused-asm --check' added, exitcode 0==no files, 1==exists files

Co-authored-by: Julgodis <>
This commit is contained in:
Jonathan Wase
2021-12-02 23:38:37 +01:00
committed by GitHub
parent 5f187a0776
commit bc428f7f65
829 changed files with 5043 additions and 4328 deletions
+30 -18
View File
@@ -19,7 +19,8 @@ TARGET_COL := wii
TARGET := dolzel2
BUILD_DIR := build/$(TARGET)
BUILD_PATH := build
BUILD_DIR := $(BUILD_PATH)/$(TARGET)
SRC_DIRS := $(shell find src/ libs/ -type f -name '*.cpp')
ASM_DIRS := $(shell find asm/ -type f -name '*.s')
@@ -33,7 +34,7 @@ ELF := $(DOL:.dol=.elf)
MAP := $(BUILD_DIR)/dolzel2.map
# include list of object files
-include obj_files.mk
include obj_files.mk
#-------------------------------------------------------------------------------
# Tools
@@ -60,15 +61,15 @@ endif
AS := $(DEVKITPPC)/bin/powerpc-eabi-as
OBJCOPY := $(DEVKITPPC)/bin/powerpc-eabi-objcopy
STRIP := $(DEVKITPPC)/bin/powerpc-eabi-strip
CC := $(WINE) tools/mwcc_compiler/$(MWCC_VERSION)/mwcceppc.exe
CC := $(WINE) tools/mwcc_compiler/$(MWCC_VERSION)/mwcceppc_patched.exe
LD := $(WINE) tools/mwcc_compiler/$(MWCC_VERSION)/mwldeppc.exe
ELF2DOL := tools/elf2dol
ELF2DOL := $(BUILD_PATH)/elf2dol
PYTHON := python3
ICONV := iconv
DOXYGEN := doxygen
MAKEREL := tools/makerel.py
IMAGENAME := gz2e01.iso
POSTPROC := tools/postprocess.py
# Options
INCLUDES := -i include -i include/dolphin/ -i src
@@ -95,44 +96,52 @@ default: all
all: dirs $(DOL)
ALL_DIRS := build $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(ASM_DIRS))
# Make sure build directory exists before compiling anything
dirs:
$(shell mkdir -p $(ALL_DIRS))
@mkdir -p build
@mkdir -p $(BUILD_DIR)
$(DOL): $(ELF) | tools
$(ELF2DOL) $< $@ $(SDATA_PDHR) $(SBSS_PDHR) $(TARGET_COL)
$(SHA1SUM) -c $(TARGET).sha1
clean:
rm -f -d -r build
$(MAKE) -C tools clean
rm -f -d -r $(BUILD_DIR)/libs
rm -f -d -r $(BUILD_DIR)/src
rm -f $(ELF)
rm -f $(DOL)
rm -f $(BUILD_DIR)/*.a
tools:
@$(MAKE) -C tools
clean_all:
rm -f -d -r build
clean_rels:
rm -f -d -r $(BUILD_DIR)/rel
rm -f $(BUILD_PATH)/*.rel
tools: $(ELF2DOL)
assets:
@cd game; python3 ../tools/extract_game_assets.py ../$(IMAGENAME)
@cd game; $(PYTHON) ../tools/extract_game_assets.py ../$(IMAGENAME)
docs:
$(DOXYGEN) Doxyfile
rels: $(ELF) $(RELS)
@echo generating RELs from .plf
@python3 tools/makerel.py build --string-table $(BUILD_DIR)/frameworkF.str $(RELS) $(ELF)
@$(PYTHON) $(MAKEREL) build --string-table $(BUILD_DIR)/frameworkF.str $(RELS) $(ELF)
$(ELF): $(LIBS) $(O_FILES)
@echo $(O_FILES) > build/o_files
@python3 tools/lcf.py dol --output $(LDSCRIPT)
@$(PYTHON) tools/lcf.py dol --output $(LDSCRIPT)
$(LD) -application $(LDFLAGS) -o $@ -lcf $(LDSCRIPT) @build/o_files $(LIBS)
#
$(BUILD_DIR)/%.o: %.cpp
@mkdir -p $(@D)
@echo building... $<
@iconv -f UTF-8 -t CP932 < $< > $@.iconv.cpp
@$(CC) $(CFLAGS) -c -o $@ $@.iconv.cpp
@$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp
@$(CC) $(CFLAGS) -c -o $@ $(basename $@).cpp
# shared cpp files for RELs
$(BUILD_DIR)/rel/%.o: rel/%.cpp
@@ -142,6 +151,9 @@ $(BUILD_DIR)/rel/%.o: rel/%.cpp
# include library and rel makefiles
-include include_link.mk
# tools
include tools/elf2dol/Makefile
### Debug Print ###
print-% : ; $(info $* is a $(flavor $*) variable set to [$($*)]) @true