diff --git a/.gitignore b/.gitignore
index 41ce7fed86b4e7913eea1db9054d4b830254f8fd..db69e35a66f9405b8797f9dfce618c46121a0452 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,6 +9,7 @@ Knot.creator.user*
 Makefile
 Makefile.in
 aclocal.m4
+ar-lib
 autoscan.log
 config.guess
 config.sub
diff --git a/Makefile.am b/Makefile.am
index 30ea21584da32b3b955f69d6df6ab209298158f9..b0bf1071a4834d95a673e06048bd4819abd90bae 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,2 +1,2 @@
 ACLOCAL_AMFLAGS = -I m4
-SUBDIRS = src samples
+SUBDIRS = src samples @DOC@
diff --git a/configure.ac b/configure.ac
index 5864930a713e2338a3dafb2704b3e793fd83c148..8739d725d4317b004dbddb5fa73cc35a7a6f208f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -9,6 +9,9 @@ AC_CONFIG_MACRO_DIR([m4])
 AC_USE_SYSTEM_EXTENSIONS([_GNU_SOURCE])
 AX_EXT
 
+# Checks for programs.
+AC_PROG_CC
+
 # Enable maintainer mode by default for development
 AM_MAINTAINER_MODE([enable])
 
@@ -16,9 +19,6 @@ AM_MAINTAINER_MODE([enable])
 AC_PROG_LIBTOOL
 LT_INIT
 
-# Checks for programs.
-AC_PROG_CC
-
 AC_CACHE_CHECK([for reentrant lex], [ac_cv_path_LEX],
   [AC_PATH_PROGS_FEATURE_CHECK([LEX], [$LEX flex gflex],
   [cat >conftest.l <<_ACEOF
@@ -45,6 +45,24 @@ rm -f conftest.l lexyy.c lex.yy.c
 AC_SUBST([LEX], [$ac_cv_path_LEX])
 AM_PROG_LEX
 
+# Check for tools needed to compile used documentation
+AC_ARG_VAR([XMLTO], [path to xmlto processor to generate a HTML documentation])
+#AC_ARG_VAR([DBLATEX], [path to dblatex process to generate a PDF documentation])
+AC_ARG_WITH([documentation],
+    [AS_HELP_STRING([--with-documentation @<:@default=no@:>@],
+	[enable building of the user documentation])],
+    [],
+    [with_documentation=no])
+
+XMLTO=
+AS_IF([test "x$with_documentation" != "xno"],
+    [AC_CHECK_PROG([XMLTO], [xmlto], [xmlto],
+        [AC_MSG_ERROR([xmlto needed for building the documentation])])
+#     AC_PATH_PROG([DBLATEX], [dblatex],
+#        [AC_MSG_ERROR([dblatex needed for building the documentation])])
+     AC_SUBST([DOC], [doc])
+    ])
+
 AC_PROG_YACC
 YACC_BISON=`bison --version | awk '{print $1;exit}'`
 if test "$YACC_BISON" != "bison"; then
diff --git a/doc/Makefile b/doc/Makefile
deleted file mode 100644
index 3da78474d0432f167b7ab94a818e668dd5816fae..0000000000000000000000000000000000000000
--- a/doc/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-XML_SOURCES=knot.xml configuration.xml installation.xml introduction.xml knot.xml migration.xml reference.xml resources.xml security.xml troubleshooting.xml
-
-all: knot.html knot.pdf
-
-knot.pdf: $(XML_SOURCES)
-	xmlto --with-dblatex --skip-validation pdf knot.xml
-
-knot.html: $(XML_SOURCES)
-	xmlto --skip-validation html-nochunks knot.xml
-
-clean:
-	rm -f *.proc *.pdf *.html
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 0000000000000000000000000000000000000000..b7c4c0635c6e56313171bf5ba0db95535cdef0a5
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,17 @@
+XMLTO=@XMLTO@
+XMLTO_FLAGS=--skip-validation
+
+XML_SOURCES=configuration.xml \
+	    installation.xml \
+	    introduction.xml \
+	    migration.xml \
+	    reference.xml \
+	    resources.xml \
+	    security.xml \
+	    troubleshooting.xml
+
+htmldir = $(prefix)/share/doc/@PACKAGE@
+dist_html_DATA = @PACKAGE@.html
+
+@PACKAGE@.html: @PACKAGE@.xml $(XML_SOURCES)
+	$(XMLTO) $(XMLTO_FLAGS) html-nochunks @PACKAGE@.xml