################################################################
# Make the documentation
#
# Building the various versions of the documentation requires
# a lot of software to be at the right place.  Generally, please
# pick the required version from the SWI-Prolog home page at
# http://www.swi-prolog.org/
#
# If you insist building it yourself, at least check the following
#
#	* Setting of the $(PL) below
#	* Path to perl in doc2tex
#	* Installed programs
#		- latex 2e
#		- pdflatex
#		- latex2html from the html subdirectory of Prolog
#		- gcc (for ccp as well as building modified dvi2tty)
#	* The PlDoc generated manuals need to installed system as
#	  $(PUBLICPL)
#
################################################################

PUBLICPL=	pl
PL=		../linux/$(PUBLICPL)

CP=		ln -fs
CCCP=		gcc -E -C -P
DVITOTTY=	./dvi2tty
DVITOTTY-HOME=	txt/dvi2tty
INDEX=  	makeindex
LATEX=		latex
PDFTEX=		pdflatex
MANUAL=		./MANUAL.dvi
PDF=		MANUAL.pdf
ONLINE=		../library/MANUAL
ONLINE_INDEX=	../library/helpidx.pl

WWWMAN=		~www/SWI-Prolog/Manual
FTPDIR=		~ftp/SWI-Prolog
BETAMAN=	~www/SWI-Prolog/BETA/Manual

LIBFILES=	lib/library.tex lib/readutil.tex lib/wwwbrowser.tex \
		lib/registry.tex lib/check.tex lib/url.tex lib/debug.tex \
		lib/lists.tex lib/bounds.tex lib/clpqr.tex lib/gensym.tex \
		lib/nbset.tex lib/clpdistinct.tex lib/summary.tex \
		lib/simplex.tex lib/assoc.tex lib/prologxref.tex \
		lib/ugraphs.tex lib/ordsets.tex lib/broadcast.tex \
		lib/record.tex lib/clpfd.tex lib/pairs.tex lib/option.tex \
		lib/apply.tex lib/aggregate.tex lib/threadpool.tex \
		lib/pio.tex lib/pureinput.tex
TEXFILES=	doc.tex intro.tex overview.tex builtin.tex module.tex \
		foreign.tex runtime.tex hack.tex summary.tex xpce.tex \
		glossary.tex ide.tex license.tex threads.tex $(LIBFILES) \
		profile.tex attvar.tex chr.tex xref.tex bit64.tex \
		dialect.tex
STYFILES=	html.sty txt.sty

.SUFFIXES:
.SUFFIXES: .doc .tex 

help:		
		@echo
		@echo '"make all"       creates online, PDF and HTML'
		@echo '"make online"    creates the help/1 database'
		@echo '"make html"      create HTML verstion'
		@echo '"make pdf"       makes $(PDF)'
		@echo
		@echo '"make clean"     removes all temporary files'
		@echo '"make distclean" lets you start from scratch'
		@echo

all:		
		$(MAKE) online
		$(MAKE) clean
		$(MAKE) pdf
		$(MAKE) clean
		$(MAKE) html
		$(MAKE) clean

dvi:		doc.dvi

doc.dvi:	$(TEXFILES)
		env TEXINPUTS=lib:$$TEXINPUTS $(LATEX) doc
		env TEXINPUTS=lib:$$TEXINPUTS $(LATEX) doc
		env TEXINPUTS=lib:$$TEXINPUTS $(LATEX) doc

ps:		doc.ps

doc.ps:		doc.dvi
		dvips $< -o $@

html:		$(TEXFILES) $(STYFILES) doc.bbl
		rm -rf Manual.tmp
		env TEXINPUTS=lib:$$TEXINPUTS latex2html doc
		./update-man Manual.tmp Manual

pdf:		$(PDF)

online:		$(ONLINE) online_index
online_index:	$(ONLINE_INDEX)

dvi2tty:	$(DVI2TTY)
txt.sty:	txt/txt.sty
		cp txt/txt.sty $@
html.sty:	../packages/ltx2htm/html.sty
		cp $< $@

