# PSP Software Development Kit - http://www.pspdev.org # ----------------------------------------------------------------------- # Licensed under the BSD license, see LICENSE in PSPSDK root for details. # # build.mak - Base makefile for projects using PSPSDK. # # Copyright (c) 2005 Marcus R. Brown # Copyright (c) 2005 James Forshaw # Copyright (c) 2005 John Kelley # # $Id: build.mak 2333 2007-10-31 19:37:40Z tyranid $ # # Note: The PSPSDK make variable must be defined before this file is included. # # # ┌─────────────────────────────┐ # │  署名対応の build.mak についての記述    ├┐ # └┬────────────────────────────┘│ #  └─────────────────────────────┘ # # # これは、猫山猫宗が改造したPSPSDK用のビルド・メイクファイルです. # prxencrypter_sdk(prxencrypter_sdk.7z) に付属の build.mak を改造しました. # # PSPSDKでビルド(コンパイル・アセンブル → リンク→EBOOT.PBP生成)する際に、 # fix-relocations.exe を実行してから PrxEncrypt.exe を実行する様になっています.# # ご利用は自由です. # # # 【インストール方法】 # この build.mak を、C:\PSPSDK\psp\sdk\lib\ フォルダの中へ上書きでコピーします # 念のために、PSPSDK付属の build.mak のバックアップを取っておいてください. # # #                            製作:猫山猫宗 # ifeq ($(PSPSDK),) $(error $$(PSPSDK) is undefined. Use "PSPSDK := $$(shell psp-config --pspsdk-path)" in your Makefile) endif # OS tools CP = $(shell psp-config --pspdev-path)/bin/cp RM = $(shell psp-config --pspdev-path)/bin/rm MKDIR = $(shell psp-config --pspdev-path)/bin/mkdir TRUE = $(shell psp-config --pspdev-path)/bin/true CC = psp-gcc CXX = psp-g++ AS = psp-gcc LD = psp-gcc AR = psp-ar RANLIB = psp-ranlib STRIP = psp-strip MKSFO = mksfo PACK_PBP = pack-pbp FIXUP = psp-fixup-imports ENC = prxEncrypter FIXRELO = fix-relocations # Add in PSPSDK includes and libraries. INCDIR := $(INCDIR) . $(PSPSDK)/include LIBDIR := $(LIBDIR) . $(PSPSDK)/lib CFLAGS := $(addprefix -I,$(INCDIR)) $(CFLAGS) CXXFLAGS := $(CFLAGS) $(CXXFLAGS) ASFLAGS := $(CFLAGS) $(ASFLAGS) ifeq ($(PSP_LARGE_MEMORY),1) MKSFO = mksfoex -d MEMSIZE=1 endif ifeq ($(PSP_FW_VERSION),) PSP_FW_VERSION=150 endif CFLAGS += -D_PSP_FW_VERSION=$(PSP_FW_VERSION) CXXFLAGS += -D_PSP_FW_VERSION=$(PSP_FW_VERSION) # Objective-C selection. All Objective C code must be linked against libobjc.a ifeq ($(USE_OBJC),1) LIBS := $(LIBS) -lobjc endif ifeq ($(BUILD_PRX),1) LDFLAGS := $(addprefix -L,$(LIBDIR)) -specs=$(PSPSDK)/lib/prxspecs -Wl,-q,-T$(PSPSDK)/lib/linkfile.prx $(LDFLAGS) EXTRA_CLEAN += $(TARGET).elf # Setup default exports if needed ifdef PRX_EXPORTS EXPORT_OBJ=$(patsubst %.exp,%.o,$(PRX_EXPORTS)) EXTRA_CLEAN += $(EXPORT_OBJ) else EXPORT_OBJ=$(PSPSDK)/lib/prxexports.o endif else LDFLAGS := $(addprefix -L,$(LIBDIR)) $(LDFLAGS) endif # Library selection. By default we link with Newlib's libc. Allow the # user to link with PSPSDK's libc if USE_PSPSDK_LIBC is set to 1. ifeq ($(USE_KERNEL_LIBC),1) # Use the PSP's kernel libc PSPSDK_LIBC_LIB = CFLAGS := -I$(PSPSDK)/include/libc $(CFLAGS) else ifeq ($(USE_PSPSDK_LIBC),1) # Use the pspsdk libc PSPSDK_LIBC_LIB = -lpsplibc CFLAGS := -I$(PSPSDK)/include/libc $(CFLAGS) else # Use newlib (urgh) PSPSDK_LIBC_LIB = -lc endif endif # Link with following default libraries. Other libraries should be specified in the $(LIBS) variable. # TODO: This library list needs to be generated at configure time. # ifeq ($(USE_KERNEL_LIBS),1) PSPSDK_LIBS = -lpspdebug -lpspdisplay_driver -lpspctrl_driver -lpspsdk LIBS := $(LIBS) $(PSPSDK_LIBS) $(PSPSDK_LIBC_LIB) -lpspkernel else ifeq ($(USE_USER_LIBS),1) PSPSDK_LIBS = -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk LIBS := $(LIBS) $(PSPSDK_LIBS) $(PSPSDK_LIBC_LIB) -lpspnet \ -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility \ -lpspuser else PSPSDK_LIBS = -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk LIBS := $(LIBS) $(PSPSDK_LIBS) $(PSPSDK_LIBC_LIB) -lpspnet \ -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility \ -lpspuser -lpspkernel endif endif # Define the overridable parameters for EBOOT.PBP ifndef PSP_EBOOT_TITLE PSP_EBOOT_TITLE = $(TARGET) endif ifndef PSP_EBOOT_SFO PSP_EBOOT_SFO = PARAM.SFO endif ifndef PSP_EBOOT_ICON PSP_EBOOT_ICON = NULL endif ifndef PSP_EBOOT_ICON1 PSP_EBOOT_ICON1 = NULL endif ifndef PSP_EBOOT_UNKPNG PSP_EBOOT_UNKPNG = NULL endif ifndef PSP_EBOOT_PIC1 PSP_EBOOT_PIC1 = NULL endif ifndef PSP_EBOOT_SND0 PSP_EBOOT_SND0 = NULL endif ifndef PSP_EBOOT_PSAR PSP_EBOOT_PSAR = NULL endif ifndef PSP_EBOOT PSP_EBOOT = EBOOT.PBP endif ifeq ($(BUILD_PRX),1) ifneq ($(TARGET_LIB),) $(error TARGET_LIB should not be defined when building a prx) else FINAL_TARGET = $(TARGET).prx endif else ifneq ($(TARGET_LIB),) FINAL_TARGET = $(TARGET_LIB) else FINAL_TARGET = $(TARGET).elf endif endif all: $(EXTRA_TARGETS) $(FINAL_TARGET) kxploit: $(TARGET).elf $(PSP_EBOOT_SFO) $(MKDIR) -p "$(TARGET)" $(STRIP) $(TARGET).elf -o $(TARGET)/$(PSP_EBOOT) $(MKDIR) -p "$(TARGET)%" $(PACK_PBP) "$(TARGET)%/$(PSP_EBOOT)" $(PSP_EBOOT_SFO) $(PSP_EBOOT_ICON) \ $(PSP_EBOOT_ICON1) $(PSP_EBOOT_UNKPNG) $(PSP_EBOOT_PIC1) \ $(PSP_EBOOT_SND0) NULL $(PSP_EBOOT_PSAR) SCEkxploit: $(TARGET).elf $(PSP_EBOOT_SFO) $(MKDIR) -p "__SCE__$(TARGET)" $(STRIP) $(TARGET).elf -o __SCE__$(TARGET)/$(PSP_EBOOT) $(MKDIR) -p "%__SCE__$(TARGET)" $(PACK_PBP) "%__SCE__$(TARGET)/$(PSP_EBOOT)" $(PSP_EBOOT_SFO) $(PSP_EBOOT_ICON) \ $(PSP_EBOOT_ICON1) $(PSP_EBOOT_UNKPNG) $(PSP_EBOOT_PIC1) \ $(PSP_EBOOT_SND0) NULL $(PSP_EBOOT_PSAR) $(TARGET).elf: $(OBJS) $(EXPORT_OBJ) $(LINK.c) $^ $(LIBS) -o $@ $(FIXUP) $@ $(TARGET_LIB): $(OBJS) $(AR) cru $@ $(OBJS) $(RANLIB) $@ $(PSP_EBOOT_SFO): $(MKSFO) '$(PSP_EBOOT_TITLE)' $@ ifeq ($(BUILD_PRX),1) $(PSP_EBOOT): $(TARGET).prx $(PSP_EBOOT_SFO) ifeq ($(ENCRYPT), 1) $(FIXRELO) $(TARGET).prx $(ENC) $(TARGET).prx $(PACK_PBP) $(PSP_EBOOT) $(PSP_EBOOT_SFO) $(PSP_EBOOT_ICON) \ $(PSP_EBOOT_ICON1) $(PSP_EBOOT_UNKPNG) $(PSP_EBOOT_PIC1) \ $(PSP_EBOOT_SND0) data.psp $(PSP_EBOOT_PSAR) -$(RM) -f data.psp else $(PACK_PBP) $(PSP_EBOOT) $(PSP_EBOOT_SFO) $(PSP_EBOOT_ICON) \ $(PSP_EBOOT_ICON1) $(PSP_EBOOT_UNKPNG) $(PSP_EBOOT_PIC1) \ $(PSP_EBOOT_SND0) $(TARGET).prx $(PSP_EBOOT_PSAR) endif else $(PSP_EBOOT): $(TARGET).elf $(PSP_EBOOT_SFO) $(STRIP) $(TARGET).elf -o $(TARGET)_strip.elf ifeq ($(ENCRYPT), 1) $(FIXRELO) $(TARGET)_strip.elf $(ENC) $(TARGET)_strip.elf $(PACK_PBP) $(PSP_EBOOT) $(PSP_EBOOT_SFO) $(PSP_EBOOT_ICON) \ $(PSP_EBOOT_ICON1) $(PSP_EBOOT_UNKPNG) $(PSP_EBOOT_PIC1) \ $(PSP_EBOOT_SND0) data.psp $(PSP_EBOOT_PSAR) -$(RM) -f $(TARGET)_strip.elf -$(RM) -f data.psp else $(PACK_PBP) $(PSP_EBOOT) $(PSP_EBOOT_SFO) $(PSP_EBOOT_ICON) \ $(PSP_EBOOT_ICON1) $(PSP_EBOOT_UNKPNG) $(PSP_EBOOT_PIC1) \ $(PSP_EBOOT_SND0) $(TARGET)_strip.elf $(PSP_EBOOT_PSAR) -$(RM) -f $(TARGET)_strip.elf endif endif %.prx: %.elf psp-prxgen $< $@ %.c: %.exp psp-build-exports -b $< > $@ %.o: %.m $(CC) $(CFLAGS) -c -o $@ $< %.o: %.mm $(CXX) $(CXXFLAGS) -c -o $@ $< clean: -$(RM) -f $(FINAL_TARGET) $(EXTRA_CLEAN) $(OBJS) $(PSP_EBOOT_SFO) $(PSP_EBOOT) $(EXTRA_TARGETS) rebuild: clean all