]> Creatis software - bbtk.git/blob - kernel/cmake/BBTKBuildDoxygenDoc.cmake
0d03d680d4c9eac5cc9717c098ecc7ec7642e37b
[bbtk.git] / kernel / cmake / BBTKBuildDoxygenDoc.cmake
1
2
3 MACRO(BBTK_BUILD_DOXYGEN_DOC NAME INPUT DOC_RELATIVE_INSTALL_PATH PREDEFINED)
4
5   #--------------------------------------------------------------------------
6   SET(USE_DOXYGEN ON CACHE BOOL "" FORCE)
7   
8   # Name
9   SET(DOXYGEN_PROJECT_NAME "${NAME}")
10
11   # Inputs
12   STRING(REGEX REPLACE ";" " " DOXYGEN_INPUT "${INPUT}")
13
14   # Output dirs
15   SET(DOXYGEN_HTML_OUTPUT ".")
16   SET(DOXYGEN_OUTPUT ${BBTK_DOXYGEN_BUILD_PATH}/${DOC_RELATIVE_INSTALL_PATH})
17   IF(NOT IS_DIRECTORY ${DOXYGEN_OUTPUT}/${DOXYGEN_HTML_OUTPUT})
18     FILE(MAKE_DIRECTORY ${DOXYGEN_OUTPUT}/${DOXYGEN_HTML_OUTPUT})
19   ENDIF(NOT IS_DIRECTORY ${DOXYGEN_OUTPUT}/${DOXYGEN_HTML_OUTPUT})
20
21   # Doc exclude
22   SET(DOXYGEN_EXCLUDE "")
23   STRING(REGEX REPLACE ";" " " DOXYGEN_EXCLUDE "${DOXYGEN_EXCLUDE}")
24
25   # Log file name 
26   SET(DOXYGEN_LOGFILE "${CMAKE_CURRENT_BINARY_DIR}/doxygen.log")
27
28   # Predefined symbols
29   STRING(REGEX REPLACE ";" " " DOXYGEN_DOC_PREDEFINED "${PREDEFINED}")
30   
31   #---------------------------------------------------------------------------
32   # DOT verification
33   IF(DOT)
34     GET_FILENAME_COMPONENT(DOXYGEN_DOT_PATH ${DOT} PATH)
35     SET(DOXYGEN_HAVE_DOT "YES")
36   ELSE(DOT)
37     SET(DOXYGEN_DOT_PATH "")
38     SET(DOXYGEN_HAVE_DOT "NO")
39   ENDIF(DOT)
40   
41   #---------------------------------------------------------------------------
42   # Create file and project
43   CONFIGURE_FILE(
44     ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.txt.in
45     ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.txt
46     @ONLY IMMEDIATE
47     )
48  
49   FILE(GLOB HTML RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.html")
50   FOREACH(file ${HTML})
51     CONFIGURE_FILE(
52       ${CMAKE_CURRENT_SOURCE_DIR}/${file}
53       ${DOXYGEN_OUTPUT}/${DOXYGEN_HTML_OUTPUT}/${file}
54       COPYONLY IMMEDIATE
55       )
56   ENDFOREACH(file ${HTML})
57   
58   
59   ADD_CUSTOM_COMMAND(
60     OUTPUT ${DOXYGEN_OUTPUT}/${DOXYGEN_HTML_OUTPUT}/index.html
61     COMMAND 
62     ${DOXYGEN}
63     ARGS
64     ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.txt
65     DEPENDS DoxyMainPage.txt.in
66     )
67   
68   ADD_CUSTOM_TARGET(doxygen_${NAME} ALL
69     DEPENDS  ${DOXYGEN_OUTPUT}/${DOXYGEN_HTML_OUTPUT}/index.html
70     )
71   
72   INSTALL(
73     DIRECTORY
74     ${DOXYGEN_OUTPUT}/${DOXYGEN_HTML_OUTPUT}
75     DESTINATION
76     ${BBTK_DOXYGEN_INSTALL_PATH}/${DOC_RELATIVE_INSTALL_PATH}
77     )
78   #--------------------------------------------------------------------------
79
80 ENDMACRO(BBTK_BUILD_DOXYGEN_DOC)