#
# Makefile.am for xbgmsharp.exe
#
# Authors:
#   Francois Lacroix (xbgm@kayaweed.net)
#

MCS=mcs
MONORESGEN=monoresgen

SOURCES_TEXT = \
./AssemblyInfo.cs \
./Main.cs \
./MyText.cs \
./Translation.cs \
./FTP/FTPClient.cs \
./FTP/FTPControlSocket.cs \
./FTP/FTPException.cs \
./FTP/FTPReply.cs \
./Xiso/xisoinfo.cs \
./Xiso/xisothread2.cs \
./Core/FtpToXbox.cs \
./Core/ZipExtract.cs \
./Core/FtpLogger.cs \
./Core/Parser.cs \
./Core/ConfigXml.cs \
./Core/CheckEnvOS.cs \
./Core/Messages.cs \
./Core/GameInfo.cs \
./Config.cs \
./File/FileData.cs \
./File/FileExplorer.cs \
./File/Filethread.cs

SOURCES = \
./AssemblyInfo.cs \
./Main.cs \
./Translation.cs \
./FTP/FTPClient.cs \
./FTP/FTPControlSocket.cs \
./FTP/FTPException.cs \
./FTP/FTPReply.cs \
./FTP/FTPFile.cs \
./FTP/FTPFileParser.cs \
./FTP/FTPUnixFilePaser.cs \
./Dialog/DeleteDialog.cs \
./Dialog/RenameDialog.cs \
./Dialog/AboutDialog.cs \
./Dialog/Popup.cs \
./Dialog/ChooserDialog.cs \
./Xiso/xisoinfo.cs \
./Xiso/xpr2dds2bmp.cs \
./Xiso/xisothread2.cs \
./Core/Export.cs \
./Core/FtpToXbox.cs \
./Core/Messages.cs \
./Core/Parser.cs \
./Core/ZipExtract.cs \
./Core/GameInfo.cs \
./Core/FtpLogger.cs \
./Core/ConfigXml.cs \
./Core/CheckEnvOS.cs \
./Core/Savegame.cs \
./Core/SaveXml.cs \
./Core/ZipCompress.cs \
./Config.cs \
./Gladegui.cs \
./Dialog/PrefGaldeDialog.cs \
./Dialog/UploadDirGladeDialog.cs \
./Dialog/ProgressUploadDirGlade.cs \
./Dialog/ProgressDialogGlade.cs \
./Dialog/ToolbarGlade.cs \
./Dialog/ExportDialogGlade.cs \
./File/FileData.cs \
./File/FileExplorer.cs \
./File/Filethread.cs

SOURCES_GUI = \
./AssemblyInfo.cs \
./MyMain.cs \
./MyWindow.cs \
./Translation.cs \
./FTP/FTPClient.cs \
./FTP/FTPControlSocket.cs \
./FTP/FTPException.cs \
./FTP/FTPReply.cs \
./Dialog/DeleteDialog.cs \
./Dialog/RenameDialog.cs \
./Dialog/AboutDialog.cs \
./Dialog/ProgressDialogGlade.cs \
./Dialog/Popup.cs \
./Dialog/Toolbar.cs \
./Dialog/ChooserDialog.cs \
./Xiso/xisoinfo.cs \
./Xiso/xisothread2.cs \
./Core/Export.cs \
./Core/FtpToXbox.cs \
./Core/Messages.cs \
./Core/Parser.cs \
./Core/ZipExtract.cs \
./Core/GameInfo.cs \
./Core/FtpLogger.cs \
./Core/ConfigXml.cs \
./Core/CheckEnvOS.cs \
./Config.cs \
./Dialog/PrefGaldeDialog.cs \
./Dialog/UploadDirGladeDialog.cs \
./Dialog/ProgressUploadDirGlade.cs \
./File/FileData.cs \
./File/FileExplorer.cs \
./File/Filethread.cs

RESOURCES_GUI = \
./pixmap/reboot.png \
./pixmap/shutdown.png \
./pixmap/infoicon.png \
./pixmap/xbgmicon.ico \
./pixmap/edit.png \
./pixmap/play.png \
./pixmap/xbgmsharp.png \
./pixmap/xbgmicon.png \
./pixmap/xbmc.png \
./pixmap/xbox.png \
./pref.glade \
./Glade/uploaddir.glade \
$(STRINGFILES)

