doc: build and install doxygen api docs

In order to support out of tree builds and avoid hardcoding version
number, generate `doc/config.dox` from configure.
This commit is contained in:
David Bremner 2014-07-01 13:40:33 -03:00
parent 0e50854a7f
commit 1022433551
3 changed files with 39 additions and 5 deletions

12
configure vendored
View file

@ -417,6 +417,15 @@ else
have_emacs=0 have_emacs=0
fi fi
printf "Checking if doxygen is available... "
if command -v doxygen > /dev/null 2>&1; then
printf "Yes.\n"
have_doxygen=1
else
printf "No (so will not install api docs)\n"
have_doxygen=0
fi
printf "Checking if sphinx is available and supports nroff output... " printf "Checking if sphinx is available and supports nroff output... "
if hash sphinx-build > /dev/null 2>&1 && python -m sphinx.writers.manpage > /dev/null 2>&1 ; then if hash sphinx-build > /dev/null 2>&1 && python -m sphinx.writers.manpage > /dev/null 2>&1 ; then
printf "Yes.\n" printf "Yes.\n"
@ -829,6 +838,9 @@ HAVE_SPHINX=${have_sphinx}
# Whether there's a rst2man binary available for building documentation # Whether there's a rst2man binary available for building documentation
HAVE_RST2MAN=${have_rst2man} HAVE_RST2MAN=${have_rst2man}
# Whether there's a doxygen binary available for building api documentation
HAVE_DOXYGEN=${have_doxygen}
# The directory to which desktop files should be installed # The directory to which desktop files should be installed
desktop_dir = \$(prefix)/share/applications desktop_dir = \$(prefix)/share/applications

View file

@ -12,10 +12,12 @@ mkdocdeps := python $(srcdir)/$(dir)/mkdocdeps.py
# Internal variables. # Internal variables.
ALLSPHINXOPTS := -d $(DOCBUILDDIR)/doctrees $(SPHINXOPTS) $(srcdir)/$(dir) ALLSPHINXOPTS := -d $(DOCBUILDDIR)/doctrees $(SPHINXOPTS) $(srcdir)/$(dir)
APIMAN := $(DOCBUILDDIR)/man/man3/notmuch.3
DOXYFILE := $(srcdir)/$(dir)/doxygen.cfg
.PHONY: sphinx-html sphinx-texinfo sphinx-info .PHONY: sphinx-html sphinx-texinfo sphinx-info
.PHONY: install-man build-man .PHONY: install-man build-man apidocs install-apidocs
%.gz: % %.gz: %
rm -f $@ && gzip --stdout $^ > $@ rm -f $@ && gzip --stdout $^ > $@
@ -56,6 +58,23 @@ else
endif endif
touch ${MAN_ROFF_FILES} $@ touch ${MAN_ROFF_FILES} $@
install-man: install-apidocs
ifeq ($(HAVE_DOXYGEN),1)
MAN_GZIP_FILES += ${APIMAN}.gz
apidocs: $(APIMAN)
install-apidocs: apidocs
mkdir -p "$(DESTDIR)$(mandir)/man3"
install -m0644 $(DOCBUILDDIR)/man/man3/*.3.gz $(DESTDIR)/$(mandir)/man3
$(APIMAN): $(dir)/config.dox $(srcdir)/$(dir)/doxygen.cfg $(srcdir)/lib/notmuch.h
mkdir -p $(DOCBUILDDIR)/man/man3
doxygen $(DOXYFILE)
else
apidocs:
install-apidocs:
endif
# Do not try to build or install man pages if a man page converter is # Do not try to build or install man pages if a man page converter is
# not available. # not available.
ifeq ($(HAVE_SPHINX)$(HAVE_RST2MAN),00) ifeq ($(HAVE_SPHINX)$(HAVE_RST2MAN),00)
@ -74,8 +93,12 @@ install-man: ${MAN_GZIP_FILES}
cd $(DESTDIR)/$(mandir)/man1 && ln -sf notmuch.1.gz notmuch-setup.1.gz cd $(DESTDIR)/$(mandir)/man1 && ln -sf notmuch.1.gz notmuch-setup.1.gz
endif endif
$(dir)/config.dox: version.stamp
echo "PROJECT_NAME = \"Notmuch $(VERSION)\"" > $@
echo "INPUT=${srcdir}/lib/notmuch.h" >> $@
$(dir)/docdeps.mk: $(dir)/conf.py $(dir)/mkdocdeps.py $(dir)/docdeps.mk: $(dir)/conf.py $(dir)/mkdocdeps.py
$(mkdocdeps) $(srcdir)/doc $(DOCBUILDDIR) $@ $(mkdocdeps) $(srcdir)/doc $(DOCBUILDDIR) $@
CLEAN := $(CLEAN) $(DOCBUILDDIR) $(dir)/docdeps.mk $(DOCBUILDDIR)/.roff.stamp CLEAN := $(CLEAN) $(DOCBUILDDIR) $(dir)/docdeps.mk $(DOCBUILDDIR)/.roff.stamp
CLEAN := $(CLEAN) $(MAN_GZIP_FILES) $(MAN_ROFF_FILES) $(dir)/conf.pyc CLEAN := $(CLEAN) $(MAN_GZIP_FILES) $(MAN_ROFF_FILES) $(dir)/conf.pyc $(dir)/config.dox

View file

@ -4,11 +4,11 @@
# Project related configuration options # Project related configuration options
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8 DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "Notmuch 0.18" @INCLUDE = "doc/config.dox"
PROJECT_NUMBER = PROJECT_NUMBER =
PROJECT_BRIEF = PROJECT_BRIEF =
PROJECT_LOGO = PROJECT_LOGO =
OUTPUT_DIRECTORY = OUTPUT_DIRECTORY = doc/_build
CREATE_SUBDIRS = NO CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English OUTPUT_LANGUAGE = English
BRIEF_MEMBER_DESC = YES BRIEF_MEMBER_DESC = YES
@ -96,7 +96,6 @@ WARN_LOGFILE =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the input files # configuration options related to the input files
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
INPUT = lib/notmuch.h
INPUT_ENCODING = UTF-8 INPUT_ENCODING = UTF-8
FILE_PATTERNS = FILE_PATTERNS =
RECURSIVE = NO RECURSIVE = NO