# Normally you do not need to remake the files here. But if you want
# to you will need the GNU TeX-info utilities. To make a Postscript
# files you also need TeX and dvips. To make the PDF file you will
# need pdftex. We use the teTeX distribution for all of these.

# We avoid default automake rules because of problems with .dvi file
# and BSD makes

# If you know how to fix any of this more elegantly please mail
# docs@mysql.com

TEXI2HTML_FLAGS =	-iso -number
DVIPS =			dvips
MAKEINFO =		@MAKEINFO@
TEXINFO_TEX =		Support/texinfo.tex

noinst_SCRIPTS =	Support/texi2html Support/generate-text-files.pl \
			Support/generate-mirror-listing.pl
info_TEXINFOS =		manual.texi

targets =		manual.txt mysql.info manual.html

BUILT_SOURCES =		$(targets) manual_toc.html include.texi
EXTRA_DIST =		$(noinst_SCRIPTS) $(BUILT_SOURCES) mysqld_error.txt \
			INSTALL-BINARY mirrors.texi

all:			$(targets) txt_files

txt_files:		../INSTALL-SOURCE ../COPYING ../COPYING.LIB \
			../MIRRORS INSTALL-BINARY

CLEAN_FILES:		$(BUILD_SOURCES)
	touch $(BUILD_SOURCES)

# The PostScript and PDF version are so big that they are not included in the
# standard distribution. It is available for download from the home page.  
paper: manual_a4.ps manual_letter.ps  $(PDFMANUAL)

#########################################################################

# The Makefile contains the previous version so we can not use that
include.texi:	../configure.in
	echo "@c This file is autogenerated by the Makefile" > $@
	echo -n "@set mysql_version " >> $@
	grep "AM_INIT_AUTOMAKE(mysql, " ../configure.in | \
	 sed -e 's;AM_INIT_AUTOMAKE(mysql, ;;' -e 's;);;' >> $@
	echo -n "@set default_port " >> $@
	grep "MYSQL_TCP_PORT_DEFAULT=" ../configure.in | \
	 sed -e 's;MYSQL_TCP_PORT_DEFAULT=;;' >> $@


#
# English Manual
#

# GNU Info
mysql.info:	manual.texi include.texi
	cd $(srcdir) && $(MAKEINFO) --no-split -I $(srcdir) $<

# Plain Text
manual.txt:	manual.texi include.texi
	cd $(srcdir) && \
	$(MAKEINFO) -I $(srcdir) --no-headers --no-split --output $@ $<

# HTML, all in one file
manual.html:	manual.texi include.texi $(srcdir)/Support/texi2html
	cd $(srcdir) && @PERL@ $(srcdir)/Support/texi2html $(TEXI2HTML_FLAGS) $<
manual_toc.html: manual.html

# PDF, Portable Document Format
manual.pdf: manual.texi
	sed -e 's|@image{[^}]*} *||g' <$< >manual-tmp.texi
	pdftex --interaction=nonstopmode manual-tmp.texi
	texindex manual-tmp.??
	pdftex --interaction=nonstopmode manual-tmp.texi
	texindex manual-tmp.??
	pdftex --interaction=nonstopmode manual-tmp.texi
	mv manual-tmp.pdf $@
	rm -f manual-tmp.*
	touch $@

# XML, DocBook 4.0
mysql.xml: manual.texi include.texi
	$(MAKEINFO) --force --no-ifinfo --docbook $<
	mv $@ mysql-tmp.xml
	Support/docbook-fixup.pl <mysql-tmp.xml >$@
	rm -f mysql-tmp.xml

# Postscript, A4 Paper
manual_a4.ps:	manual.texi include.texi
	TEXINPUTS=$(srcdir):$$TEXINPUTS \
	  MAKEINFO='$(MAKEINFO) -I $(srcdir)' \
	    $(TEXI2DVI) --batch --texinfo --quiet '@afourpaper' $<
	$(DVIPS) -t a4 manual.dvi -o $@
	touch $@

# Postscript, US Letter Paper
manual_letter.ps:	manual.texi include.texi
	TEXINPUTS=$(srcdir):$$TEXINPUTS \
	  MAKEINFO='$(MAKEINFO) -I $(srcdir)' \
	    $(TEXI2DVI) --batch $<
	$(DVIPS) -t letter manual.dvi -o $@
	touch $@


#
# German Manual
#

# GNU Info
mysql.de.info:	manual.de.texi include.texi
	cd $(srcdir) && $(MAKEINFO) --no-split -I $(srcdir) $<

# Plain Text
manual.de.txt:	manual.de.texi include.texi
	cd $(srcdir) && \
	$(MAKEINFO) -I $(srcdir) --no-headers --no-split --output $@ $<

# HTML, all in one file
manual.de.html:	manual.de.texi include.texi $(srcdir)/Support/texi2html
	cd $(srcdir) && @PERL@ $(srcdir)/Support/texi2html $(TEXI2HTML_FLAGS) $<
manual_toc.de.html: manual.html

# PDF, Portable Document Format
manual.de.pdf: manual.de.texi
	sed -e 's|@image{[^}]*} *||g' <$< >manual-tmp.texi
	pdftex --interaction=nonstopmode manual-tmp.texi
	texindex manual-tmp.??
	pdftex --interaction=nonstopmode manual-tmp.texi
	texindex manual-tmp.??
	pdftex --interaction=nonstopmode manual-tmp.texi
	mv manual-tmp.pdf $@
	rm -f manual-tmp.*
	touch $@

