##########################################################################
# This file is part of PSPlorer.
#
#   PSPlorer is free software: you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation, either version 3 of the License, or
#   (at your option) any later version.
#
#   PSPlorer is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with PSPlorer.  If not, see <http://www.gnu.org/licenses/>.
#
#########################################################################

#########################################################
#
#              pspZorba : PSPlorer
#				www.pspzorba.com
#########################################################

# Set Here the path where you want to copy your EBOOUT
MOUNT_POINT = F:/PSP/GAME/PSPlorer

# name displayed by the XMB
PSP_EBOOT_TITLE = PSPlorer1.0

# fisrt icon displayed (*.PNG)  by the XMB
PSP_EBOOT_ICON = icon.png

# animation (*.PMF) displayed by the XMB
PSP_EBOOT_ANIM = NULL

# it's a picture (*.PNG)displayed after some seconds rather  with transparency to allow us to see the first icon and the anim.
PSP_EBOOT_FOREGROUND = foreGround.png

# background image (*.PNG) displayed
PSP_EBOOT_BACKGROUND = backGround.png

# music (*.AT3) rather a loop but not mandatory
PSP_EBOOT_SND0 = Lsound1.wav

CXXFLAGS = -g -G0 -Wall -O3 -D_PSP_FW_VERSION=371 -fno-rtti -fno-exceptions
INCDIR = -I. -I$(PSPSDK)/include
LIBDIR = -L. -L/usr/local/pspdev/lib -L$(PSPSDK)/lib -specs=/usr/local/pspdev/psp/sdk/lib/prxspecs -Wl,-q,-T/usr/local/pspdev/psp/sdk/lib/linkfile.prx
LIBS =  /usr/local/pspdev/psp/sdk/lib/prxexports.o -lstdc++ -lz -lpspnet_adhocmatching -lpspnet_adhoc -lpspnet_adhocctl -lpspwlan -lpspnet  -lpspusb -lpspusbstor -lpsppower -lpspgum -lpspgu -lm  -lpspumd -lpspctrl -lpspdebug -lpspge -lpspdisplay -lpspsdk -lc -lpspuser -lpspnet_inet -lpsputility

OBJECTS1 = main.o ZBscreenContextual.o ZBerror.o ZBlicense.o ZBdisplay.o ZBgeneralEventLoop.o ZButil.o ZBfile.o ZBadhoc.o
OBJECTS2 = $(OBJECTS1) ZBvisitor.o ZBvisitorNandFlash.o ZBvisitorNandBackup.o ZBvisitorRename.o ZBvisitorHexEdit.o ZBvisitorMove.o ZBvisitorRemove.o ZBvisitorCopy.o ZBvisitorAction.o  ZBvisitorReload.o ZBvisitorCreateDir.o ZBvisitorCreateFile.o ZBvisitorUSB_MS.o  ZBvisitorUmdBackup.o ZBvisitorProperties.o ZBvisitorSendTo.o ZBvisitorReceiveFrom.o
OBJECTS = $(OBJECTS2) ZBmarker.o ZBscreen.o ZBhexEdit.o ZBvirtualKeyboard.o ZBkerprxStub.o ZBusb.o ZBscreenProperties.o ZBciso.o
#########################################################
all: EBOOT.PBP ZBkerprx.prx
	cp eboot.pbp $(MOUNT_POINT)
	cp ZBkerprx.prx $(MOUNT_POINT)

EBOOT.PBP: PARAM.SFO a.prx $(PSP_EBOOT_ICON)  $(PSP_EBOOT_FOREGROUND) $(PSP_EBOOT_BACKGROUND) $(PSP_EBOOT_ANIM) $(PSP_EBOOT_SND0)
	pack-pbp $@ PARAM.SFO $(PSP_EBOOT_ICON) $(PSP_EBOOT_ANIM) $(PSP_EBOOT_FOREGROUND) $(PSP_EBOOT_BACKGROUND) $(PSP_EBOOT_SND0) a.prx NULL

PARAM.SFO: a.prx
	mksfo $(PSP_EBOOT_TITLE) $@

a.prx: a.elf
	psp-prxgen $< $@


a.elf: $(OBJECTS) Makefile
	psp-gcc $(CXXFLAGS) $(LIBDIR) $(OBJECTS) $(LIBS) -o $@
	psp-fixup-imports  $@


