X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=docs%2FCMakeLists.txt;h=1240f31ebacca303126ed1a1e1d6a480dc7ac626;hb=c0f50dec5334f54cf060b1f9c4250c72649b4ff2;hp=31f30ca07cf4128f854da95294e6d35b80a4aff1;hpb=ffaad0afbece28d246557bdff64b47103ea8f179;p=awesomized%2Flibmemcached diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index 31f30ca0..1240f31e 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -1,20 +1,20 @@ find_package(Sphinx) -if(SPHINX_EXECUTABLE) +if(NOT SPHINX_EXECUTABLE) - if(NOT DEFINED SPHINX_THEME) - set(SPHINX_THEME sphinx_rtd_theme) - set(SPHINX_THEME_OPTIONS "'collapse_navigation':False, 'navigation_depth':2, 'titles_only':False, 'includehidden':False") - endif() + message(WARNING "The sphinx-build command is required to build documentation.") - if(NOT DEFINED SPHINX_THEME_DIR) - set(SPHINX_THEME_DIR) - endif() +else() if(NOT DEFINED SPHINX_OPTIONS) set(SPHINX_OPTIONS) endif() + if(NOT DEFINED SPHINX_THEME) + set(SPHINX_THEME sphinx_rtd_theme) + set(SPHINX_THEME_OPTIONS "'collapse_navigation':False, 'navigation_depth':2, 'titles_only':False, 'includehidden':False") + endif() + set(SPHINX_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/source") # configured documentation tools and intermediate build results @@ -29,31 +29,79 @@ if(SPHINX_EXECUTABLE) # 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("docs" - ${SPHINX_EXECUTABLE} - -q -a -b html - -c "${SPHINX_BUILD_DIR}" - -d "${SPHINX_CACHE_DIR}" - ${SPHINX_OPTIONS} - "${SPHINX_SOURCE_DIR}" - "${SPHINX_HTML_DIR}" - BYPRODUCTS ${SPHINX_HTML_DIR} - COMMENT "Build HTML documentation with Sphinx") - #list(APPEND ADDITIONAL_CLEAN_FILES ${SPHINX_CACHE_DIR} ${SPHINX_HTML_DIR}) - add_custom_target(man - ${SPHINX_EXECUTABLE} - -q -a -b man - -c "${SPHINX_BUILD_DIR}" - -d "${SPHINX_CACHE_DIR}" - ${SPHINX_OPTIONS} - "${SPHINX_SOURCE_DIR}" - "${SPHINX_MAN_DIR}" - BYPRODUCTS ${SPHINX_MAN_DIR} - COMMENT "Build manpage documentation with Sphinx") - #list(APPEND ADDITIONAL_CLEAN_FILES ${SPHINX_CACHE_DIR} ${SPHINX_MAN_DIR}) + 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()