.POSIX:
.SUFFIXES:
.SUFFIXES: .1 .5 .1.scd .5.scd

VPATH=doc
PREFIX?=/usr/local
BINDIR?=$(PREFIX)/bin
MANDIR?=$(PREFIX)/share/man

DOCS := $(addprefix target/man/,\
	fbihtax.1 \
	fbihtax-ams.1 \
	fbihtax-db-insert.1 \
	fbihtax-db-load.1 \
	fbihtax-gpd.1 \
	fbihtax-tax-breakdown.1 \
	fbihtax-client-config.5 \
	fbihtax-config.5 \
	fbihtax-user-config.5)

all: target/release/fbihtax $(DOCS)

target/release/fbihtax:
	cargo build --release

.PHONY: dev
dev:
	cargo build

.PHONY: fmt
fmt:
	cargo fmt

.PHONY: lint
lint:
	cargo clippy

.PHONY: test
test:
	cargo test

target/man/%.1: doc/%.1.scd
	@mkdir -p target/man
	scdoc < $? > $@

target/man/%.5: doc/%.5.scd
	@mkdir -p target/man
	scdoc < $? > $@

doc: $(DOCS)

# Exists in GNUMake but not in NetBSD make and others.
RM?=rm -f

clean:
	cargo clean

install: $(DOCS) target/release/fbihtax
	mkdir -m755 -p $(DESTDIR)$(BINDIR) $(DESTDIR)$(MANDIR)/man1 $(DESTDIR)$(MANDIR)/man5
	install -m755 target/release/fbihtax $(DESTDIR)$(BINDIR)/fbihtax
	install -m644 target/man/fbihtax.1 $(DESTDIR)$(MANDIR)/man1/fbihtax.1
	install -m644 target/man/fbihtax-ams.1 $(DESTDIR)$(MANDIR)/man1/fbihtax-ams.1
	install -m644 target/man/fbihtax-db-insert.1 $(DESTDIR)$(MANDIR)/man1/fbihtax-db-insert.1
	install -m644 target/man/fbihtax-db-load.1 $(DESTDIR)$(MANDIR)/man1/fbihtax-db-load.1
	install -m644 target/man/fbihtax-gpd.1 $(DESTDIR)$(MANDIR)/man1/fbihtax-gpd.1
	install -m644 target/man/fbihtax-tax-breakdown.1 $(DESTDIR)$(MANDIR)/man1/fbihtax-tax-breakdown.1
	install -m644 target/man/fbihtax-config.5 $(DESTDIR)$(MANDIR)/man5/fbihtax-config.5
	install -m644 target/man/fbihtax-client-config.5 $(DESTDIR)$(MANDIR)/man5/fbihtax-client-config.5
	install -m644 target/man/fbihtax-user-config.5 $(DESTDIR)$(MANDIR)/man5/fbihtax-user-config.5

RMDIR_IF_EMPTY:=sh -c '! [ -d $$0 ] || ls -1qA $$0 | grep -q . || rmdir $$0'

uninstall:
	$(RM) $(DESTDIR)$(BINDIR)/fbihtax
	$(RM) $(DESTDIR)$(MANDIR)/man1/fbihtax.1
	$(RM) $(DESTDIR)$(MANDIR)/man1/fbihtax-ams.1
	$(RM) $(DESTDIR)$(MANDIR)/man1/fbihtax-db-insert.1
	$(RM) $(DESTDIR)$(MANDIR)/man1/fbihtax-db-load.1
	$(RM) $(DESTDIR)$(MANDIR)/man1/fbihtax-gpd.1
	$(RM) $(DESTDIR)$(MANDIR)/man1/fbihtax-tax-breakdown.1
	$(RM) $(DESTDIR)$(MANDIR)/man5/fbihtax-config.5
	$(RM) $(DESTDIR)$(MANDIR)/man5/fbihtax-client-config.5
	$(RM) $(DESTDIR)$(MANDIR)/man5/fbihtax-user-config.5
	${RMDIR_IF_EMPTY} $(DESTDIR)$(BINDIR)
	$(RMDIR_IF_EMPTY) $(DESTDIR)$(MANDIR)/man1
	$(RMDIR_IF_EMPTY) $(DESTDIR)$(MANDIR)/man5
	$(RMDIR_IF_EMPTY) $(DESTDIR)$(MANDIR)/man7
	$(RMDIR_IF_EMPTY) $(DESTDIR)$(MANDIR)

.PHONY: all doc clean install uninstall debug
