RARCH_VERSION		= "0.9.7"

#which compiler to build  with - GCC or SNC
#set to GCC for debug builds for use with debugger
CELL_BUILD_TOOLS	= SNC
CELL_GPU_TYPE	   	= RSX
CELL_PSGL_VERSION	= ultra-opt

DEBUG			= 0
DOWNLOAD_SHADERS	= 1
STRIPPING_ENABLE	= 0
HAVE_RGL		= 1
HAVE_LOGGER		= 0
HAVE_FREETYPE		= 0
PERF_TEST		= 0

CONTENT_ID_FULL		= UP0001-SSNE10000_00-0000000000000001
CONTENT_ID		= SSNE10000

PC_DEVELOPMENT_IP_ADDRESS	= "192.168.1.7"
PC_DEVELOPMENT_UDP_PORT		= 3490

CELL_MK_DIR		?= $(CELL_SDK)/samples/mk
include $(CELL_MK_DIR)/sdk.makedef.mk

PPU_TARGET		= retroarch_ps3.elf
SALAMANDER_TARGET	= retroarch-salamander_ps3.elf

EBOOT_PATH		= ps3/pkg/USRDIR/EBOOT.BIN
CORE_PATH		= ps3/pkg/USRDIR/cores/CORE.SELF

LDDIRS = -L. -L$(CELL_SDK)/target/ppu/lib/PSGL/RSX/ultra-opt
INCDIRS = -I. -Ips3 -Icommon

# system platform
system_platform = unix
ifeq ($(shell uname -a),)
EXE_EXT = .exe
   system_platform = win
else ifneq ($(findstring Darwin,$(shell uname -a)),)
   system_platform = osx
else ifneq ($(findstring MINGW,$(shell uname -a)),)
   system_platform = win
endif

PKG_SCRIPT		= ps3/ps3py/pkg.py
ifeq ($(shell uname), Linux)
PKG_FINALIZE         	= package_finalize
MAKE_SELF_WC		= make_self_wc
MAKE_SELF		= make_self_npdrm
PYTHON2			= python2
GIT			= git
else
PKG_FINALIZE         	= package_finalize.exe
MAKE_SELF_WC		= make_self_wc.exe
MAKE_SELF		= make_self_npdrm.exe
PYTHON2			= python2.exe
GIT			= git.exe
endif

PPU_SRCS		= ps3/frontend/main.c

ifeq ($(PERF_TEST), 1)
   DEFINES += -DPERF_TEST
endif

ifeq ($(HAVE_RGL), 1)
DEFINES			+= -DHAVE_RGL
GL_LIBS			:= -L. -lrgl_ps3
else
GL_LIBS			:= -L$(CELL_SDK)/target/ppu/lib/PSGL/RSX/ultra-opt -lPSGL -lPSGLcgc
endif

ifeq ($(HAVE_FREETYPE), 1)
DEFINES			+= -DHAVE_FREETYPE
FONT_LIBS		:= -lfontFT_stub -lfreetype_stub
else
DEFINES			+= -DHAVE_LIBDBGFONT
FONT_LIBS		:= -ldbgfont
endif

ifeq ($(CELL_BUILD_TOOLS), SNC)
	PPU_CXXLD = $(CELL_SDK)/host-win32/sn/bin/ps3ppuld.exe
	PPU_CXX	= $(CELL_SDK)/host-win32/sn/bin/ps3ppusnc.exe
	PPU_CC = $(CELL_SDK)/host-win32/sn/bin/ps3ppusnc.exe
else
ifneq($(system_platform), win)
	PPU_CXX	= $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-g++.exe
	PPU_CC = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-gcc.exe
	PPU_CXXLD = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-ld.exe
	PPU_CCLD = $(CELL_SDK)/host-win32/ppu/bin/ppu-lv2-ld.exe
endif


PPU_LDLIBS =  $(FONT_LIBS) $(GL_LIBS) -lretroarch_ps3 -lretro_ps3 -lcgc -lgcm_cmd -lgcm_sys_stub -lresc_stub -lm -lio_stub -lfs_stub -lsysutil_stub -lsysutil_game_stub -lsysutil_screenshot_stub -lsysutil_np_stub -lpngdec_stub -ljpgdec_stub -lsysmodule_stub -laudio_stub -lnet_stub -lnetctl_stub -lpthread

DEFINES += -DHAVE_DEFAULT_RETROPAD_INPUT -DHAVE_THREAD -DRARCH_CONSOLE -DHAVE_OPENGL -DHAVE_PSGL -DHAVE_HEADSET -DHAVE_VID_CONTEXT -DHAVE_OPENGLES -DHAVE_OPENGLES1 -DHAVE_PSGL -DHAVE_CG -DHAVE_CG_RUNTIME_COMPILER -DHAVE_FILEBROWSER -DHAVE_HDD_CACHE_PARTITION -DHAVE_FBO -DHAVE_RARCH_MAIN_WRAP -DHAVE_SYSMODULES -DHAVE_SYSUTILS -DHAVE_RARCH_EXEC -DHAVE_RGL -DHAVE_LIBRETRO_MANAGEMENT -DHAVE_RSOUND -DHAVE_ZLIB -D__CELLOS_LV2__ -DHAVE_CONFIGFILE=1 -DHAVE_NETPLAY=1 -DHAVE_SOCKET_LEGACY=1 -DHAVE_OSKUTIL -DHAVE_MOUSE -DHAVE_GRIFFIN=1 -DHAVE_MULTIMAN=1 -DPACKAGE_VERSION=\"$(RARCH_VERSION)\" -Dmain=rarch_main -DPC_DEVELOPMENT_IP_ADDRESS=\"$(PC_DEVELOPMENT_IP_ADDRESS)\" -DPC_DEVELOPMENT_UDP_PORT=$(PC_DEVELOPMENT_UDP_PORT)

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

