# Makefile for SliTaz Cooker.
#

PREFIX  ?= /usr
DESTDIR ?=
LINGUAS ?= fr ja pt_BR ru zh_CN zh_TW
VERSION := $(shell grep ^VERSION bin/cook | cut -d'=' -f2)

all:

install: install-cook install-libcook install-cross install-tui
uninstall: uninstall-cook uninstall-libcook uninstall-cross uninstall-tui

# Cook

install-cook:
	install -m 0755 -d $(DESTDIR)/etc/slitaz
	install -m 0755 -d $(DESTDIR)/etc/init.d
	install -m 0755 -d $(DESTDIR)/bin
	install -m 0755 -d $(DESTDIR)$(PREFIX)/bin
	install -m 0755 -d $(DESTDIR)$(PREFIX)/libexec/cookutils
	install -m 0755 -d $(DESTDIR)/var/www/cgi-bin/cooker
	install -m 0755 -d $(DESTDIR)$(PREFIX)/share/applications
	install -m 0755 -d $(DESTDIR)$(PREFIX)/share/cook/cooktest
	install -m 0755 -d $(DESTDIR)$(PREFIX)/share/doc/cookutils
	install -m 0755 bin/uname            $(DESTDIR)/bin
	install -m 0755 bin/cook             $(DESTDIR)$(PREFIX)/bin
	install -m 0755 bin/cook-all         $(DESTDIR)$(PREFIX)/bin
	install -m 0755 bin/cook-clean       $(DESTDIR)$(PREFIX)/bin
	install -m 0755 bin/cook-deps        $(DESTDIR)$(PREFIX)/bin
	install -m 0755 bin/cook-doctor      $(DESTDIR)$(PREFIX)/bin
	install -m 0755 bin/cook-new         $(DESTDIR)$(PREFIX)/bin
	install -m 0755 bin/cook-pkgdb       $(DESTDIR)$(PREFIX)/bin
	install -m 0755 bin/cook-setup       $(DESTDIR)$(PREFIX)/bin
	install -m 0755 bin/cook-wok         $(DESTDIR)$(PREFIX)/bin
	install -m 0755 bin/cooks            $(DESTDIR)$(PREFIX)/bin
	install -m 0755 bin/cooker           $(DESTDIR)$(PREFIX)/bin
	install -m 0755 bin/cookiso          $(DESTDIR)$(PREFIX)/bin
	install -m 0755 bin/cooklinux        $(DESTDIR)$(PREFIX)/bin
	install -m 0755 modules/compressor \
					modules/fix-desktop-file \
					modules/precheck \
					modules/postcheck \
									 $(DESTDIR)$(PREFIX)/libexec/cookutils
	[ -f $(DESTDIR)/etc/slitaz/cook.conf ] || install -m 0644 configs/cook.conf  $(DESTDIR)/etc/slitaz
	[ -f $(DESTDIR)/etc/slitaz/cook.site ] || install -m 0644 configs/cook.site  $(DESTDIR)/etc/slitaz
	install -m 0644 web/*            $(DESTDIR)/var/www/cgi-bin/cooker
	install -m 0644 data/*.desktop   $(DESTDIR)$(PREFIX)/share/applications
	install -m 0644 data/cooklist    $(DESTDIR)$(PREFIX)/share/cook
	install -m 0644 data/receipt     $(DESTDIR)$(PREFIX)/share/cook
	install -m 0644 data/cooktest/*  $(DESTDIR)$(PREFIX)/share/cook/cooktest
	install -m 0644 doc/*            $(DESTDIR)$(PREFIX)/share/doc/cookutils
	install -m 0644 README           $(DESTDIR)$(PREFIX)/share/doc/cookutils
	install -m 0755 init.d/cooker    $(DESTDIR)/etc/init.d
	chmod 0755 $(DESTDIR)/var/www/cgi-bin/cooker/*.cgi
	sed -i "s|@@PREFIX@@|$(PREFIX)|g" \
		$(DESTDIR)$(PREFIX)/bin/cook \
		$(DESTDIR)$(PREFIX)/libexec/cookutils/compressor

uninstall-cook:
	rm -rf \
		$(DESTDIR)/bin/uname \
		$(DESTDIR)$(PREFIX)/bin/cook \
		$(DESTDIR)$(PREFIX)/bin/cook-all \
		$(DESTDIR)$(PREFIX)/bin/cook-clean \
		$(DESTDIR)$(PREFIX)/bin/cook-deps \
		$(DESTDIR)$(PREFIX)/bin/cook-doctor \
		$(DESTDIR)$(PREFIX)/bin/cook-new \
		$(DESTDIR)$(PREFIX)/bin/cook-pkgdb \
		$(DESTDIR)$(PREFIX)/bin/cook-setup \
		$(DESTDIR)$(PREFIX)/bin/cook-wok \
		$(DESTDIR)$(PREFIX)/bin/cooks \
		$(DESTDIR)$(PREFIX)/bin/cooker \
		$(DESTDIR)$(PREFIX)/bin/cookiso \
		$(DESTDIR)$(PREFIX)/bin/cooklinux \
		$(DESTDIR)$(PREFIX)/libexec/cookutils \
		$(DESTDIR)$(PREFIX)/share/cook \
		$(DESTDIR)/etc/slitaz/cook.* \
		$(DESTDIR)/var/www/cooker

# Libcook

install-libcook:
	install -m 0755 -d $(DESTDIR)$(PREFIX)/lib/slitaz
	install -m 0755 lib/libcook.sh $(DESTDIR)$(PREFIX)/lib/slitaz

uninstall-libcook:
	rm -f $(DESTDIR)$(PREFIX)/lib/slitaz/libcook.sh

# Cross

install-cross:
	install -m 0755 -d $(DESTDIR)$(PREFIX)/bin
	install -m 0755 -d $(DESTDIR)$(PREFIX)/share/cross
	install -m 0755 -d $(DESTDIR)$(PREFIX)/share/doc/cookutils
	install -m 0755 bin/cross            $(DESTDIR)$(PREFIX)/bin
	install -m 0644 doc/cross.txt        $(DESTDIR)$(PREFIX)/share/doc/cookutils
	install -m 0644 configs/cross-*.conf $(DESTDIR)$(PREFIX)/share/cross

uninstall-cross:
	rm -rf \
		$(DESTDIR)$(PREFIX)/bin/cross \
		$(DESTDIR)$(PREFIX)/share/cross \
		$(DESTDIR)$(PREFIX)/share/doc/cookutils/cross.txt

# Cook TUI (ncurses front-end, C/ELF -- the only compiled payload). Delegates
# to tui/Makefile, which links ncursesw (wide) for correct UTF-8 column widths.

install-tui:
	$(MAKE) -C tui DESTDIR=$(DESTDIR) PREFIX=$(PREFIX) install

uninstall-tui:
	$(MAKE) -C tui DESTDIR=$(DESTDIR) PREFIX=$(PREFIX) uninstall

# i18n

pot:
	xgettext -o po/cook.pot -kaction -ktitle -k_ -k_n -k_p:1,2 -L Shell -cL10n \
		--copyright-holder="SliTaz Association" \
		--package-name="Cook" \
		--package-version="$(VERSION)" \
		bin/cook bin/cook-* modules/*

msgmerge:
	@for l in $(LINGUAS); do \
		echo -n "Updating $$l po file."; \
		msgmerge -U po/$$l.po po/cook.pot; \
	done;

msgfmt:
	@for l in $(LINGUAS); do \
		echo "Compiling $$l mo file..."; \
		mkdir -p po/mo/$$l/LC_MESSAGES; \
		msgfmt -o po/mo/$$l/LC_MESSAGES/cook.mo po/$$l.po; \
	done;

# Clean source

clean:
	rm -rf po/mo
	rm -f po/*.mo
	rm -f po/*.*~

help:
	@echo "make"
	@echo "    install         | uninstall         - all"
	@echo "    install-cook    | uninstall-cook    - cook"
	@echo "    install-libcook | uninstall-libcook - libcook"
	@echo "    install-cross   | uninstall-cross   - cross"
	@echo "    install-tui     | uninstall-tui     - cook-tui (ncurses)"
	@echo "    pot | msgmerge | msgfmt | clean     - i18n"
