cpack
[m6w6/libmemcached] / docs / CMakeLists.txt
index 269fae0444572f16ad530e4ccbefef0b6976ac7d..1240f31ebacca303126ed1a1e1d6a480dc7ac626 100644 (file)
@@ -2,7 +2,7 @@ find_package(Sphinx)
 
 if(NOT SPHINX_EXECUTABLE)
 
-    message(WARNING "The sphinx-build command is required to build manpages.")
+    message(WARNING "The sphinx-build command is required to build documentation.")
 
 else()
 
@@ -29,38 +29,79 @@ else()
     # MAN output directory
     set(SPHINX_MAN_DIR "${SPHINX_BUILD_DIR}/man")
 
-    configure_file(
-            "${SPHINX_SOURCE_DIR}/conf.py.in"
-            "${SPHINX_BUILD_DIR}/conf.py"
-            @ONLY)
-
-    add_custom_target(html
-            ${SPHINX_EXECUTABLE}
-            -q -b html
-            -c "${SPHINX_BUILD_DIR}"
-            -d "${SPHINX_CACHE_DIR}"
-            ${SPHINX_OPTIONS}
-            "${SPHINX_SOURCE_DIR}"
-            "${SPHINX_HTML_DIR}"
-            BYPRODUCTS ${SPHINX_HTML_DIR}
-            )
-    add_custom_target(man ALL
-            ${SPHINX_EXECUTABLE}
-            -q -b man
-            -c "${SPHINX_BUILD_DIR}"
-            -d "${SPHINX_CACHE_DIR}"
-            ${SPHINX_OPTIONS}
-            "${SPHINX_SOURCE_DIR}"
-            "${SPHINX_MAN_DIR}"
-            BYPRODUCTS ${SPHINX_MAN_DIR}
-            )
-
-    install(DIRECTORY ${SPHINX_MAN_DIR}/
-            DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
-            FILES_MATCHING PATTERN *.1
-            )
-    install(DIRECTORY ${SPHINX_MAN_DIR}/
-            DESTINATION ${CMAKE_INSTALL_MANDIR}/man3
-            FILES_MATCHING PATTERN *.3
-            )
+    configure_file("conf.py.in" "conf.py" @ONLY)
+    add_subdirectory(source)
+
+    file(GLOB_RECURSE DOCS_SOURCE
+            CONFIGURE_DEPENDS
+            "*.rst")
+
+    if(BUILD_DOCS_HTML)
+        add_custom_command(
+                OUTPUT "${SPHINX_HTML_DIR}"
+                COMMAND
+                ${SPHINX_EXECUTABLE}
+                -q -b html
+                -c "${SPHINX_BUILD_DIR}"
+                -d "${SPHINX_CACHE_DIR}"
+                ${SPHINX_OPTIONS}
+                "${SPHINX_SOURCE_DIR}"
+                "${SPHINX_HTML_DIR}"
+                COMMAND ${CMAKE_COMMAND} -E touch html
+                BYPRODUCTS ${SPHINX_HTML_DIR}
+                DEPENDS "${DOCS_SOURCE}"
+                )
+        add_custom_target(html ALL DEPENDS "${SPHINX_HTML_DIR}")
+
+        install(DIRECTORY ${SPHINX_HTML_DIR}/
+                COMPONENT doc
+                DESTINATION ${CMAKE_INSTALL_DOCDIR}/html)
+    endif()
+
+    if(BUILD_DOCS_MAN)
+        add_custom_command(
+                OUTPUT ${SPHINX_MAN_DIR}
+                COMMAND
+                ${SPHINX_EXECUTABLE}
+                -q -b man
+                -c "${SPHINX_BUILD_DIR}"
+                -d "${SPHINX_CACHE_DIR}"
+                ${SPHINX_OPTIONS}
+                "${SPHINX_SOURCE_DIR}"
+                "${SPHINX_MAN_DIR}"
+                COMMAND ${CMAKE_COMMAND} -E touch man
+                BYPRODUCTS ${SPHINX_MAN_DIR}
+                DEPENDS "${DOCS_SOURCE}"
+                )
+        add_custom_target(man ALL DEPENDS "${SPHINX_MAN_DIR}")
+
+        set(MAN_EXT "")
+        if(BUILD_DOCS_MANGZ)
+            find_program(PIGZ pigz)
+            if(PIGZ)
+                set(GZIP ${PIGZ})
+            else()
+                find_package(UnixCommands)
+            endif()
+            if(GZIP)
+                set(MAN_EXT ".gz")
+                add_custom_target(man_gz ALL
+                        ${GZIP} -kf ${SPHINX_MAN_DIR}/*.{1,3}
+                        DEPENDS man
+                        )
+            endif()
+        endif()
+
+        install(DIRECTORY ${SPHINX_MAN_DIR}/
+                COMPONENT doc
+                DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
+                FILES_MATCHING PATTERN *.1${MAN_EXT}
+                )
+        install(DIRECTORY ${SPHINX_MAN_DIR}/
+                COMPONENT doc
+                DESTINATION ${CMAKE_INSTALL_MANDIR}/man3
+                FILES_MATCHING PATTERN *.3${MAN_EXT}
+                )
+    endif()
+
 endif()