ifeq ($(HAVE_LOGGER), 1)
DEFINES			+= -DHAVE_LOGGER
PPU_SRCS		+= console/logger/logger.c
INCDIRS                 +=  -Iconsole/logger
endif

PPU_CFLAGS := $(PPU_OPTIMIZE_LV) $(INCDIRS) $(DEFINES)
PPU_CXXFLAGS := $(PPU_OPTIMIZE_LV) $(INCDIRS) $(DEFINES)


EXIST_EBOOT_WILDCARD := $(wildcard $(EBOOT_PATH))
EXIST_CORE_WILDCARD := $(wildcard $(CORE_PATH))

EBOOT_EXISTS		= 1
CORE_EXISTS		= 1

ifneq ($(strip $(EXIST_EBOOT_WILDCARD)),)
EBOOT_EXISTS		= 0
endif

ifneq ($(strip $(EXIST_CORE_WILDCARD)),)
CORE_EXISTS		= 0
endif

include $(CELL_MK_DIR)/sdk.target.mk

MAKE_FSELF = $(CELL_SDK)/host-win32/bin/make_fself.exe
MAKE_FSELF_NPDRM = $(CELL_SDK)/host-win32/bin/make_fself_npdrm.exe
MAKE_PACKAGE_NPDRM = $(CELL_SDK)/host-win32/bin/make_package_npdrm.exe

.PHONY: create-selfs-npdrm create-npdrm-core create-core create-npdrm-salamander create-npdrm-salamander create-shaders clean-selfs

create-npdrm-core:
	$(MAKE_FSELF_NPDRM) $(PPU_TARGET) $(CORE_PATH)

create-core:
	$(MAKE_SELF_WC) $(PPU_TARGET) $(CORE_PATH)

create-npdrm-salamander:
	$(MAKE_FSELF_NPDRM) $(SALAMANDER_TARGET) $(EBOOT_PATH)
	
create-salamander:
	$(MAKE_SELF) $(SALAMANDER_TARGET) $(EBOOT_PATH) $(CONTENT_ID_FULL)

copy-media-files:
	@cp console/rmenu/images/main-menu_1080p.png ps3/pkg/USRDIR/cores/borders/Menu/main-menu.png

create-shaders:
ifeq ($(DOWNLOAD_SHADERS),1)
	$(RM) -rf ps3/pkg/USRDIR/cores/shaders
	$(GIT) clone git://github.com/libretro/common-shaders.git ps3/pkg/USRDIR/cores/shaders
endif

pkg: $(PPU_TARGET) copy-media-files create-shaders create-npdrm-salamander create-npdrm-core
	$(MAKE_PACKAGE_NPDRM) ps3/pkg/package.conf ps3/pkg

pkg-signed: $(PPU_TARGET) copy-media-files create-shaders create-salamander create-core
	$(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) ps3/pkg/ retroarch-ps3-cfw-$(RARCH_VERSION).pkg

pkg-signed-standalone: $(PPU_TARGET) copy-media-files create-shaders create-core
	$(MAKE_SELF) $(PPU_TARGET) $(EBOOT_PATH) $(CONTENT_ID)
	$(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) ps3/pkg/ retroarch-ps3-cfw-$(RARCH_VERSION).pkg

pkg-signed-cfw: $(PPU_TARGET) copy-media-files create-shaders create-salamander create-core
	$(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) ps3/pkg/ retroarch-ps3-cfw-$(RARCH_VERSION)-kmeaw.pkg
	$(PKG_FINALIZE) retroarch-ps3-cfw-$(RARCH_VERSION)-kmeaw.pkg

pkg-signed-cfw-standalone: $(PPU_TARGET) copy-media-files create-shaders create-core
	$(MAKE_SELF) $(PPU_TARGET) $(EBOOT_PATH) $(CONTENT_ID)
	$(PYTHON2) $(PKG_SCRIPT) --contentid $(CONTENT_ID_FULL) ps3/pkg/ retroarch-ps3-cfw-$(RARCH_VERSION).pkg
	$(PKG_FINALIZE) retroarch-ps3-cfw-$(RARCH_VERSION)-kmeaw.pkg

clean-selfs:
ifeq ($(EBOOT_EXISTS),1)
	@echo "WARNING: Couldn't find file to delete: [$(EBOOT_PATH)], skipping this step."
else
	rm $(EBOOT_PATH)
endif
ifeq ($(CORE_EXISTS),1)
	@echo "WARNING: Couldn't find file to delete: [$(CORE_PATH)], skipping this step."
else
	rm $(CORE_PATH)
endif