diff --git a/channels/cliprdr/CMakeLists.txt b/channels/cliprdr/CMakeLists.txt index 676de4e85..880d5b4cb 100644 --- a/channels/cliprdr/CMakeLists.txt +++ b/channels/cliprdr/CMakeLists.txt @@ -15,7 +15,15 @@ # See the License for the specific language governing permissions and # limitations under the License. +set(MODULE_NAME "cliprdr") +set(MODULE_PREFIX "CHANNEL_CLIPRDR") + if(WITH_CLIENT_CHANNELS) add_subdirectory(client) + if(${MODULE_PREFIX}_CLIENT_STATIC) + set(CHANNEL_STATIC_CLIENT_MODULES ${CHANNEL_STATIC_CLIENT_MODULES} ${MODULE_PREFIX} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_NAME ${${MODULE_PREFIX}_CLIENT_NAME} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_ENTRY ${${MODULE_PREFIX}_CLIENT_ENTRY} PARENT_SCOPE) + endif() endif() diff --git a/channels/cliprdr/client/CMakeLists.txt b/channels/cliprdr/client/CMakeLists.txt index 9716083cd..f0046a56a 100644 --- a/channels/cliprdr/client/CMakeLists.txt +++ b/channels/cliprdr/client/CMakeLists.txt @@ -29,7 +29,16 @@ if(MSVC AND (NOT WITH_STATIC_PLUGINS)) set(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} module.def) endif() -add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) +if(NOT WITH_STATIC_PLUGINS) + add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) +else() + set(${MODULE_PREFIX}_STATIC ON PARENT_SCOPE) + set(${MODULE_PREFIX}_NAME ${MODULE_NAME} PARENT_SCOPE) + set(${MODULE_PREFIX}_ENTRY "VirtualChannelEntry" PARENT_SCOPE) + + add_library(${MODULE_NAME} STATIC ${${MODULE_PREFIX}_SRCS}) +endif() + set_target_properties(${MODULE_NAME} PROPERTIES PREFIX "") if(WITH_MONOLITHIC_BUILD) diff --git a/channels/cliprdr/client/cliprdr_main.c b/channels/cliprdr/client/cliprdr_main.c index 10eb26c9b..dd1a849e3 100644 --- a/channels/cliprdr/client/cliprdr_main.c +++ b/channels/cliprdr/client/cliprdr_main.c @@ -25,6 +25,9 @@ #include #include #include + +#include + #include #include #include @@ -268,6 +271,33 @@ static void cliprdr_process_terminate(rdpSvcPlugin* plugin) xfree(plugin); } -DEFINE_SVC_PLUGIN(cliprdr, "cliprdr", - CHANNEL_OPTION_INITIALIZED | CHANNEL_OPTION_ENCRYPT_RDP | - CHANNEL_OPTION_COMPRESS_RDP | CHANNEL_OPTION_SHOW_PROTOCOL) +#ifdef WITH_STATIC_PLUGINS +#define VirtualChannelEntry cliprdr_VirtualChannelEntry +#endif + +const int VirtualChannelEntry(PCHANNEL_ENTRY_POINTS pEntryPoints) +{ + cliprdrPlugin* _p; + + _p = (cliprdrPlugin*) malloc(sizeof(cliprdrPlugin)); + ZeroMemory(_p, sizeof(cliprdrPlugin)); + + _p->plugin.channel_def.options = + CHANNEL_OPTION_INITIALIZED | + CHANNEL_OPTION_ENCRYPT_RDP | + CHANNEL_OPTION_COMPRESS_RDP | + CHANNEL_OPTION_SHOW_PROTOCOL; + + strcpy(_p->plugin.channel_def.name, "cliprdr"); + + _p->plugin.connect_callback = cliprdr_process_connect; + _p->plugin.receive_callback = cliprdr_process_receive; + _p->plugin.event_callback = cliprdr_process_event; + _p->plugin.terminate_callback = cliprdr_process_terminate; + + svc_plugin_init((rdpSvcPlugin*) _p, pEntryPoints); + + return 1; +} + + diff --git a/channels/drdynvc/CMakeLists.txt b/channels/drdynvc/CMakeLists.txt index 676de4e85..389117586 100644 --- a/channels/drdynvc/CMakeLists.txt +++ b/channels/drdynvc/CMakeLists.txt @@ -15,7 +15,15 @@ # See the License for the specific language governing permissions and # limitations under the License. +set(MODULE_NAME "drdynvc") +set(MODULE_PREFIX "CHANNEL_DRDYNVC") + if(WITH_CLIENT_CHANNELS) add_subdirectory(client) + if(${MODULE_PREFIX}_CLIENT_STATIC) + set(CHANNEL_STATIC_CLIENT_MODULES ${CHANNEL_STATIC_CLIENT_MODULES} ${MODULE_PREFIX} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_NAME ${${MODULE_PREFIX}_CLIENT_NAME} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_ENTRY ${${MODULE_PREFIX}_CLIENT_ENTRY} PARENT_SCOPE) + endif() endif() diff --git a/channels/drdynvc/client/CMakeLists.txt b/channels/drdynvc/client/CMakeLists.txt index 0da01496e..1dd3714ec 100644 --- a/channels/drdynvc/client/CMakeLists.txt +++ b/channels/drdynvc/client/CMakeLists.txt @@ -25,7 +25,16 @@ set(${MODULE_PREFIX}_SRCS dvcman.c dvcman.h) -add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) +if(NOT WITH_STATIC_PLUGINS) + add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) +else() + set(${MODULE_PREFIX}_STATIC ON PARENT_SCOPE) + set(${MODULE_PREFIX}_NAME ${MODULE_NAME} PARENT_SCOPE) + set(${MODULE_PREFIX}_ENTRY "VirtualChannelEntry" PARENT_SCOPE) + + add_library(${MODULE_NAME} STATIC ${${MODULE_PREFIX}_SRCS}) +endif() + set_target_properties(${MODULE_NAME} PROPERTIES PREFIX "") if(WITH_MONOLITHIC_BUILD) @@ -37,3 +46,4 @@ endif() install(TARGETS ${MODULE_NAME} DESTINATION ${FREERDP_PLUGIN_PATH}) set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Channels/${MODULE_NAME}/Client") + diff --git a/channels/drdynvc/client/drdynvc_main.c b/channels/drdynvc/client/drdynvc_main.c index 801cc9c33..7e1c5ebb2 100644 --- a/channels/drdynvc/client/drdynvc_main.c +++ b/channels/drdynvc/client/drdynvc_main.c @@ -25,6 +25,8 @@ #include #include +#include + #include #include #include @@ -359,9 +361,35 @@ static void drdynvc_process_terminate(rdpSvcPlugin* plugin) if (drdynvc->channel_mgr != NULL) dvcman_free(drdynvc->channel_mgr); + xfree(drdynvc); } -DEFINE_SVC_PLUGIN(drdynvc, "drdynvc", - CHANNEL_OPTION_INITIALIZED | CHANNEL_OPTION_ENCRYPT_RDP | - CHANNEL_OPTION_COMPRESS_RDP) +#ifdef WITH_STATIC_PLUGINS +#define VirtualChannelEntry drdynvc_VirtualChannelEntry +#endif + +const int VirtualChannelEntry(PCHANNEL_ENTRY_POINTS pEntryPoints) +{ + drdynvcPlugin* _p; + + _p = (drdynvcPlugin*) malloc(sizeof(drdynvcPlugin)); + ZeroMemory(_p, sizeof(drdynvcPlugin)); + + _p->plugin.channel_def.options = + CHANNEL_OPTION_INITIALIZED | + CHANNEL_OPTION_ENCRYPT_RDP | + CHANNEL_OPTION_COMPRESS_RDP; + + strcpy(_p->plugin.channel_def.name, "drdynvc"); + + _p->plugin.connect_callback = drdynvc_process_connect; + _p->plugin.receive_callback = drdynvc_process_receive; + _p->plugin.event_callback = drdynvc_process_event; + _p->plugin.terminate_callback = drdynvc_process_terminate; + + svc_plugin_init((rdpSvcPlugin*) _p, pEntryPoints); + + return 1; +} + diff --git a/channels/rail/CMakeLists.txt b/channels/rail/CMakeLists.txt index 676de4e85..097c86d4b 100644 --- a/channels/rail/CMakeLists.txt +++ b/channels/rail/CMakeLists.txt @@ -17,5 +17,10 @@ if(WITH_CLIENT_CHANNELS) add_subdirectory(client) + if(${MODULE_PREFIX}_CLIENT_STATIC) + set(CHANNEL_STATIC_CLIENT_MODULES ${CHANNEL_STATIC_CLIENT_MODULES} ${MODULE_PREFIX} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_NAME ${${MODULE_PREFIX}_CLIENT_NAME} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_ENTRY ${${MODULE_PREFIX}_CLIENT_ENTRY} PARENT_SCOPE) + endif() endif() diff --git a/channels/rail/client/CMakeLists.txt b/channels/rail/client/CMakeLists.txt index e8146d7e0..d14f53d16 100644 --- a/channels/rail/client/CMakeLists.txt +++ b/channels/rail/client/CMakeLists.txt @@ -24,7 +24,16 @@ set(${MODULE_PREFIX}_SRCS rail_orders.c rail_orders.h) -add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) +if(NOT WITH_STATIC_PLUGINS) + add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) +else() + set(${MODULE_PREFIX}_STATIC ON PARENT_SCOPE) + set(${MODULE_PREFIX}_NAME ${MODULE_NAME} PARENT_SCOPE) + set(${MODULE_PREFIX}_ENTRY "VirtualChannelEntry" PARENT_SCOPE) + + add_library(${MODULE_NAME} STATIC ${${MODULE_PREFIX}_SRCS}) +endif() + set_target_properties(${MODULE_NAME} PROPERTIES PREFIX "") if(WITH_MONOLITHIC_BUILD) @@ -36,3 +45,4 @@ endif() install(TARGETS ${MODULE_NAME} DESTINATION ${FREERDP_PLUGIN_PATH}) set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Channels/${MODULE_NAME}/Client") + diff --git a/channels/rail/client/rail_main.c b/channels/rail/client/rail_main.c index 06c3b5bf0..bc1798dd6 100644 --- a/channels/rail/client/rail_main.c +++ b/channels/rail/client/rail_main.c @@ -27,8 +27,10 @@ #include #include -#include +#include + #include +#include #include #include #include @@ -250,7 +252,32 @@ static void rail_process_event(rdpSvcPlugin* plugin, RDP_EVENT* event) freerdp_event_free(event); } -DEFINE_SVC_PLUGIN(rail, "rail", - CHANNEL_OPTION_INITIALIZED | CHANNEL_OPTION_ENCRYPT_RDP | - CHANNEL_OPTION_COMPRESS_RDP | CHANNEL_OPTION_SHOW_PROTOCOL) +#ifdef WITH_STATIC_PLUGINS +#define VirtualChannelEntry rail_VirtualChannelEntry +#endif + +const int VirtualChannelEntry(PCHANNEL_ENTRY_POINTS pEntryPoints) +{ + railPlugin* _p; + + _p = (railPlugin*) malloc(sizeof(railPlugin)); + ZeroMemory(_p, sizeof(railPlugin)); + + _p->plugin.channel_def.options = + CHANNEL_OPTION_INITIALIZED | + CHANNEL_OPTION_ENCRYPT_RDP | + CHANNEL_OPTION_COMPRESS_RDP | + CHANNEL_OPTION_SHOW_PROTOCOL; + + strcpy(_p->plugin.channel_def.name, "rail"); + + _p->plugin.connect_callback = rail_process_connect; + _p->plugin.receive_callback = rail_process_receive; + _p->plugin.event_callback = rail_process_event; + _p->plugin.terminate_callback = rail_process_terminate; + + svc_plugin_init((rdpSvcPlugin*) _p, pEntryPoints); + + return 1; +} diff --git a/channels/rdpdr/client/rdpdr_main.c b/channels/rdpdr/client/rdpdr_main.c index eaf92b526..4794fe5cb 100644 --- a/channels/rdpdr/client/rdpdr_main.c +++ b/channels/rdpdr/client/rdpdr_main.c @@ -44,6 +44,7 @@ #include "rdpdr_capabilities.h" #include "devman.h" #include "irp.h" + #include "rdpdr_main.h" static void rdpdr_process_connect(rdpSvcPlugin* plugin)