mirror of
https://github.com/encounter/tp.git
synced 2026-07-11 06:18:46 -07:00
ok
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
ifneq ($(findstring MINGW,$(shell uname)),)
|
||||
WINDOWS := 1
|
||||
endif
|
||||
ifneq ($(findstring MSYS,$(shell uname)),)
|
||||
WINDOWS := 1
|
||||
endif
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Files
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
TARGET_COL := wii
|
||||
|
||||
TARGET := dolzel2
|
||||
|
||||
BUILD_DIR := build/$(TARGET)
|
||||
|
||||
SRC_DIRS := src
|
||||
ASM_DIRS := asm
|
||||
|
||||
# Inputs
|
||||
LDSCRIPT := $(BUILD_DIR)/ldscript.lcf
|
||||
|
||||
# Outputs
|
||||
DOL := $(BUILD_DIR)/main.dol
|
||||
ELF := $(DOL:.dol=.elf)
|
||||
MAP := $(BUILD_DIR)/dolzel2.map
|
||||
|
||||
include obj_files.mk
|
||||
|
||||
O_FILES := $(INIT_O_FILES) $(EXTAB_O_FILES) $(EXTABINDEX_O_FILES) $(TEXT_O_FILES) \
|
||||
$(CTORS_O_FILES) $(DTORS_O_FILES) $(RODATA_O_FILES) $(DATA_O_FILES) \
|
||||
$(BSS_O_FILES) $(SDATA_O_FILES) $(SBSS_O_FILES) \
|
||||
$(SDATA2_O_FILES) $(SBSS2_O_FILES)
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Tools
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
MWCC_VERSION := 1.2.5
|
||||
|
||||
# Programs
|
||||
ifeq ($(WINDOWS),1)
|
||||
WINE :=
|
||||
else
|
||||
WINE := wine
|
||||
endif
|
||||
AS := $(DEVKITPPC)/bin/powerpc-eabi-as
|
||||
OBJCOPY := $(DEVKITPPC)/bin/powerpc-eabi-objcopy
|
||||
CPP := cpp -P
|
||||
CC := $(WINE) tools/mwcc_compiler/$(MWCC_VERSION)/mwcceppc.exe
|
||||
LD := $(WINE) tools/mwcc_compiler/$(MWCC_VERSION)/mwldeppc.exe
|
||||
ELF2DOL := tools/elf2dol
|
||||
SHA1SUM := sha1sum
|
||||
PYTHON := python3
|
||||
|
||||
POSTPROC := tools/postprocess.py
|
||||
|
||||
# Options
|
||||
INCLUDES := -i include -i include/dolphin/ -i include/dolphin/mtx/ -i src -i src/msl -i src/msl/ppc_eabi -i src/runtime/ -i src/sysdolphin/
|
||||
|
||||
ASFLAGS := -mgekko -I include
|
||||
LDFLAGS := -map $(MAP) -fp hard -nodefaults -w off
|
||||
CFLAGS := -Cpp_exceptions off -proc gekko -fp hard -O4,p -nodefaults -msgstyle gcc $(INCLUDES)
|
||||
|
||||
# for postprocess.py
|
||||
PROCFLAGS := -fprologue-fixup=old_stack
|
||||
|
||||
# elf2dol needs to know these in order to calculate sbss correctly.
|
||||
SDATA_PDHR := 9
|
||||
SBSS_PDHR := 10
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# Recipes
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
### Default target ###
|
||||
|
||||
default: all
|
||||
|
||||
all: $(DOL)
|
||||
|
||||
ALL_DIRS := build $(BUILD_DIR) $(addprefix $(BUILD_DIR)/,$(SRC_DIRS) $(ASM_DIRS))
|
||||
|
||||
# Make sure build directory exists before compiling anything
|
||||
DUMMY != mkdir -p $(ALL_DIRS)
|
||||
|
||||
.PHONY: tools
|
||||
|
||||
$(LDSCRIPT): ldscript.lcf
|
||||
$(CPP) -MMD -MP -MT $@ -MF $@.d -I include/ -I . -DBUILD_DIR=$(BUILD_DIR) -o $@ $<
|
||||
|
||||
$(DOL): $(ELF) | tools
|
||||
$(ELF2DOL) $< $@ $(SDATA_PDHR) $(SBSS_PDHR) $(TARGET_COL)
|
||||
$(SHA1SUM) -c $(TARGET).sha1
|
||||
|
||||
clean:
|
||||
rm -f -d -r build
|
||||
$(MAKE) -C tools clean
|
||||
|
||||
tools:
|
||||
$(MAKE) -C tools
|
||||
|
||||
$(ELF): $(O_FILES) $(LDSCRIPT)
|
||||
$(LD) $(LDFLAGS) -o $@ -lcf $(LDSCRIPT) $(O_FILES)
|
||||
# The Metrowerks linker doesn't generate physical addresses in the ELF program headers. This fixes it somehow.
|
||||
$(OBJCOPY) $@ $@
|
||||
|
||||
$(BUILD_DIR)/%.o: %.s
|
||||
$(AS) $(ASFLAGS) -o $@ $<
|
||||
|
||||
$(BUILD_DIR)/%.o: %.c
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
# TODO: See if this is necessary after actually adding some C code
|
||||
# $(PYTHON) $(POSTPROC) $(PROCFLAGS) $@
|
||||
|
||||
### Debug Print ###
|
||||
|
||||
print-% : ; $(info $* is a $(flavor $*) variable set to [$($*)]) @true
|
||||
Reference in New Issue
Block a user