pkgname=$(patsubst %.ins,%,$(wildcard *.ins))
TEXMFLOCAL = $(shell kpsewhich -var-value TEXMFLOCAL)
TEXMFDIST = $(shell kpsewhich -var-value TEXMFDIST)

.PHONY: all clean localinstall localuninstall localinstallcheck distinstall distuninstall distinstallcheck installcheck

all: $(pkgname).pdf

.PRECIOUS: %.sty %.dtx %.pdf
.DELETE_ON_ERROR:
.NOTPARALLEL:

%.sty: %.dtx %.ins
	latex $(pkgname).ins
	
%.pdf: %.sty
	xelatex $(pkgname).dtx
	makeindex -s gind.ist -o $(pkgname).ind $(pkgname).idx
	makeindex -s gglo.ist -o $(pkgname).gls $(pkgname).glo
	xelatex $(pkgname).dtx
	xelatex $(pkgname).dtx

clean:
	-rm *.pdf
	-rm *.log
	-rm *.out
	-rm *.aux
	-rm *.bib
	-rm *.snm
	-rm *.toc
	-rm *.nav
	-rm *.idx
	-rm *.sty
	-rm *.gls
	-rm *.ilg
	-rm *.ind
	-rm *.glo
	-rm $(pkgname).zip
	-rm $(pkgname).tar
	-rm $(pkgname).tar.gz
	-rm -r $(pkgname)
	-rm -r tmptar
	-rm -r tmpzip

$(TEXMFLOCAL)/tex/latex/$(pkgname):
	mkdir -p $(TEXMFLOCAL)/tex/latex/$(pkgname)

$(TEXMFLOCAL)/doc/latex/$(pkgname):
	mkdir -p $(TEXMFLOCAL)/doc/latex/$(pkgname)

$(TEXMFLOCAL)/tex/latex/$(pkgname)/$(pkgname).sty: $(pkgname).sty $(TEXMFLOCAL)/tex/latex/$(pkgname)
	cp $(pkgname).sty $(TEXMFLOCAL)/tex/latex/$(pkgname)/.

$(TEXMFLOCAL)/doc/latex/$(pkgname)/$(pkgname).pdf: $(pkgname).pdf $(TEXMFLOCAL)/doc/latex/$(pkgname)
	cp $(pkgname).pdf $(TEXMFLOCAL)/doc/latex/$(pkgname)/.

localinstall: $(pkgname).pdf $(pkgname).sty $(TEXMFLOCAL)/tex/latex/$(pkgname) $(TEXMFLOCAL)/doc/latex/$(pkgname) $(TEXMFLOCAL)/tex/latex/$(pkgname)/$(pkgname).sty $(TEXMFLOCAL)/doc/latex/$(pkgname)/$(pkgname).pdf
	@echo Installing to $(TEXMFLOCAL)/tex/latex/$(pkgname)
	texhash
	make localinstallcheck

localuninstall: 
	@echo Removing from $(TEXMFLOCAL)/tex/latex/$(pkgname)
	-rm -r $(TEXMFLOCAL)/tex/latex/$(pkgname)
	-rm -r $(TEXMFLOCAL)/doc/latex/$(pkgname)
	texhash


$(TEXMFDIST)/tex/latex/$(pkgname):
	mkdir -p $(TEXMFDIST)/tex/latex/$(pkgname)

$(TEXMFDIST)/doc/latex/$(pkgname):
	mkdir -p $(TEXMFDIST)/doc/latex/$(pkgname)

$(TEXMFDIST)/tex/latex/$(pkgname)/$(pkgname).sty: $(pkgname).sty $(TEXMFDIST)/tex/latex/$(pkgname)
	cp $(pkgname).sty $(TEXMFDIST)/tex/latex/$(pkgname)/.

$(TEXMFDIST)/doc/latex/$(pkgname)/$(pkgname).pdf: $(pkgname).pdf $(TEXMFDIST)/doc/latex/$(pkgname)
	cp $(pkgname).pdf $(TEXMFDIST)/doc/latex/$(pkgname)/.

distinstall: $(pkgname).pdf $(pkgname).sty $(TEXMFDIST)/tex/latex/$(pkgname) $(TEXMFDIST)/doc/latex/$(pkgname) $(TEXMFDIST)/tex/latex/$(pkgname)/$(pkgname).sty $(TEXMFDIST)/doc/latex/$(pkgname)/$(pkgname).pdf
	@echo Installing to $(TEXMFDIST)/tex/latex/$(pkgname)
	texhash
	make distinstallcheck

distuninstall: 
	@echo Removing from $(TEXMFDIST)/tex/latex/$(pkgname)
	-rm -r $(TEXMFDIST)/tex/latex/$(pkgname)
	-rm -r $(TEXMFDIST)/doc/latex/$(pkgname)
	texhash

#######################################################
# checks - will be called recursively
#######################################################

localinstallcheck:
ifeq (0,$(shell test -d $(TEXMFLOCAL)/tex/latex/$(pkgname); echo $$?))
	@echo $(pkgname) installed as local: $(TEXMFLOCAL)/tex/latex/$(pkgname)
else
	$(error $(pkgname) is not installed as local)
endif

distinstallcheck:
ifeq (0,$(shell test -d $(TEXMFDIST)/tex/latex/$(pkgname); echo $$?))
	@echo $(pkgname) installed as dist: $(TEXMFDIST)/tex/latex/$(pkgname)
else
	$(error $(pkgname) is not installed as dist)
endif

installcheck: 
ifeq (0,$(shell test -d $(TEXMFDIST)/tex/latex/$(pkgname); echo $$?))
	@echo $(pkgname) installed as dist: $(TEXMFDIST)/tex/latex/$(pkgname)
else
ifeq (0,$(shell test -d $(TEXMFLOCAL)/tex/latex/$(pkgname); echo $$?))
	@echo $(pkgname) installed as local: $(TEXMFLOCAL)/tex/latex/$(pkgname)
else
	$(error $(pkgname) is not installed)
endif
endif