# Makefile for Trame.
#

PACKAGE = trame
VERSION = 0.7
PREFIX ?= /usr
DESTDIR ?=
LINGUAS ?=

all: help

help:
	@echo "Trame $(VERSION) - SliTaz system administration backend"
	@echo
	@echo "Targets:"
	@echo "  test         Run the test suite (sh, busybox-safe)"
	@echo "  install      Install into \$$DESTDIR\$$PREFIX (default /usr)"
	@echo "  tui          Build the ncurses front-end (C)"
	@echo "  install-tui  Install the trame-tui binary"
	@echo "  pot          Regenerate the gettext template"
	@echo "  msgmerge     Refresh .po files from the .pot"
	@echo "  clean        Remove generated artifacts"

# Tests

test:
	@sh tests/runtests.sh

# TUI (ncurses C front-end)

tui:
	$(MAKE) -C tui

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

clean-tui:
	$(MAKE) -C tui clean

# i18n

pot:
	xgettext -o po/$(PACKAGE).pot -L Shell --package-name="Trame" \
		bin/trame lib/common.sh lib/trame-*.sh

msgmerge:
	@for l in $(LINGUAS); do \
		echo -n "Updating $$l po file."; \
		msgmerge -U po/$$l.po po/$(PACKAGE).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/$(PACKAGE).mo po/$$l.po; \
	done

# Install

install-bin:
	install -m 0755 -d $(DESTDIR)$(PREFIX)/bin
	install -m 0755 bin/trame            $(DESTDIR)$(PREFIX)/bin/trame
	install -m 0755 bin/trame-testsuite  $(DESTDIR)$(PREFIX)/bin/trame-testsuite
	install -m 0755 bin/trame-wifi-debug $(DESTDIR)$(PREFIX)/bin/trame-wifi-debug

install-lib:
	install -m 0755 -d $(DESTDIR)$(PREFIX)/lib/slitaz/trame
	install -m 0644 lib/common.sh         $(DESTDIR)$(PREFIX)/lib/slitaz/trame
	install -m 0644 lib/trame-system.sh   $(DESTDIR)$(PREFIX)/lib/slitaz/trame
	install -m 0644 lib/trame-hostname.sh $(DESTDIR)$(PREFIX)/lib/slitaz/trame
	install -m 0644 lib/trame-service.sh  $(DESTDIR)$(PREFIX)/lib/slitaz/trame
	install -m 0644 lib/trame-time.sh     $(DESTDIR)$(PREFIX)/lib/slitaz/trame
	install -m 0644 lib/trame-network.sh  $(DESTDIR)$(PREFIX)/lib/slitaz/trame
	install -m 0644 lib/trame-wifi.sh     $(DESTDIR)$(PREFIX)/lib/slitaz/trame
	install -m 0644 lib/trame-locale.sh   $(DESTDIR)$(PREFIX)/lib/slitaz/trame
	install -m 0644 lib/trame-log.sh      $(DESTDIR)$(PREFIX)/lib/slitaz/trame
	install -m 0644 lib/trame-user.sh     $(DESTDIR)$(PREFIX)/lib/slitaz/trame
	install -m 0644 lib/trame-storage.sh  $(DESTDIR)$(PREFIX)/lib/slitaz/trame
	install -m 0644 lib/trame-kernel.sh   $(DESTDIR)$(PREFIX)/lib/slitaz/trame
	install -m 0644 lib/trame-boot.sh     $(DESTDIR)$(PREFIX)/lib/slitaz/trame
	install -m 0644 lib/trame-power.sh    $(DESTDIR)$(PREFIX)/lib/slitaz/trame
	install -m 0644 lib/trame-display.sh  $(DESTDIR)$(PREFIX)/lib/slitaz/trame
	install -m 0644 lib/trame-audio.sh    $(DESTDIR)$(PREFIX)/lib/slitaz/trame
	install -m 0644 lib/trame-firewall.sh $(DESTDIR)$(PREFIX)/lib/slitaz/trame
	install -m 0644 lib/trame-keyboard.sh $(DESTDIR)$(PREFIX)/lib/slitaz/trame
	install -m 0644 lib/trame-mirror.sh   $(DESTDIR)$(PREFIX)/lib/slitaz/trame

install-share:
	install -m 0755 -d $(DESTDIR)$(PREFIX)/share/trame/schemas
	install -m 0644 share/trame/schemas/*.json \
		$(DESTDIR)$(PREFIX)/share/trame/schemas

install-conf:
	install -m 0755 -d $(DESTDIR)/etc/slitaz
	install -m 0644 etc/slitaz/trame.conf $(DESTDIR)/etc/slitaz/trame.conf
	install -m 0755 -d $(DESTDIR)/etc/slitaz/trame.d/hooks

install-doc:
	install -m 0755 -d $(DESTDIR)$(PREFIX)/share/doc/trame
	install -m 0644 doc/*.md $(DESTDIR)$(PREFIX)/share/doc/trame 2>/dev/null || true

install: install-bin install-lib install-share install-conf install-doc

# Clean

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

.PHONY: all help test pot msgmerge msgfmt install install-bin install-lib \
	install-share install-conf install-doc clean tui install-tui clean-tui
