cmake_minimum_required(VERSION 3.22) project(rdp_worker LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) find_package(PkgConfig REQUIRED) find_package(Threads REQUIRED) find_package(OpenSSL REQUIRED) find_package(Boost REQUIRED) pkg_check_modules(FREERDP REQUIRED IMPORTED_TARGET freerdp2) pkg_check_modules(FREERDP_CLIENT REQUIRED IMPORTED_TARGET freerdp-client2) pkg_check_modules(WINPR REQUIRED IMPORTED_TARGET winpr2) set(RDP_WORKER_COMMON_SOURCES src/adapter/adapter_event_router.cpp src/adapter/rdp_adapter_runtime.cpp src/adapter/service_adapter_protocol.cpp src/common/json.cpp src/common/logger.cpp src/common/time.cpp src/cursor/cursor_adapter.cpp src/cursor/cursor_update.cpp src/graphics/graphics_adapter.cpp src/graphics/render_update.cpp src/config/config.cpp src/coordination/redis_client.cpp src/coordination/control_plane.cpp src/dataplane/direct_wss_server.cpp src/dataplane/token_validator.cpp src/runtime/direct_bind_policy.cpp src/runtime/session_manager.cpp src/runtime/session_runtime.cpp src/freerdp/rdp_runtime.cpp ) add_executable(rdp-worker src/main.cpp ${RDP_WORKER_COMMON_SOURCES} ) add_executable(rdp-worker-dataplane-token-probe src/tools/data_plane_token_probe.cpp src/common/json.cpp src/dataplane/token_validator.cpp ) add_executable(rdp-worker-dataplane-bind-probe src/tools/data_plane_bind_probe.cpp src/runtime/direct_bind_policy.cpp ) add_executable(rdp-worker-graphics-adapter-probe src/tools/graphics_adapter_probe.cpp src/graphics/graphics_adapter.cpp src/graphics/render_update.cpp ) add_executable(rdp-worker-cursor-adapter-probe src/tools/cursor_adapter_probe.cpp src/common/json.cpp src/cursor/cursor_adapter.cpp src/cursor/cursor_update.cpp ) add_executable(rdp-worker-service-adapter-protocol-probe src/tools/service_adapter_protocol_probe.cpp src/adapter/service_adapter_protocol.cpp ) target_include_directories(rdp-worker PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ) target_include_directories(rdp-worker-dataplane-token-probe PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ) target_include_directories(rdp-worker-dataplane-bind-probe PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ) target_include_directories(rdp-worker-graphics-adapter-probe PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ) target_include_directories(rdp-worker-cursor-adapter-probe PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ) target_include_directories(rdp-worker-service-adapter-protocol-probe PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include ) target_link_libraries(rdp-worker PRIVATE Threads::Threads OpenSSL::SSL OpenSSL::Crypto Boost::headers PkgConfig::FREERDP PkgConfig::FREERDP_CLIENT PkgConfig::WINPR ) target_link_libraries(rdp-worker-dataplane-token-probe PRIVATE OpenSSL::Crypto Boost::headers ) target_link_libraries(rdp-worker-dataplane-bind-probe PRIVATE Boost::headers ) if(WIN32) target_link_libraries(rdp-worker PRIVATE ws2_32) endif() include(GNUInstallDirs) install(TARGETS rdp-worker rdp-worker-dataplane-token-probe rdp-worker-dataplane-bind-probe RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) install(TARGETS rdp-worker-graphics-adapter-probe RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) install(TARGETS rdp-worker-cursor-adapter-probe RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) install(TARGETS rdp-worker-service-adapter-protocol-probe RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} )