FreeRDP/cmake/InstallFreeRDPMan.cmake
2023-12-20 09:21:31 +01:00

51 lines
1.5 KiB
CMake

include(GNUInstallDirs)
include(FindDocBookXSL)
function(install_freerdp_man manpage section)
if(WITH_MANPAGES)
install(FILES ${manpage} DESTINATION ${CMAKE_INSTALL_MANDIR}/man${section})
endif()
endfunction()
function(generate_and_install_freerdp_man_from_xml manpage dependencies)
if(WITH_MANPAGES)
find_program(XSLTPROC_EXECUTABLE NAMES xsltproc REQUIRED)
if (NOT DOCBOOKXSL_FOUND)
message(FATAL_ERROR "docbook xsl not found but required for manpage generation")
endif()
# We need the variable ${MAN_TODAY} to contain the current date in ISO
# format to replace it in the configure_file step.
include(today)
TODAY(MAN_TODAY)
configure_file(${manpage}.xml.in ${manpage}.xml @ONLY IMMEDIATE)
set(dep_SRC)
foreach(dep ${dependencies})
set(cur_SRC ${CMAKE_CURRENT_SOURCE_DIR}/${dep})
list(APPEND dep_SRC ${cur_SRC})
endforeach()
add_custom_command(
OUTPUT ${manpage}
COMMAND ${CMAKE_BINARY_DIR}/client/common/man/generate_argument_docbook
COMMAND ${XSLTPROC_EXECUTABLE} --path ${CMAKE_CURRENT_SOURCE_DIR} ${DOCBOOKXSL_DIR}/manpages/docbook.xsl ${manpage}.xml
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS
${CMAKE_CURRENT_BINARY_DIR}/${manpage}.xml
)
add_custom_target(
${manpage}.manpage ALL
DEPENDS
${manpage}
${manpage}.xml
${manpage}.xml.in
generate_argument_docbook
)
install_freerdp_man(${CMAKE_CURRENT_BINARY_DIR}/${manpage} 1)
endif()
endfunction()