Sfoglia il codice sorgente

Merge pull request #73441 from akien-mga/linux-unbundling-fixes

Fix includes of thirdparty libs which can be unbundled on Linux
Rémi Verschelde 2 anni fa
parent
commit
cefe1e0654

+ 2 - 2
SConstruct

@@ -218,7 +218,7 @@ opts.Add(BoolVariable("builtin_msdfgen", "Use the built-in MSDFgen library", Tru
 opts.Add(BoolVariable("builtin_glslang", "Use the built-in glslang library", True))
 opts.Add(BoolVariable("builtin_glslang", "Use the built-in glslang library", True))
 opts.Add(BoolVariable("builtin_graphite", "Use the built-in Graphite library", True))
 opts.Add(BoolVariable("builtin_graphite", "Use the built-in Graphite library", True))
 opts.Add(BoolVariable("builtin_harfbuzz", "Use the built-in HarfBuzz library", True))
 opts.Add(BoolVariable("builtin_harfbuzz", "Use the built-in HarfBuzz library", True))
-opts.Add(BoolVariable("builtin_icu", "Use the built-in ICU library", True))
+opts.Add(BoolVariable("builtin_icu4c", "Use the built-in ICU library", True))
 opts.Add(BoolVariable("builtin_libogg", "Use the built-in libogg library", True))
 opts.Add(BoolVariable("builtin_libogg", "Use the built-in libogg library", True))
 opts.Add(BoolVariable("builtin_libpng", "Use the built-in libpng library", True))
 opts.Add(BoolVariable("builtin_libpng", "Use the built-in libpng library", True))
 opts.Add(BoolVariable("builtin_libtheora", "Use the built-in libtheora library", True))
 opts.Add(BoolVariable("builtin_libtheora", "Use the built-in libtheora library", True))
@@ -229,7 +229,7 @@ opts.Add(BoolVariable("builtin_mbedtls", "Use the built-in mbedTLS library", Tru
 opts.Add(BoolVariable("builtin_miniupnpc", "Use the built-in miniupnpc library", True))
 opts.Add(BoolVariable("builtin_miniupnpc", "Use the built-in miniupnpc library", True))
 opts.Add(BoolVariable("builtin_pcre2", "Use the built-in PCRE2 library", True))
 opts.Add(BoolVariable("builtin_pcre2", "Use the built-in PCRE2 library", True))
 opts.Add(BoolVariable("builtin_pcre2_with_jit", "Use JIT compiler for the built-in PCRE2 library", True))
 opts.Add(BoolVariable("builtin_pcre2_with_jit", "Use JIT compiler for the built-in PCRE2 library", True))
-opts.Add(BoolVariable("builtin_recast", "Use the built-in Recast library", True))
+opts.Add(BoolVariable("builtin_recastnavigation", "Use the built-in Recast navigation library", True))
 opts.Add(BoolVariable("builtin_rvo2", "Use the built-in RVO2 library", True))
 opts.Add(BoolVariable("builtin_rvo2", "Use the built-in RVO2 library", True))
 opts.Add(BoolVariable("builtin_squish", "Use the built-in squish library", True))
 opts.Add(BoolVariable("builtin_squish", "Use the built-in squish library", True))
 opts.Add(BoolVariable("builtin_xatlas", "Use the built-in xatlas library", True))
 opts.Add(BoolVariable("builtin_xatlas", "Use the built-in xatlas library", True))

+ 3 - 0
modules/basis_universal/SCsub

@@ -40,6 +40,9 @@ if not env.msvc:
 else:
 else:
     env_basisu.Prepend(CPPPATH=[thirdparty_dir])
     env_basisu.Prepend(CPPPATH=[thirdparty_dir])
 
 
+if env["builtin_zstd"]:
+    env_basisu.Prepend(CPPPATH=["#thirdparty/zstd"])
+
 if env.dev_build:
 if env.dev_build:
     env_basisu.Append(CPPDEFINES=[("BASISU_DEVEL_MESSAGES", 1), ("BASISD_ENABLE_DEBUG_FLAGS", 1)])
     env_basisu.Append(CPPDEFINES=[("BASISU_DEVEL_MESSAGES", 1), ("BASISD_ENABLE_DEBUG_FLAGS", 1)])
 
 

+ 1 - 1
modules/navigation/SCsub

@@ -10,7 +10,7 @@ env_navigation = env_modules.Clone()
 thirdparty_obj = []
 thirdparty_obj = []
 
 
 # Recast Thirdparty source files
 # Recast Thirdparty source files
-if env["builtin_recast"]:
+if env["builtin_recastnavigation"]:
     thirdparty_dir = "#thirdparty/recastnavigation/Recast/"
     thirdparty_dir = "#thirdparty/recastnavigation/Recast/"
     thirdparty_sources = [
     thirdparty_sources = [
         "Source/Recast.cpp",
         "Source/Recast.cpp",

+ 2 - 3
modules/ogg/ogg_packet_sequence.h

@@ -32,11 +32,10 @@
 #define OGG_PACKET_SEQUENCE_H
 #define OGG_PACKET_SEQUENCE_H
 
 
 #include "core/io/resource.h"
 #include "core/io/resource.h"
-#include "core/object/gdvirtual.gen.inc"
-#include "core/variant/native_ptr.h"
 #include "core/variant/typed_array.h"
 #include "core/variant/typed_array.h"
 #include "core/variant/variant.h"
 #include "core/variant/variant.h"
-#include "thirdparty/libogg/ogg/ogg.h"
+
+#include <ogg/ogg.h>
 
 
 class OggPacketSequencePlayback;
 class OggPacketSequencePlayback;
 
 

+ 2 - 3
modules/text_server_adv/SCsub

@@ -7,7 +7,6 @@ env_text_server_adv = env_modules.Clone()
 
 
 
 
 def make_icu_data(target, source, env):
 def make_icu_data(target, source, env):
-
     dst = target[0].srcnode().abspath
     dst = target[0].srcnode().abspath
 
 
     g = open(dst, "w", encoding="utf-8")
     g = open(dst, "w", encoding="utf-8")
@@ -126,7 +125,7 @@ if env["builtin_harfbuzz"]:
     env_harfbuzz.Prepend(CPPPATH=["#thirdparty/harfbuzz/src"])
     env_harfbuzz.Prepend(CPPPATH=["#thirdparty/harfbuzz/src"])
 
 
     env_harfbuzz.Append(CCFLAGS=["-DHAVE_ICU"])
     env_harfbuzz.Append(CCFLAGS=["-DHAVE_ICU"])
-    if env["builtin_icu"]:
+    if env["builtin_icu4c"]:
         env_harfbuzz.Prepend(CPPPATH=["#thirdparty/icu4c/common/", "#thirdparty/icu4c/i18n/"])
         env_harfbuzz.Prepend(CPPPATH=["#thirdparty/icu4c/common/", "#thirdparty/icu4c/i18n/"])
         env_harfbuzz.Append(CCFLAGS=["-DU_HAVE_LIB_SUFFIX=1", "-DU_LIB_SUFFIX_C_NAME=_godot", "-DHAVE_ICU_BUILTIN"])
         env_harfbuzz.Append(CCFLAGS=["-DU_HAVE_LIB_SUFFIX=1", "-DU_LIB_SUFFIX_C_NAME=_godot", "-DHAVE_ICU_BUILTIN"])
 
 
@@ -240,7 +239,7 @@ if env["builtin_graphite"] and freetype_enabled and env["graphite"]:
         env.Append(LIBS=[lib])
         env.Append(LIBS=[lib])
 
 
 
 
-if env["builtin_icu"]:
+if env["builtin_icu4c"]:
     env_icu = env_modules.Clone()
     env_icu = env_modules.Clone()
     env_icu.disable_warnings()
     env_icu.disable_warnings()
 
 

+ 2 - 1
modules/vorbis/audio_stream_ogg_vorbis.cpp

@@ -32,7 +32,8 @@
 
 
 #include "core/io/file_access.h"
 #include "core/io/file_access.h"
 #include "core/variant/typed_array.h"
 #include "core/variant/typed_array.h"
-#include "thirdparty/libogg/ogg/ogg.h"
+
+#include <ogg/ogg.h>
 
 
 int AudioStreamPlaybackOggVorbis::_mix_internal(AudioFrame *p_buffer, int p_frames) {
 int AudioStreamPlaybackOggVorbis::_mix_internal(AudioFrame *p_buffer, int p_frames) {
 	ERR_FAIL_COND_V(!ready, 0);
 	ERR_FAIL_COND_V(!ready, 0);

+ 2 - 1
modules/vorbis/audio_stream_ogg_vorbis.h

@@ -34,7 +34,8 @@
 #include "core/variant/variant.h"
 #include "core/variant/variant.h"
 #include "modules/ogg/ogg_packet_sequence.h"
 #include "modules/ogg/ogg_packet_sequence.h"
 #include "servers/audio/audio_stream.h"
 #include "servers/audio/audio_stream.h"
-#include "thirdparty/libvorbis/vorbis/codec.h"
+
+#include <vorbis/codec.h>
 
 
 class AudioStreamOggVorbis;
 class AudioStreamOggVorbis;
 
 

+ 3 - 2
modules/vorbis/resource_importer_ogg_vorbis.cpp

@@ -33,8 +33,9 @@
 #include "core/io/file_access.h"
 #include "core/io/file_access.h"
 #include "core/io/resource_saver.h"
 #include "core/io/resource_saver.h"
 #include "scene/resources/texture.h"
 #include "scene/resources/texture.h"
-#include "thirdparty/libogg/ogg/ogg.h"
-#include "thirdparty/libvorbis/vorbis/codec.h"
+
+#include <ogg/ogg.h>
+#include <vorbis/codec.h>
 
 
 #ifdef TOOLS_ENABLED
 #ifdef TOOLS_ENABLED
 #include "editor/import/audio_stream_import_settings.h"
 #include "editor/import/audio_stream_import_settings.h"

+ 22 - 15
platform/linuxbsd/detect.py

@@ -194,19 +194,21 @@ def configure(env: "Environment"):
     # FIXME: Check for existence of the libs before parsing their flags with pkg-config
     # FIXME: Check for existence of the libs before parsing their flags with pkg-config
 
 
     # freetype depends on libpng and zlib, so bundling one of them while keeping others
     # freetype depends on libpng and zlib, so bundling one of them while keeping others
-    # as shared libraries leads to weird issues
-    if (
-        env["builtin_freetype"]
-        or env["builtin_libpng"]
-        or env["builtin_zlib"]
-        or env["builtin_graphite"]
-        or env["builtin_harfbuzz"]
-    ):
-        env["builtin_freetype"] = True
-        env["builtin_libpng"] = True
-        env["builtin_zlib"] = True
-        env["builtin_graphite"] = True
-        env["builtin_harfbuzz"] = True
+    # as shared libraries leads to weird issues. And graphite and harfbuzz need freetype.
+    ft_linked_deps = [
+        env["builtin_freetype"],
+        env["builtin_libpng"],
+        env["builtin_zlib"],
+        env["builtin_graphite"],
+        env["builtin_harfbuzz"],
+    ]
+    if (not all(ft_linked_deps)) and any(ft_linked_deps):  # All or nothing.
+        print(
+            "These libraries should be either all builtin, or all system provided:\n"
+            "freetype, libpng, zlib, graphite, harfbuzz.\n"
+            "Please specify `builtin_<name>=no` for all of them, or none."
+        )
+        sys.exit()
 
 
     if not env["builtin_freetype"]:
     if not env["builtin_freetype"]:
         env.ParseConfig("pkg-config freetype2 --cflags --libs")
         env.ParseConfig("pkg-config freetype2 --cflags --libs")
@@ -214,8 +216,8 @@ def configure(env: "Environment"):
     if not env["builtin_graphite"]:
     if not env["builtin_graphite"]:
         env.ParseConfig("pkg-config graphite2 --cflags --libs")
         env.ParseConfig("pkg-config graphite2 --cflags --libs")
 
 
-    if not env["builtin_icu"]:
-        env.ParseConfig("pkg-config icu-uc --cflags --libs")
+    if not env["builtin_icu4c"]:
+        env.ParseConfig("pkg-config icu-i18n icu-uc --cflags --libs")
 
 
     if not env["builtin_harfbuzz"]:
     if not env["builtin_harfbuzz"]:
         env.ParseConfig("pkg-config harfbuzz harfbuzz-icu --cflags --libs")
         env.ParseConfig("pkg-config harfbuzz harfbuzz-icu --cflags --libs")
@@ -270,6 +272,11 @@ def configure(env: "Environment"):
     if not env["builtin_pcre2"]:
     if not env["builtin_pcre2"]:
         env.ParseConfig("pkg-config libpcre2-32 --cflags --libs")
         env.ParseConfig("pkg-config libpcre2-32 --cflags --libs")
 
 
+    if not env["builtin_recastnavigation"]:
+        # No pkgconfig file so far, hardcode default paths.
+        env.Prepend(CPPPATH=["/usr/include/recastnavigation"])
+        env.Append(LIBS=["Recast"])
+
     if not env["builtin_embree"]:
     if not env["builtin_embree"]:
         # No pkgconfig file so far, hardcode expected lib name.
         # No pkgconfig file so far, hardcode expected lib name.
         env.Append(LIBS=["embree3"])
         env.Append(LIBS=["embree3"])

+ 1 - 1
thirdparty/basis_universal/encoder/basisu_comp.cpp

@@ -28,7 +28,7 @@
 #endif
 #endif
 
 
 #if BASISD_SUPPORT_KTX2_ZSTD
 #if BASISD_SUPPORT_KTX2_ZSTD
-#include "../zstd/zstd.h"
+#include <zstd.h>
 #endif
 #endif
 
 
 // Set to 1 to disable the mipPadding alignment workaround (which only seems to be needed when no key-values are written at all)
 // Set to 1 to disable the mipPadding alignment workaround (which only seems to be needed when no key-values are written at all)

+ 1 - 1
thirdparty/basis_universal/transcoder/basisu_transcoder.cpp

@@ -155,7 +155,7 @@
    // If BASISD_SUPPORT_KTX2_ZSTD is 0, UASTC files compressed with Zstd cannot be loaded.
    // If BASISD_SUPPORT_KTX2_ZSTD is 0, UASTC files compressed with Zstd cannot be loaded.
 	#if BASISD_SUPPORT_KTX2_ZSTD
 	#if BASISD_SUPPORT_KTX2_ZSTD
 		// We only use two Zstd API's: ZSTD_decompress() and ZSTD_isError()
 		// We only use two Zstd API's: ZSTD_decompress() and ZSTD_isError()
-		#include "../zstd/zstd.h"
+		#include <zstd.h>
 	#endif
 	#endif
 #endif
 #endif