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