From: Ian Campbell <ian.campbell@citrix.com>
To: xen-devel@lists.xen.org
Cc: "Fioravante, Matthew E." <Matthew.Fioravante@jhuapl.edu>,
"Ian Campbell" <ian.campbell@citrix.com>,
"Matt Wilson" <msw@amazon.com>,
"Roger Pau Monné" <roger.pau@citrix.com>
Subject: [PATCH 3/3] docs: check for documentation generation tools in docs/configure.
Date: Fri, 7 Dec 2012 14:55:10 +0000 [thread overview]
Message-ID: <1354892110-31108-3-git-send-email-ian.campbell@citrix.com> (raw)
In-Reply-To: <1354892091.31710.80.camel@zakaz.uk.xensource.com>
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@amazon.com>
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Cc: "Fioravante, Matthew E." <Matthew.Fioravante@jhuapl.edu>
Cc: Roger Pau Monné <roger.pau@citrix.com>
---
Applies on top of Matthew's "Add autoconf to stubdom" and "Add a top
level configure script".
v2: - LATEX2HTML is unused
- No more XenAPI or Doxygen or associated tools.
---
.gitignore | 1 +
.hgignore | 1 +
README | 2 +-
autogen.sh | 15 ++++++++----
config/Docs.mk.in | 13 ++++++++++
configure | 4 +-
configure.ac | 2 +-
docs/Docs.mk | 6 ----
docs/Makefile | 65 +++++++++++++++++++++++++++++++++++++--------------
docs/configure.ac | 20 ++++++++++++++++
docs/figs/Makefile | 2 +-
m4/docs_tool.m4 | 17 +++++++++++++
12 files changed, 114 insertions(+), 34 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..024ef20
--- /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/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@lists.xen.org], [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 db3c19d..0000000
--- 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 053d7af..bb2cb98 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,7 @@ clean:
.PHONY: distclean
distclean: clean
+ rm -rf ../config/Docs.mk config.log config.status autom4te.cache
.PHONY: install
install: all
@@ -84,30 +91,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 +144,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..ea0552e
--- /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 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/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@lists.xen.org
http://lists.xen.org/xen-devel
prev parent reply other threads:[~2012-12-07 14:55 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-07 14:54 [PATCH 00/03 V2] docs: check for documentation generation tools in docs/configure Ian Campbell
2012-12-07 14:55 ` [PATCH 1/3] docs: Remove xen-api docs Ian Campbell
2012-12-07 14:55 ` [PATCH 2/3] docs: drop doxygen stuff Ian Campbell
2012-12-07 14:55 ` Ian Campbell [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1354892110-31108-3-git-send-email-ian.campbell@citrix.com \
--to=ian.campbell@citrix.com \
--cc=Matthew.Fioravante@jhuapl.edu \
--cc=msw@amazon.com \
--cc=roger.pau@citrix.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).