diff --git a/SConstruct b/SConstruct index f65e6bab04b..7e706e8e73d 100644 --- a/SConstruct +++ b/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)) diff --git a/core/SCsub b/core/SCsub index a0176f6c334..7e9cd97351b 100644 --- a/core/SCsub +++ b/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", diff --git a/core/io/compression.cpp b/core/io/compression.cpp index ac4a6375973..e36fb0afa4f 100644 --- a/core/io/compression.cpp +++ b/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 #include +#ifdef BROTLI_ENABLED +#include +#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: { diff --git a/platform/linuxbsd/detect.py b/platform/linuxbsd/detect.py index 9faa73d6d24..6bde9233c26 100644 --- a/platform/linuxbsd/detect.py +++ b/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.)