Files
mercury/doc/Mmakefile
Mark Brown 70fbb98c1b Remove msc.1 dependency, since it is no longer built.
Estimated hours taken: 0.1

doc/Mmakefile:
	Remove msc.1 dependency, since it is no longer built.
1999-03-22 05:31:34 +00:00

264 lines
7.3 KiB
Plaintext

#-----------------------------------------------------------------------------#
# Copyright (C) 1996-1999 The 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 $(MERCURY_DIR)/Mmake.common
#-----------------------------------------------------------------------------#
TEXI2DVI=texi2dvi
MAKEINFO=makeinfo
TEXI2HTML=perl texi2html
TEXI2HTML_SPLIT=perl texi2html -split
DVIPS=dvips
# INSTALL_INFO is defined in ../Mmake.common
#-----------------------------------------------------------------------------#
.SUFFIXES: .texi .dvi .ps .text
.texi.dvi:
$(TEXI2DVI) $<
.texi.text:
$(MAKEINFO) --no-headers -o $@ $<
.dvi.ps:
$(DVIPS) -o $@ $<
%.html %_toc.html: %.texi
$(TEXI2HTML) $<
%_1.html: %.texi
$(TEXI2HTML_SPLIT) $<
%.1: ../scripts/% make_manpage
MERCURY_PROFILER=../profiler/mercury_profile \
MERCURY_COMPILER=../compiler/mercury_compile \
MERCURY_MKINIT=../util/mkinit \
./make_manpage $< > $@
#-----------------------------------------------------------------------------#
.PHONY: all
all: info dvi html manpages mdb_doc mdb_command_list mdb_command_test.inp
#all: ps text
#-----------------------------------------------------------------------------#
.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
.PHONY: ps
ps: user_guide.ps reference_manual.ps library.ps faq.ps transition_guide.ps
.PHONY: text
text: user_guide.text reference_manual.text library.text faq.text \
transition_guide.text
.PHONY: split_html
split_html: mercury.html user_guide_1.html reference_manual_1.html \
library_1.html faq_1.html transition_guide_1.html
.PHONY: manpages
manpages: c2init.1 mmc.1 mgnuc.1 ml.1 mmake.1 mdb.1 mprof.1 \
mprof_merge_runs.1 mtags.1
#-----------------------------------------------------------------------------#
mercury_user_guide.info: user_guide.texi
$(MAKEINFO) $<
mercury_ref.info: reference_manual.texi
$(MAKEINFO) $<
mercury_trans_guide.info: transition_guide.texi
$(MAKEINFO) $<
mercury_faq.info: faq.texi
$(MAKEINFO) $<
mercury_library.info: library.texi
$(MAKEINFO) $<
#-----------------------------------------------------------------------------#
mdb_doc: generate_mdb_doc mercury_user_guide.info mdb_categories
./generate_mdb_doc
mdb_command_list: generate_mdb_command_list mdb_doc
./generate_mdb_command_list < mdb_doc > mdb_command_list
mdb_command_test.inp: generate_mdb_command_test mdb_doc
./generate_mdb_command_test < mdb_doc > mdb_command_test.inp
#-----------------------------------------------------------------------------#
# The following rules automatically build the library documentation
# by extracting the module interfaces from the library source code.
# Note that the private_builtin.m module is just an implementation
# detail of the library, so it is not documented.
library-menu.texi: $(LIBRARY_DIR)/*.m
{ \
echo ""; \
for filename in $(LIBRARY_DIR)/*.m; do \
case $$filename in \
$(LIBRARY_DIR)/private_builtin.m) \
;; \
*) \
echo "* `basename $$filename .m`::"; \
;; \
esac; \
done; \
} > library-menu.texi
library-chapters.texi: $(LIBRARY_DIR)/*.m
for filename in $(LIBRARY_DIR)/*.m; do \
case $$filename in \
$(LIBRARY_DIR)/private_builtin.m) \
;; \
*) \
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 's/}/@}/g' \
-e 'p' \
"$$filename"; \
echo "@end example"; \
echo ""; \
;; \
esac; \
done > library-chapters.texi
library.dvi library_toc.html mercury_library.info: \
library-menu.texi library-chapters.texi
#-----------------------------------------------------------------------------#
.PHONY: dist
dist: tar
.PHONY: tar
tar: doc.text.tar.gz doc.ps.tar.gz
doc.text.tar.gz: text
tar -cf - *.text | gzip > doc.text.tar.gz
doc.ps.tar.gz: ps
tar -cf - *.ps | gzip > doc.ps.tar.gz
#-----------------------------------------------------------------------------#
.PHONY: install
install: install_info install_html install_dvi install_manpages install_mdb_doc
# install_text install_ps
.PHONY: install_dirs
install_dirs:
-[ -d $(INSTALL_INFO_DIR) ] || mkdir -p $(INSTALL_INFO_DIR)
-[ -d $(INSTALL_HTML_DIR) ] || mkdir -p $(INSTALL_HTML_DIR)
-[ -d $(INSTALL_DVI_DIR) ] || mkdir -p $(INSTALL_DVI_DIR)
-[ -d $(INSTALL_TEXT_DIR) ] || mkdir -p $(INSTALL_TEXT_DIR)
-[ -d $(INSTALL_PS_DIR) ] || mkdir -p $(INSTALL_PS_DIR)
-[ -d $(INSTALL_MAN_DIR)/man1 ] || \
mkdir -p $(INSTALL_MAN_DIR)/man1
-[ -d $(INSTALL_MDB_DOC_DIR) ] || mkdir -p $(INSTALL_MDB_DOC_DIR)
-[ -d $(INSTALL_WEBPAGE_DIR) ] || mkdir -p $(INSTALL_WEBPAGE_DIR)
.PHONY: install_info
install_info: info install_dirs
-cp *.info* $(INSTALL_INFO_DIR)
# Update the .../info/dir file.
-if [ -x "$(INSTALL_INFO)" ]; then \
$(INSTALL_INFO) $(INSTALL_INFO_DIR)/mercury.info; \
fi
.PHONY: install_html
install_html: html install_dirs
cp *.html $(INSTALL_HTML_DIR)
.PHONY: install_dvi
install_dvi: dvi install_dirs
cp *.dvi $(INSTALL_DVI_DIR)
.PHONY: install_text
install_text: text install_dirs
cp *.txt $(INSTALL_TEXT_DIR)
.PHONY: install_ps
install_ps: ps install_dirs
cp *.ps $(INSTALL_PS_DIR)
.PHONY: install_manpages
install_manpages: manpages install_dirs
cp *.1 $(INSTALL_MAN_DIR)/man1
.PHONY: install_mdb_doc
install_mdb_doc: mdb_doc install_dirs
cp mdb_doc $(INSTALL_MDB_DOC_DIR)
# The uninstall rule here only removes the info files; the others
# are removed by the top-level uninstall rule.
.PHONY: uninstall
uninstall:
-cd $(INSTALL_INFO_DIR); rm mercury*.info*
#-----------------------------------------------------------------------------#
# This install is for installing the Mercury webpage, which goes to
# a different directory (supplied by the environment variable
# INSTALL_WEBPAGE_DIR).
.PHONY: install_webpage
install_webpage: library-chapters.texi split_html ps install_dirs
cp *.ps $(INSTALL_WEBPAGE_DIR)
for file in $(INSTALL_WEBPAGE_DIR)/*.ps ; do \
gzip -f -9 $$file ; \
done
cp *.html $(INSTALL_WEBPAGE_DIR)
#-----------------------------------------------------------------------------#
clean: distclean clean_texi
.PHONY: distclean
distclean:
rm -f *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr
.PHONY: clean_texi
clean_texi:
rm -f library-menu.texi library-chapters.texi
realclean: realclean_texi realclean_manpages
.PHONY: realclean_texi
realclean_texi:
rm -f library*.html user_guide*.html reference_manual*.html
rm -f faq*.html transition_guide*.html
rm -f mercury_*.info* *.dvi *.text *.ps
.PHONY: realclean_manpages
realclean_manpages:
rm -f *.1
#-----------------------------------------------------------------------------#