2019-06-07 16:07:57 +00:00
|
|
|
#!/usr/bin/env python
|
|
|
|
|
2020-03-30 06:28:32 +00:00
|
|
|
Import("env")
|
2019-06-07 16:07:57 +00:00
|
|
|
|
2020-12-17 15:01:36 +00:00
|
|
|
thirdparty_obj = []
|
2021-08-12 11:24:54 +00:00
|
|
|
thirdparty_dir = "#thirdparty/vulkan"
|
|
|
|
thirdparty_volk_dir = "#thirdparty/volk"
|
2019-06-07 16:07:57 +00:00
|
|
|
|
2021-08-12 11:24:54 +00:00
|
|
|
if env["use_volk"]:
|
|
|
|
env.AppendUnique(CPPDEFINES=["USE_VOLK"])
|
|
|
|
env.Prepend(CPPPATH=[thirdparty_volk_dir])
|
|
|
|
|
|
|
|
if env["platform"] == "android" and not env["use_volk"]:
|
2020-03-05 18:00:28 +00:00
|
|
|
# Use NDK Vulkan headers
|
2021-08-12 11:24:54 +00:00
|
|
|
ndk_vulkan_dir = env["ANDROID_NDK_ROOT"] + "/sources/third_party/vulkan/src"
|
2020-03-27 16:30:18 +00:00
|
|
|
thirdparty_includes = [
|
2021-08-12 11:24:54 +00:00
|
|
|
ndk_vulkan_dir,
|
|
|
|
ndk_vulkan_dir + "/include",
|
|
|
|
ndk_vulkan_dir + "/layers",
|
|
|
|
ndk_vulkan_dir + "/layers/generated",
|
2020-03-27 16:30:18 +00:00
|
|
|
]
|
2020-03-05 18:00:28 +00:00
|
|
|
env.Prepend(CPPPATH=thirdparty_includes)
|
2021-08-12 11:24:54 +00:00
|
|
|
else:
|
2019-08-05 09:48:54 +00:00
|
|
|
# Use bundled Vulkan headers
|
2021-07-22 13:29:24 +00:00
|
|
|
env.Prepend(CPPPATH=[thirdparty_dir, thirdparty_dir + "/include"])
|
2020-07-26 11:20:08 +00:00
|
|
|
|
2021-08-12 11:24:54 +00:00
|
|
|
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)
|
2020-12-17 15:01:36 +00:00
|
|
|
|
|
|
|
|
|
|
|
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)
|