clean:		
		rm -f *~ *% tmp.* *.aux *.idx *.ind *.log *.toc *.ilg
		rm -f lib/*~ lib/*.tex lib/*.aux
		rm -f online.* *.tex

distclean:	clean
		rm -f $(MANUAL) $(DVITOTTY)
		rm -rf Manual.tmp
		make -C$(DVITOTTY-HOME) distclean

$(PDF):		doc.tex $(TEXFILES) doc.bbl
		env TEXINPUTS=lib:$$TEXINPUTS ./runtex --pdf doc
		mv doc.pdf $@

man:		doc.tex $(TEXFILES) doc.bbl doc.ind
		$(LATEX) doc

tex:		$(TEXFILES)

$(TEXFILES):	doc2tex

.doc.tex:	
		./doc2tex $*.doc > $*.tex

doc.bbl:	biblio.doc
		cp  biblio.doc $@

htmldoc.bbl:	biblio.doc
		cp  biblio.doc $@

online.bbl:	biblio.doc
		cp  biblio.doc $@

doc.idx:	$(TEXFILES)
		$(LATEX) doc

$(ONLINE):	online.dvi $(DVITOTTY)
		$(DVITOTTY) -w100 online | \
		cat -s | \
		sed 's/\(.\)_/_\1/g' > $(ONLINE)

online.dvi:	online.tex $(TEXFILES) online.bbl
		env TEXINPUTS=lib:$$TEXINPUTS ./runtex online

online.doc:	main.doc
		cp main.doc main.h
		$(CCCP) -DONLINE main.h | cat -s > online.doc
		rm -f main.h
doc.doc:	main.doc
		cp main.doc main.h
		$(CCCP) -UONLINE main.h | cat -s > doc.doc
		rm -f main.h

$(ONLINE_INDEX):	$(ONLINE)
		MANUAL=$(ONLINE); INDEX=$(ONLINE_INDEX); export MANUAL INDEX; \
		$(PL) -f none -g '[plindex],online_index' -t halt.

$(DVITOTTY):
		$(MAKE) -C$(DVITOTTY-HOME) dvi2tty
		$(CP) $(DVITOTTY-HOME)/dvi2tty ./$(DVITOTTY)

install::
		rm -rf $(WWWMAN)
		cp -a Manual $(WWWMAN)
		tar zcf $(FTPDIR)/refman/HTMLmanual.tar.gz Manual
		install -m 644 $(PDF) $(FTPDIR)/refman/refman.pdf
		rsync -aCv --delete Manual liduop:/home/web/hcs/projects/SWI-Prolog

beta-install::
		rm -rf $(BETAMAN)
		cp -a Manual $(BETAMAN)
		install -m 644 MANUAL.pdf $(FTPDIR)/BETA/Manual.pdf
		tar zcf $(FTPDIR)/BETA/Manual.html.tgz Manual

################################################################
# PlDoc generated manual files
################################################################

LIBTOTEX=$(PUBLICPL) -q -s libtotex.pl -g libtotex --

lib/apply.tex:	../library/apply.pl
		$(LIBTOTEX) 'library(apply)'
lib/clpfd.tex:	../library/clp/clpfd.pl
		$(LIBTOTEX) 'library(clpfd)'
lib/url.tex:	../library/url.pl
		$(LIBTOTEX) 'library(url)'
lib/pairs.tex:	../library/pairs.pl
		$(LIBTOTEX) 'library(pairs)'
lib/option.tex:	../library/option.pl
		$(LIBTOTEX) 'library(option)'
lib/aggregate.tex: ../library/aggregate.pl
		$(LIBTOTEX) 'library(aggregate)'
lib/pureinput.tex: ../library/pure_input.pl
		$(LIBTOTEX) --subsection 'library(pure_input)'
lib/threadpool.tex: ../library/thread_pool.pl
		$(LIBTOTEX) 'library(thread_pool)'


################################################################
# Windows readme
################################################################

windows.pdf:	windows.tex
		./runtex --pdf windows
windows.html:	windows.tex
		latex2html windows

################################################################
# MacOsX readme
################################################################

macosx::	macosx/macosx.pdf macosx/macosx.html

macosx/macosx.pdf:	macosx/macosx.tex
		./runtex --pdf macosx/macosx
macosx/macosx.html:	macosx/macosx.tex
		(cd macosx && latex2html macosx)

# EOF #
