Introduces backend API endpoints for ViGEmBus status and installation, updates Windows build scripts to handle ViGEmBus versioning and installer download, and integrates ViGEmBus status and installation controls into the web UI. Removes legacy PowerShell scripts for gamepad driver management and related NSIS installer commands.
105 lines
4 KiB
CMake
105 lines
4 KiB
CMake
# windows specific compile definitions
|
|
|
|
add_compile_definitions(SUNSHINE_PLATFORM="windows")
|
|
|
|
enable_language(RC)
|
|
set(CMAKE_RC_COMPILER windres)
|
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")
|
|
|
|
# gcc complains about misleading indentation in some mingw includes
|
|
list(APPEND SUNSHINE_COMPILE_OPTIONS -Wno-misleading-indentation)
|
|
|
|
# see gcc bug 98723
|
|
add_definitions(-DUSE_BOOST_REGEX)
|
|
|
|
# curl
|
|
add_definitions(-DCURL_STATICLIB)
|
|
include_directories(SYSTEM ${CURL_STATIC_INCLUDE_DIRS})
|
|
link_directories(${CURL_STATIC_LIBRARY_DIRS})
|
|
|
|
# miniupnpc
|
|
add_definitions(-DMINIUPNP_STATICLIB)
|
|
|
|
# extra tools/binaries for audio/display devices
|
|
add_subdirectory(tools) # todo - this is temporary, only tools for Windows are needed, for now
|
|
|
|
# nvidia
|
|
include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/third-party/nvapi-open-source-sdk")
|
|
file(GLOB NVPREFS_FILES CONFIGURE_DEPENDS
|
|
"${CMAKE_SOURCE_DIR}/third-party/nvapi-open-source-sdk/*.h"
|
|
"${CMAKE_SOURCE_DIR}/src/platform/windows/nvprefs/*.cpp"
|
|
"${CMAKE_SOURCE_DIR}/src/platform/windows/nvprefs/*.h")
|
|
|
|
# vigem
|
|
include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/third-party/ViGEmClient/include")
|
|
|
|
# sunshine icon
|
|
if(NOT DEFINED SUNSHINE_ICON_PATH)
|
|
set(SUNSHINE_ICON_PATH "${CMAKE_SOURCE_DIR}/sunshine.ico")
|
|
endif()
|
|
|
|
# Create a separate object library for the RC file with minimal includes
|
|
add_library(sunshine_rc_object OBJECT "${CMAKE_SOURCE_DIR}/src/platform/windows/windows.rc")
|
|
|
|
# Set minimal properties for RC compilation - only what's needed for the resource file
|
|
# Otherwise compilation can fail due to "line too long" errors
|
|
set_target_properties(sunshine_rc_object PROPERTIES
|
|
COMPILE_DEFINITIONS "PROJECT_ICON_PATH=${SUNSHINE_ICON_PATH};PROJECT_NAME=${PROJECT_NAME};PROJECT_VENDOR=${SUNSHINE_PUBLISHER_NAME};PROJECT_VERSION=${PROJECT_VERSION};PROJECT_VERSION_MAJOR=${PROJECT_VERSION_MAJOR};PROJECT_VERSION_MINOR=${PROJECT_VERSION_MINOR};PROJECT_VERSION_PATCH=${PROJECT_VERSION_PATCH};RC_VERSION_BUILD=${RC_VERSION_BUILD};RC_VERSION_REVISION=${RC_VERSION_REVISION}" # cmake-lint: disable=C0301
|
|
INCLUDE_DIRECTORIES ""
|
|
)
|
|
|
|
# ViGEmBus version
|
|
set(VIGEMBUS_PACKAGED_V "1.21.442")
|
|
set(VIGEMBUS_PACKAGED_V_2 "${VIGEMBUS_PACKAGED_V}.0")
|
|
list(APPEND SUNSHINE_DEFINITIONS VIGEMBUS_PACKAGED_VERSION="${VIGEMBUS_PACKAGED_V_2}")
|
|
|
|
set(PLATFORM_TARGET_FILES
|
|
"${CMAKE_SOURCE_DIR}/src/platform/windows/publish.cpp"
|
|
"${CMAKE_SOURCE_DIR}/src/platform/windows/misc.h"
|
|
"${CMAKE_SOURCE_DIR}/src/platform/windows/misc.cpp"
|
|
"${CMAKE_SOURCE_DIR}/src/platform/windows/input.cpp"
|
|
"${CMAKE_SOURCE_DIR}/src/platform/windows/display.h"
|
|
"${CMAKE_SOURCE_DIR}/src/platform/windows/display_base.cpp"
|
|
"${CMAKE_SOURCE_DIR}/src/platform/windows/display_vram.cpp"
|
|
"${CMAKE_SOURCE_DIR}/src/platform/windows/display_ram.cpp"
|
|
"${CMAKE_SOURCE_DIR}/src/platform/windows/display_wgc.cpp"
|
|
"${CMAKE_SOURCE_DIR}/src/platform/windows/audio.cpp"
|
|
"${CMAKE_SOURCE_DIR}/src/platform/windows/utf_utils.cpp"
|
|
"${CMAKE_SOURCE_DIR}/src/platform/windows/utf_utils.h"
|
|
"${CMAKE_SOURCE_DIR}/third-party/ViGEmClient/src/ViGEmClient.cpp"
|
|
"${CMAKE_SOURCE_DIR}/third-party/ViGEmClient/include/ViGEm/Client.h"
|
|
"${CMAKE_SOURCE_DIR}/third-party/ViGEmClient/include/ViGEm/Common.h"
|
|
"${CMAKE_SOURCE_DIR}/third-party/ViGEmClient/include/ViGEm/Util.h"
|
|
"${CMAKE_SOURCE_DIR}/third-party/ViGEmClient/include/ViGEm/km/BusShared.h"
|
|
${NVPREFS_FILES})
|
|
|
|
set(OPENSSL_LIBRARIES
|
|
libssl.a
|
|
libcrypto.a)
|
|
|
|
list(PREPEND PLATFORM_LIBRARIES
|
|
${CURL_STATIC_LIBRARIES}
|
|
avrt
|
|
d3d11
|
|
D3DCompiler
|
|
dwmapi
|
|
dxgi
|
|
iphlpapi
|
|
ksuser
|
|
libssp.a
|
|
libstdc++.a
|
|
libwinpthread.a
|
|
minhook::minhook
|
|
ntdll
|
|
setupapi
|
|
shlwapi
|
|
synchronization.lib
|
|
userenv
|
|
ws2_32
|
|
wsock32
|
|
)
|
|
|
|
if(SUNSHINE_ENABLE_TRAY)
|
|
list(APPEND PLATFORM_TARGET_FILES
|
|
"${CMAKE_SOURCE_DIR}/third-party/tray/src/tray_windows.c")
|
|
endif()
|