CC ?= gcc
CFLAGS ?= -O2 -g -Wall -Wextra
DESTDIR ?=
FILTERDIR ?= /usr/lib/cups/filter
PPDDIR ?= /usr/share/cups/model/Pantum
UDEVDIR ?= /lib/udev/rules.d
SANECONFDIR ?= /etc/sane.d
BINDIR ?= /usr/bin
HELPERDIR ?= /usr/share/printer-driver-pantum-m7100dw
MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null || echo x86_64-linux-gnu)
SANE_SOURCE_MULTIARCH ?= x86_64-linux-gnu
SANEDIR ?= /usr/lib/$(MULTIARCH)/sane

FILTER := pantum-m7100dw-ps-filter
SANE_BACKEND := libsane-pantum6500.so.1.0.24
DRIVERLESS_CHECK := pantum-m7100dw-driverless-scan-check

all: $(FILTER)

$(FILTER): pantum_m7100dw_ps_filter.c
	$(CC) $(CPPFLAGS) $(CFLAGS) -o $@ $<

install-print: $(FILTER)
	install -d "$(DESTDIR)$(FILTERDIR)"
	install -m 0755 "$(FILTER)" "$(DESTDIR)$(FILTERDIR)/$(FILTER)"
	ln -sf "$(FILTER)" "$(DESTDIR)$(FILTERDIR)/ptps"
	install -d "$(DESTDIR)$(PPDDIR)"
	find ppd -maxdepth 1 -type f -name '*.ppd' -exec install -m 0644 {} "$(DESTDIR)$(PPDDIR)" \;

install-sane:
	install -d "$(DESTDIR)$(UDEVDIR)"
	install -m 0644 "udev/60-pantum-m7100.rules" "$(DESTDIR)$(UDEVDIR)/60-pantum-m7100.rules"
	install -d "$(DESTDIR)$(SANECONFDIR)/dll.d"
	install -m 0644 "sane/pantum6500.conf" "$(DESTDIR)$(SANECONFDIR)/pantum6500.conf"
	install -m 0644 "sane/dll.d/pantum6500" "$(DESTDIR)$(SANECONFDIR)/dll.d/pantum6500"
	install -d "$(DESTDIR)$(SANEDIR)"
	install -m 0644 "sane/lib/$(SANE_SOURCE_MULTIARCH)/$(SANE_BACKEND)" "$(DESTDIR)$(SANEDIR)/$(SANE_BACKEND)"
	ln -sf "$(SANE_BACKEND)" "$(DESTDIR)$(SANEDIR)/libsane-pantum6500.so.1"
	ln -sf "$(SANE_BACKEND)" "$(DESTDIR)$(SANEDIR)/libsane-pantum6500.so"

install-driverless-scan:
	install -d "$(DESTDIR)$(BINDIR)"
	install -m 0755 "driverless-scan/$(DRIVERLESS_CHECK)" "$(DESTDIR)$(BINDIR)/$(DRIVERLESS_CHECK)"
	install -d "$(DESTDIR)$(HELPERDIR)"
	install -m 0644 "driverless-scan/README.md" "$(DESTDIR)$(HELPERDIR)/driverless-scan.md"

install: install-print install-sane install-driverless-scan

check: $(FILTER)
	python3 check_ps_passthrough.py

clean:
	rm -f "$(FILTER)"
	rm -rf build

.PHONY: all install install-print install-sane install-driverless-scan check clean
