79a7be6e7d
It's a GNU extension part of glibc since 2.17, and it was also added recently to musl libc. It doesn't seem to be available on *BSD (but also not used there by Vulkan-Loader). Could be made more thorough by doing a test compilation of a file to check for the existence of the function on the host system, but unless we run into actual issues, that's likely overkill.
67 lines
2.4 KiB
Python
67 lines
2.4 KiB
Python
#!/usr/bin/env python
|
|
|
|
Import('env')
|
|
|
|
env.add_source_files(env.drivers_sources, "*.cpp")
|
|
|
|
if env['builtin_vulkan']:
|
|
# Use bundled Vulkan headers
|
|
thirdparty_dir = "#thirdparty/vulkan"
|
|
env.Prepend(CPPPATH=[thirdparty_dir, thirdparty_dir + "/include", thirdparty_dir + "/loader"])
|
|
|
|
# Build Vulkan loader library
|
|
env_thirdparty = env.Clone()
|
|
env_thirdparty.disable_warnings()
|
|
|
|
loader_sources = [
|
|
"cJSON.c",
|
|
"debug_utils.c",
|
|
"dev_ext_trampoline.c",
|
|
"loader.c",
|
|
"murmurhash.c",
|
|
"phys_dev_ext.c",
|
|
"trampoline.c",
|
|
"unknown_ext_chain.c",
|
|
"wsi.c",
|
|
"extension_manual.c",
|
|
]
|
|
vma_sources = [thirdparty_dir + "/vk_mem_alloc.cpp"]
|
|
|
|
if env['platform'] == "windows":
|
|
loader_sources.append("dirent_on_windows.c")
|
|
loader_sources.append("dxgi_loader.c")
|
|
env_thirdparty.AppendUnique(CPPDEFINES=[
|
|
'VK_USE_PLATFORM_WIN32_KHR',
|
|
'VULKAN_NON_CMAKE_BUILD',
|
|
'WIN32_LEAN_AND_MEAN',
|
|
'API_NAME=\\"%s\\"' % 'Vulkan'
|
|
])
|
|
if not env.msvc: # Windows 7+, missing in mingw headers
|
|
env_thirdparty.AppendUnique(CPPDEFINES=[
|
|
"CM_GETIDLIST_FILTER_CLASS=0x00000200",
|
|
"CM_GETIDLIST_FILTER_PRESENT=0x00000100"
|
|
])
|
|
elif env['platform'] == "osx":
|
|
env_thirdparty.AppendUnique(CPPDEFINES=[
|
|
'VK_USE_PLATFORM_MACOS_MVK',
|
|
'VULKAN_NON_CMAKE_BUILD',
|
|
'SYSCONFDIR=\\"%s\\"' % '/etc',
|
|
'FALLBACK_DATA_DIRS=\\"%s\\"' % '/usr/local/share:/usr/share',
|
|
'FALLBACK_CONFIG_DIRS=\\"%s\\"' % '/etc/xdg'
|
|
])
|
|
elif env['platform'] == "x11":
|
|
env_thirdparty.AppendUnique(CPPDEFINES=[
|
|
'VK_USE_PLATFORM_XLIB_KHR',
|
|
'VULKAN_NON_CMAKE_BUILD',
|
|
'SYSCONFDIR=\\"%s\\"' % '/etc',
|
|
'FALLBACK_DATA_DIRS=\\"%s\\"' % '/usr/local/share:/usr/share',
|
|
'FALLBACK_CONFIG_DIRS=\\"%s\\"' % '/etc/xdg'
|
|
])
|
|
import platform
|
|
if (platform.system() == "Linux"):
|
|
# In glibc since 2.17 and musl libc since 1.1.24. Used by loader.c.
|
|
env_thirdparty.AppendUnique(CPPDEFINES=['HAVE_SECURE_GETENV'])
|
|
|
|
loader_sources = [thirdparty_dir + "/loader/" + file for file in loader_sources]
|
|
env_thirdparty.add_source_files(env.drivers_sources, loader_sources)
|
|
env_thirdparty.add_source_files(env.drivers_sources, vma_sources)
|