Skip to content

Commit f7017f2

Browse files
committed
cmake: Cleanup VulkanInfo
- Fix problematic usage of CMAKE_SOURCE_DIR - Removed unused folder code - Take advantage of modern CMake functionality - Use target_sources - Cleanup VULKANINFO_BUILD_DLL_VERSIONINFO code - Minor iOS fix
1 parent f39a583 commit f7017f2

File tree

2 files changed

+48
-50
lines changed

2 files changed

+48
-50
lines changed

CMakeLists.txt

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,7 @@ option(BUILD_VULKANINFO "Build vulkaninfo" ON)
4141
option(BUILD_ICD "Build icd" ON)
4242
option(ENABLE_ADDRESS_SANITIZER "Use address sanitization")
4343

44-
if(WIN32)
45-
# Optional: Allow specify the exact version used in the vulkaninfo executable
46-
# Format is major.minor.patch.build
47-
set(VULKANINFO_BUILD_DLL_VERSIONINFO "" CACHE STRING "Set the version to be used in the vulkaninfo.rc file. Default value is 1.0.1111.2222")
48-
endif()
49-
50-
# Enable IDE GUI folders
5144
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
52-
# "Helper" targets that don't have interesting source code should set their FOLDER property to this
53-
set(TOOLS_HELPER_FOLDER "Helper Targets")
5445

5546
if(APPLE)
5647
set(MOLTENVK_REPO_ROOT "MOLTENVK-NOTFOUND" CACHE PATH "Absolute path to a MoltenVK repo directory")

vulkaninfo/CMakeLists.txt

Lines changed: 48 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,25 @@
1515
# limitations under the License.
1616
# ~~~
1717

18+
add_executable(vulkaninfo)
19+
20+
target_sources(vulkaninfo PRIVATE vulkaninfo.cpp)
21+
22+
# Setup the vulkaninfo.rc file to contain the correct info
23+
# Optionally uses the VULKANINFO_BUILD_DLL_VERSIONINFO build option to allow setting the exact build version
24+
# When VULKANINFO_BUILD_DLL_VERSIONINFO is not provided, "Dev Build" is added to the version strings
1825
if(WIN32)
19-
# ~~~
20-
# Setup the vulkaninfo.rc file to contain the correct info
21-
# Optionally uses the VULKANINFO_BUILD_DLL_VERSIONINFO build option to allow setting the exact build version
22-
# When VULKANINFO_BUILD_DLL_VERSIONINFO is not provided, "Dev Build" is added to the version strings
23-
# ~~~
26+
set(VULKANINFO_BUILD_DLL_VERSIONINFO "default" CACHE STRING "Set the version to be used in the vulkaninfo.rc file")
27+
2428
string(TIMESTAMP CURRENT_YEAR "%Y")
2529
set(VULKANINFO_CUR_COPYRIGHT_STR "${CURRENT_YEAR}")
26-
if ("$CACHE{VULKANINFO_BUILD_DLL_VERSIONINFO}" STREQUAL "")
30+
if ("$CACHE{VULKANINFO_BUILD_DLL_VERSIONINFO}" STREQUAL "default")
31+
message(DEBUG "Setting RC version based on VulkanHeaders Version")
2732
set(VULKANINFO_RC_VERSION "${VulkanHeaders_VERSION}")
2833
set(VULKANINFO_VER_FILE_VERSION_STR "\"${VULKANINFO_RC_VERSION}.Dev Build\"")
2934
set(VULKANINFO_VER_FILE_DESCRIPTION_STR "\"Vulkaninfo - Dev Build\"")
3035
else()
36+
message(DEBUG "Setting RC version based on VULKANINFO_BUILD_DLL_VERSIONINFO")
3137
set(VULKANINFO_RC_VERSION "$CACHE{VULKANINFO_BUILD_DLL_VERSIONINFO}")
3238
set(VULKANINFO_VER_FILE_VERSION_STR "\"${VULKANINFO_RC_VERSION}\"")
3339
set(VULKANINFO_VER_FILE_DESCRIPTION_STR "\"vulkaninfo\"")
@@ -39,27 +45,15 @@ if(WIN32)
3945
# Configure the file to include the versioning info
4046
configure_file(vulkaninfo.rc.in ${CMAKE_CURRENT_BINARY_DIR}/vulkaninfo.rc)
4147

