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