VALAC = valac
PACKAGES = --pkg gtk+-3.0 --pkg cairo --pkg pangocairo --pkg gio-2.0 --pkg gee-0.8 --pkg librsvg-2.0
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 = types.vala defender.vala bond_dancer.vala synthwave_sun.vala digital_clock.vala analog_clock.vala weather_effect.vala date_widget.vala hud_window.vala dialogs.vala app.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.2.0
ARCH ?= $(shell uname -m)

# Map architecture names for Debian standards (amd64 instead of x86_64)
DEB_ARCH = $(ARCH)
ifeq ($(DEB_ARCH),x86_64)
  DEB_ARCH = amd64
endif
ifeq ($(DEB_ARCH),i686)
  DEB_ARCH = i386
endif

PREFIX ?= /usr/local
DESTDIR ?=
BINDIR = $(PREFIX)/bin
DATADIR = $(PREFIX)/share
DOCDIR = $(DATADIR)/doc/$(TARGET_EYECANDY)
SHAREDIR = $(DATADIR)/$(TARGET_EYECANDY)

.SUFFIXES:

all: $(TARGETS) $(DESKTOPS)

$(TARGET_EYECANDY): $(VALA_SOURCES_EYECANDY)
	$(VALAC) $(PACKAGES) $^ -o $@ $(VALA_FLAGS)
	strip $@

$(TARGET_RIPPLES): $(VALA_SOURCES_RIPPLES)
	$(VALAC) $(PACKAGES) $^ -o $@ $(VALA_FLAGS)
	strip $@

tech-hud-ripples: $(TARGET_RIPPLES)

pet: all
	rm -rf pet-build
	mkdir -p pet-build/usr/bin
	mkdir -p pet-build/usr/share/applications
	mkdir -p pet-build/usr/share/doc/tech-hud-eyecandy
	mkdir -p pet-build/usr/share/tech-hud-eyecandy
	cp $(TARGET_EYECANDY) pet-build/usr/bin/
	cp $(TARGET_RIPPLES) pet-build/usr/bin/
	cp $(DESKTOP_EYECANDY) pet-build/usr/share/applications/
	cp $(DESKTOP_RIPPLES) pet-build/usr/share/applications/
	cp $(DOCS) pet-build/usr/share/doc/tech-hud-eyecandy/
	if [ -f marble-tile.jpg ]; then cp marble-tile.jpg pet-build/usr/share/tech-hud-eyecandy/; fi
	if [ -f dancer.svg ]; then cp dancer.svg pet-build/usr/share/tech-hud-eyecandy/; fi
	cd pet-build && tar czf ../$(TARGET_EYECANDY)-$(VERSION)-$(ARCH).pet usr/
	rm -rf pet-build
	@echo "Created Puppy Linux package: $(TARGET_EYECANDY)-$(VERSION)-$(ARCH).pet"

$(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)
	if [ -f marble-tile.jpg ]; then install -Dm644 marble-tile.jpg $(DESTDIR)$(SHAREDIR)/marble-tile.jpg; fi
	if [ -f dancer.svg ]; then install -Dm644 dancer.svg $(DESTDIR)$(SHAREDIR)/dancer.svg; fi

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)
	rm -f $(DESTDIR)$(SHAREDIR)/marble-tile.jpg
	rm -f $(DESTDIR)$(SHAREDIR)/dancer.svg
	rmdir -p $(DESTDIR)$(SHAREDIR) || true

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

# source tarball with explicit -source naming
source: all
	mkdir -p $(TARGET_EYECANDY)-$(VERSION)-source
	cp $(VALA_SOURCES_EYECANDY) $(VALA_SOURCES_RIPPLES) Makefile dancer.svg marble-tile.jpg glass.jpg $(DOCS) $(DESKTOPS) $(TARGET_EYECANDY)-$(VERSION)-source/
	@if [ -f COPYING ]; then cp COPYING $(TARGET_EYECANDY)-$(VERSION)-source/; fi
	tar czf $(TARGET_EYECANDY)-$(VERSION)-source.tar.gz $(TARGET_EYECANDY)-$(VERSION)-source
	rm -rf $(TARGET_EYECANDY)-$(VERSION)-source
	@echo "Created source archive: $(TARGET_EYECANDY)-$(VERSION)-source.tar.gz"

# Debian package with standard architecture
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)
	mkdir -p deb-build$(SHAREDIR)
	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)/
	if [ -f marble-tile.jpg ]; then cp marble-tile.jpg deb-build$(SHAREDIR)/; fi
	if [ -f dancer.svg ]; then cp dancer.svg deb-build$(SHAREDIR)/; fi
	printf '%s\n' 'Package: $(TARGET_EYECANDY)' 'Version: $(VERSION)' 'Section: utils' 'Priority: optional' 'Architecture: $(DEB_ARCH)' 'Depends: libgtk-3-0, libcairo2, libpango-1.0-0, libgee-0.8-2, librsvg2-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)_$(DEB_ARCH).deb
	@echo "Created Debian package: $(TARGET_EYECANDY)_$(VERSION)_$(DEB_ARCH).deb"

# alias for compatibility
dist: source

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