Index: /trunk/doc/manual/Makefile.kmk
===================================================================
--- /trunk/doc/manual/Makefile.kmk	(revision 56514)
+++ /trunk/doc/manual/Makefile.kmk	(revision 56515)
@@ -305,4 +305,5 @@
 		UserManual.pdf \
 		VirtualBox.chm \
+               validatemanual.run \
 		)) \
  	$(VBOX_PATH_MANUAL_OUTBASE)/$(VBOX_MANUAL_XML_CHANGELOG) \
@@ -662,16 +663,25 @@
 	$(MAKE) --pretty-command-printing -j1 VBOX_PDFLATEX_INTERACTION=errorstopmode $(PATH_STAGE_BIN)/UserManual.pdf
 
-# validate each processed set of XML files
+#
+# Generate rules for validating the UserManual.xml.  These are invoked
+# automatically at build time, but can also be manually invoked via the
+# 'validatemanual' and 'validatemanual_<lang>' aliases.
+#
 define def_vbox_validate_xml
-validatemanual_$(lang): $$(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/UserManual.xml \
-		$$(VBOX_XML_CATALOG) $$(VBOX_XML_CATALOG_DOCBOOK) $$(MAKEFILE_CURRENT)
-	$$(QUIET)$(VBOX_XMLLINT_WITH_CAT) $(VBOX_XMLLINT_OPTS) --dtdvalid $$(VBOX_PATH_DOCBOOK_DTD)/docbookx.dtd \
+validatemanual_$(lang):: $$(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/validatemanual.run
+$$(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/validatemanual.run: \
+		$$(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/UserManual.xml \
+		$$(VBOX_XML_CATALOG) $$(VBOX_XML_CATALOG_DOCBOOK) $$(MAKEFILE_CURRENT) | $$$$(dir $$$$@)
+	$$(call MSG_L1,Validating $$(filter %.xml,$$^))
+	$$(QUIET)$$(VBOX_XMLLINT_WITH_CAT) $$(VBOX_XMLLINT_OPTS) --dtdvalid $$(VBOX_PATH_DOCBOOK_DTD)/docbookx.dtd \
 		--xinclude --noout $$(filter %.xml,$$^)
+	$$(QUIET)$$(APPEND) -t "$$@" "done"
 endef
-
 $(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(eval $(def_vbox_validate_xml)))
-
-# validate all translations of the manual
-validatemanual: $(foreach lang,$(VBOX_MANUAL_LANGUAGES),validatemanual_$(lang))
+ifdef VBOX_HAVE_XMLLINT
+  OTHERS += $(foreach lang,$(VBOX_MANUAL_LANGUAGES),$(VBOX_PATH_MANUAL_OUTBASE)/$(lang)/validatemanual.run)
+endif
+validatemanual:: $(foreach lang,$(VBOX_MANUAL_LANGUAGES),validatemanual_$(lang))
+
 
 
@@ -718,4 +728,5 @@
 validatesdkref: $(addprefix $(VBOX_PATH_MANUAL_OUTBASE)/en_US/,$(VBOX_SDKREF_XML_FILES)) \
 		$(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) $(MAKEFILE_CURRENT)
+	$(call MSG_L1,Validating $(filter %.xml,$^))
 	$(QUIET)$(VBOX_XMLLINT_WITH_CAT) $(VBOX_XMLLINT_OPTS) --dtdvalid $(VBOX_PATH_DOCBOOK_DTD)/docbookx.dtd \
 		--xinclude --noout $(filter %.xml,$^)
@@ -935,4 +946,5 @@
 validateman: $(addprefix $(VBOX_PATH_MANUAL_SRC)/en_US/,$(VBOX_MANUAL_XML_REFENTRY_FILES)) \
 		$(VBOX_XML_CATALOG) $(VBOX_XML_CATALOG_DOCBOOK) $(MAKEFILE_CURRENT)
+	$(call MSG_L1,Validating $(filter %.xml,$^))
 	$(QUIET)$(VBOX_XMLLINT_WITH_CAT) $(VBOX_XMLLINT_OPTS) --dtdvalid $(VBOX_PATH_DOCBOOK_DTD)/docbookx.dtd \
 		--noout $(filter %.xml,$^)
