mirror of
https://github.com/godotengine/godot.git
synced 2025-03-07 23:32:58 +08:00
Setting it only for release templates on Windows and macOS was inconsistent, and Jolt requires it as a minimum. Drop the `-mxsave` flag from the raycast module, this doesn't seem to be used explicitly by Embree, and unnecessarily makes our config and baseline muddy.
121 lines
4.0 KiB
Python
121 lines
4.0 KiB
Python
#!/usr/bin/env python
|
|
from misc.utility.scons_hints import *
|
|
|
|
Import("env")
|
|
Import("env_modules")
|
|
|
|
env_raycast = env_modules.Clone()
|
|
|
|
# Thirdparty source files
|
|
|
|
thirdparty_obj = []
|
|
|
|
if env["builtin_embree"]:
|
|
thirdparty_dir = "#thirdparty/embree/"
|
|
|
|
embree_src = [
|
|
"common/sys/sysinfo.cpp",
|
|
"common/sys/alloc.cpp",
|
|
"common/sys/estring.cpp",
|
|
"common/sys/filename.cpp",
|
|
"common/sys/library.cpp",
|
|
"common/sys/thread.cpp",
|
|
"common/sys/regression.cpp",
|
|
"common/sys/mutex.cpp",
|
|
"common/sys/condition.cpp",
|
|
"common/sys/barrier.cpp",
|
|
"common/math/constants.cpp",
|
|
"common/simd/sse.cpp",
|
|
"common/lexers/stringstream.cpp",
|
|
"common/lexers/tokenstream.cpp",
|
|
"common/tasking/taskschedulerinternal.cpp",
|
|
"kernels/common/device.cpp",
|
|
"kernels/common/stat.cpp",
|
|
"kernels/common/acceln.cpp",
|
|
"kernels/common/accelset.cpp",
|
|
"kernels/common/state.cpp",
|
|
"kernels/common/rtcore.cpp",
|
|
"kernels/common/rtcore_builder.cpp",
|
|
"kernels/common/scene.cpp",
|
|
"kernels/common/scene_verify.cpp",
|
|
"kernels/common/alloc.cpp",
|
|
"kernels/common/geometry.cpp",
|
|
"kernels/common/scene_triangle_mesh.cpp",
|
|
"kernels/geometry/primitive4.cpp",
|
|
"kernels/builders/primrefgen.cpp",
|
|
"kernels/bvh/bvh.cpp",
|
|
"kernels/bvh/bvh_statistics.cpp",
|
|
"kernels/bvh/bvh4_factory.cpp",
|
|
"kernels/bvh/bvh8_factory.cpp",
|
|
"kernels/bvh/bvh_collider.cpp",
|
|
"kernels/bvh/bvh_rotate.cpp",
|
|
"kernels/bvh/bvh_refit.cpp",
|
|
"kernels/bvh/bvh_builder.cpp",
|
|
"kernels/bvh/bvh_builder_morton.cpp",
|
|
"kernels/bvh/bvh_builder_sah.cpp",
|
|
"kernels/bvh/bvh_builder_sah_spatial.cpp",
|
|
"kernels/bvh/bvh_builder_sah_mb.cpp",
|
|
"kernels/bvh/bvh_builder_twolevel.cpp",
|
|
"kernels/bvh/bvh_intersector1_bvh4.cpp",
|
|
"kernels/bvh/bvh_intersector_hybrid4_bvh4.cpp",
|
|
]
|
|
|
|
thirdparty_sources = [thirdparty_dir + file for file in embree_src]
|
|
|
|
env_raycast.Prepend(CPPPATH=[thirdparty_dir, thirdparty_dir + "include"])
|
|
env_raycast.Append(CPPDEFINES=["EMBREE_TARGET_SSE2", "EMBREE_LOWEST_ISA", "TASKING_INTERNAL"])
|
|
env_raycast.AppendUnique(CPPDEFINES=["NDEBUG"]) # No assert() even in debug builds.
|
|
|
|
if env["platform"] == "windows":
|
|
if env.msvc:
|
|
env.Append(LINKFLAGS=["psapi.lib"])
|
|
else:
|
|
env.Append(LIBS=["psapi"])
|
|
env_raycast.Append(CCFLAGS=["-mstackrealign"])
|
|
|
|
if env.msvc: # Disable bogus warning about intentional struct padding.
|
|
env_raycast.Append(CCFLAGS=["/wd4324"])
|
|
|
|
env_thirdparty = env_raycast.Clone()
|
|
env_thirdparty.force_optimization_on_debug()
|
|
env_thirdparty.disable_warnings()
|
|
env_thirdparty.add_source_files(thirdparty_obj, thirdparty_sources)
|
|
|
|
if env["arch"] != "x86_64" or env.msvc:
|
|
# Embree needs those, it will automatically use SSE2NEON in ARM
|
|
env_thirdparty.Append(CPPDEFINES=["__SSE2__", "__SSE__"])
|
|
|
|
if env["platform"] == "web":
|
|
env_thirdparty.Append(CXXFLAGS=["-msimd128"])
|
|
|
|
if not env.msvc:
|
|
# Flags synced with upstream gnu.cmake.
|
|
if env["arch"] == "arm64" and env["platform"] == "linuxbsd" and not env["use_llvm"]:
|
|
env_thirdparty.Append(CXXFLAGS=["-flax-vector-conversions"])
|
|
|
|
env_thirdparty.Append(
|
|
CXXFLAGS=[
|
|
"-fno-strict-overflow",
|
|
"-fno-delete-null-pointer-checks",
|
|
"-fwrapv",
|
|
"-fsigned-char",
|
|
"-fno-strict-aliasing",
|
|
"-fno-tree-vectorize",
|
|
"-fvisibility=hidden",
|
|
"-fvisibility-inlines-hidden",
|
|
]
|
|
)
|
|
|
|
env.modules_sources += thirdparty_obj
|
|
|
|
|
|
# Godot source files
|
|
|
|
module_obj = []
|
|
|
|
env_raycast.add_source_files(module_obj, "*.cpp")
|
|
env.modules_sources += module_obj
|
|
|
|
# Needed to force rebuilding the module files when the thirdparty library is updated.
|
|
env.Depends(module_obj, thirdparty_obj)
|