diff options
Diffstat (limited to 'CMake/Documentation.cmake')
-rw-r--r-- | CMake/Documentation.cmake | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/CMake/Documentation.cmake b/CMake/Documentation.cmake new file mode 100644 index 000000000..98e07176b --- /dev/null +++ b/CMake/Documentation.cmake @@ -0,0 +1,134 @@ +# Copyright (C) 2009, 2016 Julian Andres Klode <jak@debian.org>. +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation files +# (the "Software"), to deal in the Software without restriction, +# including without limitation the rights to use, copy, modify, merge, +# publish, distribute, sublicense, and/or sell copies of the Software, +# and to permit persons to whom the Software is furnished to do so, +# subject to the following conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +function(add_docbook target sourcefiles installdest) + foreach(file ${sourcefiles}) + get_filename_component(relfile ${file} NAME) + string(REPLACE ".dbk" "" manual ${relfile}) + get_filename_component(absolute ${file} ABSOLUTE) + + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${manual}.html/ + COMMAND xsltproc --nonet --novalid --xinclude + --stringparam base.dir ${CMAKE_CURRENT_BINARY_DIR}/${manual}.html/ + --path ${CMAKE_CURRENT_SOURCE_DIR}/../vendor/${CURRENT_VENDOR}/ + --path ${CMAKE_CURRENT_SOURCE_DIR}/ + ${CMAKE_CURRENT_SOURCE_DIR}/docbook-html-style.xsl + ${absolute} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + DEPENDS ${file} + ) + set(commands ${commands} ${CMAKE_CURRENT_BINARY_DIR}/${manual}.html) + if (NOT ${installdest} EQUAL "" ) + install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${manual}.html + DESTINATION ${installdest}) + endif() + endforeach(file ${sourcefiles}) + + add_custom_target(${target} ALL DEPENDS ${commands}) +endfunction() + + +function(add_po4a type master po target deps) + add_custom_command(OUTPUT ${target} + COMMAND po4a-translate --keep 0 -f ${type} -m ${master} + -p ${po} -l ${target} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS ${deps} ${master} ${po}) +endfunction() + + +# Macro for XML man pages. +function(add_xml_manpages target manpages translations entities) + foreach(manpage ${manpages}) + string(LENGTH ${manpage} manpage_length) + math(EXPR manpage_length ${manpage_length}-1) + string(SUBSTRING ${manpage} ${manpage_length} 1 section) + + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${manpage} + COMMAND xsltproc --path ${CMAKE_CURRENT_SOURCE_DIR}/../vendor/${CURRENT_VENDOR}/ + --path ${CMAKE_CURRENT_SOURCE_DIR}/ + ${CMAKE_CURRENT_SOURCE_DIR}/manpage-style.xsl + ${CMAKE_CURRENT_SOURCE_DIR}/${manpage}.xml + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${manpage}.xml + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/manpage-style.xsl + ) + + + set(commands ${commands} ${CMAKE_CURRENT_BINARY_DIR}/${manpage}) + + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${manpage} + DESTINATION ${CMAKE_INSTALL_MANDIR}/man${section}) + + # Add the translations for the manpage. + foreach(translation ${translations}) + set(entities) + # transdir = shortcut to the output directory for translations. + set(transdir ${CMAKE_CURRENT_BINARY_DIR}/${translation}) + + add_po4a(docbook ${manpage}.xml po/${translation}.po + ${transdir}/${manpage}.xml "${ent_cmds}") + + + add_custom_command(OUTPUT ${transdir}/${manpage} + COMMAND xsltproc --path ${CMAKE_CURRENT_SOURCE_DIR}/../vendor/${CURRENT_VENDOR}/ + --path ${CMAKE_CURRENT_SOURCE_DIR}/ + --stringparam l10n.gentext.default.language ${translation} + ${CMAKE_CURRENT_SOURCE_DIR}/manpage-style.xsl + ${transdir}/${manpage}.xml + WORKING_DIRECTORY ${transdir} + DEPENDS ${transdir}/${manpage}.xml + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/manpage-style.xsl) + + set(nls-cmd ${nls-cmd} ${transdir}/${manpage}) + install(FILES ${transdir}/${manpage} + DESTINATION ${CMAKE_INSTALL_MANDIR}/${translation}/man${section}) + + endforeach(translation ${translations}) + endforeach(manpage ${manpages}) + + add_custom_target(${target} ALL DEPENDS ${commands}) + # Sort the list of the translations. + list(SORT nls-cmd) + add_custom_target(nls-${target} ALL DEPENDS ${nls-cmd}) +endfunction() + + +function(add_manpages target manpages translations) + foreach(man ${manpages}) + string(LENGTH ${man} manpage_length) + math(EXPR manpage_length ${manpage_length}-1) + string(SUBSTRING ${man} ${manpage_length} 1 section) + install(FILES ${man} DESTINATION ${CMAKE_INSTALL_MANDIR}/man${section}) + + if (USE_NLS) + foreach(translation ${translations}) + set(transdir ${CMAKE_CURRENT_BINARY_DIR}/${translation}) + add_po4a(man ${man} po/${translation}.po ${transdir}/${man} "") + install(FILES ${transdir}/${man} + DESTINATION ${CMAKE_INSTALL_MANDIR}/${translation}/man${section}) + set(files ${files} ${transdir}/${man}) + endforeach(translation ${translations}) + endif() + endforeach(man ${manpages}) + add_custom_target(${target} ALL DEPENDS ${files}) +endfunction() |