LATEX = latex
# Uncomment this line for reverse stacking printers and comment out the next
# one.
#DVIPS = dvips -r
DVIPS = dvips
DVIDVI = dvidvi
ODDPAGES = 2:0
EVENPAGES = 2:-1

PSINTERNALDOC = HomeLibrV2Internals.ps
PSINTERNALDOCODD = HomeLibrV2Internals_odd.ps
PSINTERNALDOCEVEN = HomeLibrV2Internals_even.ps
INTDVI = mainInternals.dvi
ODDINTDVI = mainInternals_odd.dvi
EVENINTDVI = mainInternals_even.dvi

PRPSDOCUMENT = HomeLibrV2Printer.ps
PRPSDOCUMENTODD = HomeLibrV2Printer_odd.ps
PRPSDOCUMENTEVEN = HomeLibrV2Printer_even.ps
PRDVI = mainPrinter.dvi
ODDPRDVI = mainPrinter_odd.dvi
EVENPRDVI = mainPrinter_even.dvi

PSUSERDOC = HomeLibrV2User.ps
PSUSERDOCODD = HomeLibrV2User_odd.ps
PSUSERDOCEVEN = HomeLibrV2User_even.ps
USERDVI = mainUser.dvi
ODDUSERDVI = mainUser_odd.dvi
EVENUSERDVI = mainUser_even.dvi


READMES = README.1st README.UNIX README.WIN COPYING

DIRECTINTLATEXSRCS = mainInternals.tex docxx.sty MyTitlepage.sty noblank.sty \
		  titlepage.tex preface.tex License.tex widertocsection.sty \
		  ChangesInternals.tex IntroInterns.tex CommonFigures.tex \
		  Acknowledgments.tex
INDIRECTINTLATEXSRCS = common.tex Card.tex CardRecord.tex ListRecord.tex \
	vBTree.tex vm.tex TkCardRecord.tex  TkvBTree.tex HL20.tex HL20Help.tex \
	HL20Registration.tex HL20dialogs.tex HL20editForm.tex \
	HL20searchFrame.tex HL20Export.tex HL20Import.tex HL20PrintLibr.tex \
	HL20PrLayout.tex balloon.tex getopt.tex

CODESOURCE = ../C++/common.h ../C++/Card.h ../C++/CardRecord.h \
	     ../C++/ListRecord.h ../C++/vBTree.h ../C++/vm.h \
	     ../C++/TkCardRecord.cc ../C++/TkvBTree.cc \
	     ../Scripts/HL20.tcl \
	     ../Scripts/HL20_Help.tcl  ../Scripts/HL20_Registration.tcl \
	     ../Scripts/HL20_dialogs.tcl ../Scripts/HL20_editForm.tcl \
	     ../Scripts/HL20_searchFrame.tcl ../Scripts/HL20_Export.tcl \
	     ../Scripts/HL20_Import.tcl ../Scripts/HL20_PrintLibr.tcl \
	     ../Scripts/HL20_PrLayout.tcl ../Scripts/balloon.tcl \
	     ../Scripts/getopt.tcl ../Scripts/UnixPrinter.tcl


INTLATEXSRCS = $(DIRECTINTLATEXSRCS) $(INDIRECTINTLATEXSRCS)

PRINDLATEXSRCS = UnixPrinter.tex

PRLATEXSRCS = MyTitlepage.sty noblank.sty widertocsection.sty \
	mainPrinter.tex titlepage.tex printer.tex  $(PRINDLATEXSRCS)  \
	License.tex man.tma


USERLATEXSRCS = MyTitlepage.sty noblank.sty widertocsection.sty \
	mainUser.tex titlepage.tex preface.tex ChangesUser.tex IntroUser.tex \
	CommonFigures.tex MainWindow.tex Search.tex Acknowledgments.tex \
	License.tex Edit.tex Printing.tex ImportExport.tex OddsAndEnds.tex

