cpack: artifacts
[m6w6/libmemcached] / docs / CMakeLists.txt
index 784fadb71b09332e77f53bdeb87eb336a33f42b0..303ceada3fa46eeecf4092308b70b9ab0a946524 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,13 +29,17 @@ 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)
+    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_target(html
+        add_custom_command(
+                OUTPUT "${SPHINX_HTML_DIR}"
+                COMMAND
                 ${SPHINX_EXECUTABLE}
                 -q -b html
                 -c "${SPHINX_BUILD_DIR}"
@@ -43,12 +47,21 @@ else()
                 ${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_target(man ALL
+        add_custom_command(
+                OUTPUT ${SPHINX_MAN_DIR}
+                COMMAND
                 ${SPHINX_EXECUTABLE}
                 -q -b man
                 -c "${SPHINX_BUILD_DIR}"
@@ -56,8 +69,11 @@ else()
                 ${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)
@@ -71,16 +87,18 @@ else()
                 set(MAN_EXT ".gz")
                 add_custom_target(man_gz ALL
                         ${GZIP} -kf ${SPHINX_MAN_DIR}/*.{1,3}
-                        DEPENDS man
+                        DEPENDS ${SPHINX_MAN_DIR}
                         )
             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}
                 )