/
Doxygen.cmake
65 lines (56 loc) · 2.17 KB
/
Doxygen.cmake
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
###############################################################################
#
###############################################################################
execute_process(COMMAND git describe --always --dirty=+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/..
TIMEOUT 5
RESULT_VARIABLE GIT_RESULT
OUTPUT_VARIABLE GIT_OUTPUT
ERROR_VARIABLE GIT_ERROR
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT(${GIT_RESULT} EQUAL 0))
message(WARNING "Git Command returned rc=${GIT_RESULT}. Output: '${GIT_OUTPUT}'. Error: '${GIT_ERROR}'")
else()
set(GIT_VERSION ${GIT_OUTPUT})
message(STATUS "Git Build ID: ${GIT_VERSION}")
endif()
###############################################################################
#
###############################################################################
set(DOYGEN_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doxygen)
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt)
set(DOYGEN_TOPLEVEL_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/..)
else()
set(DOYGEN_TOPLEVEL_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
endif()
set(DOXYGEN_EXECUTABLE doxygen)
set(DOXYGEN_SEARCH_PATH
/usr
/usr/local
/opt
)
find_program(
DOXYGEN_BIN
${DOXYGEN_EXECUTABLE}
PATHS ${DOXYGEN_SEARCH_PATH}
PATH_SUFFIXES /bin /sbin
DOC "Doxygen Executable Path"
)
if ((NOT DEFINED DOXYGEN_BIN) OR ("${DOXYGEN_BIN}" STREQUAL "DOXYGEN_BIN-NOTFOUND"))
message(STATUS "Doxygen not found in \"${DOXYGEN_SEARCH_PATH}\". Doxygen will not work.")
else()
message("Doxygen found at ${DOXYGEN_BIN}")
message("Doxygen: Encoding Git Version: ${GIT_VERSION}")
message("Doxygen: Top-level Directory: ${DOYGEN_TOPLEVEL_DIRECTORY}")
endif()
###############################################################################
#
###############################################################################
set(DOXYGEN_CONFIG_FILE stm32-common.doxyfile)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${DOXYGEN_CONFIG_FILE} ${CMAKE_CURRENT_BINARY_DIR}/${DOXYGEN_CONFIG_FILE})
add_custom_target(doxygen
COMMAND ${DOXYGEN_BIN} ${CMAKE_CURRENT_BINARY_DIR}/${DOXYGEN_CONFIG_FILE}
WORKING_DIRECTORY ${DOYGEN_TOPLEVEL_DIRECTORY}
COMMENT "Generating Doxygen Doxumentation"
)