# define variables WEB, WEB_BETA, CGI_BIN, HOME_DIR, CTAN_HOME, CTAN_ROOT
include locations.mk

# list of subdocuments of gather-faqbody
include subdocuments.mk

BODY	= gather-faqbody.tex filectan.tex dirctan.tex $(SUBDOCS)
MACROS	= faq.cls faq.sty
CONFIGS	= archive.cfg
CMFONTS	= cmz
PATCH   = newfaq-patch.tex add-general.tex add-hammond.tex
MAKEF	= Makefile

HTML_TAR = FAQ-html.tar.gz

LATEX	= latex
PDFLATEX = pdflatex

CTAN_HOME = help/uk-tex-faq

#h
#hThe main targets of this Makefile are
#h	release		build a distribution
#h
#h	patch		build latest patched version
#h
#h	ctan		install distribution on CTAN
#h			(to be run on the CTAN machine)
#h	web		install files required for web access
#h			(must be run on the machine that hosts
#h			the CGI script)
#h	web-beta	ditto, except beta distribution
#h
#h	inst-perl	install texfaq2html and sanitize.pl
#h			in the cgi-bin directory
#h	inst-perl-beta	ditto, for texfaq2html-beta, sanitize-beta
#h	inst-perl-gamma	ditto, for texfaq2html-gamma
#h
#h	html		make html files in html/
#h	html-gamma	make html files in html, copy for -gamma tests

help:;	@sed -n 's/^#h//p' < $(MAKEF)

release: all html-tar
all:	newfaq.pdf letterfaq.pdf

# did have faqfont.cfg in here, but that caused problems, since it
# typically doesn't exist...

# pdf generation has to be done one a different base file name because
# of incompatibilities in the .aux and .toc files
newfaq.pdf: newfaq.tex $(BODY) $(MACROS) $(CONFIGS)
	ln -sf newfaq.tex ./pdf-newfaq.tex
	rm -f faqfont.cfg
	while ( \
	  $(PDFLATEX) \\def\\Status{1} \\input pdf-newfaq ; \
	  grep "Rerun to get cross" pdf-newfaq.log > /dev/null ) do true ; \
        done
	thumbpdf pdf-newfaq
	$(PDFLATEX) \\def\\Status{1} \\input pdf-newfaq
	mv pdf-newfaq.pdf newfaq.pdf
	rm pdf-newfaq.tex

letterfaq.pdf: letterfaq.tex $(BODY) $(MACROS) $(CONFIGS)
	ln -sf letterfaq.tex ./pdf-letterfaq.tex
	rm -f faqfont.cfg
	while ( \
	  $(PDFLATEX) \\def\\Status{1} \\input pdf-letterfaq ; \
	  grep "Rerun to get cross" pdf-letterfaq.log > /dev/null ) do true ; \
        done
	thumbpdf pdf-letterfaq
	$(PDFLATEX) \\def\\Status{1} \\input pdf-letterfaq
	mv pdf-letterfaq.pdf letterfaq.pdf
	rm pdf-letterfaq.tex

patch:	newfaq-patch

newfaq-patch: newfaq-patch.pdf newfaq-patch.ps

patch.pdf: newfaq-patch.pdf

newfaq-patch.pdf: $(PATCH) $(BODY) $(MACROS) $(CONFIGS)
	./find-add-files
	ln -sf newfaq-patch.tex ./pdf-newfaq-patch.tex
	rm -f faqfont.cfg
	while ( \
	  $(PDFLATEX) \\def\\Status{1} \\input pdf-newfaq-patch ; \
	  grep "Rerun to get cross" pdf-newfaq-patch.log > /dev/null ) do true ; \
        done
	thumbpdf pdf-newfaq-patch
	$(PDFLATEX) \\def\\Status{1} \\input pdf-newfaq-patch
	mv pdf-newfaq-patch.pdf newfaq-patch.pdf
	ln -sf newfaq-patch.pdf patch.pdf
	rm pdf-newfaq-patch.tex

patch.dvi: newfaq-patch.dvi

newfaq-patch.dvi: $(PATCH) $(BODY) $(MACROS) $(CONFIGS)
	./find-add-files
	while ( \
	  $(LATEX) newfaq-patch ; \
	  grep "Rerun to get cross" newfaq-patch.log > /dev/null ) do true ; \
        done
	ln -sf newfaq-patch.dvi patch.dvi

newfaq.aux: newfaq.dvi

newfaq.dvi: newfaq.tex $(BODY) $(MACROS) $(CONFIGS)
	echo $(LATEX)
	while ( \
	  $(LATEX) newfaq ; \
	  grep "Rerun to get cross" newfaq.log > /dev/null ) do true ; \
        done

letterfaq.dvi: letterfaq.tex $(BODY) $(MACROS) $(CONFIGS)
	while ( \
	  $(LATEX) letterfaq ; \
	  grep "Rerun to get cross" letterfaq.log > /dev/null ) do true ; \
        done

newfaq-cm.dvi: newfaq.tex $(BODY) $(MACROS) $(CONFIGS)
	ln -sf faqfont.cfg.cmfonts faqfont.cfg
	ln -sf newfaq.tex newfaq-cm.tex
	while ( \
	  $(LATEX) newfaq-cm ; \
	  grep "Rerun to get cross" newfaq-cm.log > /dev/null ) do true ; \
        done
	rm faqfont.cfg newfaq-cm.tex

