all: package doc
package: $(DTX.sty) $(DTX.cls)
doc: $(DTX.pdf) $(EXAMPLE.pdf)

$(DTX.sty) $(DTX.cls): $(INS) $(DTX)
	$(PDFLATEX) $(INS)


$(EXAMPLE.pdf): %.pdf: %.tex $(DTX.sty) $(DTX.cls) $(EXAMPLE.deps) 
	$(PDFLATEX) $(firstword $<)
	@if (grep 'Please (re)run Biber' $(patsubst %.dtx, %.log, $(firstword $<)) > /dev/null);\
	    then biber $(patsubst %.dtx, %, $(firstword $<));fi
	@if (grep 'Please (re)run BibTeX' $(patsubst %.dtx, %.log, $(firstword $<)) > /dev/null);\
	    then bibtex $(patsubst %.dtx, %, $(firstword $<));fi
	@if (grep "Writing index file" $(patsubst %.dtx, %.log, $(firstword $<)) > /dev/null);\
	   then makeindex\
		-o $(patsubst %.dtx, %.ind, $(firstword $<))\
		$(patsubst %.dtx, %.idx, $(firstword $<)); fi
	@if (grep Rerun $(patsubst %.dtx, %.log, $(firstword $<)) > /dev/null);\
	   then $(PDFLATEX) $(firstword $<); fi
	@if (grep Rerun $(patsubst %.dtx, %.log, $(firstword $<)) > /dev/null);\
	    then $(PDFLATEX) $(firstword $<); fi

%.ind:	
	touch $@

$(DTX.pdf): %.pdf: %.dtx $(DTX.sty) $(DTX.cls)
	$(PDFLATEX) $(firstword $<)
	@if (grep 'Please (re)run Biber' $(patsubst %.dtx, %.log, $(firstword $<)) > /dev/null);\
	    then biber $(patsubst %.dtx, %, $(firstword $<));fi
	@if (grep "Writing glossary file" $(patsubst %.dtx, %.log, $(firstword $<)) > /dev/null);\
	   then makeindex\
		-o $(patsubst %.dtx, %.gls, $(firstword $<))\
		$(patsubst %.dtx, %.glo, $(firstword $<)); fi
	@if (grep "Writing index file" $(patsubst %.dtx, %.log, $(firstword $<)) > /dev/null);\
	   then makeindex\
		-o $(patsubst %.dtx, %.ind, $(firstword $<))\
		$(patsubst %.dtx, %.idx, $(firstword $<)); fi
	@if (grep Rerun $(patsubst %.dtx, %.log, $(firstword $<)) > /dev/null);\
	   then $(PDFLATEX) $(firstword $<); fi
	@if (grep Rerun $(patsubst %.dtx, %.log, $(firstword $<)) > /dev/null);\
	    then $(PDFLATEX) $(firstword $<); fi

clean-local:     
	rm -f *~ *.log *.ilg *.out *.glo *.idx *.ilg *.blg *.run.xml *.synctex.gz

distclean-local: clean-local
	rm -f *.aux *.ind *.gls *.ps *.dvi *.toc *.thm *.bbl *.bcf *-blx.bib
	rm -Rf auto	

filedate:
	@for d in $(DTX); do \
             $(FILEDATEPROG) $$d ; \
        done

checksum:
	@for d in $(DTX); do \
             $(CHECKSUMPROG) $$d --update ; \
        done

enablechecksum:
	@for d in $(DTX); do \
             $(CHECKSUMPROG) $$d --enable ; \
        done

disablechecksum:
	@for d in $(DTX); do \
             $(CHECKSUMPROG) $$d --disable ; \
        done

# copy stuff around for making the TeX Directory Structure
ltds:
	rm -Rf $(TDSDIR.doc);mkdir -p $(TDSDIR.doc)
	rm -Rf $(TDSDIR.tex);mkdir -p $(TDSDIR.tex)
	rm -Rf $(TDSDIR.src);mkdir -p $(TDSDIR.src)
	cp $(DTX.src) $(TDS.src) $(TDSDIR.src)
	cp $(DTX.sty) $(DTX.cls) $(TDS.tex) $(TDSDIR.tex)
	cp README $(DTX.pdf) $(EXAMPLE.tex) $(EXAMPLE.pdf) $(TDS.doc) $(TDSDIR.doc)
	@for d in $(TDS.exdirs); do cp -R $$d $(TDSDIR.doc); done

lctan: filedate
	mkdir -p $(CTANDIR)
	cp $(DTX.src) $(TDS.src) $(CTANDIR)
	cp README $(DTX.pdf) $(EXAMPLE.tex) $(EXAMPLE.pdf) $(TDS.doc) $(CTANDIR)
	@for d in $(TDS.exdirs); do cp -R $$d $(CTANDIR); done

# sometimes (when bibLaTeX changes) we have to rerun biber; use make -B biber
biber:
	$(PDFLATEX) $(DTX.base:%=%.dtx)
	biber $(DTX.base)
