diff --git a/SConstruct b/SConstruct index f2f1ea57f3..a6767e6a25 100644 --- a/SConstruct +++ b/SConstruct @@ -171,6 +171,7 @@ opts.Add('builtin_pcre2', "Use the builtin pcre2 library (yes/no)", 'yes') opts.Add('builtin_recast', "Use the builtin recast library (yes/no)", 'yes') opts.Add('builtin_squish', "Use the builtin squish library (yes/no)", 'yes') opts.Add('builtin_zlib', "Use the builtin zlib library (yes/no)", 'yes') +opts.Add('builtin_zstd', "Use the builtin zstd library (yes/no)", 'yes') # Environment setup opts.Add("CXX", "C++ compiler") diff --git a/core/SCsub b/core/SCsub index c1e57f6840..e78fe185a9 100644 --- a/core/SCsub +++ b/core/SCsub @@ -83,24 +83,8 @@ thirdparty_minizip_sources = [ thirdparty_minizip_sources = [thirdparty_minizip_dir + file for file in thirdparty_minizip_sources] env.add_source_files(env.core_sources, thirdparty_minizip_sources) -thirdparty_zstd_dir = "#thirdparty/zstd/" -thirdparty_zstd_sources = [ - "common/entropy_common.c", - "common/error_private.c", - "common/fse_decompress.c", - "common/pool.c", - "common/threading.c", - "common/xxhash.c", - "common/zstd_common.c", - "compress/fse_compress.c", - "compress/huf_compress.c", - "compress/zstd_compress.c", - "compress/zstdmt_compress.c", - "decompress/huf_decompress.c", - "decompress/zstd_decompress.c", -] -thirdparty_zstd_sources = [thirdparty_zstd_dir + file for file in thirdparty_zstd_sources] -env.add_source_files(env.core_sources, thirdparty_zstd_sources) +if "builtin_zstd" in env and env["builtin_zstd"] == "yes": + SConscript("#thirdparty/zstd/SCsub") # Godot's own sources @@ -123,5 +107,4 @@ SConscript('helper/SCsub') # Build it all as a library lib = env.Library("core", env.core_sources) env.Prepend(LIBS=[lib]) -env.Append(CPPPATH=["#thirdparty/zstd", "#thirdparty/zstd/common"]) Export('env') diff --git a/core/io/compression.cpp b/core/io/compression.cpp index 44fa65e11d..fbe97e54c7 100644 --- a/core/io/compression.cpp +++ b/core/io/compression.cpp @@ -33,9 +33,9 @@ #include "zip_io.h" #include "thirdparty/misc/fastlz.h" -#include "thirdparty/zstd/zstd.h" #include +#include int Compression::compress(uint8_t *p_dst, const uint8_t *p_src, int p_src_size, Mode p_mode) { diff --git a/platform/server/detect.py b/platform/server/detect.py index 2bb4b59e94..60c054713e 100644 --- a/platform/server/detect.py +++ b/platform/server/detect.py @@ -98,6 +98,9 @@ def configure(env): if (env['builtin_squish'] == 'no' and env["tools"] == "yes"): env.ParseConfig('pkg-config libsquish --cflags --libs') + if env['builtin_zstd'] == 'no': + env.ParseConfig('pkg-config libzstd --cflags --libs') + # Sound and video libraries # Keep the order as it triggers chained dependencies (ogg needed by others, etc.) diff --git a/platform/x11/detect.py b/platform/x11/detect.py index efd388e44f..b47d943174 100644 --- a/platform/x11/detect.py +++ b/platform/x11/detect.py @@ -167,6 +167,9 @@ def configure(env): if (env['builtin_squish'] == 'no' and env["tools"] == "yes"): env.ParseConfig('pkg-config libsquish --cflags --libs') + if env['builtin_zstd'] == 'no': + env.ParseConfig('pkg-config libzstd --cflags --libs') + # Sound and video libraries # Keep the order as it triggers chained dependencies (ogg needed by others, etc.) diff --git a/thirdparty/zstd/SCsub b/thirdparty/zstd/SCsub new file mode 100644 index 0000000000..e8be1aaf44 --- /dev/null +++ b/thirdparty/zstd/SCsub @@ -0,0 +1,23 @@ +#!/usr/bin/env python + +Import('env') + +thirdparty_zstd_dir = "#thirdparty/zstd/" +thirdparty_zstd_sources = [ + "common/entropy_common.c", + "common/error_private.c", + "common/fse_decompress.c", + "common/pool.c", + "common/threading.c", + "common/xxhash.c", + "common/zstd_common.c", + "compress/fse_compress.c", + "compress/huf_compress.c", + "compress/zstd_compress.c", + "compress/zstdmt_compress.c", + "decompress/huf_decompress.c", + "decompress/zstd_decompress.c", +] +thirdparty_zstd_sources = [thirdparty_zstd_dir + file for file in thirdparty_zstd_sources] +env.add_source_files(env.core_sources, thirdparty_zstd_sources) +env.Append(CPPPATH=["#thirdparty/zstd", "#thirdparty/zstd/common"])