678ff144ab
* use a macro to add resource files for executables and shared libraries * use that macro to declare targets * use that macro to set library/binary versioning * use that macro to set target output name * use a macro to create manpages and names
77 lines
2.4 KiB
CMake
77 lines
2.4 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_template name_base section api)
|
|
if(WITH_MANPAGES)
|
|
if (WITH_BINARY_VERSIONING)
|
|
set(manpage "${CMAKE_CURRENT_BINARY_DIR}/${name_base}${api}.${section}")
|
|
else()
|
|
set(manpage "${CMAKE_CURRENT_BINARY_DIR}/${name_base}.${section}")
|
|
endif()
|
|
configure_file(${name_base}.${section}.in ${manpage})
|
|
install_freerdp_man(${manpage} ${section})
|
|
endif()
|
|
endfunction()
|
|
|
|
function(generate_and_install_freerdp_man_from_xml name_base section api dependencies)
|
|
if(WITH_MANPAGES)
|
|
set(template "${name_base}.${section}")
|
|
if (WITH_BINARY_VERSIONING)
|
|
set(MANPAGE_NAME "${name_base}${api}")
|
|
set(manpage "${name_base}${api}.${section}")
|
|
else()
|
|
set(MANPAGE_NAME "${name_base}")
|
|
set(manpage "${name_base}.${section}")
|
|
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(${template}.xml.in ${manpage}.xml @ONLY IMMEDIATE)
|
|
|
|
foreach(DEP IN LISTS dependencies)
|
|
set(SRC ${CMAKE_CURRENT_SOURCE_DIR}/${DEP}.in)
|
|
set(DST ${CMAKE_CURRENT_BINARY_DIR}/${DEP})
|
|
|
|
if (EXISTS ${SRC})
|
|
message("generating ${DST} from ${SRC}")
|
|
configure_file(${SRC} ${DST} @ONLY IMMEDIATE)
|
|
else()
|
|
message("using ${DST} from ${SRC}")
|
|
endif()
|
|
endforeach()
|
|
|
|
find_program(XSLTPROC_EXECUTABLE NAMES xsltproc REQUIRED)
|
|
if (NOT DOCBOOKXSL_FOUND)
|
|
message(FATAL_ERROR "docbook xsl not found but required for manpage generation")
|
|
endif()
|
|
|
|
add_custom_command(
|
|
OUTPUT "${manpage}"
|
|
COMMAND ${CMAKE_BINARY_DIR}/client/common/man/generate_argument_docbook
|
|
COMMAND ${XSLTPROC_EXECUTABLE} --path "${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}" ${DOCBOOKXSL_DIR}/manpages/docbook.xsl ${manpage}.xml
|
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
|
DEPENDS
|
|
${CMAKE_CURRENT_BINARY_DIR}/${manpage}.xml
|
|
generate_argument_docbook
|
|
${template}.xml.in
|
|
)
|
|
|
|
add_custom_target(
|
|
${manpage}.manpage ALL
|
|
DEPENDS
|
|
${manpage}
|
|
)
|
|
install_freerdp_man(${CMAKE_CURRENT_BINARY_DIR}/${manpage} ${section})
|
|
endif()
|
|
endfunction()
|