Warning, /sdk/pology/cmake/DocbookTools.cmake is written in an unsupported language. File is not indexed.
0001 # TODO: Add doc comments for all this stuff.
0002
0003 if(NOT LIBXML2_XMLLINT_EXECUTABLE)
0004 find_package(LibXml2)
0005 endif()
0006 if(NOT XSLTPROC_EXECUTABLE)
0007 find_package(Xsltproc)
0008 endif()
0009
0010 if(NOT dbt_target_count)
0011 set(dbt_target_count 1)
0012 endif()
0013
0014 # Sed search and replace expression to
0015 # remove title= attributes to sectioning classes on HTML pages,
0016 # because they cause a tooltip to be shown wherever the pointer is.
0017 set(sedrepl_notitle
0018 "'s/(<div[^>]* class=\"(abstract|article|book|chapter|sect)[^>]*) title=\"[^\"]*\"/\\1/g'")
0019
0020 # Sed search and replace expression to
0021 # remove highlighting comments, when highlighting not requested.
0022 set(sedrepl_nohlang "'s/<!-- *language: *[^ ]+ *-->//g'")
0023
0024 set(highlight_command ${CMAKE_SOURCE_DIR}/util/add-html-highlight.py)
0025
0026 function(GET_ABSOLUTE_PATHS abspathsvar absroot)
0027 set(paths ${ARGN})
0028
0029 set(abspaths)
0030 foreach(path ${paths})
0031 if(NOT IS_ABSOLUTE ${path})
0032 set(path ${absroot}/${path})
0033 endif()
0034 set(abspaths ${abspaths} ${path})
0035 endforeach()
0036
0037 set(${abspathsvar} ${abspaths} PARENT_SCOPE)
0038
0039 endfunction()
0040
0041
0042 macro(DOCBOOK_BOOK_TO_HTML_CHUNKED)
0043
0044 set(optargs HIGHLIGHT)
0045 set(svalargs TARGET CSSFILE XSLFILE OUTDIR DESTINATION RENAME RENAMECSS)
0046 set(mvalargs DOCS EXTRAS)
0047 cmake_parse_arguments(DBT_BHC
0048 "${optargs}" "${svalargs}" "${mvalargs}" ${ARGN})
0049 if(DBT_BHC_UNPARSED_ARGUMENTS)
0050 string(REPLACE ";" " " badargs "${DBT_BHC_UNPARSED_ARGUMENTS}")
0051 message(FATAL_ERROR "Unknown arguments: ${badargs}")
0052 endif()
0053 list(LENGTH DBT_BHC_DOCS ndocs)
0054 if(ndocs LESS 1)
0055 message(FATAL_ERROR "No Docbook files set (DOCS).")
0056 endif()
0057 if(NOT DBT_BHC_XSLFILE)
0058 message(FATAL_ERROR "XSL file not set (XSLFILE).")
0059 endif()
0060 if(NOT DBT_BHC_OUTDIR)
0061 message(FATAL_ERROR "Output directory for chunks not set (OUTDIR).")
0062 endif()
0063 if(NOT DBT_BHC_DESTINATION)
0064 message(FATAL_ERROR "Install directory not set (DESTINATION).")
0065 endif()
0066 if(NOT DBT_BHC_RENAME)
0067 set(DBT_BHC_RENAME ${DBT_BHC_OUTDIR})
0068 endif()
0069 if(NOT DBT_BHC_RENAMECSS)
0070 get_filename_component(DBT_BHC_RENAMECSS ${DBT_BHC_CSSFILE} NAME)
0071 endif()
0072
0073 get_absolute_paths(docfiles ${CMAKE_CURRENT_SOURCE_DIR} ${DBT_BHC_DOCS})
0074 get_absolute_paths(extrafiles ${CMAKE_CURRENT_SOURCE_DIR} ${DBT_BHC_EXTRAS})
0075 get_absolute_paths(xslfile ${CMAKE_CURRENT_SOURCE_DIR} ${DBT_BHC_XSLFILE})
0076 get_absolute_paths(cssfile ${CMAKE_CURRENT_SOURCE_DIR} ${DBT_BHC_CSSFILE})
0077 get_absolute_paths(outdir ${CMAKE_CURRENT_BINARY_DIR} ${DBT_BHC_OUTDIR})
0078 get_absolute_paths(rnmdir ${CMAKE_CURRENT_BINARY_DIR} ${DBT_BHC_RENAME})
0079
0080 if(NOT DBT_BHC_TARGET)
0081 string(REPLACE ${CMAKE_SOURCE_DIR}/ "" srcsubdir
0082 ${CMAKE_CURRENT_SOURCE_DIR})
0083 string(REPLACE "/" "-" targbase ${srcsubdir})
0084 set(target "${targbase}-dbt${dbt_target_count}-book-to-html-chunked")
0085 math(EXPR dbt_target_count "${dbt_target_count} + 1")
0086 else()
0087 set(target ${DBT_BHC_TARGET})
0088 endif()
0089 if(DBT_BHC_HIGHLIGHT)
0090 set(apply_highlight ${highlight_command} ${rnmdir}/*.html)
0091 else()
0092 set(apply_highlight sed -i -r ${sedrepl_nohlang} ${rnmdir}/*.html)
0093 endif()
0094
0095 list(GET docfiles 0 mdocfile)
0096 set(targfilebase ${target}-buildstamp)
0097 set(targfile ${rnmdir}/${targfilebase})
0098 add_custom_command(
0099 OUTPUT ${targfile}
0100 COMMAND rm -rf ${rnmdir}
0101 COMMAND ${LIBXML2_XMLLINT_EXECUTABLE} --noout --xinclude --postvalid
0102 ${mdocfile}
0103 COMMAND ${XSLTPROC_EXECUTABLE} --xinclude -o ${outdir}
0104 ${xslfile} ${mdocfile}
0105 COMMAND mv ${outdir} ${outdir}-tmp
0106 COMMAND mv ${outdir}-tmp ${rnmdir}
0107 COMMAND sed -i -r ${sedrepl_notitle} ${rnmdir}/*.html
0108 COMMAND ${apply_highlight}
0109 COMMAND touch ${targfile}
0110 DEPENDS ${docfiles} ${xslfile}
0111 )
0112 add_custom_target(${target} ALL DEPENDS ${targfile})
0113 install(DIRECTORY ${rnmdir} DESTINATION ${DBT_BHC_DESTINATION}
0114 PATTERN ${targfilebase} EXCLUDE)
0115 install(FILES ${extrafiles}
0116 DESTINATION ${DBT_BHC_DESTINATION}/${DBT_BHC_RENAME})
0117 install(FILES ${cssfile}
0118 DESTINATION ${DBT_BHC_DESTINATION}/${DBT_BHC_RENAME}
0119 RENAME ${DBT_BHC_RENAMECSS})
0120
0121 endmacro()
0122
0123
0124 macro(DOCBOOK_BOOK_TO_HTML_SINGLE)
0125
0126 set(optargs PIPEOUT HIGHLIGHT)
0127 set(svalargs TARGET CSSFILE XSLFILE OUTFILE DESTINATION RENAME RENAMECSS)
0128 set(mvalargs DOCS EXTRAS)
0129 cmake_parse_arguments(DBT_BHC
0130 "${optargs}" "${svalargs}" "${mvalargs}" ${ARGN})
0131 if(DBT_BHC_UNPARSED_ARGUMENTS)
0132 string(REPLACE ";" " " badargs "${DBT_BHC_UNPARSED_ARGUMENTS}")
0133 message(FATAL_ERROR "Unknown arguments: ${badargs}")
0134 endif()
0135 list(LENGTH DBT_BHC_DOCS ndocs)
0136 if(ndocs LESS 1)
0137 message(FATAL_ERROR "No Docbook files set (DOCS).")
0138 endif()
0139 if(NOT DBT_BHC_XSLFILE)
0140 message(FATAL_ERROR "XSL file not set (XSLFILE).")
0141 endif()
0142 if(NOT DBT_BHC_OUTFILE)
0143 message(FATAL_ERROR "Output file not set (OUTFILE).")
0144 endif()
0145 if(NOT DBT_BHC_DESTINATION)
0146 message(FATAL_ERROR "Install directory not set (DESTINATION).")
0147 endif()
0148 if(NOT DBT_BHC_RENAME)
0149 set(DBT_BHC_RENAME ${DBT_BHC_OUTFILE})
0150 endif()
0151 if(NOT DBT_BHC_RENAMECSS)
0152 get_filename_component(DBT_BHC_RENAMECSS ${DBT_BHC_CSSFILE} NAME)
0153 endif()
0154
0155 get_absolute_paths(docfiles ${CMAKE_CURRENT_SOURCE_DIR} ${DBT_BHC_DOCS})
0156 get_absolute_paths(extrafiles ${CMAKE_CURRENT_SOURCE_DIR} ${DBT_BHC_EXTRAS})
0157 get_absolute_paths(xslfile ${CMAKE_CURRENT_SOURCE_DIR} ${DBT_BHC_XSLFILE})
0158 get_absolute_paths(cssfile ${CMAKE_CURRENT_SOURCE_DIR} ${DBT_BHC_CSSFILE})
0159 get_absolute_paths(outfile ${CMAKE_CURRENT_BINARY_DIR} ${DBT_BHC_OUTFILE})
0160
0161 if(NOT DBT_BHC_TARGET)
0162 string(REPLACE ${CMAKE_SOURCE_DIR}/ "" srcsubdir
0163 ${CMAKE_CURRENT_SOURCE_DIR})
0164 string(REPLACE "/" "-" targbase ${srcsubdir})
0165 set(target "${targbase}-dbt${dbt_target_count}-book-to-html-chunked")
0166 math(EXPR dbt_target_count "${dbt_target_count} + 1")
0167 else()
0168 set(target ${DBT_BHC_TARGET})
0169 endif()
0170 if(DBT_BHC_PIPEOUT)
0171 set(pipeopt "-o" ${outfile})
0172 endif()
0173 if(DBT_BHC_HIGHLIGHT)
0174 set(apply_highlight ${highlight_command} ${outfile})
0175 else()
0176 set(apply_highlight sed -i -r ${sedrepl_nohlang} ${outfile})
0177 endif()
0178
0179 list(GET docfiles 0 mdocfile)
0180 add_custom_command(
0181 OUTPUT ${outfile}
0182 COMMAND rm -rf ${outfile}
0183 COMMAND ${LIBXML2_XMLLINT_EXECUTABLE} --noout --xinclude --postvalid
0184 ${mdocfile}
0185 COMMAND ${XSLTPROC_EXECUTABLE} --xinclude ${pipeopt}
0186 ${xslfile} ${mdocfile}
0187 COMMAND sed -i -r ${sedrepl_notitle} ${outfile}
0188 COMMAND ${apply_highlight}
0189 DEPENDS ${docfiles} ${xslfile}
0190 )
0191 add_custom_target(${target} ALL DEPENDS ${outfile})
0192 install(FILES ${outfile} DESTINATION ${DBT_BHC_DESTINATION}
0193 RENAME ${DBT_BHC_RENAME})
0194 install(FILES ${extrafiles} DESTINATION ${DBT_BHC_DESTINATION})
0195 install(FILES ${cssfile} DESTINATION ${DBT_BHC_DESTINATION}
0196 RENAME ${DBT_BHC_RENAMECSS})
0197
0198 endmacro()