[libXi PATCH] Be smarter about generating man pages
Peter Hutterer
peter.hutterer at who-t.net
Mon Jan 12 17:31:39 PST 2009
On Tue, Dec 16, 2008 at 04:45:16PM -0800, Dan Nicholson wrote:
> 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.
> ---
> man/.gitignore | 2 +
> man/Makefile.am | 143 +++++++++++++++++++++++++++++--------------------------
> 2 files changed, 77 insertions(+), 68 deletions(-)
Late, but nonetheless. Pushed as 9911b7846ca2cedf08a963c84efe7907438975c1.
Thanks for the patch.
Cheers,
Peter
> 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
> --
> 1.5.6.5
More information about the xorg
mailing list