# Override PREFIX for another root installation directory
PREFIX ?= $(HOME)/.local
BINDIR := $(PREFIX)/bin
MANDIR := $(PREFIX)/man/man1
DATADIR := $(PREFIX)/share/mkproj
TESTSDIR := $(DATADIR)/tests
TESTSSRCDIR := $(TESTSDIR)/src

TPLS := $(addprefix $(DATADIR)/, $(notdir $(wildcard tpl/*)))
TESTFILES := $(addprefix $(TESTSDIR)/, $(notdir $(wildcard tpl/tests/*)))
TESTSRCFILES := $(addprefix $(TESTSSRCDIR)/, $(notdir $(wildcard tpl/tests/src/*)))

# Pattern rules

$(DATADIR)/%: tpl/%
	install -m 0644 $< $@

$(TESTSDIR)/%: tpl/tests/%
	install -m 0644 $< $@

$(TESTSSRCDIR)/%: tpl/tests/src/%
	install -m 0644 $< $@

# Targets

.PHONY: all

all: \
$(BINDIR) \
$(MANDIR) \
$(DATADIR) \
$(TESTSDIR) \
$(TESTSSRCDIR) \
$(BINDIR)/mkproj \
$(MANDIR)/mkproj.1 \
$(TPLS) \
$(TESTFILES) \
$(TESTSDIR)/Makefile \
$(TESTSRCFILES) \
$(TESTSSRCDIR)/src/precomp.hpp \
$(HOME)/.config/mkprojrc

$(BINDIR):
	mkdir -p $@
	@printf "\e[33m%s\n\e[m" "Please make sure that $(BINDIR) is in your path."

$(BINDIR)/mkproj: mkproj.sh
	install -m 0755 $< $@

$(MANDIR):
	mkdir -p $@

$(MANDIR)/mkproj.1: mkproj.1
	install -m 0644 $< $@

$(DATADIR):
	mkdir -p $@

$(TESTSDIR):
	mkdir -p $@

$(TESTSDIR)/Makefile:
	cd $(TESTSDIR) && ln -fs ../Makefile Makefile

$(TESTSSRCDIR):
	mkdir -p $@

$(TESTSSRCDIR)/src/precomp.hpp:
	cd $(TESTSSRCDIR) && ln -fs ../../src/precomp.hpp precomp.hpp

$(HOME)/.config/mkprojrc:
	echo "tplroot=\"$(DATADIR)\"" > $@
