find_package(Sphinx REQUIRED)

file(GLOB_RECURSE EXAMPLES ../Examples/*.hpp)
file(GLOB_RECURSE SOURCES ../Include/*.hpp)
file(GLOB_RECURSE SPHINX_RST_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.rst)
set(SPHINX_SOURCE ${CMAKE_CURRENT_SOURCE_DIR})
set(SPHINX_BUILD ${CMAKE_CURRENT_BINARY_DIR}/sphinx/)
set(SPHINX_INDEX_FILE ${SPHINX_BUILD}/index.html)
set(SPHINX_IN ${SPHINX_SOURCE}/conf.in.py)
set(SPHINX_OUT ${SPHINX_SOURCE}/conf.py)

configure_file(${SPHINX_IN} ${SPHINX_OUT} @ONLY)

add_custom_command(OUTPUT ${SPHINX_INDEX_FILE}
    COMMAND
    ${SPHINX_EXECUTABLE} -b html
    ${SPHINX_SOURCE} ${SPHINX_BUILD}
    WORKING_DIRECTORY ${SPHINX_SOURCE}
    DEPENDS
    ${SPHINX_RST_FILES}
    ${EXAMPLES}
    ${SOURCES}
    MAIN_DEPENDENCY ${SPHINX_OUT}
    COMMENT "Generating documentation with Sphinx")

add_custom_target(GenerateDoc
    ALL DEPENDS
    ${SPHINX_INDEX_FILE}
    ${SPHINX_RST_FILES}
)
