diff --git a/CMakeLists.txt b/CMakeLists.txt index 51a104f48..1f1847316 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -710,15 +710,15 @@ set(ALSA_FEATURE_TYPE "RECOMMENDED") set(ALSA_FEATURE_PURPOSE "sound") set(ALSA_FEATURE_DESCRIPTION "audio input, audio output and multimedia redirection") -set(PULSE_FEATURE_TYPE "OPTIONAL") +set(PULSE_FEATURE_TYPE "RECOMMENDED") set(PULSE_FEATURE_PURPOSE "sound") set(PULSE_FEATURE_DESCRIPTION "audio input, audio output and multimedia redirection") -set(CUPS_FEATURE_TYPE "OPTIONAL") +set(CUPS_FEATURE_TYPE "RECOMMENDED") set(CUPS_FEATURE_PURPOSE "printing") set(CUPS_FEATURE_DESCRIPTION "printer device redirection") -set(PCSC_FEATURE_TYPE "OPTIONAL") +set(PCSC_FEATURE_TYPE "RECOMMENDED") set(PCSC_FEATURE_PURPOSE "smart card") set(PCSC_FEATURE_DESCRIPTION "smart card device redirection") diff --git a/channels/CMakeLists.txt b/channels/CMakeLists.txt index b006448c7..92b0c559c 100644 --- a/channels/CMakeLists.txt +++ b/channels/CMakeLists.txt @@ -32,7 +32,8 @@ macro(define_channel_options) string(TOUPPER "CHANNEL_${CHANNEL_NAME}" CHANNEL_OPTION) string(TOUPPER "CHANNEL_${CHANNEL_NAME}_CLIENT" CHANNEL_CLIENT_OPTION) string(TOUPPER "CHANNEL_${CHANNEL_NAME}_SERVER" CHANNEL_SERVER_OPTION) - + string(TOUPPER "${CHANNEL_TYPE}" CHANNEL_TYPE) + if(${${CHANNEL_CLIENT_OPTION}}) set(OPTION_CLIENT_DEFAULT ${${CHANNEL_CLIENT_OPTION}}) endif() @@ -52,23 +53,30 @@ macro(define_channel_options) set(CHANNEL_DEFAULT ${OPTION_DEFAULT}) set(CHANNEL_OPTION_DOC "Build ${CHANNEL_NAME} ${CHANNEL_TYPE} channel") - option(${CHANNEL_OPTION} "${CHANNEL_OPTION_DOC}" ${CHANNEL_DEFAULT}) + + if ("${CHANNEL_TYPE}" STREQUAL "DYNAMIC") + CMAKE_DEPENDENT_OPTION(${CHANNEL_OPTION} "${CHANNEL_OPTION_DOC}" ${CHANNEL_DEFAULT} "CHANNEL_DRDYNVC" OFF) + else() + option(${CHANNEL_OPTION} "${CHANNEL_OPTION_DOC}" ${CHANNEL_DEFAULT}) + endif() endmacro(define_channel_options) macro(define_channel_client_options _channel_client_default) string(TOUPPER "CHANNEL_${CHANNEL_NAME}_CLIENT" CHANNEL_CLIENT_OPTION) + string(TOUPPER "CHANNEL_${CHANNEL_NAME}" CHANNEL_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}" + + 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) + string(TOUPPER "CHANNEL_${CHANNEL_NAME}" CHANNEL_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}" + + CMAKE_DEPENDENT_OPTION(${CHANNEL_SERVER_OPTION} "${CHANNEL_SERVER_OPTION_DOC}" ${_channel_server_default} "${CHANNEL_OPTION}" OFF) endmacro(define_channel_server_options) @@ -287,6 +295,17 @@ endmacro(add_channel_server_library) set(FILENAME "ChannelOptions.cmake") file(GLOB FILEPATHS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*/${FILENAME}") +# We need special treatement for drdynvc: +# It needs to be the first entry so that every +# dynamic channel has the dependent options available. +list(FIND FILEPATHS "drdynvc/${FILENAME}" DRDYNVC_LIST_INDEX) +if ("${DRDYNVC_LIST_INDEX}" GREATER "-1") + list(GET FILEPATHS ${DRDYNVC_LIST_INDEX} DRDYNVC_LIST_VALUE) + list(REMOVE_AT FILEPATHS ${DRDYNVC_LIST_INDEX}) + list(APPEND FILEPATHS ${DRDYNVC_LIST_VALUE}) + list(REVERSE FILEPATHS) # list PREPEND is not available on old CMake3 +endif() + foreach(FILEPATH ${FILEPATHS}) if(${FILEPATH} MATCHES "^([^/]*)/+${FILENAME}") string(REGEX REPLACE "^([^/]*)/+${FILENAME}" "\\1" DIR ${FILEPATH}) diff --git a/channels/urbdrc/ChannelOptions.cmake b/channels/urbdrc/ChannelOptions.cmake index ff00af99d..770ba5e7b 100644 --- a/channels/urbdrc/ChannelOptions.cmake +++ b/channels/urbdrc/ChannelOptions.cmake @@ -1,7 +1,13 @@ -set(OPTION_DEFAULT OFF) -set(OPTION_CLIENT_DEFAULT OFF) -set(OPTION_SERVER_DEFAULT OFF) +if (IOS OR ANDROID) + set(OPTION_DEFAULT OFF) + set(OPTION_CLIENT_DEFAULT OFF) + set(OPTION_SERVER_DEFAULT OFF) +else() + set(OPTION_DEFAULT ON) + set(OPTION_CLIENT_DEFAULT ON) + set(OPTION_SERVER_DEFAULT OFF) +endif() define_channel_options(NAME "urbdrc" TYPE "dynamic" DESCRIPTION "USB Devices Virtual Channel Extension" diff --git a/ci/cmake-preloads/config-macosx.txt b/ci/cmake-preloads/config-macosx.txt index 8c68aed82..a004dd9a0 100644 --- a/ci/cmake-preloads/config-macosx.txt +++ b/ci/cmake-preloads/config-macosx.txt @@ -2,6 +2,7 @@ message("PRELOADING mac cache") set (WITH_MANPAGES OFF CACHE BOOL "man pages") set (CMAKE_BUILD_TYPE "Debug" CACHE STRING "build type") set (WITH_CUPS ON CACHE BOOL "CUPS printing") +set (CHANNEL_URBDRC OFF CACHE BOOL "USB redirection") set (WITH_X11 ON CACHE BOOL "Enable X11") set (BUILD_TESTING ON CACHE BOOL "build testing") set (WITH_SANITIZE_ADDRESS ON) diff --git a/ci/cmake-preloads/config-windows.txt b/ci/cmake-preloads/config-windows.txt index 33dc8b4fb..fcc78aeec 100644 --- a/ci/cmake-preloads/config-windows.txt +++ b/ci/cmake-preloads/config-windows.txt @@ -1,5 +1,6 @@ message("PRELOADING windows cache") set (CMAKE_BUILD_TYPE "Debug" CACHE STRING "build type") set (WITH_SERVER "ON" CACHE BOOL "Build server binaries") +set (CHANNEL_URBDRC OFF CACHE BOOL "USB redirection") set (BUILD_TESTING ON CACHE BOOL "build testing") set (WITH_SANITIZE_ADDRESS ON) diff --git a/cmake/ConfigOptions.cmake b/cmake/ConfigOptions.cmake index 21db9caf0..72e508e6f 100644 --- a/cmake/ConfigOptions.cmake +++ b/cmake/ConfigOptions.cmake @@ -71,7 +71,7 @@ CMAKE_DEPENDENT_OPTION(BUILD_COMM_TESTS "Build comm related tests (require comm option(WITH_SAMPLE "Build sample code" OFF) option(WITH_CLIENT_COMMON "Build client common library" ON) -cmake_dependent_option(WITH_CLIENT "Build client binaries" ON "WITH_CLIENT_COMMON" OFF) +CMAKE_DEPENDENT_OPTION(WITH_CLIENT "Build client binaries" ON "WITH_CLIENT_COMMON" OFF) option(WITH_SERVER "Build server binaries" OFF) @@ -81,10 +81,10 @@ option(WITH_CHANNELS "Build virtual channel plugins" ON) option(WITH_WINPR_TOOLS "Build WinPR helper binaries" ON) -cmake_dependent_option(WITH_CLIENT_CHANNELS "Build virtual channel plugins" ON +CMAKE_DEPENDENT_OPTION(WITH_CLIENT_CHANNELS "Build virtual channel plugins" ON "WITH_CLIENT_COMMON;WITH_CHANNELS" OFF) -cmake_dependent_option(WITH_MACAUDIO "Enable OSX sound backend" ON "APPLE;NOT IOS" OFF) +CMAKE_DEPENDENT_OPTION(WITH_MACAUDIO "Enable OSX sound backend" ON "APPLE;NOT IOS" OFF) if(WITH_SERVER AND WITH_CHANNELS) option(WITH_SERVER_CHANNELS "Build virtual channel plugins" ON)