diff --git a/CMLibBreathe.cmake b/CMLibBreathe.cmake index af60256..d72f4d8 100644 --- a/CMLibBreathe.cmake +++ b/CMLibBreathe.cmake @@ -1,85 +1,32 @@ -set(BUILD_BREATHE_DOC AUTO CACHE STRING "Enable documntation in Breathe format") -set_property(CACHE BUILD_BREATHE_DOC PROPERTY STRINGS AUTO ON OFF) +set(BUILD_BREATHE_DOC OFF CACHE STRING "Enable documntation in Breathe format") +set_property(CACHE BUILD_BREATHE_DOC PROPERTY STRINGS ON OFF) -if(BUILD_BREATHE_DOC STREQUAL AUTO) - find_package(Doxygen) - find_package(Perl) - set(Python_ADDITIONAL_VERSIONS 3.7 3.6 3.5 3.4 3.3 3.2) - find_package(PythonInterp) - if (PYTHONINTERP_FOUND) - find_package(Sphinx) +function(add_breathe_target) + if(BUILD_BREATHE_DOC) + find_package(Doxygen REQUIRED) + find_package(Perl REQUIRED) + set(Python_ADDITIONAL_VERSIONS 3.7 3.6 3.5 3.4 3.3 3.2) + find_package(PythonInterp REQUIRED) + find_package(Sphinx REQUIRED) include(FindPythonModule) - find_python_module(breathe) - find_python_module(recommonmark) - if(DOXYGEN_FOUND AND PERL_FOUND AND PYTHONINTERP_FOUND AND SPHINX_FOUND AND breathe_FOUND AND recommonmark_FOUND) - set(BUILD_BREATHE_DOC ON CACHE STRING "Enable documntation in Breathe format" FORCE) - else() - set(BUILD_BREATHE_DOC OFF CACHE STRING "Disable documentation in Breathe format" FORCE) - endif() - else() - set(BUILD_BREATHE_DOC OFF CACHE STRING "Disable documentation in Breathe format" FORCE) - endif() -elseif(BUILD_BREATHE_DOC) - find_package(Doxygen REQUIRED) - find_package(Perl REQUIRED) - set(Python_ADDITIONAL_VERSIONS 3.7 3.6 3.5 3.4 3.3 3.2) - find_package(PythonInterp REQUIRED) - find_package(Sphinx REQUIRED) - include(FindPythonModule) - find_python_module(breathe REQUIRED) - find_python_module(recommonmark REQUIRED) - set(BUILD_BREATHE_DOC ON CACHE STRING "Enable documentation in Breathe format" FORCE) -else() - set(BUILD_BREATHE_DOC OFF CACHE STRING "Disable documentation in Breathe format" FORCE) -endif() + find_python_module(breathe REQUIRED) + find_python_module(recommonmark REQUIRED) -function(add_breathe_doc) - if(BUILD_BREATHE_DOC AND CMAKE_BUILD_TYPE STREQUAL Release) set(options) - set(oneValueArgs - SOURCE_DIR - BUILD_DIR - CACHE_DIR - HTML_DIR - DOXY_FILE - CONF_FILE - TARGET_NAME - COMMENT - ) + set(oneValueArgs SOURCE_DIR BUILD_DIR CACHE_DIR HTML_DIR DOXY_FILE CONF_FILE TARGET_NAME COMMENT) set(multiValueArgs) - cmake_parse_arguments(BREATHE_DOC - "${options}" - "${oneValueArgs}" - "${multiValueArgs}" - ${ARGN} - ) + cmake_parse_arguments(_BREATHE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) - configure_file( - ${BREATHE_DOC_CONF_FILE} - ${BREATHE_DOC_BUILD_DIR}/conf.py - @ONLY - ) + configure_file(${_BREATHE_CONF_FILE} ${_BREATHE_BUILD_DIR}/conf.py @ONLY) + configure_file(${_BREATHE_DOXY_FILE} ${_BREATHE_BUILD_DIR}/Doxyfile @ONLY) - configure_file( - ${BREATHE_DOC_DOXY_FILE} - ${BREATHE_DOC_BUILD_DIR}/Doxyfile - @ONLY - ) - - add_custom_target(${BREATHE_DOC_TARGET_NAME} - ALL - COMMAND - ${SPHINX_EXECUTABLE} - -q - -b html - -c ${BREATHE_DOC_BUILD_DIR} - -d ${BREATHE_DOC_CACHE_DIR} - ${BREATHE_DOC_SOURCE_DIR} - ${BREATHE_DOC_HTML_DIR} - COMMENT - "Building ${BREATHE_DOC_TARGET_NAME} documentation with Breathe, Sphinx and Doxygen" - VERBATIM + add_custom_target(${_BREATHE_TARGET_NAME} ALL VERBATIM + COMMAND ${SPHINX_EXECUTABLE} -q -b html -c ${_BREATHE_BUILD_DIR} + -d ${_BREATHE_CACHE_DIR} + ${_BREATHE_SOURCE_DIR} + ${_BREATHE_HTML_DIR} + COMMENT "Building ${_BREATHE_TARGET_NAME} documentation with Breathe" ) endif() endfunction()