.SUFFIXES:
VALAC ?= valac
MSGFMT ?= msgfmt
PACKAGES = --pkg gtk+-3.0 --pkg cairo --pkg pangocairo --pkg gio-2.0 --pkg gio-unix-2.0 --pkg json-glib-1.0
TARGET = tech_hud_menu
SOURCES = src/app_cache.vala 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 ar he
PO_FILES = $(wildcard po/*.po)
SRC_FILES = $(wildcard src/*.vala)
LOCALE_MOS = $(foreach language,$(LANGUAGES),locale/$(language)/LC_MESSAGES/$(DOMAIN).mo)
PACKAGE = tech-hud-menu
VERSION ?= 1.2.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 pet-build *.deb *.pet *.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.txt marble-tile.jpg $(DESKTOP) $(PACKAGE)-$(VERSION)/
	mkdir -p $(PACKAGE)-$(VERSION)/po
	cp $(PO_FILES) $(PACKAGE)-$(VERSION)/po/
	mkdir -p $(PACKAGE)-$(VERSION)/src
	cp $(SRC_FILES) $(PACKAGE)-$(VERSION)/src/
	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

pet64: all
	rm -rf pet-build
	mkdir -p pet-build/usr/bin
	mkdir -p pet-build/usr/share/applications
	mkdir -p pet-build/usr/share/$(TARGET)
	install -Dm755 $(TARGET) pet-build/usr/bin/$(TARGET)
	if [ -f marble-tile.jpg ]; then install -Dm644 marble-tile.jpg pet-build/usr/share/$(TARGET)/marble-tile.jpg; fi
	install -Dm644 $(DESKTOP) pet-build/usr/share/applications/$(DESKTOP)
	for language in $(LANGUAGES); do \
		if [ -f locale/$$language/LC_MESSAGES/$(DOMAIN).mo ]; then \
			install -Dm644 locale/$$language/LC_MESSAGES/$(DOMAIN).mo pet-build/usr/share/locale/$$language/LC_MESSAGES/$(DOMAIN).mo; \
		fi; \
	done
	cd pet-build && tar -czf ../$(PACKAGE)_$(VERSION)_amd64.tar.gz .
	mv $(PACKAGE)_$(VERSION)_amd64.tar.gz $(PACKAGE)_$(VERSION)_amd64.pet
	md5sum $(PACKAGE)_$(VERSION)_amd64.pet | awk '{print $$1}' >> $(PACKAGE)_$(VERSION)_amd64.pet
	rm -rf pet-build
	@echo "PET package created: $(PACKAGE)_$(VERSION)_amd64.pet"

.PHONY: all clean install source deb pet64 translations
