#***********************************************************************************
#
#	Copyright (C) 2007-2009 Ahmet Öztürk (aoz_2@yahoo.com)
#
#   This file is part of Lifeograph.
#
#	Lifeograph 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.
#
#   Lifeograph 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 Lifeograph.  If not, see <http://www.gnu.org/licenses/>.
#
#***********************************************************************************

INSTALL		= install -o root -g root
MKDIR		= mkdir
RM			= rm
CXX			= g++
#CC			= gcc
MSGFMT		= msgfmt
XGETTEXT	= xgettext
MSGMERGE	= msgmerge
PACKAGE		= lifeograph
AUTHORS		= "Ahmet Öztürk"
OBJDIR		= ../obj
OBJ			= ../obj/main.o ../obj/lifeograph.o ../obj/lifeograph_draw.o ../obj/database.o\
				../obj/helpers.o ../obj/undo.o ../obj/textview.o ../obj/password.o\
				../obj/tageditor.o ../obj/chaptereditor.o ../obj/theme.o ../obj/export.o
LINKOBJ		= ../obj/*.o
TRANSSRC	= lifeograph.hpp lifeograph.cpp lifeograph_draw.cpp database.hpp dialogpassword.cpp dialogtageditor.cpp dialogchaptereditor.cpp dialogtheme.cpp dialogexport.cpp helpers.hpp helpers.cpp
LINKFLAGS	= -s
LIBS		= `pkg-config gtkmm-2.4 gconfmm-2.6 gtkspell-2.0 --cflags --libs` -lgcrypt -lgpg-error
CXXFLAGS	= -Wall `pkg-config gtkmm-2.4 gconfmm-2.6 gtkspell-2.0 --cflags`
BINDIR		= ../bin
BIN			= $(BINDIR)/lifeograph
ICONS		= ../icons
BACKGROUNDS	= ../backgrounds
OPTFLAGS	= -O2
prefix		= /usr
exec_prefix	= $(prefix)
bindir		= $(exec_prefix)/bin
datadir		= $(prefix)/share
localedir	= $(datadir)/locale
pixmapdir	= $(datadir)/pixmaps
themedir	= $(datadir)/icons/hicolor
mandir		= $(datadir)/man
icondir		= $(datadir)/$(PACKAGE)/icons
POT			= ../po/lifeograph.pot
PO			:= $(wildcard ../po/*.po)
MO			:= $(PO:.po=.mo)
LOCALES		:= $(notdir $(PO:.po=))


.PHONY: all all-before all-after clean clean-custom install uninstall pot msgmerge debug

all: all-before $(BIN) $(MO) all-after


debug:
	$(MAKE) $(MAKEFILE) DEBUG="-g" LINKFLAGS="" OPTFLAGS=""


all-before:
	if [ ! -d $(OBJDIR) ]; then \
		mkdir $(OBJDIR); \
	fi; \
	if [ ! -d $(BINDIR) ]; then \
		mkdir $(BINDIR); \
	fi


clean:
	$(RM) -f $(LINKOBJ) $(BIN)
	$(RM) -f $(MO)


# INSTALLATION
install: $(BIN) $(MO)
	$(INSTALL) -m 755 -D $(BIN) $(DESTDIR)$(bindir)/$(BIN)
	$(INSTALL) -m 644 -D $(ICONS)/lifeograph-48.png $(DESTDIR)$(pixmapdir)/lifeograph.png
	$(INSTALL) -m 644 -D $(ICONS)/lifeograph-48.png $(DESTDIR)$(themedir)/48x48/apps/lifeograph.png
	$(INSTALL) -m 644 -D $(ICONS)/lifeograph-32.png $(DESTDIR)$(themedir)/32x32/apps/lifeograph.png
	$(INSTALL) -m 644 -D $(ICONS)/lifeograph-24.png $(DESTDIR)$(themedir)/24x24/apps/lifeograph.png
	$(INSTALL) -m 644 -D $(ICONS)/lifeograph-22.png $(DESTDIR)$(themedir)/22x22/apps/lifeograph.png
	$(INSTALL) -m 644 -D $(ICONS)/lifeograph-16.png $(DESTDIR)$(themedir)/16x16/apps/lifeograph.png
	$(INSTALL) -m 644 -D $(ICONS)/scalable/lifeograph.svg $(DESTDIR)$(themedir)/scalable/apps/lifeograph.svg
	$(INSTALL) -m 644 -D $(BACKGROUNDS)/bg.png $(DESTDIR)$(pixmapdir)/$(PACKAGE)/backgrounds/bg.png
	$(INSTALL) -m 644 -D ../lifeograph.desktop $(DESTDIR)$(datadir)/applications/lifeograph.desktop
	$(INSTALL) -m 644 -D $(ICONS)/diary-16.png $(DESTDIR)$(icondir)/diary-16.png
	$(INSTALL) -m 644 -D $(ICONS)/emblem-tag-22.png $(DESTDIR)$(icondir)/emblem-tag-22.png
	$(INSTALL) -m 644 -D $(ICONS)/entry-16.png $(DESTDIR)$(icondir)/entry-16.png
	$(INSTALL) -m 644 -D $(ICONS)/favorite-16.png $(DESTDIR)$(icondir)/favorite-16.png
	for i in $(LOCALES); do \
		$(INSTALL) -m 644 -D ../po/$$i.mo $(DESTDIR)$(localedir)/$$i/LC_MESSAGES/$(PACKAGE).mo; \
		done

uninstall:
	$(RM) $(DESTDIR)$(bindir)/$(BIN)
	$(RM) -R $(DESTDIR)$(pixmapdir)/$(PACKAGE)
	$(RM) $(DESTDIR)$(pixmapdir)/lifeograph.png
	$(RM) $(DESTDIR)$(themedir)/48x48/apps/lifeograph.png
	$(RM) $(DESTDIR)$(themedir)/32x32/apps/lifeograph.png
	$(RM) $(DESTDIR)$(themedir)/24x24/apps/lifeograph.png
	$(RM) $(DESTDIR)$(themedir)/22x22/apps/lifeograph.png
	$(RM) $(DESTDIR)$(themedir)/16x16/apps/lifeograph.png
	$(RM) $(DESTDIR)$(themedir)/scalable/apps/lifeograph.svg
	$(RM) $(DESTDIR)$(datadir)/applications/lifeograph.desktop
	$(RM) -R $(DESTDIR)$(datadir)/$(PACKAGE)
	for i in $(DESTDIR)$(localedir)/*; do \
		$(RM) -f $$i/LC_MESSAGES/$(PACKAGE).mo; \
		done


# INTERNATIONALIZATION
../po/%.mo: ../po/%.po
	@echo "$(MSGFMT) -c -o $@ $<";\
	$(MSGFMT) -c -v -o $@ $<

msgmerge: $(POT)
	for i in $(PO);\
		do $(MSGMERGE) -U $$i $(POT);\
	done

pot: $(TRANSSRC)
	$(XGETTEXT) -kN_ -k_\
			--default-domain=$(PACKAGE)\
			--package-name=$(PACKAGE)\
			--copyright-holder=$(AUTHORS)\
			--add-comments=TRANSLATORS:\
			--from-code=UTF-8 -o $(POT) $(TRANSSRC)


# EXECUTABLE FILE
# maybe some day there will be a windows version:
ifneq (,$(findstring indows,$(OS)))
$(BIN): $(OBJ)
	$(CXX) $(LINKOBJ) $(OPTFLAGS) $(LINKFLAGS) $(LIBS)\
			-Wl,--enable-runtime-pseudo-reloc -mwindows -o $@
else
$(BIN): $(OBJ)
	$(CXX) $(LINKOBJ) $(OPTFLAGS) $(LINKFLAGS) $(LIBS) -o $@
endif


# OBJECT FILES
../obj/helpers.o: helpers.cpp helpers.hpp
	$(CXX) -c helpers.cpp $(CXXFLAGS) $(OPTFLAGS) $(DEBUG) -o $@

../obj/undo.o: undo.cpp undo.hpp
	$(CXX) -c undo.cpp $(CXXFLAGS) $(OPTFLAGS) $(DEBUG) -o $@

../obj/database.o: database.cpp database.hpp helpers.hpp
	$(CXX) -c database.cpp $(CXXFLAGS) $(OPTFLAGS) $(DEBUG) -o $@

../obj/textview.o: textview.cpp textview.hpp dialogtheme.hpp
	$(CXX) -c textview.cpp $(CXXFLAGS) $(OPTFLAGS) $(DEBUG) -o $@

../obj/password.o: dialogpassword.cpp dialogpassword.hpp
	$(CXX) -c dialogpassword.cpp $(CXXFLAGS) $(OPTFLAGS) $(DEBUG) -o $@

../obj/tageditor.o: dialogtageditor.cpp dialogtageditor.hpp
	$(CXX) -c dialogtageditor.cpp $(CXXFLAGS) $(OPTFLAGS) $(DEBUG) -o $@

../obj/chaptereditor.o: dialogchaptereditor.cpp dialogchaptereditor.hpp
	$(CXX) -c dialogchaptereditor.cpp $(CXXFLAGS) $(OPTFLAGS) $(DEBUG) -o $@

../obj/theme.o: dialogtheme.cpp dialogtheme.hpp
	$(CXX) -c dialogtheme.cpp $(CXXFLAGS) $(OPTFLAGS) $(DEBUG) -o $@

../obj/export.o: dialogexport.cpp dialogexport.hpp
	$(CXX) -c dialogexport.cpp $(CXXFLAGS) $(OPTFLAGS) $(DEBUG) -o $@

../obj/lifeograph.o: lifeograph.cpp lifeograph.hpp textview.hpp database.hpp helpers.hpp dialogpassword.hpp dialogtageditor.hpp dialogchaptereditor.hpp dialogexport.hpp
	$(CXX) -c lifeograph.cpp $(CXXFLAGS) $(OPTFLAGS) $(DEBUG) -o $@

../obj/lifeograph_draw.o: lifeograph_draw.cpp lifeograph.hpp
	$(CXX) -c lifeograph_draw.cpp $(CXXFLAGS) $(OPTFLAGS) $(DEBUG) -o $@

../obj/main.o: main.cpp lifeograph.hpp
	$(CXX) -c main.cpp $(CXXFLAGS) $(OPTFLAGS) $(DEBUG) -o $@


