1# -helper macro to add a "doc" target with CMake build system. 2# and configure Doxyfile.in to Doxyfile 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 21SET (MKDIR_DOC ${CMAKE_COMMAND} -E make_directory ${CMAKE_INSTALL_PREFIX}/share/doc/chilitags) 22SET (INSTALL_DOC ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/doc/html ${CMAKE_INSTALL_PREFIX}/share/doc/chilitags) 23 24FIND_PACKAGE(Doxygen) 25 26IF (DOXYGEN_FOUND) 27 28 # click+jump in Emacs and Visual Studio (for Doxyfile) (jw) 29 IF (CMAKE_BUILD_TOOL MATCHES "(msdev|devenv)") 30 SET(DOXY_WARN_FORMAT "\"$file($line) : $text \"") 31 ELSE (CMAKE_BUILD_TOOL MATCHES "(msdev|devenv)") 32 SET(DOXY_WARN_FORMAT "\"$file:$line: $text \"") 33 ENDIF (CMAKE_BUILD_TOOL MATCHES "(msdev|devenv)") 34 35 # we need latex for doxygen because of the formulas 36 FIND_PACKAGE(LATEX) 37 IF (NOT LATEX_COMPILER) 38 MESSAGE(STATUS "latex command LATEX_COMPILER not found but usually required. You will probably get warnings and user inetraction on doxy run.") 39 ENDIF (NOT LATEX_COMPILER) 40 IF (NOT MAKEINDEX_COMPILER) 41 MESSAGE(STATUS "makeindex command MAKEINDEX_COMPILER not found but usually required.") 42 ENDIF (NOT MAKEINDEX_COMPILER) 43 IF (NOT DVIPS_CONVERTER) 44 MESSAGE(STATUS "dvips command DVIPS_CONVERTER not found but usually required.") 45 ENDIF (NOT DVIPS_CONVERTER) 46 47 IF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in") 48 MESSAGE(STATUS "configured ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in --> ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") 49 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in 50 ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile 51 @ONLY ) 52 # use (configured) Doxyfile from (out of place) BUILD tree: 53 SET(DOXY_CONFIG "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") 54 ELSE (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in") 55 # use static hand-edited Doxyfile from SOURCE tree: 56 SET(DOXY_CONFIG "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile") 57 IF (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile") 58 MESSAGE(STATUS "WARNING: using existing ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile instead of configuring from Doxyfile.in file.") 59 ELSE (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile") 60 IF (EXISTS "${CMAKE_MODULE_PATH}/Doxyfile.in") 61 # using template Doxyfile.in 62 MESSAGE(STATUS "configured ${CMAKE_CMAKE_MODULE_PATH}/Doxyfile.in --> ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") 63 CONFIGURE_FILE(${CMAKE_MODULE_PATH}/Doxyfile.in 64 ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile 65 @ONLY ) 66 SET(DOXY_CONFIG "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile") 67 ELSE (EXISTS "${CMAKE_MODULE_PATH}/Doxyfile.in") 68 # failed completely... 69 MESSAGE(SEND_ERROR "Please create ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in (or Doxyfile as fallback)") 70 ENDIF(EXISTS "${CMAKE_MODULE_PATH}/Doxyfile.in") 71 72 ENDIF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile") 73 ENDIF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in") 74 75 ADD_CUSTOM_TARGET(doc ${DOXYGEN_EXECUTABLE} ${DOXY_CONFIG}) 76 ADD_CUSTOM_TARGET(install-doc ${MKDIR_DOC} COMMAND ${INSTALL_DOC}) 77 78 # create a windows help .chm file using hhc.exe 79 # HTMLHelp DLL must be in path! 80 # fallback: use hhw.exe interactively 81 IF (WIN32) 82 FIND_PACKAGE(HTMLHelp) 83 IF (HTML_HELP_COMPILER) 84 SET (TMP "${CMAKE_CURRENT_BINARY_DIR}\\Doc\\html\\index.hhp") 85 STRING(REGEX REPLACE "[/]" "\\\\" HHP_FILE ${TMP} ) 86 # MESSAGE(SEND_ERROR "DBG HHP_FILE=${HHP_FILE}") 87 ADD_CUSTOM_TARGET(winhelp ${HTML_HELP_COMPILER} ${HHP_FILE}) 88 ADD_DEPENDENCIES (winhelp doc) 89 90 IF (NOT TARGET_DOC_SKIP_INSTALL) 91 # install windows help? 92 # determine useful name for output file 93 # should be project and version unique to allow installing 94 # multiple projects into one global directory 95 IF (EXISTS "${PROJECT_BINARY_DIR}/Doc/html/index.chm") 96 IF (PROJECT_NAME) 97 SET(OUT "${PROJECT_NAME}") 98 ELSE (PROJECT_NAME) 99 SET(OUT "Documentation") # default 100 ENDIF(PROJECT_NAME) 101 IF (${PROJECT_NAME}_VERSION_MAJOR) 102 SET(OUT "${OUT}-${${PROJECT_NAME}_VERSION_MAJOR}") 103 IF (${PROJECT_NAME}_VERSION_MINOR) 104 SET(OUT "${OUT}.${${PROJECT_NAME}_VERSION_MINOR}") 105 IF (${PROJECT_NAME}_VERSION_PATCH) 106 SET(OUT "${OUT}.${${PROJECT_NAME}_VERSION_PATCH}") 107 ENDIF(${PROJECT_NAME}_VERSION_PATCH) 108 ENDIF(${PROJECT_NAME}_VERSION_MINOR) 109 ENDIF(${PROJECT_NAME}_VERSION_MAJOR) 110 # keep suffix 111 SET(OUT "${OUT}.chm") 112 113 #MESSAGE("DBG ${PROJECT_BINARY_DIR}/Doc/html/index.chm \n${OUT}") 114 # create target used by install and package commands 115 INSTALL(FILES "${PROJECT_BINARY_DIR}/Doc/html/index.chm" 116 DESTINATION "doc" 117 RENAME "${OUT}" 118 ) 119 ENDIF(EXISTS "${PROJECT_BINARY_DIR}/Doc/html/index.chm") 120 ENDIF(NOT TARGET_DOC_SKIP_INSTALL) 121 122 ENDIF(HTML_HELP_COMPILER) 123 # MESSAGE(SEND_ERROR "HTML_HELP_COMPILER=${HTML_HELP_COMPILER}") 124 ENDIF (WIN32) 125ENDIF(DOXYGEN_FOUND) 126 127