Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Initial commit for split doc (in order to let Pierre play with it). Please do not...
[simgrid.git] / buildtools / Cmake / GenerateRefGuide.cmake
1 #### Generate the html documentation
2
3 find_path(FIG2DEV_PATH  NAMES fig2dev   PATHS NO_DEFAULT_PATHS)
4 find_path(DOXYGEN_PATH  NAMES doxygen   PATHS NO_DEFAULT_PATHS)
5
6
7 file(GLOB_RECURSE source_doxygen
8         "${CMAKE_HOME_DIRECTORY}/tools/gras/*.[chl]"
9         "${CMAKE_HOME_DIRECTORY}/src/*.[chl]"
10         "${CMAKE_HOME_DIRECTORY}/include/*.[chl]"
11 )
12
13
14 if(DOXYGEN_PATH AND FIG2DEV_PATH)
15
16         set(REFDOCSSOURCES "${source_doxygen}\n${REF_GUIDE_SOURCES}")
17         string(REPLACE "\n" ";" REFDOCSSOURCES ${REFDOCSSOURCES})
18
19
20         set(DOC_PNGS 
21                 ${CMAKE_HOME_DIRECTORY}/doc/webcruft/simgrid_logo_2011.png
22                 ${CMAKE_HOME_DIRECTORY}/doc/webcruft/simgrid_logo_2011_small.png
23         )
24         
25         configure_file(${CMAKE_HOME_DIRECTORY}/doc/ref_guide/doxygen/RefGuideDoxyfile.in ${CMAKE_HOME_DIRECTORY}/doc/ref_guide/doxygen/RefGuideDoxyfile @ONLY)
26         
27         ADD_CUSTOM_TARGET(ref_guide
28                 COMMENT "Generating the SimGrid ref guide..."
29                 DEPENDS ${DOC_SOURCES} ${DOC_FIGS} ${source_doxygen}
30                 COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_HOME_DIRECTORY}/doc/ref_guide/html
31             COMMAND ${CMAKE_COMMAND} -E make_directory   ${CMAKE_HOME_DIRECTORY}/doc/ref_guide/html             
32                 WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}/doc/ref_guide/
33         )
34                 
35         ADD_CUSTOM_COMMAND(TARGET ref_guide
36                 DEPENDS ${source_doxygen}
37                 COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_HOME_DIRECTORY}/doc/ref_guide/doxygen/logcategories.doc
38                 COMMAND ${CMAKE_HOME_DIRECTORY}/tools/doxygen/xbt_log_extract_hierarchy.pl > ${CMAKE_HOME_DIRECTORY}/doc/ref_guide/doxygen/logcategories.doc
39                 WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}
40         )
41
42         foreach(file ${DOC_FIGS})
43                 string(REPLACE ".fig" ".png" tmp_file ${file})
44                 string(REPLACE "${CMAKE_HOME_DIRECTORY}/doc/shared/fig/" "${CMAKE_HOME_DIRECTORY}/doc/ref_guide/html/" tmp_file ${tmp_file})            
45                 ADD_CUSTOM_COMMAND(TARGET ref_guide
46                         COMMAND ${FIG2DEV_PATH}/fig2dev -Lpng -S 4 ${file} ${tmp_file}
47                 )
48         endforeach(file ${DOC_FIGS})
49         
50         foreach(file ${DOC_PNGS})
51                 ADD_CUSTOM_COMMAND(TARGET ref_guide
52                         COMMAND ${CMAKE_COMMAND} -E copy ${file} ${CMAKE_HOME_DIRECTORY}/doc/ref_guide/html/
53                 )
54         endforeach(file ${DOC_PNGS})
55
56         ADD_CUSTOM_COMMAND(TARGET ref_guide
57                 COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_HOME_DIRECTORY}/doc/simgrid.css                          ${CMAKE_HOME_DIRECTORY}/doc/ref_guide/html/
58         )
59         
60         ADD_CUSTOM_COMMAND(TARGET ref_guide
61            COMMAND ${FIG2DEV_PATH}/fig2dev -Lmap ${CMAKE_HOME_DIRECTORY}/doc/shared/fig/simgrid_modules.fig | perl -pe 's/imagemap/simgrid_modules/g'| perl -pe 's/<IMG/<IMG style=border:0px/g' | ${CMAKE_HOME_DIRECTORY}/tools/doxygen/fig2dev_postprocessor.pl > ${CMAKE_HOME_DIRECTORY}/doc/ref_guide/doxygen/simgrid_modules.map
62             COMMAND ${CMAKE_COMMAND} -E echo "XX First Doxygen pass"
63                 COMMAND ${DOXYGEN_PATH}/doxygen RefGuideDoxyfile
64                 COMMAND ${CMAKE_HOME_DIRECTORY}/tools/doxygen/index_create.pl simgridrefguide.tag index-API.doc
65
66                 COMMAND ${CMAKE_COMMAND} -E echo "XX Second Doxygen pass"
67                 COMMAND ${DOXYGEN_PATH}/doxygen RefGuideDoxyfile
68                 
69                 COMMAND ${CMAKE_COMMAND} -E remove -f ${CMAKE_HOME_DIRECTORY}/doc/ref_guide/html/dir*
70                 
71
72                 WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}/doc/ref_guide/doxygen
73         )
74         
75 else(DOXYGEN_PATH AND FIG2DEV_PATH)
76
77         ADD_CUSTOM_TARGET(ref_guide
78                         COMMENT "Generating the SimGrid documentation..."
79                         )
80
81         ADD_CUSTOM_COMMAND(TARGET ref_guide
82                         COMMAND ${CMAKE_COMMAND} -E echo "DOXYGEN_PATH          = ${DOXYGEN_PATH}"
83                         COMMAND ${CMAKE_COMMAND} -E echo "FIG2DEV_PATH          = ${FIG2DEV_PATH}"
84                         COMMAND ${CMAKE_COMMAND} -E echo "IN ORDER TO GENERATE THE DOCUMENTATION YOU NEED ALL TOOLS !!!"
85                         COMMAND ${CMAKE_COMMAND} -E echo "FAIL TO MAKE SIMGRID DOCUMENTATION see previous messages for details ..."
86                         COMMAND false
87                         )
88
89                 
90 endif(DOXYGEN_PATH AND FIG2DEV_PATH)
91
92 ##############################################################################"
93
94
95 ADD_CUSTOM_TARGET(ref_guide_pdf
96     COMMAND ${CMAKE_COMMAND} -E echo "XX First pass simgrid_documentation.pdf"
97     COMMAND make clean
98     COMMAND make pdf || true
99     COMMAND ${CMAKE_COMMAND} -E echo "XX Second pass simgrid_documentation.pdf"
100     COMMAND ${CMAKE_COMMAND} -E remove -f ${CMAKE_HOME_DIRECTORY}/doc/latex/refman.pdf
101     COMMAND make pdf || true
102     COMMAND ${CMAKE_COMMAND} -E echo "XX Write Simgrid_documentation.pdf"
103     COMMAND ${CMAKE_COMMAND} -E rename ${CMAKE_HOME_DIRECTORY}/doc/latex/refman.pdf ${CMAKE_HOME_DIRECTORY}/doc/latex/simgrid_documentation.pdf
104   
105     WORKING_DIRECTORY ${CMAKE_HOME_DIRECTORY}/doc/latex/
106 )
107 add_dependencies(ref_guide_pdf ref_guide)