cmake: CI fixes
[m6w6/libmemcached] / docs / CMakeLists.txt
index dd6a32c50ae9fa3cf3d529844b39f244255a5c83..c2d6325ab75a0e7a57460de651184058be6c99aa 100644 (file)
@@ -32,31 +32,50 @@ else()
     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}"
+                    -d "${SPHINX_CACHE_DIR}"
+                    ${SPHINX_OPTIONS}
+                    "${SPHINX_SOURCE_DIR}"
+                    "${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}"
+                    ${CMAKE_COMMAND} -E touch "${SPHINX_HTML_DIR}"
                 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
-                ${SPHINX_EXECUTABLE}
-                -q -b man
-                -c "${SPHINX_BUILD_DIR}"
-                -d "${SPHINX_CACHE_DIR}"
-                ${SPHINX_OPTIONS}
-                "${SPHINX_SOURCE_DIR}"
-                "${SPHINX_MAN_DIR}"
+        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 "${SPHINX_MAN_DIR}"
                 BYPRODUCTS ${SPHINX_MAN_DIR}
+                DEPENDS "${DOCS_SOURCE}"
                 )
+        add_custom_target(man ALL DEPENDS "${SPHINX_MAN_DIR}")
 
         set(MAN_EXT "")
         if(BUILD_DOCS_MANGZ)
@@ -69,17 +88,21 @@ else()
             if(GZIP)
                 set(MAN_EXT ".gz")
                 add_custom_target(man_gz ALL
-                        ${GZIP} -kf ${SPHINX_MAN_DIR}/*.{1,3}
-                        DEPENDS man
-                        )
+                        COMMAND ${GZIP} -kf
+                            ${SPHINX_MAN_DIR}/*.1
+                            ${SPHINX_MAN_DIR}/*.3
+                        DEPENDS ${SPHINX_MAN_DIR}
+                        ) # some shells do not support braced glob patterns
             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}
                 )