From 792e22676786a577b2edc0ed0ed78e51c5b38245 Mon Sep 17 00:00:00 2001 From: Xavi Del Campo Date: Tue, 3 Mar 2020 18:39:09 +0100 Subject: Refactoring --- Makefile | 172 +++++++++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 113 insertions(+), 59 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index f20974f..48e0c51 100644 --- a/Makefile +++ b/Makefile @@ -1,74 +1,128 @@ -CC = psxsdkserial-gcc -DEFINE= -D_PAL_MODE_ -DEFINE += -DPSXSDK_DEBUG -LIBS=-lfixmath -CC_FLAGS = -Wall -Werror -c -Os -Wfatal-errors -g -LINKER = psxsdkserial-gcc +PSXSDK_DIR = /usr/local/psxsdk -PROJECT = OPENSEND -PROJECT_DIR = ~/OpenSend +CC = mipsel-unknown-elf-gcc +DEFINE = -DPSXSDK_DEBUG +LIBS = -lfixmath +INCLUDE = include $(PSXSDK_DIR)/include +CC_FLAGS = -Wall -Werror -ffunction-sections -fdata-sections -c -Os -Wfatal-errors -g $(addprefix -I, $(INCLUDE)) +LD = mipsel-unknown-elf-gcc +LD_FLAGS = $(LIBS) -Wl,--gc-sections -INIT_ADDR=0x801A0000 +PROJECT = opensend + +INIT_ADDR = 0x801A0000 ELF2EXE = elf2exe ELF2EXE_FLAGS = -mark="Open-source PSX-EXE loader created with PSXSDK" -init_addr=$(INIT_ADDR) LICENSE_FILE = /usr/local/psxsdk/share/licenses/infoeur.dat -PSXSDK_DIR = /usr/local/psxsdk/bin +PATH := $(PATH):$(PSXSDK_DIR)/bin -EMULATOR_DIR = ~/pcsxr -EMULATOR = pcsxr.exe +EMULATOR = pcsxr SOUND_INTERFACE = EMULATOR_FLAGS = -nogui -psxout -OBJ_DIR = Obj -SRC_DIR = . -MUSIC_TRACKS = -#FFMPEG = ffmpeg -#FFMPEG_DIR = ../Music/ffmpeg/bin -#FFMPEG_FLAGS = -f s16le -acodec pcm_s16le +OBJ_DIR = obj +SRC_DIR = src +EXE_PATH = obj + +BIN_TARGET_PATH = bin GNU_SIZE = mipsel-unknown-elf-size -all: build image clean -#emulator clean - -rebuild: remove build - -build: clean objects $(PROJECT).elf $(PROJECT).exe - -objects: $(addprefix $(OBJ_DIR)/,main.o System.o Gfx.o \ - LoadMenu.o EndAnimation.o \ - Font.o Serial.o) - -remove: - rm -f Obj/*.o - -$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c - $(CC) $< -o $@ $(DEFINE) $(CC_FLAGS) - -$(PROJECT).elf: - $(LINKER) Obj/*.o -o Exe/$(PROJECT).elf $(LIBS) -Wl,--gc-sections - -$(PROJECT).exe: - $(ELF2EXE) Exe/$(PROJECT).elf Exe/$(PROJECT).exe $(ELF2EXE_FLAGS) - cp Exe/$(PROJECT).exe ../cdimg - -image: - rm -f $(PROJECT).iso $(PROJECT).bin - rm -f $(PROJECT).cue - mkisofs -o $(PROJECT).iso -V $(PROJECT) -sysid PLAYSTATION ../cdimg - mkpsxiso $(PROJECT).iso $(PROJECT).bin $(LICENSE_FILE) - mv $(PROJECT).bin ../Bin - mv $(PROJECT).cue ../Bin - rm -f $(PROJECT).cue - rm -f $(PROJECT).iso - $(GNU_SIZE) Exe/$(PROJECT).elf - -emulator: - export PATH=$$PATH:$(EMULATOR_DIR) - $(EMULATOR) -cdfile $(PROJECT_DIR)/Bin/$(PROJECT).bin $(EMULATOR_FLAGS) - +OBJECTS = $(addprefix $(OBJ_DIR)/, \ + EndAnimation.o Font.o Gfx.o LoadMenu.o main.o Serial.o System.o \ + Interrupts.o IO.o \ + ) + +$(BIN_TARGET_PATH)/$(PROJECT).bin: $(EXE_PATH)/$(PROJECT).iso + mkdir -p $(BIN_TARGET_PATH) +#~ mkpsxiso $< $@ $(LICENSE_FILE) $(MUSIC_TRACKS) + mkpsxiso $< $@ $(LICENSE_FILE) -s +# $(PROJECT).cue is automatically generated by mkpsxiso + $(GNU_SIZE) $(EXE_PATH)/$(PROJECT).elf + +rebuild: + make clean + make $(BIN_TARGET_PATH)/$(PROJECT).bin + +-include $(DEPS) + +#music_objects: $(addprefix ../Music/, TRACK01.bin TRACK02.bin TRACK03.bin) + clean: - rm -f $(PROJECT).elf cdimg/$(PROJECT).exe $(PROJECT).bin $(PROJECT).cue cdimg/README.txt - rm -f $(PROJECT).iso $(PROJECT).exe $(PROJECT).elf + rm -f $(EXE_DIR)/*.EXE + rm -f $(EXE_DIR)/*.iso + rm -f $(EXE_DIR)/*.elf + rm -f $(OBJ_DIR)/*.o + rm -f $(OBJ_DIR)/*.d + rm -f $(OBJ_SOUNDS_DIR)/*.VAG + rm -f $(OBJ_LEVELS_DIR)/*.LVL + rm -f $(OBJ_LEVELS_DIR)/*.PLT + rm -f $(OBJ_SPRITES_PATH)/*.TIM + rm -f $(OBJ_FONTS_PATH)/*.TIM + +$(OBJ_DIR)/%.d: $(SRC_DIR)/%.cpp + @mkdir -p $(OBJ_DIR) + $(CXX) $< $(DEFINE) $(CXX_FLAGS) -MM > $@ + +$(OBJ_DIR)/%.d: $(SRC_DIR)/%.c + @mkdir -p $(OBJ_DIR) + echo $$PATH + $(CC) $< $(DEFINE) $(CC_FLAGS) -MM > $@ + +$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp $(OBJ_DIR)/%.d + @mkdir -p $(OBJ_DIR) + $(CXX) $< -o $@ $(DEFINE) $(CXX_FLAGS) -MMD + +$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(OBJ_DIR)/%.d + @mkdir -p $(OBJ_DIR) + $(CC) $< -o $@ $(DEFINE) $(CC_FLAGS) -MMD + +$(OBJ_DIR)/%.o: $(SRC_DIR)/%.s + @mkdir -p $(OBJ_DIR) + $(AS) $< -o $@ $(AS_FLAGS) + +$(EXE_PATH)/$(PROJECT).elf: $(OBJECTS) + @mkdir -p $(EXE_PATH) + $(LD) $^ -o $@ $(LIBS) -Wl,--gc-sections + +$(EXE_PATH)/$(PROJECT).iso: $(EXE_PATH)/$(PROJECT).EXE $(SOUND_OBJECTS) $(LEVEL_OBJECTS) $(SPRITE_OBJECTS) $(APPS_OBJECTS) + @mkdir -p $(EXE_PATH) + mkisofs -o $@ -V $(PROJECT) -sysid PLAYSTATION $(CDROM_ROOT) + +$(EXE_PATH)/$(PROJECT).EXE: $(EXE_PATH)/$(PROJECT).elf + @mkdir -p $(EXE_PATH) + $(ELF2EXE) $< $@ $(ELF2EXE_FLAGS) + @mkdir -p $(CDROM_ROOT) + cp $@ $(CDROM_ROOT) + +run: $(BIN_TARGET_PATH)/$(PROJECT).bin + export PATH=$$PATH:$(EMULATOR_DIR) + @mkdir -p $(BIN_TARGET_PATH) + $(EMULATOR) -cdfile $(BIN_TARGET_PATH)/$(PROJECT).bin $(EMULATOR_FLAGS) + +$(OBJ_SPRITES_PATH)/%.TIM: $(SRC_SPRITES_PATH)/%.bmp $(SRC_SPRITES_PATH)/%.flags + @mkdir -p $(OBJ_SPRITES_PATH) + $(BMP2TIM) $< $@ `cat $(word 2,$^)` + +$(OBJ_APPS_PATH)/%.EOL: $(SRC_APPS_PATH)/%.EOL + @mkdir -p $(OBJ_APPS_PATH) + cp $^ $@ + +$(OBJ_FONTS_PATH)/%.TIM: $(SRC_SPRITES_PATH)/%.bmp $(SRC_SPRITES_PATH)/%.flags + @mkdir -p $(OBJ_FONTS_PATH) + $(BMP2TIM) $< $@ `cat $(word 2,$^)` + +$(OBJ_SOUNDS_DIR)/%.VAG: $(SOURCE_SOUNDS_FOLDER)/%.wav $(SOURCE_SOUNDS_FOLDER)/%.flags + @mkdir -p $(OBJ_SOUNDS_DIR) + wav2vag $< $@ `cat $(word 2,$^)` + +%.bin: %.mp3 + rm -f ../Bin/$@1 + $(FFMPEG) -i $< $(FFMPEG_FLAGS) $@ + cp ../Music/$@ ../Bin/ +# ---------------------------------------- +# Phony targets +# ---------------------------------------- +.PHONY: clean run rebuild -- cgit v1.2.3