From c064d54cb163bcd838b36ca4a918954367ccfd51 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Thu, 14 Dec 2023 14:13:53 +0100 Subject: [PATCH] [client,sdl] add manpage --- client/SDL/CMakeLists.txt | 8 +- client/SDL/man/CMakeLists.txt | 6 ++ .../man/sdl-freerdp-channels.1.xml} | 0 client/SDL/man/sdl-freerdp-envvar.1.xml | 15 +++ client/SDL/man/sdl-freerdp-examples.1.xml | 95 +++++++++++++++++++ client/SDL/man/sdl-freerdp.1.xml.in | 63 ++++++++++++ client/X11/CMakeLists.txt | 48 +--------- client/X11/man/CMakeLists.txt | 6 ++ client/X11/man/xfreerdp-channels.1.xml | 0 client/X11/{ => man}/xfreerdp-envvar.1.xml | 0 client/X11/{ => man}/xfreerdp-examples.1.xml | 0 client/X11/{ => man}/xfreerdp.1.xml.in | 2 +- .../man}/generate_argument_docbook.c | 4 +- cmake/InstallFreeRDPMan.cmake | 62 ++++++++++++ 14 files changed, 254 insertions(+), 55 deletions(-) create mode 100644 client/SDL/man/CMakeLists.txt rename client/{X11/xfreerdp-channels.1.xml => SDL/man/sdl-freerdp-channels.1.xml} (100%) create mode 100644 client/SDL/man/sdl-freerdp-envvar.1.xml create mode 100644 client/SDL/man/sdl-freerdp-examples.1.xml create mode 100644 client/SDL/man/sdl-freerdp.1.xml.in create mode 100644 client/X11/man/CMakeLists.txt create mode 100644 client/X11/man/xfreerdp-channels.1.xml rename client/X11/{ => man}/xfreerdp-envvar.1.xml (100%) rename client/X11/{ => man}/xfreerdp-examples.1.xml (100%) rename client/X11/{ => man}/xfreerdp.1.xml.in (96%) rename client/{X11 => common/man}/generate_argument_docbook.c (98%) diff --git a/client/SDL/CMakeLists.txt b/client/SDL/CMakeLists.txt index 0cf889b22..32d8bfab7 100644 --- a/client/SDL/CMakeLists.txt +++ b/client/SDL/CMakeLists.txt @@ -17,7 +17,7 @@ cmake_minimum_required(VERSION 3.13) -project(sdl-client CXX) +project(sdl-freerdp CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -104,10 +104,8 @@ add_executable(${PROJECT_NAME} ${SRCS} ) -set_target_properties(${PROJECT_NAME} - PROPERTIES - OUTPUT_NAME "sdl-freerdp" - ) target_link_libraries(${PROJECT_NAME} PRIVATE ${LIBS}) set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER "Client/SDL") install(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT client) + +add_subdirectory(man) diff --git a/client/SDL/man/CMakeLists.txt b/client/SDL/man/CMakeLists.txt new file mode 100644 index 000000000..8e89ad70b --- /dev/null +++ b/client/SDL/man/CMakeLists.txt @@ -0,0 +1,6 @@ +set(DEPS + sdl-freerdp-channels.1.xml + sdl-freerdp-examples.1.xml + sdl-freerdp-envvar.1.xml + ) +generate_and_install_freerdp_man_from_xml(sdl-freerdp.1 ${DEPS}) diff --git a/client/X11/xfreerdp-channels.1.xml b/client/SDL/man/sdl-freerdp-channels.1.xml similarity index 100% rename from client/X11/xfreerdp-channels.1.xml rename to client/SDL/man/sdl-freerdp-channels.1.xml diff --git a/client/SDL/man/sdl-freerdp-envvar.1.xml b/client/SDL/man/sdl-freerdp-envvar.1.xml new file mode 100644 index 000000000..ab6c8c558 --- /dev/null +++ b/client/SDL/man/sdl-freerdp-envvar.1.xml @@ -0,0 +1,15 @@ + + Environment variables + + + + wlog environment variable + + sdl-freerdp uses wLog as its log facility, you can refer to the + corresponding man page (wlog(7)) for more informations. Arguments passed + via the /log-level or /log-filters + have precedence over the environment variables. + + + + diff --git a/client/SDL/man/sdl-freerdp-examples.1.xml b/client/SDL/man/sdl-freerdp-examples.1.xml new file mode 100644 index 000000000..7b0f87384 --- /dev/null +++ b/client/SDL/man/sdl-freerdp-examples.1.xml @@ -0,0 +1,95 @@ + + Examples + + + sdl-freerdp connection.rdp /p:Pwd123! /f + + Connect in fullscreen mode using a stored configuration connection.rdp and the password Pwd123! + + + + sdl-freerdp /u:USER /size:50%h /v:rdp.contoso.com + + Connect to host rdp.contoso.com with user USER and a size of 50 percent of the height. If width (w) is set instead of height (h) like /size:50%w. 50 percent of the width is used. + + + + sdl-freerdp /u:CONTOSO\\JohnDoe /p:Pwd123! /v:rdp.contoso.com + + Connect to host rdp.contoso.com with user CONTOSO\\JohnDoe and password Pwd123! + + + + sdl-freerdp /u:JohnDoe /p:Pwd123! /w:1366 /h:768 /v:192.168.1.100:4489 + + Connect to host 192.168.1.100 on port 4489 with user JohnDoe, password Pwd123!. The screen width is set to 1366 and the height to 768 + + + + sdl-freerdp /u:JohnDoe /p:Pwd123! /vmconnect:C824F53E-95D2-46C6-9A18-23A5BB403532 /v:192.168.1.100 + + Establish a connection to host 192.168.1.100 with user JohnDoe, password Pwd123! and connect to Hyper-V console (use port 2179, disable negotiation) with VMID C824F53E-95D2-46C6-9A18-23A5BB403532 + + + + +clipboard + + Activate clipboard redirection + + + + /drive:home,/home/user + + Activate drive redirection of /home/user as home drive + + + + /smartcard:<device> + + Activate smartcard redirection for device device + + + + /printer:<device>,<driver> + + Activate printer redirection for printer device using driver driver + + + + /serial:<device> + + Activate serial port redirection for port device + + + + /parallel:<device> + + Activate parallel port redirection for port device + + + + /sound:sys:alsa + + Activate audio output redirection using device sys:alsa + + + + /microphone:sys:alsa + + Activate audio input redirection using device sys:alsa + + + + /multimedia:sys:alsa + + Activate multimedia redirection using device sys:alsa + + + + /usb:id,dev:054c:0268 + + Activate USB device redirection for the device identified by 054c:0268 + + + + diff --git a/client/SDL/man/sdl-freerdp.1.xml.in b/client/SDL/man/sdl-freerdp.1.xml.in new file mode 100644 index 000000000..fcac5682d --- /dev/null +++ b/client/SDL/man/sdl-freerdp.1.xml.in @@ -0,0 +1,63 @@ + + + + + + ] +> + + + + @MAN_TODAY@ + + The FreeRDP Team + + + + sdl-freerdp + 1 + freerdp + sdl-freerdp + + + sdl-freerdp + FreeRDP X11 client + + + + @MAN_TODAY@ + + + sdl-freerdp [file] [options] [/v:server[:port]] + + + + + @MAN_TODAY@ + + DESCRIPTION + + sdl-freerdp is an X11 Remote Desktop Protocol (RDP) + client which is part of the FreeRDP project. An RDP server is built-in + to many editions of Windows. Alternative servers included xrdp and VRDP (VirtualBox). + + + + &syntax; + + &channels; + + &envvar; + + &examples; + + + LINKS + + http://www.freerdp.com/ + + + diff --git a/client/X11/CMakeLists.txt b/client/X11/CMakeLists.txt index 48ca040e4..8d449dada 100644 --- a/client/X11/CMakeLists.txt +++ b/client/X11/CMakeLists.txt @@ -43,7 +43,6 @@ include(ConfigureRPATH) find_package(X11 REQUIRED) -include(FindDocBookXSL) include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../resources) include_directories(${X11_INCLUDE_DIRS}) include_directories(${OPENSSL_INCLUDE_DIR}) @@ -113,52 +112,7 @@ set(LIBS ${X11_LIBRARIES} ) -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(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) +add_subdirectory(man) find_package(X11 REQUIRED) if(X11_XShm_FOUND) diff --git a/client/X11/man/CMakeLists.txt b/client/X11/man/CMakeLists.txt new file mode 100644 index 000000000..aa8570bd0 --- /dev/null +++ b/client/X11/man/CMakeLists.txt @@ -0,0 +1,6 @@ +set(DEPS + xfreerdp-channels.1.xml + xfreerdp-examples.1.xml + xfreerdp-envvar.1.xml + ) +generate_and_install_freerdp_man_from_xml(xfreerdp.1 ${DEPS}) diff --git a/client/X11/man/xfreerdp-channels.1.xml b/client/X11/man/xfreerdp-channels.1.xml new file mode 100644 index 000000000..e69de29bb diff --git a/client/X11/xfreerdp-envvar.1.xml b/client/X11/man/xfreerdp-envvar.1.xml similarity index 100% rename from client/X11/xfreerdp-envvar.1.xml rename to client/X11/man/xfreerdp-envvar.1.xml diff --git a/client/X11/xfreerdp-examples.1.xml b/client/X11/man/xfreerdp-examples.1.xml similarity index 100% rename from client/X11/xfreerdp-examples.1.xml rename to client/X11/man/xfreerdp-examples.1.xml diff --git a/client/X11/xfreerdp.1.xml.in b/client/X11/man/xfreerdp.1.xml.in similarity index 96% rename from client/X11/xfreerdp.1.xml.in rename to client/X11/man/xfreerdp.1.xml.in index 119f7f344..f775d801f 100644 --- a/client/X11/xfreerdp.1.xml.in +++ b/client/X11/man/xfreerdp.1.xml.in @@ -2,7 +2,7 @@ + diff --git a/client/X11/generate_argument_docbook.c b/client/common/man/generate_argument_docbook.c similarity index 98% rename from client/X11/generate_argument_docbook.c rename to client/common/man/generate_argument_docbook.c index 37fdd40a9..a4909faa0 100644 --- a/client/X11/generate_argument_docbook.c +++ b/client/common/man/generate_argument_docbook.c @@ -3,7 +3,7 @@ #include #include -#include "../common/cmdline.h" +#include "../cmdline.h" #define TAG FREERDP_TAG("generate_argument_docbook") LPSTR tr_esc_str(LPCSTR arg, bool format) @@ -172,7 +172,7 @@ int main(int argc, char* argv[]) { size_t elements = sizeof(global_cmd_args) / sizeof(global_cmd_args[0]); size_t x; - const char* fname = "xfreerdp-argument.1.xml"; + const char* fname = "freerdp-argument.1.xml"; FILE* fp = NULL; /* Open output file for writing, truncate if existing. */ fp = fopen(fname, "w"); diff --git a/cmake/InstallFreeRDPMan.cmake b/cmake/InstallFreeRDPMan.cmake index 9114500b9..b410e6170 100644 --- a/cmake/InstallFreeRDPMan.cmake +++ b/cmake/InstallFreeRDPMan.cmake @@ -1,7 +1,69 @@ 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) + + # 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) + + set(dep_SRC) + set(deb_BIN) + foreach(dep ${dependencies}) + set(cur_SRC ${CMAKE_CURRENT_SOURCE_DIR}/${dep}) + set(cur_BIN ${CMAKE_CURRENT_BINARY_DIR}/${dep}) + list(APPEND dep_SRC ${cur_SRC}) + list(APPEND dep_BIN ${cur_BIN}) + + add_custom_command( + OUTPUT ${cur_BIN} + COMMAND ${CMAKE_COMMAND} -E copy ${cur_SRC} ${cur_BIN} + DEPENDS ${cur_SRC} + VERBATIM + ) + endforeach() + + add_custom_command( + OUTPUT ${manpage} + COMMAND ${CMAKE_C_COMPILER} ${GENERATE_INCLUDES} + ${CMAKE_SOURCE_DIR}/client/common/man/generate_argument_docbook.c + -o ${CMAKE_CURRENT_BINARY_DIR}/generate_argument_docbook + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/generate_argument_docbook + COMMAND ${XSLTPROC_EXECUTABLE} ${DOCBOOKXSL_DIR}/manpages/docbook.xsl ${manpage}.xml + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/${manpage}.xml + ${dep_BIN} + ) + + add_custom_target( + ${manpage}.manpage ALL + DEPENDS + ${manpage} + ) + install_freerdp_man(${CMAKE_CURRENT_BINARY_DIR}/${manpage} 1) + endif() +endfunction()