diff --git a/configure.ac b/configure.ac index 58672c51..8c82741a 100644 --- a/configure.ac +++ b/configure.ac @@ -61,6 +61,8 @@ AS_IF([test "x$ac_cv_header_spirv_unified1_GLSL_std_450_h" != "xyes" \ -a "x$ac_cv_header_vulkan_GLSL_std_450_h" != "xyes"], [AC_MSG_ERROR([GLSL.std.450.h not found.])]) +VKD3D_CHECK_VULKAN_HEADER_VERSION([84], [AC_MSG_ERROR([Vulkan headers are too old, 1.1.84 is required.])]) + dnl Check for libraries m4_ifdef([PKG_PROG_PKG_CONFIG], [PKG_PROG_PKG_CONFIG], [m4_fatal([pkg-config autoconf macros not found.])]) diff --git a/m4/vulkan.m4 b/m4/vulkan.m4 new file mode 100644 index 00000000..6ef5818c --- /dev/null +++ b/m4/vulkan.m4 @@ -0,0 +1,18 @@ +dnl VKD3D_CHECK_VULKAN_HEADER_VERSION +AC_DEFUN([VKD3D_CHECK_VULKAN_HEADER_VERSION], + +[AS_VAR_PUSHDEF([vkd3d_vk_version], vkd3d_cv_vk_header_version_[[$1]]) + +AC_CACHE_CHECK([whether VK_HEADER_VERSION >= [$1]], vkd3d_vk_version, + [AC_LINK_IFELSE( + [AC_LANG_SOURCE([#include + #if VK_HEADER_VERSION < $1 + #error "Vulkan headers are too old" + #endif + int main(void) { return 0; }])], + [AS_VAR_SET([vkd3d_vk_version], [yes])], + [AS_VAR_SET([vkd3d_vk_version], [no])])]) + +AS_IF([test "x$vkd3d_vk_version" != "xyes"], [$2]) + +AS_VAR_POPDEF([vkd3d_vk_version])])