find_package(Doxygen REQUIRED)
find_package(Sphinx REQUIRED)

set(EMF_INTERFACE_C_INPUT_PATH "${PROJECT_SOURCE_DIR}/emf_core/include/emf_core ${PROJECT_SOURCE_DIR}/emf_core_cpp/include/emf_core ${PROJECT_SOURCE_DIR}/emf_core_binding/include/emf_core")
set(EMF_INTERFACE_C_INCLUDE_PATH "${PROJECT_SOURCE_DIR}/emf_core/include ${PROJECT_SOURCE_DIR}/emf_core_cpp/include ${PROJECT_SOURCE_DIR}/emf_core_binding/include")

set(DOXYFILE_IN doxygen/Doxyfile.in)
set(DOXYFILE_OUT doxygen/Doxyfile)
set(SPHINX_IN sphinx/conf.py.in)
set(SPHINX_OUT sphinx-config/conf.py)

set(DOXYGEN_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/doxygen)
set(DOXYGEN_XML_OUTPUT_DIR ${DOXYGEN_OUTPUT_DIR}/xml)
set(SPHINX_CONFIG_DIR ${CMAKE_CURRENT_BINARY_DIR}/sphinx-config)
set(SPHINX_INPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/sphinx)
set(SPHINX_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/sphinx)

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

add_custom_target(doc ALL)

add_custom_target(doxygen ALL
        COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYFILE_OUT}
        COMMENT "Generating doxygen")

add_custom_target(sphinx ALL
        COMMAND ${SPHINX_EXECUTABLE} -b html -c ${SPHINX_CONFIG_DIR} ${SPHINX_INPUT_DIR} ${SPHINX_OUTPUT_DIR}
        COMMENT "Generating sphinx")

add_dependencies(sphinx doxygen)
add_dependencies(doc doxygen sphinx)

install(DIRECTORY ${DOXYGEN_OUTPUT_DIR}/html
        DESTINATION ${CMAKE_INSTALL_PREFIX}/share/doc/${PROJECT_NAME}/doxygen
        )

install(DIRECTORY ${SPHINX_OUTPUT_DIR}
        DESTINATION ${CMAKE_INSTALL_PREFIX}/share/doc/${PROJECT_NAME}/sphinx
        )