######################################################################
#
#           The Makefile for the CAML Reference manual
#               (anonymous contribution)
#
######################################################################
#
#   Notes: `make all' produces 2 "dvi" files: manual.dvi & interface.dvi
#          print them by using your favourite printing command
#
######################################################################
#
#                       PART I -- MACROS
#
######################################################################
SIZE=40
VERSION=V2-6.1
SRC=../../src
LIB=../../lib

###### SOURCE FILES (CANNOT BE GENERATED)

MANCAMLFILES=prelude.ml user_prelude.ml hash.ml \
          demo_caml.ml 

MANTEXFILES=lex.tex syntax_top.tex strings.tex dynamics.tex persistent.tex \
         streams.tex format.tex pretty.tex directives.tex compile.tex \
         modules.tex grammars.tex eval.tex Macros.tex comments.tex \
         show.tex system.tex trace.tex memo.tex stat.tex strings_lib.tex \
         inter.tex automat.tex latex.tex bugs.tex appendix.tex \
         syntax.tex

MANOTHERFILES=manual.tex titre.tex dedicace.tex syntax_conv.tex \
           syntax_constants.tex \
           syntax_exprs.tex syntax_idents.tex syntax_pats.tex \
           syntax_decls.tex syntax_types.tex syntax_pragmas.tex \
           syntax_macro.tex keywords.tex install.tex

INTTEXFILES=maple.tex cps_doc1.tex cps_doc1err.tex cps_doc2.tex xdr.tex

INTOTHERFILES= interface.tex figure_ps.tex titre_interface.tex \
CPSex1.ps.box CPSex4.ps.box CPSex7.ps.box cps_ex1.ps.box cps_ex4.ps.box \
cps_ex7.ps.box cps_picture1.ps.box cps_str_ex02.ps.box cps_str_ex03.ps.box \
dessin1.box strCPSex02.ps.box strCPSex03.ps.box cps_picture1.ps\
cps_xterm.bitmap


AUXFILES= order.ml a.ml problem.ml ill_export.ml dc comments rm_comments0.ml \
          rm_comments1.ml rm_comments2.ml rm_comments3.ml rm_comments4.ml \
          rm_comments5.ml rm_comments6.ml rm_comments7.ml

BINFILES= process_index process_glossary process_interface_glossary \
          process_interface_index glo.sed mk_caml_file.ml camlg \
          awk_glossary awk_index

##### TARGET FILES

MANCAMLTEXFILES=prelude.ml.tex user_prelude.ml.tex hash.ml.tex \
          demo_caml.ml.tex



MANTEXCAMLFILES=lex.ml.tex syntax_top.ml.tex strings.ml.tex dynamics.ml.tex persistent.ml.tex \
         streams.ml.tex format.ml.tex pretty.ml.tex directives.ml.tex compile.ml.tex \
         modules.ml.tex grammars.ml.tex eval.ml.tex Macros.ml.tex comments.ml.tex \
         show.ml.tex system.ml.tex trace.ml.tex memo.ml.tex stat.ml.tex strings_lib.ml.tex \
         inter.ml.tex automat.ml.tex latex.ml.tex bugs.ml.tex appendix.ml.tex \
         syntax.ml.tex

INTTEXCAMLFILES=maple.ml.tex cps_doc1.ml.tex cps_doc1err.ml.tex cps_doc2.ml.tex xdr.ml.tex

######################################################################
#
#                   PART II -- RULES
#
######################################################################

all: manual.dvi interface.dvi

manual.dvi: $(MANCAMLTEXFILES) $(MANTEXCAMLFILES) $(MANOTHERFILES)
	/bin/rm -f manual.idx manual.idx.tex manual.glo manual.glo.tex
	touch manual.idx.tex
	latex manual.tex
	latex manual.tex
	bin/process_index
	bin/process_glossary
	latex manual.tex
	chmod +w manual.dvi

interface.dvi: $(INTCAMLTEXFILES) $(INTTEXCAMLFILES) $(INTOTHERFILES)
	/bin/rm -f interface.idx interface.idx.tex interface.glo interface.glo.tex
	touch interface.idx.tex interface.glo.tex
	latex interface.tex
	latex interface.tex
	bin/process_interface_glossary
	bin/process_interface_index
	latex interface.tex
	chmod +w interface.dvi

cps_doc1.ml.tex: cps_doc1.tex
	@echo '***** Generating $* *****'
	@(echo 'cd (caml_directory^caml_version^"/doc/manual/");; ' ;\
	 echo 'security latex_file "$*";; ') | bin/camlg $(SIZE)
	chmod +w $@

cps_doc1err.ml.tex: cps_doc1err.tex
	@echo '***** Generating $* *****'
	@(echo 'cd (caml_directory^caml_version^"/doc/manual/");; ' ;\
	 echo 'security latex_file "$*";; ') | bin/camlg $(SIZE)
	chmod +w $@

cps_doc2.ml.tex: cps_doc2.tex
	@echo '***** Generating $* *****'
	@(echo 'cd (caml_directory^caml_version^"/doc/manual/");; ' ;\
	 echo 'security latex_file "$*";; ') | bin/camlg $(SIZE)
	chmod +w $@

.tex.ml.tex:
	@echo '***** Generating $* *****'
	@(echo 'cd (caml_directory^caml_version^"/doc/manual/");; ' ;\
	 echo 'security latex_file "$*";; ') | caml $(SIZE)
	chmod +w $@

.ml.ml.tex:
	@echo '***** Generating $* *****'
	@(echo 'cd (caml_directory^caml_version^"/doc/manual/");; ' ;\
	 echo 'security latex_caml_file "$*";; ') | caml $(SIZE)
	chmod +w $<.tex

prelude.ml:
	ln -s $(SRC)/$@ .

user_prelude.ml:
	ln -s $(LIB)/$@ .

hash.ml:
	ln -s $(LIB)/$@ .

.SUFFIXES: .ml .ml.tex .tex
