Quellcode durchsuchen

Linux: Allow unbundling brotli to use system library

Rémi Verschelde vor 2 Jahren
Ursprung
Commit
153c4a4c4f
4 geänderte Dateien mit 9 neuen und 5 gelöschten Zeilen
  1. 1 0
      SConstruct
  2. 1 1
      core/SCsub
  3. 4 4
      core/io/compression.cpp
  4. 3 0
      platform/linuxbsd/detect.py

+ 1 - 0
SConstruct

@@ -222,6 +222,7 @@ opts.Add(BoolVariable("use_precise_math_checks", "Math checks use very precise e
 opts.Add(BoolVariable("scu_build", "Use single compilation unit build", False))
 
 # Thirdparty libraries
+opts.Add(BoolVariable("builtin_brotli", "Use the built-in Brotli library", True))
 opts.Add(BoolVariable("builtin_certs", "Use the built-in SSL certificates bundles", True))
 opts.Add(BoolVariable("builtin_embree", "Use the built-in Embree library", True))
 opts.Add(BoolVariable("builtin_enet", "Use the built-in ENet library", True))

+ 1 - 1
core/SCsub

@@ -65,7 +65,7 @@ thirdparty_misc_sources = [thirdparty_misc_dir + file for file in thirdparty_mis
 env_thirdparty.add_source_files(thirdparty_obj, thirdparty_misc_sources)
 
 # Brotli
-if env["brotli"]:
+if env["brotli"] and env["builtin_brotli"]:
     thirdparty_brotli_dir = "#thirdparty/brotli/"
     thirdparty_brotli_sources = [
         "common/constants.c",

+ 4 - 4
core/io/compression.cpp

@@ -35,13 +35,13 @@
 
 #include "thirdparty/misc/fastlz.h"
 
-#ifdef BROTLI_ENABLED
-#include "thirdparty/brotli/include/brotli/decode.h"
-#endif
-
 #include <zlib.h>
 #include <zstd.h>
 
+#ifdef BROTLI_ENABLED
+#include <brotli/decode.h>
+#endif
+
 int Compression::compress(uint8_t *p_dst, const uint8_t *p_src, int p_src_size, Mode p_mode) {
 	switch (p_mode) {
 		case MODE_BROTLI: {

+ 3 - 0
platform/linuxbsd/detect.py

@@ -240,6 +240,9 @@ def configure(env: "Environment"):
     if not env["builtin_zstd"]:
         env.ParseConfig("pkg-config libzstd --cflags --libs")
 
+    if env["brotli"] and not env["builtin_brotli"]:
+        env.ParseConfig("pkg-config libbrotlicommon libbrotlidec --cflags --libs")
+
     # Sound and video libraries
     # Keep the order as it triggers chained dependencies (ogg needed by others, etc.)