.SUFFIXES:
CC = valac
TARGET = mu-wetter
VERSION = 1.0
SRC = mu-wetter-gui.vala mu-wetter-logic.vala wetter-api.vala wetter-config.vala wetter-main.vala

VALAFLAGS = -C --pkg gtk+-3.0 --pkg libsoup-2.4 --pkg json-glib-1.0
PKGS = gtk+-3.0 libsoup-2.4 json-glib-1.0
INCLUDES = $(shell pkg-config --cflags $(PKGS))
LIBS = $(shell pkg-config --libs $(PKGS))

# Automatic architecture detection
ARCH := $(shell uname -m)

ifeq ($(ARCH), x86_64)
    ARCH_FLAGS = -m64
    ARCH_NAME = amd64
    PET_ARCH = amd64
else
    ARCH_FLAGS = -m32
    ARCH_NAME = i386
    PET_ARCH = i486
endif

all: $(TARGET)

$(TARGET): $(SRC)
	$(CC) $(VALAFLAGS) $(SRC)
	gcc mu-wetter-gui.c mu-wetter-logic.c wetter-api.c wetter-config.c wetter-main.c -o $(TARGET) $(ARCH_FLAGS) $(INCLUDES) $(LIBS)
	rm -f mu-wetter-gui.c mu-wetter-logic.c wetter-api.c wetter-config.c wetter-main.c

desktop:
	@echo "[Desktop Entry]" > $(TARGET).desktop
	@echo "Name=MU-Wetter" >> $(TARGET).desktop
	@echo "Comment=International Weather Station for Puppy Linux" >> $(TARGET).desktop
	@echo "Exec=$(TARGET)" >> $(TARGET).desktop
	@echo "Icon=weather-severe-alert" >> $(TARGET).desktop
	@echo "Terminal=false" >> $(TARGET).desktop
	@echo "Type=Application" >> $(TARGET).desktop
	@echo "Categories=Utility;" >> $(TARGET).desktop

install: $(TARGET) desktop
	mkdir -p /etc/mu-wetter
	cp languages.rc /etc/mu-wetter/
	cp $(TARGET) /usr/bin/
	mkdir -p /usr/share/applications
	cp $(TARGET).desktop /usr/share/applications/
	-fixmenus
	-jwm -reload

uninstall:
	rm -rf /etc/mu-wetter
	rm -f /usr/bin/$(TARGET)
	rm -f /usr/share/applications/$(TARGET).desktop
	-fixmenus
	-jwm -reload

dist: desktop
	mkdir -p $(TARGET)-$(VERSION)
	cp $(SRC) languages.rc Makefile $(TARGET).desktop $(TARGET)-$(VERSION)/
	tar -czf $(TARGET)-$(VERSION).tar.gz $(TARGET)-$(VERSION)
	rm -rf $(TARGET)-$(VERSION)


deb: $(TARGET) desktop
	@echo "Building DEB package for $(ARCH_NAME)..."
	mkdir -p deby/usr/bin deby/usr/share/applications deby/etc/mu-wetter deby/DEBIAN
	cp $(TARGET) deby/usr/bin/
	cp $(TARGET).desktop deby/usr/share/applications/
	cp languages.rc deby/etc/mu-wetter/
	@echo "Package: $(TARGET)" > deby/DEBIAN/control
	@echo "Version: $(VERSION)" >> deby/DEBIAN/control
	@echo "Architecture: $(ARCH_NAME)" >> deby/DEBIAN/control
	@echo "Maintainer: root@puppy" >> deby/DEBIAN/control
	@echo "Description: Weather monitor with metrics and international languages" >> deby/DEBIAN/control
	@echo "#!/bin/sh" > deby/DEBIAN/postinst
	@echo "fixmenus; jwm -reload" >> deby/DEBIAN/postinst
	chmod +x deby/DEBIAN/postinst
	dpkg-deb --build deby $(TARGET)_$(VERSION)_$(ARCH_NAME).deb
	rm -rf deby

pet: $(TARGET) desktop
	@echo "Building PET package for $(PET_ARCH)..."
	mkdir -p mu-wetter-$(VERSION)-$(PET_ARCH)/usr/bin mu-wetter-$(VERSION)-$(PET_ARCH)/usr/share/applications mu-wetter-$(VERSION)-$(PET_ARCH)/etc/mu-wetter
	cp $(TARGET) mu-wetter-$(VERSION)-$(PET_ARCH)/usr/bin/
	cp $(TARGET).desktop mu-wetter-$(VERSION)-$(PET_ARCH)/usr/share/applications/
	cp languages.rc mu-wetter-$(VERSION)-$(PET_ARCH)/etc/mu-wetter/
	@echo "#!/bin/sh" > mu-wetter-$(VERSION)-$(PET_ARCH)/pinstall.sh
	@echo "fixmenus; jwm -reload" >> mu-wetter-$(VERSION)-$(PET_ARCH)/pinstall.sh
	chmod +x mu-wetter-$(VERSION)-$(PET_ARCH)/pinstall.sh
	tar -czf mu-wetter-$(VERSION)-$(PET_ARCH).tar.gz mu-wetter-$(VERSION)-$(PET_ARCH)
	md5sum mu-wetter-$(VERSION)-$(PET_ARCH).tar.gz | { read -r md5 _; echo -n "$$md5"; } >> mu-wetter-$(VERSION)-$(PET_ARCH).tar.gz
	mv mu-wetter-$(VERSION)-$(PET_ARCH).tar.gz mu-wetter-$(VERSION)-$(PET_ARCH).pet
	rm -rf mu-wetter-$(VERSION)-$(PET_ARCH)

clean:
	rm -f $(TARGET) *.desktop *.tar.gz *.deb *.pet
	rm -f mu-wetter-gui.c mu-wetter-logic.c wetter-api.c wetter-config.c wetter-main.c
	rm -rf deby

.PHONY: all clean deb pet desktop install uninstall
