protocol: hook up xmllint to check validity
diff --git a/configure.ac b/configure.ac
index 80a5d69..ac3878b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -474,6 +474,17 @@
AC_MSG_ERROR([wayland-scanner is needed to compile weston])
fi
+PKG_CHECK_MODULES(WAYLAND_SCANNER, wayland-scanner)
+AC_PATH_PROG(XMLLINT, xmllint)
+AC_ARG_WITH([dtddir],
+ AS_HELP_STRING([--with-dtddir],
+ [Directory containing the Wayland
+ protocol DTD @<:@default=from pkgconfig@:>@]),
+ [dtddir="$withval"],
+ [dtddir=$($PKG_CONFIG --variable=pkgdatadir wayland-scanner)])
+AC_SUBST([dtddir])
+AM_CONDITIONAL([HAVE_XMLLINT], [test "x$XMLLINT" != "x" -a "x$dtddir" != "x"])
+
AC_CONFIG_FILES([Makefile
shared/Makefile
src/Makefile
diff --git a/protocol/Makefile.am b/protocol/Makefile.am
index 924e48f..d09d8eb 100644
--- a/protocol/Makefile.am
+++ b/protocol/Makefile.am
@@ -1,4 +1,4 @@
-EXTRA_DIST = \
+protocol_sources = \
desktop-shell.xml \
screenshooter.xml \
tablet-shell.xml \
@@ -9,3 +9,18 @@
subsurface.xml \
text-cursor-position.xml \
wayland-test.xml
+
+if HAVE_XMLLINT
+.PHONY: validate
+
+.%.xml.valid: %.xml
+ $(AM_V_GEN)$(XMLLINT) --noout --dtdvalid $(dtddir)/wayland.dtd $^ > $@
+
+validate: $(protocol_sources:%.xml=.%.xml.valid)
+
+all-local: validate
+
+CLEANFILES= $(protocol_sources:%.xml=.%.xml.valid)
+EXTRA_DIST=$(protocol_sources)
+
+endif