mirror of
https://github.com/LizardByte/Sunshine.git
synced 2024-11-16 23:10:13 +00:00
0107ca44d7
Some checks failed
CI / GitHub Env Debug (push) Has been cancelled
CI / Setup Release (push) Has been cancelled
CI / Setup Flatpak Matrix (push) Has been cancelled
CI Docker / Check Dockerfiles (push) Has been cancelled
CodeQL / Get language matrix (push) Has been cancelled
Build GH-Pages / update_pages (push) Has been cancelled
CI / Linux Flatpak (push) Has been cancelled
CI / Linux ${{ matrix.type }} (--appimage-build, 22.04, AppImage) (push) Has been cancelled
CI / Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }}) (macos, 13) (push) Has been cancelled
CI / Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }}) (macos, 14) (push) Has been cancelled
CI / Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }}) (ubuntu, latest) (push) Has been cancelled
CI / Homebrew (${{ matrix.os_name }}-${{ matrix.os_version }}${{ matrix.release == true && ' (Release)' || '' }}) (ubuntu, latest, true) (push) Has been cancelled
CI / Macports (macOS-${{ matrix.os_version }}) (13, true) (push) Has been cancelled
CI / Macports (macOS-${{ matrix.os_version }}) (14) (push) Has been cancelled
CI / Windows (push) Has been cancelled
CI Docker / Setup Release (push) Has been cancelled
CI Docker / Docker${{ matrix.tag }} (push) Has been cancelled
CodeQL / Analyze (${{ matrix.name }}) (push) Has been cancelled
123 lines
4.2 KiB
CMake
123 lines
4.2 KiB
CMake
# common target definitions
|
|
# this file will also load platform specific macros
|
|
|
|
add_executable(sunshine ${SUNSHINE_TARGET_FILES})
|
|
foreach(dep ${SUNSHINE_TARGET_DEPENDENCIES})
|
|
add_dependencies(sunshine ${dep}) # compile these before sunshine
|
|
endforeach()
|
|
|
|
# platform specific target definitions
|
|
if(WIN32)
|
|
include(${CMAKE_MODULE_PATH}/targets/windows.cmake)
|
|
elseif(UNIX)
|
|
include(${CMAKE_MODULE_PATH}/targets/unix.cmake)
|
|
|
|
if(APPLE)
|
|
include(${CMAKE_MODULE_PATH}/targets/macos.cmake)
|
|
else()
|
|
include(${CMAKE_MODULE_PATH}/targets/linux.cmake)
|
|
endif()
|
|
endif()
|
|
|
|
# todo - is this necessary? ... for anything except linux?
|
|
if(NOT DEFINED CMAKE_CUDA_STANDARD)
|
|
set(CMAKE_CUDA_STANDARD 17)
|
|
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
|
|
endif()
|
|
|
|
target_link_libraries(sunshine ${SUNSHINE_EXTERNAL_LIBRARIES} ${EXTRA_LIBS})
|
|
target_compile_definitions(sunshine PUBLIC ${SUNSHINE_DEFINITIONS})
|
|
set_target_properties(sunshine PROPERTIES CXX_STANDARD 20
|
|
VERSION ${PROJECT_VERSION}
|
|
SOVERSION ${PROJECT_VERSION_MAJOR})
|
|
|
|
# CLion complains about unknown flags after running cmake, and cannot add symbols to the index for cuda files
|
|
if(CUDA_INHERIT_COMPILE_OPTIONS)
|
|
foreach(flag IN LISTS SUNSHINE_COMPILE_OPTIONS)
|
|
list(APPEND SUNSHINE_COMPILE_OPTIONS_CUDA "$<$<COMPILE_LANGUAGE:CUDA>:--compiler-options=${flag}>")
|
|
endforeach()
|
|
endif()
|
|
|
|
target_compile_options(sunshine PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${SUNSHINE_COMPILE_OPTIONS}>;$<$<COMPILE_LANGUAGE:CUDA>:${SUNSHINE_COMPILE_OPTIONS_CUDA};-std=c++17>) # cmake-lint: disable=C0301
|
|
|
|
# Homebrew build fails the vite build if we set these environment variables
|
|
if(${SUNSHINE_BUILD_HOMEBREW})
|
|
set(NPM_SOURCE_ASSETS_DIR "")
|
|
set(NPM_ASSETS_DIR "")
|
|
set(NPM_BUILD_HOMEBREW "true")
|
|
else()
|
|
set(NPM_SOURCE_ASSETS_DIR ${SUNSHINE_SOURCE_ASSETS_DIR})
|
|
set(NPM_ASSETS_DIR ${CMAKE_BINARY_DIR})
|
|
set(NPM_BUILD_HOMEBREW "")
|
|
endif()
|
|
|
|
#WebUI build
|
|
find_program(NPM npm REQUIRED)
|
|
|
|
if (NPM_OFFLINE)
|
|
set(NPM_INSTALL_FLAGS "--offline")
|
|
else()
|
|
set(NPM_INSTALL_FLAGS "")
|
|
endif()
|
|
|
|
add_custom_target(web-ui ALL
|
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
|
COMMENT "Installing NPM Dependencies and Building the Web UI"
|
|
COMMAND "$<$<BOOL:${WIN32}>:cmd;/C>" "${NPM}" install ${NPM_INSTALL_FLAGS}
|
|
COMMAND "${CMAKE_COMMAND}" -E env "SUNSHINE_BUILD_HOMEBREW=${NPM_BUILD_HOMEBREW}" "SUNSHINE_SOURCE_ASSETS_DIR=${NPM_SOURCE_ASSETS_DIR}" "SUNSHINE_ASSETS_DIR=${NPM_ASSETS_DIR}" "$<$<BOOL:${WIN32}>:cmd;/C>" "${NPM}" run build # cmake-lint: disable=C0301
|
|
COMMAND_EXPAND_LISTS
|
|
VERBATIM)
|
|
|
|
# docs
|
|
if(BUILD_DOCS)
|
|
add_subdirectory(third-party/doxyconfig docs)
|
|
endif()
|
|
|
|
# tests
|
|
if(BUILD_TESTS)
|
|
add_subdirectory(tests)
|
|
endif()
|
|
|
|
# custom compile flags, must be after adding tests
|
|
|
|
if (NOT BUILD_TESTS)
|
|
set(TEST_DIR "")
|
|
else()
|
|
set(TEST_DIR "${CMAKE_SOURCE_DIR}/tests")
|
|
endif()
|
|
|
|
# src/upnp
|
|
set_source_files_properties("${CMAKE_SOURCE_DIR}/src/upnp.cpp"
|
|
DIRECTORY "${CMAKE_SOURCE_DIR}" "${TEST_DIR}"
|
|
PROPERTIES COMPILE_FLAGS -Wno-pedantic)
|
|
|
|
# third-party/nanors
|
|
set_source_files_properties("${CMAKE_SOURCE_DIR}/src/rswrapper.c"
|
|
DIRECTORY "${CMAKE_SOURCE_DIR}" "${TEST_DIR}"
|
|
PROPERTIES COMPILE_FLAGS "-ftree-vectorize -funroll-loops")
|
|
|
|
# third-party/ViGEmClient
|
|
set(VIGEM_COMPILE_FLAGS "")
|
|
string(APPEND VIGEM_COMPILE_FLAGS "-Wno-unknown-pragmas ")
|
|
string(APPEND VIGEM_COMPILE_FLAGS "-Wno-misleading-indentation ")
|
|
string(APPEND VIGEM_COMPILE_FLAGS "-Wno-class-memaccess ")
|
|
string(APPEND VIGEM_COMPILE_FLAGS "-Wno-unused-function ")
|
|
string(APPEND VIGEM_COMPILE_FLAGS "-Wno-unused-variable ")
|
|
set_source_files_properties("${CMAKE_SOURCE_DIR}/third-party/ViGEmClient/src/ViGEmClient.cpp"
|
|
DIRECTORY "${CMAKE_SOURCE_DIR}" "${TEST_DIR}"
|
|
PROPERTIES
|
|
COMPILE_DEFINITIONS "UNICODE=1;ERROR_INVALID_DEVICE_OBJECT_PARAMETER=650"
|
|
COMPILE_FLAGS ${VIGEM_COMPILE_FLAGS})
|
|
|
|
# src/nvhttp
|
|
string(TOUPPER "x${CMAKE_BUILD_TYPE}" BUILD_TYPE)
|
|
if("${BUILD_TYPE}" STREQUAL "XDEBUG")
|
|
if(WIN32)
|
|
set_source_files_properties("${CMAKE_SOURCE_DIR}/src/nvhttp.cpp"
|
|
DIRECTORY "${CMAKE_SOURCE_DIR}" "${CMAKE_SOURCE_DIR}/tests"
|
|
PROPERTIES COMPILE_FLAGS -O2)
|
|
endif()
|
|
else()
|
|
add_definitions(-DNDEBUG)
|
|
endif()
|