.POSIX:
.SUFFIXES:
HARE=hare
HAREFLAGS=
HAREDOC=haredoc

DESTDIR=
PREFIX=/usr/local
SRCDIR=$(PREFIX)/src
HARESRCDIR=$(SRCDIR)/hare
THIRDPARTYDIR=$(HARESRCDIR)/third-party

%_templategen.ha: %.ha hare-gentmpl
	./hare-gentmpl $<

# validate changes
test_gen/%_templategen.ha.exp: test_gen/%_templategen.ha
	cp $^ $@

hare-gentmpl:
	$(HARE) build -o $@ cmd/hare-gentmpl/
.PHONY: hare-gentmpl

test_gen: hare-gentmpl
	rm -f test_gen/*_templategen.ha
	./hare-gentmpl test_gen/
.PHONY: test_gen

check: test_gen
	./checks.sh
	$(HARE) test

clean:
	rm -rf docs

docs:

install: hare-gentmpl uninstall
	mkdir -p "$(DESTDIR)$(PREFIX)"/libexec/hare
	install -m755 hare-gentmpl "$(DESTDIR)$(PREFIX)"/libexec/hare

	mkdir -p "$(DESTDIR)$(THIRDPARTYDIR)"/template/lex
	mkdir -p "$(DESTDIR)$(THIRDPARTYDIR)"/template/parse
	mkdir -p "$(DESTDIR)$(THIRDPARTYDIR)"/template/sanitize/html
	install -m644 template/lex/*.ha "$(DESTDIR)$(THIRDPARTYDIR)"/template/lex
	install -m644 template/parse/*.ha "$(DESTDIR)$(THIRDPARTYDIR)"/template/parse
	install -m644 template/sanitize/README "$(DESTDIR)$(THIRDPARTYDIR)"/template/sanitize/README
	install -m644 template/sanitize/*.ha "$(DESTDIR)$(THIRDPARTYDIR)"/template/sanitize
	install -m644 template/sanitize/html/*.ha "$(DESTDIR)$(THIRDPARTYDIR)"/template/sanitize/html

	mkdir -p "$(DESTDIR)$(THIRDPARTYDIR)"/streams/prefix
	install -m644 streams/prefix/README "$(DESTDIR)$(THIRDPARTYDIR)"/streams/prefix
	install -m644 streams/prefix/*.ha "$(DESTDIR)$(THIRDPARTYDIR)"/streams/prefix
	install -m644 streams/README "$(DESTDIR)$(THIRDPARTYDIR)"/streams

uninstall:
	rm -f "$(DESTDIR)$(PREFIX)"/libexec/hare/hare-gentmpl
	rm -rf "$(DESTDIR)$(THIRDPARTYDIR)"/template
	rm -rf "$(DESTDIR)$(THIRDPARTYDIR)"/streams

.PHONY: all docs clean check install uninstall
