forked from hertog/godot-module-template
		
	
		
			
				
	
	
		
			66 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/env python
 | |
| from misc.utility.scons_hints import *
 | |
| 
 | |
| Import("env")
 | |
| 
 | |
| thirdparty_obj = []
 | |
| thirdparty_dir = "#thirdparty/vulkan"
 | |
| thirdparty_volk_dir = "#thirdparty/volk"
 | |
| 
 | |
| # Use bundled Vulkan headers
 | |
| env.Prepend(CPPEXTPATH=[thirdparty_dir, thirdparty_dir + "/include"])
 | |
| 
 | |
| if env["use_volk"]:
 | |
|     env.AppendUnique(CPPDEFINES=["USE_VOLK"])
 | |
|     env.Prepend(CPPEXTPATH=[thirdparty_volk_dir])
 | |
| 
 | |
| if env["platform"] == "android":
 | |
|     env.AppendUnique(CPPDEFINES=["VK_USE_PLATFORM_ANDROID_KHR"])
 | |
| elif env["platform"] == "ios":
 | |
|     env.AppendUnique(CPPDEFINES=["VK_USE_PLATFORM_IOS_MVK", "VK_USE_PLATFORM_METAL_EXT"])
 | |
| elif env["platform"] == "linuxbsd":
 | |
|     if env["x11"]:
 | |
|         env.AppendUnique(CPPDEFINES=["VK_USE_PLATFORM_XLIB_KHR"])
 | |
|     if env["wayland"]:
 | |
|         env.AppendUnique(CPPDEFINES=["VK_USE_PLATFORM_WAYLAND_KHR"])
 | |
| elif env["platform"] == "macos":
 | |
|     env.AppendUnique(CPPDEFINES=["VK_USE_PLATFORM_MACOS_MVK", "VK_USE_PLATFORM_METAL_EXT"])
 | |
| elif env["platform"] == "windows":
 | |
|     env.AppendUnique(CPPDEFINES=["VK_USE_PLATFORM_WIN32_KHR"])
 | |
| 
 | |
| # Build Vulkan memory allocator and volk
 | |
| env_thirdparty_vma = env.Clone()
 | |
| env_thirdparty_vma.disable_warnings()
 | |
| thirdparty_sources_vma = [thirdparty_dir + "/vk_mem_alloc.cpp"]
 | |
| 
 | |
| if env["use_volk"]:
 | |
|     env_thirdparty_vma.AppendUnique(CPPDEFINES=["VMA_STATIC_VULKAN_FUNCTIONS=1"])
 | |
|     env_thirdparty_volk = env.Clone()
 | |
|     env_thirdparty_volk.disable_warnings()
 | |
| 
 | |
|     thirdparty_sources_volk = [thirdparty_volk_dir + "/volk.c"]
 | |
|     env_thirdparty_volk.add_source_files(thirdparty_obj, thirdparty_sources_volk)
 | |
| elif env["platform"] == "android":
 | |
|     # Our current NDK version only provides old Vulkan headers,
 | |
|     # so we have to limit VMA.
 | |
|     env_thirdparty_vma.AppendUnique(CPPDEFINES=["VMA_VULKAN_VERSION=1000000"])
 | |
| elif env["platform"] == "macos" or env["platform"] == "ios":
 | |
|     # MoltenVK supports only Vulkan 1.1 API, limit VMA to the same version.
 | |
|     env_thirdparty_vma.AppendUnique(CPPDEFINES=["VMA_VULKAN_VERSION=1001000"])
 | |
| 
 | |
| env_thirdparty_vma.add_source_files(thirdparty_obj, thirdparty_sources_vma)
 | |
| 
 | |
| 
 | |
| env.drivers_sources += thirdparty_obj
 | |
| 
 | |
| 
 | |
| # Godot source files
 | |
| 
 | |
| driver_obj = []
 | |
| 
 | |
| env.add_source_files(driver_obj, "*.cpp")
 | |
| env.drivers_sources += driver_obj
 | |
| 
 | |
| # Needed to force rebuilding the driver files when the thirdparty code is updated.
 | |
| env.Depends(driver_obj, thirdparty_obj)
 | 
