CELL_SDK ?= /usr/local/cell
CELL_MK_DIR ?= $(CELL_SDK)/samples/mk
include $(CELL_MK_DIR)/sdk.makedef.mk
CELL_HOST_PATH ?= $(CELL_SDK)/host-win32
MKFSELF_NPDRM = $(CELL_HOST_PATH)/bin/make_fself_npdrm
MKPKG_NPDRM = $(CELL_HOST_PATH)/bin/make_package_npdrm

STRIP = $(CELL_HOST_PATH)/ppu/bin/ppu-lv2-strip
COPY = cp

SNES9X_API_DIR	= ./src/snes9x
UTILS_DIR	= ./utils

PPU_SRCS		+= src/cellframework/threads/thread.cpp src/cellframework/threads/mutex.cpp src/cellframework/threads/cond.cpp src/cellframework/threads/scoped_lock.cpp src/cellframework/network/network.cpp src/emulator.cpp src/old/cellgraphicsgcm.cpp src/cellframework/utility/OSKUtil.cpp src/cellframework/graphics/PSGLGraphics.cpp src/SNES9xGraphics.cpp src/emulator_implementation.cpp $(SNES9X_API_DIR)/cpu.cpp $(SNES9X_API_DIR)/cpuexec.cpp $(SNES9X_API_DIR)/cpuops.cpp $(SNES9X_API_DIR)/srtc.cpp $(SNES9X_API_DIR)/dma.cpp $(SNES9X_API_DIR)/memmap.cpp $(SNES9X_API_DIR)/sa1.cpp $(SNES9X_API_DIR)/sa1cpu.cpp $(SNES9X_API_DIR)/apu/apu.cpp $(SNES9X_API_DIR)/apu/SNES_SPC.cpp $(SNES9X_API_DIR)/apu/SNES_SPC_misc.cpp $(SNES9X_API_DIR)/apu/SNES_SPC_state.cpp $(SNES9X_API_DIR)/apu/SPC_DSP.cpp $(SNES9X_API_DIR)/apu/SPC_Filter.cpp $(SNES9X_API_DIR)/fxdbg.cpp $(SNES9X_API_DIR)/fxemu.cpp $(SNES9X_API_DIR)/fxinst.cpp $(SNES9X_API_DIR)/gfx.cpp $(SNES9X_API_DIR)/ppu.cpp  $(foreach dir,$(SNES9X_API_DIR)/jma/,$(wildcard $(dir)/*.cpp)) $(foreach dir,$(SNES9x_API_DIR)/filter/,$(wildcard $(dir)/*.cpp)) $(SNES9X_API_DIR)/filter/snes_ntsc.c $(SNES9X_API_DIR)/bsx.cpp $(SNES9X_API_DIR)/c4.cpp $(SNES9X_API_DIR)/c4emu.cpp $(SNES9X_API_DIR)/cheats.cpp $(SNES9X_API_DIR)/cheats2.cpp $(SNES9X_API_DIR)/clip.cpp $(SNES9X_API_DIR)/conffile.cpp $(SNES9X_API_DIR)/controls.cpp $(SNES9X_API_DIR)/crosshairs.cpp $(SNES9X_API_DIR)/debug.cpp  $(SNES9X_API_DIR)/dsp.cpp $(SNES9X_API_DIR)/dsp1.cpp $(SNES9X_API_DIR)/dsp2.cpp $(SNES9X_API_DIR)/dsp3.cpp $(SNES9X_API_DIR)/dsp4.cpp $(SNES9X_API_DIR)/globals.cpp $(SNES9X_API_DIR)/loadzip.cpp $(SNES9X_API_DIR)/logger.cpp  $(SNES9X_API_DIR)/movie.cpp $(SNES9X_API_DIR)/netplay.cpp $(SNES9X_API_DIR)/obc1.cpp  $(SNES9X_API_DIR)/reader.cpp  $(SNES9X_API_DIR)/screenshot.cpp $(SNES9X_API_DIR)/sdd1.cpp $(SNES9X_API_DIR)/sdd1emu.cpp $(SNES9X_API_DIR)/server.cpp $(SNES9X_API_DIR)/seta.cpp $(SNES9X_API_DIR)/seta010.cpp $(SNES9X_API_DIR)/seta011.cpp $(SNES9X_API_DIR)/seta018.cpp $(SNES9X_API_DIR)/snapshot.cpp $(SNES9X_API_DIR)/snes9x.cpp $(SNES9X_API_DIR)/spc7110.cpp  $(SNES9X_API_DIR)/tile.cpp

#for 3.41
PPU_SRCS		+= src/cellframework/input/cellInput.cpp src/menu.cpp src/cellframework/audio/resampler.cpp src/cellframework/audio/quadratic_resampler.cpp 
PPU_CLAGS		+= -DPS3_SDK_3_41
PPU_CXXFLAGS		+= -DPS3_SDK_3_41

PPU_SRCS		+=	$(UTILS_DIR)/zlib/adler32.c $(UTILS_DIR)/zlib/compress.c $(UTILS_DIR)/zlib/crc32.c $(UTILS_DIR)/zlib/deflate.c $(UTILS_DIR)/zlib/gzclose.c $(UTILS_DIR)/zlib/gzlib.c $(UTILS_DIR)/zlib/gzread.c $(UTILS_DIR)/zlib/gzwrite.c $(UTILS_DIR)/zlib/infback.c $(UTILS_DIR)/zlib/inffast.c $(UTILS_DIR)/zlib/inflate.c $(UTILS_DIR)/zlib/inftrees.c $(UTILS_DIR)/zlib/trees.c $(UTILS_DIR)/zlib/uncompr.c $(UTILS_DIR)/zlib/zutil.c $(UTILS_DIR)/zlib/contrib/minizip/ioapi.c $(UTILS_DIR)/zlib/contrib/minizip/mztools.c  $(UTILS_DIR)/zlib/contrib/minizip/zip.c $(UTILS_DIR)/zlib/contrib/minizip/unzip.c
PPU_SRCS		+=	src/cellframework/audio/librsound.c src/cellframework/audio/buffer.c
PPU_TARGET		=	snes9x.ppu.elf

# debugging
#PPU_CFLAGS += -DCELL_DEBUG -DPS3_DEBUG_IP=\"192.168.1.7\" -DPS3_DEBUG_PORT=9001
#PPU_CXXFLAGS += -DCELL_DEBUG -DPS3_DEBUG_IP=\"192.168.1.7\" -DPS3_DEBUG_PORT=9001
PPU_SRCS += src/cellframework/logger/NetLogger.cpp src/cellframework/logger/Logger.cpp src/cellframework/network/Socket.cpp src/cellframework/network/TCPSocket.cpp src/cellframework/network/Poller.cpp


#for libGCM
#PPU_CFLAGS	+=	-I. -DUSE_FILE32API -Dunix -DPS3_SDK_3_41 -funroll-loops
#PPU_CXXFLAGS	+=	-I./snes9x/ -DZLIB -DUNZIP_SUPPORT -DCPU_SHUTDOWN -DJMA_SUPPORT -DPS3_SDK_3_41 -funroll-loops
#PPU_LDLIBS		+= 	-L. -ldbgfont_gcm -lgcm_cmd -lgcm_sys_stub -lm -lio_stub -lfs_stub -lsysutil_stub -lsysmodule_stub  -laudio_stub

#for PSGL
PPU_CFLAGS	+=	-I. -DUSE_FILE32API -Dunix -funroll-loops -DPSGL -mcpu=cell
PPU_CXXFLAGS	+=	-I./src/ -I./src/snes9x/ -DZLIB -DUNZIP_SUPPORT -DJMA_SUPPORT -DPSGL -funroll-loops -mcpu=cell
PPU_LDLIBS		+= 	-L. -L$(CELL_SDK)/target/ppu/lib/PSGL/RSX/opt -ldbgfont -lPSGL -lPSGLcgc -lcgc -lgcm_cmd -lgcm_sys_stub -lresc_stub -lm -lio_stub -lfs_stub -lsysutil_stub -lsysmodule_stub -laudio_stub -lpthread -lnet_stub

include $(CELL_MK_DIR)/sdk.target.mk

.PHONY: pkg
pkg: $(PPU_TARGET) 
	$(STRIP) $(PPU_TARGET)
	$(MKFSELF_NPDRM) $(PPU_TARGET) pkg/USRDIR/EBOOT.BIN
	$(COPY) -r src/cellframework/extra/shaders pkg/USRDIR/
	$(MKPKG_NPDRM) pkg/package.conf pkg




