# Shell
SHELL = /bin/sh

# Defines

# Application
App-Name = Q7Z
App-Prefix = /share/$(App-Name)

# User
ifndef USER
	USER = $(LOGNAME)
endif

# Home
ifndef SUDO_USER
	#ifndef HOME
		#HOME = ~$(USER)
		HOME = /home/$(USER)
	#endif
endif

# Python
Python = $(shell which python 2> /dev/null)
Python-Ver = $(word 2,$(shell $(Python) --version 2>&1))

# PyQt
PyQt-UIC = $(shell which pyuic4 2> /dev/null)
PyQt-RCC = $(shell which pyrcc4 2> /dev/null)
PyQt-Ver = $(word 5,$(shell $(PyQt-UIC) --version))

# P7Zip
ifneq "$(shell which 7z 2> /dev/null)" ""
	P7Zip = $(shell which 7z 2> /dev/null)
else ifneq "$(shell which 7za 2> /dev/null)" ""
	P7Zip = $(shell which 7za 2> /dev/null)
else
	P7Zip = $(shell which 7zr 2> /dev/null)
endif
P7Zip-Ver = $(word 3,$(shell $(P7Zip) 2>&1 | grep "p7zip Version"))

# System
ifndef SysPrefix
	SysPrefix = /usr
endif

ifndef Sys-SBin
	#Sys-SBin = /sbin
	Sys-SBin = $(SysPrefix)/sbin
endif

ifndef Sys-Bin
	Sys-Bin = $(SysPrefix)/bin
endif

# KDE Configs
KDE-Config3 = $(shell which kde-config 2> /dev/null)
KDE-Config4 = $(shell which kde4-config 2> /dev/null)

# KDE 4
ifneq "$(KDE-Config4)" ""
	KDE_SESSION_VERSION = "4"
	KDE-Config = "$(KDE-Config4)"
	KDE-Prefix = $(shell $(KDE-Config) --prefix)
	KDE-LocalPrefix = $(shell $(KDE-Config) --localprefix)
	#Sys-Bin = $(shell $(KDE-Config) --qt-binaries)
else
	# KDE 3
	ifneq "$(KDE-Config3)" ""
		KDE_SESSION_VERSION = "3"
		KDE-Config = "$(KDE-Config3)"
		KDE-Prefix = $(shell $(KDE-Config) --prefix)
		KDE-LocalPrefix = $(shell $(KDE-Config) --localprefix)
	# Unknown
	else
		KDE_SESSION_VERSION = "?"
		KDE-Config = ""
		KDE-Prefix = /usr
		KDE-LocalPrefix = $(HOME)/.kde4
		#Sys-Bin = $(KDE-Prefix)/bin
	endif
endif

# Local
ifndef LocalPrefix
	LocalPrefix = $(HOME)/.local
endif

ifndef Local-SBin
	Local-SBin = $(LocalPrefix)/sbin
endif

ifndef Local-Bin
	Local-Bin = $(LocalPrefix)/bin
endif


# Aliases

all: Main_Ui.py Main_RCC.py Settings_Ui.py Settings_RCC.py
	@echo ""
	@echo "Before installing $(App-Name), see the documentation for more info."
	@echo ""


