1EXTRA_DIST = 2sphinxbuilddir = $(builddir)/_build 3abs_sphinxbuilddir = $(abs_builddir)/_build 4 5if GENERATE_DOCS 6 7sphinxopts = 8sphinxopts += -v 9sphinxopts += -E 10sphinxopts += -a 11sphinxopts += -W 12sphinxopts += -j 2 13sphinxopts += -c "${abs_srcdir}" 14 15static_sources = 16include static/static_sources.mk 17 18EXTRA_DIST += static/static_sources.mk 19 20# ARM 21rst_arm_sources = 22rst_arm_sources += index.rst 23rst_arm_sources += manpages.rst 24rst_arm_sources += umls.rst 25include arm/rst_arm_sources.mk 26 27EXTRA_DIST += arm/rst_arm_sources.mk 28 29main_sources = $(rst_arm_sources) conf.py $(static_sources) 30 31# mans 32rst_man_sources = 33include man/rst_man_sources.mk 34 35EXTRA_DIST += man/rst_man_sources.mk 36 37rst_arm_sources += grammar/grammar.rst 38rst_arm_sources += grammar/grammar-ca-parser.rst 39rst_arm_sources += grammar/grammar-d2-parser.rst 40rst_arm_sources += grammar/grammar-dhcp4-parser.rst 41rst_arm_sources += grammar/grammar-dhcp6-parser.rst 42rst_arm_sources += grammar/grammar-netconf-parser.rst 43 44man8s = 45include man/man8s.mk 46 47EXTRA_DIST += man/man8s.mk 48 49man_sources = $(rst_man_sources) conf.py 50 51EXTRA_DIST += $(main_sources) $(man_sources) mes2doc.py api2doc.py $(man8s) 52 53# list of messages files that are used to generate kea-messages.rst and then kea-messages.pdf 54mes_files = 55include $(srcdir)/mes_files.mk 56 57EXTRA_DIST += mes_files.mk 58 59# list of api files that are used to generate api.rst 60api_files = 61include $(top_srcdir)/src/share/api/api_files.mk 62 63if HAVE_PDFLATEX 64all: html mans pdf text 65else 66all: html mans text 67endif 68 69# build the list of message files 70mes-files.txt: mes_files.mk 71 @sed 's;mes_files .*)/;;' $< > $@ 72 73# this rule is only used for development purposes and is not used in official 74# build process as kea-messages.rst is always generated via sphinx's conf.py 75$(srcdir)/kea-messages.rst: $(mes_files) mes2doc.py 76 $(PYTHON) $(srcdir)/mes2doc.py -o $@ $(mes_files) 77 78# build the list of api files 79api-files.txt: $(top_srcdir)/src/share/api/api_files.mk 80 @sed 's;api_files .*)/;;' $< > $@ 81 82# some tools do not use this makefile but still need generate files. 83EXTRA_DIST += mes-files.txt api-files.txt 84 85# this rule is only used for development purposes and is not used in official 86# build process as api.rst is always generated via sphinx's conf.py 87$(srcdir)/api.rst: $(api_files) api-files.txt api2doc.py 88 $(PYTHON) $(srcdir)/api2doc.py -o $@ $(api_files) 89 90$(srcdir)/arm/platforms.rst: 91 rm -f $(srcdir)/arm/platforms.rst 92 cp $(srcdir)/../../platforms.rst $(srcdir)/arm/platforms.rst 93 94# UML files 95 96if HAVE_PLANTUML 97.uml.png: 98 @PLANTUML@ $< 99 100.uml.svg: 101 @PLANTUML@ -svg $< 102endif 103 104EXTRA_DIST += uml/appendRequestedOptions.png 105EXTRA_DIST += uml/appendRequestedOptions.svg 106EXTRA_DIST += uml/appendRequestedOptions.uml 107EXTRA_DIST += uml/appendRequestedVendorOptions.png 108EXTRA_DIST += uml/appendRequestedVendorOptions.svg 109EXTRA_DIST += uml/appendRequestedVendorOptions.uml 110EXTRA_DIST += uml/assign-lease4.png 111EXTRA_DIST += uml/assign-lease4.svg 112EXTRA_DIST += uml/assign-lease4.uml 113EXTRA_DIST += uml/buildCfgOptionList.png 114EXTRA_DIST += uml/buildCfgOptionList.svg 115EXTRA_DIST += uml/buildCfgOptionList.uml 116EXTRA_DIST += uml/currentHost4.png 117EXTRA_DIST += uml/currentHost4.svg 118EXTRA_DIST += uml/currentHost4.uml 119EXTRA_DIST += uml/lease-states.png 120EXTRA_DIST += uml/lease-states.svg 121EXTRA_DIST += uml/lease-states.uml 122EXTRA_DIST += uml/main-loop.png 123EXTRA_DIST += uml/main-loop.svg 124EXTRA_DIST += uml/main-loop.uml 125EXTRA_DIST += uml/packet4.png 126EXTRA_DIST += uml/packet4.svg 127EXTRA_DIST += uml/packet4.uml 128EXTRA_DIST += uml/request4-lease.png 129EXTRA_DIST += uml/request4-lease.svg 130EXTRA_DIST += uml/request4-lease.uml 131EXTRA_DIST += uml/request4.png 132EXTRA_DIST += uml/request4.svg 133EXTRA_DIST += uml/request4.uml 134EXTRA_DIST += uml/requestLease4.png 135EXTRA_DIST += uml/requestLease4.svg 136EXTRA_DIST += uml/requestLease4.uml 137EXTRA_DIST += uml/select4.png 138EXTRA_DIST += uml/select4.svg 139EXTRA_DIST += uml/select4.uml 140EXTRA_DIST += uml/tkey.png 141EXTRA_DIST += uml/tkey.svg 142EXTRA_DIST += uml/tkey.uml 143EXTRA_DIST += uml/update.png 144EXTRA_DIST += uml/update.svg 145EXTRA_DIST += uml/update.uml 146 147PDFLATEX_AND_OPTS=$(PDFLATEX) -interaction nonstopmode 148 149pdf: $(main_sources) api-files.txt mes-files.txt $(srcdir)/arm/platforms.rst 150 $(SPHINXBUILD) -M latex $(srcdir) $(sphinxbuilddir) $(sphinxopts) 151 -cd $(abs_sphinxbuilddir)/latex && $(PDFLATEX_AND_OPTS) kea-arm.tex 152 -cd $(abs_sphinxbuilddir)/latex && $(PDFLATEX_AND_OPTS) kea-arm.tex 153 -cd $(abs_sphinxbuilddir)/latex && $(PDFLATEX_AND_OPTS) kea-arm.tex 154 -cd $(abs_sphinxbuilddir)/latex && makeindex -s python.ist kea-arm.idx 155 -cd $(abs_sphinxbuilddir)/latex && $(PDFLATEX_AND_OPTS) kea-arm.tex 156 cd $(abs_sphinxbuilddir)/latex && $(PDFLATEX_AND_OPTS) kea-arm.tex 157 -cd $(abs_sphinxbuilddir)/latex && $(PDFLATEX_AND_OPTS) kea-messages.tex 158 -cd $(abs_sphinxbuilddir)/latex && $(PDFLATEX_AND_OPTS) kea-messages.tex 159 -cd $(abs_sphinxbuilddir)/latex && $(PDFLATEX_AND_OPTS) kea-messages.tex 160 -cd $(abs_sphinxbuilddir)/latex && makeindex -s python.ist kea-messages.idx 161 -cd $(abs_sphinxbuilddir)/latex && $(PDFLATEX_AND_OPTS) kea-messages.tex 162 cd $(abs_sphinxbuilddir)/latex && $(PDFLATEX_AND_OPTS) kea-messages.tex 163 164html: $(main_sources) api-files.txt mes-files.txt $(srcdir)/arm/platforms.rst 165 $(SPHINXBUILD) -M html $(srcdir) $(sphinxbuilddir) $(sphinxopts) 166 167# This target is not used anywhere, but people who prefer single page docs 168# can do make -C doc/sphinx singlehtml and then enjoy their docs being 169# generated in doc/sphinx/_build/singlehtml 170singlehtml: $(main_sources) api-files.txt mes-files.txt $(srcdir)/arm/platforms.rst 171 $(SPHINXBUILD) -M singlehtml $(srcdir) $(sphinxbuilddir) $(sphinxopts) 172 173text: $(main_sources) api-files.txt mes-files.txt $(srcdir)/arm/platforms.rst 174 $(SPHINXBUILD) -M text $(srcdir) $(sphinxbuilddir) $(sphinxopts) 175 176$(man8s): mans 177 178mans: $(man_sources) api-files.txt mes-files.txt 179 $(SPHINXBUILD) -M man $(srcdir) $(sphinxbuilddir) $(sphinxopts) 180 181clean-local: 182 rm -rf $(sphinxbuilddir) 183 rm -f $(srcdir)/mes-files.txt $(srcdir)/api-files.txt 184 rm -f $(srcdir)/kea-messages.rst $(srcdir)/api.rst 185 rm -f $(srcdir)/arm/platforms.rst 186 187.PHONY: all pdf html mans 188 189endif 190 191# install and uninstall can occur with GENERATE_DOCS and without it 192# so we want to install all when GENERATE_DOCS is and 193# just mans when GENERATE_DOCS is not used, and when man files exists (e.g release tarball) 194install-data-local: 195 mkdir -p $(DESTDIR)$(docdir) 196if GENERATE_DOCS 197 cp -r $(sphinxbuilddir)/html $(DESTDIR)$(docdir) 198if HAVE_PDFLATEX 199 ${INSTALL_DATA} $(sphinxbuilddir)/latex/kea-arm.pdf $(DESTDIR)$(docdir) 200 ${INSTALL_DATA} $(sphinxbuilddir)/latex/kea-messages.pdf $(DESTDIR)$(docdir) 201endif 202 ${MKDIR_P} ${DESTDIR}${mandir}/man8 203 ${INSTALL_DATA} $(man8s) ${DESTDIR}${mandir}/man8/ 204else 205if INSTALL_MANS 206 ${MKDIR_P} ${DESTDIR}${mandir}/man8 207 ${INSTALL_DATA} $(sphinxbuilddir)/man/*.8 ${DESTDIR}${mandir}/man8/ 208endif 209endif 210 211uninstall-local: 212 rm -rf $(DESTDIR)$(docdir) 213 214# There are sometimes conflicts when more then one sphinx-build is run at a time. 215# This target blocks running anything in parallel in this Makefile, 216# all is run serially. 217 218.NOTPARALLEL: 219