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
_______________________________________________
xorg mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/xorg

Reply via email to