From 1d20e3c102b220f2465b0eb8b1afded8c6866a25 Mon Sep 17 00:00:00 2001 From: martona Date: Tue, 12 May 2026 02:43:08 -0400 Subject: [PATCH 1/5] Fix macOS build dependency configuration Pass the project C++ standard explicitly so fetched dependencies build against modern Homebrew headers. Point CMake at Homebrew's icu4c@78 prefix to match the dependency installed by the macOS build path. Mirror the manual macOS build script in CI so the two paths stay aligned. --- .github/workflows/ci-macos.yml | 2 ++ scripts/macos_build.sh | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.github/workflows/ci-macos.yml b/.github/workflows/ci-macos.yml index 587aea2e443..df49ff43ff7 100644 --- a/.github/workflows/ci-macos.yml +++ b/.github/workflows/ci-macos.yml @@ -97,6 +97,8 @@ jobs: -S . \ -DBUILD_WERROR=ON \ -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_CXX_STANDARD=23 \ + -DICU_ROOT="$(brew --prefix icu4c@78 2>/dev/null)" \ -DOPENSSL_ROOT_DIR="$(brew --prefix openssl@3 2>/dev/null)" \ -DOpus_ROOT_DIR="$(brew --prefix opus 2>/dev/null)" \ -DSUNSHINE_PUBLISHER_NAME="${GITHUB_REPOSITORY_OWNER}" \ diff --git a/scripts/macos_build.sh b/scripts/macos_build.sh index c7c83da7867..d3bd006bd4d 100755 --- a/scripts/macos_build.sh +++ b/scripts/macos_build.sh @@ -98,6 +98,8 @@ function run_step_cmake() { "-DBUILD_TESTS=${build_tests}" "-DBUILD_WERROR=ON" "-DCMAKE_BUILD_TYPE=${build_type}" + "-DCMAKE_CXX_STANDARD=23" + "-DICU_ROOT=$(brew --prefix icu4c@78 2>/dev/null)" "-DOPENSSL_ROOT_DIR=$(brew --prefix openssl@3 2>/dev/null)" "-DOpus_ROOT_DIR=$(brew --prefix opus 2>/dev/null)" "-DSUNSHINE_ENABLE_TRAY=ON" From 07a2e4a5e23b27b1bb3dbe430836ba7f18eddd73 Mon Sep 17 00:00:00 2001 From: marton Date: Tue, 12 May 2026 21:17:45 -0400 Subject: [PATCH 2/5] fix(build): configure C++ standard as 23 globally in CMakeLists.txt --- .github/workflows/ci-macos.yml | 1 - CMakeLists.txt | 3 +++ cmake/targets/common.cmake | 1 - packaging/sunshine.rb | 1 - scripts/macos_build.sh | 1 - 5 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci-macos.yml b/.github/workflows/ci-macos.yml index df49ff43ff7..b0b03df9583 100644 --- a/.github/workflows/ci-macos.yml +++ b/.github/workflows/ci-macos.yml @@ -97,7 +97,6 @@ jobs: -S . \ -DBUILD_WERROR=ON \ -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_STANDARD=23 \ -DICU_ROOT="$(brew --prefix icu4c@78 2>/dev/null)" \ -DOPENSSL_ROOT_DIR="$(brew --prefix openssl@3 2>/dev/null)" \ -DOpus_ROOT_DIR="$(brew --prefix opus 2>/dev/null)" \ diff --git a/CMakeLists.txt b/CMakeLists.txt index 08c0b1ba39e..640ca9425f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,9 @@ project(Sunshine VERSION 0.0.0 DESCRIPTION "Self-hosted game stream host for Moonlight" HOMEPAGE_URL "https://app.lizardbyte.dev/Sunshine") +set(CMAKE_CXX_STANDARD 23) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + set(PROJECT_LICENSE "GPL-3.0-only") set(PROJECT_FQDN "dev.lizardbyte.app.Sunshine") diff --git a/cmake/targets/common.cmake b/cmake/targets/common.cmake index 3d68474399b..3468e598eeb 100644 --- a/cmake/targets/common.cmake +++ b/cmake/targets/common.cmake @@ -31,7 +31,6 @@ endif() target_link_libraries(sunshine ${SUNSHINE_EXTERNAL_LIBRARIES} ${EXTRA_LIBS}) target_compile_definitions(sunshine PUBLIC ${SUNSHINE_DEFINITIONS}) -set_target_properties(sunshine PROPERTIES CXX_STANDARD 23) # CLion complains about unknown flags after running cmake, and cannot add symbols to the index for cuda files if(CUDA_INHERIT_COMPILE_OPTIONS) diff --git a/packaging/sunshine.rb b/packaging/sunshine.rb index fdde9350d1b..9562c7b74ea 100644 --- a/packaging/sunshine.rb +++ b/packaging/sunshine.rb @@ -167,7 +167,6 @@ def setup_linux_gcc_environment def base_cmake_args args = %W[ -DBUILD_WERROR=ON - -DCMAKE_CXX_STANDARD=23 -DCMAKE_INSTALL_PREFIX=#{prefix} -DGLAD_SKIP_PIP_INSTALL=ON -DHOMEBREW_ALLOW_FETCHCONTENT=ON diff --git a/scripts/macos_build.sh b/scripts/macos_build.sh index d3bd006bd4d..7c24209836d 100755 --- a/scripts/macos_build.sh +++ b/scripts/macos_build.sh @@ -98,7 +98,6 @@ function run_step_cmake() { "-DBUILD_TESTS=${build_tests}" "-DBUILD_WERROR=ON" "-DCMAKE_BUILD_TYPE=${build_type}" - "-DCMAKE_CXX_STANDARD=23" "-DICU_ROOT=$(brew --prefix icu4c@78 2>/dev/null)" "-DOPENSSL_ROOT_DIR=$(brew --prefix openssl@3 2>/dev/null)" "-DOpus_ROOT_DIR=$(brew --prefix opus 2>/dev/null)" From dce4987862d78ab3456a13d0fed6cc4e4b548481 Mon Sep 17 00:00:00 2001 From: marton Date: Tue, 12 May 2026 21:34:37 -0400 Subject: [PATCH 3/5] fix(build): remove CXX_STANDARD references from /tests and /tools as well. --- tests/CMakeLists.txt | 2 -- tools/CMakeLists.txt | 3 --- 2 files changed, 5 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 1d2ffad13d4..d6eabfaa093 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -151,8 +151,6 @@ endforeach() # Ensure locale files are synchronized before building the test executable add_dependencies(${PROJECT_NAME} sync_locale_files) -set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 23) - # Build the list of libraries to link set(TEST_LINK_LIBRARIES ${SUNSHINE_EXTERNAL_LIBRARIES} diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index 037160e9f15..b681d38bcf7 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -13,7 +13,6 @@ set(TOOL_SOURCES ) add_executable(dxgi-info dxgi.cpp ${TOOL_SOURCES}) -set_target_properties(dxgi-info PROPERTIES CXX_STANDARD 23) target_link_libraries(dxgi-info ${Boost_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} @@ -25,7 +24,6 @@ target_link_libraries(dxgi-info target_compile_options(dxgi-info PRIVATE ${SUNSHINE_COMPILE_OPTIONS}) add_executable(audio-info audio.cpp ${TOOL_SOURCES}) -set_target_properties(audio-info PROPERTIES CXX_STANDARD 23) target_link_libraries(audio-info ${Boost_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} @@ -37,7 +35,6 @@ target_link_libraries(audio-info target_compile_options(audio-info PRIVATE ${SUNSHINE_COMPILE_OPTIONS}) add_executable(sunshinesvc sunshinesvc.cpp) -set_target_properties(sunshinesvc PROPERTIES CXX_STANDARD 23) target_link_libraries(sunshinesvc ${CMAKE_THREAD_LIBS_INIT} wtsapi32 From 7f3be4694ea0cb0b278b48eebc67afe1361c0c03 Mon Sep 17 00:00:00 2001 From: marton Date: Wed, 13 May 2026 00:09:35 -0400 Subject: [PATCH 4/5] fix(build): linux CUDA --- CMakeLists.txt | 4 ++++ cmake/targets/common.cmake | 6 ------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 640ca9425f2..3c94c1ffa5b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,10 @@ project(Sunshine VERSION 0.0.0 set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) +if(NOT DEFINED CMAKE_CUDA_STANDARD) + set(CMAKE_CUDA_STANDARD 17) + set(CMAKE_CUDA_STANDARD_REQUIRED ON) +endif() set(PROJECT_LICENSE "GPL-3.0-only") diff --git a/cmake/targets/common.cmake b/cmake/targets/common.cmake index 3468e598eeb..d55e1f68f48 100644 --- a/cmake/targets/common.cmake +++ b/cmake/targets/common.cmake @@ -23,12 +23,6 @@ elseif(UNIX) 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}) From c31f60e82886f3c1eec6c2ef57600d4d4d94ba09 Mon Sep 17 00:00:00 2001 From: marton Date: Wed, 13 May 2026 17:05:21 -0400 Subject: [PATCH 5/5] fix(build): set cxx standard for both c++ and cuda in tests and tools --- tests/CMakeLists.txt | 7 +++++++ tools/CMakeLists.txt | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index d6eabfaa093..984481f6010 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -3,6 +3,13 @@ cmake_minimum_required(VERSION 3.13) project(test_sunshine) +set(CMAKE_CXX_STANDARD 23) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +if(NOT DEFINED CMAKE_CUDA_STANDARD) + set(CMAKE_CUDA_STANDARD 17) + set(CMAKE_CUDA_STANDARD_REQUIRED ON) +endif() + include_directories("${CMAKE_SOURCE_DIR}") enable_testing() diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index b681d38bcf7..5a2c9e178d0 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -2,6 +2,13 @@ cmake_minimum_required(VERSION 3.20) project(sunshine_tools) +set(CMAKE_CXX_STANDARD 23) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +if(NOT DEFINED CMAKE_CUDA_STANDARD) + set(CMAKE_CUDA_STANDARD 17) + set(CMAKE_CUDA_STANDARD_REQUIRED ON) +endif() + include_directories( "${CMAKE_SOURCE_DIR}" "${FFMPEG_INCLUDE_DIRS}" # this is included only for logging