diff --git a/configure.ac b/configure.ac index 80a5d69a..ac3878b6 100644 --- a/configure.ac +++ b/configure.ac @@ -474,6 +474,17 @@ if test x$wayland_scanner = x; then 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 924e48f3..d09d8ebc 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 @@ EXTRA_DIST = \ 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