Browse Source

Linux: Allow unbundling brotli to use system library

Rémi Verschelde 2 years ago
parent
commit
153c4a4c4f
4 changed files with 9 additions and 5 deletions
  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))
 opts.Add(BoolVariable("scu_build", "Use single compilation unit build", False))
 
 
 # Thirdparty libraries
 # 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_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_embree", "Use the built-in Embree library", True))
 opts.Add(BoolVariable("builtin_enet", "Use the built-in ENet 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)
 env_thirdparty.add_source_files(thirdparty_obj, thirdparty_misc_sources)
 
 
 # Brotli
 # Brotli
-if env["brotli"]:
+if env["brotli"] and env["builtin_brotli"]:
     thirdparty_brotli_dir = "#thirdparty/brotli/"
     thirdparty_brotli_dir = "#thirdparty/brotli/"
     thirdparty_brotli_sources = [
     thirdparty_brotli_sources = [
         "common/constants.c",
         "common/constants.c",

+ 4 - 4
core/io/compression.cpp

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

+ 3 - 0
platform/linuxbsd/detect.py

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