find_package(Doxygen)

if(TARGET Doxygen::doxygen)
    set(DOXYGEN_PROJECT_NUMBER "v${PROJECT_VERSION}")
    set(DOXYGEN_OUTPUT_DIRECTORY "${ASIO_GRPC_PROJECT_ROOT}")
    set(DOXYGEN_HAVE_DOT "NO")
    set(DOXYGEN_SHOW_USED_FILES "NO")
    set(DOXYGEN_SHOW_FILES "NO")
    set(DOXYGEN_CASE_SENSE_NAMES "NO")
    set(DOXYGEN_PYTHON_DOCSTRING "NO")
    set(DOXYGEN_BUILTIN_STL_SUPPORT "YES")
    set(DOXYGEN_IDL_PROPERTY_SUPPORT "NO")
    set(DOXYGEN_EXTRACT_PACKAGE "YES")
    set(DOXYGEN_EXTRACT_STATIC "YES")
    set(DOXYGEN_STRIP_FROM_INC_PATH "src")
    set(DOXYGEN_HIDE_UNDOC_MEMBERS "YES")
    set(DOXYGEN_HIDE_UNDOC_CLASSES "YES")
    set(DOXYGEN_WARN_IF_UNDOCUMENTED "NO")
    set(DOXYGEN_WARN_IF_INCOMPLETE_DOC "NO")
    set(DOXYGEN_FILE_PATTERNS "*.cpp" "*.ixx" "*.ipp" "*.hpp" "*.md" "cmake/AsioGrpcProtobufGenerator.cmake")
    set(DOXYGEN_EXCLUDE_PATTERNS "*/build*" "*/example/*" "*/deps/*" "*/test/*" "README.md" "CONTRIBUTING.md")
    set(DOXYGEN_EXAMPLE_PATH "example/proto" "example/snippets" "cmake")
    set(DOXYGEN_USE_MDFILE_AS_MAINPAGE "doc/index.md")
    set(DOXYGEN_VERBATIM_HEADERS "NO")
    set(DOXYGEN_HTML_OUTPUT "docs")
    set(DOXYGEN_HTML_HEADER "${CMAKE_CURRENT_LIST_DIR}/header.html")
    set(DOXYGEN_HTML_EXTRA_STYLESHEET
        "${CMAKE_CURRENT_LIST_DIR}/doxygen-awesome.css" "${CMAKE_CURRENT_LIST_DIR}/doxygen-awesome-sidebar-only.css"
        "${CMAKE_CURRENT_LIST_DIR}/custom.css")
    set(DOXYGEN_HTML_COLORSTYLE_HUE "209")
    set(DOXYGEN_HTML_COLORSTYLE_SAT "255")
    set(DOXYGEN_HTML_COLORSTYLE_GAMMA "113")
    set(DOXYGEN_HTML_DYNAMIC_MENUS "YES")
    set(DOXYGEN_HTML_DYNAMIC_SECTIONS "YES")
    set(DOXYGEN_GENERATE_TREEVIEW "YES")
    set(DOXYGEN_TREEVIEW_WIDTH "310")
    set(DOXYGEN_MACRO_EXPANSION "YES")
    set(DOXYGEN_INCLUDE_PATH "${ASIO_GRPC_PROJECT_ROOT}/src" "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}")
    set(DOXYGEN_PREDEFINED "AGRPC_BOOST_ASIO" "AGRPC_GENERATING_DOCUMENTATION" "AGRPC_ASIO_HAS_CO_AWAIT"
                           "AGRPC_ASIO_HAS_CANCELLATION_SLOT")
    set(DOXYGEN_SKIP_FUNCTION_MACROS "NO")

    doxygen_add_docs(asio-grpc-doxygen WORKING_DIRECTORY "${ASIO_GRPC_PROJECT_ROOT}")
endif()
