mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2026-04-07 13:40:36 +02:00
Godot 4.5 has some issues with system files taking precedence over ones included in the "thirdparty" directory; see <https://github.com/godotengine/godot/pull/111094> for discussion. This was further motivation to use the upstream default of enabling volk, unbundling it, and dropping the vulkan-loader input. The volk files are already patched to correctly load libvulkan. * gnu/packages/game-development.scm (godot): Update to 4.5. [source]: Add patch to unbundle libjpeg-turbo. Update snippet to preserve accesskit, grisu2, smaa, and remove volk. [arguments]<#:scons-flags>: Disable builtin libjpeg-turbo and sdl. <#:phases>: In fix-dlopen-paths phase remove libudev and volk patching. Add phase unbundle-volk. [inputs]: Add libjpeg-turbo-3, sdl3, and vulkan-volk. Remove vulkan-loader. * gnu/packages/patches/godot-libjpeg-turbo-unbundle.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. Change-Id: I3feb071ecfdb7312e9d6d8c2213a1448481753dc
218 lines
5.6 KiB
Diff
218 lines
5.6 KiB
Diff
From 6d8aa8582f5c312cd5aab396f90904df1ddc0567 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= <rverschelde@gmail.com>
|
|
Date: Mon, 15 Sep 2025 23:43:13 +0200
|
|
Subject: [PATCH] Linux: Allow unbundling libjpeg-turbo to use system package
|
|
|
|
---
|
|
modules/jpg/SCsub | 182 ++++++++++++++++++------------------
|
|
platform/linuxbsd/detect.py | 3 +
|
|
2 files changed, 93 insertions(+), 92 deletions(-)
|
|
|
|
diff --git a/modules/jpg/SCsub b/modules/jpg/SCsub
|
|
index e5b1bc19c0b9..a45b5eff33f1 100644
|
|
--- a/modules/jpg/SCsub
|
|
+++ b/modules/jpg/SCsub
|
|
@@ -8,98 +8,96 @@ env_jpg = env_modules.Clone()
|
|
|
|
thirdparty_obj = []
|
|
|
|
-thirdparty_dir = "#thirdparty/libjpeg-turbo"
|
|
-
|
|
-thirdparty_sources_common = [
|
|
- "jaricom.c",
|
|
- "jcapimin.c",
|
|
- "jcarith.c",
|
|
- "jchuff.c",
|
|
- "jcicc.c",
|
|
- "jcinit.c",
|
|
- "jcmarker.c",
|
|
- "jcmaster.c",
|
|
- "jcomapi.c",
|
|
- "jcparam.c",
|
|
- "jcphuff.c",
|
|
- "jctrans.c",
|
|
- "jdapimin.c",
|
|
- "jdarith.c",
|
|
- "jdatadst.c",
|
|
- "jdatadst-tj.c",
|
|
- "jdatasrc.c",
|
|
- "jdatasrc-tj.c",
|
|
- "jdhuff.c",
|
|
- "jdicc.c",
|
|
- "jdinput.c",
|
|
- "jdmarker.c",
|
|
- "jdmaster.c",
|
|
- "jdphuff.c",
|
|
- "jdtrans.c",
|
|
- "jerror.c",
|
|
- "jfdctflt.c",
|
|
- "jmemmgr.c",
|
|
- "jmemnobs.c",
|
|
- "jpeg_nbits.c",
|
|
- "transupp.c",
|
|
- "turbojpeg.c",
|
|
-]
|
|
-
|
|
-thirdparty_sources_bit_dependent = [
|
|
- "jcapistd.c",
|
|
- "jccoefct.c",
|
|
- "jccolor.c",
|
|
- "jcdctmgr.c",
|
|
- "jcmainct.c",
|
|
- "jcprepct.c",
|
|
- "jcsample.c",
|
|
- "jdcoefct.c",
|
|
- "jdcolor.c",
|
|
- "jdapistd.c",
|
|
- "jddctmgr.c",
|
|
- "jdmainct.c",
|
|
- "jdmerge.c",
|
|
- "jdpostct.c",
|
|
- "jdsample.c",
|
|
- "jfdctfst.c",
|
|
- "jfdctint.c",
|
|
- "jidctflt.c",
|
|
- "jidctfst.c",
|
|
- "jidctint.c",
|
|
- "jidctred.c",
|
|
- "jutils.c",
|
|
- "jquant1.c",
|
|
- "jquant2.c",
|
|
-]
|
|
-
|
|
-thirdparty_sources_by_bits = {
|
|
- 8: list(thirdparty_sources_bit_dependent),
|
|
- 12: list(thirdparty_sources_bit_dependent),
|
|
-}
|
|
-
|
|
-
|
|
-def source_paths(files):
|
|
- return [thirdparty_dir + "/src/" + f for f in files]
|
|
-
|
|
-
|
|
-env_jpg.Prepend(CPPEXTPATH=[thirdparty_dir + "/src"])
|
|
-
|
|
-
|
|
-def add_bit_depth(bit_depth: int):
|
|
- env_bit_depth = env_jpg.Clone()
|
|
- env_bit_depth.disable_warnings()
|
|
- env_bit_depth["OBJSUFFIX"] = f"_{bit_depth}{env_bit_depth['OBJSUFFIX']}"
|
|
- env_bit_depth.Append(CPPDEFINES=[f"BITS_IN_JSAMPLE={bit_depth}"])
|
|
- env_bit_depth.add_source_files(thirdparty_obj, source_paths(thirdparty_sources_by_bits[bit_depth]))
|
|
-
|
|
-
|
|
-add_bit_depth(8)
|
|
-add_bit_depth(12)
|
|
-
|
|
-env_thirdparty = env_jpg.Clone()
|
|
-env_thirdparty.disable_warnings()
|
|
-env_thirdparty.add_source_files(thirdparty_obj, source_paths(thirdparty_sources_common))
|
|
-env.modules_sources += thirdparty_obj
|
|
+if env["builtin_libjpeg_turbo"]:
|
|
+ thirdparty_dir = "#thirdparty/libjpeg-turbo"
|
|
+
|
|
+ thirdparty_sources_common = [
|
|
+ "jaricom.c",
|
|
+ "jcapimin.c",
|
|
+ "jcarith.c",
|
|
+ "jchuff.c",
|
|
+ "jcicc.c",
|
|
+ "jcinit.c",
|
|
+ "jcmarker.c",
|
|
+ "jcmaster.c",
|
|
+ "jcomapi.c",
|
|
+ "jcparam.c",
|
|
+ "jcphuff.c",
|
|
+ "jctrans.c",
|
|
+ "jdapimin.c",
|
|
+ "jdarith.c",
|
|
+ "jdatadst.c",
|
|
+ "jdatadst-tj.c",
|
|
+ "jdatasrc.c",
|
|
+ "jdatasrc-tj.c",
|
|
+ "jdhuff.c",
|
|
+ "jdicc.c",
|
|
+ "jdinput.c",
|
|
+ "jdmarker.c",
|
|
+ "jdmaster.c",
|
|
+ "jdphuff.c",
|
|
+ "jdtrans.c",
|
|
+ "jerror.c",
|
|
+ "jfdctflt.c",
|
|
+ "jmemmgr.c",
|
|
+ "jmemnobs.c",
|
|
+ "jpeg_nbits.c",
|
|
+ "transupp.c",
|
|
+ "turbojpeg.c",
|
|
+ ]
|
|
+
|
|
+ thirdparty_sources_bit_dependent = [
|
|
+ "jcapistd.c",
|
|
+ "jccoefct.c",
|
|
+ "jccolor.c",
|
|
+ "jcdctmgr.c",
|
|
+ "jcmainct.c",
|
|
+ "jcprepct.c",
|
|
+ "jcsample.c",
|
|
+ "jdcoefct.c",
|
|
+ "jdcolor.c",
|
|
+ "jdapistd.c",
|
|
+ "jddctmgr.c",
|
|
+ "jdmainct.c",
|
|
+ "jdmerge.c",
|
|
+ "jdpostct.c",
|
|
+ "jdsample.c",
|
|
+ "jfdctfst.c",
|
|
+ "jfdctint.c",
|
|
+ "jidctflt.c",
|
|
+ "jidctfst.c",
|
|
+ "jidctint.c",
|
|
+ "jidctred.c",
|
|
+ "jutils.c",
|
|
+ "jquant1.c",
|
|
+ "jquant2.c",
|
|
+ ]
|
|
+
|
|
+ thirdparty_sources_by_bits = {
|
|
+ 8: list(thirdparty_sources_bit_dependent),
|
|
+ 12: list(thirdparty_sources_bit_dependent),
|
|
+ }
|
|
+
|
|
+ def source_paths(files):
|
|
+ return [thirdparty_dir + "/src/" + f for f in files]
|
|
+
|
|
+ env_jpg.Prepend(CPPEXTPATH=[thirdparty_dir + "/src"])
|
|
+
|
|
+ def add_bit_depth(bit_depth: int):
|
|
+ env_bit_depth = env_jpg.Clone()
|
|
+ env_bit_depth.disable_warnings()
|
|
+ env_bit_depth["OBJSUFFIX"] = f"_{bit_depth}{env_bit_depth['OBJSUFFIX']}"
|
|
+ env_bit_depth.Append(CPPDEFINES=[f"BITS_IN_JSAMPLE={bit_depth}"])
|
|
+ env_bit_depth.add_source_files(thirdparty_obj, source_paths(thirdparty_sources_by_bits[bit_depth]))
|
|
+
|
|
+ add_bit_depth(8)
|
|
+ add_bit_depth(12)
|
|
+
|
|
+ env_thirdparty = env_jpg.Clone()
|
|
+ env_thirdparty.disable_warnings()
|
|
+ env_thirdparty.add_source_files(thirdparty_obj, source_paths(thirdparty_sources_common))
|
|
+ env.modules_sources += thirdparty_obj
|
|
+
|
|
|
|
# Godot source files
|
|
|
|
diff --git a/platform/linuxbsd/detect.py b/platform/linuxbsd/detect.py
|
|
index df4dbddedd36..fbb3cdf1f13c 100644
|
|
--- a/platform/linuxbsd/detect.py
|
|
+++ b/platform/linuxbsd/detect.py
|
|
@@ -278,6 +278,9 @@ def configure(env: "SConsEnvironment"):
|
|
if not env["builtin_libwebp"]:
|
|
env.ParseConfig("pkg-config libwebp --cflags --libs")
|
|
|
|
+ if not env["builtin_libjpeg_turbo"]:
|
|
+ env.ParseConfig("pkg-config libturbojpeg --cflags --libs")
|
|
+
|
|
if not env["builtin_mbedtls"]:
|
|
# mbedTLS only provides a pkgconfig file since 3.6.0, but we still support 2.28.x,
|
|
# so fallback to manually specifying LIBS if it fails.
|