Skip to content

Commit

Permalink
SCons: Build core's thirdparty code in own environment
Browse files Browse the repository at this point in the history
Also move Zlib and Zstd's build instructions to core/SCsub.
  • Loading branch information
akien-mga committed Sep 28, 2018
1 parent c7e646c commit a9e17af
Show file tree
Hide file tree
Showing 8 changed files with 70 additions and 80 deletions.
83 changes: 70 additions & 13 deletions core/SCsub
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ from platform_methods import run_in_subprocess

env.core_sources = []


# Generate global defaults
gd_call = ""
gd_inc = ""
Expand Down Expand Up @@ -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",
Expand All @@ -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 = [
Expand All @@ -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
Expand Down Expand Up @@ -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')
2 changes: 0 additions & 2 deletions core/bind/SCsub
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,3 @@
Import('env')

env.add_source_files(env.core_sources, "*.cpp")

Export('env')
3 changes: 0 additions & 3 deletions core/io/SCsub
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,3 @@
Import('env')

env.add_source_files(env.core_sources, "*.cpp")

Export('env')

2 changes: 0 additions & 2 deletions core/math/SCsub
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,3 @@
Import('env')

env.add_source_files(env.core_sources, "*.cpp")

Export('env')
2 changes: 0 additions & 2 deletions core/os/SCsub
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,3 @@
Import('env')

env.add_source_files(env.core_sources, "*.cpp")

Export('env')
3 changes: 0 additions & 3 deletions drivers/SCsub
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand Down
26 changes: 0 additions & 26 deletions drivers/zlib/SCsub

This file was deleted.

29 changes: 0 additions & 29 deletions thirdparty/zstd/SCsub

This file was deleted.

0 comments on commit a9e17af

Please sign in to comment.