From 64efb7ecfd01be507ec8086a547e1cb3f99aeda6 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Wed, 22 Feb 2023 07:23:38 +0100 Subject: [PATCH] [client,x11] fail build on manpage generation if manpages should be build but dependencies are missing fail the build --- client/X11/CMakeLists.txt | 88 +++++++++++++++++++-------------------- 1 file changed, 43 insertions(+), 45 deletions(-) diff --git a/client/X11/CMakeLists.txt b/client/X11/CMakeLists.txt index dc47cc907..4c7559c09 100644 --- a/client/X11/CMakeLists.txt +++ b/client/X11/CMakeLists.txt @@ -84,52 +84,50 @@ set(${MODULE_PREFIX}_LIBS ${X11_LIBRARIES}) if(WITH_MANPAGES) - find_program(XSLTPROC_EXECUTABLE NAMES xsltproc) - - if(DOCBOOKXSL_FOUND AND XSLTPROC_EXECUTABLE) - - # 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(xfreerdp.1.xml.in xfreerdp.1.xml @ONLY IMMEDIATE) - - # Compile the helper tool with default compiler settings. - # We need the include paths though. - get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES) - set(GENERATE_INCLUDES "") - foreach(dir ${dirs}) - set(GENERATE_INCLUDES ${GENERATE_INCLUDES} -I${dir}) - endforeach(dir) - - add_custom_command(OUTPUT xfreerdp.1 - COMMAND ${CMAKE_C_COMPILER} ${GENERATE_INCLUDES} - ${CMAKE_CURRENT_SOURCE_DIR}/generate_argument_docbook.c - -o ${CMAKE_CURRENT_BINARY_DIR}/generate_argument_docbook - COMMAND ${CMAKE_CURRENT_BINARY_DIR}/generate_argument_docbook - COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_CURRENT_SOURCE_DIR}/xfreerdp-channels.1.xml ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_CURRENT_SOURCE_DIR}/xfreerdp-examples.1.xml ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_CURRENT_SOURCE_DIR}/xfreerdp-envvar.1.xml ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${XSLTPROC_EXECUTABLE} ${DOCBOOKXSL_DIR}/manpages/docbook.xsl xfreerdp.1.xml - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - DEPENDS - ${CMAKE_CURRENT_BINARY_DIR}/xfreerdp.1.xml - ${CMAKE_CURRENT_SOURCE_DIR}/xfreerdp-examples.1.xml - ${CMAKE_CURRENT_SOURCE_DIR}/xfreerdp-channels.1.xml - ${CMAKE_CURRENT_SOURCE_DIR}/xfreerdp-envvar.1.xml) - - add_custom_target(xfreerdp.manpage ALL - DEPENDS xfreerdp.1) - - install_freerdp_man(${CMAKE_CURRENT_BINARY_DIR}/xfreerdp.1 1) - else() - message(WARNING "WITH_MANPAGES was set, but xsltproc was not found. man-pages will not be installed") + 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(xfreerdp.1.xml.in xfreerdp.1.xml @ONLY IMMEDIATE) + + # Compile the helper tool with default compiler settings. + # We need the include paths though. + get_property(dirs DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES) + set(GENERATE_INCLUDES "") + foreach(dir ${dirs}) + set(GENERATE_INCLUDES ${GENERATE_INCLUDES} -I${dir}) + endforeach(dir) + + add_custom_command(OUTPUT xfreerdp.1 + COMMAND ${CMAKE_C_COMPILER} ${GENERATE_INCLUDES} + ${CMAKE_CURRENT_SOURCE_DIR}/generate_argument_docbook.c + -o ${CMAKE_CURRENT_BINARY_DIR}/generate_argument_docbook + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/generate_argument_docbook + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_CURRENT_SOURCE_DIR}/xfreerdp-channels.1.xml ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_CURRENT_SOURCE_DIR}/xfreerdp-examples.1.xml ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_CURRENT_SOURCE_DIR}/xfreerdp-envvar.1.xml ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${XSLTPROC_EXECUTABLE} ${DOCBOOKXSL_DIR}/manpages/docbook.xsl xfreerdp.1.xml + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/xfreerdp.1.xml + ${CMAKE_CURRENT_SOURCE_DIR}/xfreerdp-examples.1.xml + ${CMAKE_CURRENT_SOURCE_DIR}/xfreerdp-channels.1.xml + ${CMAKE_CURRENT_SOURCE_DIR}/xfreerdp-envvar.1.xml) + + add_custom_target(xfreerdp.manpage ALL + DEPENDS xfreerdp.1) + + install_freerdp_man(${CMAKE_CURRENT_BINARY_DIR}/xfreerdp.1 1) endif(WITH_MANPAGES) set(XSHM_FEATURE_TYPE "REQUIRED")