blob: 923a5895f5dc08f398be32c9e29cb61179b78fe2 [file] [log] [blame]
# Copyright (C) 2009 Julian Andres Klode <jak@debian.org>.
# Licensed under the same terms as APT; i.e. GPL 3 or later.
macro(add_debiandoc target sourcefiles installdest)
foreach(file ${sourcefiles})
get_filename_component(relfile ${file} NAME)
string(REPLACE ".sgml" "" manual ${relfile})
get_filename_component(absolute ${file} ABSOLUTE)
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${manual}.html
COMMAND debiandoc2html ${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 (NOT ${installdest} EQUAL "" )
endforeach(file ${sourcefiles})
add_custom_target(${target} ALL DEPENDS ${commands})
endmacro(add_debiandoc target sourcefiles installdest)
macro(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})
endmacro(add_po4a type master po target deps)
# Macro for XML man pages.
macro(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 xmlto man ${CMAKE_CURRENT_SOURCE_DIR}/${manpage}.xml
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${manpage}.xml
)
set(commands ${commands} ${CMAKE_CURRENT_BINARY_DIR}/${manpage})
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${manpage}
DESTINATION share/man/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})
foreach(entity ${entities})
add_custom_command(OUTPUT ${transdir}/${entity}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMAND ${CMAKE_COMMAND} -E make_directory ${transdir}
COMMAND ${CMAKE_COMMAND} -E copy ${entity} ${transdir})
set(ent_cmds ${ent_cmds} ${transdir}/${entity})
endforeach(entity ${entities})
add_po4a(docbook ${manpage}.xml po/${translation}.po
${transdir}/${manpage}.xml "${ent_cmds}")
add_custom_command(OUTPUT ${transdir}/${manpage}
COMMAND xmlto -o ${transdir} man ${transdir}/${manpage}.xml
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
DEPENDS ${transdir}/${manpage}.xml)
set(nls-cmd ${nls-cmd} ${transdir}/${manpage})
install(FILES ${transdir}/${manpage}
DESTINATION share/man/${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})
endmacro(add_xml_manpages manpages)
macro(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 share/man/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 share/man/${translation}/man${section})
set(files ${files} ${transdir}/${man})
endforeach(translation ${translations})
endif(USE_NLS)
endforeach(man ${manpages})
add_custom_target(${target} ALL DEPENDS ${files})
endmacro(add_manpages target manpages translations)