浏览代码

Merge pull request #22503 from akien-mga/scons-core

SCons: Build core/ in its own environment, move Zlib and Zstd build in core/
Rémi Verschelde 7 年之前
父节点
当前提交
9197a55f7a
共有 8 个文件被更改,包括 70 次插入80 次删除
  1. 70 13
      core/SCsub
  2. 0 2
      core/bind/SCsub
  3. 0 3
      core/io/SCsub
  4. 0 2
      core/math/SCsub
  5. 0 2
      core/os/SCsub
  6. 0 3
      drivers/SCsub
  7. 0 26
      drivers/zlib/SCsub
  8. 0 29
      thirdparty/zstd/SCsub

+ 70 - 13
core/SCsub

@@ -8,7 +8,6 @@ from platform_methods import run_in_subprocess
 
 env.core_sources = []
 
-
 # Generate global defaults
 gd_call = ""
 gd_inc = ""
@@ -55,10 +54,13 @@ with open("script_encryption_key.gen.cpp", "w") as f:
     f.write("#include \"core/project_settings.h\"\nuint8_t script_encryption_key[32]={" + txt + "};\n")
 
 
-# Add required thirdparty code. Header paths are hardcoded, we don't need to append
+# Add required thirdparty code.
+env_thirdparty = env.Clone()
+
+# Misc thirdparty code: header paths are hardcoded, we don't need to append
 # to the include path (saves a few chars on the compiler invocation for touchy MSVC...)
-thirdparty_dir = "#thirdparty/misc/"
-thirdparty_sources = [
+thirdparty_misc_dir = "#thirdparty/misc/"
+thirdparty_misc_sources = [
     # C sources
     "base64.c",
     "fastlz.c",
@@ -72,10 +74,34 @@ thirdparty_sources = [
     "pcg.cpp",
     "triangulator.cpp",
 ]
-thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
-env.add_source_files(env.core_sources, thirdparty_sources)
-
-# Minizip library, can be unbundled in theory
+thirdparty_misc_sources = [thirdparty_misc_dir + file for file in thirdparty_misc_sources]
+env_thirdparty.add_source_files(env.core_sources, thirdparty_misc_sources)
+
+# Zlib library, can be unbundled
+if env['builtin_zlib']:
+	thirdparty_zlib_dir = "#thirdparty/zlib/"
+	thirdparty_zlib_sources = [
+		"adler32.c",
+		"compress.c",
+		"crc32.c",
+		"deflate.c",
+		"infback.c",
+		"inffast.c",
+		"inflate.c",
+		"inftrees.c",
+		"trees.c",
+		"uncompr.c",
+		"zutil.c",
+	]
+	thirdparty_zlib_sources = [thirdparty_zlib_dir + file for file in thirdparty_zlib_sources]
+
+	env_thirdparty.Append(CPPPATH=[thirdparty_zlib_dir])
+	# Needs to be available in main env too
+	env.Append(CPPPATH=[thirdparty_zlib_dir])
+
+	env_thirdparty.add_source_files(env.core_sources, thirdparty_zlib_sources)
+
+# Minizip library, could be unbundled in theory
 # However, our version has some custom modifications, so it won't compile with the system one
 thirdparty_minizip_dir = "#thirdparty/minizip/"
 thirdparty_minizip_sources = [
@@ -84,10 +110,42 @@ thirdparty_minizip_sources = [
     "zip.c",
 ]
 thirdparty_minizip_sources = [thirdparty_minizip_dir + file for file in thirdparty_minizip_sources]
-env.add_source_files(env.core_sources, thirdparty_minizip_sources)
-
-if 'builtin_zstd' in env and env['builtin_zstd']:
-    SConscript("#thirdparty/zstd/SCsub")
+env_thirdparty.add_source_files(env.core_sources, thirdparty_minizip_sources)
+
+# Zstd library, can be unbundled in theory
+# though we currently use some private symbols
+# https://github.com/godotengine/godot/issues/17374
+if env['builtin_zstd']:
+    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/zstd_double_fast.c",
+        "compress/zstd_fast.c",
+        "compress/zstd_lazy.c",
+        "compress/zstd_ldm.c",
+        "compress/zstdmt_compress.c",
+        "compress/zstd_opt.c",
+        "decompress/huf_decompress.c",
+        "decompress/zstd_decompress.c",
+    ]
+    thirdparty_zstd_sources = [thirdparty_zstd_dir + file for file in thirdparty_zstd_sources]
+
+    env_thirdparty.Append(CPPPATH=[thirdparty_zstd_dir, thirdparty_zstd_dir + "common"])
+    env_thirdparty.Append(CCFLAGS="-DZSTD_STATIC_LINKING_ONLY")
+    env.Append(CPPPATH=thirdparty_zstd_dir)
+    # Also needed in main env includes will trigger warnings
+    env.Append(CCFLAGS="-DZSTD_STATIC_LINKING_ONLY")
+
+    env_thirdparty.add_source_files(env.core_sources, thirdparty_zstd_sources)
 
 
 # Godot's own sources
@@ -122,4 +180,3 @@ SConscript('bind/SCsub')
 # Build it all as a library
 lib = env.add_library("core", env.core_sources)
 env.Prepend(LIBS=[lib])
-Export('env')

+ 0 - 2
core/bind/SCsub

@@ -3,5 +3,3 @@
 Import('env')
 
 env.add_source_files(env.core_sources, "*.cpp")
-
-Export('env')

+ 0 - 3
core/io/SCsub

@@ -3,6 +3,3 @@
 Import('env')
 
 env.add_source_files(env.core_sources, "*.cpp")
-
-Export('env')
-

+ 0 - 2
core/math/SCsub

@@ -3,5 +3,3 @@
 Import('env')
 
 env.add_source_files(env.core_sources, "*.cpp")
-
-Export('env')

+ 0 - 2
core/os/SCsub

@@ -3,5 +3,3 @@
 Import('env')
 
 env.add_source_files(env.core_sources, "*.cpp")
-
-Export('env')

+ 0 - 3
drivers/SCsub

@@ -4,9 +4,6 @@ Import('env')
 
 env.drivers_sources = []
 
-if 'builtin_zlib' in env and env['builtin_zlib']:
-    SConscript("zlib/SCsub")
-
 # OS drivers
 SConscript('unix/SCsub')
 SConscript('windows/SCsub')

+ 0 - 26
drivers/zlib/SCsub

@@ -1,26 +0,0 @@
-#!/usr/bin/env python
-
-Import('env')
-
-# Not cloning the env, the includes need to be accessible for core/
-
-# Thirdparty source files
-# No check here as already done in drivers/SCsub
-thirdparty_dir = "#thirdparty/zlib/"
-thirdparty_sources = [
-    "adler32.c",
-    "compress.c",
-    "crc32.c",
-    "deflate.c",
-    "infback.c",
-    "inffast.c",
-    "inflate.c",
-    "inftrees.c",
-    "trees.c",
-    "uncompr.c",
-    "zutil.c",
-]
-thirdparty_sources = [thirdparty_dir + file for file in thirdparty_sources]
-
-env.add_source_files(env.drivers_sources, thirdparty_sources)
-env.Append(CPPPATH=[thirdparty_dir])

+ 0 - 29
thirdparty/zstd/SCsub

@@ -1,29 +0,0 @@
-#!/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/zstd_double_fast.c",
-	"compress/zstd_fast.c",
-	"compress/zstd_lazy.c",
-	"compress/zstd_ldm.c",
-	"compress/zstdmt_compress.c",
-	"compress/zstd_opt.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"])
-env.Append(CCFLAGS="-DZSTD_STATIC_LINKING_ONLY")