diff --git a/configure.ac b/configure.ac
index 944c1c153..4d0788273 100644
--- a/configure.ac
+++ b/configure.ac
@@ -852,6 +852,22 @@ fi
 AM_CONDITIONAL(HAVE_ZEROCONF, test x$with_zeroconf != xno)
 
 
+dnl
+dnl Documentation
+dnl
+
+AC_MSG_CHECKING([for xmlto (DocBook processing)])
+AC_PATH_PROG(XMLTO, xmlto)
+if test x$XMLTO != x; then
+	AC_SUBST(XMLTO)
+	AC_MSG_RESULT($XMLTO)
+else
+	AC_MSG_RESULT(no)
+fi
+
+AM_CONDITIONAL(HAVE_XMLTO, test x$XMLTO != x)
+
+
 dnl
 dnl build options
 dnl
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 9cba2f08a..3234ccb5f 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1,3 +1,15 @@
+DOCBOOK_FILES = protocol.xml
+DOCBOOK_HTML = $(patsubst %.xml,%.html,$(DOCBOOK_FILES))
+
 man_MANS = mpd.1 mpd.conf.5
-doc_DATA = COMMANDS mpdconf.example
+doc_DATA = mpdconf.example
 EXTRA_DIST = $(man_MANS) $(doc_DATA)
+
+MOSTLYCLEANFILES = $(DOCBOOK_HTML)
+
+if HAVE_XMLTO
+doc_DATA += $(DOCBOOK_HTML)
+
+$(DOCBOOK_HTML): %.html: %.xml
+	$(XMLTO) html-nochunks $<
+endif