# Wove - Makefile for SliTaz packaging (wok-friendly).

PACKAGE = wove
VERSION = 1.0.1

PREFIX  ?= /usr
DESTDIR ?=
BINDIR   = $(DESTDIR)$(PREFIX)/bin
LIBDIR   = $(DESTDIR)$(PREFIX)/lib/$(PACKAGE)
SHAREDIR = $(DESTDIR)$(PREFIX)/share/$(PACKAGE)
DOCDIR   = $(DESTDIR)$(PREFIX)/share/doc/$(PACKAGE)
LOCALEDIR = $(DESTDIR)$(PREFIX)/share/locale
LINGUAS  = $(shell cat po/LINGUAS)

CC      ?= cc
CFLAGS  ?= -O2 -Wall
GTK_CFLAGS = $(shell pkg-config --cflags gtk+-3.0 2>/dev/null)
GTK_LIBS   = $(shell pkg-config --libs gtk+-3.0 2>/dev/null)

.PHONY: all gui install install-gui uninstall test pot msgmerge msgfmt clean dist

all: msgfmt

gui: gui/wove-gui

gui/wove-gui: gui/wove-gui.c
	$(CC) $(CFLAGS) $(GTK_CFLAGS) -o $@ $< $(GTK_LIBS)

# Intent labels and domain descriptions live in share/wove/intents:
# turn them into gettext calls so xgettext finds them.
po/intents.sh: share/wove/intents share/wove/needs
	awk -F'\t' '$$2 == "label" { print "gettext \"" $$3 "\"" } \
		$$1 == "domain" { print "gettext \"" $$3 "\""; print "gettext \"" $$4 "\"" }' \
		share/wove/intents > $@
	awk -F'\t' '/^[a-z]/ && $$4 != "" { print "gettext \"" $$4 "\"" }' \
		share/wove/needs >> $@

pot: po/intents.sh
	xgettext -o po/wove.pot -L Shell --from-code=UTF-8 \
		-k_ -k_n -kgettext --add-comments=TRANSLATORS \
		--package-name=Wove --package-version=$(VERSION) \
		bin/wove lib/*.sh po/intents.sh
	xgettext -j -o po/wove.pot -L C --from-code=UTF-8 -k_ \
		--add-comments=TRANSLATORS gui/wove-gui.c
	rm -f po/intents.sh

msgmerge:
	for l in $(LINGUAS); do msgmerge -U --backup=none po/$$l.po po/wove.pot; done

# po/mo/<lang>/LC_MESSAGES/wove.mo: bin/wove uses it from a checkout.
msgfmt:
	for l in $(LINGUAS); do \
		mkdir -p po/mo/$$l/LC_MESSAGES; \
		msgfmt -o po/mo/$$l/LC_MESSAGES/wove.mo po/$$l.po; \
	done

test:
	sh tests/understand.sh
	sh tests/i18n.sh
	sh tests/context.sh

install: msgfmt
	install -d $(BINDIR) $(LIBDIR) $(SHAREDIR)/lang $(DOCDIR)
	install -m 0755 bin/wove $(BINDIR)/wove
	install -m 0644 lib/*.sh lib/understand.awk $(LIBDIR)/
	install -m 0644 share/wove/intents share/wove/needs share/wove/langs \
		share/wove/services $(SHAREDIR)/
	install -m 0644 share/wove/lang/*.lex $(SHAREDIR)/lang/
	install -m 0644 README doc/PROTOCOL $(DOCDIR)/
	for l in $(LINGUAS); do \
		install -d $(LOCALEDIR)/$$l/LC_MESSAGES; \
		install -m 0644 po/mo/$$l/LC_MESSAGES/wove.mo $(LOCALEDIR)/$$l/LC_MESSAGES/; \
	done

install-gui: gui/wove-gui
	install -d $(BINDIR) $(DESTDIR)$(PREFIX)/share/applications
	install -m 0755 gui/wove-gui $(BINDIR)/wove-gui
	install -m 0644 gui/wove-gui.desktop $(DESTDIR)$(PREFIX)/share/applications/

uninstall:
	rm -rf $(BINDIR)/wove $(BINDIR)/wove-gui $(LIBDIR) $(SHAREDIR) $(DOCDIR)
	rm -f $(LOCALEDIR)/*/LC_MESSAGES/wove.mo
	rm -f $(DESTDIR)$(PREFIX)/share/applications/wove-gui.desktop

clean:
	rm -rf po/mo po/intents.sh gui/wove-gui

dist:
	hg archive -t tbz2 $(PACKAGE)-$(VERSION).tar.bz2
