1 include(CMakeParseArguments)
2 include(ProcessorCount)
4 find_program(SPHINX_EXECUTABLE NAMES sphinx-build
8 DOC "Sphinx documentation generator"
11 mark_as_advanced(SPHINX_EXECUTABLE)
13 function(clean_doc_output DIR)
14 set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES ${DIR})
17 set(BINARY_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/sphinx/_build")
19 # Sphinx cache with pickled ReST documents
20 set(SPHINX_CACHE_DIR "${CMAKE_CURRENT_BINARY_DIR}/sphinx/_doctrees")
22 # HTML output directory
23 set(SPHINX_DEFAULT_HTML_DIR "${CMAKE_CURRENT_BINARY_DIR}/sphinx/html")
24 function(add_sphinx_doc SRC_DIR)
26 set(oneValueArgs HTML_DIR)
27 set(multiValueArgs VARS TEMPLATE_VARS)
29 cmake_parse_arguments(PARSE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
33 foreach(VAR ${PARSE_VARS})
34 list(APPEND ADDITIONAL_ARGS "-D ${VAR}")
36 foreach(VAR ${PARSE_TEMPLATE_VARS})
37 list(APPEND ADDITIONAL_ARGS "-A ${VAR}")
41 set(SPHINX_HTML_DIR ${PARSE_HTML_DIR} CACHE PATH "Path to html output")
43 set(SPHINX_HTML_DIR ${SPHINX_DEFAULT_HTML_DIR} CACHE PATH "Path to html output")
46 clean_doc_output(${SPHINX_HTML_DIR})
47 clean_doc_output(${SPHINX_CACHE_DIR})
48 clean_doc_output(${BINARY_BUILD_DIR})
55 -d "${SPHINX_CACHE_DIR}"
59 COMMENT "Building HTML documentation with Sphinx")