1# - Lucene++Docs.cmake 2# This file provides support for building the Lucene++ Documentation. 3# To build the documention, you will have to enable it 4# and then do the equivalent of "make doc". 5 6MACRO(SET_YESNO) 7 FOREACH(param ${ARGV}) 8 IF ( ${param} ) 9 SET(${param} "YES") 10 ELSE ( ${param} ) 11 SET(${param} "NO") 12 ENDIF ( ${param} ) 13 ENDFOREACH(param) 14ENDMACRO(SET_YESNO) 15MACRO(SET_BLANK) 16 FOREACH(param ${ARGV}) 17 IF ( NOT ${param} ) 18 SET(${param} "") 19 ENDIF ( NOT ${param} ) 20 ENDFOREACH(param) 21ENDMACRO(SET_BLANK) 22 23IF (ENABLE_DOCS) 24 OPTION(DOCS_HTML_HELP 25 "Doxygen should compile HTML into a Help file (CHM)." NO) 26 27 OPTION(DOCS_HTML 28 "Doxygen should build HTML documentation." YES) 29 OPTION(DOCS_XML 30 "Doxygen should build XML documentation." NO) 31 OPTION(DOCS_RTF 32 "Doxygen should build RTF documentation." NO) 33 OPTION(DOCS_MAN 34 "Doxygen should build man documentation." NO) 35 OPTION(DOCS_TAGFILE 36 "Doxygen should build a tagfile." NO) 37 38 OPTION(DOCS_LATEX 39 "Doxygen should build Latex documentation." NO ) 40 41 MARK_AS_ADVANCED( 42 DOCS_HTML_HELP 43 DOCS_LATEX 44 DOCS_XML 45 DOCS_HTML 46 DOCS_RTF 47 DOCS_MAN 48 DOCS_TAGFILE 49 ) 50 51 # 52 # Check for the tools 53 # 54 FIND_PACKAGE(Doxygen) 55 56 IF ( DOXYGEN_FOUND ) 57 # This creates a new target to build documentation. 58 # It runs ${DOXYGEN_EXECUTABLE} which is the full path and executable to 59 # Doxygen on your system, set by the FindDoxygen.cmake module 60 # (called by FindDocumentation.cmake). 61 # It runs the final generated Doxyfile against it. 62 # The DOT_PATH is substituted into the Doxyfile. 63 ADD_CUSTOM_TARGET(doc 64 "${DOXYGEN_EXECUTABLE}" "${PROJECT_BINARY_DIR}/doc/doxyfile" 65 VERBATIM 66 ) 67 68 IF ( DOCS_HTML_HELP ) 69 IF ( NOT DOCS_HTML ) 70 MESSAGE ( FATAL_ERROR "DOCS_HTML is required to buidl DOCS_HTML_HELP" ) 71 ENDIF ( NOT DOCS_HTML ) 72 FIND_PACKAGE(HTMLHelp) 73 IF ( NOT HTML_HELP_COMPILER ) 74 MESSAGE(FATAL_ERROR "HTML Help compiler not found, turn DOCS_HTML_HELP off to proceed") 75 ENDIF ( NOT HTML_HELP_COMPILER ) 76 77 #make cygwin work with hhc... 78 IF ( CYGWIN ) 79 EXECUTE_PROCESS ( COMMAND cygpath "${HTML_HELP_COMPILER}" 80 OUTPUT_VARIABLE HTML_HELP_COMPILER_EX ) 81 STRING ( REPLACE "\n" "" HTML_HELP_COMPILER_EX "${HTML_HELP_COMPILER_EX}" ) 82 STRING ( REPLACE "\r" "" HTML_HELP_COMPILER_EX "${HTML_HELP_COMPILER_EX}" ) 83 SET ( HTML_HELP_COMPILER_EX "\"${HTML_HELP_COMPILER_EX}\"" ) 84 ELSE ( CYGWIN ) 85 SET ( HTML_HELP_COMPILER_EX "${HTML_HELP_COMPILER}" ) 86 ENDIF ( CYGWIN ) 87 ENDIF ( DOCS_HTML_HELP ) 88 89 IF ( DOCS_LATEX ) 90 FIND_PACKAGE(LATEX) 91 IF ( NOT LATEX_COMPILER ) 92 MESSAGE(FATAL_ERROR "Latex compiler not found, turn DOCS_LATEX off to proceed") 93 ENDIF ( NOT LATEX_COMPILER ) 94 ENDIF ( DOCS_LATEX ) 95 96 FIND_PACKAGE(Perl) 97 98 IF ( DOXYGEN_DOT_EXECUTABLE ) 99 SET ( HAVE_DOT "YES" ) 100 ELSE ( DOXYGEN_DOT_EXECUTABLE ) 101 SET ( HAVE_DOT "NO" ) 102 ENDIF ( DOXYGEN_DOT_EXECUTABLE ) 103 104 #doxygen expects YES/NO parameters 105 SET_YESNO( 106 DOCS_HTML_HELP 107 DOCS_LATEX 108 DOCS_XML 109 DOCS_HTML 110 DOCS_RTF 111 DOCS_MAN 112 ) 113 #empty out paths if not found 114 SET_BLANK( 115 PERL_EXECUTABLE 116 DOXYGEN_DOT_EXECUTABLE 117 HTML_HELP_COMPILER 118 LATEX_COMPILER 119 ) 120 121 IF ( DOCS_TAGFILE ) 122 SET ( DOCS_TAGFILE_LOCATION "${PROJECT_BINARY_DIR}/doc/tag/lucene++.tag" ) 123 ENDIF ( DOCS_TAGFILE ) 124 125 # This processes our Doxyfile.cmake and substitutes paths to generate a final Doxyfile 126 CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/doc/doxygen/Doxyfile.cmake" "${PROJECT_BINARY_DIR}/doc/doxyfile") 127 CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/doc/doxygen/helpheader.htm.cmake" "${PROJECT_BINARY_DIR}/doc/helpheader.htm") 128 CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/doc/doxygen/helpfooter.htm.cmake" "${PROJECT_BINARY_DIR}/doc/helpfooter.htm") 129 CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/doc/doxygen/doxygen.css.cmake" "${PROJECT_BINARY_DIR}/doc/html/doxygen.css") 130 131 #create a target for tar.gz html help 132 FIND_PACKAGE(UnixCommands) 133 IF ( TAR AND GZIP ) 134 ADD_CUSTOM_TARGET(doc-tarz 135 COMMAND "${TAR}" "-czf" "${PROJECT_BINARY_DIR}/doc/lucene++-doc.tar.gz" ./ 136 WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/doc/html/" 137 #DEPENDS doc 138 VERBATIM 139 ) 140 ENDIF ( TAR AND GZIP ) 141 142 #install HTML pages if they were built 143 IF ( DOCS_HTML AND NOT WIN32 ) 144 INSTALL(DIRECTORY "${PROJECT_BINARY_DIR}/doc/html/" DESTINATION share/doc/lucene++-doc/html) 145 ENDIF ( DOCS_HTML AND NOT WIN32 ) 146 147 #install man pages if they were built 148 IF ( DOCS_MAN ) 149 INSTALL(DIRECTORY "${PROJECT_BINARY_DIR}/doc/man/" DESTINATION man) 150 ENDIF ( DOCS_MAN ) 151 152 ELSE ( DOXYGEN_FOUND ) 153 MESSAGE(FATAL_ERROR "Doxygen not found, turn ENABLE_DOCS off to proceed") 154 ENDIF ( DOXYGEN_FOUND ) 155 156 157ENDIF (ENABLE_DOCS) 158