USERPSSRCS = HLUser_Fig1.ps HLUser_Fig2.ps HLUser_Fig3.ps HLUser_Fig1a.ps \
	     HLUser_Fig4.ps HLUser_Fig5.ps HLUser_Fig6.ps HLUser_Fig7.ps \
	     HLUser_Fig8.ps HLUser_Fig9.ps HLUser_Fig10.ps HLUser_Fig11.ps \
	     HLUser_Fig12.ps HLUser_Fig13.ps HLUser_Fig14.ps HLUser_Fig15.ps \
	     HLUser_Fig16.ps HLUser_Fig17.ps HLUser_Fig18.ps HLUser_Fig19.ps \
	     HLUser_Fig20.ps HLUser_Fig21.ps HLUser_Fig22.ps HLUser_Fig23.ps \
	     HLUser_Fig24.ps HLUser_Fig25.ps HLUser_Fig26.ps HLUser_Fig27.ps \
	     HLUser_Fig28.ps HLUser_Fig29.ps


%.tex: ../C++/%.h
	rm -f .chapter
	grep '^//@ChapterName:' $< | awk -F: '{printf("\\chapter{%s}\n",$$2);}' >.chapter
	echo '\label{${notdir ${basename $<}}}' >>.chapter
	doc++ -t -l -ef .chapter $< | \
		grep -v '^\\label{cxx.}' | \
		sed 's/\\rightarrow\$$/\\rightarrow\$$\\thechapter./g' | \
		sed 's/\\pageref{cxx./\\pageref{cxx.\\thechapter./g' >$@


%.tex: ../C++/%.cc
	rm -f .chapter
	grep '^//@ChapterName:' $< | awk -F: '{printf("\\chapter{%s}\n",$$2);}' >.chapter
	echo '\label{${notdir ${basename $<}}}' >>.chapter
	doc++ -t -l -ef .chapter $< | \
		grep -v '^\\label{cxx.}' | \
		sed 's/\\rightarrow\$$/\\rightarrow\$$\\thechapter./g' | \
		sed 's/\\pageref{cxx./\\pageref{cxx.\\thechapter./g' >$@

%.tex: ../Scripts/%.tcl
	tcl2tex $@ $<

all : $(PSDOCUMENT) intpostscript.date $(PRPSDOCUMENT) prpostscript.date \
      $(PSUSERDOC) userpostscript.date

clean: 
	rm -f *.aux *.dvi *.toc *.lo[tf] *.idx *.ilg *.ind

reallyclean: clean
	rm -f $(INDIRECTINTLATEXSRCS) $(PRINDLATEXSRCS)
	rm -f $(PSINTERNALDOC) $(PSINTERNALDOCODD) $(PSINTERNALDOCEVEN)
	rm -f $(PRPSDOCUMENT) $(PRPSDOCUMENTODD) $(PRPSDOCUMENTEVEN)
	rm -f $(PSUSERDOC) $(PSUSERDOCODD) $(PSUSERDOCEVEN)

scratch : 
	rm -f *.aux
	$(MAKE) $(MFLAGS) fresh

fresh : 
	rm -f $(INDIRECTINTLATEXSRCS) $(PRINDLATEXSRCS)
	$(MAKE) $(MFLAGS) all


$(PSINTERNALDOC) : $(INTDVI)
	$(DVIPS) $(INTDVI) -o $(PSINTERNALDOC)

intpostscript.date : $(PSINTERNALDOCODD) $(PSINTERNALDOCEVEN)
	date >intpostscript.date

$(PSINTERNALDOCEVEN) : $(EVENINTDVI) 
	$(DVIPS) $(EVENINTDVI) -o $(PSINTERNALDOCEVEN)

$(PSINTERNALDOCODD) : $(ODDINTDVI) 
	$(DVIPS) $(ODDINTDVI) -o $(PSINTERNALDOCODD)

$(ODDINTDVI) : $(INTDVI)
	$(DVIDVI) $(ODDPAGES) $(INTDVI) $(ODDINTDVI)

$(EVENINTDVI) : $(INTDVI)
	$(DVIDVI) $(EVENPAGES) $(INTDVI) $(EVENINTDVI)

