# Package metadata
PKG_NAME    := space-invaders
VERSION     := 1.0.0
ARCH        := $(shell dpkg --print-architecture 2>/dev/null || echo "amd64")
PREFIX      := /usr/local

# Compiler flags & dependencies (-X passes flags directly to C compiler)
VALAC       := valac
VALAFLAGS   := --pkg gtk+-3.0 --pkg cairo --pkg gdk-3.0 -X -O2
SOURCES     := space_invaders.vala
TARGET      := $(PKG_NAME)

.PHONY: all clean install uninstall source deb

all: $(TARGET)

$(TARGET): $(SOURCES)
	$(VALAC) $(VALAFLAGS) $(SOURCES) -o $(TARGET)

clean:
	rm -f $(TARGET)
	rm -rf $(PKG_NAME)-$(VERSION)
	rm -f $(PKG_NAME)-$(VERSION).tar.gz
	rm -rf $(PKG_NAME)_$(VERSION)_$(ARCH)
	rm -f $(PKG_NAME)_$(VERSION)_$(ARCH).deb

install: $(TARGET)
	install -d $(DESTDIR)$(PREFIX)/bin
	install -m 755 $(TARGET) $(DESTDIR)$(PREFIX)/bin/$(TARGET)
	install -d $(DESTDIR)$(PREFIX)/share/applications
	install -m 644 $(PKG_NAME).desktop $(DESTDIR)$(PREFIX)/share/applications/$(PKG_NAME).desktop
	install -d $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps
	@if [ -f icon.svg ]; then \
		install -m 644 icon.svg $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/$(PKG_NAME).svg; \
	fi

uninstall:
	rm -f $(DESTDIR)$(PREFIX)/bin/$(TARGET)
	rm -f $(DESTDIR)$(PREFIX)/share/applications/$(PKG_NAME).desktop
	rm -f $(DESTDIR)$(PREFIX)/share/icons/hicolor/scalable/apps/$(PKG_NAME).svg

source: clean
	mkdir -p $(PKG_NAME)-$(VERSION)
	cp -r $(SOURCES) Makefile README.md $(PKG_NAME).desktop $(wildcard *.svg) $(PKG_NAME)-$(VERSION)/
	tar -czvf $(PKG_NAME)-$(VERSION).tar.gz $(PKG_NAME)-$(VERSION)
	rm -rf $(PKG_NAME)-$(VERSION)
	@echo "Source tarball created: $(PKG_NAME)-$(VERSION).tar.gz"

deb: all
	$(eval DEB_DIR := $(PKG_NAME)_$(VERSION)_$(ARCH))
	rm -rf $(DEB_DIR)
	install -d $(DEB_DIR)/DEBIAN
	install -d $(DEB_DIR)/usr/bin
	install -d $(DEB_DIR)/usr/share/applications
	install -d $(DEB_DIR)/usr/share/icons/hicolor/scalable/apps

	install -m 755 $(TARGET) $(DEB_DIR)/usr/bin/$(TARGET)
	install -m 644 $(PKG_NAME).desktop $(DEB_DIR)/usr/share/applications/$(PKG_NAME).desktop
	@if [ -f icon.svg ]; then \
		install -m 644 icon.svg $(DEB_DIR)/usr/share/icons/hicolor/scalable/apps/$(PKG_NAME).svg; \
	fi

	@echo "Package: $(PKG_NAME)" > $(DEB_DIR)/DEBIAN/control
	@echo "Version: $(VERSION)" >> $(DEB_DIR)/DEBIAN/control
	@echo "Section: games" >> $(DEB_DIR)/DEBIAN/control
	@echo "Priority: optional" >> $(DEB_DIR)/DEBIAN/control
	@echo "Architecture: $(ARCH)" >> $(DEB_DIR)/DEBIAN/control
	@echo "Maintainer: Vala Game Developer <developer@localhost>" >> $(DEB_DIR)/DEBIAN/control
	@echo "Depends: libgtk-3-0, libcairo2, libglib2.0-0" >> $(DEB_DIR)/DEBIAN/control
	@echo "Description: Retro Arcade Space Invaders Game in Vala/GTK3" >> $(DEB_DIR)/DEBIAN/control
	@echo " Lightweight, standalone vector arcade game rendered with GTK3 and Cairo." >> $(DEB_DIR)/DEBIAN/control

	dpkg-deb --build $(DEB_DIR)
	rm -rf $(DEB_DIR)
	@echo "Debian package built: $(DEB_DIR).deb"