-
-
Notifications
You must be signed in to change notification settings - Fork 987
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refactor(cmake): split CMakeLists into modules
- Loading branch information
1 parent
a3eec98
commit b26ae87
Showing
27 changed files
with
681 additions
and
557 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
# common compile definitions | ||
# this file will also load platform specific definitions | ||
|
||
list(APPEND SUNSHINE_COMPILE_OPTIONS -Wall -Wno-sign-compare) | ||
# Wall - enable all warnings | ||
# Wno-sign-compare - disable warnings for signed/unsigned comparisons | ||
|
||
if(WIN32) | ||
include(${CMAKE_MODULE_PATH}/compile_definitions/windows.cmake) | ||
elseif(UNIX) | ||
include(${CMAKE_MODULE_PATH}/compile_definitions/unix.cmake) | ||
|
||
if(APPLE) | ||
include(${CMAKE_MODULE_PATH}/compile_definitions/macos.cmake) | ||
else() | ||
include(${CMAKE_MODULE_PATH}/compile_definitions/linux.cmake) | ||
endif() | ||
endif() | ||
|
||
include_directories(SYSTEM third-party/nv-codec-headers/include) | ||
file(GLOB NVENC_SOURCES CONFIGURE_DEPENDS "src/nvenc/*.cpp" "src/nvenc/*.h") | ||
list(APPEND PLATFORM_TARGET_FILES ${NVENC_SOURCES}) | ||
|
||
configure_file(src/version.h.in version.h @ONLY) | ||
include_directories(${CMAKE_CURRENT_BINARY_DIR}) | ||
|
||
set(SUNSHINE_TARGET_FILES | ||
third-party/nanors/rs.c | ||
third-party/nanors/rs.h | ||
third-party/moonlight-common-c/src/Input.h | ||
third-party/moonlight-common-c/src/Rtsp.h | ||
third-party/moonlight-common-c/src/RtspParser.c | ||
third-party/moonlight-common-c/src/Video.h | ||
third-party/tray/tray.h | ||
src/upnp.cpp | ||
src/upnp.h | ||
src/cbs.cpp | ||
src/utility.h | ||
src/uuid.h | ||
src/config.h | ||
src/config.cpp | ||
src/main.cpp | ||
src/main.h | ||
src/crypto.cpp | ||
src/crypto.h | ||
src/nvhttp.cpp | ||
src/nvhttp.h | ||
src/httpcommon.cpp | ||
src/httpcommon.h | ||
src/confighttp.cpp | ||
src/confighttp.h | ||
src/rtsp.cpp | ||
src/rtsp.h | ||
src/stream.cpp | ||
src/stream.h | ||
src/video.cpp | ||
src/video.h | ||
src/video_colorspace.cpp | ||
src/video_colorspace.h | ||
src/input.cpp | ||
src/input.h | ||
src/audio.cpp | ||
src/audio.h | ||
src/platform/common.h | ||
src/process.cpp | ||
src/process.h | ||
src/network.cpp | ||
src/network.h | ||
src/move_by_copy.h | ||
src/system_tray.cpp | ||
src/system_tray.h | ||
src/task_pool.h | ||
src/thread_pool.h | ||
src/thread_safe.h | ||
src/sync.h | ||
src/round_robin.h | ||
src/stat_trackers.h | ||
src/stat_trackers.cpp | ||
${PLATFORM_TARGET_FILES}) | ||
|
||
set_source_files_properties(src/upnp.cpp PROPERTIES COMPILE_FLAGS -Wno-pedantic) | ||
|
||
set_source_files_properties(third-party/nanors/rs.c | ||
PROPERTIES COMPILE_FLAGS "-include deps/obl/autoshim.h -ftree-vectorize") | ||
|
||
list(APPEND SUNSHINE_DEFINITIONS SUNSHINE_TRAY=${SUNSHINE_TRAY}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,207 @@ | ||
# linux specific compile definitions | ||
|
||
add_compile_definitions(SUNSHINE_PLATFORM="linux") | ||
|
||
if(NOT DEFINED SUNSHINE_EXECUTABLE_PATH) | ||
set(SUNSHINE_EXECUTABLE_PATH "sunshine") | ||
endif() | ||
|
||
# cuda | ||
set(CUDA_FOUND OFF) | ||
if(${SUNSHINE_ENABLE_CUDA}) | ||
include(CheckLanguage) | ||
check_language(CUDA) | ||
|
||
if(CMAKE_CUDA_COMPILER) | ||
set(CUDA_FOUND ON) | ||
enable_language(CUDA) | ||
|
||
message(STATUS "CUDA Compiler Version: ${CMAKE_CUDA_COMPILER_VERSION}") | ||
set(CMAKE_CUDA_ARCHITECTURES "") | ||
|
||
# https://tech.amikelive.com/node-930/cuda-compatibility-of-nvidia-display-gpu-drivers/ | ||
if(CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 6.5) | ||
list(APPEND CMAKE_CUDA_ARCHITECTURES 10) | ||
# set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_10,code=sm_10") | ||
elseif(CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 6.5) | ||
list(APPEND CMAKE_CUDA_ARCHITECTURES 50 52) | ||
# set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_50,code=sm_50") | ||
# set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_52,code=sm_52") | ||
endif() | ||
|
||
if(CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 7.0) | ||
list(APPEND CMAKE_CUDA_ARCHITECTURES 11) | ||
# set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_11,code=sm_11") | ||
elseif(CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER 7.6) | ||
list(APPEND CMAKE_CUDA_ARCHITECTURES 60 61 62) | ||
# set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_60,code=sm_60") | ||
# set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_61,code=sm_61") | ||
# set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_62,code=sm_62") | ||
endif() | ||
|
||
if(CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 9.0) | ||
list(APPEND CMAKE_CUDA_ARCHITECTURES 20) | ||
# set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_20,code=sm_20") | ||
elseif(CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 9.0) | ||
list(APPEND CMAKE_CUDA_ARCHITECTURES 70) | ||
# set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_70,code=sm_70") | ||
endif() | ||
|
||
if(CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0) | ||
list(APPEND CMAKE_CUDA_ARCHITECTURES 75) | ||
# set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_75,code=sm_75") | ||
endif() | ||
|
||
if(CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 11.0) | ||
list(APPEND CMAKE_CUDA_ARCHITECTURES 30) | ||
# set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_30,code=sm_30") | ||
elseif(CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 11.0) | ||
list(APPEND CMAKE_CUDA_ARCHITECTURES 80) | ||
# set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_80,code=sm_80") | ||
endif() | ||
|
||
if(CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 11.1) | ||
list(APPEND CMAKE_CUDA_ARCHITECTURES 86) | ||
# set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_86,code=sm_86") | ||
endif() | ||
|
||
if(CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL 11.8) | ||
list(APPEND CMAKE_CUDA_ARCHITECTURES 90) | ||
# set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_90,code=sm_90") | ||
endif() | ||
|
||
if(CMAKE_CUDA_COMPILER_VERSION VERSION_LESS 12.0) | ||
list(APPEND CMAKE_CUDA_ARCHITECTURES 35) | ||
# set(CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -gencode arch=compute_35,code=sm_35") | ||
endif() | ||
|
||
# sort the architectures | ||
list(SORT CMAKE_CUDA_ARCHITECTURES COMPARE NATURAL) | ||
|
||
# message(STATUS "CUDA NVCC Flags: ${CUDA_NVCC_FLAGS}") | ||
message(STATUS "CUDA Architectures: ${CMAKE_CUDA_ARCHITECTURES}") | ||
endif() | ||
endif() | ||
if(CUDA_FOUND) | ||
include_directories(SYSTEM third-party/nvfbc) | ||
list(APPEND PLATFORM_TARGET_FILES | ||
src/platform/linux/cuda.cu | ||
src/platform/linux/cuda.cpp | ||
third-party/nvfbc/NvFBC.h) | ||
|
||
add_compile_definitions(SUNSHINE_BUILD_CUDA) | ||
endif() | ||
|
||
# drm | ||
if(${SUNSHINE_ENABLE_DRM}) | ||
find_package(LIBDRM) | ||
find_package(LIBCAP) | ||
else() | ||
set(LIBDRM_FOUND OFF) | ||
set(LIBCAP_FOUND OFF) | ||
endif() | ||
if(LIBDRM_FOUND AND LIBCAP_FOUND) | ||
add_compile_definitions(SUNSHINE_BUILD_DRM) | ||
include_directories(SYSTEM ${LIBDRM_INCLUDE_DIRS} ${LIBCAP_INCLUDE_DIRS}) | ||
list(APPEND PLATFORM_LIBRARIES ${LIBDRM_LIBRARIES} ${LIBCAP_LIBRARIES}) | ||
list(APPEND PLATFORM_TARGET_FILES src/platform/linux/kmsgrab.cpp) | ||
list(APPEND SUNSHINE_DEFINITIONS EGL_NO_X11=1) | ||
elseif(LIBDRM_FOUND) | ||
message(WARNING "Found libdrm, yet there is no libcap") | ||
elseif(LIBDRM_FOUND) | ||
message(WARNING "Found libcap, yet there is no libdrm") | ||
endif() | ||
|
||
# wayland | ||
if(${SUNSHINE_ENABLE_WAYLAND}) | ||
find_package(Wayland) | ||
else() | ||
set(WAYLAND_FOUND OFF) | ||
endif() | ||
if(WAYLAND_FOUND) | ||
add_compile_definitions(SUNSHINE_BUILD_WAYLAND) | ||
|
||
GEN_WAYLAND(xdg-output-unstable-v1) | ||
GEN_WAYLAND(wlr-export-dmabuf-unstable-v1) | ||
|
||
include_directories( | ||
SYSTEM | ||
${WAYLAND_INCLUDE_DIRS} | ||
${CMAKE_BINARY_DIR}/generated-src | ||
) | ||
|
||
list(APPEND PLATFORM_LIBRARIES ${WAYLAND_LIBRARIES}) | ||
list(APPEND PLATFORM_TARGET_FILES | ||
src/platform/linux/wlgrab.cpp | ||
src/platform/linux/wayland.cpp) | ||
endif() | ||
|
||
# x11 | ||
if(${SUNSHINE_ENABLE_X11}) | ||
find_package(X11) | ||
else() | ||
set(X11_FOUND OFF) | ||
endif() | ||
if(X11_FOUND) | ||
add_compile_definitions(SUNSHINE_BUILD_X11) | ||
include_directories(SYSTEM ${X11_INCLUDE_DIR}) | ||
list(APPEND PLATFORM_LIBRARIES ${X11_LIBRARIES}) | ||
list(APPEND PLATFORM_TARGET_FILES src/platform/linux/x11grab.cpp) | ||
endif() | ||
|
||
if(NOT ${CUDA_FOUND} AND NOT ${WAYLAND_FOUND} AND NOT ${X11_FOUND} AND NOT (${LIBDRM_FOUND} AND ${LIBCAP_FOUND})) | ||
message(FATAL_ERROR "Couldn't find either x11, wayland, cuda or (libdrm and libcap)") | ||
endif() | ||
|
||
# tray icon | ||
if(${SUNSHINE_ENABLE_TRAY}) | ||
pkg_check_modules(APPINDICATOR appindicator3-0.1) | ||
if(NOT APPINDICATOR_FOUND) | ||
message(WARNING "Couldn't find appindicator, disabling tray icon") | ||
set(SUNSHINE_TRAY 0) | ||
else() | ||
include_directories(SYSTEM ${APPINDICATOR_INCLUDE_DIRS}) | ||
link_directories(${APPINDICATOR_LIBRARY_DIRS}) | ||
|
||
list(APPEND PLATFORM_TARGET_FILES third-party/tray/tray_linux.c) | ||
list(APPEND SUNSHINE_EXTERNAL_LIBRARIES ${APPINDICATOR_LIBRARIES}) | ||
endif() | ||
else() | ||
set(SUNSHINE_TRAY 0) | ||
endif() | ||
|
||
list(APPEND PLATFORM_TARGET_FILES | ||
src/platform/linux/publish.cpp | ||
src/platform/linux/vaapi.h | ||
src/platform/linux/vaapi.cpp | ||
src/platform/linux/cuda.h | ||
src/platform/linux/graphics.h | ||
src/platform/linux/graphics.cpp | ||
src/platform/linux/misc.h | ||
src/platform/linux/misc.cpp | ||
src/platform/linux/audio.cpp | ||
src/platform/linux/input.cpp | ||
src/platform/linux/x11grab.h | ||
src/platform/linux/wayland.h | ||
third-party/glad/src/egl.c | ||
third-party/glad/src/gl.c | ||
third-party/glad/include/EGL/eglplatform.h | ||
third-party/glad/include/KHR/khrplatform.h | ||
third-party/glad/include/glad/gl.h | ||
third-party/glad/include/glad/egl.h) | ||
|
||
list(APPEND PLATFORM_LIBRARIES | ||
Boost::dynamic_linking | ||
dl | ||
evdev | ||
numa | ||
pulse | ||
pulse-simple) | ||
|
||
include_directories( | ||
SYSTEM | ||
/usr/include/libevdev-1.0 | ||
third-party/nv-codec-headers/include | ||
third-party/glad/include) | ||
|
||
configure_file(sunshine.service.in sunshine.service @ONLY) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
# macos specific compile definitions | ||
|
||
add_compile_definitions(SUNSHINE_PLATFORM="macos") | ||
|
||
link_directories(/opt/local/lib) | ||
link_directories(/usr/local/lib) | ||
ADD_DEFINITIONS(-DBOOST_LOG_DYN_LINK) | ||
|
||
FIND_LIBRARY(APP_SERVICES_LIBRARY ApplicationServices) | ||
FIND_LIBRARY(AV_FOUNDATION_LIBRARY AVFoundation) | ||
FIND_LIBRARY(COCOA Cocoa REQUIRED) # tray icon | ||
FIND_LIBRARY(CORE_MEDIA_LIBRARY CoreMedia) | ||
FIND_LIBRARY(CORE_VIDEO_LIBRARY CoreVideo) | ||
FIND_LIBRARY(FOUNDATION_LIBRARY Foundation) | ||
FIND_LIBRARY(VIDEO_TOOLBOX_LIBRARY VideoToolbox) | ||
|
||
list(APPEND SUNSHINE_EXTERNAL_LIBRARIES | ||
${APP_SERVICES_LIBRARY} | ||
${AV_FOUNDATION_LIBRARY} | ||
${COCOA} | ||
${CORE_MEDIA_LIBRARY} | ||
${CORE_VIDEO_LIBRARY} | ||
${VIDEO_TOOLBOX_LIBRARY} | ||
${FOUNDATION_LIBRARY}) | ||
|
||
set(PLATFORM_INCLUDE_DIRS | ||
${Boost_INCLUDE_DIR}) | ||
|
||
set(APPLE_PLIST_FILE ${SUNSHINE_SOURCE_ASSETS_DIR}/macos/assets/Info.plist) | ||
|
||
set(PLATFORM_TARGET_FILES | ||
src/platform/macos/av_audio.h | ||
src/platform/macos/av_audio.m | ||
src/platform/macos/av_img_t.h | ||
src/platform/macos/av_video.h | ||
src/platform/macos/av_video.m | ||
src/platform/macos/display.mm | ||
src/platform/macos/input.cpp | ||
src/platform/macos/microphone.mm | ||
src/platform/macos/misc.mm | ||
src/platform/macos/misc.h | ||
src/platform/macos/nv12_zero_device.cpp | ||
src/platform/macos/nv12_zero_device.h | ||
src/platform/macos/publish.cpp | ||
third-party/TPCircularBuffer/TPCircularBuffer.c | ||
third-party/TPCircularBuffer/TPCircularBuffer.h | ||
third-party/tray/tray_darwin.m | ||
${APPLE_PLIST_FILE}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
# unix specific compile definitions | ||
# put anything here that applies to both linux and macos |
Oops, something went wrong.