BUILD_PRX              ?= 0
PSP_LARGE_MEMORY       ?= 1
DEBUG                  ?= 0
HAVE_KERNEL_PRX        ?= 1
HAVE_THREADS           ?= 1
BIG_STACK              ?= 0
LOAD_WITHOUT_CORE_INFO ?= 0
HAVE_STATIC_DUMMY      ?= 0
HAVE_XDELTA            ?= 1
TARGET = retroarchpsp

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

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

RARCH_DEFINES = -DPSP \
		-D_MIPS_ARCH_ALLEGREX \
		-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 = -L$(shell psp-config --psp-prefix)

ifeq ($(HAVE_STATIC_DUMMY),1)
  RARCH_DEFINES += -DHAVE_STATIC_DUMMY
else
  LIBS += -lretro_psp1
endif
LIBS += -lstdc++ -lpspgu -lpspgum -lpspaudio -lpspfpu -lpsppower -lpsprtc -lpthread

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

ifeq ($(HAVE_KERNEL_PRX), 1)
OBJS += bootstrap/psp1/kernel_functions.o
CFLAGS += -DHAVE_KERNEL_PRX
endif

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

ifeq ($(LOAD_WITHOUT_CORE_INFO),1)
RARCH_DEFINES += -DLOAD_WITHOUT_CORE_INFO
endif

CFLAGS += $(RARCH_DEFINES)

EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = RetroArch PSP1

OBJS += griffin/griffin.o

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

sim:
	/Applications/PPSSPPSDL.app/Contents/MacOS/PPSSPPSDL $(shell pwd)/EBOOT.PBP