188 lines
5.2 KiB
Makefile
188 lines
5.2 KiB
Makefile
# Project-wise definitions
|
|
PROJECT = AIRPORT
|
|
|
|
# Make flags
|
|
MAKEFLAGS := -j$(NUMBER_OF_PROCESSORS)
|
|
|
|
# GNU Toolchain definitions
|
|
CC = psx-gcc
|
|
LINKER = psx-gcc
|
|
GNU_SIZE = mipsel-unknown-elf-size
|
|
|
|
# Custom define flags for GCC
|
|
DEFINE= -DFIXMATH_FAST_SIN -D_PAL_MODE_
|
|
DEFINE += -DPSXSDK_DEBUG
|
|
DEFINE += -DNO_CDDA
|
|
DEFINE += -DNO_INTRO
|
|
|
|
# Compiler flags
|
|
LIBS= -lfixmath
|
|
CC_FLAGS = -Wall -Werror -c -Os -Wfatal-errors
|
|
|
|
# Path definitions
|
|
PSXSDK_PATH = /usr/local/psxsdk
|
|
PATH := $(PATH):$(PSXSDK_PATH)/bin/
|
|
PROJECT_DIR = ~/Airport
|
|
CDROM_ROOT=$(PROJECT_DIR)/cdimg
|
|
BIN_TARGET_PATH = $(PROJECT_DIR)/Bin
|
|
|
|
#Uncomment this DEFINE below to use Airport together with OpenSend + QPSXSerial toolchain.
|
|
#DEFINE += -DSERIAL_INTERFACE
|
|
|
|
# PSXSDK tools definitions
|
|
# ELF2EXE:
|
|
ELF2EXE = elf2exe
|
|
ELF2EXE_FLAGS = -mark="A homebrew game created with PSXSDK"
|
|
LICENSE_FILE = /usr/local/psxsdk/share/licenses/infoeur.dat
|
|
EXE_PATH = Exe
|
|
|
|
# PCSX-R
|
|
EMULATOR_DIR = ~/pcsxr
|
|
EMULATOR = pcsxr.exe
|
|
# Uncomment the line below if you get no sound output under Linux.
|
|
#SOUND_INTERFACE += padsp
|
|
EMULATOR_FLAGS = -nogui -psxout
|
|
|
|
# Objects definition
|
|
# Compiled objects list
|
|
OBJ_DIR = Obj
|
|
SRC_DIR = .
|
|
OBJECTS = $(addprefix $(OBJ_DIR)/, main.o System.o Menu.o Gfx.o Pad.o MainMenuBtnAni.o \
|
|
LoadMenu.o GameGui.o Sfx.o Camera.o EndAnimation.o \
|
|
PSXSDKIntro.o PltParser.o Game.o Font.o MemCard.o \
|
|
Aircraft.o Serial.o Timer.o)
|
|
|
|
# Source dependencies:
|
|
DEPS = $(OBJECTS:.o=.d)
|
|
|
|
# CD-DA objects:
|
|
MUSIC_TRACKS = --track=../Bin/TRACK01.bin --track=../Bin/TRACK02.bin --track=../Bin/TRACK03.bin
|
|
FFMPEG = ffmpeg
|
|
FFMPEG_DIR = ../Music/ffmpeg/bin
|
|
FFMPEG_FLAGS = -f s16le -acodec pcm_s16le
|
|
|
|
# VAG objects:
|
|
SOURCE_SOUNDS_FOLDER = ../Sounds
|
|
OBJ_SOUNDS_DIR = ../cdimg/DATA/SOUNDS
|
|
SOUND_OBJECTS = $(addprefix $(OBJ_SOUNDS_DIR)/, BELL.VAG \
|
|
ACCEPT.VAG \
|
|
TRAYCL.VAG \
|
|
SPINDISK.VAG \
|
|
BEEP.VAG \
|
|
TAKEOFF1.VAG \
|
|
RCTM1F1.VAG \
|
|
RCPW1A1.VAG \
|
|
RCPM1A1.VAG )
|
|
# Level objects:
|
|
SRC_LEVELS_DIR = $(PROJECT_DIR)/Levels
|
|
OBJ_LEVELS_DIR = $(CDROM_ROOT)/DATA/LEVELS
|
|
LEVEL_OBJECTS = $(addprefix $(OBJ_LEVELS_DIR)/, LEVEL1.LVL LEVEL1.PLT)
|
|
|
|
# Sprite objects:
|
|
BMP2TIM = bmp2tim
|
|
SRC_SPRITES_PATH = $(PROJECT_DIR)/Sprites
|
|
OBJ_SPRITES_PATH = $(CDROM_ROOT)/DATA/SPRITES
|
|
# NOTE: Fonts, despite still being .TIM files, are separated into another folder,
|
|
# so SPRITE_OBJECTS are splitted in two parts.
|
|
OBJ_FONTS_PATH = $(CDROM_ROOT)/DATA/FONTS
|
|
SPRITE_OBJECTS = $(addprefix $(OBJ_SPRITES_PATH)/, PSXDISK.TIM \
|
|
TILESET1.TIM \
|
|
TILESET2.TIM \
|
|
MAINMENU.TIM \
|
|
LOADING.TIM \
|
|
PLANE.TIM \
|
|
BUTTONS.TIM \
|
|
GAMEPLN.TIM \
|
|
PLNBLUE.CLT \
|
|
BUBBLE.TIM \
|
|
GPL.TIM \
|
|
OPENSRC.TIM \
|
|
MOUSE.TIM \
|
|
DEPARR.TIM \
|
|
PAGEUPDN.TIM \
|
|
BLDNGS1.TIM \
|
|
ARROW.TIM \
|
|
MENUSTAR.TIM )
|
|
|
|
SPRITE_OBJECTS += $(addprefix $(OBJ_FONTS_PATH)/, INTROFNT.TIM \
|
|
FONT_1.TIM \
|
|
FONT_2.TIM )
|
|
# Instructions
|
|
# ------------------------------------
|
|
|
|
build: $(BIN_TARGET_PATH)/$(PROJECT).bin
|
|
|
|
rebuild:
|
|
make clean
|
|
make build
|
|
|
|
-include $(DEPS)
|
|
|
|
music_objects: $(addprefix ../Music/, TRACK01.bin TRACK02.bin TRACK03.bin)
|
|
|
|
clean:
|
|
rm -f $(OBJ_DIR)/*.o
|
|
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)/%.c
|
|
$(CC) $< $(DEFINE) $(CC_FLAGS) -MM > $@
|
|
|
|
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(OBJ_DIR)/%.d
|
|
$(CC) $< -o $@ $(DEFINE) $(CC_FLAGS) -MMD
|
|
|
|
$(EXE_PATH)/$(PROJECT).elf: $(OBJECTS)
|
|
$(LINKER) $^ -o $@ $(LIBS) -Wl,--gc-sections
|
|
$(GNU_SIZE) $@
|
|
|
|
$(EXE_PATH)/$(PROJECT).iso: $(EXE_PATH)/$(PROJECT).exe $(SOUND_OBJECTS) $(LEVEL_OBJECTS) $(SPRITE_OBJECTS)
|
|
mkisofs -o $@ -V $(PROJECT) -sysid PLAYSTATION $(CDROM_ROOT)
|
|
|
|
$(BIN_TARGET_PATH)/$(PROJECT).bin: $(EXE_PATH)/$(PROJECT).iso
|
|
#~ mkpsxiso $< $@ $(LICENSE_FILE) $(MUSIC_TRACKS)
|
|
mkpsxiso $< $@ $(LICENSE_FILE)
|
|
# $(PROJECT).cue is automatically generated by mkpsxiso
|
|
|
|
$(EXE_PATH)/$(PROJECT).exe: $(EXE_PATH)/$(PROJECT).elf
|
|
$(ELF2EXE) $< $@ $(ELF2EXE_FLAGS)
|
|
cp $@ $(CDROM_ROOT)
|
|
|
|
#~ emulator:
|
|
#~ export PATH=$$PATH:$(EMULATOR_DIR)
|
|
#~ $(EMULATOR) -cdfile $(PROJECT_DIR)/Bin/$(PROJECT).bin $(EMULATOR_FLAGS)
|
|
|
|
$(OBJ_SPRITES_PATH)/%.TIM: $(SRC_SPRITES_PATH)/%.bmp $(SRC_SPRITES_PATH)/%.flags
|
|
$(BMP2TIM) $< $@ `cat $(word 2,$^)`
|
|
|
|
$(OBJ_FONTS_PATH)/%.TIM: $(SRC_SPRITES_PATH)/%.bmp $(SRC_SPRITES_PATH)/%.flags
|
|
$(BMP2TIM) $< $@ `cat $(word 2,$^)`
|
|
|
|
$(OBJ_SPRITES_PATH)/%.CLT: $(SRC_SPRITES_PATH)/%.bmp $(SRC_SPRITES_PATH)/%.flags
|
|
$(BMP2TIM) $< $@ `cat $(word 2,$^)`
|
|
|
|
$(OBJ_SOUNDS_DIR)/%.VAG: $(SOURCE_SOUNDS_FOLDER)/%.wav
|
|
wav2vag $^ $@
|
|
|
|
$(OBJ_LEVELS_DIR)/%.LVL: $(SRC_LEVELS_DIR)/%.LVL
|
|
cp $^ $@
|
|
$(OBJ_LEVELS_DIR)/%.PLT: $(SRC_LEVELS_DIR)/%.PLT
|
|
cp $^ $@
|
|
|
|
music: clean_music music_objects
|
|
|
|
clean_music:
|
|
rm -f ../Music/*.bin
|
|
|
|
%.bin: %.mp3
|
|
rm -f ../Bin/$@1
|
|
$(FFMPEG) -i $< $(FFMPEG_FLAGS) $@
|
|
cp ../Music/$@ ../Bin/
|
|
|
|
# ----------------------------------------
|
|
# Phony targets
|
|
# ----------------------------------------
|
|
.PHONY: build sounds clean music levels tiles
|