summaryrefslogtreecommitdiff
path: root/net-misc/sunshine/files/sunshine-0.21.0-system-deps.patch
diff options
context:
space:
mode:
Diffstat (limited to 'net-misc/sunshine/files/sunshine-0.21.0-system-deps.patch')
-rw-r--r--net-misc/sunshine/files/sunshine-0.21.0-system-deps.patch341
1 files changed, 341 insertions, 0 deletions
diff --git a/net-misc/sunshine/files/sunshine-0.21.0-system-deps.patch b/net-misc/sunshine/files/sunshine-0.21.0-system-deps.patch
new file mode 100644
index 000000000000..bfb5d41aba15
--- /dev/null
+++ b/net-misc/sunshine/files/sunshine-0.21.0-system-deps.patch
@@ -0,0 +1,341 @@
+From 9ac47f2b21391758065cc32df2d54e59a56425b8 Mon Sep 17 00:00:00 2001
+From: James Le Cuirot <chewi@gentoo.org>
+Date: Mon, 1 Jan 2024 01:04:04 +0000
+Subject: [PATCH 1/4] Optionally allow the system installation of MiniUPnP to
+ be used (#1959)
+
+---
+ cmake/compile_definitions/common.cmake | 2 +-
+ cmake/dependencies/common.cmake | 38 ++++++++++++++++++--------
+ cmake/prep/options.cmake | 2 ++
+ 3 files changed, 29 insertions(+), 13 deletions(-)
+
+diff --git a/cmake/compile_definitions/common.cmake b/cmake/compile_definitions/common.cmake
+index f10b200..c096920 100644
+--- a/cmake/compile_definitions/common.cmake
++++ b/cmake/compile_definitions/common.cmake
+@@ -118,7 +118,7 @@ else()
+ endif()
+
+ list(APPEND SUNSHINE_EXTERNAL_LIBRARIES
+- libminiupnpc-static
++ ${MINIUPNP_LIBRARIES}
+ ${CMAKE_THREAD_LIBS_INIT}
+ enet
+ opus
+diff --git a/cmake/dependencies/common.cmake b/cmake/dependencies/common.cmake
+index 9bc7c56..b26b12a 100644
+--- a/cmake/dependencies/common.cmake
++++ b/cmake/dependencies/common.cmake
+@@ -9,13 +9,33 @@ add_subdirectory(third-party/moonlight-common-c/enet)
+ # web server
+ add_subdirectory(third-party/Simple-Web-Server)
+
++# common dependencies
++find_package(OpenSSL REQUIRED)
++find_package(PkgConfig REQUIRED)
++find_package(Threads REQUIRED)
++pkg_check_modules(CURL REQUIRED libcurl)
++
+ # miniupnp
+-set(UPNPC_BUILD_SHARED OFF CACHE BOOL "No shared libraries")
+-set(UPNPC_BUILD_TESTS OFF CACHE BOOL "Don't build tests for miniupnpc")
+-set(UPNPC_BUILD_SAMPLE OFF CACHE BOOL "Don't build samples for miniupnpc")
+-set(UPNPC_NO_INSTALL ON CACHE BOOL "Don't install any libraries build for miniupnpc")
+-add_subdirectory(third-party/miniupnp/miniupnpc)
+-include_directories(SYSTEM third-party/miniupnp/miniupnpc/include)
++if(SUNSHINE_SYSTEM_MINIUPNP)
++ pkg_check_modules(MINIUPNP miniupnpc REQUIRED)
++
++ # Use includedir pkg-config variable rather than MINIUPNP_INCLUDE_DIRS
++ # defined above. The latter may be blank, as pkg-config sometimes omits -I
++ # flags for directories that are searched by default (e.g. /usr/include),
++ # but we need a value to append /miniupnpc to. Normally source files would
++ # prefix their #include directives with miniupnpc/, but this does not align
++ # with the directory structure of the git submodule used below.
++ pkg_get_variable(MINIUPNP_INCLUDE_DIR miniupnpc includedir)
++ include_directories(SYSTEM ${MINIUPNP_INCLUDE_DIR}/miniupnpc)
++else()
++ set(UPNPC_BUILD_SHARED OFF CACHE BOOL "No shared libraries")
++ set(UPNPC_BUILD_TESTS OFF CACHE BOOL "Don't build tests for miniupnpc")
++ set(UPNPC_BUILD_SAMPLE OFF CACHE BOOL "Don't build samples for miniupnpc")
++ set(UPNPC_NO_INSTALL ON CACHE BOOL "Don't install any libraries build for miniupnpc")
++ set(MINIUPNP_LIBRARIES libminiupnpc-static)
++ add_subdirectory(third-party/miniupnp/miniupnpc)
++ include_directories(SYSTEM third-party/miniupnp/miniupnpc/include)
++endif()
+
+ # ffmpeg pre-compiled binaries
+ if(WIN32)
+@@ -66,12 +86,6 @@ set(FFMPEG_LIBRARIES
+ ${HDR10_PLUS_LIBRARY}
+ ${FFMPEG_PLATFORM_LIBRARIES})
+
+-# common dependencies
+-find_package(OpenSSL REQUIRED)
+-find_package(PkgConfig REQUIRED)
+-find_package(Threads REQUIRED)
+-pkg_check_modules(CURL REQUIRED libcurl)
+-
+ # platform specific dependencies
+ if(WIN32)
+ include(${CMAKE_MODULE_PATH}/dependencies/windows.cmake)
+diff --git a/cmake/prep/options.cmake b/cmake/prep/options.cmake
+index 1a216d2..cb26461 100644
+--- a/cmake/prep/options.cmake
++++ b/cmake/prep/options.cmake
+@@ -4,6 +4,8 @@ option(SUNSHINE_CONFIGURE_ONLY "Configure special files only, then exit." OFF)
+ option(SUNSHINE_ENABLE_TRAY "Enable system tray icon. This option will be ignored on macOS." ON)
+ option(SUNSHINE_REQUIRE_TRAY "Require system tray icon. Fail the build if tray requirements are not met." ON)
+
++option(SUNSHINE_SYSTEM_MINIUPNP "Use system installation of MiniUPnP rather than the submodule." OFF)
++
+ if(APPLE)
+ option(SUNSHINE_CONFIGURE_PORTFILE
+ "Configure macOS Portfile. Recommended to use with SUNSHINE_CONFIGURE_ONLY" OFF)
+--
+2.43.0
+
+
+From 2056874748872e820c343556fc6ede4449e376f8 Mon Sep 17 00:00:00 2001
+From: James Le Cuirot <chewi@gentoo.org>
+Date: Mon, 1 Jan 2024 16:49:00 +0000
+Subject: [PATCH 2/4] Optionally allow the system installation of
+ wayland-protocols to be used (#1966)
+
+---
+ cmake/compile_definitions/linux.cmake | 11 +++++++++--
+ cmake/macros/linux.cmake | 8 ++++----
+ cmake/prep/options.cmake | 1 +
+ 3 files changed, 14 insertions(+), 6 deletions(-)
+
+diff --git a/cmake/compile_definitions/linux.cmake b/cmake/compile_definitions/linux.cmake
+index f28152e..a13a823 100644
+--- a/cmake/compile_definitions/linux.cmake
++++ b/cmake/compile_definitions/linux.cmake
+@@ -127,8 +127,15 @@ endif()
+ if(WAYLAND_FOUND)
+ add_compile_definitions(SUNSHINE_BUILD_WAYLAND)
+
+- GEN_WAYLAND("wayland-protocols" "unstable/xdg-output" xdg-output-unstable-v1)
+- GEN_WAYLAND("wlr-protocols" "unstable" wlr-export-dmabuf-unstable-v1)
++ if(NOT SUNSHINE_SYSTEM_WAYLAND_PROTOCOLS)
++ set(WAYLAND_PROTOCOLS_DIR "${CMAKE_SOURCE_DIR}/third-party/wayland-protocols")
++ else()
++ pkg_get_variable(WAYLAND_PROTOCOLS_DIR wayland-protocols pkgdatadir)
++ pkg_check_modules(WAYLAND_PROTOCOLS wayland-protocols REQUIRED)
++ endif()
++
++ GEN_WAYLAND("${WAYLAND_PROTOCOLS_DIR}" "unstable/xdg-output" xdg-output-unstable-v1)
++ GEN_WAYLAND("${CMAKE_SOURCE_DIR}/third-party/wlr-protocols" "unstable" wlr-export-dmabuf-unstable-v1)
+
+ include_directories(
+ SYSTEM
+diff --git a/cmake/macros/linux.cmake b/cmake/macros/linux.cmake
+index d84d045..0bb5e04 100644
+--- a/cmake/macros/linux.cmake
++++ b/cmake/macros/linux.cmake
+@@ -5,17 +5,17 @@ macro(GEN_WAYLAND wayland_directory subdirectory filename)
+ file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/generated-src)
+
+ message("wayland-scanner private-code \
+-${CMAKE_SOURCE_DIR}/third-party/${wayland_directory}/${subdirectory}/${filename}.xml \
++${wayland_directory}/${subdirectory}/${filename}.xml \
+ ${CMAKE_BINARY_DIR}/generated-src/${filename}.c")
+ message("wayland-scanner client-header \
+-${CMAKE_SOURCE_DIR}/third-party/${wayland_directory}/${subdirectory}/${filename}.xml \
++${wayland_directory}/${subdirectory}/${filename}.xml \
+ ${CMAKE_BINARY_DIR}/generated-src/${filename}.h")
+ execute_process(
+ COMMAND wayland-scanner private-code
+- ${CMAKE_SOURCE_DIR}/third-party/${wayland_directory}/${subdirectory}/${filename}.xml
++ ${wayland_directory}/${subdirectory}/${filename}.xml
+ ${CMAKE_BINARY_DIR}/generated-src/${filename}.c
+ COMMAND wayland-scanner client-header
+- ${CMAKE_SOURCE_DIR}/third-party/${wayland_directory}/${subdirectory}/${filename}.xml
++ ${wayland_directory}/${subdirectory}/${filename}.xml
+ ${CMAKE_BINARY_DIR}/generated-src/${filename}.h
+
+ RESULT_VARIABLE EXIT_INT
+diff --git a/cmake/prep/options.cmake b/cmake/prep/options.cmake
+index cb26461..dc6b5f6 100644
+--- a/cmake/prep/options.cmake
++++ b/cmake/prep/options.cmake
+@@ -5,6 +5,7 @@ option(SUNSHINE_ENABLE_TRAY "Enable system tray icon. This option will be ignore
+ option(SUNSHINE_REQUIRE_TRAY "Require system tray icon. Fail the build if tray requirements are not met." ON)
+
+ option(SUNSHINE_SYSTEM_MINIUPNP "Use system installation of MiniUPnP rather than the submodule." OFF)
++option(SUNSHINE_SYSTEM_WAYLAND_PROTOCOLS "Use system installation of wayland-protocols rather than the submodule." OFF)
+
+ if(APPLE)
+ option(SUNSHINE_CONFIGURE_PORTFILE
+--
+2.43.0
+
+
+From a0a6d322c292efa67a59df7b4c71beeb17b322ce Mon Sep 17 00:00:00 2001
+From: James Le Cuirot <chewi@gentoo.org>
+Date: Mon, 1 Jan 2024 11:17:08 +0000
+Subject: [PATCH 3/4] Allow a custom FFmpeg build to be provided using CMake
+ options
+
+---
+ cmake/dependencies/common.cmake | 96 ++++++++++++++++++---------------
+ 1 file changed, 53 insertions(+), 43 deletions(-)
+
+diff --git a/cmake/dependencies/common.cmake b/cmake/dependencies/common.cmake
+index b26b12a..30069d3 100644
+--- a/cmake/dependencies/common.cmake
++++ b/cmake/dependencies/common.cmake
+@@ -38,53 +38,63 @@ else()
+ endif()
+
+ # ffmpeg pre-compiled binaries
+-if(WIN32)
+- if(NOT CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64")
+- message(FATAL_ERROR "Unsupported system processor:" ${CMAKE_SYSTEM_PROCESSOR})
+- endif()
+- set(FFMPEG_PLATFORM_LIBRARIES mfplat ole32 strmiids mfuuid vpl)
+- set(FFMPEG_PREPARED_BINARIES "${CMAKE_CURRENT_SOURCE_DIR}/third-party/ffmpeg-windows-x86_64")
+-elseif(APPLE)
+- if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
+- set(FFMPEG_PREPARED_BINARIES "${CMAKE_CURRENT_SOURCE_DIR}/third-party/ffmpeg-macos-x86_64")
+- elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
+- set(FFMPEG_PREPARED_BINARIES "${CMAKE_CURRENT_SOURCE_DIR}/third-party/ffmpeg-macos-aarch64")
+- elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "powerpc")
+- message(FATAL_ERROR "PowerPC is not supported on macOS")
+- else()
+- message(FATAL_ERROR "Unsupported system processor:" ${CMAKE_SYSTEM_PROCESSOR})
++if(NOT DEFINED FFMPEG_PREPARED_BINARIES)
++ if(WIN32)
++ if(NOT CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64")
++ message(FATAL_ERROR "Unsupported system processor:" ${CMAKE_SYSTEM_PROCESSOR})
++ endif()
++ set(FFMPEG_PLATFORM_LIBRARIES mfplat ole32 strmiids mfuuid vpl)
++ set(FFMPEG_PREPARED_BINARIES "${CMAKE_CURRENT_SOURCE_DIR}/third-party/ffmpeg-windows-x86_64")
++ elseif(APPLE)
++ if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
++ set(FFMPEG_PREPARED_BINARIES "${CMAKE_CURRENT_SOURCE_DIR}/third-party/ffmpeg-macos-x86_64")
++ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
++ set(FFMPEG_PREPARED_BINARIES "${CMAKE_CURRENT_SOURCE_DIR}/third-party/ffmpeg-macos-aarch64")
++ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "powerpc")
++ message(FATAL_ERROR "PowerPC is not supported on macOS")
++ else()
++ message(FATAL_ERROR "Unsupported system processor:" ${CMAKE_SYSTEM_PROCESSOR})
++ endif()
++ elseif(UNIX)
++ set(FFMPEG_PLATFORM_LIBRARIES va va-drm va-x11 vdpau X11)
++ if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
++ list(APPEND FFMPEG_PLATFORM_LIBRARIES mfx)
++ set(FFMPEG_PREPARED_BINARIES "${CMAKE_CURRENT_SOURCE_DIR}/third-party/ffmpeg-linux-x86_64")
++ set(CPACK_DEB_PLATFORM_PACKAGE_DEPENDS "libmfx1,")
++ set(CPACK_RPM_PLATFORM_PACKAGE_REQUIRES "intel-mediasdk >= 22.3.0,")
++ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
++ set(FFMPEG_PREPARED_BINARIES "${CMAKE_CURRENT_SOURCE_DIR}/third-party/ffmpeg-linux-aarch64")
++ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64le" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64")
++ set(FFMPEG_PREPARED_BINARIES "${CMAKE_CURRENT_SOURCE_DIR}/third-party/ffmpeg-linux-powerpc64le")
++ else()
++ message(FATAL_ERROR "Unsupported system processor:" ${CMAKE_SYSTEM_PROCESSOR})
++ endif()
+ endif()
+-elseif(UNIX)
+- set(FFMPEG_PLATFORM_LIBRARIES va va-drm va-x11 vdpau X11)
+- if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
+- list(APPEND FFMPEG_PLATFORM_LIBRARIES mfx)
+- set(FFMPEG_PREPARED_BINARIES "${CMAKE_CURRENT_SOURCE_DIR}/third-party/ffmpeg-linux-x86_64")
+- set(CPACK_DEB_PLATFORM_PACKAGE_DEPENDS "libmfx1,")
+- set(CPACK_RPM_PLATFORM_PACKAGE_REQUIRES "intel-mediasdk >= 22.3.0,")
+- elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
+- set(FFMPEG_PREPARED_BINARIES "${CMAKE_CURRENT_SOURCE_DIR}/third-party/ffmpeg-linux-aarch64")
+- elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64le" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64")
+- set(FFMPEG_PREPARED_BINARIES "${CMAKE_CURRENT_SOURCE_DIR}/third-party/ffmpeg-linux-powerpc64le")
+- else()
+- message(FATAL_ERROR "Unsupported system processor:" ${CMAKE_SYSTEM_PROCESSOR})
++ if(EXISTS ${FFMPEG_PREPARED_BINARIES}/lib/libhdr10plus.a)
++ set(HDR10_PLUS_LIBRARY
++ ${FFMPEG_PREPARED_BINARIES}/lib/libhdr10plus.a)
+ endif()
++ set(FFMPEG_LIBRARIES
++ ${FFMPEG_PREPARED_BINARIES}/lib/libavcodec.a
++ ${FFMPEG_PREPARED_BINARIES}/lib/libavutil.a
++ ${FFMPEG_PREPARED_BINARIES}/lib/libcbs.a
++ ${FFMPEG_PREPARED_BINARIES}/lib/libSvtAv1Enc.a
++ ${FFMPEG_PREPARED_BINARIES}/lib/libswscale.a
++ ${FFMPEG_PREPARED_BINARIES}/lib/libx264.a
++ ${FFMPEG_PREPARED_BINARIES}/lib/libx265.a
++ ${HDR10_PLUS_LIBRARY}
++ ${FFMPEG_PLATFORM_LIBRARIES})
++else()
++ set(FFMPEG_LIBRARIES
++ "${FFMPEG_PREPARED_BINARIES}/lib/libavcodec.a"
++ "${FFMPEG_PREPARED_BINARIES}/lib/libavutil.a"
++ "${FFMPEG_PREPARED_BINARIES}/lib/libcbs.a"
++ "${FFMPEG_PREPARED_BINARIES}/lib/libswscale.a"
++ ${FFMPEG_PLATFORM_LIBRARIES})
+ endif()
++
+ set(FFMPEG_INCLUDE_DIRS
+- ${FFMPEG_PREPARED_BINARIES}/include)
+-if(EXISTS ${FFMPEG_PREPARED_BINARIES}/lib/libhdr10plus.a)
+- set(HDR10_PLUS_LIBRARY
+- ${FFMPEG_PREPARED_BINARIES}/lib/libhdr10plus.a)
+-endif()
+-set(FFMPEG_LIBRARIES
+- ${FFMPEG_PREPARED_BINARIES}/lib/libavcodec.a
+- ${FFMPEG_PREPARED_BINARIES}/lib/libavutil.a
+- ${FFMPEG_PREPARED_BINARIES}/lib/libcbs.a
+- ${FFMPEG_PREPARED_BINARIES}/lib/libSvtAv1Enc.a
+- ${FFMPEG_PREPARED_BINARIES}/lib/libswscale.a
+- ${FFMPEG_PREPARED_BINARIES}/lib/libx264.a
+- ${FFMPEG_PREPARED_BINARIES}/lib/libx265.a
+- ${HDR10_PLUS_LIBRARY}
+- ${FFMPEG_PLATFORM_LIBRARIES})
++ "${FFMPEG_PREPARED_BINARIES}/include")
+
+ # platform specific dependencies
+ if(WIN32)
+--
+2.43.0
+
+
+From c871ffc1606f148e55f80415a289317f74820ddf Mon Sep 17 00:00:00 2001
+From: James Le Cuirot <chewi@gentoo.org>
+Date: Mon, 1 Jan 2024 13:34:20 +0000
+Subject: [PATCH 4/4] Move numa from general PLATFORM_LIBRARIES to
+ FFMPEG_PLATFORM_LIBRARIES
+
+It's only needed if libx265 was built with NUMA support. This support
+may be disabled in a custom FFmpeg build.
+---
+ cmake/compile_definitions/linux.cmake | 1 -
+ cmake/dependencies/common.cmake | 2 +-
+ 2 files changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/cmake/compile_definitions/linux.cmake b/cmake/compile_definitions/linux.cmake
+index a13a823..a2baa9c 100644
+--- a/cmake/compile_definitions/linux.cmake
++++ b/cmake/compile_definitions/linux.cmake
+@@ -223,7 +223,6 @@ list(APPEND PLATFORM_LIBRARIES
+ Boost::dynamic_linking
+ dl
+ evdev
+- numa
+ pulse
+ pulse-simple)
+
+diff --git a/cmake/dependencies/common.cmake b/cmake/dependencies/common.cmake
+index 30069d3..fc86ab7 100644
+--- a/cmake/dependencies/common.cmake
++++ b/cmake/dependencies/common.cmake
+@@ -56,7 +56,7 @@ if(NOT DEFINED FFMPEG_PREPARED_BINARIES)
+ message(FATAL_ERROR "Unsupported system processor:" ${CMAKE_SYSTEM_PROCESSOR})
+ endif()
+ elseif(UNIX)
+- set(FFMPEG_PLATFORM_LIBRARIES va va-drm va-x11 vdpau X11)
++ set(FFMPEG_PLATFORM_LIBRARIES numa va va-drm va-x11 vdpau X11)
+ if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
+ list(APPEND FFMPEG_PLATFORM_LIBRARIES mfx)
+ set(FFMPEG_PREPARED_BINARIES "${CMAKE_CURRENT_SOURCE_DIR}/third-party/ffmpeg-linux-x86_64")
+--
+2.43.0
+