554312a3b2
We no longer build the Vulkan loader, and volk lets us load it dynamically. Roblox uses volk on Android so it should work well for us too.
54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
#!/usr/bin/env python
|
|
|
|
Import("env")
|
|
|
|
thirdparty_obj = []
|
|
thirdparty_dir = "#thirdparty/vulkan"
|
|
thirdparty_volk_dir = "#thirdparty/volk"
|
|
|
|
# Use bundled Vulkan headers
|
|
env.Prepend(CPPPATH=[thirdparty_dir, thirdparty_dir + "/include"])
|
|
|
|
if env["use_volk"]:
|
|
env.AppendUnique(CPPDEFINES=["USE_VOLK"])
|
|
env.Prepend(CPPPATH=[thirdparty_volk_dir])
|
|
|
|
if env["platform"] == "android":
|
|
env.AppendUnique(CPPDEFINES=["VK_USE_PLATFORM_ANDROID_KHR"])
|
|
elif env["platform"] == "iphone":
|
|
env.AppendUnique(CPPDEFINES=["VK_USE_PLATFORM_IOS_MVK"])
|
|
elif env["platform"] == "linuxbsd":
|
|
env.AppendUnique(CPPDEFINES=["VK_USE_PLATFORM_XLIB_KHR"])
|
|
elif env["platform"] == "osx":
|
|
env.AppendUnique(CPPDEFINES=["VK_USE_PLATFORM_MACOS_MVK"])
|
|
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)
|
|
|
|
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)
|