Переглянути джерело

Enable building against system zstd.

Elliott Sales de Andrade 8 роки тому
батько
коміт
a408388623
6 змінених файлів з 33 додано та 20 видалено
  1. 1 0
      SConstruct
  2. 2 19
      core/SCsub
  3. 1 1
      core/io/compression.cpp
  4. 3 0
      platform/server/detect.py
  5. 3 0
      platform/x11/detect.py
  6. 23 0
      thirdparty/zstd/SCsub

+ 1 - 0
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")

+ 2 - 19
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')

+ 1 - 1
core/io/compression.cpp

@@ -33,9 +33,9 @@
 #include "zip_io.h"
 
 #include "thirdparty/misc/fastlz.h"
-#include "thirdparty/zstd/zstd.h"
 
 #include <zlib.h>
+#include <zstd.h>
 
 int Compression::compress(uint8_t *p_dst, const uint8_t *p_src, int p_src_size, Mode p_mode) {
 

+ 3 - 0
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.)
 

+ 3 - 0
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.)
 

+ 23 - 0
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"])