find_package(Sphinx REQUIRED)

file(GLOB_RECURSE EXAMPLES ../Examples/*.hpp)
file(GLOB_RECURSE SOURCES ../Include/*.hpp)
file(GLOB_RECURSE SHPHINX_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
        ${SHPHINX_RST_FILES}
        ${EXAMPLES}
        ${SOURCES}
        MAIN_DEPENDENCY ${SPHINX_OUT}
        COMMENT "Generating documentation with Sphinx")

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