main.o: main.cpp ZBerror.h ZBscreen.h ZBvisitor.h ZBgeneralEventLoop.h ZButil.h version.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBadhoc.o: ZBadhoc.cpp ZBadhoc.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBciso.o: ZBciso.cpp ZBciso.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBdisplay.o: ZBdisplay.cpp ZBdisplay.h ZBerror.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBerror.o: ZBerror.cpp ZBerror.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBfile.o: ZBfile.cpp  ZBfile.h ZBerror.h ZButil.h ZBvisitor.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBgeneralEventLoop.o: ZBgeneralEventLoop.cpp ZBgeneralEventLoop.h ZBerror.h  ZBdisplay.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBhexEdit.o: ZBhexEdit.cpp ZBhexEdit.h ZButil.h ZBdisplay.h ZBgeneralEventLoop.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBlicense.o: ZBlicense.cpp ZBlicense.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBmarker.o: ZBmarker.cpp ZBfile.h ZBmarker.h ZButil.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBscreen.o: ZBscreen.cpp ZBscreen.h ZBerror.h ZBfile.h ZButil.h ZBmarker.h ZBdisplay.h ZBvisitor.h ZBvisitorAction.h ZBgeneralEventLoop.h ZBscreenContextual.h version.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBscreenContextual.o: ZBscreenContextual.cpp ZBscreenContextual.h ZButil.h ZBfile.h ZBvisitor.h  ZBvisitorAction.h ZBerror.h ZBdisplay.h ZBgeneralEventLoop.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBscreenProperties.o: ZBscreenProperties.cpp ZBscreenProperties.h ZButil.h ZBfile.h ZBerror.h ZBdisplay.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZButil.o: ZButil.cpp ZBerror.h ZButil.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBvirtualKeyboard.o: ZBvirtualKeyboard.cpp ZBvirtualKeyboard.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBvisitor.o: ZBvisitor.cpp ZBvisitor.h ZBfile.h ZBerror.h ZButil.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBvisitorAction.o: ZBvisitorAction.cpp ZBvisitorAction.h ZBfile.h ZBerror.h ZButil.h ZBvisitorNandFlash.h ZBvisitorNandBackup.h ZBvisitorRename.h ZBvisitorHexEdit.h ZBvisitorMove.h ZBvisitorRemove.h ZBvisitorCopy.h ZBvisitorCreateDir.h ZBvisitorCreateFile.h  ZBvisitorUSB_MS.h  ZBvisitorUmdBackup.h ZBvisitorProperties.h ZBvisitorSendTo.h ZBvisitorReceiveFrom.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBvisitorCopy.o: ZBvisitorCopy.cpp ZBvisitorCopy.h ZBvisitor.h ZBfile.h ZBerror.h ZButil.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBvisitorCreateDir.o: ZBvisitorCreateDir.cpp ZBvisitorCreateDir.h ZBvisitorCreateFile.h ZBvisitor.h ZBfile.h ZBerror.h ZButil.h ZBvirtualKeyboard.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBvisitorCreateFile.o: ZBvisitorCreateFile.cpp ZBvisitorCreateFile.h ZBvisitor.h ZBfile.h ZBerror.h ZButil.h ZBvirtualKeyboard.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBvisitorHexEdit.o: ZBvisitorHexEdit.cpp ZBvisitorHexEdit.h ZBvisitor.h ZBfile.h ZBerror.h ZButil.h ZBhexEdit.h ZBgeneralEventLoop.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBvisitorMove.o: ZBvisitorMove.cpp ZBvisitorMove.h ZBvisitorRemove.h ZBvisitorCopy.h ZBvisitor.h ZBfile.h ZBerror.h ZButil.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBvisitorNandBackup.o: ZBvisitorNandBackup.cpp ZBvisitorNandFlash.h ZBvisitor.h ZBerror.h ZButil.h ZBkerprx.h ZBfile.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBvisitorNandFlash.o: ZBvisitorNandFlash.cpp ZBvisitorNandFlash.h ZBvisitor.h ZBerror.h ZButil.h ZBkerprx.h ZBfile.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBvisitorProperties.o: ZBvisitorProperties.cpp ZBvisitorProperties.h ZBscreenProperties.h ZBvisitor.h ZBfile.h ZBerror.h ZButil.h ZBgeneralEventLoop.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBvisitorReceiveFrom.o: ZBvisitorReceiveFrom.cpp ZBvisitorReceiveFrom.h ZBvisitor.h ZBfile.h ZBerror.h ZButil.h ZBadhoc.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBvisitorReload.o: ZBvisitorReload.cpp ZBvisitorReload.h ZBvisitor.h ZBfile.h ZBerror.h ZButil.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBvisitorRemove.o: ZBvisitorRemove.cpp ZBvisitorRemove.h ZBvisitor.h ZBfile.h ZBerror.h ZButil.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBvisitorRename.o: ZBvisitorRename.cpp ZBvisitorRename.h ZBvisitor.h ZBfile.h ZBerror.h ZButil.h ZBvirtualKeyboard.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBvisitorSendTo.o: ZBvisitorSendTo.cpp ZBvisitorSendTo.h ZBvisitor.h ZBfile.h ZBerror.h ZButil.h ZBadhoc.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBvisitorUSB_MS.o: ZBvisitorUSB_MS.cpp ZBvisitorUSB_MS.h ZBvisitor.h ZBerror.h ZButil.h ZBfile.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBvisitorUmdBackup.o: ZBvisitorUmdBackup.cpp ZBvisitorUmdBackup.h ZBvisitor.h ZBfile.h ZBerror.h ZButil.h ZBvirtualKeyboard.h ZBciso.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBusb.o: ZBusb.cpp ZBusb.h ZBerror.h ZButil.h ZBfile.h
	psp-g++ $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBkerprxStub.o: ZBkerprx.S
	psp-gcc $(INCDIR)  $(CXXFLAGS) -c -o $@ $<

ZBkerprx.S: Makefile.prx ZBkerprx_main.c ZBkerprx.exp
	make -f Makefile.prx

ZBkerprx.prx: Makefile.prx ZBkerprx_main.c ZBkerprx.exp
	make -f Makefile.prx

NULL:

cleanall: clean
clean:
	rm -f $(OBJECTS) a.elf a_strip.elf PARAM.SFO EBOOT.PBP


