aboutsummaryrefslogtreecommitdiff
path: root/Makefile.doc
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile.doc')
-rw-r--r--Makefile.doc215
1 files changed, 215 insertions, 0 deletions
diff --git a/Makefile.doc b/Makefile.doc
new file mode 100644
index 0000000000..9e6ec4955a
--- /dev/null
+++ b/Makefile.doc
@@ -0,0 +1,215 @@
+##########################################################################
+## # The Coq Proof Assistant / The Coq Development Team ##
+## v # INRIA, CNRS and contributors - Copyright 1999-2018 ##
+## <O___,, # (see CREDITS file for the list of authors) ##
+## \VV/ ###############################################################
+## // # This file is distributed under the terms of the ##
+## # GNU Lesser General Public License Version 2.1 ##
+## # (see LICENSE file for the text of the license) ##
+##########################################################################
+
+# Makefile for the Coq documentation
+
+# Read doc/README.md to learn about the dependencies
+
+# The main entry point :
+
+documentation: doc-$(WITHDOC) ## see $(WITHDOC) in config/Makefile
+doc-all: doc
+doc-no:
+
+.PHONY: documentation doc-all doc-no
+
+######################################################################
+### Variables
+######################################################################
+
+LATEX:=latex
+MAKEINDEX:=makeindex
+PDFLATEX:=pdflatex
+DVIPS:=dvips
+HTMLSTYLE:=coqremote
+
+# Sphinx-related variables
+SPHINXENV:=COQBIN="$(CURDIR)/bin/"
+SPHINXOPTS= -j4
+SPHINXWARNERROR ?= 1
+ifeq ($(SPHINXWARNERROR),1)
+SPHINXOPTS += -W
+endif
+SPHINXBUILD= sphinx-build
+SPHINXBUILDDIR= doc/sphinx/_build
+
+# Internal variables.
+ALLSPHINXOPTS= -d $(SPHINXBUILDDIR)/doctrees $(SPHINXOPTS)
+
+DOCCOMMON:=doc/common/version.tex doc/common/title.tex doc/common/macros.tex
+
+######################################################################
+### General rules
+######################################################################
+
+.PHONY: doc doc-html doc-pdf doc-ps
+.PHONY: stdlib full-stdlib sphinx
+
+doc: refman stdlib
+
+ifndef QUICK
+SPHINX_DEPS := coq
+endif
+
+# refman-html and refman-latex
+refman-%: $(SPHINX_DEPS)
+ $(SHOW)'SPHINXBUILD doc/sphinx ($*)'
+ $(HIDE)$(SPHINXENV) $(SPHINXBUILD) -b $* \
+ $(ALLSPHINXOPTS) doc/sphinx $(SPHINXBUILDDIR)/$*
+
+refman-pdf: refman-latex
+ +$(MAKE) -C $(SPHINXBUILDDIR)/latex
+
+refman: $(SPHINX_DEPS)
+ +$(MAKE) refman-html
+ +$(MAKE) refman-pdf
+
+# compatibility alias
+sphinx: refman-html
+
+doc-html:\
+ doc/stdlib/html/index.html refman-html
+
+doc-pdf:\
+ doc/stdlib/Library.pdf refman-pdf
+
+doc-ps:\
+ doc/stdlib/Library.ps
+
+stdlib: \
+ doc/stdlib/html/index.html doc/stdlib/Library.ps doc/stdlib/Library.pdf
+
+full-stdlib: \
+ doc/stdlib/html/index.html doc/stdlib/FullLibrary.ps doc/stdlib/FullLibrary.pdf
+
+######################################################################
+### Implicit rules
+######################################################################
+
+%.ps: %.dvi
+ (cd `dirname $<`; $(DVIPS) -q -o `basename $@` `basename $<`)
+
+######################################################################
+# Common
+######################################################################
+
+### Version
+
+doc/common/version.tex: config/Makefile
+ printf '\\newcommand{\\coqversion}{$(VERSION)}' > doc/common/version.tex
+
+######################################################################
+# Standard library
+######################################################################
+
+### Standard library (browsable html format)
+
+ifdef QUICK
+doc/stdlib/html/genindex.html:
+else
+doc/stdlib/html/genindex.html: | $(COQDOC) $(ALLVO)
+endif
+ - rm -rf doc/stdlib/html
+ $(MKDIR) doc/stdlib/html
+ $(COQDOC) -q -d doc/stdlib/html --with-header doc/common/styles/html/$(HTMLSTYLE)/header.html --with-footer doc/common/styles/html/$(HTMLSTYLE)/footer.html --multi-index --html -g \
+ -R theories Coq -R plugins Coq $(VFILES)
+ mv doc/stdlib/html/index.html doc/stdlib/html/genindex.html
+
+doc/stdlib/index-list.html: doc/stdlib/index-list.html.template doc/stdlib/make-library-index
+ ./doc/stdlib/make-library-index doc/stdlib/index-list.html doc/stdlib/hidden-files
+
+doc/stdlib/html/index.html: doc/stdlib/html/genindex.html doc/stdlib/index-list.html
+ cat doc/common/styles/html/$(HTMLSTYLE)/header.html doc/stdlib/index-list.html > $@
+ cat doc/common/styles/html/$(HTMLSTYLE)/footer.html >> $@
+
+### Standard library (light version, full version is definitely too big)
+
+ifdef QUICK
+doc/stdlib/Library.coqdoc.tex:
+else
+doc/stdlib/Library.coqdoc.tex: | $(COQDOC) $(THEORIESLIGHTVO)
+endif
+ $(COQDOC) -q -boot --gallina --body-only --latex --stdout \
+ -R theories Coq $(THEORIESLIGHTVO:.vo=.v) >> $@
+
+doc/stdlib/Library.dvi: $(DOCCOMMON) doc/stdlib/Library.coqdoc.tex doc/stdlib/Library.tex
+ (cd doc/stdlib;\
+ $(LATEX) -interaction=batchmode Library;\
+ $(LATEX) -interaction=batchmode Library > /dev/null;\
+ ../tools/show_latex_messages -no-overfull Library.log)
+
+doc/stdlib/Library.pdf: $(DOCCOMMON) doc/stdlib/Library.coqdoc.tex doc/stdlib/Library.dvi
+ (cd doc/stdlib;\
+ $(PDFLATEX) -interaction=batchmode Library;\
+ ../tools/show_latex_messages -no-overfull Library.log)
+
+### Standard library (full version if you're crazy enouth to try)
+
+doc/stdlib/FullLibrary.tex: doc/stdlib/Library.tex
+ sed -e 's/Library.coqdoc/FullLibrary.coqdoc/g;s/\\begin{document}/\\newcommand{\\textlambda}{\\ensuremath{\\lambda}}\\newcommand{\\textPi}{\\ensuremath{\\Pi}}\\begin{document}/' $< > $@
+
+ifdef QUICK
+doc/stdlib/FullLibrary.coqdoc.tex:
+ $(COQDOC) -q -boot --gallina --body-only --latex --stdout --utf8 \
+ -R theories Coq -R plugins Coq $(VFILES) > $@
+ sed -i.tmp -e 's///g' $@ && rm $@.tmp
+else
+doc/stdlib/FullLibrary.coqdoc.tex: $(COQDOC) $(ALLVO)
+ $(COQDOC) -q -boot --gallina --body-only --latex --stdout --utf8 \
+ -R theories Coq -R plugins Coq $(VFILES) > $@
+ sed -i.tmp -e 's///g' $@ && rm $@.tmp
+endif
+
+doc/stdlib/FullLibrary.dvi: $(DOCCOMMON) doc/stdlib/FullLibrary.coqdoc.tex doc/stdlib/FullLibrary.tex
+ (cd doc/stdlib;\
+ $(LATEX) -interaction=batchmode FullLibrary;\
+ $(LATEX) -interaction=batchmode FullLibrary > /dev/null;\
+ ../tools/show_latex_messages -no-overfull FullLibrary.log)
+
+doc/stdlib/FullLibrary.pdf: $(DOCCOMMON) doc/stdlib/FullLibrary.coqdoc.tex doc/stdlib/FullLibrary.dvi
+ (cd doc/stdlib;\
+ $(PDFLATEX) -interaction=batchmode FullLibrary;\
+ ../tools/show_latex_messages -no-overfull FullLibrary.log)
+
+######################################################################
+# Install all documentation files
+######################################################################
+
+.PHONY: install-doc install-doc-meta install-doc-html install-doc-printable \
+ install-doc-sphinx install-doc-stdlib-html
+
+install-doc: install-doc-meta install-doc-html install-doc-printable
+
+install-doc-meta:
+ $(MKDIR) $(FULLDOCDIR)
+ $(INSTALLLIB) doc/LICENSE $(FULLDOCDIR)/LICENSE.doc
+
+install-doc-html: install-doc-stdlib-html install-doc-sphinx
+
+install-doc-stdlib-html:
+ $(MKDIR) $(FULLDOCDIR)/html/stdlib
+ $(INSTALLLIB) doc/stdlib/html/* $(FULLDOCDIR)/html/stdlib
+
+install-doc-printable:
+ $(MKDIR) $(FULLDOCDIR)/ps $(FULLDOCDIR)/pdf
+ $(INSTALLLIB) doc/stdlib/Library.pdf $(FULLDOCDIR)/pdf
+ $(INSTALLLIB) doc/stdlib/Library.ps $(FULLDOCDIR)/ps
+
+install-doc-sphinx:
+ $(MKDIR) $(FULLDOCDIR)/sphinx
+ (for f in `cd doc/sphinx/_build; find . -type f`; do \
+ $(MKDIR) $$(dirname $(FULLDOCDIR)/sphinx/$$f);\
+ $(INSTALLLIB) doc/sphinx/_build/$$f $(FULLDOCDIR)/sphinx/$$f;\
+ done)
+
+# For emacs:
+# Local Variables:
+# mode: makefile
+# End: