diff --git a/channels/audin/CMakeLists.txt b/channels/audin/CMakeLists.txt index 88256642a..2ac4cf61f 100644 --- a/channels/audin/CMakeLists.txt +++ b/channels/audin/CMakeLists.txt @@ -15,11 +15,18 @@ # See the License for the specific language governing permissions and # limitations under the License. -set(MODULE_NAME "audin") +set(CHANNEL_NAME "audin") +set(MODULE_NAME ${CHANNEL_NAME}) set(MODULE_PREFIX "CHANNEL_AUDIN") 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_CHANNEL ${${MODULE_PREFIX}_CLIENT_CHANNEL} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_ENTRY ${${MODULE_PREFIX}_CLIENT_ENTRY} PARENT_SCOPE) + endif() endif() if(WITH_SERVER_CHANNELS) @@ -31,4 +38,3 @@ if(WITH_SERVER_CHANNELS) set(${MODULE_PREFIX}_SERVER_ENTRY ${${MODULE_PREFIX}_SERVER_ENTRY} PARENT_SCOPE) endif() endif() - diff --git a/channels/audin/client/CMakeLists.txt b/channels/audin/client/CMakeLists.txt index a53cbcbdf..7f8c50453 100644 --- a/channels/audin/client/CMakeLists.txt +++ b/channels/audin/client/CMakeLists.txt @@ -24,7 +24,15 @@ set(${MODULE_PREFIX}_SRCS include_directories(..) -add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) +if(NOT STATIC_CHANNELS) + 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 "DVCPluginEntry" PARENT_SCOPE) + add_library(${MODULE_NAME} STATIC ${${MODULE_PREFIX}_SRCS}) +endif() + set_target_properties(${MODULE_NAME} PROPERTIES PREFIX "") set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS diff --git a/channels/audin/client/audin_main.c b/channels/audin/client/audin_main.c index f4546319d..06890c54e 100644 --- a/channels/audin/client/audin_main.c +++ b/channels/audin/client/audin_main.c @@ -523,6 +523,10 @@ static BOOL audin_process_plugin_data(IWTSPlugin* pPlugin, RDP_PLUGIN_DATA* data return TRUE; } +#ifdef STATIC_CHANNELS +#define DVCPluginEntry audin_DVCPluginEntry +#endif + int DVCPluginEntry(IDRDYNVC_ENTRY_POINTS* pEntryPoints) { int error = 0; diff --git a/channels/cliprdr/CMakeLists.txt b/channels/cliprdr/CMakeLists.txt index f9d3c38e8..97952391d 100644 --- a/channels/cliprdr/CMakeLists.txt +++ b/channels/cliprdr/CMakeLists.txt @@ -15,14 +15,16 @@ # See the License for the specific language governing permissions and # limitations under the License. -set(MODULE_NAME "cliprdr") -set(MODULE_PREFIX "CHANNEL_CLIPRDR") +set(CHANNEL_NAME "cliprdr") +set(MODULE_NAME ${CHANNEL_NAME}) +string(TOUPPER "CHANNEL_${CHANNEL_NAME}" MODULE_PREFIX) 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_NAME ${CHANNEL_NAME} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_CHANNEL ${${MODULE_PREFIX}_CLIENT_CHANNEL} 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 8a617b880..a0e06975a 100644 --- a/channels/cliprdr/client/CMakeLists.txt +++ b/channels/cliprdr/client/CMakeLists.txt @@ -29,17 +29,21 @@ set(${MODULE_PREFIX}_SRCS set(${MODULE_PREFIX}_STATIC ON PARENT_SCOPE) set(${MODULE_PREFIX}_NAME ${MODULE_NAME} PARENT_SCOPE) -set(${MODULE_PREFIX}_ENTRY "VirtualChannelEntry" PARENT_SCOPE) +set(${MODULE_PREFIX}_ENTRY "DVCPluginEntry" PARENT_SCOPE) add_library(${MODULE_NAME} STATIC ${${MODULE_PREFIX}_SRCS}) set_target_properties(${MODULE_NAME} PROPERTIES PREFIX "") -if(MONOLITHIC_BUILD) - target_link_libraries(${MODULE_NAME} freerdp winpr) -else() - target_link_libraries(${MODULE_NAME} freerdp-utils winpr-crt) -endif() +set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS + MONOLITHIC ${MONOLITHIC_BUILD} + MODULE freerdp + MODULES freerdp-utils) + +set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS + MONOLITHIC ${MONOLITHIC_BUILD} + MODULE winpr + MODULES winpr-crt) install(TARGETS ${MODULE_NAME} DESTINATION ${FREERDP_PLUGIN_PATH}) diff --git a/channels/disk/CMakeLists.txt b/channels/disk/CMakeLists.txt index 270a87583..3013bc7d3 100644 --- a/channels/disk/CMakeLists.txt +++ b/channels/disk/CMakeLists.txt @@ -15,14 +15,16 @@ # See the License for the specific language governing permissions and # limitations under the License. -set(MODULE_NAME "disk") -set(MODULE_PREFIX "CHANNEL_RDPDR_DISK") +set(CHANNEL_NAME "disk") +set(MODULE_NAME ${CHANNEL_NAME}) +string(TOUPPER "CHANNEL_${CHANNEL_NAME}" MODULE_PREFIX) 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_NAME ${CHANNEL_NAME} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_CHANNEL ${${MODULE_PREFIX}_CLIENT_CHANNEL} PARENT_SCOPE) set(${MODULE_PREFIX}_CLIENT_ENTRY ${${MODULE_PREFIX}_CLIENT_ENTRY} PARENT_SCOPE) endif() endif() diff --git a/channels/disk/client/CMakeLists.txt b/channels/disk/client/CMakeLists.txt index 003a61ee8..385173d95 100644 --- a/channels/disk/client/CMakeLists.txt +++ b/channels/disk/client/CMakeLists.txt @@ -40,7 +40,6 @@ else() set(${MODULE_PREFIX}_STATIC ON PARENT_SCOPE) set(${MODULE_PREFIX}_NAME ${MODULE_NAME} PARENT_SCOPE) set(${MODULE_PREFIX}_ENTRY "DeviceServiceEntry" PARENT_SCOPE) - add_library(${MODULE_NAME} STATIC ${${MODULE_PREFIX}_SRCS}) endif() diff --git a/channels/drdynvc/CMakeLists.txt b/channels/drdynvc/CMakeLists.txt index 873fd5e11..972735486 100644 --- a/channels/drdynvc/CMakeLists.txt +++ b/channels/drdynvc/CMakeLists.txt @@ -15,14 +15,16 @@ # See the License for the specific language governing permissions and # limitations under the License. -set(MODULE_NAME "drdynvc") -set(MODULE_PREFIX "CHANNEL_DRDYNVC") +set(CHANNEL_NAME "drdynvc") +set(MODULE_NAME ${CHANNEL_NAME}) +string(TOUPPER "CHANNEL_${CHANNEL_NAME}" MODULE_PREFIX) 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_NAME ${CHANNEL_NAME} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_CHANNEL ${${MODULE_PREFIX}_CLIENT_CHANNEL} PARENT_SCOPE) set(${MODULE_PREFIX}_CLIENT_ENTRY ${${MODULE_PREFIX}_CLIENT_ENTRY} PARENT_SCOPE) endif() endif() diff --git a/channels/parallel/CMakeLists.txt b/channels/parallel/CMakeLists.txt index 65f8452a1..cab049c70 100644 --- a/channels/parallel/CMakeLists.txt +++ b/channels/parallel/CMakeLists.txt @@ -15,7 +15,17 @@ # See the License for the specific language governing permissions and # limitations under the License. +set(CHANNEL_NAME "parallel") +set(MODULE_NAME ${CHANNEL_NAME}) +string(TOUPPER "CHANNEL_${CHANNEL_NAME}" MODULE_PREFIX) + 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 ${CHANNEL_NAME} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_CHANNEL ${${MODULE_PREFIX}_CLIENT_CHANNEL} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_ENTRY ${${MODULE_PREFIX}_CLIENT_ENTRY} PARENT_SCOPE) + endif() endif() diff --git a/channels/parallel/client/CMakeLists.txt b/channels/parallel/client/CMakeLists.txt index 87b85f919..34a7540e6 100644 --- a/channels/parallel/client/CMakeLists.txt +++ b/channels/parallel/client/CMakeLists.txt @@ -21,7 +21,14 @@ set(MODULE_PREFIX "CHANNEL_RDPDR_PARALLEL_CLIENT") set(${MODULE_PREFIX}_SRCS parallel_main.c) -add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) +if(NOT STATIC_CHANNELS) + 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 "DVCPluginEntry" PARENT_SCOPE) + add_library(${MODULE_NAME} STATIC ${${MODULE_PREFIX}_SRCS}) +endif() set_target_properties(${MODULE_NAME} PROPERTIES PREFIX "") diff --git a/channels/parallel/client/parallel_main.c b/channels/parallel/client/parallel_main.c index a8ddab6e0..14f70229e 100644 --- a/channels/parallel/client/parallel_main.c +++ b/channels/parallel/client/parallel_main.c @@ -307,6 +307,10 @@ static void parallel_free(DEVICE* device) free(parallel); } +#ifdef STATIC_CHANNELS +#define DeviceServiceEntry parallel_DeviceServiceEntry +#endif + int DeviceServiceEntry(PDEVICE_SERVICE_ENTRY_POINTS pEntryPoints) { char* name; diff --git a/channels/printer/CMakeLists.txt b/channels/printer/CMakeLists.txt index 65f8452a1..96abe7fde 100644 --- a/channels/printer/CMakeLists.txt +++ b/channels/printer/CMakeLists.txt @@ -15,7 +15,17 @@ # See the License for the specific language governing permissions and # limitations under the License. +set(CHANNEL_NAME "printer") +set(MODULE_NAME ${CHANNEL_NAME}) +string(TOUPPER "CHANNEL_${CHANNEL_NAME}" MODULE_PREFIX) + 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 ${CHANNEL_NAME} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_CHANNEL ${${MODULE_PREFIX}_CLIENT_CHANNEL} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_ENTRY ${${MODULE_PREFIX}_CLIENT_ENTRY} PARENT_SCOPE) + endif() endif() diff --git a/channels/printer/client/CMakeLists.txt b/channels/printer/client/CMakeLists.txt index 3e9c0efaa..0e42822e0 100644 --- a/channels/printer/client/CMakeLists.txt +++ b/channels/printer/client/CMakeLists.txt @@ -37,7 +37,14 @@ if(WIN32) printer_win.h) endif() -add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) +if(NOT STATIC_CHANNELS) + 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 "DVCPluginEntry" PARENT_SCOPE) + add_library(${MODULE_NAME} STATIC ${${MODULE_PREFIX}_SRCS}) +endif() set_target_properties(${MODULE_NAME} PROPERTIES PREFIX "") diff --git a/channels/printer/client/printer_main.c b/channels/printer/client/printer_main.c index da235cefd..de37d15bb 100644 --- a/channels/printer/client/printer_main.c +++ b/channels/printer/client/printer_main.c @@ -301,10 +301,10 @@ void printer_register(PDEVICE_SERVICE_ENTRY_POINTS pEntryPoints, rdpPrinter* pri } #ifdef STATIC_CHANNELS -int printer_entry(PDEVICE_SERVICE_ENTRY_POINTS pEntryPoints) -#else -int DeviceServiceEntry(PDEVICE_SERVICE_ENTRY_POINTS pEntryPoints) +#define DeviceServiceEntry printer_DeviceServiceEntry #endif + +int DeviceServiceEntry(PDEVICE_SERVICE_ENTRY_POINTS pEntryPoints) { int i; char* name; diff --git a/channels/rail/CMakeLists.txt b/channels/rail/CMakeLists.txt index f2b1dd1b8..bb090bfcc 100644 --- a/channels/rail/CMakeLists.txt +++ b/channels/rail/CMakeLists.txt @@ -15,11 +15,16 @@ # See the License for the specific language governing permissions and # limitations under the License. +set(CHANNEL_NAME "rail") +set(MODULE_NAME ${CHANNEL_NAME}) +string(TOUPPER "CHANNEL_${CHANNEL_NAME}" MODULE_PREFIX) + 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_NAME ${CHANNEL_NAME} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_CHANNEL ${${MODULE_PREFIX}_CLIENT_CHANNEL} PARENT_SCOPE) set(${MODULE_PREFIX}_CLIENT_ENTRY ${${MODULE_PREFIX}_CLIENT_ENTRY} PARENT_SCOPE) endif() endif() diff --git a/channels/rdpdr/CMakeLists.txt b/channels/rdpdr/CMakeLists.txt index 036e7e48c..c05574754 100644 --- a/channels/rdpdr/CMakeLists.txt +++ b/channels/rdpdr/CMakeLists.txt @@ -15,14 +15,16 @@ # See the License for the specific language governing permissions and # limitations under the License. -set(MODULE_NAME "rdpdr") -set(MODULE_PREFIX "CHANNEL_RDPDR") +set(CHANNEL_NAME "rdpdr") +set(MODULE_NAME ${CHANNEL_NAME}) +string(TOUPPER "CHANNEL_${CHANNEL_NAME}" MODULE_PREFIX) 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_NAME ${CHANNEL_NAME} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_CHANNEL ${${MODULE_PREFIX}_CLIENT_CHANNEL} PARENT_SCOPE) set(${MODULE_PREFIX}_CLIENT_ENTRY ${${MODULE_PREFIX}_CLIENT_ENTRY} PARENT_SCOPE) endif() endif() diff --git a/channels/rdpsnd/CMakeLists.txt b/channels/rdpsnd/CMakeLists.txt index cf0c27b95..314cc7d12 100644 --- a/channels/rdpsnd/CMakeLists.txt +++ b/channels/rdpsnd/CMakeLists.txt @@ -15,14 +15,16 @@ # See the License for the specific language governing permissions and # limitations under the License. -set(MODULE_NAME "rdpsnd") -set(MODULE_PREFIX "CHANNEL_RDPSND") +set(CHANNEL_NAME "rdpsnd") +set(MODULE_NAME ${CHANNEL_NAME}) +string(TOUPPER "CHANNEL_${CHANNEL_NAME}" MODULE_PREFIX) 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_NAME ${CHANNEL_NAME} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_CHANNEL ${${MODULE_PREFIX}_CLIENT_CHANNEL} PARENT_SCOPE) set(${MODULE_PREFIX}_CLIENT_ENTRY ${${MODULE_PREFIX}_CLIENT_ENTRY} PARENT_SCOPE) endif() endif() @@ -36,4 +38,3 @@ if(WITH_SERVER_CHANNELS) set(${MODULE_PREFIX}_SERVER_ENTRY ${${MODULE_PREFIX}_SERVER_ENTRY} PARENT_SCOPE) endif() endif() - diff --git a/channels/sample/CMakeLists.txt b/channels/sample/CMakeLists.txt index 65f8452a1..30daf2000 100644 --- a/channels/sample/CMakeLists.txt +++ b/channels/sample/CMakeLists.txt @@ -15,7 +15,17 @@ # See the License for the specific language governing permissions and # limitations under the License. +set(CHANNEL_NAME "sample") +set(MODULE_NAME ${CHANNEL_NAME}) +string(TOUPPER "CHANNEL_${CHANNEL_NAME}" MODULE_PREFIX) + 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 ${CHANNEL_NAME} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_CHANNEL ${${MODULE_PREFIX}_CLIENT_CHANNEL} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_ENTRY ${${MODULE_PREFIX}_CLIENT_ENTRY} PARENT_SCOPE) + endif() endif() diff --git a/channels/sample/client/CMakeLists.txt b/channels/sample/client/CMakeLists.txt index 8090d1f6b..6b597e4b2 100644 --- a/channels/sample/client/CMakeLists.txt +++ b/channels/sample/client/CMakeLists.txt @@ -22,7 +22,15 @@ set(${MODULE_PREFIX}_SRCS skel_main.c skel_main.h) -add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) +if(NOT STATIC_CHANNELS) + 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 "DVCPluginEntry" PARENT_SCOPE) + add_library(${MODULE_NAME} STATIC ${${MODULE_PREFIX}_SRCS}) +endif() + set_target_properties(${MODULE_NAME} PROPERTIES PREFIX "") set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS diff --git a/channels/sample/client/skel_main.c b/channels/sample/client/skel_main.c index f9841de05..4fb37cffd 100644 --- a/channels/sample/client/skel_main.c +++ b/channels/sample/client/skel_main.c @@ -40,7 +40,7 @@ #include "skel_main.h" -struct skel_plugin +struct sample_plugin { rdpSvcPlugin plugin; @@ -48,12 +48,12 @@ struct skel_plugin }; -static void skel_process_interval(rdpSvcPlugin* plugin) +static void sample_process_interval(rdpSvcPlugin* plugin) { printf("skel_process_interval:\n"); } -static void skel_process_receive(rdpSvcPlugin* plugin, STREAM* data_in) +static void sample_process_receive(rdpSvcPlugin* plugin, STREAM* data_in) { skelPlugin* skel = (skelPlugin*)plugin; STREAM* data_out; @@ -88,27 +88,27 @@ static void skel_process_receive(rdpSvcPlugin* plugin, STREAM* data_in) stream_free(data_in); } -static void skel_process_connect(rdpSvcPlugin* plugin) +static void sample_process_connect(rdpSvcPlugin* plugin) { - skelPlugin* skel = (skelPlugin*)plugin; + samplePlugin* sample = (samplePlugin*) plugin; DEBUG_SVC("connecting"); - printf("skel_process_connect:\n"); + printf("sample_process_connect:\n"); - if (skel == NULL) + if (sample == NULL) { return; } /* if you want a call from channel thread once is a while do this */ plugin->interval_ms = 1000; - plugin->interval_callback = skel_process_interval; + plugin->interval_callback = sample_process_interval; } -static void skel_process_event(rdpSvcPlugin* plugin, RDP_EVENT* event) +static void sample_process_event(rdpSvcPlugin* plugin, RDP_EVENT* event) { - printf("skel_process_event:\n"); + printf("sample_process_event:\n"); /* events comming from main freerdp window to plugin */ /* send them back with svc_plugin_send_event */ @@ -116,11 +116,11 @@ static void skel_process_event(rdpSvcPlugin* plugin, RDP_EVENT* event) freerdp_event_free(event); } -static void skel_process_terminate(rdpSvcPlugin* plugin) +static void sample_process_terminate(rdpSvcPlugin* plugin) { skelPlugin* skel = (skelPlugin*)plugin; - printf("skel_process_terminate:\n"); + printf("sample_process_terminate:\n"); if (skel == NULL) { @@ -132,5 +132,27 @@ static void skel_process_terminate(rdpSvcPlugin* plugin) free(plugin); } -DEFINE_SVC_PLUGIN(skel, "skel", - CHANNEL_OPTION_INITIALIZED | CHANNEL_OPTION_ENCRYPT_RDP) +#define VirtualChannelEntry sample_VirtualChannelEntry + +const int VirtualChannelEntry(PCHANNEL_ENTRY_POINTS pEntryPoints) +{ + samplePlugin* _p; + + _p = (samplePlugin*) malloc(sizeof(samplePlugin)); + ZeroMemory(_p, sizeof(samplePlugin)); + + _p->plugin.channel_def.options = + CHANNEL_OPTION_INITIALIZED | + CHANNEL_OPTION_ENCRYPT_RDP; + + strcpy(_p->plugin.channel_def.name, "sample"); + + _p->plugin.connect_callback = sample_process_connect; + _p->plugin.receive_callback = sample_process_receive; + _p->plugin.event_callback = sample_process_event; + _p->plugin.terminate_callback = sample_process_terminate; + + svc_plugin_init((rdpSvcPlugin*) _p, pEntryPoints); + + return 1; +} diff --git a/channels/sample/client/skel_main.h b/channels/sample/client/skel_main.h index 2402c0acd..0f55dd6ce 100644 --- a/channels/sample/client/skel_main.h +++ b/channels/sample/client/skel_main.h @@ -18,9 +18,9 @@ * limitations under the License. */ -#ifndef __SKEL_MAIN_H -#define __SKEL_MAIN_H +#ifndef __SAMPLE_MAIN_H +#define __SAMPLE_MAIN_H -typedef struct skel_plugin skelPlugin; +typedef struct sample_plugin samplePlugin; -#endif /* __SKEL_MAIN_H */ +#endif /* __SAMPLE_MAIN_H */ diff --git a/channels/serial/CMakeLists.txt b/channels/serial/CMakeLists.txt index 65f8452a1..1a5aace87 100644 --- a/channels/serial/CMakeLists.txt +++ b/channels/serial/CMakeLists.txt @@ -15,7 +15,17 @@ # See the License for the specific language governing permissions and # limitations under the License. +set(CHANNEL_NAME "serial") +set(MODULE_NAME ${CHANNEL_NAME}) +string(TOUPPER "CHANNEL_${CHANNEL_NAME}" MODULE_PREFIX) + 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 ${CHANNEL_NAME} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_CHANNEL ${${MODULE_PREFIX}_CLIENT_CHANNEL} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_ENTRY ${${MODULE_PREFIX}_CLIENT_ENTRY} PARENT_SCOPE) + endif() endif() diff --git a/channels/serial/client/CMakeLists.txt b/channels/serial/client/CMakeLists.txt index f0e659351..082643cf4 100644 --- a/channels/serial/client/CMakeLists.txt +++ b/channels/serial/client/CMakeLists.txt @@ -24,7 +24,15 @@ set(${MODULE_PREFIX}_SRCS serial_constants.h serial_main.c) -add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) +if(NOT STATIC_CHANNELS) + 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 "DeviceServiceEntry" PARENT_SCOPE) + add_library(${MODULE_NAME} STATIC ${${MODULE_PREFIX}_SRCS}) +endif() + set_target_properties(serial PROPERTIES PREFIX "") set_complex_link_libraries(VARIABLE ${MODULE_PREFIX}_LIBS diff --git a/channels/serial/client/serial_main.c b/channels/serial/client/serial_main.c index edd4308a5..cebe1a146 100644 --- a/channels/serial/client/serial_main.c +++ b/channels/serial/client/serial_main.c @@ -397,6 +397,10 @@ static void serial_free(DEVICE* device) free(serial); } +#ifdef STATIC_CHANNELS +#define DeviceServiceEntry serial_DeviceServiceEntry +#endif + int DeviceServiceEntry(PDEVICE_SERVICE_ENTRY_POINTS pEntryPoints) { int i, len; diff --git a/channels/smartcard/CMakeLists.txt b/channels/smartcard/CMakeLists.txt index 65f8452a1..e40bbbdd5 100644 --- a/channels/smartcard/CMakeLists.txt +++ b/channels/smartcard/CMakeLists.txt @@ -15,7 +15,17 @@ # See the License for the specific language governing permissions and # limitations under the License. +set(CHANNEL_NAME "smartcard") +set(MODULE_NAME ${CHANNEL_NAME}) +string(TOUPPER "CHANNEL_${CHANNEL_NAME}" MODULE_PREFIX) + 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 ${CHANNEL_NAME} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_CHANNEL ${${MODULE_PREFIX}_CLIENT_CHANNEL} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_ENTRY ${${MODULE_PREFIX}_CLIENT_ENTRY} PARENT_SCOPE) + endif() endif() diff --git a/channels/smartcard/client/scard_main.c b/channels/smartcard/client/scard_main.c index 38e0b8976..ab66d0c21 100644 --- a/channels/smartcard/client/scard_main.c +++ b/channels/smartcard/client/scard_main.c @@ -282,6 +282,10 @@ static void scard_irp_request(DEVICE* device, IRP* irp) freerdp_thread_signal(scard->thread); } +#ifdef STATIC_CHANNELS +#define DeviceServiceEntry smartcard_DeviceServiceEntry +#endif + int DeviceServiceEntry(PDEVICE_SERVICE_ENTRY_POINTS pEntryPoints) { char* name; diff --git a/channels/tsmf/CMakeLists.txt b/channels/tsmf/CMakeLists.txt index 42d0751fe..4980c752d 100644 --- a/channels/tsmf/CMakeLists.txt +++ b/channels/tsmf/CMakeLists.txt @@ -15,8 +15,18 @@ # See the License for the specific language governing permissions and # limitations under the License. +set(CHANNEL_NAME "tsmf") +set(MODULE_NAME ${CHANNEL_NAME}) +string(TOUPPER "CHANNEL_${CHANNEL_NAME}" MODULE_PREFIX) + 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 ${CHANNEL_NAME} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_CHANNEL ${${MODULE_PREFIX}_CLIENT_CHANNEL} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_ENTRY ${${MODULE_PREFIX}_CLIENT_ENTRY} PARENT_SCOPE) + endif() endif() diff --git a/channels/tsmf/client/tsmf_main.c b/channels/tsmf/client/tsmf_main.c index fd0472cfc..7e892c24a 100644 --- a/channels/tsmf/client/tsmf_main.c +++ b/channels/tsmf/client/tsmf_main.c @@ -425,12 +425,17 @@ static void tsmf_process_plugin_data(IWTSPlugin* pPlugin, RDP_PLUGIN_DATA* data) } } +#ifdef STATIC_CHANNELS +#define DVCPluginEntry tsmf_DVCPluginEntry +#endif + int DVCPluginEntry(IDRDYNVC_ENTRY_POINTS* pEntryPoints) { - TSMF_PLUGIN * tsmf; int error = 0; + TSMF_PLUGIN* tsmf; tsmf = (TSMF_PLUGIN*) pEntryPoints->GetPlugin(pEntryPoints, "tsmf"); + if (tsmf == NULL) { tsmf = xnew(TSMF_PLUGIN); @@ -448,6 +453,7 @@ int DVCPluginEntry(IDRDYNVC_ENTRY_POINTS* pEntryPoints) tsmf_process_plugin_data((IWTSPlugin*) tsmf, pEntryPoints->GetPluginData(pEntryPoints)); } + return error; } diff --git a/channels/urbdrc/CMakeLists.txt b/channels/urbdrc/CMakeLists.txt index 268379c3e..acdb6c347 100644 --- a/channels/urbdrc/CMakeLists.txt +++ b/channels/urbdrc/CMakeLists.txt @@ -15,8 +15,18 @@ # See the License for the specific language governing permissions and # limitations under the License. +set(CHANNEL_NAME "urbdrc") +set(MODULE_NAME ${CHANNEL_NAME}) +string(TOUPPER "CHANNEL_${CHANNEL_NAME}" MODULE_PREFIX) + add_subdirectory(libusb) 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 ${CHANNEL_NAME} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_CHANNEL ${${MODULE_PREFIX}_CLIENT_CHANNEL} PARENT_SCOPE) + set(${MODULE_PREFIX}_CLIENT_ENTRY ${${MODULE_PREFIX}_CLIENT_ENTRY} PARENT_SCOPE) + endif() endif() diff --git a/channels/urbdrc/client/CMakeLists.txt b/channels/urbdrc/client/CMakeLists.txt index 58f433e7c..059f711b6 100644 --- a/channels/urbdrc/client/CMakeLists.txt +++ b/channels/urbdrc/client/CMakeLists.txt @@ -32,7 +32,15 @@ set(${MODULE_PREFIX}_SRCS include_directories(..) -add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) +if(NOT STATIC_CHANNELS) + 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 "DVCPluginEntry" PARENT_SCOPE) + add_library(${MODULE_NAME} STATIC ${${MODULE_PREFIX}_SRCS}) +endif() + set_target_properties(${MODULE_NAME} PROPERTIES PREFIX "") set(${MODULE_PREFIX}_LIBS diff --git a/channels/urbdrc/client/urbdrc_main.c b/channels/urbdrc/client/urbdrc_main.c index 270b7ca1d..6da4710fb 100644 --- a/channels/urbdrc/client/urbdrc_main.c +++ b/channels/urbdrc/client/urbdrc_main.c @@ -1042,6 +1042,10 @@ static int urbdrc_process_plugin_data(IWTSPlugin* pPlugin, RDP_PLUGIN_DATA* data return TRUE; } +#ifdef STATIC_CHANNELS +#define DVCPluginEntry urbdrc_DVCPluginEntry +#endif + int DVCPluginEntry(IDRDYNVC_ENTRY_POINTS* pEntryPoints) { int error = 0;