letterfaq-cm.dvi: letterfaq.tex $(BODY) $(MACROS) $(CONFIGS)
	ln -sf faqfont.cfg.cmfonts faqfont.cfg
	ln -sf letterfaq.tex letterfaq-cm.tex
	while ( \
	  $(LATEX) letterfaq-cm ; \
	  grep "Rerun to get cross" letterfaq-cm.log > /dev/null ) do true ; \
        done
	rm faqfont.cfg letterfaq-cm.tex

$(HTML_TAR):
	tar czvf $(HTML_TAR) html/*

ctan:	$(HTML_TAR)
	(cd $(CTAN_ROOT)/$(CTAN_HOME); \
	 really -u ctan make -f /home/rf/tex/faq/Makefile.CTAN)

# faqbody for all the webbery stuff
faqbody.tex:	$(SUBDOCS) gather-faqbody.tex
	./build-faqbody

web: $(WEB)/dirctan.tex $(WEB)/filectan.tex $(WEB)/faqbody.tex $(WEB)/newfaq.aux $(WEB)/archive.list

$(WEB)/dirctan.tex: dirctan.tex
$(WEB)/filectan.tex: filectan.tex
$(WEB)/faqbody.tex: faqbody.tex
$(WEB)/newfaq.aux: newfaq.aux
$(WEB)/archive.list: archive.list
$(WEB)/aliasquestion.list: aliasquestion.list
$(WEB)/label-to-file.pl: label-to-file.pl

$(WEB)/dirctan.tex $(WEB)/filectan.tex $(WEB)/faqbody.tex $(WEB)/newfaq.aux $(WEB)/archive.list $(WEB)/aliasquestion.list $(WEB)/label-to-file.pl:
	if [ -f $@ ]; then	\
	  chmod 644 $@; 	\
	  cp -p $< $@-t;	\
	  mv $@-t $@;		\
	else			\
	  cp -p $< $@;		\
	fi
	chmod 444 $@

web-beta: $(WEB_BETA)/dirctan.tex $(WEB_BETA)/filectan.tex $(WEB_BETA)/faqbody.tex $(WEB_BETA)/newfaq.aux $(WEB_BETA)/archive.list $(WEB_BETA)/aliasquestion.list $(WEB_BETA)/label-to-file.pl

$(WEB_BETA)/dirctan.tex: dirctan.tex
$(WEB_BETA)/filectan.tex: filectan.tex
$(WEB_BETA)/faqbody.tex: faqbody.tex
$(WEB_BETA)/newfaq.aux: newfaq.aux
$(WEB_BETA)/archive.list: archive.list
$(WEB_BETA)/aliasquestion.list: aliasquestion.list
$(WEB_BETA)/label-to-file.pl: label-to-file.pl

$(WEB_BETA)/dirctan.tex $(WEB_BETA)/filectan.tex $(WEB_BETA)/faqbody.tex $(WEB_BETA)/newfaq.aux $(WEB_BETA)/archive.list $(WEB_BETA)/aliasquestion.list $(WEB_BETA)/label-to-file.pl:
	if [ -f $@ ]; then	\
	  chmod 644 $@;		\
	  cp -p $< $@-t;	\
	  mv $@-t $@;		\
	else			\
	  cp -p $< $@;		\
	fi
	chmod 444 $@

inst-perl: $(CGI_BIN)/texfaq2html $(CGI_BIN)/sanitize.pl
inst-perl-beta: $(CGI_BIN)/texfaq2html-beta $(CGI_BIN)/sanitize-beta.pl
inst-perl-gamma: $(CGI_BIN)/texfaq2html-gamma

$(CGI_BIN)/texfaq2html: $(HOME_DIR)/texfaq2html
$(CGI_BIN)/texfaq2html-beta: $(HOME_DIR)/texfaq2html-beta
$(CGI_BIN)/texfaq2html-gamma: $(HOME_DIR)/texfaq2html-gamma
$(CGI_BIN)/sanitize.pl: $(HOME_DIR)/sanitize.pl
$(CGI_BIN)/sanitize-beta.pl: $(HOME_DIR)/sanitize-beta.pl

$(CGI_BIN)/texfaq2html $(CGI_BIN)/texfaq2html-beta $(CGI_BIN)/texfaq2html-gamma $(CGI_BIN)/sanitize.pl $(CGI_BIN)/sanitize-beta.pl:
	co -l $@
	cp -p $? $@
	ci -u -m"automatic check-in" $@

html:	$(HTMLDIR)/index.html

$(HTMLDIR)/index.html: $(BODY) newfaq.aux faqbody.tex
	./texfaq2file

html-tar: html
	tar czf FAQ-html.tar.gz $(HTMLDIREL)/

html-gamma:	$(HTMLDIR_GAMMA)/index.html

$(HTMLDIR_GAMMA)/index.html: $(BODY) newfaq.aux
	./texfaq2file -2 -w
	cp -p $(HTMLDIR_GAMMA)/* $(GAMMADIR)/

clean:
	rm -f *.pdf *.dvi *.log *.bak *.toc *.out *.lab *.tpt *.png
	rm -f *.aux html/*.html html_gamma/*.html htmltext/*.txt
	rm -f pdf-newfaq*.tex comment.cut additions.tex aliasquestion.list
	rm -f faqbody.tex FAQ-html.tar.gz