# Build type. # Must be one of the types in VALID_VIDEOS. VALID_VIDEOS = SOFTWARE HARDWARE VIDEO = HARDWARE VAILD_MP3LIBS = MP3SOFTWARE MP3HARDWARE MP3LIB = MP3HARDWARE #MP3LIB = MP3SOFTWARE MODEL_N=-DNORMAL_MODEL #MODEL_S=-DSLIM_MODEL #PSP_FW_VERSION=390 # If GPROF is used it builds an ELF, hence the EBOOT needs to be in GAME150 #USE_GPROF = 1 # Site specific variables. INSTALL_DIR = $(PSP_MOUNT)/PSP/GAME/Kurok # Compiler specific variables. PSPSDK = $(shell psp-config --pspsdk-path) ifeq ($(PSPSDK),) $(error PSPSDK wasn't set) endif PSPLIBSDIR = $(PSPSDK)/.. # Project specific variables. VERSION = 0.4 32MB SRC_DIR = .. OBJ_DIR = normal TARGET = $(OBJ_DIR)/Quake PSP_EBOOT_TITLE = Kurok $(VERSION) PSP_EBOOT_ICON = pics/icon.png PSP_EBOOT_PIC1 = pics/pic1.png PSP_EBOOT_SFO = $(OBJ_DIR)/PARAM.SFO PSP_EBOOT = $(OBJ_DIR)/EBOOT.PBP DIST_DIR = dist DIST_FILES = readme.html gpl.txt Quake/EBOOT.PBP ZIP_FILE = Kurok_v$(VERSION).zip #ifeq ($(USE_GPROF),1) #GPROF_OBJS = $(OBJ_DIR)/psp/prof.o $(OBJ_DIR)/psp/mcount.o #GPROF_FLAGS = -pg -DPROFILE #else #BUILD_PRX = 1 #endif BUILD_PRX = 1 # Object files used regardless of video back end. COMMON_OBJS = \ $(OBJ_DIR)/psp/battery.o \ $(OBJ_DIR)/psp/input.o \ $(OBJ_DIR)/psp/main.o \ $(OBJ_DIR)/psp/math.o \ $(OBJ_DIR)/psp/sound.o \ $(OBJ_DIR)/psp/system.o \ $(OBJ_DIR)/psp/module.o \ $(OBJ_DIR)/psp/network.o \ $(OBJ_DIR)/psp/network_psp.o \ $(OBJ_DIR)/psp/gethost.o \ $(OBJ_DIR)/psp/fnmatch.o \ \ $(OBJ_DIR)/chase.o \ $(OBJ_DIR)/cl_demo.o \ $(OBJ_DIR)/cl_input.o \ $(OBJ_DIR)/cl_main.o \ $(OBJ_DIR)/cl_parse.o \ $(OBJ_DIR)/cl_tent.o \ $(OBJ_DIR)/cmd.o \ $(OBJ_DIR)/common.o \ $(OBJ_DIR)/console.o \ $(OBJ_DIR)/crc.o \ $(OBJ_DIR)/cvar.o \ $(OBJ_DIR)/host.o \ $(OBJ_DIR)/host_cmd.o \ $(OBJ_DIR)/keys.o \ $(OBJ_DIR)/mathlib.o \ $(OBJ_DIR)/menu.o \ $(OBJ_DIR)/net_dgrm.o \ $(OBJ_DIR)/net_loop.o \ $(OBJ_DIR)/net_main.o \ $(OBJ_DIR)/net_vcr.o \ $(OBJ_DIR)/pr_cmds.o \ $(OBJ_DIR)/pr_edict.o \ $(OBJ_DIR)/pr_exec.o \ $(OBJ_DIR)/r_part.o \ $(OBJ_DIR)/snd_dma.o \ $(OBJ_DIR)/snd_mem.o \ $(OBJ_DIR)/snd_mix.o \ $(OBJ_DIR)/sbar.o \ $(OBJ_DIR)/sv_main.o \ $(OBJ_DIR)/sv_move.o \ $(OBJ_DIR)/sv_phys.o \ $(OBJ_DIR)/sv_user.o \ $(OBJ_DIR)/view.o \ $(OBJ_DIR)/wad.o \ $(OBJ_DIR)/world.o \ $(OBJ_DIR)/zone.o # Object files used only under software video. SOFTWARE_VIDEO_ONLY_OBJS = \ $(OBJ_DIR)/psp/video_software.o \ \ $(OBJ_DIR)/d_edge.o \ $(OBJ_DIR)/d_fill.o \ $(OBJ_DIR)/d_init.o \ $(OBJ_DIR)/d_modech.o \ $(OBJ_DIR)/d_part.o \ $(OBJ_DIR)/d_polyse.o \ $(OBJ_DIR)/d_scan.o \ $(OBJ_DIR)/d_sky.o \ $(OBJ_DIR)/d_sprite.o \ $(OBJ_DIR)/d_surf.o \ $(OBJ_DIR)/d_vars.o \ $(OBJ_DIR)/d_zpoint.o \ $(OBJ_DIR)/draw.o \ $(OBJ_DIR)/model.o \ $(OBJ_DIR)/nonintel.o \ $(OBJ_DIR)/r_aclip.o \ $(OBJ_DIR)/r_alias.o \ $(OBJ_DIR)/r_bsp.o \ $(OBJ_DIR)/r_draw.o \ $(OBJ_DIR)/r_edge.o \ $(OBJ_DIR)/r_efrag.o \ $(OBJ_DIR)/r_light.o \ $(OBJ_DIR)/r_main.o \ $(OBJ_DIR)/r_misc.o \ $(OBJ_DIR)/r_sky.o \ $(OBJ_DIR)/r_sprite.o \ $(OBJ_DIR)/r_surf.o \ $(OBJ_DIR)/r_vars.o \ $(OBJ_DIR)/screen.o SOFTWARE_VIDEO_ONLY_FLAGS = -DPSP_SOFTWARE_VIDEO # Object files used only under hardware video. HARDWARE_VIDEO_ONLY_OBJS = \ $(OBJ_DIR)/psp/clipping.o \ $(OBJ_DIR)/psp/video_hardware.o \ $(OBJ_DIR)/psp/video_hardware_draw.o \ $(OBJ_DIR)/psp/video_hardware_fog.o \ $(OBJ_DIR)/psp/video_hardware_entity_fragment.o \ $(OBJ_DIR)/psp/video_hardware_light.o \ $(OBJ_DIR)/psp/video_hardware_main.o \ $(OBJ_DIR)/psp/video_hardware_mesh.o \ $(OBJ_DIR)/psp/video_hardware_misc.o \ $(OBJ_DIR)/psp/video_hardware_model.o \ $(OBJ_DIR)/psp/video_hardware_screen.o \ $(OBJ_DIR)/psp/video_hardware_surface.o \ $(OBJ_DIR)/psp/video_hardware_warp.o \ $(OBJ_DIR)/psp/video_vertex_lighting.o \ $(OBJ_DIR)/psp/vram.o HARDWARE_VIDEO_ONLY_FLAGS = -DPSP_HARDWARE_VIDEO # Object files used only under hardware mp3. MP3HARDWARE_MP3LIB_ONLY_OBJS = \ $(OBJ_DIR)/psp/cd.o \ $(OBJ_DIR)/psp/mp3.o MP3HARDWARE_MP3LIB_ONLY_FLAGS = -DPSP_MP3HARDWARE_MP3LIB # Object files used only under software mp3. MP3SOFTWARE_MP3LIB_ONLY_OBJS = \ $(OBJ_DIR)/psp/cdmad.o MP3SOFTWARE_MP3LIB_ONLY_FLAGS = -DPSP_MP3SOFTWARE_MP3LIB # Set up the object files depending on the build. ifeq ($($(VIDEO)_VIDEO_ONLY_OBJS),) $(error Unrecognised VIDEO type '$(VIDEO)'. It must be one of $(VALID_VIDEOS)) endif ifeq ($($(MP3LIB)_MP3LIB_ONLY_OBJS),) $(error Unrecognised MP3LIB type '$(MP3LIB)'. It must be one of $(VALID_MP3LIBS)) endif OBJS = $($(VIDEO)_VIDEO_ONLY_OBJS) $($(MP3LIB)_MP3LIB_ONLY_OBJS) $(COMMON_OBJS) $(GPROF_OBJS) # Compiler flags. CFLAGS = -ffast-math -O3 -G0 $(GPROF_FLAGS) -Wall -Wno-trigraphs -Winline -DPSP $(MODEL_N) $($(VIDEO)_VIDEO_ONLY_FLAGS) $($(MP3LIB)_MP3LIB_ONLY_FLAGS) -g CXXFLAGS = -fno-rtti -Wcast-qual ASFLAGS = $(CFLAGS) -c # Libs. GU_LIBS = -lpspgum_vfpu -lpspvfpu -lpspgu AUDIO_LIBS = -lpspaudiolib -lpspaudio -lpspaudiocodec m33libs/lib/libpspkubridge.a #madlibs/libmad.a MISC_LIBS = -lpsprtc -lpsppower STD_LIBS = -lstdc++ -lm -lc LIBS = $(GU_LIBS) $(AUDIO_LIBS) $(MISC_LIBS) $(STD_LIBS) -lpspwlan -lpspnet_adhoc -lpspnet_adhocctl # What else to clean. EXTRA_CLEAN = $(foreach FILE,$(ZIP_FILE) Quake/EBOOT.PBP,$(DIST_DIR)/$(FILE)) # All target. all: $(PSP_EBOOT) # What is an install? install: $(INSTALL_DIR)/EBOOT.PBP # How to install. $(INSTALL_DIR)/EBOOT.PBP: $(PSP_EBOOT) @echo Installing $(PSP_EBOOT) to $@... @-mkdir -p $(dir $@) @cp $(PSP_EBOOT) $@ # How to build the distribution. distro: clean $(ZIP_FILE) @echo Distribution prepared. $(DIST_DIR)/Quake/EBOOT.PBP: $(PSP_EBOOT) @echo Copying $< to $@... @-mkdir -p $(dir $@) @cp $< $@ $(ZIP_FILE): $(foreach FILE,$(DIST_FILES),$(DIST_DIR)/$(FILE)) @echo Creating $(DIST_DIR)/$(ZIP_FILE)... @-rm -rf $(ZIP_FILE) @cd $(DIST_DIR) && zip -r -q -9 -o $(ZIP_FILE) $(DIST_FILES) # How to compile an S file. $(OBJ_DIR)/%.o: $(SRC_DIR)/%.S @echo $(notdir $<) @mkdir -p $(dir $@) @$(CC) $(CFLAGS) -c $< -o $@ # How to compile a C file. $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c @echo $(notdir $<) @mkdir -p $(dir $@) @$(CC) $(CFLAGS) -c $< -o $@ # How to compile a C++ file. $(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp @echo $(notdir $<) @mkdir -p $(dir $@) @$(CXX) $(CXXFLAGS) -c $< -o $@ # Use the standard PSPSDK build stuff. include $(PSPSDK)/lib/build.mak ifneq ($(VS_PATH),) CC = vs-psp-gcc CXX = vs-psp-g++ endif ifeq ($(BUILD_PRX),1) OBJ_TYPE = prx else OBJ_TYPE = elf endif