VALAC = valac
PACKAGES = --pkg gtk+-3.0 --pkg cairo --pkg pangocairo --pkg gio-2.0 --pkg gee-0.8
VALA_FLAGS = -X -lm -X -Wno-incompatible-pointer-types -X -Wno-deprecated-declarations -X -Wno-discarded-qualifiers -X -Wno-unused-variable -X -Wno-unused-function -X -Wno-unused-but-set-variable -X -Wno-unused-result

TARGET_EYECANDY = tech-hud-eyecandy
TARGET_RIPPLES = tech-hud-ripples
TARGETS = $(TARGET_EYECANDY) $(TARGET_RIPPLES)

VALA_SOURCES_EYECANDY = tech_hud_eyecandy.vala
VALA_SOURCES_RIPPLES = tech_hud_ripples.vala

DESKTOP_EYECANDY = $(TARGET_EYECANDY).desktop
DESKTOP_RIPPLES = $(TARGET_RIPPLES).desktop
DESKTOPS = $(DESKTOP_EYECANDY) $(DESKTOP_RIPPLES)

DOCS = README.txt
LICENSE = COPYING
VERSION = 1.0.0
PREFIX ?= /usr/local
DESTDIR ?=
BINDIR = $(PREFIX)/bin
DATADIR = $(PREFIX)/share
DOCDIR = $(DATADIR)/doc/$(TARGET_EYECANDY)

all: $(TARGETS) $(DESKTOPS)

$(TARGET_EYECANDY): $(VALA_SOURCES_EYECANDY)
	$(VALAC) $(PACKAGES) $(VALA_SOURCES_EYECANDY) -o $(TARGET_EYECANDY) $(VALA_FLAGS)

$(TARGET_RIPPLES): $(VALA_SOURCES_RIPPLES)
	$(VALAC) $(PACKAGES) $(VALA_SOURCES_RIPPLES) -o $(TARGET_RIPPLES) $(VALA_FLAGS)

tech-hud-ripples: $(TARGET_RIPPLES)

$(DESKTOP_EYECANDY): Makefile
	printf '%s\n' '[Desktop Entry]' 'Name=Tech HUD Eyecandy' 'Comment=Futuristic HUD Eyecandy Window Manager' 'Exec=$(TARGET_EYECANDY)' 'Terminal=false' 'Type=Application' 'Categories=Utility;' 'Icon=applications-graphics' > $@

$(DESKTOP_RIPPLES): Makefile
	printf '%s\n' '[Desktop Entry]' 'Name=Tech HUD Ripples' 'Comment=Water ripple simulation HUD overlay' 'Exec=$(TARGET_RIPPLES)' 'Terminal=false' 'Type=Application' 'Categories=Utility;' 'Icon=applications-graphics' > $@

install: all
	install -Dm755 $(TARGET_EYECANDY) $(DESTDIR)$(BINDIR)/$(TARGET_EYECANDY)
	install -Dm755 $(TARGET_RIPPLES) $(DESTDIR)$(BINDIR)/$(TARGET_RIPPLES)
	install -Dm644 $(DESKTOP_EYECANDY) $(DESTDIR)$(DATADIR)/applications/$(DESKTOP_EYECANDY)
	install -Dm644 $(DESKTOP_RIPPLES) $(DESTDIR)$(DATADIR)/applications/$(DESKTOP_RIPPLES)
	install -Dm644 $(DOCS) $(DESTDIR)$(DOCDIR)/$(DOCS)

uninstall:
	rm -f $(DESTDIR)$(BINDIR)/$(TARGET_EYECANDY)
	rm -f $(DESTDIR)$(BINDIR)/$(TARGET_RIPPLES)
	rm -f $(DESTDIR)$(DATADIR)/applications/$(DESKTOP_EYECANDY)
	rm -f $(DESTDIR)$(DATADIR)/applications/$(DESKTOP_RIPPLES)
	rm -f $(DESTDIR)$(DOCDIR)/$(DOCS)

clean:
	rm -f $(TARGETS) $(DESKTOPS)
	rm -rf deb-build *.deb *.tar.gz $(TARGET_EYECANDY)-$(VERSION)

# source tarball with all needed files
source: clean $(DESKTOPS)
	mkdir -p $(TARGET_EYECANDY)-$(VERSION)
	cp $(VALA_SOURCES_EYECANDY) $(VALA_SOURCES_RIPPLES) Makefile $(DOCS) $(DESKTOPS) $(TARGET_EYECANDY)-$(VERSION)/
	@if [ -f COPYING ]; then cp COPYING $(TARGET_EYECANDY)-$(VERSION)/; fi
	tar czf $(TARGET_EYECANDY)-$(VERSION).tar.gz $(TARGET_EYECANDY)-$(VERSION)
	rm -rf $(TARGET_EYECANDY)-$(VERSION)
	@echo "Created $(TARGET_EYECANDY)-$(VERSION).tar.gz"

# Debian package
deb: all
	rm -rf deb-build
	mkdir -p deb-build/DEBIAN
	mkdir -p deb-build$(BINDIR)
	mkdir -p deb-build$(DATADIR)/applications
	mkdir -p deb-build$(DOCDIR)
	cp $(TARGET_EYECANDY) deb-build$(BINDIR)/
	cp $(TARGET_RIPPLES) deb-build$(BINDIR)/
	cp $(DESKTOP_EYECANDY) deb-build$(DATADIR)/applications/
	cp $(DESKTOP_RIPPLES) deb-build$(DATADIR)/applications/
	cp $(DOCS) deb-build$(DOCDIR)/
	printf '%s\n' 'Package: $(TARGET_EYECANDY)' 'Version: $(VERSION)' 'Section: utils' 'Priority: optional' 'Architecture: amd64' 'Depends: libgtk-3-0, libcairo2, libpango-1.0-0, libgee-0.8-2' 'Maintainer: Mark Ulrich <mark@example.com>' 'Description: Futuristic HUD eyecandy overlay windows' ' Two programs: tech-hud-eyecandy (lightweight starfield/data/crawlers)' ' and tech-hud-ripples (water ripple simulation with raindrops, mouse trail,' ' subsurface drift and shoreline waves).' ' License: GPL v2 or later.' > deb-build/DEBIAN/control
	dpkg-deb --build deb-build $(TARGET_EYECANDY)_$(VERSION)_amd64.deb
	@echo "Created $(TARGET_EYECANDY)_$(VERSION)_amd64.deb"

# alias for compatibility
dist: source

.PHONY: all clean install uninstall dist source deb tech-hud-ripples
