aboutsummaryrefslogtreecommitdiffhomepage
path: root/cmake
diff options
context:
space:
mode:
authorJuan Ramos <[email protected]>2022-11-04 12:33:15 -0600
committerJuan Ramos <[email protected]>2022-11-07 10:54:57 -0700
commit91388ba10409c3a3bf5517de5fed7f2d989930f9 (patch)
treeaa631d25b10c083d7d8505339c6562d18c83eaf2 /cmake
parent52b7c620a5403241aa62c0cd3388384245a8b094 (diff)
downloadVulkan-Headers-91388ba10409c3a3bf5517de5fed7f2d989930f9.tar.gz
Vulkan-Headers-91388ba10409c3a3bf5517de5fed7f2d989930f9.zip
cmake: Get Vulkan Version
Extract the vulkan header version for CMake usage
Diffstat (limited to 'cmake')
-rw-r--r--cmake/version.cmake44
1 files changed, 44 insertions, 0 deletions
diff --git a/cmake/version.cmake b/cmake/version.cmake
new file mode 100644
index 0000000..6bf1eb3
--- /dev/null
+++ b/cmake/version.cmake
@@ -0,0 +1,44 @@
+# ~~~
+# Copyright (c) 2022 LunarG, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ~~~
+
+# Written as a function to minimize variable scope
+# Only VK_VERSION_STRING will be returned to the PARENT_SCOPE
+function(vlk_get_header_version)
+ set(vulkan_core_header_file "${CMAKE_CURRENT_SOURCE_DIR}/include/vulkan/vulkan_core.h")
+ if (NOT EXISTS ${vulkan_core_header_file})
+ message(FATAL_ERROR "Couldn't find vulkan_core.h!")
+ endif()
+
+ file(READ ${vulkan_core_header_file} ver)
+
+ # Get the major/minor version
+ if (ver MATCHES "#define[ ]+VK_HEADER_VERSION_COMPLETE[ ]+VK_MAKE_API_VERSION\\([ ]*[0-9]+,[ ]*([0-9]+),[ ]*([0-9]+),[ ]*VK_HEADER_VERSION[ ]*\\)")
+ set(VK_VERSION_MAJOR "${CMAKE_MATCH_1}")
+ set(VK_VERSION_MINOR "${CMAKE_MATCH_2}")
+ else()
+ message(FATAL_ERROR "Couldn't get major/minor version")
+ endif()
+
+ # Get the patch version
+ if (ver MATCHES "#define[ ]+VK_HEADER_VERSION[ ]+([0-9]+)")
+ set(VK_HEADER_VERSION "${CMAKE_MATCH_1}")
+ else()
+ message(FATAL_ERROR "Couldn't get the patch version")
+ endif()
+
+ set(VK_VERSION_STRING "${VK_VERSION_MAJOR}.${VK_VERSION_MINOR}.${VK_HEADER_VERSION}" PARENT_SCOPE)
+endfunction()
+vlk_get_header_version()