mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 13:41:03 +00:00 
			
		
		
		
	 2841144096
			
		
	
	
		2841144096
		
	
	
	
	
		
			
			The commit b5a8055b5c should target GCC builds only as
-flax-vector-conversions has different behaviour in Clang and is
currently making the build fail.
Signed-off-by: Filipe Rinaldi <filipe.rinaldi@gmail.com>
		
	
			
		
			
				
	
	
		
			126 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
	
		
			4.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/env python
 | |
| 
 | |
| 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/filename.cpp",
 | |
|         "common/sys/library.cpp",
 | |
|         "common/sys/thread.cpp",
 | |
|         "common/sys/string.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/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",
 | |
|         "kernels/bvh/bvh_intersector_stream_bvh4.cpp",
 | |
|         "kernels/bvh/bvh_intersector_stream_filters.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 not env.msvc:
 | |
|         if env["arch"] in ["x86_64", "x86_32"]:
 | |
|             env_raycast.Append(CCFLAGS=["-msse2", "-mxsave"])
 | |
| 
 | |
|         if env["platform"] == "windows":
 | |
|             env_raycast.Append(CCFLAGS=["-mstackrealign"])
 | |
| 
 | |
|     if env["platform"] == "windows":
 | |
|         if env.msvc:
 | |
|             env.Append(LINKFLAGS=["psapi.lib"])
 | |
|         else:
 | |
|             env.Append(LIBS=["psapi"])
 | |
| 
 | |
|     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)
 |