
find_package(Doxygen 1.9.6 EXACT QUIET)

if(NOT Doxygen_FOUND)
    include(ExternalProject)

    ExternalProject_Add(
        doxygen
        PREFIX doxygen
        URL https://github.com/doxygen/doxygen/archive/refs/tags/Release_1_9_6.zip
        URL_HASH SHA256=28ab2c5d2ba1d3ed56c538125f1cad7ca8a09992e8b3892e9533736268ff6426
        DOWNLOAD_DIR "${STDGPU_EXTERNAL_DIR}/doxygen"
        UPDATE_COMMAND ""
        INSTALL_COMMAND ""
        CMAKE_ARGS
            -DCMAKE_BUILD_TYPE=Release
        EXCLUDE_FROM_ALL TRUE
    )

    ExternalProject_Get_Property(doxygen BINARY_DIR)
    add_executable(Doxygen::doxygen IMPORTED)
    set_target_properties(Doxygen::doxygen PROPERTIES IMPORTED_LOCATION "${BINARY_DIR}/bin/doxygen")

    add_dependencies(Doxygen::doxygen doxygen)
endif()


include(FetchContent)

FetchContent_Declare(
    doxygen-awesome-css
    PREFIX doxygen-awesome-css
    URL https://github.com/jothepro/doxygen-awesome-css/archive/refs/tags/v2.2.0.zip
    URL_HASH SHA256=2cff61a38694895259f5fdd04599c08d86cf9fd2dafc9950bf47af09af52e227
    DOWNLOAD_DIR "${STDGPU_EXTERNAL_DIR}/doxygen-awesome-css"
)

FetchContent_GetProperties(doxygen-awesome-css)
if(NOT doxygen-awesome-css_POPULATED)
  FetchContent_Populate(doxygen-awesome-css)
endif()

set(STDGPU_DOXYGEN_AWESOME_CSS_DIR ${doxygen-awesome-css_SOURCE_DIR})


# Check include path
set(STDGPU_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../src")
get_filename_component(STDGPU_INCLUDE_DIR ${STDGPU_INCLUDE_DIR} ABSOLUTE)


if(STDGPU_COMPILE_WARNING_AS_ERROR)
    set(STDGPU_DOXYGEN_WARN_AS_ERROR YES)
else()
    set(STDGPU_DOXYGEN_WARN_AS_ERROR NO)
endif()

set(STDGPU_DOXYFILE_IN "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in")
set(STDGPU_DOXYFILE "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile")
set(STDGPU_DOC_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}")

configure_file(${STDGPU_DOXYFILE_IN}
               ${STDGPU_DOXYFILE}
               @ONLY)

add_custom_target(stdgpu_doc
                 COMMAND Doxygen::doxygen ${STDGPU_DOXYFILE}
                 WORKING_DIRECTORY ${STDGPU_DOC_BUILD_DIR}
                 COMMENT "Generating stdgpu API documentation with Doxygen"
                 VERBATIM)


#install(DIRECTORY "${STDGPU_DOC_BUILD_DIR}/doxygen-html/"
#        DESTINATION ${STDGPU_DOC_INSTALL_DIR}
#        COMPONENT stdgpu)
