/
CMakeLists.txt
141 lines (121 loc) · 6.15 KB
/
CMakeLists.txt
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
configure_file(ThirdPartyLibraries.html
${CMAKE_BINARY_DIR}/doc/ThirdPartyLibraries.html COPYONLY)
if(BUILD_GUI)
FILE(GLOB QCH_FILES freecad.qch.part*)
list(SORT QCH_FILES)
set (DEST_FILE ${CMAKE_BINARY_DIR}/doc/freecad.qch)
foreach(SRC_FILE ${QCH_FILES})
if(${SRC_FILE} IS_NEWER_THAN ${DEST_FILE})
EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/src/Tools/catfiles.py
--outputfile=${DEST_FILE} ${QCH_FILES}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
OUTPUT_STRIP_TRAILING_WHITESPACE)
break()
endif()
endforeach()
configure_file(freecad.qhc ${CMAKE_BINARY_DIR}/doc/freecad.qhc COPYONLY)
INSTALL(FILES
${CMAKE_BINARY_DIR}/doc/freecad.qch
DESTINATION ${CMAKE_INSTALL_DOCDIR}
)
endif(BUILD_GUI)
INSTALL(FILES
freecad.qhc
ThirdPartyLibraries.html
DESTINATION ${CMAKE_INSTALL_DOCDIR}
)
if(DOXYGEN_FOUND)
IF (DOXYGEN_DOT_EXECUTABLE)
SET(HAVE_DOT YES)
ELSE (DOXYGEN_DOT_EXECUTABLE)
message(STATUS "Note: Doxygen docs will look better with graphviz's dot installed.")
SET(HAVE_DOT NO)
ENDIF (DOXYGEN_DOT_EXECUTABLE)
SET(DOXYGEN_LANGUAGE "English" CACHE STRING "Language used by doxygen")
MARK_AS_ADVANCED(DOXYGEN_LANGUAGE)
# note: this test is obsolete if DevDoc target is used
if (NOT BUILD_GUI)
message("Note: Gui is not built. Documentation may lack some parts.")
endif (NOT BUILD_GUI)
# directory order seems important for correct macro expansion
# (files containing macros definitions must be parsed before the files using them)
SET(DOXYGEN_SOURCE_DIR ${COIN3D_INCLUDE_DIRS}/Inventor/fields/SoSubField.h
${CMAKE_SOURCE_DIR}/src/CXX
${CMAKE_SOURCE_DIR}/src/zipios++
${CMAKE_SOURCE_DIR}/src/3rdParty
${CMAKE_SOURCE_DIR}/src/Build
${CMAKE_SOURCE_DIR}/src/Base
${CMAKE_BINARY_DIR}/src/Base
${CMAKE_SOURCE_DIR}/src/App
${CMAKE_BINARY_DIR}/src/App
${CMAKE_SOURCE_DIR}/src/Gui
${CMAKE_BINARY_DIR}/src/Gui
${CMAKE_SOURCE_DIR}/src/Mod
${CMAKE_BINARY_DIR}/src/Mod
#${CMAKE_SOURCE_DIR}/src/Main #nothing to document there ATM...
${CMAKE_SOURCE_DIR}/src/Doc
${CMAKE_BINARY_DIR}/src/Doc
)
STRING(REGEX REPLACE ";" " " DOXYGEN_INPUT_LIST "${DOXYGEN_SOURCE_DIR}")
# exclude some subdirectories
# src/Tools : content not relevant ?
# src/3rdParty/CxImage : Windows thumbnailer
set( DOXYGEN_EXCLUDE_DIR ${CMAKE_SOURCE_DIR}/src/Tools)
list(APPEND DOXYGEN_EXCLUDE_DIR ${CMAKE_SOURCE_DIR}/src/3rdParty/CxImage)
list(APPEND DOXYGEN_EXCLUDE_DIR ${CMAKE_SOURCE_DIR}/src/Doc/sphinx)
# deprecated modules
list(APPEND DOXYGEN_EXCLUDE_DIR ${CMAKE_SOURCE_DIR}/src/Mod/Assembly)
list(APPEND DOXYGEN_EXCLUDE_DIR ${CMAKE_SOURCE_DIR}/src/Mod/Cam)
list(APPEND DOXYGEN_EXCLUDE_DIR ${CMAKE_SOURCE_DIR}/src/Mod/Complete)
STRING(REGEX REPLACE ";" " " DOXYGEN_EXCLUDE_LIST "${DOXYGEN_EXCLUDE_DIR}")
SET(DOXYGEN_OUTPUT_DIR ${CMAKE_BINARY_DIR}/doc/SourceDocu)
SET(DOXYGEN_IMAGE_PATH ${CMAKE_SOURCE_DIR}/src/Gui/Icons)
SET(DOXYGEN_LAYOUT_FILE ${CMAKE_SOURCE_DIR}/src/Doc/FreecadDoxygenLayout.xml)
find_package(Coin3DDoc)
if( COIN3D_DOC_FOUND )
SET(DOXYGEN_TAGFILES
${COIN3D_DOC_TAGFILE}=${COIN3D_DOC_PATH}
)
endif( COIN3D_DOC_FOUND )
# Try to get some git information about the source tree
EXECUTE_PROCESS(COMMAND git rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_DOC_REV
ERROR_VARIABLE GIT_REV_FAILED
RESULT_VARIABLE GIT_REV_RETURN_CODE)
if( GIT_REV_RETURN_CODE EQUAL 0 )
EXECUTE_PROCESS(COMMAND git log -n1 "--pretty=format:%h %cD '%s'"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_DOC_LOG
ERROR_VARIABLE GIT_REV_FAILED
RESULT_VARIABLE GIT_REV_RETURN_CODE)
set(GIT_REVISION_INFO
"Built from git branch ${GIT_DOC_REV}, commit ${GIT_DOC_LOG}")
endif()
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/mainpage.dox.in
${CMAKE_CURRENT_BINARY_DIR}/mainpage.dox @ONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/BuildDevDoc.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/BuildDevDoc.cfg @ONLY)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/BuildWebDoc.cfg.in
${CMAKE_CURRENT_BINARY_DIR}/BuildWebDoc.cfg @ONLY)
# reconfigure to have all sources files generated from xml, whatever build options were
# generate source documentation
# delete CMakeCache to reset to default build options next time
ADD_CUSTOM_TARGET(DevDoc
${CMAKE_COMMAND} -D BUILD_GUI:BOOL=ON -D BUILD_FEM:BOOL=ON ${CMAKE_SOURCE_DIR}
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/BuildDevDoc.cfg
COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_BINARY_DIR}/CMakeCache.txt
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
# lightweight version for the web
ADD_CUSTOM_TARGET(WebDoc
${CMAKE_COMMAND} -D BUILD_GUI:BOOL=ON -D BUILD_FEM:BOOL=ON ${CMAKE_SOURCE_DIR}
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/src/Doc/templates ${CMAKE_CURRENT_BINARY_DIR}/templates
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/BuildWebDoc.cfg
COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_BINARY_DIR}/CMakeCache.txt
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
else( DOXYGEN_FOUND )
ADD_CUSTOM_TARGET(DevDoc
echo "Doxygen not found. Install it and rerun CMake")
endif( DOXYGEN_FOUND )