echo:
	# Defines
	@echo ""
	@echo "Variables:"
	@echo "App-Name = $(App-Name)"
	@echo "USER = $(USER)"
	@echo "LOGNAME = $(LOGNAME)"
	@echo "HOME = $(HOME)"
	@echo "Python = $(Python)"
	@echo "Python-Ver = $(Python-Ver)"
	@echo "PyQt-UIC = $(PyQt-UIC)"
	@echo "PyQt-RCC = $(PyQt-RCC)"
	@echo "PyQt-Ver = $(PyQt-Ver)"
	@echo "P7Zip = $(P7Zip)"
	@echo "P7Zip-Ver = $(P7Zip-Ver)"
	@echo "KDE_SESSION_VERSION = $(KDE_SESSION_VERSION)"
	@echo "KDE-Config = $(KDE-Config)"
	@echo "KDE-Prefix = $(KDE-Prefix)"
	@echo "KDE-LocalPrefix = $(KDE-LocalPrefix)"
	@echo "SysPrefix = $(SysPrefix)"
	@echo "Sys-SBin = $(Sys-SBin)"
	@echo "Sys-Bin = $(Sys-Bin)"
	@echo "LocalPrefix = $(LocalPrefix)"
	@echo "Local-SBin = $(Local-SBin)"
	@echo "Local-Bin = $(Local-Bin)"
	@echo ""

	# Checks
	$(if $(Python),,$(error Error: The required 'Python' executable file can't be found.  See the documentation for more info.))
	$(if $(PyQt-UIC),,$(error Error: The required 'PyQt-UIC' executable file can't be found.  See the documentation for more info.))
	$(if $(PyQt-RCC),,$(error Error: The required 'PyQt-RCC' executable file can't be found.  See the documentation for more info.))
	$(if $(P7Zip),,$(error Error: The required 'P7Zip' executable file can't be found.  See the documentation for more info.))


install: Install.AllUsers


install-user: Install.CurrentUser


uninstall: UnInstall.AllUsers


uninstall-user: UnInstall.CurrentUser


clean:
	@echo ""
	@echo "Cleaning the $(App-Name) objects."
	@echo ""

	rm -f ../Image/*_rc.py
	rm -f ../Source/*_rc.py
	rm -f ../Source/Ui_*.py
	rm -f ../Source/*.pyc

	@echo ""
	@echo "The $(App-Name) objects have been cleaned."
	@echo ""


# Installers

Install.AllUsers :
	@echo ""
	@echo "Installing $(App-Name) for all users."
	@echo "Only root can run 'make install'.  Others should instead run: 'make install-user'"
	@echo "Before using this unstable script, please thoroughly read the documentation for more info."
	@echo ""

	make uninstall
	#make clean
	make echo
	#$(if $(Package),make all)

	# KDE
	mkdir -p $(DESTDIR)$(SysPrefix)$(App-Prefix)/
	cp -r ../Build/ $(DESTDIR)$(SysPrefix)$(App-Prefix)/
	#cp -r ../Doc/ $(DESTDIR)$(SysPrefix)$(App-Prefix)/
	cp -r ../Desktop/ $(DESTDIR)$(SysPrefix)$(App-Prefix)/
	cp -r ../Image/ $(DESTDIR)$(SysPrefix)$(App-Prefix)/
	#install -m 777 -d $(DESTDIR)$(SysPrefix)$(App-Prefix)/Source/
	cp -r --preserve=mode ../Source/ $(DESTDIR)$(SysPrefix)$(App-Prefix)/
	chmod 777 $(DESTDIR)$(SysPrefix)$(App-Prefix)/Source/
	#chmod 775 $(DESTDIR)$(SysPrefix)$(App-Prefix)/Source/$(App-Name).pyw
	cp -r ../Options/ $(DESTDIR)$(SysPrefix)$(App-Prefix)/
	cp -r ../Testing/ $(DESTDIR)$(SysPrefix)$(App-Prefix)/
	mkdir -p $(DESTDIR)$(Sys-Bin)/
	ln -fs $(SysPrefix)$(App-Prefix)/Source/$(App-Name).pyw $(DESTDIR)$(Sys-Bin)/$(App-Name).pyw
	#mkdir -p $(DESTDIR)$(SysPrefix)/share/apps/konqueror/servicemenus/
	mkdir -p $(DESTDIR)$(SysPrefix)/share/kde4/services/ServiceMenus/
	#cp ../Desktop/KDE/*.desktop $(DESTDIR)$(SysPrefix)/share/apps/konqueror/servicemenus/
	cp ../Desktop/KDE/*.desktop $(DESTDIR)$(SysPrefix)/share/kde4/services/ServiceMenus/
	mkdir -p $(DESTDIR)$(SysPrefix)/share/applications/
	cp ../Desktop/Menu/* $(DESTDIR)$(SysPrefix)/share/applications/
	mkdir -p $(DESTDIR)$(SysPrefix)/share/icons/hicolor/32x32/actions/
	cp ../Image/actions/ark* $(DESTDIR)$(SysPrefix)/share/icons/hicolor/32x32/actions/
	cp ../Image/actions/endturn* $(DESTDIR)$(SysPrefix)/share/icons/hicolor/32x32/actions/
	mkdir -p $(DESTDIR)$(SysPrefix)/share/icons/hicolor/32x32/apps/
	ln -fs $(SysPrefix)$(App-Prefix)/Image/apps/$(App-Name).png $(DESTDIR)$(SysPrefix)/share/icons/hicolor/32x32/apps/

	# Gnome
	#mkdir -p $(DESTDIR)$(HOME)/.gnome2/nautilus-scripts/Archiving/$(App-Name)/
	#cp -r ../Desktop/Gnome/* $(DESTDIR)$(HOME)/.gnome2/nautilus-scripts/Archiving/$(App-Name)/

	# Xfce
	#mkdir -p $(DESTDIR)$(HOME)/.config/Thunar/
	#if test -f $(DESTDIR)$(HOME)/.config/Thunar/uca.xml ; \
	#	then mv -f $(DESTDIR)$(HOME)/.config/Thunar/uca.xml $(DESTDIR)$(HOME)/.config/Thunar/uca.xml.orig ; \
	#fi
	#cp -r ../Desktop/Xfce/uca.xml $(DESTDIR)$(HOME)/.config/Thunar/uca.xml.$(App-Name)

	# Misc
	#rm -rf $(DESTDIR)$(HOME)/Profiles/

	@echo ""
	@echo "To run $(App-Name), enter: $(App-Name).pyw"
	@echo ""

Install.CurrentUser :
	@echo ""
	@echo "Installing $(App-Name) for the current user."
	@echo "Before using this unstable script, please thoroughly read the documentation for more info."
	@echo ""

	make uninstall-user
	#make clean
	make echo
	#make all

	# KDE
	mkdir -p $(LocalPrefix)$(App-Prefix)/
	cp -r ../Build/ $(LocalPrefix)$(App-Prefix)/
	#cp -r ../Doc/ $(LocalPrefix)$(App-Prefix)/
	cp -r ../Desktop/ $(LocalPrefix)$(App-Prefix)/
	cp -r ../Image/ $(LocalPrefix)$(App-Prefix)/
	cp -r --preserve=mode ../Source/ $(LocalPrefix)$(App-Prefix)/
	chmod 777 $(LocalPrefix)$(App-Prefix)/Source/
	#chmod 775 $(LocalPrefix)$(App-Prefix)/Source/$(App-Name).pyw
	cp -r ../Options/ $(LocalPrefix)$(App-Prefix)/
	cp -r ../Testing/ $(LocalPrefix)$(App-Prefix)/
	mkdir -p $(Local-Bin)/
	ln -fs $(LocalPrefix)$(App-Prefix)/Source/$(App-Name).pyw $(Local-Bin)/$(App-Name).pyw
	#mkdir -p $(KDE-LocalPrefix)/share/apps/konqueror/servicemenus/
	mkdir -p $(KDE-LocalPrefix)/share/kde4/services/ServiceMenus/
	#rm -rf $(HOME)/Profiles/
	#cp ../Desktop/KDE/*.desktop $(KDE-LocalPrefix)/share/apps/konqueror/servicemenus/
	cp ../Desktop/KDE/*.desktop $(KDE-LocalPrefix)/share/kde4/services/ServiceMenus/
	mkdir -p $(LocalPrefix)/share/applications/
	cp ../Desktop/Menu/* $(LocalPrefix)/share/applications/
	mkdir -p $(LocalPrefix)/share/icons/hicolor/32x32/actions/
	cp ../Image/actions/ark* $(LocalPrefix)/share/icons/hicolor/32x32/actions/
	cp ../Image/actions/endturn* $(LocalPrefix)/share/icons/hicolor/32x32/actions/
	mkdir -p $(LocalPrefix)/share/icons/hicolor/32x32/apps/
	ln -fs $(LocalPrefix)$(App-Prefix)/Image/apps/$(App-Name).png $(LocalPrefix)/share/icons/hicolor/32x32/apps/

	# Gnome
	#mkdir -p $(HOME)/.gnome2/nautilus-scripts/Archiving/$(App-Name)/
	#cp -r ../Desktop/Gnome/* $(HOME)/.gnome2/nautilus-scripts/Archiving/$(App-Name)/

	# Xfce
	#mkdir -p $(HOME)/.config/Thunar/
	#if test -f $(HOME)/.config/Thunar/uca.xml ; \
	#	then mv -f $(HOME)/.config/Thunar/uca.xml $(HOME)/.config/Thunar/uca.xml.orig ; \
	#fi
	#cp -r ../Desktop/Xfce/uca.xml $(HOME)/.config/Thunar/uca.xml.$(App-Name)

	# Misc
	#rm -rf $(DESTDIR)$(HOME)/Profiles/

	@echo ""
	@echo "You should add $(Local-Bin) to the PATH variable in your ~/.bash_profile or equivalent."
	@echo "Then restart KDE.  To run $(App-Name), enter: $(App-Name).pyw"
	@echo ""


# Uninstallers

UnInstall.AllUsers :
	@echo ""
	@echo "Removing $(App-Name) for all users."
	@echo "Only root can run 'make uninstall'.  Others should instead run: 'make uninstall-user'"
	@echo "Before using this unstable script, please thoroughly read the documentation for more info."
	@echo ""

	make echo

	# KDE
	rm -f $(DESTDIR)$(SysPrefix)/share/icons/hicolor/32x32/actions/ark*
	rm -f $(DESTDIR)$(SysPrefix)/share/icons/hicolor/32x32/actions/endturn*
	rm -f $(DESTDIR)$(SysPrefix)/share/icons/hicolor/32x32/apps/?7Z*
	rm -f $(DESTDIR)$(SysPrefix)/share/apps/konqueror/servicemenus/?7Z*
	rm -f $(DESTDIR)$(SysPrefix)/share/kde4/services/ServiceMenus/?7Z*
	rm -f $(DESTDIR)$(SysPrefix)/share/applnk/Utilities/File/?7Z*
	rm -f $(DESTDIR)$(SysPrefix)/share/applications/?7Z*
	rm -f $(DESTDIR)$(Sys-Bin)/?7Z*
	rm -rf $(DESTDIR)$(SysPrefix)$(App-Prefix)/
	# User
	rm -f $(DESTDIR)$(HOME)/.kde*/share/apps/konqueror/servicemenus/?7Z*
	rm -f $(DESTDIR)$(HOME)/.kde*/share/kde4/services/ServiceMenus/?7Z*

	# Gnome
	rm -rf $(DESTDIR)$(HOME)/.gnome2/nautilus-scripts/Archiving/$(App-Name)/

	# Xfce
	#if test -f $(DESTDIR)$(HOME)/.config/Thunar/uca.xml ; \
	#	then mv -f $(DESTDIR)$(HOME)/.config/Thunar/uca.xml $(DESTDIR)$(HOME)/.config/Thunar/uca.xml.$(App-Name) ; \
	#fi
	#if test -f $(DESTDIR)$(HOME)/.config/Thunar/uca.xml.orig ; \
	#	then mv -f $(DESTDIR)$(HOME)/.config/Thunar/uca.xml.orig $(DESTDIR)$(HOME)/.config/Thunar/uca.xml ; \
	#fi
	#mv -f $(DESTDIR)$(HOME)/.config/Thunar/uca.xml.orig $(DESTDIR)$(HOME)/.config/Thunar/uca.xml
	rm -f $(DESTDIR)$(HOME)/.config/Thunar/uca.xml.$(App-Name)

	@echo ""
	@echo "$(App-Name) has been removed."
	@echo ""

UnInstall.CurrentUser :
	@echo ""
	@echo "Removing $(App-Name) for the current user."
	@echo "Before using this unstable script, please thoroughly read the documentation for more info."
	@echo ""

	make echo

	# KDE
	rm -f $(LocalPrefix)/share/icons/hicolor/32x32/actions/ark*
	rm -f $(LocalPrefix)/share/icons/hicolor/32x32/actions/endturn*
	rm -f $(LocalPrefix)/share/icons/hicolor/32x32/apps/?7Z*
	rm -f $(LocalPrefix)/share/applnk/Utilities/File/?7Z*
	rm -f $(LocalPrefix)/share/applications/?7Z*
	rm -rf $(LocalPrefix)$(App-Prefix)/
	rm -f $(Local-Bin)/?7Z*
	# User
	rm -f $(KDE-LocalPrefix)/share/apps/konqueror/servicemenus/?7Z*
	rm -f $(KDE-LocalPrefix)/share/kde4/services/ServiceMenus/?7Z*

	# Gnome
	rm -rf $(HOME)/.gnome2/nautilus-scripts/Archiving/$(App-Name)/

	# Xfce
	#mv -f $(HOME)/.config/Thunar/uca.xml.orig $(HOME)/.config/Thunar/uca.xml
	#mv -f $(HOME)/.config/Thunar/uca.xml $(HOME)/.config/Thunar/uca.xml.$(App-Name)
	rm -f $(HOME)/.config/Thunar/uca.xml.$(App-Name)

	@echo ""
	@echo "$(App-Name) has been removed."
	@echo ""


# Objects

Main_Ui.py :
	$(PyQt-UIC) ../Source/Main.ui -o ../Source/Ui_Main.py

Main_RCC.py :
	$(PyQt-RCC) ../Image/Main.qrc -o ../Source/Main_rc.py

Settings_Ui.py :
	$(PyQt-UIC) ../Source/Settings.ui -o ../Source/Ui_Settings.py

Settings_RCC.py :
	$(PyQt-RCC) ../Image/Settings.qrc -o ../Source/Settings_rc.py
