mirror of
https://github.com/pspdev/pspsdk.git
synced 2025-12-25 13:04:59 +00:00
These wrappers use the --plugin flags to properly support LTO, other than that it's a transparent change.
184 lines
4.6 KiB
Makefile
184 lines
4.6 KiB
Makefile
# PSP Software Development Kit - https://github.com/pspdev
|
|
# -----------------------------------------------------------------------
|
|
# 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 <mrbrown@ocgnet.org>
|
|
# Copyright (c) 2005 James Forshaw <tyranid@gmail.com>
|
|
# Copyright (c) 2005 John Kelley <ps2dev@kelley.ca>
|
|
#
|
|
|
|
# Note: The PSPSDK make variable must be defined before this file is included.
|
|
ifeq ($(PSPSDK),)
|
|
$(error $$(PSPSDK) is undefined. Use "PSPSDK := $$(shell psp-config --pspsdk-path)" in your Makefile)
|
|
endif
|
|
|
|
CC = psp-gcc
|
|
CXX = psp-g++
|
|
AS = psp-gcc
|
|
LD = psp-gcc
|
|
AR = psp-gcc-ar
|
|
RANLIB = psp-gcc-ranlib
|
|
STRIP = psp-strip
|
|
MKSFO = mksfo
|
|
PACK_PBP = pack-pbp
|
|
FIXUP = psp-fixup-imports
|
|
ENC = PrxEncrypter
|
|
|
|
# Add PSPSDK includes and libraries.
|
|
INCDIR := $(INCDIR) . $(PSPDEV)/psp/include $(PSPSDK)/include
|
|
LIBDIR := $(LIBDIR) . $(PSPDEV)/psp/lib $(PSPSDK)/lib
|
|
|
|
CFLAGS := $(addprefix -I,$(INCDIR)) -G0 $(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)
|
|
|
|
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
|
|
|
|
# Reduce binary size
|
|
LDFLAGS += -Wl,-zmax-page-size=128
|
|
|
|
ifeq ($(USE_KERNEL_LIBS),1)
|
|
LIBS := -nostdlib $(LIBS) -lpspdebug -lpspdisplay_driver -lpspctrl_driver -lpspmodinfo -lpspsdk -lpspkernel
|
|
else
|
|
LIBS := $(LIBS) -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk \
|
|
-lpspnet -lpspnet_apctl
|
|
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)
|
|
|
|
ifeq ($(NO_FIXUP_IMPORTS), 1)
|
|
$(TARGET).elf: $(OBJS) $(EXPORT_OBJ)
|
|
$(LINK.c) $^ $(LIBS) -o $@
|
|
else
|
|
$(TARGET).elf: $(OBJS) $(EXPORT_OBJ)
|
|
$(LINK.c) $^ $(LIBS) -o $@
|
|
$(FIXUP) $@
|
|
endif
|
|
|
|
$(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)
|
|
- $(ENC) $(TARGET).prx $(TARGET).prx
|
|
endif
|
|
$(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)
|
|
else
|
|
$(PSP_EBOOT): $(TARGET).elf $(PSP_EBOOT_SFO)
|
|
$(STRIP) $(TARGET).elf -o $(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) $(TARGET)_strip.elf $(PSP_EBOOT_PSAR)
|
|
-rm -f $(TARGET)_strip.elf
|
|
endif
|
|
|
|
%.prx: %.elf
|
|
psp-prxgen $< $@
|
|
|
|
%.c: %.exp
|
|
psp-build-exports -b $< > $@
|
|
|
|
clean:
|
|
-rm -f $(FINAL_TARGET) $(EXTRA_CLEAN) $(OBJS) $(PSP_EBOOT_SFO) $(PSP_EBOOT) $(EXTRA_TARGETS)
|
|
|
|
rebuild: clean all
|