aboutsummaryrefslogtreecommitdiff
path: root/tools/Vulkan-Tools/vulkaninfo/CMakeLists.txt
diff options
context:
space:
mode:
authorLizzy Fleckenstein <lizzy@vlhl.dev>2026-03-31 01:30:36 +0200
committerLizzy Fleckenstein <lizzy@vlhl.dev>2026-03-31 01:30:36 +0200
commit8e2ff15dbd3fe70fe2b52397b1eaba3fe2d7a5e8 (patch)
tree925fa596210d1a1f01e00e0743a643f4552e7a7a /tools/Vulkan-Tools/vulkaninfo/CMakeLists.txt
parent1f17b4df127bd280e50d93a46ae93df704adc2b0 (diff)
parent90bf5bc4fd8bea0d300f6564af256a51a34124b8 (diff)
downloadusermoji-8e2ff15dbd3fe70fe2b52397b1eaba3fe2d7a5e8.tar.xz
add tools/Vulkan-Tools
Diffstat (limited to 'tools/Vulkan-Tools/vulkaninfo/CMakeLists.txt')
-rw-r--r--tools/Vulkan-Tools/vulkaninfo/CMakeLists.txt130
1 files changed, 130 insertions, 0 deletions
diff --git a/tools/Vulkan-Tools/vulkaninfo/CMakeLists.txt b/tools/Vulkan-Tools/vulkaninfo/CMakeLists.txt
new file mode 100644
index 00000000..ed61c89f
--- /dev/null
+++ b/tools/Vulkan-Tools/vulkaninfo/CMakeLists.txt
@@ -0,0 +1,130 @@
+# ~~~
+# Copyright (c) 2018-2023 Valve Corporation
+# Copyright (c) 2018-2023 LunarG, Inc.
+# Copyright (c) 2023-2023 RasterGrid Kft.
+#
+# 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.
+# ~~~
+
+# These variables enable downstream users to customize the CMake targets
+# based on the target API variant (e.g. Vulkan SC)
+set(VULKANINFO_NAME vulkaninfo)
+set(GENERATED generated)
+
+add_executable(vulkaninfo)
+set_target_properties(vulkaninfo PROPERTIES OUTPUT_NAME ${VULKANINFO_NAME})
+
+target_sources(vulkaninfo PRIVATE vulkaninfo.cpp)
+
+# Setup the vulkaninfo.rc file to contain the correct info
+# Optionally uses the VULKANINFO_BUILD_DLL_VERSIONINFO build option to allow setting the exact build version
+# When VULKANINFO_BUILD_DLL_VERSIONINFO is not provided, "Dev Build" is added to the version strings
+if(WIN32)
+ set(VULKANINFO_BUILD_DLL_VERSIONINFO "default" CACHE STRING "Set the version to be used in the vulkaninfo.rc file")
+
+ string(TIMESTAMP CURRENT_YEAR "%Y")
+ set(VULKANINFO_CUR_COPYRIGHT_STR "${CURRENT_YEAR}")
+ if ("$CACHE{VULKANINFO_BUILD_DLL_VERSIONINFO}" STREQUAL "default")
+ message(DEBUG "Setting RC version based on VulkanHeaders Version")
+ set(VULKANINFO_RC_VERSION "${VulkanHeaders_VERSION}")
+ set(VULKANINFO_VER_FILE_VERSION_STR "\"${VULKANINFO_RC_VERSION}.Dev Build\"")
+ set(VULKANINFO_VER_FILE_DESCRIPTION_STR "\"Vulkaninfo - Dev Build\"")
+ else()
+ message(DEBUG "Setting RC version based on VULKANINFO_BUILD_DLL_VERSIONINFO")
+ set(VULKANINFO_RC_VERSION "$CACHE{VULKANINFO_BUILD_DLL_VERSIONINFO}")
+ set(VULKANINFO_VER_FILE_VERSION_STR "\"${VULKANINFO_RC_VERSION}\"")
+ set(VULKANINFO_VER_FILE_DESCRIPTION_STR "\"vulkaninfo\"")
+ endif()
+
+ # RC file wants the value of FILEVERSION to separated by commas
+ string(REPLACE "." ", " VULKANINFO_VER_FILE_VERSION "${VULKANINFO_RC_VERSION}")
+
+ # Configure the file to include the versioning info
+ configure_file(vulkaninfo.rc.in ${CMAKE_CURRENT_BINARY_DIR}/vulkaninfo.rc)
+
+ target_sources(vulkaninfo PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/vulkaninfo.rc)
+endif()
+
+target_include_directories(vulkaninfo PRIVATE
+ ${GENERATED}
+ .
+)
+
+target_compile_definitions(vulkaninfo PRIVATE VK_ENABLE_BETA_EXTENSIONS VK_NO_PROTOTYPES)
+
+if (CMAKE_SYSTEM_NAME MATCHES "Linux|BSD|GNU")
+ option(BUILD_WSI_XCB_SUPPORT "Build XCB WSI support" ON)
+ option(BUILD_WSI_XLIB_SUPPORT "Build Xlib WSI support" ON)
+ option(BUILD_WSI_WAYLAND_SUPPORT "Build Wayland WSI support" ON)
+ option(BUILD_WSI_DIRECTFB_SUPPORT "Build DirectFB WSI support" OFF)
+
+ find_package(PkgConfig REQUIRED QUIET) # Use PkgConfig to find Linux system libraries
+
+ if(BUILD_WSI_XCB_SUPPORT)
+ pkg_check_modules(XCB REQUIRED QUIET IMPORTED_TARGET xcb)
+ target_compile_definitions(vulkaninfo PRIVATE VK_USE_PLATFORM_XCB_KHR)
+ target_link_libraries(vulkaninfo PRIVATE PkgConfig::XCB)
+ endif()
+
+ if(BUILD_WSI_XLIB_SUPPORT)
+ pkg_check_modules(X11 REQUIRED QUIET IMPORTED_TARGET x11)
+ target_compile_definitions(vulkaninfo PRIVATE VK_USE_PLATFORM_XLIB_KHR)
+ target_link_libraries(vulkaninfo PRIVATE PkgConfig::X11)
+ endif()
+
+ if(BUILD_WSI_WAYLAND_SUPPORT)
+ pkg_check_modules(WAYLAND_CLIENT REQUIRED IMPORTED_TARGET wayland-client)
+ target_compile_definitions(vulkaninfo PRIVATE VK_USE_PLATFORM_WAYLAND_KHR)
+ target_link_libraries(vulkaninfo PRIVATE PkgConfig::WAYLAND_CLIENT)
+ endif()
+
+ if(BUILD_WSI_DIRECTFB_SUPPORT)
+ pkg_check_modules(DirectFB REQUIRED QUIET IMPORTED_TARGET directfb)
+ target_compile_definitions(vulkaninfo PRIVATE VK_USE_PLATFORM_DIRECTFB_EXT)
+ target_link_libraries(vulkaninfo PRIVATE PkgConfig::DirectFB)
+ endif()
+ target_compile_definitions(vulkaninfo PRIVATE VK_USE_PLATFORM_DISPLAY)
+endif()
+
+if(APPLE)
+ # We do this so vulkaninfo is linked to an individual library and NOT a framework.
+ target_link_libraries(vulkaninfo PRIVATE "-framework AppKit -framework QuartzCore")
+ target_include_directories(vulkaninfo PRIVATE macOS/vulkaninfo)
+
+ target_sources(vulkaninfo PRIVATE
+ macOS/vulkaninfo/metal_view.mm
+ macOS/vulkaninfo/metal_view.h
+ )
+endif()
+
+target_link_libraries(vulkaninfo PRIVATE
+ Vulkan::Headers
+ ${CMAKE_DL_LIBS}
+)
+
+if(WIN32)
+ target_compile_definitions(vulkaninfo PRIVATE
+ VK_USE_PLATFORM_WIN32_KHR
+ WIN32_LEAN_AND_MEAN
+ _CRT_SECURE_NO_WARNINGS
+ )
+elseif(APPLE)
+ target_compile_definitions(vulkaninfo PRIVATE VK_USE_PLATFORM_METAL_EXT)
+ if (IOS)
+ target_compile_definitions(vulkaninfo PRIVATE VK_USE_PLATFORM_IOS_MVK)
+ else()
+ target_compile_definitions(vulkaninfo PRIVATE VK_USE_PLATFORM_MACOS_MVK)
+ endif()
+endif()
+
+install(TARGETS vulkaninfo)