# Makefile for TazInst.
# Check the README for more information.
#
PREFIX?=/usr
DOCDIR?=/usr/share/doc
DESTDIR?=
LINGUAS?=de es fr it ja pt_BR ru zh_CN

PACKAGE	=	tazinst
VERSION	:=	$(shell sed -n 's/^readonly VERSION=//p' ${PACKAGE})
TARBALL	=	$(PACKAGE)-$(VERSION).tar.gz
# one text domain per program, po/<domain>/<lang>.po
DOMAINS	=	tazinst slitaz-installer tazinst-tui tazinst-gtk

all:
	$(MAKE) -C src

# i18n.

pot:
	xgettext -o po/tazinst/tazinst.pot -L Shell \
		--package-name="TazInst" \
		--package-version="$(VERSION)" \
		-k_ -k_n \
		./tazinst
	xgettext -o po/slitaz-installer/slitaz-installer.pot -L Shell \
		--package-name="slitaz-installer" \
		--package-version="$(VERSION)" \
		-k_ -k_n \
		./slitaz-installer
	for p in tazinst-tui tazinst-gtk; do \
		xgettext -o po/$$p/$$p.pot -L C --from-code=UTF-8 \
			--package-name="$$p" \
			--package-version="$(VERSION)" \
			-k_ src/$$p.c; \
	done

msgmerge:
	@for d in $(DOMAINS); do \
		for l in $(LINGUAS); do \
			[ -f "po/$$d/$$l.po" ] || continue; \
			echo -n "Updating $$d $$l po file."; \
			msgmerge -U po/$$d/$$l.po po/$$d/$$d.pot; \
		done; \
	done

msgfmt:
	@for d in $(DOMAINS); do \
		for l in $(LINGUAS); do \
			[ -f "po/$$d/$$l.po" ] || continue; \
			echo "Compiling $$d $$l mo file..."; \
			mkdir -p po/mo/$$l/LC_MESSAGES; \
			msgfmt -o po/mo/$$l/LC_MESSAGES/$$d.mo po/$$d/$$l.po; \
		done; \
	done

# Installation.

install: all msgfmt
	@echo "Installing Tazinst into $(DESTDIR)$(PREFIX)/sbin..."
	mkdir -p $(DESTDIR)$(PREFIX)/sbin
	install -m 0755 tazinst $(DESTDIR)$(PREFIX)/sbin
	-[ "$(VERSION)" ] && sed -i 's/readonly VERSION=["0-9].*/readonly VERSION=$(VERSION)/' $(DESTDIR)$(PREFIX)/sbin/tazinst
	@echo "Installing slitaz-installer into $(DESTDIR)$(PREFIX)/sbin..."
	mkdir -p $(DESTDIR)$(PREFIX)/sbin
	install -m 0755 slitaz-installer $(DESTDIR)$(PREFIX)/sbin
	-[ "$(VERSION)" ] && sed -i 's/^VERSION=["0-9].*/VERSION=$(VERSION)/' $(DESTDIR)$(PREFIX)/sbin/slitaz-installer
	@echo "Installing config file into $(DESTDIR)/etc/slitaz..."
	mkdir -p $(DESTDIR)/etc/slitaz
	install -m 0644 etc/tazinst.conf $(DESTDIR)/etc/slitaz
	@echo "Installing tazinst-tui and tazinst-gtk..."
	$(MAKE) -C src install DESTDIR=$(DESTDIR) PREFIX=$(PREFIX)

	@echo "Installing Tazinst documentation..."
	mkdir -p $(DESTDIR)$(DOCDIR)/tazinst
	install -m 0644 doc/* $(DESTDIR)$(DOCDIR)/tazinst
	# i18n
	mkdir -p $(DESTDIR)$(PREFIX)/share/locale
	cp -a po/mo/* $(DESTDIR)$(PREFIX)/share/locale
	# Desktop integration
	@echo "Setting up desktop integration..."
	mkdir -p $(DESTDIR)$(PREFIX)/share/applications
	install -m 0644 applications/*.desktop $(DESTDIR)$(PREFIX)/share/applications
	for s in 16 22 24 32 48 64 128; do \
		mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/$${s}x$${s}/apps; \
		install -m 0644 applications/icons/tazinst-$$s.png \
			$(DESTDIR)$(PREFIX)/share/icons/hicolor/$${s}x$${s}/apps/tazinst.png; \
	done
	mkdir -p $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps
	install -m 0644 applications/icons/tazinst.svg \
		$(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps

# Uninstallation and tarball clean-up commands.

uninstall:
	rm -f $(DESTDIR)/etc/slitaz/tazinst.conf
	rm -f $(DESTDIR)$(PREFIX)/sbin/tazinst
	rm -f $(DESTDIR)$(PREFIX)/sbin/slitaz-installer
	rm -f $(DESTDIR)$(PREFIX)/sbin/tazinst-tui
	rm -f $(DESTDIR)$(PREFIX)/sbin/tazinst-gtk
	rm -rf $(DESTDIR)$(DOCDIR)/tazinst
	rm -rf $(DESTDIR)$(PREFIX)/share/locale/*/LC_MESSAGES/tazinst*.mo
	rm -rf $(DESTDIR)$(PREFIX)/share/locale/*/LC_MESSAGES/slitaz-installer*.mo
	rm -f $(DESTDIR)$(PREFIX)/share/applications/tazinst.desktop
	rm -f $(DESTDIR)$(PREFIX)/share/applications/tazinst-doc.desktop
	rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/*/apps/tazinst.*

clean:
	rm -rf _pkg
	rm -rf po/mo
	rm -f po/*/*~
	$(MAKE) -C src clean

dist-clean:
	rm -f $(TARBALL) $(PACKAGE)-$(VERSION).md5

# Build tarball and MD5 file for packaging.
dist: dist-clean
	hg archive -t tgz $(TARBALL)
	md5sum $(TARBALL) > $(PACKAGE)-$(VERSION).md5
