forked from libevent/libevent
-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
cmake: attach doxygen target into all target
v2: Disable non-html generator for doxygen by default v3: convert cmake option to doxygen config
- Loading branch information
Showing
5 changed files
with
126 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
# 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 | ||
) | ||
# 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() |