$(INTDVI) : $(INTLATEXSRCS)
	rm -f mainInternals.toc mainInternals.lo* mainInternals.dvi mainInternals.i*
	$(LATEX) mainInternals.tex
	echo '\begin{theindex}' > mainInternals.ind
	echo '\item Dummy, 0' >> mainInternals.ind
	echo '\end{theindex}' >> mainInternals.ind
	$(LATEX) mainInternals.tex
	makeindex mainInternals.idx
	$(LATEX) mainInternals.tex

prpostscript.date : $(PRPSDOCUMENTODD) $(PRPSDOCUMENTEVEN)
	date >prpostscript.date

$(PRPSDOCUMENTEVEN) : $(EVENPRDVI)
	$(DVIPS) $(EVENPRDVI) -o $(PRPSDOCUMENTEVEN)

$(PRPSDOCUMENTODD) : $(ODDPRDVI)
	$(DVIPS) $(ODDPRDVI) -o $(PRPSDOCUMENTODD)

$(EVENPRDVI) : $(PRDVI)
	$(DVIDVI) $(EVENPAGES) $(PRDVI) $(EVENPRDVI)

$(ODDPRDVI) : $(PRDVI)
	$(DVIDVI) $(ODDPAGES) $(PRDVI) $(ODDPRDVI)

$(PRPSDOCUMENT) : $(PRDVI)
	$(DVIPS) $(PRDVI) -o $(PRPSDOCUMENT)

$(PRDVI) : $(PRLATEXSRCS)
	rm -f mainPrinter.toc mainPrinter.lo* mainPrinter.dvi mainPrinter.i*
	$(LATEX) mainPrinter.tex
	echo '\begin{theindex}' > mainPrinter.ind
	echo '\item Dummy, 0' >> mainPrinter.ind
	echo '\end{theindex}' >> mainPrinter.ind
	$(LATEX) mainPrinter.tex
	makeindex mainPrinter.idx
	$(LATEX) mainPrinter.tex

userpostscript.date : $(PSUSERDOCODD) $(PSUSERDOCEVEN)
	date >userpostscript.date

$(PSUSERDOCEVEN) : $(EVENUSERDVI)
	$(DVIPS) $(EVENUSERDVI) -o $(PSUSERDOCEVEN)

$(PSUSERDOCODD) : $(ODDUSERDVI)
	$(DVIPS) $(ODDUSERDVI) -o $(PSUSERDOCODD)

$(EVENUSERDVI) : $(USERDVI)
	$(DVIDVI) $(EVENPAGES) $(USERDVI) $(EVENUSERDVI)

$(ODDUSERDVI) : $(USERDVI)
	$(DVIDVI) $(ODDPAGES) $(USERDVI) $(ODDUSERDVI)

$(PSUSERDOC) : $(USERDVI)
	$(DVIPS) $(USERDVI) -o $(PSUSERDOC)

$(USERDVI) : $(USERLATEXSRCS) $(USERPSSRCS)
	rm -f mainUser.toc mainUser.lo* mainUser.dvi mainUser.i*
	$(LATEX) mainUser.tex
	echo '\begin{theindex}' > mainUser.ind
	echo '\item Dummy, 0' >> mainUser.ind
	echo '\end{theindex}' >> mainUser.ind
	$(LATEX) mainUser.tex
	makeindex mainUser.idx
	$(LATEX) mainUser.tex

common.tex : ../C++/common.h

Card.tex : ../C++/Card.h

CardRecord.tex : ../C++/CardRecord.h

ListRecord.tex : ../C++/ListRecord.h

vBTree.tex : ../C++/vBTree.h

vm.tex : ../C++/vm.h


TkCardRecord.tex : ../C++/TkCardRecord.cc
	rm -f .chapter
	grep '^//@ChapterName:' ../C++/TkCardRecord.cc | awk -F: '{printf("\\chapter{%s}\n",$$2);}' >.chapter
	echo '\label{TkCardRecord}' >>.chapter
	doc++ -t -l -ef .chapter ../C++/TkCardRecord.cc | \
		grep -v '^\\label{cxx.}' | \
		sed 's/\\rightarrow\$$/\\rightarrow\$$\\thechapter./g' | \
		sed 's/\\pageref{cxx./\\pageref{cxx.\\thechapter./g' >$@

