Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/doc/doc/api/CMakeLists.txt @ 7356

Last change on this file since 7356 was 7356, checked in by rgrieder, 14 years ago

This should take care of most of the conditional compilation for Doxygen. Mind that the API reference is now dependent on the machine Doxygen runs. Previously there was just a mixture (i.e. any #ifdef evaluated false and therefore the #else block (if available) was chosen).

  • Property svn:eol-style set to native
File size: 4.3 KB
Line 
1# Add a "doc" target with CMake build system.
2# And configure doxy.config.in to doxy.config
3#
4# target "doc" allows building the documentation with doxygen/dot on WIN32 and Linux
5# Creates .chm windows help file if MS HTML help workshop
6# (available from http://msdn.microsoft.com/workshop/author/htmlhelp)
7# is installed with its DLLs in PATH.
8#
9#
10# Please note, that the tools, e.g.:
11# doxygen, dot, latex, dvips, makeindex, gswin32, etc.
12# must be in path.
13#
14# Note about Visual Studio Projects:
15# MSVS hast its own path environment which may differ from the shell.
16# See "Menu Tools/Options/Projects/VC++ Directories" in VS 7.1
17#
18# author Jan Woetzel 2004-2006
19# www.mip.informatik.uni-kiel.de/~jw
20# Adjustments for Orxonox by Reto Grieder
21
22FIND_PACKAGE(Doxygen QUIET)
23
24IF (DOXYGEN_FOUND)
25  # click+jump in Emacs and Visual Studio (for doxy.config) (jw)
26  IF(CMAKE_BUILD_TOOL MATCHES "msdev|devenv")
27    SET(DOXY_WARN_FORMAT "\"$file($line) : $text \"")
28  ELSE()
29    SET(DOXY_WARN_FORMAT "\"$file:$line: $text \"")
30  ENDIF()
31
32  SET(DOXY_INPUT_DIR  ${CMAKE_CURRENT_SOURCE_DIR})
33  SET(DOXY_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
34
35  # we need latex for doxygen because of the formulas
36  # Orxonox doesn't
37  #FIND_PACKAGE(LATEX)
38  #IF    (NOT LATEX_COMPILER)
39  #  MESSAGE(STATUS "latex command LATEX_COMPILER not found but usually required. You will probably get warnings and user inetraction on doxy run.")
40  #ENDIF (NOT LATEX_COMPILER)
41  #IF    (NOT MAKEINDEX_COMPILER)
42  #  MESSAGE(STATUS "makeindex command MAKEINDEX_COMPILER not found but usually required.")
43  #ENDIF (NOT MAKEINDEX_COMPILER)
44  #IF    (NOT DVIPS_CONVERTER)
45  #  MESSAGE(STATUS "dvips command DVIPS_CONVERTER not found but usually required.")
46  #ENDIF (NOT DVIPS_CONVERTER)
47
48  SET(INTERNAL_DOCFILE ${CMAKE_CURRENT_BINARY_DIR}/Internal.dox)
49  IF(WIN32)
50    SET(_working_dir ${RUNTIME_LIBRARY_DIRECTORY})
51  ELSE()
52    SET(_working_dir ${CMAKE_CURRENT_BINARY_DIR})
53  ENDIF()
54  ADD_CUSTOM_COMMAND(
55    OUTPUT ${INTERNAL_DOCFILE}
56    COMMAND orxonox-main
57    ARGS --noIOConsole --generateDoc --docFile ${INTERNAL_DOCFILE}
58    WORKING_DIRECTORY ${_working_dir}
59    COMMENT "Generating additional Doxygen documentation from Orxonox executable"
60  )
61  ADD_CUSTOM_TARGET(doc_internal DEPENDS ${INTERNAL_DOCFILE})
62  IF (NOT ${INTERAL_DOCFILE} EXISTS)
63    FILE(WRITE ${INTERNAL_DOCFILE} "// empty...")
64  ENDIF()
65
66  # Take care of most of the conditional compilation problems
67  # (Doxygen requires separate input for that)
68  IF(WIN32)
69    SET(DOXY_PLATFORM_DEF "ORXONOX_PLATFORM_WINDOWS")
70  ELSEIF(APPLE)
71    SET(DOXY_PLATFORM_DEF "ORXONOX_PLATFORM_APPLE ORXONOX_PLATFORM_UNIX")
72  ELSE()
73    SET(DOXY_PLATFORM_DEF "ORXONOX_PLATFORM_LINUX ORXONOX_PLATFORM_UNIX")
74  ENDIF()
75  IF(MSVC)
76    SET(DOXY_COMPILER_DEF "ORXONOX_COMPILER_MSVC")
77  ELSE()
78    SET(DOXY_COMPILER_DEF "ORXONOX_COMPILER_GCC")
79  ENDIF()
80
81  IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/doxy.config.in)
82    # use (configured) doxy.config from (out of place) BUILD tree:
83    SET(DOXY_CONFIG ${CMAKE_CURRENT_BINARY_DIR}/doxy.config)
84    SET(DOXY_LOGFILE ${CMAKE_CURRENT_BINARY_DIR}/doxy.log)
85    CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/doxy.config.in ${CMAKE_CURRENT_BINARY_DIR}/doxy.config @ONLY)
86  ELSE()
87    MESSAGE(FATAL_ERROR "Warning: Could not find dox.config.in in the root directory.")
88  ENDIF()
89
90  ADD_CUSTOM_TARGET(doc ${DOXYGEN_EXECUTABLE} ${DOXY_CONFIG})
91
92  # create a windows help .chm file using hhc.exe
93  # HTMLHelp DLL must be in path!
94  # fallback: use hhw.exe interactively
95  IF(WIN32)
96    FIND_PACKAGE(HTMLHelp)
97    IF(HTML_HELP_COMPILER)
98      SET(TMP ${DOXY_OUTPUT_DIR}/html/index.hhp)
99      STRING(REGEX REPLACE "/" "\\\\" HHP_FILE ${TMP})
100      ADD_CUSTOM_TARGET(doc_chm ${HTML_HELP_COMPILER} ${HHP_FILE})
101      ADD_DEPENDENCIES(doc_chm doc)
102      # Adding a dependency somehow adds doc target as default build target
103      SET_TARGET_PROPERTIES(doc doc_chm PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD TRUE)
104    ENDIF(HTML_HELP_COMPILER)
105  ENDIF (WIN32)
106
107
108  # Installation
109  INSTALL(
110    FILES ${DOXY_CONFIG} ${CMAKE_CURRENT_BINARY_DIR}/doxy.log
111    DESTINATION ${DOC_INSTALL_DIRECTORY}/api OPTIONAL
112  )
113  # Install command always needs the directory
114  IF(NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/html)
115    FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html)
116  ENDIF()
117  INSTALL(
118    DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html
119    DESTINATION ${DOC_INSTALL_DIRECTORY}/api
120  )
121ENDIF(DOXYGEN_FOUND)
Note: See TracBrowser for help on using the repository browser.