# XML, DocBook 4.0
mysql.de.xml: manual.de.texi include.texi
	$(MAKEINFO) --force --no-ifinfo --docbook $<
	mv $@ mysql-tmp.xml
	Support/docbook-fixup.pl <mysql-tmp.xml >$@
	rm -f mysql-tmp.xml

# Postscript, A4 Paper
manual_a4.de.ps:	manual.de.texi include.texi
	TEXINPUTS=$(srcdir):$$TEXINPUTS \
	  MAKEINFO='$(MAKEINFO) -I $(srcdir)' \
	    $(TEXI2DVI) --batch --texinfo --quiet '@afourpaper' $<
	$(DVIPS) -t a4 manual.de.dvi -o $@
	touch $@

# Postscript, US Letter Paper
manual_letter.de.ps:	manual.de.texi include.texi
	TEXINPUTS=$(srcdir):$$TEXINPUTS \
	  MAKEINFO='$(MAKEINFO) -I $(srcdir)' \
	    $(TEXI2DVI) --batch $<
	$(DVIPS) -t letter manual.de.dvi -o $@
	touch $@


#
# Internals Manual
#

# GNU Info
internals.info:	internals.texi include.texi
	cd $(srcdir) && $(MAKEINFO) --no-split -I $(srcdir) $<

# Plain Text
internals.txt:	internals.texi include.texi
	cd $(srcdir) && \
	$(MAKEINFO) -I $(srcdir) --no-headers --no-split --output $@ $<

# HTML, all in one file
internals.html:	internals.texi include.texi $(srcdir)/Support/texi2html
	cd $(srcdir) && @PERL@ $(srcdir)/Support/texi2html $(TEXI2HTML_FLAGS) $<
internals_toc.html: internals.html

# PDF, Portable Document Format
internals.pdf: internals.texi
	sed -e 's|@image{[^}]*} *||g' <$< >internals-tmp.texi
	pdftex --interaction=nonstopmode internals-tmp.texi
	texindex internals-tmp.??
	pdftex --interaction=nonstopmode internals-tmp.texi
	texindex internals-tmp.??
	pdftex --interaction=nonstopmode internals-tmp.texi
	mv internals-tmp.pdf $@
	rm -f internals-tmp.*
	touch $@

# Postscript, A4 Paper
internals_a4.ps:	internals.texi include.texi
	TEXINPUTS=$(srcdir):$$TEXINPUTS \
	  MAKEINFO='$(MAKEINFO) -I $(srcdir)' \
	    $(TEXI2DVI) --batch --texinfo --quiet '@afourpaper' $<
	$(DVIPS) -t a4 internals.dvi -o $@
	touch $@

# Postscript, US Letter Paper
internals_letter.ps:	internals.texi include.texi
	TEXINPUTS=$(srcdir):$$TEXINPUTS \
	  MAKEINFO='$(MAKEINFO) -I $(srcdir)' \
	    $(TEXI2DVI) --batch $<
	$(DVIPS) -t letter internals.dvi -o $@
	touch $@


#
# Miscellaneous
#

# Target to produce NuSphere Manual
nusphere.pdf: manual.texi
	sed -e 's/@example/@smallexample/g' \
	    -e 's/@end example/@end smallexample/g' \
	    -e 's/@c ifnusphere //g' \
	    -e 's|@image{[^}]*} *||g' \
	<$< >manual-tmp.texi
	pdftex --interaction=nonstopmode manual-tmp.texi
	texindex manual-tmp.??
	pdftex --interaction=nonstopmode manual-tmp.texi
	texindex manual-tmp.??
	pdftex --interaction=nonstopmode manual-tmp.texi
	mv manual-tmp.pdf $@
	rm -f manual-tmp.*
	touch $@

# Include images for the manual in the distribution
dist-hook:
	BD=`cd $(top_srcdir); pwd`; \
	if test ! -d $(distdir)/Flags; then mkdir -p $(distdir)/Flags; fi; \
	$(INSTALL_DATA) $(srcdir)/Flags/*.gif $(srcdir)/Flags/*.eps \
		$(srcdir)/Flags/*.txt $(distdir)/Flags;
	echo "PostScript and PDF versions suitable for printing" \
		> $(distdir)/manual.ps
	echo "are available from http://www.mysql.com/Manual/" \
		>> $(distdir)/manual.ps
	echo "or any mirror site" \
		>> $(distdir)/manual.ps

GT = $(srcdir)/Support/generate-text-files.pl

../INSTALL-SOURCE:	mysql.info $(GT)
	perl -w $(GT) mysql.info "Installing" "Tutorial" > $@

# We put the description for the binary installation here so that
# people who download source wont have to see it. It is moved up to
# the toplevel by the script that makes the binary tar files.
INSTALL-BINARY:	mysql.info $(GT)
	perl -w $(GT) mysql.info "Installing binary" "Installing source" > $@

../COPYING:		mysql.info $(GT)
	perl -w $(GT) mysql.info "GPL license" "LGPL license" > $@

../COPYING.LIB:		mysql.info $(GT)
	perl -w $(GT) mysql.info "LGPL license" "Function Index" > $@

../MIRRORS:		manual.texi $(srcdir)/Support/generate-mirror-listing.pl
	perl -w $(srcdir)/Support/generate-mirror-listing.pl manual.texi > $@

# Don't update the files from bitkeeper
%::SCCS/s.%