server/tools/CMakeLists.txt
Rama main · réplica de lectura del repositorio original.
cmake_minimum_required(VERSION 3.20)
project(sunshine_tools)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if(NOT DEFINED CMAKE_CUDA_STANDARD)
set(CMAKE_CUDA_STANDARD 17)
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
endif()
include_directories(
"${CMAKE_SOURCE_DIR}"
)
set(TOOL_SOURCES
"${CMAKE_SOURCE_DIR}/src/logging.cpp"
"${CMAKE_SOURCE_DIR}/src/logging_policy.cpp"
"${CMAKE_SOURCE_DIR}/src/platform/windows/utf_utils.cpp"
)
add_executable(dxgi-info dxgi.cpp ${TOOL_SOURCES})
target_link_libraries(dxgi-info
${Boost_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
dxgi
${PLATFORM_LIBRARIES}
)
target_compile_options(dxgi-info PRIVATE ${SUNSHINE_COMPILE_OPTIONS})
add_executable(audio-info audio.cpp ${TOOL_SOURCES})
target_link_libraries(audio-info
${Boost_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
ksuser
${PLATFORM_LIBRARIES}
)
target_compile_options(audio-info PRIVATE ${SUNSHINE_COMPILE_OPTIONS})
add_executable(sunshinesvc sunshinesvc.cpp)
target_link_libraries(sunshinesvc
${CMAKE_THREAD_LIBS_INIT}
wtsapi32
${PLATFORM_LIBRARIES})
target_compile_options(sunshinesvc PRIVATE ${SUNSHINE_COMPILE_OPTIONS})
add_custom_command(TARGET sunshinesvc POST_BUILD
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/wix_payload/tools"
COMMAND ${CMAKE_COMMAND} -E copy "$<TARGET_FILE:sunshinesvc>" "${CMAKE_BINARY_DIR}/wix_payload/tools/sunshinesvc.exe"
)
# Playnite launcher: per-launch helper that hosts a private IPC server
add_executable(playnite-launcher
playnite_launcher/main.cpp
playnite_launcher/launcher.cpp
playnite_launcher/arguments.cpp
playnite_launcher/cleanup.cpp
playnite_launcher/focus_utils.cpp
playnite_launcher/lossless_scaling.cpp
playnite_launcher/lossless_scaling_policy.cpp
playnite_launcher/playnite_process.cpp)
set_target_properties(playnite-launcher PROPERTIES CXX_STANDARD 23)
set_target_properties(playnite-launcher PROPERTIES WIN32_EXECUTABLE TRUE)
target_include_directories(playnite-launcher PRIVATE ${CMAKE_SOURCE_DIR}/tools/playnite_launcher)
target_sources(playnite-launcher PRIVATE
${CMAKE_SOURCE_DIR}/src/platform/windows/display_diagnostics.cpp
${CMAKE_SOURCE_DIR}/src/logging.cpp
${CMAKE_SOURCE_DIR}/src/logging_policy.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/playnite_ipc.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/playnite_protocol.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/ipc/pipes.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/ipc/misc_utils.cpp)
target_compile_definitions(playnite-launcher PRIVATE SUNSHINE_PLAYNITE_LAUNCHER)
target_link_libraries(playnite-launcher
${Boost_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
# Interface-only: the include dirs for display_device/types.h, which display_diagnostics.h uses.
libdisplaydevice::display_device
nlohmann_json::nlohmann_json
user32
userenv
ole32
oleaut32
Psapi
shell32
shlwapi
wtsapi32
${PLATFORM_LIBRARIES})
target_compile_options(playnite-launcher PRIVATE ${SUNSHINE_COMPILE_OPTIONS})
# Add sunshine_wgc_capture executable
add_executable(sunshine_wgc_capture
sunshine_wgc_capture.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/display_diagnostics.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/ipc/pipes.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/ipc/misc_utils.cpp
${CMAKE_SOURCE_DIR}/src/logging.cpp
${CMAKE_SOURCE_DIR}/src/logging_policy.cpp)
set_target_properties(sunshine_wgc_capture PROPERTIES CXX_STANDARD 23)
# Define helper build flag to conditionally compile logging
target_compile_definitions(sunshine_wgc_capture PRIVATE
SUNSHINE_EXTERNAL_PROCESS=1
)
target_link_libraries(sunshine_wgc_capture
${Boost_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
libdisplaydevice::display_device
nlohmann_json::nlohmann_json
d3d11
dxgi
ole32
user32
gdi32
windowsapp
avrt
shcore
wtsapi32
${PLATFORM_LIBRARIES})
target_compile_options(sunshine_wgc_capture PRIVATE ${SUNSHINE_COMPILE_OPTIONS})
# Display settings helper: detached helper that applies/reverts display settings via IPC.
# One exe hosts both engines (legacy + v2), selected by --engine= or persisted state.
add_executable(sunshine_display_helper
display_settings_helper_main.cpp
display_settings_helper.cpp
display_settings_helper_v2.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/display_helper_v2/diagnostics.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/display_helper_v2/diagnostics_boost.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/display_helper_v2/file_text_storage.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/display_helper_v2/topology_policy.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/display_helper_v2/async_dispatcher.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/display_helper_v2/golden_health.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/display_helper_v2/operations.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/display_helper_v2/snapshot.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/display_helper_v2/snapshot_codec.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/display_helper_v2/snapshot_file_storage.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/display_helper_v2/state_machine.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/display_helper_v2/win_display_settings.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/display_helper_v2/win_event_pump.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/display_helper_v2/win_platform_workarounds.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/display_helper_shell_refresh_policy.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/display_helper_v2/win_scheduled_task_manager.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/display_diagnostics.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/ipc/pipes.cpp
${CMAKE_SOURCE_DIR}/src/platform/windows/ipc/misc_utils.cpp
${CMAKE_SOURCE_DIR}/src/logging.cpp
${CMAKE_SOURCE_DIR}/src/logging_policy.cpp)
set_target_properties(sunshine_display_helper PROPERTIES CXX_STANDARD 23)
target_compile_definitions(sunshine_display_helper PRIVATE SETUP_LIBDISPLAYDEVICE_LOGGING)
target_include_directories(sunshine_display_helper PRIVATE ${CMAKE_SOURCE_DIR}/third-party)
target_link_libraries(sunshine_display_helper
${Boost_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
libdisplaydevice::display_device
nlohmann_json::nlohmann_json
user32
wtsapi32
advapi32
secur32
ole32
taskschd
${PLATFORM_LIBRARIES})
target_compile_options(sunshine_display_helper PRIVATE ${SUNSHINE_COMPILE_OPTIONS})