summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorXavi Del Campo <xavi.dcr@tutanota.com>2020-03-03 18:39:09 +0100
committerXavi Del Campo <xavi.dcr@tutanota.com>2020-03-03 19:40:00 +0100
commit792e22676786a577b2edc0ed0ed78e51c5b38245 (patch)
tree3a5b1092af322003be3189bf6d58f362dcfe1dca /Makefile
parent62adc2edd17cbd39272715d29d1b4c8650ef7dde (diff)
downloadopensend-792e22676786a577b2edc0ed0ed78e51c5b38245.tar.gz
Refactoring
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile172
1 files changed, 113 insertions, 59 deletions
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