Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -69,3 +69,6 @@
path = third-party/wlr-protocols
url = https://github.com/LizardByte-infrastructure/wlr-protocols.git
branch = master
[submodule "third-party/WinUHid"]
path = third-party/WinUHid
url = https://github.com/cgutman/WinUHid.git
34 changes: 34 additions & 0 deletions cmake/compile_definitions/windows.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,17 @@ file(GLOB NVPREFS_FILES CONFIGURE_DEPENDS
# vigem
include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/third-party/ViGEmClient/include")

# winuhid - virtual HID gamepad emulation (DualSense, DS4, Xbox One)
option(SUNSHINE_ENABLE_WINUHID "Enable WinUHid virtual gamepad backend for DualSense support" ON)
if(SUNSHINE_ENABLE_WINUHID)
list(APPEND SUNSHINE_DEFINITIONS SUNSHINE_WINUHID WINUHID_STATIC)
# WRL compatibility shim must come before WinUHid includes so MinGW finds our shim
# instead of looking for MSVC's wrl/wrappers/corewrappers.h
include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/third-party/WinUHid-compat")
include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/third-party/WinUHid/WinUHid")
include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/third-party/WinUHid/WinUHidDevs")
endif()

# sunshine icon
if(NOT DEFINED SUNSHINE_ICON_PATH)
set(SUNSHINE_ICON_PATH "${CMAKE_SOURCE_DIR}/sunshine.ico")
Expand Down Expand Up @@ -80,6 +91,29 @@ set(PLATFORM_TARGET_FILES
"${CMAKE_SOURCE_DIR}/third-party/ViGEmClient/include/ViGEm/km/BusShared.h"
${NVPREFS_FILES})

if(SUNSHINE_ENABLE_WINUHID)
list(APPEND PLATFORM_TARGET_FILES
"${CMAKE_SOURCE_DIR}/third-party/WinUHid/WinUHid/WinUHid.cpp"
"${CMAKE_SOURCE_DIR}/third-party/WinUHid/WinUHidDevs/WinUHidDevs.cpp"
"${CMAKE_SOURCE_DIR}/third-party/WinUHid/WinUHidDevs/WinUHidPS5.cpp")

# DllMain is renamed per-file to avoid duplicate symbol errors when linking statically.
set_source_files_properties(
"${CMAKE_SOURCE_DIR}/third-party/WinUHid/WinUHid/WinUHid.cpp"
PROPERTIES COMPILE_DEFINITIONS "DllMain=WinUHid_DllMain_Unused"
COMPILE_OPTIONS "-Wno-missing-field-initializers;-Wno-unused-parameter;-Wno-sign-compare"
)
set_source_files_properties(
"${CMAKE_SOURCE_DIR}/third-party/WinUHid/WinUHidDevs/WinUHidDevs.cpp"
PROPERTIES COMPILE_DEFINITIONS "DllMain=WinUHidDevs_DllMain_Unused"
COMPILE_OPTIONS "-Wno-missing-field-initializers;-Wno-unused-parameter;-Wno-sign-compare"
)
set_source_files_properties(
"${CMAKE_SOURCE_DIR}/third-party/WinUHid/WinUHidDevs/WinUHidPS5.cpp"
PROPERTIES COMPILE_OPTIONS "-Wno-missing-field-initializers;-Wno-unused-parameter;-Wno-sign-compare"
)
endif()

set(OPENSSL_LIBRARIES
libssl.a
libcrypto.a)
Expand Down
Loading