Hash :
620a3fa1
        
        Author :
  
        
        Date :
2019-08-29T19:40:10
        
      
Doxygen documentation improvements - Documentation for `bufferevent_compat.h` and `rpc.h` is not generated since the `@file` command is missing. It can be fixed by adding `@file` in file comment block. - The briefs of buffer.h,bufferevent.h and some other files are missing. Adding `@brief` command can fix it. - The parameters in the function declaration are different from the parameters following the `@param` command.We should change them to the same. - Documentation of `watch.h` is not generated since `watch.h` has not been added to the Doxyfile `INPUT` tag. - Add link to the watch.h in event.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
# Use FindDoxygen.cmake to generate documentation.
option(DOXYGEN_GENERATE_HTML  "Generate HTML"      ON)
option(DOXYGEN_GENERATE_MAN   "Generate man pages" OFF)
option(DOXYGEN_MAN_LINKS      "Generate man links" ON)
option(DOXYGEN_GENERATE_LATEX "Generate LaTeX"     OFF)
# If the case-insensitive value of the cmake option is one of
# "off, no, false" or 0, it is equal to false, otherwise true.
# And the values of the doxygen config does not exactly match it.
# So we need to convert the cmake option to a doxygen config.
macro(_convert_to_dx_cfg CMK_OPTION)
  if (${CMK_OPTION})
    set(${CMK_OPTION} YES)
  else()
    set(${CMK_OPTION} NO)
  endif()
endmacro()
macro(UseDoxygen)
  if (${CMAKE_VERSION} VERSION_LESS "3.9")
    # Old versions of cmake have poor support for Doxygen generation.
    message(FATAL_ERROR "Doxygen generation only enabled for cmake 3.9 and higher")
  else()
    find_package(Doxygen)
    if (DOXYGEN_FOUND)
      set(DOXYGEN_PROJECT_NAME ${PROJECT_NAME})
      set(DOXYGEN_PROJECT_NUMBER ${EVENT_PACKAGE_VERSION})
      set(DOXYGEN_PROJECT_BRIEF "Event notification library")
      set(DOXYGEN_OUTPUT_DIRECTORY doxygen)
      set(DOXYGEN_STRIP_FROM_PATH include)
      set(DOXYGEN_JAVADOC_AUTOBRIEF YES)
      set(DOXYGEN_OPTIMIZE_OUTPUT_FOR_C YES)
      set(DOXYGEN_SORT_BRIEF_DOCS YES)
      set(DOXYGEN_RECURSIVE NO)
      _convert_to_dx_cfg(DOXYGEN_GENERATE_HTML)
      _convert_to_dx_cfg(DOXYGEN_GENERATE_MAN)
      _convert_to_dx_cfg(DOXYGEN_MAN_LINKS)
      _convert_to_dx_cfg(DOXYGEN_GENERATE_LATEX)
      set(DOXYGEN_LATEX_CMD_NAME latex)
      set(DOXYGEN_PAPER_TYPE a4wide)
      set(DOXYGEN_PDF_HYPERLINKS NO)
      set(DOXYGEN_GENERATE_RTF NO)
      set(DOXYGEN_GENERATE_XML NO)
      set(DOXYGEN_GENERATE_CHI NO)
      set(DOXYGEN_PREDEFINED TAILQ_ENTRY
        RB_ENTRY
        EVENT_DEFINED_TQENTRY_
        EVENT_IN_DOXYGEN_
      )
      set(DOX_INPUT include/event2/buffer.h
        include/event2/buffer_compat.h
        include/event2/bufferevent.h
        include/event2/bufferevent_compat.h
        include/event2/bufferevent_ssl.h
        include/event2/dns.h
        include/event2/dns_compat.h
        include/event2/event.h
        include/event2/event_compat.h
        include/event2/http.h
        include/event2/http_compat.h
        include/event2/listener.h
        include/event2/rpc.h
        include/event2/rpc_compat.h
        include/event2/tag.h
        include/event2/tag_compat.h
        include/event2/thread.h
        include/event2/util.h
        include/event2/watch.h
      )
      # Add 'doxygen' target
      doxygen_add_docs(doxygen
        ${DOX_INPUT}
        ALL
        WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
        COMMENT "Generating doxygen documentation for ${PROJECT_NAME}..."
      )
      # Use 'make clean' to remove the generated directory
      set_property(DIRECTORY
        PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
        "${PROJECT_BINARY_DIR}/${DOXYGEN_OUTPUT_DIRECTORY}"
      )
      # Install html into <prefix>/share/doc/<project>
      if ("${DOXYGEN_GENERATE_HTML}" STREQUAL "YES")
        install(DIRECTORY
          ${PROJECT_BINARY_DIR}/${DOXYGEN_OUTPUT_DIRECTORY}/html
          DESTINATION ${CMAKE_INSTALL_PREFIX}/share/doc/${PROJECT_NAME}
          COMPONENT doc
        )
      endif()
      # Install manual into <prefix>/share/man/man3
      if ("${DOXYGEN_GENERATE_MAN}" STREQUAL "YES")
        install(DIRECTORY
          ${PROJECT_BINARY_DIR}/${DOXYGEN_OUTPUT_DIRECTORY}/man/man3
          DESTINATION ${CMAKE_INSTALL_PREFIX}/share/man
          COMPONENT doc
        )
      endif()
    else(DOXYGEN_FOUND)
      message(FATAL_ERROR "Doxygen command not found, set EVENT__DOXYGEN to disable")
    endif (DOXYGEN_FOUND)
  endif()
endmacro()