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