summaryrefslogtreecommitdiff
path: root/net-misc/sunshine/files/sunshine-0.21.0-system-deps.patch
blob: bfb5d41aba15255fd52ff6973a6535855ff05b16 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
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