.SUFFIXES:
CC = valac
TARGET = mu-wetter
VERSION = 1.1.1
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-3.0 --pkg json-glib-1.0
PKGS = gtk+-3.0 libsoup-3.0 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 "Name[de]=MU-Wetter" >> $(TARGET).desktop
	@echo "Name[fr]=Météo MU" >> $(TARGET).desktop
	@echo "Name[es]=Meteorología MU" >> $(TARGET).desktop
	@echo "Name[ru]=MU-Погода" >> $(TARGET).desktop
	@echo "Name[zh]=MU天气" >> $(TARGET).desktop
	@echo "Name[hi]=MU-मौसम" >> $(TARGET).desktop
	@echo "Name[ar]=طقس MU" >> $(TARGET).desktop
	@echo "Name[bn]=MU-আবহাওয়া" >> $(TARGET).desktop
	@echo "Name[pt]=MU-Clima" >> $(TARGET).desktop
	@echo "Name[ja]=MU天気" >> $(TARGET).desktop
	@echo "Name[sw]=Hali ya Hewa MU" >> $(TARGET).desktop
	@echo "Comment=International Weather Station for Puppy Linux and Linux" >> $(TARGET).desktop
	@echo "Comment[de]=Internationale Wetterstation für Puppy Linux und Linux" >> $(TARGET).desktop
	@echo "Comment[fr]=Station météorologique internationale pour Puppy Linux et Linux" >> $(TARGET).desktop
	@echo "Comment[es]=Estación meteorológica internacional para Puppy Linux y Linux" >> $(TARGET).desktop
	@echo "Comment[ru]=Международная метеостанция для Puppy Linux и Linux" >> $(TARGET).desktop
	@echo "Comment[zh]=Puppy Linux 和 Linux 的国际气象站" >> $(TARGET).desktop
	@echo "Comment[hi]=पप्पी लिनक्स और लिनक्स के लिए अंतर्राष्ट्रीय मौसम स्टेशन" >> $(TARGET).desktop
	@echo "Comment[ar]=محطة الطقس الدولية لـ Puppy Linux و Linux" >> $(TARGET).desktop
	@echo "Comment[bn]=পাপ্পি লিনাক্স এবং লিনাক্সের জন্য আন্তর্জাতিক আবহাওয়া স্টেশন" >> $(TARGET).desktop
	@echo "Comment[pt]=Estação meteorológica internacional para Puppy Linux e Linux" >> $(TARGET).desktop
	@echo "Comment[ja]=Puppy LinuxおよびLinux用国際気象観測所" >> $(TARGET).desktop
	@echo "Comment[sw]=Kituo cha Kimataifa cha Hali ya Hewa cha Puppy Linux na 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;Network;" >> $(TARGET).desktop

install: $(TARGET) desktop
	mkdir -p /etc/mu-wetter
	cp languages.rc proxyinfo.txt proxyinfo_ru.txt /etc/mu-wetter/
	chmod 644 /etc/mu-wetter/*
	cp $(TARGET) /usr/bin/
	chmod 755 /usr/bin/$(TARGET)
	mkdir -p /usr/share/applications
	cp $(TARGET).desktop /usr/share/applications/
	chmod 644 /usr/share/applications/$(TARGET).desktop
	@if [ -n "$$SUDO_USER" ]; then chown "$$SUDO_USER": $(TARGET).desktop $(TARGET) 2>/dev/null || true; fi
	@if command -v fixmenus >/dev/null 2>&1; then fixmenus; fi
	@if command -v jwm >/dev/null 2>&1; then jwm -reload; fi

uninstall:
	rm -rf /etc/mu-wetter
	rm -f /usr/bin/$(TARGET)
	rm -f /usr/share/applications/$(TARGET).desktop
	@if command -v fixmenus >/dev/null 2>&1; then fixmenus; fi
	@if command -v jwm >/dev/null 2>&1; then jwm -reload; fi

user-install: $(TARGET) desktop
	mkdir -p $(HOME)/.local/bin
	mkdir -p $(HOME)/.local/share/applications
	mkdir -p $(HOME)/.mu-wetter
	cp $(TARGET) $(HOME)/.local/bin/
	cp $(TARGET).desktop $(HOME)/.local/share/applications/
	cp languages.rc proxyinfo.txt proxyinfo_ru.txt $(HOME)/.mu-wetter/
	chmod 755 $(HOME)/.local/bin/$(TARGET)
	chmod 644 $(HOME)/.local/share/applications/$(TARGET).desktop
	chmod 644 $(HOME)/.mu-wetter/*

user-uninstall:
	rm -f $(HOME)/.local/bin/$(TARGET)
	rm -f $(HOME)/.local/share/applications/$(TARGET).desktop
	rm -f $(HOME)/.mu-wetter/languages.rc $(HOME)/.mu-wetter/proxyinfo.txt $(HOME)/.mu-wetter/proxyinfo_ru.txt

dist: desktop
	mkdir -p $(TARGET)-$(VERSION)
	cp $(SRC) languages.rc proxyinfo.txt proxyinfo_ru.txt proxy-meteo.php proxy-nominatim.php Makefile $(TARGET).desktop $(TARGET)-$(VERSION)/
	tar -czf $(TARGET)-$(VERSION).tar.gz $(TARGET)-$(VERSION)
	rm -rf $(TARGET)-$(VERSION)

source: desktop
	@if command -v makepkg >/dev/null 2>&1; then \
		makepkg --printsrcinfo > .SRCINFO; \
	fi
	mkdir -p $(TARGET)-$(VERSION)-source
	cp $(SRC) languages.rc proxyinfo.txt proxyinfo_ru.txt proxy-meteo.php proxy-nominatim.php Makefile README.txt PKGBUILD .SRCINFO build-arch-pkg.sh $(TARGET).desktop $(TARGET)-$(VERSION)-source/
	tar -czf $(TARGET)-$(VERSION)-source.tar.gz $(TARGET)-$(VERSION)-source
	rm -rf $(TARGET)-$(VERSION)-source

srcinfo:
	makepkg --printsrcinfo > .SRCINFO

arch: source
	makepkg -si

archpkg:
	./build-arch-pkg.sh


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 proxyinfo.txt proxyinfo_ru.txt 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 "Depends: libgtk-3-0, libsoup-3.0-0, libjson-glib-1.0-0, libglib2.0-0" >> 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 proxyinfo.txt proxyinfo_ru.txt 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 user-install user-uninstall source arch archpkg srcinfo
