3 if(NOT SPHINX_EXECUTABLE)
5 message(WARNING "The sphinx-build command is required to build documentation.")
9 if(NOT DEFINED SPHINX_OPTIONS)
13 if(NOT DEFINED SPHINX_THEME)
14 set(SPHINX_THEME sphinx_rtd_theme)
15 set(SPHINX_THEME_OPTIONS "'collapse_navigation':False, 'navigation_depth':2, 'titles_only':False, 'includehidden':False")
18 set(SPHINX_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/source")
20 # configured documentation tools and intermediate build results
21 set(SPHINX_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}")
23 # Sphinx cache with pickled ReST documents
24 set(SPHINX_CACHE_DIR "${SPHINX_BUILD_DIR}/_doctrees")
26 # HTML output directory
27 set(SPHINX_HTML_DIR "${SPHINX_BUILD_DIR}/html")
29 # MAN output directory
30 set(SPHINX_MAN_DIR "${SPHINX_BUILD_DIR}/man")
32 configure_file("conf.py.in" "conf.py" @ONLY)
33 add_subdirectory(source)
35 file(GLOB_RECURSE DOCS_SOURCE
41 OUTPUT "${SPHINX_HTML_DIR}"
45 -c "${SPHINX_BUILD_DIR}"
46 -d "${SPHINX_CACHE_DIR}"
48 "${SPHINX_SOURCE_DIR}"
50 COMMAND ${CMAKE_COMMAND} -E touch html
51 BYPRODUCTS ${SPHINX_HTML_DIR}
52 DEPENDS "${DOCS_SOURCE}"
54 add_custom_target(html ALL DEPENDS "${SPHINX_HTML_DIR}")
56 install(DIRECTORY ${SPHINX_HTML_DIR}/
58 DESTINATION ${CMAKE_INSTALL_DOCDIR}/html)
63 OUTPUT ${SPHINX_MAN_DIR}
67 -c "${SPHINX_BUILD_DIR}"
68 -d "${SPHINX_CACHE_DIR}"
70 "${SPHINX_SOURCE_DIR}"
72 COMMAND ${CMAKE_COMMAND} -E touch man
73 BYPRODUCTS ${SPHINX_MAN_DIR}
74 DEPENDS "${DOCS_SOURCE}"
76 add_custom_target(man ALL DEPENDS "${SPHINX_MAN_DIR}")
80 find_program(PIGZ pigz)
84 find_package(UnixCommands)
88 add_custom_target(man_gz ALL
89 ${GZIP} -kf ${SPHINX_MAN_DIR}/*.{1,3}
95 install(DIRECTORY ${SPHINX_MAN_DIR}/
97 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
98 FILES_MATCHING PATTERN *.1${MAN_EXT}
100 install(DIRECTORY ${SPHINX_MAN_DIR}/
102 DESTINATION ${CMAKE_INSTALL_MANDIR}/man3
103 FILES_MATCHING PATTERN *.3${MAN_EXT}