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()