42-
add_executable(vulkaninfo vulkaninfo.cpp ${CMAKE_CURRENT_BINARY_DIR}/vulkaninfo.rc)
43-
if (MINGW)
44-
target_link_libraries(vulkaninfo ucrt)
45-
endif ()
46-
elseif(APPLE)
47-
add_executable(vulkaninfo
48-
vulkaninfo.cpp
49-
${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo/metal_view.mm
50-
${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo/metal_view.h)
51-
else()
52-
add_executable(vulkaninfo vulkaninfo.cpp)
48+
target_sources(vulkaninfo PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/vulkaninfo.rc)
5349
endif()
5450

55-
target_include_directories(vulkaninfo PRIVATE ${CMAKE_SOURCE_DIR}/vulkaninfo)
56-
target_include_directories(vulkaninfo PRIVATE ${CMAKE_SOURCE_DIR}/vulkaninfo/generated)
57-
58-
if (NOT WIN32)
59-
target_link_libraries(vulkaninfo ${CMAKE_DL_LIBS})
60-
endif()
51+
target_include_directories(vulkaninfo PRIVATE
52+
generated
53+
.
54+
)
6155

62-
target_compile_definitions(vulkaninfo PRIVATE -DVK_ENABLE_BETA_EXTENSIONS)
56+
target_compile_definitions(vulkaninfo PRIVATE VK_ENABLE_BETA_EXTENSIONS)
6357

6458
if (CMAKE_SYSTEM_NAME MATCHES "Linux|BSD")
6559
option(BUILD_WSI_XCB_SUPPORT "Build XCB WSI support" ON)
@@ -71,28 +65,26 @@ if (CMAKE_SYSTEM_NAME MATCHES "Linux|BSD")
7165

7266
if(BUILD_WSI_XCB_SUPPORT)
7367
pkg_check_modules(XCB REQUIRED QUIET IMPORTED_TARGET xcb)
74-
target_link_libraries(vulkaninfo PkgConfig::XCB)
75-
target_compile_definitions(vulkaninfo PRIVATE -DVK_USE_PLATFORM_XCB_KHR -DVK_NO_PROTOTYPES)
68+
target_compile_definitions(vulkaninfo PRIVATE VK_USE_PLATFORM_XCB_KHR VK_NO_PROTOTYPES)
69+
target_link_libraries(vulkaninfo PRIVATE PkgConfig::XCB)
7670
endif()
7771

7872
if(BUILD_WSI_XLIB_SUPPORT)
7973
pkg_check_modules(X11 REQUIRED QUIET IMPORTED_TARGET x11)
80-
target_link_libraries(vulkaninfo PkgConfig::X11)
81-
target_compile_definitions(vulkaninfo PRIVATE -DVK_USE_PLATFORM_XLIB_KHR -DVK_NO_PROTOTYPES)
74+
target_compile_definitions(vulkaninfo PRIVATE VK_USE_PLATFORM_XLIB_KHR VK_NO_PROTOTYPES)
75+
target_link_libraries(vulkaninfo PRIVATE PkgConfig::X11)
8276
endif()
8377

8478
if(BUILD_WSI_WAYLAND_SUPPORT)
8579
pkg_check_modules(WAYLAND_CLIENT REQUIRED IMPORTED_TARGET wayland-client)
86-
add_compile_definitions(VK_USE_PLATFORM_WAYLAND_KHR)
87-
88-
target_link_libraries(vulkaninfo PkgConfig::WAYLAND_CLIENT)
89-
target_compile_definitions(vulkaninfo PRIVATE -DVK_USE_PLATFORM_WAYLAND_KHR -DVK_NO_PROTOTYPES)
80+
target_compile_definitions(vulkaninfo PRIVATE VK_USE_PLATFORM_WAYLAND_KHR VK_NO_PROTOTYPES)
81+
target_link_libraries(vulkaninfo PRIVATE PkgConfig::WAYLAND_CLIENT)
9082
endif()
9183

9284
if(BUILD_WSI_DIRECTFB_SUPPORT)
9385
pkg_check_modules(DirectFB REQUIRED QUIET IMPORTED_TARGET directfb)
94-
target_link_libraries(vulkaninfo PkgConfig::DirectFB)
95-
target_compile_definitions(vulkaninfo PRIVATE -DVK_USE_PLATFORM_DIRECTFB_EXT -DVK_NO_PROTOTYPES)
86+
target_compile_definitions(vulkaninfo PRIVATE VK_USE_PLATFORM_DIRECTFB_EXT VK_NO_PROTOTYPES)
87+
target_link_libraries(vulkaninfo PRIVATE PkgConfig::DirectFB)
9688
endif()
9789

9890
if (ENABLE_ADDRESS_SANITIZER)
@@ -103,11 +95,24 @@ endif()
10395

10496
if(APPLE)
10597
# We do this so vulkaninfo is linked to an individual library and NOT a framework.
106-
target_link_libraries(vulkaninfo Vulkan::Loader "-framework AppKit -framework QuartzCore")
107-
target_include_directories(vulkaninfo PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo)
98+
target_link_libraries(vulkaninfo PRIVATE Vulkan::Loader "-framework AppKit -framework QuartzCore")
99+
target_include_directories(vulkaninfo PRIVATE macOS/vulkaninfo)
100+
101+
target_sources(vulkaninfo PRIVATE
102+
macOS/vulkaninfo/metal_view.mm
103+
macOS/vulkaninfo/metal_view.h
104+
)
108105
endif()
109106

110-
target_link_libraries(vulkaninfo Vulkan::Headers)
107+
target_link_libraries(vulkaninfo PRIVATE
108+
Vulkan::Headers
109+
${CMAKE_DL_LIBS}
110+
)
111+
112+
# TODO: Add MinGW CI and verify this is needed.
113+
if (MINGW)
114+
target_link_libraries(vulkaninfo PRIVATE ucrt)
115+
endif ()
111116

112117
if(WIN32)
113118
target_compile_definitions(vulkaninfo PRIVATE
@@ -122,10 +127,12 @@ if(WIN32)
122127
target_link_options(vulkaninfo PRIVATE /guard:cf)
123128

124129
elseif(APPLE)
125-
target_compile_definitions(vulkaninfo PRIVATE
126-
VK_USE_PLATFORM_MACOS_MVK
127-
VK_USE_PLATFORM_METAL_EXT
128-
)
130+
target_compile_definitions(vulkaninfo PRIVATE VK_USE_PLATFORM_METAL_EXT)
131+
if (IOS)
132+
target_compile_definitions(vulkaninfo PRIVATE VK_USE_PLATFORM_IOS_MVK)
133+
else()
134+
target_compile_definitions(vulkaninfo PRIVATE VK_USE_PLATFORM_MACOS_MVK)
135+
endif()
129136
endif()
130137

131138
install(TARGETS vulkaninfo)

0 commit comments

Comments
 (0)