RESOURCES = \
./pixmap/reboot.png \
./pixmap/shutdown.png \
./pixmap/infoicon.png \
./pixmap/xbgmicon.ico \
./pixmap/edit.png \
./pixmap/play.png \
./pixmap/xbgmsharp.png \
./pixmap/xbgmicon.png \
./pixmap/xbmc.png \
./pixmap/xbox.png \
./pref.glade \
./Glade/uploaddir.glade \
./xbgmgui.glade \
$(STRINGFILES)

STRINGFILES= String/strings.resources \
	 String/strings.fr.resources \
	 String/strings.de.resources

CLEANFILES = String/*.resources
	 
RESOURCES_BUILD = $(foreach res,$(RESOURCES), $(addprefix -resource:,$(res)),$(notdir $(res)))

RESOURCES_BUILD_GUI = $(foreach res,$(RESOURCES_GUI), $(addprefix -resource:,$(res)),$(notdir $(res)))

PKG_REFERENCES = \
	gtk-sharp-2.0 \
	glade-sharp-2.0

PKG_REFERENCES_BUILD = $(addprefix -pkg:, $(PKG_REFERENCES))

PKG_REFERENCES_CHECK = $(addsuffix .pkgcheck, $(PKG_REFERENCES))

SYSTEM_REFERENCES = \
System.Data.dll \
System.Drawing.dll \
ICSharpCode.SharpZipLib.dll

SYSTEM_REFERENCES_BUILD = $(addprefix -r:, $(SYSTEM_REFERENCES))

SYSTEM_REFERENCES_CHECK = $(addsuffix .check, $(SYSTEM_REFERENCES))

CLEANFILES = String/*.resources

#MCS_OPTIONS = -d:DEBUG
MCS_OPTIONS = -d:DEBUG -d:GUI
MCS_OPTIONS_GUI = -d:DEBUG -d:GUI
MCS_OPTIONS_TEXT = -d:DEBUG -d:TEXT

all: xbgmsharp.exe

text: $(SOURCES_TEXT) $(STRINGFILES)
	$(MCS) $(MCS_OPTIONS_TEXT) -target:exe -out:"xbgmsharp.exe" -r:Mono.GetOptions $(SYSTEM_REFERENCES_BUILD) $(SOURCES_TEXT) 

gui: $(SOURCES_GUI) $(RESOURCES_GUI) $(STRINGFILES)
	$(MCS) $(MCS_OPTIONS_GUI) -target:exe -out:"xbgmsharp.exe" $(RESOURCES_BUILD_GUI) $(PKG_REFERENCES_BUILD) $(SYSTEM_REFERENCES_BUILD) $(SOURCES_GUI)

xbgmsharp.exe: $(SOURCES) $(RESOURCES) $(STRINGFILES)
	$(MCS) $(MCS_OPTIONS) /nowarn:169,612,618 -target:exe -out:"xbgmsharp.exe" $(RESOURCES_BUILD) $(PKG_REFERENCES_BUILD) $(SYSTEM_REFERENCES_BUILD) $(SOURCES) 

resources/strings.txt: $(SOURCES)
	perl getstrings.pl ./Dialog/Toolbar.cs > String/strings.txt

depcheck: PKG_depcheck SYSTEM_depcheck

PKG_depcheck: $(PKG_REFERENCES_CHECK)

%.pkgcheck:
	@echo -n Checking for package $(subst .pkgcheck,,$@)...
	@if pkg-config --libs $(subst .pkgcheck,,$@) &> /dev/null; then \
		echo yes; \
	else \
		echo no; \
		exit 1; \
	fi

SYSTEM_depcheck: $(SYSTEM_REFERENCES_CHECK)

%.check:
	@echo -n Checking for $(subst .check,,$@)...
	@if [ ! -e `pkg-config --variable=libdir mono`/mono/2.0/$(subst .check,,$@) ]; then \
		echo no; \
		exit 1; \
	else \
		echo yes; \
	fi

resources/strings.resources: String/strings.txt

resources/strings.fr.resources: String/strings.fr.txt

%.resources: %.txt
    $(MONORESGEN) $< || (echo -e "\nERROR: You should either" \
		"enable binfmt-misc with mono support or define \n" \
		"RUNTIME=mono and MONORESGEN=yourpathto/monoresgen.exe\n" \
		&& exit 1)

clean:
	rm -f xbgmsharp.exe xbgmsharp.exe.mdb

purge: clean
	$(CLEANFILES)
