diff --git a/CMakeLists.txt b/CMakeLists.txt
index 312cfd177e5794a65401245029b0318d1cb8b977..6acc7c6aa3ed360d7a8d6a26b7760bce9a4600f1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -214,10 +214,11 @@ endif()
 #
 # Now handle all configuration options.
 #
+option(ENABLE_DOC "Enable building of documentation" OFF)
 
 # LuaJIT options are defined in cmake/luajit.cmake
 
-option(ENABLE_CLIENT "Enable building of console client" Off)
+option(ENABLE_CLIENT "Enable building of console client" OFF)
 if (ENABLE_CLIENT)
     set (TARANTOOL_CLIENTS ${TARANTOOL_CLIENTS} "tarantool")
 endif()
@@ -332,6 +333,7 @@ message (STATUS "ENABLE_TRACE: ${ENABLE_TRACE}")
 message (STATUS "ENABLE_BACKTRACE: ${ENABLE_BACKTRACE} (symbol resolve: ${HAVE_BFD})")
 message (STATUS "ENABLE_CLIENT: ${ENABLE_CLIENT}")
 message (STATUS "ENABLE_BUNDLED_LUAJIT: ${ENABLE_BUNDLED_LUAJIT}")
+message (STATUS "ENABLE_DOC: ${ENABLE_DOC}")
 message (STATUS "")
 message (STATUS "To view or modify configuration results, check out CMakeCache.txt.")
 message (STATUS "")
diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt
index 7241cc922b5ed8b39d6fd42222e83fbe01908d6a..416698e60bd1f65c85d30286bfaff54e4cd59df3 100644
--- a/doc/CMakeLists.txt
+++ b/doc/CMakeLists.txt
@@ -1,4 +1,9 @@
+
 add_subdirectory(man)
-add_subdirectory(user)
-add_subdirectory(developer)
+
+if (ENABLE_DOC)
+    add_subdirectory(user)
+    add_subdirectory(developer)
+endif()
+
 add_subdirectory(www-data.in EXCLUDE_FROM_ALL)
diff --git a/doc/developer/CMakeLists.txt b/doc/developer/CMakeLists.txt
index 7f9e1cb35d8d75f284346e2286d342cee0200428..8b0083521de836a574ce4dc22a9a8c9be559607e 100644
--- a/doc/developer/CMakeLists.txt
+++ b/doc/developer/CMakeLists.txt
@@ -1,12 +1,14 @@
 
+if (JING STREQUAL "JING-NOTFOUND")
+    message (FATAL_ERROR "jing is missing")
+endif()
+
 set(PATH_DEVGUIDE_HTML "${PROJECT_BINARY_DIR}/doc/www-data/tarantool_developer_guide.html")
 set(PATH_DEVGUIDE_TXT "${PROJECT_BINARY_DIR}/doc/developer/tarantool_developer_guide.txt")
 
