.POSIX:
.SUFFIXES:
HARE=hare
HAREFLAGS=
PREFIX=/usr/local
SRCDIR=$(PREFIX)/src
BINDIR=$(PREFIX)/bin
HARESRCDIR=$(SRCDIR)/hare
THIRDPARTYDIR=$(HARESRCDIR)/third-party

WAYLAND_XML=$(shell pkg-config --variable=pkgdatadir wayland-client)/wayland.xml
WAYLAND_PROTOS_XML=$(shell pkg-config --variable=pkgdatadir wayland-protocols)/

all: hare-wlscanner wayland/wl/wayland.ha wayland/xdg/xdg_shell.ha

clean:
	rm -f hare-wlscanner wayland/wl/protocol.ha

wayland/wl/wayland.ha: hare-wlscanner
	@test -e "$(WAYLAND_XML)" || ( echo "error: wayland.xml not found" && false )
	mkdir -p wayland/wl
	./hare-wlscanner < "$(WAYLAND_XML)" > $@

wayland/xdg/xdg_shell.ha: hare-wlscanner
	@test -e "$(WAYLAND_PROTOS_XML)" || ( echo "error: wayland-protocols not found" && false )
	mkdir -p wayland/xdg
	./hare-wlscanner < "$(WAYLAND_PROTOS_XML)"/stable/xdg-shell/xdg-shell.xml > $@

generate: wayland/wl/wayland.ha wayland/xdg/xdg_shell.ha

hare-wlscanner: cmd/scanner/main.ha
	hare build $(HAREFLAGS) -o $@ $<

check:
	hare test

install: hare-wlscanner wayland/wl/wayland.ha
	mkdir -p $(DESTDIR)$(THIRDPARTYDIR)/wayland/client
	mkdir -p $(DESTDIR)$(THIRDPARTYDIR)/wayland/scanner
	mkdir -p $(DESTDIR)$(THIRDPARTYDIR)/wayland/wl
	install -m644 wayland/client/*.ha $(DESTDIR)$(THIRDPARTYDIR)/wayland/client
	install -m644 wayland/scanner/*.ha $(DESTDIR)$(THIRDPARTYDIR)/wayland/scanner
	install -m644 wayland/wl/*.ha $(DESTDIR)$(THIRDPARTYDIR)/wayland/wl
	install -m644 wayland/*.ha $(DESTDIR)$(THIRDPARTYDIR)/wayland
	mkdir -p $(DESTDIR)$(BINDIR)
	install -m755 hare-wlscanner $(DESTDIR)$(BINDIR)

uninstall:
	rm -rf $(DESTDIR)$(THIRDPARTYDIR)/wayland
	rm -f $(DESTDIR)$(BINDIR)/hare-wlscanner

.PHONY: all clean generate hare-wlscanner check
