find_package(Doxygen QUIET)

set(DOXYGEN_INPUT_DIR ${PROJECT_SOURCE_DIR}/CubicInterpolation)
set(DOXYGEN_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/doxygen)
set(DOXYFILE_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in)
set(DOXYFILE_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)

file(GLOB_RECURSE CUBIC_INTERPOLATION_HEADERS ../CubicInterpolation/*.h)

configure_file(${DOXYFILE_IN} ${DOXYFILE_OUT} @ONLY)

file(MAKE_DIRECTORY ${DOXYGEN_OUTPUT_DIR})

add_custom_target(Doxygen
    COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE_OUT} ${DOXYFILE_IN}
    DEPENDS ${CUBIC_INTERPOLATION_HEADERS}
    COMMENT "Generating Doxygen docs"
    VERBATIM)


find_package(Sphinx QUIET)

set(SPHINX_CONF ${CMAKE_CURRENT_SOURCE_DIR})
set(SPHINX_SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/reST)
set(SPHINX_BUILD ${CMAKE_CURRENT_BINARY_DIR}/sphinx)
set(SPHINX_INDEX_FILE ${SPHINX_BUILD}/index.html)

file(GLOB_RECURSE RESTRUCTURED_FILES ${SPHINX_SOURCE}/*.rst)

add_custom_target(Sphinx
    COMMAND ${SPHINX_EXECUTABLE} -b html -c ${SPHINX_CONF}
    -D breathe_projects.CubicInterpolation=${DOXYGEN_OUTPUT_DIR}/xml
    ${SPHINX_SOURCE} ${SPHINX_BUILD}
    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
    DEPENDS Doxygen ${RESTRUCTURED_FILES} ${SPHINX_CONF}
    COMMENT "Generating documentation with Sphinx")