TkvBTree.tex : ../C++/TkvBTree.cc ../C++/TkvBTree_Import.cc
	rm -f .chapter
	grep '^//@ChapterName:' ../C++/TkvBTree.cc | awk -F: '{printf("\\chapter{%s}\n",$$2);}' >.chapter
	echo '\label{TkvBTree}' >>.chapter
	doc++ -t -l -ef .chapter ../C++/TkvBTree.cc ../C++/TkvBTree_Import.cc | \
		grep -v '^\\label{cxx.}' | \
		sed 's/\\rightarrow\$$/\\rightarrow\$$\\thechapter./g' | \
		sed 's/\\pageref{cxx./\\pageref{cxx.\\thechapter./g' >$@


HL20.tex : ../Scripts/HL20.tcl

HL20Help.tex : ../Scripts/HL20_Help.tcl
	tcl2tex HL20Help.tex ../Scripts/HL20_Help.tcl

HL20Registration.tex : ../Scripts/HL20_Registration.tcl
	tcl2tex HL20Registration.tex ../Scripts/HL20_Registration.tcl

HL20dialogs.tex : ../Scripts/HL20_dialogs.tcl
	tcl2tex HL20dialogs.tex ../Scripts/HL20_dialogs.tcl

HL20editForm.tex : ../Scripts/HL20_editForm.tcl
	tcl2tex HL20editForm.tex ../Scripts/HL20_editForm.tcl

HL20searchFrame.tex : ../Scripts/HL20_searchFrame.tcl
	tcl2tex HL20searchFrame.tex ../Scripts/HL20_searchFrame.tcl

HL20Export.tex : ../Scripts/HL20_Export.tcl
	tcl2tex HL20Export.tex ../Scripts/HL20_Export.tcl

HL20Import.tex: ../Scripts/HL20_Import.tcl
	tcl2tex HL20Import.tex ../Scripts/HL20_Import.tcl

HL20PrintLibr.tex : ../Scripts/HL20_PrintLibr.tcl
	tcl2tex HL20PrintLibr.tex ../Scripts/HL20_PrintLibr.tcl

HL20PrLayout.tex : ../Scripts/HL20_PrLayout.tcl
	tcl2tex HL20PrLayout.tex ../Scripts/HL20_PrLayout.tcl

balloon.tex : ../Scripts/balloon.tcl

getopt.tex : ../Scripts/getopt.tcl

UnixPrinter.tex : ../Scripts/UnixPrinter.tcl

$(CODESOURCE) : 
	(cd $(@D); make $(@F))


../Installer/Doc.tar.gz : $(READMES) $(INTLATEXSRCS) $(PRLATEXSRCS) \
		$(USERLATEXSRCS) $(USERPSSRCS) \
		$(PSINTERNALDOC) $(PSINTERNALDOCODD) $(PSINTERNALDOCEVEN) \
		$(PRPSDOCUMENT) $(PRPSDOCUMENTODD) $(PRPSDOCUMENTEVEN) \
		$(PSUSERDOC) $(PSUSERDOCODD) $(PSUSERDOCEVEN) \
		Makefile
	tar czvf ../Installer/Doc.tar.gz $^

../Installer/Doc.zip : $(READMES) $(INTLATEXSRCS) $(PRLATEXSRCS) \
		$(USERLATEXSRCS) $(USERPSSRCS) \
		$(PSINTERNALDOC) $(PSINTERNALDOCODD) $(PSINTERNALDOCEVEN) \
		$(PRPSDOCUMENT) $(PRPSDOCUMENTODD) $(PRPSDOCUMENTEVEN) \
		$(PSUSERDOC) $(PSUSERDOCODD) $(PSUSERDOCEVEN) \
		Makefile
	rm -f ../Installer/Doc.zip
	zip -lv ../Installer/Doc.zip $^