-if (NOT JING STREQUAL "JING-NOTFOUND")
-    add_custom_target(doc-check-dev ALL
-        COMMAND ${JING} http://docbook.org/xml/5.0/rng/docbookxi.rng
+add_custom_target(doc-check-dev ALL
+    COMMAND ${JING} http://docbook.org/xml/5.0/rng/docbookxi.rng
             ${CMAKE_SOURCE_DIR}/doc/developer/developer.xml)
-endif()
 
 add_custom_command(OUTPUT ${PATH_DEVGUIDE_HTML}
     COMMAND ${XSLTPROC} --nonet
@@ -22,15 +24,13 @@ add_custom_command(OUTPUT ${PATH_DEVGUIDE_TXT}
 add_custom_target(dev-html DEPENDS ${PATH_DEVGUIDE_HTML})
 add_custom_target(dev-txt  DEPENDS ${PATH_DEVGUIDE_TXT})
 
-if (NOT XSLTPROC STREQUAL "XSLTPROC-NOTFOUND" AND
-    NOT LYNX STREQUAL "LYNX-NOTFOUND")
-    add_custom_target(doc-autogen-dev ALL
-        DEPENDS ${PATH_DEVGUIDE_HTML} ${PATH_DEVGUIDE_TXT})
-    if ("${CPACK_GENERATOR}" STREQUAL "RPM")
-        install (FILES ${PATH_DEVGUIDE_HTML}
-            ${PATH_DEVGUIDE_TXT} DESTINATION /usr/local/doc/tarantool)
-    else()
-        install (FILES ${PATH_DEVGUIDE_HTML}
-            ${PATH_DEVGUIDE_TXT} DESTINATION share/doc/tarantool)
-    endif()
+add_custom_target(doc-autogen-dev ALL
+    DEPENDS ${PATH_DEVGUIDE_HTML} ${PATH_DEVGUIDE_TXT})
+
+if ("${CPACK_GENERATOR}" STREQUAL "RPM")
+    install (FILES ${PATH_DEVGUIDE_HTML}
+                   ${PATH_DEVGUIDE_TXT} DESTINATION /usr/local/doc/tarantool)
+else()
+    install (FILES ${PATH_DEVGUIDE_HTML}
+                   ${PATH_DEVGUIDE_TXT} DESTINATION share/doc/tarantool)
 endif()
diff --git a/doc/user/CMakeLists.txt b/doc/user/CMakeLists.txt
index aa797c838ed486cd771ad4601681bdcb9bbb2281..ee097af2a65b08f850400db74b4ba327a2d10560 100644
--- a/doc/user/CMakeLists.txt
+++ b/doc/user/CMakeLists.txt
@@ -1,4 +1,16 @@
 
+if (XMLLINT STREQUAL "XMLLINT-NOTFOUND")
+    message (FATAL_ERROR "xmllint is missing")
+endif()
+
+if (XSLTPROC STREQUAL "XSLTPROC-NOTFOUND")
+    message (FATAL_ERROR "xsltproc is missing")
+endif()
+
+if (LYNX STREQUAL "LYNX-NOTFOUND")
+    message (FATAL_ERROR "lynx is missing")
+endif()
+
 set(PATH_USERGUIDE_HTML "${PROJECT_BINARY_DIR}/doc/www-data/tarantool_user_guide.html")
 set(PATH_USERGUIDE_TXT "${PROJECT_BINARY_DIR}/doc/user/tarantool_user_guide.txt")
 
@@ -10,11 +22,9 @@ set(PATH_USERGUIDE_TXT "${PROJECT_BINARY_DIR}/doc/user/tarantool_user_guide.txt"
 # since its diagnostics output is significantly more readable:
 # jing http://docbook.org/xml/5.0/rng/docbookxi.rng file.xml
 #
-if (NOT XMLLINT STREQUAL "XMLLINT-NOTFOUND")
-    add_custom_target(doc-check ALL
-        COMMAND ${XMLLINT} --xinclude --noout --relaxng http://docbook.org/xml/5.0/rng/docbookxi.rng
+add_custom_target(doc-check ALL
+    COMMAND ${XMLLINT} --xinclude --noout --relaxng http://docbook.org/xml/5.0/rng/docbookxi.rng
             ${CMAKE_SOURCE_DIR}/doc/user/user.xml)
-endif()
 
 #
 # xsltproc-based documentation generation (default)
@@ -33,17 +43,15 @@ add_custom_command(OUTPUT ${PATH_USERGUIDE_TXT}
 add_custom_target(html DEPENDS ${PATH_USERGUIDE_HTML})
 add_custom_target(txt  DEPENDS ${PATH_USERGUIDE_TXT})
 
-if (NOT XSLTPROC STREQUAL "XSLTPROC-NOTFOUND" AND
-    NOT LYNX STREQUAL "LYNX-NOTFOUND")
-    add_custom_target(doc-autogen ALL
-        DEPENDS ${PATH_USERGUIDE_HTML} ${PATH_USERGUIDE_TXT})
-    if ("${CPACK_GENERATOR}" STREQUAL "RPM")
-        install (FILES ${PATH_USERGUIDE_HTML}
-            ${PATH_USERGUIDE_TXT} DESTINATION /usr/local/doc/tarantool)
-    else()
-        install (FILES ${PATH_USERGUIDE_HTML}
-            ${PATH_USERGUIDE_TXT} DESTINATION share/doc/tarantool)
-    endif()
+add_custom_target(doc-autogen ALL
+    DEPENDS ${PATH_USERGUIDE_HTML} ${PATH_USERGUIDE_TXT})
+
+if ("${CPACK_GENERATOR}" STREQUAL "RPM")
+    install (FILES ${PATH_USERGUIDE_HTML}
+                   ${PATH_USERGUIDE_TXT} DESTINATION /usr/local/doc/tarantool)
+else()
+    install (FILES ${PATH_USERGUIDE_HTML}
+                   ${PATH_USERGUIDE_TXT} DESTINATION share/doc/tarantool)
 endif()
 
 add_custom_target(pdf