# Enable Doxygen Support with CMake
if (OCTOPUS_DOXYGEN)
    find_package(Doxygen REQUIRED)

    # Overwrite doxyfile defaults
    set(DOXYGEN_PROJECT_LOGO ${PROJECT_SOURCE_DIR}/doc/doxygen/octopus.png)
    set(DOXYGEN_ALWAYS_DETAILED_SEC YES)
    set(DOXYGEN_TAB_SIZE 2)
    set(DOXYGEN_EXTRACT_ALL YES)
    set(DOXYGEN_OPTIMIZE_FOR_FORTRAN YES)
    set(DOXYGEN_LOOKUP_CACHE_SIZE 2)
    set(DOXYGEN_FORTRAN_COMMENT_AFTER 200)
    set(DOXYGEN_SHOW_GROUPED_MEMB_INC YES)
    set(DOXYGEN_SORT_MEMBER_DOCS NO)
    set(DOXYGEN_WARN_IF_UNDOCUMENTED NO)
    set(DOXYGEN_WARN_IF_INCOMPLETE_DOC NO)
    set(DOXYGEN_ALPHABETICAL_INDEX NO)
    set(DOXYGEN_DOT_MULTI_TARGETS YES)
    set(DOXYGEN_EXTRACT_PRIVATE YES)
    set(DOXYGEN_STATIC_PRIVATE YES)
    set(DOXYGEN_CASE_SENSE_NAMES YES)
    set(DOXYGEN_SKIP_FUNCTION_MACROS NO)
    set(DOXYGEN_DIR_GRAPH_MAX_DEPTH 10)
    set(DOXYGEN_RECURSIVE YES)
    set(DOXYGEN_GENERATE_TREEVIEW YES)
    set(DOXYGEN_USE_MATHJAX YES)
    set(DOXYGEN_ENABLE_PREPROCESSING YES)
    set(DOXYGEN_EXCLUDE_PATTERNS "*_inc.F90")
    set(DOXYGEN_OPTIMIZE_FOR_FORTRAN Yes)

    doxygen_add_docs(doxygen
            ${PROJECT_SOURCE_DIR}/src
            ${PROJECT_BINARY_DIR}/src
            COMMENT "Building doxygen documentation. This may take a couple of minutes."
    )

    # Ensure doxygen target is rebuilt if configure-time headers change
    add_dependencies(doxygen ChecksumCopy)

    # Inform user where to find the documentation
    add_custom_command(TARGET doxygen
            POST_BUILD
            COMMAND ${CMAKE_COMMAND} -E echo
            "Documentation can be viewed by opening ${PROJECT_BINARY_DIR}/doc/doxygen/html/index.html in a browser."
    )

else ()
    message("-- Doxygen support disabled.")
endif ()
