mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-23 11:28:13 +01:00
3cb936b7c4
Previously only man page aliases were being added as symlinks. The addition to man_pages in conf.py automatically propagates to the list of generated info pages. Installation of the new pages is handled by existing recipes.
161 lines
5.5 KiB
Text
161 lines
5.5 KiB
Text
# -*- makefile-gmake -*-
|
|
|
|
dir := doc
|
|
|
|
# You can set these variables from the command line.
|
|
SPHINXOPTS := -q
|
|
SPHINXBUILD = env LD_LIBRARY_PATH=${NOTMUCH_BUILDDIR}/lib sphinx-build
|
|
DOCBUILDDIR := $(dir)/_build
|
|
|
|
# Internal variables.
|
|
ALLSPHINXOPTS := $(SPHINXOPTS) $(srcdir)/$(dir)
|
|
APIMAN := $(DOCBUILDDIR)/man/man3/notmuch.3
|
|
DOXYFILE := $(srcdir)/$(dir)/doxygen.cfg
|
|
|
|
MAN1_RST := $(wildcard $(srcdir)/doc/man1/*.rst)
|
|
MAN5_RST := $(wildcard $(srcdir)/doc/man5/*.rst)
|
|
MAN7_RST := $(wildcard $(srcdir)/doc/man7/*.rst)
|
|
MAN_RST_FILES := $(MAN1_RST) $(MAN5_RST) $(MAN7_RST)
|
|
ALL_RST_FILES := $(MAN_RST_FILES) $(srcdir)/doc/notmuch-emacs.rst
|
|
|
|
COPY_ROFF1 := $(patsubst %,$(DOCBUILDDIR)/man/man1/%.1,nmbug notmuch-setup)
|
|
MAN1_ROFF := $(patsubst $(srcdir)/doc/%,$(DOCBUILDDIR)/man/%,$(MAN1_RST:.rst=.1))
|
|
MAN1_ROFF := $(MAN1_ROFF) $(COPY_ROFF1)
|
|
MAN5_ROFF := $(patsubst $(srcdir)/doc/%,$(DOCBUILDDIR)/man/%,$(MAN5_RST:.rst=.5))
|
|
MAN7_ROFF := $(patsubst $(srcdir)/doc/%,$(DOCBUILDDIR)/man/%,$(MAN7_RST:.rst=.7))
|
|
MAN_ROFF_FILES := $(MAN1_ROFF) $(MAN5_ROFF) $(MAN7_ROFF)
|
|
|
|
MAN_GZIP_FILES := $(addsuffix .gz,${MAN_ROFF_FILES})
|
|
|
|
MAN1_TEXI := $(patsubst $(srcdir)/doc/man1/%.rst,$(DOCBUILDDIR)/texinfo/%.texi,$(MAN1_RST))
|
|
MAN5_TEXI := $(patsubst $(srcdir)/doc/man5/%.rst,$(DOCBUILDDIR)/texinfo/%.texi,$(MAN5_RST))
|
|
MAN7_TEXI := $(patsubst $(srcdir)/doc/man7/%.rst,$(DOCBUILDDIR)/texinfo/%.texi,$(MAN7_RST))
|
|
INFO_TEXI_FILES := $(MAN1_TEXI) $(MAN5_TEXI) $(MAN7_TEXI)
|
|
ifeq ($(WITH_EMACS),1)
|
|
INFO_TEXI_FILES += $(DOCBUILDDIR)/texinfo/notmuch-emacs.texi
|
|
endif
|
|
|
|
COPY_INFO1 := $(patsubst $(DOCBUILDDIR)/man/man1/%.1,$(DOCBUILDDIR)/texinfo/%.info,$(COPY_ROFF1))
|
|
INFO_INFO_FILES := $(INFO_TEXI_FILES:.texi=.info) $(COPY_INFO1)
|
|
|
|
.PHONY: sphinx-html sphinx-texinfo sphinx-info
|
|
|
|
.PHONY: install-man build-man apidocs install-apidocs
|
|
|
|
%.gz: %
|
|
rm -f $@ && gzip --no-name --stdout $^ > $@
|
|
|
|
ifeq ($(WITH_EMACS),1)
|
|
$(DOCBUILDDIR)/.roff.stamp $(DOCBUILDDIR)/.html.stamp $(DOCBUILDDIR)/.texi.stamp : docstring.stamp
|
|
endif
|
|
|
|
ifeq ($(HAVE_PYTHON3_CFFI),1)
|
|
DOC_PREREQS=bindings/python-cffi.stamp
|
|
else
|
|
DOC_PREREQS=
|
|
endif
|
|
|
|
sphinx-html: $(DOCBUILDDIR)/.html.stamp
|
|
|
|
$(DOCBUILDDIR)/.html.stamp: $(ALL_RST_FILES) $(DOC_PREREQS)
|
|
$(SPHINXBUILD) -b html -d $(DOCBUILDDIR)/html_doctrees $(ALLSPHINXOPTS) $(DOCBUILDDIR)/html
|
|
touch $@
|
|
|
|
sphinx-texinfo: $(DOCBUILDDIR)/.texi.stamp
|
|
|
|
$(DOCBUILDDIR)/.texi.stamp: $(ALL_RST_FILES) $(DOC_PREREQS)
|
|
$(SPHINXBUILD) -b texinfo -d $(DOCBUILDDIR)/texinfo_doctrees $(ALLSPHINXOPTS) $(DOCBUILDDIR)/texinfo
|
|
touch $@
|
|
|
|
sphinx-info: $(DOCBUILDDIR)/.info.stamp
|
|
|
|
$(DOCBUILDDIR)/.info.stamp: $(DOCBUILDDIR)/.texi.stamp $(DOC_PREREQS)
|
|
$(MAKE) -C $(DOCBUILDDIR)/texinfo info
|
|
touch $@
|
|
|
|
# Use the man page converter that is available. We should never depend
|
|
# on MAN_ROFF_FILES if a converter is not available.
|
|
${MAN_ROFF_FILES}: $(DOCBUILDDIR)/.roff.stamp
|
|
|
|
# By using $(DOCBUILDDIR)/.roff.stamp instead of ${MAN_ROFF_FILES}, we
|
|
# convey to make that a single invocation of this recipe builds all
|
|
# of the roff files. This prevents parallel make from starting an
|
|
# instance of this recipe for each roff file.
|
|
$(DOCBUILDDIR)/.roff.stamp: ${MAN_RST_FILES}
|
|
ifeq ($(HAVE_SPHINX),1)
|
|
$(SPHINXBUILD) -b man -d $(DOCBUILDDIR)/man_doctrees $(ALLSPHINXOPTS) $(DOCBUILDDIR)/man
|
|
for section in 1 5 7; do \
|
|
mkdir -p $(DOCBUILDDIR)/man/man$${section}; \
|
|
mv $(DOCBUILDDIR)/man/*.$${section} $(DOCBUILDDIR)/man/man$${section}; \
|
|
done
|
|
else
|
|
@echo "Fatal: build dependency fail."
|
|
@false
|
|
endif
|
|
touch $@
|
|
|
|
install-man: install-apidocs
|
|
|
|
ifeq ($(HAVE_DOXYGEN),1)
|
|
MAN_GZIP_FILES += ${APIMAN}.gz
|
|
apidocs: $(APIMAN)
|
|
install-apidocs: ${APIMAN}.gz
|
|
mkdir -p "$(DESTDIR)$(mandir)/man3"
|
|
install -m0644 $(filter %.3.gz,$(MAN_GZIP_FILES)) $(DESTDIR)/$(mandir)/man3
|
|
|
|
$(APIMAN): $(dir)/config.dox $(srcdir)/$(dir)/doxygen.cfg $(srcdir)/lib/notmuch.h
|
|
mkdir -p $(DOCBUILDDIR)/man/man3
|
|
doxygen $(DOXYFILE)
|
|
rm -f $(DOCBUILDDIR)/man/man3/_*.3
|
|
perl -pi -e 's/^[.]RI "\\fI/.RI "\\fP/' $(APIMAN)
|
|
else
|
|
apidocs:
|
|
install-apidocs:
|
|
endif
|
|
|
|
# Do not try to build or install man pages if a man page converter is
|
|
# not available.
|
|
ifeq ($(HAVE_SPHINX),0)
|
|
build-man:
|
|
install-man:
|
|
@echo "No sphinx, will not install man pages."
|
|
else
|
|
|
|
# it should be safe to depend on the stamp file, because it is created
|
|
# after all roff files are moved into place.
|
|
${MAN_GZIP_FILES}: ${DOCBUILDDIR}/.roff.stamp
|
|
|
|
build-man: ${MAN_GZIP_FILES}
|
|
install-man: ${MAN_GZIP_FILES}
|
|
mkdir -m0755 -p "$(DESTDIR)$(mandir)/man1"
|
|
mkdir -m0755 -p "$(DESTDIR)$(mandir)/man5"
|
|
mkdir -m0755 -p "$(DESTDIR)$(mandir)/man7"
|
|
install -m0644 $(filter %.1.gz,$(MAN_GZIP_FILES)) $(DESTDIR)/$(mandir)/man1
|
|
install -m0644 $(filter %.5.gz,$(MAN_GZIP_FILES)) $(DESTDIR)/$(mandir)/man5
|
|
install -m0644 $(filter %.7.gz,$(MAN_GZIP_FILES)) $(DESTDIR)/$(mandir)/man7
|
|
endif
|
|
|
|
ifneq ($(HAVE_SPHINX)$(HAVE_MAKEINFO),11)
|
|
build-info:
|
|
@echo "Missing sphinx or makeinfo, not building info pages"
|
|
else
|
|
build-info: $(DOCBUILDDIR)/.info.stamp
|
|
endif
|
|
|
|
ifneq ($(HAVE_SPHINX)$(HAVE_MAKEINFO)$(HAVE_INSTALL_INFO),111)
|
|
install-info:
|
|
@echo "Missing prerequisites, not installing info pages"
|
|
else
|
|
install-info: build-info
|
|
mkdir -m0755 -p "$(DESTDIR)$(infodir)"
|
|
install -m0644 $(INFO_INFO_FILES) $(DESTDIR)$(infodir)
|
|
for file in $(INFO_INFO_FILES); do install-info $$file $(DESTDIR)$(infodir)/dir; done
|
|
endif
|
|
|
|
$(dir)/config.dox: version.stamp
|
|
echo "PROJECT_NAME = \"Notmuch $(VERSION)\"" > $@
|
|
echo "INPUT=${srcdir}/lib/notmuch.h" >> $@
|
|
|
|
CLEAN := $(CLEAN) $(DOCBUILDDIR) $(DOCBUILDDIR)/.roff.stamp $(DOCBUILDDIR)/.texi.stamp
|
|
CLEAN := $(CLEAN) $(DOCBUILDDIR)/.html.stamp $(DOCBUILDDIR)/.info.stamp
|
|
CLEAN := $(CLEAN) $(MAN_GZIP_FILES) $(MAN_ROFF_FILES) $(dir)/conf.pyc $(dir)/config.dox
|