diff --git a/channels/CMakeLists.txt b/channels/CMakeLists.txt index 102161138..006322e0c 100644 --- a/channels/CMakeLists.txt +++ b/channels/CMakeLists.txt @@ -18,6 +18,7 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON) include(CMakeParseArguments) +include(CMakeDependentOption) macro(define_channel_options) set(PREFIX "CHANNEL") @@ -38,8 +39,18 @@ macro(define_channel_client_options _channel_client_default) string(TOUPPER "CHANNEL_${CHANNEL_NAME}_CLIENT" CHANNEL_CLIENT_OPTION) set(CHANNEL_CLIENT_OPTION_DOC "Build ${CHANNEL_NAME} ${CHANNEL_TYPE} channel client") option(${CHANNEL_CLIENT_OPTION} "${CHANNEL_CLIENT_OPTION_DOC}" ${_channel_client_default}) + cmake_dependent_option(${CHANNEL_CLIENT_OPTION} "${CHANNEL_CLIENT_OPTION_DOC}" + ${_channel_client_default} "${CHANNEL_OPTION}" OFF) endmacro(define_channel_client_options) +macro(define_channel_server_options _channel_server_default) + string(TOUPPER "CHANNEL_${CHANNEL_NAME}_SERVER" CHANNEL_SERVER_OPTION) + set(CHANNEL_SERVER_OPTION_DOC "Build ${CHANNEL_NAME} ${CHANNEL_TYPE} channel server") + option(${CHANNEL_SERVER_OPTION} "${CHANNEL_SERVER_OPTION_DOC}" ${_channel_server_default}) + cmake_dependent_option(${CHANNEL_SERVER_OPTION} "${CHANNEL_SERVER_OPTION_DOC}" + ${_channel_server_default} "${CHANNEL_OPTION}" OFF) +endmacro(define_channel_server_options) + macro(define_channel _channel_name) set(CHANNEL_NAME ${_channel_name}) set(MODULE_NAME ${CHANNEL_NAME}) @@ -146,7 +157,16 @@ foreach(FILEPATH ${FILEPATHS}) set(CHANNEL_OPTION) include(${FILEPATH}) if(${CHANNEL_OPTION}) - message(STATUS "Adding ${CHANNEL_TYPE} channel \"${CHANNEL_NAME}\": ${CHANNEL_DESCRIPTION}") + set(CHANNEL_MESSAGE "Adding ${CHANNEL_TYPE} channel") + if(${CHANNEL_CLIENT_OPTION}) + set(CHANNEL_MESSAGE "${CHANNEL_MESSAGE} client") + endif() + if(${CHANNEL_SERVER_OPTION}) + set(CHANNEL_MESSAGE "${CHANNEL_MESSAGE} server") + endif() + set(CHANNEL_MESSAGE "${CHANNEL_MESSAGE} \"${CHANNEL_NAME}\"") + set(CHANNEL_MESSAGE "${CHANNEL_MESSAGE}: ${CHANNEL_DESCRIPTION}") + message(STATUS "${CHANNEL_MESSAGE}") add_subdirectory(${DIR}) endif() endif() diff --git a/channels/audin/ChannelOptions.cmake b/channels/audin/ChannelOptions.cmake index 8e0a9fbcb..60d9d55aa 100644 --- a/channels/audin/ChannelOptions.cmake +++ b/channels/audin/ChannelOptions.cmake @@ -1,8 +1,16 @@ -set(OPTION_DEFAULT ON) +set(OPTION_DEFAULT OFF) +set(OPTION_CLIENT_DEFAULT ON) +set(OPTION_SERVER_DEFAULT ON) + +if(${OPTION_CLIENT_DEFAULT} OR ${OPTION_SERVER_DEFAULT}) + set(OPTION_DEFAULT ON) +endif() define_channel_options(NAME "audin" TYPE "dynamic" DESCRIPTION "Audio Input Redirection Virtual Channel Extension" SPECIFICATIONS "[MS-RDPEAI]" DEFAULT ${OPTION_DEFAULT}) +define_channel_client_options(${OPTION_CLIENT_DEFAULT}) +define_channel_server_options(${OPTION_SERVER_DEFAULT}) diff --git a/channels/cliprdr/ChannelOptions.cmake b/channels/cliprdr/ChannelOptions.cmake index f4ad8a0b9..fed6d4da5 100644 --- a/channels/cliprdr/ChannelOptions.cmake +++ b/channels/cliprdr/ChannelOptions.cmake @@ -1,8 +1,17 @@ -set(OPTION_DEFAULT ON) +set(OPTION_DEFAULT OFF) +set(OPTION_CLIENT_DEFAULT ON) +set(OPTION_SERVER_DEFAULT OFF) + +if(${OPTION_CLIENT_DEFAULT} OR ${OPTION_SERVER_DEFAULT}) + set(OPTION_DEFAULT ON) +endif() define_channel_options(NAME "cliprdr" TYPE "static" DESCRIPTION "Clipboard Virtual Channel Extension" SPECIFICATIONS "[MS-RDPECLIP]" DEFAULT ${OPTION_DEFAULT}) +define_channel_client_options(${OPTION_CLIENT_DEFAULT}) +define_channel_server_options(${OPTION_SERVER_DEFAULT}) + diff --git a/channels/disk/ChannelOptions.cmake b/channels/disk/ChannelOptions.cmake index de9fe0062..47df3a81b 100644 --- a/channels/disk/ChannelOptions.cmake +++ b/channels/disk/ChannelOptions.cmake @@ -1,8 +1,15 @@ -set(OPTION_DEFAULT ON) +set(OPTION_DEFAULT OFF) +set(OPTION_CLIENT_DEFAULT ON) +set(OPTION_SERVER_DEFAULT OFF) if(ANDROID) - set(OPTION_DEFAULT OFF) + set(OPTION_CLIENT_DEFAULT OFF) + set(OPTION_SERVER_DEFAULT OFF) +endif() + +if(${OPTION_CLIENT_DEFAULT} OR ${OPTION_SERVER_DEFAULT}) + set(OPTION_DEFAULT ON) endif() define_channel_options(NAME "disk" TYPE "device" @@ -10,3 +17,6 @@ define_channel_options(NAME "disk" TYPE "device" SPECIFICATIONS "[MS-RDPEFS]" DEFAULT ${OPTION_DEFAULT}) +define_channel_client_options(${OPTION_CLIENT_DEFAULT}) +define_channel_server_options(${OPTION_SERVER_DEFAULT}) + diff --git a/channels/drdynvc/ChannelOptions.cmake b/channels/drdynvc/ChannelOptions.cmake index 243b2e15d..5212b1a51 100644 --- a/channels/drdynvc/ChannelOptions.cmake +++ b/channels/drdynvc/ChannelOptions.cmake @@ -1,8 +1,17 @@ -set(OPTION_DEFAULT ON) +set(OPTION_DEFAULT OFF) +set(OPTION_CLIENT_DEFAULT ON) +set(OPTION_SERVER_DEFAULT OFF) + +if(${OPTION_CLIENT_DEFAULT} OR ${OPTION_SERVER_DEFAULT}) + set(OPTION_DEFAULT ON) +endif() define_channel_options(NAME "drdynvc" TYPE "static" DESCRIPTION "Dynamic Virtual Channel Extension" SPECIFICATIONS "[MS-RDPEDYC]" DEFAULT ${OPTION_DEFAULT}) +define_channel_client_options(${OPTION_CLIENT_DEFAULT}) +define_channel_server_options(${OPTION_SERVER_DEFAULT}) + diff --git a/channels/parallel/ChannelOptions.cmake b/channels/parallel/ChannelOptions.cmake index 23d692663..a881164a9 100644 --- a/channels/parallel/ChannelOptions.cmake +++ b/channels/parallel/ChannelOptions.cmake @@ -1,8 +1,15 @@ -set(OPTION_DEFAULT ON) +set(OPTION_DEFAULT OFF) +set(OPTION_CLIENT_DEFAULT ON) +set(OPTION_SERVER_DEFAULT OFF) if(WIN32) - set(OPTION_DEFAULT OFF) + set(OPTION_CLIENT_DEFAULT OFF) + set(OPTION_SERVER_DEFAULT OFF) +endif() + +if(${OPTION_CLIENT_DEFAULT} OR ${OPTION_SERVER_DEFAULT}) + set(OPTION_DEFAULT ON) endif() define_channel_options(NAME "parallel" TYPE "device" @@ -10,3 +17,6 @@ define_channel_options(NAME "parallel" TYPE "device" SPECIFICATIONS "[MS-RDPESP]" DEFAULT ${OPTION_DEFAULT}) +define_channel_client_options(${OPTION_CLIENT_DEFAULT}) +define_channel_server_options(${OPTION_SERVER_DEFAULT}) + diff --git a/channels/printer/ChannelOptions.cmake b/channels/printer/ChannelOptions.cmake index 808322084..13f680892 100644 --- a/channels/printer/ChannelOptions.cmake +++ b/channels/printer/ChannelOptions.cmake @@ -1,12 +1,21 @@ -set(OPTION_DEFAULT ON) +set(OPTION_DEFAULT OFF) +set(OPTION_CLIENT_DEFAULT ON) +set(OPTION_SERVER_DEFAULT OFF) if(WIN32) - set(OPTION_DEFAULT ON) + set(OPTION_CLIENT_DEFAULT ON) + set(OPTION_SERVER_DEFAULT OFF) elseif(WITH_CUPS) - set(OPTION_DEFAULT ON) + set(OPTION_CLIENT_DEFAULT ON) + set(OPTION_SERVER_DEFAULT OFF) else() - set(OPTION_DEFAULT OFF) + set(OPTION_CLIENT_DEFAULT OFF) + set(OPTION_SERVER_DEFAULT OFF) +endif() + +if(${OPTION_CLIENT_DEFAULT} OR ${OPTION_SERVER_DEFAULT}) + set(OPTION_DEFAULT ON) endif() define_channel_options(NAME "printer" TYPE "device" @@ -14,3 +23,6 @@ define_channel_options(NAME "printer" TYPE "device" SPECIFICATIONS "[MS-RDPEPC]" DEFAULT ${OPTION_DEFAULT}) +define_channel_client_options(${OPTION_CLIENT_DEFAULT}) +define_channel_server_options(${OPTION_SERVER_DEFAULT}) + diff --git a/channels/rail/ChannelOptions.cmake b/channels/rail/ChannelOptions.cmake index 5df7a64a8..5332e9990 100644 --- a/channels/rail/ChannelOptions.cmake +++ b/channels/rail/ChannelOptions.cmake @@ -1,8 +1,17 @@ -set(OPTION_DEFAULT ON) +set(OPTION_DEFAULT OFF) +set(OPTION_CLIENT_DEFAULT ON) +set(OPTION_SERVER_DEFAULT OFF) + +if(${OPTION_CLIENT_DEFAULT} OR ${OPTION_SERVER_DEFAULT}) + set(OPTION_DEFAULT ON) +endif() define_channel_options(NAME "rail" TYPE "static" DESCRIPTION "Remote Programs Virtual Channel Extension" SPECIFICATIONS "[MS-RDPERP]" DEFAULT ${OPTION_DEFAULT}) +define_channel_client_options(${OPTION_CLIENT_DEFAULT}) +define_channel_server_options(${OPTION_SERVER_DEFAULT}) + diff --git a/channels/rdpdr/ChannelOptions.cmake b/channels/rdpdr/ChannelOptions.cmake index fb7bc0e3e..85dc252d3 100644 --- a/channels/rdpdr/ChannelOptions.cmake +++ b/channels/rdpdr/ChannelOptions.cmake @@ -1,8 +1,17 @@ -set(OPTION_DEFAULT ON) +set(OPTION_DEFAULT OFF) +set(OPTION_CLIENT_DEFAULT ON) +set(OPTION_SERVER_DEFAULT OFF) + +if(${OPTION_CLIENT_DEFAULT} OR ${OPTION_SERVER_DEFAULT}) + set(OPTION_DEFAULT ON) +endif() define_channel_options(NAME "rdpdr" TYPE "static" DESCRIPTION "Device Redirection Virtual Channel Extension" SPECIFICATIONS "[MS-RDPEFS] [MS-RDPEPC] [MS-RDPESC] [MS-RDPESP]" DEFAULT ${OPTION_DEFAULT}) +define_channel_client_options(${OPTION_CLIENT_DEFAULT}) +define_channel_server_options(${OPTION_SERVER_DEFAULT}) + diff --git a/channels/rdpsnd/ChannelOptions.cmake b/channels/rdpsnd/ChannelOptions.cmake index 0ef94be84..5755b0e5b 100644 --- a/channels/rdpsnd/ChannelOptions.cmake +++ b/channels/rdpsnd/ChannelOptions.cmake @@ -1,8 +1,17 @@ -set(OPTION_DEFAULT ON) +set(OPTION_DEFAULT OFF) +set(OPTION_CLIENT_DEFAULT ON) +set(OPTION_SERVER_DEFAULT ON) + +if(${OPTION_CLIENT_DEFAULT} OR ${OPTION_SERVER_DEFAULT}) + set(OPTION_DEFAULT ON) +endif() define_channel_options(NAME "rdpsnd" TYPE "static" DESCRIPTION "Audio Output Virtual Channel Extension" SPECIFICATIONS "[MS-RDPEA]" DEFAULT ${OPTION_DEFAULT}) +define_channel_client_options(${OPTION_CLIENT_DEFAULT}) +define_channel_server_options(${OPTION_SERVER_DEFAULT}) + diff --git a/channels/sample/ChannelOptions.cmake b/channels/sample/ChannelOptions.cmake index 032423b30..d0f239235 100644 --- a/channels/sample/ChannelOptions.cmake +++ b/channels/sample/ChannelOptions.cmake @@ -1,7 +1,14 @@ set(OPTION_DEFAULT OFF) +set(OPTION_CLIENT_DEFAULT OFF) +set(OPTION_SERVER_DEFAULT OFF) if(WITH_SAMPLE) + set(OPTION_CLIENT_DEFAULT ON) + set(OPTION_SERVER_DEFAULT OFF) +endif() + +if(${OPTION_CLIENT_DEFAULT} OR ${OPTION_SERVER_DEFAULT}) set(OPTION_DEFAULT ON) endif() @@ -10,3 +17,6 @@ define_channel_options(NAME "sample" TYPE "static" SPECIFICATIONS "" DEFAULT ${OPTION_DEFAULT}) +define_channel_client_options(${OPTION_CLIENT_DEFAULT}) +define_channel_server_options(${OPTION_SERVER_DEFAULT}) + diff --git a/channels/serial/ChannelOptions.cmake b/channels/serial/ChannelOptions.cmake index ff72beb44..4657cc622 100644 --- a/channels/serial/ChannelOptions.cmake +++ b/channels/serial/ChannelOptions.cmake @@ -1,8 +1,15 @@ -set(OPTION_DEFAULT ON) +set(OPTION_DEFAULT OFF) +set(OPTION_CLIENT_DEFAULT ON) +set(OPTION_SERVER_DEFAULT OFF) if(WIN32) - set(OPTION_DEFAULT OFF) + set(OPTION_CLIENT_DEFAULT OFF) + set(OPTION_SERVER_DEFAULT OFF) +endif() + +if(${OPTION_CLIENT_DEFAULT} OR ${OPTION_SERVER_DEFAULT}) + set(OPTION_DEFAULT ON) endif() define_channel_options(NAME "serial" TYPE "device" @@ -10,3 +17,6 @@ define_channel_options(NAME "serial" TYPE "device" SPECIFICATIONS "[MS-RDPESP]" DEFAULT ${OPTION_DEFAULT}) +define_channel_client_options(${OPTION_CLIENT_DEFAULT}) +define_channel_server_options(${OPTION_SERVER_DEFAULT}) + diff --git a/channels/server/CMakeLists.txt b/channels/server/CMakeLists.txt index 6e35cf5ac..8f94f0aa7 100644 --- a/channels/server/CMakeLists.txt +++ b/channels/server/CMakeLists.txt @@ -26,7 +26,6 @@ foreach(STATIC_MODULE ${CHANNEL_STATIC_SERVER_MODULES}) set(STATIC_MODULE_NAME ${${STATIC_MODULE}_SERVER_NAME}) set(STATIC_MODULE_CHANNEL ${${STATIC_MODULE}_SERVER_CHANNEL}) set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} ${STATIC_MODULE_NAME}) - message(STATUS "Adding static server channel: ${STATIC_MODULE_CHANNEL}") endforeach() add_library(${MODULE_NAME} STATIC ${${MODULE_PREFIX}_SRCS}) diff --git a/channels/smartcard/ChannelOptions.cmake b/channels/smartcard/ChannelOptions.cmake index 2c05968aa..7ff221a5c 100644 --- a/channels/smartcard/ChannelOptions.cmake +++ b/channels/smartcard/ChannelOptions.cmake @@ -1,7 +1,14 @@ set(OPTION_DEFAULT OFF) +set(OPTION_CLIENT_DEFAULT OFF) +set(OPTION_SERVER_DEFAULT OFF) if(WITH_PCSC) + set(OPTION_CLIENT_DEFAULT ON) + set(OPTION_SERVER_DEFAULT OFF) +endif() + +if(${OPTION_CLIENT_DEFAULT} OR ${OPTION_SERVER_DEFAULT}) set(OPTION_DEFAULT ON) endif() @@ -10,3 +17,6 @@ define_channel_options(NAME "smartcard" TYPE "device" SPECIFICATIONS "[MS-RDPESC]" DEFAULT ${OPTION_DEFAULT}) +define_channel_client_options(${OPTION_CLIENT_DEFAULT}) +define_channel_server_options(${OPTION_SERVER_DEFAULT}) + diff --git a/channels/tsmf/ChannelOptions.cmake b/channels/tsmf/ChannelOptions.cmake index 1ac5e942c..f7dabe8cc 100644 --- a/channels/tsmf/ChannelOptions.cmake +++ b/channels/tsmf/ChannelOptions.cmake @@ -1,8 +1,15 @@ -set(OPTION_DEFAULT ON) +set(OPTION_DEFAULT OFF) +set(OPTION_CLIENT_DEFAULT ON) +set(OPTION_SERVER_DEFAULT OFF) if(WIN32) - set(OPTION_DEFAULT OFF) + set(OPTION_CLIENT_DEFAULT OFF) + set(OPTION_SERVER_DEFAULT OFF) +endif() + +if(${OPTION_CLIENT_DEFAULT} OR ${OPTION_SERVER_DEFAULT}) + set(OPTION_DEFAULT ON) endif() define_channel_options(NAME "tsmf" TYPE "dynamic" @@ -10,3 +17,6 @@ define_channel_options(NAME "tsmf" TYPE "dynamic" SPECIFICATIONS "[MS-RDPEV]" DEFAULT ${OPTION_DEFAULT}) +define_channel_client_options(${OPTION_CLIENT_DEFAULT}) +define_channel_server_options(${OPTION_SERVER_DEFAULT}) + diff --git a/channels/urbdrc/ChannelOptions.cmake b/channels/urbdrc/ChannelOptions.cmake index 9d4dc0729..92424c967 100644 --- a/channels/urbdrc/ChannelOptions.cmake +++ b/channels/urbdrc/ChannelOptions.cmake @@ -1,8 +1,17 @@ set(OPTION_DEFAULT OFF) +set(OPTION_CLIENT_DEFAULT OFF) +set(OPTION_SERVER_DEFAULT OFF) + +if(${OPTION_CLIENT_DEFAULT} OR ${OPTION_SERVER_DEFAULT}) + set(OPTION_DEFAULT ON) +endif() define_channel_options(NAME "urbdrc" TYPE "dynamic" DESCRIPTION "USB Devices Virtual Channel Extension" SPECIFICATIONS "[MS-RDPEUSB]" DEFAULT ${OPTION_DEFAULT}) +define_channel_client_options(${OPTION_CLIENT_DEFAULT}) +#define_channel_server_options(${OPTION_SERVER_DEFAULT}) +