mirror of
https://github.com/LizardByte/Sunshine.git
synced 2025-08-10 00:52:16 +00:00
Some checks failed
CodeQL / CodeQL (push) Has been cancelled
CI / GitHub Env Debug (push) Has been cancelled
CI / Release Setup (push) Has been cancelled
localize / Update Localization (push) Has been cancelled
Build GH-Pages / prep (push) Has been cancelled
CI / Docker (push) Has been cancelled
CI / Homebrew (push) Has been cancelled
CI / Linux (push) Has been cancelled
CI / Linux Copr (push) Has been cancelled
CI / Linux Flatpak (push) Has been cancelled
CI / Windows (push) Has been cancelled
CI / Coverage-Homebrew-macos-13 (push) Has been cancelled
CI / Coverage-Homebrew-macos-14 (push) Has been cancelled
CI / Coverage-Homebrew-macos-15 (push) Has been cancelled
CI / Coverage-Homebrew-ubuntu-latest (push) Has been cancelled
CI / Coverage-Linux-AppImage (push) Has been cancelled
CI / Coverage-Windows-AMD64 (push) Has been cancelled
CI / Release (push) Has been cancelled
Build GH-Pages / call-jekyll-build (push) Has been cancelled
99 lines
3.6 KiB
CMake
99 lines
3.6 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}" # cmake-lint: disable=C0301
|
|
INCLUDE_DIRECTORIES ""
|
|
)
|
|
|
|
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}/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()
|