BUILD_PRX          = 0
PSP_LARGE_MEMORY   = 1
DEBUG              = 0
HAVE_KERNEL_PRX    = 1
HAVE_THREADS       = 1
BIG_STACK          = 0
WHOLE_ARCHIVE_LINK = 0

TARGET = retroarchpsp

ifeq ($(DEBUG), 1)
   OPTIMIZE_LV	:= -O0 -g
else
   OPTIMIZE_LV	:= -O3
endif

ifeq ($(WHOLE_ARCHIVE_LINK), 1)
   WHOLE_START := -Wl,--whole-archive
   WHOLE_END := -Wl,--no-whole-archive
endif

INCDIR = deps deps/stb deps/7zip libretro-common/include libretro-common/include/compat/zlib
CFLAGS = $(OPTIMIZE_LV) -G0 -std=gnu99 -ffast-math -fsingle-precision-constant
ASFLAGS = $(CFLAGS)

RARCH_DEFINES = -DPSP \
		-D_MIPS_ARCH_ALLEGREX \
		-DHAVE_LANGEXTRA \
		-DHAVE_ZLIB \
		-DHAVE_AUDIOMIXER \
		-DHAVE_RWAV \
		-DHAVE_RPNG \
		-DHAVE_RJPEG \
		-DHAVE_GRIFFIN=1 \
		-DRARCH_INTERNAL \
		-DHAVE_SCREENSHOTS \
		-DHAVE_REWIND \
		-DRARCH_CONSOLE \
		-DHAVE_MENU \
		-DHAVE_CONFIGFILE \
		-DHAVE_PATCH \
		-DHAVE_CHEATS \
		-DHAVE_RGUI \
		-DHAVE_FILTERS_BUILTIN \
		-DHAVE_DSP_FILTER \
		-DHAVE_VIDEO_FILTER \
		-DHAVE_7ZIP \
		-D_7ZIP_ST \
		-DHAVE_CC_RESAMPLER \
		-DHAVE_CORE_INFO_CACHE

LIBDIR =
LDFLAGS =
LIBS = $(WHOLE_START) -lretro_psp1 $(WHOLE_END) -lstdc++ -lpspgu -lpspgum -lm -lpspaudio -lpspfpu -lpsppower -lpsprtc -lpthread-psp

ifeq ($(HAVE_THREADS), 1)
RARCH_DEFINES += -DHAVE_THREADS
endif

ifeq ($(HAVE_KERNEL_PRX), 1)
CFLAGS += -DHAVE_KERNEL_PRX
endif

ifeq ($(BIG_STACK), 1)
CFLAGS += -DBIG_STACK
endif

CFLAGS += $(RARCH_DEFINES)

EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = RetroArch PSP1

PSP_OBJECTS = griffin/griffin.o bootstrap/psp1/kernel_functions.o

OBJS = $(PSP_OBJECTS)

PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak

pspsh-debug:
	pspsh -e reset
	read -p "Start debugger in VSCode and press any key to continue... \n" -n1 -s
	pspsh -e debug ./retroarchpsp.prx
	pspsh

pspsh-run:
	pspsh -e reset
	pspsh -e ./retroarchpsp.prx
	pspsh

debug: clean all pspsh-debug

run: clean all pspsh-run