[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] docs: check for documentation generation tools in docs/configure.
On Thu, Dec 06, 2012 at 11:06:54AM +0000, Ian Campbell wrote: > It is sometimes hard to discover all the optional tools that should be > on a system to build all available Xen documentation. By checking for > documentation generation tools at ./configure time and displaying a > warning, Xen packagers will more easily learn about new optional build > dependencies, like markdown, when they are introduced. > > Based on a patch by Matt Wilson. Changed to use a separate > docs/configure which is called from the top-level in the same manner > as stubdoms. > > Rerun autogen.sh and "git add docs/configure" after applying this patch. > > Signed-off-by: Matt Wilson <msw@xxxxxxxxxx> > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> > Cc: "Fioravante, Matthew E." <Matthew.Fioravante@xxxxxxxxxx> > Cc: Roger Pau Monné <roger.pau@xxxxxxxxxx> For the change to introduce docs/configure: Acked-by: Matt Wilson <msw@xxxxxxxxxx> > --- > Applies on top of Matthew's "Add autoconf to stubdom" and "Add a top > level configure script". > --- > .gitignore | 1 + > .hgignore | 1 + > README | 2 +- > autogen.sh | 15 ++++++--- > config/Docs.mk.in | 20 +++++++++++ > configure | 4 +- > configure.ac | 2 +- > docs/Docs.mk | 12 ------- > docs/Makefile | 86 +++++++++++++++++++++++++++++++++--------------- > docs/configure.ac | 27 +++++++++++++++ > docs/figs/Makefile | 2 +- > docs/xen-api/Makefile | 7 +++- > m4/docs_tool.m4 | 17 ++++++++++ > 13 files changed, 146 insertions(+), 50 deletions(-) > create mode 100644 config/Docs.mk.in > delete mode 100644 docs/Docs.mk > create mode 100644 docs/configure.ac > create mode 100644 m4/docs_tool.m4 > > diff --git a/.gitignore b/.gitignore > index 46ce63a..a4cdd6c 100644 > --- a/.gitignore > +++ b/.gitignore > @@ -120,6 +120,7 @@ config.status > config.cache > config/Tools.mk > config/Stubdom.mk > +config/Docs.mk > tools/blktap2/daemon/blktapctrl > tools/blktap2/drivers/img2qcow > tools/blktap2/drivers/lock-util > diff --git a/.hgignore b/.hgignore > index 0392a56..da3a7e6 100644 > --- a/.hgignore > +++ b/.hgignore > @@ -312,6 +312,7 @@ > ^tools/config\.cache$ > ^config/Tools\.mk$ > ^config/Stubdom\.mk$ > +^config/Docs\.mk$ > ^xen/\.banner.*$ > ^xen/BLOG$ > ^xen/System.map$ > diff --git a/README b/README > index f5d5530..88401f7 100644 > --- a/README > +++ b/README > @@ -57,7 +57,6 @@ provided by your OS distributor: > * GNU gettext > * 16-bit x86 assembler, loader and compiler (dev86 rpm or bin86 & bcc > debs) > * ACPI ASL compiler (iasl) > - * markdown > > In addition to the above there are a number of optional build > prerequisites. Omitting these will cause the related features to be > @@ -65,6 +64,7 @@ disabled at compile time: > * Development install of Ocaml (e.g. ocaml-nox and > ocaml-findlib). Required to build ocaml components which > includes the alternative ocaml xenstored. > + * markdown > > Second, you need to acquire a suitable kernel for use in domain 0. If > possible you should use a kernel provided by your OS distributor. If > diff --git a/autogen.sh b/autogen.sh > index 1456d94..b5c9688 100755 > --- a/autogen.sh > +++ b/autogen.sh > @@ -1,7 +1,12 @@ > #!/bin/sh -e > autoconf > -cd tools > -autoconf > -autoheader > -cd ../stubdom > -autoconf > +( cd tools > + autoconf > + autoheader > +) > +( cd stubdom > + autoconf > +) > +( cd docs > + autoconf > +) > diff --git a/config/Docs.mk.in b/config/Docs.mk.in > new file mode 100644 > index 0000000..b6ab6fe > --- /dev/null > +++ b/config/Docs.mk.in > @@ -0,0 +1,20 @@ > +# Prefix and install folder > +prefix := @prefix@ > +PREFIX := $(prefix) > +exec_prefix := @exec_prefix@ > +libdir := @libdir@ > +LIBDIR := $(libdir) > + > +# Tools > +PS2PDF := @PS2PDF@ > +DVIPS := @DVIPS@ > +LATEX := @LATEX@ > +FIG2DEV := @FIG2DEV@ > +LATEX2HTML := @LATEX2HTML@ > +DOXYGEN := @DOXYGEN@ > +POD2MAN := @POD2MAN@ > +POD2HTML := @POD2HTML@ > +POD2TEXT := @POD2TEXT@ > +DOT := @DOT@ > +NEATO := @NEATO@ > +MARKDOWN := @MARKDOWN@ > diff --git a/configure b/configure > index 649708f..a307f3a 100755 > --- a/configure > +++ b/configure > @@ -606,7 +606,7 @@ enable_option_checking > ac_precious_vars='build_alias > host_alias > target_alias' > -ac_subdirs_all='tools stubdom' > +ac_subdirs_all='tools docs stubdom' > > # Initialize some variables set by options. > ac_init_help= > @@ -1675,7 +1675,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please > don't use this var. > > > > -subdirs="$subdirs tools stubdom" > +subdirs="$subdirs tools docs stubdom" > > > cat >confcache <<\_ACEOF > diff --git a/configure.ac b/configure.ac > index 0497d97..637b35b 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -6,6 +6,6 @@ AC_INIT([Xen Hypervisor], m4_esyscmd([./version.sh > ./xen/Makefile]), > [xen-devel@xxxxxxxxxxxxx], [xen], [http://www.xen.org/]) > AC_CONFIG_SRCDIR([./xen/common/kernel.c]) > > -AC_CONFIG_SUBDIRS([tools stubdom]) > +AC_CONFIG_SUBDIRS([tools docs stubdom]) > > AC_OUTPUT() > diff --git a/docs/Docs.mk b/docs/Docs.mk > deleted file mode 100644 > index aa653d3..0000000 > --- a/docs/Docs.mk > +++ /dev/null > @@ -1,12 +0,0 @@ > -PS2PDF := ps2pdf > -DVIPS := dvips > -LATEX := latex > -FIG2DEV := fig2dev > -LATEX2HTML := latex2html > -DOXYGEN := doxygen > -POD2MAN := pod2man > -POD2HTML := pod2html > -POD2TEXT := pod2text > -DOT := dot > -NEATO := neato > -MARKDOWN := markdown > diff --git a/docs/Makefile b/docs/Makefile > index 03f141a..03621f7 100644 > --- a/docs/Makefile > +++ b/docs/Makefile > @@ -2,7 +2,7 @@ > > XEN_ROOT=$(CURDIR)/.. > include $(XEN_ROOT)/Config.mk > -include $(XEN_ROOT)/docs/Docs.mk > +include $(XEN_ROOT)/config/Docs.mk > > VERSION = xen-unstable > > @@ -26,10 +26,12 @@ all: build > > .PHONY: build > build: html txt man-pages figs > - @if which $(DOT) 1>/dev/null 2>/dev/null ; then \ > - $(MAKE) -C xen-api build ; else \ > - echo "Graphviz (dot) not installed; skipping xen-api." ; fi > +ifdef DOT > + $(MAKE) -C xen-api build > rm -f *.aux *.dvi *.bbl *.blg *.glo *.idx *.ilg *.log *.ind *.toc > +else > + @echo "Graphviz (dot) not installed; skipping xen-api." > +endif > > .PHONY: dev-docs > dev-docs: python-dev-docs > @@ -39,30 +41,37 @@ html: $(DOC_HTML) html/index.html > > .PHONY: txt > txt: > - @if which $(POD2TEXT) 1>/dev/null 2>/dev/null; then \ > - $(MAKE) $(DOC_TXT); else \ > - echo "pod2text not installed; skipping text outputs."; fi > +ifdef POD2TEXT > + $(MAKE) $(DOC_TXT) > +else > + @echo "pod2text not installed; skipping text outputs." > +endif > > .PHONY: figs > figs: > - @set -e ; if which $(FIG2DEV) 1>/dev/null 2>/dev/null; then \ > - set -x; $(MAKE) -C figs ; else \ > - echo "fig2dev (transfig) not installed; skipping figs."; fi > +ifdef FIG2DEV > + set -x; $(MAKE) -C figs > +else > + @echo "fig2dev (transfig) not installed; skipping figs." > +endif > > .PHONY: python-dev-docs > python-dev-docs: > - @mkdir -v -p api/tools/python > - @set -e ; if which $(DOXYGEN) 1>/dev/null 2>/dev/null; then \ > - echo "Running doxygen to generate Python tools APIs ... "; \ > - $(DOXYGEN) Doxyfile; \ > - $(MAKE) -C api/tools/python/latex ; else \ > - echo "Doxygen not installed; skipping python-dev-docs."; fi > +ifdef DOXYGEN > + @echo "Running doxygen to generate Python tools APIs ... " > + mkdir -v -p api/tools/python > + $(DOXYGEN) Doxyfile && $(MAKE) -C api/tools/python/latex > +else > + @echo "Doxygen not installed; skipping python-dev-docs." > +endif > > .PHONY: man-pages > man-pages: > - @if which $(POD2MAN) 1>/dev/null 2>/dev/null; then \ > - $(MAKE) $(DOC_MAN1) $(DOC_MAN5); else \ > - echo "pod2man not installed; skipping man-pages."; fi > +ifdef POD2MAN > + $(MAKE) $(DOC_MAN1) $(DOC_MAN5) > +else > + @echo "pod2man not installed; skipping man-pages." > +endif > > man1/%.1: man/%.pod.1 Makefile > $(INSTALL_DIR) $(@D) > @@ -87,6 +96,7 @@ clean: > > .PHONY: distclean > distclean: clean > + rm -rf ../config/Docs.mk config.log config.status autom4te.cache > > .PHONY: install > install: all > @@ -104,30 +114,40 @@ html/index.html: $(DOC_HTML) ./gen-html-index INDEX > perl -w -- ./gen-html-index -i INDEX html $(DOC_HTML) > > html/%.html: %.markdown > - @$(INSTALL_DIR) $(@D) > - @set -e ; if which $(MARKDOWN) 1>/dev/null 2>/dev/null; then \ > - echo "Running markdown to generate $*.html ... "; \ > + $(INSTALL_DIR) $(@D) > +ifdef MARKDOWN > + @echo "Running markdown to generate $*.html ... " > $(MARKDOWN) $< > $@.tmp ; \ > - $(call move-if-changed,$@.tmp,$@) ; else \ > - echo "markdown not installed; skipping $*.html."; fi > + $(call move-if-changed,$@.tmp,$@) > +else > + @echo "markdown not installed; skipping $*.html." > +endif > > html/%.txt: %.txt > - @$(INSTALL_DIR) $(@D) > + $(INSTALL_DIR) $(@D) > cp $< $@ > > html/man/%.1.html: man/%.pod.1 Makefile > $(INSTALL_DIR) $(@D) > +ifdef POD2HTML > $(POD2HTML) --infile=$< --outfile=$@.tmp > $(call move-if-changed,$@.tmp,$@) > +else > + @echo "pod2html not installed; skipping $<." > +endif > > html/man/%.5.html: man/%.pod.5 Makefile > $(INSTALL_DIR) $(@D) > +ifdef POD2HTML > $(POD2HTML) --infile=$< --outfile=$@.tmp > $(call move-if-changed,$@.tmp,$@) > +else > + @echo "pod2html not installed; skipping $<." > +endif > > html/hypercall/index.html: ./xen-headers > rm -rf $(@D) > - @$(INSTALL_DIR) $(@D) > + $(INSTALL_DIR) $(@D) > ./xen-headers -O $(@D) \ > -T 'arch-x86_64 - Xen public headers' \ > -X arch-ia64 -X arch-x86_32 -X xen-x86_32 -X arch-arm \ > @@ -147,11 +167,23 @@ txt/%.txt: %.markdown > > txt/man/%.1.txt: man/%.pod.1 Makefile > $(INSTALL_DIR) $(@D) > +ifdef POD2TEXT > $(POD2TEXT) $< $@.tmp > $(call move-if-changed,$@.tmp,$@) > +else > + @echo "pod2text not installed; skipping $<." > +endif > > txt/man/%.5.txt: man/%.pod.5 Makefile > $(INSTALL_DIR) $(@D) > +ifdef POD2TEXT > $(POD2TEXT) $< $@.tmp > $(call move-if-changed,$@.tmp,$@) > - > +else > + @echo "pod2text not installed; skipping $<." > +endif > + > +ifeq (,$(findstring clean,$(MAKECMDGOALS))) > +$(XEN_ROOT)/config/Docs.mk: > + $(error You have to run ./configure before building docs) > +endif > diff --git a/docs/configure.ac b/docs/configure.ac > new file mode 100644 > index 0000000..45dc9b8 > --- /dev/null > +++ b/docs/configure.ac > @@ -0,0 +1,27 @@ > +# -*- Autoconf -*- > +# Process this file with autoconf to produce a configure script. > + > +AC_PREREQ([2.67]) > +AC_INIT([Xen Hypervisor Documentation], m4_esyscmd([../version.sh > ../xen/Makefile]), > + [xen-devel@xxxxxxxxxxxxx], [xen], [http://www.xen.org/]) > +AC_CONFIG_SRCDIR([misc/xen-command-line.markdown]) > +AC_CONFIG_FILES([../config/Docs.mk]) > +AC_CONFIG_AUX_DIR([../]) > + > +# M4 Macro includes > +m4_include([../m4/docs_tool.m4]) > + > +AX_DOCS_TOOL_PROG([PS2PDF], [ps2pdf]) > +AX_DOCS_TOOL_PROG([DVIPS], [dvips]) > +AX_DOCS_TOOL_PROG([LATEX], [latex]) > +AX_DOCS_TOOL_PROG([FIG2DEV], [fig2dev]) > +AX_DOCS_TOOL_PROG([LATEX2HTML], [latex2html]) > +AX_DOCS_TOOL_PROG([DOXYGEN], [doxygen]) > +AX_DOCS_TOOL_PROG([POD2MAN], [pod2man]) > +AX_DOCS_TOOL_PROG([POD2HTML], [pod2html]) > +AX_DOCS_TOOL_PROG([POD2TEXT], [pod2text]) > +AX_DOCS_TOOL_PROG([DOT], [dot]) > +AX_DOCS_TOOL_PROG([NEATO], [neato]) > +AX_DOCS_TOOL_PROGS([MARKDOWN], [markdown], [markdown markdown_py]) > + > +AC_OUTPUT() > diff --git a/docs/figs/Makefile b/docs/figs/Makefile > index 5ecdae3..f782dc1 100644 > --- a/docs/figs/Makefile > +++ b/docs/figs/Makefile > @@ -1,7 +1,7 @@ > > XEN_ROOT=$(CURDIR)/../.. > include $(XEN_ROOT)/Config.mk > -include $(XEN_ROOT)/docs/Docs.mk > +include $(XEN_ROOT)/config/Docs.mk > > TARGETS= network-bridge.png network-basic.png > > diff --git a/docs/xen-api/Makefile b/docs/xen-api/Makefile > index 77a0117..b2da651 100644 > --- a/docs/xen-api/Makefile > +++ b/docs/xen-api/Makefile > @@ -2,7 +2,7 @@ > > XEN_ROOT=$(CURDIR)/../.. > include $(XEN_ROOT)/Config.mk > -include $(XEN_ROOT)/docs/Docs.mk > +-include $(XEN_ROOT)/config/Docs.mk > > > TEX := $(wildcard *.tex) > @@ -42,3 +42,8 @@ xenapi-datamodel-graph.eps: xenapi-datamodel-graph.dot > .PHONY: clean > clean: > rm -f *.pdf *.ps *.dvi *.aux *.log *.out $(EPSDOT) > + > +ifeq (,$(findstring clean,$(MAKECMDGOALS))) > +$(XEN_ROOT)/config/Docs.mk: > + $(error You have to run ./configure before building docs) > +endif > diff --git a/m4/docs_tool.m4 b/m4/docs_tool.m4 > new file mode 100644 > index 0000000..3e8814a > --- /dev/null > +++ b/m4/docs_tool.m4 > @@ -0,0 +1,17 @@ > +AC_DEFUN([AX_DOCS_TOOL_PROG], [ > +dnl > + AC_ARG_VAR([$1], [Path to $2 tool]) > + AC_PATH_PROG([$1], [$2]) > + AS_IF([! test -x "$ac_cv_path_$1"], [ > + AC_MSG_WARN([$2 is not available so some documentation won't be > built]) > + ]) > +]) > + > +AC_DEFUN([AX_DOCS_TOOL_PROGS], [ > +dnl > + AC_ARG_VAR([$1], [Path to $2 tool]) > + AC_PATH_PROGS([$1], [$3]) > + AS_IF([! test -x "$ac_cv_path_$1"], [ > + AC_MSG_WARN([$2 is not available so some documentation won't be > built]) > + ]) > +]) > -- > 1.7.2.5 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |