.SUFFIXES:
VALAC ?= valac
MSGFMT ?= msgfmt
PACKAGES = --pkg gtk+-3.0 --pkg cairo --pkg pangocairo --pkg gio-2.0 --pkg gio-unix-2.0
TARGET = tech_hud_menu
SOURCES = src/app_item.vala src/hud_renderer.vala src/options_dialog.vala src/tech_hud_menu.vala src/theme_manager.vala
DESKTOP = $(TARGET).desktop
DOMAIN = $(TARGET)
LANGUAGES ?= de fr ru zh_CN ja es sw it pt_BR nl ko
PO_FILES = $(wildcard po/*.po)
LOCALE_MOS = $(foreach language,$(LANGUAGES),locale/$(language)/LC_MESSAGES/$(DOMAIN).mo)
PACKAGE = tech-hud-menu
VERSION ?= 1.1.0
PREFIX ?= /usr/local
DESTDIR ?=
DATADIR = $(PREFIX)/share
DOCDIR = $(DATADIR)/doc/$(TARGET)
SHAREDIR = $(DATADIR)/$(TARGET)

all: $(TARGET) $(DESKTOP) $(LOCALE_MOS)

$(TARGET): $(SOURCES) Makefile
	$(VALAC) $(PACKAGES) $(SOURCES) -o $(TARGET) -X -lm -X -DGETTEXT_PACKAGE=\"tech_hud_menu\" -X -Wno-incompatible-pointer-types -X -Wno-discarded-qualifiers

locale/%/LC_MESSAGES/$(DOMAIN).mo: po/%.po
	mkdir -p $(dir $@)
	$(MSGFMT) --check -o $@ $<

$(DESKTOP): Makefile
	printf '%s\n' '[Desktop Entry]' 'Name=Tech HUD Menu' 'Comment=Application launcher and menu' 'Exec=$(TARGET)' 'Terminal=false' 'Type=Application' 'Categories=Utility;' > $@

translations: $(LOCALE_MOS)

clean:
	rm -f $(TARGET) $(DESKTOP)
	rm -f $(LOCALE_MOS)
	rm -rf deb-build *.deb *.tar.gz $(PACKAGE)-$(VERSION)

install: $(TARGET) $(DESKTOP) $(LOCALE_MOS)
	install -Dm755 $(TARGET) $(DESTDIR)$(PREFIX)/bin/$(TARGET)
	if [ -f marble-tile.jpg ]; then install -Dm644 marble-tile.jpg $(DESTDIR)$(PREFIX)/share/$(TARGET); fi
	install -Dm644 $(DESKTOP) $(DESTDIR)$(PREFIX)/share/applications/$(DESKTOP)
	for language in $(LANGUAGES); do install -Dm644 locale/$$language/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(PREFIX)/share/locale/$$language/LC_MESSAGES/$(DOMAIN).mo; done

source: $(DESKTOP) $(PO_FILES)
	mkdir -p $(PACKAGE)-$(VERSION)
	cp $(SOURCE) Makefile README.md marble-tile.jpg $(DESKTOP) $(PACKAGE)-$(VERSION)/
	mkdir -p $(PACKAGE)-$(VERSION)/po
	cp $(PO_FILES) $(PACKAGE)-$(VERSION)/po/
	tar -czf $(PACKAGE)_$(VERSION).orig.tar.gz $(PACKAGE)-$(VERSION)
	rm -rf $(PACKAGE)-$(VERSION)
	@echo "Source tarball created: $(PACKAGE)_$(VERSION).orig.tar.gz"

deb: all
	mkdir -p deb-build/DEBIAN
	mkdir -p deb-build$(PREFIX)/bin
	mkdir -p deb-build$(PREFIX)/share/applications
	for language in $(LANGUAGES); do mkdir -p deb-build$(PREFIX)/share/locale/$$language/LC_MESSAGES; cp locale/$$language/LC_MESSAGES/$(DOMAIN).mo deb-build$(PREFIX)/share/locale/$$language/LC_MESSAGES/$(DOMAIN).mo; done
	cp $(TARGET) deb-build$(PREFIX)/bin/
	cp $(DESKTOP) deb-build$(PREFIX)/share/applications/
	if [ -f marble-tile.jpg ]; then cp marble-tile.jpg deb-build$(PREFIX)/share/; fi
	@echo "Package: $(PACKAGE)" > deb-build/DEBIAN/control
	@echo "Version: $(VERSION)-1" >> deb-build/DEBIAN/control
	@echo "Section: x11" >> deb-build/DEBIAN/control
	@echo "Priority: optional" >> deb-build/DEBIAN/control
	@echo "Architecture: $(shell dpkg --print-architecture)" >> deb-build/DEBIAN/control
	@echo "Maintainer: Local Dev <dev@local>" >> deb-build/DEBIAN/control
	@echo "Description: Standalone Vala/GTK3 application launcher and menu" >> deb-build/DEBIAN/control
	dpkg-deb --build deb-build $(PACKAGE)_$(VERSION)-1_$(shell dpkg --print-architecture).deb
	rm -rf deb-build

.PHONY: all clean install source deb translations
