#-----------------------------------------------------------------------------#
# Copyright (C) 1995 University of Melbourne.
# This file may only be copied under the terms of the GNU General
# Public License - see the file COPYING in the Mercury distribution.
#-----------------------------------------------------------------------------#

# Mmake - Mmake file for the Mercury documentation.

MAIN_TARGET=all

MERCURY_DIR=..
include ../Mmake.common

#-----------------------------------------------------------------------------#

TEXI2DVI=texi2dvi
MAKEINFO=makeinfo
TEXI2HTML=./texi2html

#-----------------------------------------------------------------------------#

.PHONY: all
all: info dvi html

#-----------------------------------------------------------------------------#

.PHONY: dvi
dvi: user_guide.dvi reference_manual.dvi library.dvi faq.dvi \
	transition_guide.dvi

.PHONY: info
info: mercury.info mercury_ref.info mercury_user_guide.info \
	mercury_library.info mercury_faq.info mercury_trans_guide.info

.PHONY: html
html: mercury.html user_guide_toc.html reference_manual_toc.html \
	library_toc.html faq_toc.html transition_guide_toc.html

user_guide.dvi: user_guide.texi
	$(TEXI2DVI) user_guide.texi
reference_manual.dvi: reference_manual.texi
	$(TEXI2DVI) reference_manual.texi
transition_guide.dvi: transition_guide.texi
	$(TEXI2DVI) transition_guide.texi
faq.dvi: faq.texi
	$(TEXI2DVI) faq.texi
library.dvi: library.texi library-menu.texi library-chapters.texi
	$(TEXI2DVI) library.texi

mercury_user_guide.info: user_guide.texi
	$(MAKEINFO) user_guide.texi
mercury_ref.info: reference_manual.texi
	$(MAKEINFO) reference_manual.texi
mercury_trans_guide.info: transition_guide.texi
	$(MAKEINFO) transition_guide.texi
mercury_faq.info: faq.texi
	$(MAKEINFO) faq.texi
mercury_library.info: library.texi library-menu.texi library-chapters.texi
	$(MAKEINFO) library.texi

user_guide_toc.html: user_guide.texi
	$(TEXI2HTML) user_guide.texi
reference_manual_toc.html: reference_manual.texi
	$(TEXI2HTML) reference_manual.texi
transition_guide_toc.html: transition_guide.texi
	$(TEXI2HTML) transition_guide.texi
faq_toc.html: faq.texi
	$(TEXI2HTML) faq.texi
library_toc.html: library.texi library-menu.texi library-chapters.texi
	$(TEXI2HTML) library.texi

# The following rules automatically build the library documentation
# by extracting the module interfaces from the library source code.

library-menu.texi: ../library/*.m
	{ \
	echo ""; \
	for file in ../library/*.m; do \
		echo "* `basename $$file .m`::"; \
	done; \
	} > library-menu.texi

library-chapters.texi: ../library/*.m
	for filename in ../library/*.m; do \
		file="`basename $$filename .m`"; \
		echo "@node $$file"; \
		echo "@chapter $$file"; \
		echo "@example"; \
		sed -n -e '/:- implementation/q' \
			-e 's/^%----*----% *$$/%--------------------------------------------------%/' \
			-e 's/{/@{/g' \
			-e 's/}/@}/g' \
			-e 'p' \
			"$$filename"; \
		echo "@end example"; \
		echo ""; \
	done > library-chapters.texi

#-----------------------------------------------------------------------------#

.PHONY: install
install: install_info install_html install_dvi

.PHONY: install_info
install_info: info
	-[ -d INSTALL_INFO_DIR ] || mkdir -p $(INSTALL_INFO_DIR)
	cp *.info* $(INSTALL_INFO_DIR)

.PHONY: install_html
install_html: html
	-[ -d INSTALL_HTML_DIR ] || mkdir -p $(INSTALL_HTML_DIR)
	cp *.html $(INSTALL_HTML_DIR)

.PHONY: install_dvi
install_dvi: dvi
	-[ -d INSTALL_DVI_DIR ] || mkdir -p $(INSTALL_DVI_DIR)
	cp *.dvi $(INSTALL_DVI_DIR)

#-----------------------------------------------------------------------------#

clean: clean_texi

.PHONY: clean_texi
clean_texi:
	rm -f *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr
	rm -f library-menu.texi library-chapters.texi

realclean: realclean_texi

.PHONY: realclean_texi
realclean_texi:
	rm -f library*.html user_guide*.html reference_manual*.html
	rm -f mercury_*.info* *.dvi

#-----------------------------------------------------------------------------#
