From 9db0ad0f460926d9667dab832663f3d011407024 Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Fri, 25 Jan 2013 09:03:37 +0000 Subject: docs: check for documentation generation tools in docs/configure. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Ian Campbell Acked-by: Matt Wilson (For the change to introduce docs/configure) Acked-by: Roger Pau Monné Committed-by: Ian Campbell --- .gitignore | 4 ++++ .hgignore | 6 +++++ README | 2 +- autogen.sh | 15 ++++++++----- config/Docs.mk.in | 13 +++++++++++ docs/Docs.mk | 6 ----- docs/Makefile | 66 +++++++++++++++++++++++++++++++++++++++--------------- docs/configure.ac | 20 +++++++++++++++++ docs/figs/Makefile | 2 +- m4/docs_tool.m4 | 17 ++++++++++++++ 10 files changed, 120 insertions(+), 31 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 462e2911b8..e96db5728f 100644 --- a/.gitignore +++ b/.gitignore @@ -35,6 +35,9 @@ config/Toplevel.mk build-* dist/* +docs/autom4te.cache/ +docs/config.log +docs/config.status docs/*.aux docs/*.dvi docs/*.log @@ -132,6 +135,7 @@ tools/config.status tools/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 3024ef1a56..5efd72c048 100644 --- a/.hgignore +++ b/.hgignore @@ -32,6 +32,10 @@ ^config/Toplevel\.mk ^build-.*$ ^dist/.*$ +^docs/autom4te\.cache$ +^docs/config\.log$ +^docs/config\.status +^docs/config/Toplevel\.mk ^docs/.*\.aux$ ^docs/.*\.dvi$ ^docs/.*\.log$ @@ -322,6 +326,8 @@ ^tools/config\.status$ ^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 5c335b9c25..6c4742fe3b 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 @@ -66,6 +65,7 @@ disabled at compile time: ocaml-findlib). Required to build ocaml components which includes the alternative ocaml xenstored. * cmake (if building vtpm stub domains) + * 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 1456d94b0e..b5c96882d9 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 0000000000..024ef20c33 --- /dev/null +++ b/config/Docs.mk.in @@ -0,0 +1,13 @@ +# Prefix and install folder +prefix := @prefix@ +PREFIX := $(prefix) +exec_prefix := @exec_prefix@ +libdir := @libdir@ +LIBDIR := $(libdir) + +# Tools +FIG2DEV := @FIG2DEV@ +POD2MAN := @POD2MAN@ +POD2HTML := @POD2HTML@ +POD2TEXT := @POD2TEXT@ +MARKDOWN := @MARKDOWN@ diff --git a/docs/Docs.mk b/docs/Docs.mk deleted file mode 100644 index db3c19d81a..0000000000 --- a/docs/Docs.mk +++ /dev/null @@ -1,6 +0,0 @@ -FIG2DEV := fig2dev -LATEX2HTML := latex2html -POD2MAN := pod2man -POD2HTML := pod2html -POD2TEXT := pod2text -MARKDOWN := markdown diff --git a/docs/Makefile b/docs/Makefile index 053d7af815..fdebae819a 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 @@ -32,21 +32,27 @@ 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: 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) @@ -69,6 +75,8 @@ clean: .PHONY: distclean distclean: clean + rm -rf ../config/Docs.mk config.log config.status config.cache \ + autom4te.cache .PHONY: install install: all @@ -84,30 +92,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 \ @@ -127,11 +145,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 0000000000..ea0552e43d --- /dev/null +++ b/docs/configure.ac @@ -0,0 +1,20 @@ +# -*- 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@lists.xen.org], [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([FIG2DEV], [fig2dev]) +AX_DOCS_TOOL_PROG([POD2MAN], [pod2man]) +AX_DOCS_TOOL_PROG([POD2HTML], [pod2html]) +AX_DOCS_TOOL_PROG([POD2TEXT], [pod2text]) +AX_DOCS_TOOL_PROGS([MARKDOWN], [markdown], [markdown markdown_py]) + +AC_OUTPUT() diff --git a/docs/figs/Makefile b/docs/figs/Makefile index 5ecdae37fe..e128a4364f 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/m4/docs_tool.m4 b/m4/docs_tool.m4 new file mode 100644 index 0000000000..3e8814ac8d --- /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]) + ]) +]) -- cgit v1.2.3