summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Nicholson <dbn.lists@gmail.com>2008-12-16 16:45:16 -0800
committerPeter Hutterer <peter.hutterer@who-t.net>2009-01-13 11:26:13 +1000
commit9911b7846ca2cedf08a963c84efe7907438975c1 (patch)
tree0e7763221a65da324c0c8d929d9abeee13e4cd07
parent9e9bf1e477e764b596eb89119c0497b274b87897 (diff)
Be smarter about generating man pages
With the current rules, the man pages will be generated repeatedly if you have xmlto installed. This is because make always thinks they are out of date with respect to their prerequisite, do_xmlto_stage. They are changed here to handle the multiple output files as described in the automake manual. distcheck has been confirmed to still work such that building from the tarball does not require xmlto. On the other hand, if the user wants to rebuild the man pages, they'll have to explicitly touch XI.xml. It may be better to split the xml into per-page files so that xmlto only generates one output at a time. A toplevel XI.xml can still pull together all the pieces with XInclude. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--man/.gitignore2
-rw-r--r--man/Makefile.am143
2 files changed, 77 insertions, 68 deletions
diff --git a/man/.gitignore b/man/.gitignore
index 2d0f344..727ea33 100644
--- a/man/.gitignore
+++ b/man/.gitignore
@@ -1,3 +1,5 @@
Makefile
Makefile.in
*.3*
+xi.stamp
+xi.tmp
diff --git a/man/Makefile.am b/man/Makefile.am
index f0829b7..68aac3b 100644
--- a/man/Makefile.am
+++ b/man/Makefile.am
@@ -30,64 +30,60 @@ LIB_MAN_DIR_SUFFIX = $(LIB_MAN_DIR:@mandir@/man%=%)
libman_xml = XI.xml
-if HAVE_XMLTO
-XI_manpages = \
- XAllowDeviceEvents \
- XChangeKeyboardDevice \
- XChangePointerDevice \
- XDeviceBell \
- XQueryDeviceState \
- XSendExtensionEvent \
- XSetDeviceMode \
- XSetDeviceValuators \
- XChangeDeviceDontPropagateList \
- XGetDeviceDontPropagateList \
- XChangeDeviceHierarchy \
- XDefineDeviceCursor \
- XUndefineDeviceCursor \
- XExtendedGrabDevice \
- XGetDeviceControl \
- XChangeDeviceControl \
- XGetDeviceKeyMapping \
- XChangeDeviceKeyMapping \
- XGetDeviceModifierMapping \
- XSetDeviceModifierMapping \
- XGetDeviceMotionEvents \
- XDeviceTimeCoord \
- XGetFeedbackControl \
- XChangeFeedbackControl \
- XGrabDeviceButton \
- XUngrabDeviceButton \
- XGrabDeviceKey \
- XUngrabDeviceKey \
- XGrabDevice \
- XUngrabDevice \
- XiSelectEvent \
- XListInputDevices \
- XFreeDeviceList \
- XOpenDevice \
- XCloseDevice \
- XQueryDevicePointer \
- XQueryInputVersion \
- XGetExtensionVersion \
- XSelectExtensionEvent \
- XGetSelectedExtensionEvents \
- XSetClientPointer \
- XGetClientPointer \
- XSetDeviceButtonMapping \
- XGetDeviceButtonMapping \
- XSetDeviceFocus \
- XGetDeviceFocus \
- XWarpDevicePointer \
- XListDeviceProperties \
- XGetDeviceProperty \
- XChangeDeviceProperty \
- XDeleteDeviceProperty
-endif # HAVE_XMLTO
-
-libman_PRE = $(XI_manpages:%=%.man)
-
-EXTRA_DIST = $(libman_PRE) $(libman_xml)
+libman_PRE = \
+ XAllowDeviceEvents.man \
+ XChangeKeyboardDevice.man \
+ XChangePointerDevice.man \
+ XDeviceBell.man \
+ XQueryDeviceState.man \
+ XSendExtensionEvent.man \
+ XSetDeviceMode.man \
+ XSetDeviceValuators.man \
+ XChangeDeviceDontPropagateList.man \
+ XGetDeviceDontPropagateList.man \
+ XChangeDeviceHierarchy.man \
+ XDefineDeviceCursor.man \
+ XUndefineDeviceCursor.man \
+ XExtendedGrabDevice.man \
+ XGetDeviceControl.man \
+ XChangeDeviceControl.man \
+ XGetDeviceKeyMapping.man \
+ XChangeDeviceKeyMapping.man \
+ XGetDeviceModifierMapping.man \
+ XSetDeviceModifierMapping.man \
+ XGetDeviceMotionEvents.man \
+ XDeviceTimeCoord.man \
+ XGetFeedbackControl.man \
+ XChangeFeedbackControl.man \
+ XGrabDeviceButton.man \
+ XUngrabDeviceButton.man \
+ XGrabDeviceKey.man \
+ XUngrabDeviceKey.man \
+ XGrabDevice.man \
+ XUngrabDevice.man \
+ XiSelectEvent.man \
+ XListInputDevices.man \
+ XFreeDeviceList.man \
+ XOpenDevice.man \
+ XCloseDevice.man \
+ XQueryDevicePointer.man \
+ XQueryInputVersion.man \
+ XGetExtensionVersion.man \
+ XSelectExtensionEvent.man \
+ XGetSelectedExtensionEvents.man \
+ XSetClientPointer.man \
+ XGetClientPointer.man \
+ XSetDeviceButtonMapping.man \
+ XGetDeviceButtonMapping.man \
+ XSetDeviceFocus.man \
+ XGetDeviceFocus.man \
+ XWarpDevicePointer.man \
+ XListDeviceProperties.man \
+ XGetDeviceProperty.man \
+ XChangeDeviceProperty.man \
+ XDeleteDeviceProperty.man
+
+EXTRA_DIST = $(libman_PRE) $(libman_xml) xi.stamp
CLEANFILES = $(libman_DATA) $(BUILT_SOURCES)
@@ -114,14 +110,25 @@ SUFFIXES = .$(LIB_MAN_SUFFIX) .man
.man.$(LIB_MAN_SUFFIX):
sed $(MAN_SUBSTS) < $< > $@
-dist-hook: $(libman_PRE)
-
-.PHONY: do_xmlto_stage
-
-$(libman_PRE): do_xmlto_stage
-
-do_xmlto_stage: $(libman_xml)
- $(XMLTO) man $?
- for m in $(XI_manpages); do \
- mv -f $$m.__libmansuffix__ $$m.man ; \
+# This is ugly, but handling of tools with multiple outputs in make is a
+# huge PITA. The commands below are taken from the automake manual:
+# http://www.gnu.org/software/automake/manual/automake.html#Multiple-Outputs
+if HAVE_XMLTO
+xi.stamp: $(libman_xml)
+ @rm -f xi.tmp
+ @touch xi.tmp
+ $(XMLTO) man $^
+ @for man in $(libman_PRE); do \
+ out=`echo $$man | sed 's/\.man/.__libmansuffix__/'`; \
+ echo mv -f $$out $$man; \
+ mv -f $$out $$man || exit 1; \
done
+ @mv -f xi.tmp $@
+$(libman_PRE): xi.stamp
+ @if test -f $@; then :; else \
+ rm -f $<; \
+ $(MAKE) $(AM_MAKEFLAGS) $<; \
+ fi
+CLEANFILES += xi.tmp
+MAINTAINERCLEANFILES += xi.stamp
+endif # HAVE_XMLTO